加载中...
加载中...
计算机组成原理问答

计算机组成原理问答 转载

这些问答是老师给出的,用于引导性学习,在这里整理一下,以后方便学习。

1.计算机组成原理导论

1.1如何学习计算机组成原理  

【问题1】这门如何教授

【答】MOOC+讨论+作业。

          看中国大学MOOC中华中科技大学秦磊华教授的《计算机组成原理》慕课,再讨论和作业。讨论和作业作为平时成绩,讨论占总评成绩的20%,作业占总评成绩的10%。回答问题不论对错,主动提问题,均记1次,回答问题时回答“不知道”“不懂”记0.5次,如果点名回答问题时,不在,即旷课,记0次。作业有1次记1次,没有作业即0次,最后根据次数计算每次的分数,再根据每人的次数累计为平时成绩。

中国大学MOOC中华中科技大学秦磊华教授的《计算机组成原理》慕课  

地址:http://www.icourse163.org/course/HUST-1003159001  


【问题2】学习计算机组成原理需要哪些预备知识

【答】学习计算机组成原理,应该具备数字逻辑和汇编语言程序设计的知识。

       1、数字逻辑。数字逻辑有的称为数字电路与逻辑设计。这门课主要介绍数字电路的设计,数字电路包含组合电路和时序电路,这两大电路都是以逻辑数学为基础的电路,即实现各种逻辑数学的电路。逻辑数学比较简单,我们在学习高级程序设计语言(例如C语言)就接触了逻辑运算,即与、或、非运算,那时全是数学的概念。我们以前的数学计算是人工根据计算规则计算,而现在这种数学的计算必须在计算机实现,也就是必须硬件实现数学计算,计算机组成原理就是研究这方面的技术,所以我们必须具备数字电路与逻辑设计的概念才能明白计算机的各种电路。

          2、汇编语言。是机器语言符号化的程序设计语言,和机器语言一样是属于低级程序设计语言,在学习计算机组成原理的指令系统(本教材第4章)和中央处理器的指令周期(本教材第5章)时,如果有汇编语言的基础就非常好理解了。所以汇编语言是基础。

【问题3】应以何种理念学习计算机组成原理

【答】我在学习和工作中,在这门课教学过程中,我的体会有如下几点:

          1、要有用有限的资源解决无限的问题理念。当然,无限的问题是不存在的,计算机解决的问题都是有限的问题,人类计算的问题也是有限的问题,只是这个有限的非常大,被有限能力的计算机一次不解决。

          2、在学习和研究有限资源表示和解决问题时,要善于学习和总结其中的特点,这些特点就是计算机组成原理中解决问题的思路和方法。

         3、时常会运用我们日常中解决问题的思路,即从手工中找灵感。

         4、在计算机的个部件的设计中有一个有限位数和固定位数的原则方法。

2.运算方法与运算器

2.1本章学习

【学习要点】

【2.1】数据与文字的表示方法

1、数据格式:掌握定点数、浮点数的表示方法,十进制数串的表示方法。理解为什么有这样的表示。

2、数的机器表示:理解原码、补码、移码的表示方法。难点是移码,何时用移码,何处用移码,如何用移码。

3、了解字符与字符串的表示方法和汉字的表示方法。

4、理解校验码,重点奇校验与偶校验

【2.2】定点加法、减法运算

重点是补码加法、减法、溢出概念、溢出的检测原理、基本的二进制加法/减法器。

难点是溢出和行波进位的补码加法/减法器

要求能够根据补码原理或电路的运算过程进行运算。

【2.3】定点乘法运算

重难点是不带符号的阵列乘法器、求补电路、直接补码阵列乘法器,要求

要求能够根据阵列乘法器的运算过程进行运算。

【2.4】定点除法运算

重点是不恢复余数阵列除法器。

难点是除法过程的理解,不恢复余数方法的提炼与形成,可控加法/减法(CAS)单元。

【2.5】定点运算器的组成

重点是逻辑运算,先行进位的原理和实现与应用

了解ALU,理解内部总线,在此基础上掌握定点运算器的基本结构与数据流动过程。

【2.6】浮点运算方法和浮点运算器

理解并掌握浮点加减乘除运算思路,了解浮点加减法运算的硬件框图。

了解浮点运算流水线的原理,掌握指标概念与计算。


2.2数据与文字的表示方法

【问题4】第1个有限的资源

【答】第1个有限资源就是数字电路,在数字电路中,任何的表现只有高电平和低电平两种表现形式,用数字表示就是0和1。我们把低电平状态称为数字0,把高电平状态称为数字1,当然你也可以把低电平状态称为数字1,把高电平状态称为数字0,这只是一个约定而已。从一开始把低电平状态称为数字0,把高电平状态称为数字1,所以现在就是这样规定的。所以第1个有限的资源就是0和1,形成的数据就只能是0、1串。

【问题5】第1个有限资源要表示十进制数字

【答】十进制数字有是个数字,就是数字0、1、2、3、4、5、6、7、8、9,也就是说在十进制中用了十种状态表示十个数字,而计算机中最基本的资源就是只有两种状态表示0和1。

       怎么解决资源不足问题?没关系,一个人的力量不够,可以想办法增加这个人的力量来满足问题需要,这是一种解决问题办法,但是无论你采取什么办法,一个人的力量的增加,很快达到上限,再也增加不了了,问题到此解决不了,所以,这种方法(解决问题思路)有很大的局限性。而另外一种思路,就是增加一个人,不够,再加人,多个人的力量加起来肯定比一个人的力量大,问题也容易解决了,而现在要解决的问题不是增加一个人的力量,而是变成如何将两个人,多个人的力量组织起来,用团队的力量解决问题,进而这种方法(解决问题思路)就是转而变成如何组织和减少组织消耗的问题。这种方法看似很好,但是也有局限性,就是不能无限的增加人,因为增加到一定人数后,团队力量不肯能再增加了,即使增加,也没有刚开始明显,所以这种方法(解决问题思路)到一定的时候,就要转变组织方法与形式。

      明白了吧,用1位二进制的0、1无法表示十进制的0、1、2、3、4、5、6、7、8、9,而是用四位二进制0、1串表示十进制的0、1、2、3、4、5、6、7、8、9。例如:

二进制          十进制

0000               0

0001               1

0010               2

0011               3

0100               4

0101               5

0110               6

0111               7

1000               8

1001               9

【问题6】数据的表示

【答】再谈数据,这个问题太基础了,就是二进制数据与十进制数据转换,计算机只识别二进制数据,人们习惯与十进制数据,但我认为是个问题,所以提出来。

【问题7】整数的表示与运算

【答】整数的表示和运算非常简单,在这里提出这个问题,是要说明计算机的计算只能进行整数运算。这是我在多年的学习与工作过程中发现的现象,其实,提出这个问题,计算机专业人员可能都会觉得这个问题太小儿科了,但我想提醒大家的是,从大一读到现在,哪位老师,哪本书明确强调过这个问题,都没有!以至于大家在学习的时候只会记住什么定点数、浮点数等概念,并不理解为什么有这样的内容。

         计算机的计算只能进行整数运算!计算机的计算只能进行整数运算!计算机的计算只能进行整数运算!

【问题8】定点数表示方法的理解

【答】计算机的计算只能进行整数运算!可我们实际生活工作中遇到了数据不只是整数,还有小数和分数,正数和负数。这是用有限资源解决无限(大量)问题的一个典型用法。

       整数在计算机中的表示是很简单,按照二进制与十进制转换即可。问题是我们的需要处理的数据不仅有整数,而且还有大量的小数,因此小数点如何表示。多了一个不是数字的符号,再加一个二进制编码,例如用1010表示小数点,行,但是这种方法解决了表示,增加了计算复杂性,有局限性,换思路,因此提出了在计算机中大家约定将小数点固定在某个位置,这样我们就有了定点数的概念了。小数点约定在哪个位置?在数据的最左边、最右边、中间某个位置。在研究中发现定在最左边和最右边最简单方便,因此计算机中的数据都是纯整数或纯小数。这样,不管小数点在最左边(纯小数),还是小数点在最右边(纯整数),都不用表示小数点了。哈哈!

【问题9】正负数的表示与理解

【答】小数点的处理方法启发了我们,我们把数据中的最高位(最左边位)作为符号位,二进制数是0和1,正好两个状态,用0表示正数,用1表示负数。可是我们大家以前学习的正负号是“+”或“-”,如果是正数,其符号还不需要写出来。这没关系,在计算机输入输出的时候完成“0”与“+”,“1”与“-”转换就完了,如果输入的时候没有符号,则计算机内部强制加符号“0”,输出的时候,根据你的要求,“0”可以转换为“+”输出,也可以不转换任何符号输出。

【问题10】正负号参加运算的理解

【答】正负号在计算机中是用数字0和1表示,这样正负号与数据中的数字是一样的表示,那么,在运算时如何区别正负号和数字啦?就是补码。

【问题11】小数的表示与运算

【答】小数采用浮点数的表示方法。浮点数由四个部分,每一部分占多少位,在哪几位,都有规定,并且由于数据输入的形式和运算的结果,所以有了浮点数规格化的要求,所以学习浮点数,在理解浮点数的表达方式的基础上,要理解并记住IEEE754标准的规格化浮点数。

【问题12】分数的表示与运算

【答】计算机中没有分数的表示方法,而是在输入时就已将分数转变为小数输入了。

【问题13】数据表示小结

【答】计算机只能表示无符号数,有符号数、整数和小数。不能表示分数,可转变为小数表示。另外中学学习的复数,复数就是用两个实数组合表示。所以这样所有的数据计算机都能表示了。

【问题14】移码是什么码数据

【答】移码是无符号整数,将移码位数表示范围内的正负数加上一个数变成一个全部正数的数,这种表示的数称为移码。这样一在运算时方便对阶,二不需要表示一位表示符号,节省了空间。

【问题15】数据表示范围的要求

【答】数据表示范围是必须要理解和能够计算的。

2.3定点加法、减法运算

【问题16】定点加法与减法

【答】对于定点加法与减法,是基于补码的加法与减法的运算,重点是溢出的概念和检测方法,加法和的符号与减法差的符号都是在计算的过程得到的。

【问题17】加法/减法器关注什么

