这就涉及到”经典必修核心“这五本书,实际上覆盖了计算机从底层硬件 → 体系结构 → 指令系统 → 汇编语言 → 实际CPU(Intel x86)的完整学习链条。
[color=]可以说,整个现代计算机与人工智能的根基,就是“晶体管”。
也就是我们可以说:晶体管 = 智能世界的“神经元”
从它出发,人类构建了逻辑 → 算法 → 智能的整条路径。00-数字电子技术基础(第五版)教材 闫石.pdf01-计算机组成原理(白中英).pdf02-计算机组成原理(第2版.唐朔飞).pdf03-INTEL微处理器_12586903.pdf04-汇编语言(第3版) 王爽著.pdf#以上资源链接分享代码请使用【Base64计算器】转换aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMWFEQ0VMa0pYQXk2TFppRmxQNWhaeUE/cHdkPWk5eW0g
在开始之前可以看一下B站的这个视频有助于我们去了解理论知识。
【英特尔设计师讲解晶体管技术】 https://www.bilibili.com/video/BV1hx4y1S7jW/?share_source=copy_web&vd_source=8700860fbdd7f2c92f4d8a378acb64c4
[color=]介绍了晶体管技术的发展历史以及半导体技术如何演进摩尔定律,视频内容工作中可能用不到,纯粹是为了扩展知识面,希望你能喜欢!
[color=]还包含了
Intel设计师讲CPU微架构(第一部分)(第二部分)
我们来一一分析它们的作用、学习顺序,以及它们如何帮助“理解计算机发展的过程与原理、汇编语言的本质。
一、从整体上看:这五本书的学习逻辑
层次学科方向代表教材主要内容作用与衔接
电子基础层数字电路《数字电子技术基础(第五版)闫石》门电路、触发器、时序逻辑、加法器、寄存器等理解“电信号如何实现加减、存储、判断”等计算功能,是计算机硬件的根。
组成原理层计算机硬件系统结构《计算机组成原理(白中英)》
《计算机组成原理(唐朔飞 第2版)》存储系统、指令系统、CPU结构、总线、I/O、中断等把“逻辑电路”升级为“完整的计算机系统”,解释CPU是如何执行汇编指令的。
微处理器实例层具体CPU架构《Intel微处理器》(一般指Barry B. Brey的书)以Intel 8086~Pentium为主线,讲解寄存器、地址模式、中断系统、指令集理论结合实际,理解真实CPU设计、汇编语言运行环境。
汇编语言层编程语言/机器语言接口《汇编语言(第3版)王爽》汇编语法、寄存器操作、段寄存器、指令执行过程把抽象的“机器原理”变成能亲手编程、调试的知识。二、每本书的作用详解《数字电子技术基础(第五版)闫石》
阶段学习内容推荐书学习目标
阶段1:逻辑基础数字电路闫石《数字电子技术基础》理解“电路→逻辑→计算”的物理基础
阶段2:系统结构计算机组成原理白中英、唐朔飞理解CPU、存储器、指令系统如何协作
阶段3:实例架构Intel微处理器Intel系列教材将理论对照实际x86架构
阶段4:汇编实战汇编语言王爽亲手编写汇编程序、观察CPU执行过程四、学习这些书后,可以帮助我们理解的关键问题
[color=hsl(0, 75%, 60%)]问题:计算机为什么是二进制的?它其实就是高低电平吗?
[color=hsl(0, 75%, 60%)]→ 数电 + 逻辑电路原理。(“高低电平 → 两种稳定状态 → 可靠表达逻辑 → 逻辑可以运算”。)
第一、表面现象:确实和“高低电平”有关
在电子电路里:
这两种电平物理上容易区分、抗干扰强、易于放大复制,所以非常适合表示两种逻辑状态。
于是就有了:
这就是最直观的“二进制”与电的关系。
第二、真正的原因:电子设备“天然适合二值逻辑”
特点二进制的优势
物理层面稳定电路中,只有两种状态最容易稳定(导通/截止、电压高/低、磁场正/反)。如果是三种或更多状态,就难保持、难区分。
抗噪声能力强二值只需区分“高”和“低”,容忍信号误差大;而多值逻辑对电压要求更严格,易出错。
逻辑运算方便布尔代数(真/假、与/或/非)与二进制天然对应。电路门(与门、或门、非门)直接实现逻辑计算。
硬件实现简单晶体管(transistor)天生是“导通/截止”两态器件,最适合实现二进制。
所以,计算机选择二进制不是因为“二看起来方便”,
而是因为自然界的电子器件本来就只能稳定地表示两个状态。
这使得:
二进制 = 物理稳定 + 抗干扰 + 易制造 + 可逻辑运算。
第三、逻辑层面:从电到“真/假”的映射
在“数字逻辑”中,我们定义了:
电平布尔值二进制
高电平真(True)1
低电平假(False)0
然后通过逻辑门组合(AND、OR、NOT 等)来实现逻辑推理。
例子:
这样,计算机的所有算术与判断,都是靠“高低电平的变化”来表达逻辑真假的。
第四、计算层面:二进制与算术结合
一旦“1”“0”可以被稳定表达,
我们就能用二进制表示数字:
十进制二进制电平模式(示意)
00000低低低低
10001低低低高
20010低低高低
30011低低高高
.........
CPU 通过加法器(由逻辑门组成)运算这些电平信号的变化,实现加减乘除。
最终你看到的“1+1=2”,在底层其实就是电平翻转的结果。
第五、那能不能不是二进制?可以,但代价太大
模式现实情况
三进制(ternary)理论上可行,某些研究型计算机(如苏联Setun机)尝试过,但电路复杂、误差难控制。
模拟信号计算模拟计算机存在,但不精确、易受干扰,后来被数字计算机取代。
量子计算用量子比特(0和1的叠加态),是“超越二进制”的新计算方式,但物理原理完全不同。
所以,传统电子计算机仍以二进制为核心,因为它兼具可靠性、成本、速度和可实现性。
第六、总结一句话:
计算机使用二进制,是因为电子器件天然支持两种稳定状态(高电平/低电平),
这两种状态能稳定地表示逻辑真/假,构成布尔代数体系,
从而实现逻辑运算、存储与信息处理。
换句话说:
高低电平是“物理表现”,
二进制是“逻辑抽象”,
布尔代数是“数学形式”。
三者共同构成了计算机的基石。
[color=hsl(0,75%,60%)]问题:[color=hsl(0, 75%, 60%)]CPU是如何执行一条汇编指令的?
[color=hsl(0, 75%, 60%)]→ 逻辑层面:组成原理 + 实际层面:Intel架构。
简单说:汇编 → 机器码 → 取指(Fetch)→ 译码(Decode)→ 执行(Execute)→ 写回(Write Back)→ 下一条。
第一、逻辑总览:一条指令的“生命周期”
在CPU内部,一条指令的执行经历以下五个主要阶段:
阶段名称作用
1️⃣取指(Fetch)从内存中取出下一条指令
2️⃣译码(Decode)分析这条指令要干什么、需要哪些寄存器/数据
3️⃣取数(Operand Fetch)如果需要操作数,从寄存器或内存取出数据
4️⃣执行(Execute)运算逻辑单元(ALU)执行指令操作
5️⃣写回(Write Back)将运算结果写回寄存器或内存
⏩更新程序计数器(PC/IP)准备执行下一条指令
每条汇编指令——无论多简单——都会经历这个完整周期。
第二、以一个示例说明(8086汇编)
假设我们在8086汇编中写了一条:
ADD AX, BX# 含义:把寄存器 BX 的值加到 AX 上,结果放回 AX。
1️⃣ 指令在内存中的形式:机器码
汇编语言只是“人类可读”的形式。
在内存中,这条指令会被汇编器翻译成机器码:
00000011 11000011↑Opcode↑ ↑寄存器编码↑
这就是 CPU 真正看到的二进制代码。
2️⃣ CPU 执行流程(五阶段详细分解)
🔹(1)取指阶段(Fetch)
📍此时CPU知道:“我要执行一条 ADD 指令”。
🔹(2)译码阶段(Decode)
例如:
控制信号1:读取AX到内部总线控制信号2:读取BX到内部总线控制信号3:启动ALU执行加法控制信号4:将结果写回AX
🔹(3)取数阶段(Operand Fetch)
🔹(4)执行阶段(Execute)
等等。
🔹(5)写回阶段(Write Back)
🔹(6)更新指令指针(IP)
第三、Intel架构的“微架构层面”更细节的过程
在现代Intel CPU中(如Pentium及之后),指令执行比上面更复杂:
阶段现代特征
取指(Fetch)从指令缓存(I-Cache)批量取指令
译码(Decode)CISC 指令被分解为多个微操作(μOps)
执行(Execute)多个执行单元并行执行微操作
写回(Retire)按程序顺序提交结果(保证精确中断)
预测(Speculation)分支预测和乱序执行提升性能
也就是说:
现代CPU内部执行的其实是很多微操作(Micro-ops)流水线,
逻辑顺序不变,但硬件实现极其优化。
第四、从组成原理视角看
组成部件在指令执行中的作用
控制单元(CU)负责发出取数、写入、ALU运算等控制信号,是“指挥官”
运算器(ALU)执行算术和逻辑运算,是“执行者”
寄存器组存放操作数、中间结果、指令地址等
程序计数器(PC/IP)指示下一条指令的地址
存储器存放指令与数据
总线系统负责各部分之间的信息传递
这就是经典冯·诺依曼体系在CPU中的完整体现。
第五、理解
取指(Fetch) ←─── 由 IP 定位指令地址 译码(Decode) ←─── 确定操作和操作数 取数(Operand Fetch) ←─── 从寄存器或内存取数据 执行(Execute) ←─── ALU 计算或逻辑操作 写回(Write Back) ←─── 结果写回寄存器或内存 更新IP ←─── 跳转到下一条或条件分支
第六、总结一句话:
一条汇编指令在CPU中的执行过程,是“电路级逻辑信号控制下的微操作序列”。
它的本质流程是:
取指 → 译码 → 取数 → 执行 → 写回 → 更新IP。
从白中英、唐朔飞的《组成原理》能理解这些阶段的“逻辑结构”;
从《Intel微处理器》和《王爽汇编》你能看到这些逻辑在x86硬件上的具体实现。
[color=hsl(0,75%,60%)]问题:[color=hsl(0, 75%, 60%)]寄存器、缓存、总线分别起什么作用?
[color=hsl(0, 75%, 60%)]→ 计算机组成原理 + 微处理器体系结构。
第一、寄存器(Register)→ 位于CPU内部,是速度最快的存储单元。
作用
分类举例(以Intel x86为例)
类型示例作用
通用寄存器AX, BX, CX, DX存放操作数、计算结果
段寄存器CS, DS, SS, ES分段寻址使用
指令寄存器IR保存当前正在执行的指令
程序计数器IP(或PC)保存下一条要执行的指令地址
状态/标志寄存器FLAGS存放运算状态(如进位、溢出、零等)
寄存器的特点:容量极小(几十到几百字节),速度极快(一个CPU时钟周期内完成访问)。
CPU 内部的所有操作(取指、译码、执行、访存……)都由一个时钟信号(clock signal)统一协调。
时钟信号是一种高低电平周期性变化的方波,它决定了 CPU 每一步动作的节奏。
一个时钟周期就是时钟信号从高到低再回到高的一个完整振荡周期。
一个CPU时钟周期很短,按照8086时代计算也就1 微秒 (μs),按照现在的高端CPU就是0.20 纳秒
第二、缓存(Cache)→ 位于CPU与主存(内存)之间,用来弥补速度差距。
背景:CPU 执行速度远高于内存访问速度,如果每次都从内存取数据,会严重“拖慢”执行效率。
作用
层次结构
层级名称位置速度容量
L1 Cache一级缓存CPU核心内极快(纳秒级)数十KB
L2 Cache二级缓存CPU芯片内快数百KB~数MB
L3 Cache三级缓存多核心共享较慢数MB~几十MB
工作原理
局部性原理:
因此Cache会自动预测并提前加载相关数据。
第三、总线(Bus)→ 各个部件之间的数据传输通道。
作用
连接CPU、内存、I/O设备,使它们能协同工作、共享信息。
分类
类型作用
数据总线(Data Bus)传输实际的数据
地址总线(Address Bus)指明数据在内存中的位置
控制总线(Control Bus)传递控制信号(如读写、时钟、中断)
举例:
当CPU执行 MOV AX, [2000H]:
第四、三者关系总结
层次位置功能特点
寄存器CPU内部存储指令与数据,直接参与运算速度最快、容量最小
缓存(Cache)CPU与内存之间提高数据访问速度自动管理、命中率关键
总线各部件之间传输数据与指令决定系统整体通信效率
[color=hsl(0,75%,60%)]问题:[color=hsl(0, 75%, 60%)]为什么高层语言能“运行”在硬件上?
[color=hsl(0, 75%, 60%)]→ (计算机体系的核心桥梁思想[color=hsl(0, 75%, 60%)])汇编语言揭示了编译后如何映射到机器指令。
为什么像 C、Python、Java 这样“看起来跟电路完全无关”的高级语言,最终能在硬件(CPU、电路)上运行。
第 一、从“层次结构”看语言与硬件
计算机系统是一个层层抽象的体系,每一层都把下层复杂的操作“包装”成更简单的接口:
应用程序(C、Python)↓编译器 / 解释器↓汇编语言(Assembly)↓机器语言(Machine Code,二进制指令)↓硬件电路(CPU、寄存器、控制单元)↓逻辑电路(加法器、译码器、触发器)↓电子器件(晶体管 → 电流开/关)
汇编语言就是“连接软件与硬件的翻译层”。所以你能不懂汇编吗?这就不懂英文一样,看不懂国外的文献。所以有条件的话多背单词,不要老想着汉化。
第二、从编译角度理解“高层语言如何变成硬件可执行”
编译阶段:翻译为汇编/机器指令
以C语言为例:
int a = 2 + 3;
经过编译器(如gcc)翻译成汇编:
mov eax, 2add eax, 3
再由汇编器(assembler)转换成机器指令(二进制码):
10111000 00000010 ; mov eax, 2 00000101 00000011 ; add eax, 3
这些二进制数就是CPU能“听懂”的语言。
第三、机器语言如何驱动硬件
机器指令并不是“神奇的代码”,而是一串控制信号的组合。
CPU 的 控制单元(Control Unit) 会:
这些控制信号最终都是**高低电平(1/0)**形式:
所以——运行程序的本质就是控制电流的流动模式。
第四、汇编语言的作用(桥梁地位)
层级作用
高级语言人能理解的算法逻辑(如 if、for、函数)
汇编语言指令级描述,接近硬件逻辑(mov、add、jmp)
机器语言二进制控制信号序列(0与1)
电路层晶体管的开与关、高低电平变化
汇编语言让我们“看到”编译器如何把高级语言逻辑分解为机器级步骤,也因此揭示了高层程序为何能在硬件上运行。
第五、形象类比
想象:
第六、总结一句话
高层语言之所以能运行在硬件上,是因为编译器把它翻译成汇编指令,而汇编再被汇编器转为机器码,这些机器码直接驱动CPU的硬件逻辑电路完成操作。
[color=hsl(0,75%,60%)]问题:[color=hsl(0, 75%, 60%)]为什么计算机能发展得越来越快?
[color=hsl(0, 75%, 60%)]→ 从8086到现代CPU的演进(Intel微处理器书讲得最系统)。
第一、起点:8086 是怎样的
指标8086 (1978)现代Core i9 (≈2025)
主频5~10 MHz3.5~5.5 GHz
工艺3 μm NMOS3 nm FinFET
核心数18~24(含多线程)
指令x86x86-64 / SIMD / AVX512 等
缓存无L1+L2+L3(几十MB)
寄存器14个16位数百个寄存器、64位宽
性能每秒几万条指令每秒数千亿条指令(>10¹¹)
从 MHz 到 GHz,从单核到多核,从数千个晶体管到上百亿个晶体管——这背后是架构设计、制造工艺、存储层次与并行技术的全面进化。
第二、性能提升的四大支柱
1 提高主频(Frequency ↑)
早期提升速度最直接的方式。
时钟周期缩短 → 每步操作更快。
⚠️ 但高频带来发热与能耗问题,因此转向“架构效率”与“并行化”。
2 提升架构效率(CPI ↓)
CPU不止频率快,还要“每个周期干得多”。
类似“工厂流水线”。
如现代CPU每个时钟周期可执行4~6条指令。
从“顺序执行一条条指令” → “并行、预测、乱序执行”,效率提升数倍。
3 多级缓存(Memory Hierarchy)
CPU速度远超内存,必须用缓存缓解“瓶颈”:
寄存器
4 多核与并行(Parallelism)
当单核频率遇到瓶颈 → 多核化。
多核 + 多线程 + GPU并行 → 性能增长曲线持续延伸。
第三、制造工艺(晶体管数量)
摩尔定律:
“集成电路上可容纳的晶体管数目每18~24个月翻一倍。”
处理器年代制程晶体管数
808619783 μm29,000
Pentium19930.8 μm3.1百万
Core i7201514 nm19亿
Core i9 / M320253 nm超过 1000 亿
晶体管越小 → 单位面积性能越高、功耗更低、频率更高。
第四、指令集扩展(从x86到x86-64)
现代CPU已不只是执行加法、跳转,而是具备通用“并行计算引擎”。
第五、从8086到现在的总结演化表
阶段技术特征关键创新
8086(1978)16位、5MHz、无缓存CISC基础
80386(1985)32位、分页、保护模式支持多任务OS
Pentium(1993)双发射、分支预测超标量结构
Core 2 Duo(2006)多核并行化起点
Core i系列(2010s)高速缓存、乱序、预测架构优化
M1/M3 / Ryzen(2020s)ARM / Chiplet、多级缓存、AI单元异构计算时代
第六、现代趋势
第七、总结一句话
计算机之所以越来越快,是因为:
这五本书构成了一条“计算机的生命线”:
[color=]电子信号 → 逻辑电路 → CPU结构 → 指令系统 → 汇编语言 → 程序运行。
如果你能真正学透它们,你就掌握了“计算机如何思考”的全过程。