计算机系统体系结构

存储器搬到中间,传输的数据可以以块为单位传输,传输速率大大提高
软件和硬件在逻辑上是等效的,但不是等价的。
基础概念

- 运算器和控制器由于联系紧密,一般组合在一起合成为CPU。微处理器是指在单个硅片上实现的CPU。
- 加上主存储器即为组成原理意义上的主机,该主存储器主要提供运算器和控制器使用,可以方便批量处理任务。
- 输入输出统称为I/O设备,加上辅助存储器统称为外设。
- 外设是相对于主机来说的。
- 寄存器是用来存放一个单位的数据或字数据的存储单元。
- 寄存器与存储器中的字存储单元没有本质区别。二者实际差别在于,寄存器位于CPU内,它的访问速度远远快于访问CPU外的存储器。
- 指令集体系结构包括:数据类型(每个字的位数以及各个位的含义),用来保存临时结果的寄存器,指令的类型和格式,以及寻址方式(表示数据在存储器中存放位置的方法)
软件系统
系统软件
管理整个计算机系统,使系统资源得到合理调度。如:操作系统(OS)、数据库管理系统(DBMS)、语言处理程序
应用软件
完成用户的特定任务。使用系统软件提供的资源接口
编程语言
- 机器语言:二进制代码,需要查表才能得知相应的指令
- 汇编语言:助记符。用汇编器(汇编程序)一对一翻译成机器语言。
- 高级语言:C/C++、Java。通过编译器(编译程序)编译成汇编语言/机器语言。
五层结构

冯·诺依曼计算机
“存储程序”:将指令以代码的形式实现输入到计算机主存储器中,然后按其在存储器中的首地址执行程序的第一条指令,以后就按照该程序的规定规则执行其他指令,直到程序执行结束。
特点
- 计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备5大部件组成。
- 指令和数据以同等地位存于存储器内,并可按地址寻访。
- 指令和数据均用二进制代码表示,
- 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。
- 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
- 早期的冯·诺依曼计算机以运算器为中心,输入/输出设备通过运算器与存储器传送数据。现代的则以存储器
工作过程——以取数指令为例