【答】此处的加法/减法器是最基本的,在学习时关注以下的几个点

      1、全加器:是带进位的一位加法器,其电路的实现就是数字电路,从真值表到组合逻辑方程,经过化简等变化得逻辑方程,再根据逻辑方程画出全加器电路。这是一个解决一位加法计算的电路。电路的理解必须有数字电路中组合电路设计知识。

      2、多位加法器:用简单的一位全加器组合构成一个多位的加法器。这不需要逻辑电路相关知识,这是功能设计的本领。

      3、补码电路:补码电路是由两部分组成,一部分是求反电路,另一部分是加1部分。求反电路是充分利用逻辑数学中异或运算⊕的特点设计的电路,即0与任何数进行异或运算,其结果是任何数保持不变,1与任何数进行异或运算,其结果是任何数的相反数。求补部分利用了最低位全加器的进位加。这样组合起来完成一个数的求补运算电路。这也是功能设计本领。

      4、行波进位的补码加法/ 减法器:将前面的3点组合起来就构成了一个多位的行波进位的补码加法/ 减法器,设计的技巧是求补电路和方式控制M端。正好加法运算时M=0,保持了加数不变,最低位的加法器的进位为0(这点与我们做加法时有点异常哟,我们学习加法运算时,从来不会考虑最低位还有什么进位的问题),即不求补,直接加;减法运算时M=1,求反,最低位加1,将减数变补再行加法。所以这是脑洞大开的设计。

      5、两数参加加减运算时,其符号位一同参加加减运算,运算结果没有溢出时最高位就是符号位,即是运算结果的符号。这是计算机导论中的内容。所以设计加法/减法器电路时,将符号位作为一位数参加运算来设计电路。

      6、缺点:虽然行波进位的补码加法/ 减法器是一种解决问题的办法,但延迟长。即上一位的运算必须要下一位运算完毕,产生了进位后才能进行运算,所以延迟时间较长。计算机的特点就是追求快,怎么让它运算快,一是改变器件特性,而是改变思路,变结构,这是后面的内容。

【问题18】溢出

【答】因为计算机中数据都是有位数规定,如果数据超过了规定位数,这种现象称为溢出。溢出是在运算过程中产生。计算机只能进行加、减、乘、除运算,只有加法和减法运算才会产生溢出,乘法和除法运算是不会产生溢出的。因此在电路设计时,加法/减法器要考虑溢出判断问题,乘法器、除法器不考虑溢出问题。

         在电路设计是用双符号位的方法判断溢出。这与手算不一样,手算只有一位符号位。

【问题19】行波进位的补码加法/ 减法器如何判断溢出

【答】根据P31的图2.3行波进位的补码加法/ 减法器图的左上角用异或门构筑的判断电路得知,Cn=Cn-1时,即输出为0,表示无溢出,Cn≠Cn-1时,即输出为1,表示溢出。其原理是什么?具体分析加法运算的细节,才能总结出规律。

      假定一个数据是4位补码(格式为A3A2A1A0),则表示的数据范围是-8~7之间,具体16个数据是:

0000(0),0001(1),0010(2),0011(3),0100(4),0101(5),0110(6),0111(7),

1000(-8),1001(-7),1010(-6),1011(-5),1100(-4),1101(-3),1110(-2),1111(-1)。

      根据我们在计算机导论中学习,何为溢出?即两个正数相加为负数,两个负数相加为正数。具体分析:

 一、对于两个正数相加,我们看到的是这样的:7的一半是3,

1、当两个加数都≤3时,其和≤6,此时第2位相加不产生进位,Cn-1=0,当然第3位都是0,绝不会产生进位,即Cn=0,没有溢出;

2、当一个加数≤3,另一个加数是4时,其和≤7,同样Cn-1=Cn=0,没有溢出;

3、当两个加数都≥4时,其和≥8,你从上面8个正数中看到≥4的数据的第2位都是1,此时第2位相加肯定产生进位,即Cn-1=1,而第3位均为0,第3位的加法是0+0+Cn-1 =0+0+1=1,因此不产生进位,即Cn=0,此时Cn≠Cn-1,溢出了。

4、当一个加数<4,另一个加数≥4时,如果其和≤7,则一个加数的数据是00**,一个加数的数据是010*,这样第2位相加不产生进位,即Cn-1=0,当然Cn=0,此时Cn=Cn-1,没有溢出。

5、当一个加数<4,另一个加数≥4时,如果其和>7,则一个加数的数据是001*,一个加数的数据是011*,这样第1位相加产生进位,即Cn-2=1,导致第2位相加产生进位,即0+1+Cn-2=0+1+1=10,产生进位Cn-1 =1,而第3位相加,即0+0+Cn-1=0+0+1=1,不产生进位,即Cn=0,此时Cn≠Cn-1,溢出了。

 二、对于两个负数相加,我们看到的是这样的:-8的一半是-4,

为了便于分析数据,我们再在这里给出8个负数数据:

1000(-8),1001(-7),1010(-6),1011(-5),1100(-4),1101(-3),1110(-2),1111(-1)。

1、当两个加数都≥-4时,其和≥-8,此时第2位相加产生进位,Cn-1=1,由于第3位都是1,所以第3位相加:1+1+Cn-1=1+1+1=11,产生了进位,即Cn=1,Cn=Cn-1=1,没有溢出;

2、当两个加数都<-4时,其和<-8,你从上面8个负数中看到<-4的数据的第2位都是0,此时第2位相加肯定不产生进位,即Cn-1=0,而第3位均为1,第3位的加法是1+1+Cn-1 =1+1+0=10,因此肯定产生进位,即Cn=1,此时Cn≠Cn-1,溢出了。

4、当一个加数=-4,另一个加数<-4时,如果其和一定<-8,一定溢出。具体是一个加数的数据是1100,一个加数的数据是10**,这样第2位相加不产生进位,即Cn-1=0,而第3位相加就产生了进位,即Cn=1,此时Cn≠Cn-1,溢出。

4、当一个加数>-4,另一个加数<-4时,如果其和≥-8,则>-4的加数的数据是1101和111*,<-4的加数是10**,因为其和≥-8,且<-4,所以一定是10**这样的数据,因此第1位相加一定产生进位,即Cn-2=1,而第2位相加时是1+0+Cn-2=1+0+1=10,一定产生了进位,即Cn-1=1,而第3位相加是1+1+Cn-1=1+1+1=11,即Cn=1,此时Cn=Cn-1=1,没有溢出。

5、当一个加数≤-4,另一个加数<-4时,如果其和一定≤-8,这是溢出了,我们看Cn与Cn-1的关系。≤-4的加数的数据是1100和10**,<-4的加数的是10**,所以如果第1、0位相加只有00+**和0**+0**,绝对不产生进位,即Cn-2=0,而第2位相加是1+0+Cn-2=1+0+0=1,或0+0+Cn-2=0+0+0=0,即Cn-1=0,而第3位相加是1+1+Cn-1=10,就产生了进位,即Cn=1,此时Cn≠Cn-1,溢出。

三、一个正数与一个负数相加

大家自己分析一下。

四、四位数的无符号数相加

大家自己分析一下。

通过4位案例的分析看Cn=Cn-1,则无溢出,而Cn≠Cn-1,溢出。正好是异和的运算结果,所以有了异和门判断溢出电路

【问题20】行波进位加法/减法器一般 有多少位

【答】根据题目要求或需求确定,但都是2n位。例如现在常用的系统是64位,则该加法器就是64位。

2.4定点乘法运算

【问题21】怎么看无符号阵列乘法器设计

【答】用我们熟知的人工计算过程理解乘法器的处理处理电路。我们以无符号数(正数)看设计思路。

      一、乘法运算可以由加法运算完成,例如123*783可以变成789个123相加,但是这样太慢了,可以变成这个式子123*700+123*80+123*9,

再变成123*7*100+123*8*10+123*9,

再变成123*7*102+123*8*101+123*9*100,(阵列乘法器原理)

再变成10(10*(0+123*7)+123*8)+123*9       (一位乘法原理)

这是十进制的乘法变形,估计大家到此都可以理解这个乘法算式的变化了。提醒有关规律,一个数乘10,相当于这个数左移一位,个位补0。

那么后面就秦磊华老师的慕课中的原码一位乘法和本教材的原码(不带符号)阵列乘法器的设计思路看十进制的123*789如何解决:

1、秦磊华老师的思路:

设两个变量,一个P记录乘积的部分和(计算结束,P就是乘积,),另一个C,计数,C的初值是乘数的位数,对于我们这个乘数789而言,是个3位数,所以C=3。

第一步:C不等于0,则根据C值(C=3)取乘数相应位置一个数字(相应位置的数字是7),执行P= P+被乘数*7,即P=0+123*7,C=C-1=3-1=2,

第一步:C不等于0,将P等于P左移1位,左移后空出的个位补0,即P=P*10=10*(0+7),此时再根据C值(C=2)取乘数相应位置一个数字(相应位置的数字是8),执行P= P+被乘数*8,即P=10*(0+7)+123*8,C=C-1=2-1=1,

第三步:C不等于0,将P等于P左移1位,左移后空出的个位补0,即P=P*10=10*(10*(0+7)+123*8),此时再根据C值(C=1)取乘数相应位置一个数字(相应位置的数字是9),执行P= P+被乘数*9,即P=10(10*(0+7)+123*8)+123*9,

C=C-1=1-1=0,

第四步:C=0,则运算完成。

 

秦磊华老师的慕课中给的数据是纯小数,即我们把把整数的123*789改成纯小数的

0.123*0.789,则可以变成这个式子0.123*0.7+0.123*0.08+0.123*0.009,

再变成0.123*7*0.1+0.123*8*0.01+123*9*0.001,

再变成0.123*7*10-1+0.123*8*10-2+0.123*9*10-3

再变成(123*7+(123*8+(0+123*9)*10-1) * 10-1) * 10-1)

乘10-1就相当于右移1位,高位补0,

我用的是十进制数说明原理,是因为大家对十进制数比较好理解,如果换成二进制的话,问题还简单,机器中取乘数的第几位数字又有特点了。采用二进制的说明如下

