计算机组成原理 第3版 笔记 您所在的位置:网站首页 cache标记位是什么 计算机组成原理 第3版 笔记

计算机组成原理 第3版 笔记

2023-04-07 17:09| 来源: 网络整理| 查看: 265

————————————————————一 二 概论————————————————————计算机系统简介

计算机系统软硬件概念

计算机系统由硬件和软件两大部分组成,计算机性能的好坏取决于软硬件功能的总和。

硬件:计算机的实体部分软件:事先编制好的具有各类特殊功能的程序组成系统软件:用来管理整个计算机系统,监视服务,使系统资源得到合理调度,高效运行。应用软件:用户根据任务需要所编制的各种程序。

计算机系统层次结构

虚拟机器:并不是实际存在的机器

高级语言机器M4:用编译程序翻译成汇编语言程序。汇编语言机器M3:将汇编语言翻译成机器语言。操作系统机器M2:由操作系统软件构成,提供了在汇编语言和高级语言的使用好的实现过程中所需的基本操作,控制并管理计算机系统的全部硬件和软件资源。

实际机器:也就是实际存在的机器

传统机器M1:执行机器语言程序微程序机器M0:将M1中的每一条机器指令翻译成一组微指令,即构成一个微程序,然后执行。

2023-01-03_181544.png

计算机组成和计算机体系结构

计算机体系结构:能够被程序员所看见的计算机系统的属性。站在不同层次上编程的程序员所看见的计算机的属性各不相同。计算机组成:指如何实现计算机体系结构所体现的属性。

计算机的基本组成

冯诺依曼计算机

数学家冯诺依曼体现出来了“存储程序”的概念,以此概念设计的各类计算机通称冯诺依曼机,有以下特点:

由运算器、存储器、控制器、输入设备、输出设备五部分构成指令和数据以同等低位存放在存储器内,并可以按地址寻访指令和数据用二进制数表示指令有操作码和地址码组成。操作码——表示操作性质,地址码——操作数存放在存储器的位置指令在存储器内顺序存放机器以运算器为中心,输入和输出设备之间的数据传输通过运算器完成。计算机硬件框图

经典的冯诺依曼计算机以运算为中心

2023-01-03_203853.png

现代计算机以存储器为中心

2023-01-03_204014.png

计算器各部件功能:

运算器:完成算术运算,并存放运算的中间结果存储器:存储数据和程序控制器:用来控制、指挥程序和数据的输入、运行以及处理运算结果输入设备:将人们熟知的信息形式转换为机器能识别的信息形式,如键盘、鼠标输出设备:将机器运算结果转换为人们熟悉的信息形式

计算机以上五个部件都在控制器的统一指挥下,有条不紊的工作。由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,往往集成在同一芯片,合称中央处理器CPU。现代计算机可以认为由三部分组成:CPU、I/O设备及主存储器。其中CPU和主存可以合称主机,IO设备称为外部设备。结构如如下:

2023-01-03_210603.png

五大组成部件主存储器存储器M:存储器由许多存储单元构成,每个存储单元包含若干存储元件,每个存储元件能存储一位二进制代码,故每个存储单元能存储一串二进制代码,这个二进制代码长度称为存储字长,给每个存储单元一个编号,称为地址号存储器地址寄存器MAR(Memory Address Resgister):存放要访问的存储单元的地址,位数对应存储单元个数存储器数据寄存器MDR(Memory Data Resgister):存放从存储单元取出的 或者 存入某存储单元的代码

随着硬件技术发展,主存制成大规模集成电路芯片,MAR和MDR集成在CPU中

运算器:最少包含一个算术逻辑单元(ALU)和 3个寄存器:累加器ACC(Accumulator)、乘商寄存器MQ(Multiplier-Quotient Resgister)、操作数寄存器 X

2023-01-05_075228.png

控制器:工作过程为 取指阶段、分析阶段、执行阶段,由以下部分组成

程序计数器PC(Program Counter):存放将要执行的指令的地址,和MAR之间存在通路指令寄存器IR(Instruction Register):存放当前指令,来之MDR控制单元CU:分析指令操作,发送微操作命令序列

IO:包括IO设备和响应接口,IO设备通过IO接口和主机联系,接收CU控制命令,完成对应操作

计算机硬件技术指标机器字长:CPU一次能处理数据的位数存储容量运算速度:采用吉普森法,综合考虑每条指令操作时间及在全部操作的占比,现在普遍采用MIPS(百万条指令每秒)、CPI(执行一条指令所需时钟周期)、FLOPS(浮点数运算次数每秒)

全书章节关系,如下图:

2023-02-22_150051.png————————————————————三 系统总线————————————————————总线基本概念

计算机系统部件之间互连方式有两种:

分散连接:个部件之间采用单独的连线总线连接:将各部件连到一组公共的信息传输线

总线是各部件共享的传输介质,在某一时刻只允许最多一个部件发送信息,而多个部件可以同时从总线接收信息现代计算机采用各类总线结构,如下:

以CPU为中心的双总线结构:便于增删IO设备,但是IO设备和主存交换信息会占用CPU

2023-02-22_151928.png

单总线结构:IO设备和主存交换信息时,原则上不会占用CPU,但是只有一组总线,影响整机工作速度

2023-02-22_152144.png

以存储器为中心双总线结构:在单总结基础上,在CPU和主存之间开辟一条存储总线

2023-02-22_152414.png

总线分类

按照连接部件不同,可分为三类

片内总线:芯片内部的总线,如在CPU芯片内部,寄存器和寄存器、寄存器和ALU之间通过片内总线连接系统总线:系统总线是指CPU、主存、IO设备各部件之间的信息传输线,按照传输的信息不同有可以分为三类:数据总线:传输各部件之间的数据信息,是双向传输线地址总线:由CPU输出,单向传输控制总线:发出各种控制信号的传输线

通信总线:用与计算机系统与计算机系统、其他系统之间的通信,并行通信适宜与近距离通信,串行通信适宜与远距离通信总线结构

单总线结构

所有设备都挂在一组总线上,结构简单,易于扩充,但是所有传输都通过共享总线,极易形成计算机系统瓶颈,多被小型或微型计算机采用

多总线结构双总线结构:将速度较低的IO设备从单总线上分离出来,形成主存总线和IO总线分开的结构

2023-03-06_080831.png

三总线结构(1):将速率不同的IO设备进行分类,连接到不同通道上。DMA总线用于高速IO设备与主存直接交换信息。任一时刻只能使用一种总线

2023-03-06_081235.png

三总线结构(2):处理器与Cache之间有一条局部总线,将CPU与Cache或与更多设备连接

2023-03-06_081603.png

四总线结构:增加高速总线,在高速总线上接挂了一些高速IO设备

2023-03-06_081818.png

总线结构举例传统微型计算机总线结构:高速和低速IO都挂接在ISA或EISA总线上,并通过总线控制器与系统总线相连,势必出现总线数据传输瓶颈

2023-03-06_082813.png

VL-BUS局部总线结构:为了消除以上总线结构瓶颈问题,将高速、高性能外设尽量靠近CPU本身总线,并对CPU同步或准同步;局部总线VL-BUS相当于在CPU和高速IO之间架上了高速通道

