计算机组成原理教案DOC.docx
《计算机组成原理教案DOC.docx》由会员分享,可在线阅读,更多相关《计算机组成原理教案DOC.docx(133页珍藏版)》请在冰点文库上搜索。
计算机组成原理教案DOC
第一章概述
一、计算机系统的层次结构
1.计算机硬件与计算机软件
中央处理器(CPU)运算器
主机控制器
只读存储器(ROM)
硬内存储器可读可写存储器(RAM)
件输入设备(如:
键盘、鼠标)
计外部设备输出设备(如:
显示器、打印机)
算外部存储器(如:
磁盘、磁带、光盘)
机操作系统
系汇编程序
统系语言处理程序解释程序
软统编译程序
件软数据库管理系统(如FOXBASE)
件诊断程序(如DIAGS)
支持软件调试程序(如DEBUG)
编辑程序(如EDIT)
链接程序(如LINK)
网络通信系统
应用软件(如WPS)
2.层次结构
硬件层次结构
数据模型、算法
用户程序
作为软件资源的应用程序
语言处理程序(解释、编译)
操作系统
机器语言(指令系统)
微程序控制器
硬核
硬连逻辑部件
虚拟机层次结构
应用程序虚拟机
高级语言虚拟机
汇编语言虚拟机
操作系统虚拟机
指令系统、机器语言
裸机(硬件)
编译:
将源程序的全部语句变成机器语言,然后执行。
解释:
将源程序的一条语句变成机器语言并执行,然后再把下一条语句变成机器语言并执行,直到结束。
透明:
本来存在的事物或属性,从某个角度看却好象不存在,称为透明。
虚拟机:
由软件实现功能的机器称为虚拟机。
3.硬件软件具有等效性。
二、冯•诺依曼(VonNeumann)型计算机
1.计算机分为五部分:
运算器、控制器、存储器、输入设备和输出设备。
计算机以运算器为中心,输入输出设备与存储器之间的数据传送都要经过运算器,各部分的操作及其相互之间的联系都要由控制器集中控制。
(指令流生成控制流,控制流控制数据流)
输出设备
状数结命
态据果令
程序结果
请命地指命请
求令址令令求
2.存储器按地址访问,它是一个顺序的线性编址的一维空间,每个单元的位数是固定的。
3.采用存储程序原理,将程序和数据放在同一个存储器中,指令和数据等同看待,指令和数据都可以送入运算器中运算,即由指令组成的程序是可以在运行过程中被修改。
4.数据以二进制编码,采用二进制运算。
5.指令由操作码和地址码两部分组成。
操作码表示指令的性质,地址码表示操作数所在的位置。
6.指令在存储器中基本采用顺序执行,由指令计数器指明要执行的指令在存储器中的地址。
附:
计算机系统结构的改进
1.串行算法改为并行算法,出现了向量计算机、并行计算机和多处理机等。
2.高级语言与机器语言的语义距离缩小,出现了面向高级语言机器和直接执行高级语言机器。
3.硬件子系统与操作系统和数据库管理系统软件相适应,出现了面向操作系统机器和数据库计算机。
4.计算机系统从指令驱动型改变为数据驱动型和需求驱动型,出现了数据流机器和归约机。
5.为了适应特定应用环境而出现了各种专用计算机。
6.为了获得高可靠性而研制容错计算机。
7.计算机系统功能分散化、专业化,出现了各种功能分布计算机。
8.出现了与大规模、超大规模集成电路相适应的计算机系统结构。
9.出现了处理非数值化信息的智能计算机。
三、总线
在计算机的内部,CPU和存储器之间由总线连接。
总线是用来连接计算机中的多个部件,以实现部件之间信息交换的一组导线。
总线按照它的任务划分,可分为三级:
1.片内总线指芯片内部的总线。
如CPU内部总线,他连接CPU内部的各个寄存器和算术逻辑运算部件。
2.系统总线指CPU、主存、I/O(通过I/O接口)各大部件之间的信息传输线。
系统总线根据其传递的信号不同可以分为地址总线、数据总线和控制总线。
。
3.通信总线用于连接计算机系统之间或计算机系统与其他系统之间的通信。
我们所说的总线,一般情况指系统总线。
总线在传输数据格式上采用串行传输和并行传输两类。
能一次并行传输的数据位数被定义为总线的数据通路宽度,而单位时间能传输的数据量被定义为总线的数据传输率。
完成一次总线传送操作所需的时间称为一个总线周期。
根据总线可能的传送方向,总线可分为单向总线和双向总线。
四、计算机性能指标
1.机器字长:
CPU一次处理的最大的二进制数的位数为机器字长。
机器字长是指参与运算的数的基本位数,它标志着计算精度,位数越多,精度越高,但硬件成本也越高,因为他决定着寄存器、运算部件、数据总线等的位数。
2.主存容量
主存储器是CPU可以直接访问的存储器,需要执行的程序与需要处理的数据就放在主存中。
主存容量大则可以运行比较复杂的程序,并可以存入大量信息,可以利用更完善的软件支撑环境。
所以计算机处理能力的大小在很大程度上取决于主存容量的大小。
主存容量的记法有两种:
字节数(如PC机,640KB)和单元数(字数)*位数(如64K*16)。
3.外存容量
外存容量一般是指计算机系统中联机运行的外存储容量。
4.运算速度
⑴CPU时钟频率
计算机的操作需要分步执行,每个时钟周期完成一步操作,所以时钟频率在很大程度上反映了CPU速度的快慢。
⑵每秒平均执行指令数(ips)
由于各种指令的执行时间不等,所以这种描述是粗略的。
通常,一条指令能实现一次定点加减运算,所以ips值大致相当于每秒钟能完成的定点加减运算次数。
⑶单独注明时间。
5.所配置的外围设备及其性能指标
6.系统软件配置情况
五、计算机分类。
1.从物理器件的角度分为五代计算机:
⑴第一代电子管计算机
⑵第二代晶体管计算机
⑶第三代集成电路计算机
⑷第四代大规模集成电路计算机
⑸第五代超大规模集成电路计算机(人工智能)
2.从计算机的体积可分为:
巨、大、中、小、微型计算机。
3.从运算能力可分为:
4,8,16,32,64位计算机。
4.弗林(Flynn)分类法:
指令流:
机器执行的指令序列。
数据流:
由指令流调用的数据序列,包括输入数据和中间结果。
多倍性:
在系统最受限制的元件上同时处于同一执行阶段的指令或数据的最大可能个数。
单指令流单数据流机(SISD)、单指令流多数据流机(SIMD)、多指令流单数据流机(MISD)、多指令流多数据流机(MIMD)。
5.冯(泽云)氏分类法。
六、系统结构、组成与实现
1.计算机系统结构(计算机体系结构):
主要研究计算机系统的软件、硬件功能的分配和软件、硬件界面的确定,即哪些功能是由软件完成,哪些功能由硬件完成。
2.计算机组成(计算机组织):
是计算机系统结构的逻辑实现。
在计算机系统结构确定硬件子系统的功能及其概念结构后,研究各组成部分的内部构造和相互联系,以实现机器指令级的各种功能和特性。
3.计算机实现:
计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,信号传输,器件、模块、插件、底板的划分和连接,专用器件的设计等等。
第二章运算器
一、机器数
机器数包括原码、反码、补码和移码。
例如X=+1011Y=-0010
1.原码是一种机器数的表示法。
它约定:
对于一个正数,用“0”表示它的符号,后面的数值部分就是它的二进制数;对于一个负数,用“1”表示它的符号,后面的数值部分就是它的二进制数。
[X]原=01011[Y]原=10010
2.反码是一种机器数的表示法。
它约定:
对于一个正数,用“0”表示它的符号,后面的数值部分就是它的二进制数;对于一个负数,用“1”表示它的符号,后面的数值部分就是它的二进制数(即原码)逐位变反(即“0”变“1”,“1”变“0”)。
[X]反=01011[Y]反=11101
3.补码是一种机器数的表示法。
它约定:
对于一个正数,用“0”表示它的符号,后面的数值部分就是它的二进制数;对于一个负数,用“1”表示它的符号,后面的数值部分就是它的二进制数(即原码)逐位变反,然后加1。
[X]补=01011[Y]补=11110
对负的补码进行还原的时候,数值位仍然采用逐位变反,然后加1的方法。
以Y为例[Y]补=11110由于[Y]补符号位为1,可知Y为负数,后面的数值位变反,加1为0010,由此可知Y=-2
对于一个四位的二进制数来说,变反意味着用一个最大的四位二进制数来减此二进制数,Z=0010,Z变反即1111-0010=1101;
变反加1,可以表示成1111-0010+1=10000-0010=1110
对于同一个数进行两次变反加1,就可表示成:
10000-(10000-0010)=10000-10000+0010=0010由此可知,对于同一个数进行两次变反加1,就可还原原来的数,所以补码还原仍是采用变反加1的方法。
4.移码是一种机器数的表示法。
它约定:
对于一个正数,用“1”表示它的符号,后面的数值部分就是它的二进制数;对于一个负数,用“0”表示它的符号,后面的数值部分就是它的二进制数(即原码)逐位变反,然后加1。
(移码和补码在符号上是相反的)
[X]移=11011[Y]移=01110
移码还原只能先把它变成补码,再还原。
注1:
对于原码00000和10000都表示十进制的“0”,对于反码00000和11111都表示十进制的“0”,而对于补码00000表示“0”,而10000表示绝对值最大的负数(-16),同理对于移码10000表示“0”,而00000表示绝对值最大的负数(-16)。
注2:
对于原码,反码和补码可以表示整数也可以表示小数,而移码只能表示整数,移码只用于浮点数的阶码表示。
二、原码,反码和补码、移码的运算
1.原码运算:
加法:
同符号相加或是异符号相减,保留符号,真值相加
例:
X-Y=Z
[X]原=01011[Y]原=10010
∵Y是负数,∴-Y和X是正数∴Z的符号为正
1011
+0010
1101[Z]原=01101
减法:
异符号相加或是同符号相减,符号与绝对值大的数保持一致,真值相减
例:
X+Y=Z
[X]原=01011[Y]原=10010
∵X的绝对值大与Y的绝对值,∴Z的符号与X的符号一致,为正
1011
—0010
1001[Z]原=01001
2.反码运算:
只有加法运算,符号参与运算
若有X+Y=Z,则[Z]反=[X+Y]反=[X]反+[Y]反+([X]反+[Y]反)的进位位,
若有X-Y=Z,则[Z]反=[X-Y]反=[X]反+[-Y]反+([X]反+[-Y]反)的进位位,
[-Y]反=[Y]反连同符号一起变反
例:
X+Y=Z
[X]反=01011[Y]反=11101
01011
+11101
101000
1由于有进位,所以要加1,无进位就不必加1
01001[Z]反=01001
例:
X-Y=Z
[X]反=01011[Y]反=11101[-Y]反=00010
01011
+00010
01101[Z]反=01101由于无进位,所以就不必加1
3.补码运算:
只有加法运算,符号参与运算
若有X+Y=Z,则[Z]补=[X+Y]补=[X]补+[Y]补,
若有X-Y=Z,则[Z]补=[X-Y]补=[X]补+[-Y]补
[-Y]补是把[Y]补连同符号一起变反加1。
例:
X+Y=Z
[X]补=01011[Y]补=11110
01011
+11110
101001[Z]补=01001
有进位,但直接抛弃
例:
X-Y=Z
[X]补=01011[Y]补=11110[-Y]补=00010
01011
+00010
01101[Z]补=01101无进位
[X-Y]补=[X]补+[-Y]补=[X]补+100000-[Y]补
因此,在计算机中说“减”即为对减数变反加1。
4.移码运算:
⑴移码加减移码运算,然后修正。
例:
X+Y=Z
[X]移=11011[Y]移=01110
11011
+01110
101001[Z]移=01001+10000=11001
有进位,但直接抛弃
由于以上方法不便,多采用以下方法
若有X+Y=Z,则[Z]移=[X+Y]移=[X]移+[Y]补,
若有X-Y=Z,则[Z]移=[X-Y]移=[X]移+[-Y]补
例:
X+Y=Z
[X]移=11011[Y]补=11110
11011
+11110
111001[Z]移=11001
有进位,但直接抛弃
例:
X-Y=Z
[X]移=11011[Y]补=11110[-Y]补=00010
11011
+00010
11101[Z]移=11101无进位
附:
已知A、B、M三个整数,当M能够整除A-B时,称A、B对模M同余,也称A、B对M互补,记A=B(modM),也称A对M的补数为B。
(O157.1/3/1)
补码由补数而来,M一定是2n+1,对与一个整数X,其补码为[X]补=M+X(modM)。
对于一个n位的二进制整数X,[X]补=X0<=X<2n
2n+1+X-2n<=X<0
其中对于一个二进制小数X,[X]补=X0<=X<1
2+X-1<=X<0
同理,对于一个二进制整数X,[X]补=X1<=X<2n
2n+1+X-2n<=X<-1
如:
X=+1011[X]补=01011
Y=-0010[Y]补=100000+(-0010)=11110
又如:
X=+0.1011[X]补=0.1011
Y=-0.0010[Y]补=10+(-0.0010)=1.1110
证明:
[X]补+[Y]补=[X+Y]补(mod2)(设X,Y是小数)
⑴当0<=X<1,0<=Y<1,且0<=X+Y<1时,
[X]补+[Y]补=X+Y,∵0<=X+Y<1,
∴[X]补+[Y]补=X+Y=[X+Y]补(mod2)
⑵当0<=X<1,-1<=Y<0时,
[X]补+[Y]补=X+2+Y,
如果X>=Y时,0<=X+Y<1
[X]补+[Y]补=2+X+Y=(2+X+Y)(mod2)=(X+Y)(mod2)=[X+Y]补(mod2)
如果X[X]补+[Y]补=2+X+Y=2+(X+Y)=[X+Y]补(mod2)
⑶当-1<=X<0,0<=Y<1时同⑵
⑷当-1<=X<0,-1<=Y<0,且-1<=X+Y<0时,
[X]补+[Y]补=2+X+2+Y
[X]补+[Y]补=4+X+Y=(4+X+Y)(mod2)=(2+X+Y)(mod2)=[X+Y]补(mod2)
[X-Y]补=[X+(-Y)]补=[X]补+[-Y]补
[-Y]补:
是把[Y]补符号位数值位一同逐位变反,再加1。
(此操作又称为求补)
假设[X]补和[Y]补为n位,
[X-Y]补=[X]补+[-Y]补=[X]补+2n+1-[Y]补
=[X]补+(2n+1-1-[Y]补)+1
所谓的A减B是把A送入加法器的A端,把B逐位变反送入加法器的B端,然后将末位的进位置1,做一次加法。
此法适合各种二进制环境,包括原码和补码。
移位运算:
[X]补左移一位=2[X]补[X]补右移一位=[X]补/2
三、定点数运算的溢出处理
1.溢出现象。
对于定点数的加减运算来说,实际上可以分为两类:
同号加(加)和异号加(减)。
例13+9=12例2-3-9=-3+(-9)=-12
0001111101
+01001+10111
01100110100
例311+7=18(正溢)例4-11–7=-18(负溢)
0101110101
+00111+11001
10010101110
例511+(-7)=4例6-11+7=-4
0101110101
+11001+00111
10010011100
同号相加的时会产生结果不正确的现象,其原因是由于正确的结果超过了数据所能够表示的范围,故尔称之为溢出现象,异号相加是不会出现溢出现象的。
2.溢出的判别
⑴由于溢出现象只出现在同号相加,其现象为正加正得负或是负加负得正,所以有溢出标志F=SASBSF+SASBSF
其中SA,SB表示A,B两数的符号位,SF表示结果的符号位。
也可以表述为:
当符号相同的两个数相加时,如果结果的符号与加数(或被加数)的符号不同时,则为溢出。
⑵当两个数相加,如果C<>CF,则为溢出。
溢出标志为F=C⊕CF
其中C为数值位的进位,CF为符号位的进位。
⑶采用双符号位。
即用00表示正数,用11表示负数,当出现01时是正溢,出现10时是负溢。
3.溢出处理
计算机在运算过程中,一旦发现结果有溢出现象,必然会进行处理。
溢出处理有的是采用软件处理,有的是采用硬件处理。
软件硬件等效。
四、定点数与浮点数
1.定点数
定点数表示法约定:
机器在运算过程中,所有数据的小数点位置固定不变,小数点的位置由系统设计者指定一个不变的位置,它不占二进制的一位,而是隐含在机器数中的某个位置上。
定点小数.(尾数)
符号位数值位
定点整数.
符号位数值位
事实上,不论是定点小数还是定点整数都不能直接表示表示:
+11.11
如果出现此种情况那么11.11=22*0.1111=2-2*1111.0
此时用定点数来表示数据必须另外加入一个比例因子,以便正确说明记录的数据。
用定点数进行运算处理的机器称定点机。
2.浮点数
将定点数所需的比例因子引入数据表示中,形成了浮点数。
浮点数由阶数和尾数两部分构成。
浮点数的形式如下:
N=±R±E*M
其中R为阶码的底,可以为2、4、8、16等等,E为阶码,M为尾数。
通常,描述一个浮点数需要考虑以下六个参数
⑴尾数值:
包括采用什么码制(原码、反码、补码,常采用原码或补码),采用什么数制(小数、整数,常采用小数)
⑵阶值:
包括采用什么码制(补码、移码,常采用移码),采用什么数制(一般采用整数)
⑶尾数的基:
尾数采用二进制、四进制、8进制、16进制、10进制
⑷阶的基:
目前采用的只有二进制
⑸尾数的长度
⑹阶的长度
浮点数的表示形式为:
.
数符阶符阶值数值(尾数)
浮点数的表示法有很多,我们以以下四种加以说明:
原码表示法:
阶和尾全是原码;反码表示法:
阶和尾全是反码;
补码表示法:
阶和尾全是补码;阶移尾补表示法:
阶为移码,尾为补码;
例1:
已知X=35/512,试用16位的定点数和浮点数分别表示(其中浮点数为5位阶,11位尾)
X=0.000100011,对于定点数来说,原、反、补码都一样。
对于浮点数来说:
X=2-3*0.100011
原码表示为:
0100111000110000
反码表示为:
0111001000110000
补码表示为:
0111011000110000
阶移尾补表示为:
0011011000110000
例2:
已知Y=-17/64,试用16位的定点数和浮点数分别表示(其中浮点数为5位阶,11位尾)
Y=-0.010001,对于定点数来说,原码为010*********、
反码为1101110111111111、补码为1101111000000000。
对于浮点数来说:
Y=-2-1*0.10001
原码表示为:
1100011000100000
反码表示为:
1111100111011111
补码表示为:
1111110111100000
阶移尾补表示为:
1011110111100000
在表示浮点数的时候,为了充分利用尾数的有效位数,提高数据精度需要采用规格化表示,所以约定浮点数的尾数的数值最高位一定是有效的数据。
对于原码表示的浮点数,尾数的数值最高位为1,表示规格化;对于反码、补码表示的浮点数,符号位与尾数的数值最高位不一致,表示规格化。
对于16位的定点数和16位(5阶11尾)的浮点数的比较:
(补码为例)
⑴定点数表示的是数轴上的连续整数;
浮点数表示的是数轴上的一些离散的数据。
⑵定点数表示的范围是:
-215——(215—1)或-1——(1-2-15)
浮点数表示的范围是:
尾数范围:
-1——(1-2-10)
阶的范围:
-24——(24—1)
补码表示:
可表示的绝对值最大正数X为0011111111111111
可表示的绝对值最小正数Y为0100001000000000
可表示的绝对值最大负数Z为1011110000000000
可表示的绝对值最小负数W为1100000111111111
X=+(1-2-10)*2+15;Y=+2-1*2-16;Z=-1*2+15;W=-(2-1+2-10)*2-16;
对于一个数V,如果出现V>X,我们称之为(正)上溢;如果出现V当浮点数的位数越多,它可以表示的范围就越大。
⑶数据精度:
指一个数的有效位数。
定点数的精度为16,浮点数为11。
附:
浮点数是计算机中常用的数据记录形式,有原码、反码、补码、移阶补尾等多种表示方式,由于浮点数的规格化,导致浮点数在表示过程中有一些数据不能表示一个浮点数,从而造成一定程度的浪费,(如010000011…11)
而在计算机中使用最多的是IEEE754标准。
IEEE754标准采用类似阶移尾原的表示法,并采用了隐藏位,即数值最高位隐藏,从而提高表数效率和表数范围(TP303/19-2)。
例:
表示一个数据—10.5
(—10.5)=(—1010.1)2=—(1.0101)2*2+3
设32位数据的编号从左到右为31到0
那么第31位为符号位,第30到第23位为阶码,第22到第0位为尾数。
IEEE754标准的阶采用的是:
127+2的幂=阶码
因此—10.5的阶码为(10000010)2即130
—10.5的IEEE754标准表示为1100000100101000……000
注1:
尾直接取2进制数的尾。
10.5的IEEE754标准表示为0100000100101000……000
(—0.75)=(—0.11)2=—