基础笔记:计算机组成原理(第二版)蒋本珊 清华大学出版社(未完成)

CH1 概论

1.第一台数字电子计算机是1946215在美国宾夕法尼亚大学诞生的ENIAC(电子数字积分计算机).第一台储存程序的计算机是1949年在英国剑桥大学诞生的EDSAC(电子延迟存储自动计算).吸收了冯 · 诺依曼提出的“存储程序控制”的设计思想,计算机EDVAC(离散变量自动电子计算机)在1951年问世。

2.冯·诺依曼的存储程序控制概念概括起来为:

计算机硬件:ALU、CU、memory、I/O设备

计算机内部采用二进制来表示指令和数据 将编好的程序和原始数据事先存入存储器中(存储程序)

然后启动计算机工作(程序控制:控制器依据存储的程序控制计算机完成计算任务)

弱点:存储器的访问成为瓶颈

非冯计算机:数据驱动的数据流计算机、需求驱动的归约计算机和模式匹配驱动的智能计算机等

3.硬件组成:

CU控制其他部分、主储存器和CU之间存在地址/指令关系、主存储器与其他部件为数据关系

ALU:算术逻辑运算部件.核心为加法器,还有若干通用寄存器或累加寄存器.(暂时存放操作数和运算结果)

CU:包括一些专用寄存器.控制器从内存中取出解题步骤(指令)

存储器:高速缓冲存储器、主存储器、辅助存储器(CPU不能直接访问)

I/O设备:自动控制和检测系统中的A/D也是输入设备,D/A也是输出设备

储存器设计思想:冯诺依曼结构和哈佛结构

冯诺依曼:指令和数据是不加区分地混合储存在同一个储存器中共享数据总线,不能同时取指和取操作数

哈佛结构:分为程序存储器和数据存储器,至少具有两组总线 PM和DM地址数据总线

一个机器周期内可以同时准备好指令和操作数 可以使指令和数据具有不同的位宽

Cache中采用哈佛结构 主存储器采用冯诺依曼机构

提高程序执行效率 缩短指令执行的时钟周期  提高主存储器的利用率

微、小型计算机多采用总线结构,其特点:共享、分时(同一时刻只允许一对设备或部件之间传送信息)

最简单的总线结构是单总线:地址总线(AB单向)、数据总线(DB双向)、控制总线(CB),同时还有相关控制电路(系统总线) 电路主要由三态门组成

大、中型计算机则采用通道等方式连接各大部件:主机(CPU和主存储器)、通道、设备管理器、外设

系统级->寄存器级->门级->晶体管级->物理级(MOS、TTL)

4计算机系统:

硬件软化:增强系统的功能和适应性   软件硬化:降低软件在时间上的开销

固件(Firmware):存储在能永久保存信息的器件(如ROM)中的程序,具有软件功能的硬件。执行速度快于软件灵活性优于硬件

相同的系统结构:指令系统、数据格式、字符编码、中断系统、控制方式和输入输出方式等保持统一。

物理机:硬联逻辑级(门、触发器等逻辑电路)、微程序级(微指令集)、传统机器级(指令集:机器指令)

虚拟机:操作系统级 汇编语言级 高级语言级 应用语言级

微指令编写的微程序直接由硬件执行,微程序被固化于只读存储器ROM中,常称为固件

5.计算机主要的性能指标:

机器字长:能直接处理的二进制信息的位数。字长标志着精度,字长越长,精度越高

主    频:CPU的时钟频率。一般情况下,时钟频率越高,运算速度越快。整机速度由多种因素决定。

总线宽度:数据总线一次能并行传输信息的位数。一般指(外部)数据通路宽度。

可能与CPU内部的数据总线宽度(内部寄存器大小)不同 

存储容量:系统能存储的二进制字的总数,单位:KB、MB、GB、TB等。 

运算速度:

不同类型指令在计算过程中出现的频繁程度,乘上不同的系数(平均运算速度)

每条指令执行所需时钟周期数(Cycles Per Instruction,CPI)

以MIPS(每秒执行几百万条指令)和MFLOPS(每秒执行几百万条浮点运算)作为计量单位来衡量运算速度