2023-03-06_083214.png

PCI总线结构:VL-BUS是一种早期总线技术,并且由于以上的总线结构中CPU和VL-BUS过于紧密(VL-BUS是一种本地总线,直接连接到CPU的主板插槽上),由于VL-BUS有工作频率限制,很难支持功能更强的CPU,由此出现了PCI总线结构;CPU总线与PCI总线相互隔离,具有更高灵活性,可以支持更多高速设备,具有即插即用的特性

2023-03-06_084716.png

总线控制

总线判优控制

总线上连接的各类设备按照由于对总线的控制功能,分为主设备(有控制权)、从设备(只能响应主设备发来的总线命令),当多个设备同时使用总线时,就由总线控制器的判优逻辑按照一定优先等级确定哪个主设备能能使用总线总线潘友控制分为,集中式(将控制逻辑集中到某一处)、分布式(控制逻辑分散在与总线相连的各个部件上)常见的集中控制优先仲裁方式有以下三种:

链式查询:3根线用于总线控制(BS总线忙,BR总线请求,BG总线同意),如果BG到达的接口有总线请求,就不再往下传,而是建立BS信号,离总线控制部件最近的部件具有最高优先级。只需很少几根线就能实现总线判优控制,易于扩充设备,但对电路故障很敏感,优先级低的设备很难获得请求,2条线确定总线使用权

2023-03-06_180251.png

计数器定时查询:少了总线同意线BG,多了设备地址线。总线控制部件,在收到总线请求信号后(总线空闲),启动计数器(可以设定初始值,计数也可以从上次计数终点开始,是一种循环方法,此时各设备优先级相同),并通过设备地址线向各设备发送地址信号,当地址信号和请求占用总线涉笔地址值一致时,获得总线控制权,停止计数。优先级次序可以改变,对电路故障不如链式查询方式敏感,但是增加了控制线数,控制也较复杂,\lceil \log _{2}^{n} \rceil条线确定总线使用权

2023-03-06_181110.png

独立请求方式:每一台设备都有一对总线请求线BR和总线同意线BG,总线控制部件内有排队电路。响应速度快,优先次序控制灵活,但是控制线多,总线控制更复杂,2n条线确定使用权

2023-03-06_181456.png

总线通信控制

通常将完成一次总线操作的时间称为总线周期,可以分为以下四个阶段:

申请分配阶段:主设备发出请求,总线仲裁机构决定下一个传输周期的使用者寻址阶段:主模块通过总线发醋本次要访问的从模块的地址和有关命令,启动从模块传数阶段:进行数据交换结束阶段:主模块的有关信息从总线上撤除,让出总线使用权

总线通信控制通常用以下四种方式:

同步通信:由统一时标(通常由CPU的总线控制部件发出;也可以由各个部件各自的时序发生器发出,但必须由总线控制部件发出的时钟信号进行同步)控制数据传送。总线上两个部件完成一次完整可靠的信息传输时间称为总线传输周期,包含4个总线时钟周期(不等同时钟信号的一个完整振荡周期)

同步通信优点规定明确、统一,模块之间配合简单一致,缺点是所有模块采用同一限时,必须按照最慢速度部件设计公共时钟。适用于总线长度较短,个部件存取时间比较一致的场合。

2023-03-07_085143.png

异步通信:允许个模块速度不一致性,给设计者充分灵活性和选择余地。应答方式可以分为以下三种类型:不互锁:主模块发送请求信号后,一段时间后撤销信号,从模块发送回答信号后,一段时间后撤销信号。CPU向主存写信息采用此方式半互锁:主模块发送请求信号后,必须接受到从模块回答信号才能撤销请求信号,而从模块在发出回答信号后,一段时间后自动撤销信号。例如CPU访问共享存储器全互锁:在半互锁的基础上,从模块要的回答信号要等到主模块的请求信号撤销才能撤销

2023-03-07_085219.png

半同步通信:保留了同步通信基本特点,所有的地址、命令、数据信号的发出时间严格参照系统失踪的某个前沿,接收方采用系统时钟的后沿时间进行辨识;同时增设“等待线”\overline{WAIT},让不同速度模块和谐工作

若从模块无法在T3提供数据,就给出等待信号,主模块在T3到来之时检测等待信号,若\overline{WAIT}为低电平就不立即在从数据线取数,在下一个时钟周期采取一样的行动

分离式通信:克服模块内部准备数据过程并无实际数据传输的消极等待。将一个传输周期分为两个子周期:第一个子周期,主模块在获得总线使用权后,将命令、地址和其他有关信息(主模块编号)发送到系统总线上,随后放弃总线使用权,第二个子周期,从模块在收到主模块信息,且准备好数据后,申请得到总线使用权,将主模块编号、从模块地址、数据发送出去,随后放弃总线使用权————————————————————四 存储器————————————————————概述

存储器分类

按照存储介质分类:

半导体存储器:优点是体积小、功耗小、存取时间短,缺点是电源消失是,存储信息会丢失磁表面存储器:具有非易丢失的特点光盘存储器:记录密度高,耐用性好,可靠性高,可互换性强

按照存取方式分类:

随机存储器RAM(Random Access Memory):可读/写存储器,存取时间与存储单元的物理位置无关只读存储器ROM(Read Only Memory):只能将内部信息读出,不能苏一重新写入新的信息去改变原始信息。派生出可编程只读存储器PROM、可擦除可编程只读存储器EPROM、电擦除可编程只读存储器EEPROM,闪存存储器Flash Memory(现代计算机的固态硬盘SSD)闪存存储器和EEPROM(Electrically Erasable Programmable Read-Only Memory)的最大区别在于它们的工作方式和应用场景。EEPROM一次只能编程或擦除一个字节或一个字,它通常用于存储小容量的数据,如设备设置、系统参数和加密密钥等。EEPROM的使用寿命较长,读取速度较慢,相对较为耗电。闪存存储器一次可以编程或擦除一个块,块的大小通常为128KB至4MB不等。闪存存储器通常用于存储大容量的数据,如操作系统、应用程序和多媒体文件等。闪存存储器的使用寿命相对较短,读取速度较快,功耗相对较低。

串行访问存储器:由于信息所在位置不同,读写时间不同存储器层次结构

存储器由三个主要性能指标:速度、容量、位价

2023-03-07_093752.png

CPU和缓存、主存都能直接交换信息。缓存-主存层次解决CPU和主存速度不匹配的问题;主存-辅存层次解决存储系统容量问题

2023-03-07_094008.png

在主存-辅存这一层次的不断发展中,逐渐形成虚拟存储系统,程序员编程的地址范围虚拟存储器的地址空间相对应,物理地址是程序在执行过程中真正访问的地址,对于具有虚拟存储器的计算机而言,编程时可用的地址空间远大于主存地址

主存储器

概述

根据MAR的地址访问某个存储单元时,需要经过地址译码、驱动等电路,才能找到要访问的单元;读出时,需要进过读出放大器、才能将选中单元的存储字,送到MDR

2023-03-07_095035.png

驱动器、译码器和读写电路集中在存储芯片中,而MAR和MDR在CPU芯片中,两芯片通过总线连接,如下图:

