计算机是如何执行运算的呢?在之前的一篇分享中|计算机中的计算机是如何运行的?( 二 )


在以下示例中 , 我们会使用8位的EDB来进行说明 , 即一次发送1个字节(byte)(=8位bit) 。 假设CPU正在接收一个字节的数据 , 其内部有一些被称为寄存器的组件 , 让我们存储CPU处理的数据 。 例如 , 如果我们的CPU想要执行两个数字相加的运算 , 那么一个数字将存储在寄存器a中 , 另一个数字则存储在寄存器b中 , 而这两个数字相加的结果将存储在寄存器c中 。 这些寄存器相当于厨师的工作台 , 有此工作台厨师也就可以进行烹饪了 。 此时 , 厨师会使用翻译参考书将二进制文件翻译成能读懂的可执行的任务 。
计算机是如何执行运算的呢?在之前的一篇分享中|计算机中的计算机是如何运行的?
文章图片
程序被复制到RAM中供CPU读取 , RAM是随机访问的内存 , 允许CPU像读取任何其他部分一样快速地读取RAM的任何部分 。 我们实际上并没有通过EDB从RAM发送数据 。 RAM可以存储数百万甚至数十亿行数据 。 尽管我们有上述提到的简单的三明治例子 , 但大多数“食谱”一点也不简单 。 计算机中的程序可能有数千行 。 在处理它们时 , 实际上并没有按照任何特定的顺序进行 。 由于一次只能通过EDB发送一行数据 , 我们需要另一个部件的帮助 , 即内存控制器芯片(MCC:MemoryControllerChip) 。
MCC是CPU和RAM之间的桥梁 。 我们可以把它想象成大脑中连接记忆的神经 。 CPU对MCC发出请求:我需要这个食谱的第三步说明 。 MCC在RAM中找到第三步的指令 , 获取数据 , 并通过EDB发送 。 在此过程中 , 还涉及到另一总线 , 即地址总线(AddressBus) , 连通CPU和MCC , 发送数据的位置 , 但不发送数据本身 。 MCC在获取地址后进行数据的查找 , 再通过EDB发送数据 。
计算机是如何执行运算的呢?在之前的一篇分享中|计算机中的计算机是如何运行的?
文章图片
然而 , RAM并不是将更多数据传输到CPU进行处理的最快方式 。 CPU还使用了所谓的缓存(Cache) 。
缓存比RAM还小 , 但它让我们可以存储经常使用的数据 , 并快速引用它 。 在RAM这一装满了食物的大冰箱里 , 进去很容易 , 但要想把东西弄出来需要时间 。 而缓存就像我们口袋里的东西 , 用于存储最近或频繁访问的数据 。 CPU中有三种不同的缓存级别:L1、L2和L3 。 L1是最小、最快的缓存 。
计算机是如何执行运算的呢?在之前的一篇分享中|计算机中的计算机是如何运行的?
文章图片
现在我们明白了RAM是如何与CPU交互的 。 但CPU如何知道指令集何时结束 , 新的指令集何时开始呢?CPU有一个内部时钟 , 使其运行保持同步 , 它连接到一根叫做时钟线(Clockwire)的特殊电线上 。 当发送或接收数据时 , 它会向时钟线发送一个电压 , 让CPU知道可以开始进行运算 。 时钟每个滴答声的起落 , CPU就执行一个操作周期 。 当向时钟线发送电压时 , 我们称之为时钟周期 。 若在某个命令中有大量数据需要处理 , 则需要运行很多时钟周期 。
计算机是如何执行运算的呢?在之前的一篇分享中|计算机中的计算机是如何运行的?
文章图片
你是否在CPU上看到过这样的标签:3.4GHZ , 这个数字指的是CPU的时钟速度 , 在一个特定时间段内 , 它可以在一个集合中处理的最大时钟周期数 。 3.40GHZ是每秒34亿个周期 , 这代表CPU能以这种速度运行 , 但并不意味着实际上按此速度工作 , 而是指它的速度不能超过此数字 。 尽管如此 , 这个数字并不能阻止一些人尝试 。 有一种方法可以在几乎任何设备上超过CPU上的时钟周期数 , 称之为超频 , 它会增加CPU时钟周期的速率 , 以便执行更多任务 。 这通常用于提高低端CPU的性能 。 一个游戏玩家想在游戏中有更好的图像和更少的延迟 , 在玩游戏时会使CPU超频 , 但这样做也有缺点 , 比如CPU可能过热 。