计算机体系结构(3)

第5章——计算机组成原理和结构;第6章——计算机总线接口技术;第7章——计算机系统启动过程分析。

第5章 计算机组成原理和结构

5.1 冯诺依曼结构

  1. 组成:
    • 逻辑上:运算器、控制器、存储器、输入设备、输出设备。五大部分
    • 物理上:CPU(运算器、控制器、Cache)、内存、IO设备。三大部分
  2. 存储程序和指令驱动执行。

5.2 计算机的组成部件

5.2.1 运算器

  1. 运算器包括:ALU(算术和逻辑运算部件)、移位部件、FPU(浮点运算部件)、向量运算部件、寄存器等。
  2. 运算器支持的运算类型经历了由简单到复杂的过程。
  3. 随着晶体管集成度的不断提升,处理器中所集成的运算器的数量也在持续增加。

5.2.2 控制器

  1. 含程序计数器和指令寄存器。
  2. 指令通过译码产生控制信号,这些控制信号可以由硬连线产生,可以由微程序产生,也可以由两者结合产生。
  3. 常采用指令流水线、超标量、转移预测、乱序执行,预取及高速缓存等技术来提高指令吞吐率。
  4. 体系结构研究的一个永恒的主题就是加速指令执行周期,从而提高计算机运行程序的效率
  5. 乱序执行:缓解由于指令相关引起的阻塞。
    • 译码后,执行指令前,判断操作数是否准备好。若已准备好,直接执行;否则就进入保留站(又称发射队列)等待。
    • 乱序执行,但有序结束。指令执行前,按顺序进入ROB;然后乱序执行,将结果写入重命名寄存器;指令执行后,按照在ROB中的顺序,将重命名寄存器中的结果逐条提交到目标寄存器或存储器中。
    • 重命名寄存器可有效地避免不同运算访问同一个结构寄存器所带来的并行化瓶颈。
  6. 超标量技术
    • 超标量技术使得寄存器、保留站、ROB的端口数,以及功能部件的个数都要增加。
    • 超标量技术还会带来同一拍中多条指令间的相关。
  7. 转移预测
    • 根据转移历史,在转移指令的取指或译码阶段预测转移方向和地址。
    • 转移指令的执行阶段需要判定预测结果是否正确。若错误,则需要取消流水线中的后续指令。
    • 常见的技术有转移历史表BHT、分支目标缓冲BTB、返回地址栈RAS等。

5.2.3 存储器

  1. 三个层次:Cache、主存储器(内存)、辅助存储器
    • Cache:SRAM(比DRAM容量小,但速度快)
    • 内存:DRAM
    • 辅助存储器:磁盘、SSD
  2. 少量ROM(只读存储器),存放引导程序BIOS
  3. MMU负责虚实地址转换。
  4. 存储介质:
    • SRAM:易失、快、贵
    • DRAM:易失、慢、便宜
    • 闪存:非易失、快、贵(U盘、SSD,在变多变便宜)
    • 磁性存储介质:磁盘、硬盘、磁带
  5. Cache:
    • 缓解内存速度与处理器速度的剪刀差。
    • 利用访存的空间局部性和时间局部性。
    • 现代处理器普遍在片内集成多级Cache。
    • AMAT = HitTime + MissRate × MissPenalty
  6. 内存:SDRAM实现
    • 基本单元:由MOS管(打开/关闭本单元)和电容(存储逻辑值) 组成。
    • 读:位线预充到$\frac{V_{cc}}{2}$,字线打开MOS管,感应放大器放大数据(此时C中的电容被破坏);写:字线上提供更大的电流,重置感应放大器和位线的值。
    • 电容会漏电,周期刷新,通过读操作完成。
    • 读写速度影响因素:行缓冲局部性和Bank级并行度
      • 行缓冲局部性:读操作后,数据被存到感应放大器(即行缓冲,读写延迟低一些)中,电容被破坏。Close Page:每次读写完之后都从行缓冲写回存储体;Open Page:先不写回,下次读写时,如果命中直接从行缓冲中取出,如果不命中就先写回再到新地址访存。局部性好就用Open Page,不好就用Close Page。
      • Bank级并行度:不同Bank可以并行访问。

