​启闳半导体科技(江苏)有限公司QiHong Semicon TECHNOLOGY (JIANGSU) CO.,LTD

电子邮箱  
密码      忘记密码?
  注册
特斯拉自研芯片架构带来的启示
来源:半导体行业观察 | 作者:半导体行业观察 | 发布时间: 2022-09-05 | 1232 次浏览 | 分享到:


Dojo 在几个重要方面有所不同。由于 Dojo 在设计时并未考虑小规模部署,因此主机处理器驻留在单独的主机系统上。这些主机系统具有带接口处理器的 PCIe 卡,然后通过高速网络链路连接到 Dojo 芯片。相比之下,Cell 的主处理器驻留在同一个芯片上。这使得单独部署单个 Cell 芯片成为可能——这在 Dojo 中是不可能的。Dojo 的 1.25 MB 本地块是 SRAM,它比只有 256 KB SRAM 的 Cell SPE 大得多,带宽也更高。Cell 的 256 KB SRAM 只有一个端口,每个周期能够提供 128B。Dojo 的 SRAM 有五个 64B 端口。当然,架构目标是非常不同的。Dojo 是宽时钟和低时钟,而 Cell SPE 具有专为高时钟设计的窄而深的pipelines。


图片
图片

前端:CPU Comforts等

图片
图片


让我们从前端开始简要介绍一下 Dojo 的pipelines。有某种分支预测器,因为特斯拉的图表显示了 BTB(branch target buffer:分支目标缓冲区)。它的预测能力可能无法达到我们在 AMD、ARM 和 Intel 的高性能内核上看到的水平,因为 Dojo 需要优先考虑在矢量执行上花费裸片区域。但即使是一个基本的分支预测器也比没有预测器有了很大的进步,Dojo 的分支预测能力在处理分支代码或更大的指令占用空间时应该比 GPU 提供更好的性能。

 

一旦分支预测器生成了下一条指令提取指针,Dojo 可以每个周期从“小”指令缓存中提取 32 个字节到每个线程的提取缓冲区中(per-thread fetch buffers)。该指令缓存可能有助于降低本地 SRAM 的指令带宽压力,确保数据端可以访问 SRAM 时尽可能少地争用。此外,指令高速缓存不连贯。如果将新代码加载到本地 SRAM 中,则必须在分支到该新代码之前刷新指令缓存。


来自特斯拉的 Hot Chips 演示文稿


从提取缓冲区中,Dojo 的解码器每个周期可以处理来自两个线程的八条指令。我对“每个周期两个线程”的含义有点困惑,因为具有 SMT 的 CPU 通常每个周期处理一个线程并在周期边界上切换线程。也许 Dojo 将解码器分成两个集群,并选择两个线程在每个循环中为它们提供数据。这可能会减少所采用分支的解码吞吐量损失。

 

在解码时,某些指令(如branches, predicated operations和immediate loads (“list parsing”) )可以在前端执行并从pipeline中删除。这有点像更新的 x86 CPU 在重命名器(renamer)中消除了寄存器到寄存器的副本。但是您没听错——Dojo 不会通过pipeline跟踪“已消除”的指令以维持in-order retirement。其他处理器跟踪所有内容以退出,以便它们可以在任何指令边界处停止,并保持恢复执行所需的所有状态。这种能力被称为“precise exceptions”,现代操作系统使用它来提供各种好东西,比如paging to disk,或者告诉你你的代码到底在哪里搞砸了。