计算机组织与结构学习笔记第九-十六章

计组复习总结第九章以后——

第九章 计算机算术

算术逻辑单元ALU

整数的表示(如何确定一个二进制数的正负):

符号-幅值表示:在一个n位字中,最左边的位是符号位,其余的n-1位是组成数字的大小位;第n位为0表示正数,为1表示负数(缺点:加减运算时要考虑符号位,且0有两种表示;范围-2^n-1到2^n-1)

2的补码表示法:n位数中最左边的位为0,n-1位表示正整数的大小;表示负整数时,将n位置为1,将数值的正二进制数按位取反,并以正数规则+1得到剩下n-1位的值;第n位为0表示正数,为1表示负数(范围-2^(n-1)到2^(n-1)-1)

移码:设定一个固定的偏移值加到原整数中得到移码;若移码的大小小于偏移值,说明原整数为负,否者为正数

2的补码扩展位规则:符号位依旧在最左边,多余的位用符号位的值填充。(如负数用1填充)

在2的补码表示中如何求(正/负)整数的负数:将所有位按位取反,最后再+1;

一个数的二补码和对一个数求二的补码有什么区别:数的二补码表示是用来表示整数的位模式。而一个数的二补数是一种运算,将得到另一个数(数值位按位取反再+1,即得到相反数)。

数的运算:

加法——

出现上溢:当两同符号数相加,符号位变为相反数说明发生上溢

减法:先求出减数的2的补,符号位取反,再将其与被减数求和

无符号整数乘法:

使用乘法器来进行操作:

有符号整数乘法:

布斯算法:将A和Q-1初始化为0,Q中存入乘数,M中存被乘数,每次扫描Q0 和Q1,若两者相同,则A Q Q-1整体按位右移一位 若两者不同,根据情况,若为(0-1)将M值与A值相加并存到A,若为(1-0)则相减。

除法:因为除法的内涵其实是在做减法,所以,先将除数的相反数(即求2的补)存入M寄存器,再将n位被除数扩展为2n位分别用A、Q寄存器存入高位和低位

将AQ左移一位

执行A=A – M

如果上一步减法结果为非负,则将Q0置为1,否则将Q0置为0

重复上述过程,Q有多少位,重复多少次

浮点数的表示:

一个浮点数由四个部分组成:符号+指数(阶)+有效位+底(底或基是隐含的,都是2无需存储)

如一个32位浮点格式:

首先将一个浮点数移位到小数点前只有一个

1(形如:1.101001*2^10100 )

小数点后面的二进制数即为有效值,将其后添0至24位存入有效位中

2的阶数为10100,加上偏移量(2^(n-1)-1)得到移码存入指数位中

浮点数的加减法和乘除法,按照十进制的方式对齐有效位,使得阶数相同,计算结束后,规格化数据。

第十章 指令集

机器指令的要素:操作码、源操作数引用、结果操作数引用、下一条指令引用、主存或虚存、处理器寄存器、立即数、I/O设备

指令表示:

指令的类型:数据处理(算术和逻辑指令)、数据存储(存储器指令)、数据传送(I/O指令)、控制(测试和分支指令)

指令的地址数目:

一条指令的最大地址数目:4个地址引用(两个用来访问源操作数,一个用来存储结果,一个用来存储下一条指令的地址) 通常下一条指令的地址都是隐含的,由PC指示

单地址指令如:其第二个地址是隐含的,被称为AC(累加器)如ADD C即AC <- (AC + C)

双地址指令如:move A ,B;sub A, B;

三地址指令如:sub Y,A,B;add X,A,B;

零地址指令:使用栈

指令集设计时要考虑:操作指令表、数据类型、指令格式、寄存器、寻址

操作数类型

数据被分为:地址、数值、字符、逻辑数据

压缩的十进制数表示法:使用四位二进制代码表示10个十进制数,如0=0000,9=1001,剩下的6个二进制数无效。类似数系中的8421BCD码

IRA字符:即ASCII码

操作类型

数据传送->要求:源和目标操作数的位置必须指明,可能是存储器、寄存器或堆栈;指明将要传送的数据的长度;指明寻址方式

算术运算

逻辑运算->逻辑移位/算术移位(符号位不变)/旋转移位(保留所有位,不断循环移动)

控制转移:1、分支指令——>条件分支/无条件分支

  2、跳步指令->表示下一条指令将被跳过,所以隐含地址等于下一指令地址加上该地址的长度

  3、过程调用指令->提供地址,三个常用位置:寄存器/被调过程开始处/站顶部;传送参数,可以使用寄存器,也可以将参数存入恰好在CALL指令之后的存储器位置中,最灵活的是使用栈(返回地址和全部参数的栈内容成为栈帧)