5.2.4 IO设备

  1. GPU:
    • 显示过程:CPU把要显示的数据放到内存,通知GPU通过DMA方式读取这些数据,GPU解析和运算后,把结果写到显存中,再由显示控制器读取显存数据并输出显示。
    • 集显的CPU和GPU距离近,内存一致性维护开销和数据传输延迟会大幅降低。但是系统内存要承担显存的作用,访存压力大幅增加
  2. 硬盘:
    • 性能指标:延迟和带宽。
    • 访问时间:寻道时间(找磁道)、旋转时间(找扇区)和传输时间(传数据)。
  3. 闪存:U盘、SD卡、SSD固态硬盘都是闪存。

5.3 计算机硬件结构演进

  • CPU
  • GPU
  • 北桥:离CPU最近,控制显卡、内存与CPU之间的数据交换。向上连接处理器,向下连接南桥。
  • 南桥:硬盘、键盘以及带宽要求低的IO接口与内存、CPU之间的数据交换。

5.3.1 CPU-GPU-北桥-南桥四片结构

  1. CPU、南桥、北桥在主板上,GPU以显卡的形式插在主板插槽上。
  2. CPU通过系统总线连接北桥,GPU以显卡的形式连接北桥。北桥通过南北桥总线连接南桥。
  3. 内存控制器集成在北桥中,GPU以显卡的形式连接北桥;硬盘接口、USB接口、网络接口、音频接口、键鼠接口(这都是低速IO)在南桥中。
  4. 北桥还会提供扩展接口,连接其它功能卡。北桥是系统连接的枢纽。

5.3.2 CPU-北桥-南桥三片结构

  1. 与四片结构的最大区别:三片结构的GPU被集成到北桥中。
  2. CPU通过系统总线连接北桥,北桥通过南北桥总线连接南桥。
  3. 内存控制器、显示功能、高速IO(如PCIE等)集成在北桥中;硬盘接口、USB接口、网络接口、音频接口、键鼠接口(这都是低速IO)在南桥中。

5.3.3 CPU-弱北桥-南桥三片结构

  1. 随CPU性能提高,访存速率对整体性能制约越来越大(存储墙问题),访存速率要求超过CPU与北桥之间的系统总线带宽。因此将内存控制器从北桥转移到CPU中。
  2. 北桥不再有内存控制器,剩下显示功能、高速IO。

5.3.4 CPU-南桥两片结构

  1. GPU越来越猛,也从北桥脱离进入CPU。北桥越来越弱,直接和南桥合并(还叫南桥)。
  2. CPU集成处理器核、内存控制器和GPU,通过系统总线和南桥相连。
  3. 南桥包含硬盘、USB、网络控制器,以及PCIE/PCI、LPC等总线接口。
  4. GPU和CPU在一块,会带来访存冲突。一般GPU优先级高一些,一定程度上会影响CPU性能。

5.3.5 SoC单片结构

  1. 单片计算机系统,集成了处理器、内存控制器、GPU以及硬盘USB、网络等IO接口。
  2. 小型化、低功耗。面向中低端和嵌入式。

5.4 处理器和IO设备通信

  1. IO设备由设备控制器控制。设备控制器提供一组IO寄存器接口。寄存器内容改变会引起设备控制器执行一系列复杂的动作。
  2. 处理器通过向IO寄存器写入命令字(即修改IO寄存器的值)来控制IO设备

5.4.1 IO寄存器寻址

两种方式:内存映射IO和特殊IO指令

5.4.2 处理器和IO设备的同步

  1. 两种方式:查询和中断
  2. 查询:又称轮询,处理器向IO设备发出访问请求后,就不断读取IO设备的状态寄存器,直到满足访问条件。大多数IO设备比较慢,因此查询容易造成性能浪费
  3. 中断:处理器让设备开始干活后,就转而做其他事。设备完成任务后,产生中断信号中断处理器的执行。中断的一般过程:
    • 中断源产生中断信号,到中断控制器
    • 中断控制器产生中断请求,到CPU
    • CPU产生中断响应,读取中断类型码
    • CPU根据中断类型码执行对应的中断服务程序
    • CPU从中断服务程序返回,执行结束

