以下为哈尔滨理工大学的计算机组成原理笔记
使用的教材是唐朔飞的《计算机组成原理》
总述
内容
- 基本部件的结构和组织方式
- 基本运算的操作原理
- 基本部件和单元的设计思想
教材
- 唐朔飞. 计算机组成原理(第2版).高等教育出版社
- David A.Patterson. John L.Hennessy. Computer Organization & Design: A Hardware/Software Interface(计算机组成与设计:硬件/软件接口)
- David Harris, Sarah Harris. Digital Design and Computer Architecture. Morgan Kaufmann, 2007(数字设计和计算机系结构)
结构
概论
计算机系统简介
计算机的软硬件
计算机系统
- 硬件:计算机的实体
- 软件:由具有各类特殊功能的信息程序组成
- 系统软件:管理整个计算机系统,监视服务,使系统资源得到合理调度,高效运行,包括标准程序库、语言处理程序、操作系统、服务程序、数据库管理系统、网络软件
- 应用软件:用户根据任务需要所编制的各种程序
计算机组成原理主要是讲硬件
计算机系统的层次结构
应对系统复杂性的方法
- 抽象
- 层次化(Hierachy):将被设计的系统划分为多个模块或子模块
- 模块化(Modularity):有明确定义 (well-defined)的功能和接口
- 规则性(regularity):模块更容易被重用
M0和M1都是实际机器,M2(操作系统)以上都是虚拟机。硬件主要研究M0和M1,软件主要研究M2以上
计算机组成原理主要研究微指令层和机器语言层,
翻译程序
将高级语言程序翻译成机器语言程序的软件称为翻译程序。
- 编译程序:将用户编写的高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序。只要源程序不变,就无须再次进行翻译。
- 解释程序:将源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句,接着翻译源程序的下一条语句,并执行这条语句,如此重复直至完成源程序的全部翻译任务。翻译一次执行一次,即使下一次重复执行该语句时,也必重新翻译。
每一条机器指令翻译成一组微指令,即构成一个微程序
计算机组成和计算机体系结构
计算机体系结构描述程序员所见到的计算机系统的属性,概念性的结构与功能特性,包括指令系统、数据类型、寻址技术、I/O机理
计算机组成描述如何实现计算机体系结构所体现的属性,即具体指令的实现
计算机体系结构规定了软件和硬件的接口,哪些功能应该由软件实现,哪些由硬件实现
计算机组成则是根据体系结构规定的硬件实现的要求,使用哪些元件,什么样的物理结构来实现
也就是说,体系结构像指挥官,告诉组成去实现哪些指令
所以,从另一个角度,也就是程序员的角度来思考,就是体系结构是面向程序员的,他可以使用什么样的指令进行编程,来实现想要的功能,体系结构向上屏蔽了硬件实现细节,比如说实现寄存器0与寄存器1的数值相加,程序员知道这台机器提供了这样的指令,直接用来编程即可,具体是使用什么样的元件,什么样的连接,并不关心,只要有这样的功能就好了,这样的抽象,很大程度上屏蔽了复杂性;计算机组成则更多的是面向硬件工程师,要考虑采用什么样的元件来实现,如何提升效率,还要考虑电气特性等等
计算机的基本组成
冯·诺依曼计算机的特点
- 计算机由运算器、存储器、处理器、输入设备和输出设备五大部件组成
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据均用二进制表示
- 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用于表示操作数在存储器中的位置
- 存储程序,指令在存储器内按顺序存放
- 以运算器为中心
哈佛结构是将数据和指令分开存储的结构
运算器:算术运算、逻辑运算
控制器:指挥程序运行
存储器:存放数据和程序
输入设备:将信息转换成机器能识别的形式
输出设备:将结果转换成人们熟悉的形式
寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。
运算器是瓶颈,改进:以存储器为中心的结构
现代计算机结构
计算机的工作过程
1.主存储器(内存)
包括存储体和2个寄存器
存储体M包括多个存储单元,每个存储单元包括多个存储元件,每个存储元件存储一位二进制1或0
存储单元存放的一串二进制代码称为存储字,这串二进制代码的长度称为存储字长
每个存储单元都有一个编号,称为存储单元的地址号
主存的工作方式就是按存储单元的地址号来实现对存储字各位的写入和读出,这种存取方式称为按地址存取方式,简称访存
寄存器:
- MAR:Memory Address Register,存储器地址寄存器,存放地址,其位数对应存储单元的个数,反映了能存多少个地址
- MDR:Memory Data Register,存储器数据寄存器,存放数据,其位数与存储字长相等,反映了能存多在的数据
2.运算器
包括3个寄存器和一个算术逻辑单元
算术逻辑单元,Arithmetic Logic Unit,ALU,算术逻辑运算
寄存器包括ACC累加器,MQ乘商寄存器,X操作数寄存器
3.控制器
控制器用于解释指令,并保证指令的按序执行。解释指令的过程包括取指过程、分析过程、执行过程
控制器包括程序计数器PC、指令寄存器IR、控制单元CU
- PC:取指,存放当前欲执行指令的地址,具有计数功能(PC)+1->PC,即自动形成下一条指令的地址
- IR:分析,存放当前欲执行的指令,OP(IR)指操作码,Ad(IR)指地址码
- CU:执行指令
一条指令在主机上的完成过程
- PC存放程序的首地址,控制器将PC中的地址送至主存的MAR
- MAR读取存储体中的地址
- 将存储体中读到的内容送入MDR
- MDR将内容送到IR
- CU分析IR的操作码,当前操作码为取数指令
- CU控制IR的地址码送入MAR
- MAR读取存储体中的地址
- 将存储体中读到的内容送入MDR
- MDR将数据送入ACC累加器
程序在主机上是如何执行的
计算机硬件的主要技术指标
机器字长
CPU一次能处理数据的位数,与 CPU 中的寄存器位数有关
机器字长,指令字长和存储字长可以相等也可以不等。
运算速度
- 主频/时钟频率:CPU内部晶振的频率,常用单位为MHz,它反映了CPU的基本工作节拍
- 时钟周期:主频的倒数,t =1/ f
- 机器周期:一个机器周期包含若干个时钟周期,m*t
- 核数,每个核支持的线程数
- 吉普森法,每条指令的加权平均执行时间,根据计算百分比方法的不同分为静态(直接计算百分比)和动态(实际运行计算百分比)方法
- CPI,平均每条指令的平均时钟周期个数,m*n
- 指令周期:执行一条指令所需要的时间,一般包含若干个机器周期,指令周期 = mtn = CPI×机器周期
- MIPS:每秒执行百万条指令数, MIPS = 1/(CPI×时钟周期)= 主频/CPI
- FLOPS 每秒浮点运算次数,PFLOPS、MFLOPS
题: 若某处理器的时钟频率为500MHz,每4个时钟周期组成一个机器周期,执行一条指令需要3个机器周期,则该处理器的一个机器周期 8 ns,平均执行速度为 42 MIPS
解析如下:
时钟周期T等于主频的倒数,即T=1/500MHz=1/(0.5×10的9次方Hz)=2 ns,机器周期等于4个时钟周期即=4T=4×2 ns=8 ns,每条指令的时钟周期数CPI=3×4=12,则平均速度为:f/(CPI×10的6次方)=(500×10的6次方)/(12×10的6次 方)=500/12=41.6≈42MIPS.计算主频的倒数时要注意把主频的MHz换算成Hz即500后面加6个0=500×10的6次方=0.5×10的9次方,1/10的9次方 Hz=1ns
每条指令的时钟周期数CPI=3×4=12,执行一条指令需要3个机器周期数,一个机器周期包含4个时钟周期,所以CPI=3×4=12,这里计算 的都是周期的个数,和具体的时间ns纳秒没有关系,若带上具体的时间,一个时钟周期T=2ns,一个机器周期就是2×4=8ns,执行一条指令需要三个机 器周期得出执行一条指令需要的具体时间为3×8=24ns,执行每条指令的需要的时钟周期数CPI换句话说就是把执行每条指令需要的时间24ns换算成时 钟周期个数表示,为多少个时钟周期个数?时钟周期是最基本的时间操作单位,500MHz主频的处理器一个时钟周期为2ns,24ns等于多少个时钟周期?24/2=12个时钟周期,即那一句:“每条指令的时钟周期数CPI=12”。
存储容量
存放二进制信息的总位数
<!– 1. 主存容量
- 存储单元个数 × 存储字长,2^MAR × MDR 位
- 字节数:2^13b= 1KB,2^21b= 256KB,1B = 2^3b
- 辅存容量,用字节数来表示,80GB(1GB = 2^30B) –>
硬件结构
计算机硬件系统由中央处理器、存储器、I/O系统以及连接它们的系统总线组成
总线
计算机系统五大部件之间的互边连方式包括:
- 分散连接:各部件之间使用单独的连线,不利于扩展设备
- 总线连接:将各部件连到一组公共信息传输线上
总线的基本概念
总线是连接各个部件的信息传输线,是各个部件共享的传输介质
在某一时刻只允许一个部件向总线发送信息
总线的分类
按照连接部件的不同,分为
- 片内总线:芯片内部的总线(片外总线不叫片外总线),CPU芯片内部、寄存器之间、寄存器与ALU之间
- 系统总线:CPU、主存、I/O设备之间的信息传输线,按系统总线传输信息的不同分为:
- 数据总线:双向 与机器字长、存储字长有关(小于等于)
- 地址总线:单向,由CPU输出 与存储地址、 I/O地址有关
- 控制总线:用来发出各种控制信号的传输线,从CPU输出(存储器读、存储器写、总线允许、中断确认)或输入(中断请求、总线请求)
- 通信总线:用于计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信等)之间的通信,按传输方式分为
- 串行通信总线:数据在单条1位宽的传输线上,一位一位地按顺序分时传送。适用于远距离传送
- 并行通信总线:数据在多条并行1位宽的传输线上同时由源传送到目的地。。适用于近距离传送
并行传输因为互相干扰,所以传输距离短
串行传输和并行传输的优缺点:
- 串行传输
- 优点:使用的数据线少,在远距离通信中可以节约通信成本。
- 缺点:因为每次只能传输一位数据,所以传输速度比较低。
- 并行传输
- 优点:因为可以多位数据一起传输,所以传输速度很快。
- 缺点:内存有多少位,就要用多少数据线,所以需要大量的数据线,成本很高。
总线特性
- 机械特性:尺寸、形状、管脚数 及 排列顺序
- 电气特性:传输方向和有效的电平范围
- 功能特性:每根传输线的功能,地址、数据、控制
- 时间特性:信号的时序关系,总线中的任一根线在什么时间内有效
性能指标
- 总线宽度:数据总线的根数,总线能同时传送的二进制数据的位数,总线宽度越宽,每秒钟数据传输率越大,总线的带宽越宽。
- 标准传输率/总线带宽:单位时间内总线上传送的数据量,每秒传输的最大字节数(MBps,兆字节每秒),总线的带宽=总线的工作频率×总线宽度/8
- 时钟同步/异步:同步(总线上的数据与时钟同步工作)、不同步(不同步包括异步)
- 总线复用:一条信号线上分时传送两种信号,地址线与数据线复用,可以减少总线中信号线的数量、引脚的数量
- 信号线数:地址总线、数据总线和控制总线的总和
- 总线控制方式:突发、自动、仲裁、逻辑、计数
- 其他指标:负载能力
总线的工作频率
总线的工作时钟频率以MHz为单位,工作频率越高,总线工作速度越快,总线带宽越宽。
总线标准
系统与各模块、模块与模块之间的一个互连的标准界面
总线结构
总线结构的改进总是按照解决瓶颈、功能分离、区分高速和低速的思路递进
单总线结构
所有的设备都连接在一条系统总线上
I/O设备和主存交换信息不必经过cup,减轻cpu负担
CPU和主存之间交互需要经过总线,加大总线负担
更容易发生冲突,需要设置总线判优逻辑,影响整机的工作效率
双总线结构
将速度较低的I/O设备从单总线上分离出来
通道是一个具有特殊功能的处理器,由通道对I/O统一管理
以CPU为中心,发出存储总线和I/O总线,分别连接主存和I/O设备。
CPU和主存之间交互频繁单有单独总线,提高效率
I/O设备与主存交换信息时仍然要占用CPU,影响CPU的工作效率
在单总线基础上加一条CPU和主存之间的总线。或者说面向CPU双总线结构基础上在主存连接到了I/O总线
CPU和主存之间可以直接交换信息。
I/O和主存之间交换信息也不用经过CPU。
三总线结构
将速率不同的I/O设备进行分类
任一时刻只能使用一种总线
四总线结构
将速度更快的接口从扩展总线接口分离
举例
总线控制
使用总线需要解决两个问题,判优控制(总线同一时刻只允许一个部件发送信息)和通信问题(保证传输的正确性)
总线判优控制
通过总线判优控制获得总线使用权,只有获得总线使用权的主设备才能开始传送数据
总线上所连接的各类设备按其对总线有无控制功能可分为主设备和从设备
- 主设备(模块) 对总线有控制权,发出总线请求
- 从设备(模块) 响应从主设备发来的总线命令
总线判优控制分为
- 集中式
- 链式查询:3根用于总线控制
- 计数器定时查询:计数器可以定义为0、上次执行的接口、或者某个k,优先级根据计数器的初始值设定,大致用log2(n)根线
- 独立请求:每一台设备均有一对总线请求线BR和总线同意线BG,2n根线,排队器设定优先级
- 分布式
总线通信控制
解决通信双方协调配合问题
总线传输周期:
- 申请分配阶段 主模块申请,总线判优决定
- 寻址阶段 主模块向从模块 给出地址和命令
- 传数阶段 主模块和从模块交换数据
- 结束阶段 主模块撤消有关信息
总线通信的四种方式
- 同步通信:由统一时标控制数据传送,一般用于总线长度较短、各部件存取时间比较一致的场合
- 异步通信:采用应答方式,没有公共时钟标准,分为不互锁、半互锁和全互锁
- 不互锁:主模块不必等待接到从模块的回答信号,从模块不必等待接到主模块的回答信号
- 半互锁:主模块必须待接到从模块的回答信号后再撤销其请求信号,从模块不必等待接到主模块的回答信号
- 全互锁:主模块必须待接到从模块的回答信号后再撤销其请求信号,从模块必须待接到主模块的回答信号后再撤销其请求信号
- 半同步通信:同步(发送方用系统时钟前沿发信号,接收方用系统时钟后沿判断、识别)、异步(允许不同速度的模块和谐工作)结合,增加一条 “等待”响应信号WAIT
- 分离式通信:充分挖掘系统总线每个瞬间的潜力,总线上所有模块都可以成为主模块
一个总线传输周期(以输入数据为例)
- 主模块发地址、命令 占用总线
- 从模块准备数据 不占用总线 总线空闲
- 从模块向主模块发数据 占用总线
分离式通信改进一个总线传输周期,各模块准备数据时,不占用总线
- 子周期1:主模块申请占用总线,使用完后即放弃总线的使用权
- 子周期2:从模块申请占用总线,将各种信息送至总线上
分离式通信特点
- 各模块有权申请占用总线
- 采用同步方式通信,不等对方回答(同步通信主模块不用等待从模块是否得到响应,可以缩短各个设备的数据传送时间,实现高速度、大容量的数据传送。)
- 各模块准备数据时,不占用总线
- 总线被占用时,无空闲
充分提高了总线的有效占用
存储器
存储器的分类
按存储介质分类
- 半导体存储器 双极性(TTL)半导体存储器、MOS半导体存储器 易失
- 磁表面存储器 磁盘、磁带、磁鼓 非易失
- 磁芯存储器 硬磁材料、环状元件 非易失
- 光盘存储器 激光、磁光材料 非易失
按存取方式分类
- 存取时间与物理地址无关(随机访问)
- 随机存储器RAM 在程序的执行过程中可读、可写,分为静态RAM和动态RAM
- 只读存储器ROM 在程序的执行过程中 只 读
- 存取时间与物理地址有关(串行访问)
- 顺序存取存储器 磁带
- 直接存取存储器 磁盘
按在计算机中的作用分类
- 主存储器:可以直接和CPU交换信息
- 辅助存储器:存放当前暂时不用的程序和数据
- 缓冲存储器:用在两个速度不同的部件之中
存储器的层次结构
存储器有3个主要性能指标:速度、容量和每位价格
不只CPU中有寄存器,IO设备也会有
为了实现高速度、大容量和低价格,所以需要存储器的层次结构
存储系统层次结构主要体现在缓存-主存和主存-辅存这两个存储层次
- 缓存-主存解决CPU和主存速度不匹配的问题,由硬件自动完成(只使用硬件是为了提高速度),使用实地址/物理地址(主存的实际地址)
- 主存-辅存解决存储系统的容量问题,由硬件和操作系统共同完成,使用虚地址/逻辑地址(虚拟存储器,主存+辅存),逻辑地址转物理地址由硬件和操作系统完成
局部性原理: CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。
时间局部性:如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。近期它很可能还会被再次访问。
空间局部性:在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址上是临近的。
顺序局部性:在典型程序中,除小部分转移类指令外,大部分指令是顺序进行的。
即程序的地址访问流有很强的时序相关性,根据这一原理,多级存储器体系把主存储器中访问概率最高的内容存放在Cache中,当CPU需要读取数据时就首先在Cache中查找是否有所需内容,如果有则直接从Cache中读取;若没有再从主存中读取,然后同时送往Cache和CPU,主辅亦是。故可以按对所使用的指令和数据的急迫和频繁程度,将其存入容量、速度、价格不同的存储器中,增加了时间优化的命中率,取得更高的性能价格比访问模式与最近已发生的访问模式相似。
主存储器
概述
主存的基本组成
存储体、MAR、MDR
驱动器、译码器和读写电路都在存储芯片上,MAR和MDR在CPU芯片上
主存与CPU之间的联系
主存中存储单元地址的分配
参考https://blog.csdn.net/lishuhuakai/article/details/8934540
主存的技术指标
- 存储容量:主存存放二进制代码的总位/字节数
- 存储速度
- 存取时间:存储器的访问时间,启动一次存储器操作到完成该操作所需的全部时间
- 读出时间:
- 写入时间
- 存取周期 连续两次独立的存储器操作(读或写)所需的最小间隔时间,通常存取时间要比存取周期要短
- 读周期
- 写周期
- 存取时间:存储器的访问时间,启动一次存储器操作到完成该操作所需的全部时间
- 存储器的带宽:单位时间内存储器存取的信息量,位/秒、字节/秒
半导体存储芯片
半导体存储芯片的基本结构
半导体存储芯片包括存储矩阵、译码驱动电路和读/写电路
译码驱动电路用于将地址转换为选择信号
存储芯片通过地址总线、数据总线和控制总线与外部连接
地址线和数据线的位数共同反映存储芯片的容量
控制线包括读写控制线和片选线(芯片选择线)
半导体存储器由许多芯片组成,片选线用来选择芯片
半导体存储芯片的译码驱动方式
- 线选法:只能用于小容量,需要 2^地址线 个存储单元,如果地址线为20则需要1M个选择线
- 重合法:如果地址线为20则需要64根选择线
为什么在内存中数据需要对齐存储
- 平台原因(移植原因)
- 不是所有的硬件平台都能访问任意地址上的任意数据的;
- 某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
- 性能原因
- 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。
- 为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。
随机存取存储器(RAM)
静态RAM,SRAM
使用触发器工作原理存储信息
动态RAM,DRAM
使用电容存储电荷存储信息
刷新
因为动态RAM使用电容存储电荷方式存储信息,电荷会消失,需要刷新,每次刷新都是刷新一行,每2ms都必须对所有行进行一次刷新
刷新的过程实际上是先将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程
- 集中刷新:集中一段时间,死区
- 分散刷新:分散到每个存取周期
- 异步刷新:结合集中刷新和分散刷新
只读存储器(ROM)
- 掩模ROM/MROM:在厂家就写好了内容,行列选择线交叉处有MOS管为1,行列选择线交叉处无MOS管为0
- PROM:一次性编程,熔丝断为0,熔丝未断为1
- EPROM:多次性编程,使用紫外线全部擦洗
- EEPROM:多次性编程,电可擦写、局部擦写、全部擦写
- Flash Memory (闪速型存储器)
存储器与 CPU 的连接
存储容量的扩展
- 位扩展:增加存储字长,需要片选信号一致
- 字扩展:增加存储字的数量,将新增的地址线作为片选信号
- 同时扩展
存储器与CPU的连接
- 地址线的连接:CPU地址线的低位与存储芯片的地址线相连,高位用于扩展
- 数据线的连接
- 读/写命令线的连接:一般可直接相连,高电平为读,低电平为写
- 片选线的连接:片选有效信号与CPU的MREQ(访存控制信号,低电平有效,高电平表示CPU访问IO)有关,
- 合理选择存储芯片:存储芯片类型(ROM用于存放系统程序、标准子程序和各类常数,RAM用于存放用户数据)和数量(连线方便)
存储器的校验
存储器的校验是为了能及时发现错误并及时纠正错误。
编码的检测能力和纠错能力与任意两组合法代码之间二进制位的最少差异数有关。
编码的最小码距d与纠错能力的关系:
码距 1 检错位数 0 纠错位数 0
码距 2 检错位数 1 纠错位数 0
码距 3 检错位数 1 纠错位数 1
码距 4 检错位数 2 纠错位数 1
码距 5 检错位数 2 纠错位数 2
检错位数=码距/2,取整数
纠错位数=检错位数(-1),如果码距/2余数为0,则减1,否则不减
存储器的校验使用汉明码校验,请参考数据校验码
提高访存速度的措施
- 采用高速器件 高性能存储芯片
- SDRAM,同步DRAM:在系统时钟的控制下进行读出和写入,CPU 无须等待
- RDRAM:由 Rambus 开发,主要解决 存储器带宽 问题
- CDRAM:带 Cache 的 DRAM,在 DRAM 的芯片内 集成 了一个由 SRAM 组成的Cache ,有利于猝发式读取
- 采用层次结构 Cache –主存
- 调整主存结构
- 单体多字系统:在一个存取周期内,从同一地址取出4条指令逐条送到CPU执行,需要注意两个问题:1.存储数据同时存储4个字的数据,如果只需要存储1个字需要硬件配置,2.数据需要连续,如果是跳转指令,则后面的指令无效
- 多体并行系统:高位交叉(存储器的扩充)、低位交叉(增加存储器的带宽)
DDR4, DDR3, DDR2, DDR1 及SDRAM各有何不同?
高速缓冲存储器Cache
避免 CPU “空等“现象,CPU 和主存(DRAM)的速度差异
程序访问的局部性原理
一般Cache采用高速的SRAM制作
主存和缓存的编址
C远小于M,主存和缓存中的块大小相同,块内地址相同,主存和缓存之间按块存储、传送,B 为块长
缓存中的标志用于记录已经放在缓存中的主存块号
Cache 的命中率
命中:主存块调入缓存,主存块与缓存块建立了对应关系,用标记记录与某缓存块建立了对应关系的主存块号
未命中:主存块未调入缓存,主存块与缓存块未建立对应关系
命中率:CPU 欲访问的信息已在 Cache 中的比率,命中率越接近1越好
命中率与 Cache 的容量(缓存越大,命中率越高,但太大成本太高,而且增长变慢)与块长(越小越可能需要访问主存)有关
块长一般每块可取 4 ~ 8 个字,或取一个存取周期内从主存调出的信息长度
主存系统的效率
如果按照先访问缓存,缓存没有再访问主存,则平均访问时间发生变化,需要未命中部分要加上访问缓存的时间
Cache 的基本结构
Cache主要由Cache存储体、地址映射变换机构、Cache替换机构几大模块组成
将主存地址映射到缓存中定位称为地址映射,将主存地址变换成缓存地址称为地址变换,当新的主存块需要调入缓存中,而它的可用位置又被占用时,需替换机构根据替换算法解决调入问题。
Cache对用户是透明的,用户编程时所用到的地址是主存地址,用户根本不知道这些主存块是否已调入Cache内
Cache的读操作
Cache的写操作
Cache和主存的一致性
- 写直达法(Write – through):写操作时数据既写入Cache又写入主存,写操作时间就是访问主存的时间,Cache块退出时,不需要对主存执行写操作,更新策略比较容易实现,能随时保证主存和cache的数据始终一致,但增加了访存次数
- 写回法(Write – back):写操作时只把数据写入 Cache 而不写入主存,当 Cache 数据被替换出去时才写回主存
写操作时间就是访问 Cache 的时间,Cache块退出时,被替换的块需写回主存,增加了 Cache 的复杂性
Cache的改进
- 增加 Cache 的级数:片载(片内)Cache(不使用系统总线)、片外Cache(也不使用系统总线 ,独立的数据路径)
- 统一缓存和分立缓存:与指令执行的控制方式(超前控制、流水控制)有关,分立缓存包括指令 Cache、数据 Cache
超前控制:在当前指令执行过程尚未结束时就提前将下一条准备执行的指令取出
流水控制:多条指令同时执行
- L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般服务器CPU的L1缓存的容量通常在32—256KB。
- L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速度与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大越好,现在家庭用CPU容量最大的是512KB,而服务器和工作站上用CPU的L2高速缓存更高达256-1MB,有的高达2MB或者3MB。
- L3 Cache(三级缓存),分为两种,早期的是外置,现在的都是内置的。而它的实际作用即是,L3缓存的应用可以进一步降低内存延迟,同时提升大数据量计算时处理器的性能。降低内存延迟和提升大数据量计算能力对游戏都很有帮助。而在服务器领域增加L3缓存在性能方面仍然有显著的提升。比方具有较大L3缓存的配置利用物理内存会更有效
Cache-主存的地址映射
由主存地址映射到Cache地址称为地址映射
- 直接映射:每个主存块只与一个缓存块相对应,实现简单,速度快,但不够灵活,Cache空间利用率太低,即使缓存内还有空余也不能占用。主要用于靠近CPU的位置存储时使用
- 全相联映射:主存中的任一块可以映射到缓存中的任一块,灵活,命中率高,电路实现复杂,成本高,速度慢,但需要比较所有标记才能找出对应的内容。主要用于离CPU最远的存储区域使用。
- 组相联映射:直接映射和全相联映射的结合,主要用于中间区域。
替换算法
- 先进先出(FIFO)算法:不能提高Cache的命中率
- 近期最少使用(LRU)算法:利用时间局部性,将近期很少使用的块调出
辅助存储器/外存
容量大、速度慢、价格低,非易失性,不直接与 CPU 交换信息
磁表面存储器的技术指标
- 记录密度:单位长度内所存储的二进制信息量,磁盘各磁道上所记录的信息量是相同的,道密度Dt、位密度Db
- 存储容量 C = n × k × s,n为存放信息的盘面数,k为每个盘面的磁道数,s为每条磁道上记录的二进制代码数
- 平均寻址时间 寻道时间+等待时间
- 数据传输率:位密度×速度
- 误码率:出错信息位数与读出信息的总位数之比
硬磁盘存储器
硬磁盘存储器的类型
- 固定磁头和移动磁头
- 可换盘和固定盘
硬磁盘存储器结构
- 磁盘驱动器
- 磁盘控制器:接收主机发来的命令,转换成磁盘驱动器的控制命令,实现主机和驱动器之间的数据格式转换,控制磁盘驱动器读写,磁盘控制器是主机与磁盘驱动器之间的接口
- 盘片
光盘存储器
采用光存储技术,利用激光写入和读出
第一代光存储技术 采用非磁性介质 不可擦写
第二代光存储技术 采用磁性介质 可擦写
光盘的存储原理
- 只读型
- 只写一次型 热作用(物理或化学变化)
- 可擦写光盘:热磁效应
软磁盘存储器
硬盘 | 软盘 | |
---|---|---|
速度 | 高 | 低 |
磁头 | 固定、活动,浮动 | 活动,接触盘片 |
盘片 | 固定盘、盘组,大部分不可换 | 可换盘片 |
价格 | 高 | 低 |
环境 | 苛刻 |
输入输出系统
概述
发展
- 早期:I/O设备与主顾交换信息都必须通过CPU,CPU 和 I/O设备串行工作
- 接口模块和 DMA 阶段:小型机,总线连接,CPU 和 I/O设备并行工作,中断方式、DMA(直接存储器存取)方式
- 具有通道结构的阶段:大型机,具有特殊功能的处理器
- 具有 I/O 处理机的阶段
组成
- I/O软件
- I/O指令:CPU指令的一部分,操作码(区分I/O指令和其他指令)、命令码(具体操作)、设备码(区分I/O设备)
- 通道指令:通道自身的指令,用于具有通道结构的计算机,指出数组的首地址、传送字数、操作命令
- I/O硬件
- 使用接口模块:I/O设备、I/O接口
- 使用通道结构:I/O设备、设备控制器、通道
I/O设备与主机的联系方式
I/O 设备编址方式:
- 统一编址:将I/O地址看做是存储器地址的一部分,不使用I/O指令,用取数、存数指令
- 不统一编址:I/O地址和存储器地址是分开的,有专门的I/O指令
设备选址:用设备选择电路识别是否被选中
传送方式:串行、并行
联络方式:是否可以传送、传送是否已经结束
- 立即响应
- 异步工作采用应答信号:I/O设备与主机工作速度不匹配,并处、串行
- 同步工作采用同步时标:I/O设备与CPU的工作速度完全同步
连接方式:
- 分散连接/辐射式:每台设备都配有一套控制线路和一组信号线,不便于增删设备
- 总线连接:便于增删设备