其他分享
首页 > 其他分享> > “21天好习惯”第一期——8

“21天好习惯”第一期——8

作者:互联网

《计算机组成原理》

  3.3.2 算术逻辑运算单元

  1.ALU的外部特性与功能

  算术逻辑运算单元(ALU)通常包括:输入、输出和控制引脚。

输入部分:A和B是输入到ALU的两个n位数(数值量或逻辑量),C_{in}代表ALU的初始进位信号。

输出部分:运算结构由A和B经过ALU运算以后的结果;C_{out}是ALU运算过程中最高位产生的进位信号;CF/ZF/SF/OF/PF分别是ALU输出的运算标志信息,分别对应进位/借位标志、零标志、符号标志、溢出标志和奇偶标志。

控制部分:Control是一个m位的控制信号,通过不同的控制信号来控制ALU执行不同的运算功能。若ALU执行的运算功能数位k,则m和k应满足2^{m}\geq k

2.ALU的标志位

    常用标志位只有ZF、CF、OP、SF和PF这几种,它们通常自动记录到程序状态字(PSW)中的对应标志段,以便系统能实时掌握ALU的运行状态。

 (1)零标志 ZF

ZF主要用于标识当前ALU的运算结果F是否为0,如果F=0,则置ZF=1,否则置ZF=0。

(2)进位/借位标志CF

CF主要用于指示ALU当前执行  “加或减” 运算时,最高位是否存在进位和借位。如无符号二进制数A=1001、B=1010则A+B=1001+1010=1 0011,这里最左边的1是A+B运算过程中最高位产生进位C_{out},故此时CF应置CF=1,否则置CF=0。

    CF通常对无符号数的运算有实际意义,对有符号数则无应用意义。

(3)溢出标志OF

运算发生溢出,通常会导致ALU输出结果F的错误,因此必须设置为ALU设置溢出标志位。如,4位二进制补码数A=0111,B=0100,则A+B=0111+0100=1011 (为-5),两个正数相加的运算结果是负数,显然此运算结果是不正确的,因为A+B=11,超出4为二进制补码数的表示范围,因此发生了溢出,故应该置OF=1。

(4)符号标志SF

   SF主要用来标识ALU输出的运算结果即F的符号位。例如,若F=1011,则置SF=1;若F=0110,则置SF=0。SF仅对符号数才有实际意义。

(5)奇偶标志PF

    PF主要用来标识ALU输出的运算结果F的二进制代码中,代码1的个数是奇数还是偶数。如果有偶数个1,则置PF=1,否则置PF=0。

  数据采用奇偶校验编码方式,那么可以通过ALU输出的PF来对输入数据进行奇偶校验,以判断被校验的数据代码是否正确。

 

判断两个定点数A/B是否相等,可以先在ALU中执行“A-B”,再根据输出的标志位ZF来判断。除此外还有别的通过ALU输出的标志位来判断任意两个数的大小关系呢?

对无符号数A/B,ALU先执行“A-B”运算再按下列规则判断;

对于带符号数A/B,ALU先执行“A-B”运算,再按下列规则判断:

   在某些条件转移类指令或者专用的比较类指令中常常涉及对两个参数的值进行大小比较,从而判定是否符合转移条件。因此在设计ALU的逻辑电路时,通常需要设计这些标志位,以便快速地通过这些标志位来构建比较的逻辑条件。 

标签:标志,天好,21,ZF,CF,第一期,ALU,SF,运算
来源: https://blog.csdn.net/weixin_56001158/article/details/121047771