2023-03-07_095233.png

主存中存储单元地址的分配:存储字长都取8的整数倍,计算机系统既可以按照字寻址,也可以按照字节来寻址;大端方式计算机采用字节高位字节的地址来表示字地址,小端方式则采用低位

2023-03-07_185506.png

主存技术指标:存储容量和存储速度半导体存储芯片简介基本结构:芯片内集成具有记忆功能的存储矩阵、译码驱动电路和读/写电路;译码驱动电路能把地址信号翻译成对应存储单元的选择信号,该信号在读写电路的配合在完成对选中单元的读写操作,读写电路包括读出放大器和写入电路

2023-03-07_183300.png

地址线时单向输入的,数据线是双向的,控制线主要有读写控制线和片选线(半导体存储器由许多芯片组成,需要用片选线选择存储芯片)

片选线为\overline{CE}或\overline{CS},读写控制线可以用一条\overline{WE}(低电平读,高电平写)也可以用两条\overline{OE}(读)\overline{WE}(写)

半导体存储器中,一个字通常是以位组(bit group)的形式存储在多个芯片中。每个芯片负责存储位组中的一个或几个二进制位(bit),而多个芯片则协同工作,将这些位组合成一个完整的字。例如,在一个32位字的存储器中,可以使用4个8位芯片来存储每个字节。当计算机需要读取或写入一个字时,它会将存储地址解码为芯片地址和位组地址,然后使用读写控制信号将数据发送到正确的芯片和位组。最终,存储器会将多个位组合并成一个完整的字,然后将其返回给CPU或者写入存储器。

2023-03-07_190951.png

译码驱动方式:线选法:

2023-03-07_192737.png

重合法:所需的线更少

2023-03-07_192833.png

随机存取存储器RAM

静态RAM(Static RAM,SRAM)SRAM基本单元电路:SRAM用寄存器存储信息,每一个基本单元电路有6个MOS管组成,如下图:

2023-03-07_202127.png

SRAM的读写操作:

2023-03-07_202630.png2023-03-07_202726.png

SRAM举例分析:以Intel2114为例,下图为外部特性

2023-03-07_203038.png

从上图可以看出,该芯片为1K 4位芯片,而每个基本单元只能存储一位信息,为了一次存取4位信息,将存储矩阵的列分为4组,列选择线可以同时控制4组中的一列,如下图:

2023-03-07_203206.png

动态RAM(Dynamic RAM,DRAM)DRAM基本单元电路:DRAM基本单元有三管式和单管式两种,都是靠电容存储电荷来存储信息,电容上有足够电荷表示1,无电荷表示0三管式单元电路结构如下,读出的数据和原来存储的数据相反,但是在写入时写入信息与存放信息相同

2023-03-07_204018.png

单管式单元电路结构如下:

2023-03-07_204702.png

DRAM芯片举例分析:三管DRAM芯片Intel 1103

2023-03-07_205155.png

单管DRAM 4116(16K 1位),按理应该有14根地址线,但是为了减少芯片封装引脚数,只使用7根地址线,分两次将地址信息传送(先传送行地址到行地址缓存器,再送列地址到列地址缓存器)下图的芯片示意图中,有读放大器(跷跷板电路,两边电平相反),所以0到63行要写入的数据和实际存储信息相反,读取时读取出来信息和存储的信息相反(两次取反,导致原来存入什么后面就可以读出什么)

2023-03-07_205529.png

DRAM刷新:电容的电荷一般只能维持1~2ms,信息会自动消失,必须在2ms内对所有存储单元恢复一次原状态,也就是刷新;刷新只与行地址有关,即一行一行地刷新,DRAM的刷新有以下几种方式:

集中刷新:以存取周期为0.5\mu s的128\times 128为例

2023-03-13_084235.png

其中集中刷新时存储器不能进行读写操作,故称为“死区”

分散刷新:即每进行一次读写操作就刷新一行存储单元,没有死区,但是存储周期翻倍

2023-03-13_084525.png

异步刷新:将集中刷新和分散刷新结合,只要求一个刷新时间间隔内(2ms)对所有存储单元刷新一遍

2023-03-13_084936.png

如果将刷新安排在指令编译阶段(此时存储器无读写),不会出现“死区”SRAM与DRAM对比

2023-03-13_085213.png

只读存储器ROM

按照ROM的原始定义,ROM只能读不能写,但是随着用户的需求,出现了PROM、EPROM、EEPROM等可写的ROM掩膜ROM出厂时就设置好了存储器内存储的数据,行列相交处有MOS管存储“1”,没有MOS管存储“0”,用户无法改变原始状态

2023-03-14_085205.png

PROMPROM可以实现一次性编程,其基本单元中有一段熔丝,熔丝未断存储“1”,已断开存储“0”,由于断开的熔丝没办法再恢复,所以PROM只能一次编程

2023-03-14_085707.png

EPROMEPROM可擦除可编程,基本结构如下,当需要改变状态时,需要用紫外写照射,将信息全部擦写

2023-03-14_085921.png

Flash MemoryFlash Memory时在EPROM和EEPROM的工艺基础上产生的一种新型的、具有性能价格比更好、更可靠的可擦写非易失性存储器,具有整片擦写的特点,擦除重写速度快

存储器与CPU的连接

存储器容量扩展对于位扩展,以两片1K 4位芯片组成 1K 8位为例,其中两个芯片的数据线分别接到数据总线的四条上面(不必按顺序,保证不重合即可),地址总线同时接到两片芯片的地址线上(不必按顺序接),片选线和读写控制线同时连接到两片芯片

2023-03-14_090846.png

对于字扩展,以两片1K8位组成 2K8位芯片为例,需要保证芯片不被同时选中,可以利用多出的一条地址线作为片选线

2023-03-14_091320.png

存储器和CPU的连接

地址线的连接:CPU的地址线往往比存储芯片的地址线多,所以通常将CPU的地址线低位和存储器地址线相连,高位在存储器扩充时用,或者作片选信号数据线的连接:必须使得芯片位数等于数据线的数量读/写命令线的连接片选线的连接合理选择存储芯片:通常选用ROM存放系统程序,RAM为用户编程设置

对于存储器和CPU连接的设计问题,解决步骤为:(1)进行地址分配,划定芯片的地址范围 (2)选择合适芯片 (3)分配CPU地址线 (4)设计片选信号CPU片选信号很灵活,可以利用多余的地址线结合译码器构成片选信号,同时注意不要忽略\overline{MREQ}(访存控制信号,该信号低电平有效时,才会访问存储器),具体例子可参考书本

存储器的校验

任何一种编码是否具有检测能力和纠错能力都与编码的最小距离有关,编码最小距离为某种编码的任意两组合法码字的最小差异位数,根据纠错理论有L-1=D+C\ \ \ ,D>=C其中L为最小距离,D为检测位数,C为纠正位数汉明码的工作原理已经在计算机网络的数据链路层的纠错编码提及,这里仅作补充,汉明码可以按照奇校验或者偶校验配置,偶检验就是让检测位和其被检测的位具有偶数个“1”,奇校验同理

提高访存速度

