
事实上,现代 x86 处理器仍然支持与其祖先相同的操作系统和软件,这真是一项壮举。随着 1985 年 80386(后来的 386)CPU 的发布,大部分工作已经完成,它不仅是第一个 32 位 x86 CPU,而且还向后兼容 1970 年代的 8 位和 16 位软件。正如 [Ken Shirriff]最近对 80386 主寄存器文件的分析所显示的那样,使这项工作透明化绝非易事。
标记为 Intel 80386 die shot。 (来源:肯·谢里夫)
使用 386 寄存器和周围硅片的芯片照片,可以拼凑出如何实现向后兼容性。寄存器的存储单元通常使用静态存储器 (SRAM) 来实现,寄存器文件的大部分是三端口的(两个读,一个写)。
最有趣的是存在不同的电路 (6),以支持访问寄存器文件以进行 8 位、16 位或 32 位写入和读取。 [Ken] 所称的“shuffle”网络负责处理这些不同的写入和读取,这也导致我们发现寄存器中的底部 16 位实际上是交错的,以使该过程工作得更顺畅。
对于 Intel(和 AMD)工程师来说幸运的是,随着许多年后 AMD64 和 x86_64 的到来,这一壮举不必再次重演,那时 386 在 1 µm 工艺上仅有 275,000 个晶体管已经成为历史。
想要更深入地了解 386?这并不是[Ken] 第一次看到这款标志性芯片。
原文: https://hackaday.com/2025/05/05/the-convoluted-way-intels-386-implemented-its-registers/