为什么 x86 不需要消亡

Hackaday 发表文章“Why x86 Needs to Die”,引发 RISC 与 CISC 之争。作者认为 RISC 与 CISC 之争应停止,其在很久以前就已无关紧要。

  • CISC 与 RISC:CISC 即复杂指令集计算机,70 年代 x86 指令集遵循此理念;RISC 即精简指令集计算机,80 年代 MIPS 和 ARM 遵循此理念,旨在用更简单指令使硬件设计更易,运行更快更高效。
  • 超流水线(Superscalar)与乱序执行(Out-of-order execution):超流水线 CPU 每时钟周期可执行多条指令,乱序执行 CPU 可内部按依赖准备执行指令,提高执行单元利用率和缓解缓存及内存延迟。
  • 不同 CPU 的微架构:AMD 的 Zen 4 和 Arm 的 Cortex X2 架构虽不同,但都使用超流水线、推测性、乱序执行及寄存器重命名,且都使用复杂多级缓存和预取器避免 DRAM 访问惩罚,这些与最大化性能有关,与指令集无关。
  • 解码指令:解码对 RISC 架构也昂贵,Arm 用微操作缓存和更长中间格式指令来减轻解码成本,x86 也采取措施,并非 x86 独有。
  • 指令集扩展:ARM 也有多次修订和扩展,x86-64 有 SSE 等向量扩展,64 位 ARM 有类似扩展,指令集更新与向量无关,更多晶体管可让工程师在硬件中做更多事。
  • x86 的mpsadbw指令:该指令做至少 19 次加法但只需 2 个时钟周期,作者认为其使寄存器重命名和指令调度更复杂,但实际并非如此,复杂指令可降低寄存器重命名和调度成本,处理等效简单指令序列需更多工作。
  • 指令集的演变:指令集已随现实变化,“CISC”和“RISC”标签仅反映指令集的起源,如今已无关紧要,应停止该争论。同时 x86 的实模式提供兼容性,使同一操作系统可在多种 CPU 上运行,而其他生态系统则缺乏此优势。
  • 历史回顾:RISC 与 CISC 之争每隔几年就会重新燃起,如 90 年代 Alpha 与 Intel 竞争,00 年代 Intel 尝试推动 x86 到一边的 Itanium 失败,10 年代 Marvell 和 Qualcomm 的服务器 CPU 也以失败告终,如今 aarch64 有更强软件生态和高性能 CPU 核心,可与 x86 竞争。
    最后作者希望有更多关于各种 CPU 设计优点的讨论,同时指出一些错误观点应被摒弃,并呼吁支持他们的工作。
阅读 12
0 条评论