由于CPU的工作速度的增长比存储器快很多,致使主存的存取速度称为计算机系统瓶颈,除了寻找高速元件和采用层次结构以外,调整主存的结构页可以提高访存速度单体多字系统在一个存取周期内,在同一个地址取出相邻几个存储单元的数据放入数据寄存器(也就是存储字长比CPU字长 长);采用这种方法的前提是指令和数据是连续存放的,如果遇到转移指令或者操作数不能连续存放,该方法效果就不明显

2023-03-18_155535.png

多体并行系统采用多体模块组成的存储器,每个模块有独立的MAR、MDR、地址译码、驱动电路和读写电路,可以并行工作也可以交叉工作;多体并行分为以下两种类型高位交叉:地址的高位是存储体的序号,低位代表存储体体内的地址;指令和数据一般是顺序存储,对于这种情况,高位交叉方式会对其中一个存储体频繁访问,不利于并行工作,故这种方法多用于存储器容量的扩充

2023-03-18_160229.png

低位交叉:地址低位表示存储体体号,高位表示体内地址;将连续的指令、数据分到不同的存储体,便于存储体的并行工作;并行工作时,对于当个存储体而言,存取周期没有缩短,但是由于CPU可以交叉访问各体,将多个存储体的读写过程重叠,在一个存取周期内,完成多组数据传输,时序图如下:

2023-03-18_160736.png

假设每个存储体的存储字长和数据总线宽度一致,低位交叉模块数为n,存取周期为T,总线传输周期为\tau,则采用流水线方式时满足T=n\tau;故需要保证某体启动后,至少经过n\tau再启动

采用高性能芯片也是提高主存速度的措施,以下对几种高速芯片简单介绍:

SDRAM(同步DRAM):需要同步系统的时钟信号,以处理器-存储器总线的最高速度运行,不许需要插入等待状态,当存储器准备数据时,CPU给出的地址和控制信号被SDRAM锁存,知道指定时钟周期再响应,这段时间内CPU可执行其他任务,无需等待RDRAM:解决存储器带宽问题带Cache的RDRAM:在RDRAM芯片内集成一个SRAM,用于存储上次访问的单元的同一列的所有数据,可以猝发式读取高速缓冲存储器

Cache概述

利用程序访问的局部性原理(时间局部性和空间局部性),主存可以将近期用到的数据以及与用到的数据相邻的数据送到缓存上面,处理器可以直接从缓存读取信息Cache的工作原理把主存和Cache都分为若干块,并且使他们的块大小(即每个块含有多少个字)相等,当CPU要访问主存的某个字时,先查询Cache,若Cache有对应数据,就直接取,如果没有,就访问内存把对应的字所属的块存入Cache

2023-03-18_185955.png

效率评估假设在一个程序执行期间,访问Cache的次数为N_C,访问主存的次数为N_m,则命中率h=\frac{N_c}{N_c+N_m},设访问一次Cache时间为t_c,访问一次主存时间为t_m,则访问效率\frac{t_c}{ht_c+\left( 1-h \right) t_m}Cache基本结构

2023-03-18_190641.png

Cache主要由以下模块构成:

Cache存储体地址映射变换机构:将主存地址的块号进行查询,并判断是否命中替换机构:当Cache已满时,且需要写入新的块时,判断被替换的块

Cache的写操作写入的操作比较复杂,需要保证对Cache写入的信息和主存中的信息同步,有以下两种策略:

写直达法(Wirte-through):进行写操作时数据既写入Cache,有写入主存;很好保证了一致性问题,但是增加访问一次,例如进行求和操作时,和数改变一次数据,就要访问一次内存写回法(Wirte-back):写操作时,只把数据写入Cache,当Cache数据被替换时才写入内存;对于多处理器系统,每个处理器都有独立Cache,该方法存在Cache一致性的问题

Cache的改进

多级缓存:随着集成电路逻辑密度的提高,把缓存和CPU集成在同一个芯片上面,称为片内缓存,可以提高外部总线利用效率;在片内缓存和主存之间也有片外缓存,也就是二级缓存统一缓存和分立缓存:现代采用流水线控制的计算机,为了实现同时执行多条指令,通常把Cache分为指令Cache和数据CacheCache—主存地址映射

直接映射采用的是固定的映射关系,核心思想为:假设Cache中块的数量为C(2^c),将主存分为每个含有C个字块的组,设iCache的块号,j为主存块号,则i=i\ mod\ C;本质上将主存上多个块映射到Cache某个固定的块

2023-03-18_193013.png

全相联映射灵活性极大的映射,核心思想是:主存中的一个块可以存储到Cache任意一个块上面;需要的标志位变多,而且需要把主存的标志和Cache中所有标志比较一遍

2023-03-18_193513.png

组相联映射结合了全相联和直接映射的特点,把Cache和主存都分为Q组,主存某一组中的块,只能映射到Cache对应的组里面的块;组相联映射,当只有一组时就是全相联映射,当C组时就是直接映射

2023-03-18_194032.png

替换策略

组相联和全相联中,在需要写入输入且Cache已满时,需要考虑替换哪一个块,理想的算法是替换未来很少用到或者很久才用到的块,但很难实现,主要使用的算法有以下:

先进先出FIFO算法:不要记录个字块的使用情况,容易实现开销小,但是不能提高命中率,例如在循环程序中,最早调入的块以后还要用到近期最少使用LRU(Least Recently Used)算法:比较复杂,一般采用简化方法,只记录每个块最近一次使用的时间,平均命中率比FIFO高随机法:比较简单,不能提高命中率辅助存储器

辅存的特点时不直接与CPU交换信息,辅存不是重点,不做记录详情参考课件

————————————————————五 I/O系统————————————————————概述

IO系统发展

早期阶段

2023-03-21_093005.png

早期IO的特点:每个IO设备必须配有独立逻辑电路与CPU相连(线路散乱庞杂)输入输出过程穿插在CPU执行程序过程之中(CPU空等)每个IO设备的逻辑控制电路与CPU的控制器紧密构成不可分割的整体(增减或跟换IO设备困难)

接口模块和DMA阶段IO设备通过接口模块和主机连接,接口中设备数据通路和控制通路,数据经过接口既起着缓冲作用,有可以完成串-并转换,主机和IO交换信息时CPU要执行中断程序

2023-03-21_093503.png

直接存储器存取DMA(Direct Memory Access)技术,IO设备与主存之间有一条直接的数据通路

具有通道结构阶段

大中型计算机采用DMA方式出现的问题:每台IO设备配置专用DMA接口,增加硬件成本CPU对大量DMA接口进行管理,影响效率

通道时用来管理IO设备以及实现主存和IO设备之间交换信息的部件(具有特殊功能处理器,不完全独立,依据CPU的IO执行进行启动、停止或改变工作状态),有专门通道指令,独立执行通道指令编写的IO程序;工作时,CPU不直接参与管理,提高CPU利用率

2023-03-21_094047.png

具有IO处理机阶段IO处理机独立与主机工作,可以完成IO控制、码制转换、格式处理、数据检错纠错,和CPU工作并行性更高

IO系统组成

IO系统由IO软件和IO硬件组成IO软件

