i8***拆机

ysladmin 35 0

CPU的工作原理是什么?

CPU的原始工作模式

在了解CPU工作原理之前,我们先简单谈谈CPU是如何生产出来的。CPU是在特别纯净的硅材料上制造的。一个CPU芯片包含上百万个精巧的晶体管。人们在一块指甲盖大小的硅片上,用化学的方法蚀刻或光刻出晶体管。因此,从这个意义上说,CPU正是由晶体管组合而成的。简单而言,晶体管就是微型电子开关,它们是构建CPU的基石,你可以把一个晶体管当作一个电灯开关,它们有个操作位,分别代表两种状态:ON(开)和OFF(关)。这一开一关就相当于晶体管的连通与断开,而这两种状态正好与二进制中的基础状态“0”和“1”对应!这样,计算机就具备了处理信息的能力。

但你不要以为,只有简单的“0”和“1”两种状态的晶体管的原理很简单,其实它们的发展是经过科学家们多年的辛苦研究得来的。在晶体管之前,计算机依靠速度缓慢、低效率的真空电子管和机械开关来处理信息。后来,科研人员把两个晶体管放置到一个硅晶体中,这样便创作出第一个集成电路,再后来才有了微处理器。

i897拆机-第1张图片-模头数码科技网
(图片来源网络,侵删)

简单的晶体管组成的逻辑电路,逻辑电路课程上有几个晶体管组成与门,非门,多个与非门组成锁存器,多个锁存器组成存储器。关于计算方面其实把咱们的数学算法如加减乘除转化成逻辑运算的位运算,比如,与运算,或运算,等等。与运算就是串联电路,或运算就是并联电路,很好理解。加法器是有很多的与运算,或运算等等逻辑运算单元,乘法器也是类似。很多乘法器,加法器,除法器,浮点运算器,整数运算器等等共同组成了各种流水线。一条指令会被流水线上每个"成员"加工,最终输出数据。组成可以简单的这样表示:晶体管->与,非门->乘法,加法,除法器->运算单元->流水线->cpu。现在的CPU有几亿个晶体管组成,完成一个功能齐全的CPU。晶体管俗话就是二极管,三极管,这些晶体管只是逻辑作用所以可以做的很小,CPU流片有40nm工艺啥的指的就是晶体管做的大小,做的越小,同一块面积的CPU硅片就能装更多的晶体管,CPU性能越好。CPU感觉像很多工人拿算盘组成的工厂,晶体振荡器像一个喊口号的,当"晶振"喊一声,流水线上的"工人"一起动一下算盘,一个小CPU工厂有几亿甚至几十亿的"工人",他们一起工作,完成数据加工,这就是我理解的CPU。

这是一个需要很多个的硬件知识点才能在合理水平上理解的问题

画一个黑匣子,***设是CPU。
在高层次上,这个盒子只做两件事:

i897拆机-第2张图片-模头数码科技网
(图片来源网络,侵删)
  1. 它消耗投入。
  2. 它产生输出。

现在可以告诉这个盒子,“加1和2”。你给了它三个输入:

  1. 指令:“添加”
  2. 第一个操作数:“1”
  3. 第二个操作数:“2”

这个盒子会产生一个输出(在这种情况下,大概是3)。

如果你没有工程学位,或者你没有参加课程,这个框的组成可能超出了这个答案的范围。为了使其达到更高的水平,该盒子由门组成,可以允许电流流过,或者防止电流基于施加于其上的另一电压而流动。如果你想看到这些如何用来表达逻辑的例子,使用网上搜索“NMOS”,“PMOS”,“CMOS”,“CMOS图”,“XOR门结构”等必要的理论点

i897拆机-第3张图片-模头数码科技网
(图片来源网络,侵删)

然而,更重要一点,如果有足够的晶体管,可能会出现某些更复杂的结构和指令。例如,在可能存在于笔记本电脑内部的x86_64处理器中,那么就应该要说“将内存地址0x8***E82和内存地址0x8***EFA中的内容添加到内存中,而不是说”Add 1 and 2“导致内存地址为0x89B78C“。

那么在这里,给了它四个输入:

  1. 指令:“添加”
  2. 第一个操作数:“内存地址0x8***E82中的项目”
  3. 第二个操作数:“内存地址0x8***EFA中的项目”
  4. 结果如何处理:“将结果存储在内存地址0x89B78C中”

与大多数人想到计算机可视化的一般运动和总体画面虽然它们在硬件方面仍然非常复杂)相比,这些说明仍然非常简陋。

例如,如果我发送一条指令在某个内存地址上存储某个值(可能为0xFFFFFF),并且该内存地址对应某个显示输出那么我可能会无意中将屏幕上的某个像素变为白色或者其它颜色

CPU只是一个复杂的工具,可以将简单的输入变成简单的输出。但是,如果这些指令中有几条并行发生,并且每秒发生数十亿条指令,那么所有这些小的变化累积地形成了我们注意到并与之交互的宏观效果(以及许多您不知道的变化,正如我们使用电脑看***,打游戏)。

标签: i8***拆机