饱和算术:当加法产生上溢,结果被设置为可表示的最大值;减法产生下溢时,结果被设置为可表示的最小值

中缀表达式转逆波兰(后缀)表达式:符号紧跟在即将要进行运算的两操作数之后,符号自身不区分优先级

当所要存储的数据长度大于一个字节长时:将最高有效位存于相对最低地址位的映射方式叫做大端序;否则为小端序

十一章:寻址方式和指令集

立即寻址(immediately addressing):操作数的值在指令中

直接寻址(direct addressing):地址字段含有操作数的有效地址

间接寻址(indirect addressing):地址字段指示一个存储器地址,该存储器中存有操作数的有效地址

寄存器寻址(register addressing):地址字段指向包含操作数的寄存器

寄存器间接寻址(register indirect addressing):地址字段指示的寄存器中包含了操作数的有效地址

偏移寻址(displacement addressing):要求指令有两个地址字段,其中一个为显式的操作数可以直接使用,另一个地址字段指示一个寄存器,寄存器的内容加上显示操作数为操作数的有效地址(一般该寄存器的引用是隐含的,段寄存器)

相对寻址(relative addressing):当前PC的值加上地址字段的值得到操作数的有效地址

基址寄存器寻址(base-register addressing):指令引用(显式或隐式)一个寄存器,另一地址字段指示某一存储器地址,该存储器中含有相对于寄存器内地址的偏移量,与寄存器中地址相加得到操作数的有效地址

变址(indexed addressing):指令地址字段指示一个主存地址,再引用一个寄存器,该寄存器中含有相对于主存地址的偏移量。

栈寻址(stack addressing):栈寻址是一种隐含寻址方式。机器指令不需要指明存储器引用,而是隐含的指示操作发生在栈顶

指令格式->一个指令格式必须包含一个操作码,以及显式或隐式的、另个或多个操作数

设计指令格式要考虑:

指令长度(应当是字符长度或定点数长度的整数倍)->字(word)

位的分配->考虑:寻址方式的数目、操作数的数目、寄存器与存储器比较、寄存器组的数目、地址范围、地址粒度。

十二章CPU结构和功能

CPU的任务:

Fetch instruction from memory

Decode(译码) the instruction to determine(确定)

Fetch data

Process data

Write data

CPU组成:寄存器,ALU,CU,CPU内部总线

寄存器分为:

用户可见寄存器:通用寄存器GP register

数据~(AC累加器)

地址~(段寄存器、stack寄存器)

(某些机器允许两个相邻的寄存器作为一个寄存器来保存两倍长度的值)

条件码~(标志寄存器)作为操作的结果(在某些处理器如MIPS中不使用条件码)

控制和状态寄存器(用户不可见):

程序计数器PC:存有代取指令的地址

指令寄存器IR:存有最近取来的指令

存储器地址寄存器MAR:存有存储器位置的地址

存储器缓冲寄存器MBR:存有即将被写入或读出存储器的字

程序状态字PSW(含有条件码加上其他状态信息的寄存器),其包括的字段和标志:符号sign、零zero、进位carry、半进位AC(当CPU进行加法(或减法)运算时,如果运算结果的最高位(b7)有进位(或借位),CY则置1,否则清0)、等于equal、溢出overflow、中断允许/禁止interrupt enable/disable、特权位supervisor、奇偶校验位p

指令周期:取址 ->执行->中断 +间接周期

流水线策略(pipelining)

六个阶段分解:

将一个指令分为了多个阶段执行,当一个指令的一个阶段结束,处理器马上进行下一条指令的相同阶段,当有多个指令时,相当于处理器在同时进行这六个阶段

(共6+9-1=14个周期)

然而条件转移指令和不可预测的中断(都使若干指令的读取变得无效)限制了流水处理的速度

锁存延迟(latching delay):流水线阶段之间的缓冲需要一定的时间来完成其操作,增加了周期时间

流水线性能->

 1、流水线周期时间

流水线冒险(pipeline hazard)(流水线因为一些情况不得不停顿下来):

资源冒险:当多条指令不同阶段要使用同一资源时,不能并行执行(如要同时使用数据总线时)

数据冒险:多同一操作数位置的访问出现冲突(写后读、读后写、写后写)

控制冒险

流水线中转处理条件分支指令的解决方法:

  1. 多个指令流
  2. 预取分支目标
  3. 循环缓冲器
  4. 分支预测——分为静态预测和动态分支预测,动态分支预测就是将通过最近几次的分支转移情况来预测下一次的分支,一般使用cache或者小型表来记录历史数据,课可以使用状态图来表示(在分析状态图(不一定是最简DFA)时,可以先将状态最小化)
  5. 延迟分支

