如果開發了一個作業系統,例如“Linux”,對於不同的微架構(Intel Pentium 和 AMD Athlon),其需要(分析)的編寫方式是否會略有不同?
我從堆疊交換線程之一看到 AMD x64 的 Linux 二進位檔案也可以在 Intel x64 架構上運行 在此輸入連結描述
也就是說,儘管 Intel Pentium 和 AMD Athlon 共享相同的 ISA (x86),但它們不應該有不同的 Linux 原始碼嗎?原因是他們的 ISA 實作會有所不同,使用不同的控制和資料暫存器集!
答案1
我無法理解這個概念的核心,但收集了足夠的資訊來說服自己,作業系統是基於 ISA(例如:x86 和 x64)而不是微體系結構(Intel Pentium 和 AMD Athlon)而有所不同。
一個簡單的比喻是—
ISA就好像C語言; “標準”,做某事必須遵循的標準。
然而微架構就好像C編譯器;執行這些規則或標準的「實施」。
取自維基百科 -微架構
給定的 ISA 可以用不同的微架構來實現;由於給定設計的不同目標或技術的變化,實施可能會有所不同。
ISA 與組合語言程式設計師或編譯器編寫者所看到的處理器程式設計模型大致相同。ISA 包括執行模型、處理器暫存器、位址和資料格式等。微體系結構包括處理器的組成部分以及這些組成部分如何互連和互操作以實現 ISA。
具有不同微架構的機器可能具有相同的指令集架構,因此能夠執行相同的程式。新的微架構和/或電路解決方案以及半導體製造的進步使得新一代處理器能夠在使用相同的 ISA 的同時實現更高的性能。
區分不同微架構但仍實現相同 ISA 的因素有:
執行單元對於微架構也至關重要。執行單元包括算術邏輯單元 (ALU)、浮點單元 (FPU)、載入/儲存單元、分支預測和 SIMD。這些單元執行處理器的操作或計算。執行單元數量、延遲和吞吐量的選擇是微架構設計的核心任務。系統內記憶體的大小、延遲、吞吐量和連接性也是微架構決策。
系統級設計決策(例如是否包含記憶體控制器等周邊)可以被視為微架構設計過程的一部分。這包括有關這些週邊設備的性能等級和連接性的決策。