在相容的壓力之下,各大公司設計新一代計算機的時候,不得不保留前代計算機的指令,在此基礎上又要增加新指令。
如此一代代的傳下來,計算機的指令集臃腫不堪,複雜無比,形成了一個流派叫做複雜指令集計算機(cisc)。
cisc的指令很多,最高可達800多條,源自於人們早期想將硬體軟體化的想法。
當時硬體製造便宜,軟體的費用越來越高,最終導致了軟體危機。人們就夢想能製造一種機器,可以無障礙的識別、執行高階語言。
因此人們就不斷的給計算機增加指令,好處是明顯的,軟體編譯變的簡單,整個六、七十年代是cisc的天下。
物極必反,cisc解決了軟體危機,卻沒有想到便成了另一個怪物。
大量指令的存在極大的增加了系統的硬體複雜性,要知道多一個指令就得多上一對控制邏輯。
硬體開銷太大,最終超過了當時科技的極限,硬體成本高不可攀。
窮則思變,有識之士開始反思這條路是不是錯了。
正如相容概念的提出一樣,依然是ibm走在了前面,提出了著名的80/20法則,即20%的指令使用頻度超過了80%,而其它80%的指令只有20%的使用率。
基於這個原理,各家宗師就提出了精簡指令集電腦(risc)的概念
……公告:網文聯賽本賽季海選階段最後三週!未參加的小夥伴抓緊了!重磅獎金、成神機會等你來拿!點此參與……》
二十九
魚冒泡:罪過,昨天喝了一天的酒!
risc宗師奉行簡單就是美,,所有一干功能相似、特性重複的指令一概不要,而且所有長短不一的指令全部刪除,指令定長,按使用率高低劃分cpu處理優先順序。
如果說risc但指令是正規軍,精悍而有效率,那麼cisc的指令就只能算是山寨了。
cisc的指令不分重要與否,一概取相同的cpu使用許可權,也就是說cpu無論什麼時候接受到請求,都得聽下來處理,大大降低了效率。
等長的risc指令大大降低了硬體的複雜度,而且可以實現一項非常重要的技術——流水線。
普通的計算機處理資料的時候,就像工廠只有一個工人,來一個任務做一個任務,直到這件事完成,否則就得等待,浪費大量的cpu時間。
流水線技術則是將一件事情分為至少兩個以上的步驟,risc一般則分為4到5個,如取指令、執行、輸出等等,流水線是現代risc核心的一個重要設計,它極大地提高了效能。
對於一條具體的指令執行過程,通常可以分為五個部分:取指令,指令譯碼,取運算元,運算(alu),寫結果。其中前三步一般由指令控制器完成,後兩步則由運算器完成。
按照傳統的方式,所有指令順序執行,那麼先是指令控制器工作,完成第一條指令的前三步,然後運算器工作,完成後兩步,在指令控制器工作,完成第二條指令的前三步,在是運算器,完成第二條指令的後兩部……很明顯,當指令控制器工作時運算器基本上在休息,而當運算器在工作時指令控制器卻在休息,造成了相當大的資源浪費。
解決方法很容易想到,當指令控制器完成了第一條指令的前三步後,直接開始第二條指令的操作,運算單元也是。這樣就形成了流水線系統,這是一條2級流水線。
這樣cpu永遠處於繁忙的狀態,這就是流水線的原理,雖然執行一條指令的時間沒有減少,但是輸出結果的時間減少了很多,理論速度是不用流水線的2倍。
只要流水線不斷,cpu就可以不停的輸出結果。