IO指令:格式如下,操作码用于与其他指令区分,命令码指明要执行的具体操作,设备码是多个IO设备的选择码

2023-03-21_094701.png

通道指令:是对于具有通道的IO系统专门设置的指令;一般用于指明参与传送的数据组在主存的首地址、字节数、末地址、IO设备码、操作命令码

IO硬件主要有IO接口、设备控制器和通道

IO设备与主机联系方式

IO设备编址方式

统一编址:将IO地址看成存储器地址一部分,分出部分存储器地址给IO编号不统一编址:IO地址和存储器地址分开,对IO设备的访问必须有专门的IO指令

联络方式

立即响应方式:对于工作速度缓慢的IO设备,与CPU联系时,通常已处于某种等待状态,知道IO指令一到就立即响应异步工作采用应答信号联络:IO设备和主机速度不匹配时,各自完成自身工作,出现联络信号材准备交换信息

2023-03-21_100518.png

当使用的是串行传送时,双方需要设定一组特殊标记

2023-03-21_100623.png

同步工作采用同步时标联络:要求IO设备和CPU的工作速度完全同步

IO设备和主机的连接方式

辐射式:即每个IO设备单独配有一组控制线路和信号线,不利于增删设备总线式IO设备与主机信息传送控制方式

程序查询方式由CPU不断通过程序查询IO设备是否做好准备,从而控制IO设备与主机交换信息;只要启动IO设备,CPU便处理踏步状态,IO准备就绪之后也只能一个字一个字的从IO设备取出,由CPU存入主存

2023-03-21_102501.png

程序中断方式中断方式是在查询方式的基础上做了改进:CPU发出读指令之后,就执行其他操作,直到IO设备准备就绪向CPU发出中断请求,CPU中断当前程序,执行IO操作,省去了踏步的无效状态在程序中断和操作过程中,需要保存、恢复原程序状态,需要占用CPU内部寄存器,同样是对CPU资源的消耗,该方式最终还是需要通过CPU才能实现IO设备和主存的信息交流

2023-03-21_102955.png

DMA方式主存和IO设备之间存在数据通路,当DMA和CPU同时访问主存时,CPU将总线占用权让给DMA(窃取或者挪用),窃取的时间为一个存储周期,而且在该周期内,CPU能继续执行内部操作

2023-03-21_103737.png

I/O设备

概述

2023-03-21_190441.png

IO设备大致可以分为三类:

人机交互设备:键盘、鼠标等计算机信息存储设备:辅存机-机通信设备:调制解调器、网卡等输入设备

键盘判断哪个按键被按下,将按键信息转为ASCII码工作原理:计数器输出信号控制两个译码器,译码之后就是按键的行列选择信号,通过这种方式循环扫描每个按键,当扫描到的按键被按下,发出脉冲信号,计数器停止计数,计数器的值对应着一按键

2023-03-21_191300.png

鼠标根据定位的原理,分为机械式和光电式,机械式包含金属球和电位器,光电式包含光电转换器

触摸屏主要分为电阻式、电容式、表面超声波式、扫描红外线式和压感式各种方式各有各的特点,需要根据需要选择

输出设备

显示器

字符显示:图形显示:主观图像图像显示:客观图像(照片)

打印机

击打式:点阵式,逐字或逐行打印,目前主要用于购物发票等小票的打印非击打式:激光逐页打印、或喷墨式打印机逐字打印IO接口

概述

接口是两个系统或两个部件之间的交接部分,IO接口是主机和IO设备之间设置的一个硬件电路以及相应的软件控制

为什么要设置IO接口?实现IO设备的选择通过接口缓冲数据,达到速度匹配实现数据串并转换实现电平转换通过接口发送控制命令监视IO设备工作状态,保存状态信息,供CPU查询

接口(Interface)不同于端口(port),端口是指接口电路中一些寄存器,用来存放数据信息、控制信息和状态信息,若干的端口加上相应的控制逻辑才能组成接口

接口功能与组成

总线连接方式的IO接口电路

2023-03-21_195725.png

数据线:根数一般等于存储字长的位数或字符的位数,通常是双向的(如果是单向的,则需要两组)设备选择线:设备选择线可以有一组或两组(多的一组用于IO设备向主机回送设备码)命令线状态线:将IO设备的状态报告给主机得信号线,时一组单向总线

接口的功能和组成

选址功能:通过设备选择线的设备进行确定传送命令:接口中设有存放命令的命令寄存器以及命令译码器,命令线和所有接口电路的命令寄存器连接,只有被选中设备的SEL信号有效,命令寄存器才会接受命令线上的命令码

2023-03-21_200433.png

传送数据:接口中具有数据通路;通常具有数据缓冲寄存器DBR(Data Buffer Register),与IO总线的数据线相连反映设备的工作状态:接口设有反映设备状态的触发器完成触发器D:D为1表示设备完成工作工作触发器B:B为1表示设备正在工作中断请求触发器INTR:为1时,表示IO设备向CPU发出中断请求屏蔽触发器MASK:和INTR配合使用,完成设备屏蔽功能

2023-03-21_201904.png

接口类型

按数据传送方式分类:

串行接口并行接口

按功能选择灵活性分类:

可编程接口:接口功能以及操作方式可以用程序来改变或选择不可编程接口:硬连线逻辑实现功能

按通用性分类:

通用接口:可供多种IO设备使用专用接口:

按数据传送控制方式分类:

程序型接口:用于连接速度较慢的IO设备,如终端、键盘,现代计算机一般采用程序中断方式与IO设备信息交换DMA型接口:用于连接高速IO设备程序查询方式

程序查询流程

当有多个IO设备需要查询时,CPU需要按照IO设备优先级进行逐级查询

2023-03-21_204021.png

完成查询通常需要执行以下指令

测试指令:查询IO设备是否准备就绪传送指令:IO设备准备就绪,开始传送转移指令:IO设备未准备就绪,执行转移指令,转移回到测试指令

单个IO设备程序查询的具体流程如下:

2023-03-21_204337.png

程序查询方式需要占用CPU资源,执行程序程序之前需要保存寄存器原有内容计数器用于设置要传输的数据的数量(计数器可以设置为原码,依次减一;也可以设为补码,依次加一)程序查询方式接口电路

以IO输入为例,电路基本组成如下:

2023-03-21_204701.png

程序中断方式

中断的概念

计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的执行,处理异常情况或特殊请求,处理结束后返回现行程序简短处,继续执行中断是现代计算机能有效合理发挥效能和提高效率的一个重要功能

I/O中断产生

以下以打印机为例,显示IO程序中断的过程

2023-03-21_213105.png

计算机系统引入中断并不仅仅是为了适应I/O工作速度慢的问题,中断还用于处理突发事件的产生(产生异常)、实现实时控制(控制权从用户程序返回操作系统?)

程序中断接口电路

为了处理I/O中断,在I/O接口电路必须配置相关硬件线路:中断请求触发器和中断屏蔽触发器当中断请求触发器INTR为1时(接口的完成触发器D状态为1),表示该设备发出中断请求当有多个中断源时,CPU对各种中断源进行排队,优先处理优先级最高的请求,不允许其他中断源中断正在执行的中断服务程序,需要设置屏蔽触发器MASK,MASK为1时,INTR被屏蔽

