Upload
carlyn
View
116
Download
5
Embed Size (px)
DESCRIPTION
第七章 微序列控制单元设计. 7.1 微序列控制器设计基础 7.2 非常简单微序列控制器的设计和实现 7.3 相对简单微序列控制器的设计和实现 7.4 减少微指令数 7.5 微程序控制和硬布线控制的比较 7.6 实例:一个(大部分是)微代码的 CPU 奔腾微处理器. 微序列控制器: 把控制信号存储在一个查找表 ROM ,即微代码存储器中。按照正确的次序访问 ROM 中的内容,查找表 ROM 就可以以适当的顺序发 出控制信号,从而实现处理器指令集中的指令 。. 几个基本概念 1. 微操作控制信号 : 如 : PCLOAD 、 ACINC - PowerPoint PPT Presentation
Citation preview
同济大学 软件学院
第七章 微序列控制单元设计
7.1 微序列控制器设计基础
7.2 非常简单微序列控制器的设计和实现
7.3 相对简单微序列控制器的设计和实现
7.4 减少微指令数
7.5 微程序控制和硬布线控制的比较
7.6 实例:一个(大部分是)微代码的CPU
奔腾微处理器
同济大学 软件学院
微序列控制器:把控制信号存储在一个查找表
ROM ,即微代码存储器中。按照正确的次序访问
ROM 中的内容,查找表 ROM 就可以以适当的顺序发
出控制信号,从而实现处理器指令集中的指令。
同济大学 软件学院
几个基本概念
1. 微操作控制信号 : 如 :PCLOAD 、 ACINC
2. 微操作:由微操作控制信号控制实现的最基本操作。
一个微操作是在一组微操作控制信号的控制下实现的。
如: AR←PC ARLOAD 、 PCBUS
3. 微指令:控制完成一组微操作的二进制编码字。
4. 微程序或微代码:一系列微指令的有序集合。
每一条机器指令对应着一段微程序,通过解释
执行这段微程序,完成指令规定的操作功能。
同济大学 软件学院
机器指令 ADD
(在主存中)
一段微程序
(在控制存储器 ROM 中)
FETCH1 ( 0) 100000000 微指令
FETCH2 ( 1) 001010000 微指令
FETCH3 ( 2) 010001000 微指令
ADD1 ( 8) 000001000 微指令
ADD2 ( 9) 000000100 微指令
同济大学 软件学院
7.1.1 微序列控制器的操作1 .典型微序列控制器的组成 ◆ 寄存器存储的值与 CPU 状态图中的一个状态相对 应,且当作地址输入到微代码存储器中。 ◆ 存储器的输出是一条微指令,即那个地址对应的 存储单元内容。所有微指令集中组成 CPU 的微代 码或微程序。 ◆ 下址产生模块产生所有可能的下一地址或下址, 然后从中选择一个正确的下址送入寄存器中。
7.1 微序列控制器设计基础
同济大学 软件学院
典型微序列控制器的组成
同济大学 软件学院
2 .微指令的组成
微指令由几个域组成,其 bit 位可分为两组。
◆ 微操作(微序列控制器的微序列部分)
或者输入到组合逻辑以生成 CPU
的控制信号,或者直接产生控制信号。
◆ 下一个地址(微序列控制器的序列控制部分)
用来产生存储到寄存器中的下一个地址, 这些位连同指令的操作码和标志值一起输入 到组合逻辑以产生下一条微指令的地址。
同济大学 软件学院
3. 微程序控制器的工作过程① 启动取指令微程序 (PC)→MAR ,读出机器指令→ IR, PC增量② 根据 IR中的操作码,通过微地址形成电路产生该指令 的微程序的起始微地址,并送入μMAR 中。 ③ μMAR 中的微地址经译码、驱动,从被选的控存单元 中取出一条微指令。④ 微指令的操作控制字段经译码或直接产生一组微操作 控制信号并送往有关的功能部件,控制其完成所规定 的微操作。
同济大学 软件学院
⑤ 微指令的地址控制字段及有关状态条件送往微地址 形成电路,产生下条微指令的地址,再去读取并执 行下条微指令。如此循环,直到一条机器指令的微 程序全部执行完毕。⑥ 一条指令的微程序执行结束,再启动取指令微指令
或微程序,读取下条机器指令。根据该指令码形成起始微地址,又转入执行它的一段微程序。
同济大学 软件学院
nn
22
n
2
n211
11
微程序指令
微程序指令
微指令
微指令完成一组微操作
)微命令、、微命令(微命令微指令
微程序指令
程序
程序、指令、微程序、微指令、微操作控制信号、微操作的关系
同济大学 软件学院
4 .下址的产生
四种常用方法:
◆ 当前地址加 1 :微代码存储器中的下一地址,
即当前地址加 1。
微代码程序在微代码存储器中顺序存放。
(提高可读性、微程序易于调试)
同济大学 软件学院
◆ 绝对地址:由微代码存储器提供。
◆ 映射逻辑
每个微序列控制器必须能够访问正确的执
行周期,这功能可用映射逻辑来实现。
(1) 已读取指令的操作码输入到一个映射硬件,
此硬件将该操作码转换或映射成该指令执行
周期的第一条微指令所在的地址;
(2) 把这一地址装载到寄存器,微序列控制器就
能转入到正确的执行过程。
同济大学 软件学院
在取指令周期的末端使用一次。
◆ 微子程序
子程序入口地址:由微代码存储器给出绝对地址。
返回地址(当前地址加 1):存储在微子程序寄存器
或硬件堆栈中,此地址
用从微子程序中返回。
同济大学 软件学院
7.1.2 微指令的格式1 .典型的微指令格式
◆ 选择域:指明下一条微指令地址的来源
◆ 地址域:指明一个绝对地址
◆ 微操作域:一个或多个
同济大学 软件学院
2 .微操作的三种编码方法
◆ 水平微代码
微指令太长,大部分微操作位不是有效的。
列出 CPU 所要执行的每一个微操作 将微指令微操作域中的一位分配给每个微操作
例如:一个 CPU需要执行 50个微操作,
它的每一条微指令的微操作域将占用 50位。
同济大学 软件学院
◆ 垂直微代码 所有微操作组合成组,组中的每个微操作 被分配一个唯一的编码值。 例如: 16个微操作 —— 四位二进制来编码
微指令位数少,但需要译码器。
◆ 控制信号的直接生成 微代码将微操作组合在一起,不同的是,它 把控制信号值直接存储在微指令中。 代码的可读性差,调试困难。
同济大学 软件学院
7.2 非常简单微序列控制器的设计和实现
采用微序列控制器重新设计第六章所讨论的非
常简单 CPU 。
指令集、有限状态机、数据通路和 ALU 单元都
是相同的, CPU 内部的数据流也没有变化,只有控
制信号的产生方法有所改变。
同济大学 软件学院
步骤 :
1. 确定基本结构
下地址来源
微代码存储器的地址宽度
2. 编写微程序
顺序控制部分:地址域、选择域
操作控制部分:微操作域
3.产生微操作控制信号
同济大学 软件学院
7.2.1 基本布局1. 非常简单微序列控制器的基本结构
同济大学 软件学院
2. 只用到两种可能的下址方式
为什么可以这样做?考虑第六章所示的该 CPU 的状态图。 ◆ 取指令周期的最后一个状态 FETCH3 可以转到 四个执行周期中的一个,这必须通过映射输 入来实现。◆ 剩余的每一状态都必须转到一个具体的次态, 可以通过绝对跳转来实现。
操作码映射 绝对跳转
同济大学 软件学院
必须确定 CPU 的几件事情:
从微代码存储器输出的绝对地址宽度有几位?
◆ CPU 的状态图中共有九种状态,每种状态代表
一条微指令,从中选择的话最少需要 4 位绝对
地址。既然映射硬件也生成同样宽度的地址,
那么输出的地址就是 4位宽度。
◆ 多路选择器输出到寄存器的输入、以及寄存器
输出到微代码存储器的输入,也都是 4位宽度。
同济大学 软件学院
7.2.2 生成正确序列并设计映射逻辑 设计控制有限状态机状态转换的微代码。1 .给有限状态机的每种状态分配一个微代码地址 着重考虑:每一执行周期的第一个状态的地址分配 (它决定了实现映射功能的逻辑) (1) 映射函数与映射逻辑 ◆ 映射函数: 1IR[1..0]0 状态 ADD1 、 AND1 、 JMP1 和 INC1 → 1000 、 1010 、 1100 和 1110 (即 8, 10 , 12 和 14 )
同济大学 软件学院
◆ 映射逻辑
同济大学 软件学院
(2) 非常简单微序列控制器的状态地址表
同济大学 软件学院
2. 生成正确的微代码序列
为了无条件转移到一种具体的状态,微序列
控制器通过地址域和选择域来提供状态的地址。
例如: FETCH1 → FETCH2
0 号单元: SEL=0 ADDR=0001 0 号单元对应于状态 FETCH1 SEL=0使微序列控制器从地址域得到它的下一地址把地址域置为 0001 ,使它转到状态 FETCH2 所对应
的单元。
同济大学 软件学院
除了 FETCH3 ,状态图中的每一种状态都可以这么设置。
FETCH3 必须映射到正确的执行周期,所以要求
SEL=1 ,表示采用映射地址。
同济大学 软件学院
同济大学 软件学院
7.2.3 用水平微代码生成微操作1 .非常简单 CPU 的微操作及它们的助记符
1 -- 微操作发生
0 -- 不发生
同济大学 软件学院
2 .非常简单微序列控制器初步的水平微代码
同济大学 软件学院
3 .非常简单微序列控制器优化后的水平微代码
优化微代码:
◆ 在所有的状态中, ARDR 和 IRDR 的值是相同的。
用一个输出 AIDR 来驱动这两个微操作。
◆ AIDR 组合了两个微操作 AR←DR[5..0]和
IR←DR[7..6]
同济大学 软件学院
同济大学 软件学院
4 .产生所需的控制信号
AR←PC ;AR←DR[5..0]
PC←PC + 1 ;PC←DR[5..0]
DR←M
IR←DR[7..6]
AC←AC +DR ;AC←AC DR∧ ;AC←AC + 1
同济大学 软件学院
7.2.4 用垂直微代码生成微操作 一、从垂直微代码中生成微操作的一般情况
在垂直微代码中,所有的微操作被分组到不
同的域中,使得任何状态一个域中最多只有一种
微操作是有效的,然后域中的每个微操作被赋予
一个唯一的域值。
例如: 8种不同的微操作 —— 3 位二进制
(从 000 到 111之间的任何一个值)
同济大学 软件学院
微操作域位从微代码存储器输出到一个译码器,译码器的输出就是在水平微代码中直接产生的微操作。
同济大学 软件学院
同济大学 软件学院
二、为非常简单 CPU 设计垂直微代码
任务:给各种微操作分配不同的域
1. 指导性原则
(1) 对于同一状态下发生的两个不同的微操作,
将它们分配到不同的域中。每个域在一个
周期中只能输出唯一一个微操作的值,如
果两个微操作要同时出现,则它们不可能
在同一个域中。
(2) 必要的话在每个域中包括一个 NOP 操作
同济大学 软件学院
(3) 分配剩下的微操作以便充分地利用微操作的
域位。 (4) 把修改相同的寄存器的微操作组合在同一
个 域中。2. 步骤 (1) 将微操作分组
◆ DRM 和 PCIN都在 FETCH2 状态下发生,那么
这两种微操作必须被分配到不同的域中。
则该 CPU 的微操作至少需要两个域,把它
同济大学 软件学院
标记为 M1和 M2 。
包括 NOP 操作在内每个域的微操作如下:
M1 M2
NOP NOP
DRM PCIN
( FETCH2: DR←M , PC←PC + 1 )
◆ PCIN 和 PCDR都能修改 PC 值,所以我们现在把 PCDR
也加到 M2中。
同济大学 软件学院
◆ 把剩下的微操作任意分配给这两个域,但要注意
把那些改变同一个寄存器值的微操作放到同一个域中。
◆ 产生如下的分配 M1 M2
NOP NOP
DRM PCIN
ACIN PCDR
PLUS ARPC
AND AIDR
同济大学 软件学院
(2) 每个域有五种微操作,因此每个域需要 3 位。(3) 对这种分配进行一些调整,减少总的位数。 ◆ AIDR : M2→M1 M2 的微操作数从 5变到 4,而 M1的从5变 到 6 。这时, M1仍需要 3 位,但是 M2 现在只 需要 2 位,微代码的宽度就减少了 1 位。 ◆ ARPC 和 PCDR : M2→M1 M1 : 8种微操作,需要 3 位 M2 :两种微操作,需要 1 位 总共 4 位(最少)
同济大学 软件学院
同济大学 软件学院
三、生成该 CPU 的最终微代码
同济大学 软件学院
四、增加硬件把这些位值转换为所代表的微操作 M1 :把这个域输入到一个 3-8 译码器中
例如:输出 2 → 微操作 ARPC M2 :只有 1 位,不需要用译码器,直接驱动 PCIN 。
同济大学 软件学院
同济大学 软件学院
实践视角:毫微指令
毫微存储器与毫微指令
同济大学 软件学院
用毫微存储器可以减少微序列控制器中存储器的
总的大小。
如果 10 种不同的微指令有完全相同的微操作,那
么所有这些微指令可以指向毫微存储器的同一个单元。
例如:一个有 128 条微指令和 32 个不同微操作的
微序列控制器。
◆ 水平微代码的微序列控制器
128*32=4,096 位存储器
同济大学 软件学院
假设:这 128 条微指令中只有 16种不同的微操作组合,
在一个 16*32 的毫微存储器中存储这 16 种模式。每条
微指令需要一个 4 位的域来指向毫微存储器中的一个
正确的模式。
◆ 毫微存储器
16*32=512 位
◆ 微代码存储器
额外的 128*4=512 位的指针
共 512 位+ 512 位 = 1,024 位
同济大学 软件学院
7.2.5 从微代码直接产生控制信号1. 直接输出控制信号
微序列控制器为每个控制信号保留一位,以
代替水平微代码设计中的微操作和垂直微代码
设计中的 M1和 M2 。 对微代码存储器的每个字来说,如果信号
有效,则相应的控制位置 1 ,否则置 0 。
同济大学 软件学院
例如: FETCH2 : DR←M 和 PC←PC+1
◆ DR←M
◆ PC←PC+1 :使 PCINC 信号有效◆ 微指令的其他信号置 0
使 READ 信号有效 以便从存储器里输出数据 使 MEMBUS 信号有效 使此数据输入到内部系统总线上 使 DRLOAD 信号有效 以便把数据从总线上装载到 DR中
同济大学 软件学院
2. 非常简单微序列控制器直接产生控制信号的微代码
同济大学 软件学院
3. 优化直接生成控制信号的微操作 DRLOAD 、 MEMBUS 和 READ 信号总有相同的值,把 这些信号组合起来。用 1 位( DMR )驱动这 3 个信号。
同济大学 软件学院
直接产生控制信号与前两种方法相比:
优点:不需要额外的硬件将微代码存储器的输出转
换成控制信号
缺点:可读性差,难于调试。
同济大学 软件学院
7.3.1 修改状态图 考虑:条件跳转的取指令周期末尾
◆ 设计两种新的状态: JMPZ1 和 JPNZ1
◆ 使 FETCH3 映射到这两个状态上
◆ 这两种状态再依据 Z的值转移到正确的流程上
7.3 相对简单微序列控制器的设计和实现 设计一个用于相对简单 CPU 的微序列控制单元。
类似非常简单 CPU ,这一设计用到的指令集、数据通
道、以及 ALU都与硬布线控制设计中的相同。
同济大学 软件学院
同济大学 软件学院
7.3.2 设计顺序硬件和微代码 1 .增加完成条件分支的能力
新增加的两个状态 JMPZ1 和 JPNZ1 能根据 Z的值
正确转移到两个下一地址之一: 条件满足: 转移到 ADDR 域所指的地址 条件不满足 : 转移到微代码存储器的下一地址
(当前地址加 1) 2 .微序列控制器的基本结构
有三种可能的下一地址。
用一个两输入控制端的多路选择器作出选择。
同济大学 软件学院
4
组合逻辑
电路
同济大学 软件学院
3 .相对简单微序列控制器的状态分配
◆ 映射函数和映射逻辑
状态图有 39种状态,要一个 6位的地址。
映射函数: IR[3..0]00
同济大学 软件学院
相对简单微序列控制器的状态分配
同济大学 软件学院
4 .下址的产生
状态 JMPZ1 和 JPNZ1各自都用到两个下址之一。
分两步实现:
(1) 用一个多路选择器选择所期望的条件
◆ Z和 Z’可能在 JMPZ1 和 JPNZ1 状态下用到,
也可以把一个硬布线的 1作为无条件跳转的
输入,多路选择器选择其中的一个值作为条
件值输出。
同济大学 软件学院
条件值
◆ 微代码存储器提供条件选择信号用来决定使
用哪个条件
同济大学 软件学院
(2) 用组合逻辑将这些条件值,连同微序列控制器提供的
一种分支类型,转换成恰当的选择信号以选择下一地
址的正确源。
◆ 给定分支类型
分支类型的形式:
IF (condition) THEN Next Address = SOURCE1
ELSE Next Address = SOURCE2
或者是
REGARDLESS OF condition Next Address = SOURCE
同济大学 软件学院
◆ 确定准确的分支类型
映射和无条件转移的处理很容易,有条件的跳转
就取决于微代码的布局。
JMPZ1 和 JPNZ1会转移到两个地址之一:
一个分支地址、当前地址加 1
一种分支类型:
IF ( condition ) THEN Next Address = ADDR
ELSE Next Address = Current Address + 1
同济大学 软件学院
同济大学 软件学院
◆ 根据分支类型和条件值,为下址多路选择器设计
出产生选择信号的逻辑。
表中列出了期望的值,它导致:
S1=BT , S0=BT’∧(条件值)
同济大学 软件学院
同济大学 软件学院
5
.实现微代码的顺序部分
同济大学 软件学院
7.3.3 用水平微代码完成设计 一、形成微操作表
考察每种状态,列出微操作。
把 22 种微操作合并为微代码的几个域,
然后为这些域赋值。
同济大学 软件学院
相对简单微序列控制器的微操作
同济大学 软件学院
二、生成CPU
的控制信号
同济大学 软件学院
同济大学 软件学院
三、相对简单 CPU 的部分控制信号值
同济大学 软件学院
介绍两种利用冗余来减少控制单元所需的微指令
数的方法。
7.4 减少微指令数
1. 用微子程序把重复的微操作合并成一个微指令块,
这个微指令块可供两个或更多个执行周期访问。
2. 用微代码的跳转来访问可供两个或多个周期共享
的微指令。
同济大学 软件学院
7.4.1 微子程序 微子程序 : 微码中供多个周期执行的一组动作序列。
优点:减少微代码所需的存储单元数量
缺点:微序列控制器的硬件必须增强以实现微子
程序的调用和返回
为了说明微子程序是怎样工作的,我们修改
相对简单 CPU 的设计。
1. 把一些状态用微子程序实现
同济大学 软件学院
考虑:状态 LDAC1 、 LDAC2 、 LDAC3 分别和状态 STAC1 、
STAC2 、 STAC3 执行相同的微操作
(从存储器获得一个 16 位的地址,并把它存入 AR中)
LDAC1 、 STAC1: DR←M , PC←PC + 1 , AR←AR+ 1
LDAC2 、 STAC2: TR←DR , DR←M , PC←PC + 1
LDAC3 、 STAC3: AR←DR , TR
同济大学 软件学院
◆ 修改最初的设计,把这些状态用一个微子程序实现。
增加两个哑状态: LDAC0 和 STAC0 当 LDAC 或 STAC 指令译码时, FETCH3 映射到这两
个状态中的一个。 两个哑状态不执行微操作,只是去调用微子程
序。 当完成时,微子程序返回到下一地址。
(包含 LDAC4 或 STAC4 的地址)
同济大学 软件学院
◆ 用微子程序修改 LDAC 和 STAC 指令的执行周期
同济大学 软件学院
◆ 相对简单 CPU修改后的状态分配
SUB1 、 SUB2 、 SUB3 分
别与 LDAC1 ( STAC1 )、
LDAC2 ( STAC2 )、
LDAC3 ( STAC3 )执行
同样的微操作。
同济大学 软件学院
2. 修改微序列控制器
微子程序的地址由微代码存储器的地址域 ADDR
输出提供。
微序列控制器必须将返回地址存储起来,一旦
微子程序结束,它才能继续执行。
进行如下修改:
◆ 增加一个微子程序寄存器以保存返回地址
(当前地址加 1)
同济大学 软件学院
4
同济大学 软件学院
◆ 修改下一地址生成硬件,把微子程序寄存器包括
进去,作为产生下一地址的一个可能的源。
◆ 修改下一地址多路选择器的选择逻辑,使之能够
考虑可能的返回地址。这个逻辑也必须产生一个控
制微子程序寄存器的装载信号。
◆ 必须扩充分支转移类型的列表,使之包括微子程
序调用和返回的类型。
◆ 必须修改微代码,使之能够正确的访问微子程序。
同济大学 软件学院
修改后的微序列控制器硬件
同济大学 软件学院
3 . 修改分支转移类型
修改后有四种分支转移类型: 条件转移 无条件映射 微子程序调用 微子程序返回
◆ 把 BT扩充为两位,以便于在四种类型中进行选择。
同济大学 软件学院
相对简单微序列控制器修改后的分支类型
同济大学 软件学院
◆ 产生下一地址多路选择器的控制信号 S1 和 S0 以及微 子程序寄存器的装载信号 L:
S1 = BT0 S2 = BT1 (BT∨ 0’∧条件值 )
L = BT1 BT∧ 0’
同济大学 软件学院
4. 修改执行周期微代码 相对简单微序列控制器修改后的微指令
0 0 0
0 0 0
同济大学 软件学院
7.4.2 微代码跳转 1. 修改状态图
无条件转移和条件转移指令有几个状态执行
同样的微操作。
修改状态图使这些指令可以直接访问相同的
状态。一个状态集将执行跳转,而另一个状态集
将处理不发生跳转的条件转移,于是这些周期将
会转移到正确的状态。
JUMP1: DR←M , AR←AR+1
JUMP2: TR←DR , DR←M
JUMP3: PC←DR , TR
JMPZ :当 Z=1 时:JMPZY1: DR←M , AR←AR + 1
JMPZY2: TR←DR , DR←M
JMPZY3: PC←DR , TR
当 Z=0 时:JMPZN1: PC←PC + 1
JMPZN2: PC←PC + 1
JPNZ 指令的状态:当 Z=0 时: JPNZY1: DR←M , AR←AR + 1
JPNZY2: TR←DR , DR←M
JPNZY3: PC←DR , TR
当 Z=1 时: JPNZN1: PC←PC + 1
JPNZN2: PC←PC + 1
同济大学 软件学院
JUMP 、 JMPZ和 JPNZ指令修改后的状态图
同济大学 软件学院
2. 相对简单微序列控制器进一步修改后的微代码
同济大学 软件学院
7.5.1 指令集的复杂性 1. 随着指令条数的增加,产生控制信号的硬件复
杂性也随之增加。
例如:越来越多的指令会导致越来越多的发出
累加器装载信号的微操作,于是就增加
了产生这一控制信号需要的逻辑。
◆ 对硬布线控制来说有更多状态要发出这些微
操作,会导致用来生成寄存器装载、加 1以
7.5 微程序控制和硬布线控制的比较
同济大学 软件学院
清除信号所需的组合逻辑的增加。
◆ 对水平型的微序列控制器来说每个微操作对应一位
微代码。使同一个微操作更加频繁地发出,这不会
改变产生实际控制信号的组合逻辑的复杂性,因为
对每个状态来说只需检查同一位。然而,拥有更多
的导致同一个寄存器装载的不同微操作,将会增加
逻辑的复杂性,因为会有更多的微代码位需要检查。
同济大学 软件学院
◆ 垂直型微序列控制器控制逻辑的复杂性也会增加。
使同一寄存器装载的数目增多的微操作,导致的是
组合起来以产生装载信号的微代码位数的增加。微
操作的个数越多,需要的译码器的个数或位数就越
多,因为译码器要把这些微操作域转变成相应的微
操作。
◆ 对于直接生成控制信号的微序列控制器来说增加的
微操作并不需要增加硬件。不管多少微操作要生成
该信号,每个控制信号只对应微代码中的一位。
同济大学 软件学院
7.5.2 修改的容易度 修改的容易度:指 CPU设计的可扩展性
◆ 硬布线控制单元需要修改硬件来扩充 CPU
◆ 微代码控制单元常常只需改变微程序
修改微代码比重新设计硬件要容易的多。
7.5.3 时钟速度 硬布线 CPU运行的速度通常比微代码控制 CPU
的要快。
同济大学 软件学院
Intel 公司的奔腾微处理器(大部分)使用的是微
代码控制。
1. 内部组成
7.6 实例:一个(大部分是)微代码的 CPU
奔腾微处理器
同济大学 软件学院
同济大学 软件学院
2. 内部存储器 8 个整数寄存器 8 个独用于浮点操作的额外寄存器 一个 32K的 Cache存储器
3. 特殊目的的功能单元 浮点单元:负责处理所有的浮点指令,它包括
专门设计用来处理浮点数的硬件。 MMX单元:处理为多媒体应用而设计的指令。
同济大学 软件学院
4. 控制单元 控制单元 指令译码 控制 ROM
5. 两个指令流水线
能同时完成两个整数操作。
部分采用特殊的、硬布线控制逻辑来控制。