L1:计算机发展史与体系结构导论

计算机发展简史、处理器产业链、ISA 与体系结构的定义,以及执行时间/CPI 性能公式

感觉这一章不知道能考啥,但是历年卷好像考过计算机发展史。。。所以很难评,应该对这一章内容要有印象

计算机发展史

第一代计算机:真空管时代,1946–1957 主要使用真空管作为基本电子器件。特点是体积大、功耗高、发热严重、可靠性较差,但实现了早期电子计算机。

第二代计算机:晶体管时代,1958–1964 晶体管取代真空管。相比第一代,计算机体积变小、功耗降低、速度提高、可靠性增强。

第三代计算机:小/中规模集成电路时代,1965–1970 开始把多个晶体管集成到一块芯片上,使用小规模集成电路和中规模集成电路。计算机进一步小型化,性能和稳定性继续提升。

第四代计算机:大规模/超大规模集成电路时代,1971 至今 使用大规模、超大规模甚至极大规模集成电路,单芯片上可集成大量器件。现代 CPU、内存和 SoC 都属于这一发展阶段,特点是性能高、成本低、集成度极高。

img

处理器产业链

中国基础IT产业链

img

国产操作系统

img

CPU供给概述

img

半导体产业链

img

处理器介绍

处理器类型

分为传统处理器和新一代处理器

img

计算机架构的定义

计算机架构不只是 ISA。旧观点认为架构主要是指令集架构 ISA,包括寄存器、寻址方式、指令格式、操作类型等;但真实的计算机架构还包括微架构硬件实现,即如何用功能单元、数据通路、控制逻辑和缓存等部件,把 ISA 具体实现出来,并在成本、功耗和可用性约束下尽量提高性能。

CPU结构

CPU,即中央处理器,是计算机中负责执行指令和处理数据的核心部件。它主要由功能单元、数据通路、控制器和缓存组成。

img

控制器负责取指令、译码,并发出控制信号,决定 CPU 下一步做什么。

数据通路负责数据的传输和运算,包括寄存器、运算单元 ALU 等。

功能单元负责具体操作,比如加减运算、逻辑运算、地址计算等。

缓存 Cache用于临时保存常用的指令和数据,减少 CPU 访问主存的时间。

指令集架构 ISA

CPU内核的基础就是指令集(ISA)和微架构。ISA 是软件和硬件之间的接口,规定了编译器能使用哪些指令,以及 CPU 应该如何识别和执行这些指令,ISA包括以下几个部分:

  1. 数据类型 CPU 能识别什么类型的数据,例如 byte、word、integer、floating point、string 等。
  2. 操作类型 CPU 能对数据做什么操作,例如 add、sub、mul、div、xor、move 等。
  3. 可编程存储器 程序可以直接使用或控制的存储资源,例如寄存器 regs、PC、memory。
  4. 寻址方式 CPU 如何找到操作数,例如立即数、寄存器、绝对地址、相对地址、寄存器加偏移等。
  5. 指令编码 一条机器指令如何用二进制表示,包括 opcode 和 operand fields 等。

ISA 对比

img

芯片设计与制造流程

芯片设计流程

img

制造流程

img

重要思想1: 摩尔定律与制造工艺

Moore’s Law

Moore 定律指芯片上的晶体管数量会随时间快速增长,早期约每年翻倍,后来约每 18 个月翻倍。它使得芯片在成本基本不变的情况下,集成度提高、性能增强、功耗降低,是推动计算机硬件性能发展的重要规律。

工艺缩放系数

缩放系数 α 表示工艺尺寸缩小的倍数,α = 原尺寸 / 新尺寸。若尺寸按 1/α 缩小,则单位面积可集成更多晶体管,芯片性能提高,是摩尔定律背后的重要技术基础。

img

集成电路工艺的发展史

1962年,SSI(小规模集成)12个晶体管

1966年,MSI(中型集成),100-1k晶体管

1967-1973,大规模集成电路,1k~100k晶体管

1977年,超大规模集成电路(VLSI),30m²,150k晶体管

1993年,ULSI(超大规模集成)16M闪存和256M DRAM集成了10M晶体管

1994年,GSI(千兆级集成)1G DRAM集成了100亿个晶体管

2007年,2T的80核CPU失败

处理器技术的发展史

  1. 晶体管尺寸不断缩小250nm → 130nm → 65nm → 32nm → 14nm → 7nm,说明工艺节点越来越先进,单个晶体管变得更小。晶体管越小,同样面积芯片上能放更多晶体管。
  2. 晶体管密度不断增加 晶体管密度每年增加约 35%,芯片尺寸每年增加 10%–20%。这意味着处理器里可以集成更多功能,比如更多缓存、更多核心、更复杂的执行单元等。
  3. 晶体管速度随尺寸缩小而提高 晶体管变小后,沟道更短,电容更小,开关速度理论上会提高。所以早期处理器性能提升很大程度来自工艺缩小。
  4. 但电线延迟成为新问题 晶体管变快,不代表芯片内部连线也等比例变快。随着芯片更复杂、连线更多更长,电线延迟逐渐成为限制处理器性能的重要瓶颈