分支预测的流程图:

十三章RISC

RISC的典型特征:

指令执行特征涉及:执行的操作、所用的操作数、执行顺序

研究结论:

操作:赋值语句在程序中最显著、条件语句在程序中占有优势

操作数:程序中大量访问的是标量(局部标量),他们是高度局部化的

执行顺序:过程使用的参数及变量的数量(少量)和嵌套的深度(较窄)

针对上述结论提出一种访问方案——>大寄存器组方案:

寄存器:寄存器比主存和cache更快,且寄存器组较小,通常与ALU在同一芯片,寄存器组使用比主存和cache更小的地址

减少寄存器存储器操作的两种实现方法:

1、软件方法:依赖编译器使寄存器的使用率最大化

  2、硬件方法:简单转配更多的寄存器,使得更多的变量能够长时间保存在寄存器中

寄存器窗口(存储局部标量变量)(硬件):使用多个小的寄存器组,每个小组支配给一个不同的过程。过程调用时自动的切换来使用多个不同但大小固定的寄存器窗口,而不再在存储器保存寄存器内容。相邻过程的窗口是(部分)重叠的,以允许参数传递(反函数传递参数,子函数返回参数)。

考虑到嵌套的深度不会太高,可以采用环形的循环缓冲器的组织形式

大寄存器组与cache的比较

编译器优化(软件):编译器尽可能在寄存器中而不是在主存中为多数计算保持操作数,并且减少装载和保存操作。其优化本质是:判定在程序的任何给定时间点,什么样的量应只拍到寄存器中,如何使用最少的寄存器————着色法

上述寄存器窗口的策略无法解决全局变量的问题

RISC结构特征

每机器周期一条机器指令(由寄存器取两个操作数,完成一个ALU操作,然后再将结果写入寄存器所用的时间)

  1. 大多数操作应是寄存器到寄存器的
  2. 使用简单的指令格式,而且通常仅使用一种或少数集中格式

RISC流水线技术

指令周期———>

E(执行)阶段通常又分为:

典型RISC组织通过插入

NOOP指令来减少额外电路用于清除无用指令

流水线优化:延迟分支(无条件跳转、调用和返回)

第十四章 指令集并行性和超标量处理器

超标量方法的本质:就是在不同流水线中执行指令的能力——>允许指令以不同于程序的顺序执行,即机器有多条流水线,可以有多个不相关指令并行执行

超流水方法:多数流水阶段可以在一个周期内就执行完毕

对于超标量方法,需要限制的就是指令的相关性:

1,真实数据相关性(写后读相关性)——即两条指令存在相关性,后一条指令所需要的操作数,是由前一条指令的结果提供,顺序不能改变

->学会判断系列指令写后读,读后写,写后写相关性14.4

2,过程相关性——>对于分支指令,其要转移的指令是否执行由分支指令的结果决定,先后顺序不能改变

3,资源冲突——>当多个指令使用同一个资源(寄存器,内存,总线,寄存器组端口和功能)时,不能并行执行,会产生对资源的竞争

指令级并行性:当指令序列中的指令是独立的并因此能够通过重叠来并行执行时,则存在指令级并行性。

机器并行性:处理器获取指令级并行性好处的能力程度

指令发射是指,指令从译码阶段向流水线的执行阶段前进时发生

由三大因素决定策略(a、取指令的顺序,b、执行指令,c、改变寄存器和写存储器的顺序)

指令发射策略:

1、按序发射按序完成:abc的顺序都相等

2、按序发生乱序完成:按照顺序发射(和译码顺序一致,同时译码同时发射)因为指令执行的时间不同,同时执行的指令可以不同时完成,后执行的指令也可以先完成

3、乱序发生乱序完成:虽然译码有顺序,但只要窗口缓冲器有空位,指令就可以发射,不用等待成对的发射,并且不相关的指令其执行时间由自身决定,不用等待。

存储器重命名:
当要将新的值赋个寄存器时,为避免资源冲突,可以使用重命名的方式,产生新的寄存器来分配值

第十五章 控制器操作▲

一个程序执行的组成:

微操作是CUP的基本操作(原子操作)

微操作是一种基本的CPU操作,在一个时钟脉冲中执行。一条指令由一系列的微操作组成。

必须掌握每个指令周期

计算机执行程序的操作由一系列的指令周期组成,每个周期有一条机器指令。由于存在分支指令,这个指令循环序列不一定与组成程序的书面指令序列相同。指令的实际执行遵循指令的时间序列。