CH3 指令系统

1.机器指令的格式: (二进制) 操作码OP 地址码Addr

操作码指明做什么操作 每一条指令都有一个唯一确定的操作码 字段的位数取决于计算机指令系统的规模

地址码指明数据从哪里来、结果要到哪里去 根据一条指令中有几个操作数地址,称为几地址指令

指令长度:操作码字段的长度、操作数地址的长度及个数

根据所有指令的长度是否都相等分为:定长指令字结构和变长指令字结构。

指令操作码的编码可分为定长编码和变长编码

定长编码方式:操作码的位数和位置固定,但指令长度不固定。

操作码不同,所涉及的操作数的个数也不完全相同,指令的长度也不同

IBM370 一律都是8 允许容纳256条指令

变长编码方式:操作码长度不固定,分散在指令字的不同位置上而指令长度固定的设计方法

操作码的位数越多,所能表示的操作种类就越多。

PDP-11(字长16位)单字长指令的操作码字段占416位不等,可遍及整个指令长度。

最常用的采用扩展操作码方法来设计:

0xyz~Exyz 定义 15条三地址指令 留下Fxyz作为扩展窗口

F0xy~FExy 定义15条二地址指令 留下FFxy作为扩展窗口

FF0x~FFEx 定义15条一地址指令 留下FFFx作为扩展窗口

FFF0~FFFF 定义16条零地址指令

