计算机 7 层架构全解析:从硬联逻辑层到应用程序层,层层讲透

计算机分层?不就是软件+操作系统+一堆硬件么,这么说好像也对
但要装逼的话,你可以说有7层!,惊掉别人的下巴而且还一点没错
这怎么讲?
这事得从刘慈欣的《三体》中三体游戏片段说起:
在秦始皇时代,为了求解无规律的三体运动这一超级计算难题,游戏玩家“冯·诺依曼”提出用三千万名士兵组成一个巨大的人肉计算机。
基本原理是让一个或多个士兵组成一个门电路,一个士兵为非门,与门和或门需要三个士兵。士兵们手持黑白双色旗,代表“0”和“1”。通过鼓声和令旗传递。士兵根据规则举旗,(如看到特定颜色的旗帜组合则举起特定颜色的旗)改变自己的状态,相当于执行了基本的逻辑运算,最终通过阵列变换输出计算结果。
这不就完成了计算机的底层计算了么。
其中有个环节也让我很无语,一旦士兵判断出错,始皇帝直接杀头,用如此严格的纪律来保证运算的正确性,真够残暴的啊,但是人都会犯错误啊。

晶体管与硬联逻辑层
其实这里的士兵在计算机的CPU芯片里面就代表一个小小的晶体管,是物理上最小的结构,就像建房子的砖头一样,无数个晶体管组成了计算机体系的第0级——硬件逻辑层,这是整个计算的物理基础。
顺便说下世界上第一台通用电子计算机 ENIAC(爱尼阿克,1946年诞生)使用的是“晶体管”的祖先“真空管”(又称电子管),单个真空管的大小约和一个拇指或小灯泡相当,常见尺寸直径2-3厘米高5-8厘米。真空管能耗高,而且容易坏,确实像组成门电路的士兵一样,出错后只能被“干掉”。
ENIAC 诞生第二年贝尔实验室的肖克利、巴丁和布拉顿发明了点接触型晶体管,单个晶体管可以做到约1厘米见方的量级,在2020年芯片晶体管尺寸已达到几纳米的量级了,好比一个针尖大小的面积(约1平方毫米)内,可以塞进超过1亿个晶体管,台积电3纳米工艺的晶体管栅极长度仅约12-16纳米。
说了这么多数字,翻译过来就是1947年第一代晶体管是现代晶体管的10的7次方倍大。
简直可以用 “沧海一粟” 来形容。
摩尔定律还是很管用的,虽然现在不灵了。
硬联逻辑层官方定义为第0层,大概就是强调是物理基础吧,毕竟其它的都是“语言”层面的了。
7个层次
从应用语言转化为机器执行中间需要经过层层转换,最终落到硬件操作上,0和1不是终点。
第六层:应用程序层
为使计算机满足某种用途而专门设计的语言,因此这一级语言就是各种面向问题的应用语言,举个用商业数学软件MatLab的语言用来画圆的命令你就明白了:
matlab% 绘制一个以 (2,3) 为中心,半径为 1 的圆rectangle('Position', [2-1, 3-1, 2, 2], 'Curvature', [1, 1]);axis equal; % 确保显示为圆形而不是椭圆形
MatLab语言就是专用的应用语言。
第五层:高级语言层
软件应用一般是程序员们用 Python、Java、C++ 等高级语言 写成,为什么高级,因为语法接近人类语言,而人是高级动物,所以.......
比如Word软件上点击“保存”按钮时,程序执行的是类似 saveFile() 这样的高级指令。只描述“做什么”(方法名),而不关心具体“如何做”(把数据写到硬件里面)。正有因为有了高级语言写程序才不会这么费劲,总不可能让我们程序员写0101吧。
第四层:汇编语言层
其实在高级语言被转为0101前,为了被机器更好的理解,高级语言程序首先被 编译程序 翻译成 汇编语言。
相当于先翻译成机器指令,比如使用 MOV(传送数据)、ADD(加法)、CALL(调用子程序)等简短符号,比二进制代码更容易理解些,相当于编剧制作的剧本。
第三层:操作系统层(系统协调层)
当好戏开场的时候(编译好的程序开始运行时),我们的导演——操作系统(比如如 Windows、macOS、Linux)会成为总协调者。它负责:
汇编程序会把汇编语言的符号指令(比如MOV AX, 0),转换成对应 CPU 的机器指令(二进制 0 和 1)
机器语言层是软件与硬件的边界层。从机器语言到硬件执行这下清楚了,下面我们要从上往下说说应用程序执行的命令是怎么变成0和1的。
第二层:机器语言层
在微程序之上就是 CPU(中央处理器) 能直接“听懂”的唯一语言——0 和 1 组成的二进制代码,对应着 CPU 架构(如 x86、ARM)的 指令集。每条指令执行一个最基本操作,如“从内存地址 0x1000 加载数据到寄存器”。
第一层:微程序层
在硬联逻辑层之上是由程序员用微指令编写的微程序层,也就是小说中鼓声和令旗:
命令通过鼓声和令旗传递。士兵根据规则(如看到特定颜色的旗帜组合则举起特定颜色的旗)改变自己的状态,相当于执行了基本的逻辑运算,微程序由硬件直接执行。
各层协同工作流程举例
当你在电脑上用计算器进行加法运行时,指令执行流程如下:
应用语言级
按“=”钮点击被识别为“两个数字相加”的应用级指令。
高级语言级
识别为求解1 + 2的结果表达语言,调用接口方法。
汇编语言级
编译器将其翻译成类似 ADD R1, 1, 2 的汇编指令(将1和2相加,结果存入寄存器R1中)。
操作系统级
操作系统调度该程序获得CPU时间片,执行操作指令。
传统机器级(机器语言)
CPU取到 ADD 指令对应的二进制机器码(比如 10110001...)。
微程序级
CPU内控制器将这条 ADD 指令分解为微指令序列:取数1 -> 取数2 -> 送入ALU(算术逻辑单元) -> 执行加法 -> 存回结果。
硬联逻辑级
在晶体管级别,输入电压的组合会导致一系列晶体管开关状态的连锁反应,这个反应路径是物理设计好的,其最终稳定后的输出端电压模式是代表“3”(二进制11)的电信号。
恭喜你,了解了从应用操作到底层执行的整个流程。
怎么样,是不是搞懂后台是怎么运行的也没那么难。
简单来讲计算机无论多么复杂的操作,经过层层转换后其底层都是由无数简单的、遵循固定规则的基本单元(门电路)组成。
本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。



