半导体行业观察@这篇说得最详细,关于CPU科普( 四 )


走向多核
最后要介绍的主要功能是如何将一堆单独的CPU连接在一起以形成多核CPU 。 这不只是简单地放入我们之前讨论的单核设计的多个副本那样简单 。 就像没有简单的方法将单线程程序转换为多线程程序一样 , 相同的概念也适用于硬件 。 问题来自核心之间的依赖性 。
例如 , 对于4核设计 , CPU需要能够以4倍的速度发出指令 。 它还需要四个单独的内存接口 。 由于多个实体可能会处理相同的数据 , 因此必须解决诸如一致性和非一致性之类的问题 。 如果两个内核都使用相同的数据来处理指令 , 那么他们如何知道谁拥有正确的价值?如果一个内核修改了数据但又没有及时到达另一个内核执行该怎么办?由于它们具有可存储重叠数据的单独缓存 , 因此必须使用复杂的算法和控制器来消除这些冲突 。
随着CPU中内核数量的增加 , 正确的分支预测也非常重要 。 内核一次执行的指令越多 , 其中一个处理分支指令的可能性就越高 。 这意味着指令流可能随时更改 。
通常 , 单独的内核将处理来自不同线程的指令流 。 这有助于减少内核之间的依赖性 。 这就是为什么如果您检查“任务管理器” , 您会经常看到一个核心在努力工作 , 而其他核心却在工作 。 许多程序不是为多线程设计的 。 在某些情况下 , 让一个核心来完成工作比支付试图分工的开销要高得多 。
物理设计
本文的大部分内容都集中在CPU的体系结构设计上 , 因为这是大多数复杂性所在 。 但是 , 所有这些都需要在现实世界中创建 , 这又增加了另一层次的复杂性 。
为了使整个处理器中的所有组件同步 , 使用了时钟信号 。 现代处理器通常在3.0GHz和5.0GHz之间运行 , 并且在过去十年中似乎没有改变 。 在每个周期中 , 芯片内部数十亿个晶体管处于导通和截止状态 。
时钟对于确保在流水线的每个阶段前进时 , 所有值在正确的时间显示都是至关重要的 。 时钟确定CPU每秒可以处理多少条指令 。 通过超频提高其频率将使芯片速度更快 , 但也会增加功耗和热量输出 。
半导体行业观察@这篇说得最详细,关于CPU科普
文章图片
热量是CPU的最大敌人 。 随着数字电子设备的升温 , 微观晶体管可能开始退化 。 如果不清除热量 , 可能会导致芯片损坏 。 这就是为什么所有CPU都带有散热器的原因 。 CPU的实际硅芯片可能仅占物理设备表面积的20% 。 占用空间的增加允许热量更均匀地散布到散热器 。 它还允许更多的引脚用于与外部组件的接口 。
现代CPU的背面可以有数千个或更多的输入和输出引脚 。 由于大多数计算部件都在芯片内 , 因此移动芯片可能只有几百个引脚 。 不管采用哪种设计 , 其中约有一半专门用于供电 , 其余用于数据通信 。 这包括与RAM , 芯片组 , 存储 , PCIe设备等的通信 。
随着高性能CPU在满负载下汲取100安培或更高的电流 , 它们需要数百个引脚才能平均分散电流消耗 。 引脚通常镀金以提高导电性 。 不同的制造商在其许多产品线中使用不同的销钉布置 。
结合一个例子
总结一下 , 我们将快速介绍一下IntelCore2CPU的设计 。 这是从2006年开始的 , 因此某些零件可能已过时 , 但是尚无有关较新设计的详细信息 。
从顶部开始 , 我们有指令缓存和ITLB 。 转换后备缓冲区(TLB)用于帮助CPU知道存储器中要查找所需指令的位置 。 这些指令存储在L1指令缓存中 , 然后发送到预解码器中 。 x86体系结构极其复杂且密集 , 因此有许多解码步骤 。 同时 , 分支预测器和预取器都在期待由传入指令引起的任何潜在问题 。
半导体行业观察@这篇说得最详细,关于CPU科普
文章图片
从那里 , 指令被发送到指令队列 。 回顾一下无序设计如何使CPU执行指令并选择最及时的指令来执行 。 该队列保存CPU正在考虑的当前指令 。 一旦CPU知道哪一条指令将是最佳执行方式 , 它将进一步解码为微操作 。 虽然一条指令可能包含CPU的复杂任务 , 但微操作是精细的任务 , CPU可以更轻松地对其进行解释 。


推荐阅读