启闳半导体科技(江苏)有限公司QiHong Semicon TECHNOLOGY (JIANGSU) CO.,LTD
因为 Dojo 的本地 SRAM 块不是缓存,所以它不需要与数据一起存储的标记和状态位。SRAM 前面也没有 L1D 缓存,因此它必须足够快以处理所有加载和存储指令而不会造成瓶颈,即使它的大小更接近 L2 缓存。不将 SRAM 实现为缓存可能是特斯拉保持低延迟的方式。如果我们回顾很久以前的 AMD 的 Hammer 架构,我们可以看到在检测到 L1D 未命中后访问 1 MB L2 需要 8 个周期(总延迟为 12 个周期)。如果直接寻址 1 MB 的 SRAM 而不是用作缓存,则可能会删除三个阶段,从而将延迟降低到 5 个周期:
来自较早的 Hot Chips 演示文稿的幻灯片,显示了 L2 缓存访问所涉及的pipeline阶段。如果 L2 不是缓存,则可以跳过的阶段标记为红色。
考虑到几十年的工艺节点改进,甚至比 Athlon 更低的时钟速度目标,很容易看出特斯拉如何以类似 L1 的延迟访问 L2 大小的 SRAM 块。跳过一级缓存当然可以节省面积和功耗。
为了进一步减少延迟、面积和核心复杂性,Dojo 没有虚拟内存支持。因此,它没有 TLB 或页面遍历机制(page walk mechanisms)。现代操作系统利用虚拟内存为每个进程提供自己的内存视图。程序使用的内存地址不是直接访问物理内存地址,而是由 CPU 使用操作系统设置的分页结构转换为物理地址。这就是现代操作系统如何使程序相互隔离,并防止一个行为不端的应用程序导致整个系统瘫痪。
虚拟内存也是您可以运行比物理内存更多的程序的方式。当您用完实际内存时,操作系统会取消映射页面,将其写入磁盘,并为您的程序提供所需的内存。当其他糟糕的程序尝试访问该内存时,CPU 会尝试将虚拟地址转换为物理地址,但发现转换不存在。CPU 抛出一个页面错误异常,操作系统通过将被驱逐的页面读回物理内存并填写页表条目来处理该异常。
在 Dojo 上这些都不可行。内核的 4 路 SMT 功能更多的是让单个应用程序公开显式并行性,而不是提高多任务处理性能。例如,一个线程可以执行向量计算,而另一个线程将数据从系统内存异步加载到 SRAM(通过 DMA)。
为了进一步简化设计,Dojo 可以只用 21 个地址位寻址 SRAM,这可以简化 Dojo 的 AGU 和寻址总线。这些权衡可能让特斯拉以足够低的延迟访问该 SRAM,以避免在其前面实现单独的 L1 数据缓存。