计算机组成与系统结构
2023-11-15 17:44:49
浏览量: 1012
计算机专业课内容
- 硬件类
- 计算机组成与系统结构
- 网络类
- 计算机网络
- 网络与信息安全
- 软件类
- 数据结构
- 操作系统
- 程序设计:C JAVA C#等
- 数据库
计算机的分类
电子数字计算机
- 分类
- 专用计算机:专为某些特定问题设计的功能单一的计算机,结构简单,可靠性高,速度快,成本低,是最有效、最经济和最快速的计算机,但其适应性很差
- 通用计算机:功能齐全,通用性强,可做各种各样的工作,但牺牲了效率、速度和经济性。根据体积、复杂度、功耗、性能指标、数据存储容量、指令系统规模和价格大致分为以下几种:
- 超级计算机
- 大型机
- 服务器
- 工作站
- 微型机
- 单片机
- 特点
- 数值离散、运算过程离散
- 按位计算,并且不连续地跳动计算
计算机的应用
- 科学计算
- 自动控制
- 测量测试
- 信息处理
- 教育卫生
- 家用电器
- 人工智能
计算机的硬件组成
哈佛体系结构
- 把程序与数据分开存储
冯诺依曼体系结构
- 基本思想
- 程序及其操作的数据存储在一起
- 5大部件:控制器、运算器、存储器、输入设备、输出设备
- 控制器和运算器合称为中央处理器CPU
- CPU和存储器通常组装在一个机箱内合成为主机
控制器
- 全机的管理机构和指挥中心
- 控制器工作的实质就是解释程序
- 基本工作流程:
- 从程序计数器所指示的存储单元中,读取一条指令代码
- 把指令代码译码为一系列命令或信号,发向不同的功能呢部件
- 递增程序计数器,以指向下一条指令
- 根据指令需要,从存储器(或输入设备)读取数据,所需数据的存储器位置通常保存在指令代码中
- 把读取的数据提供给运算器或寄存器
- 如果指令需要由运算器或专门硬件来完成,则命令该硬件执行所请求的操作
- 把来自运算器的计算结果写回到存储器、寄存器或输出设备
- 转回第一步
- 控制器的基本任务
- 是根据指令序列,取指、译码、执行、再取指...以此类推
- 通常把取指令的一段时间叫做取指周期,而把执行指令的一段时间叫做执行周期,因此,控制器反复交替地处在取值周期与执行周期之中
- 指令和数据
- 计算机中有两股信息在流动:
- 控制信息 即操作命令,其发源地是控制器,它分散流向各个部件
- 数据信息 受控制信息的控制,从一个部件流向另一个部件,边流动边加工处理
- 一般来讲:取指周期中从存储器读出的信息流是指令流,它由存储器流向控制器;执行周期中从存储器读出的信息流是数据流,它由存储器流向运算器
- 计算机中有两股信息在流动:
运算器组成
- 通常由算术逻辑单元ALU(Arithmetic Logic Unit)和一系列寄存器组成
- ALU是具体完成算术与逻辑运算的单元,是运算器的核心,由加法器及其它逻辑运算单元组成
- 寄存器用于存放参与运算的操作数
- 累加器是一个特殊的寄存器,除了可以存放操作数外,还用于存放中间结果和最后结果
- 算术运算的种类
- 特定的ALU所支持的算术运算可能仅局限于加法和减法,也可能包括乘法、除法,甚至三角函数和平方根。有些ALU只支持整数,而其他ALU则可以使用浮点来表示有限精度的实数
- 能够执行最简单运算的任何计算机,都可以通过编程,把复杂的运算分解成它可以执行的简单步骤。所以任何计算机都可以通过编程来执行任何算术运算
存储器
- 存储器是由可以存放和读取数值的一系列单元所组成的,每个存储单元都有一个编号,称为'地址'
- 存储单位:位、字节、千字节、兆字节、吉字节、太字节
- 字 计算机一次所能处理的一组二进制数
- 字长 通常把组成一个字的二进制位数叫做字长
- 分类:主存器、寄存器、闪速存储器、高速缓冲存储器、辅助存储器
适配器与输入输出设备
- 输入输出设备(外围设备)通过是配置部件与主机相连接
- 是配置保证外围设备用计算机系统特性所要求的形式发送或接收信息
总线
- 计算机系统通过总线将CPU、主存器及I/O设备连接起来,实现传送地址、数据和控制信息的操作
数字计算机的发展史
- 电子管、晶体管、中小规模集成电路、大规模集成电路
- 系统结构的发展:指令系统、微程序设计、流水线结构、多级存储器体系结构、输入输出体系结构、并行体系结构、分布式体系结构、多媒体体系结构、操作系统、数据库管理系统
计算机软件
- 分类:应用软件、系统软件
- 系统软件分类:服务性程序、语言处理程序、操作系统、数据库管理系统、标准库程序、计算机网络软件
- 软件的发展演变:机器语言、汇编语言、算法(高级)语言、操作系统、数据库
计算机系统的有关概念
- 计算机系统的层次结构
- 计算机是一个十分复杂的软、硬件结合而成的整体
- 计算机通常由五个以上不同的级组成,每一级都能进行程序设计
- 微程序设计级,直接由硬件执行
- 机器语言级 -由微程序解释器指令系统执行
- 操作系统级 -由操作系统程序实现
- 汇编语言级 -由汇编程序支持和执行
- 高级语言级 -由各种高级语言编译程序支持和执行
- 除第一级外,其他各级都得到它下面各级的支持,同时也得到运行在下面各级上的程序的支持
- 软件与硬件的逻辑等价性
- 软件固化:容量大、价格低、体积小、可以改写的只读存储器提供了软件固化的良好物质手段,可以把许多复杂的、常用的程序制作成固件
- 三个术语的物理概念
- 计算机体系结构 Computer architecture
- 确定计算机系统中软硬件的界面
- 计算机组成 Computer organization
- 计算机体系结构的逻辑实现
- 计算机实现 Computer implementation
- 计算机组成的物理实现,着眼于器件技术和微组装技术
- 具有相同计算机体系结构(如指令系统相同)的计算机,因为速度要求不同等因素可以采用不同的计算机组成
- 一种计算机组成可以采用多种不同的计算机实现
- 计算机体系结构的分类
- 1996年,M.J.Flynn从计算机体系结构的并行性能出发,按照指令流和数据流的不同组织放hi是,把计算机系统的结构分为以下四类:
- 单指令流单数据流SISD
- 单指令流多数据流SIMD
- 以阵列处理机和向量处理机为代表
- 多指令流但数据流MISD
- 多指令流多数据流MIMD
- 以多处理机和机群系统为代表
运算方法和运算器
数据与文字的表示方法
- 计算机的基本功能是对数据、文字、声音、图形、图像、视频等信息进行加工处理,其中数据有两大类:数值数据、非数值数据
- 无论是数值数据还是非数值数据,在计算机中都是用二进制表示的
- 而文字、声音、图形、图像和视频等信息要在计算机中处理,都要事先数字化,既把文字、声音、图形、图像和视频等信息转换为二进制数码
- 在选择计算机中数的表示方式时,需要考虑以下几个因素
- 数的类型(小数、整数、实数、复数)
- 可能遇到的数值范围
- 数值精确度
- 数据存储和处理所需要的硬件代价
- 计算机中常用的数据表示格式:定点格式、浮点格式
- 定点格式
- 一个数的小数点的位置是固定的
- 可表示的数值的范围有限,但要求的处理硬件比较简单
- 通常将数据表示成纯小数或纯整数
- 为了将数表示成纯小数,通常把小数点固定在数值部分的最高位之前
- 为了把数表示成纯整数,则把小数点固定在数值部分的最后面
- 由于小数点事先约定在固定位置,所以在机器中是不表示出来的
- 假设用n+1位字来表示一个定点数x,其中一位x0表示符号位,其余表示它的量值,符号位在最左位置,用0和1分别代表正号和负号
- 任意定点数x=x0x1x2...x(n-1)xn,如果x表示的是纯小数小数点位于x0和x1之间,数的表示范围为0<=|x|<=1-2(-n次幂);如果x表示的是纯整数小数点位于最低位xn的右边,数的范围为0<=|x|<=2(n次幂)-1
- 目前计算机中多采用定点纯整数表示,因此定点数表示的运算简称为整数运算
- 浮点格式
- 一个数的小数点的位置是浮动的
- 可表示的数值的范围很大,要求的处理硬件比较复杂
- 为了表示更大范围的数据,数学上通常采用科学计数法,把数据表示成一个小数乘以一个以10为底的指数(例如:电子的质量-.9*10(-27次幂),太阳的质量0.2*10(34次幂))
- 浮点表示法就是把一个数的有效数字和数的范围在计算机的存储单元中分别予以表示
- 相当于数的小数点位置随比例因子的不同而在一定范围内自由浮动,改变了指数部分的数值,也就相当于改变了小数点的位置
- 一个十进制数n可以写成n = 10(e次幂) * m,一个二进制n可以写成n = 2(e次幂) * m。其中m称为浮点数的尾数,是一个纯小数;e是比例因子的指数,称为浮点的指数,是一个整数
- 在计算机中表示一个浮点数时
- 一是要给出尾数m,用定点小数形式表示,尾数部分给出有效数字的位数,因而决定了浮点数的表示精度
- 二是要给出指数e,用整数形式表示,常称为阶码;阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围
- 浮点数也是有符号数,带符号的浮点数的表示为S(符号位1位) E(阶码m位) M(尾数n位)
- 其中S为尾数的符号位,安排在最高一位
- E为解码,紧跟符号位之后,占m位
- M为尾数,在低位部分,占n位
- 定点格式
- 规格化浮点数
- 若不对浮点数的表示做出明确规定,同一个浮点数的表示就不是唯一的
- 为了提高数据的表示精确的,需要充分利用尾数的有效位数。
- 当尾数的值不为0时,尾数域的最高有效位应为1,否则就要用修改阶码同时左右移动小数点的办法,使其变成符合这一要求的表示形式,这称为浮点数的规格化
- IEEE-754标准格式
- 1985年,IEEE(institute of electrical and electronics engineers 美国电气和电子工程师协会)提出了IEEE-754标准作为浮点数表示格式的统一标准,大大改善了科学应用程序的可移植性
- IEEE标准从逻辑上用三元组S,E,M表示一个数N,基数为2,符号位S用0和1表示正负,尾数M用原码表示,阶码E用移码表示
- 根据浮点数的规格化方法,尾数域最高有效位总是1,由此该标准约定这一位不予存储,而认为隐藏在小数点的左边,因此尾数域所表示的值是1.M(实际存储的是M),这样可使得尾数的表示范围比实际存储多一位
- 为了表示指数的正负,阶码E通常采用移码方式来表示,将数据的指数e加上一个固定的偏移量后作为该数的阶码,这样做既避免了负指数,又保持了数据原有的大小顺序,便于进行比较操作
- 目前大多数高级语言都按照IEEE-754标准来规定浮点数的存储格式
- IEEE-754规定,单精度浮点数用4字节(32位)存储;双精度浮点数用8字节(64位)存储
- 单精度格式:S(1位) E(8位 阶码的移码值为127(7FH)) M(23位);双精度格式:S(1位) E(11位 阶码的移码值为1023(3FFH)) M(52位)
- 一个规格化的32位浮点数x的真值可表示为x = -1(s次幂) * (1.M) * 2(E-127);e=E-127
- 一个规格化的64位浮点数x的真值可表示为x = -1(s次幂) * (1.M) * 2(E-1023);e=E-1023
- 机器零
- 当一个浮点数的尾数为0不论其阶码为何值,或当阶码的值遇到比它能表示的最小值还小时不管其尾数为何值,计算机都把该浮点数看成零值,称为机器零
- 浮点数表示范围
- 当阶码E为全0且尾数M也为全0时,表示的真值X为零,结合符号位S为0或1,有正零和负零之分
- 当阶码E为全1且尾数M也为全0时,表示的真值X为无穷大,结合符号位S为0或1,有正无穷和负无穷之分
- 这样,在32位浮点数的表示中,要除去E用全0和全1(255<sub>10</sub>)表示零和无穷大的特殊情况,因此阶码E的范围变为1-254,指数的偏移值不选128(10000000)而选127(01111111)
- 对于32位规格化的浮点数真正的指数值e为-126 ~ +127。因此数的绝对值的范围是2<sup>-126</sup> ~ 2<sup>127</sup> = 10<sup>-38</sup> ~ 10<sup>38</sup>
十进制数串的表示方法
- 十进制数串在计算机内主要有两种表示形式:字符串形式、压缩的十进制数串形式
- 字符串形式:
- 一个字节存放一个十进制的数位或符号位
- 占用连续的多个字节
- 主要用在非数值计算的应用领域中
- 压缩的十进制数串形式
- 一个字节存放两个十进制的数位
- 节省存储空间
- 便于直接完成十进制数的算术运算
数的机器码表示
- 机器数:用二进制数0和1来表示数的(正负)符号,且把符号位置于该数的最高数值位之前,这样表示的数称为机器数或机器码,既把符号位和数值位一起编码来表示的数就是机器数
- 真值:一般书写中用+或-号来表示数的符号,这样表示的数称为真值
- 例如:
- N1 = +0.101,N2 = -0.101 这是真值
- N1 = 0.101,N2 = 1.101 这是机器数表示法
- 机器数有原码、反码、补码、移码四种表示形式
- 原码表示法
- 符号位为0表示正数,为1表示负数,数值部分用二进制数的绝对值表示
- 0的原码有两个值,有正零和负零之分(机器遇到这两种情况都当作0处理,只是表示形式不同)。+0 = 0.000;-0 = 1.000
- 采用原码表示法简单易懂,与真值转换方便
- 但它的最大缺点是加减法运算复杂,需要分别计算符号位和数值位
- 当两个数相加时,如果是同号则数值相加;如果是异号则要进行相减
- 而在进行减法时,还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择恰当的符号
- 为了解决这个问题,便引进了数的补码表示法
- 补码表示法
- 计算机中的加法器是以2<sup>n</sup>为模的有模器件,因此可以引入补码,把减法运算转换为加法运算,以简化运算器的设计
- 补码的定义是:把某数X加上模数K,称为以K为模的X的补码:X<sub>补</sub> = K + X
- 因此,正数的补码的最高位为符号0,数值部分为该数本身;负数的补码的最高位为符号1,数值为用模减去该数的绝对值
- 定点小数
- 对于正数
- x = +0.xxx...x
- x<sub>补</sub> = 0.xxx...x
- 对于负数
- x = +0.xxx...x
- x<sub>补</sub> = 10.000...0 - 0.xxx...x (mod 2)
- 对于0:+0 = -0 = 0.0000 (mod 2),0的补码表示只有一种形式
- 对于正数
- 定点整数
- 特点
- 采用补码表示法进行减法运算比原码方便多了。因为不论数是正还是负,机器总是做加法,减法运算可变为加法运算
- 但为了用加法代替减法,结果还得再求补码时做一次减法,这显然是不方便的
- 反码表示法可以解决负数的求补问题
- 反码表示法
- 引入反码的目的是便于求负数的补码
- 定点小数
- 定点整数
- 特点:
- 再计算机中,求一个数的反码很容易,因而求一个数的补码也就容易实现
- 由于补码表示对加减运算十分方便,计算机的控制线路简单,因此目前大多数计算机采用补码存储、补码运算,其运算结果仍为补码形式
- 反码计算方法
- 正数的反码与原码相同
- 负数的反码是:符号位不变,数值位逐位取反
- 补码计算方法
- 正数的补码与原码相同
- 负数的补码是:符号位不变,数值位逐位取反加1
- 移码表示法
- 移码也称做增码或偏码,常用于表示浮点数中的阶码
- 定点整数
- 假定定点整数移码形式为X0X1X2...Xn时,移码的定义是 x<sub>移</sub> = 2<sup>n</sup> + x 2<sup>n</sup> > x >= -2<sup>n</sup>
- 式中2<sup>n</sup>是一个固定的偏移值
- 移码和补码之间的关系
- X<sub>移</sub>可由X<sub>补</sub>求得
- 方法是把X<sub>补</sub>的符号位取反,就得到X<sub>移</sub>
字符与字符串的表示方法
- ASCII字符
- 用7位二进制编码(0~127)表示一个字符,可表示128个字符
- 95个是可现实,可打印字符,10个十进制数,52个英文大小写字母,以及若干个运算符和标点符号
- 33个字符是不可显示或打印的控制符号
- 除标准的ASCII字符编码外,许多公司和组织通过不同的选择来使用高位ASCII字符(取值128~255),这些字符编码统称为扩展ASCII码,这不是国际标准
- Unicode码
- 现今人类使用了接近68000中不同的语言
- 为每种语言中的每个字符设定了统一并唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求
- UCS-2:使用16位的编码空间,每个字符占2个字节
- UCS4:每个字符占4个字节(实际上只用了31位,最高位必须为0)
- 字符串表示
- 字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存在一个字符
- 当主存字由2个或4个字节组成时,在同一个主存字中,即可按从低位字节向高位字节的顺序存放字符串的内容,也可按从高位字节向低位字节的次序顺序存放字符串内容
- 汉字的表示方法
- 输入码、交换码、机内码
- 字形输出码与汉字库
- 构造汉字字形的方法有两种:点阵法、矢量法
- 汉字编码的发展:GB2312字符集、BIG5字符集、GBK字符集、GB18030字符集
- 校验码
- 元件故障、噪声干扰等各种因素常常导致计算机在处理信息过程中出现错误
- 为了防止错误,可将信号采用专门的逻辑线路进行编码以检测错误,甚至矫正错误
- 通常的方法是,在每个字上添加一些校验位,用来确定字中出现错误的位置
- 计算机中常用这种检错或纠错技术进行存储器读写正确性或传输信息的检验
- 奇偶校验:最简单且应用广泛的检错码是采用一位校验位的奇校验或偶校验
- 只有当x中包含有奇数个1时,奇校验位C=0
- 只有当x中包含有偶数个1时,偶校验位C=0
- 奇偶校验可提供奇数个错误检测,但无法检测偶数个错误,更无法识别错误信息的位置
定点加法减法运算
- 补码加法
- 负数用补码表示后,可以和正数一样来处理,这样运算器里只需要一个加法器就可以了,不必为了负数的加法运算,再配一个减法器
- 补码加法的公式:x<sub>补</sub> + y<sub>补</sub> = [x + y]<sub>补</sub> (mod 2)
- 在模2意义下,任意两个数的补码之和等于该两数之和的补码,这是补码加法的理论基础
- 溢出概念
- 两个正数相加,结果大于机器所能表示的最大正数,称为正溢
- 两个负数相加,结果小于机器所能表示的最小负数,称为负溢
- 溢出检测方法:
- 双符号位法(变形补码,模4补码):如果两个数相加后,其结果的符号位出现'01'或'10'两种组合时,表示发生溢出
- 在定点机中,当运算结果发生溢出时,机器通过逻辑电路自动检查出溢出并进行中断处理
定点乘法和除法运算
- 从实现角度来说,实现乘除法运算一般有三种方法
- 采用软件实现乘除法运算,利用基本运算指令,编写实现乘除法的循环子程序,这种方法所需的硬件最简单,但速度慢
- 在原有的基本运算电路的基础上,增加左右移位和计数器等逻辑电路来实现,同时增加专门的乘除法指令,这种方法的速度比第一种方式块
- 自动大规模集成电路问世以来,高速的单元阵列乘除法器应运而生,出现了各种形式的流水式阵列乘除法器,它们属于并行乘除法器,也有专门的乘除法指令,这种方式依靠硬件资源的重复设置来赢得乘除运算的高度,是三种方式种速度最快的一种
- 从编码角度考虑,由于乘除法结果的符号位确定比较容易,运算结果的绝对值和参加运算的数据的符号无关,所以用原码实现也很简单,但在现代计算机种一般还是采用补码进行乘除法计算
定点运算器的组成
- 运算器是数据的加工处理部件,是CPU的重要组成部分
- 运算器的主要功能
- 对数据进行加工处理,主要包括对数值数据的算术运算,如执行加、减、乘、除运算,变更数据的符号等;同时也包括对各种数据的逻辑运算,如进行与、或、求反等运算
- 运算器的组成:运算器通常由算术逻辑单元ALU(Arithmetic Logic Unit)、寄存器、数据总线和其他逻辑部件组成
- ALU是具体完成算术与逻辑运算的单元,是运算器的核心,由加法器及其他逻辑运算单元组成
- 寄存器用于存放参与运算的操作数,其中的累加器是一个特殊的寄存器,除了可以存放操作数外,还用于存放中间结果和最后结果
- 数据总线用于完成运算器内部的数据传送
- 逻辑运算
- 计算机中除了进行加、减、乘、除等基本算术运算以外,还可对两个或一个逻辑数进行逻辑运算
- 所谓逻辑数,是指不带符号的二进制数
- 利用逻辑运算可以进行两个数的比较,或者从某个数中选取某几位等操作
- 主要指:逻辑非、逻辑加、逻辑乘、逻辑异
- 逻辑非运算(NOT):就是按位求它的'反'又称取反,常用变量上方加个'-'来表示
- 逻辑加(OR):就是按位求它们的'或'又称逻辑或,常用记号'V'或'+'来表示。特点:对任何数逻辑或'1'都会变成1,而逻辑或'0'则保持原有数据不变,所以在实际应用中,如果需要对一个数据的某几位置1(其他位不变)时,常常会用到逻辑或运算
- 逻辑乘运算(AND):就是按位求它们的'与'又称逻辑与,常用记号'^'或'.'来表示。特点:对任何数逻辑与'0'都会变成0,而逻辑与'1'则保持原数据不变,所以在实际应用中,如果需要对一个数据的某几位清0(其它位保持不变)时,常常会用到逻辑与运算
- 逻辑异运算(XOR):就是按位求它们的模2和又称按位加,常用记号'⊕'来表示。特点:对任何数逻辑异或'1'都会取反,而逻辑异或'0'则保持不变,所以在实际应用中,如果需要对一个数据的某几位取反(其他不变)时,常常会用到逻辑异或运算。对一个数连续两次逻辑异或,该数就会恢复原来的状态,这一特点可用于一些需要数据可恢复的操作
- 多功能算术/逻辑运算单元(ALU)
- 不仅具有多种算术运算和逻辑运算的功能,而且具有先行进位逻辑从而能实现高速运算
- 特定的ALU所支持的算术运算可能仅局限于加法和减法,也可能包括乘法、除法,甚至三角函数和平方根,有些ALU只支持整数,而其他ALU则可以使用浮点来表示有限精度的实数
- 但是能够执行最简单运算的计算机,都可以通过编程把复杂的运算分解成可执行的简单步骤
- ALU还可以比较数值,并根据是否相等、大、小来返回布尔值
- 超标量(Superscalar)计算机包含多个ALU,可以同时处理多条指令
- 图形处理器和具有单指令流多数据流SIMD和多指令流多数据流MIMD特性的计算机通常提供可执行矢量和矩阵算术运算的ALU
- 内部总线
- 由于计算机内部的主要工作过程是信息传送和加工的过程,因此在机器内部各部件之间的数据传送非频繁
- 为了减少内部数据传送线并便于控制,通常将一些寄存器之间数据传送的通路加以归并,组成总线结构,使不同来源的信息在此传输线上分时传送
- 根据总线所处的位置,总线分为内部总线和外部总线两类
- 内部总线是指CPU内各部件的连线
- 外部总线是指系统总线,即CPU与存储器、I/O系统之间的连线
- 按总线的逻辑结构来说,总线可分为单向传送总线和双向传送总线
- 单向总线就是信息只能向一个方向传送
- 双向总线就是信息可以向两个方向传送,既可以发送数据,也可以接收数据
- 定点运算器的基本结构
- 运算器的设计,主要是围绕ALU和寄存器同数据总线之间如何传送操作数和运算结果进行的
- 在决定方案时,需要考虑数据传送的方便性和操作速度,在微型机和单片机中还要考虑在硅片上制作总线的工艺
- 计算机的运算器大体有三种结构形式:单总线结构、双总线结构、三总线结构
- 单总线
- 由于所有部件都接到同一总线上,所以数据可以在任何两个寄存器之间,或者在任一个寄存器和ALU之间传送
- 在同一时间内,只能有一个操作数放在单总线上。把两个操作数输入到ALU,需要分两次来做,而且还需要A,B两个缓冲寄存器
- 这种结构的主要缺点是操作速度较慢,由于它只控制一条总线,故控制电路比较简单
- 双总线
- 在这种结构中,两个操作数同时加到ALU进行运算,只需要一次操作控制,而且马上就可以得到运算结果
- ALU的输出不能直接加到总线上去。这是因为,当形成操作结果的输出时,两条总线都被输入数占据,因而必须在ALU输出端设置缓冲寄存器
- 三总线
- 在三总线结构中,ALU的两个输入端分别由两条总线供给,而ALU的输出则与第三条总线相连。这样算术逻辑操作就可以在一步的控制之内完成
- 三总线结构的运算器的特点是操作时间快
浮点运算方法和浮点运算器
- 浮点加法、减法运算
- 两浮点数进行加法和减法的运算规则
- ?
- 完成浮点加减运算的操作过程大体分为四步
- 0操作数检查:如果判知两个操作数x或y中有一个数为0,即可得知运算结果而没有必要再进行后续的一系列操作
- 比较阶码大小并完成对阶:若两数阶码相同,表示小数点是对齐的,就可以进行尾数的加减。反之若两数阶码不同,表示小数点位置没有对齐,此时必须使两数的阶码相同,这个过程叫对阶
- 对阶:1要对阶,首先应求出两个数阶码Ex和Ey只差,即E = Ex - Ey。当Ex不等于Ey时,要通过尾数的移动以改变Ex或Ey使之相等
- 对阶操作规定使尾数右移,阶码作相应增加,其数值保持不变。在对阶时,总是使小阶向大阶看齐;每右移一位,其阶码加1,直到两个数的阶码相等;右移的位数等于阶差E
- 尾数进行加或减运算,求和
- 不论加法运算还是减法运算,都按加法进行操作
- 结果规格化并进行舍入处理
- 在浮点数加减运算时,尾数求和的结果也会得到01.xxx或10.xxx,即两符号位不相等,在浮点运算中,它表明尾数求和结果的绝对值大于1,向左破坏了规格化,此时将尾数运算结果右移以实现规格化表示,称为向右规格化,即尾数右移1位,阶码加1;当尾数不是1.M时须向左规格化
- 舍入处理:在对阶或向右规格化时,尾数要向右移位,这样被右移的尾数的低位部分会被丢掉,从而造成一定误差,因此要进行舍入处理。简单的舍入方法:0舍1入法;恒置1法。
- 在IEEE754标准中,舍入处理提供了四种可选方法:就近舍入(四舍五入)、朝0舍入(截尾)、朝正无穷舍入、朝负无穷舍入
- 溢出处理:浮点数的溢出是以其阶码溢出表现出来的;在加减运算过程中要检查是否产生了溢出;另外对尾数的溢出也需要处理
- 浮点乘法、除法运算
- 浮点乘法运算规则:?
- 乘积的尾数是相乘两数的尾数之积,乘积的阶码是相乘两数的阶码之和
- 浮点除法运算规则:?
- 商的尾数是相除两数的尾数之商,商的阶码是相除两数的阶码之差
- 浮点乘除法运算步骤
- 0操作数检查
- 阶码加/减操作
- 尾数乘/除操作
- 结果规格化及舍入处理
- 浮点运算流水线
- 为了实现流水,首先必须把输入的任务分割为一系列的子任务,使各子任务能在流水线的各个阶段并发地执行
- 将任务连续不断地输入流水线,从而实现了子任务的并行
- 在流水线中,原则上要求各个阶段的处理时间都相同,若某一阶段的处理时间较长,势必造成其他阶段的空转等待,因此对子任务的划分是决定流水线性能的一个关键因素
- 线性流水线
- 各个子任务之间具有线性优先关系的流水线称为线性流水线
- 线性流水线由一系列串联的过程段组成,各个过程段之间设有高速的缓冲寄存器,以暂时保存上一过程子任务处理的结果
- 在一个统一的时钟控制下,数据从一个过程段流向相邻的过程段
- 浮点运算器实例
- CPU之外的浮点运算器
- 80 * 87协处理器:是美国Intel公司为处理浮点数等数据的算术运算器和多种函数计算而设计生产的专用算术运算处理器,由于它们的算术运算是配合80 * 86CPU进行的,所以又称协处理器
- 特点:1以异步方式与80 * 86并行工作;2可处理包括二进制浮点数、二进制整数、压缩十进制数串三大类7中数据(P68),其中浮点数的格式符合IEEE754标准
- CPU之内的浮点运算器
- 奔腾CPU:将浮点运算器包含在芯片内;浮点运算部件采用流水线设计,内有浮点专用加法器、乘法器和除法器
存储系统
存储器概述
存储分类
- 存储器是计算机系统中的记忆设备,用来存放程序和数据
- 存储元:是存储器中最小的存储单元,可以存储一位二进制代码
- 存储单元:由若干个存储元组成
- 存储器:由许多个存储单元组成
- 存储的信息单位:位(bit)通常用'b'表示、字节(Byte)通常用'B'表示、字(word)
- 对于32位机:1Word = 4Bytes = 32bits
- 按存储介质分:半导体存储器、磁表面存储器(如:磁盘、磁带)
- 作为存储介质的基本要求:必须有两个明显区别的物理状态,分别用来表示二进制的代码0和1;而存储器的存取速度又取决于物理状态的改变速度
- 按存取方式分:
- 随机存储器
- 存储器中任何存储单元的内容都能被随机存取,且存取时间和存储单元的物理位置无关
- 半导体存储器是随机存储器
- 顺序存储器
- 存储器只能按某种顺序来存取,存取时间和存储单元的物理位置有关
- 磁带存储器是顺序存储器
- 磁盘存储器是半顺序存储器、
- 随机存储器
- 按存储器的读写功能分:只读存储器(ROM)、随机读写存储器(RAM)
- 按信息的可保存性分:
- 非永久记忆存储器
- 断点即消失
- 如:半导体读写存储器
- 永久性记忆存储器
- 断点仍能保存信息
- 磁性材料做成的存储器是永久性存储器
- 非永久记忆存储器
- 按在计算机系统中的作用分:
- 主存储器、辅助存储器、高速缓冲存储器、控制存储器等
存储器的分级结构
- 为了解决对存储器要求容量大、速度快、成本低的矛盾,通常采用多级存储器体系结构:高速缓冲存储器、主存储器、外存储器
- CPU - 内存(Cache - 主存) - 外存(磁盘、磁带、光盘)
主存储器的技术指标
- 字存储单元:存放一个机器字的存储单元,相应的单元地址叫字地址
- 字节存储单元:存放一个字节的单元,相应的单元地址称为字节地址
- 按字寻址的计算机:计算机中可编址的最小单位是字存储单元
- 按字节寻址的计算机:可编址的最小单位是字节
- 一个字存储单元可以包含数个字节,可以按字地址寻址,也可以按字节地址寻址
指标 | 含义 | 表现 | 单位 |
---|---|---|---|
存储容量 | 存储器中可容纳的存储单元总数 | 存储空间大小 | 字数/字节数 |
存取时间 | 从启动到完成操作经历的时间,又称访问时间 | 主存速度 | ns |
存储周期 | 连续启动两次读操作所需间隔的最小时间 | 主存速度 | ns |
存储器宽带 | 单位时间里存储器所存取的信息量 | 数据传输速率 | 位/秒、字节/秒 |
随机读写存储器
半导体存储器
- 目前广泛使用的半导体存储器是MOS半导体存储器,根据存储信息的原理不同分为:
- SRAM 静态MOS存储器。由存储体、读写电路、地址译码电路、控制电路等组成
- 存储体:是存储单元的集合,在较大容量的存储器中,往往把各个字的同一位组织在一个集成片中,同一位的这些字通常排成矩阵的形式,由X选择线(行线)和Y选择线(列线)的交叉来选择所需要的单元
- 地址译码器:
- 地址译码器的输入信息来自CPU的地址寄存器,地址寄存器用来存放所要访问(写入或读出)的存储单元的地址
- 地址译码器把用二进制代码表示的地址转换成输出端的高电位,用来驱动相应的读写电路,以便选择所要访问的存储单元
- 地址译码器有两种方式:1单译码(适用于小容量存储器,地址译码器只有一个);2双译码(适用于大容量存储器,分成X向和Y向两个译码器,可以减少选择线的数目)
- 驱动器:一条X方向选择线要控制挂在其上所有存储元电路,故其所带的电容负载很大,需要在译码器输出后加驱动器,由驱动器驱动挂在各条X方向选择线上的所有存储元电路
- I/O电路:处于数据总线和被选用的单元之间,用以控制被选中的单元读出或写入,并具有放大信息的作用
- 片选与读/写控制电路
- 每一个集成片的存储容量是有限的,需要一定数量的片子按一定方式进行连接后才能组成一个完整的存储器
- 在地址选择时,首先要选片,只有当片选信号有效时,才能选中某一片,此片所连的地址线才有效,这样才能对这一片的存储元进行读/写操作
- 输出驱动电路
- 为了扩展存储器的容量,常需要将几个芯片的数据线并联使用
- 另外存储器的读出数据或写入数据都放在双向的数据总线上
- 这就用到三态缓冲区
- 存储器与CPU连接
- CPU对存储器进行读/写操作,首先由地址总线给出地址信号,然后要发出读操作或写操作的控制信号,最后在数据总线上进行信息交流
- 存储器扩展
- 存储器芯片的容量是有限的
- 需要在字向和位向两方面进行扩充才能满足实际存储器的容量要求
- 通常采用位扩展法、字扩展法、字位同时扩展法
- 位扩展法:只加大字长,而存储器的字数与存储器芯片字数一致,对片子没有选片要求
- 字扩展法:仅在字向扩充,而位数不变,由片选信号来区分各片地址
- 字位同时扩展:在字向和位向同时扩展
- DRAM 动态MOS存储器
- SRAM与DRAMD的区别:SRAM的外围电路简单、速度快、使用的器件多,集成度不高;DRAM可大幅度提高集成度,单由于刷新操作、外围电路复杂
- 刷新(再生)操作:为防止存储的信息电荷泄露而丢失信息,由外界按一定规律不断给栅极进行充电,补足栅极的信息电荷
- 动态MOS存储器采用'读出'方式进行刷新,读出过程就是再生过程
- 依次对存储器的每一行进行读出,就可完成对整个DRAM的刷新
- 存储器控制电路
- DRAM存储器的刷新需要有硬件电路的支持,这些控制线路可以集中在一个半导体芯片上,形成DRAM控制器,它是CPU和DRAM片子之间的接口电路
- 借助DRAM控制器,可把DRAM看作像SRAM一样使用,为系统设计带来很大方便
- SRAM 静态MOS存储器。由存储体、读写电路、地址译码电路、控制电路等组成
- 优点:存取速度快、体积小、可靠性高、价格低廉
- 缺点:断电后不能保存信息
- 高性能的主存储器
- EDRAM芯片:又称增强型DRAM芯片,它是在DRAM芯片上集成了一个SRAM实现的小容量高速缓冲存储器(cache),从而使DRAM芯片的性能得到显著改进
- 猝发式读取:以SRAM保存一行内容的办法,对成块传送非常有利;如果连续的地址高位相同,意味着属于同一行地址,那么连续变动的列地址就会使SRAM中相应位组连续读出,这称为猝发式读取
- EDRAM内存条:模块内存储字完全顺序排放,以猝发式存取来完成高速成块存取;将这种由若干个EDRAM芯片组成的模块做成小电路插件板形式,称为内存条
- 主存物理地址的存储空间分布:基本内存、保留内存、影子内存、扩展内存、ROM(系统BIOS)
- EDRAM芯片:又称增强型DRAM芯片,它是在DRAM芯片上集成了一个SRAM实现的小容量高速缓冲存储器(cache),从而使DRAM芯片的性能得到显著改进
只读存储器(ROM)
- 只能读出,不能写入
- 具有不易失性,即使供电电源切断,ROM中存储的信息也不会丢失
- 只读存储器存入数据的过程,称为对ROM进行编程
- 根据编程方式不同,ROM通常分为以下三类
- 掩模式:数据在芯片制造过程中缺点,只能读不能改变;可靠性高,集成度高,价格便宜,适宜大批量生产;
- 一次编程:可以进行一次性改写;可根据需要编程;可靠性差
- 多次编程:可用紫外光(EPROM)或电(EEPROM)的方法擦除原有数据,再用电的方法写入新的数据;可以多次改写内容
闪速存储器(Flash Memory)
- 闪速存储器是一种高密度、非易失性的读/写半导体存储器,是在EPROM功能基础上增加了电路的电擦除和重新编程能力
- 特点
- 固有的非易失性
- SRAM需要备用电池来确保数据存留,而DRAM需要磁盘作为后援存储器
- 廉价的高密度:位成本比SRAM低,与DRAM相近,可节省电池或磁盘的额外费用和空间
- 可直接执行:直接与CPU连接,省去了从磁盘到RAM的加载步骤,工作速度仅取决于闪速存储器的存取时间
- 固态性能:闪速存储器是一种低功耗、高密度且没有机电移动装置的半导体技术,因而特别适合于便携式计算机系统,使它成为替代磁盘的一种理想工具
- 固有的非易失性
高速存储器
- 为了使CPU不至于因为等待存储器读写操作的完成而无事可做,可以采取一些加速CPU和存储器之间有效传输的特殊措施
- 主存储器采用更高速的技术来缩短存储器的读出时间,或加长存储器的字长
- 采用并行操作的双端口存储器
- 在CPU和主存储器之间插入一个高速缓冲存储器(Cache),以缩短读出时间
- 在每个存储器周期中存取几个字
双端口存储器
- 双端口存储器的逻辑结构
- 双端口存储器是指同一个存储器具有两组相互独立的读写控制线路
- 由于进行并行的独立操作,因而是一种高速工作的存储器
- 可以对存储器中任何位置上的数据进行独立的存取操作
- 典型实例:显示存储器(显存)
多模块交叉存储器
- 模块化组织
- 一个由若干个模块组成的主存储器是线性编址的
- 在常规主存储器设计中,访问地址采用顺序方式
- 优点:某个模块进行存取时,其他模块不工作;某一模块出现故障时,其他模块可以照常工作;通过增添模块来扩充存储器容量比较方便
- 缺点:各模块一个接一个串行工作,因此存储器的带宽受到了限制
- 连续地址分布在相邻的不同模块内,而同一个模块内的地址都是不连续的
- 对连续字的成块传送,交叉方式的存储器可以实现多模块流水式并行存取,大大提高存储器的带宽
- 由于CPU的速度比主存快,同时从主存取出多条指令,必然会提高机器的运行速度
- 基本结构:CPU - 存储器控制部件 - (M0 M1 M2 M3)
- 主存被分成4个相互独立、容量相同的模块,每个模块都有自己的读写控制电路、地址寄存器和数据寄存器,各自以等同的方式与CPU传送信息
- 在理想情况下,如果程序段或数据块都是连续地在主存中存取,那么将大大提高主存的访问速度
- CPU同时访问四个模块,由存储器控制部件控制它们分时使用数据总线进行信息传递。对每一个存储模块来说,从CPU给出访存命令直到读出信息仍然使用了一个存取周期时间。而对CPU来说,它可以在一个存取周期内连续访问四个模块
- 各模块的读写过程将重叠进行,所以多模块交叉存储器是一种并行存储器结构
相联存储器
- 基本原理
- 前面介绍的存储器都是按地址访问的
- 相联存储器是按内容访问的
- 以其中任一存储项内容作为地址来存取的存储器。选用来寻址存储器的字段叫做关键字,简称为键
- 存放在相联存储器中的项可以看成具有下列格式:KEY,DATA。其中键KEY是地址,而数据DATA是被读写的信息
- 把存储单元所存内容的某一部分作为检索项(即关键字项),去检索该存储器,并将存储器中与该检索项符合的存储单元内容进行读出或写入
- 应用
- 在计算机系统中,相联存储器主要用于虚拟存储器中存放分段表、页表、和快表
- 在高速缓冲存储器中,相联存储器作为存放cache的行地址之用
- 在这两种应用中,都需要快速查找
cache存储器
cache基本原理
- cache的功能:cache是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项技术
- cache是介于CPU和主存之间的小容量存储器,但存取速度比主存快
- cache能高速地向CPU提供指令和数据,从而加快程序的执行速度
- 从功能上看,它是主存的缓冲存储器,由高速的SRAM组成
- 为追求高速,全部功能由硬件实现,因而对程序员是透明的
- cache的原理
- CPU和cache之间的数据交换是以字为单位,而cache与主存之间的数据交换是以块为单位。一个块由若干字组成,是定长的
- 当CPU读取主存中一个字时,便发出此字的内存地址到cache和主存,此时cache控制逻辑依据地址判断此字当前是否在cache中。若是在立即传送给CPU;若不在,则用主存读周期把此字从主存读出送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到cache中
- 分配给cache的地址存放在一个相联存储器CAM中,它是按内容寻址的存储器
- LRU(近期最少使用)替换:一行数据送入cache,替换原来的cache中近期最少使用的一行数据,算法由硬件实现
- cache的命中率
- 从CPU来看,增加一个cache的目的,就是在性能上使主存的平均读出时间尽可能接近cache的读出时间
- 为了达到这个目的,在所有的存储器访问中由cache满足CPU需要的部分应占很高的比例,即cache的命中率应接近1,由于程序访问的局部性,实现这个目标是不可能的
- 在一个程序执行期间,设Nc表示cache完成存取的总次数,Nm表示主存完成存取的总次数,则命中率H = Nc / (Nc + Nm)
- 若Tc表示命中时的cache访问时间,Tm表示未命中时的主存访问时间,1-H表示命中率,则cache/主存系统的平均访问时间 Ta = HTc + (1-H)Tm
- 访问效率 E = Tc / Ta
主存与cache的地址映射
- 与主存容量相比,cache的容量很小,它保存的内容只是主存内容的一个子集,且cache与主存的数据交换是以块为单位
- 为了把主存块放到cache中,必须应用某种方法把主存地址定位到cache中,称作地址映射
- 当CPU访问存储器时,它所给出的一个字的内存地址会自动变换成cache的地址
- 由于采用硬件,这个地址变换过程很快,软件人员感觉不到cache的存在,这种特性成为cache的透明性
- cache的数据块大小称为行,主存的数据块大小称为块,行与块是等长的由若干个连续的字组成,字是CPU每次访问存储器时可存取的最小单位
- 全相联映射方式
- 将主存的一个块直接拷贝到cache中的任意一行上
- 优点:非常灵活
- 缺点:比较器电路难于设计和实现
- 应用:只适合于小容量cache采用
- 直接映射方式
- 之歌主存块只能拷贝到cache的一个特定行位置
- 优点:硬件简单,成本低
- 缺点:每个主存块只有一个固定的行位置可存放,容易产生冲突,使cache效率下降
- 应用:适合大容量cache采用
- 组相联映射方式
- 将cache分成U组,每组V行,主存块存放到哪个组是固定的,至于存到该组哪一行则是灵活的
替换策略
- cache工作原理要求它尽量保存最新数据,当一个新的主存块需要拷贝到cache,而允许存放此块的行位置都被其他主存块占满时,就要产生替换
- 替换问题与擦车的组织方式紧密相关。对直接映射的cache来说,只要把此特定位置上的原主存块换出即可。对全相联和组相联cache来说,就要从允许存放新主存块的若干特定行中选取一行换出。如何选取就涉及到替换策略,又称替换算法
- 硬件实现的常用替换算法
- 最不经常使用(LFR)算法:讲一段时间内被访问次数最少的那行数据换出,新调入行容易被替换出去
- 近期最少使用(LRU)算法:将近期内长久未被访问过的行换出,可保护新调入行,提高命中率
- 随机替换:从特定的行位置中随机地选取一行换出,在硬件上容易实现,速度快
cache的写操作策略
- 由于cache的内容只是主存部分内容的拷贝,它应当与主存内容保持一致,而CPU对cache的写入更改了cache的内容,为了使cache的内容与主存内容保持一致,有三种写操作策略
- 写回法:当CPU写cache命中时,只修改cache的内容,而不立即写入主存,只有当此行被换出时才写回主存
- 写cache与写主存异步进行
- 显著减少写主存次数
- 存在不一致性的隐患
- 全写法:当写cache命中时,cache与主存同时发生写修改
- 写cache与写主存同步进行
- 较好地维护了cache与主存的内容一致性
- cache对CPU向主存的写操作无高速缓冲功能,降低了cache的功效
- 写一次法:写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存
奔腾PC机的cache
- 奔腾PC机采用两级cache结构
- 按照在主板上的2级cache(L2)采用2路组相联映射方式
- 集成在CPU内的1级cache(L1)也采用2路组相联映射方式
- L2的内容是主存的子集,L1又是L2的子集,从而使L1未命中处理时间大大缩短
- CPU中的L1分设成各8KB的指令cache(只读)和数据cache(随机读/写),有利于CPU高速执行程序
- L2级cache采用的是写回法,L1级数据cache采用的是写一次法
虚拟存储器
虚拟存储器的基本概念
- 什么是虚拟存储器
- 虚拟存储器只是一个容量非常大的存储器的逻辑模型,不是任何实际的物理存储器
- 借助于磁盘等辅助存储器来扩大主存容量,使之为更大或更多的程序所使用
- 不仅是解决存储容量和存取速度矛盾的一种方法,而且也是管理存储设备的有效方法
- 虚拟存储器指的是主存-外存层次,以透明的方式给用户提供了一个比实际主存空间大得多的虚拟地址空间。此时程序的逻辑地址称为虚拟地址,程序的逻辑地址空间称为虚拟地址空间
- 物理地址:由CPU地址引脚送出,是用于访问主存的地址
- 虚拟地址:由编译程序生成,工作在虚拟地址模式下的CPU理解这些虚拟地址,并将它们转换成物理地址,但虚拟地址空间的大小实际上受到辅助存储器容量的限制
- 从原理上看,主存-外存层次和cache-主存层次有很多相似之处
- 它们采用的地址变换及映射方法和替换策略,从原理上看是相同的,且都基于程序局部性原理
- 它们遵循的原则如下:
- 把程序中最近常用的部分驻留在高速的存储器中
- 一旦这部分变得不常用了,把它们送回到低速的存储器中
- 这种换入换出是由硬件或操作系统完成的,对用户是透明的
- 力图使存储系统的性能接近高速存储器,价格接近低速存储器
- 两种存储系统的主要区别在于:在虚拟存储器中未命中的性能损失要远大于cache系统中未命中的损失
- 主存-外存层次的基本信息传送单位:段、页、段页
- 段式管理
- 段是利用程序的模块化性质,按照程序的逻辑结构划分成的多个相对独立部分;段作为独立的逻辑单位可以被其他程序段调用,形成段间连接,产生规模较大的程序;一般用段表来指明各段在主存中的位置
- 把主存按段分配的存储管理方式称为段式管理
- 优点:段的分界与程序的自然分界相对应;段的逻辑独立性使它易于编译、管理、修改和保护,也便于多道程序共享
- 缺点:因为段的长度各不相同,段的起点和终点不定,给主存空间分配带来麻烦,而且容易在段间留下许多空余的零碎存储空间,造成浪费
- 页式管理
- 页式管理系统的基本信息传送单位是定长的页
- 主存物理空间被划分为等长的固定区域,称为页面
- 优点:页面的起点和终点地址是固定的;比段式管理系统的段外空间浪费要小得多
- 缺点:由于页不是逻辑上独立的实体,所以处理、保护和共享都不及段式方便
- 段页式管理
- 采用分段和分页结合的方法
- 程序按模块分段,段内再分页,进入主存仍以页为基本信息传送单位,用段表和页表进行两级定位管理
页式虚拟存储器
- 虚拟空间
- 把虚拟空间分成页,称为逻辑页
- 主存空间也分成同样大小的页,称为物理页
- 虚拟地址
- 虚拟地址分为两个字段:逻辑页号+页内地址;高位字段为逻辑页号,低位字段为页内行地址
- 实存地址也分两个字段:物理页号+页内行地址;高位字段为物理页号,低位字段为页内行地址
- 由于两者的页面大小一样,所以页内行地址是相等的
- 地址变换
- 虚拟地址到主存实地址的变换是由放在主存的页表来实现的
- 在页表中,对应每个虚存逻辑页号有一个表目,表目内容至少要包含该逻辑页所在的主存页面地址(物理页号),用它作为实(主)存地址的高字段,与虚存地址的页内行地址字段相拼接,产生完整的实主存地址,据此来访问主存
- 快表地址变换
- 为了避免页表已保存或已调入主存储器时对主存访问次数的增多,把页表的最活跃部分存放在高速存储器中组成快表,以减少时间开销
- 快表由硬件组成,它比页表小得多
段式虚拟存储器
- 虚拟地址
- 虚拟地址又段号和段内地址组成
- 为了把虚拟地址变换成实主存地址,需要一个段表,段表中需要有长度指示
段页式虚拟存储器
- 段页式虚拟存储器是段式和页式的结合
- 把程序按逻辑单位分段以后,再把每段分成固定大小的页
- 程序对主存的调入调出是按页面进行的,但它又可以按段实现共享和保护
- 兼备页式和段式系统的优点
- 缺点是在地址映像过程中需要多次查表
- 在段页式虚拟存储系统中,每道程序是通过一个段表和一组页表来进行定位的
- 段表中的每个表目对应一个段,每个表目有一个指向该段的页表起始地址(页号)及该段的控制保护信息
- 由页表指明该段各项在主存中的位置以及是否已装入,已修改等状态信息
- 虚拟地址
- 如果有多个用户在机器上运行,即称为多道程序
- 多道程序的每一道(每个用户)需要一个基号(用户标志号),可由它指明该道程序的段表起始地址
- 虚拟地址格式:基号 段号 页号 页内地址
- 每道程序可由若干段组成,而每段又由若干页组成,由段表指明该段页表的起始地址,由页表指明该段各页在主存中的位置以及是否已装入等控制信息
- 地址变换
- 段页式虚拟存储系统由虚拟地址向实主存地址的变换至少需要查两次表(段表,页表)
替换算法
- 当CPU要用到的数据或指令不在主存时,产生页面失效(缺页),此时要求从外存调进包含有这条指令或数据的页面
- 页面替换策略
- 虚拟存储器中的页面替换策略和cache中的行替换策略有很多相似之处,但有三点显著不同
- 缺页至少要涉及一次磁盘存取,以读取所缺的页面,系统损失比cache未命中大得多
- 页面替换是由操作系统软件实现的
- 页面替换的选择余地很大,属于一个进程的页面都可替换
- 虚拟存储器中的替换策略一般采用LRU、LFU、FIFO算法,或将两种算法结合使用
- FIFO算法只是依序将页面在队列中推进,先进先出,最先进入队列的页面最先被替换掉
虚拟存储器实例
- 奔腾PC的虚地址模式
- 奔腾PC的存储管理部件MMU包括分段部件SU和分页部件PU两部分,可允许SU、PU单独工作或同时工作
- MMU支持三种受保护的虚拟地址模式
- 分段不分页模式:无需访问页目录和页表,地址转换速度快
- 分段分页模式
- 不分段分页模式:虚拟空间减小,但也够用,将虚拟存储器看成是线性分页地址空间,比分段模式具有更大的灵活性
存储保护
- 当多个用户共享主存时,应防止由于一个用户程序出错而破坏其他用户的程序和系统软件,以及一个用户程序不合法地访问不是分配给它的主存区域。为此,系统应提供存储保护。通常采用方法是:存储区保护和访问方式保护,并用硬件来实现
存储区域保护
- 在虚拟存储系统中,通常采用页表保护、段表保护和键时保护等方法
- 页表保护和段表保护
- 每个程序的段表和页表本身都有自己的保护功能
- 页表保护:每个程序的虚页号是固定的,经过虚地址向实地址变换后的实存页号也就固定了。那么不论虚地址如何出错,也只能影响到相对的几个主存页面,不会侵犯其他程序空间
- 段表保护:段表中的段长通常由该段所包含的页数表示。当进行地址变换时,将段表中的段长和虚地址中的页号相比较,若出现页号大于段长时,说明此页号为非法地址,则可发出越界中断
- 段表、页表保护是在未形成主存地址前的保护,若在地址变换过程中出现错误,形成了错误主存地址,那么这种保护是无效的
- 键保护方式
- 为主存的每一页配一个键,称为存储键。它是由操作系统赋予的,每个用户的实存页面的键都相同
- 为每道程序赋予访问键
- 当数据要写入主存的某一页时,访问键与存储键必须相符才允许访问该页,否则拒绝访问
- 环保护方式
- 以上两种保护方式都是保护别的程序区域不受破坏,而正在运行的程序本身则受不到保护
- 环保护方式可以对正在执行的程序本身的核心部分或关键部分进行保护
- 按系统程序和用户程序的重要性及对整个系统的正常运行的影响程度进行分层:每一层叫做一个环;环号由操作系统确定,从内到外逐层增大;环号大小表示保护的级别,环号越大,等级越低
- 程序可以访问任何外层空间,访问内层空间则需要由操作系统的环控例行程序判断这个向内访问是否合法
访问方式保护
- 对主存信息的使用可以有三种方式:读R、写W、执行E
- 相应的访问方式保护就有R,W,E三种方式形成的逻辑组合
- 不允许任何访问
- 可进行任何访问
- 只能读写,不可执行
- 只能执行,不可读写
- 只能写访问
- 不准写访问
- 只能读访问
- 不准读访问
指令系统
指令系统的发展与性能要求
- 指令系统的发展
- 计算机的程序是由一系列的指令组成的,指令就是要计算机执行某种操作的命令
- 从计算机组成的层次结构来说,计算机的指令有微指令、机器指令、宏指令之分
- 微指令:微程序级的命令,属于硬件
- 宏指令:由若干条机器指令组成的软件指令,属于软件
- 机器指令(通常简称为指令):介于微指令与宏指令之间,每一条指令可完成一个独立的算术运算或逻辑运算操作
- 指令系统:一台计算机中所有机器指令的集合
- 系列计算机
- 基本指令系统相同,基本体系结构相同的一系列计算机
- 系列计算机解决了各机种的软件兼容问题,其必要条件是同一系列的各机种有共同的指令集,而且新推出的机种指令系统一定包含所有旧机种的全部指令
- 复杂指令系统计算机(CISC)与精简指令系统计算机(RISC)
- 对指令系统性能的要求
- 指令系统的性能决定了计算机的基本功能,因而指令系统的设计是计算机系统设计中一个核心的问题
- 一个完善的指令系统应满足四方面的要求:完备性、有效性、规整性、兼容性
- 完备性
- 用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现
- 完备性要求指令系统丰富、功能齐全、使用方便
- 有效性
- 利用该指令系统所编写的程序能够高效率地运行
- 高效率主要表现在程序占据存储空间小、执行速度快
- 完整性
- 包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性
- 对称性:在指令系统中所有的寄存器和存储区单元都可同等对待,所有的指令都可使用各种寻址方式
- 匀齐性:一种操作性质的指令可以支持各种数据类型
- 指令格式和数据格式的一致性:指令长度和数据长度有一定的关系,以方便处理和存取
- 兼容性
- 系列机各机种之间具有相同的基本结构和共同的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用
- 做到所有软件都完全兼容是不可能的,只能做到'向上兼容',即低档机上运行的软件可以在高档机上运行
- 完备性
- 低级语言与硬件结构的关系
- 计算机的程序,就是人们把需要用计算机解决的问题变换成计算机能够识别的一串指令或语句
- 编写程序的过程,称为程序设计,而程序设计所使用的工具则是计算机语言
- 高级语言:其语句和用法与具体机器的指令系统无关
- 低级语言:分机器语言(二进制语言)和汇编语言(符合语言);是面向机器的语言,和具体机器的指令系统密切相关;机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序
指令格式
- 指令字:机器指令是用机器字来表示的。表示一条指令的及其子称为指令字(简称指令)
- 指令格式:指令字用二进制代码表示的结构形式,通常由操作码字段和地址码字段组成(操作码字段|地址码字段)
- 操作码字段表示指令的操作特性与功能
- 地址码字段通常指定参与操作的操作数的地址
操作码
- 设计计算机时,对指令系统的每一条指令都要规定一个操作码
- 指令的操作码表示该指令应进行什么性质的操作
- 组成操作码字段的位数一般取决于计算机指令系统的规模
- 对于一个机器的指令系统,在指令字中操作码字段和地址码字段长度通常是固定的
地址码
- 根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令
- 一般的操作数有被操作数、操作数及操作结果这三种数,因而就形成了三地址指令格式
- 在三地址指令格式的基础上,后来又发展成二地址格式,一地址格式和零地址格式
指令格式 | - | - | - | - |
---|---|---|---|---|
三地址指令 | 操作码 | A1 | A2 | A3 |
二地址指令 | 操作码 | A1 | A2 | |
一地址指令 | 操作码 | A | ||
零地址指令 | 操作码 |
- 一地址指令(单操作数指令) (AC) OP (A) -> AC
- 通常这种指令是以运算器中累加寄存器AC中的数据为被操作数,指令字的地址码字段所指明的数为操作数,操作结果又放回累加寄存器AC中
- 注意:地址码字段A指明的是操作数的地址,而不是操作数本身
- 二地址指令(双操作数指令) (A1) OP (A2) -> A1
- 三地址指令 (A1) OP (A2) -> A3
- 零地址指令:只有操作码没有地址码,如停机指令
- 在二地址指令格式中,从操作数的物理位置来说,又可归结为三种类型
- 存储器-存储器(SS)型指令:访问内存;参与操作的数都放在内存里
- 寄存器-寄存器(RR)型指令:访问寄存器;从寄存器中取操作数,把操作结果放到另一寄存器;机器执行寄存器-寄存器型指令的速度很快
- 寄存器-存储器(RS)型指令:既要访问内存单元,又要访问寄存器
指令字长度
- 指令字长:一个指令字中包含二进制代码的位数
- 机器字长:计算机能直接处理的二进制数据的位数;机器字长通常与主存单元的位数一致
- 单字长指令:指令字长度等于机器字长度的指令
- 半字长指令:指令字长度等于半个机器字长度
- 双字长指令:指令字长度等于两个机器字长度
- 使用多字长指令的优缺点
- 使用多字长指令的目的:提供足够的地址位来解决访问内存任何单元的寻址问题
- 使用多字长指令的注意缺点
- 必须两次或多次访问内存以取出一整条指令,这就降低了CPU的运算速度,同时又占用了更多的存储空间
- 等长指令字结构
- 各种指令字长度是相等的
- 结构简单
- 变长指令字结构
- 各种指令字长度随指令功能而异
- 结构灵活
指令助记符
- 为了便于书写和阅读程序,每条指令通常用3个或4个英文缩写字母来表示,称为指令助记符
- 由于指令助记符提示了每条指令的意义,因此比较容易记忆,书写起来比较方便
- 不同的计算机中,指令助记符的规定是不一样的
- 指令助记符的转换:
- 指令助记符必须转换成与它们相对应的二进制码
- 这种转换借助汇编程序可以自动完成,汇编程序的作用相当于一个'翻译'
指令和数据的寻址方式
- 几乎所有的计算机,在内存中都采用地址指定方式
- 当采用地址指定方式时,形成操作数或指令地址的方式,称为寻址方式
- 寻址方式分为两类:指令寻址方式和数据寻址方式
指令的寻址方式
- 顺序寻址方式
- 由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序执行
- 为此必须使用程序的计数器(又称指令指针寄存器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址
- 跳跃寻址方式
- 当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式
- 所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出
- 程序跳跃后,按新的指令地址开始顺序执行
- 因此,指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址
- 采用指令跳跃寻址方式,可以实现程序转移或构成循环程序。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的
操作数寻址方式
- 形成操作数的有效地址的方法称为操作数的寻址方式
- 操作数字段的地址码是由形式地址和寻址方式特征位等组合形成
- 一般来说,指令中所给出的地址码,并不是操作数的有效地址
- 形式地址,是指令字结构中给定的地址量
- 寻址过程就是把操作数的形式地址,变换为操作数的有效地址的过程
- 比较典型而常用的寻址方式:隐含寻址、、立即寻址、直接寻址、间接寻址、寄存器寻址和寄存器间接寻址、相对寻址、基址寻址、变址寻址、块寻址、段寻址。计算机中并不一定包含所有的寻址方式
- 隐含寻址:不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址;累加寄存器AC对单地址指令格式来说是隐含地址
- 立即寻址:指令的地址字段指出的不是操作数的地址,而是操作数本身;特点是指令执行时间短
- 直接寻址:在指令格式的地址字段中直接指出操作数在内存的有效地址
- 间接寻址:指令地址字段中的形式地址不是操作数的真正地址,而是操作数地址的指示器,或者说形式地址所指单元的内容才是操作数的有效地址
- 寄存器寻址
- 当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式
- 此时指令中给出的操作数地址是通用寄存器的编号
- 指令结构中的RR型指令,就是采用寄存器寻址方式的例子
- 寄存器间接寻址
- 指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中
- 相对寻址
- 相对寻址是把程序计数器PC的内容加上指令格式中的形式地址而形成操作数的有效地址
- 程序计数器的内容就是当前指令的地址,相对寻址是相对于当前的指令地址而言
- 采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,因而所编程序可以放在内存任何地方
- 此时形式地址通常称为偏移量,其值可正可负,相对于当前指令地址进行浮动
- 基址寻址
- 将CPU中基址寄存器的内容,加上指令格式中的形式地址而形成地址而形成操作数的有效地址;优点是可以扩大寻址能力
- 变址寻址
- 把CPU中某个变址寄存器的内容与偏移量相加来形成操作数有效地址
- 使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律性变化
- 块寻址
- 在指令中指出数据块的起始地址(首地址)和数据块的长度(字数或字节数)
- 经常用于数据块传送(复制和移动)
- 段寻址
- 由一个基地址(CPU中的段寄存器)再加上某些寄存器提供的偏移量来形成实际的物理地址
- 微型机中采用了段寻址方式
寻址方式举例
- Pentium(奔腾)机的寻址方式
- 在实地址模式下,逻辑地址形式为段寻址方式
- 将段名所指定的段寄存器内容(16位)左移4位,低4位补全0,得到20位段基地址,再加上段内偏移,即得20位物理地址
- 再保护模式下,32位段基地址加上段内偏移得到32位线性地址,由存储管理部件将其转换成32位的物理地址
- 在实地址模式下,逻辑地址形式为段寻址方式
堆栈寻址方式
- 堆栈是一组能存储和取出数据的暂时存储单元,是一种特殊的数据寻址方式,采用'先进后出(FILO)'原理
串联堆栈(寄存器堆栈)
- 计算机的CPU中有一组专门的寄存器,称为串联堆栈,其中每一个寄存器能保存一个字的数据。因为这些寄存器直接位于CPU中,所以它们是极好的暂存单元
- 寄存器堆栈的进栈出栈
- CPU通过'进栈'指令把数据送入堆栈,而通过'出栈'指令把数据从堆栈中取出
存储器堆栈
- 通常由程序员设置出一部分主存储器来作为堆栈,称为存储器堆栈,这种堆栈有三个优点:
- 堆栈能够具有程序员要求的任意长度
- 只要程序员喜欢,愿意建立多少堆栈,就能建立多少堆栈
- 可以用对存储器寻址的任何一条指令来对堆栈中的数据进行寻址
- 堆栈指示器
- 在存储器类型的堆栈中,需要一个堆栈指示器,它是CPU中一个专用的寄存器
- 堆栈指示器指定的存储单元,就是堆栈的栈项
典型指令
指令的分类
- 不同机器的指令系统是各不相同的
- 从指令的操作码功能来考虑,一个较完善的指令系统,应当包括:数据传送类指令、算术运算类指令、逻辑运算类指令、程序控制类指令、输入输出类指令、字符串类指令、特权指令、系统控制类指令、其他指令
精简指令系统
- RISC指令系统
- CISC(复杂指令系统计算机)的指令系统一般有多达二三百条的指令
- RISC指令系统是CISC指令系统的改进
- 特点:
- 选取使用频率最高的一些简单指令,指令条数少
- 指令长度固定,指令格式种类少,寻址方式种类少
- 只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间进行
中央处理器
CPU的功能和组成
- 一旦把程序装入内存储器,就可以由计算机来自动完成取出指令和执行指令的任务
- 专门用来完成此项工作的计算机部件称为中央处理器,简称CPU
CPU的功能
- 指令控制
- 程序的顺序控制,称为指令控制
- 保证机器按顺序执行程序是CPU的首要任务
- 操作控制
- CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作
- 时间控制
- 对各种操作实施时间上的定时,称为时间控制
- 数据加工
- 数据加工就是对数据进行算术运算和逻辑运算处理
- 完成数据的加工处理,是CPU的根本任务
CPU的基本组成
- CPU由运算器、cache和控制器三大部分组成
- 控制器
- 由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成
- 完成协调和指挥整个计算机系统的操作
- 主要功能:
- 从内存中取出一条指令,并指出下一条指令在内存中的位置
- 对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作
- 指挥并控制CPU、内存和输入/输出设备之间数据流动的方向
- 运算器
- 由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成
- 是数据加工处理部件
- 运算器接受控制器的命令而进行动作,是执行部件
- 主要功能:
- 执行所有的算术运算
- 执行所有的逻辑运算,并进行逻辑测试
CPU中的主要寄存器
- 在CPU中至少要有以下六类寄存器,这些寄存器用来缓存一个计算机字,根据需要可以扩充其数目
- 数据缓冲寄存器(DR)
- 用来暂时存放由内存储器读出的一条指令或一个数据字,反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中
- 指令寄存器(IR)
- 用来保存当前正在执行的一条指令
- 当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器
- 为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作,指令译码器就是做这项工作的
- 操作码一经译码后,即可向操作控制器发出具体操作的特定信号
- 程序计数器(PC)
- 通常又称为指令计数器
- 在程序开始执行前,PC的内容即是从内存提取的第一条指令的地址
- 当执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址
- 地址寄存器(AR)
- 地址寄存器用来保存当前CPU所访问的内存单元的地址
- 由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读写操作完成为止
- 累加寄存器(AC)
- 通常称为累加器,它是一个通用寄存器
- 其功能是:当运算器的算术逻辑单元(ALU)执行算术或逻辑运算时,为ALU提供一个工作区,暂时存放ALU运算的结果信息
- 状态条件寄存器(PSW)
- 状态条件寄存器保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,这些标志位通常分别由1位触发器保存
- 状态条件寄存器还保存中断和系统工作状态等信息
- 因此,状态条件寄存器是一个由各种状态条件标志拼凑而成的寄存器
- 不同的CPU对条件寄存器的定义不完全一样
操作控制器与时序产生器
- 通常把许多寄存器之间传送信息的通路称为数据通路
- 在各寄存器之间建立数据通路的任务,是由称为操作控制器的部件来完成的
- 操作控制器的功能,就是根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制
- 根据设计方法不同,操作控制器可分为时序逻辑型、存储逻辑型、时序逻辑与存储逻辑结合型三种
- 第一种称为硬布线控制器,它是采用时序逻辑技术来实现的
- 第二种称为微程序控制器,它是采用存储逻辑来实现的
- 第三种是前两种方式的结合
- 操作控制器产生的控制信号必须是定时,还必须有时序产生器
- 时序产生器的作用,就是对各种操作实施时间上的控制
指令周期
指令周期的基本概念
- 取指令-执行指令序列
- CPU从存放程序的内存里取出一条指令并执行这条指令;紧接着又是取指令、执行指令...,如此周而复始构成了一个封闭的循环
- 除非遇到停机指令,否则这个循环将一直继续下去
- 指令周期
- CPU每取出并执行一条指令,都要完成一系列的操作,这一系列操作所需的时间通常叫做一个指令周期
- 指令周期是取出并执行这条指令的时间
- 各种指令的指令周期是不尽相同的
- CPU周期
- 指令周期常常用若干个CPU周期数来表示
- CPU周期也称为机器周期
- 由于CPU内部的操作速度较快,而CPU访问一次内存所花的时间较长,因此通常用内存读取一条指令字的最短时间来规定CPU周期
- 一条指令的取出阶段(通常称为取指)需要一个CPU周期时间
- 时钟周期
- 一个CPU周期时间包含有若干个时钟周期
- 时钟周期(通常称为节拍脉冲或T周期)是处理操作的最基本单位
- 这些时钟周期的综合则规定了一个CPU周期的时间宽度
- 取出和执行任何一条指令所需的最短时间为两个CPU周期
- 任何一条指令,它的指令周期至少需要两个CPU周期
- 而复杂一些的指令周期,则需要更多的CPU周期
用方框图语言表示指令周期
- 在进行计算机设计时,可采用方框图语言来表示一条指令的指令周期
- 方框:代表一个CPU周期,方框种的内容表示数据通路的操作或某种控制操作
- 棱形:表示某种判别或测试,不过时间上它依附于紧接它的前面一个方框的CPU周期,而不单独占用一个CPU周期
- 公操作符合'~'
- 表示一条指令已经执行完毕,转入公操作
- 所谓公操作,就是一条指令执行完毕后,CPU所开始进行的一些操作,这些操作主要是CPU对外设请求的处理
- 如果外围设备没有向CPU请求交换数据,那么CPU又转向内存取下一条指令
- 用方框图示例:?
时序产生器和控制方式
时序信号的作用和体制
- CPU中有一个时序信号产生器,发出时序信号
- 机器一旦被启动,即CPU开始取指令并执行指令时,操作控制器就利用定时脉冲的顺序和不同的脉冲间隔,有条理、有节奏地指挥机器的动作,给计算机各部分提供工作所需的时间标志
- 计算机的协调动作需要时间标志,而时间标志则是用时序信号来体现的
时序信号产生器
- 时序信号产生器的功能是用逻辑电路来实现时序
- 硬布线控制器的时序电路比较复杂,而微程序控制器的时序电路比较简单
控制方式
- 控制不同操作序列时序信号的方法,称为控制器的控制方式
- 常用的有同步控制、异步控制、联合控制三种方式,其实质反映了时序信号的定时方式
- 同步控制方式:在任何情况下,已定的指令在执行时所需的机器周期数和时钟周期数都固定不变
- 异步控制方式
- 特点是:每条指令、每个操作控制信号需要多少时间就占用多少时间
- 这意味着每条指令的指令周期可由多少不等的机器周期数组成
- 联合控制方式:同步控制和异步控制相结合
微程序控制器
- 微程序控制器具有规整性、灵活性、可维护性等一系列优点,因而在计算机设计中逐渐取代了早期采用的硬布线控制器,并已被广泛地应用
- 在计算机系统中,微程序设计技术是利用软件方法来设计硬件的一门技术
- 微程序控制器的基本思想
- 仿照通常的解题程序的方法,把操作控制信号编成微指令,存放到一个只读存储器里
- 当机器运行时,一条又一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作
- 微指令与微程序
- 一条机器指令是由若干条微指令组成的序列来实现的,这个微指令序列通常叫做微程序
- 一条机器指令对应着一个微程序,而微程序的总和便可实现整个的指令系统
硬布线控制器
- 基本思想
- 硬布线控制器是早期设计计算机的一种方法
- 这种方法是把控制部件看作为产生专门固定时序控制信号的逻辑电路,而此逻辑电路以使用最少元件和取得最高操作速度为设计目标
- 一旦控制部件构成后,除非重新设计和物理上对它重新布线,否则想要增加新的控制功能是不可能的
- 这种逻辑电路是一种由门电路和触发器构成的复杂树形逻辑网络,故称之为硬布线控制器
- 特点
- 与微程序控制相比,硬布线控制的速度较快,主要取决于逻辑电路的延迟
- 因此,近年来在某些超高速新型计算机结构中,又选用了硬布线控制器,或与微程序控制器混合使用
流水CPU
并行处理技术
- 早期的计算机采用的是串行处理,计算机的各个操作只能串行地完成,即任一时刻只能进行一个操作
- 而并行处理则使得以上各个操作能同时进行,从而大大提高了计算机的速度
- 广义地讲,并行性有着两种含义:
- 一是同时性,指两个以上事件在同一时刻发生
- 二是并发性,指两个以上事件在同一时间间隔内发生
- 时间并行
- 指时间重叠
- 让多个处理过程在时间上相互错开,轮流重叠地使用一套硬件设备的各个部分,以加快硬件周转而赢得速度
- 时间并行性概念的实现方式就是采用流水处理部件,是一种非常经济而使用的并行技术,能保证计算机系统具有较高的性能价格比
- 空间并行
- 指资源重复
- 以'数量取胜'为原则来大幅度提高计算机的处理速度
- 空间并行技术主要体现在多处理系统和多计算机系统
- 时间并行+空间并行
- 指时间重叠和资源重复的总和应用
- 即采用时间并行性又采用空间并行性,带来的高速效益是最好的
流水CPU的结构
- 流水计算机的系统组成:通常由三部分组成(指令部件、指令队列、执行部件),这三个功能部件可以组成一个3级流水线
- 指令部件:本身又构成一个流水线,即指令流水线,由取指令、指令译码、计算操作数地址、取操作数等几个过程段组成
- 指令队列:指令队列是一个先进先出(FIFO)的寄存器栈,用于存放经过译码的指令和取来的操作数,也是由若干个过程段组成的流水线
- 执行部件:可以有多个算术逻辑运算部件,这些部件本身又用流水线方式构成
- 为了使存储器的存取时间能与流水线的其他各过程段的速度相匹配,一般都采用多体交叉存储器
- 执行段的速度匹配问题:通常采用并行的运算部件以及部件流水线的工作方式来解决,一般采用的方法包括
- 将执行部件分为定点执行部件和浮点执行部件两个可并行执行的部分,分别处理定点运算指令和浮点运算指令
- 在浮点执行部件中,又有浮点加法部件和浮点乘除部件,它们也可以同时执行不同的指令
- 浮点运算部件都以流水线方式工作
- 流水CPU的时空图
- 为了实现流水,首先把输入的任务(或过程)分割为一系列子任务,并使各子任务能在流水线的各个阶段并发地执行
- 当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现了子任务级的并行性
- 一般的流水计算机只有一条指令流水线,称为标量流水计算机
- 所谓超标量流水,是指它具有两条以上的指令流水线
- 当流水线满载时,每一个时钟周期可以执行2条指令
- 超标量流水计算机是时间并行技术和空间并行技术的综合应用
- 流水线分类
- 一个计算机系统可以在不同的并行等级上采用流水线技术,常见的流水线形式:
- 指令流水线:指指令步骤的并行,将指令流的处理过程划分为取指令、译码、取操作数、执行、写回等几个并行处理的过程
- 算术流水线:指运算操作步骤的并行
- 处理机流水线:又称为宏流水线,指程序步骤的并行;由一串级联的处理机构成流水线的各个过程段,每台处理机负责某一特定的任务;应用在多机系统中
- 一个计算机系统可以在不同的并行等级上采用流水线技术,常见的流水线形式:
流水线中的主要问题
- 要使流水线具有良好的性能,必须使流水线畅通流动,不发生断流
- 但由于流水过程中会出现以下三种相关冲突,实现流水线的不断流是困难的
- 资源相关:是指多条指令进入流水线后在同一机器时钟周期内争用同一个功能部件
- 数据相关:在一个程序中,如果必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是数据相关的;由于多条指令的重叠处理,当后继指令所需的操作数,刚好是前一指令的运算结果时,便发生数据相关冲突
- 控制相关:冲突是由转移指令引起的;当执行转移指令时,依据转移条件的产生结果,可能为顺序取下条指令,也可能转移到新的目标地址取指令,从而使流水线发生断流
奔腾CPU
- Pentium是Intel公司生产的超标量流水处理器
- CPU内部的主要寄存器宽度为32位,故认为它是一个32位微处理器,但它通向存储器的外部数据总线宽度位64位
- CPU外部地址总线宽度是36位,但一般使用32位
- CPU内部分别设置指令cache和数据cache,外部还可接L2cache
- CPU采用U、V两条指令流水线,能在一个时钟周期内发射两条简单的整数指令,也可发射一条浮点指令
- 操作控制器采用硬布线控制和微程序控制相结合的方式。大多数简单指令用硬布线控制实现,在一个时钟周期内执行完毕。对微程序实现的指令,也在2-3个时钟周期内执行完毕
- Pentium具有非固定长度的指令格式,具有CISC和RISC两者的特性,被看成为一个CISC结构的处理器
RISC(精简指令系统计算机) CPU
RISC机器的特点
- 第一台RISC于1981年在美国加州大学伯克利分校问世
- 三个基本要素
- 一个有限的简单的指令集
- CPU配备大量的通用寄存器
- 强调对指令流水线的优化
- RISC的目标绝不是简单的缩减指令系统,而是使处理器的结构更简单,更合理,具有更高的性能和执行效率,并降低处理器的开发成本
- 基于三要素的RISC机器的特征是:
- 使用等长指令
- 寻址方式少且简单,绝不出现存储器间接寻址方式
- 只有取数指令、存数指令访问存储器,绝不出现SS型指令
- 指令数目一般少于100种
- 控制器多采用硬布线方式,以期更快的执行速度
- 平均而言,所有指令的执行时间为一个处理时钟周期
- 指令格式中,用于指派整数寄存器的个数不少于32个,用于指派浮点数寄存器的个数不少于16个
- 强调通用寄存器资源的优化使用
- 支持指令流水并强调指令流水的优化使用
- RISC技术的复杂性在于它的编译程序,因此软件系统开发时间比CISC机器长
多媒体CPU
多媒体技术的主要问题
- 多媒体技术是指计算机把各种不同的电子媒质集成起来,统一进行存储、处理和传输
- 多媒体技术解决的主要问题有:
- 图像与声音的压缩技术
- 多媒体技术很重要的内容是对图像与声音进行操作、存储与传送
- 进行管理、操作、存储的图像并不只是数量很少的静止图像,而是符合视频标志的每秒30帧的彩色图像
- 图像压缩是将图像使用像素存储的方式,经过图像变换、量化、高效编码等处理,转换成特殊形式的编码,使计算机所需存储与实时传送的数据量大大降低
- 适应多媒体技术的软件技术
- 具有多媒体功能的操作系统
- 多媒体编辑工具
- 计算机体系结构方面的技术
- 选择专用芯片和专用插卡扩充功能
- 进一步改善总线的结构和性能
- 将一些重要的多媒体技术融合到CPU芯片或设计全新的多媒体CPU芯片。Pentium CPU中均采用了先进的MMX技术和动态执行技术
- 图像与声音的压缩技术
MMX技术
- MMX是一种多媒体扩展结构技术,它极大提高了计算机在多媒体和通信应用方面的功能
- MMX技术集成到Pentium CPU时,主要体现在
- 采用4中新的数据类型
- 使用8个64位宽的MMX寄存器
- 增设57条新指令
- MMX指令集是一种SIMD并行处理指令,以指令级并行的RISC超标量结构为基础
动态执行技术
- 所谓动态执行技术,就是通过预测程序流来调整指令的执行,并分析程序的数据流来选择指令执行的最佳顺序
- 动态执行技术非常利于MMX指令的加速
- 实现动态执行的关键
- 取消传统的'取指'和'执行'两个阶段之间指令需要线性排列的限制
- 使用一个指令缓冲池以开辟一个较长的指令窗口,以便允许执行单元能在一个较大的范围内调遣和执行已译码过的程序指令流
CPU新技术
SIMD技术:MMX SSE SSE2 SSE3
- 单指令流多数据流(SIMD)是一种实现数据级并行的技术,其典型代表是向量处理器(Vector Processor)和阵列处理器(Array Processor)
- SIMD技术的关键是在一条单独的指令中同时执行多个运算操作,以增加处理器的吞吐量。为此,SIMD结构的CPU有多个执行部件,但都在同一个指令部件的控制之下
- MMX
- MMX指令集是一种SIMD并行处理指令,以指令级并行的RISC超标量结构为基础
- MMX的优点是增加了多媒体处理能力,可以一次处理多个数据,缺点是仅仅只能处理整型数,并且由于占用浮点数寄存器进行运算(64位MMX寄存器实际上就是浮点数寄存器的别名),以至于MMX指令集与x87浮点运算指令不能够同时执行,必须做密集的切换才可以正常执行,这种情况势必造成整个系统运行质量的下降
- SSE
- 1999年,Intel在其Pentium III微处理器中集成了SSE(Streaming SIMD Extensions)技术,有效增强了CPU浮点运算的能力
- SSE兼容MMX指令,可以通过SIMD和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度,对图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用起到全面强化的作用
- 作为Intel开发的第二代SIMD指令集,SSE在MMX基础上增加了8个128位浮点寄存器(不与其他寄存器复用)和70条浮点数运算的SIMD指令
- 具有SSE指令集支持的处理器有8个128位的寄存器,每一个寄存器可以存放4个(32位)单精度的浮点数。SSE同时提供了一个指令集,其中的指令可以允许把浮点数加载到这些128位的寄存器中,这些数就可以在这些寄存器中进行算术逻辑运算,然后把结果放回主存。也就是说,SSE中的所有计算都可以针对4个浮点数一次性完成,这种批处理带来了效率的提升
- SSE2
- 2001年,Intel配合其Pentium4微处理器,推出了SSE2指令集,扩展了SSE指令集,并可完全取代MMX
- SSE2指令集是Inter公司在SSE指令集的基础上发展起来的。相比于SSE,SSE2使用了144个新增指令,扩展了MMX技术和SSE技术,这些指令提高了应用程序的运行性能
- 在整数处理方面,随MMX技术进行的SIMD整数指令从64位扩展到了128位,使SIMD整数类型操作的执行效率成倍提高。在浮点数处理方面,双倍精度浮点SIMD指令允许以SIMD格式同时执行两个浮点操作,提供双倍精度操作支持有助于加速内容创建、财务、工程和科学应用。除SSE2指令之外,最初的SSE指令也得到增强,通过支持多种数据类型(例如:双字和四字)的算术运算,支持灵活并且动态范围更广的计算功能
- SSE3
- 2004年,Intel在其基于Prescott核心的新款Pentium4处理器中,开始使用SSE3技术
- SSE3指令集是Intel公司在SSE2指令集的基础上发展起来的。相比于SSE2,SSE3增加了13条SIMD指令,以提升Intel超线程(Hyper-Threading)技术的效能,最终达到提升多媒体和游戏性能的目的
超线程/多核技术
- 超线程技术
- 每个单位时间内,CPU只能处理一个线程(Threading)。除非有两个核心处理单元,否则要想在单位时间内处理超过一个的线程是不可能的
- 超线程HT(Hyper-Threading)技术便是在单个核心处理单元中集成两个逻辑处理单元,也就是一个实体内核(共享的运算单元),两个逻辑内核(有各自独立的处理器状态),从而可以在单位时间内处理两个分别进行整数和浮点运算的线程,模拟双内核运作
- 线程是程序执行的基本原子单位,一个进程可以由多个线程组成
- 在分布式编程中正确使用线程,能够很好地提高应用程序的性能及运行效率。其实现原理是将一个进程分层多个线程,然后让它们并发异步执行,从而来提高运行效率
- 所谓'并发执行',在单核情形下并不是个线程同时执行(占有CPU),在任意时刻还是只能有一个线程占用CPU,只不过它们彼此轮换使用CPU相对频繁一些,感觉上似乎都在运行
- 多核技术
- 多核(Multi-Core)是指在一片处理器中包含两个或两个以上的独立的内核,可以在单位时间内同时处理多个线程
- 多核技术的开发源于这样的认识;在单核芯片中,仅仅提高单核芯片的速度会产生过多热量,且无法代理想要的性能改善
- 多核处理器是单片芯片,能够直接插入单一的处理器插槽中,单操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务
多重指令启动
- 为了进一步提高指令流水线的性能,就要设法在一个时钟周期内启动多条指令,使得平均每个周期能完成几条指令。这样就构成了多重指令启动(Multi-Launch,也称多发射)的流水方式
- 动态多重指令启动
- 动态多重指令启动方法由硬件在每个时钟周期内启动可变数量的指令,这些指令可以采用静态指令调度,也可以采用动态指令调度,常见的技术有超标量技术、超流水线技术
- 超标量技术
- 超标量(Superscalar)技术就是在每个时钟周期内同时并发多条独立指令,即将两条或两条以上的指令并行编译、执行
- 超标量CPU支持指令级并行,每个时钟周期可以发射多条指令(2-4条居多),这样可以使得CPU的IPC(Instruction Per Clock 每时钟指令数) > 1,从而提高CPU处理速度
- 超标量流水计算机是具有两条或两条以上指令流水线的计算机。当流水线满载时,每一个时钟周期可以执行2条以上指令。采用超标量流水线工作方式,机器速度更高,但硬件也更为复杂
- 超流水线技术
- 超流水线(Superpipeline)技术是使指令周期的各个子过程内部流水线进一步细化,使其工作速度加倍,从而在一个时钟周期中执行两条或更多指令
- 超流水线技术通过将一些流水线寄存器插入到流水线各过程段中,对流水线再分,使每段的长度近似相等,以便现有的硬件在每个周期内使用多次,即每个超流水线段都以数倍于基本时钟频率的速度运行
- 在超流水线结构中,由于时钟频率提高了,而功能部件的速度不变,实际上使得流水线的周期数更多,这样会使得指令相关性对流水线的性能影响更大,从而对分支预测等部件提出更高的要求。而且由于并行执行的指令数量更多,要求具有更多的功能部件或者功能部件的流水速度更高
- 静态多重指令启动
- 静态多重指令启动方法每次启动固定数量的指令,这些指令由编译程序组合成一条超长指令(或指令包),常见的技术有超长指令字技术
- 超长指令字
- 超长指令字VLIW(Very Long Instruction Word)技术将多条指令放入一个指令字,可以有效提高CPU各个计算功能部件的利用效率,提高程序的性能
- 首先由编译程序在编译时挖掘出指令间潜在的并行性,然后把多条能并行执行的指令组合成一条具有多个操作段的超长指令,再由这条超长指令的超长指令字来控制机器中多个独立工作的部件,每个操作段控制一个部件,相当于同时执行多条指令
总线系统
总线的概念和结构形态
总线的基本概念
- 总线是构成计算机系统的互连机构,是多个系统功能部件之间进行数据传送的公共通路
- 借助于总线连接,计算机在各系统功能布局之间实现地址、数据和控制信息的交换,并在争用资源的基础上进行工作
- 一个单处理器系统中的总线,大致分为三类
- 内部总线:CPU内部连接各个寄存器及运算部件之间的总线
- 系统总线:CPU同计算机系统的其他高速功能部件,如存储器、通道等互相连接的总线
- I/O总线:中、低速I/O设备之间互相连接的总线
- 总线的特性
- 物理特性:指总线的物理连接方式
- 功能特性:描述总线中每一根线的功能
- 电气特性:定义每一根线上信号的传递方向及有效电平范围;总线的电平都符合TTL电平的定义
- 时间特性:定义了每根线在什么时间 有效;只有规定了总线上各信号有效的时序关系,CPU才能正确无误地使用
- 总线的标准化
- 相同的指令系统,相同的功能,不同厂家生产的各功能部件在实现方法上几乎没有相同的,但各厂家生产的相同功能部件却可以互换使用
- 其原因在于它们都遵守了相同的系统总线的要求,这就是系统总线的标准化问题
- 微型计算机系统中常用用的标准总线
- ISA总线:16位,带宽8MB/s
- EISA总线:32位,带宽33.3MB/s
- VESA总线:32位,带宽132MB/s
- PCI总线:64位,带宽264MB/s
- 总线带宽:是衡量总线性能的重要指标;定义为总线本身所能达到的最高传输速率(MB/s)
总线的连接方式
- 适配器
- 通过适配器可以实现高速CPU与低速外设之间工作速度上的匹配和同步,并完成计算机和外设之间的所有数据传送和控制
- 适配器通常简称为接口
- 单总线结构
- 使用一条单一的系统总线来连接CPU、主存和I/O设备,叫做单总线结构
- 在单总线结构中,要求连接到总线上的逻辑部件必须高速运行,以便在某些设备需要使用总线时,能迅速获得总线控制权;而当不再使用总线时,能迅速放弃总线控制权
- 当CPU取一条指令时
- 首先把程序计数器PC中的地址同控制信息一起送至总线上
- 该地址不仅加至主存,同时也加至总线上的所有外围设备
- 然而,只有与出现在总线上的地址相对于的设备,才执行数据传送操作
- 对输入/输出设备的操作,完全和主存的操作方法一样来处理
- 当CPU把指令的地址字段送到总线上时,如果该地址字段对应的地址是主存地址,则主存予以响应,从而在CPU和主存之间发送数据传送
- 如果该指令地址字段对应的是外围设备地址,则外围设备译码器予以响应,从而在CPU和与该地址相对应的外围设备之间发生数据传送
- 某些外围设备也可以指定地址
- 如果一个由外围设备指定的地址对应于一个主存单元,则主存予以响应,于是在主存和外设之间将进行直接存储器传送(DMA)
- 单总线结构容易扩展成多CPU系统,只要在系统总线上挂接多个CPU即可
- 由于所有逻辑部件都挂在同一个总线上,因此总线只能分时工作,即某一时间只能允许一对部件之间传送数据,这就使信息传送的吞吐量受到限制
- 双总线结构
- 双总线结构保持了单总线系统简单、易于扩充的优点
- 在CPU和主存之间专门设置了一组高速的存储总线,使CPU可通过专用总线与存储器交换信息,并减轻了系统总线的负担
- 主存仍可通过系统总线与外设之间实现DMA操作,而不必经过CPU
- 这种双总线系统以增加硬件为代价
- 三总线结构
- 三总线结构是在双总线系统的基础上增加I/O总线形成的
- 其中,系统总线是CPU、主存和通道(IOP)之间进行数据传送的公共通路;而I/O总线是多个外部设备与通道之间进行数据传送的公共通路
- 通道
- 在DMA方式中,外设与存储器间直接交换数据而不经过CPU,从而减轻了CPU对数据输入输出的控制,而'通道'方式进一步提高了CPU的效率
- 通道实际上是一台具有特殊功能的处理器,又称为IOP(I/O处理器),它分担了一部分CPU的功能,以实现对外设的统一管理及外设与主存之间的数据传送
- 显然,由于增加了IOP,使整个系统的效率大大提高,然而这是以增加更多的硬件代价换来的
总线的内部结构
- 早期总线的内部结构
- 早期总线实际上是处理芯片引脚的延申,是处理器与I/O设备适配器的通道
- 这种简单的总线按其功能可分为三类:地址线、数据线、控制线
- 地址线是单向的,用来传送主存与设备的地址
- 数据线是双向的,用来传送数据
- 控制线对每一根线来讲是单向的,用来指明数据传送的方向、中断请求和定时控制等
- 简单总线结构的不足之处
- CPU是总线上唯一的主控者,即使后来增加了具有简单仲裁逻辑的DMA控制器以后支持DMA传送,但仍不能满足多CPU环境的要求
- 总线信号是CPU引脚信号的延申,故总线结构紧密与CPU相关,通用性较差
- 当代总线的内部结构
- 当代总线是一些标准总线,追求与结构、CPU、技术无关的开发标准,并满足包括多个CPU在内的主控者环境需求
- 在当代总线结构中,CPU和它私有的cache一起作为一个模块与总线相连
- 系统中允许有多个这样的处理器模块
- 而总线控制器完成几个总线请求者之间的协调与仲裁
- 整个总线分为如下四部分:
- 数据传送总线:由地址线、数据线、控制线组成
- 仲裁总线:包括总线请求线和总线授权线
- 中断和同步总线:用于处理带优先级的中断操作,包括中断请求线和中断认可线
- 公用线:包括时钟信号线、电源线、底线、系统复位线以及加电或断电的时序信号线等
总线的结构实例
- 大多数计算机采用了分层次的多总线结构
- 在这种结构中,速度差异较大的设备模块使用不同速度的总线,而速度相近的设备模块使用同一类总线
- 显然,这种结构不仅解决了总线负载过重的问题,而且使总线设计简单,并能充分发挥每类总线的效能
- Pentium主板总线结构是一个三层次的多总线结构,即有CPU总线,PCI总线和ISA总线
- CPU总线:也称CPU-存储器总线;CPU是这条总线的主控者,但必要时可放弃总线控制权;从传统的观点看,可以把CPU总线看成是CPU引脚信号的延申
- PCI总线:用于连接高速的I/O设备模块;通过'桥'芯片,上面与更高速的CPU总线相连,下面与低速的ISA总线相联接
- ISA总线:Pentium机使用该总线与低速I/O设备连接
- '桥'芯片
- CPU总线、PCI总线、ISA总线通过两个'桥'芯片连城整体
- 桥芯片在此起到了信号速度缓冲、电平转换和控制协议的转换作用
- 通常将CPU总线-PCI总线的桥称为北桥,将PCI总线-ISA总线的桥称为南桥
- 通过桥将两类不同的总线粘合在一起的技术特别适合于系统的升级换代
- PCI芯片组
- Pentium个人机总线系统中有一个核心逻辑芯片组,简称PCI芯片组
- 它包括主存控制器和cache控制器芯片、北桥芯片和南桥芯片
- 在系统中起着至关重要的作用
总线接口
信息的传送方式
- 计算机系统中,传输信息采用三种方式:串行、并行、分时。但是处于速度和效率上的考虑,系统总线上传送的信息必须采用并行传送方式
- 串行传送
- 当信息以串行方式传送时,只有一条传输线,且采用脉冲传送。
- 在串行传送时,按顺序来传送表示一个数码的所有二进制位的脉冲信号,每次一位
- 串行传送时低位在前,高位在后
- 在串行传送时,被传送的数据需要在发送部件进行并-串变换,这称为拆卸
- 而在接受部件又需要进行串-并变换,这称为装配
- 串行传送的主要优点是只需要一条传输线,这一点对长距离传输显得特别重要
- 并行传送
- 用并行方式传送二进制信息时,对每个数据位都需要单独一条传输线
- 信息有多少二进制位组成,就需要多少条传输线,从而使得二进制数0和1在不同的线上同时进行传送
- 并行传送一般采用电位传送
- 由于所有的位同时被传送,所以并行数据传送比串行数据传送快得多
- 分时传送
- 分时传送有两种概念
- 采用总线复用方式
- 某个传输线上即传送地址信息,又传送数据信息
- 为此必须划分时间片,以便在不同的时间间隔中完成传送地址和传送数据的任务
- 共享总线的部件分时使用总线
- 采用总线复用方式
接口的基本概念
- I/O设备适配器通常简称为接口
- 广义地讲,接口是指CPU和主存、外围设备之间通过总线进行连接的逻辑部件
- 接口部件在它动态连接的两个部件之间起着'转换器'的作用,以便实现彼此之间的信息传送
- 外围设备本身带有自己的设备控制器,它是控制外围设备进行操作的控制部件
- 它通过接口接收来自CPU传送的各种信息,并根据设备的不同要求把这些信息传送到设备,或者从设备中读出信息传送到接口,然后送给CPU
- 标准接口
- 为了使所有的外围设备能够兼容,并能在一起正确地工作,CPU规定了不同的信息传送控制方法
- 不管什么样的外围设备,只要选用某种数据传送控制方法,并按它的规定通过总线和主机连接,就可以进行信息交换
- 通常在总线和每个外围设备的设备控制器之间使用一个适配器(接口)电路,以保证外围设备用计算机系统特性所要求的形式发送各接收信息
- 接口逻辑通常做成标准化
- 一个标准接口可能连接一个设备,也可能连接多个设备
总线的仲裁
- 连接到总线上的功能模块有主动和被动两种形态
- 主方可以启动一个总线周期,而从方只能响应主方的请求
- 每次总线操作,只能有一个主方占用总线控制权,但同一时间里可以有一个或多个从方
- 为了解决多个主设备同时竞争总线控制权的问题,必须具有总线仲裁部件,以某种方式选择其中一个主设备作为总线的下一次主方
- 对多个主设备提出的占用总线请求,一般采用优先级或公平策略进行仲裁
- 被授权的主方在当前总线业务一结束,即接管总线控制权,开始新的信息传送
- 按照总线仲裁电路的位置不同,仲裁方式分为集中式仲裁和分布式仲裁两类
- 集中式仲裁
- 需要中央仲裁器
- 当代总线标准普遍采用独立请求方式
- 对于单处理器系统总线而言,中央仲裁器又称为总线控制器,它是CPU的一部分
- 分布式仲裁,不需要中央仲裁器
- 集中式仲裁
总线的定时
- 总线的一次信息传送过程,大致可分为五个阶段:请求总线、总线仲裁、寻址(目的地址)、信息传送、状态返回(或错误报告)
- 为了同步主方、从方的操作,必须制订定时协议,所谓定时,是指事件出现在总线上的时序关系
- 数据传送过程中采用的两种定时方式
- 同步定时
- 在同步定时协议中,事件出现在总线上的时刻由总线时钟信号来确定
- 由于采用了公共时钟,每个功能模块什么时候发送或接收信息都由统一时钟规定,因此,同步定时具有较高的传输频率
- 同步定时适用于总线长度较短,各功能模块存取时间比较接近的情况
- 由于同步总线必须按最慢的模块来设计公共时钟,当各功能模块存取时间相差很大时,会大大损失总线效率
- 异步定时
- 在异步定时协议中,后一事件出现在总线上的时刻取决于前一事件的出现,即建立在应答式或互锁机制基础上
- 在这种系统中,不需要统一的公共时钟信号
- 允许快速和慢速的功能模块都能连接到同一总线上,但这以增加总线的复杂性和成本为代价
- 同步定时
PCI总线
- 多总线结构
- PCI是一个与处理器无关的高速外围总线
- 采用同步时序协议和集中式仲裁策略,并具有自动配置能力
输入输出系统
CPU对外围设备的管理方式
- 在计算机系统中,CPU管理外围设备有以下几种方式
- 程序查询方式
- 程序查询方式是早期计算机中使用的一种方式
- 数据在CPU和外围设备之间的传送完全靠计算机程序控制
- 优点是CPU的操作和外围设备的操作能够同步,而且硬件结构比较简单
- 问题是,外围设备动作很慢,程序进入查询循环时将白白浪费掉CPU很多时间。CPU此时只能等待,不能处理其他业务
- 当前除单片机外,很少使用程序查询方式
- 程序中断方式
- 直接内存访问(DMA)方式
- 直接内存访问(DMA)方式是一种完全由硬件执行I/O交换的工作方式
- DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和外围设备之间进行,以高速传送数据
- 主要优点是数据传送速度很高,传送速率仅受到内存访问时间的限制
- 需要更多的硬件
- 适用于内存和高速外围设备之间大批数据交换的场合
- 通道方式
- DMA方式的出席那已经减轻了CPU对I/O操作的控制,使得CPU的效率有显著的提高,而通道的出现则进一步提高了CPU的效率
- CPU将部分权力下放给通道。通道是一个具有特殊功能的处理器,某些应用中称为输入输出处理器(IOP),它可以实现对外围设备的同一管理和外围设备与内存之间的数据传送
- 大大提高了CPU的工作效率
- 以花费更多硬件为代价
- 外围处理机(PPU)方式
- 外围处理器方式是通道方式的进一步发展
- 由于PPU基本上独立于主机工作,它的结构更接近一般处理机,甚至就是微小型计算机
- 在一些系统中,设置了多台PPU,分布承担I/O控制、通信、维护诊断等任务
- 从某种意义上说,这种系统已变成分布式的多机系统
- 程序查询方式
- 程序查询方式和程序中断方式适用于数据传输率比较低的外围设备
- DMA方式、通道方式和PPU方式适用于数据传输率比较高的设备
程序中断方式
- 中断概念的出现,是计算机系统结构设计中的一个重大变革
中断的基本概念
- 中断是外围设备用来主动通知CPU,准备送出输入数据或接收输出数据的一种方法
- 通常,当一个中断发生时,CPU暂停它的现行程序,而转向中断处理程序,从而可以输入或输出一个数据。当中断处理完毕后,CPU又返回到它原来的任务,并从它停止的地方开始执行程序
- 节省了CPU宝贵的时间,是管理I/O操作的一个比较有效的方法
- 一般适用于随机出现的服务,并且一旦提出要求,应立即进行
- 硬件结构相对复杂一些,服务开销时间较大
- CPU只有在当前一条指令执行完毕后,即转入公操作时才受理设备的中断请求
- 保存现场
- 为了在中断服务程序执行完毕以后,能够正确低返回到原来主程序被中断的断点(PC内容)而继续执行主程序,必须把程序计数器PC的内容,以及当前指令执行结束后CPU的状态都保存到堆栈中去
- 中断屏蔽
- 当一条指令执行完毕CPU接受中断请求并作出响应时,它关闭中断。这样,CPU不能再受理另外的新的中断源发来的中断请求。只有在CPU把中断服务程序执行完毕以后,它才重新开发中断,并返回主程序
- 中断处理过程是硬件和软件结合来完成的
- 中断周期由硬件实现
- 而中断服务程序由机器指令序列实现
- 根据计算机系统对中断处理的策略不同,可分为单极中断系统和多级中断系统
单极中断
- 单极中断的概念
- 单极中断系统是中断结构中最基本的形式
- 在单极中断系统中,所有的中断源都属于同一级,所有中断源触发器排成一行,其优先次序是离CPU近的优先权高
- 当响应某一中断请求时,执行该中断源的中断服务程序
- 只有该中断服务程序执行完毕后,才能响应其他中断
多级中断
- 多级中断系统是指计算机系统中有相当多的中断源,根据各中断事件的轻重缓急程度不同而分成若干级别,每一中断级分配给一个优先权
- 一般说来,优先权高的中断级可以打断优先权低的中断服务程序,以程序嵌套方式进行工作
Pentium中断机制
- 中断类型:Pentium有两类中断源,即中断和异常
- 中断
- 通常称为外部中断
- 它是由CPU的外部硬件信号引发的
- 有两种情况:可屏蔽中断、非屏蔽中断
- 异常
- 通常称为异常中断
- 它是由指令执行引发的
- 有两种情况
- 执行异常:CPU执行一条指令过程中出现错误、故障等不正常条件引发的中断
- 执行软件中断指令:软件中断指令执行时产生异常中断
- 中断
- 当有一个以上的异常或中断发生时,CPU以一个预先确定的优先顺序为它们先后进行服务
- 中断优先级分为5级
- 异常中断的优先级高于外部中断的优先级。这是因为异常中断发生在取一条指令或译码一条指令或执行一条指令时出现故障的情况下,情况更为紧急
DMA方式
- 直接内存访问(DMA)是一种完全由硬件执行I/O交换的工作方式
- 在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行
- DMA方式一般用于高速传送成组数据
- DMA控制器将向内存发出地址和控制信号,修改地址,对传送的字的个数计数,并且以中断方式向CPU报告传送操作的结果
- DMA方式的主要优点是速度快
- 由于CPU根本不参加传送操作,因此就省去了CPU取指令、取数、送数等操作
- 在数据传送过程中,没有保存现场、恢复现场之类的工作
- 内存地址修改、传送字个数的计数等等,也不是由软件实现,而是用硬件线路直接实现的
- 所以DMA方式能满足高速I/O设备的要求,也有利于CPU效率的发挥
- DMA控制器的基本组成
- 一个DMA控制器,实际上是采用DMA方式的外围设备与系统总线之间的接口电路
- 这个接口电路是在中断接口的基础上再加DMA机构组成的
- 最简单的DMA控制器,一个控制器只控制一个I/O设备
- 实际中经常采用的是选择型DMA控制器和多路型DMA控制器
- 选择型DMA控制器
- 再物理上可以连接多个设备,而在逻辑上只允许连接一个设备
- 在某一段时间内只能为一个设备服务
- 选择型DMA控制器相当于一个逻辑开关,根据I/O指令来控制此开关与某个设备连接
- 选择型DMA控制器只增加少量硬件达到了为多个外围设备服务的目的
- 多路型DMA控制器
- 选择型DMA控制器不适用于慢速设备。但多路型DMA控制器适合于同时为多个慢速外围设备服务
- 多路型DMA控制器不仅在物理上可以连接多个外围设备,而且在逻辑上也允许这些外围设备同时工作,各设备以字节交叉方式通过DMA控制器进行数据传送
通道方式
通道的功能
- 通道的出现进一步提高了CPU的效率
- 通道是一个特殊功能的处理器,有自己的指令和程序专门负责数据输入输出的传输控制,而CPU将传输控制的功能下放给通道后只负责数据处理功能
- 这样,通道与CPU分时使用内存,实现了CPU内部运算与I/O设备的平行工作
- 通道的基本功能是执行通道指令,组织外围设备和内存进行数据传输,按I/O指令要求启动外围设备,向CPU报告中断等
CPU对通道的管理
- CPU通过执行I/O指令以及处理来自通道的中断,实现对通道的管理
- 来自通道的中断有两种,一种是数据传送结束中断,另一种是故障中断
通道对设备控制器的管理
- 通道通过使用通道指令控制设备控制器进行数据传送操作,并以通道状态字接收设备控制器反映的外围设备的状态
- 因此,设备控制器是通道对I/O设备实现传输控制的执行机构
通道的类型
- 选择通道
- 选择通道又称高速通道
- 在物理上它可以连接多个设备,但是这些设备不能同时工作,在某一段时间内通道只能选择一个设备进行工作
- 选择通道主要用于连接高速外围设备,信息以成组方式高速传输
- 但是这类设备的辅助操作时间很长,在这样长的时间里通道处于等待状态,因此整个通道的利用率不是很高
- 数组多路通道
- 数组多路通道是对选择通道的一种改进
- 基本思想:当某设备进行数据传送时,通道只为该设备服务;当设备在执行寻址等控制性动作时,通道暂时断开与这个设备的连接,挂起该设备的通道程序,去为其他设备服务,即执行其他设备的通道程序
- 由于数组多路通道即保留了选择通道高速传送数据的优点,又充分利用了控制性操作的时间间隔为其他设备服务,使通道效率充分得到发挥,因此数组多路通道在实际系统中得到较多应用
- 数据传送基本单位是数据块
- 字节多路通道
- 字节多路通道主要用于连接大量的低速设备,这些设备的数据传输率很低,因此通道在传送两个字节之间有很多空闲实际,字节多路通道正是利用这个空闲时间为其他设备服务
- 数据传送基本单位是字节
通道结构的发展
- 输入输出处理器(IOP)
- 是通道结构的I/O处理器
- IOP可以和CPU并行工作,提供高速的DMA处理能力,实现数据的高速传送
- 但是它不是独立于CPU工作的,而是主机的一个部件
- 广泛应用于中小型及微型计算机中
- 外围处理机(PPU)
- PPU基本上是独立于主机工作的
- 它有自己的指令系统,完成算术/逻辑运算,读/写主存储器,于外设交换信息等
- 外围处理器I/O方式一般应用于大型高效率的计算机系统中
通用I/O标准接口
并行I/O标准接口SCSI
- SCSI是小型计算机系统接口的简称
- 其设计思想来源于IBM大型机系统的I/O通道结构,目的是使CPU摆脱对各种设备的繁杂控制
- 它是一个高速智能接口,可以混接各种磁盘、光盘、磁带机、打印机、扫描仪、条码阅读器以及通信设备
串行I/O标准接口IEEE1394
- 性能特定
- IEEE1394串行接口与SCSI等并行接口相比,有如下三个显著特点:
- 数据传送的高速性
- 数据传送的实时性
- 体积小易安装,连接方便
- 1394电缆上的设备随时可从插座拔出或插入,即具有热插入能力
- 总之:IEEE1394是一种高速串行I/O标准接口
- 各被连接装置的关系是平等的,不用PC介入也能自成系统
- IEEE1394串行接口与SCSI等并行接口相比,有如下三个显著特点:
并行组织
体系结构的并行性
向量处理机
阵列处理机
多处理机系统
机群系统
推荐文章
-
2023-10-04 05:50:31 浏览量: 1006
-
2023-11-06 21:03:21 浏览量: 1045
-
2023-11-03 22:21:00 浏览量: 1004
-
2023-11-03 20:51:03 浏览量: 1003
-
2023-11-03 18:21:01 浏览量: 1003
-
2023-11-03 17:50:59 浏览量: 1003
-
2023-11-06 21:02:41 浏览量: 1005
-
2023-11-15 17:44:49 浏览量: 1012