1)、二进制的数字只有0和1,0乘任何数都为0,1乘任何数都还是任何数,所以不会出现123*9这样复杂的事,所以这样的“P+被乘数*乘数相应位置的数字”变成“P+被乘数*0”或“P+被乘数*1”,即变成“P+0”或“P+被乘数”,如何能够做到?用乘数相应位置的数字与被乘数的各位做与运算,即一个与门电路就可轻易解决。

2)、如何获取乘数某位的数字。这个是移动操作,即左移或右移,左移是从最高位开始逐位移出,右移是从最低位开始逐位移出,移到哪里去了?移到一个1bit寄存器,我们可以用这个寄存器的值去与被乘数的每位做“与”运算,可以轻松得到是0还是被乘数。

3)、P的移位处理,乘数移位时会空出移位(左移空最低位,右移空最高位),这样将P移出的数据逐位移到乘数寄存器中。

4)、何为寄存器。即存放数据的部件。寄存器有规定的位数,例如64位的操作系统,其寄存器是64位的。

5)、计算机中的参与运算的两个数据是同一样位数的数据。两个n位数的数据相乘,其乘积一定是2n位数的。

2、书上的阵列除法器:

在理解了乘法运算变成加法和移位操作的基础,应该能够理解阵列乘法器的设计原理,移位操作是通过全加器的布局解决的,即在阵列布局加法器时,错位布局就行了,一次错1位布局。另外加0还是加被乘数现在好解决了。因此从数据构成来看,是这样的:

