[英]What's the motivation for a fpu to implement their registers in stack-based fashion?
fpu以基於堆棧的方式實現寄存器的動機是什么? 據我所知,其他指令集如x86 / sse使用命名寄存器。 我可以想象基於堆棧的屬性通常與我們的函數思想相對應,從而為匯編程序員提供了更直觀的設計。
然而,我很好奇是否有一些更有形的動機,即技術優勢。
這些架構現在不再在現場看到。 盡管如此,寄存器和程序代碼空間的硅空間都是稀有資源(現在在嵌入式環境中仍然如此)。 這幾乎總結了這種架構背后的兩個動機:
這個問題只能由最初的8087本人W Kahan的設計師真實地回答,他在一篇名為“關於8087疊加的優勢”的簡短論文中寫到了這個問題。
從那里:
這主要僅適用於x86,因為ARM和PowerPC以及MIPS和Sparc都不會將其FPU實現為基於堆棧的計算機。
現在我們已將其縮小到x86,原因很明顯。 像計算中的許多其他東西一樣歸結為歷史原因(有些人稱之為歇斯底里的葡萄干,因為真正的原因並沒有真正意義)。
歷史原因是x86架構沒有FPU。 現在,我知道你會說“但看看Pentiums!”。 是的,他們有FPU,但IBM選擇構建他們的PC的原始8086沒有FPU - 這是一個像許多低端微控制器這樣的嚴格整數機器。
這不是一個太大的問題,因為它主要是低端終端和文本處理器。 但它的廉價和普及突然看到它被用於科學和工程應用。 所以人們想出了帶有FPU芯片的附加擴展卡,以加快速度。 最受歡迎的這些卡恰好使用基於堆棧的芯片,該芯片也是由英特爾制造的。 這一小事實使英特爾更容易將芯片集成到未來的CPU中。
此時,英特爾仍然可以設計一個不基於附加芯片的指令集。 但發生了兩件事。 許多應用程序(主要是游戲和電子表格)開始使用附加FPU,這些應用程序變得非常非常受歡迎。 此外,其他芯片供應商也看到了PC市場正在發生的事情,並希望采取行動。 因此,由於向后兼容並且需要快速添加此功能,英特爾做了最明智的事情(在業務管理方面,不一定在工程方面):他們只是將協處理器芯片包含在他們的下一個版本的x86中,以便營銷部門可以說他們有一個FPU。
長話短說:歇斯底里的葡萄干!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.