5.1.1 CPU的功能
程序是一个指令序列,这个序列明确告诉计算机应该执行什么操作,在什么地方找到用来操作的数据。
一旦程序进入内存储器,就可以由计算部件来自动完成取指令和执行指令,而CPU就是执行这样的功能。
CPU的四大基本功能:
指令控制、操作控制、时间控制、数据加工
1.指令控制
保证程序按顺序执行程序。
2.操作控制
程序是一个指令序列,一条指令的功能往往由若干个操作信号的组合来实现。
因此,CPU 管理并产生 由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
3.时间控制
对各种操作实施时间上的定时,称为时间控制。
4.数据加工
对数据进行算术运算和逻辑运算处理。
5.1.2 CPU的基本组成
CPU的基本部分变成了运算器(ALU,算术逻辑单元)、cache、控制器三大部分。
控制器
由程序计数器PC、指令寄存器IR、指令译码器、时序产生器和操作控制器组成。
属于“决策机构”,完成协调和只会整个计算机系统的操作。
其主要功能:
(1):从指令cache中取出一条指令,并指出下一条指令在指令cache中的位置。
(2): 对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作。
运算器
由ALU算术逻辑单元、通用寄存器、数据缓冲寄存器、状态字寄存器组成
有两个主要功能:
(1): 执行所有的算术运算。
(2): 执行所有的逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
5.1.3 CPU的主要寄存器
【十分重要!!!一开始忽略了,后来看到在指令周期中需要有这个姿势储备!】
数据缓冲寄存器(DR)
存的是数据字。
作用:
①:作为ALU运算结果和通用寄存器之间信息传递中时间上的缓冲。
②:补偿CPU和内存、外围设备之间在操作速度上的差别。
指令寄存器(IR)
指令寄存器(IR)用来保存当前正在执行的指令。
PS:
在一条指令执行时,
先把它从指令cache存储器(简称指存)读出,
然后传送到 指令寄存器,
然后 指令寄存器 中的操作码字段 传送到 指令译码器 ,操作码译码后,
向操作控制器发出具体操作的特定信号。
程序计数器(PC)
作用:确定下一条指令在内存中的地址。
当执行指令时,CPU会自动修改PC的内容,以便其保持的总是将要执行的下一条指令的地址。
由于大多数指令都是按顺序来执行的,所以修改的过程中通常只是简单的对PC加1.
数据地址寄存器(AR)
存的是地址。
用来保存当前CPU所访问的数据cache存储器种(简称数存)单元的地址。
通用寄存器(R0~R3)
当ALU(算术逻辑单元)执行算数或逻辑运算时,为ALU提供一个工作区。
例如,在执行一次加法运算中,选择两个操作数(分别放在两个寄存器)相加,所得到的结果再送到一个寄存器。
状态字寄存器(PSW)
顾名思义,状态字寄存器。
来保存 算术指令 和 逻辑指令运算或测试结果建立的各种条件代码。
如:运算结果进位标志(C);运算结果溢出标志(V);运算结果为零标志(Z);运算结果为负标志(N);
5.1.4 操作控制器与时序产生器
数据通路:
多寄存器之间传送信息的通路。
操作控制器:
根据指令操作码和时序信号(从主存取出指令,完成指令操作码译码),产生各种操作控制信号,以便正确地选择数据通路,把有关数据打到一个寄存器,从而完成取指令和执行指令的控制。
硬布线控制器(时序逻辑型)(硬件实现)
微程序控制器(存储逻辑型)(软件实现)
时序产生器:
产生各种时序信号(电位,脉冲)。
对各种操作实施时间上的控制。
5.2 指令周期
5.2.1 指令周期的基本概念
指令周期,CPU周期,T周期
指令周期是取出一条指令并执行这条指令的时间。
CPU周期,称为机器周期,又称时钟周期,内存中读取一个指令字的最短时间来规定CPU周期。
一个CPU周期又包含有若干个T周期。T周期为计算机操作的最小时间单位。
一条指令所需的最短时间为两个CPU周期。
单周期、多周期
所谓单周期:就是在一个CPU周期中完成取指和执行操作【少数指令可实现】
大多数指令需要多个CPU周期完成指令周期的全部操作。
/程序执行前(R0)=00,(R1)=10,(R2)=20,(R3)=30
MOV指令的指令周期
地址:101 指令助记符:MOV RO,R1,传送指令MOV,执行(R1)->R0
1.取指周期:
CPU进行:①:从指存中取出指令;②:对PC(程序计数器)+1;③:对指令操作码进行译码和测试;
具体实现:
(1)PC装入第一条指令地址101
(2)PC的内容放入ABUS(指令地址总线),对指令进行译码,并启动读命令【①取指令】
(3)从101号地址读出的MOV指令通过IBUS装入IR(指令寄存器)【①取指令】
(4)对PC(程序计数器)+1,为下一条指令做准备【PC+1】
(5)IR中的OP(操作码)译码【③译码】
(6)CPU识别出是MOV指令。至此,取指周期结束。
2.执行周期:
(1)OC(操作控制器)送出控制信号到通用寄存器,选择R1(10)作为源寄存器,选择R2作目标寄存器。
(2)OC送出控制信号,OC->ALU.
(3)OC送出控制信号,ALU->DBUS(数据总线);注意:任何时候,DBUS上只能有一个数据。
(4)OC送出控制信号,DBUS->DR(数据缓冲寄存器)
(5)OC送出控制信号,DR->R0.至此,MOV指令执行结束。
总结:
MOV是一条RR型指令,指令周期是两个CPU周期,寄存器寻址。
单字长,二地址。
LAD指令的指令周期
地址:102 指令助记符:LAD R1,6,取数指令LAD,从数存6号单元取数(100)->R1
1.取指周期:(CPU动作完全与MOV指令取指周期一样,只是PC提供的指令地址是102)
CPU进行:①:从指存中取出指令;②:对PC(程序计数器)+1;③:对指令操作码进行译码和测试;
具体实现:
(1)PC装入第一条指令地址102
(2)PC的内容放入ABUS(指令地址总线),对指令进行译码,并启动读命令【①取指令】
(3)从101号地址读出的LAD指令通过IBUS装入IR(指令寄存器)【①取指令】
(4)对PC(程序计数器)+1,为下一条指令做准备【PC+1】
(5)IR中的OP(操作码)译码【③译码】
(6)CPU识别出是LAD指令。至此,取指周期结束。
2.执行周期:
(1)OC(操作控制器)送出控制信号到通用寄存器,将指令中的直接地址6放到DBUS上。
(2)OC送出控制信号,地址码6->AR(地址寄存器)
(3)OC送出控制信号,将数存6号单元中的数–>DBUS.
(4)OC送出控制信号,DBUS->DR(数据缓冲寄存器)
(5)OC送出控制信号,DR->R1.至此,LAD指令执行结束。
总结:
LAD是一条RS型指令,指令周期是三个CPU周期(在DBUS上进行了地址传送和数据传送),直接寻址,寄存器寻址。
单字长,二地址。
ADD指令的指令周期
地址:103 指令助记符:ADD R1,R2,加法指令ADD,执行(R1)+(R2)->R2,结果(R2)=100
1.取指周期:(CPU动作完全与MOV指令取指周期一样,只是PC提供的指令地址是103)
2.执行周期:
(1)OC(操作控制器)送出控制信号到通用寄存器,选择R1(10)作为源寄存器,选择R2作目标寄存器。
(2)OC送出控制信号,ALU作R1(100)和R2(20)的加法。
(3)OC送出控制信号,将运算结果120–>DBUS.
(4)OC送出控制信号,DBUS->DR(数据缓冲寄存器);ALU产生的进位信号保存在PSW(状态字寄存器)
(5)OC送出控制信号,DR(120)->R2,R2原来的内容被冲掉.至此,ADD指令执行结束。
总结:
ADD是一条RR型指令,指令周期是两个CPU周期,寄存器寻址。
单字长,二地址。
STO指令的指令周期
地址:104 指令助记符:STO R2,(R3),存数指令STO用(R3)间接地址,(R2)=120写入数存30号单元地址
1.取指周期:(CPU动作完全与MOV指令取指周期一样,只是PC提供的指令地址是104)
2.执行周期:
(1)OC(操作控制器)送出控制信号到通用寄存器,选择(R3)=30做数据存储器的地址单元
(2)OC送出控制信号,打开通用寄存器的三态门(不经过ALU以节省时间)将地址30->DBUS。
(3)OC送出控制信号,DBUS->AR(数据地址寄存器).
(4)OC送出控制信号,通用寄存器选择(R2)=120,作为数存的写入数据
(5)OC送出控制信号,打开通用寄存器的三态门,将数据120->DBUS
(6)DBUS->30号单元。至此STO指令到此结束
总结:
STO是一条RS型指令,指令周期是两个CPU周期,寄存器寻址,寄存器间接寻址(选择(R3)=30做数据存储器的地址单元)。
单字长,二地址。
JMP指令的指令周期
地址:105 指令助记符:JMP 101,转移指令JMP,改变程序执行顺序到101号单元
1.取指周期:(CPU动作完全与MOV指令取指周期一样,只是PC提供的指令地址是105)
2.执行周期:
(1)OC(操作控制器)送出控制信号到通用寄存器,选择(R3)=30做数据存储器的地址单元
(2)OC送出控制信号,打开IR(指令寄存器),将IR中的地址码->DBUS
(3)OC送出控制信号,DBUS->PC,PC中的原先106被替换。至此JMP指令到此结束
总结:
JMP指令周期是两个CPU周期,直接寻址。
单字长,二地址。
用方框图语言表示指令周期
指令系统设计()
方框:按CPU周期
方框内内容:数据通路操作或操作控制
菱形符号:判别或测试
~:共操作,前边讲的5种操作的框图描述。
公操作:取指令。
5.3 时序产生器和控制方式
CPU中的控制器用它来指挥机器工作,CPU可以用时序信号/周期信息来辨认从内存中取出的是指令(取指)还是数据(执行)一个CPU周期中时钟脉冲对CPU的动作有严格的约束,操作控制器发出的各种信号是时间(时序信号)和空间(部件操作信号)的函数。
PRO:用二进制表示的数据和指令都存在内存中,那么CPU是如何识别它们时指令还是数据。
从时间上来讲,取指令事件发生在指令周期的第一个CPU周期中,即发生“取指令”事件,而取数据事件发生在指令周期的后面几个CPU周期中,即发生在执行指令阶段。
从空间上来讲,如果取出的代码是指令,那么就一定是送往指令寄存器去的,如果取出的代码是数据,那么就一定是送往运算器去的。
时序信号最基本的体制是电位-脉冲制。
硬布线控制器,时序信号采用:主状态周期-节拍电位-节拍脉冲三级体制。
微程序控制器,时序信号采用:节拍电位-节拍脉冲二级体制。
时序产生器的功能:
产生时序信号。
时序产生器的组成:
时钟源、环形脉冲发生器、节拍脉冲和读写时序译码逻辑、启停控制逻辑。
控制方式:
同步控制,异步控制,联合控制。
同步控制
在任何情况下,已定的指令在执行时所需的机器周期数和时钟周期数都是固定不变的。
选取方案:
1.采用完全统一的机器周期执行各种不同的指令。
2.采用不定长机器周期。
3.中央控制与局部控制结合。
异步控制
每条指令、每个操作控制信号需要多少时间就占用多少时间。
每条指令的指令周期可由多少不等的机器周期组成;
没有固定的CPU周期数或严格的时钟周期。
联合控制
同步控制和异步控制相结合的方式。
5.4 微程序控制
控制存储器:
控制存储器用来存放实现全部指令系统的微程序。
控制存储器的字长即微指令字的长度,其存储容量由机器指令系统而定,即取决于微程序的数量。对控制存储器的要求是速度快,读出周期要短。
微指令寄存器:
微指令寄存器是用来存放由控制存储器读出一条微指令信息。
微地址寄存器决定要访问的下一条微指令的地址,而微指令寄存器则保存一条伪指令的操作控制字段和判别测试字段的信息。
地址转移逻辑:
通过判别测试字段P和执行部件的“状态条件”反馈信息,去修改微地址寄存器的内容,实现一定的条件转移。
微程序设计方法(会设计)
水平微指令和垂直微指令区别
水平型微指令并行操作能力强,效率高,灵活性强。垂直型微指令则比较差。
垂直型微指令中,一般只能完成一个操作,控制一两个信息传送通路,因此微指令的并行操作能力低,效率低。
水平型指令执行一条指令的时间短,垂直型微指令执行时间长。
水平型微指令解释指令的微程序,微指令字较长,微程序短的特点。
垂直型相反。
水平型微指令用户难以控制,而垂直型指令与指令比较相似,容易控制。