现代计算机组成原理 - 华侨大学
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2 CPU中的基本部件
4.2.9 指令译码器与控制器 2.微程序控制器 (2)相容性微操作和相斥性微操作 微操作在执行部件中是最基本的操作。由于数据通路的关 系,微操作可分为相容性微操作和相斥性微操作两种。所谓相 容性微操作是指在同一个CPU 周期内可以并行执行的一组微 操作,而相斥性微操作是指不能在同一个CPU 周期内并行执 行的一组微操作。 指令是提供给程序员的基本单位,它表明计算机能完成的 一项基本功能,微指令则是为实现指令操作的一系列微命令的 组合。
4.2.9 指令译码器与控制器 2.微程序控制器
微程序控制的概念是英国科学家威尔克斯 (Wilkes)于1951 年提出的,并在剑桥大学用微程序 设计的方法设计出EDSAC-2 计算机。威尔克斯提出 的微程序控制原则是以保存在只读存储器内的专用程 序代替逻辑控制电路。这种只读存储器被称为控制存 储器,它以微程序形式保存控制信号。这种控制器就 称为微程序控制器。其主要优点是能实现灵活可变的 计算机指令系统。
图4-30微程序控制的基本原理图
微指令寄存器(μIR)是用来存放从控制存储器读出的一条 微指令信息的,此信息由下址字段和控制字段构成。下址字段 指出将要执行的下一条微指令的地址,控制字段则保存一条微 指令中的操作控制命令。
图4-30微程序控制的基本原理图
微指令地址形成部件又称微指令地址发生器,用来形成将 要执行的下一条微指令的地址(简称微地址)。一般情况下, 下一条微指令的地址由上一条微指令的下址字段直接决定。但 当微程序出现分支时,将由状态条件的反馈信息来形成转移地 址。当取指令公共操作完成后,可以用操作码来产生执行阶段 的微指令入口地址。
4.2 CPU中的基本部件
4.2.9 指令译码器与控制器 2.微程序控制器 (1)微命令,微操作,微指令和微程序 要使计算机能解决某个问题,程序员要编写相应的程序, 程序是指令的有序集合。计算机在解题过程中要运行程序, 就是通过CPU 执行程序中的各条指令来完成的。同样,CPU 在执行指令的过程中,控制器也要完成每条指令规定的各种 基本命令和基本动作。这些基本命令称为微命令,它是构成 控制信号序列的最小单位。微命令通常是指那些能直接作用 于某部件控制门的命令。例如打开或关闭某部件通路的控制 门的电位,对触发器或寄存器进行同步输入、置位和复位的 控制脉冲。而执行部件接受微命令后进行的操作称为微操作。
4.2 CPU中的基本部件
4.2.8 指令寄存器
lpm_latch0
data[7..0] gate aclr
inst19
图4-28 指令寄存器结构图
q[7..0]
图4-28 指令寄存器结构图
lpm_latch0
data[7..0] gate aclr
inst19
q[7..0]
指令寄存器同样可用LPM 库中的元件lpm_latch 锁存器来完 成。图中各信号的作用为:data[7..0]是指令数据输入端;gate 是 数据锁存控制信号,高电平时数据进入锁存器,低电平时数据 被锁存;aclr 是异步清零信号,当CPU 复位时,可用RST 复位 信号对指令寄存器清零;q[7..0]是指令数据输出端。
第4章
CPU功能模块设计
4.2 CPU中的基本部件
4.2.7 程序计数器与地址寄存器
1.程序计数器
为了保证程序按其指令序列执行下去, 必须对下一条指令进行跟踪,以便取得下一 条指令。程序计数器(PC)的功能就是用来 确定下一条指令在主存中的地址。当CPU 取得当前要执行的指令后,通过修改程序计 数器中的值来确定下一条指令在主存中的存 放地址。
4.2 CPU中的基本部件
4.2.7 程序计数器与地址寄存器
1.程序计数器 程序计数器值的修改分两种情况,一种是顺序执行指令的情况,另一 种是分支转移指令的执行情况。 当CPU 顺序执行指令时,程序计数器值的修改较为简单。即若当前取 得的指令是单字节指令,便将程序计数器的值加1(PC+1→PC);而若当 前取得的指令是双字节指令,则将程序计数器的值加2。一般而言,如果 当前取得的指令是n 字节,则将程序计数器的值加n。 在执行分支转移指令时,由分支转移指令的寻址方式确定下一条指 令在主存中的地址。若分支转移指令的寻址方式是相对寻址,于是,程序 计数器的值就修改为当前地址加上相对偏移量;若分支转移指令的寻址方 式是绝对寻址,即将转移指令中绝对转移地址送给程序计数器;而当执行 间接寻址方式的分支转移指令时,程序计数器的值从指令指定的寄存器或 主存储单元中提取。
clock
q[7..0]
OUTPUT
q[7..0]
图4-26 程序计数器结构图
lpm_counter1
up counter
d[7..0]
LOAD
CLK
inst
RST
INPUT VCC
程序计数器采用LPM 库中的元件lpm_counter 来完成,计数器 的数据宽度为8 位,其结构如图所示。 图中各信号的作用分别是:CLK 是时钟脉冲输入信号;aclr 是 计数器的异步清零端,当CPU 复位时,可用RST 复位信号对 计数器清零;LOAD 是计数器数据加载端,当发生程序转移时 ,可用它向计数器加载新的转移地址;data[7..0]是计数器的数 据输入端;q[7..0]是计数器的数据输出端。
4.2 CPU中的基本部件
4.2.7 程序计数器与地址寄存器
1.程序计数器
lpm_counter1
up counter
d[7..0]
LOAD
CLK
inst
RST
INPUT VCC
图4-26 程序计数器结构图
ac lr
INPUT VCC INPUT VCC INPUT VCC
sload data[7..0]
ac lr
INPUT VCC INPUT VCC INPUT VCC
sload data[7..0]
clock
q[7..0]
百度文库
OUTPUT
q[7..0]
4.2 CPU中的基本部件
4.2.7 程序计数器与地址寄存器 地址寄存器(AR)用来保存当前CPU 所要访问的主存 单元或I/O 端口的地址。当CPU 要对存放在主存或外围设备 的信息进行存取时,需要解决的是地址的定位问题。地址定 位是通过CPU 将地址信息传送到地址总线上,再由地址译码 电路实现。在对主存或I/O 端口内的信息存取过程中,地址 信号必须是稳定的。因此地址信息要由一个寄存器来保存, 这个寄存器就是地址寄存器。 地址寄存器采用单纯的寄存器结构。在对主存或I/O 端 口进行访问时,地址寄存器存放当前访问的地址,数据缓冲 器实现数据的缓冲。CPU 通过修改地址寄存器中的值,就可 访问不同的存储器单元及不同的I/O 端口。
地址寄存器可用LPM 库中的元件lpm_latch 锁存器来完成。 地址寄存器的数据宽度应当与程序计数器的数据宽度一致。 data[7..0]是地址寄存器的数据输入端,q[7..0]是地址寄存器的 数据输出端,gate 是地址锁存器的控制端。gate 的作用是当 锁存控制脉冲到来时,高电平时数据进入锁存器,低电平时 锁存数据,保持输出数据稳定不变。
4.2 CPU中的基本部件
4.2.9 指令译码器与控制器
3.微程序控制的基本原理
图4-30微程序控制的基本原理图
图4-30微程序控制的基本原理图 微程序控制器主要由控制存储器、微指令寄存器和微指令地址形成部件 三部分组成。控制存储器用于存放指令系统所对应的全部微程序。在硬件设 计中,为了不过大影响计算机的工作速度,要求微指令读出时间尽可能短, 包括存储微程序的存储器的读出时间短。为此对器件速度的要求比较高。事 实上,FPGA中的嵌入式阵列块EAB/M4K 是完全满足微指令高速读出要求的 (目前单字节读出速度大于300MHz),因此,完全可以选择LPM_ROM 来 构成微程序只读存储器,而其容量和字长是可随意设置的。更有利的是, LPM_ROM 可设置成在系统(In-System)编辑形式,从而可以在系统编辑和 实时调试微程序,这一优势是传统计算机设计所无法达到的!
decoder_C A B C P[1] P[2] P[3] P[4] AR LDPC
inst5
inst6
在8 位CPU 的设计中,对微指令的译码用了三个译码器, 如图所示,decoder_A、decoder _B 和decoder _C 分别用于 数据加载控制、数据输出允许控制和分支转移控制。
4.2 CPU中的基本部件
decoder_C A B C P[1] P[2] P[3] P[4] AR LDPC
inst5
inst6
图4-29 指令译码器结构图
图4-29 指令译码器结构图
decoder_A A LDRI B LDDR1 C LDDR2 LDIR LOAD LDAR
inst4
decoder_B A B C RS_B RD_B RJ_B 299_B ALU_B PC_B
2.地址寄存器
4.2 CPU中的基本部件
4.2.7 程序计数器与地址寄存器
2.地址寄存器
lpm_latch0
data[7..0] gate
inst15
图4-27 地址寄存器结构图
q[7..0]
图4-27 地址寄存器结构图
lpm_latch0
data[7..0] gate
inst15
q[7..0]
4.2 CPU中的基本部件
4.2.9 指令译码器与控制器 2.微程序控制器
微程序控制的设计思想与组合逻辑的设计思想 相比,具有规整性、灵活性和可维护性等一系列 优点,因而在计算机设计中逐渐取代了早期采用 的组合逻辑设计思想,并得到广泛的应用。在计 算机系统设计中,微程序设计技术是利用软件方 法来设计硬件的一门技术。
4.2 CPU中的基本部件
4.2.9 指令译码器与控制器 2.微程序控制器 (1)微命令,微操作,微指令和微程序 在计算机的一个CPU 周期中,一组实现一定操作功能的 微命令的组合,称为微指令。对应于程序—指令的概念,微 指令的有序集合称为微程序。一般地,一条机器指令的功能 由对应的一段微程序来实现。CPU 运行的程序存放在主存储 器中,而控制器运行的微程序存放在控制器的控制存储器中。 一条指令从取指到执行的时间称为指令周期,一条微指令从 控制存储器读取到相应的一步操作所需的时间称为一个微周 期。
4.2 CPU中的基本部件
4.2.9 指令译码器与控制器
1.指令译码器(Instruction Decoder. ID)
decoder_A A LDRI B LDDR1 C LDDR2 LDIR LOAD LDAR
inst4
decoder_B A B C RS_B RD_B RJ_B 299_B ALU_B PC_B
4.2 CPU中的基本部件
4.2.9 指令译码器与控制器
1.指令译码器(Instruction Decoder. ID)
指令译码器又称为操作码译码器,它是分析 指令的部件,对现行指令进行分析。译码器的 输出产生相应的操作控制信号,提供给微操作 信号发生器。译码器是典型的多选一译码电 路,即同一时刻与输入信息某一编码相对应的 输出端产生有效的控制电平,其他输出端不起 作用。
ac lr
INPUT VCC INPUT VCC INPUT VCC
sload data[7..0]
clock
q[7..0]
OUTPUT
q[7..0]
图4-26 程序计数器结构图
lpm_counter1
up counter
d[7..0]
LOAD
CLK
inst
RST
INPUT VCC
在图中,程序计数器可以有三种工作状态: (1)当CPU 复位时,复位信号RST 可以使程序计数器清零。 (2)正常情况下,从程序存储器读取一个字节后,程序计数 器在CLK 脉冲信号作用下自动加1。 (3)当发生程序转移时,在LOAD 信号的作用下,从d[7..0] 向程序计数器装载新的计数器初值,进行程序转移。
4.2 CPU中的基本部件
4.2.8 指令寄存器 当CPU 从主存取指令时,取得的指令经缓冲寄存器转送 给指令寄存器(IR)。因此,指令寄存器用来保存当前CPU 正在执行的一条指令。 一条指令由地址码和操作码两部分组成。为了执行特定 的指令,必须先确定该指令的操作性质,即先要对指令中的 操作码进行译码。译码的任务由指令译码器完成。因此,指 令寄存器的入口是缓冲寄存器,操作码部分的出口是指令译 码器,地址码部分的出口是程序计数器或地址寄存器。