第4章 中央处理器设计(RISC)_第1页
第4章 中央处理器设计(RISC)_第2页
第4章 中央处理器设计(RISC)_第3页
第4章 中央处理器设计(RISC)_第4页
第4章 中央处理器设计(RISC)_第5页
已阅读5页,还剩243页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 2 第第4章章 中央处理器设计(中央处理器设计(risc) n中央处理器也简称为处理器(或称为中央处理器也简称为处理器(或称为cpu) 是组成计算机系统的核心部件,是计算机是组成计算机系统的核心部件,是计算机 组成原理研究的主要内容之一。组成原理研究的主要内容之一。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 3 4.1 计算机组成的层次概念计算机组成的层次概念 n软件软件 n应用软件应用软件 n系统软件系统软件 n编译编译 n指令系统指令系统

2、n硬件硬件 n数据路径数据路径 n数字电路数字电路 n物理实现物理实现 计算机系统的层次结构见计算机系统的层次结构见图图4.1 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 4 4.2 risc与与cisc n4.2.2 精简指令系统计算机体系结构精简指令系统计算机体系结构 n精简指令系统的依据精简指令系统的依据 n通过优化典型的高级语言程序中最耗费时间的通过优化典型的高级语言程序中最耗费时间的 操作,能够更好地支持高级语言。操作,能够更好地支持高级语言。risc结构结构 通常体现如下几点:通常体现如下几点: n首先是使用大量的寄存器;首先是使

3、用大量的寄存器; n其次,要精心设计流水线;其次,要精心设计流水线; n最后,应采用相对简单的指令系统。这对于最后,应采用相对简单的指令系统。这对于 在单一芯片上实现在单一芯片上实现cpu是有益的。是有益的。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 5 4.2.2 精简指令系统计算机体系结构精简指令系统计算机体系结构 n精简指令系统的特征精简指令系统的特征 n指令系统简单;指令系统简单; n只有只有load和和store指令可以访问存储器;指令可以访问存储器; n简单的寻址方式;简单的寻址方式; n固定长度的指令格式。固定长度的指令格式。

4、 假设模型机中有假设模型机中有32个寄存器。所有的算术逻辑运算都使用寄个寄存器。所有的算术逻辑运算都使用寄 存器操作数;采用存器操作数;采用load/store结构,即只有结构,即只有load和和store指令指令 可以访问存储器可以访问存储器 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 6 4.3 模型机的指令系统模型机的指令系统 n模型机指令系统的设计原则是:模型机指令系统的设计原则是: n采用简单的指令系统采用简单的指令系统 n规模适度规模适度 n认真权衡利弊认真权衡利弊 n加快经常性事件的运行速度加快经常性事件的运行速度 国家级教材:

5、张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 7 4.3.1把模型机的汇编语句翻译成机器指令把模型机的汇编语句翻译成机器指令 n模型机的加法指令:模型机的加法指令: nadd t0,s1,s2 n用十进制表示是用十进制表示是 n寄存器寄存器s0到到s7相对应的是寄存器相对应的是寄存器16到到23,寄,寄 存器存器t0到到t7相对应的是寄存器相对应的是寄存器8到到15。 017188032 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 8 4.3.2 模型机的指令格式模型机的指令格式 n 模型机指令中每一个字

6、段名称的含义如下:模型机指令中每一个字段名称的含义如下: nop:指令的基本操作,称为操作码:指令的基本操作,称为操作码 nrs:第一个源操作数寄存器:第一个源操作数寄存器 nrt:第二个源操作数寄存器:第二个源操作数寄存器 nrd:目标操作数寄存器,它存放的是指令操作的结果:目标操作数寄存器,它存放的是指令操作的结果 nshamt:暂时不用。:暂时不用。 nfunct:这个字段选择:这个字段选择op字段中的具体操作,有时被字段中的具体操作,有时被 称为称为function字段或功能字段。字段或功能字段。 6位位5位位5位位5位位 5位位 6位位 oprsrtrdshamtfunct 国家级教

7、材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 9 4.3.3 模型机寻址方式模型机寻址方式 n 寄存器寻址方式寄存器寻址方式 n首先约定如下的符号:用首先约定如下的符号:用rs、rt、rd分别表示分别表示rs、rt、 rd字段(见字段(见图图4.2)描述的寄存器中存储的数据。)描述的寄存器中存储的数据。 n算术运算(如算术运算(如add)指令采用的是寄存器寻址方式,它)指令采用的是寄存器寻址方式,它 的三个操作数都在寄存器中。的三个操作数都在寄存器中。 n设有以下算术运算指令:设有以下算术运算指令:addt0,r1,r2。其。其 含义是将寄存器含义是将

8、寄存器r1和和r2中的值求和,并将其结果中的值求和,并将其结果 存放于寄存器存放于寄存器t0中。中。r1、r2、t0分别对应于指令分别对应于指令 格式中的格式中的rs、rt、rd字段所表示的寄存器(见字段所表示的寄存器(见图图4.2) 中存储的数据,即中存储的数据,即rs、rt、rd。此时。此时rd=rs+rt。 寄存器寻址方式对应寄存器寻址方式对应 的指令格式称为的指令格式称为r格格 式(式(r类型)。类型)。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 10 4.3.3 模型机寻址方式模型机寻址方式 n基址寻址方式基址寻址方式 n基址寻址

9、方式的有效地址按下式计算:基址寻址方式的有效地址按下式计算: ea=rs+address (4.1) n其中其中address是指令格式中的低是指令格式中的低16位字段(位字段(图图 4.2)的数值。)的数值。 n基址寻址方式对应的指令格式称为基址寻址方式对应的指令格式称为i格式格式( i类类 型)。型)。 n数据传送指令使用数据传送指令使用i格式。格式。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 11 4.3.3 模型机寻址方式模型机寻址方式 n load指令采用基址寻址方式(指令采用基址寻址方式(i格式,格式,图图4.2) n把数据从存

10、储器中读到寄存器中的情况称为读把数据从存储器中读到寄存器中的情况称为读 (load)。)。load指令的功能如下:指令的功能如下: nrtm(rs+address)或记为或记为rt=m(rs+address) nload指令的用法举例:指令的用法举例: n例如:指令例如:指令load t0, 32(s3) 将基址寄存器将基址寄存器s3(位于指(位于指 令的令的rs字段)的内容加上字段)的内容加上32(位于指令的(位于指令的address字字 段),其求和后的结果作为存储器的地址,用该地址段),其求和后的结果作为存储器的地址,用该地址 访问存储器,将其内容读出,再写入到寄存器访问存储器,将其内容

11、读出,再写入到寄存器t0中,中, t0由指令的由指令的rt字段标识。字段标识。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 12 4.3.3 模型机寻址方式模型机寻址方式 n store指令采用基址寻址方式(指令采用基址寻址方式(i格式,格式,图图4.2) nstore指令的功能是将寄存器指令的功能是将寄存器rt中的数据传送(写)到中的数据传送(写)到 存储器当中去,存储器的地址也由存储器当中去,存储器的地址也由(4.1)式)式计算。计算。 store指令的功能如下:指令的功能如下: nm(rs+address)rt或记为或记为m(rs+ad

12、dress)=rt nstore指令的用法举例:指令的用法举例: n例如:指令例如:指令store t0, 32(s3)将寄存器将寄存器t0(t0由指令由指令 的的rt字段标识)中的内容写入到存储器中去,存储器的字段标识)中的内容写入到存储器中去,存储器的 地址为基址寄存器地址为基址寄存器s3(位于指令的(位于指令的rs字段)的内容加字段)的内容加 上上32(位于指令的(位于指令的address字段)。字段)。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 13 4.3.3 模型机寻址方式模型机寻址方式 n立即寻址方式(立即寻址方式(图图4.2

13、) n加法指令中,如果有一个操作数为常数,则称加法指令中,如果有一个操作数为常数,则称 为立即数加法指令,记为为立即数加法指令,记为addi。寄存器。寄存器sp加加 常数常数4就可以写成:就可以写成: naddisp,sp,4 /sp=sp+4 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 14 4.3.3 模型机寻址方式模型机寻址方式 n 在在risc中,通常提供一个特殊的寄存器,称为中,通常提供一个特殊的寄存器,称为 zero寄存器,寄存器寄存器,寄存器zero中的值始终为零中的值始终为零。 n 为了和其他值比较,就必须有一个立即数形式的为

14、了和其他值比较,就必须有一个立即数形式的 小于比较指令。如比较小于比较指令。如比较s2是否小于是否小于10,其判断条,其判断条 件可写成:件可写成: nslti t0,s2,10 / 如果如果s210,则,则t0=1 n后面紧接着的指令可以通过判断后面紧接着的指令可以通过判断t0是否等于是否等于1来确定来确定 s2是否小于是否小于10。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 15 4.3.3 模型机寻址方式模型机寻址方式 n32位常数的处理位常数的处理 nlui指令:它用来设置寄存器中某常数的高指令:它用来设置寄存器中某常数的高16位,

15、位, 并允许下一条指令指定此常数的低并允许下一条指令指定此常数的低16位。位。 n例如:例如:lui t0,255 / t0为寄存器为寄存器8 n指令指令lui t0,255的功能是将指令中的的功能是将指令中的16位立位立 即数即数255传入寄存器传入寄存器t0的高的高16位,再将位,再将t0的低的低 16位置零。位置零。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 16 4.3.3 模型机寻址方式模型机寻址方式 n lui指令应用举例指令应用举例 n 将如下的一个将如下的一个32位常数装入寄存器位常数装入寄存器s0? n 0000 0000

16、 0011 1101 0000 1001 0000 0000 n lui s0,61 /(61)10=(0000 0000 0011 1101)2 n 运行后运行后s0的内容为:的内容为: n 0000 0000 0011 1101 0000 0000 0000 0000 n 下一步加上低下一步加上低16位,转化为十进制数为位,转化为十进制数为2304: n addi s0,s0,2304 /(2304)10=(0000 1001 0000 0000)2 n s0的最终值即为所求的结果:的最终值即为所求的结果: n 0000 0000 0011 1101 0000 1001 0000 0000

17、 首先使用首先使用lui 指令装入高指令装入高 16位数据,位数据, 然后使用立然后使用立 即数加法指即数加法指 令装入低令装入低16 位数据位数据 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 17 4.3.3 模型机寻址方式模型机寻址方式 n pc相对寻址方式(相对寻址方式(图图4.2) nbne s0,s1,exit /如果如果s0s1,转向标号为,转向标号为exit的的 指令。指令。 n如果程序的转移地址须装入指令的低如果程序的转移地址须装入指令的低16位字段,则意位字段,则意 味着所有程序的代码长度都不能超过味着所有程序的代码长度都不

18、能超过216个指令字,这个指令字,这 在现实中是远远不够的。在现实中是远远不够的。 n一种解决方法是指定一个寄存器,将它的值与转移地一种解决方法是指定一个寄存器,将它的值与转移地 址相加,这样转移指令的地址计算如下:址相加,这样转移指令的地址计算如下: pc某寄存器中的值转移地址某寄存器中的值转移地址 (4.3) n由于模型机的寄存器是由于模型机的寄存器是32位,这个和允许程序达到位,这个和允许程序达到232, 解决了转移地址大小的问题。解决了转移地址大小的问题。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 18 4.3.3 模型机寻址方式模

19、型机寻址方式 n (4.3)式右边的)式右边的“某寄存器某寄存器”应使用哪个寄存器?应使用哪个寄存器? n条件转移指令要根据当前指令的运行结果来判断下一条件转移指令要根据当前指令的运行结果来判断下一 条指令的地址,因此它们倾向转向附近的指令。条指令的地址,因此它们倾向转向附近的指令。 n当把指令格式中的低当把指令格式中的低16位看成是补码时有:位看成是补码时有:-215转移转移 地址地址215-1。 n于是条件转移的范围是以当前的于是条件转移的范围是以当前的pc值为中心,上、下值为中心,上、下 的偏移范围大约是的偏移范围大约是215 。由于几乎所有的循环和条件转。由于几乎所有的循环和条件转 移

20、的范围都小于移的范围都小于215个指令字,所以(个指令字,所以(4.3)式的右边选)式的右边选 择寄存器择寄存器pc是理想的。是理想的。 n注意模型机注意模型机pc中的当前(地址)值是相对于下一条指中的当前(地址)值是相对于下一条指 令(令(pc+4)的地址而不是当前指令的地址。)的地址而不是当前指令的地址。 pc某寄存器中的值转移地址某寄存器中的值转移地址 (4.3) 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 19 4.3.3 模型机寻址方式模型机寻址方式 n伪直接寻址方式(伪直接寻址方式(图图4.2) n在条件转移指令中使用在条件转移指

21、令中使用pc相对寻址。相对寻址。 n对无条件转移指令和转移连接指令使用对无条件转移指令和转移连接指令使用j格式格式 为程序调用提供比较长的转移地址。为程序调用提供比较长的转移地址。 n例如:例如:jump 10000 / 转向指令转向指令10000 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 20 4.4 汇编语言概念汇编语言概念 n翻译器(翻译器(translator):翻译器是这样一种:翻译器是这样一种 程序,它可以把用某种语言编写的用户程程序,它可以把用某种语言编写的用户程 序转换成另一种语言的程序。序转换成另一种语言的程序。 n源语言

22、(源语言(source language):翻译器转:翻译器转 换之前的程序使用的语言称为源语言。换之前的程序使用的语言称为源语言。 n目标语言(目标语言(target language):翻译器转:翻译器转 换之后的语言称为目标语言。换之后的语言称为目标语言。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 21 4.4 汇编语言概念汇编语言概念 n 汇编语言与汇编器(汇编语言与汇编器(assembler):如果源语言:如果源语言 基本上是数字型机器语言的符号表示,则源语言基本上是数字型机器语言的符号表示,则源语言 称为汇编语言,相应地就把这种

23、源语言的翻译器称为汇编语言,相应地就把这种源语言的翻译器 称为汇编器。称为汇编器。 n 编译器(编译器(complier):如果源语言是:如果源语言是c语言(或语言(或 java语言等)这样的高级语言,而目标语言或者语言等)这样的高级语言,而目标语言或者 是数字型机器语言或者是机器语言的符号表示是数字型机器语言或者是机器语言的符号表示 (即汇编语言),那么这种翻译器就称为编译器。(即汇编语言),那么这种翻译器就称为编译器。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 22 4.4 汇编语言概念汇编语言概念 n 在纯粹的汇编语言中,每条语句都精

24、确地产生一在纯粹的汇编语言中,每条语句都精确地产生一 条机器指令。条机器指令。 n 汇编语言程序员可以访问目标计算机的所有指令,汇编语言程序员可以访问目标计算机的所有指令, 可以利用目标计算机的所有特性,而高级语言程可以利用目标计算机的所有特性,而高级语言程 序员就没有这样的能力。序员就没有这样的能力。 n 汇编语言和高级语言的另一个重要的区别是:汇编语言和高级语言的另一个重要的区别是:汇汇 编语言程序只能运行在指令系统相同的系列计算编语言程序只能运行在指令系统相同的系列计算 机上机上,而高级语言程序则可以运行在各种不同的,而高级语言程序则可以运行在各种不同的 计算机上。计算机上。 n 汇编语

25、言编写程序不方便汇编语言编写程序不方便,强迫程序员用机器的,强迫程序员用机器的 方式思考问题。方式思考问题。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 23 4.5 指令系统指令系统软件的接口软件的接口 n在这一节里,将考虑将高级语言在这一节里,将考虑将高级语言c语言的语言的 源程序转换成模型机的汇编语言程序,看源程序转换成模型机的汇编语言程序,看 看模型机的汇编语言程序究竟要完成哪些看模型机的汇编语言程序究竟要完成哪些 基本的操作,这将有助于加深理解中央处基本的操作,这将有助于加深理解中央处 理器的硬件设计部分。理器的硬件设计部分。 国家

26、级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 24 n 赋值语句的编译赋值语句的编译 n用寄存器编译用寄存器编译c的赋值语句的赋值语句 n例如:例如:f=(g+h)-(i+j); n设编译器将变量设编译器将变量f、g、h、i、j分别放在寄存器分别放在寄存器s0、s1、 s2、s3、s4中。那么经过编译后的模型机汇编语言代中。那么经过编译后的模型机汇编语言代 码如下:码如下: nadd t0,s1,s2 /寄存器寄存器t0中存放中存放g+h nadd t1,s3,s4 /寄存器寄存器t1中存放中存放i+j nsub s0,t0,t1 / f等于等于t

27、0减减t1,也就是,也就是(g+h)-(i+j) 4.5.1 c语言赋值语句编译为模型机的汇编语言程序语言赋值语句编译为模型机的汇编语言程序 r型指令应是模型机的处理器硬件能够运行的基本指令之型指令应是模型机的处理器硬件能够运行的基本指令之 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 25 n当一个操作数在存储器中时编译一个赋值当一个操作数在存储器中时编译一个赋值 语句语句 n现在编译下面的现在编译下面的c赋值语句:赋值语句:g=h+a8; n假设假设a是一个数组,并且在这之前编译器已经是一个数组,并且在这之前编译器已经 将变量将变量g和和h

28、 存放在寄存器存放在寄存器s1和和s2中,又假设中,又假设 数组的首地址(或称为基地址)在寄存器数组的首地址(或称为基地址)在寄存器s3中,中, 则结果是:则结果是: nload t0,32(s3) /寄存器寄存器t0中的值是中的值是a8 nadd s1,s2,t0 /g=h+a8 4.5.1 c语言赋值语句编译为模型机的汇编语言程序语言赋值语句编译为模型机的汇编语言程序 为了实现高级语言(为了实现高级语言(c语言)的数组的运算,语言)的数组的运算, load指令应是模指令应是模 型机的处理器硬件能够运行的基本指令之一型机的处理器硬件能够运行的基本指令之一 国家级教材:张代远国家级教材:张代远

29、 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 26 n 用用load和和store指令进行编译(目标操作数存放在指令进行编译(目标操作数存放在 存储器中)存储器中) n假设变量假设变量h存放在寄存器存放在寄存器s2中,并且数组中,并且数组a的基地址存的基地址存 放在寄存器放在寄存器s3中。假设中。假设c语句为:语句为: na12=h+a8; n对应的模型机汇编代码是:对应的模型机汇编代码是: nload t0,32(s3) /中间寄存器中间寄存器t0中存放中存放a8的值的值 nadd t0,s2,t0 /中间寄存器中间寄存器t0中存放中存放h+a8的值的值 nstore t0,4

30、8(s3) /把把h+a8的值存放在的值存放在a12中中 4.5.1 c语言赋值语句编译为模型机的汇编语言程序语言赋值语句编译为模型机的汇编语言程序 为了实现高级语言(为了实现高级语言(c语言)的数组的运算,语言)的数组的运算, store指令应是模指令应是模 型机的处理器硬件能够运行的基本指令之一型机的处理器硬件能够运行的基本指令之一 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 27 n 用数组下标变量索引进行编译用数组下标变量索引进行编译 n这里考虑的是一个具有下标变量的数组:这里考虑的是一个具有下标变量的数组:g=h+ai; n假设假设

31、a数组的基地址在寄存器数组的基地址在寄存器s3中,编译器把变量中,编译器把变量g、 h、i分别存放在分别存放在s1、s2、s4中。这段中。这段c语句的模型机语句的模型机 汇编代码是:汇编代码是: naddt1,s4,s4 /寄存器寄存器t1中的值是中的值是2i naddt1,t1,t1 /寄存器寄存器t1中的值是中的值是4i naddt1,t1,s3 /寄存器寄存器t1中存放了中存放了ai的地址的地址 nloadt0,0(t1) /寄存器寄存器t0=ai nadds1,s2,t0 / g=h+ai 4.5.1 c语言赋值语句编译为模型机的汇编语言程序语言赋值语句编译为模型机的汇编语言程序 国家

32、级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 28 4.5.3 把把c语言的条件转移语句编译成模型语言的条件转移语句编译成模型 机的汇编语言程序机的汇编语言程序 n 把把if语句编译成条件分支指令语句编译成条件分支指令 n在下面的在下面的c代码中,代码中,f、g、h、i、j是变量:是变量: n if (i= =j) goto l1; n f=g+h; nl1:f=f-i; n假设假设f到到j这五个变量分别存放在寄存器这五个变量分别存放在寄存器s0到到s4中,那中,那 么该程序编译后的代码是:么该程序编译后的代码是: n beq s3,s4,l1 /

33、如果如果i等于等于j,跳到标号,跳到标号l1处处 n add s0,s1,s2 /f=g+h nl1:sub s0,s0,s3 /f=f-i,这条指令总是被运行,这条指令总是被运行 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 29 4.5.3 把把c语言的条件转移语句编译成模型语言的条件转移语句编译成模型 机的汇编语言程序机的汇编语言程序 n 把把if-then-else语句编译成条件转移指令语句编译成条件转移指令 n 仍旧使用前面的变量和寄存器,编译下面的仍旧使用前面的变量和寄存器,编译下面的if语句:语句: n if (i= =j) f=

34、g+h; n else f=g-h; n 编译成汇编语言就是:编译成汇编语言就是: n bne s3,s4,else /如果如果ij ,运行,运行else 标号的指令标号的指令 n add s0,s1,s2 /f=g+h(跳过(跳过ij这种情况)这种情况) n jump exit /跳到跳到exit处处 n else:sub s0,s1,s2 /f=g-h(跳过如果(跳过如果i=j这种情况)这种情况) n exit: 可见,为了实现高级语言(可见,为了实现高级语言(c语言)的分支转移,语言)的分支转移,beq、bne和和 jump指令应是模型机的处理器硬件能够实现的基本指令指令应是模型机的处理

35、器硬件能够实现的基本指令 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 30 4.5.4 把把c语言的循环语句编译成模型机的语言的循环语句编译成模型机的 汇编语言程序汇编语言程序 n 用下标变量的数组编译循环语句用下标变量的数组编译循环语句 nloop:g=g+ai; n i=i+j; n if(i!=h) goto loop; n 假设变量假设变量g、h、i、j分别存放在寄存器分别存放在寄存器s1、 s2、s3、s4中。再假设该数组的基地址存放中。再假设该数组的基地址存放 在寄存器在寄存器s5中。那么这条循环语句的模型机中。那么这条循环语句的

36、模型机 汇编代码是:汇编代码是: 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 31 4.5.4 把把c语言的循环语句编译成模型机的语言的循环语句编译成模型机的 汇编语言程序汇编语言程序 n loop:add t1,s3,s3 /中间寄存器中间寄存器t1=2i n add t1,t1,t1 /中间寄存器中间寄存器t1=4i n add t1,t1,s5 /t1中存放中存放ai的地址的地址 n load t0,0(t1) /中间寄存器中间寄存器t0=ai n add s1,s1,t0 /g=g+ai n add s3,s3,s4 /i=i+j n

37、 bne s3,s2,loop /如果如果i不等于不等于h,返到,返到loop 见循环语句见循环语句 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 32 4.5.4 把把c语言的循环语句编译成模型机的语言的循环语句编译成模型机的 汇编语言程序汇编语言程序 n编译一个编译一个while循环语句循环语句 n下面是一个典型的循环语句:下面是一个典型的循环语句: nwhile (savei= =k) ni=i+j; n假设变量假设变量i、j、k分别存放在寄存器分别存放在寄存器s3、s4、 s5中,并且数组中,并且数组save的基地址存放在寄存器的基地址

38、存放在寄存器 s6中。那么这条循环语句的模型机汇编语言程中。那么这条循环语句的模型机汇编语言程 序是:序是: 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 33 4.5.4 把把c语言的循环语句编译成模型机的语言的循环语句编译成模型机的 汇编语言程序汇编语言程序 nloop:add t1,s3,s3/中间寄存器中间寄存器t1=2i n add t1,t1,t1/中间寄存器中间寄存器t1=4i n add t1,t1,s6/t1中存放中存放savei的地址的地址 n load t0,0(t1)/中间寄存器中间寄存器t0=savei n bne t

39、0,s5,exit /如果如果saveik,跳出,跳出 循环体循环体 n add s3,s3,s4/i=i+j n jump loop/跳回到跳回到loop处处 nexit: 见见while循环语句循环语句 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 34 4.5.4 把把c语言的循环语句编译成模型机的语言的循环语句编译成模型机的 汇编语言程序汇编语言程序 n 编译一个小于比较指令编译一个小于比较指令 n在模型机中小于(比较)指令记为在模型机中小于(比较)指令记为slt(set on less than)。例如:)。例如:slt t0,s3,

40、s4 n这条指令是指如果寄存器这条指令是指如果寄存器s3中的值要比寄存器中的值要比寄存器s4中的中的 值要小时,寄存器值要小时,寄存器t0的值为的值为1,否则为,否则为0。 n如果变量如果变量a(在寄存器(在寄存器s0中)比变量中)比变量b(在寄存器(在寄存器s1中)中) 小,如果该条件成立,那么则转移到标号为小,如果该条件成立,那么则转移到标号为less的分的分 支的编译代码是:支的编译代码是: nslt t0,s0,s1 /若若s0s1(ab),则,则t0=1 nbne t0,zero,less /若若t00,跳到标号,跳到标号less处处 国家级教材:张代远国家级教材:张代远 计算机组成

41、原理教程(第二版)计算机组成原理教程(第二版) 35 4.5.4 把把c语言的循环语句编译成模型机的语言的循环语句编译成模型机的 汇编语言程序汇编语言程序 n模型机编译器模型机编译器使用使用slt、beq、bne指令以及指令以及 通过读取值总为通过读取值总为0的寄存器的寄存器zero来建立所来建立所 有相关的条件:相等、不等、小于、小于有相关的条件:相等、不等、小于、小于 等于、大于、大于等于等于、大于、大于等于。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 36 4.5.4 把把c语言的循环语句编译成模型机的语言的循环语句编译成模型机的 汇

42、编语言程序汇编语言程序 n从前面的讨论可以看出,从前面的讨论可以看出,模型机中提供的模型机中提供的r 型、型、i型及型及j型指令可以实现高级语言(如型指令可以实现高级语言(如c 语言)的顺序、转移和循环程序结构语言)的顺序、转移和循环程序结构。这。这 些是高级语言程序的基本结构。些是高级语言程序的基本结构。 n人们通过对算法的研究知道,由顺序、转移和人们通过对算法的研究知道,由顺序、转移和 循环结构组成的程序可以完成任何复杂的计算。循环结构组成的程序可以完成任何复杂的计算。 由此可见,模型机的指令系统已经具备了相当由此可见,模型机的指令系统已经具备了相当 强的功能。强的功能。 国家级教材:张代

43、远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 37 4.6 cpu的设计的设计-数据路径与控制器数据路径与控制器 n 数据路径的建立数据路径的建立 n通过模型机讨论数据路通过模型机讨论数据路 径的建立径的建立 nalu控制器的设计控制器的设计 n主控制单元的设计主控制单元的设计 n 控制器的实现控制器的实现 n硬布线控制器硬布线控制器 n单周期的实现单周期的实现 n多周期的实现多周期的实现 n微程序控制器微程序控制器 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 38 4.6.1 概论概论 n研究指令系统的硬件

44、接口。研究指令系统的硬件接口。 n研究研究risc的的cpu设计。设计。 n数据路径的建立。数据路径的建立。 n控制器的设计实现。控制器的设计实现。 n硬布线(硬布线(alu控制单元和主控制单元)。控制单元和主控制单元)。 n微程序。微程序。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 39 4.6.2 单周期数据路径单周期数据路径 n 首先要理解以下概念:首先要理解以下概念: n 数据路径数据路径:处理器中各个部件之间的信息通路。:处理器中各个部件之间的信息通路。 n 单周期数据路径单周期数据路径:数据路径中的每一条指令的运:数据路径中的每

45、一条指令的运 行周期都相等。行周期都相等。 n 指令周期指令周期:一条指令从取指令开始到该条指令完:一条指令从取指令开始到该条指令完 全运行完毕所需要的最短时间间隔。全运行完毕所需要的最短时间间隔。 n 控制单元控制单元:产生数据路径正确工作的控制信号的:产生数据路径正确工作的控制信号的 控制部件。控制单元也称为控制部件。控制单元也称为控制器控制器。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 40 4.6.2 单周期数据路径单周期数据路径 n建立数据路径的思想方法建立数据路径的思想方法 n单独建立取指令和各类指令的数据路径,然后单独建立取指

46、令和各类指令的数据路径,然后 整合(拼接)起来,得到完整的数据路径。整合(拼接)起来,得到完整的数据路径。 n即分别建立取指令,即分别建立取指令,r型、型、load/store、beq、 jump指令的数据路径,然后整合。指令的数据路径,然后整合。 单周期数据路径的优点:实现单周期数据路径的优点:实现 简单,控制器的设计容易;简单,控制器的设计容易; 缺点:缺点: 对于速度快的指令来说对于速度快的指令来说 是一种性能上的损失是一种性能上的损失 需要考察一条指令的运行需需要考察一条指令的运行需 要的部件,对每一类指令建要的部件,对每一类指令建 立局部的数据路径。在讨论立局部的数据路径。在讨论 数

47、据路径部件时,也要考虑数据路径部件时,也要考虑 控制信号控制信号 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 41 4.6.2 单周期数据路径单周期数据路径 n1.取指令的数据路径取指令的数据路径 n需要的第一个部件是存放程序指令的需要的第一个部件是存放程序指令的存储器存储器。 如如图图4.4-4.6所示。所示。 n需要的第二个部件是需要的第二个部件是程序计数器(程序计数器(pc),它,它 保存指令的地址,见保存指令的地址,见图图4.4-4.6。 n需要的第三个部件是需要的第三个部件是加法器,加法器,以便能够增加以便能够增加 pc的值,使其指

48、明下一条指令的地址。加法的值,使其指明下一条指令的地址。加法 器是一个组合逻辑部件,记为器是一个组合逻辑部件,记为add,见,见图图4.4- 4.6。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 42 4.6.2 单周期数据路径单周期数据路径 n要想运行指令,第一步就要先从存储器中要想运行指令,第一步就要先从存储器中 取出指令。取出指令。 n而为了准备好下一条将要运行的指令,还而为了准备好下一条将要运行的指令,还 必须增加程序计数器必须增加程序计数器pc的值,以使其指向的值,以使其指向 下一条指令,其位置是下一条指令,其位置是当前指令的地址再

49、当前指令的地址再 加加4(模型机(模型机1个字占个字占4个字节)个字节)。 n取指令的数据路径取指令的数据路径见见图图4.9,它使用了,它使用了图图 4.4-4.6的三个部件。的三个部件。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 43 4.6.2 单周期数据路径单周期数据路径 n2.r型指令的数据路径型指令的数据路径 n这类指令都要这类指令都要读两个寄存器读两个寄存器,并在,并在alu中中 对两个寄存器的内容进行操作,然后再写对两个寄存器的内容进行操作,然后再写 操作结果。操作结果。 n需要的部件有:寄存器堆,需要的部件有:寄存器堆,al

50、u。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 44 4.6.2 单周期数据路径单周期数据路径 n 寄存器堆寄存器堆 n寄存器堆寄存器堆是若干是若干寄存器的集合寄存器的集合,只要给出该寄存器堆,只要给出该寄存器堆 中寄存器的编号,则其中的任何寄存器都可以读或者中寄存器的编号,则其中的任何寄存器都可以读或者 写),如写),如图图4.7-4.8所示。模型机的所示。模型机的寄存器堆寄存器堆有有32个寄个寄 存器。存器。 n寄存器堆总共需要寄存器堆总共需要四个输入端四个输入端(三个寄存器编号端口(三个寄存器编号端口 和一个数据端口)和和一个数据端口

51、)和两个输出端两个输出端(两个都是数据端(两个都是数据端 口),如口),如图图4.7-4.8所示。所示。 n寄存器堆总根据输入的读端口的编号输出对应的寄存寄存器堆总根据输入的读端口的编号输出对应的寄存 器中的内容。但是,写则必须由写控制信号来控制,器中的内容。但是,写则必须由写控制信号来控制, 并在时钟周期的边沿(如上升沿)写入。并在时钟周期的边沿(如上升沿)写入。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 45 4.6.2 单周期数据路径单周期数据路径 nalu n需要一个需要一个alu对从寄存器堆中读出的数据对从寄存器堆中读出的数据 进

52、行操作(进行操作(图图4.7-4.8)。)。 nalu(图图4.7-4.8)接收两个)接收两个32位的输入数位的输入数 据并产生一个据并产生一个32位的输出数据。位的输出数据。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 46 4.6.2 单周期数据路径单周期数据路径 nr型指令的数据路径型指令的数据路径见见图图4.10。 n它使用的是它使用的是图图4.7-4.8的寄存器堆和的寄存器堆和alu。因为。因为 寄存器的编号来自指令的相应字段,因此,寄存器的编号来自指令的相应字段,因此,图图 4.10中画的指令来自中画的指令来自图图4.9,指令的相

53、关字段连,指令的相关字段连 接到寄存器堆的寄存器编号的输入端。接到寄存器堆的寄存器编号的输入端。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 47 4.6.2 单周期数据路径单周期数据路径 n 3. load和和store指令的数据路径指令的数据路径 n 需要的部件除了寄存器堆和需要的部件除了寄存器堆和alu以外,还需要一以外,还需要一 个个符号扩展符号扩展单元,一个单元,一个数据存储器数据存储器。见。见图图4.11。 n 符号扩展单元符号扩展单元用来对指令的用来对指令的16位偏移量字段中的位偏移量字段中的 数值进行数值进行符号位扩展符号位扩

54、展,以转换成带符号的,以转换成带符号的32位数位数 值。见值。见图图4.11。 n 数据存储器数据存储器用来读取和存储数据。数据存储器只用来读取和存储数据。数据存储器只 有在存储(有在存储(store)指令时,才能被写入数据;因)指令时,才能被写入数据;因 此,它必须有读写控制信号,一个地址输入,一此,它必须有读写控制信号,一个地址输入,一 个将数据写入存储器的输入。见个将数据写入存储器的输入。见图图4.11。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 48 4.6.2 单周期数据路径单周期数据路径 n图图4.12给出了假设指令已经读出的情

55、况下,给出了假设指令已经读出的情况下, 上述部件组合在一起,形成上述部件组合在一起,形成读写数据字指读写数据字指 令的数据路径令的数据路径。 n寄存器堆中寄存器编号的输入来自寄存器堆中寄存器编号的输入来自指令的指令的 相关字段相关字段。 n偏移量偏移量数值的输入也来自指令的相关字段,数值的输入也来自指令的相关字段, 经过符号位扩展以后,作为经过符号位扩展以后,作为alu的第二个的第二个 输入。输入。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 49 4.6.2 单周期数据路径单周期数据路径 n 4. beq指令的数据路径指令的数据路径 n 需

56、要寄存器堆,需要寄存器堆,alu,符号扩展单元,加法器,符号扩展单元,加法器 add。 n beq指令指令有三个操作数,两个寄存器操作数用来有三个操作数,两个寄存器操作数用来 比较相等性,另一个比较相等性,另一个16位偏移量用来计算转移的位偏移量用来计算转移的 目标地址。目标地址。 n 要实现这一指令,就必须计算转移的目标地址,要实现这一指令,就必须计算转移的目标地址, 这可以用指令字段中经过符号扩展的偏移量与这可以用指令字段中经过符号扩展的偏移量与 pc+4相加而求得。相加而求得。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 50 4.6.

57、2 单周期数据路径单周期数据路径 n 除了计算转移目标地址以外,还应该确定下一条除了计算转移目标地址以外,还应该确定下一条 指令是顺序运行还是转去运行转移目标地址的指指令是顺序运行还是转去运行转移目标地址的指 令。令。 n 当转移条件为真时(即两个操作数相等),转移当转移条件为真时(即两个操作数相等),转移 指令的地址就成为新的指令的地址就成为新的pc值,此时称为值,此时称为转移成功转移成功。 n 如果操作数不相等,则已经增加了的如果操作数不相等,则已经增加了的pc值值 (pc+4)就成为当前的)就成为当前的pc值,这种情况称为值,这种情况称为转转 移不成功移不成功。 国家级教材:张代远国家级

58、教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 51 4.6.2 单周期数据路径单周期数据路径 n 因此,因此,beq指令的数据路径必须做两个操作:一指令的数据路径必须做两个操作:一 个是计算转移目标的地址,而另一个是比较寄存个是计算转移目标的地址,而另一个是比较寄存 器中数值的内容。器中数值的内容。图图4.13给出了给出了beq指令的数据指令的数据 路径路径。 n将两个寄存器操作数送给将两个寄存器操作数送给alu,通过控制命令,可以,通过控制命令,可以 使使alu做减法运算。见做减法运算。见图图4.13。 nalu提供了一个输出信号来指示运算结果是否为零。提供了一个输

59、出信号来指示运算结果是否为零。 如果如果alu的的zero端有输出信号,则表明两个数值相等。端有输出信号,则表明两个数值相等。 见见图图4.13。 n虽然当虽然当alu的运算结果为零时,的运算结果为零时,zero总有输出信号,总有输出信号, 但是,该信号只有当用于相等转移的条件测试时才被但是,该信号只有当用于相等转移的条件测试时才被 使用。使用。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 52 4.6.2 单周期数据路径单周期数据路径 n5. jump指令的数据路径指令的数据路径 n无条件转移指令(无条件转移指令(jump)的运行是这样的:

60、)的运行是这样的: 用指令中的低用指令中的低26位左移两位来代替位左移两位来代替pc中的中的 低低28位。这种移位仅仅是将转移的偏移量位。这种移位仅仅是将转移的偏移量 后面连接后面连接00。 国家级教材:张代远国家级教材:张代远 计算机组成原理教程(第二版)计算机组成原理教程(第二版) 53 4.6.2 单周期数据路径单周期数据路径 n既然对每一类的数据路径都进行了描述,既然对每一类的数据路径都进行了描述, 现在就可以把它们组合在一起,再加上控现在就可以把它们组合在一起,再加上控 制信号来实现整个的数据路径。制信号来实现整个的数据路径。 n图图4.9,图图4.10,图图4.12,图图4.13将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论