讲述了六个计算机体系结构的问题以及解决方案
# Lecture02 - 计算机顶层视图
# 冯诺依曼最重要的思想 —— 存储程序
任何要计算机完成的工作都要先被编写成程序,然后将程序和原始数据送入主存并启动执行。一旦程序被启动,计算机应能在不需要操作人员干预下,自动完成逐条取出指令和执行指令的任务。
# CPU 中央处理单元
区分中央处理单元(CPU)和处理器。
CPU 由一个 ALU,一个控制单元和多个寄存器构成
PC program counter register 程序计数器
IR Instruction Register 指令寄存器
MAR Memory address register 存储器地址寄存器
MBR Memory buffer register 存储器缓冲寄存器
IO AR Address Register
IO BR Buffer Register
CPU 的制作工艺逐渐在提高,几乎不变的是 CPU 的大小,一直在增加的是晶体管的数量。
目前,苹果 M2 以及可以集成 200 亿的晶体管。
# 问题与解决思路
# 可以通过无限增加 CPU 的大小来增加性能嘛?
不可以,面积越大,意味着互联延迟越大。一个时钟周期需要大于最长互联延迟。存在物理极限。
# 问题 1:CPU 的频率不能无限提高
MOS 管开关、脉冲通过门电路需要时间
为了信号同步,每个脉冲信号需要持续一定的时间
面积大,连线延迟大;
频率越高,开关损耗高,CPU 耗电和散热提高;
# 解决 1:改变 CPU 芯片结构
采用各种技术,对芯片体系结构进行优化:指令流水线、每周期多条指令、cache、更长流水线和双速算术
领域定制,如面向人工智能的芯片
指令流水线(Lecture15):一条指令的处理过程分成若干个阶段,每个阶段由响应的功能部件完成
# 问题 2:内存墙的存在 memory wall
主存和 CPU 之间传输数据的速度跟不上 CPU 的速度
# 解决 2:采用高速缓存(cache)
- 添加一级或多级缓存以减少存储器访问频率并提高数据传输速率
- 增大总线的数据宽度,来增加每次所能取出的位数
# 问题 3:CPU 等待 I/O 传输数据
CPU 在等待 I/O 设备时保持空闲
# 解决 3:中断
其他模块(例如 IO)可以中断正常处理顺序的机制
中断周期加入指令周期中
多重中断:顺序中断处理、嵌套中断处理
# 问题 4:兼顾存储容量、速度和成本
约束
- 容量:越大越好
- 速度:跟上处理器
- 成本:相较于其他组件合理
约束之间的关系
更短的访问时间,更高的每比特成本
# 解决 4:层次式存储结构
需求
- 大容量数据存储
- 高速性能
解决方案
- 使用存储器层次结构而不是依赖单个存储器组件
寄存器 ——cache—— 主存 —— 磁盘 —— 磁带
存储量越来越大,速度越来越慢,离 CPU 越来越远
# 问题 5:I/O 设备传输速率差异大
I/O 性能跟不上 CPU 速度的提升
# 解决 5:采用缓冲区和改进 I/O 操作技术
# 问题 6:计算机部件互连复杂
总线:共享、分时
# 解决 6:采用总线
# 总线
目前,对通用计算机而言,各种点对点互连结构逐渐取代总线互连的方式。但是总线结构依然普遍用于嵌入式系统。
# 共享
所有部件都通过总线传递数据
# 分时
只有一个部件能够传输数据
# 功能组
控制线 —— 控制对数据线路与地址线路的访问和使用,控制信号传递命令和定时信息。
地址线 —— 指定数据总线上数据的源或目的,地址总线的宽度决定了系统可能的最大内存容量
数据线 —— 为系统模块之间的数据传输提供路径,一般而言,线路的条数决定了一次能传输的位数,数据总线的宽度是决定系统整体性能的一个关键因素