2023-03-21_213856.png

排队器给不同IO请求不同优先级,对于速度越高的IO设备优先级越高(若CPU不及时响应高速IO的请求,其信息可能会丢失)设备优先级的处理,可以采用软件方法或硬件方法,硬件方法的实现方法:可以在CPU内部对中断源设置一个统一的排队器,也可以在接口电路内分别设置各个设备的排队器,如下为链式排队器:

2023-03-24_090636.png

中断向量地址形成部件不同的设备有不同的中断服务程序,每个服务程序有一个入口,入口地址的寻找这里介绍硬件向量法由设备编码器生成向量地址,找到中断向量(其中保存程序入口地址),从而找到中断服务程序

2023-03-24_091501.png

中断向量地址形成部件相当于一个设备编码器,一个例子如下

2023-03-24_091757.png

电路结构简化图如下

2023-03-24_092059.png

中断处理过程

CPU响应中断的条件和时间CPU能够响应中断的条件是,其中的 允许中断触发器EINT 的值为1,该触发器可用开中断指令置位(开中断),用关中断指令或硬件自动复位(关中断)

中断服务的流程

保护现场:保存程序断点,保存通用寄存器和状态寄存器的内容中断服务(设备服务)恢复现场:在退出中断服务之前,需要将原程序中断的现场恢复中断返回:通常是中断返回指令单重中断和多重中断单重中断:CPU在执行中断服务程序时,不能执行其他优先级更高的中断服务的请求多重中断:CPU在执行中断服务程序时,可以执行其他优先级更高的中断服务的请求,与单重中断的区别在于开中断的时间不同

2023-03-24_093201.png

从宏观上看,程序中断方式克服了程序查询方式的CPU原地踏步的现象,实现了CPU与I/O的并行工作从微观操作分析,CPU在处理中断服务程序时需要停止原程序的执行,尤其是高速I/O或辅存设备频繁、成批的与主存交换信息时,不断打断CPU主程序的执行

2023-03-24_093624.png

DMA方式

DMA方式特点

DMA方式与程序中断的数据通路程序询问和程序中断方式都需要使用CPU中的寄存器进行进行数据传送,DMA方式在DMA接口和主存之间有数据通路,不需要通过CPU,工作速度高,适用于高速I/O或辅存与主存之间的信息交换

2023-03-24_105925.png

DMA与主存交换数据的方式

停止CPU访问主存:进行DMA传送时,CPU放弃总线控制权;优点是控制简单,适用于数据传输率很高的I/O设备实现成组数据传送,缺点是,DMA接口访问主存时,CPU基本处于不工作、保持状态(两次DMA传送之间,数据准备间隔大于存取周期)

2023-03-24_111045.png

周期挪用(周期窃取):当I/O设备发出DMA请求时,I/O设备挪用总线占有权一个或几个周期,当I/O设备发出DMA请求时,有以下情况:CPU不需要访问主存CPU正在访问主存:等待存取周期结束同时发出访存请求:访存权限交给优先级高的DMA

既实现了IO传输,有很好发挥了主存和CPU效率,该方法被广泛采用

2023-03-24_111126.png

CPU与DMA交替访问:适用于CPU工作周期比主存存取周期长的情况,其总线控制权转移几乎不需要什么时间,具有很高DMA传输效率

2023-03-24_111153.png

DMA接口功能和组成

DMA接口的功能

向CPU申请DMA传送处理总线控制权转交管理系统总线,控制数据传送确定数据起始地址和数据长度,传送过程并修正给出DMA完成信号

DMA接口的基本组成

2023-03-24_111611.png

主存地址寄存器AR字计数器WC:记录要传输的数据的总字数,通常以交换字数的补码值预置数据缓冲寄存器DRDMA控制逻辑中断机构:WC溢出时,传输结束,请求CPU进行后处理设备地址寄存器DARDMA工作过程

DMA数据传送过程:分为三个阶段

预处理:DMA接口开始工作之前,CPU预置以下信息指明数据传输方向传入设备地址,启动设备写入AR和WC

以上工作为CPU完成,之后CPU继续执行其他工作

数据传送:以输出为例,过程如下

2023-03-24_112400.png

后处理:得到DMA中断请求后,CPU停止原程序执行,做后处理工作:数据检验、决定是否继续使用DMA传送、若DMA出错则进行处理

DMA接口与系统的连接方式

具有公共请求线的DMA请求方式:多个DMA接口通过一条公用的DMA请求线向CPU申请总线控制权,CPU采用链式查询方式选中DMA接口获得总线控制权

2023-03-24_132714.png

独立的DMA请求方式:每个DMA接口都有一对独立的DMA请求线和DMA应答线

2023-03-24_132742.png

以上两种方式的优缺点和总线判优控制的两种方式类似

DMA与程序中断方式相比,具有以下特点:

程序中断方式靠软件传送,DMA方式靠硬件程序中断方式在一条指令执行结束时响应,DMA方式可在周期内任意存取周期结束时响应程序中断方式有处理异常时间的能力,DMA方式没有,主要用于大批数据的传送DMA方式无需保护现场DMA方式优先级高DMA接口类型

选择型DMA接口在物理上连接多个设备,在逻辑上只允许连接一个设备;在某一段时间内,DMA接口只能为一个设备服务(共用一组寄存器),适用于数据传输率很高的设备

数据传输率是指单位时间内传输的数据量,通常用比特每秒(bit/s)或字节每秒(B/s)来表示

多路型DMA接口在物理上连接多个设备,在逻辑上允许连接多个设备;每个设备设置流一套寄存器,分别存放各自传送参数,适用于同时为多个数据传输率不十分高的设备服务

2023-03-24_134253.png

————————————————————六 计算机运算方法————————————————————无符号与有符号数

无符号数

每一位都可以用来存放数值,浮点数没有无符号数的分类

有符号数

机器数与真值对于有符号数来说,机器无法识别正负符号,需要把正负符号进行机器表示,把符号“数字化”的真值成为机器数

原码表示法最高位是符号位,0表示正号,1表示符号原码表示简单,易于和真值进行转换,但是在进行加减运算时较为麻烦(例如,在操作数符号不同的加法运算时,要先判断两个数绝对值大小,然后用大的绝对值减去小的绝对值)

