第三章 微体系结构层——CPU组织
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章微体系结构层——CPU组织
§3.1 CPU的组成与功能
§3.1.1 CPU的组成与功能
CPU的组成:控制器、运算器、各种寄存器、CPU内部总线等几部分组成。
1.ALU部件与寄存器
⑪ ALU部件
ALU部件的功能:提供算术运算、逻辑运算、各种比较运算、其他运算(数制转换、按位加、循环加)等。
⑫寄存器
①通用寄存器:存放操作数、操作数地址、运算结果。
a.通用寄存器组
AX(AH,AL:累加器) ─┐
BX(BH,BL:基址寄存器) │主要用于存放操作数或中间结果,以减少访问
CX(CH,CL:计数器) │存储器的次数。
DX(DH,DL:数据寄存器) ┘
b.指示器及变址器组
SP(堆栈指示器) ─┐
│可存放数据,更重要的用途是存放内存单元的偏移地址BP(基地址指示器) ┘
SI(源变址寄存器) ─┐
│通常用于寻址使用
DI(目标变址寄存器) ┘
②暂存寄存器:暂时存放一些主存读出的数据。
③IP(指令指示器):指令指针寄存器,用存放预取指令的偏移地址。
CPU从代码段中偏移地址为IP的内存单元中取出指令代码的一个字节后,IP自动加一,指向指令代码的下一个字节。
注意:用户程序不能直接访问IP。
(用来存放当前正在执行的指令)
④程序计数器PC:存放当前要执行的指令的地址。
在80X86中,PC和IP的作用是相同的。
⑤状态寄存器FR(标志寄存器)
例如:CF(进位标志) ──进行加、减法运算时,若最高位发生进位或借位时,
CF=1,否则CF=0。
PF(奇偶标志) ──当逻辑运算的结果,低8位中“1”的个数为偶数时,
PF=1,为奇数时PF=0.
AF(辅助进位标志) ──在8(16)位加、减法操作中,低4位向高4位有进位
或借位发生时,AF=1,否则AF=0.
ZF(零标志) ──当运算结果为零时ZF=1,否则ZF=0.
SF(符号标志) ──当运算结果最高位为1时,SF=1,否则SF=0.
OF(溢出标志) ──当运算结果超出带符号数的范围,即溢出时OF=1,否则OF=0.
DF(方向标志) ──DF=1时,串操作按减地址方式进行,即从高地址开始,每操作一次地址减少一次;DF=0时,使串操作按增地址方式进行。
IF(中断允许标志) ──IF=1时,CPU可以响应可屏蔽中断请求;IF=0时,PU不能响应可屏蔽中断请求;
TF(跟踪标志) ──TF=1时,CPU处于单步执行指令的工作方式,即每执行一条指令后,自动产生一个内部中断,以便使用户逐条检查指令程序。
此外还有:
a.段寄存器
8086/8088总线接口部件有四个段寄存器,即
代码段寄存器:CS
堆栈段寄存器:SS
数据段寄存器:DS
附加段寄存器:ES
b.指令队列寄存器(8086:6B/8088:4B)
指令队列寄存器是一个能存放6字节代码的预取指令寄存器。
指令队列类似一个先进先出的栈,在CPU执行指令过程中,为CPU提供指令。
当指令队列中出现两个以上字节空时,不用EU发出请求,BIU就自动执行取指令操作。
2.总线
总线:是一组能为多个部件分时共享的公共信息传输线,分时接收各个部件送来的信息,并发送信息到各个部件。
总线有:地址总线、数据总线和控制总线三类。
实现CPU、存储器、I/O三者之间的数据传输。
3.CPU内部数据通路
⑪单总线数据通路结构
单总线:单总线是一组公共信号线,整个计算机系统中的CPU、主存储器、I/O设备都
挂在这条总线上。
单总线一般是双向结构的。
单总线的特点:连接线少、控制简单;所有数据的发送和接受都由总线控制器(总线仲裁)进行控制,某一时刻只允许一个部件在总线上发送信息,其他需要总线的部件只能等待总线空闲,这样使CPU的整个工作速度降低;总线上所有的I/O设备和主存统一编址的选择方式,没有专用的I/O接口指令。
⑫多组内总线结构(参科大P8)
双总线:CPU具有到主存储器和I/O设备各自的总线,这种结构CPU分别在两条总线上与主存或I/O接口交换数据,相当展宽了总线带宽,提高了总线的数据传输速率。
多总线:目前高档微型计算机和工作站或多处理机系统中都采用双总线或多总线结构,以提高数据传输速率。
§3.1.2 指令执行过程
1.指令的分段执行过程
指令的执行过程如下:
⑪取指令
⑫分析指令
⑬执行指令:①取操作数;②执行操作;③形成下一条指令地址。
2.指令之间的衔接方式
⑪串行顺序连接方式:该方式下,一条指令指行完毕以后再开始读取下一条指令,串行顺序执行。
特点:控制简单,但时间上不能充分利用部件。
⑫指令重叠衔接执行:在对当前指令执行操作的同时提前从主存预读取下一条指令,不必等待当前指令全部执行完,以哟提高程序执行的速度。
特点:对于顺序执行的程序段该方式很好,对于包含有转移的程序,预取指令则会造成程序执行的失败。
§3.1.3时序控制方式
时序:时间顺序。
在计算机中就叫时钟,是按照某种方式产生的一个脉冲序列。
时序控制:用时钟控制程序的执行过程,或用时钟控制计算机系统工作的过程。
计算机中广泛使用的是同步控制与半同步控制两种。
1.同步控制方式
计算机系统的所有操作都是在CPU统一的时钟控制之下,实现各个部件之间的数据传输、实现程序的每一步的执行、完成对各个部件的控制动作等等。
用同一个时钟信号进行同步系统中的所有部件(各部件的每一个动作都由同一个时钟严格地控制),使各个部件的动
作速度一致,这种控制方式就叫同步控制。
例如在IBM-PC/XT系统(最小系统)中,设计规定一个总线周期为 4 个CPU系统时钟周期(即840nS),用T1~T4 表示。
其中:
T1周期─CPU送出地址码、-S0~-S2(状态信号)→8288、控制信号(ALE)→地址锁存器。
T1时刻,CPU通过20位多路地址/数据/状态总线发出地址码。
当控制信号ALE由高变低时,总线上的地址有效,此时IO/-M、DT/-R、-SS0 编码指明了CPU当前正在执行的是访问存储器或是I/O。
T2周期─CPU执行数据传送操作,其内部多路转换开关进行切换,将地址/数据线AD0~AD7上的地址撤消,切换成数据总线。
-DEN→低(有效)、DT/-R→低(有效)、-MRDC/MWTC有效、A16~A19切换成与总线周期有关的状态信号。
T3周期─T3时刻的中间完成对数据的R/W 操作,数据总线在写周期则输出数据;在读周期用来输入数据。
T4周期─恢复时间,T4时刻完成了数据的传送,状态信号-S0~S2为无操作状态,此时CPU结束总线周期,进入准备执行下一周期。
TW周期─等待周期
CPU在T3的下降沿时刻检测“READY”信号的状态,若检测到“READY”=“1”则结束T3进入T4;若检测到“READY”=“0”则在T3与T4之间插入TW周期,在TW的下降沿处CPU再次检测“READY”信号的状态,以便确定再插入TW还是进入T4。
总线周期─CPU与存储器或I/O口传一个字节数据所用的时间称为总线周期。
同步控制的特点:时序关系简单、结构集中、设计方便,适宜于微型、小型计算机中的系统控制,尤其是适用于CPU内部的操作控制。
但时间安排上不经济。
2.同步控制方式的多级时序系统
⑪多级时序的概念
多级时序:由时钟脉冲分频、控制产生的一系列计算机各个部件工作的时序系统。
①指令周期:即指取指令、分析指令、执行指令,完成该指令所需的全部时间。
②机器周期:通常把一条指令的执行过程划分为若干个不同阶段,每一阶段执行所需要的时间称为机器周期。
例如,取指令周期、分析指令周期、执行指令周期、存储器读周期、存储器写周期等等都叫机器周期。
通常机器周期又叫CPU周期。
③时钟周期:在一个机器周期内要完成若干个微操作。
因而把一个机器周期分为几个相等的时间段,每个时间段完成一个微操作,把完成一个微操作所需要的时间叫作时钟周期。
④时钟信号:提供整个计算机系统定时基准。
其他一切控制时序都是由该基准产生的。
该基准的频率取决于计算机系统的工作频率。
⑫多级时序之间的关系
参考教材P79Fig 3-5
⑬时序系统的组成
时钟产生电路参考教材P79Fig 3-6
§3.1.4指令流水线
⑪指令执行的过程如下:
①取指令FI
②指令译码DI
③寻找操作数地址CO:寻址操作数的位置。
④取操作数FO
⑤执行指令EI
⑥写操作数WO:回写结果。
结合教材P81 Fig 3-8介绍流水线过程。
⑫影响流水线操作的其他因素
①各个操作阶段时间不完全相等:造成有些操作环节等待时间长;
②流水线的相关问题:当第二条指令的操作数是第一条指令的运算结果时,造成操作数寻址出错;
③若遇条件转移指令:一般条件转移中的条件都是用的上一条指令的运算结果,当结果尚末出现时就转移容易造成转移出错;
④I/O设备中的中断请求或机器故障时:当中断源提出中断请求时,CPU需要保护断点(CS:IP)、保护现场(CS:IP),否则中断处理结束之后找不到继续执行的“断流点”?
精确断点法:尚末进入流水线的后续指令拒绝进入,已经在流水线上的指令待其执行完毕,然后再进入中断服务程序。
不精确断点法:即不待已进入流水线的指令执行完毕,就尽早转入中断处理。
§3.2 算术逻辑部件ALU与运算方法
ALU的作用:算术运算、逻辑运算、比较、变换符号、计算操作数地址等等。
§3.2.1 算术逻辑部件
ALU逻辑部件的硬件实现涉及的技术问题:
①一位二进制加法运算逻辑即全加器;
②任意位加法器、连同进位的传递逻辑,即n位加法器;
③以加法器为核心,实现多种功能的运算逻辑。
1.全加器
全加器:基本加法单元。
要求有三个输入量即:操作数Ai、Bi,低位传来的进位Ci;两个输出量即:本位的和Σi、向高位的进位Ci+1。
由此得出:教材P83的式3-1、3-2及Fig 3-9所示。
2.并行加法器与串行进位链结构
并行加法器:用n位全加器实现两个n位操作数各位相加的加法器,该加法器就称为并行加法器。
结构:用n个加法器串接起来,实现两个n位数的相加,该加法器就称为串行进位的并行加法器。
逻辑电路参考蒋本珊《电子计算机组成原理》P106 Fig 5-6。
特点:并行加法器能够实现同时对数据的各位相加,但存在一个加法最长运算时间问题。
⑪基本进位公式
参教材P83
⑫并行加法器的串行进位
参考蒋本珊《电子计算机组成原理》P106 Fig 5-6的并行加法器逻辑、教材P84式3-6:串行进位特点:①其进位是逐级形成的;②每一级的进位依赖前一级的进位;③串行进位延迟时间长;④节省器件、成本低。
3.并行进位(先行进位、同时进位)
并行进位:各级进位信号同时形成。
以四位加法为例,由教材P84的式3-6得式3-7。
根据式3-7得:
Fig 3-10的逻辑电路。
特点:①所有的进位信号都不依赖低位的进位;②各位的进位能够同时产生;③该进位方式速度快;④但随着加法数位的增加,Ci的逻辑表达式越长,输入量增加,逻辑电路复杂;⑤硬件费用增加;⑥完全采用并行进位是不现实的。
4.ALU应用
参考教材P85
§3.2.2 定点数运算方法
1.定点加法运算
多数计算机中都是采用加法运算,减法则转换成加法运算操作。
⑪原码加减法
原码加减法的实例:(+)A+(+)B、(+)A+(-B)、(+)A-(-B)等等。
原码加减法在计算机中的逻辑电路复杂,所以一般很少采用。
⑫补码加减法运算
①补码加法运算:[X]补+[Y]补=[X+Y]补
②补码减法运算:[X-Y]补=[X+(-Y)]补=[X]补+[-Y]补
③补码运算规则:
★参加运算的操作数都必须用补码表示;
★符号位参加运算;
★若指令操作码为加法,则两数直接相加;若操作码为减法,则减数连同符号位一起变反加一后再与被减数相加;
★运算结果用补码表示。
⑬溢出判别
溢出:参与运算的数据或结果超出了字长的表示范围。
溢出的后果:造成运算结果出错。
出现溢出情况:两异号数相加一般不出现溢出;两同号数相加可能出现溢出。
结果为正且大于所能表示的最大正数时,称为正溢出;结果为负且小于所能表示的最小负数时,称为负溢出;
溢出的例子参教材P89 3~12行。
溢出的判断:
①根据符号位判断
方法:两个同符号数相加,若所得的结果符号与两数不同,则表示溢出。
用式3-10表示
②根据最高有效位的进位判断
方法:两正数相加,最高有效位有进位,符号位无进位,则运算结果发生溢出;两负数相加,最高有效位无进位,符号位有进位,则运算结果发生溢出。
用式3-11表示
③根据变形补码判断
变形补码:用两位二进制数表示符号位,即“00”表示正数、“11”表示负数(是对“0”
表示正数、“1”表示负数的扩充)。
方法:根据双符号位定义溢出
00 结果为正,无溢出;
01 结果正溢出;
10 结果负溢出;
11 结果为负,无溢出。
用式3-12表示
2.移位
移位:寄存器中的所有二进位同时顺序左移或右移一位,也或者寄存器中的所有二进位同时头尾相接的顺序左移或右移一位,即为循环移位。
移位的类型:逻辑移位、循环移位、算术移位。
各类移位的特点:参考教材P90Fig 3-14的逻辑图。
3.定点数乘除法运算
乘除在计算机中实现的方法有如下几种方法:
★软件实现;
★在ALU上实现(逻辑电路上需要变动);
★设置专用的乘除法运算器。
方法不同其原理是相同的,在此以在ALU上实现为例进行讨论。
⑪无符号整数的一位乘法
根据手工计算:(1101)B×(1011)B的过程:
参考教材P91
归纳:★加法器只能实现两数的求和操作,所以乘法运算要执行多次加法;
★手工中的各部分积逐渐左移,在计算机对原部分积右移代替新部分积的左移;
★由此得:将n位乘转换为n次“累加与移位”,即每一步只求一位乘数所对应的新部分积,并与原部分积作一次累加,然后右移一位。
★假设B寄存器存放被乘数、C寄存器存放乘数、A寄存器存放初值0,然后存放部分乘积,最后存放乘积高位。
则得Fig 3-15的乘法流程图。
【例3-10】的运算过程:根据Fig 3-15的乘法流程图,把【例3-10】的运算过程分解成Fig 3-17的细划步骤。
⑫无符号整数一位除法
根据手工除法的过程:将部分被除数或余数减去除数,如果够减则商加“1”、不够减则商加“0”;
计算机中的除法运算,首先要判断是否够减的问题。
运算方法如下:
①用逻辑比较电路进行比较判断:将被除数或余数减去除数,如果够减就执行一次减法并商加“1”,然后余数左移一位;如果不够减则商“0”,同时余数左移一位。
②直接试探法:在不加任何判断情况下,将被除数或余数减去除数。
如果余数符号位为“0”即余数为正,则商加“1”;若余数符号位为“1”即余数为负,则商“0”,同时将除数再加被除数或余数(恢复余数),然后余数左移一位再试。
直接试探法的分析:将被除数或余数减去除数。
如果余数A为正则商上“1”,然后A 左移一位再减除数B,即即执行一次2A-B的操作;若余数A为负则商上“0”,然后再加除数以恢复余数即A+B,将(A+B)左移一位再试探,也就是完成一步2(A+B)-B的过程,即执行一次2A+B的操作。
通常执行“2A+B的操作”称为不恢复余数法或叫加减交替法。
实际应用若余数为负时则采用的是加减交替法。
假设B寄存器存放除数、A和C寄存器分别存放被除数的高位和低位、商存放C寄存器、余数放A寄存器。
则得Fig 3-18的加减交替法除法流程图。
【例3-11】的运算过程:根据Fig 3-18的除法流程图,把【例3-11】的运算过程分解成Fig 3-19的细划步骤。
§3.2.3 浮点数运算方法
计算机中除了无符号整数之外还有实数,实数在计算机中是用浮点数表示的。
浮点数的规格化表示:规定尾数的最高数位必须是一个有效值。
例如:0.001101可以表示为:(0.0001101)⨯21或(0.01101)⨯21-或(0.1101)⨯22-等等,但唯有(0.1101)⨯22-是规格化的表示。
1. 浮点数的加减运算
假设两浮点数:X=Mx·2Ex和Y=My·2Ey,要实现X+Y,通常需要以下过程:
⑪对阶的操作:阶码小的阶向阶码大的阶对齐,即小数值的阶码调整到与大数值的阶码相同。
同时相应调整尾数。
⑫实现尾数的加、减运算。
⑬对运算结果规格化和溢出判断:运算结果用双符号位表示。
①左规:对尾数进行规格化,即尾数(相当小数点右移)左移一位、阶码减一;
②右规:检查尾数是否溢出,一般用用调整阶码解决,尾数(相当小数点左移)右移一位、阶码加一。
⑭舍入操作
问题的提出:右规操作时,会失去尾数的最低位,为保证数据的精度需要舍入操作。
①方法一:若末位是“0”就舍去、若末位是“1”则入(即尾数加“1”);该方法可能造成尾数溢出,需要再右规操作。
②方法二:“恒置1”法,即不论尾数右移掉的是“0”或是“1”,都将尾数末位置“1”;该方法可能造成误差大。
【例3-12】参考教材P95、96
2. 浮点数的乘除运算
⑪浮点数的乘法运算
假设两浮点数:X=Mx·2Ex和Y=My·2Ey,要实现X×Y,则得:
X×Y=2(Ex+Ey)(Mx·My)即尾数相乘、阶码相加。
通常需要以下过程:
①阶码相加;
②尾数相乘;
③规格化处理。
⑫浮点数的除法运算
假设两浮点数:X=Mx·2Ex和Y=My·2Ey,要实现X÷Y,则得:
X÷Y=2(Ex-Ey)(Mx÷My)即尾数相除、阶码相减。
通常需要以下过程:
①预置:即检查被除数是否为“0”,若为“0”则商置为“0”;检查除数是否为“0”,若为“0”则置除数为“0”的标志同时转为中断处理;
②尾数调整:判断被除数的尾数的绝对值是否小于除数尾数的绝对值,若小于,则把被除数的尾数右移一位并使其阶码加一,以此保证商的尾数不溢出;
③求阶差:用被除数的阶码减去除数的阶码即得商的阶码,异号阶码相减时注意溢出;
④尾数相除:将被数的尾除以除数的尾数。
§3.2.4 十进制数的加减法
1.转换成二进制以后进行运算
2.直接进行十进制数运算
①用BCD码运算;
②先用二进制进行运算再用BCD码调整。
3.BCD码的运算
BCD码也叫二进制编码的十进制数。
对计算机来讲,二进制是最为方便的。
人们习惯却是使用十进制数,所以可采用二进制数对每一位十进制数字编码。
这种数称谓二-十进制,简称BCD(BinaryCoded Decimal)。
BCD码有两种形式:
⑪压缩BCD 码
压缩BCD 码的每一位用4位二进制表示,一个字节表示两位十进制数。
⑫非压缩BCD 码
非压缩BCD 码用一个字节表示一位十进制数,其中只用低4位的0000~1001表示0~9个数字。
BCD 码表
━━━━━━┯━━━━━━━━━┯━━━━━━━━━━━
十进制数│压缩BCD 码│非压缩BCD 码
━━━━━━┿━━━━━━━━━┿━━━━━━━━━━━
0 │0000 │00000000
1 │0001 │00000001
2 │0010 │00000010
3 │0011 │00000011
. │. │.
. │. │.
. │. │.
9 │1001 │00001001
10 │00010000 │00000001 00000000
. │. │.
12 │00010010 │00000001 00000010
. │. │.
. │. │.
. │. │.
━━━━━━┷━━━━━━━━━┷━━━━━━━━━━━
二进制数中的每一位都有特定的“权”,从左至右每一位的“权”依次为:
23 = 8、22 = 4、21 = 2、20 = 1。
所以又称这种编码叫“8421”码。
§3.3 CPU模型机的组成及其数据通路
§3.3.1 基本组成
模型机与典型机的区别:模型机即对计算机通用结构的概念与定性分析;典型机则涉及到具体的机型,是一种定量的分析。
CPU模型机的结构如教材P98 Fig 3-20所示。
1.寄存器
CPU内部寄存器分为两类:一类是存放控制命令即指令寄存器、程序计数器、程序状态字寄存器等;另一类是存放运算数据的寄存器即通用寄存器和暂存器等。
⑪可编程寄存器
可编程寄存器:能够用人工控制的寄存器,用计算机的程序对其进行编程控制。
①R0~R3:在80X86系列中如AX、BX、CX、DX;
②SP(堆栈指针寄存器):在80X86系列中如SP、BP等;
③PSW(程序状态字寄存器):在80X86系列中如FR;
④PC(程序计数器寄存器):在80X86系列中如PC。
⑫暂存器
暂存器C、D:由主存储器读出数据参加ALU的运算,即操作数暂存器;
暂存器Z:暂时存放ALU的运算结果。
⑬指令寄存器IR:保存当前正在在执行的指令。
⑭接口寄存器:①MAR(主存储器地址寄存器):存储CPU访问主存或I/O设备的地址。
其中:当EMAR为“1”时,三态门打开,MAR输出地址到地址总线;
当EMAR为“0”时,三态门关闭,MAR输出呈高阻态。
②MDR(数据寄存器):存储CPU与主存或I/O设备之间的交换数据。
其中:当RD为有效电平时,MDR通过数据总线读取主存数据,提供CPU 的运算使用;
当WD为有效电平时,MDR通过数据总线向主存写入数据,提供CPU的运算结果写入主存储器。
2.运算部件
CPU模型机中的的运算部件就是ALU。
ALU的功能:加、减、与、或、异或、非等等。
3.总线与数据通路结构
⑪内部总线(ALU总线)
ALU总线:完成内部寄存器与ALU之间的数据传输。
特点:凡是挂接在ALU总线上的寄存器都是通过三态门控制。
⑫系统总线
系统总线:完成或实现CPU、主存储器、I/I设备之间的数据交换。
4.控制器及微命令的基本形式
⑪微命令的形式
微命令:直接用于控制各个部件或控制门的控制信号。
以三态门为例说明微命令的控制过程。
控制命令有两种形式:
①电平控制(电位信号控制):用高电平或低电平的电位进行控制;
②沿控制(脉冲控制):用电平的上升沿或下降沿进行控制。
⑫控制器
控制器:控制器是计算机系统的指挥中心,它根据操作的性质输出一系列相应的控制命令,完成各个相应部件的动作。
依据人们予先确定的算法和操作程序,控制与协调计算机各部件的自动工作。
组成:①程序计数器---PC(Program Counter)。
作用:存放当前要执行的指令的地址。
②指令寄存器---IR(Instruction Register).
作用:用来存放当前正在执行的指令。
③指令译码器---ID(Instruction Decoder)。
作用:对操作码进行译码并发出相应的控制信号。
④操作控制器---OC(Operation Control)。
作用:依据译码输出完成该条指令所需要的控制命令。
⑤时序产生部件。
·时钟脉冲源---CP(Clock Pulse)。
·时序信号发生器---TSG(Timing Signal Generator)。
§3.3.2 数据传输
1.寄存器与寄存器之间的数据传输
2.RAM与CPU之间的数据传输
3.算术运算与逻辑运算
§3.4 组合逻辑控制器原理
§3.4.1
§3.5 微程序控制器原理
§3.6 精简指令集计算机(RISC)
§5.1.1§5.1.1§5.1.1§5.1.1§5.1.1§5.1.1~⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳①②③④⑤⑥⑦⑧⑨⑩1⨯23+0⨯22+1⨯21+0⨯20+1⨯21-+1⨯22-
第四章指令系统层
第五章汇编语言层
第六章存储系统
第七章输入/输出系统
第八章 I/O设备与I/O程序设计。