1、取址周期:

涉及四个寄存器: 

步骤:1、将PC中指令地址装入MAR

2、装入命令,将MAR中的地址放到地址总线上,控制器发出读命令,将存储器中的指令放在数据总线上,装入MBR。

  3、将MBR中的指令传给IR,将PC值加一(也可以在2步骤执行)

当取指周期结束,程序进入执行周期或者间接周期->

间接周期(将操作数间接地址改为直接地址):

1、IR将指令的地址字段传给MAR

2、将MAR中的地址放到地址总线上,控制器发出读命令,将存储器中的地址(操作数直接地址)放在数据总线上,装入MBR

3、MBR将IR中的地址字段修改为操作数直接地址

中断周期(当中断产生时,将当前PC值存入内存中,在PC装入所要转移的指令地址):

1、将PC当前值装入MBR中

2、把要存PC值的内存地址装入MAR

3、将MBR中的值装入内存

在t1后就可以将要转移的指令地址存入PC中了

【以上三个阶段都可以写出其微操作,能够被预先确定,然而执行周期的微操作不能被预测(千变万化!)】指令周期代码ICC :00取址  01间接  10执行  11中断

控制器:需要完成两项基本任务:1、定序  2、执行

输入的控制信号:时钟、指令寄存器、标志、来自控制总线的控制信号、CPU内部的控制信号、到控制总线的控制信号

输出的控制信号送往目标:1、数据通路  2、ALU  3、系统总线

以一个取指周期为例,控制器如何控制:

  控制信号打开逻辑门,以便数据总线的内容存入MBR

  存储器的读控制信号送到控制总线

  控制信号打开逻辑门,允许数据总线上的内容存入MBR

  控制信号对PC内容加I(指令长度)并把结果存回PC

控制器的内部组织:

1、一个CUP内部总线

2、内部总线和各寄存器之间提供了门和控制信号

3、控制线控制数据总线和系统(外部)总线的交换以及ALU的操作

4、各种寄存器

例、一个ADD操作:

微操作与控制信号(掌握根据指令写出微操作和控制信号表)

控制信号:Cr:到数据总线的读控制信号

  Cw:到数据总线的写控制信号

  CALU:进行ALU运算的信号

例子(一个典型的控制器输入输出列表)

课后题涉及跟复杂的控制信号:

控制器实现的技术有两大类:

1、硬布线实现:本质是组合电路

2、微程序实现——>

线控制单元是一种组合电路,其中输入逻辑信号被转换成一组输出逻辑信号,作为控制信号。

在微程序控制装置中,逻辑是由微程序指定的。微程序由微程序设计语言中的一系列指令组成。这些是非常简单的指令,用来指定微操作。

第十六章微程序控制▲

微程序控制器使用微程序设计语言来描述每个微操作,一个时间内出现的一组微操作并称为为一条微指令,这种微指令序列被称为微程序或固件

用二进制数字来表示控制信号,从而构造了一个控制字,其每位数字表示一根控制线

微指令分为水平微指令和垂直微指令:

水平->

微程序控制器的关键部位:控制存储器、控制地址寄存器、控制缓冲寄存器、定序器

此控制器的功能:

下一条指令的地址取决于ALU标志控制缓冲寄存器内容:

 在水平微指令中,控制域中的每一位都连接到一条控制线上。在垂直微指令中,每个要执行的动作都有一个代码,解码器将这个代码转换成单独的控制信号。

垂直指令方式相比于水平,其有点是更少的位数,但是需要少量的附加逻辑和时间延迟

所以垂直指令编码的时候需要额外的一位字来译码。

水平指令:

♢控制字段每位表示一个控制信号

♢指令较长

♢实现高度并行操作

♢只需要少量译码位

垂直:

♢指令较窄

♢n个控制信号可以被编码为logn位

♢指令并行性差

♢需要外部存储器字来翻译控制信号

微程序控制器优点:简化控制器设计任务,成本低,出错率低

缺点:速度较硬布线控制器慢

微程序控制器的基本任务:

♢微指令定序:有控制存储器得到下一条微指令

♢微指令执行:产生执行微指令的控制信号

设计要求:微指令大小和地址生成(由指令寄存器确定、下一顺序指令、转移)时间

定序技术:依靠于当前微指令、条件标志、指令寄存器的内容产生下一微指令的控制存储器地址

微指令中的位置信息有三种:双地址字段、单地址字段、可变格式

地址生成:如何取得和计算下一地址*

微指令执行:微指令CUP最基本时间->分为取指和执行

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小龙凤团茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值