精簡指令集的缺點是什麼?
01-27
如題,求完善著個問一直很想了解
瀉藥個人覺得,是讓寫彙編程序的人感到很麻煩。
雖然不管是CISC還是RISC這種面向機器語言本來玩起來就很煩人。但你能想像么,連乘除指令都沒有的彙編指令,要對輸入的數據進行四則運算的時候,乘法用循環加法/循環移位,除法用循環減法/循環移位。C語言一個語句能搞定的事情,彙編要寫上十幾/幾十行……還有數據裝載和數據移動的那些指令玩起來就更不用說了。
當年玩只有38條指令的PIC16系列MCU,要做數據濾波演算法的那個酸爽啊。為了整理清楚一個大循環,用了十幾頁的A4紙去畫流程。不過現在好多的RISC指令的微控制器/微處理器都帶有乘法器了,但相對於X86架構的指令來說,在數據裝載移動等方面還是要多些一些指令,才能滿足同樣的功能。不過,現在能堅持寫彙編的人太少了。CISC發命令:吃飯
RISC發命令:先拿起勺子——把手放到碗上方——舀一勺子飯——送到嘴裡。
所以在進行「吃飯」這個應用的時候,CISC只需要不斷地喊吃飯吃飯就行了,而RISC要不斷重複4個步驟,所以對於這種應用,CISC明顯更快。
但是如果要喝水,CISC就要先訓練你會喝水,然後直接發一個喝水命令。對於RISC,把步驟中碗改為杯子就行了,不需要任何前期訓練的負擔。
所以,隨著應用增多,CISC也要訓練更多不同的指令,所以越來越複雜。現在CISC好像也有一部分是RISC了吧瀉藥。
RISC就是指令集少嘍。
有些一氣呵成的黑操作就不能一條命令執行完畢嘍。例如傅立葉變換中的加成操作,你就得直接用現有的指令集模仿嘍。就醬。精簡指令集RISC的缺點應該是相對複雜指令CISC來說的。CISC對某一個特定的通用功能可能有一條專用的指令(處理器集成了實現相應功能的硬體),而RISC由於分得比較細,同樣的功能必須由多條指令組合完成,而且效率上比不上CISC實現相同功能的情況。
推薦閱讀:
※複雜指令集在安卓上註定沒有用武之地嗎?
※棧幀內返回地址是在local variables前還是在它們後面?
※x86 指令集架構是否過時?
※為什麼英特爾在精簡指令集上沒有作為?
※CPU架構中的棧和寄存器?