PA-RISC既然被公認是一個「保守的RISC指令集架構 (Conservative RISC)」,那麼科科們也就不得不了解一下這個RISC指令集究竟「保守」在哪裡。
我們先回顧Spectrum (光譜) 初版的開發時程:
-
1981年:HP開始組織人力研究全新的指令集架構,統計並分析IBM 370大型主機 (Mainframe) 的應用程式行為模式,也「理所當然」的選擇走向RISC指令集架構。
-
1982年初:HP實驗室完成指令集架構定義與相對應的虛擬記憶體系統。
-
1983年4月:開始實做第一個TTL (Transistor-Transistor Logic,電晶體邏輯) 實驗樣品。
-
1984年7月:完整的處理器樣品交付給軟體開發團隊。
-
1985年:完成實驗室的原型系統,並在將其主要思想發表在當年的HP Journal第八期上,中心精神是 “Beyond RISC”。(坦白講,這樣稱呼將一個處處充滿老派色彩的RISC讓人有點滿臉黑直線)
-
1986年:正式公開產品原型機,並正式命名為PA-RISC。PA是 “Precision Architecture” 的縮寫,意謂「精確架構」。
問題就來了,PA-RISC的指令集架構設計到底是「精確」在哪些地方?
HP的研究團隊將當時的計算機結構分成以下四個種類:傳統的von Neumann電腦、透過微碼實做指令的CISC、前者補上快取記憶體 (先驅者是IBM System/360 Model 85,計算機工業史上第一台有快取記憶體的電腦)、以及HP倡議的 “Havard Architecture (雖然此名詞的原意是連指令資料的主記憶體都分而治之,不限於快取記憶體)”。
照理說,快取記憶體的存在對於軟體來說是「透明」的,但是PA-RISC前身Spectrum研發團隊最終決定「讓快取記憶體和TLB (Translation Lookaside Buffer,轉譯後備緩衝區,用來加速虛擬位址與實體位址轉換的小型快取記憶體)」可由軟體手段讓作業系統對其進行精密的控制,這也是「精確 (Precision)」的由來。
那麼PA-RISC是如何「精確控制」快取記憶體的行為?藉由Cache Hint (快取暗示),記憶體載入 (Load) 與回存 (Store) 指令具有2位元用來「暗示」該快取資料的特性,如空間區域性和時間區域性、或著根本就不值得浪費快取記憶體空間等等,「指導」高階語言編譯器該怎麼排程某些指令,這種「軟硬兼備」的編譯器最佳化技術,後來也陸續出現在眾多後繼的新型指令集,包含預定用來取代PA-RISC的IA-64 (Itanium) 與在嵌入式應用大放異彩的RISC-V。
如科科對閱讀原文有興趣,可好好的欣賞一下1986年HP Journal第8期上。對PA-RISC總體介紹中的這個關鍵段落:A cache should not be hidden (快取記憶體不應該被隱藏)。
相較於Sample is beautiful的傳統RISC指令集設計準則,HP的PA-RISC可謂Simple, but not simple (盡可能簡單,但又不能太簡單)。只不過,PA-RISC會變成「最CISC的RISC (如果不考慮64位元前的ARM的話)」那又是令一段截然不同的故事了。
2 則回應
資訊:QQ 162.D.50.26歲lineday588