5.4.2 存储器和IO设备的通信

  1. 两种方式:PIO和DMA
  2. CPU访问IO设备都是Uncache访问
  3. PIO经由CPU,以通用寄存器做中介。存储器向IO设备搬运数据时,处理器先把数据从存储器搬到通用寄存器中,然后再从通用寄存器写到IO设备中,反之则反。
    • PIO方式访问延迟大,且IO访问之间需要严格的顺序关系。
    • PIO有两种同步方式:查询和中断。
    • 一般用于低速IO设备的工作,如键盘、鼠标。
  4. DMA:在存储器和IO设备之间专门开辟通道,由DMA控制器控制传输。
    • 一般过程为:① 处理器为DMA请求分配一段地址空间,并为DMA控制器配置参数;② DMA控制器开始传输,CPU转而做其他事;③ DMA控制器完成后向CPU发中断,通知执行情况(完成or出错,出错还得有错误信息);④ 处理器完成本次DMA请求。
    • 一般用于高速IO设备的工作,如网卡收发包、硬盘传输等。

第6章 计算机总线接口技术

6.1 总线概述

  1. 本质作用:完成数据交换
  2. 层次:
    • 机械层:接口的外形尺寸等。
    • 电气层:信号描述、电源电压、电平标准、信号质量等。
    • 协议层:信号时序、握手规范、命令格式、出错处理等。
    • 架构层:硬件模型、软件架构等。

6.2 总线分类(※)

  1. 按数据传送方向:
    • 单向总线:VGA
    • 双向总线
      • 半双工:USB 2.0
      • 全双工:UART
  2. 按总线使用的信号类型(数据组织方式):
    • 并行总线:PCI
    • 串行总线:PCIe、SATA、HT
  3. 按数据握手方式:
    • 无握手:DVI、APB
    • Vlid-Ready:PCI、AXI
    • Credit:PCIe、HT
  4. 按连接方式:
    • 共享信号(通过仲裁决定占有总线):PCI
    • 点对点(专用的交换节点):PCIe
  5. 按时钟实现方式:
    • 全局时钟(时钟源到各部件路径等长):PCI
    • 源同步:
      • 时钟随数据一起发送,二者路径等长:HT
      • 时钟嵌入到数据中发送:PCIe
  6. 按总线所处的位置
    • 片上总线:AXI、AHB、ASB、APB等
    • 内存总线:内存控制器和内存条之间的接口
    • 系统总线:QPI、FSB、HT
    • 设备总线:PCI、PCIe

6.3 片上总线

  1. 嵌入式SoC芯片上的功能模块称为IP。IP间通过片上总线互连。
  2. 主流片上总线是ARM公司的AMBA系列总线,包括AXI、AHB、ASB、APB等总线。
  3. 片上总线的特点(与片外实现相比):高并行性(最大特点);引线资源丰富;全局时钟相对容易实现;不需要复杂的物理层转换;不使用三态信号。
  4. 片上总线的性能:频率(能否加流水级)、数据位宽、带宽利用率(总线事务中数据传输时间占总时间的比例)。
  5. AXI特点:支持不对齐访问;读写分离。

6.4 内存总线

  1. 内存总线规范由JEDEC组织制定,包含总线的三个层级:机械层、电气层、协议层。
  2. 内存总线信号分类
    • 时钟信号
    • 地址命令信号
    • 数据及数据采样信号
  3. 对DRAM的寻址是按照bank地址、行地址和列地址来进行的。
  4. 对内存总线的控制是通过内存控制器实现的。内存控制器负责管理内存条的初始化、读写、低功耗控制等操作。

6.5 系统总线

  1. 所处的位置:处理器与桥片之间、多处理器之间。
  2. 串行总线、点对点传输、全双工传输。
  3. HT的流控机制、虚通道。

6.6 设备总线(IO总线)

  1. PCI和PCIe。
  2. PCIe兼容PCI软件架构,基本取代PCI。