短码不能是长码前缀:eg 4位操作数(短码0~E)不能是8位操作数的前缀(即前缀不能为0~E只能是F

各条指令的操作码一定不能重复

地址指令:可以是内存单元地址,也可以是运算器中的通用寄存器。

三地址指令:(A1)  OP  (A2)->A3 :A1为被操作数地址、A2为操作数地址,A3为结果的存放地址。

二地址指令:(A1)  OP  (A2)->A1 :A1为目的操作数地址,兼做存放结果的地址;A2为源操作数地址。

一地址指令:(AC)  OP  (A1)->AC :AC累加寄存器为被操作数,A1为操作数,操作结果又放回AC中。 

一地址格式:      OP    :OP只有操作码而没有地址码

指令不需要操作数,例如停机指令。

操作数隐含约定在累加器AC中。

操作数隐含指定在堆栈中,零地址指令的操作数从堆栈中获得

简化地址结构的途径:隐含约定地址

PC代替指令中的后继指令地址

结果存放在操作数地址 

操作数或结果约定在AC中

约定所有地址的位置,如零地址指令

减少地址码字段位数的途径:

采用隐含约定地址减少地址数,减少位数

采用寄存器寻址、寄存器间接寻址,减少位数

按操作数物理位置划分指令:

存储器—存储器型指令(SS)、寄存器—存储器型指令(RS) 、寄存器—寄存器型指令(RR) 

寻址方式:寻找下一条要执行的指令的地址(指令寻址方式)或操作数的地址(数据寻址方式)。

1、指令寻址方式:顺序寻址和跳跃寻址。

       顺序寻址方式:程序启动时,由操作系统把程序的首地址放入程序计数器PC中。

                     指令在内存中是顺序存放的,当执行一段程序时,顺次执行。

       跳跃寻址方式: 是指下条指令的地址是由转移指令给出,而不是由程序计数器 PC 给出。

                      转移地址:直接寻址、间接寻址、相对寻址(寻找指令转移的有效地址)

   可以实现程序转移和公共程序调用等功能

2、数据寻址方式:地址码字段的内容(形式地址A)形成操作数有效地址EA的方式 (与存放的地方有关) 

操作数包含在指令、某个寄存器、主存中(或在堆栈中)、某个输入/输出端口中

隐含寻址:在指令中隐含约定的方式实现寻址

立即寻址:指令的地址码字段给出操作数本身 

 执行时间很短,指令和操作数同时被取出,不需要再次访问内存。一般用来提供初始值

直接寻址:操作数的有效地址[xxxxH] 便于硬件实现,但有时寻址空间受地址码字段位数的限制。

间接寻址:操作数地址的地址 由于2次访存速度慢,但能用同一条指令指向不同的主存单元。

寄存器寻址:CPU中通用寄存器的编号reg 速度快,其地址码字段比内存地址的地址码字段要短得多

寄存器间接寻址:[reg] 指定的寄存器reg中存放着操作数的有效地址,而操作数存放在内存单元中

相对寻址:程序计数器PC的内容加上指令中形式地址D 操作数地址与指令地址总是差一个固定的值

基址寻址:EA=BX+D    基址寄存器BX提供基准值是固定的;提供偏移量D是可变的。

变址寻址:EA=SI/DI+D 基址寄存器SI/DI可以修改是可变的;而指令中的形式地址提供基准值、是固定的;页面寻址:页地址存放在页寄存器中;页内地址由指令的形式地址直接提供

零页寻址:EA = 0 // A = A   当前页寻址:EA = (PC)H // A   页寄存器寻址:EA = (RP) // A

指令中给出寻址标志位加以区别,也可以采用隐含约定。n个寻址特征位能区分2^n种寻址方式。

除以上寻址方式外,还有位寻址、块寻址、段寻址、堆栈寻址等。

堆栈寻址方式:寄存器堆栈和存储器堆栈   特点是“先进后出”

寄存器堆栈:栈顶固定不动,数据串行移动 寄存器组中各寄存器之间具有对应位自动推移功能。

       当压入堆栈的数据个数超过堆栈容量时,栈底数据会被挤出堆栈而丢失。多用于控制器

存储器堆栈:数据不动,栈顶移动 为跟踪移动的栈顶, CPU中设置了一个专用寄存器SP

   需要给SP 送一个地址值,称为初始化,这个地址值就是堆栈的初始栈顶。

“自底向上”生长的堆栈:在画存储器堆栈时,地址值小的存储单元位于上面,地址值大的存储单元位于下面。在开始时,栈顶地址较大。随着压入操作的进行,栈顶地址将变小,栈顶逐渐上移。

压入时先修改堆栈指示器,后存入数据;弹出时相反,先取出数据,后修改堆栈指示器。

指令类型:

数据传送类指令:完成运算、得到处理、并获得结果(传送指令、数据交换指令、堆栈操作指令等)

算术运算类指令:加减乘除 加1、减1 算术移位、算术比较 十进制加减乘除 对矩阵求和、求积

逻辑运算类指令:与、或、非、异或 逻辑移位

输入输出类指令:

字符串操作类指令:传送、转换、比较、查找、抽取、替换等

程序控制类指令:转移指令 转子指令 软中断指令

处理机控制类指令:用于控制CPU的行为动作

特权指令:用于系统资源的分配和管理、任务的调度和管理等系统功能的实现。


其他:

CPU不能直接访问外设。在CPU和外设之间还存在一个接口,是通过这个接口实现信息交换的。

在接口中,设置有数据寄存器、命令寄存器、状态寄存器,也称为端口。通过端口地址实现访问的

I/O端口的编址

独立编址的I/O:外设端口地址与主机存储器地址无关,是另一个独立地址空间。

                             在独立编址方式下,需要使用专门的 I/O 指令(IN/OUT)。

    80x86采用独立编址方式,I/O 地址空间有64KB。

统一编址的I/O:把外设的端口和主存单元地址一样看待,统一编号

                           不需要专门的 I/O 指令,用一般的数据传送指令就能够实现 I/O 操作。 

                            PDP-11 采用统一编址方式,把高4KB主存地址作为外设地址。

通常一个外设至少有两个寄存器 数据寄存器和命令状态寄存器,可由分配给它们的地址来识别。

独立编址下,I/O指令和访存指令容易区分,外设地址线少、译码简单,主存空间不会减少;但要增加 I/O Read和I/O Write控制线。

在统一编址下,访存指令就可用于外设控制,可直接对外设寄存器进行各种运算,不需要增加新的信号线;但由于占用了主存地址,缩小了主存空间。 


转移指令:无条件转移 条件转移 循环指令

转子指令:子程序调用指令 转移地址是子程序的入口地址。

                     在执行转子指令时,机器会自动把返回地址保存在堆栈中,以备在返回时使用。

                     返回指令:子程序的最后一条指令必须是返回指令RET;

软中断指令:  INT n,软中断过程是程序切换的过程。

                         中断号的作用是用来找到中断服务程序的入口地址的。 

                         先把被中断程序的断点压入堆栈,再转向中断服务程序的入口地址,去执行中断服务程序。

                         中断返回指令IRET ,它从堆栈中取出断点,返回原程序继续执行。

处理机控制类:

对CPU状态字的某些标志位进行清除、设置、测试、修改等,达到控制CPU执行指令、或者处理事件行为的目的;例如:关中断CLI,开中断STI等;

实现CPU与外部事件的同步功能。例如,暂停HLT、等待WAIT、总线锁定LOCK、以及空操作NOP等指令。

复杂指令系统计算机:大多数计算机的指令系统多达几百条 简称CISC。

在CISC中,只有20%的指令被程序经常使用,使用频度高达80% ;

精简指令系统计算机,简称RISC: 指令种类少。所选指令都是使用频度高、易于实现的简单指令。

指令格式少。指令长度固定,指令格式减少,便于译码。

寻址方式少 访问内存的指令少。

在RISC中只有两条指令可以访问内存:取数LOAD和存数STORE。

CPU中通用寄存器多 能在一个机器周期内执行完的指令多

由于指令精简,一指多用,使得程序难以读懂。不能同CISC机器兼容,而且解决兼容的方法很麻烦

CH6 中央处理器

1.CPU的基本任务就是对这些指令流和数据流在时间与空间上实施正确的控制

运算器的组成:算术逻辑单元 累加寄存器 状态标志寄存器 数据缓冲寄存器

制器的组成:

指令部件 程序计数器 指令寄存器 指令译码器

时序部件

脉冲源 节拍信号发生器 启停控制逻辑,等

微操作信号发生器

中断控制逻辑和总线接口

从内存中取出一条指令,并指出下一条指令在内存中的位置。

对指令的操作码进行译码,并产生相应的操作控制信号。

指挥并控制CPU、内存以及输入输出设备之间的数据流动方向。

CPU中的主要寄存器:

  数据缓冲寄存器MDR:用来存放进出内存的指令和数据,是CPU和主存或外设信息传送的中转站

  指令寄存器IR:用来存放当前正在执行的一条指令

  程序计数器PC:用来存放将要执行的下一条指令的地址(从指令寄存器中获得)

  地址寄存器MAR:用来存放CPU当前所访问的主存单元的地址。

  累加寄存器AC:执行算术逻辑操作时,为ALU提供操作数以及存放运算结果

  状态标志寄存器PSW:存放由指令执行结果的状态以及机器自身的运行状态(状态标志 控制标志)

控制器的其它部件

微操作信号发生器:根据指令操作码、状态信息和时序信号,产生各种微操作的控制信号

                  以便正确地建立数据通路,从而完成取指令和执行指令的任务。

微操作控制信号:组合逻辑控制器(硬布线控制器)的组合逻辑型、微程序控制器的存储逻辑型、结合型

时序部件:由脉冲源、节拍信号发生器和启停控制逻辑构成,对各种操作实施时间上的控制。

指令周期:CPU取出并执行完一条指令的时间

指令周期通常划分为若干个CPU周期,其中CPU周期(机器周期)=主存的一个存取周期。

第一个CPU周期:取指令阶段(从内存中取出指令 对程序计数器PC+1 对指令操作码译码)

由程序计数器PC->地址寄存器MAR  PC+1->PC  MAR->ABUS->M(MAR)->MDR->IR->OP(IR)->ID

取指令事件发生在指令周期的第一个CPU周期 而取数据事件发生在指令周期的后面几个CPU周期

指令地址来源于程序计数器,而数据地址来源于地址形成部件。

代码是指令送往指令寄存器,如果取出的代码是数据送往运算器。

节拍电位:机器周期再划分为若干相等的时间段,每个时间段用一个电位信号来表示;

工作脉冲:在节拍中执行微操作,需要同步定时脉冲来配合 下降沿产生不同的节拍电位

组合逻辑控制器的时序部件:由时钟源、启停控制逻辑、CPU周期信号发生器、节拍电位信号发生器、节拍脉冲(工作脉冲)发生器等部分组成。

时钟源用来为整个机器提供频率稳定的方波时钟脉冲信号,通常由石英晶体振荡器和与非门组成的正反馈电路组成。

CPU周期信号一般设置单独的触发器表示,有几个周期就设置几个触发器。

每个CPU周期的建立信号由微操作信号发生器产生,而且在上一个CPU周期结束时,由最后一个节拍脉冲信号的下降沿建立。

节拍电位信号发生器:循环移位寄存器组成。清零信号CLR将移位寄存器清为0001

之后按照0001 0010 0100 1000 0001 … 规律性地变化,从而输出节拍电位信号:T0、T1、T2、T3 。

触发器C1、C0 构成两位循环移位寄存器。开始由清零信号 CLR将其清为00

之后在时钟跳变下00à01à11à10,译码后输出节拍脉冲P0、P1、P2、P3。

启停控制逻辑:保证时序信号必须是完整的。

时序控制方式:同步控制、异步控制、联合控制

微程序控制原理 

微命令:控制组成机器指令的微操作先后次序

存放微程序的存储器称为控制存储器ROM

由于数据通路的结构关系,微操作分为相容性和互斥性两种。

相容性微命令是指那些可以同时产生、并行执行的微命令,而互斥性微命令不能同时产生和执行的微命令

微指令包含:操作控制信息和顺序控制信息。

操作控制字段:用来发出指挥全机工作的控制信号。每1位表示1个微命令。

当某一位为 1 时,表示发出微命令,为0则不发出。

一条机器指令对应一个微程序。

微操作控制信号实际控制数据通路中的指令流和数据流的流向。控制信号的本质是按要求打开或关闭通路的控制门。

微程序控制器:控制存储器、微指令寄存器、微地址形成部件和微地址寄存器

控制存储器(CM):用来存放微程序,在CPU内部,用ROM实现。控制存储器的字长就是微指令字的长度。(控制存储器在CPU内部,不属于存储系统)。在一个微指令周期(微周期)中逐条读出并执行微指令

微指令寄存器(μIR): 用来读出来的微指令,其位数和微指令字长相等。

微地址形成部件:用来产生下一条微指令的地址,

地址:机器指令操作码、运行状态和微指令顺序控制

微地址寄存器(μMAR):存放要读取的微指令的地址,这个地址是控制存储器的单元地址。

微程序的入口地址是由机器指令的操作码生成的

一级功能转换:如果机器指令操作码字段的位数和位置固定, 可直接把操作码作为微程序入口地址的高位地址。

另外一种方法:操作码充当入口地址的低位地址

二级功能转换:不同类机器指令的操作码的位数和位置不固定时

把位数一样、位置固定的作为一类进行转移:分类转移;

第二次再用操作码对应微程序入口地址:按操作码转移。

后继微地址的形成

增量方式:用一个微程序计数器μPC来产生下一条微指令的地址。在顺序执行时,加上一个增量来产生(+1);非顺序执行时,由转移微指令产生转移微地址。

转移微指令的顺序控制字段又分为两部分:转移控制字段和转移地址字段。

若转移条件满足(转移控制字段决定)时,就把转移地址字段内容作为下一个微地址;若转移条件不满足时,则把微程序计数器的内容作为下一个微地址。

断定方式(下址字段法):不设μPC,在微指令格式中设一个下址字段(内容就是下一条微指令的微地址)

当需要转移时,就按照转移控制字段的条件测试结果修改下地址,形成转移微地址,实现转移。

转移控制位作用:设机器指令的操作码有2位,在一条微指令中,转移控制字段有2位P1P0,微地址字段有4位μMAR3、2、1、0,现规定:

 P1P0=00:顺序控制,下址字段址值 = 下一条微指令的微地址

 P1P0=01:用机器指令的操作码修改μMAR3和μMAR2

 P1P0=10:若是ADD指令,μMAR1=1;若是SUB指令,μMAR3=1 

 P1P0=11:用Z标志修改μMAR1

增量和断定结合方式:在微程序控制器中设置微程序计数器,又要在每条微指令中设置顺序控制字段。


你可能感兴趣的:(硬件)