因为:  Y=yn-1yn-2……y1y0     (问题,此处为什么不是ynyn-1…… y1y0而是yn-1yn-2…… y1y0

           =yn-1*2n-1+yn-2*2n-2+…… + y1*21+ y0*20

          =2(2……(2(2(2yn-1+yn-2)+yn-3)……+y2)+y1)+y0

所以:  X*Y=X*(yn-1yn-2……y1y0)

             =X*(yn-1*2n-1+ yn-2*2n-2+……+ y1*21+ y0*20)

             =X*yn-1*2n-1+X*yn-2*2n-2+……+X*y1*21+X*y0*20

             =2(2……(2(2(2*X*yn-1+X*yn-2)+ X*yn-3)……+X*y2)+X*y1)+X*y0

因为是二进制,所以yi的值只有两个,即yi=0,或 yi=1

当yj=0时,X*yj=0

当yj=1时,X*yj=X

乘1次2,就相当左移一位。将X如同Y展开一样,则有(下面一般乘法竖式的样式由于太宽,手机不好看,显示烂了,可看书白中英的P33的两个图)

X*yj=(xn-1*2n-1+xn-2*2n-2+……+x1*21+x0*20)*yj

     = xn-1*yj*2n-1+xn-2*yj*2n-2+…… + x1*yj*21+x0*yj*20

                                                                          xn-1          xn-2          ……          x1          x0   =X

                                                                           yn-1        yn-1            ......          y1         y0     =Y

                                        *                                                                                                           

                                                                                      xn-1y0        xn-2y0          ……           x1y0      x0y0

                                                                    xn-1y1       xn-2y1         ……              x1y1         x0y1

                                                                                            ........

                          xn-1yn-2        xn-2yn-2     ……           x1yn-2        x0yn-2

   xn-1yn-1        xn-2yn-1     ……              x1yn-1     x0yn-1

         2、用行波进位的加法/减法器实现乘法,需要多少个这样的加法器。这是系统设计问题。例如我们现在常用的系统是64位的,则需要64*63个的全加法器组成阵列乘法器。

【问题22】有符号的阵列乘法器设计

【答】 有符号的阵列乘法器设计就是采用无符号的阵列乘法器和单独的积的符号运算电路的组合设计。

       积的符号在我们人工计算过程中,是单独计算的,即同号相乘为正,异号相乘为负,正好是个异或运算。所以单独有符号运算电路,即异或电路。

【问题23】内存中已补码而不无符号的形式存放数据,如何看带符号的阵列乘法器?

【答】思路就是在乘积运算之前,将两个乘数转换为原码,运算完后,将运算结果再转换为补码形式存放,其问题是如何转换。

       转换的前提是正数的补码是其本身,负数的补码是其原码求反加1,原码就是该数据的绝对值。负数的补码再求补,就是该负数的原码,即绝对值,这样就可参加乘积运算了。

      在2.2节我们学习了一种求补码的解决方法。大家研究一下原码与其补码的每一位的对应关系。例如:

                        原码:01001100

                        补码:10110100

      从右边开始,逐位看,在遇到第1个1时(包含这个1)都是一样的,即不变,从这个1开始,即这个1的左边全部变反,在用异或门进行求反,即0与任何数异或,保持不变,1与任何数异或则变反。为了得到这样的0和1,采用了菊花链的电路,电路在最右边给0,与每位相异或,一直进行到遇到第1个1,后面保持1,在与左边的各位异或则求反了,这个菊花链用或门电路实现。这样就完成了求补电路。

      什么时候求补?如果这个数本身是正数就不必求补了,即保持不变,此时该数的符号位是0。如果这个数本身是负数就要求补了,此时该数的符号位是1。所以用符号位作为控制端,即使能端E(Enable),用与门电路使E端在每位求反时起作用。

      见教材P34的图2.6。

【问题24】如何理解直接补码并行乘法

【答】相对带符号的原码阵列乘法器而言,不像带符号的原码阵列乘法器,要单独考虑考虑符号位,而是将计算机存储的数据(补码)直接参加运算,不需要算前补码变原码,算后原码变补码电路。但是其分析的思路是一样的,在【问题21】的答中,大家再看一下,我们在分解数据构成是,只考虑到0位到n-1位,而没有考虑第n位,这是因为在带符号的原码乘法时,不需第n位参加计算。按照【问题21】答,你能否写出一个补码数据的构成形式,一定是用补码时的各位数据表示真值的数据构成形式,进而推出两个补码数相乘(符号位要参加乘法运算)的每一位的相乘的情况,分门别类的进行加运算。

【问题25】负权的理解

【答】权是什么,我在此不解释了,正权就是以前的权,负权就是正权的相反数,即正权是2i,负权是-2i。

【问题26】不看符号位,当数据是1位,如何用1bit位表示1位数据的补码,怎么用1位全加器运算。

【答】表示不了,因为0、1是1位数据,其补码也是0、1,如果是-1,按求反加1的法则,其数据位还是1,所以用1bit位,0和-0都表示为0,1和-1都表示为1,无法区分,也就是说不能用1bit位表示1位数据的补码。

       哪如何区分0与-0、1与-1?,其实在乘积运算是不考虑符号,就是绝对值的乘积(与)运算,就是 xiyj,在下步加运算考虑是就是了。

       怎么考虑哪?其实在直接补码阵列乘法器的的构造中,哪个位置没有符号位参加运算,哪个位置有一个符号位参加运算,哪个位置有两个符号位参加运算,是固定不变的。因此我们可以明确虽然数据表示的是0或1,但哪位表示的数据是0或1,哪位表示的数据是-0或-1。如果表示的数据是0或1,下一步就做加法运算,如果表示的数据是0或1,由于有1位符号位参加了乘积(与)得到的0或1,下一步就做减法运算。因此在直接补码阵列乘法器中,每一种全加器就行了,根据需要设计了4种运算部件,即0类加法器(全加器)、1类加法器(有加减)、2类加法器(有加减)和3类加法器(有加减)。

【问题27】四类加法器是哪些?

【答】四类加法器是:

1、0类加法器:3个输入端均为正权数输入端。

2、1类加法器:2个正权数输入端,1个负权数输入端。

3、2类加法器:1个正权数输入端,2个负权数输入端。

4、3类加法器:3个输入端均为负权数输入端。

【问题28】四类加法器中小圆圈是什么意思?有的端有小圆圈,有的端没有小圆圈。

【答】小圆圈千万不要理解为数字电路中的非运算,它仅表示该端的数据是否是负权数。无小圆圈表示是正权数,有小圆圈表示是负权数

【问题29】四类加法器的输入端怎么理解

【答】每个部件有3个输入端,如果这个端有小圆圈,表明此端输入的0或1做减法,没有小圆圈,表明此端输入的0或1做加法。

【问题30】四类加法器的输出端怎么理解

【答】该输出1的就输出1,该输出0的就输出0,只是这个输出0或1就是0或1,还是这个输出0或1就是-0或-1,就是看这个输出端是否有小圆圈。没有小圆圈的输出端,输出的0或1,下次参加运算是做加运算,有小圆圈的输出端,输出的0或1,下次参加运算是做减运算。

      输出端有两个,即本位和端(S)和进位端(C),哪个端有小圆圈哪?分类说明:

1、0类加法器:因为0类加法器的和是在0、1、2,所以C端和S端均参加下次运算做加运算,因此C端或S端均不加小圆圈。

2、1类加法器:因为1类加法器的和是在0、1、2、-1,注意有两个要求,一是C端和S端的输出只能是0和1,二是C端和S端是输出端,所以有两个输出端,也就是有两位输出,谁是两位中的高位,谁是两位中的低位哪?其实,在讲全加器时只强调了本位S端和与进位C端,并没有强调在全加器中作为进位的C端与本位和S端,谁是两位中的高位,谁是两位中的低位,现在可以说C端是高位端,S端是低位端,因此3个输入端的运算结果表示为CS=C*21+S*20,所以0=0*21+(-0)*20,1=1*21+(-1)*20,2=1*21+(-0)*20,-1=0*21+(-1)*20,这样在值保持不变的情况下,C端输出的0或1,表示的就是0或1,S端输出的0或1,表示的就是0或-1,这样C端是正权端,S端是负权端,因此在书上的1类加法器中C端不加小圆圈,而S端加小圆圈。

3、2类加法器:因为2类加法器的和是在0、1、-1、-2。仍然是CS=C*21+S*20,所以0=(-0)*21+0*20,  1=(-0)*21+1*20,-1=(-1)*21+1*20,-2=(-1)*21+0*20,这样在值保持不变的情况下,S端输出的0或1,表示的就是0或1,C端输出的0或1,表示的就是0或-1,这样C端是负权端,S端是正权端,因此在书上的2类加法器中C端加小圆圈,而S端不加小圆圈。

4、3类加法器:因为3类加法器的和是在0、-1、-2、-3。仍然是CS=C*21+S*20,所以0=(-0)*21+(-0)*20,  -1=(-0)*21+(-1)*20,-2=(-1)*21+(-0)*20,-3=(-1)*21+(-1)*20,这样在值保持不变的情况下,S端和C端输出的0或1,表示的就是0或-1,这样S端和C端均是负权端,因此在书上的3类加法器中S端和C端都加小圆圈。

 【问题31】用5位的直接补码阵列乘法器计算(-5)*5

【答】转换为5位的补码:[5]=00101     [-5]=11011

                                                                      (1)   1   0   1   1=-5

                                                            *         (0)   0   1   0   1=5

                                                                      (1)   1   0   1   1

  (0)    0    0   0   0

     (1)    1      0    1   1

        (0)    0      0      0    0

          +  0   (0)   (0)    (0)    (0)                  

           1    1    1      1      1       0     0   1   1   1 =-25

          P9   P P7    P6    P5     P4    P3 P2 PP0

P0=1=01=CS                      (结果按0类全加器,本位和1,进位0)

P1=1+0=1=01=CS              (结果按0类全加器,本位和1,进位0)

P2=0+0+1=1=01=CS          (结果按0类全加器,本位和1,进位0)

P3=1+0+1+0=2=10=CS      (结果按0类全加器,本位和0,进位1)

P4=(1)+0+0+0+(0)+1=-1+0+0+0-0+1=0=(0)0=-CS (结果按2类全加器,本位和0,进位0)

P5=(0)+1+0+(0)=1=(0)1=CS                                    (结果按2类全加器,本位和0,进位0)

P6=(1)+0+(0)=(-1)+0+(-0)=-1=(1)1=CS                   (结果按2类全加器,本位和1,进位1)

P7=(0)+(0)+(1)= -0+(-0)+(-1)=-1=(1)1=CS               (结果按2类全加器,本位和1,进位1)

P8=(0)+(1)=-0+(-1)=-1=(1)1                                     (结果按2类全加器,本位和1,进位1)

P9=0+(1)=0+(-1)=-1=(1)1                                         (结果按2类全加器,本位和1,进位1)

 

说明:结果的格式是CS,结果按什么类减法器取决于最后的一个类型全加器。

2.5定点除法运算

【问题32】关于数据结构的一个问题

【答】本书在讲述定点加法、减法、乘法运算时,研究数据构成与运算规则时,讨论的数据都是定点整型数据,而在本节讨论除法运算时,讨论的数据是定点小数,因此被除数必须比除数小,这样才能保证商和余数都是定点小数。

【问题33】运算过程怎么理解

【答】除法的运算过程的分析一定要和人工的运算过程结合起来,分析人工过程的每一步,对每一步都要思索如何实现问题。

       除法分析同乘法分析方法是一样的。乘法变加法运算,除法变减法运算。乘法变成被乘数连加过程,除法变成被除数连减除数过程。乘法中加被乘数时,每加一次,是被乘数左移一位再加,除法中减除数时,每减一次,除数右移一次。乘法中做加运算时,是加被乘数,还是加0,取决于乘数中相应位上是1还是0,是1,就加被乘数,是0,就加0,除法中做减运算时,是减除数,还是减0,不是取决于除数或被除数中相应位上是1还是0,而是取决于余数够不够减,够减,就商上1,减除数,不够减,商上0,同时,减0。在乘法中每位的乘运算用被乘数和乘数的相应位做逻辑乘就可轻易实现该为是加1还是加0,也就实现了是加被乘数,还是加0,而够减不够减就没有这么简单了。

【问题34】如何判断够减不够减

【答】人工在除法运算的过程中,判断够不够减,心算够不够减,够减商上1,减除数,不够减,商上0,除数右移,再判断。但是计算机不会心算,必须真实的做减法,以判断够不够减,够减则商上1,除数右移1位,不够减,则将减掉的除数加回去(恢复余数),除数右移1位,重复这个过程。这种方法称为恢复余数法。

       计算机真实的做减法,够减,则差为正数,即差的最高位为0,不够减,即差的最高位为1。够减,商上1,不够减,商上0,商正好是差的最高位(符号位)的相反数

【问题35】不恢复余数法原理

【答】从常规的恢复余数的方法中分析得到。

         设X为余数(第1次我们称为被除数,以后称为余数,现在统一称为余数),Y为除数,P为X-Y。

         则第一步是:P=X-Y,如果P>0,说明够减,商上1,则下一步P就是X了,如果不够减,商上0,此时要把减掉的Y加回去,即X=P+Y,此时下一步是除数Y右移1位再减Y,数学表示此时此时减数是Y*2-1,因此下一步的减法是X- Y*2-1,则有了这样的变化过程:X- Y*2-1= P+Y- Y*2-1= P+2*Y*2-1-Y*2-1= P+Y*2-1,所以本应做X- Y*2-1,实际上可以做P+Y*2-1,效果是一样的,因此,此时不用恢复余数X再减Y*2-1了,直接在新余数P的基础上加Y*2-1即可。可见,由恢复余数再减,这样两步,变成一步加运算,运算速度提高了。当然加的结果也会产生符号位,再根据这个符号位决定商。

     这就是不恢复余数法的原理。

【问题36】被除数、除数、商、余数的位数

【答】除数是n位,则被除数是2n位,商就是n位,对于纯小数而言,余数是2n位,前n为0,后n位是有效位,对于纯整数而言,余数是n位。如果被除数不是2n位,对于纯小数,则右边补0,对于纯整数,则左边补0。我们书给的纯小数的例子。

2.6定点运算器的组成

 【问题37】这节怎么看

【答】1、运算器的组成。运算器应该由前面讲的加减器、乘法器、除法器构成,由于乘法器和除法器的功能具有单一性与独立性,所以在运算器的组成中就没有再讲乘法器和除法器了,大家只是看到了改进的加减器。

2、逻辑运算。加减运算的实质是逻辑运算,所以加减器也可以实现逻辑运算,所以此节介绍了逻辑运算,好理解,大家了解即可。

3、逻辑运算和加减法运算都在一个组合电路中,这个电路加减法电路的基础再加上运算设置电路,通过设置,可以保证某时完成某种运算,所以大家看看74181ALU的逻辑电路图(图2.11)和算术/逻辑运算功能表(表2.6),了解了解即可。

4、本节的重点是为了改善行波进位加法/减法器的缺点,即逐级进位,导致运算速度慢的问题,进而采取4位一组的独立进位(74181ALU)与组间进位(74182CLA)的技术和构成多位ALU的原理和方法

5、内部总线。总线就是为完成一个功能的一组线路,例如我们家的电线有三根,即火线、零线和地线,它们就是一个总线。总线就是将各部件连接在一起的线路,看总线一定要一看线路中信号流动方向;二懂各部件功能;三知总线使用原则,即同一根总线同一时刻只能有一个信号流动(此为相斥性),不同总线同一时刻可流动各自的信号(此为相容性),因此在设计时,考虑相斥性,使系统执行不打架,考虑相容性,提高系统执行效率。

6、寄存器。在总线的各种图中出现了寄存器,寄存器就是暂时存放数据的部件,在第5章会具体介绍。


2.7浮点运算方法和浮点运算器

【问题38】怎么看

【答】这节两个点,一是浮点运算方法,而是浮点运算器。

【问题39】浮点运算方法

【答】这个重要,理解但不用记。结合IEEE754关于规格化浮点数的规定,和人工计算的一般思路,1、理解浮点运算的过程,这个应该容易。2、规格化过程。3、多路选择部件,就是矩形但两头是圆弧的图标。

【问题40】浮点运算流水线

【答】由于浮点运算是由多个部件分步完成的,所以采取流水线的加工方法,效率更高,因此要理解和掌握一些效率计算的方法。


3.多层次的储存器

3.2存储器概述

【问题41】存储位元、存储单元、存储器、虚拟存储器是什么,有什么关系

【答】存储位元是一个状态点,在目前的计算机系统中,实现存储位元的材料在这个状态点只有两个状态,例如状态点的高电位与低电位,磁盘状态点的南北极和反向的北南极,光盘状态点的平与凹,这两种状态可分别代表二进制的1和0,即存储位元就是二进制1位,即1bit。

啰嗦两句。磁性材料的南北极可通过电流方向加以快速改变,当激光照射在光盘表面会有反射,其反射光是聚焦的,如果激光照射到凹坑里会形成漫反射,这样反射光是不聚焦的,所以当激光照射在光盘上就形成有无反射光,这样形成光盘的两种状态。

存储单元是一组存储位元构成的,是一次读写的最小单位。明确计算机的内存的存储单元是字节(byte),1 byte =8bit。

存储器是有许多存储单元。所有的内存储单元构成计算机的内存储器,所有磁盘构成磁盘存储器,所有光盘构成光盘存储器。

一台计算机的所有存储器构成一台机器虚拟存储器,只有在计算机运行的状态下一台机器有且仅有一个虚拟存储器,也就是说机器不运行时,没有虚拟存储器概念。

【问题42】其它概念怎么看

【答】就看书就行了。只读存储器ROM(Read Only Memory),只能读,不能写。随机存储器RAM(Read Random Memory),随时能读写。

3.3SRAM存储器

【问题43】这节怎么要求

【问题44】什么是SRAM存储器,有什么特点。

【答】SRAM存储器称为静态存储器。存储位元是采用触发器构成的,我们没有正规学习过数字逻辑,但我们简单提了一下触发器,在此我再说一下触发器的特点:就是当触发器加电以后,输出端的输出状态,也就是0或1,当不给相应的输入信号时,再加电的状态下是不会发生变化,所以称为静态存储器。

由于采用触发器构成的存储位元,读写速度快,但成本高,一般作为计算机的高速缓存(缓冲存储器的简称)

【问题45】看SRAM存储器注意什么问题

【答】1、了解地址线的单向工作原理

      2、了解数据线的双向工作原理

      3、了解从未接触过的控制线的作用和工作原理

      4、了解片选CS控制信号的作用和工作原理

      5、只有这样才能看懂读写周期波形图。读写周期波形图强调的是工作次序,也就决定了三大总线(地址总线、数据总线、控制总线)各自信号发出的先后次序。这里有信号从发出到稳定需要一段时间,即使很小,也是一段,所以不能影响其他地址的存储位元,而只能影响要操作的存储位元。

3.4DRAM存储器

【问题46】什么是DRAM存储器,有什么特点。

【答】DRAM存储器称为动态存储器。存储位元是采用电容构成的。电容是高中学习的内容,我们知道它是能够存储电量的器件,有电量,即高电位,表示1,无电量,即低电位表示0,并且能够充放电能够完成电量的充满与释放,即完成1状态与0状态转换。但是大家都知道电容有个自放电的特性,即如果该电容是充满电的状态,即是1状态,但是过段时间,电量就自动释放了,即由1状态变成了0状态,因此要不停地给电容充电,以便维持高电位状态,即维持1,所以不停在充电放电,因此这个特点称为动态存储器。

不停在充电带来新的问题,什么新问题?就是内存中有点存储位元是高电位,即1,有的存储位元是低电位,即0,你将存储1的存储位元充电到高电位,没有问题,而将存储0 的存储位元也充电吗?显然不行,那不就把0变成1了。怎么办?自充电,假定0用电压0伏表示,1用电压5伏表示,当自放电时,0伏是不可能再放电的,将维持0伏,高电位5伏放电是要放电的,当电位降到2伏时,用这个2伏经过某个器件提高到5伏,再用这个5伏给本存储位元充电,就可以充电到高电位5伏。这个器件特点是输入电位低于2伏是不能提高到5伏输出,而是保持0伏输出,而高于2伏输入是可以提高到5伏的输出,这样而低电位的存储位元经过这个器件是不会充电的。这样所谓的自充电实现维持每个存储位元的存储状态,专业称为刷新。

这是什么牛的器件?其实在数字逻辑中讲的各种门电路都具有这个特性。

另外一个问题就是刷新时机问题,因为不能不停地刷新,因为要读写数据。由于放电是需要一段时间的,所以在从5伏放电到2.5伏时,这段时间就可以读写数据。具体刷新技术有集中式刷新和分散式刷新两种刷新方式,大家要研读一下。

以上的0伏、2伏、5伏、2.5伏都是我假定的数据,为了说清楚,这是DRAM存储器的技术指标。

由于采用电容构成的存储位元,读写速度慢,但成本低,一般作为计算机的内存。为了解决读写慢的问题,所以在CPU与内存(DRAM)之间增加高速缓存cache提高读写速度。后面有一节专门讲高速缓存cache的技术。

【问题47】看DRAM存储器注意什么问题

【答】由于刷新是一次刷新一行数据,所以在波形图上要理解DRAM的地址发出的方式与SRAM的地址发出方式是不一样的,具体怎么不一样,你去对着看,不清楚可与我讨论。

【问题48】存储器容量的扩充

【答】存储器容量是这节的主要内容,是必须要掌握的,也是必考的。

     在容量扩充中注意地址总线和数据总线,片选CS的使用,重点要了解24译码器、38译码器的功能,并且会使用24译码器、38译码器、24译码器变成4 16译码器的应用。

例如24译码器是2根线输入,3根线输出,2根线决定了输入的是00、01、10、11四组数据,而每个数据决定了4根输出线中有1个线输出1,其它3根线输出0,以达到内存芯片的选择。

存储器容量扩充的技术不难,多做几道题就明白,我们在实际问题的讨论中弄懂它吧。

【问题49】DRAM读写的正确性校验

【答】要理解这个正确性校验。大家去查一下ASCII码,你会发现ASCII只有7位,可计算机的最小读写单位是一个字节,一个字节有8位,哪这多的一位是干什么?以前从来没讲过,今天告诉大家,就是存放正确性校验位的。所以一个字节是8位,其中7位存放ASCII码,1位存放校验码。这个正确性校验采用奇偶校验。写操作是,根据7位二进制数产生1位校验码,一起存储。读操作时,读8位,用相应7位产生1位校验码,并该产生的校验码与读取的第8位比较,相同则OK,不同则NO。以此达到校验的目的。

3.5只读存储器和闪速存储器

【问题50】何为只读存储器。

【答】只读存储器是只能读取数据,不能写入数据的存储器,英文是ROM(Read Only Memory),它的特点是当计算机没有加电时,存储其中的数据不会丢失。何时写入内容哪?出厂时已将内容写入。主要用于存储计算机的基本的I/O系统(base I/O)。计算机加电启动时,先运行ROM中的内容,有它再将磁盘中操作系统调入内存运行。

【问题51】技术的发展

【答】最开始只有ROM,后来为了满足小批量用户的要求,有了可编程ROM,随着材料技术的发展,现在有FLASH,我们常说的U盘。

3.6并行存储器

【问题52】双端口存储器有什么要求

【答】双端口存储器要理解工作原理和冲突解决机制。如果看不懂,就先放弃。

【问题53】多模块交叉存储器怎么看

【答】关于字地址的编址方式有两种,一种是顺序方式,另一种是交叉方式。

顺序编址方式是在将一块存储芯片(模块)的字存储单元顺序编址,第二块存储芯片(模块)再接着顺序编址。这种编址方式,当读写一个字单元时,如果要读写下一个字单元,必须得等上一个读写操作完成后才能进行下一个字单元的读写操作。

交叉方式是在第1块存储芯片(模块)编第一个字地址,第2块存储芯片(模块)编第二个字地址,第3块存储芯片(模块)编第三个字地址…,在寻址第一个字后,即寻址发生到第1存储芯片(模块),然后对其进行读写操作期间,此时可以并行寻址第二个字,因为第二个字存储在第2块存储芯片(模块)中,因为这相邻的两个字存储在不同的模块上,故可错位并行进行。

设计上,根据前面关于内存扩展的设计方法,可能更简单,大家更好理解些。前面讲的内存扩展方法是低位地址线直接连接各个芯片(模块),高位地址线经过译码器连接存储芯片(模块)的片选端,这样实现的是顺序方式。而把高位地址线直接连接各个芯片(模块),低位地址线经过译码器连接存储芯片(模块)的片选端,这样实现的是交叉方式。

之所以有错位并行的可能,是我们在学习各种RAM技术时,读写数据时中间要经过一些器件的,这就造成完成读写操作是需要时间的,尽可能让能够并行的操作并行执行,一提高计算机的运行效率,是计算机设计的一种方法。所以交叉方式比顺序方式执行效率高,但又带来为了保证交叉的实现,结构上也要发生变化。秦磊华教授的慕课讲的比较清楚。

在理解了这两种方式的基础上,要会做效率提高的计算。这个地方会考。书和秦磊华教授的慕课讲的比较清楚。

3.7cache存储器

【问题54】cache存储器怎么学?

【答】秦磊华教授的慕课讲的比较清楚,所以先看慕课,再看书,我的问题只是起点帮助理解的小作用。

【问题55】cache存储器怎么看

【答】cache存储器是高速存储器,简称cache,因为cpu都是半导体器件,比内存的电容器件的运行速度快,所以在cpu和内存中间设置一个半导体型cache存储器是为了提高对内存的读写速度。Cpu对内存的访问变成对cache的访问,根据程序执行的时间局部性和空间局部性的特点,预先将数据从内存中读取到cache中等待cpu来读写数据,所以cache有了缓冲的意思,因此cache又称高速缓冲存储器。学习这一节要注意以下问题:

1、时间局部性和空间局部性。这是采用cache技术的可能性根据。

2、cache命中率的计算。

3、主存与cache的地址映射。

4、替换策略。

5、cache的写操作策略。

这些问题是cache学习的重点,也是教学重点,一定要搞清楚。

【问题56】cache的行到底是多大?

【答】cache与内存(主存)交换一次数据的数据大小称为行,也称块,这个行到底是多少个字节啦?

Cpu对内存读写数据的最小单位是1个字节,即8bit,最大单位是字。一个字是多大?不同的系统有不同的规定,8086/80x86系统设计的是1个字等于2个字节,还有32位系统规定1个字是4个字节,64位系统规定1个字是8个字节。这是cpu与内存交换数据的量的关系。

而硬盘与内存一次交换数据是1个扇区,1个扇区是512个字节。

而cache与内存交换数据的数据单位是一行,这一行是多少?书上没讲,慕课也没讲,只是慕课的实例将了一个数据。其实这个数据是一个工程数据,不同的应用场景有不同的数值,同一种机器是同一个数值,所以书和慕课都没有明确。如果出题的一定会给这个数据的,否则无法设计cache。

【问题57】pentium4的cache学习吗?

【答】不用

3.8虚拟存储器

【问题58】什么是虚拟存储器

【答】虚拟存储器肯定是不存在的存储器。但在实际的应用中会出现程序很大,而内存装不下,这种程序又必须能够运行,所以提出虚拟存储器的概念,虚拟存储器的大小就是磁盘的大小。

根据冯.诺依曼体系结构的工作原理程序数据都是存储和执行,即必须存储在内存,必须在cpu执行。这就有了小内存,大程序的问题。

【问题59】虚拟存储器怎么自学

【答】先看我的问题,再看秦磊华教授的慕课,再看书。

4.指令系统

4.1本章学习

【学习要点】

【4.1】重点了解指令系统的性能要求。

【4.2】指令格式原理是重点,了解具体机器的指令格式,结合寻址方式可以理解和设计指令格式。

【4.3】了解一般的数据类型。

【4.4】寻址方式是重点,要理解。无需了解具体机器的寻址方式。

【4.5】典型指令掌握指令分类,了解P132表4.11基本指令系统的操作,重点理解P118表4.2典型的指令。

【问题61】如何学习本章

【答】完成可看秦磊华教授的指令系统慕课,然后看书,慕课比书讲得清楚。慕课中的MIPS指令系统可以不看。

4.2指令系统的发展与性能要求

【问题62】建立一套指令系统需要哪些因素?

【答】建立一套指令系统,必须在考虑机器应用的要求下,建立一套具有完备性、有效性、规整性和兼容性的指令系统。

4.3指令格式

【问题63】怎么看指令格式

【答】指令格式就是两部分,即操作码和地址码。都是通过编码的方式来表示相应内容。当然要理解已有的指令格式。

      要理解和掌握典型的表4.2的7条指令的功能,这些助记符指令就是汇编指令,汇编指令是机器指令的符号化,即汇编指令与机器指令是一一对应的。

4.4操作数类型

【问题64】本节重点是什么

【答】就是了解一般数据类型,即地址数据、数值数据、字符数据和逻辑数据。其他内容可不用了解。

4.5指令和数据的寻址方式

【问题65】寻址是什么意思

【答】寻址就是找到存储的位置,好读取该位置的指令,或对该位置进行读写数据。指令的寻址方式就是找到下一条指令的方式,数据的寻址方式就是找到操作数的方式。为了操作的完备性,指令的寻址方式有两种,数据的寻址方式有九种。

4.6典型指令

【问题66】学什么?

【答】了解基本内容,即4.5.1节即可

5.中央处理器

5.1本章学习

【学习要点】

【5.1】这节内容简单,但是很重要,要理解是什么,要掌握干什么(功能)。篇幅不大,内容多。

【5.2】一定要理解机器周期、cpu周期(机器周期)、节拍电位T,理解常用指令与cpu周期、机器周期和节拍电位的关系,理解和掌握确定一条指令执行是在指令周期(从取指令开始,到指令执行完成)中完成任务的通路。

【5.3】理解时序产生器和控制方式。

【5.4】理解微程序的工作原理,掌握微程序设计方法。

【5.5】了解硬连线控制器的设计原理。重点是理解指令执行流程和微操作控制信号的产生

【5.6】了解流水cpu的工作原理。

【问题67】如何学习本章

【答】还是看华中科技大学的计算机组成原理慕课,这一章是谭志虎老师讲。然后看书,慕课比书讲得清楚。慕课中的MIPS指令系统可以不看。

【问题68】关于数据通路与部件间的门的问题

【答】各部件,例如寄存器,与数据通路是通过一个门连接的,不是这个部件直接连在数据通路,如果将部件中的数据送到数据通道上,只需打开相应的输出门,如果要将数据通道上的数据送到部件中,只需打开相应的输入门。打开了相应门则形成了相应的数据通道。门是具有单向导通的器件,关门将导致数据过不来,打开门将导致数据通过。在书上第二章P50的2.5.3节介绍了数据发送与接收的三态门构成了双向数据总线,在书上P140的图5.1CPU模型没有标明门,但在P151的例1的图5.15的双总线结构机器的数据通路图中,凡是门的地方用小圆圈表示,并用下标i表示输入,o表示输出,例如IRi表示指令寄存器IR的输入门,IRo表示指令寄存器IR的输出门。在慕课中单总线结构机器通路中用下标in和out表示器件的输入门和输出门。

5.2CPU的功能和组成

【问题69】这节有什么要注意的

【答】这节看似简单,其实对本章后续其他节的内容有个提纲揭顶的作用。

1、CPU的四大功能:

1)、指令控制。通过后续学习就要搞清楚怎么控制指令的执行。这样,掌握专业人员你就可以回答从高级程序语言经过编译(还未学)到低级语言(机器指令),到机器执行的过程。

