1.31k likes | 1.54k Views
第六章 CPU 设计. 6.1 CPU 的功能和组成 6.2 一个非常简单 CPU 的设计与实现 6.3 相对简单 CPU 的设计和实现 6.4 简单 CPU 的缺点 6.5 实例: 8085 微处理器的内部结构. 同济大学 软件学院. 6.1 CPU 的功能和组成. 6.1.1 CPU 的功能 CPU 有四个方面的功能: 1. 指令控制: 程序的顺序控制。 2. 操作控制: CPU 管理并产生由内存取出的每条指令 的操作信号,把各种操作信号送往相应的部件,控 制部件工作。
E N D
第六章 CPU设计 6.1 CPU的功能和组成 6.2 一个非常简单CPU的设计与实现 6.3 相对简单CPU的设计和实现 6.4 简单CPU的缺点 6.5 实例:8085微处理器的内部结构 同济大学 软件学院
6.1 CPU的功能和组成 6.1.1CPU的功能 CPU有四个方面的功能: 1.指令控制:程序的顺序控制。 2.操作控制:CPU管理并产生由内存取出的每条指令 的操作信号,把各种操作信号送往相应的部件,控 制部件工作。 3.时间控制:对各种操作实施时间上的控制。 4.数据加工:对数据进行算术运算和逻辑运算。
6.1.2CPU的基本组成 CPU控制整个计算机,内部有三大部分: 寄存器部分、算术/逻辑单元(ALU)、控制单元
1. 寄存器部分 除处理器指令集结构中的寄存器外,还有程序 员不能直接访问的一些寄存器。CPU取指令过程的两个重要寄存器: ◆ 程序计数器:用来存放下一条要取的指令的地址。 ◆ 指令寄存器:用来存储计算机正在执行的指令。 用来访问内存、外设的两个寄存器: ◆地址寄存器MAR ◆数据缓冲寄存器MDR
2. 算术/逻辑单元执行大部分的算术和逻辑运算。 如:加、与等操作。 3. 控制单元 ◆计算机的指挥和控制中心,由它把计算机的运算器、存储器、I/O设备等联系成一个有机的系统,并根据各部件具体要求,适时地发出各种控制命令,控制计算机各部件自动、协调地进行工作。 ◆功能:根据事先编好并存放在存储器中的解题程序,控制各部件有条不紊地、自动协调地进行工作。
转移地址 指令 IR PC 操作码 地址码 程序计数器 运 算 器 +1 reset 地址码 指令译码器 启停线路 CLK 时序控制 信号形成部件 状态寄存器 脉冲源 操作数 地址 数据 数据总线 DB 地址总线 AB 控制总线 CB I / O 存储器 控制器的基本组成
◆控制器的基本组成 (1) 程序计数器(PC) 指令地址寄存器,用来存放即将要执行的下一条 指令地址。具有加 “1”和接收转移地址的功能。 (2) 指令寄存器(IR) 用来存放当前正在执行的指令。 (3) 指令译码器或操作码译码器 对IR中的操作码进行分析解释,产生相应的控制信号。
(4) 脉冲源及启停线路 脉冲源产生一定频率的脉冲信号作为整个 机器的时钟脉冲,是机器周期和工作脉冲的基 准信号。 启停线路控制时序信号的发生或停止,从而 启动机器工作或使之停机。 (5) 时序控制信号形成部件 根据当前指令的需要,产生相应的时序控制 信号,并根据被控功能部件的反馈信号调整时序 控制信号。
6.1.3 指令周期 1.指令周期 处理器取出并执行一条指令的时间。 2.指令执行的基本步骤 包括读取,译码,执行三个阶段。 ◆ 读取指令 根据程序计数器PC提供的内容,从存储器中 取出指令。 ◆ 译码 分析指令的操作码,确定处理的是哪一条指 令以便选择正确的操作顺序去执行该指令。
◆ 执行指令 根据指令功能,完成所规定的操作。指令不 同,所执行的操作及顺序也不相同。 3. 举例例1:分析单总线结构的CPU中,指令 ADD R0,(R1)的指 令流程。设前一操作数地址为目的,后一操作数地 址为源。 解: 指令功能: ((R1))+ ( R0)→R0
((R1))+ ( R0)→R0 指令流程如下: (1) (PC)→MAR,Read (2) (PC)+1→PC (3) M→MDR→IR (4)(R1)→MAR,Read (5) M→MDR→Y (6)(Y)+(R0)→Z (7)(Z)→R0 +1
习题:分析转移指令 JC D的指令流程。 指令功能: IF C=1 THEN (PC)+D→PC 解:指令流程如下: (1)(PC)→MAR,Read ;送指令地址,读主存 (2) (PC)+1 →PC ;PC+1→PC (3) M→MDR→IR ;取指令到IR (4) IF C=1 THEN(PC)→Y;送当前指令地址 (5) Y+IR(D部分)→Z ;计算转移地址 (6)(Z)→PC ;下条指令实现转移
例2:分析双总线结构的CPU中,指令 ADD R0,(R1)的指令流程和控制信号。 设ALU的功能有: F=A+B(ADD),F=A-B(SUB),F=A+1(INC),F=A-1(DEC),F=A 可通过总线连接器G将总线B的信息直接传到F总线。其控制信号为Gon。
F ID B IR→B F→IR IR F→PC PC→B F→MAR PC MAR F→R0 R0→B R0 ABUS F→R! R1→B R1 主存 Read … F→R7 R7→B Write R7 DBUS MAR→B F→MDR MDR TEMP→B F→TEMP TEMP ADD R0,(R1) F→Y Y B A ADD SUB INC DEC Gon G
指令流程如下: • (PC)→MAR,Read ; PC→B,Gon,F→MAR, • Read • (2) (PC)+1→PC ; INC • (3) M→MDR→IR ; MDR→B,Gon,F→IR • (4)(R1)→MAR,Read ; R1→B,Gon,F→MAR, • Read • (5) M→MDR→Y ; MDR→B,Gon,F→Y • (6)(Y)+(R0)→R0 ; R0→B,ADD,F→R0
例3:分析双总线结构的CPU中,指令 ADD X(R1),(R2)+的指令流程和控制信号。 设ALU的功能有: F=A+B(ADD),F=A-B(SUB),F=A+1(INC),F=A-1(DEC),F=A 可通过总线连接器G将总线B的信息直接传到F总线。其控制信号为Gon。 其中:X在本条指令的下一个存储单元 源操作数有效地址:X+(R1) 目的操作数地址:(R2),然后(R2)+1 →R2
6.1.4 控制器的时序系统 如何在时间上对各种微操作信号加以控制。 1.指令周期与机器周期 ◆指令周期:从取指令、分析指令到执行完一条指令所需的全部时间。 由于各种指令的操作功能不同,繁简程度不同,因此各种指令的指令周期也不尽相同。 ◆机器周期(CPU周期):指令周期中的某一工作阶段所需的时间。 在指令执行过程中,各机器周期相对独立。
◆一条指令的指令周期由若干个机器周期所组成,每个机器周期完成一个基本操作。所以机器周期也称为基本周期。 CPU周期 CPU周期 CPU周期 指令周期
2.节拍 节拍:把一个机器周期等分成若干个时间区间,每一时间区间称为一个节拍。一个节拍对应一个电位信号,控制一个或几个微操作的执行。
6.1.5 CPU的设计规范 CPU设计的两种方法: ◆ 硬布线逻辑控制(hardwired control) ◆微序列控制器(microsequencer) (微序列控制或微程序控制)
1.设计CPU的步骤 ◆确定它的用途 关键:使CPU的处理能力和它所执行的任务匹配 ◆设计指令集结构 ◆设计状态图(CPU就是一个复杂的有限状态机) • 列出在每个状态中执行的微操作 • 从一个状态转移到另外一个状态的条件 ◆设计必要的数据通路和控制逻辑,实现这个 有限状态机,最终实现这个CPU。
数据通路:信息传送的基本路径。 CPU内部的数据通路通常是指运算器与寄存器之间的信息传输通道。 数据通路结构直接影响着CPU内各种信息的传送路径。数据通路不同,指令执行过程的微操作序列的安排也不同,它将直接影响到微操作信号形成部件的设计。
2.CPU执行如下的操作序列 ◆ 取指令周期:从存储器中取出一条指令,然后 转到译码周期。 ◆译码周期:对该指令进行译码,即确定取到的 是哪一种指令,然后转移到这种指 令对应的执行周期。 ◆ 执行周期:执行该指令,然后转移到取指令周 期去取下一条指令。 3.一般CPU状态图
6.2 一个非常简单CPU的设计与实现 6.2.1 非常简单CPU的设计规范 1.64字节的存储空间,每个字节是8位。 6位宽的地址:A[5..0] 存储器的8位值:D[7..0] 2.一个程序员可以访问的寄存器AC(8位累加器) 3.指令集(4条指令)
指令 指令码 操 作 ADD 00AAAAAA AC←AC+M[AAAAAA] AND 01AAAAAA AC←AC∧M[AAAAAA] JMP 10AAAAAA GOTO AAAAAA INC 11XXXXXX AC←AC+1
4.寄存器 ◆ 一个6位的地址寄存器AR:它通过A[5..0]向存储 器提供地址。 ◆ 一个6位的程序计数器PC:它包含下一条将被执 行指令的地址。 ◆ 一个8位的数据寄存器DR:它通过D[5..0]从存储 器接收指令和数据。 ◆ 一个2位的指令寄存器IR:它用来存放从存储器中 取回的指令的操作码部分。
6.2.2 从存储器中取指令 一、从存储器中取出指令的操作序列 1. 将地址放在地址引脚A[5..0]上,把地址送给 存储器。 2. 在给存储器足够的时间处理内部译码并将需 要的指令取出来之后,向存储器发一个信号, 使存储器将此指令输出到它的输出引脚,这些 引脚与CPU的D[7..0]相连接。CPU从这些引脚 读入数据。
二、取指令周期的状态 FETCH1: AR←PC FETCH2: DR←M,PC←PC+1 FETCH3: IR←DR[7..6],AR←DR[5..0] ◆实现PC加1的两种方案 • 在取指令周期(易与实现) • 在执行周期
6.2.3 指令译码 ◆ 当CPU把一条指令从存储器中取出来之后,它 必须判断所取的是哪种指令,从而可以调用正 确的执行周期。 ◆ 在状态图中,此过程表示为一系列的从取指令 周期结束到各个执行周期之间的分支。 ◆ 对于本CPU,有四条指令,因此有四个不同的 执行周期。 ◆ 取指令和译码周期的状态图
6.2.4 指令执行 6.2.4.1 ADD指令 CPU必须完成两件事情: ◆从存储器中取出一个操作数 ◆将这个操作数和累加器中的值相加,并把结 果存回到累加器中。 ADD1: DR←M ADD2: AC←AC+DR
6.2.4.2 AND指令 AND1: DR←M AND2: AC←AC∧DR 6.2.4.3 JMP指令 JMP1: PC←DR[5..0] 另外一种选择:PC←AR 6.2.4.4 INC指令 INC1: AC←AC+1
6.2.5 建立所需的数据通路 考察存在哪些数据传送从而设计CPU的内部数据通路。 一、与CPU的每个状态相关联的操作 FETCH1: AR←PC FETCH2: DR←M,PC←PC+1 FETCH3: IR←DR[7..6],AR←DR[5..0] ADD1: DR←M ADD2: AC←AC+DR AND1: DR←M AND2: AC←AC∧DR JMP1: PC←DR[5..0] INC1: AC←AC+1
二、设计数据通路的两种不同方案 1.在所有需要传送数据的部件之间创建一条直接通路。 使用多路选择器或者缓冲器为那些有多个数据 源的寄存器从多个可能的输入中选择一个。 随着CPU复杂度的增加,这种方案将变得不现实。 2.在CPU的内部创建一条总线。在各个部件之间使用总 线传递数据。
三、设计数据通路 第一步:把每个部件都连接到系统总线上 第二步:决定每个部件应该完成的功能 1.将操作重新分组 分组的依据:他们所修改的寄存器。 AR: AR←PC;AR←DR[5..0] PC: PC←PC+1;PC←DR[5..0] DR: DR←M IR: IR←DR[7..6] AC: AC←AC+DR;AC←AC∧DR;AC←AC+1
2. 对每一个操作进行分析从而决定每个部件应该完 成的功能 (1)AR,DR以及IR总是从其它一些部件中装入数据 (2)PC和AC能够从其它一些部件中装入数据,但它们 还要能够自增他们的当前值。 ◆创建一个单独的硬件用来使这两个寄存器的 当前值加1,并且使结果能够重新装入寄存器; ◆把每个寄存器设计为一个计数器而且能够并 行的装载。
第三步:修改设计 1. AR仅仅向存储器提供数据,除此之外不跟任何部件 传送数据。因此,没有必要将它的输出连接到内部总 线上。 2. IR不通过内部总线向任何其他部件提供数据,所以 IR 的输出到内部总线的连接可以删除。 3. AC不向其他任何单元提供数据;因此与内部总线的 连接也可以删除。 4.总线是8位宽,但是并非所有被传送的数据都是8位宽; 有一些是6位宽,有一个是2位宽。
5.AC必须能够装载AC和DR的和,以及AC和DR的逻 辑与的结果。CPU必须包含一个能够产生这些结 果的ALU。 第四步:修改后的CPU内部组织结构 (图中的控制信号将会由控制单元来产生) 第五步:必须保证在同一个状态将要发生的传送能够 事实上同时发生 FETCH2: DR←M,PC←PC+1 FETCH3: IR←DR[7..6],AR←DR[5..0]
AR:AR←PC;AR←DR[5..0] PC:PC←PC+1;PC←DR[5..0] DR:DR←M IR: IR←DR[7..6] AC:AC←ACDR AC←AC∧DR AC←AC+1
6.2.6 非常简单ALU的设计 1.ALU完成两个功能 ◆将两个输入相加 ◆将两个输入相与 2.设计方法 ◆创建两个单独的硬件来实现每个功能 加法:用标准的8位并行加法器 逻辑与:用8个2位与门 ◆使用一个多路选择器从两个结果中选择一 个输出 3.电路图
6.2.7 用硬布线逻辑设计控制单元 控制单元:产生控制信号,从而使所有的操作能 以正确的顺序执行。 设计控制单元有两种主要的方法: ◆硬布线控制:使用时序逻辑和组合逻辑产生控制信号。 ◆微程序控制(或微序列控制):使用存储器查表方式 来输出控制信号。 本章重点:硬布线控制方法
◆ 简单的控制单元包括三个部分 • 一个计数器:保存当前状态 • 一个译码器:接受当前状态并为每个状态生成单 独的信号 • 一些组合逻辑:接受单独的状态信号为每一部件 生成控制信号,以及计数器的 控制信号。 ◆一般硬布线控制单元
◆对于本CPU,总共有9个状态。因此,需要一个4位◆对于本CPU,总共有9个状态。因此,需要一个4位 的计数器和一个4-16位的译码器。译码器的输出位 中有7个用不到。