补码表示法原理类似时钟,指针要转到一个数上面,可以顺时针也可以逆时针拨,补码定义如下:\left[ x \right] _补=\left\{ \begin{array}{l} 0\ x\,\,\text{,}0\le x\left[ x \right] _补=\left\{ \begin{array}{l} x\,\,\text{,}0\le x2023-03-28_110440.png

数的定点表示和浮点表示

定点表示

小数点位置按照约定的位置给出,有以下两种格式

2023-03-28_203958.png

浮点表示

通常浮点数被表示成N=S\times r^j其中为S尾数(可正可负),为j阶数(可正可负),r为基数,在计算机中基数可去2,4,8或16

浮点数的表现形式

2023-03-28_204339.png

阶符和阶码的位数m反映浮点数的表示范围以及小数点的实际位置,尾数的位数n表示浮点数的精度

浮点数的表示范围以非格式化数为例,当阶数的数值为取m位,尾数的数值位取n位,其表示范围如下:

2023-03-28_204805.png

当浮点数阶码大于最大阶码时上溢,机器停止运算,进行中断溢出处理,当阶码小于最小阶码时下溢,通常将尾数各位置零,按机器零处理,不会停止运行

浮点数格式化

2023-03-28_205206.png

r越大,浮点数可表示的范围越大,能表示的数的个数越多;但是浮点数的精度越低

机器零当尾数为0时,不论阶数为何值,通通按照机器零处理;当阶码小于或等于所能表示的最小数时,不论尾数为何值,也按照机器零处理

IEEE 754标准

现代计算机中,浮点数一般采用IEEE指定的国际标准,格式如下

2023-03-28_210007.png

定点运算

移位运算

当计算机没有乘除法运算电路时,可以采用移位和加法相结合实现乘除运算

算术移位规则对于算术移位,符号位不参与移位,且是正数是原码、反码、补码数值位与真值相同,左右移动都填“0”;对于负数补码,由于补码转原码“取反加一”的性质,左移添“0”,右移添“1”

2023-03-28_214413.png

当有有效数字丢失时

对于正数:高位丢1,出错,低位丢1,影响精度对于负数:补码需要特别注意,高位丢0出错,低位丢1,影响精度

实现算术移位的硬件

2023-03-28_215148.png

负数且进行右移时,可以利用符号为进行添1操作

算术移位与逻辑移位算术移位是有符号数的移位, 逻辑移位是无符号数的移位;两者移位的规则是不一样的,对于逻辑移位,左右移位都是补0,而对于算术移位,补0还是补1,取决于操作数的类型(是原码还是补码),以及是左移还是右移为了避免算术左移是高位数丢失,可以使用带进位的移位,将最高位数字移动到进位中

2023-03-30_142147.png

加法运算

由于减法运算可以看作是一个被减数加上减数的负值,现代计算机都采用补码加法作减法运算补码加法基本公式整数:\left[ A+B \right] _补\left( mod\ 2^{n+1} \right) =\left[ A \right] _补+\left[ B \right] _补小数:\left[ A+B \right] _补\left( mod\,\,2 \right) =\left[ A \right] _补+\left[ B \right] _补原理的证明:以整数为例,由于高位会被丢弃,即mod\ 2^{n+1},每个操作数都可以看作是x+2^{n+1},此时用各自补码相加,然后丢弃进位即可

溢出的判断只用一位符号位判断——如果两个操作数符号不同,则必然不会溢出,如果符号位相同,结果的符号为和操作数符号位不同的话,就必然溢出;因此通常采用符号位产生的进位和最高有效位产生的进位进行异或运算,结果为1则溢出

用两个符号为进行判断——适用于符号位有两位的变形补码,其定义如下:\left[ X \right] _补=\left\{ \begin{array}{l} x\,\,\,\,\,\,,1>x\ge 0\\ 4+x\,\,\,\,,0>x\ge -1\\\end{array} \right.变形补码溢出判断原则是——2个符号位不同时就溢出;无论是否溢出,最高移位符号为才是代表真正符号位当采用双符号位方案时,由于一个正确的数,其两个符号位总是相同的,所以寄存器和主存中的操作数只需保存移位符号数即可,在相加时,将保存的一位符号位同时送到加法器的两位符号位输入端

补码加减法硬件配置

2023-03-30_154242.png

乘法运算

笔算乘法以下是笔算乘法的一个例子

2023-03-31_092610.png

笔算乘法可以归纳出以下结论:

当乘数为n位时,需要进行n次加法运算和n次移位每次做加法时,被乘数与部分积的高位相加,低位被移动到乘数空出来的高位位置

原码一位乘法原码和真值很相近,乘积的符号可以通过符号位异或运算获得,数值位进行相乘的过程和改进后的笔算乘法过程一样,故原码一位乘法规则如下:

乘积符号位由两数的符号位异或运算结果决定乘积数值部分有两数绝对值部分(即不要符号位)相乘得到,通式如下:

2023-03-31_093114.png

对于整数原码乘法,对于部分积还要左移n位得到正确结果

capture-2023-03-31-14-56-38.jpg

原码一位乘法需要注意:

部分积取n+1位,存放乘法过程中绝对值超过n位的值乘积的数值部分是两数绝对值相乘的结果,故移位运算为逻辑右移

原码一位乘法硬件配置:

2023-03-31_093646.png

A、X、Q均为n+1位的寄存器,X存放被乘数原码,Q存放乘数原码,A存放部分积S存放乘积符号,Gm为乘法标记计数器C存放乘数位数(如果乘数原码除了符号位之外有n位,就设为n)

控制流程如下:

2023-03-31_094127.png

原码两位乘法为了提高运算速度,采用原码两位乘法,原码两位乘法用两位乘数位来决定新的部分积,如下:

2023-03-31_094420.png

2倍的被乘数,相当于被乘数左移1位,3倍被乘数相当于4倍被乘数(左移两位)减去一个被乘数;可以将被乘数左移两位的操作较为下一个乘数的两位去完成,当前只需要进去一个被乘数即可,此时需要一个存储器C_j进行标记由于需要进行-x^*的操作,一般用+[x^*]_{补}完成,所以两个操作数是绝对值的补码,移位运算是算术移位在乘法过程中,需要2倍的被乘数,为了避免高位丢失,部分积需要3个符号位(也就是需要额外2位放置溢出),其中最高位才是真正的符号位为了统一操作,需要在乘数高位增添“0”,乘数位数为奇数时增添一个0,为偶数时增添两个0

乘数数位n为偶数时,需要做n/2次移位,n/2+1次加法(将C设置为n/2,当C为0时只做加法不移位)乘数数位n为奇数时,需要做n/2+1次移位,n/2+1次加法(将C设置为n/2,每一步都要加法和移位)

补码乘法进行补码乘法时,需要对乘数y的符号进行讨论:1)被乘数x符号任意,乘数y符号为正以整数为例\left[ x \right] _补=2^{n+1}+x\left[ y \right] _补=y\left[ x \right] _补*\left[ y \right] _补=\left[ x \right] _补*y=\left( 2^{n+1}+x \right) *y=2^{n+1}*y+x*y=\left( 2^{n+1}+x*y \right) \ mod\ 2^{n+1}=\left[ x*y \right] _补即乘数为正数时,无论被乘数符号如何都可以使用原码乘法运算规则

2)被乘数x符号任意,乘数y符号为负以整数为例\left[ x \right] _补=x_0x_1...x_n\left[ y \right] _补=1y_1...y_n=y+2^{n+1}y=\left[ y \right] _补-2^{n+1}=1y_1...y_n-2^{n+1}=0y_1...y_n-2^nx*y=x*\left( 0y_1...y_n \right) -x*2^n\left[ x*y \right] _补=\left[ x*\left( 0y_1...y_n \right) \right] _补+\left[ -x*2^n \right] _补可以看出,可以乘数为负数的乘法看成是乘数为正数(乘数去掉符号位)的乘法,同时最后得到的结果加上[-x]_补进行校正,故称为校正法

3)Booth算法该算法由校正法得出,也称为比较法,可以用一个统一的公式表示\left[ x*y \right] _补=\left[ x \right] _补\left( 0\ y_1\ y_2\ ...\ y_n \right) -\left[ x \right] _补*y_0