2)、操作控制。后续内容将围绕这个功能,实现如何控制一序列的操作,完成指令功能,即控制信号经过相关电路,已达到完成相应的操作。

3)、时间控制。后续内容将围绕一个指令由多个相关操作组合协调完成,协调就是有序,即如何通过时间控制达到协调有序功能实现。

4)、数据加工。就是对数据进行算术运算、逻辑运算、移位操作等第二章讲的内容。注意,通过第二章学习,我们应该知道所谓的数据加工就是将数据送到加工电路的输入段,经过一段时间后,在输出端输出了加工的结果。

2、CPU的组成:两大部件,即控制器和运算器。运算器中有第二章的内容,即ALU部件,还有为了运算准备数据和运算结果的而暂存数据的各种寄存器。要注意这些器件的作用和操作上的顺序。

3、CPU中的主要寄存器。必须理解这些寄存器,才能运用这些寄存器。

4、操作控制器与时序产生器。一定要理解数据通路,并且能够根据功能确定某个功能实现时而形成的数据通路。硬件的实现方式(硬布线控制器)要理解,软件的实现方式(微程序控制器)要掌握。

考试时,一般这里是一个综合大题。

5.3指令周期

【问题70】从P142图5.3指令周期说起

【答】我认为书上的这个图不准确不完整。

