信息技术基础 主讲:邓以克 浙江大学计算机学院
微程序控制器 微程序是实现一条机器指令功能的程序 设计思想:每条机器指令的功能都用一段对应的微程序来实现。程序由微指令组成,一条微指令含有若干条微命令,一条微命令就完成一个微操作。
微操作:控制器执行指令时,完成的最基本的不能再细分的操作。 微命令:控制器发出的指挥机器执行微操作的命令。 微指令:在一个CPU周期中,一组实现操作功能的的微命令的组合。
例如:加法指令的执行可分为:取指、计算地址、取操作数和加法运算四步,每一步都由一组微操作实现。这一组能同时执行的微操作就构成一条微指令。 不能在一条微指令中将微命令全部发完。 微程序:计算机每条指令的功能均由微指令序列解释完成,这些微指令序列的集合就叫做微程序。
将一条指令分成若干条微指令,按次序执行这些微指令,就可以实现指令的功能。 组成微指令的微操作命令就是微命令。 微命令执行的结果就是完成微操作。
微程序控制器的结构 地址译码 控制寄存器 微地址寄存器 地址转移 逻 辑 S字段 控制字段 OP 指令寄存器 … 状态条件 … 微命令信号
三、微程序控制器原理框图 微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分 .
1)控制存储器. 控制存储器用来存放实现全部指令系统的所有微程序,它是一种只读型存储器 1)控制存储器. 控制存储器用来存放实现全部指令系统的所有微程序,它是一种只读型存储器 .一旦微程序固化,机器运行时则只读不写.其工作过程是:每读出一条微指令,则执行这条微指令;接着又读出下一条微指令.又执行这一条微指令.读出一条微指令并执行微指令的时间总和称为一个微指令周期.通常,在串行方式的微程序控制器中.微指令周期就是只读存储器的工作周期 .控制存储器的字长就是微指令字的长度,其存储容量视机器指令系统而定,即取决于微程序的数量.对控制存储器的要求是读出周期要短,因此通常采用双极型半导体只读存储器.
微指令寄存器 微指令寄存器用来存放由控制存储器读出的一条微指令信息.其中微地址寄存器决定将要访问的下一条微指令的地址,而微命令寄存器则保存一条微指令的操作控制字段和判别测试字段的信息 . 3)地址转移逻辑 在一般情况下,微指令由控制存储器读出后直接给出下一条微指令的地址,通常我们简称微地址,这个微地址信息就存放在微地址寄存器中.如果微程序不出现分支,那么下一条微指令的地址就直接由微地址寄存器给出,当微程序出现分支时.意味着微程序出现条件转移 .在这种情况下,通过判别测试字段P和执行部件的“状态条件”反馈信息 .去修改微地址寄存器的内容,并按改好的内容去读下一条微指令.地址转移逻辑就承担自动完成修改微地址的任务 .
微程序设计方式:动态和静态,前者是指可以修改微指令的控制存储器的微程序设计,而后者不能修改 微程序执行过程: 1) 取出读机器指令用的微指令,送入微指令寄存器,从而取出一条机器指令 2)由机器指令操作码通过地址转移逻辑产生对应的入口地址 3)一条条取出微指令执行 4)执行完这段微程序,再返回1)
2.4 指令系统 指令:计算机执行某些操作的命令 指令系统:计算机所有指令的集合 指令的基本格式: 操作码字段 地址码字段
操作码指明了指令的操作性质及功能,地址码则给出了操作数的地址 指令的长度取决于操作码字段的长度,操作数地址的个数及长度。 若指令长度都是相等的,叫定长结构指令字,简单但不够灵活 指令的长度随功能变化,叫变长指令字,灵活但复杂
指令格式:操作码,地址码 一、操作码 固定长度操作码:便于译码,扩展性差 可变长度操作码:能缩短指令平均长度 二、地址码 零地址指令,如NOP, CLR 一地址指令,如INR R1 二地址指令,如ADD R1, R2 三地址指令,如ADD R1, R2, R3
指令扩展 前提:指令长度一定 实质:充分利用指令的各个字段 例2.17 OP A1 A2 A3
1)4位操作码0000~1110定义15条三地址指令,留下1111作为扩展窗口 2)11110000~11111110定义15条二地址指令,留下11111111作为扩展窗口 3)111111110000~111111111110定义15条一地址指令,留下111111111111作为扩展窗口 4)1111111111110000~1111111111111111定义16条零地址指令
寻址技术 寻址的目的是寻址操作数的地址,包括编址地址和寻址地址 编址方式: 1)字编址 2)字节编址 3)位编址
字编址 每执行一条指令,PC加1;从内存中读出一个数据,地址计数器加1. 优点:简单,不浪费地址信息 缺点:不支持非数值应用
字节编址: 1)若指令长度32位,则执行完一条指令,PC加4;若数据字长32位,则写完一个数据字,地址寄存器加4. 2)优点:对非数值应用支持较好 3)缺点:地址信息的浪费 位编址: 地址信息浪费更大
寻址方式 根据指令中的地址码字段寻址真是操作数地址 形式地址 实际地址
立即寻址 指令中包含的是操作数本身,取出了指令,也就取出了可以立即使用的操作数 OP 立即数
1立即寻址 指令码中直接含有所需地址的操作数 MOV A,#30H MOV DPTR,#3000H 注意:#是唯一区别与地址的标志。
直接寻址 地址码字段给出的是操作数的有效地址,即EA=A,操作数S = (A) 直接地址 操作数
2直接寻址 指令码中含有操作数的地址,机器根据地址找到操作数 MOV A,30H 注意:若直接寻址的地址是SFR中的某一个时,可用名称符号 MOV A,TH0 MOV A,8CH
寄存器直接寻址 地址码部分给出一个通用寄存器的编号,而这个指定的寄存器中存放着操作数,操作数与寄存器的关系:S = (R1) 地址码 操作数
3寄存器寻址 所需的操作数在某个工作寄存器中(R0~R7) INC R0
间接寻址 指令中给出的地址A不是操作数的地址,而是存放操作数的内存单元的地址,简称操作数地址的地址 一级间接寻址:首先按指令的地址码从内存中取出有效地址,EA=(A),然后再按此有效地址从内存中读出操作数,S = ((A)) 多级间接寻址:
寄存器间接寻址 指令中的地址码给出某一通用寄存器的编号,在被指定的寄存器中存放操作数的有效地址,而操作数放在内存中 S = ((R1)) 有效地址EA
变址寻址 就是把指令中的地址A与变址寄存器Rx的内容相加形成操作数有效地址,EA = A+(Rx) S = (A+(Rx) A 操作数 ALU Rx
基址寻址 将基址寄存器中Rb中的内容与指令中给出的位移量D相加,得到有效地址:EA = (Rb)+D S = ((Rb)+D)
相对寻址 是基址寻址的一种变种,由PC提供基准地址,指令中的地址码作为位移量D,相加后得到有效地址:EA = (PC)+D
二、操作数寻址方式 1. 隐含方式。如ADD A中的累加器 2. 立即数方式。如INT #3 3. 寄存器方式。如INC R1
二、操作数寻址方式(续) 4. 直接寻址。如INC 1000
二、操作数寻址方式(续) 5. 间接寻址。 寄存器间接如INC (R1), 存储器间接如INC (1000)
二、操作数寻址方式(续) 6. 相对寻址 如INC 8(PC)
二、操作数寻址方式(续) 7. 变址和基址寻址 如INC 8(R1) 变址寻址:便于数组访问 基址寻址:可扩大寻址范围,可实现程序浮动
二、操作数寻址方式(续) 8. 复合寻址 如INC 8(PC+R1)、INC (R1)(1000)
指令类型 1)数据传送 2)运算 3)程序控制 4)输入输出
数据传送指令 目的:将数据从源地址传送到目的地址 根据源和目的不同,分为: 1)内存单元之间的传送 mov mem2,mem1 2)内存单元传送到寄存器 即取数据 mov reg,mem
3)从寄存器到内存 即存数据 mov mem,reg 4)寄存器之间的传送 mov reg2,reg1 堆栈操作指令 3)从寄存器到内存 即存数据 mov mem,reg 4)寄存器之间的传送 mov reg2,reg1 堆栈操作指令 分为进栈和出栈两种,一般成对出现 数据交换指令 数据传送是双向的,源和目的交换位置
运算类指令 1)算术运算 2)逻辑运算 3)移位指令 分为算术移位,逻辑移位,循环移位,都可以分为左移,右移
程序控制类指令 1)转移指令 分为无条件转移,条件转移 2)子程序调用和返回指令
输入输出指令 用来实现主机与外设之间的信息交换,包括输入输出数据,主机向外设发控制命令或外设向主机报告工作状态 通常两种方式:独立编址方式和统一编址方式 独立编址使用专门的输入输出指令(IN/OUT),指令中给出外设的编号(端口地址),这些地址与内存地址无关,是独立的地址空间 统一编址就是外设和内存统一编址,不需要专门的I/O指令,就用一般的数据传送指令实现I/O操作
2.5 存储系统 三级存储系统 Cache,主存,辅存 2.5 存储系统 三级存储系统 Cache,主存,辅存 组织成两个独立的二级存储系统,一个由cache和主存组成”cache---主存“存储系统,一个”主存---辅存“存储系统, 三级存储,两级映像
存储器的分类 1)按位置: 内存 容量小,速度快 外存 容量大,速度慢 2)按材料: 磁存储器 半导体存储器 光存储器
3)按工作方式: 4)按寻址方式: 随机存储器 顺序存储器 直接存储器 读写存储器 只读存储器 光存储器 ROM PROM EPROM EEPROM 光存储器 4)按寻址方式: 随机存储器 顺序存储器 直接存储器
技术指标 1)容量 2)存取时间 3)存储周期 4)带宽
主存储器 存储字:若干位组成的二进制数作为一个整体存入或取出 存储单元:存放存储字或存储字节的内存空间 地址:存储单元的编号
图4.1 主存储器与CPU的联系
位扩展指的是用多个存储器器件对字长进行扩充。 (1) 位扩展 位扩展指的是用多个存储器器件对字长进行扩充。 位扩展的连接方式是将多片存储器的地址、片选CS、读写控制端R/W相应并联,数据端分别引出。如图4.18所示 。 (2) 字扩展 字扩展指的是增加存储器中字的数量。静态存储器进行字扩展时,将各芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。如图4.19所示 。
图4.18 位扩展连接方式
图4.19 字扩展连接方式
一个小容量存储器与CPU的连接方式如图4.20所示。 (3) 字位扩展 实际存储器往往需要字向和位向同时扩充。一个存储器的容量为M×N位,若使用L×K位存储器芯片,那么,这个存储器共需要M/L×N/K个存储器芯片。 一个小容量存储器与CPU的连接方式如图4.20所示。
图4.20 静态存储器芯片与CPU的连接
3.5 cache存储器 3.5.1 cache基本原理 1.cache的功能 cache是介于CPU和主存之间的小容量存储器,存取速度比主存快。它能高速地向CPU提供指令和数据,加快程序的执行速度。它是为了解决CPU和主存之间速度不匹配而采用的一项重要技术(图3。36) 2. cache的基本原理 CPU与cache之间的数据交换是以字为单位,而cache与主存之间的数据交换是以块为单位。一个块由若干定长字组成的。当CPU读取主存中一个字时,便发出此字的内存地址到cache和主存。此时cache控制逻辑依据地址判断此字当前是否在 cache中:若是,此字立即传送给CPU;若非,则用主存读周期把此字从主存读出送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到cache中。由始终管理cache使用情况的硬件逻辑电路来实现LRU替换算法(图3。37)
主存与cache的地址映射 cache的容量很小,它保存的内容只是主存内容的一个子集,且cache与主存的数据交换是以块为单位。 地址映射即是应用某种方法把主存地址定位到cache中。 址映射方式有全相联方式、直接方式和组相联方式三种
1.全相联映射方式 主存中一个块的地址与块的内容一起存于cache的行中,其中块地址存于cache行的标记部分中。 这种方法可使主存的一个块直接拷贝到cache中的任意一行上,非常灵活。 它的主要缺点是比较器电路难于设计和实现,因此只适合于小容量cache采用。 全相联映射的示意图演示(3.38) 2.直接映射方式 这也是一种多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。 cache的行号i和主存的块号j有如下函数关系: i=j mod m (m为cache中的总行数) 直接映射方式的示意图演示(3.39)
3.组相联映射方式 这种方式是前两种方式的折衷方案。它将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪 一行是灵活的,即有如下函数关系: m=u×v 组号 q=j mod u 组相联映射的示意图演示(3.40) 组相联映射方式中的每组行数v一般取值较小,这种规模的v路比较器容易设计和实现。而块在组中的排放又有一定的灵活性,冲突减少。
3.5.3.替换策略 对直接映射的cache来说,只要把此特定位置上的原主存块换出cache即可。 ★最不经常使用(LFU)算法 LFU算法将一段时间内 被访问次数最少的那行 数据换出。每行设置一 个计数器。从0开始计数, 每访问一次, 被访行的 计数器增1。当需要替换时, 将计数值最小的行换出,同时将这些行的计数器都清零。 这种算法将计数周期限定在对这些特定行两次替换之间的间隔时间内,不能严格反映近期访问情况。
★近期最少使用(LRU)算法 LRU算法将近期内长久未被访问过的行换出。每行也设置一个计数器,cache每命中一次,命中行计数器清零,其它各行计数器增1。当需要替换时,将计数值最大的行换出。 这种算法保护了刚拷贝到cache中的新数据行,有较高的命中率。 ★随机替换 随机替换策略从特定的行位置中随机地选取一行换出。在硬件上容易实现,且速度也比前两种策略快。 缺点是降低了命中率和cache工作效率。 3.5.4 cache的写操作策略 CPU对cache的写入更改了 cache的内容。可选用写操 作策略使cache内容和主存 内容保持一致。
★写回法 当CPU写cache命中时,只修改cache的内容,而不立即写入主存;只有当此行被换出时才写回主存。 这种方法减少了访问主存的次数,但是存在不一致性的隐患。 实现这种方法时,每个cache行必须配置一个修改位,以反映此行是否被CPU修改过。 ★全写法 当写cache命中时,cache与主存同时发生写修改,因而较好地维护了cache与主存的内容的一致性。 当写cache未命中时,直接向主存进行写入。cache中每行无需设置一个修改位以及相应的判断逻辑。 缺点是降低了cache的功效。 ★写一次法 基于写回法并结合全写法的写策略,写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存。这便于维护系统全部cache的一致性。
CACHE的基本运行原理 读过程为例 ADDR DATA MEMORY 地址总线 数据总线 比较选 一单元 译码选 一单元 CPU CACHE CONTROL 译码选 一单元 MEMORY
全相联方式 有效位 标志 主存储器 数据 数据 比较 CACHE 地址 译码 C P U
直接映射方式 有效位 CACHE 标志 主存储器 数据 数据 比较 译码 页 内 地 址 页 号 地址 译码 C P U
两路组相联方式 有效位 标志 主存储器 数据 比较 译码 CACHE 数据 地址 比较 译码 译码 C P U
图4.22 多体交叉存储
Thank You! See you next time…