简称说明
- M:主存中某存储单元
- MAR:地址寄存器
- MDR:数据寄存器
- 加括号表示取其中的数据,不加则直接访问
- (ACC):取相应寄存器中的数据
- M(MAR):访问存储体位于MAR存储单元中的数据
- 指令=操作码+地址码
- OP(IR):取操作码
- Ad(IR):取地址码
过程说明
-
取指令
- (PC)→MAR
- M(MAR)→MDR
- (MDR)→IR
-
分析指令
- OP(IR)→CU
-
执行指令
- Ad(IR)→MAR
- M(MAR)→MDR
- (MDR)→ACC
CPU区分指令和数据的依据:指令周期的不同阶段。
总线
基本概念
总线是一组能为多个部件分时共享的公共信息传送线路。解决了I/O设备和主机连接的灵活性问题。
- 作用:连通每一个部件,在部件之间传送数据。
- 数据通路带宽:数据总线一次所能并行传送信息的位数。
- 共享:指总线上可以挂接多个部件,各个部件之间互相交换信息都可以通过这组线路分时共享。
- 分时:指同一时刻只允许有一个部件向总线发送信息,如果系统中有多个部件,则它们只能分时地向总线发送信息。但是可以有多个设备同时接收信息。
特性
- 机械特性:尺寸、形状、管脚数、排列顺序
- 电气特性:传输方向和有效电平范围
- 功能特性:每根传输线的功能(地址、数据、控制)
- 时间特性:信号的时序关系
分类
按数据传输格式
- 串行总线:按位接收。
- 优点:只需要一条传输线,成本低适合长距离传输;节省布线空间
- 缺点:在数据发送和接收的时候要进行拆卸和装配,要考虑串行-并行转换的问题。
- 并行总线:同时接收到多位数据
- 优点:需要更多的信号线,电路实现容易。
- 缺点:信号线数量多;由于工作频率较高时,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,所以无法持续提升工作频率。
工作频率相同时,串行总线传输速度比并行总线慢。并行总线的工作频率无法持续提高,而串行总线可以通过不断提高工作频率来提高传输速度,最终超过并行总线。
按总线功能(连接的部件)
- 片内总线:芯片内部的总线,是CPU芯片内部寄存器与寄存器、寄存器与ALU之间的公共连接线。
- 系统总线:系统总线是计算机系统内各个功能部件(CPU、主存、I/O接口)之间相互连接的总线,根据传输信息内容不同,又可分为3类:
- 数据总线:传输各功能部件之间的数据信息,包括指令和操作数;位数(根数)与机器字长、存储字长有关、双向。一般把机器字长设成和总线宽度一样,实际根据题干判断。
- 数据通路表示的是数据流经的路径
- 数据总线是承载的媒介
- 地址总线:传输地址信息,包括主存单元或I/O端口的地址;位数(根数)与主存地址空间大小及设备数量有关、单向。
- 控制总线:传输控制信息,一根控制一个控制信号;有出:CPU送出的控制命令;有入:主存(或外设)返回CPU的反馈信号。
- 系统总线的结构
- 单总线结构
- 结构:CPU、主存、I/O设备(通过I/O接口)都连接在一组总线上,允许I/O设备之间、I/O设备和CPU之间或I/O设备与主存之间直接交换信息。
- 注:单总线并不是只有一根信号线。
- 优点:结构简单成本低,易于接入新的设备。
- 缺点:带宽低,负载重,多个部件只能争用唯一的总线,且不支持并发传送操作。
- 双总线结构
- 主存总线:连接CPU、主存和通道之间进行数据传送.支持突发传送:送出一个地址收到多个地址连续的数据.
- I/O总线:用于多个外部设备与通道之间进行数据传送。
- 通道是具有特殊功能的处理器,能对I/O设备进行统一管理.通道程序放在主存中。
- 优点:将较低速的I/O设备从单总线上分离出来,实现存储器总线和I/O总线分离。
- 缺点:需要增加通道等硬件设备
- 三总线结构
- 结构:三总线结构是在计算机系统各部件之间采用3条各自独立的总线来构成信息通路,这三条总线分别为主存总线、I/O总线和直接内存访问DMA总线。
- 优点:提高了I/O设备的性能,使其更快地响应命令,提高系统吞吐量。
- 缺点:系统效率低,因为同一时刻仅有一套总线在工作。
- 四总线结构
- 桥接器(桥):用于连接不同的总线,具有数据缓冲、转换和控制功能。
- 多总线的设计逻辑:靠近CPU的总线速度快。
- 每级总线的设计需要遵循总线的设计标准。
按时序控制方式
- 同步总线
- 异步总线
性能指标
传输周期(总线周期)
一次总线操作需要的时间(包括申请阶段、寻址阶段、传输阶段和结束阶段),通常由若干个总线时钟周期构成。时钟周期
即机器的时钟周期。计算机有一个统一的时钟,以控制整个计算机的各个部件,各线也要受此时钟的控制。
工作频率
总线上各种操作的频率,为总线周期的倒数。若总线周期=N个时钟周期,则总线的工作频率=时钟频率/N。实际上指一秒内传送几次数据。
- 数据总线:传输各功能部件之间的数据信息,包括指令和操作数;位数(根数)与机器字长、存储字长有关、双向。一般把机器字长设成和总线宽度一样,实际根据题干判断。
时钟频率
即机器的时钟频率,为时钟周期的倒数。若时钟周期为T,则时钟频率为$\frac{1}{T}$。实际上指一秒内有多少个时钟周期。
总线宽度
又称为总线位宽,它是总线上同时能够传输的数据位数,通常是指数据总线的根数,如32根称为32位(bit)总线。
总线带宽
总线带宽是指总线本身所能达到的最高传输速率。在计算实际有效数据传输率时,要用实际传输的数据量/耗时。
总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节/秒(B/s)表示。
总线带宽=总线工作频率×总线宽度(bit/s) = 总线工作频率×(总线宽度/8)(B/s)
总线复用
一种信号线在不同的时间传输不同的信息。可以使用较少的线传输更多的信息,从而节省了成本和空间。
信号线数
地址总线、数据总线、控制总线3种总线数的总和称为信号线数。
仲裁
定义:多个主设备同时竞争时,以某种方式选择一个主设备优先获得总线控制权称为总线仲裁。
同一时刻只能有一个设备控制总线传输操作,可以有一个或多个设备从总线接收数据。
将总线上所连接的各类设备按其对总线有无控制功能分为:
主设备:获得总线控制权的设备。
从设备:被主设备访问的设备,只能响应从主设备发来的各种总线命令。
仲裁方式
集中仲裁方式
BG:决定由哪个设备获得总线的控制权。
BR:有设备需要控制总线时,通过该线发送请求。
BS:当某个设备在占用总线时往该线上发数据通知占用。该信号的建立者是获得总线控制权的设备。
工作流程
由一个集中的总线控制部件来进行总线的仲裁。
- 主设备发出请求信号
- 若多个主设备同时要求使用总线,则由总线控制器的判优、仲裁逻辑按一定的优先等级顺序确定哪个主设备能使用总线。
- 获得总线使用权的主设备开始传送数据。
链式查询方式
特点:优先级固定,三根控制线都是单根的线。
工作流程:如图若设备接口1和n同时需要使用总线,则同时向BR线发送请求,控制器收到请求查询BS线,若空,就从BG线依次向下传递,当发现在1的地方有请求,于是1占用总线并向BS发送信号表示已占用,那么控制器就不会让BG线上的信号继续向下传递,当1占用结束后,停止向BR发送的信号,控制器则控制BG上的信号继续向下传递。
优先级:离总线控制器越近的部件,其优先级越高;离总线控制器越远的部件,其优先级越低。
优点:只需要很少几根控制线就能按照一定优先次序实现总线控制,结构简单,扩充容易。
缺点:对硬件电路的故障敏感,并且优先级不能改变。当优先级高的部件频繁请求使用总线时,会使优先级较低的部件长期不能使用总线。
计数器定时查询方式
结构特点:用一个计数器控制总线使用权,相对链式查询方式多了一组设备地址线,少了一根总线响应BG;它仍共用一根总线请求线。总线控制器中使用了一个计数器。
工作流程:如图若设备接口1和n同时需要使用总线,则同时向BR线发送请求,当总线控制器收到总线请求信号,判断总线空闲时,计数器开始计数,计数值通过设备地址线发向各个部件。当地址线上的计数值与请求使用总线设备的地址一致时,该设备获得总线控制权,同时中止计数器的技术及查询,获得控制权的设备向BS线发送总线忙的信号。
优点:
- 计数初始值可以改变优先次序
- 计数每次从“0”开始,设备的优先级按顺序排列,固定不变;
- 计数从上一次的终点开始,此时设备使用总线的优先等级相等
- 计数器的处置还可以由程序设置
- 对电路的故障没有链式敏感
缺点:
- 增加了控制线数,若设备有n个,则需要$log_2{n}+2$条控制线
- 控制相对比链式查询相对复杂。
独立请求方式
结构特点:每一个设备均有一对总线请求线$BR_i$和总线允许线$BG_i$。总线控制器这有排队器进行仲裁。
工作流程: - 当总线上的部件需要使用总线时,经各自的总线请求线发送总线请求信号,在总线控制器中排队。
- 当总线控制器按一定的优先次序决定批准某个部件的请求使时,则给该部件发送总线响应信号。
优点:
- 响应速度快,总线允许信号BG直接从控制器发送到有关设备,不必在设备间传递或者查询。
- 对优先次序的控制相当灵活。
缺点:
- 控制线数量多,若设备有n个,则需要2n+1条控制线。其中+1为BS线,其用处为:用于设备向总线控制部件反馈已经使用完毕总线。
- 总线的控制逻辑更加复杂。
分布仲裁方式
特点:不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线。
工作流程: - 当设备有总线请求时,它们就把各自唯一的仲裁号发送到共享的仲裁总线上
- 每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较
- 如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号
- 最后获胜的仲裁号保留在仲裁总线上
操作和定时
总线周期的四个阶段
- 申请分配阶段:有需要使用总线的主模块(或主设备)提出申请,经总线仲裁机构决定将下一传输周期的总线使用权授予某一申请者。也可将此阶段细分为传输请求阿总线仲裁两个阶段
- 寻址阶段:获得使用权的主模块通过总线发出本次要访问的从模块的地址有关命令,启动参与本次传输的从模块。
- 传输阶段:主模块和从模块进行数据交互,可单向或双向进行数据传送
- 结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
总线定时
是指总线在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为总线定时,它的实质是一种协议或规则。
同步通信(同步定时方式)
系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。
沿和周期内可以发送控制信号。
控制流程:
时钟产生相等的时间间隔,每个间隔构成一个总线周期。在一个总线周期中,发送方和接收方可以进行一次数据传送。因为采用统一的时钟,每个部件或设备发送或接收信息都在固定的总线传输周期中,一个总线的传送周期结束,下一个总线的传送周期开始。
优点:传送速度快,具有较高的传输速率;总线控制逻辑简单。
缺点:主从设备属于强制性同步;不难及时进行数据通信的有效性检验,可靠性较差。
同步通信适用于总线长度较短及总线所接部件的存取时间比较接近的系统。
异步通信(异步定时方式)
在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方相互制约的无收信号来实现定时控制。
主设备提出交换信息的请求信号,经接口传送到设备;从设备接到主设备的请求后,通过接口向主设备发出回答信号。
根据请求和回答信号的撤销是否互锁,分为以下三种
- 不互锁方式
主设备发出请求信号后,不必等到接到从设备的回到信号,而是经过一段时间,便撤销请求信号。而从设备在接到请求信号后,发出回答信号,并经过一段时间,自动撤销回答信号,双方不存在互锁关系。 - 半互锁方式
主设备发出请求信号后,必须待接到从设备的回答信号后菜撤销请求信号,有互锁的关系。而从设备接到请求信号后发出回答信号,但不必等待获知主设备的请求信号已经撤销,而是隔一段时间后自动撤销回答信号,不存在互锁关系。 - 全互锁方式
主设备发出请求信号后,必须待从设备回答后,菜撤销请求信号;从设备发出回答信号后,必须待获知主设备请求信号已撤销后再撤销其回答信号。双方存在互锁关系。
优点:总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合。
缺点:比同步控制方式稍复杂一些,速度比同步定时方式慢。
例题:数据传输率的计算
在异步串行传输方式下,起始位为1位,数据位为7位,偶校验位位1位,停止位位1位,如果波特率位1200bit/s,求这时的有效数据传输率为多少。
波特率:单位时间内传送的二进制数据的位数,单位用bps(位/秒)表示,记作波特
比特率:单位时间内传送的二进制有效数据的位数,单位用bps(位/秒)表示,即bit/s
1200×7/(1+7+1+1)=840bit/s
计算机算术
这里数电都有学过(说的好像数电学的有多好一样
每个存储单元存放的内容为字节(Byte)的整数倍
二进制:B;十进制:D;十六进制:H
进制计数&转换
基数:每个数位所用到的不同符号的个数。
十进制位置计数法不能精确地表示所有小数。
任意进制→十进制:每个位上的数码×对应位的基数的权重
十进制→任意进制:整数部分/基数倒取余,小数部分×基数去整。
二进制→四、八、十六进制:n位一组,每组转换成对应进制的符号。整数部分在最高位补0,小数部分在最低位补零。
四、八、十六进制→二进制:每位写成对应的二进制形式。
字符
- Unicode的前256个字符被映射到ASCII字符集上。
- 字符串的存放方式
- 大端模式:每个存储单元内先存储高位字节,后存储低位字节的顺序。
- 小端模式:每个存储单元内先存储低位字节,后存储高位字节的顺序。
校验
码距:两个合法码字对应位上数字的不同位的个数。(例如00 01的码距为1,00 11码距为2)
码距大有多出来的位可以用于检错。
奇偶校验
只能检错无法纠错,原理是增大码距增加校验位,仅需一位,一般放在有效信息位的最前。
奇校验:保证一段数据(有效信息位和校验位)中出现奇数个1。
偶校验:保证一段数据(有效信息位和校验位)中出现偶数个1。
海明校验码
分组奇偶校验码。
设计思路:分组校验→多个校验位→校验位标注出错的位置
需要多少校验位
设:信息位 n位,校验位 k位(可以表示$2^k$种状态)
→ 总共$n+k$个位置、1个正确状态
→ $2^k≥n+k+1$
n | 1 | 2-4 | 5-11 | 12-26 | 27-57 | 58-120 |
---|---|---|---|---|---|---|
k | 2 | 3 | 4 | 5 | 6 | 7 |
求海明码(高位→低位)
以 信息位: 1010 为例
-
确定海明码的位数 3位
设信息位$D_4D_3D_2D_1$(1010),共4位,校验位$P_3P_2P_1$,共3位,对应的海明码为$H_7H_6H_5H_4H_3H_2H_1$。
-
确定校验位的分布
校验位$P_1$、$P_2$、$P3$ 按 $H{2^0}$、$H{2^1}$、$H{2^2}$放置,信息位依次穿插进来。即校验位$P_i$放在海明位号为$2^{i-1}$的位置上。
-
求校验位的值
校验位的取值由分组决定。
$P_1$=$D_1$⊕$D_2$⊕$D_4$
$P_2$=$D_1$⊕$D_3$⊕$D_4$
$P_3$=$D_2$⊕$D_3$⊕$D_4$求得:
$H_7 = 1$
$H_6 = 0$
$H_5 = 1$
$H_4 = 0$
$H_3 = 0$
$H_2 = 1$
$H_1 = 0$ -
纠错原理
校验方程:
$S_1$=$P_1$⊕$D_1$⊕$D_2$⊕$D_4$
$S_2$=$P_2$⊕$D_1$⊕$D_3$⊕$D_4$
$S_3$=$P_3$⊕$D_2$⊕$D_3$⊕$D_4$ -
如果海明位是低位到高位,则对应的信息位和校验位以及公式都是取对应的低位到高位。
冗余循环校验码(CRC码)
k位信息位+R位校验位
求解步骤
-
确定K、R以及生成多项式对应的二维码
K=信息码的长度,R=生成多项式最高次幂→校验码的位数N=K+R
生成多项式对应的二进制码即将各个位的系数抽出来组成
-
移位
信息码左移R位,低位补0.
-
相除
对移位后的信息码,用生成多项式进行模2除法(比较奇特的除法emm),产生余数。然后将余数拼接上信息码即可得到校验码。
-
检错和纠错
模2除,余数二进制对应的号码代表出错位置。
二进制表示&运算
PS:这部分王道讲的让我成功听不懂,后面再看书大概明白了,一部分抄了以前数电课的笔记,一部分是王道讲的内容,这部分笔记可能小问题不少吧。
定点表示
定点小数
小数点位置(隐含)在符号位后,但是不存储。例如:+0.75D=0.11B→存储为011。
有n位尾数的定点小数的表示范围:$-(1-2^{-n})$~$1-2^{-n}$
定点整数
小数点位置(隐含)在数值部分后,且不存储。例如:+3D=0.11B→存储为011。
有n位尾数的定点整数表示范围:$-(2^{-n}-1)$~$2^{-n}-1$
原、补、反、移码

原码:符号位+原有的二进制数值位的格式,符号位:0——正数,1——负数。
反码:
-
符号位:与源码相同
- 数值位
- 正数的与其原码相同,就是该二进制的绝对值
- 负数将二进制的绝对值各位取反
补码:
-
符号位与原码反码相同
- 数值位
- 正数的数值位是该符号数数值部分的二进制值
- 负数的数值位就是该符号数的数值部分的二进制值,补码的数值位是源码数值位的取反加1
移码:可以方便地用于比较数值大小。移码是在真值上加上一个常数(偏置值),通常这个常数取$2^n$。
运算
移位
右移n位:÷$r^n$,左移n位:×$r^n$
机器采用无符号数:逻辑移位。逻辑左移时,高位移丢,低位添0;逻辑右移时,低位移丢,高位添0。
机器采用有符号数:算术移位。符号位不参与.
- 正数:原码、补码、反码一样→左移、右移都补0
- 负数:反码补1←→原码补0,补码左移添0,右移添1
原码算术移位:左移丢1,算术出错;右移丢1,影响精度。
循环移位
CF:进位标志位

加减
[A+B]补=[A]补+[B]补
[A-B]补=[A]补+[-B]补
[-B]补=[B]补连同符号位一起取反加一
溢出
上溢(正溢出):在正数方向变得更大却位数不够变成负数。
下溢(负溢出):在负数方向需要变得更小却位数不够变成正数。
判断:
- 采用一位符号位,根据数据位进位情况判断溢出。符号位的进位$C_5$,最高数位的进位$C_1$,判断表达式:V=$C_5$⊕$C_1$,若V=0,表示无溢出;V=1,表示有溢出。
- 采用双符号位,正数符号位为00,负数符号位为11。正溢出:01;负溢出:10。采用双符号的移位运算,低位符号位参与移位,高位符号位代表真正的符号。
乘除法
原码一位乘法
-
符号位:两数的符号位异或
-
数值位:类似十进制乘法的方式列竖式计算。机器计算时每次先算最小位,通过右移增加位置,移出寄存器的部分舍去,寄存器内的内容就是最后的结果。
……后面还有些就省略了,一个是懒得记了,二是计算还是算为主,多算也不需要记。
存储系统
基本概念
这部分是一些零碎的概念。
分类
- 根据作用(层次)分类
- 高速缓冲存储器(catch),使用SRAM
- 主存储器(主存、内存),使用DRAM和ROM
- 辅助存储器(辅存、外存)
- 根据材料分类
- 磁表面存储器:磁带、磁盘
- 磁芯存储器
- 半导体存储器
- 光存储器:光盘
- 根据特性分类
- 随机存取:存取时间与存储单元位置无关
- 顺序存取
- 直接存取
性能指标
-
容量
-
总容量=存储单元个数×存储字长 bit = 存储单元个数×存储字长/8 Byte。如上图:$2^3×8$bit=$2^3×1$Byte=8Byte(B)。即行×列。
-
红线所处的是单行选通的二进制位,通过译码器的输入端($A_0$、$A_1$、$A_2$、等)的n位地址选择对应的$2^n$个存储单元。译码器选通存储单元,可以将一定位数的二进制数经过译码器后选通。系统能支持的最大容量=$2^n$×存储字长。
-
-
单位成本:每位价格=总成本/总容量
-
存储速度:数据传输率=数据的宽度/存储周期
- 存取时间(Ta):存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
- 存取周期(Tm):存取周期又称为读写周期或访问周期。它是指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立地访问存储器操作(读或写操作)之间所需的最小时间间隔。
- 主存带宽($B_m$):主存带宽又称数据传输率,表示每秒从主存进出信息的最大数量,单位为字/秒、字节/秒(B/s)或位/秒(b/s)。
层次化结构

简单模型
主存储器又称为主存、内存;辅助存储器又称为辅存、外存。
逻辑上属于主存,实现则在CPU内。

- 一个存储单元由多个存储元构成,多行存储单元构成存储体。一行读出的数据称为存储字,存储字的位数叫做存储字长。
- 实际上:地址寄存器和存储体之间需要有译码器和驱动器。驱动器增强供电能力。
译码器:完成从n位地址→$2^n$个存储单元的映射转换,每次映射到存储器仅有一个有效信号。
地址线:n条地址线→n位地址→$2^n$个存储单元,所以地址线的数量对应MAR的位数,即行数。
数据线:数据线的数量对应MDR的长度(存储字长),即列数。
寻址
一行存储字长4B,分组后需要多少个单元即对应需要多少地址线。
- 按字节寻址:整个存储器共可分为多少个单元,即存储器总共有多少个这样的小方格。
- 按字寻址:把一行的4个格子当成一个单元,问共有多少单元
多字节存放
顺序指字节与字节之间,字节内部不需要打乱。
- 大端模式:如图从左到右依次存放,先放高位后放低位字节。
- 小端模式:先放低位后放高位字节。
半导体存储器
存储矩阵:由大量相同的位存储单元阵列构成。
译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读/写操作。
读写电路:包括读出放大器和写入电路,用来完成读/写操作。
读/写控制线:决定芯片进行读/写操作。
片选线:确定哪个存储芯片被选中。片选线上的译码器可以用于容量扩充。
地址线:是单向输入的,其位数与存储字的个数有关。
数据线:是双向的,其位数与读出或写入的数据位数有关。
芯片容量=$2^{地址线数量}×数据线数量$
随机存取存储器RAM
访问该单元的时候与该单元所在的物理位置无关。都以电信号的形式存储0/1,断电就丢失信息:易失性存储器。
- SRAM:静态随机存储器
采用触发器(双稳态)作为基本存储电路 - DRAM:动态随机存储器
采用电容(充放电)作为基本存储电路
DRAM的刷新
- 刷新周期:一般为2ms
- 每次以行为单位,每次刷新一行的存储单元。行列地址为了减少选通线的数量。
拆分为行列地址(DRAM行、列地址等长),将存储单元排列成矩阵的形式。 - 刷新有硬件支持,读出一行的信息后重新写入,占用1个读/写周期
- 在什么时候刷新
SRAM的周期
读周期
写周期
随机存取存储器ROM(只读存储器)
最开始只能写入一次,由厂商写入,因此叫只读存储器,后续不断在进行改进,可以实现多次写入。
分类: - 掩膜式只读存储器(MROM):存储内容由半导体制造厂按用户提出的要求在芯片的生产过程中直接写入无法修改。
- 一次可编程只读存储器(PROM):存储内容由用户用专门的设备(编程器)一次性写入,之后无法修改
- 可擦除可编程只读存储器(EPROM):修改次数有限,写入时间很长
- 紫外线擦除(UVEPROM)
- 电擦除(EEPROM)
- 闪速存储器(Flash Memory):如U盘,写入速度较快
- 固态硬盘:控制单元+FLASH芯片
存储器与CPU协同工作
待补充
主存容量扩展
- 位扩展
-
字扩展
线选法 译码片选法 n条线→n个选片信号 n条线→$2^n$个选片信号 电路简单 电路复杂 地址空间不连续 地址空间连续,可以增加逻辑设计 - 字位同时扩展
先完成位扩展后字扩展。
例题
暂无(懒
特殊的存储器结构
双端口RAM
提供两套接口(地址线、数据线、控制线),可以让两个CPU同时对该ram进行访问。
两个端口对同一主存操作有4种情况:
- 两个端口不同时对同一地址单元存取数据
- 两个端口同时对同一地址单元读取数据
- 两个端口同时对同一地址单元写入数据,可能产生写入错位
- 两个端口同时对同一地质单元,一个写入数据,另一个读出数据,可能产生读出错误
设置“忙”信号位0,由判断逻辑决定暂时关闭一个端口(即被延迟),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后访问。
多模块存储器
多体并行存储器,每个模块都有相同的容量和存取速度。各模块都有独立的读写控制电路、地址寄存器和数据寄存器。即可并行工作也可交叉工作。
高位交叉编址:每个存储体高位一致,且前两位刚好等于存储体的下标。仅扩容,速度提升不大。
低位交叉编址:每个存储体低位一致,且后两位刚好等于存储体的下标。速度提升大。
流水线
模块数m,存储周期T,字长W,数据总线宽度位W,总线传输周期位r,连续存取n个字,求交叉存储器的带宽。
连续存取n个字耗时=T+(n-1)r,m≥T/r,带宽=$\frac{n×W}{T+(n-1)r}$,当n较大时,带宽→W/r。相当于m个存储体并行工作。
一个存储周期内,交叉存储器可以提供的数据量为单个模块的m倍。
可以并行工作如总线宽度为吗W时,可以同时取出长度为mW的数据。
Catch
局部性原理
空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的
时间局部性:在最近的未来要用到的信息,很可能与现在正在使用的信息
命中率H:CPU欲访问的信息在Cache中的比率。
设一个程序执行期间,Cache的总命中次数为$N_c$,访问主存的总次数为$N_m$,则$H=\frac{N_c}{N_c+N_m}$
缺失率:M=1-H
设$t_c$为命中时Cache访问时间,$t_m$为未命中时的访问时间
Cache——主存系统的平均访问时间$T_a$为$T_a=Ht_c+(1-H)t_m$
地址映射
解决主存中的块放到Cache中的哪个位置。
Cache行即Cache块,是Cache与主存之间传送数据的基本单位。
全相联映射
将主存地址分为主存字块标记和字块内地址。空位随意放置。
直接映射
对号入座,主存中的某一块经过计算放入Cache中固定的某一块。保持了块内部顺序和行的顺序,编址部分仅需要保存高位标记即可。
地址结构:主存字块标记+Cache字块地址+字块内地址。
组相联映射
先按编号分组,组内随意放。
地址结构:主存字块标记+组地址+字块内地址。
替换算法
解决Cache满了如何处理。
- 随机算法(RAND):随机地确定替换的Cache块。实现比较简单,但是没有依据程序的局部性原理,故命中率较低。
- 先进先出算法(FIFO):选择最早调入的行进行替换。实现容易页没有依据局部性原理,可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入Cache的块替换掉。
- 近期最少使用算法(LRU):依据程序访问的局部性原理选择近期内长久未访过的存储行作为替换的行,平均命中率要比FIFO高,是堆栈类算法。
LRU算法对每行设置一个计数器,Cache每命中一次,命中行计数器清0,而其他行计数器均+1,需要替换时比较各特点行的计数值,将计数值最大的行换出。 - 最不经常使用算法(LFU):将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器+1,需要替换时比较各特定行的计数值,将计数值最小的行换出。
虚拟存储器
虚拟存储器是一个逻辑模型。
功能:用户给出一个地址,叫做虚地址或逻辑地址,虚拟存储器要给出该地址对应的数据。
实现:由辅助硬件将虚地址映射到主存当中的某个单元,主存单元地址称为实地址或物理地址。
页式虚拟存储器
虚拟空间和主存空间都被划分成同样大小的页,主存的页称为实页,虚存的页称为虚页。
段式虚拟存储器
段式虚拟存储器中的段是按程序的逻辑结构划分的,各个段的长度因程序而异。虚拟地址分为两部分:段号和段内地址。
段表:每一行记录了与某个段对应的段号、装入位、段起点和段长等信息。由于段的长度可变,所以段表中要给出各段的起始地址与段的长度。
段页式虚拟存储器
把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间页划分大小相等的页,程序对主存的调入、调出仍以页为基本传送单位。每个程序对应一个段表,每段对应一个页表。
虚拟地址:段号+段内页号+页内地址
快表TLB
页表、段表存放在主存中,收到虚拟地址后要先访问主存,查询页表、段表,进行虚地址转换。放在主存中的页表称为慢表。
提高变换速度→用高速缓冲存储器存放常用的页表项→快表
指令
机器指令是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。注:一台计算机只能执行字节指令系统的指令,不能执行其他系统的指令。
指令格式

地址码

扩展操作码
全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。最常见的边长操作码的方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效缩短指令字长。
扩展方法和计网分子网一样。
通常情况下,对使用频率较高的指令分配较短的操作码;对使用频率较低的指令分配较长的操作码,从而尽可能减少指令译码和分析的时间。
设地址长度为n,上一次留出m种状态,下一层可扩展出$m×2^n$种状态。
指令功能类型
- 数据传送
- LOAD:把存储器中的数据放到寄存器中。
- STORE:把寄存器中的数据放到存储器中。
- 算术逻辑操作
- 算术:加减乘除、增减1、求补、浮点运算、十进制运算
- 逻辑:与或非、异或、位操作……
- 移位操作:算术移位、逻辑移位、循环移位(带进位、不带进位)
- 转移操作
- 无条件转移JMP
- 条件转移JZ:结果位0;JO:结果溢出;JC:结果有进位
- 调用和返回 CALL和RETURN
- 陷阱(Trap)与陷阱指令
- 输入输出操作:CPU寄存器和IO端口之间的数据传送(端口即IO接口中的寄存器)
寻址
数据存放
机器字长:CPU一次能够处理的二进制数据的位数
指令字长:一个指令字中包含二进制代码的位数
存储字长:一个存储单元存储二进制代码的长度
这些长度都是字节的整倍数
单字长指令:指令长度=机器字长
半字长指令、双字长指令
边界对齐存储模式方便一次取完,起始地址是字长(按字节算)的整数倍
指令寻址
定位下一条欲执行指令的指令地址,始终由程序计数器PC给出
数据寻址
确定本条指令的操作数地址。![]() |
寻址方式 | 有效地址 |
---|---|---|
隐含寻址 | 程序指定 | |
立即寻址 | A即是操作数 | |
直接寻址 | EA=A | |
一次间接寻址 | EA=(A) | |
寄存器寻址 | EA=$R_i$ | |
寄存器间接一次寻址 | EA=($R_i$) | |
相对寻址 | EA=(PC)+A | |
基址寻址 | EA=(BR)+A | |
变址寻址 | EA=(IX)+A |
偏移寻址
基址寻址
将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA=(BR)+A
基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但是其内容仍由操作系统决定。
变址寻址
有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即EA=(IX)+A,其中IX位变址寄存器专用,也可以通过通用寄存器作为变址寄存器。
变址寄存器面向用户,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量,形式地址A不变(作为基地址)
相对寻址
把程序计数器PC的内容加上指令格式中的形式地址A而形成可操作数的有效地址,即EA=(PC)+A,其中A是相对当前指令地址的位移量,可正可负,补码表示。广泛用于转移指令
堆栈寻址
操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址。
使用具有存储功能的寄存器实现称为硬堆栈,用主存开辟空间实现称为软堆栈。
CISC和RISC

- CISC:复杂指令集
设计思路:一条指令完成一个复杂的基本功能。代表:x86架构 - RISC:精简指令集
一条指令完成一个基本动作,多条指令组合完成一个复杂的基本功能。代表:ARM架构
CPU

运算器
对数据进行加工
- MQ:乘商寄存器
- ACC:累加器
- ALU:算数逻辑单元(核心功能),采用组合逻辑的设计方式。通过固定规则实现的控制。
- X:通用寄存器(因为有多个,使用其中的某一个用X表示)
- PSW:程序状态自寄存器。存储一些状态,比如运算的初步结论有无溢出、进位错误可提供控制器用作下一步参考。
MQ、ACC、X的主要作用:存放运算的中间结果。
基本结构
- 算术逻辑单元:主要功能是进行算术、逻辑运算
- 通用寄存器组:如AX、BX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
- 暂存寄存器:用于暂存主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容。
专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路。
CPU内部单总线方式:将所有寄存器的输入端和输出端都连接到一条公共的通路上。 - 累加寄存器:这是一个通用寄存器,用于暂存ALU运算的结果信息,用于实现加法运算。
- 程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标准(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。
- 移位器:对运算结果进行移位运算
- 计数器:控制乘除运算的操作步数
控制器
协调并控制计算机各个部件执行程序的指令序列,基本功能包括取指令、分析指令、执行指令
- CU:控制单元。采用时序逻辑的设计方式。管理整个操作步骤,能够记录步骤的结果根据结果判断下一步的控制。
- IR:指令寄存器:用于保存当前正在执行的那条指令
- PC:程序计数器,存放指令地址,有自动加一的功能。即可以永远在PC找下一条指令。
- 指令译码器:仅对操作码字段进行译码,向控制器提供特定的操作信号。
- 微操作信号发生器:根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
- 时序系统:用于产生各种时序信号,它们都是由统一时钟(CLOCK)分频得到。
ALU和CU主要代表了2类主要的硬件设计方式
PS:这里还有硬布线和微程序,因为也没一次听明白多少就没有记录(没想好怎么记,后续补
指令执行过程
指令周期
CPU从主存中取出并执行一条指令所需的全部时间。指令周期通常用若干机器周期表示,机器周期又称CPU周期。一个机器周期又包含若干时钟周期(也称节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)
每个指令周期内机器周期数可以不等,每个机器周期内节拍数也可以不等。
指令执行方案
-
单指令周期
对所有指令都选用相同的执行时间完成。指令之间串行执行;指令周期取决于执行时间最长的指令的执行时间。对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。 -
多指令周期
对不同类型的指令选用不同的执行步骤来完成。指令之间串行执行;可选用不同个数的时钟周期来完成不同指令的执行过程,需要更复杂的硬件设计。 -
流水线方案
在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。指令之间并行执行。数据通路
CPU内部单总线方式

内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线
系统总线是指同一台计算机系统的各个部件,如CPU、内存、通道和各类I/O接口间互相连接的总线
-
寄存器之间数据传送
比如把PC内容送至MAR,实现传送操作的流程及控制信号:
(PC)→Bus PCout有效,PC内容送总线
Bus→MAR MARin有效,总线内容送MAR -
主存与CPU之间的数据传送
比如CPU从主存读取指令,实现传送操作的流程及控制信号为:
(PC)→Bus→MAR PCout和MARin有效,现行指令地址→MAR
1→R CU发读指令(通过控制总线发出)
MEM(MAR)→MDR MDRin有效
MDR→Bus→IR MDRout和IRin有效,现行指令→IR -
执行算术或逻辑运算
比如一条加法指令,微操作序列及控制信号为:
Ad(IR)→Bus→MAR MDRout和MDRin有效
1→R CU发读命令
MEM(MAR)→数据线→MDR MDRin有效
MDR→Bus→Y MDRout和IYin有效,操作数→Y
(ACC)+(Y)→Z ACCout和ALUin有效,CU向ALU发送加命令
专用数据通路
以取值周期为例
- (PC)→MAR $C_0$有效
- MAR→主存 $C_1$有效
- 1→R 控制单元向主存发送读命令
- M(MAR)→MDR $C_2$有效
- MDR→IR $C_3$有效
- (PC)+1→PC
- Op(IR)→CU $C_4$有效
指令流水线
一条指令的执行过程可以分成多个阶段(或过程)。
- 取指:根据PC内容访问主存储器,取出一条指令送到IR中。
- 分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数
- 执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。
影响流水线的因素
流水线每一个功能段部件后面都要有一个缓冲寄存器,或称为锁存器,其作用是保存本流水段的执行结果,提供给下一流水段使用。
结构相关(资源冲突)
由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。
解决
- 后一相关指令暂停一周期
- 资源重复配置:数据存储器+指令存储器
数据相关(数据冲突)
数据相关在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关
解决
- 把遇到数据相关的指令及其后续指令都暂停一个至几个时钟周期,直到数据相关问题消失后再继续执行。可分为硬件阻塞和软件插入两种方法
- 数据旁路技术。
- 编译优化:通过编译器调整指令顺序来解决数据相关
控制相关(控制冲突)
当流水线遇到转移指令和其他改变pc值的指令而造成断流的,会引起控制相关。
解决
- 尽早判别转移是否发生,尽早生成转移目标地址
- 预取转移成功和不成功两个控制方向上的目标指令
- 加快和提前形成条件码
- 提高转移方向的猜准率
分类
- 部件功能级、处理机级和处理机间级流水线
根据流水线使用的级别的不同,不同的流水线可分为部件功能级、处理机级和处理机间级流水线。
部件功能级流水线就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分为求阶差、对阶、尾数相加以及结果规格化等4个子过程。
处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。
处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在下一个处理机所共享的存储器中。 - 单功能流水线和多功能流水线
按照流水线可以完成的功能,流水线分为单功能流水线和多功能流水线。
单功能流水线指通过各段不同的连接方式可同时或不同时地实现多种功能的流水线 - 动态流水线和静态流水线
按同一时间内各段之间的连接方式。 - 线性流水线和非线性流水线
按照流水线各个功能段之间是否有反馈信号分。
多发技术
- 超标量技术
每个时钟周期内可并发多条独立指令,要配置多个功能部件,不能调整指令的执行顺序,通过编译优化技术,把可并行执行的指令搭配起来。 - 超流水技术
在一个时钟周期内一个功能部件使用多次。不能调整指令的执行顺序,靠编译程序解决优化问题。 - 超长指令字
由编译程序挖掘出指令间潜在的并行性,由多条能并行操作的指令组合成一条,具有多个操作码字段的超长指令字(可达几百位)性能指标
速度(运算器)
-
机器字长:计算机进行一次整数运算所能处理的二进制数据的位数。
-
主频=CPU时钟频率=1/CPU时钟周期
-
CPI:执行一条指令所需的时钟周期数。
-
指令耗时=CPI×CPU时钟周期
-
整个程序耗时(CPU执行时间)=平均CPI×指令条数×CPU时钟周期。(因为每条指令的CPI差不多)
-
IPS:每秒可以执行多少条指令。IPS=1/(CPI×CPU时钟周期)=主频/CPI
-
MIPS:每秒执行多少百万条指令。MIPS=指令条数/(执行时间×$10^6$)=主频/CPI
-
MFLOPS:每秒执行多少百万次浮点运算。MFLOPS=浮点操作次数/(执行时间×$10^6$)
-
GFLOPS:每秒执行多少十亿次浮点运算。MFLOPS=浮点操作次数/(执行时间×$10^9$)
-
TFLOPS:每秒执行多少万亿次浮点运算。MFLOPS=浮点操作次数/(执行时间×$10^{12}$)
流水线
吞吐率
吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。
设任务数位n;处理完成n个任务所用的时间位$T_k$,则计算流水线吞吐率(TP)的最基本公式为TP=$\frac{n}{T_k}$
加速比
完成同样一批任务,不使用流水线所用的时间比使用流水线所用的时间之比。
设$T_0$表示不使用流水线时的执行时间,即顺序执行所用的时间;$T_k$表示使用流水线时的执行时间,则计算流水线加速比(S)的基本公式$S=\frac{T_0}{T_k}$
实际加速比为$S=\frac{kn△t}{(k+n-1)}=\frac{kn}{k+n-z}$
效率
流水线的设备利用率称为流水线的效率。在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间与k个流水段所围成的时空区总面积之比。则效率E=$\frac{T_0}{kTk}$,当连续输入的任务n→∞时,最高效率为$E{max}=1$
I/O设备
基本组成
I/O系统由I/O软件和I/O硬件两部分构成。
- I/O软件:包括驱动程序、用户程序、管理程序、升级补丁
通常采用I/O指令和通道指令实现CPU和I/O设备的信息交换。- I/O指令
操作码:识别I/O指令
命令码:规定I/O指令功能
设备码:对哪个设备操作 - 通道指令:通道自身的指令
指出数据的首地址、传送字数、操作命令。
通道指令放在主存中
由CPU执行I/O设备的指令,由通道代替CPU对I/O设备进行管理。
- I/O指令
- I/O硬件
包括外部设备、设备控制器、和接口、I/O总线等 - I/O接口:主机和外设交接的部分。
外设
除了主机以外的、能直接或间接与计算机交换信息的装置
显示存储器(VRAM)
刷新存储器,为了不断提高刷新图像的信号,必须把一帧图像信息存储在刷新存储器中。其存储容量由图像分辨率和灰度级决定,分辨率越高灰度级越多,刷新存储器容量越大。
VRAM容量=分辨率×灰度级位数
VRAM带宽=分辨率×灰度级位数×帧频
外存储器
磁盘
扇区是磁盘读写的最小单位
磁盘存储器由磁盘驱动器、磁盘控制器和盘片组成。
磁盘容量
一个磁盘所能存储的字节总数为磁盘容量。磁盘容量有非格式化容量和格式化容量之分
- 非格式化容量是指磁记录表面可以利用的磁化单位总数。
- 格式化容量是指按照某种特定的记录格式所能存储信息的总量。
- 记录密度:盘片单位面积上记录的二进制的信息量,通常以道密度、位密度、面密度表示。
- 道密度是沿磁盘半径方向单位长度上的磁道数
- 位密度是磁道单位长度上能记录的二进制代码位数
- 面密度是位密度和道密度的乘积
- Tip:磁盘所有磁道记录的信息量一定是相等的,并不是圆越大信息越多,故每个磁道的位密度不同。
平均存取时间
寻道时间(磁头移动到目的磁道)+旋转延迟时间(磁头定位到所在扇区)+传输时间(传输数据所花费的时间)
数据传输率
磁盘存储器在单位时间内想主机传送数据的字节数,称为数据传输率。
假设磁盘转数为r(秒/转),每条磁道容量为N个字节,则数据传输率$D_r=rN$磁盘地址
主机向磁盘控制器发送寻址信息,磁盘的地址由:驱动器号+柱面(磁道)号+盘面号+扇区号
磁盘的工作过程
磁盘的主要操作是寻址、读盘、写盘。每个操作都对应一个控制字,硬盘工作时,第一步就是取控制字,第二步就是执行控制字。
硬盘属于机械式部件,其读写操作是串行的,不可能在同一时刻即读又写,也不可能在同一时刻读两组数据或写两组数据。磁盘阵列
RAID(廉价冗余磁盘阵列)是将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问。
RAID通过同时使用多个磁盘提高了传输率;通过在多个磁盘上并行存取来大幅度提高存储系统的数据吞吐量;通过镜像功能,可以提高安全可靠性;通过数据校验,可以提高容错能力。- RAID0:无冗余和无校验的磁盘阵列,多个磁盘交叉并行读写(条带化)提高存取速度。
- RAID1:磁盘镜像阵列。互为备份。
- RAID2:采用纠错的海明码的磁盘阵列
- RAID3:位交叉奇偶校验的磁盘阵列
- RAID4:块交叉奇偶校验的磁盘阵列
- RAID5:无独立校验的奇偶校验的磁盘阵列
- RAID0:无冗余和无校验的磁盘阵列,多个磁盘交叉并行读写(条带化)提高存取速度。
光盘存储器
光盘存储器是利用光学原理读/写信息的存储装置,它采用聚焦激光束对盘式介质以非接触的方式记录信息。
光盘的类型:
- CD-ROM:只读型光盘,只能读出其中的内容,不能写入或修改
- CD-R:只可以写入一次信息,之后不可修改
- CD-RW:可读可写光盘,可以重复读写
- DVD-ROM:高容量的CD-ROM,DVD表示通用数字化多功能光盘。
固态硬盘
采用高性能Flash Memory作为硬盘来记录数据,即SSD。固态硬盘除了需要Flash Memory之外还需要其他硬件和软件的支持。闪存本质上是只读存储器。
I/O接口

功能
- 设备选址
- 传送命令
- 传送数据
- 反映I/O设备的工作状态

CPU同外设之间的信息传送实质是对接口中的某些寄存器(即端口)进行读或写。如传送数据是对数据端口DBR进行读写操作。
以控制外设输入为例:
接口和端口
端口:接口电路中可以被CPU直接访问的寄存器
接口由端口和控制逻辑组成。
端口编址
统一编址
把I/O端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问I/O端口,又称存储器映射方式。
优点:不需要专门的输入输出设备,可以CPU访问I/O的操作更灵活,还可以使端口有较大的编址空间。
缺点:端口占用了存储器地址,使内存容量变小,而且利用存储器编址的I/O设备进行数据输入/输出操作,执行速度较慢。
独立编址
I/O端口地址与存储器地址无关,独立编址CPU需要设置专门的输入/输出指令访问端口,又称I/O映射方式。靠不同的指令区分内存和I/O设备。
优点:输入输出指令与存储器指令有明显区别,程序编制清晰,便于理解。
缺点:输入输出指令少,一般只能对端口进行传送操作,尤其需要CPU提供存储器读写、I/O设备读写两组控制信号,增加了控制的复杂性。
接口类型
-
按照数据传送方式分
- 并行接口:一个字节或一个字所有位同时传送
- 串行接口:一位一位地传送
- 注:这里所说的数据传送方式指的是外设和接口弈测的传送方式,而在主机和接口弈测,数据总是并行传送的。接口要完成数据格式转换。
-
按主机访问I/O设备的控制方式:详见下节I/O方式
I/O方式
程序查询方式
流程
接口结构
程序中断方式
程序中断是指计算机执行现行程序的过程中,出现某些急需处理的 异常情况或特殊请求,CPU暂时中止现行程序,而转取对这些异常情况或特殊请求进行处理,在处理完毕CPU后又自动返回到现行程序的断点处,继续执行原程序。
中断系统
工作流程
中断请求
(此处细节见OS)
分类:
- 硬件故障中断属于最高级,其次是软件中断
- 非屏蔽中断优于可屏蔽中断
- DMA请求由于I/O设备传送的中断请求
- 高速设备低于低速设备
- 输入设备优于输出设备
- 实时设备优于普通设备
中断请求标记
每个中断源向CPU发出中断请求的时间是随机的。为了记录中断事件并区分不同的中断源,中断系统需要对每个中断源设置中断请求标记触发器INTR,当其状态为1时,表示中断源有请求。这些触发器可组成中断请求标记寄存器,该寄存器可集成在CPU中,也可分散在各个中断源中。
对于外中断,CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取I/O的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段喝结束时刻
中断响应
中断判优
硬件实现是通过硬件排队器实现,既可以设置在CPU中也可以分散在各个中断源中;软件是通过查询程序实现的。
CPU响应中断必须满足3个条件
- 中断源有中断请求
- CPU允许中断即开中断
- 一条指令执行完毕,且没有更紧迫的任务
中断处理
中断隐指令的主要任务 - 关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不断被新的中断所打断,必须关闭中断,从而保证被中断的程序在中断服务程序执行完毕后能接着正确地执行下去。
- 保存断点。为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器PC的内容)保存起来。可以放入堆栈,也可以存入指定单元。
- 引出中断服务程序。引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器PC。
中断服务程序
- 保护现场。一是保存程序断点PC,已由中断隐指令完成;二是保存通用寄存器喝状态寄存器的内容,由中断服务程序完成。可以使用堆栈,也可以使用特定存储单元。
- 中断服务(设备服务)。主体部分如通过程序控制需打印的字符代码送入打印机的缓冲存储器。
- 恢复现场。通过出栈指令或取数指令把之前保存的信息送回寄存器中。
- 中断返回。
单重中断和多重中断
单重中断:执行中断服务程序时不响应新的中断请求
多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。
中断屏蔽技术
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
中断方式

DMA方式
当I/O设备需要进行数据传送时,通过DMA控制器向CPU提出DMA传送请求,CPU响应之后将让出系统总线,由DMA控制器接管总线进行数据传送。
功能
传送前
- 接受外设发出的DMA请求,并向CPU发出总线请求
- CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期。
传送时 - 缺点传送数据的主存单元地址及长度,并能自动修改主存地址计数喝传送长度计数
- 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
传送后 - 向CPU报告DMA操作结束

传送方式
以上是初次学习计组的笔记,历时20多天,按照408计组的内容进行的学习(也可能有考纲外的补充,很多地方记录都是有一定的疏漏
参考书籍:《计算机组成原理》
参考课程:王道2019计算机组成原理。
有错还望各位大佬指正,谢谢。邮箱:xuchang@xchub.cn 或 atlas-xu@foxmail.com
总的来说完全记录每一个部分的内容就很累,而且很慢,虽然听的时候就理解了但又怕自己忘记就还是犹犹豫豫之中做了这份笔记。
wp的md插件渲染效果不如vscode+mpe,所以可能有一定的错误,内容有点多我就懒得在网页端一个个修改检查了,后续如果比较清闲的时候会搭建gitbook还有服务器的一些探针。现在我在本地导出了pdf版本,需要pdf的,请点此下载
后续还会有版本的更新,看我做题的速度了(毕竟在家,就算时间紧但人还是很懒。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://xchub.cn/2020/07/26/81/
发表评论