首先说一个概念,这个概念就是指令周期,指令周期是从内存取出一条指令,并执行完该指令所花费的时间。这个指令周期到底是多少时间,计量单位是什么。从这个图看计量单位是CPU周期(又称机器周期),根据指令周期的概念,从这个图可得出指令周期等于2个CPU周期,这个概念是不准确的,因为每一条指令的取指(从内存中取出指令并送到指令寄存器IR中)操作都是花一样的时间,即一个CPU周期,但执行时间是不一样长的。这个图给人的感觉指令执行时间明确是一个CPU周期,。所以我说这个图是不准确。

这个图也是不完整的。在这个图中把一个脉冲周期称为T周期的概念也不准确,而且我认为应该是T节拍时序图。这个建议大家认真看慕课6.5节指令周期中早期三级时序系统。好,在这里我解释一下这个早期三级时序系统,自认为比慕课讲的清楚。


1、节拍脉冲。就是我们买计算机时必须关注的一个参数,主频。大家都知道主频越高,机器运行速度越快。我们到今天学习应该知道了,一是这个东西就是晶振,一加电就不停地发出这种矩形波。二是矩形波决定了CPU周期波的产生和宽窄,也就决定了指令执行速度,也就决定了机器执行速度。

2、CPU周期(机器周期)。CPU周期不像节拍脉冲的矩形波,由一根线发出,等宽的矩形波,而是由四根线发出的,而且高电位和低电位的宽度不一样。一个CPU周期内干什么?就是将一个数据从一个地方送到另一个地方或完成一次运算。其实通过第二章的学习,我们应该知道计算机的运算就是将数据送到运算电路的输入端,经过运算电路,数据就发生了变化,再将变化了的数据送到输出端,所以从这个角度看,一次运算也是一次送数据。在此我们讨论一下书上P143表5.1中几条指令,每条指令需几个CPU周期。

1)MOV R0,R1    指令功能是将R0寄存器中的内容送到寄存器R1。

第1个数据,将内存中的指令送到指令寄存器IR。

第2个数据,将R0寄存器中的数据送到R1寄存器中。

送两个数据,共需两个CPU周期。

2)LAD R1,6     指令功能是将6号内存单元的数据(100)送到寄存器R1中。

第1个数据,将内存中的指令送到指令寄存器IR。

第2个数据,将指令寄存器IR中的地址数据6送到内存地址寄存器AR中。

第3个数据,将内存6号单元中的数据(100)送寄存器R1。

送三个数据,共需三个CPU周期。

我建议大家多看看慕课的内容,慕课的CPU模型是单总线模型,就是任何数据流动,必须经过总线流动,对于单总线结构,大家比较好理解些。因为单总线是绝对不允许两个数据同时在通道上存在。例如,慕课中的取指操作,将程序计数器PC的内容经过数据通道送到AR寄存器,然后将AR指定内存单元中的指令送到指令寄存器IR,这个取指操作就送了两个数据。所以不能同时送,否则无法区分,怎么办?就是下面的T节拍信号实现操作的有序性。

3、Ti节拍。Ti节拍书上没画清楚,不完整,不如慕课上的图,而且在P143的最上面用Ti周期一笔带过了,不清楚。而且初学时我觉得慕课的单总线结构的CPU模型更易于理解些,而且有些设计理念在慕课讲的更清楚,建议好好看看慕课的6.6节总线结果CPU指令周期,而且基于慕课的单总线结构CPU模型曾经出过一道大题。

5.4时序产生器和控制方式

【问题71】这节怎么看

【答】这是纯硬件形成控制方式。纯硬件控制要注意看我前面将的节拍脉冲与Ti节拍的的黑盒子的结构,即节拍脉冲有时钟源CLK产生,经过节拍脉冲和读写时序译码部件产生了各自独立的T1、T2、T3、T4、和RD、WE节拍脉冲。了解一下就行了。

5.5微程序控制器

【问题72】这节重要吗?

【答】重要,几乎每次必考。通过学习就知道了机器指令是如何执行的。这是软件控制机器运行的方式。

【问题73】这节怎么看?

【答】建议看谭志虎的慕课,再看书。看懂了慕课再看书。下面我对几个要注意的问题

【问题74】微指令是什么?怎么看?

【答】你看看书上P157的图5.21微指令基本格式,这个格式没有谭志虎慕课讲得清楚。为什么啦?你去看慕课的6.11微程序设计中的微指令格式,对比看控制操作字段,例如慕课的图中R0in和R0out,非常清楚的对应前面讲的单总线结构CPU中门的名称,而书上的图5.21与图5.20没有明显的对应关系,所以不好自学。当然在节拍T4的使用上书比慕课讲的清楚。在这个基础上,我再回答问题。

微命令就是操作控制字段的某一位。这一位控制某个部件的输入或输出的门,即0不允许输入/输出,1允许输入/输出,微指令的操作控制字段包含了所有部件的输入或输出的控制,在书上是17个控制位,慕课中是22个控制位。一条微指令就是为完成一个数据的一个部件传送到另一个部件为打开相应的门(设置为1),关闭其余不相关的部件的门(设置为0),以形成一条数据通路,这样就控制了操作,这样的一组控制微命令和顺序控制字段称为微指令。

顺序控制字段表示就是决定执行的下条微指令在哪里。顺序控制字段两部分组成P段和下地址字段(慕课这么称呼,本书称直接地址),不管叫什么就是下条微指令地址,直接地址段的宽度取决于系统微指令条数,而不一定是4位,慕课和书都是假定是4位,共16条微指令。P段是判断字段,P段的位数与判断条件有关,本书是两个,P1和P2,慕课也是两个,这个地方,书比慕课讲的全。当P段的所有Pi=0,表示不判跳,取直接地址为地址的下一条微指令执行。当P1=1,其余Pi=0是(书和慕课讲的一样)根据机器指令的操作码取相应的第一条微指令。当P2=1,其余Pi=0是(书讲了,慕课没有讲)是根据当前微指令的运算进位结果则决定是否跳,怎么跳,请看书P160第3条微指令的设计说明,请大家认真看P159的微程序举例。一般取指微指令的地址是0

