计算机组成原理
Published: 10/1/2023
总的来说就是讲了计算机的组成(存储器,计算器,控制器,输入输出器),主要有,计算机中数据的表示(数制与编码),存储器(概述,TLB,Cache,DRAM芯片,虚拟存储),CPU(MIPS语言,数据通路,单周期与流水线,暂停与转发的处理),输入输出(IO),最后带上总线这一部分。这么一看是不是觉得内容挺少的?
概述
计算机体系结构重要思想
计算机体系结构中的8个伟大思想主要包括:
-
摩尔定律: 单芯片的集成度约18~24月翻倍。
-
使用抽象来简化设计: 使用抽象来表示不同设计层次,使得高层次屏蔽低层次细节来减低设计复杂度。
-
加速大概率事件: 通过加速大概率事件优化远比加速小概率事件更有效。大概率事件往往更为简单,从而易于提高。
-
通过并行提高性能。
-
通过流水线提高性能。
-
通过预测提高性能。
-
存储器层次:基于不同类型存储器的容量,性能等限制,将存储器分为多层次,以利用多种存储器的特点从而提高性能。
-
通过冗余来提高可靠性。
系统软件作为应用程序与硬件的交互接口,主要包括操作系统与编译器两部分。操作系统被定义为管理计算机资源的软硬件交互接口。编译器是将高级程序语言翻译成机器码的程序。
就计算机软件而言,从机器码到汇编程序最后再到高级程序语言这一转变,是计算机早期的重大突破,极大地提高了程序开发效率,是抽象思想的很好体现。将高级程序语言翻译成机器码主要由编译器实现。
计算机组成部件
计算机由完成输入,输出,处理和存储数据任务的5类部件构成,其中两个关键部件为输入设备与输出设备。该5类部件分别为:输入,输出,存储器,数据通路,控制器。其中最后两个部件通常合称为处理器。
- 输入设备: 用于将外部数据输入到计算机中,如键盘,鼠标,扫描仪等。
- 输出设备: 用于将计算机处理后的数据输出到外部,如显示器,打印机等。
内存是指程序运行时的存储空间,DRAM则是动态随机访问存储器的缩写。内存通常由多片DRAM组成。缓存Cache是一种小而快的存储器,一般作为DRAM的缓冲,通常使用SRAM(静态随机访问存储器)。SRAM比DRAM更快,但是集成度更低。内存被称为易失性存储器,如果失电则失去所有数据;与之相对的则是非易失性存储器。前者被称为主存储器,而后者被称为二级存储器。
指令集体系结构
指令集体系结构是对硬件与底层软件之间的抽象,其通常包括编写机器语言程序所需的全部信息。提供给应用程序员的基本指令集与操作系统接口合称为应用二进制接口。
性能
-
响应时间:也称执行时间,是指计算机完成所任务所需的总时间。
-
吞吐量: 也称带宽,表示单位时间内完成的任务数量。
-
墙上时钟时间:Wall Clock Time,也称响应时间。
-
CPU执行时间:指在CPU上花费的时间,不包括IO与运行其他运行程序的时间。可进一步分为系统CPU时间与用户CPU时间。
-
时钟周期: 时钟间隔的时间。
-
时钟频率: 时钟周期的倒数。
CPI(Clock cycle per instruction) 是指执行每条指令所需的时钟周期的平均值。
程序CPU执行时间 = 程序CPU时钟周期数 X 时钟周期时间
CPU时钟周期数 = 程序指令数 X 每条指令的平均时钟周期数 = 程序指令数 X CPI X 时钟周期时间 = 程序指令数 X CPI / 时钟频率
- 指令数: 执行某程序所需的指令数量
执行时间 = 秒/程序 = 指令数/程序 X 时钟周期数 / 指令 X 秒 / 时钟周期
功耗墙: 由于功耗与性能之间的矛盾,导致了功耗墙的出现,即在一定功耗下,性能无法继续提高。
-
MIPS(million instructions per second):每秒执行的百万条指令数。
-
MIPS = 指令数 / (执行时间 X 10^6)
-
MIPS = 指令数 / (指令数 X CPI/时钟频率 X 10^6) = 时钟频率 / (CPI X 10^6)
-
MFLOPS指每秒进行百万次浮点计算次数,GFLOPS指每秒进行十亿次浮点计算次数,TFLOPS指每秒进行万亿次浮点计算次数,PFLOPS指每秒进行10^15次浮点计算次数,EFLOPS指每秒进行10^18次浮点计算次数,ZFLOPS指每秒进行10^21次浮点计算次数。
基准程序(Benchmark)是指专门用来进行性能评价的一组程序,用于反应机器在运行实际负载时的性能。
数制表示
计算机中所有数据使用二进制编码,常用的进制有 二进制,八进制,十进制,十六进制,使用进位计数法表示。
数制转换
对于进制数,其十进制值可表示为每数位()数值与对应数位权数()乘积之和。
将二进制数转化为八进制与十六进制可以以小数点为界,以此以3位或4位进行划分,每一区域代表目标数制一位,缺少部分补零;将对应数制转化为二进制方法类似,每位扩展为3位或4位。
将十进制数转化为对应进制数,需要使用除基取余法与乘基取整法分别处理整数部分与小数部分。
-
除基取余法: 将整数部分不断除基数取余数,最先取得的余数作为最低位。
-
乘基取整法: 将小数部分不断乘基数取整数,最先取得的整数作为最高位。
BCD码
BCD码是用4位二进制数表示十进制的方法,每4位表示0-9,剩余的6种组合则被称为无效BCD码。
常用的BCD码有8421码(权数对应位数),2421码(权数对应位数),余三码(8421码+3)。
定点数与浮点数
根据小数点是否固定,数值可以分为定点数与浮点数。通常使用定点补码整数表示整数,使用定点原码小数表示浮点数的尾数,用移码表示浮点数阶码。
定点数
定点数编码表示法主要由:原码,反码,补码,移码。
-
原码: 最高位为符号位,其余位表示数值的绝对值。
-
反码: 正数的反码与原码相同,负数的反码是原码除符号位外取反。
-
移码: 在真值的基础上加上一个固定值(常为2的整数次幂),使得最高位为0,最低位为1。
浮点数
MIPS汇编语言
存储器层次
存储器层次架构是指一种由多种存储器层次组成的结构(为了解决低成本,高速度,大容量之间的矛盾),其容量与访问时间离处理器距离的增加而增加。
访问速度从高到低依次为:寄存器,Cache,主存,磁盘。
这一存储层次主要体现在 Cache-主存-辅存,前者主要解决CPU与主存之间速度不匹配的问题,后者则解决主存存储容量的问题。
-
存取时间: 启动以此存储器操作到完成该操作的时间
-
存取周期(读写周期):连续两次独立访问存储器操作之间所需的最小时间间隔
-
主存带宽(数据传输率):每秒从主存进出信息的最大数量
存储周期除了存取时间外,还包括了恢复时间。
-
破坏性读取: 读取数据会破坏原有数据
-
非破坏性读取: 读取数据不会破坏原有数据
存储器的访问方式可分为随机访问与顺序访问,前者是指存储器中任何位置的访问时间相同,后者则是指存储器中的数据按照顺序存放,访问时间与位置有关。
按照存取方式可分为: RAM,ROM,串行访问存储器。
-
效率: Cache访问时间/平均访问时间
-
平均访问时间: Cache命中率 X Cache访问时间 + Cache未命中率 X 主存访问时间
存储器层次架构主要基于局部性原理,主要体现为:
-
时间局部性: 如果一个信息项被访问,那么在不久的将来它很可能再次被访问。
-
空间局部性: 如果一个信息项被访问,那么与它相邻的信息项很可能也会被访问。
需要注意数据只能在相邻的两个层次之间进行复制,交换的最小单元为块或者称为行。
可以视为最底层存储器存储所有数据,而靠近处理器的存储器则存储较远存储器中的数据子集。如果需要的数据存放在高层存储器中的某个块,就称为一次命中,否则称为一次缺失。如果缺失则需要访问下一层存储器,这个过程称为缺失处理。命中率与缺失率是评价存储器层次结构性能的重要指标。命中时间是指访问高层存储器的时间,缺失代价是指将相应的块从底层存储器替换到高层并传送到处理器的时间之和。
存储技术
SRAM静态随机访问存储器是一种组织成存储阵列结构的简单集成电路,通常具有一个读写端口,对任何数据的访问时间都是固定的,并且不需要刷新。由于其访问时间与周期时间相近,为了防止读取时数据丢失,一个基本存储单元通常由6~8个晶体管组成,缺点是:功耗高,集成度较低,成本高。
DRAM动态随机访问存储器与SRAM不同,使用电容保存电荷的方式来存储数据,使用晶体管对电容访问,其集成度比SRAM高,价格更低,但是需要周期性刷新,所以被称之为动态。
DRAM采用了两级译码结构,通过一个读周期后紧跟一个写周期来刷新一整行。
图片来自原书
常见的刷新方式有:
- 集中刷新: 在一个刷新周期内,利用一段固定的时间,依次对所有行逐一刷新,这一期间会停止所有的读写操作,被称为 访存死区。
-
优点: 读写操作不会受到影响
-
缺点: 会导致访存死区
- 分散刷新: 每行的刷新分散在各个工作周期中。前半部分用于读写或保持,后半部分用于刷新。
-
优点: 没有死区
-
缺点: 会降低读写性能,因为增加了存取周期
- 异步刷新: 将刷新周期除以行数,得到刷新周期间隔,每隔这个时间刷新一行。
刷新对CPU透明,不依赖于外部访问。
ROM可分为MROM(掩膜只读存储器),PROM,EPROM,EEPROM,Flash与SSD。
-
MROM: 一种只读存储器,其内容在制造时被固定,可靠但灵活性低。
-
PROM: 可编程只读存储器,其内容在制造时被固定,但是可以通过烧写器进行编程,一旦写入就无法改变。
-
EPROM: 可擦除可编程只读存储器,其内容可以通过紫外线擦除,再通过编程器进行编程。
闪存是一种电可擦除的可编程只读存储器EEPROM。由于写操作会造成存储位损耗,大多数闪存都有一个控制器,用于将对已经写入多次的块的写操作映射到写入次数较少的块中,这一技术被称为损耗均衡。
磁盘
Cache
Cache由SRAM组成,是主存的缓冲,由一块块数据组成。Cache用于保存最近所访问过的数据,当CPU需要访问数据时,会首先查找Cache,如果Cache中有数据则为命中,否则导致了一次缺失,需要把数据从主存调入Cache中。
在Cache中找到对应的数据涉及到数据在Cache中的映射方式,常见的映射方式有:直接映射,全相联映射,组相联映射。
直接映射
直接映射:一种Cache结构,主存的每个地址仅仅对应到cache中的一个位置。
如果Cache块数为2^m。
全相联映射
组相联映射
主存与CPU的连接
主存与CPU通过数据总线,地址总线,控制总线(系统总线)进行连接。其中
主存容量扩展
主存地址分配与片选
辅存
Cache
虚拟存储器
MIPS语言
MIPS处理器
总线
计算机用于传输信息的线路,两大特征为分时(同一时刻只允许一个部件向总线发送信息,若有多个则必须分时)与共享(总线可以挂载多个部件,每个部件可同时在总线上接收相同信息)。
根据对总线有无控制功能,可将总线设备分为主设备与从设备。
总线特性包括:机械特性,电气特性,功能特性。
总线按照功能可划分为:
-
片内总线: 用于芯片内部各个部件之间(寄存器,ALU等)的通信
-
系统总线: 用于连接计算机系统内部各个部件(CPU,主存,IO等)的通信,包括:地址总线,数据总线,控制总线。
-
IO总线:用于连接中低速的IO设备
-
通信总线: 用于连接计算机系统与其他系统的通信
按照时序可划分为同步总线与异步总线,按照数据传输格式可划分为串行总线与并行总线。
总线结构
总线结构主要包括单总线结构,多总线结构,层次总线结构。
- 单总线结构: 一组总线连接所有设备,所有设备可直接进行数据交换。
优点: 简单,成本低
缺点: 速度慢,只能有一个设备同时传输数据
- 双总线结构: 一条是主存总线,用于在CPU,主存与通道间传送数据;另一条是IO总线,负责在多个外部设备与通道间传送数据。
优点:将低速IO设备从单总线分离,实现存储器总线与IO总线分离
缺点:需要增加通道
- 三总线结构:主存总线(CPU与主存),IO总线(CPU与外设)与DMA总线(内存与高速外设)。
优点:提高IO设备性能与吞吐量
缺点:工作效率低
常见的总线标准有:PCI,PCIe,USB,IDE,ISA,SCSI等。
总线性能指标
-
总线传输周期: 一次总线操作所需事件(申请,寻址,传输与结束)
-
总线时钟周期: 机器的时钟周期
-
总线工作频率: 总线传输周期的倒数
-
总线时钟频率: 总线时钟周期的倒数
-
总线宽度: 总线上同时传输的位数
-
总线带宽: 每秒传输的数据量
-
总线复用: 一种信号线在不同时间传输不同信息
-
信号线数: 地址,数据,控制三种总线的总线数
局部总线:
突发传送:给定一个地址,传送一批数据,可以有效提高总线传输效率。
总线事务与定时
-
总线定时:总线在双方交换信息时的时间约定,主要包括同步与异步两种定时方式
-
同步定时: 系统使用统一时钟
-
优点:速度快,控制简单
-
缺点:可靠性差,主从设备属于强制性同步
-
-
异步定时: 通过握手信号进行同步,根据是否互锁可分为不互锁(固定时间后撤销响应信号),半互锁(主设备发出请求,必须等从设备发出响应后才撤销),全互锁(主设备发出请求,必须等从设备发出响应后才撤销;从设备必须获知主设备收到响应才撤销响应)
-
优点:总线周期可变,可靠性高,主从设备属于自愿性同步
-
缺点:速度较同步慢,控制较为复杂
-
-
-
总线事务:从请求总线到完成总线使用的操作序列,主要包括:
-
请求阶段: 主设备发出总线请求,获取总线控制权
-
仲裁阶段: 总线仲裁机构决定哪个设备获得总线控制权
-
寻址阶段: 主设备通过总线给出要访问的从设备地址与相关命令,并启动从设备
-
传输阶段: 主设备与从设备之间进行数据传输
-
释放阶段: 主设备的有关信息从总线上撤离,让出总线
-
IO
外设通过设备控制器与系统总线相连。
IO接口
IO控制器(IO接口)主要负责地址译码与设备选择,数据缓冲,传送控制命令与状态信息。IO接口可分为串行接口与并行接口;IO端口主要有数据端口,状态端口与控制端口,访问外设提供的IO端口需要使用IO指令,IO指令是特权级指令。
IO端口编码
IO端口的编码方式有存储器统一编址与独立编址两种。
-
存储器统一编址(存储器映射):将IO端口作为存储器单元进行地址分配,这一方式只需要使用统一的访存指令。
-
独立编址:(IO映射) 将IO端口与存储器分开编址,需要使用专门的IO指令。
IO控制方式
IO控制方式包括: 程序查询IO(CPU不断轮询,设计简单,CPU利用率低),中断驱动IO(IO设备在准备就绪时向CPU发出中断),DMA(利用DMA在主存与设备间直接交换数据),通道(利用通道控制部件,利用通道完成IO操作)。
需要注意INTR线发出的是可屏蔽中断,NMI线发出的是不可屏蔽中断。
中断流程
-
中断源:请求CPU中断的设备或事件。为了区分不同中断源,需要对每个中断源设置中断请求标记触发器。
-
中断响应优先级: CPU响应中断的先后顺序,用于解决多个中断同时发生时先处理谁的问题
CPU响应中断需要满足:
- 中断源存在中断请求
- CPU允许对应中断并且开启了中断
- 当前指令执行完毕(CPU在每条指令执行阶段结束前发出中断查询信号)
中断响应过程:
- 关中断
- 保存断点
- 寻找中断服务程序入口
- 保存现长与屏蔽字
- 开中断
- 跳转到中断服务程序
- 关中断
- 恢复现场与屏蔽字
- 开中断,返回
-
中断识别分为:向量中断(硬件查询入口点)与非向量中断(软件查询入口点)。
-
中断向量表: 用于存储所有中断服务程序的入口地址。
根据在执行中断过程中,是否能够响应其他中断,可分为单重中断与多重中断。
DMA
直接内存访问,完全利用硬件(DMA控制器)进行成组进行数据传输。和中断相比,CPU不仅同样与设备并行,而且不需要CPU参与数据传输,降低了CPU开销,适合大批高速数据传输,因为硬件开销较大,DMA中断的作用仅限于故障与传输结束的处理。
DMA控制器中包含:主存地址控制器,传送长度寄存器,数据缓冲寄存器,DMA请求触发器,控制/状态寄存器等。
DMA传输过程
- 预处理
- 数据传输
- 后处理
DMA传输过程中,需要注意总线竞争问题,即DMA控制器与CPU同时访问总线,可以通过停止CPU访存,周期挪用,交替访存等方式解决。
961大纲
-
单处理器计算机组成部分,连接方式及内部工作原理。
-
计算机系统的层次结构与MIPS指令集体系结构,能够熟练使用MIPS汇编。
-
存储系统的层次化结构,对存储系统的设计,分析和性能计算。
-
对单周期,多周期,流水线处理器的设计,分析和性能计算。
主要内容
-
计算机系统的性能指标:吞吐量、响应时间、带宽、延迟;CPU时钟周期、主频、CPI、CPU执行时间;MIPS、MFLOPS、GFLOPS、TFLOPS、PFLOPS。
-
数据的表示和运算: 数制与编码,定点数与浮点数表示和运算,ALU,串并行加法器。
-
存储器层次结构:层次化结构,主存与CPU的连接,Cache的工作原理,映射方式,主存块的替换算法与写策略,多层Cache的性能计算;TLB,虚拟存储器
-
MIPS指令系统及汇编语言
-
MIPS处理器:单周期,多周期,流水线设计
-
总线与IO: 总线,磁盘,IO,基本IO方式(轮询,中断,DMA)
参考书目: 计算机组成原理MIPS第五版