网站开发课题的目的与意义,网站策划招聘,福州专业网站设计,个人开办公司需要哪些手续一、计算机系统概述
【复习提示】 本章是组成原理的概述#xff0c;考查时易针对有关概念或性能指标出选择题#xff0c;也可能综合后续章节的内容出有关性能分析的综合题。掌握本章的基本概念#xff0c;是学好后续章节的基础。部分知识点在初学时理解不深刻也无须担忧考查时易针对有关概念或性能指标出选择题也可能综合后续章节的内容出有关性能分析的综合题。掌握本章的基本概念是学好后续章节的基础。部分知识点在初学时理解不深刻也无须担忧相信随着后续章节的学习一定会有更为深入的理解。本章中读者要重点掌握各个性能指标的计算这部分内容在历年真题中出现的频率很高。
1.1 计算机发展历程
1.1.1 计算机硬件的发展
计算机系统 硬件 软件
计算机硬件的发展
第一代计算机(使用电子管)第二代计算机(使用晶体管)第三代计算机(使用较小规模的集成)第四代计算机(使用较大规模的集成)
已经经历了4代计算机的速度越来越快并且体积变得越来越小。
发展趋势更微型、多用途更巨型、超高速 晶体管之父肖克利1956年诺贝尔物理学奖得主 1957年八叛徒创立了仙童半导体 1959年仙童半导体发明了“集成电路” 1968年摩尔离开仙童创立intel 1969年仙童销售部负责人桑德斯离开仙童创立AMD 摩尔定律集成电路上的晶体管数量每18月就会翻一翻所以每18月计算机的处理效率就会提高一倍。
1.1.2 计算机软件的发展
计算机软件技术的发展促进计算机系统的发展。
计算机语言的发展经历了面向机器的机器语言和汇编语言、面向问题的高级语言。其中高级语言的发展真正促进了软件的发展它经历了从科学计算和工程计算的 FORTRAN、结构化程序设计的 PASCAL到面向对象的C和适应网络环境的Java。
同时直接影响计算机系统性能提升的各种系统软件也有了长足的发展特别是操作系统如 Windows、UNIX、 Linux等。
1.1.3 计算机的分类与发展方向
可以分为
电子模拟计算机和电子数字计算机。
数字计算机又可以按照用途分为
专用计算机和通用计算机通用计算机又分为巨型机、大型机、中型机、小型机、微型机和单片机6类。
按照指令和数据流可以分为
单指令流和单数据流系统SISD即传统的冯·诺依曼体系结构。单指令流和多数据流系统SIMD包括阵列处理器和向量处理器系统。多指令流和单数据流系统MISD这种计算机实际上不存在。多指令流和多数据流系统MIMD包括多处理器和计算机系统。
1.2 计算机系统层次结构
1.2.1 计算机系统的组成
计算机系统由硬件系统和软件系统共同构建起来
1.2.2 计算机硬件的基本组成
1、早期的冯·诺依曼机 美籍匈牙利科学家冯·诺依曼最先提出“程序存储”的思想并成功将其运用在计算机的设计之中根据这一原理制造的计算机被称为冯·诺依曼结构计算机。由于他对现代计算机技术的突出贡献因此冯·诺依曼又被称为“现代计算机之父”。 什么是存储程序原理按此原理计算机应具有哪几大功能 “程序存储”指令以代码的形式事先输入到计算机的主存储器中然后按其在存储器中的首地址执行程序的第一条指令以后就按该程序的规定顺序执行其他指令直至程序执行结束。即按地址访问并顺序执行指令 计算机按照此原理应具有5大功能数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能
冯诺曼体系结构特点:
计算机硬件系统由五大部件组成(存储器、运算器、控制器、输出设备、输入设备)指令和数据以同等地位存于存储器可按地址寻访指令和数据用二进制表示指令由操作码和地址码组成存储程序以运算器为中心 早期的冯·诺依曼机以运算器为中心且是单处理机最根本的特征是采用“存储程序”原理基本工作方式是控制流驱动方式 2、现代计算机的组织结构 3、计算机的功能部件 主机主存、运算器、控制器 五大部分
1 输入设备是指将外部信息以计算机能读懂的方式输入进来如键盘鼠标等
2 输出设备就是将计算机处理的信息以人所能接受的方式输出出来比如显示屏打印机。
3 存储器存储器分为 主存储器(内存储器CPU能直接访问) 和辅助存储器(外存储器协助主存储器记忆更多的信息辅助存储器的信息需要导入到主存储器中才可以被CPU访问)。 主存储器的工作方式是按存储单元的地址进行存取这种存取方式称为按地址存取方式(相联存储器既可以既可以按照地址寻址又可以按照内容寻址为了与传统存储器区别又称为内容寻址的存储器) 主存储器是由地址寄存器(MAR)数据寄存器(MDR)存储体时序控制逻辑地址寄存器存放访存地址经过地址译码后找到所选的存储单元。数据寄存器是存储器与其他部件的中介用于暂存要从存储器读或写的信息。时序控制逻辑用于产生存储器操作所需的各种时序信号。在现代CPUMAR和MDR是在CPU中的。 地址寄存器MAR存放访存地址经过地址译码后找到所选的存储单元。 MAR用于寻址其位数对应着存储单元的个数如MAR为10位则有2101024个存储单元记为1K。MAR的长度PC的长度。 数据寄存器MDR用于暂存要从存储器中读或写的信息时序控制逻辑用于产生存储器操作所需的各种时序信号。 MDR的位数存储字长一般为字节的2次幂的整数倍。 注意MAR与MDR虽然是存储器的一部分但在现代计算机中却是存在于CPU中的另外后文提到的高速缓存Cache也存在于CPU中。
4 运算器是计算机的运算单元用于算术运算和逻辑运算
运算器的核心单元是算术逻辑单元(ALUArithmetic and Logical Unit) 运算器包含若干通用寄存器用于暂存操作数和中间结果如累加器ACC、乘商寄存器MQ、操作数寄存器X、变址寄存器X、基址寄存器BR等其中前3个寄存器是必须具备的。运算器内还有程序状态寄存器PSW也称标志寄存器用于存放ALU运算得到的一些标志信息或处理机的状态信息如结果是否溢出、有无产生进位或借位、结果是否为负等。
5 控制器控制器是计算机的指挥中心有其指挥各部件自动协调第进行工作现代计算机将运算器和控制器集成到一个芯片上合成为中央处理器简称CPU。有程序计数器(PC)、指令寄存器(IR)和控制单元(CU)。 PC用来存放当前欲执行指令的地址具体自动加1的功能这里的“1”指一条指令的长度即可自动形成下一条指令的地址它与主存的MAR之间有一条直接通路。IR用来存放当前的指令其内容来自主存的MDR。指令中的操作码OPIR送至CU用以分析指令并发出各种微操作命令序列而地址码AdIR送往MAR用以取操作数。 一般将运算器和控制器集成到同一个芯片上称为中央处理器(CPU)。CPU和主存储器共同构成主机而除主机外的其他硬件装置(外存、I/O设备等)统称为外部设备简称外设。 图1.4所示为冯・诺依曼结构的模型机。CPU包含ALU、通用寄存器组GPRs、标志寄存器、控制器、指令寄存器IR、程序计数器PC、存储器地址寄存器MAR和存储器数据寄存器MDR。图中从控制器送出的虚线就是控制信号可以控制如何修改PC以得到下一条指令的地址可以控制ALU执行什么运算可以控制主存是进行读操作还是写操作(读/写控制信号)。 CPU和主存之间通过一组总线相连总线中有地址、控制和数据3组信号线。MAR中的地址信息会直接送到地址线上用于指向读/写操作的主存存储单元控制线中有读/写信号线指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中。
1.2.3 计算机软件的分类
1、系统软件和应用软件 计算机软件一般分为系统软件和应用软件 系统软件一组保证计算机系统高效、正确运行的基础软件通常作为系统资源提供给用户使用。 如操作系统OS数据库管理系统DBMS语言处理系统(比如编译器)分布式软件系统网络软件系统标准库系统服务性系统(比如连接程序)。 应用软件指用户为解决某个应用领域中的各类问题而编制的程序。 如各种科学计算类程序工程设计类程序数据统计与处理程序。
注意数据库管理系统和数据库系统是有区别的。数据库管理系统是系统软件。而数据库系统一般是由数据库数据库管理系统数据库管理员和应用系统构成。所以只能说它里面有系统软件但并不能说它为系统软件。
2、三个级别的语言
机器语言。又称二进制代码语言需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码更容易为人们记忆和理解。使用汇编语言编辑的程序必须经过一个称为汇编程序的系统软件的翻译将其转换为计算机的机器语言后才能在计算机的硬件系统上执行。高级语言。高级语言(如C、C、Java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序然后经过汇编操作得到机器语言程序或直接由高级语言程序翻译成机器语言程序。
由高级语言转换到汇编语言的过程叫做编译由汇编语言转换到机器语言的过程叫做汇编边翻译边执行的叫做解析。
计算机无法直接理解和执行高级语言程序需要将高级语言程序转换为机器语言程序通常把进行这种转换的软件系统称为翻译程序。翻译程序有以下三类
汇编程序汇编器将汇编语言程序翻译成机器语言程序。解释程序解释器将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。编译程序编译器将高级语言程序翻译成汇编语言或机器语言程序。
机器语言是唯一可以控制cpu的语言因为它的符号不利于人识别和书写为了方便理解和记忆将机器语言换一些通俗易懂的符号这就变成了汇编语言。一般来说在编译器中高级语言先转换为汇编再转换为机器语言也有直接转换为机器语言的情况。 机器语言是计算机唯一可以直接执行的语言汇编语言用助记符编写以便记忆。而正则语言是编译原理中符合正则文法的语言。 解释程序的特点是翻译一句执行一句边翻译边执行由高级语言转化为汇编语言的过程称为编译把汇编语言源程序翻译成机器语言程序的过程称为汇编。 3、软件和硬件的逻辑功能等价性
硬件实现的往往是最基本的算术和逻辑运算功能而其他功能大多通过软件的扩充得以实现。软、硬件逻辑功能的等价性对某一功能来说既可以由硬件实现又可以由软件实现从用户的角度来看它们在功能上是等价的。软件和硬件逻辑功能的等价性是计算机系统设计的重要依据软件和硬件的功能分配及其界面的确定是计算机系统结构研究的重要内容。
1.2.4 计算机的工作过程
程序被编译成二进制存储在主存中 指令执行过程的描述 (MAR)表示MAR里边的值为0 M(MAR) 主存储器所指向的存储单元里边的值 OPIR取操作码 AdIR取地址码 1取数 2乘法 3加法 4存数 5停机 对于“取数”指令的执行过程 上图是计算机的工作流程首先PC将指令地址发送给MARMAR根据地址在存储体中找到指令数据存放在MDR中之后MDR将指令存放在IR中取指令结束之后指令中的操作码进入CU中地址码重复上述取指令步骤将数据发送到ACC中执行指令结束。注意区分指令和数据的依据:指令周期的不同阶段。
IR存放当下欲执行的指令PC存放下一条指令的地址MAR存放欲访问的存储单元地址MDR存放从存储单元取来的数据
地址译码器是主存的构成部分不属于CPU地址寄存器虽然一般属于主存但是现代计算机中绝大多数CPU内集成了地址寄存器
关于CPU存取速度的比较寄存器CPU内部 Cache(高速的SRAM) 内存 (SDRAM)
1.2.5 计算机系统的工作原理
1“存储程序”工作方式
一个程序的执行就是周而复始地执行一条一条指令的过程。每条指令的执行过程包括从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器。 程序执行前先将程序第一条指令的地址存放到PC中取指令时将PC的内容作为地址访问主存在每条指令执行过程中都需要计算下条将执行指令的地址并送至PC 若当前指令为顺序型指令则下条指令地址为PC的内容加上当前指令的长度若当前指令为转跳型指令则下条指令地址为指令中指定的目标地址 当前指令执行完后根据PC的值到主存中取出的是下条将要执行的指令
2从源程序到可执行文件
在计算机中编写的C语言程序都必须被转换为一系列的低级机器指令这些指令按照一种称为可执行目标文件的格式打好包并以二进制磁盘文件的形式存放起来。 预处理阶段**预处理器cpp**对源程序中以字符#开头的命令进行处理例如将#include命令后面的.h文件内容插入程序文件。输出结果是一个以 .i 为扩展名的源文件hello.i。 编译阶段编译器ccl对预处理后的源程序进行编译生成一个汇编语言源程序hello.s。 汇编语言源程序中的每条语句都以一种文本格式描述了一条低级机器语言指令。 汇编阶段汇编器as将hello.s翻译成机器语言指令把这些指令打包成一个称为可重定位目标文件的hello.o它是一种二进制文件因此用文本编辑器打开会显示乱码。 链接阶段链接器ld将多个可重定位目标文件和标准库函数合并为一个可执行目标文件或简称可执行文件。本例中链接器将hello.o和标准库函数printf所在的可重定位目标模块printf.o合并生成可执行文件hello。最终生成的可执行文件被保存在磁盘上。
3指令执行过程的描述
可执行文件代码段是由一条一条机器指令构成的指令是用0和1表示的一串0/1序列用来指示CPU完成一个特定的原子操作。下图为冯·诺依曼结构的简单模型机。 下面以取数指令送至运算器的ACC中为例来说明其信息流程如下 取指令PC→MAR→M→MDR→IR 根据PC取指令到IR。将PC的内容送MARMAR中的内容直接送地址线同时控制器将读信号送读/写信号线主存根据地址线上的地址和读信号从指定存储单元读出指令送到数据线上MDR从数据线接收指令信息并传送到IR中。 分析指令OPIR→CU 指令译码并送出控制信号。控制器根据IR中指令的操作码生成相应的控制信号送到不同的执行部件。在本例中IR中是取数指令因此读控制信号被送到总线的控制线上。 执行指令AdIR→MAR→M→MDR→ACC 取数操作。将IR中指令的地址码送MARMAR中的内容送地址线同时控制器将读信号送读/写信号线从主存中读出操作数并通过数据线送至MDR再传送到ACC中。 每取完一条指令还须为取下条指令做准备计算下条指令的地址即PC1→PC。
1.2.6 计算机系统的层次结构
下层是上层的基础上层是下层的扩展。 M4高级语言机器执行高级语言它是面向用户的是为方便用户编写应用程序而设置的。该层由各种高级语言编译程序支持和执行。 在高级语言层之上还可以有应用程序层它由解决实际问题的处理程序组成如文字处理软件、多媒体处理软件和办公自动软件等。 M3汇编语言机器执行汇编语言它为用户提供一种符号化的语言借此可编写汇编语言源程序。这一层由汇编程序支持和执行。 M2操作系统机器向上提供广义指令它由操作系统程序实现。 操作系统程序是由机器指令和广义指令组成的这些广义指令是为了扩展机器功能而设置的是由操作系统定义和解释的软件指令所以这一层也称混合层。 M1传统机器执行机器语言指令它也是一个实际的机器层由微程序解释机器指令系统。 M0微程序机器执行微指令这是一个实在的硬件层它由机器硬件直接执行微指令。 没有配备软件的纯硬件系统称为裸机。 M2~M4层称为虚拟机简单来说就是软件实现的机器。虚拟机器只对该层的观察者存在对于某层的观察者来说只能通过该层的语言来了解和使用计算机而不必关心下层是如何工作的。 软件和硬件之间的界面就是指令集体系结构ISAISA定义了一台计算机可以执行的所有指令的集合每条指令规定了计算机执行什么操作以及所处理的操作数存放的地址空间和操作数类型。可以看出ISA是指软件能感知到的部分也称软件可见部分。 编译程序将高级语言编写的源程序全部语句一次全部翻译成机器语言程序而后再执行机器语言程序只需翻译一次)解释程序将源程序的一条语句翻译成对应于机器语言的语句并立即执行。紧接着再翻译下一句(每次执行都要翻译)
1.3 计算机性能指标
1存储器 2CPU 3系统整体的性能指标 4知识回顾 1、机器字长
**计算机的位数机器字长表示计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数。**计算机字长通常选定为字节(8位)的整数倍通常是2、4、8倍。不同的计算机字节可能不同。 机器字长、指令字长、存储字长的区别和联系是什么 机器字长计算机能直接处理的二进制数据的位数机器字长一般等于内部寄存器的大小它决定了计算机的运算精度。指令字长一个指令字中包含的二进制代码的位数。存储字长一个存储单元存储的二进制代码的长度。等于MDR的位数 它们都必须是字节的整数倍。数据字长数据总线一次能传送信息的位数它可以不等于MDR的位数。
指令字长一般取存储字长的整数倍若指令字长等于存储字长的2倍则需要2次访存来取出一条指令因此取指周期为机器周期的2倍若指令字长等于存储字长则取指周期等于机器周期。
早期的计算机存储字长一般和机器的指令字长与数据字长相等因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展指令字长可变数据字长也可变但它们必须都是字节的整数倍。
请注意64位操作系统是指特别为64位架构的计算机而设计的操作系统它能够利用64位处理器的优势。但64位机器既可以使用64位操作系统又可以使用32位操作系统。而32位处理器是无法使用64位操作系统的。
2、数据通路带宽 数据通路带宽是指数据总线一次所能并行传送信息的位数。 这里所说的数据通路宽度是指外部数据总线的宽度它与CPU内部的数据总线宽度内部寄存器的大小有可能不同。
3、主存容量
主存容量是指主存储器所能存储信息的最大容量通常以字节来衡量也可用字数×字长如 512K×16位来表示存储容量。其中MAR的位数反映了存储单元的个数MDR的位数反映了存储单元的字长。
例如MAR为16位表示216 64K65536即此存储体内有65536个存储单元可称为64K内存1K1024若MDR为32位表示存储容量为216x32 64K×32。
4、运算速度 吞吐量指系统在单位时间内处理请求的数量 从用户观点看它是评价计算机系统性能的综合参数 它取决于信息能多快地输入内存CPU能多快地取指令数据能多快地从内存取出或存入以及所得结果能多快地从内存送给一台外部设备。几乎每步都关系到主存因此系统吞吐量主要取决于主存的存取周期。 响应时间指从用户向计算机发送一个请求到系统对该请求做出响应并获得所需结构的等待时间。 通常包括CPU时间运行一个程序所花费的时间与 等待时间用于磁盘访问、存储器访问、I/O操作、操作系统开销等的时间。 CPU时钟周期通常为节拍脉冲或T周期即主频的倒数它是CPU中最小的时间单位每个动作至少需要1个时钟周期。 主频(CPU时钟频率)机器内部主时钟的频率是衡量机器速度的重要参数。对于同个型号的计算机其主频越高完成指令的一个执行步骤所用的时间越短执行指令的速度越快。例如常用CPU的主频有1.8GHz、2.4GHz、2.8GHz等。 CPU时钟周期1/主频主频通常以Hz赫兹为单位1Hz表示每秒1次。 CPU周期又称为机器周期由多个时钟周期组成 指令周期 CPU周期 时钟周期 CPIClock cycle Per Instruction即执行一条指令所需的时钟周期数。 不同指令的时钟周期数可能不同因此对于一个程序或一台机器来说其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数此时CPI是一个平均值。 CPU执行时间指运行一个程序所花费的时间。 CPU执行时间 CPU时钟周期数/主频 (指令条数xCPI)/主频CPU的性能CPU执行时间取决于三个要素:主频时钟频率、CPI 、指令条数 IPS(Instructions Per Second) 主频/平均CPI每秒执行多少指令 MIPS(Million Instructions Per Second)即每秒执行多少百万条指令 MIPS 指令条数 /执行时间×106 主频 /CPI × 106MIPS对不同机器进行性能比较是有缺陷的因为不同机器的指令集不同指令的功能也就 不同比如在机器M1上某条指令的功能也许在机器M2上要用多条指令来完成不同机器的CPI 和时钟周期也不同因而同一条指令在不同机器上所用的时间也不同。 MFLOPS(Mega Floating-point Operations Per Second)即每秒执行多少百万次浮点运算。 MFLOPS 浮点操作次数 /执行时间×106 GFLOPS(Giga Floating-point Operations Per Second)即每秒执行多少十亿次浮点运算。 GFLOPS 浮点操作次数 /执行时间×109 TFLOPS(Tera Floating-point Operations Per Second)即每秒执行多少万亿次浮点运算。 TFLOPS 浮点操作次数 /执行时间×1012 此外还有 PFLOPS 浮点操作次数 /执行时间×1015; EFLOPS浮点操作次数 /执行时间×1018; ZFLOPS浮点操作次数 /执行时间×1021 5、常用数量单位
描述存储容量、文件大小时K210M220G230T240描述频率、速率时K103M106G109T1012
6、基准程序
基准程序Benchmarks是专门用来进行性能评价的一组程序能够很好地反映机器在运行实际负载时的性能可以通过在不同机器上运行相同的基准程序来比较在不同机器上的运行时间从而评测其性能。
7、几个专业术语
系列机。具有基本相同的体系结构使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列。兼容。指软件或硬件的通用性即运行在某个型号的计算机系统中的硬件/软件也能应用于另一个型号的计算机系统时称这两台计算机在硬件或软件上存在兼容性。软件可移植性。指把使用在某个系列计算机中的软件直接或进行很少的修改就能运行在另一个系列计算机中的可能性。固件。将程序固化在ROM中组成的部件称为固件。固件是一种具有软件特性的硬件吸收了软/硬件各自的优点其执行速度快于软件灵活性优于硬件是软/硬件结合的产物例如目前操作系统已实现了部分固化把软件永恒地存储于ROM中。
1.4 本章提出的问题与回答
1、计算机由哪几部分组成以哪部分为中心
计算机由运算器、控制器、存储器、输入设备及输出设备五大部分构成现代计算机通常把运算器和控制器集成在一个芯片上合称为中央处理器。而在微处理器面世之前(早期的冯·诺依曼机)运算器和控制器分离而且存储器的容量很小因此设计成以运算器为中心的结构其他部件都通过运算器完成信息的传递。随着微电子技术的进步同时计算机需要处理、加工的信息量也与日俱增大量IO设备的速度和CPU的速度差距悬殊因此以运算器为中心的结构不能满足计算机发展的要求。现代计算机已经发展为以存储器为中心使IO操作尽可能地绕过CPU,直接在IO设备和存储器之间完成以提高系统的整体运行效率。
2、主频高的CPU一定比主频低的CPU快吗为什么
衡量CPU运算速度的指标有很多不能以单独的某个指标来判断CPU的好坏。CPU的主频即CPU内核工作的时钟频率。CPU的主频表示CPU内数字脉冲信号振荡的速度主频和实际的运算速度存在一定的关系但目前还没有一个确定的公式能够定量两者的数值关系因为CPU的运算速度还要看CPU的流水线的各方面的性能指标架构、缓存、指令集、CPU的位数、 Cache大小等。由于主频并不直接代表运算速度因此在一定情况下很可能会出现主频较高的CPU实际运算速度较低的现象。 来看看这个电脑的配置感受一下以后计算机组成原理中的Cache和主频等 3、翻译程序、汇编程序、编译程序、解释程序有什么差别各自的特性是什么
翻译程序是指把高级语言源程序翻译成机器语言程序目标代码的软件。翻译程序有两种一种是编译程序它将高级语言源程序一次全部翻译成目标程序每次执行程序时只需执行目标程序因此只要源程序不变就无须重新翻译请注意同一种高级语言在不同体系结构下编译成目标程序是不一样的目标程序与体系结构相关但仍不是计算机硬件能够直接执行的程序。另一种是解释程序它将源程序的一条语句翻译成对应的机器目标代码并立即执行然后翻译下一条源程序语句并执行直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句并且不会生成目标程序。汇编程序也是一种语言翻译程序它把汇编语言源程序翻译为机器语言程序。汇编语言是面向机器的低级语言是机器语言的符号表示与机器语言一一对应。编译程序与汇编程序的区別若源语言是诸如C、C、Java等“高级语言”而目标语言是诸如汇编语言或机器语言之类的“低级语言”则这样的一个翻译程序称为编译程序。若源语言是汇编语言而目标语言是机器语言则这样的一个翻译程序称为汇编程序。
4、不同级别的语言编写的程序有什么区别哪种语言编写的程序能被硬件直接执行
机器语言和汇编语言与机器指令对应而高级语言不与指令直接对应具有较好的可移植性。其中机器语言可以被硬件直接执行。
1.5 常见问题和易混淆知识点
1、同一个功能既可以由软件实现又可以由硬件实现吗
软件和硬件是两种完全不同的形态硬件是实体是物质基础软件是一种信息看不见、摸不到。但在逻辑功能上软件和硬件是等效的。因此在计算机系统中许多功能既可以由硬件直接实现又可以在硬件的配合下由软件实现。一个最大的区别就是硬件实现比软件实现的速度快很多但是成本也高所以芯片在流片之后如果发现bug可以用软件修复就用软件修复例如乘法运算既可用专门的乘法器主要由加法器和移位器组成实现也可用乘法子程序主要由加法指令和移位指令等组成来实现。
2、什么是透明性透明是指什么都能看见吗
在计算机领域中站在某类用户的角度若感觉不到某个事物或属性的存在即“看”不到某个事物或属性则称为“对该用户而言某个事物或属性是透明的”。这与日常生活中的“透明”概念(公开、看得见)正好相反。例如对于高级语言程序员来说浮点数格式、乘法指令等这些指令的格式、数据如何在运算器中运算等都是透明的而对于机器语言或汇编语言程序员来说指令的格式、机器结构、数据格式等则不是透明的。在CPU中IR、MAR和MDR对各类程序员都是透明的。
3、机器字长、指令字长、存储字长的区别和联系是什么
机器字长计算机能直接处理的二进制数据的位数机器字长一般等于内部寄存器的大小它决定了计算机的运算精度。指令字长一个指令字中包含的二进制代码的位数。存储字长一个存储单元存储的二进制代码的长度。等于MDR的位数 它们都必须是字节的整数倍。数据字长数据总线一次能传送信息的位数它可以不等于MDR的位数。
指令字长一般取存储字长的整数倍若指令字长等于存储字长的2倍则需要2次访存来取出一条指令因此取指周期为机器周期的2倍若指令字长等于存储字长则取指周期等于机器周期。
早期的计算机存储字长一般和机器的指令字长与数据字长相等因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展指令字长可变数据字长也可变但它们必须都是字节的整数倍。
请注意64位操作系统是指特别为64位架构的计算机而设计的操作系统它能够利用64位处理器的优势。但64位机器既可以使用64位操作系统又可以使用32位操作系统。而32位处理器是无法使用64位操作系统的。
4、计算机体系结构和计算机组成的区别和联系是什么
计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性包括指令集、数据类型、存储器寻址技术等大都属于抽象的属性。计算机组成是指如何实现计算机体系结构所体现的属性它包含对许多对程序员来说透明的硬件细节。例如指令系统属于结构的问题但指令的实现即如何取指令、分析指令、取操作数如何运算等都属于组成的问题。因此当两台机器指令系统相同时只能认为它们具有相同的结构至于这两台机器如何实现其指令完全可以不同即可以认为它们的组成方式是不同的。例如一台机器是否具备乘法指令是一个结构的问题但实现乘法指令采用什么方式则是一个组成的问题。简言之看有没有这个属性就是结构问题看怎么实现就是组成问题许多计算机厂商提供一系列体系结构相同的计算机而它们的组成却有相当大的差别即使是同一系列的不同型号机器其性能和价格差异也很大。例如 IBM System/370结构就包含了多种价位和性能的机型。
5、基准程序执行得越快说明杺器的性能越好吗
一般情况下基准测试程序能够反映机器性能的好坏。但是由于基准程序中的语句存在频度的差异因此运行结果并不能完全说明问题。
二、数据的表示与运算
【复习提示】 本章内容较为繁杂由于计算机中数的表示和运算方法与人们日常生活中的表示和运算方法不同因此理解也较为困难。纵观近几年的真题不难发现 unsigned、shot、int、long、foat、 double等在C语言中的表示、运算、溢出判断、隐式类型转换、强制类型转换、IEEE754浮点数的表示以及浮点数的运算都是考研考查的重点需要牢固掌握。 2.1 数制与编码
2.1.1 进位计数制及其相互转化
进位计数法
在进位计数法中每个数位所用到的不同数码的个数称为基数。十进制的基数为10逢十进一。
十进制基数为10计数“逢十进一” 数符0~9表示(1652)10 或 1652D 二进制基数为2的计数制计数“逢二进一”。 数符0、1表示(1010001010010)2 或 1010001010010B 八进制。基数为8计数“逢八进一”。 数符0~7表示(1652)8 十六进制基数为16“逢十六进一”。 数制0 ~ 9、A、B、C、D、E、F其中A、B、C、D、E、F分别表示10 ~ 15。表示(1652)16 或 1652H 或 0x1652
进位计数制总览 1、任意进制转为十进制 将任意进制数的各位数码与它们的权值相乘再把乘积相加就得到了一个十进制数。
2、二进制与八进制和十六进制互转 (注意小数部分也是从右往左算) 二进制转换为八进制每3个二进制位对应一个八进制位。二进制转换为十六进制每4个二进制位对应一个十六进制位。在转换时以小数点为界整数部分从右往左数分组左加零补齐小数部分从左往右数分组右加零补齐。 注意八进制与十六进制转换需要先转成二进制再转换。 3、各种进制的常见书写方式 4、十进制转为任意进制
基数乘除法这种转换方法对十进制数的整数部分和小数部分将分别进行处理对整数部分用除基取余法对小数部分用乘基取整法最后将整数部分与小数部分的转换结果拼接起来。
整数部分除基取余法整数部分除基取余最先取得的余数为数的最低位最后取得的余数为数的最高位即除基取余先余为低后余为高商为0时结束。 小数部分乘基取整法小数部分乘基取整最先取得的整数为数的最高位最后取得的整数为数的最低位即乘基取整先整为高后整为低乘积为1.0或满足精度要求时结束。 注意在计算机中小数和整数不一样整数可以连续表示但小数是离散的所以并不是每个十进制小数都可以准确地用二进制表示。例如0.3无论经过多少次乘二取整转换都无法得到精确的结果。但任意一个二进制小数都可以用十进制小数表示。 5、十进制转为二进制拼凑法 6、真值和机器数
真值指用正号、负号来分别表示正数正号可省略和负数是机器数所代表的实际值。机器数用“0”表示“正”用“1”表示“负”这种把符号“数字化”的数称为机器数。常用的有原码、补码和反码表示法。如0101这里的逗号“”仅为区分符号位与数值位表示5。
知识回顾与重点考点 2.1.2 BCD码Binary-Code Decimal码
二进制编码的十进制数Binary-Coded DecimalBCD通常采用4位二进制数来表示一位十进制数中的0~9这10个数码。这种编码方法使二进制数和十进制数之间的转换得以快速进行。但4位二进制数可以组合出16种代码因此必有6种状态为冗余状态。从1010到1111这6个为无效码 余3码这是一种无权码是在8421码的基础上加(0011)2形成的因每个数都多余“3”因此称为余3码。 如8→10119→1100。 2421码这也是一种有权码权值由高到低分别为2421特点是大于或等于5的4位二进制数中最高位为1小于5的最高位为0。 如5→1011而非0101。
知识回顾与重要考点 2.1.3 字符与字符串 1、字符编码ASCII码 案例 汉字的表示和编码 2、字符串
大端模式和小端模式 3、知识回顾与重要考点 2.1.4 校验码
任意两个码字之间最少变化的二进制位数称为码距码距大于等于2的数据校验码开始具有检错的能力。码距越大检错、纠错能力越强。奇偶校验码的码距等于2可以检测出一位错误或奇数位错误但不能确定出错的位置也不能检测出偶数位错误海明码的码距大于2因此不仅可以发现错误还能指出错误的位置。仅靠增加奇偶校验位的位数不能提高正确性还要考虑码距。 具有检、纠错能力的数据校验码的实现原理在编码中除合法码字外再加入一些非法码字当某个合法码字出现错误时就变为非法码字。合理安排非法码字的数量和编码规则就能达到纠错的目的。 1、奇偶校验码 原编码上加一个校验位码距等于2
案例 知识回顾与重要考点 2、海明汉明校验码
思路简介 求解步骤 步骤一 步骤二 步骤三 步骤四 知识回顾与重要考点 3、循环冗余校验CRC码
基本思想 求解步骤 步骤一 步骤二 步骤三 步骤四 步骤五 CRC校验码是可以纠错的前面这个是因为信息位太长 步骤六 知识回顾与重要考点 2.2 定点数的表示和运算
1、定点数和浮点数的概念 机器数的定点表示
定点表示法用来表示定点小数和定点整数。符号位为0表示正数符号位为1表示负数。 定点小数小数点在符号位之后有效数值部分最高位之前。 当x0 0x1 ~ xn均为1时X为其所能表示的最大正数真值等于 1-2-n当x0 1x1 ~ xn均为1时X为其原码所能表示的最小负数真值等于-(1-2-n) 定点整数小数点在有效数值部分最低位之后。 当x0 0x1 ~ xn均为1时X为其所能表示的最大正数真值等于2n-1当x0 1x1 ~ xn均为1时X为其原码所能表示的最小负数真值等于-(2n-1)
2、无符号数 无符号整数的表示 整个机器字长全部二进制位均为数值位机器字长n位数的表示范围0 ~ 2n-1。 带符号整数的表示 最高位为符号位0正1负。计算机中带符号数用补码表示n位带符号数取值范围是-2n-1 ~ 2n-1-1。
3、原码 用机器数的最高位表示数的符号其余各位表示数的绝对值。
纯整数的原码定义 若字长为n1则原码整数的表示范围为-(2n-1)≤x≤2n-1关于原点对称 例如若x11110x2-1110字长为8位则其原码表示为[x1]原0,0001110[x2]原2711101,0001110其中最高位是符号位。 纯小数的原码定义 若字长为n1则原码小数的表示范围为-(1-2-n)≤x≤1-2-n关于原点对称 例如若x10.1101x2-0.1101字长为8位则其原码表示为[x1]原0.1101000[x2]原1-(-0.1101)1.1101000其中最高位是符号位。 原码表示的优点是与真值的对应关系简单、直观与真值的转换简单并且用原码实现乘除运算比较简便。缺点是0的表示不唯一更重要的是原码加减运算比较复杂。
4、反码
正数与原码相同负数与原码相比符号位不变数值位按位取反。 反码表示存在以下几个方面的不足0的表示不唯一即存在正负0表示范围比补码少个最小负数。反码在计算机中很少使用通常用作数码变换的中间表示形式。
5、补码
正数与原码相同负数与原码相比符号位不变数值位按位取反再加1。
负数手算从右往左找到第一个1这个1左边的所有“数值位”按位取反。 补码定义 纯整数的补码定义若字长为n1则补码的表示范围为-2n≤x≤2n-1比原码多表示-2n。 例如若x11010x2-1101字长为8位则其补码表示为[x1]补0,0001010[x2]补28-0,00011011,1110011。 8位字长原码取值范围是-127 ~ 1271111 1111 ~ 0111 1111 补码取值范围是-128 ~ 1271000 0000 ~ 0111 1111(-128)10(1000 0000)2 纯小数的补码定义若字长为n1则补码的表示范围为-1≤x≤1-2-n比原码多表示-1。 例如若x10.1001x2-0.0110字长为8位则其补码表示为[x1]补0.1001000[x2]补2-0.01101.1010000。 其中(-1)10(1000 0000)2 注意零的补码表示是唯一的即[0][-0]0.0000。由定义[-1]1.0000可见小数补码比原码多表示一个-1整数补码比原码多表示一个-2n。 技巧 补码的作用 注意执行加法运算时符号位一起参加运算 变形补码 变形补码又称模4补码双符号位的补码小数其定义为 模4补码双符号位00表示正11表示负用在完成算术运算的ALU部件中。 将[x]补的符号位与数值位一起右移并保持原符号位的值不变可实现除法功能。 模4补码的优点是可以在运算结果的符号位上直接判断是否发生溢出。 1如果两个正数相加之和大于等于1则符号位为01表示正数上溢 2如果两个负数相加而其和小于-1则符号位为10表示负数下溢。 补码与真值之间的转换 对补码而言正数和负数的转换不同。正数补码的转换方式与原码的相同。 真值转换为补码对于正数与原码的方式一样。对于负数符号位取1其余各位由真值“各位取反末位加1”得到。补码转换为真值若符号位为0与原码的方式一样。若符号位为1真值的符号为负数值部分各位由补码“各位取反末位加1”得到。
6、移码 移码常用来表示浮点数的阶码。它只能表示整数。
移码就是在真值X上加上一个偏置值通常这个常数取2n相当于X在数轴上向正方向偏移了若干单位这就是“移码”一词的由来。移码定义为[x]移2nx−2n≤x2n其中机器字长为n1 例如若正数x110101x2-10101字长为8位则其移码表示为[x1]移27101011,0010101[x2]移27-101010,1101011。 移码特点
移码中零的表示唯一[0][-0]2n1000 0000一个真值的移码和补码仅差一个符号位即补码符号位取反得到移码。移码全0时对应真值的最小值-2n移码全1时对应真值的最大值2n-1。移码保持了数据原有的大小顺序移码大真值就大移码小真值就小。
7、原码、补码、反码和移码这4种编码表示的总结 原码、补码、反码的符号位相同正数的机器码相同。 原码、反码的表示在数轴上对称二者都存在0和-0两个零。 补码、移码的表示在数轴上不对称零的表示唯一它们比原码、反码多表示一个数。 整数的补码、移码的符号位相反数值位相同。 负数的反码、补码末位相差1。 原码很容易判断大小。而负数的反码、补码很难直接判断大小 可采用如下规则快速判断对于负数数值部分越大绝对值越小真值越大更靠近0。
8、定点数的移位运算
原码的算数移位 反码的算数移位 补码的算数移位 总结 逻辑移位 循环移位
循环移位分为带进位标志位CF的循环移位大循环和不带进位标志位的循环移位小循环。 循环移位操作特别适合将数据的低字节数据和高字节数据互换。
9、溢出判断 仅当两个符号相同的数相加或两个符号相异的数相减才可能产生溢出如两个正数相加而结果的符号位却为1结果为负一个负数减去一个正数结果的符号位却为0结果为正。 采用一位符号位 只要参加操作的两个数符号相同结果又与原操作数符号不同则表示结果溢出。采用一位符号位根据数据位进位情况判断溢出。若符号位的进位Cs与最高数位的进位C1相同则说明没有溢出否则表示发生溢出。 采用双符号位模4补码 运算结果的两个符号位Ss1Ss2相同表示未溢出运算结果的两个符号位Ss1Ss2不同表示溢出此时最高位符号位代表真正的符号。
10、符号扩展 定点数表示的数转换成具有不同位数的某种表示形式。其根本目的是表示的数值保持不变。
对于正数新表示形式的所有附加位都用0进行填充。对于负数 符号位保持不变原码的所有附加位都用0进行填充符号位保持不变反码的所有附加位都用1进行填充符号位保持不变补码的所有附加位都用1对于整数或0对于小数进行填充。
2.3 浮点数的表示与运算
1、浮点数的表示 2、尾数的规格化 特点
3、IEEE 754 浮点数标准
标准 示例十进制转换为浮点数 示例浮点数转换为十进制数 单精度浮点数表示的最大值最小值 特殊数值 4、浮点数的表示与运算
1、浮点数的表示格式N (−1)S × M × RE
数符S取值0或1用来决定浮点数的符号尾数M是一个二进制定点小数一般用定点原码小数表示阶数E是一个二进制定点整数又称指数用移码表示基数R是隐含的可以约定为2、4、8、16等例如32位浮点数格式 其中第0位为数符S第1 ~ 7位为移码表示的阶码E偏置值为64第8 ~ 31位为24位二进制原码小数表示的尾数M基数R为2。 阶码的值反映浮点数的小数点的实际位置;阶码的位数反映浮点数的表示范围;尾数的位数反映浮点数的精度。
2、浮点数的表示范围
原码是关于原点对称的故浮点数的范围也是关于原点对称的。 上溢运算结果大于最大正数时称为正上溢小于绝对值最大负数时称为负上溢正上溢和负上溢统称上溢。数据一旦产生上溢计算机必须中断运算操作进行溢出处理。下溢当运算结果在0至最小正数之间时称为正下溢在0至绝对值最小负数之间时称为负下溢正下溢和负下溢统称下溢。数据下溢时浮点数值趋于零计算机仅将其当作机器零处理。
3、浮点数的规格化
尾数的位数决定浮点数的有效数位有效数位越多数据的精度越高。
规格化操作是指通过调整一个非规格化浮点数的尾数和阶码的大小使非零的浮点数在尾数的最高数位上保证是一个有效值。
左规当运算结果的尾数的最高数位不是有效位即出现±0.0…0×…×的形式时需要进行左规。左规时尾数每左移一位、阶码减1基数为2时。左规可能要进行多次。右规当运算结果的尾数的有效位进到小数点前面时需要进行右规。将尾数右移一位、阶码加1基数为2时。需要右规时只需进行一次。
规格化浮点数的尾数M的绝对值应满足1/R ≤ ∣M∣1。若R2则有1/2 ≤ ∣M∣1。
原码表示的规格化尾数的形式如下
正数最大值为0.11…1最小值为0.10…0。尾数表示范围为 1/2 ≤ |M|≤ (1-2-n)。负数最大值为1.10…0最小值为1.11…1。尾数表示范围为 -(1-2-n) ≤ M ≤ -1/2 。
补码表示的尾数规格化尾数最高数值位必须和尾数符号位相反。
4、IEEE754标准
按照IEEE754标准常用的浮点数的格式如图所示 IEEE754偏置值如下表所示 偏置值指阶码部分以移码表示时的偏置值也就是表示为0的值。阶码值阶码的原码值-偏置值。
尾数默认规格化二进制浮点数隐藏最高位为1称为隐藏位。 例如(12)10(1100)2将它规格化后结果位1.1×23其中整数部分的1将不存储与尾数。 因此用IEEE754方式表示12阶码3用移码表示为1273130(1000 0010)2尾数为.1。 用IEEE754表示为0100 0001 0100 0000 … 0000即41 40 00 00 H 。 IEEE754标准中规格化的 短浮点数的真值为 (−1)S × 1.M × 2E−127长浮点数的真值为 (−1)S × 1.M × 2E−1023 式中 短浮点数E的取值为1 ~ 2548位表示M为23位共32位 长浮点数E的取值为1 ~ 204611位表示M为52位共64位。 5、IEEE754浮点数范围
对于IEEE 754格式的浮点数阶码全0或全1时有其特别的解释 全0阶码全0尾数0/-0。零的符号取决于数符S一般情况下0和-0是等效的。全1阶码全0尾数∞/-∞。∞在数值上大于所有有限数-∞则小于所有有限数。全0阶码不全0尾数表示非规格化小数。全1阶码不全0尾数表示非数值NaNNot a Number。
例题1IEEE754格式转换为十进制 例题2十进制转换为IEEE754格式 6、定点、浮点表示的区别 1数值的表示范围 若定点数和浮点数的字长相同则浮点表示法所能表示的数值范围远大于定点表示法。 2精度 对于字长相同的定点数和浮点数来说浮点数虽然扩大了数的表示范围但精度降低了。 3数的运算 浮点数包括阶码和尾数两部分运算时不仅要做尾数的运算还要做阶码的运算面且运算结果要求规格化所以浮点运算比定点运算复杂。 4溢出问题 在定点运算中当运算结果超出数的表示范围时发生溢出浮点运算中运算结果超出尾数表示范围却不一定溢出只有规格化后阶码超出所能表示的范围时才发生溢出。
7、浮点数的加减运算
浮点数运算的特点是阶码运算和尾数运算分开进行。
1浮点数加减运算步骤 1对阶 对阶的目的是使两个操作数的小数点位置对齐即使得两个数的阶码相等。为此先求阶差然后以小阶向大阶看齐的原则将阶码小的尾数右移一位基数为2阶加1直到两个数的阶码相等为止。尾数右移时舍弃掉有效位会产生误差影响精度。 2尾数求和 将对阶后的尾数按定点数加减运算规则运算。运算后的尾数不一定是规格化的因此浮点数的加减运算需要进一步进行规格化处理。 3规格化 IEEE754规格化尾数的形式为±1.×…×。尾数相加减后会得到各种可能结果例如 1.×…× 1.×…× ±1×.×…× ①1.×…× − 1.×…× ±0.0…01×…× ②右归当结果如①时进行右归。尾数右移一位阶码加1。尾数右移时最高位1被移到小数点前一位作为隐藏位最后一位移除时考虑舍入。左归当结果如②时进行左归。尾数每左移一位阶码减1。可能需要左规多次直到将第一位1移到小数点左边。 左规一次相当于乘2右规一次相当于除2需要右规时只需进行一次。 4舍入 在对阶和尾数右规时可能会对尾数进行右移为保证运算精度一般将低位移出的两位保留下来参加中间过程的运算最后将运算结果进行舍入还原表示成IEEE754格式。 0舍1入法类似于十进制的“四舍五入”法。运算结果保留位的最高数位为0则舍去最高数位为1则在尾数的末位加1。这样可能会使尾数溢出此时需再做一次右规。恒置1法不论丢掉的最高数位是0还是1都把右移后的尾数末位恒置1。截断法直接截取所需位数丢弃后面的所有位这种舍入处理最简单。 5溢出判断 在尾数规格化和尾数舍入时可能会对阶码执行加/减运算。因此必须考虑指数溢出的问题。 指数上溢若一个正指数超过了最大允许值(127或1023)则发生指数上溢产生异常。 右规和尾数舍入。数值很大的尾数舍入时可能因为末位加1而发生尾数溢出此时需要通过右规来调整尾数和阶。右规时阶加1导致阶增大因此需要判断是否发生了指数上溢。当调整前的阶码为11111110时加1后会变成11111111而发生指数上溢。 指数下溢若一个负指数超过了最小允许值(-126或-1022)则发生指数下溢通常把结果按机器零处理。 左规。左规时阶减1导致阶减小因此需要判断是否发生了指数下溢。其判断规则与指数上溢类似左规一次阶码减1然后判断阶码是否为全0来确定是否指数下溢。
2例题 3强制类型转换 无损char-int-long-doublefloat-double 范围、精度从小到大转换过程没有损失 有损 int-float可能会损失精度float尾数的数值位有1隐藏位23尾数位float-int可能会溢出也可能会损失精度如小数转整数
5、电路的基本原理
存储器芯片的基本结构 寻址 2.4 算数逻辑单元ALU
1、原码乘法运算 2、补码乘法运算
机器实现 手算步骤 3、原码除法运算
机器运算过程 恢复余数法 加减交替法 4、补码除法运算 5、强制类型转换 有符号数和无符号数的转换 转换只改变数值而两个变量对应的每位都是一样的。 不同字长整数之间的转换 长整数变短整数高位截断保留低位。短整数变长整数符号扩展。
6、数据的存储和排列
1大端方式和小端方式 通常用**最低有效字节LSB和最高有效字节MSB**来分别表示数的低位和高位。例如在32位计算机中一个int型变量i的机器数为01234567H其最高有效字节MSB01H最低有效字节LSB67H。 大端方式按从最高有效字节到最低有效字节的顺序存储数据即最高有效字节存放在前面 小端方式按从最低有效字节到最高有效字节的顺序存储数据即最低有效字节存放在前面
2边界对齐方式 假设存储字长为32位可按字节、半字和字寻址。对于机器字长为32位的计算机数据以边界对齐方式存放半字地址一定是2的整数倍字地址一定是4的整数倍这样无论所取的数据是字节、半字还是字均可一次访存取出。
边界对齐方式相对边界不对齐方式是一种空间换时间的思想。精简指令系统计算机RISC通常采用边界对齐方式因为对齐方式取指令时间相同因此能适应指令流水。
2.5 本章提出的问题与回答
1、在计算机中为什么要采用二进制来表示数据
从可行性来说采用二进制只有0和1两个状态能够表示0、1两种状态的电子器件很多如开关的接通和断开、晶体管的导通和截止、磁元件的正负剩磁、电位电平的高与低等都可表示0、1两个数码。使用二进制电子器件具有实现的可行性。从运算的简易性来说二进制数的运算法则少运算简单使计算机运算器的硬件结构大大简化(十进制的乘法九九口诀表有55条公式而二进制乘法只有4条规则)从逻辑上来说由于二进制0和1正好和逻辑代数的假( false)和真(true)相对应有逻辑代数的理论基础用二进制表示二值逻辑很自然。
2、计算机在字长足够的情况下能够精确地表示每个数吗若不能请举例说明。
计算机采用二进制来表示数据在字长足够时可以表示任何一个整数。而二进制表示小数时只能够用1(2)的和的任意组合表示即使字长很长也不可能精确表示出所有小数只能无限逼近。例如0.1就无法用二进制精确地表示。
3、字长相同的情况下浮点数和定点数的表示范围与精度有什么区别
字长相同时浮点数取字长的一部分作为阶码所以表示范围比定点数要大而取一部分作为阶码也就代表着尾数部位的有效位数减少而定点数字长的全部位都用来表示数值本身精度要比同字长的浮点数更大。
4、用移码表示浮点数的阶码有什么好处
移码的两个好处
①浮点数进行加减运算时时常要比较阶码的大小相对于原码和补码移码比较大小更方便。②检验移码的特殊值(0和max)时比较容易。阶码以移码编码时的特殊值如下。0:表示指数为负无穷大相当于分数分母无穷大整个数无穷接近0,在尾数也为0时可用来表示0:尾数不为零表示未正规化的数。max:表示指数正无穷大若尾数为0,则表示浮点数超出表示范围正负无穷大尾数不为0,则表示浮点数运算错误。
2.6 常见问题和易混淆知识点
1、如何表示一个数值数据计算机中的数値数据都是二进制数吗
在计算机内部数值数据的表示方法有以下两大类。
①直接用二进制数表示。分为无符号数和有符号数有符号数又分为定点数表示和浮点数表示。无符号数用来表示无符号整数如地址等信息定点数用来表示整数浮点数用来表示实数。②二进制编码的十进制数一般都采用8421码(也称NBCD码)来表示用来表示整数。
所以计算机中的数值数据虽然都用二进制来编码表示但不全是二进制数也有用十进制数表示的。后面一章有关指令类型的内容中就有对应的二进制加法指令和十进制加法指令。
2、在高级语言编程中所定义的 unsigned/short/int/long/float/double型数据是怎么表示的什么称为无符号整数的“溢出”
unsigned型数据就是无符号整数不考虑符号位。直接用全部二进制位对数值进行编码得到的就是无符号数一般都用补码表示。int型数据就是定点整数一般用补码表示。int型数据的位数与运行平台和编译器有关一般是32位或16位。例如真值是-12的int型整数在机器内存储的机器数假定用32位寄存器寄存是1111-1111-1111-1111-1111-1111-1111-0100。long型数据和short型数据也都是定点整数只是位数不同分别是长整型和短整型数通常用补码表示。float型数据是用来表示实数的浮点数。现代计算机用IEEE754标准表示浮点数其中32位单精度浮点数就是float型64位双精度浮点数就是 double型。
需要注意的是C语言中的int型和 unsigned型变量的存储方式没有区别都按照补码的形式存储在不溢出范围内的加减法运算也是相同的只是int型变量的最高位代表符号位而unsigned型中的最高位表示数值位两者在C语言中的区别体现在输出时到底是采用%d还是采用%u。
对于无符号定点整数来说若寄存器位数不够则计算机运算过程中一般保留低n位舍弃高位。这样会产生以下两种结果
①保留的低n位数不能正确表示运算结果。在这种情况下意味着运算的结果超出了计算机所能表达的范围有效数值进到了第n1位称此时发生了“溢出”现象②保留的低n位数能正确表达计算结果即高位的舍去并不影响其运算结果。
3、如何判断一个浮点数是否是规格化数
为了使浮点数能尽量多地表示有效位数一般要求运算结果用规格化数形式表示。规格化浮点数的尾数小数点后的第一位一定是个非零数。因此对于原码编码的尾数来说只要看尾数的第一位是否为1就行对于补码表示的尾数只要看符号位和尾数最高位是否相反。需要注意的是IEEE754标准的浮点数尾数是用原码编码的。
4、对于位数相同的定点数和浮点数可表示的浮点数个数比定点数个数多吗
不是可表示的数据个数取决于编码所采用的位数。编码位数一定编码出来的数据个数就是一定的。m位编码只能表示2m个数所以对于相同位数的定点数和浮点数来说可表示的数据个数应该一样多(有时可能由于一个值有两个或多个编码对应编码个数会有少量差异)。
5、浮点数如何进行舍入
舍入方法选择的原则是
①尽量使误差范围对称使得平均误差为0即有舍有入以防误差积累。②方法要简单以加快速度。
IEEE754有4种舍入方式
①就近舍入舍入为最近可表示的数若结果值正好落在两个可表示数的中间则一般选择舍入结果为偶数②正向舍入朝∞方向舍入即取右边的那个数③负向舍入朝-∞方向舍入即取左边的那个数④截去朝0方向舍入即取绝对值较小的那个数
6、现代计算机中是否要考虑原码加减运算如何实现?
因为现代计算机中浮点数采用IEEE754标准所以在进行两个浮点数的加减运算时必须考虑原码的加减运算因为IEEE754规定浮点数的尾数都用原码表示。
原码的加减运算可以有以下两种实现方式
1)转换为补码后用补码加减法实现结果再转换为原码。2)直接用原码进行加减运算符号和数值部分分开进行具体过程见原码加减运算部分。
7、长度为n1的定点数按照不同的编码方式表示的数值范围是多少
各编码方式的数值范围见表 8、设阶码和尾数均用补码表示阶码部分共K1位(含1位阶符)尾数部分共n1位含1位数符则这样的浮点数的表示范围是多少
浮点数的表示范围见表 三、存储系统
【复习提示】 本章是历年考査的重点特别是有关 Cache和存储器扩展的知识点容易出综合题。此外存储器的分类与特点存储器的扩展(芯片选择、连接方式、地址范围等)低位交叉存储器Cache的相关计算与替换算法虚拟存储器与快表也容易出选择题。读者应在掌握基本原理和理论的基础上多结合习题进行练习复习以加深和巩固。另外读者还需掌握存在 Cache和TLB的计算机中的地址翻译与 Cache映射问题该问题在《操作系统考研复习指导》中有详细说明。 本章有两个难点
一是 Cache映射规律、容量计算及替换特性二是交又存储器访问时间和访问效率;二者都可与第5章的大题综合或与第6章总线访问内存时间的计算问题综合。 3.1 存储器概述
3.1.1 存储器的分类 相联存储器的基本原理是把存储单元所存内容的某一部分作为检索项即关键字项去检索该存储器并将存储器中与该检索项符合的存储单元内容进行读出或写入。所以它是 按内容或地址进行寻址的价格较为昂贵。 一般用来制作TLB、相联 Cache等。 1、按在计算机中的作用对存储器分类
主存储器。简称主存又称内存储器内存用来存放计算机运行期间所需的程序和数据CPU可以直接随机地对其进行访问也可以和高速缓冲存储器Cache及辅助存储器交换数据。其特点是容量较小、存取速度较快、每位的价格较高。辅助存储器。简称辅存又称外存储器外存用来存放当前暂时不用的程序和数据以及一些需要永久性保存的信息。辅存的内容需要调入主存后才能被CPU访问。其特点是容量大、存取速度较慢、单位成本低。高速缓冲存储器。简称Cache位于主存和CPU之间用来存放当前CPU经常使用的指令和数据以便CPU能高速地访问它们。Cache的存取速度可与CPLU的速度相匹配但存储容量小、价格高。现代计算机通常将它们制作在CPU中。
存储系统层次结构主要体现在缓存一主存和主存一辅存这两个存储层次上 缓存-主存层次主要解决CPU和主存速度不匹配的问题。主存-辅存层次主要解决存储系统的容量问题。
2、按存储介质分类
半导体存储器以半导体器件存储信息主存、Cache磁表面存储器以磁性材料存储信息磁盘、磁带光存储器光盘
3、按存取方式分类
随机存储器RAM存储器的任何一个存储单元的内容都可以随机存取而且存取时间与存取单元的物理位置无关主要用作主存或高速缓冲存储器。 静态RAM触发器原理寄存信息动态RAM电容充电原理寄存信息优点读写方便使用灵活主要用于主存或高速缓重存储器 只读存储器ROM存储器的内容只能随机读出而不能写入。ROM一旦有了信息则不能轻易改变即使断电内容也不会丢失。 掩膜式只读存储器MROM一次可编程只读存储器PROM可擦除可编程只读存储器EPROM不能取代RAM因为编程次数有限且写入速度很慢。闪速存储器Flash Memory由E2ROM发展得到应用U盘。固态硬盘SSD 相联存储器(CAM) 不根据地址而是根据存储内容和指定地址方式来进行存取的存储器可以实现快速地查找快表。 串行访问存储器对存储单元进行读/写操作时需按其物理位置的先后顺序寻址包括顺序存取存储器如磁带与直接存取存储器如磁盘。 顺序存取存储器SAM内容只能顺序读取存取时间长短与信息在存储体上的物理位置有关 如磁带。优点是结构简单成本低廉容量大适合于存放顺序访问的信息。缺点是存取速度慢不方便随机访问。 直接存取存储器DAM内容可以直接读取存取时间与信息在存储体上的物理位置无关 如磁盘、光盘优点是存取速度快方便随机访问。缺点是结构复杂成本较高容量有限适合于存放长期随机访问的信息。
4、按信息的可保存性分类
断电后存储信息即消失的存储器称为易失性存储器如RAM。断电后信息仍然保持的存储器称为非易失性存储器如ROM磁表面存储器和光存储器。若某个存储单元所存储的信息被读出时原存储信息被破坏则称为破坏性读出若读出时被读单元原存储信息不被破坏则称为非破坏性读出。具有破坏性读出性能的存储器每次读出操作后必须紧接一个再生的操作以便恢复被破坏的信息。
易失性存储器RAM、主存、Cache非易失性存储器ROM、磁表面存储器、光存储器破坏性读出信息读出后原存储信息被破坏如DRAM芯片读出数据后要进行重写非破坏性读出信息读出后原存储信息不被破坏如SRAM芯片、磁盘、光盘 5、信息的可更改性 读写存储器Read/Write Memory即可读、也可写如磁盘、内存、Cache 只读存储器Read Only Memory只能读不能写如实体音乐专辑通常采用CD-RGM实体电影采用蓝光光碟BIOS通常写在ROM中。
3.1.2 存储器的性能指标
存储器的性能指标有3个主要的性能指标存储容量单位成本和存储速度。
存储容量 存储字数*字长 存储字数表示存储器的地址空间大小字长表示一次存取操作的数据量。单位成本每位价格总成本/总容量存储速度数据传输率数据的宽度/存储周期
存取时间指从启动一次存储器操作到完成该操作所经历的时间从存储器读出或写入一次信息所需要的平均时间分为读出时间和写入时间。
存取周期它是指存储器进行一次完整的读写操作所需的全部时间即连续两次独立访问存储器操作读或写操作之间所需的最小时间间隔。
主存带宽主存带宽又称数据传输率表示每秒从主存进出信息的最大数量单位为字/秒字节/秒。
**存取时间不等于存储周期通常存储周期大于存取时间。**因为任何一种存储器在读写操作之后总要有一段恢复内部状态的复原时间。 存取周期Tm/读写周期/访问周期存储器进行一次完整的读写操作所需的全部时间连续两次独立访问存储器操作读或写操作之间所需的最小时间间隔。主存带宽Bm/数据传输率每秒从主存进入信息的最大数量单位为字/秒、字节/秒B/s或位/秒b/s。
3.2 存储器的层次结构
1、存储器的层次化结构 2、存储器的基本概念 3、主存储器
主存储器由DRAM实现靠处理器的那一层Cache则由SRAM实现它们都属于易失性存储器只要电源被切断原来保存的信息便会丢失。
DRAM的每位价格低于SRAM速度也慢于SRAM价格差异主要是因为制造SRAM需要更多的硅。 主存储器的简单模型 4、存储器芯片的基本结构 5、寻址 3.3 半导体随机存储器
3.3.1 SRAM和DRAM
通常把存放一个二进制位的物理器件称为存储元它是存储器的最基本的构件。地址码相同的多个存储元构成一个存储单元。若干存储单元的集合构成存储体。
1半导体存储芯片的基本结构
存储器芯片由存储体、I/O读写电路、地址译码和控制电路等部分组成。 存储体存储矩阵。存储体是存储单元的集合它由行选择线X和列选择线Y来选择所访问单元存储体的相同行、列上的位同时被读出或写入。地址译码器。用来将地址转换为译码输出线上的高电平以便驱动相应的读写电路。
采用地址线复用技术使用行列地址双译码结构行、列地址分两次送是为了减少选通线数量。 若有28个芯片单地址译码需要256条选通线而双地址译码只需要242432条选通线。 I/O控制电路。用以控制被选中的单元的读出或写入具有放大信息的作用。片选控制信号。单个芯片容量太小往往满足不了计算机对存储器容量的要求因此需用一定数量的芯片进行存储器的扩展。在访问某个字时必须“选中”该存储字所在的芯片而其他芯片不被“选中”因此需要有片选控制信号。读/写控制信号。根据CPU给出的读命令或写命令控制被选中单元进行读或写。
2SRAM和DRAM的比较 3DRAM的刷新 集中刷新指在一个刷新周期内利用一段固定的时间依次对存储器的所有行进行逐一再生在此期间停止对存储器的读写操作称为“死时间”又称访存“死区”。 优点读写操作时不受刷新工作的影响缺点在集中刷新期间死区不能访问存储器。 分散刷新把对每行的刷新分散到各个工作周期中。这样一个存储器的系统工作周期分为两部分前半部分用于正常读、写或保持后半部分用于刷新。这种刷新方式增加了系统的存取周期如存储芯片的存取周期为0.5μs则系统的存取周期为1μs。 优点是没有死区缺点是加长了系统的存取周期降低了整机的速度。 异步刷新异步刷新是前两种方法的结合它既可缩短“死时间”又能充分利用最大刷新间隔为2ms的特点。具体做法是将刷新周期除以行数得到两次刷新操作之间的时间间隔t利用逻辑电路每隔时间t产生一次刷新请求。 这样可以避免使CPU连续等待过长的时间而且减少了刷新次数从根本上提高了整机的工作效率。 4SRAM的读周期 5SRAM的写周期 6RAM-易失性存储器 3.3.2 只读存储器
RAM-易失性存储器 ROMRead-Only Memory
ROM中一旦有了信息就不能轻易改变即使掉电也不会丢失。 闪速存储器Flash Memory由于闪存需要先擦除在写入因此闪存的**“写”速度要比“读”速度更慢**。应用U盘、SD卡。
知识回顾和总结 3.3.3 主存的基本组成存储系统
MAR和MDR是直接做在CPU芯片上面的 CPU访问主存过程
CPU首先把被访问单元的地址送到MAR中通过地址线将主存地址送到主存中的地址寄存器以便地址译码器进行译码选中相应单元CPU将读写信号通过控制线送到主存的读写控制电路 写操作CPU同时将要写的信息送到MDR中在读写控制电路的控制下经数据线将信号写入选中的单元读操作主存读出选中单元的内容送到数据线然后送到MDR中
数据线的宽度与MDR的宽度相同地址线的宽度与MAR的宽度相同。地址线的位数决定了主存地址空间的最大可寻址范围。例如36位地址的最大寻址范围为0 ~ 236-1即地址从0开始编号。 例1某一SRAM芯片其容量为1024×8位除电源和接地端外该芯片的引脚的最小数目为 按字节8位取地址需要8位数据线共有1024210个存储单元SRAM不复用地址线需要10位地址线还需要1片选线2位读写控制线共8101221位。 例2某一DRAM芯片其容量为1024×8位除电源和接地端外该芯片的引脚的最小数目为 DRAM复用地址线分两次传递地址地址线减半需要5位地址线片选线需要行选通线和列选通线增加到2根共852217。 注意SRAM和DRAM的区别DRAM采用地址复用技术而SRAM不采用。 3.4 主存储器与CPU的连接
3.4.1 连接原理
单个芯片的容量不可能很大往往通过存储器芯片扩展技术将多个芯片集成在一个内存条上然后由多个内存条及主板上的ROM芯片组成计算机所需的主存空间再通过总线与CPU相连。
内存条插槽就是存储器总线内存条中的信息通过内存条的引脚再通过插槽内的引线连接到主板上通过主板上的导线连接到CPU芯片。
主存与CPU连接原理
1主存储器通过数据总线、地址总线和控制总线与CPU连接。2数据总线的位数与工作频率的乘积正比于数据传输率。3地址总线的位数决定了可寻址的最大内存空间。4控制总线读/写指出总线周期的类型和本次输入/输出操作完成的时刻。 3.4.2 主存容量的扩展
1、位扩展 用多个存储器件对字长进行扩充增加存储字长使其数据位数与CPU的数据线数相等。 连接方式将多个存储芯片的地址端、片选端和读写控制端相应并联数据端分别引出。 注意仅采用位扩展时各芯片连接地址线的方式相同但连接数据线的方式不同在某一时刻选中所有的芯片所以片选信号CS要连接到所有芯片。 2、字扩展
增加存储器中字的数量而位数不变。
CS片选线决定主存是否工作这种写法是高电平有效WE读写控制线A0~A13地址线D0~D7数据线 连接方式将芯片的地址线、数据线、读写控制线相应并联而由片选信号来区分各芯片的地址范围。 注意仅采用字扩展时各芯片连接地址线的方式相同连接数据线的方式也相同但在某一时刻只需选中部分芯片所以通过片选信号CS或采用译码器设计连接到相应的芯片。 1译码器功能 2带译码器的字扩展 3线选法和译码片选法的区别 3、字位同时扩展法
字位同时扩展是指既增加存储字的数量又增加存储字长。 如上图所示用8片16K×4位的RAM芯片组成64K×8位的存储器。每两片构成一组16K×8位的存储器位扩展4组便构成64K×8位的存储器字扩展。 注意采用字位同时扩展时各芯片连接地址线的方式相同但连接数据线的方式不同而且需要通过片选信号CS或采用译码器设计连接到相应的芯片。 4、例题
设CPU有16根地址线8根数据线并用MREQ作为访存控制信号低电平有效用WR作为读/写控制信号高电平为读低电平为写。现有下列存储芯片1K×4位RAM4K×8位RAM8K×8位RAM2K×8位ROM4K×8位ROM8K×8位ROM及74LS138译码器和各种门电路。画出CPU与存储器的连接图要求 1主存地址空间分配6000H67FFH为系统程序区6800H6BFFH为用户程序区。 2合理选用上述存储芯片说明各选几片 3详细画出存储芯片的片选逻辑图。 补充系统程序区用ROM用户程序区用RAM。
解题
步骤一 步骤二 步骤三
4、知识回顾和总结 3.5 双端口RAM和多模块存储器
3.5.1 双端口RAM
双端口顾名思义就是存储器芯片提供两个端口给两个CPU进行访问。 3.5.2 多模块存储器 3.5.3 多体并行存储器
多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作又能交叉工作。 多体并行存储器分为高位交叉编址(顺序方式)和低位交叉编址(交叉方式)两种。 交叉存储器实际上是一种模块式的存储器它能并行执行多个独立的读/写操作。
3.5.4 知识回顾 3.6 高速缓冲存储器 3.6.1 程序访问的局部性原理 空间局部性在最近的未来要用到的信息指令和数据很可能与现在正在使用的信息在存储空间上是邻近的。因为指令通常是顺序存放、 顺序执行的数据一般也是以向量、数组等形式簇聚地存储在一起的。
时间局部性在最近的未来要用到的信息很可能是现在正在使用的信息因为程序中存在循环。
高速缓冲技术就是利用局部性原理把程序中正在使用的部分数据存放在一个高速的、容量较小的Cache 中使CPU的访存操作大多数针对Cache进行从而提高程序的执行速度。
性能分析 例题 本节回顾
3.6.2 Cache的基本工作原理
1、工作原理 1Cache特点 Cache块Cache和主存都被划分为相等的块Cache块又称Cache行每块由若干字节组成块的长度称为块长Cache行长)。由于Cache的容量远小于主存的容量所以Cache中的块数要远少于主存中的块数它仅保存主存中最活跃的若干块的副本。Cache按照某种策略预测CPU在未来一段时间内欲访存的数据将其装入Cache。 2Cache工作流程 当CPU发出读请求时若访存地址在Cache中命中就将此地址转换成Cache地址直接对Cache进行读操作与主存无关若Cache不命中则仍需访问主存并把此字所在的块一次性地从主存调入Cache。地址映射若此时Cache已满则需根据某种替换算法用这个块替换Cache中原来的某块信息。替换算法 注意某些计算机中也采用同时访问Cache和主存的方式若Cache命中则主存访问终止否则访问主存并替换Cache。 3整个过程全部由硬件实现 值得注意的是CPU与Cache之间的数据交换以字为单位而Cache与主存之间的数据交换则以Cache块为单位。
2、Cache和主存的映射方式
Cache 行中的信息是主存中某个块的副本地址映射是指把主存地址空间映射到Cache地址空间即把存放在主存中的信息按照某种规则装入Cache。
由于Cache行数比主存块数少得多因此主存中只有一部分块的信息可放在Cache中因此在Cache中要为每块加一个标记指明它是主存中哪一块的副本。该标记的内容相当于主存中块的编号。为了说明Cache行中的信息是否有效每个Cache行需要一个有效位。 1全相联映射 主存中的每一块可以装入Cache中的任何位置每行的标记用于指出该行取自主存的哪一块所以CPU访存时需要与所有Cache行的标记进行比较。 2直接映射 主存块只能放到特定的某个Cache行若这个位置已有内容则产生冲突原来的块被替换无需替换算法 直接映射的关系可定义为Cache行号 主存块号 % Cache总行数 。 假设Cache有2c行主存有2m块在直接映射方式主存的第0块、第2c块、第2c1块…只能映射到第0行。
由此看出主存块号低c位正好是要装入Cache的行号。给每个Cache设置长为tm-c的标记tag当主存某块调入Cache后就将其块号的高t位设置在对应Cache行的标记中。 首先根据访存地址中间的c位找到对应的Cache行将对应Cache行中的标记和主存地址的高t位标记进行比较若相等且有效位为1则访问Cache“命中”此时根据主存地址中低位的块内地址在对应的Cache行中存取信息若不相等或有效位为0则“不命中”此时CPU从主存中读出该地址所在的一块信息送到对应的Cache行中将有效位置1并将标记设置为地址中的高t位同时将该地址中的内容送CPU。 3组相联映射
主存块可以放到特定分组中的任意位置。常用的有2路组相联映射。 组相联映射的关系可以定义为 Cache组号 主存块号 % Cache组数Q 路数越大即每组Cache行的数量越大发生块冲突的概率越低但相联比较电路也越复杂。选定适当的数量可使组相联映射的成本接近直接映射而性能上仍接近全相联映射。 CPU访存过程如下
首先根据访存地址中间的组号找到对应的Cache组将对应Cache组中每个行的标记与主存地址的高位标记进行比较若有一个相等且有效位为1则访问Cache命中此时根据主存地址中的块内地址在对应Cache行中存取信息若都不相等或虽相等但有效位为0则不命中此时CPU从主存中读出该地址所在的一块信息送到对应Cache组的任意一个空闲行中将有效位置1并设置标记同时将该地址中的内容送CPU。
3、本节回顾 3.6.3 Cache中主存块的替换算法 全相联映射和组相联映射需要直接相连映射不需要。从主存向Cache传送一个新块当Cache或Cache组中的空间已被占满时就需要使用替换算法置换Cache行。 随机算法(RAND): 随机地确定替换的 Cache块。它的实现比较简单但没有依据程序访问的局部性原理故可能命中率较低。 先进先出算法(FIFO): 选择最早调入的行进行替换。它比较容易实现但也没有依据程序访问的局部性原理可能会把一些需要经常使用的程序块如循环程序也作为最早进入 Cache的块替换掉。 近期最少使用算法LRU): 依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行平均命中率要比FIFO要高是堆栈类算法。 LRU算法对每行设置一个计数器 Cache每命中一次命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行的计数值将计数值最大的行换出。 特点基于“局部性原理”近期被访问过的主存块在不久的将来也很有可能被再次访问因此淘汰最久没被访问过的块是合理的。LRU算法的实际运行效果优秀Cache命中率高。 若被频繁访问的主存块数量Cache行的数量则有可能发生“抖动”如[123451234512… 最不经常使用算法(LFU): 将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器新行建立后从0开始计数每访问一次被访问的行计数器加1,需要替换时比较各特定行的计数值将计数值最小的行换出。 特点曾经被经常访问的主存块在未来不一定会用到如微信视频聊天相关的块并没有很好地遵循局部性原理因此实际运行效果不如LRU。
例题
1 2 3 小结 Cache写策略
1写策略-写命中 写回法当CPU对Cache写命中时只修改Cache的内容而不立即写入主存只有当此块被换出时才写回主存。 减少了访存次数但存在数据不一致的隐患。每个Cache行必须设直一个标志位脏位以反映此块是否被CPU修改过。 全写法当CPU对Cache写命中时必须把数据同时写入Cache和主存一般使用写缓冲write buffer。 访存次数增加速度变慢但更能保证数据一致性。 2写策略-写不命中 写分配法 当CPU对Cache写不命中时把主存中的块调入Cache在Cache中修改。通常搭配写回法使用。 非写分配法 当CPU对Cache写不命中时只写入主存不调入Cache。搭配全写法使用。只有“读”未命中时才调入Cache。 3小结 4多级Cache 现代计算机常采用多级Cache离CPU越近的速度越快容量越小离CPU越远的速度越慢容量越大。各级Cache之间常采用**“全写法非写分配法”**Cache-主存 之间常采用**“写回法写分配法”**
Cache工作原理知识回顾 Cache例题 1 2 3 4 5补充
Cache工作原理流程图 3.7 虚拟存储器 主存和辅存共同构成了虚拟存储器二者在硬件和系统软件的共同管理下工作。对于应用程序员而言虚拟存储器是透明的。虚拟存储器具有主存的速度和辅存的容量。 3.7.1 虚拟存储器的基本概念 虚拟存储器将主存或辅存的地址空间统一编址形成一个庞大的地址空间在这个空间内用户可以自由编程而不必在乎实际的主存容量和程序在主存中实际的存放位置。 1地址空间
逻辑地址又称虚地址用户编程允许涉及的地址。虚地址要比实地址大很多。程序空间又称虚拟空间虚地址对应的存储空间。虚拟存储器的地址空间如下图所示。物理地址又称实地址实际的主存单元地址。主地址空间又称实地址空间实地址对应的存储空间。
2虚拟地址工作流程
CPU使用虚地址时由辅助硬件找出虚地址和实地址之间的对应关系并判断这个虚地址对应的存储单元内容是否已装入主存。
若已在主存中则通过地址变换CPU可直接访问主存指示的实际单元若不在主存中则把包含这个字的一页或一段调入主存后再由CPU访问。若主存已满则采用替换算法置换主存中的交换块即页面。
3映射方式与写机制
虚拟存储机制采用全相联映射每个虚页面可以存放到对应主存区域的任何一个空闲页位置。当进行写操作时不能每次写操作都同时写回磁盘因而在处理一致性问题时采用回写法。 3.7.2 页式虚拟存储器 页式虚拟存储器以页为基本单位。虚拟空间与主存空间都被划分成同样大小的页。 1概念
实页主存的页又称页框。虚页虚存的页。虚拟地址虚页号页内地址。页表页表是一张存放在主存中的虚页号和实页号的对照表它记录程序的虚页调入主存时被安排在主存中的位置。页表一般长久地保存在内存中。虚拟地址到物理地址的转换是由页表实现的。
2页表
有效位又称装入位用来表示对应页面是否在主存 若为1则表示该虚拟页已从外存调入主存此时页表项存放该页的物理页号若为0则表示没有调入主存此时页表项可以存放该页的磁盘地址。 脏位又称修改位用来表示页面是否被修改过虚存机制中采用回写策略利用脏位可判断替换时是否需要写回磁盘。引用位又称使用位用来配合替换策略进行设置例如是否实现最先调入FIFO位或最近最少用LRU位策略等。页表的使用 CPU执行指令时需要先将虚拟地址转换为主存物理地址。 页表基址寄存器存放进程的页表首地址然后根据虚拟地址高位部分的虚拟页号找到对应的页表项 若装入位为1则取出物理页号和虚拟地址低位部分的页内地址拼接形成实际物理地址若装入位为0则说明缺页需要操作系统进行缺页处理。
3快表TLB
问题由地址转换过程可知访存时先访问一次主存去查页表再访问主存才能取得数据。如果缺页那么还要进行页面替换、页面修改等因此采用虚拟存储机制后访问主存的次数更多了。解决将近期访问的页表项放入更高速的存储器组成的快表TLB可加快地址变换的速度。相应的把放在主存中的页表称为慢表。在地址转换时首先查找快表若命中则无须访问主存中的页表。结构快表通常采用全相联或组相联方式。每个TLB项由页表表项内容加上一个TLB标记字段组成 TLB标记用来表示该表项取自页表中哪个虚页号对应的页表项全相联方式TLB标记对应该页表项的虚页号组相联方式TLB标记对应虚页号的高位部分而虚页号的低位部分用于选择TLB组的组索引。 注意区别快表中存储的是页表项的副本Cache中存储的是主存块的副本。 4具有TLB和Cache的多级存储系统 CPU利用虚页号查询快表TLB。TLB每一项都有一个比较器查找时将虚页号与每个TLB标记字段同时进行比较 若有某一项相等且对应有效位为1则TLB命中此时可直接通过TLB进行地址转换 若未命中则TLB缺失需要访问主存去查页表。 地址转换指将虚拟地址转换为物理地址。 TLB未命中查询页表慢表。图中所示的是两级页表方式虚页号被分成页目录索引和页表索引两部分由这两部分得到对应的页表项从而进行地址转换并将相应表项调入TLB 若TLB已满则还需要采用替换策略。 根据物理地址查询Cache。完成由虚拟地址到物理地址的转换后Cache机构根据映射方式将物理地址划分成多个字段然后根据映射规则找到对应的Cache行或组 将对应Cache行中的标记与物理地址中的高位部分进行比较若相等且对应有效位为1则Cache命中此时根据块内地址取出对应的字送CPU。 查找时快表和慢表也可以同步进行若快表中有此虚页号则能很快地找到对应的实页号并使慢表的查找作废从而就能做到虽采用虚拟存储器但访问主存速度几乎没有下降。 在一个具有Cache和TLB的虚拟存储系统中CPU一次访存操作可能涉及TLB、页表、Cache、主存和磁盘的访问。
CPU访存过程中存在三种缺失情况
①TLB缺失要访问的页面的页表项不在TLB中②Cache缺失要访问的主存块不在Cache中③Page缺失要访问的页面不在主存中。这三种缺失的可能组合情况如下表所示。 最好的情况是第1种组合此时无须访问主存第2种和第3种组合都需要访问一次主存第4种组合需要访问两次主存第5种组合发生“缺页异常需要访问磁盘并且至少访问两次主存。Cache缺失处理由硬件完成。 缺页处理由软件完成操作系统通过“缺页异常处理程序”来实现 而TLB缺失既可以用硬件又可以用软件来处理。 5例题 3.7.3 段式虚拟存储器 段式虚拟存储器中的段是按程序的逻辑结构功能模块划分的各个段的长度因程序而异。 1虚拟地址段号段内地址
2段表是程序的逻辑段和在主存中存放位置的对照表实现虚拟地址到实地址之间的变换。
段表的每行记录与某个段对应的段号、装入位、段起点和段长等信息。由于段的长度可变所以段表中要给出各段的起始地址与段的长度。
3访存方式
CPU根据虚拟地址访存时首先根据段号与段表基地址拼接成对应的段表行然后根据该段表行的装入位判断该段是否已调入主存 装入位为“1表示该段已调入主存装入位为“0表示该段不在主存中。 已调入主存时从段表读出该段在主存中的起始地址与段内地址偏移量相加得到对应的主存实地址。下图为段式虚拟存储器的地址变换过程。
4特点
优点段的分界与程序的自然分界相对应因而具有逻辑独立性使得它易于编译、管理、修改和保护也便于多道程序的共享缺点因为段长度可变分配空间不便容易在段间留下碎片不好利用造成浪费。 3.7.4 段页式虚拟存储器
1定义
把程序按逻辑结构分段每段再划分为固定大小的页主存空间也划分为大小相等的页程序对主存的调入、调出仍以页为基本传送单位每个程序对应一个段表每段对应一个页表虚拟地址段号段内页号页内地址
2内存布局
在段页式虚拟存储器中每个程序对应一个段表每段对应一个页表段的长度必须是页长的整数倍段的起点必须是某一页的起点。
3地址转换
虚地址分为段号、段内页号、页内地址三部分。
CPU根据虚地址访存时首先根据段号得到段表地址然后从段表中取出该段的页表起始地址与虚地址段内页号合成得到页表地址最后从页表中取出实页号与页内地址拼接形成主存实地址。
4特点
优点兼具页式和段式虚拟存储器的优点可以按段实现共享和保护。缺点在地址变换过程中需要两次查表系统开销较大。
3.7.5 快表TLB
页表、段表存放在主存中收到虚拟地址后要先访问主存査询页表、段表进行虚实地址转换放在主存中的页表称为慢表(Page)提高变换速度→用高速绥沖存储器存放常用的页表项 → 快表(TLB) 3.7.6 虚拟存储器与Cache的比较
相同点
1最终目标都是为了提高系统性能两者都有容量、速度、价格的梯度。2都把数据划分为小信息块并作为基本的传递单位虚存系统的信息块更大。3都有地址的映射、替换算法、更新策略等问题。4依据程序的局部性原理应用“快速缓存的思想”将活跃的数据放在相对高速的部件中。
不同点 1Cache主要解决系统速度而虚拟存储器却是为了解决主存容量。 2Cache全由硬件实现是硬件存储器对所有程序员透明而虚拟存储器由OS和硬件共同实现是逻辑上的存储器对系统程序员不透明但对应用程序员透明。 主存一辅存实现虚拟存储系统解决了主存容量不够的问题 Cache-主存解决了主存与CPU速度不匹配的问题 3对于不命中性能影响因为CPU的速度约为Cache的10倍主存的速度为硬盘的100倍以上因此虚拟存储器系统不命中时对系统性能影响更大。 4CPU与Cache和主存都建立了直接访问的通路而辅存与CPU没有直接通路。也就是说在Cache不命中时主存能和CPU直接通信同时将数据调入Cache而虚拟存储器系统不命中时只能先由硬盘调入主存而不能直接和CPU通信。
3.8 本章提出的问题与回答
1、存储器的层次结构主要体现在何处为何要分这些层次计算机如何管理这些层次
存储器的层次结构主要体现在 Cache-主存 和 主存-辅存这两个存储层次上。Cache-主存层次在存储系统中主要 对CPU访存起加速作用即从整体运行的效果分析CPU访存速度加快接近于 Cache的速度而寻址空间和位价却接近于主存。主存-辅存层次在存储系统中主要 起扩容作用即从程序员的角度看他所使用的存储器的容量和位价接近于辅存而速度接近于主存。综合上述两个存储层次的作用从整个存储系统来看就达到了速度快、容量大、位价低的优化效果。主存与 Cache之间的信息调度功能全部由硬件自动完成。而主存与辅存层次的调度目前广泛采用虚拟存储技术实现即将主存与辅存的一部分通过软/硬结合的技术组成虚拟存储器程序员可用这个比主存实际空间物理地址空间大得多的虚拟地址空间逻辑地址空间编程当程序运行时再由软/硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。因此这两个层次上的调度或转换操作对于程序员来说都是透明的。
2、存取周期和存取时间有何区别
存取周期和存取时间的主要区别是存取时间仅为完成一次操作的时间而存取周期不仅包含操作时间而且包含操作后线路的恢复时间即存取周期存取时间恢复时间。(这是不是也可以解释为什么IC前端时序分析中有建立时间和保持时间吧)
3、在虚拟存储器中页面是设置得大一些好还是设置得小一些好
页面不能设置得过大也不能设置得过小。因为页面太小时平均页内剩余空间较少可节省存储空间但会使得页表增大而且页面太小时不能充分利用访存的空间局部性来提高命中率页面太大时可减少页表空间但平均页内剩余空间较大会浪费较多存储空间页面太大还会使页面调入/调出的时间较长。
3.9 常见问题和易混淆知识点
1、存取时间Ta就是存储周期Tm吗
不是。存取时间Ta是执行一次读操作或写操作的时间分为读出时间和写入时间。读出时间是从主存接收到有效地址开始到数据稳定为止的时间写入时间是从主存接收到有效地址开始到数据写入被写单元为止的时间。存储周期Tm是指存储器进行连续两次独立地读或写操作所需的最小时间间隔。所以存取时间Ta不等于存储周期Tm。通常存储周期Tm大于存取时间Ta。
2、Cache行的大小和命中率之间有什么关系
行的长度较大可以充分利用程序访问的空间局部性使一个较大的局部空间被一起调到Cache中因而可以增加命中机会。但是行长也不能太大主要原因有两个
行长大使失效损失变大。也就是说若未命中则需花更多时间从主存读块。行长太大 Cache项数变少因而命中的可能性变小。
3、发生取指令Cache缺失的处理过程是什么
1)程序计数器恢复当前指令的值。2)对主存进行读的操作。3)将读入的指令写入 Cache中更改有效位和标记位。4)重新执行当前指令。
4、关于 Cache的一些小知识
多级 Cache。现代计算机系统中一般采用多级的 Cache系统。CPU执行指令时先到速度最快的一级 Cache( LI Cache)中寻找指令或数据找不到时再到速度次快的二级Cache(L2 Cache)中找…最后到主存中找。指令 Cache和数据 Cache。指令和数据可以分别存储在不同的 Cache中 LI Cache一般会这么做这种结构也称哈佛 Cache其特点是允许CPU在同一个 Cache存储周期内同时提取指令和数据由于指令执行过程取指和取数据都有可能访问 Cache因此这一特性可以保证不同的指令同时访存。
四、指令系统
【复习提示】 指令系统是表征一台计算机性能的重要因素。读者应注意扩展操作码技术各种寻址方式的特点及有效地址的计算相对寻址有关的计算CISC与RISC的特点与区别。本章知识点出选择题的概率较大但也有可能结合其他章节出有关指令的综合题。2014年、2015年已连续两次出现指令系统和指令流水线的大题。指令系统格式和指令寻址方式与CPU指令执行过程部分紧密结合希望读者引起重视。 4.1 指令格式 4.1.1 指令的基本格式 地址码 操作码 扩展操作码 指令操作码 操作类型 小结回顾 4.2 指令寻址方式 4.2.1 指令的寻址方式
寻址方式是指寻找指令或操作数有效地址的方式即确定本条指令的数据地址及下一条待执行指令的地址的方法。寻址方式分为指令寻址和数据寻址两大类。
指令寻址 顺序寻址通过程序计数器PC加11个指令字长自动形成下一条指令的地址。跳跃寻址通过转移类指令实现。执行转移类指令导致的PC值改变跳跃的地址分为绝对地址由标记符直接得到和相对地址相对于当前指令地址的偏移量。 操作数类型 4.2.2 常见的数据寻址方式 通过寻址特征和形式地址求出有效地址 1隐含寻址 2立即寻址 3直接寻址 4间接寻址 5寄存器寻址 6寄存器间接寻址 7相对寻址 8基址寻址 9变址寻址 10堆栈寻址 11偏移寻址 12知识回顾与总结 4.2.3 数据存放方式
1编址与寻址 2大端方式和小端方式 3边界对齐 4.2.4 知识回顾与总结 4.3 CISC和RISC的基本概念
基本含义 特点 4.4 本章提出的问题与回答
1、什么是指令什么是指令系统为什么要引入指令系统
指令就是要计算机执行某种操作的命令一台计算机中所有机器指令的集合称为这台计算机的指令系统。引入指令系统后避免了用户与二进制代码直接接触使得用户编写程序更为方便。另外指令系统是表征一台计算机性能的重要因素它的格式与功能不仅直接影响到机器的硬件结构而且也直接影响到系统软件影响到机器的适用范围。
2、一般来说指令分为哪些部分每部分有什么用处
一条指令通常包括操作码字段和地址码字段两部分。其中操作码指出指令中该指令应该执行什么性质的操作和具有何种功能它是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息。地址码用于给出被操作的信息指令或数据的地址包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用子程序的入口地址等。
3、对于一个指令系统来说寻址方式多和少有什么影响
寻址方式的多样化能让用户编程更为方便但多重寻址方式会造成CPU结构的复杂化详见下章也不利于指令流水线的运行。而寻址方式太少虽然能够提高CPU的效率但对于用户而言少数几种寻址方式会使编程变得复杂很难满足用户的需求。
4.5 常见问题和易混淆知识点
1、简述各常见指令寻址方式的特点和适用情况
立即寻址操作数获取便捷通常用于给寄存器赋初值。直接寻址相对于立即寻址缩短了指令长度。间接寻址扩大了寻址范围便于编制程序易于完成子程序返回。寄存器寻址的指令字较短指令执行速度较快。寄存器间接寻址扩大了寻址范围。基址寻址扩大了操作数寻址范围适用于多道程序设计常用于为程序或数据分配存储空间。变址寻址主要用于处理数组问题适合编制循环程序。相对寻址用于控制程序的执行顺序、转移等。基址寻址和变址寻址的区别两种方式有效地址的形成都是寄存器内容偏移地址但是在基址寻址中程序员操作的是偏移地址基址寄存器的内容由操作系统控制在执行过程中是动态调整的而在变址寻址中程序员操作的是变址寄存器偏移地址是固定不变的。
2、一个操作数在内存可能占多个单元怎样在指令中给出操作数的地址
现代计算机都采用字节编址方式即一个内存单元只能存放一字节的信息。一个操作数如char、int、foat、 double)可能是8位、16位、32位或64位等因此可能占用1个、2个、4个或8个内存单元。也就是说一个操作数可能有多个内存地址对应。 有两种不同的地址指定方式大端方式和小端方式。
大端方式指令中给出的地址是操作数最高有效字节(MSB)所在的地址。小端方式指令中给出的地址是操作数最低有效字节(LSB)所在的地址。
3、装入/存储(Load/ Store)型指令有什么特点
装入/存储型指令是用在规整型指令系统中的一种通用寄存器型指令风格。这种指令风格在RISC指令系统中较为常见。为了规整指令格式使指令具有相同的长度规定只有 Load/Store指令才能访问内存。而运算指令不能直接访问内存只能从寄存器取数进行运算运算的结果也只能送到寄存器。因为寄存器编号较短而主存地址位数较长通过某种方式可使运算指令和访存指令的长度一致。
这种装入/存储型风格的指令系统的最大特点是指令格式规整指令长度一致一般为32位。由于只有 Load/Store 指令オ能访问内存程序中可能会包含许多装入指令和存储指令与ー般通用寄存器型指令风格相比其程序长度会更长。
五、中央处理器
【复习提示】 中央处理器是计算机的中心也是本书的难点。其中数据通路的分析、指令执行阶段的节拍与控制信号的安排、流水线技术与性能分析易出综合题。而关于各种寄存器的特点、指令执行的各种周期与特点、控制器的相关概念、流水线的相关概念也极易出选择题。 5.1 CPU的功能和基本构造
5.1.1 CPU的基本功能
中央处理器CPU由运算器和控制器组成。
控制器的功能是负责协调并控制计算机各部件执行程序的指令序列包括取指令、分析指令和执行指令运算器的功能是对数据进行加工。 CPU的功能
指令控制完成取指令、分析指令和执行指令的操作即程序的顺序控制。操作控制一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号把各种操作信号送往相应的部件从而控制这些部件按指令的要求进行动作。时间控制对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。数据加工对数据进行算术和逻辑运算。中断处理对计算机运行过程中出现的异常情况和特殊请求进行处理。 5.1.2 CPU的基本结构
1、运算器
算术逻辑单元ALU主要功能是进行算术/逻辑运算。暂存寄存器用于暂存从主存读来的数据该数据不能存放在通用寄存器中否则会破坏其原有内容。暂存寄存器对应用程序员是透明的。累加寄存器ACC它是一个通用寄存器用于暂时存放ALU运算的结果信息可以作为加法运算的一个输入端。通用寄存器组如AX、BX、CX、DX、SP等用于存放操作数包括源操作数、目的操作数及中间结果和各种地址信息等。SP是堆栈指针用于指示栈顶的地址。程序状态字寄存器PSW保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息如溢出标志OF、符号标志SF、零标志ZF、进位标志CF等。PSW中的这些位参与并决定微操作的形成。移位器对操作数或运算结果进行移位运算。计数器CT控制乘除运算的操作步数。 通用寄存器供用户自由编程可以存放数据和地址。而指令寄存器是专门用于存放指令的专用寄存器不能由通用寄存器代替。 2、控制器
功能协调并控制计算机各部件执行程序的指令序列基本功能如下
分析指令操作码译码分析本条指令要完成什么操作产生操作数的有效地址。执行指令根据分析指令得到的“操作命令”和“操作数地址”形成操作信号控制序列控制运算器、存储器以及I/O设备完成相应操作中断处理管理总线及输入输出处理异常情况如掉电和特殊请求如打印机请求打印字符。
组成
程序计数器PC: 存放下一条指令在主存中的地址具有自增功能。容量log2存储容量指令寄存器IR存放当前正在执行的指令。容量指令字长指令译码器仅对操作码字段进行译码向控制器提供特定的操作信号。存储器地址寄存器MAR。用于存放要访问的主存单元的地址。容量log2存储容量存储器数据寄存器MDR。用于存放向主存写入的信息或从主存读出的信息。容量存储字长时序系统。用于产生各种时序信号它们都由统一时钟CLOCK分频得到。微操作信号发生器。根据IR的内容指令)、PSW的内容状态信息及时序信号产生控制整个计算机系统所需的各种控制信号其结构有组合逻辑型和存储逻辑型两种。 条件转移指令执行时需要对标志寄存器的内容进行测试判断是否满足转移条件。 转移指令时需要判断转移是否成功若成功则PC修改为转移指令的目标地址否则下一条指令的地址仍然为PC自增后的地址。 指令包括操作码字段和地址码字段但指令译码器仅对操作码字段进行译码借以确定指令的操作功能。 注意CPU内部寄存器大致可分为两类一类是用户可见的寄存器可对这类寄存器编程如通用寄存器组、程序状态字寄存器另一类是用户不可见的寄存器对用户是透明的不可对这类寄存器编程如存储器地址寄存器MAR、存储器数据寄存器MDR、指令寄存器IR。 、本节知识回顾 用户可见寄存器通用寄存器组、程序状态字寄存器、程序计数器可对这类寄存器编程用户不可见的寄存器存储器地址寄存器、存储器数据寄存器、指令寄存器、暂存寄存器不可对这类寄存器编程
5.2 指令执行过程
5.2.1 指令周期
指令周期CPU从主存中取出并执行一条指令的时间称为指令周期不同指令的指令周期可能不同。机器周期也称节拍或T周期指令周期常用若干机器周期来表示它是CPU操作的最基本单位。时钟周期一个机器周期包含若干时钟周期。 5.2.2 指令周期的数据流
1、取指周期 任务取指周期的任务是根据PC中的内容从主存中取出指令代码并存放在IR中
数据流 PC-①-MAR-②-地址总线-③-主存 当前指令地址送至存储器地址寄存器记做(PC)→ MAR CU发出读命令-④-控制总线-⑤-主存 CU发出读信号经控制总线传到主存记做1→R 主存-⑥-数据总线-⑦-MDR-⑧-IR (存放指令) 将MAR所指主存内容经数据总线送入MDR记做M(MAR)→MDR将MDR中的内容此时是指令送入IR记做(MDR)→IR CU发出控制信号-⑨-PC内容加1 CU发出控制信号形成下一条指令地址记做(PC)1→PC
2、间址周期 间址周期的作用是取操作数的有效地址因此间址周期结束后MDR的内容为操作数地址。
数据流 Ad(IR) (或MDR)-①-MAR-②-地址总线-③-主存 将指令的地址码送入MAR记做Ad(IR)→ MAR或Ad(MDR)→ MAR CU发出读命令-④-控制总线-⑤-主存 CU发出控制信号启动主存做读操作记做1→R 主存-⑥-数据总线-⑦-MDR (存放有效地址) 将MAR所指主存中的内容经数据总线送入MDR记做M(MAR)→ MDR将有效地址送至指令的地址码字段记做MDR→ AdIR 其中Ad(IR)表示取出IR中存放的指令字的地址字段 3、执行周期
根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。不同指令的执行操作不同因此没有统一的数据流向。
4、中断周期 任务处理中断请求。暂停当前任务去完成其他任务为了能够恢复当前任务需要保存断点。
一般使用堆栈来保存断点这里用SP表示栈顶地址假设SP指向栈顶元素进栈操作是先修改指针后存入数据。
数据流 CU控制将SP减1SP-①-MAR-②-地址总线-③-主存 CU控制将SP减1修改后的地址送入MAR记做(SP)-1 → SP(SP)→ MAR本质上是将断点存入某个存储单元假设其地址为a故可记做a→MAR CU发出写命令-④-控制总线-⑤-主存 CU发出控制信号启动主存做写操作记做1→ W PC-⑥-MDR-⑦-数据总线-⑧-主存 (程序断点存入主存) 将断点PC内容送入MDR记做(PC)→ MDR CU (中断服务程序的入口地址) -⑨-PC CU控制将中断服务程序的入口地址由向量地址形成部件产生送入PC记做向量地址→PC
5.2.3 指令执行方案 一个指令周期通常要包括几个时间段(执行步骤)每个步骤完成指令的一部分功能几个依次执行的步骤完成这条指令的全部功能。
1单指令周期
特点对所有指令都选用相同的执行时间来完成指令之间串行执行。 指令之间串行执行即下一条指令只能在前一条指令执行结束后才能启动。 时钟周期时钟周期取决于执行时间最长的指令的执行时间。 对于那些本来可以在更短时间内完成的指令要使用较长的周期来完成会降低整个系统的运行速度。
2多指令周期
特点对不用类型的指令选用不同的执行步骤来完成指令之间串行执行。时钟周期可选用不同个数的时钟周期来完成不同指令的执行过程需要更复杂的硬件设计。
3流水线方案
特点指令之间并行执行。时钟周期在每一个时钟周期启动一条指令尽量让多条指令同时运行但各自处在不同的执行步骤中。
5.2.4 本节知识回顾 5.3 数据通路的功能和基本结构
1、数据通路
数据通路数据在功能部件之间传送的路径。 数据通路描述了信息从什么地方开始中间经过哪个寄存器或多路开关最后传送到哪个寄存器这些都需要加以控制。 构成包括数据通路上流经的部件如ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等。 数据通路由控制部件控制控制部件根据每条指令功能的不同生成对数据通路的控制信号。 功能实现CPU内部的运算器与寄存器及寄存器之间的数据交换。 2、数据通路-CPU内部单总线方式 内部总线是指同一部件如CPU内部连接各寄存器及运算部件之间的总线; 系统总线是指同一台计算机系统的各部件如CPU、内存、通道和各类l/o接口间互相连接的总线。 3、CPU内部单总线方式-例题
1取指周期 2间址周期 实际考试中建议把间址周期合并到执行周期因为每个人对间址周期的理解是不一样的。
3执行周期 4、专用数据通路方式 1 2 3 4 5 6 5、本节知识回顾 注意ALU不是通用寄存器
5.4 控制器的功能和工作原理
5.4.1 控制器的结构和功能 控制器是计算机系统的指挥中心控制器的主要功能有
1)从主存中取出一条指令并指出下一条指令在主存中的位置。2)对指令进行译码或测试产生相应的操作控制信号以便启动规定的动作。3)指挥并控制CPU、主存、输入和输出设备之间的数据流动方向。 5.4.2 硬布线控制器
1、硬布线控制单元图 2、硬布线控制器的时序及微操作
3、CPU控制方式 4、硬布线控制单元设计步骤
1取指阶段 2间址阶段 3执行阶段 4中断阶段 5组合逻辑设计 6微操作信号综合 7逻辑图 8本节知识回顾
5.4.3 微程序控制器
1、控制器的设计思路 2、微程序的基本思想 3、微程序控制的基本概念 4、微程序控制组成和工作过程 控制存储器它是微程序控制器的核心部件用于存放各指令对应的微程序控制存储器可用只读存储器ROM构成。 微指令寄存器。用于存放从CM中取出的微指令它的位数同微指令字长相等微地址形成部件。用于产生初始微地址和后维微地址以保证微指令的连续执行微地址寄存器。接收微地址形成部件送来的微地址为在CM中读取微指令作准备
微程序和机器指令
一条机器指令对应一个微程序。由于任何机器指令的取指令操作都是相同的因此可将取指令操作的微命令统一编成一个微程序这个微程序只负责将指令从主存单元中取出并送至指令寄存器。
5、微指令
1微指令的格式 水平型微指令和垂直型微指令的比较
比较水平微指令垂直微指令并行能力强弱执行时间长长微指令字长短指令字较长微程序短微指令字较短微程序长编程难易程度难简单
2微指令的编码方式 3微指令的地址形成方式 6、微程序控制单元的设计 设计步骤
分析每个阶段的微操作序列写出对应机器指令的微操作命令及节拍安排确定微指令格式编写微指令码点 7、动态微程序设计和毫微程序设计 8、硬布线和微程序控制器的特点 9、本节知识回顾 10、一些易混淆的概念 指令微程序 微程序由多个微指令组成 微指令由多个微命令组成 微命令是微操作的控制信号 微操作是微命令的执行过程 5.5 指令流水线
5.5.1 指令流水的基本概念
可从两方面提高处理机的并行性
时间上的并行技术将一个任务分解为几个不同的子阶段每个阶段在不同的功能部件上并行执行以便在同一时刻能够同时执行多个任务进而提升系统性能这种方法被称为流水线技术。空间上的并行技术在一个处理机内设置多个执行相同任务的功能部件并让这些功能部件并行工作这样的处理机被称为超标量处理机。
1指令流水线的定义 一条指令的执行过程可以分为以下5个阶段 取指IF从指令存储器或Cache 中取指令。 译码/读寄存器ID操作控制器对指令进行译码同时从寄存器堆中取操作数。 执行/计算地址EX)执行运算操作或计算地址。 访存MEM对存储器进行读写操作。 写回WB将指令执行结果写回寄存器堆。 把k1条指令的取指阶段提前到第k条指令的译码阶段从而将第k1条指令的译码阶段与第k条指令的执行阶段同时进行如图所示。
理想情况下每个时钟周期都有一条指令进入流水线每个时钟周期都有一条指令完成每条指令的时钟周期数即CPI都为1。
为了利于实现指令流水线指令集应具有如下特征
指令长度应尽量一致有利于简化取指令和指令译码操作。否则取指令所花时间长短不一使取指部件极其复杂且也不利于指令译码。指令格式应尽量规整尽量保证源寄存器的位置相同有利于在指令未知时就可取寄存器操作数否则须译码后才能确定指令中各寄存器编号的位置。采用Load/Store指令其他指令都不能访问存储器这样可把Load/Store指令的地址计算和运算指令的执行步骤规整在同一个周期中有利于减少操作步骤。数据和指令在存储器中“对齐”存放。这样有利于减少访存次数使所需数据在一个流水段内就能从存储器中得到。
2流水线的表示方法
通常用时空图来直观地描述流水线的执行情况 在时空图中横坐标表示时间它被分割成长度相等的时间段T纵坐标为空间表示当前指令所处的功能部件。 只有大量连续任务不断输入流水线才能充分发挥流水线的性能而指令的执行正好是连续不断的非常适合采用流水线技术。对于其他部件级流水线如浮点运算流水线同样也仅适合于提升浮点运算密集型应用的性能对于单个运算是无法提升性能的。 3流水线的性能指标 吞吐率 加速比 效率 4机器周期的设置 5本节知识回顾 5.5.2 影响流水线的因素
在指令流水线中可能会遇到一些情况使得流水线无法正确执行后续指令而引起流水线阻塞或停顿这种现象称为流水线冒险。
1结构相关资源冲突 解决办法
前一指令访存时使后一条相关指令以及其后续指令暂停一个时钟周期。资源重复配置单独设置数据存储器和指令存储器使取数和取指令操作各自在不同的存储器中进行。
2数据相关数据冲突 在一个程序中下一条指令会用到当前指令计算出的结果此时这两条指令发生数据冲突。
写后读ReadAfterWriteRAW相关表示当前指令将数据写入寄存器后下一条指令才能从该寄存器读取数据。否则先读后写读到的就是错误旧数据。读后写WriteAfterReadWAR相关表示当前指令读出数据后下一条指令才能写该寄存器。否则先写后读读到的就是错误新数据。写后写WriteAfterWriteWAW相关表示当前指令写入寄存器后下一条指令才能写该寄存器。否则下一条指令在当前指令之前写将使寄存器的值不是最新值
解决办法
把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期直到数据相关问题消失后再继续执行。 可分为硬件阻塞(stall) 和软件插入“NOP”两种方法。 数据旁路技术转发机制从执行阶段结果出来后送回ALU输入端。编译优化通过编译器调整指令顺序来解决数据相关。
3控制相关控制冲突 当流水线遇到转移指令和其他改变PC值的指令必需等待分支处理结果而造成断流时会引起控制相关。
解决办法
转移指令分支预测。简单预测永远猜ture或false、动态预测根据历史情况动态调整预取转移成功和不成功两个控制流方向上的目标指令加快和提前形成条件码提高转移方向的猜准率
4本节知识回顾 5.5.3 流水线的分类
1、部件功能级、处理机级和处理机间级流水线
根据流水线使用的级别的不同流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。处理机级流水是把一条指令解释过程分成多个子过程如前面提到的取指、译码、执行、访存及写回5个子过程。处理机间流水是一种宏流水其中每一个处理机完成某一专门任务各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。
2、单功能流水线和多功能流水线
按流水线可以完成的功能流水线可分为单功能流水线和多功能流水线单功能流水线指只能实现一种固定的专门功能的流水线多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。
3、动态流水线和静态流水线
按同一时间内各段之问的连接方式流水线可分为静态流水线和动态流水线。静态流水线指在同一时间内流水线的各段只能按同一种功能的连接方式工作。动态流水线指在同一时间内当某些段正在实现某种运算时另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处但会使流水线控制变得很复杂。
4、线性流水线和非线性流水线
按流水线的各个功能段之间是否有反馈信号流水线可分为线性流水线与非线性流水线。线性流水线中从输入到输出每个功能段只允许经过一次不存在反馈回路。作线性流水线存在反馈回路从输入到输出过程中某些功能段将数次通过流水线这种流水线适合进行线性递归的运算。
5.5.4 超标量流水线的基本概念
1、超标量流水技术
也称动态多发射技术每个时钟周期内可并发多条独立指令以并行操作方式将两条或多条指令编译并执行。 2、超流水技术
在流水线一个时钟周期再划分多个功能段通过提高流水线主频的方式来提升流水线性能。 但是流水线级数越多用于流水寄存器的开销就越大因而流水线级数是有限制的并不是越多越好。
超流水线CPU在流水线充满后每个时钟周期还是执行一条指令CPI1但其主频更高多发射流水线CPU每个时钟周期可以处理多条指令CPI1相对而言多发射流水线成本更高控制更复杂。
3、超长指令字技术
也称静态多发射技术由编译程序挖掘出指令间潜在的并行性将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字可达几百位为此需要采用多个处理部件。 4、本节知识回顾 5.6 异常和中断机制
5.6.1 异常和中断的基本概念
1异常由CPU内部产生的意外事件被称为异常有些教材中也称内中断。
是CPU执行一条指令时由CPU在其内部检测到的、与正在执行的指令相关的同步事件。
2中断由来自CPU外部的设备向CPU发出的中断请求被称为中断通常用于信息的输入和输出有些教材中也称外中断。
是一种典型的由外部设备触发的、与当前正在执行的指令无关的异步事件。
5.6.2 异常和中断的分类
1异常的分类 故障Fault 定义指在引起故障的指令启动后、执行结束前被检测到的异常事件。例指令译码时出现“非法操作码”取数据时发生**“缺段”或“缺页**执行整数除法指令时发现“除数为0”等。处理内核程序修复后会把CPU使用权还给应用程序让它继续执行。如缺页中断对于“非法操作码”和“除数为0”等因为无法通过异常处理恢复故障必需终止程序。 自陷Trap 定义也称陷阱或陷入它是预先安排的一种“异常”事件就像预先设定的“陷阱”一样。 例“断点调试”、单步跟踪、系统调用 处理CPU在执行完自陷指令后自动根据不同“陷阱”类型进行相应的处理然后返回到自陷指令的下一条指令执行。注意当自陷指令是转移指令时并不是返回到下一条指令执行而是返回到转移目标指令执行。 故障和自陷异常属于软件中断程序性异常终止和外中断属于硬件中断。 终止Abort 定义由致命错误起内核程序无法修复该错误一股直接终止该应用程序。例如控制器出错、存储器校验错误、总线错误等此时只能调出中断服务程序来重启系统。
2中断的分类
中断是指来自CPU外部、与CPU执行指令无关的事件引起的中断包括IO设备发出的IO中断如键盘输入、打印机缺纸等或发生某种特殊事件如用户按Esc键、定时器计数时间到等。
外部I/O设备通过特定的中断请求信号线向CPU提出中断请求CPU每执行完一条指令就检查中断请求信号线如果检测到中断请求则进入中断响应周期。
可屏蔽中断 指通过可屏蔽中断请求线INTR向CPU发出的中断请求。CPU可以通过在中断控制器中设置相应的屏蔽字来屏蔽它或不屏蔽它被屏蔽的中断请求将不被送到CPU。 不可屏蔽中断 指通过专门的不可屏蔽中断请求线NMI向CPU发出的中断请求通常是非常紧急的硬件故障如电源掉电等。这类中断请求信号不可被屏蔽以让CPU快速处理这类紧急事件。
3中断和异常的不同点
“缺页”或“溢出”等异常事件是由特定指令在执行过程中产生的而中断不和任何指令相关联也不阻止任何指令的完成。异常的检测由CPU自身完成不必通过外部的某个信号通知CPU。对于中断CPU必须通过中断请求线获取中断源的信息才能知道哪个设备发生了何种中断。
5.6.3 异常和中断响应过程
CPU对异常和中断响应的过程可分为关中断、保存断点和程序状态、识别异常和中断并转到相应的处理程序。
1关中断
在保存断点和程序状态期间不能被新的中断打断因此要禁止响应新的中断即关中断。
通常通过设置**“中断允许”IF触发器**来实现
若IF置为1则为开中断表示允许响应中断若IF置为0则表示关中断表示不允许响应中断。
2保存断点和程序状态
为了能在异常和中断处理后正确返回到被中断的程序继续执行必须将程序的断点返回地址送到栈或特定寄存器中。通常保存在栈中这是为了支持异常或中断的嵌套。
异常和中断处理后可能还要回到被中断的程序继续执行被中断时的程序状态字寄存器PSWR的内容也需要保存在栈或特定寄存器中在异常和中断返回时恢复到PSWR中。
3识别异常和中断并转到相应的处理程序
异常和中断源的识别有软件识别和硬件识别两种方式。
软件识别方式是指CPU设置一个异常状态寄存器用于记录异常原因。操作系统使用一个统一的异常或中断查询程序按优先级顺序查询异常状态寄存器以检测异常和中断类型先查询到的先被处理然后转到内核中相应的处理程序。硬件识别方式又称向量中断异常或中断处理程序的首地址称为中断向量所有中断向量都存放在中断向量表中。每个异常或中断都被指定一个中断类型号。在中断向量表中类型号和中断向量一一对应因而可以根据类型号快速找到对应的处理程序。
5.7 多处理器的基本概念
5.7.1 SISD、SIMD、MIMD的基本概念
1、单指令流单数据流SISD结构
特性在一段时间内仅执行一条指令按指令流规定的顺序串行执行指令流中的若干条指令。各指令序列只能并发、不能并行每条指令处理一两个数据不是数据级并行技术。硬件构成传统的串行计算机结构一个处理器和一个存储器若采用指令流水线需设置多个功能部件采用多模块交叉存储器。 前面介绍的内容多属于SISD结构 2、单指令流多数据流SIMD结构
特性一个指令流同时对多个数据流进行处理一般称为数据级并行技术。各指令序列只能并发、不能并行但每条指令可同时处理很多个具有相同特征的数据。硬件组成一个指令控制部件(CU)多个处理单元/执行单元(如ALU)多个局部存储器一个主存储器。每个处理单元虽然执行的都是同一条指令但是每个单元都有自己的地址寄存器这样每个单元就都有不同的数据地址。不同处理单元执行的同一条指令所处理的不同数据。 SIMD在使用for循环处理数组时最有效比如一条分别对16对数据进行运算的SIMD指令如果在16个ALU中同时运算则只需要一次运算时间就能完成运算。 SIMD在使用case或switch语句时效率最低此时每个执行单元必须根据不同的数据执行不同的操作。 3、多指令流单数据流MISD结构
多条指令并行执行处理同一个数据。现实中不存在这种计算机。
4、多指令流多数据流MIMD结构
MIMD是指同时执行多条指令分别处理多个不同的数据MIMD分为多计算机系统和多处理器系统。
特性各指令序列并行执行分别处理多个不同的数据是一种线程级并行、甚至是线程级以上并行技术。多计算机系统 特性各计算机之间不能通过存取指令直接访问对方的存储器只能通过“消息传递”相互传送数据硬件组成由多台计算机组成因此拥有多个处理器多个主存储器每台计算机拥有各自的私有存储器物理地址空间相互独立。 多处理器系统 特性各处理器之间可以通过存取指令访问同一个主存储器可通过主存相互传送数据。硬件组成一台计算机内包含多个处理器一个主存储器多个处理器共享单一的物理地址空间。
5、向量处理器向量处理器是SIMD的变体是一种实现了**直接操作一维数组向量**指令集的CPU而串行处理器只能处理单一数据集。
基本理念将从存储器中收集的一组数据按顺序放到一组向量寄存器中然后以流水化的方式对它们依次操作最后将结果写回寄存器。向量处理器在特定工作环境中极大地提升了性能擅长对向量型数据并行计算、浮点数运算常被用于超级计算机中处理科学研究中巨大运算量。硬件组成多个处理单元多组“向量寄存器”主存储器应采用“多个端口同时读取”的交叉多模块存储器主存储器大小限定了机器的解题规模因此要有大容量的、集中式的主存储器。
5.7.2 硬件多线程的基本概念
为了减少线程切换过程中的开销便诞生了硬件多线程。在支持硬件多线程的CPU中必须为每个线程提供单独的通用寄存器组、单独的程序计数器等线程的切换只需激活选中的寄存器从而省略了与存储器数据交换的环节大大减少了线程切换的开销。 硬件多线程有3种实现方式细粒度多线程、粗粒度多线程和同时多线程SMT)。 1、细粒度多线程
多个线程之间轮流交叉执行指令多个线程之间的指令是不相关的可以乱序并行执行。处理器能在每个时钟周期切换线程。
2、粗粒度多线程
仅在一个线程出现了较大开销的阻塞时才切换线程如Cache 缺失。阻塞时新线程的指令开始执行前需要重载流水线线程切换的开销比细粒度多线程更大。
3、同时多线程
同时多线程SMT在同一个时钟周期中发射多个不同线程中的多条指令执行。Intel 处理器中的超线程Hyper-threading就是同时多线程SMT即在一个单处理器或单个核中设置了两套线程状态部件共享高速缓存和功能部件。
细粒度多线程细粒度多线程同时多线程SMT)指令发射各个时钟周期轮流发射多个线程的指令连续几个时钟周期都发射同一线程的指令序列流水线阻塞时切换另一个线程一个时钟周期内同时发射多个线程的搭令一个时钟周期内同时发射多个线程的搭令每个时钟周期切换一次线程只有流水线阻塞时才切换一次线程线程切换代价低高需要重载流水线并行性高需要重载流水线指令级并行线程间不并行指令级并行线程级并行
三种硬件多线程方式的调度示例 5.7.3 多核处理器的基本概念
多核处理器是指将多个处理单元集成到单个CPU中每个处理单元称为一个核core)。
每个核可以有自己的Cache,也可以共享同一个Cacheo所有核一般都是对称的并且共享主存储器因此多核属于共享存储的对称多处理器。下图是不共享Cache的双核CPU结构。
在多核计算机系统中如要充分发挥硬件的性能必须采用多线程或多进程执行使得每个核在同一时刻都有线程在执行。多核上的多个线程是在物理上并行执行的是真正意义上的并行执行在同一时刻有多个线程在并行执行。而单核上的多线程是一 种并发的多线程交错执行实际上在同一时刻只有一个线程在执行。
5.7.4 共享内存多处理器的基本概念
1、定义
具有共享的单一物理地址空间的多处理器被称为共享内存多处理器SMP)。处理器通过存储器中的共享变量互相通信所有处理器都能通过存取指令访问任何存储器的位置。注意即使这些系统共享同一个物理地址空间它们仍然可在自己的虚拟地址空间中单独地运行程序。
2、分类
统一存储访问UMA多处理器 定义每个处理器对所有存储单元的访问时间是大致相同的即访问时间与哪个处理器提出访存请求及访问哪个字无关。结构CPU通过前端总线和北桥芯片相连越来越多的CPU对前端总线的争用使得前端总线成为瓶颈。分类根据处理器与共享存储器之间的连接方式分为基于总线、基于交叉开关网络和基于多级交换网络连接等几种处理器。 非统一存储访问NUMA多处理器 定义某些访存请求要比其他的快具体取决于哪个处理器提出了访问请求以及访问哪个字这是由于主存被分割并分配给了同一机器上的不同处理器或内存控制器。结构内存控制器被集成到CPU内部每个CPU都有独立的内存控制器。每个CPU都独立连接到一部分内存CPU直连的这部分内存被称为本地内存。分类处理器中不带高速缓存时被称为NC-NUMA处理器中带有一致性高速缓存时被称为CC-NUMA。 在NUMA架构下内存的访问出现了本地和远程的区别访问本地内存明显要快于访问远程内存。 5.8 本章提出的问题与回答
1、CPU分为哪几部分分别实现什么功能
CPU分为运算器和控制器。其中运算器主要负责数据的加工即对数据进行算术和逻辑运算控制器是整个系统的指挥中枢对整个计算机系统进行有效的控制包括指令控制、操作控制、时间控制和中断处理。
2、指令和数据均存放在内存中计算机如何从时间和空间上区分它们是指令还是数据
从时间上讲取指令事件发生在“取指周期”取数据事件发生在“执行周期”。从空间上讲从内存读出的指令流流向控制器指令寄存器从内存读出的数据流流向运算器通用寄存器。
3、什么是指令周期、机器周期和时钟周期它们之间有何关系
CPU每取出并执行一条指令所需的全部时间称为指令周期机器周期是在同步控制的机器中执行指令周期中一步相对完整的操作指令步所需的时间通常安排机器周期长度主存周期时钟周期是指计算机主时钟的周期时间它是计算机运行时最基本的时序单位对应完成一个微操作所需的时间通常时钟周期计算机主频的倒数。
4、指令周期是否有一个固定值为什么
由于计算机中各种指令执行所需的时间差异很大因此为了提高CPU的运行效率即使在同步控制的机器中不同指令的指令周期长度都是不一致的即指令周期对不同的指令来说不是个固定值。
5、什么是微指令它和第4章谈到的指令有什么关系
控制部件通过控制线向执行部件发出各种控制命令通常把这种控制命令称为微命令而一组实现一定操作功能的微命令的组合构成一条微指令。许多条微指令组成的序列构成微程序微程序完成对指令的解释执行。指令即指机器指令。每条指令可以完成一个独立的算术运算或逻辑运算操作。在采用微程序控制器的CPU中一条指令对应一个微程序一个微程序由许多微指令构成一条微指令会发出很多不同的微命令。
6、什么是指令流水线指令流水线相对于传统计算机体系结构的优势是什么如何计算指令流水线的加速比
指令流水线是把指令分解为若干子过程通过将每个子过程与其他子过程并行执行来提高计算机的吞吐率的技术。采用流水线技术只需增加少量硬件就能把计算机的运算速度提高几倍因此成为计算机中普遍使用的一种并行处理技术通过在同一个时间段使用各功能部件使得利用率明显提高。流水线的加速比指的是完成同样一批任务不使用流水线所用的时间与使用流水线所用的时间之比。一条k段流水线理论上的最大加速比为Smax k。因此在现代计算机中提高流水线段数有利于提高计算机的吞吐量。具体的加速比要使用时空图来计算。
5.9 常见问题和易混淆知识点
1、流水线越多并行度就越高。是否流水段越多指令执行越快
错误因为如下
1)流水段缓冲之间的额外开销增大。每个流水段有一些额外开销用于缓冲间传送数据、进行各种准备和发送等功能这些开销加长了一条指令的整个执行时间当指令间逻辑上相互依赖时开销更大。2)流水段间控制逻辑变多、变复杂。用于流水线优化和存储器或寄存器冲突处理的控制逻辑将随流水段的增加而大增这可能导致用于流水段之间控制的逻辑比段本身的控制逻辑更复杂。
2、有关指令相关、数据相关的几个概念
1)两条连续的指令读取相同的寄存器时会产生读后读( Read After Read,RAR)相关这种相关不会影响流水线。2)某条指令要读取上一条指令所写入的寄存器时会产生写后读( Read After Write,RAW)相关它称数据相关或真相关影响流水线。按序流动的流水线只可能出现RAW相关。3)某条指令的上条指令要读/写该指令的输出寄存器时会产生**读后写 Write After Read,WAR)和写后写( Write After Write,WAW)**相关。在非按序流动的流水线中既可能发生RAW相关又可能发生WAR相关和WAW相关。
对流水线影响最严重的指令相关是数据相关。
六、总线
【复习提示】 本章的知识点较少其中总线仲裁及总线操作和定时方式是难点。本章内容通常以选择题的形式出现特别是系统总线的特点、性能指标、各种仲裁方式的特点、异步定时方式及常见的总线标准和特点等。总线带宽的计算也可能结合其他章节出综合题。 6.1 总线的概述
6.1.1 总线基本概念
1、总线的定义
总线是一组能为多个部件分时共享的公共信息传送线路。
分时指同一时刻只允许有一个部件向总线发送信息若系统中有多个部件则它们只能分时地向总线发送信息。共享指总线上可以挂接多个部件各个部件之间互相交换的信息都可通过这组线路分时共享多个部件可同时从总线上接收相同的信息。
2、总线设备
总线上所连接的设备按其对总线有无控制功能可分为主设备和从设备两种。
主设备指获得总线控制权的设备。从设备指被主设备访问的设备它只能响应从主设备发来的各种总线命令。
3、总线的特点 4、总线的特性
机械特性尺寸、形状、管脚数、排列顺序电气特性传输方向和有效的电平范围功能特性每根传输线的功能(地址、数据、控制)时间特性信号的时序关系
6.1.2 总线的分类 1、按数据传输格式分类 2、按总线的功能分类 系统总线详解 数据总线用来传输各功能部件之间的数据信息它是双向传输总线其位数与机器字长、存储字长有关。地址总线用来指出数据总线上的源数据或目的数据所在的主存单元或I/O端口的地址它是单向传输总线地址总线的位数与主存地址空间的大小有关。控制总线传输的是控制信息包括CPU送出的控制命令和主存或外设返回CPU的反馈信号。 注意区分数据通路和数据总线各个功能部件通过数据总线连接形成的数据传输路径称为数据通路。 数据通路表示的是数据流经的路径而数据总线是承载的媒介。 I/O总线
I/O总线主要用于连接中低速的I/O设备通过I/O接口与系统总线相连接目的是将低速设备与高速总线分离以提升总线的系统性能常见的有USB、PCI总线。
通信总线
通信总线是在计算机系统之间或计算机系统与其他系统如远程通信设备、测试设备之间传送信息的总线通信总线也称外部总线。 此外按时序控制方式可将总线划分为同步总线和异步总线还可按数据传输格式将总线划分为并行总线和串行总线。 3、系统总线的结构
1单总线结构 单总线结构将CPU、主存、I/O设备通过I/O接口都挂在一组总线上允许I/O设备之间、I/O设备与主存之间直接交换信息。
CPU与主存、CPU与外设之间可直接进行信息交换而无须经过中间设备的干预。 注意单总线并不是指只有一根信号线系统总线按传送信息的不同可细分为地址总线、数据总线和控制总线。 2双总线结构 双总线结构有两条总线一条是主存总线用于在CPU、主存和通道之间传送数据另一条是I/O总线用于在多个外部设备与通道之间传送数据。 通道通道是具有特殊功能的处理器能对I/O设备进行统一管理通道程序放在主存中。 支持突发猝发传送即送出一个地址收到多个地址连续的数据。 局部总线连接计算机硬件系统的某一个子系统或部分部件的总线这样可将一些高速外设如图形卡硬盘控制器等状系统总线上卸下而通过局部总线直接挂接。 3三总线结构 三总线结构是在计算机系统各部件之间采用3条各自独立的总线来构成信息通路这3条总线分别为主存总线、I/O总线和直接内存访问DMA总线。 DMADirect Memory Access直接内存访问。 4四总线结构 4、本节知识回顾 6.1.3 总线的性能指标 总线的传输周期总线周期 一次总线操作所需的时间包括申请阶段、寻址阶段、传输阶段和结束阶段通常由若干个总线时钟周期构成。 总线时钟周期 即机器的时钟周期。计算机有一个统一的时钟以控制整个计算机的各个部件总线也要受此时钟的控制。 总线工作频率 总线上各种操作的频率为总线周期的倒数。实际上指一秒内传送几次数据。 总线的时钟频率 即机器的时钟频率为时钟周期的倒数。实际上指一秒内有多少个时钟周期。 总线宽度 又称为总线位宽它是总线上同时能够传输的数据位数通常是指数据总线的根数如32根称为32位总线。 总线带宽 可理解为总线的数据传输率即单位时间内总线上可传输数据的位数通常用每秒钟传送信息的字节数来衡量单位可用字节/秒B/s表示。 总线复用 总线复用是指一种信号线在不同的时间传输不同的信息。可以使用较少的线传输更多的信息从而节省了空间和成本。 信号线数 地址总线、数据总线和控制总线3种总线数的总和称为信号线数。 带宽例题 串行总线和并行总线哪个速度更快 本节知识回顾 6.2 总线仲裁
6.2.1 总线仲裁的基本概念 6.2.2 集中仲裁方式
1链式查询方式 2计数器查询方式 3独立请求方式 4本节知识回顾 6.2.3 分布仲裁方式
特点不需要中央仲裁器每个潜在的主模块都有自己的仲裁器和仲裁号多个仲裁器竞争使用总线。
当设备有总线请求时它们就把各自唯一的仲裁号发送到共享的仲裁总线上每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较如果仲裁总线上的号优先级高则它的总线请求不予响应并撤销它的仲裁号最后获胜者的仲裁号保留在仲裁总线上。
6.3 总线操作和定时
6.3.1 总线传输的四个阶段 突发猝发传送方式能够进行连续成组数据的传送其寻址阶段发送的是连续数据单元的首地址在传输阶段传送多个连续单元的数据每个时钟周期可以传送一个字长的信息但是不释放总线直到一组数据全部传送完毕后再释放总线。 6.3.2 同步定时方式同步通信 6.3.3 异步定时方式异步通信 6.3.4 半同步通信 6.3.5 分离式通信 6.3.6 本节知识回顾 6.4 总线标准
总线标准的基本概念
总线标准是国际上公布或推荐的互连各个模块的标准它是把各种不同的模块组成计算机系统时必须遵守的规范。按总线标准设计的接口可视为通用接口在接口的两端任何一方只需根据总线标准的要求完成自身方面的功能要求而无须了解对方接口的要求。系统总线标准ISA、EISA、VESA、PCI、PCI- Express等。设备总线标准IDE、AGP、RS-232C、USB、SATA、SCSI、 PCMCIA等。局部总线标准在ISA总线和CPU总线之间增加的一级总线或管理层如PCI、PCI-E、VESA、AGP等可以节省系统的总带宽。**即插即用( Plug-and-Play)**的作用是自动配置低层计算机中的板卡和其他设备然后告诉对应的设备都做了什么。把物理设备和软件设备驱动程序相配合并操作设备在每个设备和它的驱动程序之间建立通信信道热插拔( hot-plugging或 Hot Swap)即带电插拔热插拔功能就是允许用户在不关闭系统不切断电源的情况下取出和更换损坏的硬盘、电源或板卡等部件从而提高了系统对灾难的及时恢复能力、扩展性和灵活性等例如一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插拔功能。
6.4.1 常见的总线标准 6.4.2 系统总线标准 6.4.3 局部总线标准
1PCI 2AGP 3PCI-E 4VESA 6.4.4 设备总线标准
1USB 2RS-232C 3IDEATA 4SATA 5SCSI 6PCMCIA 6.4.5 本节知识回顾 补充 6.5 本章提出的问题与回答
1、引入总线结构有什么好处
引入总线结构主要有以下优点
①简化了系统结构便于系统设计制造。②大大减少了连线数目便于布线减小体积提高系统的可靠性。③便于接口设计所有与总线连接的设备均采用类似的接口。④便于系统的扩充、更新与灵活配置易于实现系统的模块化。⑤便于设备的软件设计所有接口的软件对不同的接口地址进行操作。⑥便于故障诊断和维修同时也能降低成本。
2、引入总线会导致什么问题如何解决
引入总线后总线上的各个设备分时共享同一总线当总线上多个设备同时要求使用总线时就会导致总线的冲突。为解决多个主设备同时竞争总线控制权的问题应当采用总线仲裁部件以某种方式选择一个主设备优先获得总线控制权只有获得了总线控制权的设备才能开始数据传送。
6.6 常见问题和易混淆知识点
1、同一个总线不能既采用同步方式又采用异步方式通信吗
半同步通信总线可以。这类总线既保留了同步通信的特点又能采用异步应答方式连接速度相差较大的设备。通过在异步总线中引入时钟信号其就绪和应答等信号都在时钟的上升沿或下降沿有效而不受其他时间的信号干扰。
例如某个采用半同步方式的总线总是从某个时钟开始在每个时钟到来时采样Wait信号若无效则说明数据未准备好下个时钟到来时再采样Wait信号直到检测到有效再去数据线上取数据。PCI总线也是一种半同步总线它的所有事件都在时钟下降沿同步总线设备在时钟开始的上升沿采样总线信号。
2、一个总线在某一时刻可以有多对主从设备进行通信吗
不可以。在某个总线周期内总线上只有一个主设备控制总线选择一个从设备与之进行通信即一对一的关系或对所有设备进行广播通信即一对多的关系。所以一个总线在某一时刻不能有多对主从设备进行通信否则会发生数据冲突。
七、输入/输出系统
【复习提示】 I/O方式是本章的重点和难点每年不仅会以选择题的形式考查基本概念和原理而且可能会以综合题的形式考査特别是各种IO方式效率的相关计算中断方式的各种原理、特点、处理过程、中断屏蔽DMA方式的特点、传输过程、与中断方式的区别等。 7.1 I/O系统基本概念 7.1.1 输入/输出系统
输入/输出是以主机为中心而言的将信息从外部设备传送到主机称为输入反之称为输出。输入/输出系统解决的主要问题是对各种形式的信息进行输入和输出的控制。 输入、输出设备都属于外部设备。 1I/O系统的演变过程 2I/O系统的基本组成 3I/O接口 7.1.2 I/O控制方式
输入/输出系统中经常需要进行大量的数据传输而传输过程中有各种不同的I/O控制方式基本的控制方式主要有以下4种。
1程序查询方式由CPU通过程序不断查询i/O设备是否已做好准备从而控制I/O设备与主机交换信息。 2程序中断方式只在I/O设备准备就绪并向CPU发出中断请求时才予以响应。 3DMA方式主存和IO设备之间有一条直接数据通路当主存和I/O设备交换信息时无须调用中断服务程序。 4通道方式在系统中设有通道控制部件每个通道都挂接若干外设主机在执行I/O命令时只需启动有关通道通道将执行通道程序从而完成I/O操作。 其中方式1)和方式2)主要用于数据传输率较低的外部设备方式3)和方式4)主要用于数据传输率较高的设备。 7.1.3 解析
I/O设备不可能直接与主板总线相连它总是通过设备控制器来相连的。I/O指令是指令系统的一部分是机器指令的一类但其为了反映与I/O设备交互的特点格式和其他通用指令相比有所不同。通道程序存放在主存而非通道中由通道从主存中取出并执行。通道程序由通道执行且只能在具有通道的I/O系统中执行。
7.1.4 本节知识回顾 7.2 外部设备
外部设备也称外围设备是除了主机以外的、能直接或间接与计算机交换信息的装置。
7.2.1 输入设备
用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。 7.2.2 输出设备
1用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。 2打印机从打字原理的角度可以分为击打式和非击打式 3打印机从工作方式的角度可以分为 4本节知识回顾 7.2.3 外部存储器辅存
是指除计算机内存及CPU缓存等以外的存储器。硬磁盘、光盘等是最基本的外存设备。 1、磁盘存储器
1磁盘设备的组成 存储区域一块硬盘含有若干记录面每个记录面划分为若干磁道而每条磁道又划分为若干扇区扇区也称块是磁盘读写的最小单位即磁盘按块存取。 磁头数Heads即记录面数表示硬盘共有多少个磁头磁头用于读取/写入盘片上记录面的信息一个记录面对应一个磁头。 柱面数Cylinders表示硬盘每面盘片上有多少条磁道。在一个盘组中不同记录面的相同编号位置的诸磁道构成一个圆柱面。 扇区数Sectors表示每条磁道上有多少个扇区。 2磁盘的性能指标 注意磁盘所有磁道记录的信息量一定是相等的并不是圆越大信息越多故每个磁道的位密度都不同。
3磁盘地址和磁盘工作过程 驱动器号电脑可能有多个硬盘柱面磁道号移动磁头臂寻道盘面号激活某个磁头扇区号通过旋转将特定扇区划过磁头下方 若系统中有422个驱动器每个驱动器带一个磁盘每个磁盘25628个磁道、1624个盘面每个盘面划分为1624个扇区则每个扇区地址要18位二进制代码其格式如上图所示。 2、磁盘阵列
串行不能同时写和读 3、光盘存储器 4、固态硬盘
1固态硬盘SSD是一种基于闪存技术的存储器属于电可擦除ROM即EEPROM。 闪存芯片替代传统旋转磁盘中的机械驱动器每个芯片包含多个块block每个块包含多个页page闪存翻译层将来自CPU的逻辑块读写请求翻译成对底层物理设备的读写控制信号负责翻译逻辑块号找到对应页Page
2读写性能特性
以页page为单位读/写——相当于磁盘的“扇区以块block为单位擦除擦干净的块其中的每页都可以写一次读无限次支持随机访问系统给定一个逻辑地址闪存翻译层可通过电路迅速定位到对应的物理地址读快、写慢。要写的页如果有数据则不能写入需要将块内其他页全部复制到一个新的擦除过的块中再写入新的页
3与机械硬盘相比的特点
SSD读写速度快随机访问性能高用电路控制访问位置机械硬盘通过移动磁臂旋转磁盘控制访问位置有寻道时间和旋转延迟SSD安静无噪音、耐摔抗震、能耗低、造价更贵SSD的一个“块被擦除次数过多重复写同一个块可能会坏掉而机械硬盘的扇区不会因为写的次数太多而坏掉
7.2.4 解析
存取一个扇区的平均延迟时间为旋转半周的时间。磁盘存储器的最小读写单位为一个扇区即磁盘按块存取。
7.2.5 本节知识回顾 7.3 I/O接口
I/O接口(I/O控制器)是主机和外设之间的交接界面通过接口可以实现主机和外设之间的信息交换。主机和外设具有各自的工作特点它们在信息形式和工作速度上具有很大的差异接口正是为了解决这些差异而设置的。
7.3.1 I/O接口的功能
进行地址译码和设备选择。CPU送来选择外设的地址码后接口必须对地址进行译码以产生设备选择信息使主机能和指定外设交换信息。实现主机和外设的通信联络控制。解决主机与外设时序配合问题协调不同工作速度的外设和主机之间交换信息以保证整个计算机系统能统一、协调地工作。实现数据缓冲。CPU与外设之间的速度往往不匹配为消除速度差异接口必须设置数据缓冲寄存器用于数据的暂存以避免因速度不一致而丢失数据。信号格式的转换。外设与主机两者的电平、数据格式都可能存在差异接口应提供计算机与外设的信号格式的转换功能如电平转换、并/串或串/并转换、模/数或数/模转换等。传送控制命令和状态信息。CPU要启动某一外设时通过接口中的命令寄存器向外设发出启动命令;外设准备就绪时则将“准备好”状态信息送回接口中的状态寄存器并反馈给CPU。外设向CPU提出中断请求时CPU也应有相应的响应信号反锁给外设。 7.3.2 I/O接口的基本结构
通过数据总线在数据缓冲寄存器与内存或CPU的寄存器之间进行数据传送。同时接口和设备的状态信息被记录在状态寄存器中通过数据线将状态信息送到CPU。CPU对外设的控制命令也通过数据线传送一般将其送到I/O接口的控制寄存器。状态寄存器和控制寄存器在传送方向上是相反的。 7.3.3 接口与端口
I/O端口是指接口电路中可以被CPU直接访问的寄在器。
接口端口数据端口读写、控制端口写、状态端口读 控制逻辑
I/O端口要想能够被CPU访问就必须要对各个端口进行编号每个端口对应一个端口地址。 7.3.4 I/O端口及其编址
1统一编址
又称存储器映射方式是指把I/O端口当作存储器的单元进行地址分配这种方式CPU不需要设置专门的I/O指令用统一的访存指令就可以访问I/O端口。
优点不需要专门的输入/输出指令可使CPU访问I/O的操作更灵活、更方便还可使端口有较大的编址空间。缺点端口占用存储器地址使内存容量变小而且利用存储器编址的I/O设备进行数据输入/输出操作执行速度较慢 靠不同的地址码区分内存和I/O设备I/O地址要求相对固定在地址的某部分。 2独立编址
又称I/O映射方式I/O端口的地址空间与主存地址空间是两个独立的地址空间因而无法从地址码的形式上区分需要设置专门的I/O指令来访问I/O端口。
优点输入输出指令与存储器指令有明显区别程序编制清晰便于理解。缺点输入输出指令少一般只能对端口进行传送操作尤其需要CPU提供存储器读/写、I/O设备读写两组控制信号增加了控制的复杂性。 靠不同的指令区分内存和I/O设备。 7.3.5 I/O接口的类型 7.3.6 本节知识回顾 7.4 I/O方式
输入/输出系统实现主机与I/O设备之间的数据传送可以采用不同的控制方式。常用的I/O方式有程序查询、程序中断、DMA和通道等其中前两种方式更依赖于CPU中程序指令的执行。 7.4.1 程序查询方式
信息交换的控制完全由CPU执行程序实现程序查询方式接口中设置一个数据缓冲寄存器数据端口和一个设备状态寄存器状态端口。 查询方式 CPU“忙等”慢速设备完成工作二者串行工作。CPU查询速率应比输入速率高不然数据丢失。 CPU不断轮询检查I/O控制器中的“状态寄存器”检测到状态为“已完成”之后再从数据寄存器取出输入数据。 1流程图 2接口结构 3例题 4本节回顾 7.4.2 程序中断方式
设备准备数据时CPU继续工作。设备准备好之后向CPU发出中断请求CPU在指令周期的末位检查中断并做出中断响应执行中断处理程序。
1总览
中断功能
2基本概念 3中断请求的分类 4中断请求标记 5中断响应判优 中断响应优先级中断响应优先级是指CPU响应中断请求的先后顺序。 由于许多中断源提出中断请求的时间都是随机的因此当多个中断源同时提出请求时需通过中断判优逻辑来确定响应哪个中断源的请求。 实现 优先级设置 ①不可屏蔽中断内部异常可屏蔽中断 ②内部异常中硬件故障软件中断 ③DMA中断请求I/O设备传送的中断请求 ④在I/O传送类中断请求中高速设备低速设备输入设备输出设备实时设备普通设备。 6中断处理过程 ①关中断。 ②保存断点。 ③中断服务程序寻址。 ④保存现场和屏蔽字。进入中断服务程序后首先要保存现场和中断屏蔽字现场信息是指用户可见的工作寄存器的内容它存放着程序执行到断点处的现行值。 注意现场和断点这两类信息都不能被中断服务程序破坏。现场信息因为用指令可直接访问所以通常在中断服务程序中通过指令把它们保存到栈中即由软件实现而断点信息由CPU在中断响应时自动保存到栈或指定的寄存器中即由硬件实现。 ⑤开中断。允许更高级中断请求得到响应实现中断嵌套。 ⑥执行中断服务程序。这是中断请求的目的。 ⑦关中断。保证在恢复现场和屏蔽字时不被中断。 ⑧恢复现场和屏蔽字。将现场和屏蔽字恢复到原来的状态。 ⑨开中断、中断返回。中断服务程序的最后一条指令通常是一条中断返回指令使其返回到原程序的断点处以便继续执行原程序。 其中① ~ ③由中断隐指令硬件自动完成④ ~ ⑨由中断服务程序完成。 硬件向量法 中断隐指令中断隐指令并不是指令系统中的一条真正的指令只是一种虚拟的说法本质上是硬件的一系列自动操作。 中断服务程序 中断处理过程 7单重中断与多重中断 单重中断若CPU在执行中断服务程序的过程中又出现了新的更高优先级的中断请求而CPU对新的中断请求不予响应则这种中断称为单重中断如图a所示。多重中断若CPU暂停现行的中断服务程序转去处理新的中断请求则这种中断称为多重中断又称中断嵌套如图b所示。 CPU要具备多重中断的功能必须满足下列条件
①在中断服务程序中提前设置开中断指令。
②优先级别高的中断源有权中断优先级别低的中断源。 8中断屏蔽技术 中断屏蔽技术-例题 9例题 程序中断方式过程 恢复现场即算做下一次启动 10本节知识回顾 7.4.3 DMA方式
DMA方式是一种完全由硬件进行成组信息传送的控制方式它具有程序中断方式的优点即在数据准备阶段CPU与外设并行工作。
DMA方式在外设与内存之间开辟一条“直接数据通道”信息传送不再经过CPU降低了CPU在传送数据时的开销因此称为直接存储器存取方式。
这种方式适用于磁盘、显卡、声卡、网卡等高速设备大批量数据的传送它的硬件开销比较大。在DMA方式中中断的作用仅限于故障和正常传送结束时的处理。
1DMA方式的特点
主存和DMA接口之间有一条直接数据通路。由于DMA方式传送数据不需要经过CPU因此不必中断现行程序I/O与主机并行工作程序和传送并行工作。
①它使主存与CPU的固定联系脱钩主存既可被CPU访问又可被外设访问。②在数据块传送时主存地址的确定、传送数据的计数等都由硬件电路直接实现。③主存中要开辟专用缓冲区及时供给和接收外设的数据。④DMA传送速度快CPU和外设并行工作提高了系统效率。⑤DMA在传送开始前要通过程序进行预处理结束后要通过中断方式进行后处理。
2DMA控制器的主要功能 3DMA控制器的组成 主存地址计数器简称AR存放要交换数据的主存地址。传送长度计数器简称WC用来记录传送数据的长度计数溢出时数据即传送完毕自动发中断请求信号。数据缓冲寄存器暂存每次传送的数据。DMA请求触发器每当I/O设备准备好数据后给出一个控制信号使DMA请求触发器置位。控制/状态逻辑由控制和时序电路及状态标志组成用于指定传送方向修改传送参数并对DMA请求信号和CPU响应信号进行协调和同步。中断机构数据传送完毕后触发中断机构提出中断请求。 在DMA传送过程中DMA控制器将接管CPU的地址总线、数据总线和控制总线CPU的 主存控制信号被禁止使用。而当DMA传送结束后将恢复CPU的一切权利并开始执行其操作。 4DMA传送过程 预处理CPU完成寄存器初值设置等准备工作 首先CPU执行几条I/O指令用以测试I/O设备状态初始化DMA控制器中的有关寄存器、设置传送方向、启动该设备等。 然后CPU继续执行原来的程序直到I/O设备准备好发送的数据输入情况或接收的数据输出情况时I/O设备向DMA控制器发送DMA请求。 再由DMA控制器向CPU发送总线请求有时将这两个过程统称为DMA请求用以传输数据。 数据传送CPU继续执行主程序DMA控制器完成数据传送 DMA的数据传输可以以单字节或字为基本单位也可以以数据块为基本单位。对于以数据块为单位的传送如硬盘DMA占用总线后的数据输入和输出操作都是通过循环来实现的。需要指出的是这一循环也是由DMA控制器而非通过CPU执行程序实现的即数据传送阶段完全由DMA硬件控制。 后处理CPU执行中断服务程序做DMA结束处理 包括校验送入主存的数据是否正确、测试传送过程中是否出错错误则转诊断程序及决定是否继续使用DMA传送其他数据等。
5DMA传送方式
主存和I/O设备之间交换信息时不通过CPU。但当I/O设备和CPU同时访问主存时可能发生冲突为了有效地使用主存DMA控制器与CPU通常采用以下3种方式使用主存
停止CPU访存需要数据传送时停止CPU访存总线控制权交给DMA控制器。交替访存将CPU周期分为DMA访存和CPU访存两个部分。周期挪用周期窃取I/O设备需要访存时挪用一个或几个存取周期。 CPU此时不访存不冲突CPU正在访存存取周期结束让出总线CPU与DMA同时请求访存I/O访存优先 6DMA方式与中断方式对比
DMA方式和中断方式的重要区别如下
①中断方式是程序的切换需要保护和恢复现场而DMA方式不中断现行程序无需保护现场除了预处理和后处理其他时候不占用任何CPU资源。②对中断请求的响应只能发生在每条指令执行结束时执行周期后而对DMA请求的响应可以发生在任意一个机器周期结束时取指、间址、执行周期后均可。③中断传送过程需要CPU的干预而DMA传送过程不需要CPU的干预因此数据传输率非常高适合于高速外设的成组数据传送。④DMA请求的优先级高于中断请求。⑤中断方式具有处理异常事件的能力而DMA方式仅局限于大批数据的传送。⑥从数据传送来看中断方式靠程序传送DMA方式靠硬件传送。 7例题
CPU占用情况 - 中断方式 CPU占用情况 - DMA方式 8本节知识回顾 7.5 本章提出的问题与回答
1、I/O设备有哪些编址方式各有何特点
统一编址和独立编址。统一编址是在主存地址中划出一定的范围作为I/O地址以便通过访存指令即可实现对I/O的访问但主存的容量相应减少。独立编址是指IO地址和主存是分开的I/O地址不占主存空间但访存需专门的I/O指令。
2、CPU响应中断应具备哪些条件
①在CPU内部设置的中断屏蔽触发器必须是开放的②外设有中断请求时中断请求触发器必须处于“1”状态保持中断请求信号③外设(接ロ)中断允许触发器必须为“1”这样才能把外设中断请求送至CPU。
具备上述三个条件时CPU在现行指令结束的最后一个状态周期响应中断。
7.6 常见问题和易混淆知识点
1、中断响应优先级和中断处理优先级分别指什么
中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的不可动态改变而中断处理优先级可以由中断屏蔽字来改变反映的是正在处理的中断是否比新发生的中断的处理优先级低(屏蔽位为“0”对新中断开放)若是则中止正在处理的中断转到新中断去处理处理完后再回到刚才被中止的中断继续处理。
2、向量中断、中断向量、向量地址三个概念是什么关系
中断向量每个中断源都有对应的处理程序这个处理程序称为中断服务程序其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表称为中断向量表也有的机器把中断服务程序入口的跳转指令构成一张表称为中断向量跳转表。向量地址中断向量表或中断向量跳转表中每个表项所在的内存地址或表项的索引值称为向量地址或中断类型号。向量中断指一种识别中断源的技术或方式。识别中断源的目的是找到中断源对应的中断服务程序的入口地址的地址即获得向量地址。
3、程序中断和调用子程序有何区别
两者的根本区别主要表现在服务时间和服务对象上不一样。
1)调用子程序过程发生的时间是已知的和固定的即在主程序中的调用指令(CALL)执行时发生主程序调用子程序过程调用指令所在位置是已知的和固定的。而中断过程发生的时间一般是随机的CPU在执行某个主程序时收到中断源提出的中断申请就发生中断过程而中断申请一般由硬件电路产生申请提出时间是随机的。也可以说调用子程序是程序设计者事先安排的而执行中断服务程序是由系统工作环境随机决定的。2)子程序完全为主程序服务两者属于主从关系。主程序需要子程序时就去调用子程序并把调用结果带回主程序继续执行。而中断服务程序与主程序二者一般是无关的不存在谁为谁服务的问题两者是平行关系。3)主程序调用子程序的过程完全属于软件处理过程不需要专门的硬件电路而中断处理系统是一个软/硬件结合的系统需要专门的硬件电路才能完成中断处理的过程。4)子程序嵌套可实现若干级嵌套的最多级数受计算机内存开辟的堆栈大小限制而中断嵌套级数主要由中断优先级来决定一般优先级数不会很大。
从宏观上看虽然程序中断方式克服了程序査询方式中的CPU“踏步”现象实现了CPU与I/O并行工作提高了CPU的资源利用率但从微观操作分析CPU在处理中断服务程序时仍需暂停原程序的正常运行尤其是当高速I/O设备或辅助存储器频繁地、成批地与主存交换信息时需要不断打断CPU执行现行程序而执行中断服务程序。
4、IO指令和通道指令有何区别
I/O指令是CPU指令系统的一部分是CPU用来控制输入/输出操作的指令由CPU译码后执行。在具有通道结构的机器中I/O指令不实现I/O数据传送主要完成启、停I/O设备査询通道和I/O设备的状态及控制通道进行其他一些操作等。通道指令是通道本身的指令用来执行I/O操作如读、写、磁带走带及磁盘找道等操作。