2.37k likes | 2.48k Views
第 4 章. 指令、指令系统和控制器部件. 控制器的作用: 向整机每个部件(包括控制器本身)提供协同运行所需的控制信号 计算机最本质的功能 : 连续执行指令,而每一条指令往往分成几个步骤来完成。. 控制器的基本功能 : 依据当前正在执行的指令和它所处的执行步骤,形成并提供在这一时刻整机各部件要用到的控制信号。 执行一条指令要经过读取指令、分析指令、执行指令三个阶段,控制器要保证按程序设定的指令运行次序,自动地连续执行指令序列。. 控制器的组成:
E N D
第4章 指令、指令系统和控制器部件
控制器的作用: 向整机每个部件(包括控制器本身)提供协同运行所需的控制信号 计算机最本质的功能 : 连续执行指令,而每一条指令往往分成几个步骤来完成。
控制器的基本功能 : 依据当前正在执行的指令和它所处的执行步骤,形成并提供在这一时刻整机各部件要用到的控制信号。 执行一条指令要经过读取指令、分析指令、执行指令三个阶段,控制器要保证按程序设定的指令运行次序,自动地连续执行指令序列。
控制器的组成: ① 程序计数器PC 提供指令在内存中的地址,并接受下一条要执行的指令的地址。 ② 指令寄存器IR 保存指令本身的信息。 ③ 脉冲源和启停控制逻辑、步骤标记线路 给出每条指令的各执行步骤的相对次序关系 ④ 控制信号产生部件 提供在指令执行各步骤,当前各部件要用到的控制信号 微程序控制器 控制器的分类 组合逻辑控制器(硬布线控制器) 控制器组成及其在整机中的地位(见下页)
主振 微程序 方案的 控制器 控制条件 控制 存储器 映射 下地址 IR PC …. 启停 微指令寄存器 数据总线 控制总线 地址寄存器 地址总线 输出 设备 输入 设备 主 存 运算器 部件
主振 硬布线 方案的 控制器 控制条件 时序控制 信号 形成部件 译码 时序 IR PC …. 启停 控制器信号 数据总线 控制总线 地址寄存器 地址总线 输出 设备 输入 设备 主 存 运算器 部件
计算机系统 4.1 指令格式和指令系统概述 CPU 硬件 主存 输入/输出设备 系统软件 软件 用户程序软件 指令代码(机器指令)—— 计算机能直接识别和运行的软件程序 计算机指令—— 是用户使用计算机与计算机运行的最小功能单位。是一台 计算机支持的全部指令构成该机的指令系统。 指令系统直接与计算机的性能和硬件结构的复杂程度密切 相关。
设计与评价指令系统应考虑的方面: (1)指令系统的完备性,常用指令齐全,编程方便; (2)指令系统的高效性,指令占用内存空间少,运 行速度快; (3)指令系统的规整性,指令和数据使用规则统一 简单,易学易记; (4)指令系统的兼容性,同一系列低档计算机的程序能 在高档机上直接运行。
2000年7月试题 二、1.在设计指令系统时,通常应从哪4个方面考虑? 答:(1)指令系统的完备性,常用指令齐全,编程方便; (2)指令系统的高效性,程序占用内存空间少,运行速度快。 (3)指令系统的规整性,指令和数据使用规则统一简化,易学易记; (4)指令系统的兼容性,同一系列的低档计算机的程序能放到新的高档机上直接运行。
指令格式 操作码:指明本条指令的操作功能。 例如:算术加运算,算术减运算 逻辑与运算,逻辑或运算 读内存,写内存 程序转移,子程序调用和返回 地址码:指明被操作的信息(指令数据)的地址 包括:操作数的地址,运算结果的保存地址 程序的转移地址,子程序的入口地址
4.1.1 操作码的组织与编码 三种编码方案: (1)定长的操作码 (2)变长的操作码 (3)操作码与操作数地址交叉
(1)定长的操作码 用指令高位部分表示操作码 例如8位,可有256个编码状态,表示256条指令 应用于字长位数多的计算机 优点:简化计算机的硬件设计,提高指令译码和识别速度
(2)变长的操作码 不同的指令操作码长度不同 对常用的、操作码地址位数多的指令,操作码位数少; 对操作码位数少的指令,操作码的位数可多;无操作数指令,整个指令字均用作操作码,可表示较多的指令条数。 应用于字长短的计算机。
(3)操作码与操作数地址交叉 操作码与操作数地址有所交叉, 不很常用
作业2.1.一条指令通常由哪两部分组成?指令的操作码一般有哪几种组织形式?各自应用在什么场合?各自的优点是什么?作业2.1.一条指令通常由哪两部分组成?指令的操作码一般有哪几种组织形式?各自应用在什么场合?各自的优点是什么? 答:一条指令通常由操作码和操作数地址组成。 指令的操作码组织形式有定长操作码、变长的操作码和操作码字段与操作数地址交叉的形式。 定长操作码应用于字位数长的计算机。优点是利于简化计算机的硬件设计,提高指令译码和识别的速度。缺点是会使操作数的地址不足。 变长操作码应用于字位数短的计算机。优点是可给操作数地址留给更多的位数,对操作数位数要求较少的指令分配多几位操作码,既能表示出比较多的指令条数,又能尽量满足给出相应的操作数地址要求。 操作码字段与操作数地址交叉的形式比较特殊,不很常用。特点是操作码与表示操作数地址的一些字段交叉。
4.1.2. 操作数的个数、来源、去向和地址安排 1. 操作数的个数 (1)无操作数指令 (2)单操作数指令 (3)双操作数指令 (4)多操作数指令
(1)无操作数指令 用于: 不涉及操作数的地址。如停机指令,空操作指令,关中断指令;或 约定了操作数的指令。 (2)单操作数指令 用于: 只用一个操作数的指令,如寄存器内容加1,减1 ; 约定了某个操作数的指令。如读外设指令,写外设指令。 约定目的操作数的指令。例如加、减运算指令约定被加数、被减数在累加器。
(3)双操作数指令 用于算术运算和逻辑运算指令。给出目的操作数和源操作数的地址。目的操作数还保存运算结果。 (4)多操作数指令(如3个操作数) 分别给出目的操作数、源操作数和运算结果的地址。
2.操作数的来源、去向和地址安排 ① 通用寄存器 指令中给出寄存器编号(寄存器名), 通用寄存器的的数量一般为几个、十几个,为其分配2、3、4、5位表示一个寄存器。寄存器的内容可以是数据,也可以是操作数的地址。 ② 外设接口中的一个寄存器 用外设编号或I/O端口地址表示,因为外设接口较少,可以在一个指令中直接给出地址。 ③ 内存中的一个存储单元 指令给出存储单元地址,在指令中操作数地址字段给出。
4.1.3 指令的分类 按指令完成的功能进行分类 (1)算术和逻辑运算指令 (2)移位操作命令 (3)数据传送指令 (4)转移指令、子程序调用与返回指令 (5)特权指令 (6)其它指令
(1)算术和逻辑运算指令 给出算术和逻辑运算的结果,以及结果的有关特征。 (2)移位操作命令 包括算术移位、逻辑移位、循环移位。 (3)数据传送指令 用于实现通用寄存器之间、通用寄存器与内存单元之间、内存不同存储单元之间、通用寄存器与外设接口之间的数据传送功能
(4)转移指令、子程序调用与返回指令 用于改变程序中指令的执行次序 无条件转移指令 转移指令 条件转移指令 无条件转移指令——必定执行转移 条件转移指令——根据程序状态字中的C、Z、V、S的值转移到指定地址
子程序调用与返回指令 转入子程序段执行指令,其最后一条指令必定是返回指令, 程序运行结束后,返回到调用指令之后的那条指令继续执行。 一般的转移指令不存在再次转移回来的问题。 (5)特权指令 用于操作系统或其它系统软件的指令,不提供给用户使用 (6)其它指令 如:动态停机指令, 空操作指令, 开中断指令 关中断指令, 堆栈操作指令 用于完成某些特定的处理功能
作业2.4. 为读写输入/输出设备,通常有哪几种常用的方式用以指定被读写的设备? 可以在指令字中用设备编号或设备入出口地址或设备映像地址(与内存地址统一编址的一个设备地址编号)来指定被读写的设备。设备编号或设备入出口地址位数较少,可以在第一个指令字直接给出;设备映像地址的处理方案与处理一个内存单元地址的办法相同。
作业2.5. CISC(复杂指令系统计算机)和RISC(精简指令系统计算机)计算机的指令系统的区别表现在哪里?它们各自追求的目标是什么? 答:CISC(复杂指令系统计算机)和RISC(精简指令系统计算机)计算机的指令系统的区别表现在指令系统的复杂程度。前者追求计算机指令系统的完备,指令条数多,寻址方式多样化,能直接处理的数据类型多,能方便编程且能编出功能强的程序。后者追求精简的指令系统,采用定长指令,有固定字长,简单的编址、寻址方式,简单而统一的指令译码,多数指令在单周期内完成等技术。
4.2 寻址方式概述与应用实例 寻址方式是指如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址。 形成地址——表示在指令中的操作数地址; 物理(有效)地址——操作数在存储器中的存储单元地址。
八种寻址方式: (1) 立即数寻址 (2) 直接寻址 (3) 寄存器寻址、寄存器间接寻址 (4) 变址寻址 (5) 相对寻址 (6) 基地址寻址 (7) 间接寻址 (8) 堆栈寻址
操作码 操作码 Ri Ri 立即数 1. 立即数寻址 操作数直接给出在指令字中,即指令字中直接给出的不是操作数地址,而是操作数本身。 主要用法:把一个确定的数据传送到一个通用寄存器中。 单指令字: 双指令字: 立即数
操作码 操作码 Ri Ri 直接地址 直接地址 2. 直接寻址 在指令的操作码地址字段直接给出操作数在存储器中的地址 单字指令 双指令字
(3)寄存器寻址、寄存器间接寻址 寄存器寻址 寄存器中存放操作数,指令中给出寄存器编号(名字、地址),寄存器寻址在指令中占用位数少,有利于缩短指令字长度,取数、保存结果迅速方便,是最基本、最简单的寻址方式。
存储器 操作数 操作码 Ri 操作数的地址 通用寄存器 寄存器间接寻址 寄存器中存放操作数的地址,根据该地址去读写存储器,形式地址为寄存器编号(名字)
操作码 Ri 变址偏移量 存储器 操作数 变址寄存器 通用寄存器 (4)变址寻址 形式地址为寄存器名(编号)和变址偏移量,两者之和为操作数地址,用于读写存储器。
操作码 变址偏移量 存储器 操作数或指令 相加 程序计数器PC (5)相对寻址 形式地址为相对寻址偏移量,该数值与程序计数器PC的内容相加,得到操作数的地址转移指令的转移地址。所用寄存器为PC,无需在指令中指定,相对地址偏移量可正可负。
(6)基地址寻址 把程序中所用的地址与一个特定的寄存器(称为基地址寄存器)的内容相加作为操作数的地址或指令的地址。 与变址寻址、相对寻址形式上有某些类似之处。主要用于为多道程序或浮动地址程序定位存储空间。 基地址寄存器中的值是由系统程序用特权指令设定的,用户不能在自己的程序中对其进行修改。
操作码 地址字段 存储器 操作数地址 操作数 (7)间接寻址 形式地址是操作数(或指令)地址的地址。 读写数据需两次访问存储器。
(8)堆栈寻址 堆栈——是存储器中一块特定的按“后进先出”原则管理的 存储区,该存储区被读写单元的地址(称为“栈顶”)由一个特 定的寄存器(称为“堆栈指针”)SP给出的。或者说,SP总是指 向栈顶。 存储器 栈顶 堆栈 ×× SP ×× 已入栈 的数据 ×× ××
堆栈寻址,通常在形式中给出入栈数据所在的寄存器名(或编号)或接收出栈数据的寄存器名(或编号)。指令中不直接给出内存地址,而默认堆栈指针的内容为存储器的地址。读写堆栈总是伴随修改堆栈指针的操作。堆栈寻址,通常在形式中给出入栈数据所在的寄存器名(或编号)或接收出栈数据的寄存器名(或编号)。指令中不直接给出内存地址,而默认堆栈指针的内容为存储器的地址。读写堆栈总是伴随修改堆栈指针的操作。 数据入栈时,先执行 SP←SP—1 的操作,使堆栈指针指向一个空的存储单元,然后再压入数据。 数据出栈时,先将栈顶数据弹出到指定的寄存器,然后执行 SP ←SP+1,使堆栈指针SP指向新的栈顶。
作业2.2 计算机指令中要用到的操作数一般可来自哪些部件?如何在指令中表示这些操作数的地址?通常使用哪些寻址方式? 答:计算机指令中要用到的操作数一般可来自:①CPU内部的通用寄存器,应在字中给出用的的寄存器编号(寄存器名);②外围设备(接口)中的一个寄存器,通常在指令字中用设备编号设备入出端口地址来表示;③内存储器的一个单元,应在指令字中给出该存储单元的地址。 通常使用立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、基地址寻址、间接寻址和堆栈寻址等寻址方式。
作业2.3.什么是形式地址?简述对变址寻址、相对寻址、基地址寻址应在指令中给出什么信息?如何得到相应的实际(有效)地址?各自有什么样的主要用法?作业2.3.什么是形式地址?简述对变址寻址、相对寻址、基地址寻址应在指令中给出什么信息?如何得到相应的实际(有效)地址?各自有什么样的主要用法? 答:表示在指令中的操作数地址通常称为形式地址。 变址寻址应在指令中给出个数值(变址偏移量)与指定的一个寄存器(变址寄存器)编号(寄存器名)。把变址寄存器中的内容与变址偏移值相加得到相应的实际地址(操作数地址)。其主要用法是将变址偏移量作为基准地址,变址寄存器的内容作为修改量,通过修改寄存器的内容可以访问数组、表格、字符串等中的不同元素。
相对寻址应在指令中给出一个数值(相对地址偏移量)。相对地址偏移量与程序计数器PC内容相加之和即为相应的实际地址(操作数地址或转移指令的地址)。其主要用法是用作程序转移。相对寻址应在指令中给出一个数值(相对地址偏移量)。相对地址偏移量与程序计数器PC内容相加之和即为相应的实际地址(操作数地址或转移指令的地址)。其主要用法是用作程序转移。 基地址寻址应在指令中给出一个寄存器(基地址寄存器)。基地址寄存器的内容与程序中所用到的地址相加之和即为相应的实际地址(操作数的地址或指令的地址)。其主要用法是为多道程序或浮动地址程序定位存储器空间。
2001年7月试题 二、2 在计算机硬件系统中,在指令的操作数字段中所表示的内存地址被称为( ),用它计算出来的送到内存用以访问一个存储器单元的地址被称为( )。 A. 有效地址 B.内存地址 C.形式地址 D.文件地址 E.物理地址 F.逻辑地址 H.指令地址 I.指令地址 J.CACHE地址 答案:C A
模拟试题 二、2 (试题五 二、1) (8分) 举例说明计算机中常用的四种寻址方式(寄存器寻址,寄存器间接寻址,变址寻址,堆栈寻址),从形式地址到得到操作数的寻址处理过程。 答案: (1)寄存器寻址,形式地址为寄存器名(或编号),寄存器中的内容为操作数; (2)寄存器间接寻址,形式地址为寄存器名(或编号),寄存器中的内容为操作数的地址,再读一次内存得到操作数;
(3)变址寻址,形式地址为变址寄存器名(或编号)和变址偏移值,把变址寄存器中的内容与变址偏移值相加得到操作数的地址,再读一次内存得到操作数;(3)变址寻址,形式地址为变址寄存器名(或编号)和变址偏移值,把变址寄存器中的内容与变址偏移值相加得到操作数的地址,再读一次内存得到操作数; (4)堆栈寻址,通常形式地址为将写入堆栈的、或接收堆栈读出内容的寄存器名(或编号),指令中不直接给出内存地址,而是选用默认的堆栈指针寄存器中的内容为内存地址,读写堆栈总伴有修改堆栈指针的操作。
4.3 指令系统和汇编语言设计举例 4.3.1 教学计算机的指令系统说明 1 . 确定教学计算机指令系统的原则 (1)尽量少的指令集,指令数目要少,较短的指令格式,简化的寻址方式,单字节指令为主,每条指令的广泛内尽量简单。这样可简化结构。减低成本,容易讲清楚指令系统,实现控制器设计。 (2)指令系统有一定的完备程度,有较好的典型性, 指令格式适当规范,指令分类合理,指令执行步骤容易理解。 (3)适当的扩充性,能让学生通过实验扩展新的指令。 (4)符合教学计算机的特定要求。对16位机,操作码为固定长度,寄存器寻址使用4位的形式地址。
2005年1月试题 1.简单说明确定16位教学机指令系统的原则。 答: (1)尽可能小的指令集,指令数目要适当地少,较短的指令格式,简化的寻址方式,单字指令为主,每条指令的功能要尽可能地简单。 (2)令系统要有一定的完备程度,有较好的典型性。 (3)适当的扩充性。 (4)符合教学计算机的特定要求。
作业2.7. 8位的教学计算机系统的指令的特点是什么?为什么必须采用操作码扩展技术?为什么只能用4个通用寄存器?为什么要采用16位的地址总线? 8位的教学计算机系统的指令的特点是:指令集较小;指令系统有一定的完备程度和较好的典型性;有适当的扩展性;指令的操作码部分选用逐位扩展技术。 采用操作码扩展技术,可结合所选用的运算器部件Am2901芯片内含的16个通用寄存器的特点,可以在指令中使用多个专用的寄存器,以便最大程度地缩短指令字的长度,简化指令流程设计。
在双操作数指令中,由于受到指令字长度的限制,只能为每个寄存器分配2位地址编码,故只能使用4个通用寄存器和4位操作码。其余的寄存器用作专用寄存器,如程序计数器PC、堆栈指针SP、16位的内存地址和转移指令的地址或子程序调用的入口地址。在双操作数指令中,由于受到指令字长度的限制,只能为每个寄存器分配2位地址编码,故只能使用4个通用寄存器和4位操作码。其余的寄存器用作专用寄存器,如程序计数器PC、堆栈指针SP、16位的内存地址和转移指令的地址或子程序调用的入口地址。 采用16位的地址总线,可使系统有较大的存储空间,使存储空间达到64k。
2. 16位TEC-2000机的指令系统说明与指令分类 单字节指令 按指令长度分类 双字节指令 三字节指令 单操作数指令 按操作数个数分类 双操作数指令 无操作数指令 寄存器寻址 寄存器间址 立即数寻址 按寻址方式分类 直接寻址 相对寻址 堆栈寻址
算术和逻辑运算 类指令 读写内存类指令 输入/ 输出类指令 转移指令 按指令功能分类 子程序调用/ 返回指令 数据传送指令 移位指令 置进位标志/清进位标志指令