一条机器指令需多条微指令完成其功能,但这些相关微指令不是连续存放的,是通过地址段链接起来了。这些微指令我们称为微程序。

【问题75】微程序存放在何处?

【答】一般存放在CPU中。这样不能修改与扩展。现在也有存放在内存中,启动系统时将其读入CPU中。

【问题76】微指令的设计原则

【答】一条微指令处理一个数据从一个部件传送的另一个部件。要求是相容性和相斥性。相容性是凡是操作能够同时存在,互不干扰的控制可以放在一条微指令中,即相应的微命令=1,相容性操作就是数据经过的数据通道不打架。相斥性是凡是操作不能够同时存在,存在相互干扰的控制不能同时放在一条微指令中,一条数据通道所涉及的控制为打开(微命令=1),其余的控制位关闭(微命令=0)

【问题77】微指令执行时间

【答】一条微指令执行时间为一个CPU周期。

【问题78】微命令执行时机

【答】一个CPU周期有4个T节拍,写入控制在T4节拍,其余的在T4节拍之前要完成,这是信号稳定性的要求。这个问题大家看书P157的图5.22,看写入寄存器R1、R2、R3,的写入控制LDR1、LDR2、LDR3均与T4相“与”,也就是说只有T4有效,这个写入信号才有效。这个慕课没讲。

从这里可以感觉T节拍信号是如何在系统中起作用,实现操作的有序控制。

【问题79】微程序设计技术学什么?

【答】通过微程序设计的学习,一是了解微程序设计的几种方法,二是要体会到这是计算机的一般设计理念在微程序设计上的具体应用的结果,这样站高一点看问题,将会一是帮助你理解具体技术与问题,二是将给你未来的专业学习、研究和工作都会带来有益的方法论的指导作用,三是能够给你的生活和其它的学习和工作都有极大的帮助。因为我一直强调计算机技术是设计技术,不是像物理的发现,化学的实验等等,会让你的学习、生活、工作有章有法,条理清晰可寻。

【问题80】关于P163的例2

【答】例2是问题78的延伸与具体,微程序是软件范畴的东西,计算机中的任何东西都必须落地到硬件,才能实现。

5.6硬连线控制器

【问题81】在P167图5.29中,M1、M2、M3是什么意思?

【答】M是机器周期,即CPU周期。M1代表指令周期中的第1个CPU周期,M2代表指令周期中的第2个CPU周期,等等。CPU周期是怎样的时序关系,请看慕课中6.5指令周期。

【问题82】如何看懂P167图5.29?

【答】在进行任何设计之前,必须分析设计对象的根据。设计目标是设计硬件控制器,控制器就是控制机器运行部件,具体就是控制电路。机器怎么运行?就是根据机器指令的功能完成将数据从一个地方送到另一个地方,当然一条机器指令也有送多个数据的功能要求。所以,纵向看图5.29就是每条指令为了完成该指令的功能需要送几个数据,当然这些数据是有先后顺序的,横向看罗列了每条指令在某个CPU周期存在的送数据的功能。在任何一个时刻,只有一条指令在这个CPU周期中起作用,即它的的相应信号有效(=1),其它指令的相应信号无效(=0),因为同一时刻,机器只能执行一条机器指令。这样,我们知道控制信号是怎么产生的,即谁发出的,再与CPU周期(机器周期)信号Mi相“与”,就能保证什么时刻发出的控制信号起作用。并且,为了保证信号稳定性的要求,所有CPU周期中的写入操作,还必须是在T4时刻才能完成,所以在例3中有的要与T4相“与”。

【问题83】这节怎么看

【答】这节是要求了解,如果你能理解问题81和问题82,说明你看懂了这节。

5.7流水CPU

【问题84】这节怎么看

【答】了解。但希望你全面读一读。前面讲到一个设计原则与方法,就是聚集多个部件,以提高整体能力。这节就是不能无限提高一个CPU的运算速度,但可以采用多个CPU协同工作,提高整机的运算速度。这就是现在多核手机、计算机的设计原理。所以建议你全面读一读,算是专业科普吧。

6.总线系统

6.1本章学习

【问题1】 学习要点
【答】6.1节,了解总线的基本概念,分类和作用,理解和掌握总线的带宽的计算。

6.2节,了解总线传送方式,实现原理。

6.3节,理解总线仲裁的方式与原理。

6.4节,理解的定时原因和处理方式,理解数据传送的模式。

【问题2】 本章如何学习
【答】还是看华中科技大学的计算机组成原理慕课,这一章是胡迪青老师讲。然后看书,慕课比书讲得清楚。慕课的7.1~7.4要认真学习,7.5要认真了解。

6.2总线的概念与结构形式

【问题1】 怎么理解总线
【答】总线就是设备间相互连接的一束线。这和我们以前理解的设备间的连线,我们以前看到的连线都是一根一根的线,我们现在把设备间完成一个任务所必需的所有线,即完成同一个功能的一束线,称为总线。例如我们在第3章的多层次存储器的内存设计内容看到,有地址总线、数据总线和控制总线。例如地址总线有若干根,但每一根连接到芯片的不同引脚,,各有各的信号(数据),但同时发挥了确定一个存储单元的作用。

【问题2】 怎么理解总线的时间特性
【答】既然总线就是一个设备与设备间的连接线,连接线还有什么时间特性问题?其实时间特性不是由连线所引起的,而是由连接的设备引起,A设备通过连线连接到B设备,A设备要感知B设备工作的时间特性,必须是通过连线感知到的。同样B设备也是这样才能A设备,这样A设备才能很好与B设备交换信息,因此演变为连线的时间特性了。这样在设计计算机系统时,定义了总线的时间特性,任何按此特性研制的A设备、B设备、C设备,才能相互间协同工作。我们现在学习这个时间特性,一方面才能理解计算机的工作方式,另一方面在以后的科研工作中,要以总线的特性为标准,研制我们的设备,这样研制的设备才能和计算机连接。

【问题3】 带宽的计算
【答】带宽是一个标准的概念,就是每秒钟传送多少个bit,理解了这个,遇到这种问题,朝这个方向演算就OK。在我们教材中已多次出现过带宽的计算问题,请注意。

【问题4】 适配器是什么
【答】由于设备工作速度与总线的时间特性不匹配,数据传送方式的变化,必须要有一种机制实现设备速度与总线的时间特性相匹配和数据传送方式变化的机制,我们称实现这种机制的电路为适配器。通常也称接口或接口电路。

【问题5】 设备与总线的匹配有几种情况,如何处理?
【答】先说一个概念,上线即是从设备送数据到线路,下线即使从线路送数据到设备。

如果A设备和B设备都可以作为主设备进行两者间通信,则:

当设备的处理速度高于总线时间特性时,下线处理可以随来随走,上线处理,必须要有机制等总线准备好了再上线。

当设备的处理速度低于总线时间特性时,上线处理可以随来随走,下线处理,必须要有机制等设备准备好了再下线。

如果A设备和B设备进行两者间通信,完全由A设备为主,则:

当B设备的处理速度高于总线时间特性,则B设备上线下线均不要协调机制,随来随走。

当B设备的处理速度低于总线时间特性,则B设备上线下线均要协调机制,不能随来随走。

当设备的处理速度正好等于总线时间特性时,那么处理就非常简单,上线下线都不需要什么机制,但这几乎不存在。

【问题6】 到此,如何看适配器
【答】到此,我们要知道适配器就是一个接口电路,只要知道适配器是总线与设备之间一个协调设备之间能够有序工作的一个功能电路就OK了,至于这个电路如何设计涉及数字电路与逻辑设计的技术。

【问题7】 总线的独占性
【答】总线的独占性是线路上同一时刻只有一对设备完成一次数据交换,也就是说数据通信,必须独占总线。这种独占性决定了系统的工作性能。为了使线路满足一定的效率,因此总线结构就有单总线结构和多总线结构。这就像我们国家的公路系统,以前只有国道(单总线),现在有国道,还有高速(多总线),并且两套道路之间有互通路(桥)

6.3总线接口

【问题1】 这节怎么看
【答】从功能的角度看,不要追求电路的具体实现,理解几种传送方式和一些基本功能概念就OK了。

【问题2】 串行传送有什么特点
【答】串行传送的方式就是只有一根线传送数据,即一次只能传送1个bit的数据。当然完成串行传送不是一根线就够了,例如一般计算机上9针,即9根线的RS-232接口,每根线都有定义和作用的,我们必须根据功能需求和RS-232的定义设计接口电路,最少也得3根线(单向传送),即一根数据、一根控制、一根地线。

计算机中最小存储单位是一个字节,8个bit,所以还有并转串,串转并的数据处理技术,这些技术都是数字电路与逻辑设计技术。

所以串行传送速度慢,成本低,适合远距离传送数据。

【问题3】 并行传送有什么特点
【答】并行传送的方式就是只有几根线同时传送一组数据,即一次能够传送多个bit的数据。从原理上讲,并行传送比串行传送就是多了几根数据线。

例如一般计算机上25针的8255接口,有8根数据线,该接口一般是打印机接口。

所以串行传送速度快,成本高,适合近距离传送数据。

【问题4】 分时传送有什么特点
【答】分时传送是总线复用方式。串行传送和并行传送是数据传送的基本方式,它们一般的传送方式是在统一个总线上,A设备与B设备,C设备与D设备各对设备间要传送数据,假若A设备与B设备先传送数据,则C设备与D设备必须等A设备与B设备完成了传送数据任务后才能开始传送数据。而分时传送是在规定的时间内是A设备与B设备传送数据,如果A设备与B设备传送数据没有完成,A设备与B设备也必须停止传送数据,此时在下一个规定的时间内C设备与D设备开始传送数据。也就是设备与设备间只能在规定的时间段内进行数据传送工作。

其实,这是讲的计算机系统的总线,而一般的通信技术也是这样,还有频分传送。只要两个设备间通信基本就是这些技术。

【问题5】 接口的相关名词怎么理解
【答】接口的相关名词有控制、缓冲、状态、转换、整理、程序中断。这些名称如果你用两个人之间通信做比如,细细揣摩,就好理解。例如程序中断,老师(CPU)正在讲课(程序正在执行),这时有同学(外部设备)举手(中断发生),老师停止讲课(程序中断),处理学生问题(中断处理),处理完毕继续讲课(恢复中断)。