登纳德系数 Dennard Factor

登纳德系数 α 表示工艺尺寸缩小的倍数α = 原尺寸 / 新尺寸。它用于描述理想工艺缩放下,尺寸、电压、电流、电容、延迟和功耗如何同步缩小。早期工艺缩放符合登纳德定律,因此晶体管更多、速度更快且功耗可控;但后来电压难以下降,导致功耗问题严重,Dennard Scaling 失效,并引出黑硅问题。

img

500nm → 350nm:尺寸、电压、电流、电容基本都能按 0.7 缩小,比较符合登纳德缩放。

90nm → 65nm:尺寸还能缩小到 0.7,但电压和电流基本不再下降,仍然约等于 1。这样功耗就降不下来了,说明 Dennard Scaling 开始失效

当电压缩放和频率缩放都受限制时,会出现 Dark Silicon(黑硅) 问题,也就是芯片上虽然可以集成越来越多晶体管,但由于功耗和散热限制,不能让所有晶体管同时工作,其中一部分区域必须关闭或低功耗运行,就像“变黑”了一样。

功耗墙

动态功率 ≈ 活性 × 电容 × 电压² × 频率

其中,活性表示有多少晶体管在工作,电容和电路规模有关,电压影响最大,因为是平方关系,频率越高,开关次数越多,功耗也越大。

功率密度在变大。电压和频率是恒定的,每个晶体管的面积在减小,晶体管数量(活性)正在增加,漏电功耗也在上升。

img

工艺缩小后,晶体管越来越多,但电压和频率不能继续有效下降,漏电也增加,导致单位面积功耗越来越高。这限制了 CPU 继续靠提高主频来提升性能,因此出现“功耗墙”。

重要思想2: 抽象表示

软硬件接口

img

存储器抽象表示

  • 表示方式(C语言中以指针来表示)。通常以字节地址命名,通常值以大小的倍数排列
  • 读写序列
  • 通过写入操作将值写到对应地址
  • 读取地址返回该地址的最近写入值

img

重要思想3: 层次化

计算机体系结构

img

存储器技术的发展

存储器的发展经历了从早期物理介质到现代半导体存储的过程。

最早使用穿孔卡片、打孔纸带和机械轮子保存数据或指令,速度慢、容量小;

后来出现水银延迟线和磁芯存储器,使存储器逐渐进入电子化和随机访问阶段;

再后来 Robert Dennard 发明 DRAM,利用电容和晶体管存储信息,具有高密度、低成本的特点,成为现代主存的核心技术。

总体趋势是存储容量和密度快速提高,但访问延迟提升较慢,因此产生了“内存墙”问题,成为现代计算机系统性能的重要瓶颈。

存储墙

存储墙是指 CPU 性能提升速度远快于 DRAM 主存性能提升速度,导致处理器和内存之间的性能差距不断扩大,因此 CPU 经常因为等待内存数据而停顿,内存访问成为系统性能瓶颈。

为了解决这个问题,处理器逐渐加入片上 Cache,并发展到 L2 Cache,用更快的缓存减少访问主存的次数。但随着缓存越来越大,其性能收益逐渐下降,所以存储墙仍然是现代计算机设计中的重要问题。

img

局部性原则(Locality)

局部性原则: 程序在任何时刻都只能访问地址空间中相对较小的部分。

两种不同类型的局部性

  • 时间局部性:如果一个项被引用,它将倾向于很快被再次引用(例如,循环,重用)
  • 空间局部性:如果一个项被引用,其地址靠近的项倾向于很快被引用(例如,直线代码,数组访问)

img

过去30年,硬件速度的提升主要依靠局部性。

重要思想4: 并行

ILP 墙 | Instruction-Level Parallelism

ILP 墙表示在单个程序/单个线程的指令流内部,能够找到的可并行执行的指令越来越少,单核处理器很难再靠“同时执行更多指令”来持续提升性能。

简单理解就是单个线程内部的并行性被挖得差不多了,再增加复杂硬件,收益也越来越小。

新学派机器结构

现代“新学派机器结构”不再主要依赖单核变快,而是通过不同层次的并行性来提高性能。

img

并行的分类

应用程序中的并行

  • 数据并行 DLP:Data-Level Parallelism,数据级并行 意思是:对很多数据做相同或类似的操作。 例如:同时计算很多个数组元素、图像像素、矩阵元素。
  • 任务并行 / 线程并行 TLP:Thread-Level Parallelism,线程级并行 任务并行的意思是把不同任务或线程分配到不同计算环境中执行。 例如:一个程序中,一个线程负责搜索,一个线程负责排序,一个线程负责显示结果。

