计算机组成原理期末总结
第一章 计算机系统概论
计算机系统 = 硬件 + 软件
- 对计算机的某一具体功能既可以用硬件实现,也可以用软件实现
- 硬件和软件在逻辑功能上是等效的
- 实现成本和速度有较大差别
计算机的系统结构:确定硬件和软件的功能分配
1.计算机系统的硬件组成
运算器、存储器、控制器、输入设备、输出设备
- 运算器:实现对数据的加工,包括算术运算和逻辑运算
- 存储器:存储数据和程序
- 控制器:控制计算机各部件有序协调的工作
- 输入/输出设备:实现外部世界与计算机之间的数据交换
三个部件:CPU、存储器、I/O设备
- CPU:运算器 + 控制器
- 主机系统:CPU + 内存
- 存储器:内存 + 外存
- I/O设备:输入输出设备及其相关的接口
存储程序原理:在计算机解题之前,要事先编制好程序,并与所需要的数据一起预先存入主存当中。当程序开始执行后,由控制器按照该程序自动地、连续地从存储器中取出指令并执行,直到获得所要求的结果为止。
- 运算部件:
- 运算器(ALU) + 通用寄存器组(GPR)
运算器用于完成算术和逻辑运算
- 内存:
- 内存一般用半导体技术实现,外存往往用磁盘记录方式实现
- 访存操作:读、写
读:把AR中地址所对应的存储单元的内容读入DR
写:把DR中中的数据写入AR中地址所对应的存储单元- 地址寄存器(AR):存放访存地址
- 数据寄存器(DR):存放从内存读出或写入内存的数据
- 控制器:由6个部分组成
- 指令寄存器(IR):存放当前正在执行的指令
- 程序计数器(PC):存刚当前正在执行的指令的地址
- 指令译码器:对指令进行译码,区分当前指令是什么指令,一遍形成相应的控制信号
- 时钟脉冲(CP):协调计算机各部件操作的同步的主时钟。其工作频率叫做计算机的主频
- 时序信号发生器:按时间顺序周而复始地发出节拍信号
- 微操作控制部件:(微操作是硬件电路中不可再细分的简单操作)根据指令的译码结果,结合CP以及时序信号发生器产生的节拍信号,产生该指令执行过程中各节拍所的微操作控制信号,并将它们发送给包括控制器本身在内的各个部件,使之协调、分步骤地进行操作,实现指令的执行。
2.软件系统
系统软件 + 应用软件
系统软件:保证计算机系统高效、正确地运行的基础软件
- 操作系统:管理系统资源,为用用程序提供运行环境,为用户提供操作界面
- 语言处理程序:将用源程序变换为机器语言程序,处理方式有两种:
解释:逐行处理,边分析边执行
翻译:用汇编程序或编译程序将源程序全部翻译成目标程序后,再去执行目标程序
3.计算机的性能指标
- 主频
- CPU的工作节拍是由时钟来控制的,时钟不断产生固定频率的时钟脉冲,这个时钟的频率就是CPU的主频
- 主要用于评价相同或近似系统结构的计算机的性能,不用在结构差距很大的机器之间
- 运算速度
- 每秒执行多少指令/完成多少次浮点运算
- 单位:MIPS(百万条指令/秒)/MFLOPS(百万次浮点运算/秒)
- 计算运算速度:混合比率计算法、计算各种指令的执行速度、执行基准程序的运算速度
- 基本字长
- 直接参与运算的数据字的二进制位数
决定寄存器、ALU、数据总线等的位数,直接影响硬件的造价
- 主存容量
- 主存所能存储的信息的总容量
- 主存存取周期
- 对主存连续两次访问所允许的最小时间间隔
- 所配置的外部设备及其性能指标
第二章 数制与编码
1.带符号数的表示方法
- 原码:
- 正数最高位为0
- 负数最高位为1
2.补码:
- 正数补码=原码
- 负数补码:取反+1 (符号位不变)
注意小数的符号位位置
- 反码:
- 正数反码=原码
- 负数反码:每位取反 (符号位不变)
4. 移码:
- 与补码仅符号位不同
- 采用移码的目的是为了能从机器数的形式上直接判断两数真值的大小
2.数的定点表示与浮点表示
- 定点表示:小数点固定
2.浮点表示
- 阶码用移码,尾数用补码
3.其他编码
- 8421(BCD)码
- 余三码:BCD码 + 0011
- 是一种对9的自补码:自身按位取反就得到其对9的补码
十进制数字5的余3码为1000,5对9之补是9-5=4,而4的余3码是0111,它正好是5的余3码1000按位取反而得。- 两个余3码相加,所产生的进位相应于十进制数的进位,但所产生的和要进行修正后才是正确的余3码。如果没有进位,则和需要减3;如果发生了进位,则和需加3。
- 2421码
第六章 计算机执行程序的过程
- Load指令:装载寄存器指令
- 把一个数据送入指定的寄存器,这个值可以是立即数,也可以是来自存储器的某单元
- Store指令:存储指令
- 把指定寄存器中的数据存入存储器的某个单元
- Add指令:加法指令
- Jump 指令:跳转指令
1.Load R1,200(R0)
用[R0]+200作为地址访问存储器,将读出的内容送至R1
- 取指:
- 将PC的内容传送至地址寄存器AR
- 从存储器读出第一条指令,放到数据存储器DR
- 把该指令从DR送到指令寄存器IR
- 译码:
- 控制器结合时钟脉冲信号CP和时序信号产生器所生成的节拍信号,产生执行该指令所需要的微操作控制信号
- 执行:
- 计算访存地址[R0]+200→AR
具体操作:
[R0]→ALU,把寄存器R0中的内容(为0)送给ALU,见图中的①
IR中的操作数“200”→ALU,见图中的②
ALU进行加法运算。结果传送给AR,即[ALU]→AR,见图中的③
- 从存储器读出数据,送入寄存器R1
具体操作:
从存储器中地址为200的存储单元读出数据50,如图中的①所示
DR→R1,把DR中的50送入R1,如图中的②所示
4.PC+4:指向下一条指令,为执行下一条指令做准备
2.Load R2,#4
把指令中的立即数4传送至R2
-
取值:同上
-
译码:同上
-
执行:
- 将IR中的4送至R2
- PC+4
3.Add R3,R1,R2
把R1和R2中的内容相加,结果存入R3
-
取指
-
译码
-
执行
- 把R1和R2中的数据送往ALU的两个入口端,ALU做加法运算
- 把ALU出口端的结果存入R3
- PC+4
4.Store R3,200(R2)
把R3中的内容存入地址为[R2]+200的存储单元
-
取指
-
译码
-
执行
- 计算访存地址[R2]+200→AR
具体操作:
[R2]→ALU,把寄存器R2中的内容(为4)送给ALU
IR中的操作数“200”→ALU
ALU的加法运算,[ALU] →AR,ALU 的运算结果(204)送给AR
- [R3]→DR:把R3的内容送DR
- [DR]→MEM[AR]:把数据写入存储器
- PC+4
5.Store R2,@(208)
@表示间接寻址
[R2]→MEM[MEM [208]]:把寄存器R2中的内容存入主存中地址为MEM[208]的单元中
-
取指
-
译码
-
执行
-
MEM[208]→DR
具体操作:
208→AR
MEM[208]→DR
-
[DR]→AR
-
[R2]→DR
-
[DR]→MEM[AR]
4.PC+4
6.Jump 1000
让计算机跳转到地址为1000的地方
- 取指
- 译码
- 执行
- 1000→PC
- PC+4
第七章 指令系统
- 指令集/指令系统:一台计算机所能执行的全部指令的集合
- 指令系统决定计算机硬件所能完成的全部功能
- 指令:要求计算机进行基本操作的命令
1.指令格式
操作码 + 地址码
- 操作码:描述指令的操作功能
- 地址码:描述与操作数有关的信息,可以是操作数本身,也可以是存放操作码的地址
- 计算机中,操作数可能存放在主存储器、CPU中的寄存器、I/O接口寄存器或堆栈中
- 地址的个数与长度主要取决于指令所涉及的操作数的个数、进行什么操作、存储器的容量、编址单位的大小以及寻址方式等
1.1 地址码
- 根据指令中地址码部分显式给出的地址的个数,将指令格式分为以下5种:
- 零地址指令:
- 只有操作码,没有地址码
- 使用零地址的情况:
指令本身不需要任何操作数(空操作、停机)
指令中所需的操作数是隐含指定的(堆栈操作)
- 一地址指令
- 使用情况:
指令本身只需要一个操作数(加一、求补、清零),A←OP[A]
指令需要两个操作数,指令中指明一个操作数,而另一个操作数在默认的累加器AC中,操作结果存放到累加器AC中:AC←[AC]OP[A]
- 二地址指令
- 根据存放操作数的不同分为三种:
寄存器-寄存器型(R-R型)指令
存储器-存储器型(M-M型)指令
寄存器-存储器型(R-M型)指令:结果保留在寄存器中
- 三地址指令
- 多地址指令
1.2 操作码
- 指令系统中的每一条指令都有唯一确定的操作码,不同指令的操作码不相同
- 操作码的长度决定指令系统的最大规模
- n为操作码,指令系统最多有2n条指令
- 固定长度操作码:
- 每条指令的长度都相同
- 利于简化硬件设计;减少指令译码时间
- 可变长度操作码:
- 不同指令的长度随指令功能而不同
- 使用频率高的指令用段的操作码
- 缩短操作码的长度,但会使硬件设计复杂化,增加指令译码的时间和难度
- 扩展操作码技术:
简化硬件设计
当指令总长度一定时,可以使操作码的长度随地址数的增加而减少,不同地址数的指令的操作码的长度也不同,从而有效地缩短指令总长度
包括等长扩展与不等长扩展
地址长度为n,上层留出m种状态,下一层可扩展出m×2n种状态
eg.二地址指令条数最大值 = (2三地址指令操作码位数 - 三地址指令条数) × 2二地址操作码位数-三地址操作码位数
1.3 指令长度
- 一条指令所包含的二进制代码的总位数
- 主要取决于操作码的长度、操作数地址的长度、操作数地址的个数
- 与机器字长有简单的倍数关系:
单字长指令:指令长度等于机器字长的指令
半字长指令:指令长度等于半个机器字长的指令
双字长指令:指令长度等于机器字长的两倍的指令
机器字长:计算机能直接处理的二进制数据的位数
- 指令字长一般为字节的整数倍
2.数据类型
- 数据表示:计算机硬件能够直接识别、指令 系统可以直接调用的数据类型
- 数据结构:由软件进行处理和实现的各种数据类型
表示操作数的方法:
- 由指令中的操作码指定操作数的类型
- 给数据加上标识符(tag),有数据本身给出操作数类型
- 操作数的大小:操作数的位数或字节数
包括:字节(8位)、半字(16位)、 字(32位)、 双字(64位) - 字符一般用ASCII码表示,大小为一个字节
- 整数用二进制补码表示,大小可以是字节、半字、单字和双字
- 浮点数分为单精度浮点数(单字)和双精度浮点数(双字)
- 所有计算机采用IEEE754浮点标准
3.寻址方式
-
计算机中,操作数可能存放在主存储器、CPU中的寄存器、I/O接口寄存器或堆栈中
-
形式地址与有效地址
-
寻址方式:确定指令操作数有效地址的方法
- 直接寻址
- 在指令的地址码字段直接给出操作数所在主存单元的地址 EA = A
- 简单、快速的寻址方式,但寻址范围受限于地址码字段的位数
- 间接寻址
- 指令的地址码字段给出的是操作数所在内存单元的地址的地址,即指令中形式地址所指定的内存单元中存放的内容才是操作数的真正地址 EA = (A)
- 得到操作数需要访问两次内存,指令的执行速度比较慢
- 立即寻址
- 指令的地址码字段直接给出操作数本身
- 寄存器直接寻址与间接寻址
- 寄存器直接寻址:指令的地址码字段给出一个寄存器编号,该寄存器中存放的内容就是操作数 EA = Ri
- 寄存器间接寻址:寄存器中存放的内容是操作数的地址,根据此地址访问内存取得操作数 EA = (Ri)
- 隐含寻址
- 指令中不给出操作数的地址
- 通常操作数约定在某个特定的寄存器中或者在堆栈中
- 相对寻址
- 有效地址 = 形式地址(偏移量) + PC的内容 EA = (PC) + D(D是补码表示!!!)
- 注意取址后PC自动+‘1’
- 变址寻址
- 有效地址 = 形式地址 + 变址寄存器的内容 EA = (RX) + D
- 形式地址固定,变的是变址寄存器的内容
- 变址寄存器可以是专用寄存器,也可以是通用寄存器中的一个
- 常用于字符串处理、数组运算等成批数据处理中,主要是面向用户,解决程序循环控制问题
8.基址寻址
- 有效地址 = 详细地址 + 基址寄存器的内容 EA = (RB) + D
- 基地址固定,变的是形式地址
- 基址寄存器的内容称为基地址,常由操作系统或管理程序设定
- 面向系统,解决程序重定位和扩大寻址空间等问题
- “基址+变址”寻址
- 有效地址 = 形式地址 + 基址寄存器RB的内容 + 变址寄存器RX的内容 EA = (RB)+(RX)+D
习题
4.指令类型与功能
- 一个指令系统中的指令可以按功能分为数据传送类指令、数据运算类指令、程序控制类指令、输入输出类指令
- 数据传输类指令
- 将数据从一个地方传送到另一个地方
- 主要实现主存和主存之间、主存和寄存器之间、寄存器和寄存器之间的数据传送
- 数据传送指令一次可以传送一个数据,也可以一次传送一批数据
- 数据运算类指令
- 用来实现数据的算术运算、逻辑运算和移位运算
- 算术运算:加、减、乘、除运算;加1 、减1;比较指令等
- 逻辑运算:包括与、或、非 、异或等运算
- 移位指令:算术移位、逻辑移位和循环移位三类,它们又可分为左移和右移两种
- 程序控制类指令
- 主要用来控制程序执行的顺序和方向
- 包含转移指令、子程序调用和返回指令、自陷指令等
- 输入输出指令
- 主要用于实现主机与外部设备之间的信息交换
5.指令系统的设计
- 包括指令的 功能设计和指令格式设计
- 在确定哪些基本功能用硬件来实现时,主要考虑3个因素:速度、成本、灵活性
硬件实现:速度快,成本高,灵活性差
软件实现:速度慢,价格便宜,灵活性好
5.1 对指令系统的基本要求
- 对指令系统的基本要求:完整性、规整性、正交性、高效率、兼容性
- 规整性包括对称性和均匀性
5.2 指令格式的设计
- 确定操作码字段和地址码字段的大小及其组合形式
- 确定各种寻址方式的编码方法
- 三种常见的指令编码格式:可变长度编码格式、固定长度编码格式、混合型编码格式
- 可变长度编码格式:多用于CISC
- 固定长度编码格式:多用于RISC
- 混合型编码格式
6.指令系统的改变和发展
- 指令集分为复杂指令集合精简指令集
复杂指令系统计算机CISC:
- 强化指令功能,实现软件功能向硬件功能转移
- 特点:指令数量多,功能多样
- 缺点:各指令使用频率相差悬殊,许多指令很少用得到;指令系统庞大,指令条数多,许多指令的功能很复杂;CPI值大,执行速度慢;规整性不好,不利于采用流水线技术提高性能
精简指令功能计算机RISC:
- 尽可能降低指令系统的复杂性,以达到简化实现,提高性能的目的
- 设计原则:
指令条数少、指令功能简单;
采用简单而又统一的指令格式,并减少寻址方式;
指令的执行在单个机器周期内完成;采用load-store结构;
大多数指令采用硬连逻辑来实现;
强调优化编译器的作用,为高级语言程序生成优化的代码;
充分利用流水技术来提高性能
7.指令系统实例:MIPS的指令系统
- 典型的RISC结构
MIPS的寄存器:
- 32个64位的通用寄存器,R0的值永远是0
- 32个64位浮点数寄存器
- 其他特殊寄存器,如浮点状态寄存器
MIPS的数据表示
- 整数:字节、半字、字、双字
- 浮点数:单精度、双精度
字节、半字或者字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照64位整数的方式进行运算
MIPS的数据寻址方式
- 立即数寻址和偏移量寻址
- 两种寻址方式都是16位
- 寄存器间接寻址是通过把0作为偏移量来实现的
- 16位直接寻址是通过把R0(其值永远为0)作为基址寄存器来完成的
- MIPS的寻址方式是编码到操作码OP中的
- MIPS的存储器是按字节寻址的,地址为64位
- 所有存储器访问都必须是边界对齐的
MIPS的指令格式
- 所有指令都是32位,操作码占6位
- 共有三种格式:I类指令、R类指令、J类指令,三种指令格式中,同名字段的位置固定不变
- I类指令
- 包括所有的load和store指令,立即数指令,分支指令,寄存器跳转指令,寄存器链接跳转指令
- 立即数字段为16位,用于提供立即数或偏移量
- R类指令
- 包括ALU指令,专用寄存器读/写指令,move指令等
- J类指令
- 包括跳转指令,跳转并链接指令,自陷指令,异常返回指令
- 在这类指令中,指令字的低26位是偏移量,它与PC值相加形成跳转的地址
MIPS的操作
- 可分为四大类:
load和store(I类)
ALU操作(R类)
分支与跳转(J类)
浮点操作- 要求内存边界对齐
第八章 中央处理器
-
CPU的组成:ALU、通用寄存器组、控制器
-
CPU的基本功能:指令顺序控制、操作控制、时间控制、数据加工
-
指令执行的基本步骤:取指令、译码、执行、(PC+1)
1.关于模型机
模型机是MIPS结构的一种简单实现,实现了MIPS指令系统的核心子集
包含指令:
- 算术运算指令:R类
add、sub、and、or、slt,其操作码字段 OP=0- 存储器访问指令:I类
lw(load word,op=35)、sw(store word,Op=43)- 等于"0"分支:I类
beqz,OP=63
- 指令字长都是4个字节(32位)
- R类指令格式:
OP——操作码字段
rs——第一源操作数字段
rt——第二源操作数字段
rd——目标操作数字段(或结果字段)
shamt——无用
funct——ALU指令的运算函数码字段
- I类指令格式:
rs——基址寄存器字段,对于beqz指令来说,是存放被检测的数据
adr——偏移量字段,rs和adr用于计算访存有效地址或分支目标地址
rt——对于load指令来说,rt所指出的寄存器是存放所取的数据;对于store指令来说,是存放要写入存储器的数据
2.逻辑设计的约定
- CPU设计中的两种部件:对数据值进行操作的部件(组合逻辑电路)、包含状态的电路(时序电路)
- 组合逻辑电路:没有内部状态,其输出仅依赖于当前的输入,与过去的值无关。在任何时候,对于相同的输入总是得到相同的输出
- 时序电路:状态部件的当前输出是前一个时钟周期写进去的值
3.实现MIPS的一个基本方案
3.1 构建基本数据通路
- 两种典型的数据通路组织方式:基于总线的结构、直接连接
基本部件:
- 取指令的数据通路
- R类指令的数据通路
- load指令的数据通路
- 把指令字中的16位偏移量字段进行符号位扩展,变成32位数,送给ALU
- 用IR[rs]作为地址去访问寄存器组Reg,读出的操作数送给ALU,与上一步扩展了的地址相加,计算出访存的有效地址,将之送到数据存储器DM的地址输入端DA
- 从DM读出数据(将DMRead设置为有效),将该数据送到通用寄存器组的数据入口端WD,写入由IR[rt]指定的寄存器
- store指令的数据通路
- beqz指令
- 把指令字中的16位偏移量字段(IR[adr])进行符号位扩展,变成32位数,并左移两位送给ALU
- 把PC+4送给ALU的另一个输入,与上一步符号位扩展和左移后的地址相加,得到转移目标地址
- 用IR[rs]作为地址去访问寄存器组Reg,读出操作数并送给判0部件。由该部件的输出确定是否分支成功
- 如果为真,转移目标地址就成为新的PC值,分支成功;否则就用PC+4代替PC中的值,分支失败
3.2 ALU控制器
- 模型机中控制器分为主控制器与ALU控制器
ALUOp的定义:
- load指令和store指令:
ALUOp=00,让ALU做加法,计算访存的有效地址- beqz指令:
ALUOp=00,让ALU做加法,计算分支目标地址- R类指令
ALUOp=10,ALU完成and、or、add、sub中的某一个,具体取决于指令中funct字段的值
3.3 单周期数据路径的控制器
4.多周期实现方案
单周期的缺点
- 效率低
- 单周期时间只能去最长的数据通路所花的时间
- 每个时钟周期中功能部件最多被使用一次
- 多周期采用更短的时间作为时钟周期,允许指令的执行时间为多个时钟周期
按周期分步:
- 取指令周期(IF)
- 指令译码/读存储器周期(ID)
- 执行/有效地址计算周期(EX)
- 存储器访问/R类指令和分支指令完成周期(MEM)
- 写回周期(WB)
5.控制器的设计
- 实现控制器的技术:硬连逻辑、微程序设计
控制器的组成:
- 指令部件包括:
- 程序计数器PC
- 指令寄存器IR
- 指令译码器ID
- 地址形成部件
- 时序控制部件
- 微操作控制信号形成部件
- 中断控制逻辑
- 程序状态寄存器PSR
控制方式:
- 同步控制方式:机器有统一的时钟信号(称为系统时钟),所有的微操作控制信号都与时钟信号同步
- 异步控制方式:各部件之间没有统一的时钟和节拍,而是各部件有自己的时钟
时序系统: 计算机的三级时序系统:指令周期、节拍、脉冲
- 指令周期:从取指令、分析指令到执行完该指令所需的全部时间,一般由若干时钟周期构成
- 节拍:节拍的宽度(时间)一般语系统的时钟周期数相同
- 脉冲
每个指令周期包含5个节拍T0~T4,每个节拍有一个脉冲
第九章 微程序控制器
- 组合逻辑控制器的缺点:
设计复杂、繁琐,缺乏规律性,设计效率低
不易修改和扩充,缺乏灵活性 - 微程序技术能很好的解决上述问题,但速度比较慢
1.基本原理
- 用二进制编码字(微指令字)来代替组合逻辑控制器中的微操作控制信号的产生
- 把在一条指令的执行过程中各节拍要进行的微操作集合都用一个微指令字来表示,然后把他们按节拍的先后顺序存放到一个特殊的存储器中(称为控制存储器CM)
- 执行该指令时,按顺序依次读出微指令字
- 微命令:构成控制信号序列的最小单位
- 微操作:执行部件接受微命令后进行的最基本的、不可再细分的操作,分为相容的微操作和互斥的微操作
- 微指令:用来产生微控制信号的二进制编码字
- 微程序:一系列微指令构成的有序集合,每条机器指令都对应于一段微程序
- 微指令周期:微程序控制器的工作周期
2.微程序控制器的组成与工作过程
- 控制存储器CM
- 存放实现整个指令系统的所有微程序
- 每个单元存放一条微指令字
- 微指令寄存器μIR
- 用来存放从控存读出的当前微指令
- 微地址形成电路
- 根据控制地址字段中的信息产生后续微地址
- 微地址寄存器μMAR
- 接受微地址形成电路送来的地址,为读取下一条微指令做好准备
- 地址译码器
- 将μMAR中的微地址进行译码,找到被访问的控存单元,将其中的微指令读出并存放于μIR中
微程序控制器的工作过程
- 启动取指微程序,把要执行的机器指令(其地址由PC给出)从主存取到指令寄存器IR中,并完成对PC的增量操作
- 根据IR中指令的操作码,微地址形成电路产生该指令的微程序的入口地址,并送入μMAR
- μMAR中的微地址经过译码,从控存中读取相应的微指令,送入μIR
- μIR中微指令的操作控制字段直接(或经过译码)产生一组微命令,送往相应的功能部件,控制它们完成所规定的微操作
- 微地址形成电路根据μIR中微指令的地址控制字段和机器的状态信息(如程序状态字PSW),产生下一条微指令的地址并送往μMAR
- 重复上述步骤第三到第五步,直到该机器指令的微程序全部执行完毕
3.微程序设计技术
3.1 微指令的编码方法
- 微指令 = 微操作控制字段 + 地址控制字段
- 四种方法:直接控制编码、最短字长编码、分段直接编码、分段间接编码
- 直接控制编码法
- 微操作控制字段的每一位直接对应一个微操作:当某位为1时,就表示执行相应的微操作;为0时就不执行该微操作
- 优点:结构简单,并行性最好,操作速度快
- 缺点:微指令字太长
- 最短字长编码法
- 将所有的微命令进行统一的二进制编码,每条指令只定义一个微操作
- 微操作控制字段的长度L与微命令的总数N的关系:L ≥ log2N
- 需要对整个微操作控制字段进行编码
- 字段直接编码法
- 把微操作控制字段进一步划分为若干个字段,每个字段单独编码,每个码点表示一个微命令
- 字段之间采用直接控制,字段内部采用最短字长编码
- 既能缩短微指令字长,又能实现较高的并行性,执行速度比较快。
- 设计原则: 把互斥的微操作分在同一字段,把相容的微操作分到不同的字段;字段的划分应与数据通路相适应;一般每个字段应留出一个码点,用于表示不发任何微命令
- 字段间接编码法(了解)
- 字段的编码的含义(即表示什么微命令)要由另外一个字段的编码来解释确定
3.2 微指令格式
- 分为两大类:水平型微指令和垂直型微指令
3.3 微程序的顺序控制
微程序入口地址的形成:
- 公用的“取指令”微程序一般存放在控存中第0号单元或其它指定的控存单元开始的一片控存区域中。(这个地址是固定不变的)
- 根据IR中的操作码,找到该指令所对用的微程序的入口地址
两种实现方法:
- 直接对应法
- 直接把操作码与微地址码的部分位对应
- 适用于所有指令的操作码的位数和位置都相同时
- 查表法:
- 在操作码的位数或位置不固定的情况下,需要用专门的硬件实现操作码到入口地址的映象
- 用PLA或ROM实现一个表格,该表格给出了各操作码所对应的微程序的入口地址
- 使用该表时,只要用操作码作为输入,就能在其输出端得到该指令的微程序入口地址
后继微地址的形成:
- 增量方式
- 顺序执行时,给μPC增加一个增量(通常为1)给出下一条微指令的地址
- 转移控制字段BCF用于固定是顺序实行还是转移,如果是转移,就有BCF指出转移地址的来源
- 转移地址字段BAF
- 转移地址的来源:由BAF给出的地址;机器指令所对应的微程序的入口地址;微子程序入口地址和返回地址(存放在返回地址寄存器中)
- 优点:SCF字段比较短,后继微地址生成逻辑比较简
单,编制微程序也比较容易- 缺点:不能直接实现多路转移
- 断定方式
- 由微程序设计者直接指定
- 由微程序设计者指定的测试判别逻辑字段控制产生
- 后继地址由两部分组成:
非测试地址:微程序设计者直接指定的,是不变的,构成微地址的高位部分
测试地址:在微程序的执行过程中,通过测试一些状态位而动态决定的,它构成微地址的低位部分- 测试地址的位数决定了并行分支的路数,而且也决定了测试控制字段的个数
- 优点:能够实现快速多路转移,提高微程序的执行速度。而且微程序在控存中的存放位置也很灵活、方便。
- 缺点:后继微地址的生成方法比较复杂,微程序的执行顺序不直观
4.模型机的微指令格式
- 模型机中确定下一条微指令地址的来源:当前微指令地址加1、转移到“取指令”的公共入口、根据指令操作码散转到该指令(或该类指令)的入口
第十章 运算方法与运算器
1.移位运算
- 逻辑移位
- 被移位的数据是逻辑数(无符号,无大小)
- 逻辑左移shl:按位左移,最高位丢弃,最低位补0
- 逻辑右移shr:按位右移,最低位丢弃,最高位补0
- 循环移位
- 循环移位中将被移位数据的左右两端连接起来,形成闭合的移位环路
- 算术移位
- 原码算术移位:符号位不参加移位,只将数值位依次移动,补0
- 补码算术移位:
算术左移:连同符号位整体左移,最高位(符号位)丢弃,最低位补0
算术右移:连同符号位整体右移,符号位保持不变,最低位丢弃
2.定点数的加减法运算
- 运算规则:
设[X]补与[Y]补均为n位补码数,其中包含一位符号位
[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补+[-Y]补 (mod M)
如果X、Y是定点小数,则M=2;如果X、Y是定点整数,则M=2n
硬件实现:
- as为0时,[F]补 = [X]补+[Y]补
- as为1时,[F]补 = [X]补 - [Y]补
溢出的判断
- 分为正溢出(正数)与负溢出(负数)
三种方法:
- 采用两个操作数和结果的符号来判断
- 当两个同号数的补码相加,若得到的结果的符号与两个操作数的符号不同,则发生了溢出
- 采用最高数值位产生的进位与符号位产生的进位是否相同来判断,当不相同时,则发生了溢出
- 采用变形补码来判断
- 变形补码:两位符号位
- 当结果的变形补码的两个符号位不同,则溢出
- 若结果符号位为01,则表示结果为正溢出;若结果符号位为10,则表示结果为负溢出
3.定点数的乘除法运算
原码一位乘法
- 符号位单独处理:同号相乘,乘积为正;异号相乘,乘积为负
- 结果的数值部分是两个数的绝对值相乘,即两个正数相乘
4.浮点运算
- 步骤:判0操作、对阶、尾数加/减、规格化、舍入
- 判0操作
- 判断两个操作数中是否有为0的,若有则不需要进行运算,直接就能设置运算结果(为0)
- 对阶
- 使小数点对齐
- 使两个操作数的阶码相等
求阶差△E=XE-YE
若△E>0,则表示X的阶码大于Y的阶码,需调整操作数Y:将Y的尾数YM右移;每右移一位,其阶码YE加1,直到两数的阶码相等为止
若△E<0,则表示X的阶码小于Y的阶码,需调整操作数X。调整的方法与上面的一样
- 尾数加/减
- 按定点加减运算
- 结果规格化并判溢出
- 若得到的运算结果的绝对值大于1,则需要右规
将该结果右移一位,相应的阶码加1- 若得到的运算结果的绝对值小于1,则需要左规
将该结果左移,每左移一位,相应的阶码减1,直到运算结果的绝对值大于等于1/2为止- 在规格化时,阶码每次加1或减1以后,都要判断阶码是否超出所能表示的范围
- 舍入处理
- 0设1入法
- 截断法
- 朝+∞舍入法
- 朝-∞舍入法
5.运算器的构成
- 算术运算逻辑单元ALU、寄存器组、数据总线
第十一章 存储器
1.存储子系统
三级存储系统
- Cache:高速缓冲存储器——速度最快,容量最小
- 主存储器
- 磁盘存储器(辅存)——速度最慢,容量最大
两个存储层次
- “Cache——主存”层次:解决主存速度不足的问题
- 对系统程序员和应用程序员都透明
2… “主存——辅存”层次:解决主存容量不足的问题- 对系统程序员不透明
2.存储器的分类
- 按计算机系统中的作用分类:主存、辅存、Cache
- 按存取方式分类:随机存储器RAM、制度存储器ROM、顺序存取存储器SAM
- 按存储介质分类:半导体存储器、磁表面存储器、光存储器
3.其他
- 数据在存储器中的存放:字节顺序、整数边界
- 主存的主要技术指标:存储容量、存取速度、可靠性、功耗
- 动态RAM的刷新:集中式刷新、分散式刷新、异步式刷新
- 并行存储器:单体多字存储器、多体交叉存储器
- 辅存:磁表面存储器、磁盘存储器、光盘存储器
4.主存的设计
- 位扩展法
- 字扩展法
- 字和位同时扩展法