6.4总线的仲裁

【问题1】 总线上的设备结构是什么样的
【答】由总线将所有设备构成一个队列的方式,即老师(CPU)在队列的前面,所有同学(IO设备)一次成一列队列战队。

【问题2】 何为总线仲裁
【答】总线在每一时刻只能有一对设备使用,那么此时刻该谁使用不该谁使用,要有一个决定,这个决定就是仲裁。

总线仲裁,就像我们在课堂上课,有老师(相当CPU)和若干位同学(IO设备),任何时刻只能有一位同学(一个IO设备)与老师(CPU)交流(互传数据),此时就要仲裁哪位同学(哪个IO设备)与老师(CPU)交流(互传数据)。

【问题3】 仲裁的方式有什么样的几种
【答】仲裁的方式有两种,即集中式总裁和分布式仲裁。

集中式仲裁就是由老师(CPU)采取某种方式决定哪位同学(哪个IO设备)与老师(CPU)交流(互传数据)。

分布式仲裁就是不由老师(CPU)决定哪位同学(哪个IO设备)与老师(CPU)交流(互传数据)了,而是采取某种方式由同学们(所有IO设备)自己决定哪位同学(哪个IO设备)与老师(CPU)交流(互传数据)。

【问题4】 集中式仲裁的链式查询方式是一种什么样的仲裁方式
【答】老师(CPU)问有同学(IO设备)发言(欲与CPU互传数据)吗?即发出询问信号BG,当有要发言的同学(欲与CPU互传数据的IO设备)有很多,但是老师(CPU)总是让最靠近老师(CPU)的同学(IO设备)发言(互传数据)。

这种方式要在没有一位同学(一个IO设备)发言(互传数据)的情况下,老师(CPU)才有可能问,这就需要标志是否有同学(IO设备)发言(互传数据)的状态,就是BS信号。

这种方式会导致离老师(CPU)远的同学(IO设备)很难得到发言(互传数据)的机会。

【问题5】 集中式仲裁的计数器定时查询方式是一种什么样的仲裁方式
【答】老师(CPU)到时间点了,根据计数器的值,问该同学(IO设备)是否要发言(欲与CPU互传数据),如果该同学(IO设备)没有要发言,则可以和老师(CPU)交流信息(互传数据);如果没有,就算了。

这种方式是每位同学(IO设备)都有机会发言(互传数据),是一种机会均等的解决方案,所以该方案解决了链式查询方式中的最远的同学(IO设备)有发言(互传数据)的机会。 但是,如果有同学(IO设备)有急事,不管有多急,则也只能等待自己的时间到来才能发言(互传数据)。

【问题6】 集中式仲裁的独立请求方式是一种什么样的仲裁方式
【答】老师(CPU)只管不停讲课(执行程序),如果有同学(IO设备)要发言(上传信息),则举手(设备发出中断请求),老师(CPU)则停止讲课(停止正在执行的程序)询问(中断响应),此时老师(CPU)就可以和该同学(IO设备)交流(互传数据)。

这种方式是提高了老师(CPU)的讲课(执行程序)效率,因为较前两种集中仲裁方式,老师(CPU)不用专门停止讲课(停止执行程序)询问同学(IO设备)。

当然,如果同时有多位同学(IO设备)举手(发出中断请求),老师(CPU)允许哪位同学(IO设备)发言?解决的方法是选中断链上离CPU最近的IO设备进行通信,因此这种方式虽然提高CPU利用率,但是没有解决链式查询方式的问题。通常是采取多个中断链的方式和计数器综合平衡系统总线的使用。

【问题7】 分布式仲裁
【答】分布式仲裁是不要老师(CPU)决定哪位同学(IO设备)可以发言(互传数据),而是由同学们(所有IO设备)自己决定哪位同学(IO设备)发言(与CPU互传数据)。

本处是当多位同学(多个IO设备)竞争时,学号(设备号)高的同学(IO设备)胜出。

你可以用两个8位的二进制数据,按书P196的图6.11试试电路的数据流动,看看仲裁的胜出号是什么。

注意“线或”逻辑的功能。

【问题8】 何为“线或”逻辑
【答】大家应该非常清楚“或”逻辑,也清楚“或”逻辑通过或门器件实现“或”逻辑。“线或”逻辑是中学的并联电路的原理知识,只是在此提出的新概念,其实是旧内容。怎么个旧内容,当一个点连有两根线,每根线送到此点的电压是不一样的,例如一个是3V,一个是5V,那么此点的电压是多少,是5V。如果在我们数字电路中,一根线送来的是数字0,即0V,而另一根线送来的是数字1,即5V,这点的电压就是5V,也就是说该点是数字0,这是否是“或”的逻辑运算结构,而又没需要任何门电路,仅是导线连在一起就可实现了“或”逻辑运算,所以这就是“线或”逻辑。

6.5总线的定时和数据传送模式

【问题1】 何为总线定时
【答】总线定时不是总线有什么时间关系,而是两个互传数据的部件,在互传数据时出现在总线的时序关系。

【问题2】 何为同步定时
【答】同步做事就是A设备做什么B设备必须回应,而回应之前A设备不需和B设备打招呼就开始做了。这种方式在人与人互动中需要配合默契,其根本是到达时间上的协调有序性。人与人可通过训练来达到默契程度,而设备间交互数据是无法训练的,只能在设计设备时间考虑按时间设计相应功能才能两设备达到默契。按时间不能各按各的设备时间,即每个设备均有个时钟,而必须有一个公共的时钟才能实现设备间按时默契工作。

所以同步定时就要有一个公共时钟,这种模式没有因协调工作而应有的协调用语,所以效率高。但是这种同步定时模式在两个设备间必须考虑低速设备的工作速度,所以这种模式适合工作速度高的设备间的数据传送。

【问题3】 何为异步定时
【答】为了解决两个工作速度差异比较大的设备间的数据交换的问题,为了使两个设备间功能协调配合,默契工作,则采取询问的方式协调工作,即一个设备要不停问另一个设备“准备好了吗”,知道对方“准备好了”,才能够传送数据。

如何询问?看(读取)对方是否挂出来(设置了)“准备好了”的牌子(信号),这个牌子(信号线)由“未准备好”(一般是“0”)变成“准备好了”(一般是“1”),即完成询问。

7.外设与I/O设备

7.1本章学习

【问题1】 学习要点
【答】本章的内容属于专业科普的内容,所有内容要求理解。掌握相关的计算,例如硬盘的容量计算。

8.输入输出系统

8.1本章学习

【问题1】 学习要点
【答】理解CPU如何处理与输入输出设备完成数据交换的方式与技术。重点是中断系统的工作方式和技术。

【问题2】 本章如何学习
【答】还是看华中科技大学的计算机组成原理慕课,这一章是胡迪青老师讲。然后看书,慕课比书讲得清楚。

【问题3】 必须说明的几个问题
【答】有几个问题书上没有说明,我这里先说明一下。

【问题4】 问题1:输入输出设备连接在什么地方?
【答】设备连接的地址总线、数据总线、控制总线上。有的计算机系统是输入输出设备与内存共用一套三总线,有的计算机系统是输入输出设备具有独立的地址总线、控制总线。

【问题5】 问题2:CPU如何知道与哪个设备进行数据交换?
【答】每个设备都有一个地址,我们称之为设备向量地址,这个地址在输入输出设备上,一般有设备的输入地址和设备的输出地址,这些地址在输入输出设备上,可用开关调整设置,但有调整范围的,买的设备有说明书,设计的设备必须参考系统规定。

CPU可以从总线上读取这个设备地址,从而知道是与哪个设备进行数据交换。

【问题6】 问题3:计算机如何知道怎样与输入输出设备交换数据?
【答】计算机的操作系统不知道怎样与某个输入输出设备进行数据交换工作,而是由硬件提供者在提供硬件时同时要提供相应的处理软件。这就是我们看到的,在计算机上接入了一个新硬件,系统要求安装相应的驱动程序,这个驱动程序就完成CPU与该设备的的数据交换。

【问题7】 问题4:如何启动相应的驱动程序
【答】当CPU主动向输入输出设备发生数据时,CPU执行的程序只是表面上调用该设备而已,实质是通过操作系统调用了该设备的驱动程序;如果是输入输出设备向CPU发生数据,则操作系统会从总线上获取该设备的设备地址(向量地址),到一个表(向量表)去查,该设备对应的驱动程序存储在内存什么地方,而后从这个地方开始执行程序,这样就执行了相应设备的驱动程序。

【问题8】 本章为什么没有分节的问题
【答】因为书和慕课讲的比较清楚,再结合本章的几个问题和总线的接口与仲裁的技术,所以就没有什么问题了。如果大家在学习的过程中,有问题和我讨论,我再增加问题。

8.2外围设备的速度分级与信息交换方式

8.3程序查询方式

【问题1】 何为程序查询方式
【答】是CPU主动发起的输入输出操作方式。

8.4程序中断方式

【问题1】 何为程序中断方式
【答】是输入输出设备发起,CPU被动响应的输入输出操作方式。

8.5DMA方式

【问题1】 何为DMA方式
【答】DMA(Direct Memory Access,直接存储器访问)是内存与与输入输出设备交换一批数据的方式。由于交换数据量大,速度快,没必要CPU全程参与,而是有CPU启动,CPU将传送的目的地址,源地址,数据量等必须的参数传送给DMA,由DMA负责完成这批数据的传送,完成后由DMA告诉CPU完成了。

DMA是一套独立硬件系统,但与CPU、内存、输入输出设备共用一套总线系统。由于DMA是传送一批数据,费时较长,因此DMA工作时,必须独占总线。

DMA技术减轻了CPU的工作量,提高了CPU的工作效率。

8.6通道方式

【问题1】 何为通道方式
【答】通道方式从DMA方式发展而来,比DMA高级,它有通道指令,而且输入输出设备与通道间有独立的总线,通道不是只像DMA执行传送任务,而是组织完成传送任务。

没有更多推荐了 [去首页]
image
文章
357
原创
284
转载
73
翻译
0
访问量
199056
喜欢
47
粉丝
6
码龄
5年
资源
0

文章目录

加载中...
1
1