处理器的设计流程
生活中的一切都遵循一种方法论,尤其是为了开发新产品。它由一系列协议组成,旨在在最短的精确时间内达到明确的结果。CPU的设计与此并不陌生,这就是为什么我们要描述设计 CPU 时遵循的不同阶段的原因。
如果我们将几年前的 CPU 与新的 CPU 一起购买,乍一看它们看起来是一样的,但事实并非如此,新设计的更大复杂性需要更长的工作时间,因此更多合格的投入。确实,每个新的制造节点都允许容纳更多的晶体管,但这也涉及更多的工作,并且鉴于开发时间是无情的,新设计的设计必须遵循一系列有序的阶段。
一切从选择制造节点开始
第一阶段不是由工程师完成,而是由管理人员执行,他们与不同的代工厂协商数百万美元的合同,并对生产水平和成本做出不同的预测。
制造节点的规格和成本将决定架构师创建芯片的面积、晶体管数量的预算以及创建新 CPU 设计所需的开发时间。
下面是一个大纲的实现:
布局规划只不过是一种方案,其中我们指示构成 CPU 的一般基本元素,以便在空间中对它们进行排序。对于一般元素,我们不是在谈论将 CPU 核心放在此处、将缓存放在此处、将 GPU 放在此处等。
但我们指的是更多基本元素,例如组合电路,例如多路复用器、不同类型的逻辑门、ALU、内存缓冲区等。这样做是因为硬件描述语言要求指定不同元素之间的互连,因此必须拿笔和纸,一张巨大的纸来互连方案中的不同元素。
创建的第一个图不是最后一个,但它用于将 CPU 的不同模块组织成两种类型的块:
前者被称为固定块,它们包括不会经历设计变化的元素,并且由于它们的性质允许,它们的面积将保持静止。
另一方面,通用块是将要改变的部分,特别是因为与芯片其他部分的交互需要它,或者仅仅是因为他们还不知道最终版本中将实施什么设计。
如果处理器的布局规划设计中有足够的空间来改进某些元素,则会寻求为这些部分集成更先进的解决方案,这些部分正在并行开发中,我们将在下一节中看到。
CPU 的第三个设计阶段:ISA 的定义
下一阶段是定义要使用的寄存器和指令集,在这些代代相传的 CPU 的情况下,实现可能看起来很容易,但是添加新的指令和寄存器带来了它重组本身就足够复杂的事物。
在 GPU 中则不同,它们不运行程序,每一代都意味着能够以更通用的方式改变其着色器单元的 ISA 的性质。所以如果需要删除指令是可以的,但在CPU中不行,删除一条指令或者一个寄存器就是破坏了与软件的兼容性。
在任何类型的处理器的设计中,负责处理通常大小可变的数据的部分以及最终要经历这个设计阶段的部分。
CPU 设计阶段的第 4 阶段:在 FPGA 中进行测试
不,我们还没有到最后阶段,但有必要证明设计是功能性的,为此,FPGA 板通常以巨大的矩阵相互连接。每个 FPGA 都经过编程或配置,作为我们正在设计的 CPU 或 GPU 整体设计的一个元件。
这里的想法不是获得全速,而是通过慢动作检查设计是否有效。因此,我们将拥有比最终处理器高得多的延迟和低得多的速度,但我们感兴趣的是所有元件都能正常工作。
CPU的第五个设计阶段:I/O、电源和时钟
第四阶段已经包括芯片的创建是创建最终的芯片,但我们发现自己有输入问题,一方面需要设计电路中的能量分布,另一方面是时钟的能量分布信号,其中一些将来自将被细分的主时钟,而另一些将拥有自己的时钟。
你要做的是将我们在上一节中看到的平面图用一个正方形或长方形包围起来,分成多个象限。在象限的外部,它被分配了一个特定的能量或 I/O 功能。在这里设计了芯片的周边,并标记了与外围设备和存储器的不同通信接口的位置。
在这个阶段,如果不同元件的设计允许达到预期的时钟速度,所有关于电能分配的文档也将被检查。
处理器验证
在设计之后是相同的验证。其中完成的设计由一个完全不同的团队验证,该团队在其可能存在的物理层面上寻找设计缺陷。验证团队的知识与设计的知识完全不同。
这样做的原因是它们涉及非常不同的分支,并且验证团队更专注于检测和纠正 CPU 物理实现中发生的错误,而不是其架构中发生的错误,而架构不会改变原点。与建筑世界类似的是一群工人和承包商,他们制作房屋或建筑物的原型并检测影响最终设计性能且在模拟中不可见的错误。