我在维基百科上看到,x86_64 ISA(x86 指令集的 64 位版本)与为 x86 架构编写的软件向后兼容,这并不是因为模拟,而是因为它硬连线到芯片中。
由于完整的 x86 16 位和 32 位指令集仍在硬件中实现,无需任何中间模拟,因此现有的 x86 可执行文件运行时不会出现兼容性或性能损失,而重新编码以利用处理器设计的新功能的现有应用程序可能会实现性能提升。
我对 CPU 设计确实不太了解。但里面的一些晶体管是否只用于向后兼容?支持纯 64 位 ISA 的 CPU 是否会因为用于向后兼容的部分消失而留出更多空间?有这样的 CPU 吗?某处有 64 位 ISA 吗?也许有计划?
答案1
32 位时代早已过去。90 年代或 00 年代几乎所有的 ISA 扩展都是 64 位的,其中许多都支持在未来完全放弃对 32 位的支持。任何全新针对高性能计算的架构也是纯 64 位因为 32/64 位双支持主要是为了向后兼容 32 位程序,而这种架构中没有 32 位遗留二进制文件需要关心。以下是一些示例:
前进通讯,64 位高性能微处理器的开放标准指令集
RISC-V这是我们近年来听到最多的。从头开始的新指令集,可以是 64 位,也可以是 128 位
由于没有旧的 32 位代码,因此无需担心兼容性问题。实施者可以自由地包含对 RV32 和 RV64 的支持,但当没有人需要运行旧的 32 位代码时,可能没有人会为此浪费一些精力和解码器空间
厄尔布鲁士 2000可能是城里最新的一个,纯粹的64 位 VLIW像安腾
混合:也是纯 64 位
实际上AArch64 是从头开始重新设计的就像一个新的架构,与 32 位 ARM 没有任何相似之处,所以很明显他们认为对旧 ISA 的扩展不会像我们从 x86 中学到的那样具有可持续性。当一切都足够成熟时,新的 ISA 允许 ARM 轻松放弃旧 ISA。例如,ARMv8 仅允许 64 位实现Arm Cortex-A34是仅限 64 位低功耗核心, 和高通福克是专为云工作负载构建的 64 位 CPU. 如果 ARMv9 放弃 AArch32,那么这并不意外
也可以看看全新 64 位指令集只具有 64 位寄存器是否合理?无需关心向后兼容性
事实上,英特尔最近还提出全新简化的 64 位 x86S 架构
答案2
DEC Alpha 是一种真正的 64 位架构,在 20 世纪 90 年代取得了一定的成功。
Intel Itanium 的早期型号具有硬件 x86 模式,旨在简化转换。但由于它使用严格按序执行的 Itanium 管道,因此速度非常慢。当时可用的 x86 处理器(奔腾 III、奔腾 4 和 AMD Athlon)使用无序执行,运行 x86 代码的速度要快得多。Intel 发现可以使用动态二进制转换在 Itanium 上运行 x86 代码的速度比内置硬件快,因此在后来的型号中移除了该硬件,因此真正成为 64 位处理器。
目前可用的部分较新的 ARMv8 和大多数 ARMv9 应用程序配置文件核心均为 64 位,而且似乎未来的应用程序核心都将如此。运行 ARM32 和 Thumb 代码的能力在该领域的新设计中被忽略,以释放芯片空间来改善 ARM64 执行。