资源描述:
《计算机组成原理--重点知识点讲解之cpu》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机组成原理--重点知识点讲解之数据的表示和运算溢出概念和判别方法溢出:计算机的字长是固定,所以它能够表示的数据范围也必然是确定的。在运算的过程中,结果超出了计算机可以表示的范围就是溢出。判别方法:书上给出的结论是如果原操作数符号相同,而结果与原操作数符号不同,就发生了溢出。溢出只有可能发生在:正+正,负+负,正-负,负-正这4种情况下,正+正和负+负原操作数符号相同,符合判定方法的条件。而正-负,ALU中不存在减法器,减法实际上就是加补码完成的,而正-负实际上真正在ALU中的操作是正+(-负)
2、,而-负即为正,正-负实际情况其实就是正+正,同样负-正实际情况就是负+负。所以他们也是符合判定方法的条件。因此判定方法中的条件句“原操作数相同”则囊括了所有可能发生溢出的情况。到这里条件满足的只是可能,而不是一定。后面的条件“结果与原操作数符号不同”既出现了正+正=负,负+负=正的情况,出现这一情况的原因就是数值位产生了进位(这种进位不一定会溢出),但这个进位如果改变了结果按照正常原则应该出现的符号,则就是发生了溢出。这就是我对这个判定方法的感性认识。至于理性的数学证明,书上貌似是有的。这只是理
3、论上的判定方法,如果严格按照这个方法来设计电路,判定电路仍然会很复杂,书上给出的是一位符号位判断溢出或2位符号位判断溢出,她们所利用的原理都是:数值位进位和符号位进位不同就产生溢出。我们按照前面的方法列出所有发生溢出的情况,然后用穷举法来说明这个结论的正确性。溢出发生的所有可能情况:符号位分别是11,或者符号位是00.按照前面的结果10是不会发生溢出的。如果数值位进位1,对于符号位11情况来说,11会进位1,数值位的进位进到符号位,符号位仍为1,符号未变没有发生溢出,此时符号位进位1,数值位进位1
4、如果数值为进位0,对于符号位11来说,11进位1,数值位进位0会直接填入符号位,则符号位变成了0,符号发生改变,发生溢出,此时符号位进位1,数值位进位0如果数值位进位1,符号位为00,则符号位进位0,数值位进位1,填入符号位,则符号位变成了1,符号改变,发生溢出,此时符号位进位0,数值位进位1如果数值为进位0,符号位为00,符号位进位0,数值为进位0,填入符号位,符号未变,未发生溢出,此时符号位进位0,数值为进位1.统一前面4种情况,就能得出“数值位进位和符号位进位不同就产生溢出”。原码乘法器算是
5、比较重点而且也应该是难点的章节了,希望我写下的东西能够对大家有所帮助,也希望有别人写下不同的看法。首先从10进制乘法开始理解,我们仔细看下竖式计算多位乘法(包括一位)的过程,理解乘法计算的过程是理解乘法器的重要基础。以具体例子来分析,比如132乘以124,我们无法直接得到结果,我们采用的乘法过程如下:首先拿乘数124的个位数4去乘以被乘数,得到一个结果528(这个结果一般是被记录在纸上).紧接着,我们又拿124的十进制位的2去乘以132,得到结果264.此时我们接着就把264左移一位得到2640,
6、然后将这个结果加上528得到答案3168.再继续我们把124的百位1去乘以132,得到132,然后左移2位得到13200,然后加上之前的2640,得到15840.以上就是一个乘法的一般过程,它和我们常用的竖式乘法有一点点区别:竖式中所有结果一般是最后统一加起来,但我想一次一次加和统一加这并无本质区别。竖式中没有明显的左移过程,其实是有的,这点应该很容易看出来。因此一个乘法过程其实就是一个循环,(我们再不考虑符号位和硬件的限制)算法描述如下:mul(被乘数,乘数){i=0;积=0;while(i<乘
7、数长度){j=乘数第i位数值;临时积=j*被乘数;积=积+(临时积左移i位);i++;}返回积;}希望大家能够仔细理解这个,因为这才是理解乘法器的重中之重,至于其它2位,右移之类的内容,都是局限于硬件采用的技巧。2进制和十进制乘法比较:2进制乘法相对于十进制要简单很多,从注释里面可以看到。最后局限于硬件的限制,我只介绍下在硬件中,不局限单位还是双位,源码还是补码,只是他们公共部分个人觉的比较难以理解的部分.1.为什么采用右移?我们采用左移,计算机内部采用右移。这是为了方便而采用右移。我们的目的是的
8、出乘法的结果,而对于这一目的积=积+(临时积左移i位);和左移积其实是完全等效的。而且算法里面我们每次要左移i位,右移积的话,每次在前面移动的基础上我们只需要移动一位。2.为什么可以把部分积结果左移溢出的部分放到乘数寄存器上去。我们从循环体可以看出j=被称数第i位数值而对于乘数已经被用过的位数,我们在后面的运算中完全不需要了,所以可以直接丢弃。(因为我们的目的是得到乘积的结果,至于要不要保护原来的乘数和被乘数不是我们需要考虑事情)。以上就是我的理解,至于具体的乘法过程,书和视频教程