架构中的并行

  • 位级并行:增加处理器字长。 例如从 8 位到 16 位、32 位、64 位,一次能处理更多位的数据。
  • ILP:Instruction-Level Parallelism,指令级并行 意思是一个处理器核心内部同时处理多条指令,例如流水线、超标量、乱序执行。
  • 线程级并行:多个核心或多个硬件线程同时运行多个线程。 例如多核 CPU 同时跑多个线程。
  • 向量架构 / GPU:适合大量数据并行。 例如 GPU 同时处理大量像素、矩阵运算、AI 张量计算。
  • 异构:不同类型处理器协同工作。 例如 CPU + GPU + NPU,CPU 负责通用控制,GPU/NPU 负责专门计算。

并行加速案例

img

重要思想5: 流水线

img

img

重要思想6: 冗余

通过冗余实现可靠性

适用于从数据中心到存储到内存到指令的所有部分。

  • 采用冗余数据中心,即使失去一个数据中心,互联网服务仍然在线
  • 采用冗余磁盘阵列(RAID),即使丢失1个磁盘但不丢失数据
  • 冗余内存位(错误纠正码/ECC内存) ,即使丢失1位数据,也不会丢 失整个数据

img

重要思想7:性能评估

处理器性能评估的核心是执行时间。执行时间由指令数、CPI 和时钟周期共同决定,不能只看频率或 MIPS。比较性能要用同一工作负载下的执行时间,加速比等于旧时间除以新时间。局部优化不一定带来等比例整体提升,还要考虑功耗、CPI 和系统瓶颈。

性能指标

性能主要看两个指标:

响应时间 response time:一个程序从开始到结束的时间。 吞吐率 throughput:单位时间内完成的任务数量。

注意:更快的处理器通常能改善两者;更多处理器主要提升吞吐率,不一定改善单个任务响应时间。

CPU 时间

PU 时间分为:

User time:用户程序运行时间。 System time:操作系统执行系统调用等操作的时间。

真正比较性能时,常用:

Performance=1Execution TimePerformance = \frac{1}{Execution\ Time}

也就是:执行时间越短,性能越高

核心公式:Iron Law

CPUTime=Instructions×CPI×ClockCycleTimeCPU Time=Instructions×CPI×Clock Cycle Time

也可以写成:

CPU Time=Instructions×CPIClock RateCPU\ Time = \frac{Instructions \times CPI}{Clock\ Rate}

指令数越少、CPI 越低、时钟周期越短,程序执行越快。

其中:

IC / Instructions:指令数 CPI:每条指令平均需要多少个时钟周期 Clock Cycle Time:时钟周期时间 Clock Rate:时钟频率

算法、编程语言、编译器会影响指令数和 CPI;指令集、微架构、芯片实现会影响 CPI 和时钟周期。

img

性能比较与加速比

比较两个系统时,不要只看频率,要看执行同一任务的时间。

Speedup=TimeoldTimenewSpeedup = \frac{Time_{old}}{Time_{new}}

例如 X 用 10s,Y 用 15s:

Speedup=1510=1.5Speedup = \frac{15}{10}=1.5

所以 X 比 Y 快 1.5 倍,性能提升是:

1.51=50%1.5-1=50\%

注意:性能提升 50% 不等于 执行时间减少 50%。这个例子中执行时间只是从 15s 减到 10s,减少了 33%

MIPS 陷阱

MIPS 全称是 Millions of Instructions Per Second,即每秒执行几百万条指令:

MIPS=Instruction CountExecution Time×106=clock rateCPI×106MIPS = \frac{Instruction\ Count}{Execution\ Time \times 10^6} = \frac{clock\ rate}{CPI \times 10^6}

但不同 ISA 的“指令”复杂度不同,所以不能直接说 MIPS 高就一定快。比如 MIPS 指令多但 CPI 低,x86 指令少但 CPI 高,最后还是要回到执行时间公式判断。

案例

img

MIPS 处理器:4×109×1.51×109=6s\frac{4\times10^9 \times 1.5}{1\times10^9}=6s

x86 处理器:2×109×61.5×109=8s\frac{2\times10^9 \times 6}{1.5\times10^9}=8s

所以这个例子中 MIPS 处理器更快

性能改善不一定等于整体改善

只改进系统某一部分,不能期待整体性能按同样比例提升。系统性能要看整体瓶颈。

img

下面的Turbo Boost 例子说明:提高频率可能减少执行时间,但也会改变动态功耗。

案例

img

依据动态功耗公式:Pdynamic=Activity×C×V2×fP_{dynamic}=Activity×C×V^2×f

依据执行时间公式是:Execution Time=Instruction Count×CPIClock RateExecution\ Time = \frac{Instruction\ Count \times CPI}{Clock\ Rate}

正常模式能量是:

100W×100s=10000J100W \times 100s = 10000J

Turbo 模式:

(70×1.2+30)×1001.2=9500J(70\times1.2+30)\times\frac{100}{1.2}=9500J

所以在该假设下 Turbo 模式能量更少。注意前提是:频率只影响动态功耗,不影响漏电功耗,并假设 CPI 不变

计算机组成与系统结构
L2:二进制数制

评论区