可将以上算式改写

2023-03-31_110237.png

其中y_{n+1}=0

2023-03-31_110423.png

补码比较法的硬件配置:

2023-03-31_110725.png

补码比较法的控制流程:

2023-03-31_110845.png

补码两位乘法补码两位乘法是将判断y_{n-1}y_n和y_ny_{n-1},也就是将下次和本次的部分积加减情况合并,需要注意的是下一个的加减情况要乘以2

2023-03-31_111638.png

除法运算

笔算除法将笔算除法直接用计算机实现的问题有以下:

机器不能直接判断上商0还是1,需要通过余数减去除数数的大小是正是负来判断笔算除法每次总是余数不同低位补0,除数右移一位,这种方式需要,两倍除数字长的加法器,可以用左移余数的方法来代替机器难以将每位商直接写到寄存器的某个位置,可将商先写入寄存器低位,然后左移一位

原码除法符号位单独处理,商符号由两个操作数符号异或得出,商值由两操作数绝对值相除得到对于定点除法,必须满足00,上商1,做2R_i-y^*运算R_i2023-04-04_100224.png

补码除法一般采用加减交替法,在此只讨论这种方法由于补码除法是符号位和数值位一起参与运算的,所以相较于原码除法需要额外解决几个问题:(1)如何确定商值(2)如何形成商符(3)如何获得新的余数

比较余数和除数大小

由于补码除法的操作数为补码,补码符号位是任意的,不能单纯用补码的差来判断大小,应该用绝对值大小进行比较,分以下两种情况:

被除数和除数同号:余数与除数同号,表示够减被除数和除数异号:余数与除数同号,表示不够减商值确定

由余数和除数大小、被除数和除数是否同号共同决定:

被除数和除数同号:够减时,上商1(即此时商的结果为正数,可以根据原码的除法那样,够减就上商1)被除数和除数异号:不够减时,上商1

可以根据以上两种结论总结得到以下结果:

2023-04-04_101922.png

新余数确定

和原码加减交替法类似

2023-04-04_102142.png

如果对商的精度没有特殊要求,可采用末尾恒置一的方法,也就是最后一次上商恒上商1

因为在商为负数时,商是补码形式,若末尾为1,取反+1中的+1只会使末尾的0(原本是1)变成1,而不会影响到前面的位,即不会影响除了末尾以外其他位的数值,保证了精度在末尾的前一位。对于小数,最大误差仅为2^{-n}

补码除法控制流程如下

2023-04-04_102455.png

浮点四则运算

浮点加减法

对阶使得两操作数的小数点对齐,遵循的原则是——小阶向大阶对其,即阶小的数尾数右移,阶数增加尾数右移时,可能会使得低位有效数字丢失,影响精度——但是如果采取大阶向小阶对齐,尾数左移,可能会发生更严重的尾数高位丢失,运算出错

尾数求和用补码进行相应的加法运算

规格化当基数r=2时,尾数S规格化形式

S>0,[S]_补=00 . 1......S2023-04-05_100033.png

上溢:是指阶码的上溢,超过了最大的整数或小于最小的负数,此时机器停止运算,做溢出中断处理下溢:阶码的下溢,浮点数趋于零,不做溢出处理,当成机器零浮点数乘除运算

2023-04-05_100833.png

尾数乘法运算

检查两个尾数中是否有为0的数,有则乘积为0不必在进行运算左规时,如果阶下溢,则作机器零处理,右规时,如果阶上溢,则进行溢出中断处理

尾数相乘会得到双倍字长的结果,若只取一倍字长,需要将低位丢弃,采取的策略有以下:

截断法:处理简单,影响精度舍入处理:对于原码和正数补码,0舍1如,对于负数补码,采取以下处理规则:负数补码加一相当于让绝对值变小,舍去相当于让绝对值变大丢失的各位全为0,不舍入——(全为0没影响,不用处理)丢失最高位为0,以下各位不全为0,或者最高位为1,之后各位全为0,则舍弃被丢失的各位——这两种情况,丢失的绝对值大,此时不加一,相当于让绝对值增大丢失最高位为1,以下各位不全为0,尾数末尾加一——丢失的绝对值小,此时加一让尾数绝对值变小算术逻辑单元

ALU电路

以下为ALU框图,A和B为两个操作数,K指定运算类型,F为输出

2023-04-05_104822.png

74LS181为四位ALU,其引脚图和功能表参考教材

快速进位链

并行加法器串行加法器是由当个全加器组成的加法器,数据逐位串行送入加法器进行运算(也就是用一个全加器一位一位的进行运算)并行加法器由多个全加器组成,其全加器个数的多少取决于机器的字长,由于并行加法器可同时对数据的各位相加,各位是否能同时产生结果取决去采用的进位链

串行进位链全加的逻辑表达式如下:S_i=A_i\oplus B_i\oplus C_{i-1}Ci=A_iB_i+\left( A_i+B_i \right) C_{i-1}进位Ci由两部分组成:本地进位d_i=A_iB_i,传递进位\left( A_i+B_i \right) C_{i-1},成t_i= A_i+B_i为传递条件,则有Ci=d_i+t_iC_{i-1}

2023-04-05_112129.png

以四位加法器为例,采用串行进位链的电路如下

2023-04-05_111558.png

设与非门的级延迟时间为t_y,n为加法器最长进位时间为2n\ t_y

并行进位链并行进位链是指并行加法器中进位信号是同时产生的,也成为先行进位、跳跃进位,有两种实现方式

单重分组跳跃进位

将n为全加器分为若干小组,小组内的建委同时产生,小组之间采用串行进位,以四位并行加法器为例

2023-04-05_112411.png

小组内的每个进位的产生只与输入小组的最低位进位有关,采取以下电路实现并行进位

2023-04-05_112626.png

假设与或非门即延迟时间为1.5t_y,小组内只需要2.5t_y就能产生全部进位

双重分组跳跃进位

基本思路是——将全加器分为若干大组,大组中有分为若干小组,小组内部以及小组之间并行产生进位,大组之间串行传递进位对于一个大组中的每个小组,其最高位进位的逻辑表达式如下:

2023-04-05_113811.png

发现小组之间可以采用类似小组内部多个全加器 采用的并行进位策略,进位电路如下

2023-04-05_114024.png

D和T的产生,由于小组内部的同步进位电路得出:

2023-04-05_114415.png

现对一个n=32的双重进位进行分析:

2023-04-05_114525.png

经过2.5t_y:产生所有的D和T信号、以及最低位的C_{2-0}进位信号经过2.5t_y:产生第二大组中所有小组的最高位进位信号经过2.5t_y:产生第一大组中所有小组的最高位进位信号、产生第二大组所有进位信号经过2.5t_y:产生第一大组所有进位信号

可以发现经过10t_y就能产生所有进位信号(是从产生d和t信号之后开始计算)

本文使用 Zhihu On VSCode 创作并发布


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有