,也擁有複雜架構型多達數十條的各種外圍指令,但並不包括目前各公司開發的所有指令。
整個處理器不是一個,而是兩枚!
一塊精簡指令的核心微處理器,一塊包含大部分複雜指令的協處理器,兩者採用平行計算電路合二為一,才構成一個完整的處理器系統。
這種天馬行空的想象力,就是領受郭逸銘指示,負責具體開發的彭之旭等人也是讚不絕口。
這種思路,真是……
真是怎樣,他們一時想不出,但他們隱約覺得,在當前複雜架構和精簡指令激烈衝突的時候,這種混合架構或許確實才是最佳解決辦法。這種解決方法看似是在和稀泥,但實際仔細分析下來,才可以看出,它確實做到了採兩家之長的設計意圖,將處理器硬體效能發揮到了極致!
複雜架構和精簡指令爭執的核心,在於指令長短。
早期核心指令功能不復雜,所以指令本身也很簡短精煉,就例如一個加法指令,再長也有限。但隨著半導體發展,各領域又熱衷於開發自己的專用指令,將一個個原本精煉的指令組合起來,形成了一個龐大的複雜函式體系。
複雜指令,為它設計的名稱代號同樣簡單,但這只是為了編寫程式的人方便識別,其本身運算內容卻極其浩大繁雜。
現行的處理器,都是處理完一條指令,才能處理第二條,後面待處理指令只能排隊等待。如果每一條指令都超長,那後面等待的時間就會很久。等久點也沒關係,關鍵是每條指令呼叫的電路並不一致,有些運算同時呼叫不同功能電路,這很好,不佔用時間。但有些複雜指令反覆呼叫某一熱點電路,熱點電路超負荷運轉,其他電路卻空自等待,不能做其他事情,白白浪費了處理器硬體架構。
打個比方。
全校集合,一個班級的同學從大門出去,如果班上的人越多,出門所花的時間自然也就越多。如果在出門時大家還打打鬧鬧,有幾個人爭搶著要先出去,這幾個爭搶的人長時間堵在門口,後面的人想走也走不了,全班趕到操場集合的時間便會拖延更久。
複雜指令效率低,就低在這裡。
在郭逸銘的協調下,大家採用了雙處理器,並行運算的設計思路。
核心處理器採用精簡指令方式運算,那些呼叫效率最高的電路整合在這塊晶片上,基本滿足了80%的運算要求。核心處理器處理的資料指令短、無堵塞,效率自然就高,速度也就更快。而另一塊協處理器卻整合了另外17%,呼叫率較低的電路,如果恰逢使用者這方面的需求,也可借用協處理器輔助運算。
協處理器的運算,不影響核心處理器,雙方各算各的。如果恰好同時運用到兩個部分,兩部分處理器各自運算完畢,經由並行處理電路綜合匯總,得出最後結論,速度也快於單純的複雜架構處理器。
最後3%的功能電路,則被做成了程式形式,儲存在磁碟中。
程式按照處理器運算效率,將這些複雜的運算轉換為一個個長長短短的指令,分別交由主處理和協處理器同時運算,集中得出結果。這類特殊指令需求量稀少,大多數使用者都用不上,有沒有對他們而言無足輕重。對於那些有需求的使用者,少了這些指令也不會特別難受,實在要用,程式軟體處理雖然稍慢一點,但本身呼叫次數也不是很多,基本可以忍耐。
處理器設計的重心,就在於並行處理。
彭之旭等人對微處理器有些陌生,但對平行計算那是太熟悉不過了。國內的大型計算機、超計算機,哪個不是平行計算。
平行計算,說穿了就是將計算機寶貴的硬體資源充分利用起來,將一個複雜的科學計算分成一個個小片斷,經由計算機不同電路,同時進行運算,最終匯總得到結果的處理方式。
國內的計算機很少,為了讓這些珍貴的計算機發揮出最大效率,基本上所有的計算機都採用了並行式設計,以滿足各科研單位的最大需要。
正是因為這個思路是如此巧妙,卻又如此簡單,算是滿足了兩方的意見,而並行處理恰好是彭之旭等國內工程師們的長項。所以當郭逸銘提出這個解決辦法,眾人當即一拍而合,迅速接受了這個框架,以此來設計公司的第一款微處理器。
郭逸銘的構思並不出奇,他只是利用現成的技術,將運用於大型計算機的並行處理技術,移植到微處理晶片上,以發揮硬體更高處理效率而已。但這個思路,卻給如何處理複雜指令與精簡指令之間的衝突,提供了一個巧妙的解決辦法,將兩者水火不相