从沙子到CPU——计算机硬件基础入门最近在看一些计算机底层的知识发现一个问题我们每天写Java代码跑在JVM上但很少去想下面到底发生了什么。直到有一天看到一个关于CPU制作的纪录片才突然意识到——原来我们写的每一行代码最终都是被一堆沙子变出来的东西在执行。这篇文章就来聊聊计算机硬件的那些事儿。一、CPU是怎么做出来的你可能觉得CPU是个很高大上的东西但说出来你可能不信——它的原材料就是沙子。1.1 从沙子到硅锭CPU的核心材料是硅Si而硅是从沙子二氧化硅SiO₂中提炼出来的。整个过程大致是这样的沙子 → 脱氧 → 石英 → 二氧化硅 → 提纯 → 硅锭 → 切割 → 晶圆硅锭就像一根巨大的香肠纯度高达99.999999999%11个9。然后把它切成薄片就是晶圆Wafer。1.2 光刻与蚀刻晶圆做好后接下来就是最关键的步骤——光刻涂抹光刻胶在晶圆表面涂一层感光材料光刻用紫外线通过掩膜版照射把电路图案印到晶圆上蚀刻把没有被光刻胶保护的部分腐蚀掉清除光刻胶把感光材料洗掉电镀在蚀刻出的沟槽里镀上铜抛光把表面磨平这个过程要重复很多次一层一层地构建出复杂的电路结构。1.3 从晶体管到逻辑门CPU内部最基本的元件是晶体管。晶体管的工作原理可以用一个简单的比喻来理解晶体管就像一个水龙头。栅极Gate是把手源极Source是进水口漏极Drain是出水口。把手打开水就流过去了把手关上水就停了。用电信号来说就是栅极有电压电流就通过表示1栅极没电压电流就截止表示0。有了晶体管就可以搭建逻辑门了逻辑门功能电路符号与门AND两个输入都是1输出才是1A B或门OR只要有一个输入是1输出就是1A | B非门NOT输入1输出0输入0输出1~A或非门NOR或门非门~(A | B)异或门XOR两个输入不同输出1A ^ B这些逻辑门是计算机的原子所有的计算都可以用它们组合出来。1.4 从逻辑门到计算机有了逻辑门就可以搭建更复杂的电路逻辑门 → 加法器 → 累加器 → 锁存器 → 实现手动计算最开始的计算机确实是手动的——通电一次运行一次位运算。后来加入了内存实现了自动运算每次从内存读取指令执行再读取下一条指令。二、汇编语言CPU的方言2.1 机器语言与汇编CPU只认识0和1这就是机器语言。比如01000010 // 这是一条指令 10110011 // 这是另一条指令但人脑记不住这些啊所以就有了汇编语言——用助记符来代替二进制mov eax, 1 ; 把1放到eax寄存器 add eax, 2 ; eax eax 2汇编的本质就是助记符它和机器语言是一一对应的。2.2 从高级语言到机器语言我们写的Java代码最终要经过这样的转换Java源码 → 编译器 → 字节码 → JVM解释/JIT编译 → 机器语言 → CPU执行而C语言更直接C源码 → 编译器 → 机器语言 → CPU执行三、计算机的执行过程3.1 通电后的发生了什么计算机通电后执行过程是这样的时钟发生器不断震荡通断电推动CPU内部一步一步执行CPU从内存中读取指令执行指令需要多少个时钟周期取决于指令的复杂度计算完成后把结果写回内存如果需要显示把数据写给显卡输出这个过程就像一个永不停歇的取指-执行循环。3.2 时钟周期时钟周期是CPU执行操作的最小时间单位。现代CPU的主频动辄几GHz意味着每秒可以执行几十亿个时钟周期。但要注意一条指令可能需要多个时钟周期才能完成。比如简单的寄存器操作1个周期内存读取可能需要几十个周期浮点运算可能需要几个周期四、量子计算机未来的方向4.1 经典计算机的局限经典计算机用比特bit表示信息一个比特要么是0要么是1。4.2 量子比特的魔力量子计算机用量子比特qubit它可以同时表示0和1|ψ⟩ α|0⟩ β|1⟩这意味着1个量子比特可以同时表示2个状态2个量子比特可以同时表示4个状态n个量子比特可以同时表示2^n个状态比如你要猜一个18位的数经典计算机最多只能一个一个猜而量子计算机可以同时暴力测试2^18约26万个数。这就是为什么量子计算机在密码学领域有巨大的威胁——很多密码算法的安全性是建立在无法短时间穷举密钥这个假设上的。五、总结这篇文章我们从最基础的硬件开始了解了CPU的制作过程从沙子到硅锭再到光刻蚀刻晶体管和逻辑门计算机的原子汇编语言CPU的方言计算机的执行过程取指-执行的循环量子计算机未来的发展方向下一篇我们会深入探讨CPU和内存的交互聊聊缓存、超线程这些对Java程序员特别重要的知识。参考资料《编码隐匿在计算机软硬件背后的语言》《深入理解计算机系统》
从沙子到CPU——计算机硬件基础入门
从沙子到CPU——计算机硬件基础入门最近在看一些计算机底层的知识发现一个问题我们每天写Java代码跑在JVM上但很少去想下面到底发生了什么。直到有一天看到一个关于CPU制作的纪录片才突然意识到——原来我们写的每一行代码最终都是被一堆沙子变出来的东西在执行。这篇文章就来聊聊计算机硬件的那些事儿。一、CPU是怎么做出来的你可能觉得CPU是个很高大上的东西但说出来你可能不信——它的原材料就是沙子。1.1 从沙子到硅锭CPU的核心材料是硅Si而硅是从沙子二氧化硅SiO₂中提炼出来的。整个过程大致是这样的沙子 → 脱氧 → 石英 → 二氧化硅 → 提纯 → 硅锭 → 切割 → 晶圆硅锭就像一根巨大的香肠纯度高达99.999999999%11个9。然后把它切成薄片就是晶圆Wafer。1.2 光刻与蚀刻晶圆做好后接下来就是最关键的步骤——光刻涂抹光刻胶在晶圆表面涂一层感光材料光刻用紫外线通过掩膜版照射把电路图案印到晶圆上蚀刻把没有被光刻胶保护的部分腐蚀掉清除光刻胶把感光材料洗掉电镀在蚀刻出的沟槽里镀上铜抛光把表面磨平这个过程要重复很多次一层一层地构建出复杂的电路结构。1.3 从晶体管到逻辑门CPU内部最基本的元件是晶体管。晶体管的工作原理可以用一个简单的比喻来理解晶体管就像一个水龙头。栅极Gate是把手源极Source是进水口漏极Drain是出水口。把手打开水就流过去了把手关上水就停了。用电信号来说就是栅极有电压电流就通过表示1栅极没电压电流就截止表示0。有了晶体管就可以搭建逻辑门了逻辑门功能电路符号与门AND两个输入都是1输出才是1A B或门OR只要有一个输入是1输出就是1A | B非门NOT输入1输出0输入0输出1~A或非门NOR或门非门~(A | B)异或门XOR两个输入不同输出1A ^ B这些逻辑门是计算机的原子所有的计算都可以用它们组合出来。1.4 从逻辑门到计算机有了逻辑门就可以搭建更复杂的电路逻辑门 → 加法器 → 累加器 → 锁存器 → 实现手动计算最开始的计算机确实是手动的——通电一次运行一次位运算。后来加入了内存实现了自动运算每次从内存读取指令执行再读取下一条指令。二、汇编语言CPU的方言2.1 机器语言与汇编CPU只认识0和1这就是机器语言。比如01000010 // 这是一条指令 10110011 // 这是另一条指令但人脑记不住这些啊所以就有了汇编语言——用助记符来代替二进制mov eax, 1 ; 把1放到eax寄存器 add eax, 2 ; eax eax 2汇编的本质就是助记符它和机器语言是一一对应的。2.2 从高级语言到机器语言我们写的Java代码最终要经过这样的转换Java源码 → 编译器 → 字节码 → JVM解释/JIT编译 → 机器语言 → CPU执行而C语言更直接C源码 → 编译器 → 机器语言 → CPU执行三、计算机的执行过程3.1 通电后的发生了什么计算机通电后执行过程是这样的时钟发生器不断震荡通断电推动CPU内部一步一步执行CPU从内存中读取指令执行指令需要多少个时钟周期取决于指令的复杂度计算完成后把结果写回内存如果需要显示把数据写给显卡输出这个过程就像一个永不停歇的取指-执行循环。3.2 时钟周期时钟周期是CPU执行操作的最小时间单位。现代CPU的主频动辄几GHz意味着每秒可以执行几十亿个时钟周期。但要注意一条指令可能需要多个时钟周期才能完成。比如简单的寄存器操作1个周期内存读取可能需要几十个周期浮点运算可能需要几个周期四、量子计算机未来的方向4.1 经典计算机的局限经典计算机用比特bit表示信息一个比特要么是0要么是1。4.2 量子比特的魔力量子计算机用量子比特qubit它可以同时表示0和1|ψ⟩ α|0⟩ β|1⟩这意味着1个量子比特可以同时表示2个状态2个量子比特可以同时表示4个状态n个量子比特可以同时表示2^n个状态比如你要猜一个18位的数经典计算机最多只能一个一个猜而量子计算机可以同时暴力测试2^18约26万个数。这就是为什么量子计算机在密码学领域有巨大的威胁——很多密码算法的安全性是建立在无法短时间穷举密钥这个假设上的。五、总结这篇文章我们从最基础的硬件开始了解了CPU的制作过程从沙子到硅锭再到光刻蚀刻晶体管和逻辑门计算机的原子汇编语言CPU的方言计算机的执行过程取指-执行的循环量子计算机未来的发展方向下一篇我们会深入探讨CPU和内存的交互聊聊缓存、超线程这些对Java程序员特别重要的知识。参考资料《编码隐匿在计算机软硬件背后的语言》《深入理解计算机系统》