2010年7月8日 星期四

RISC 處理器(中):為何嵌入式系統多用 RISC 架構?


看完了上集,不知有沒有人好奇:既然有「精簡指令集(RISC)」,那世界上有沒有「複雜指令集」呢?有的!而且就在你我身邊將近三十個年頭了。那就 是 Intel 與  AMD 出品,廣泛用於現今桌機、筆電內的 x86 架構 CPU。x86 架構 CPU 大量提供所謂「好用指令」,也就是一個指令就可以執行相當複雜的工作。雖然程式設計師會因此輕鬆許多,不過這種指令一旦送到 CPU 內執行,可能得花上比一般指令要高上許多的時間,才能完成。這就沒辦法保證管線一定暢通了。此種 CPU 架構,稱為 CISC,全名 Complex Instruction Set Computing,中譯「複雜指令集」。

那到底是「RISC」好?還是「CISC」好?喔喔喔!問這句話最好小心點!這有點像一個外國人問「國民黨好」還是「民進黨好」一樣,有點 小小危險。實際狀況是,兩大陣營各有優劣,彼此存在三、四十年,也沒見哪個陣營壓過另一個。不過在「嵌入式系統」陣營,RISC 的確有點小小贏面。理由請聽我慢慢道來。



「CISC」由於存在某些需要「高執行時間」的「好用指令」,為了不讓管線塞車,最簡單的方法就是把 CPU 震盪時脈拉高。講白話一點,就是把生產線的履帶速度,調快一點。這樣一來,就會逼迫 CPU 內部每個單元,都用較快的速度工作,來彌補管線可能塞車的狀況。所以您可以看到 x86 的 CPU 時脈不斷升高,什麼 2.5 GHz、3 GHz 這種誇張數字都出來了。如果您對 3 GHz 這個數字不覺得誇張,讓我跟您解釋一下: 1 Hz 就是每秒鐘震動 1 下的意思。 「Giga Hertz(GHz)」,是「十億 Hz」之意。所以 3 GHz,就是每秒鐘震動 30 億下。你倒是把你的手指頭每秒鐘震動 30 億下看看,應該會如土地公顯靈時的香爐般「發爐」吧?

「CISC」另一個解決自身缺點的方法,就是在 CPU 中嵌入用更複雜的電路、更聰明的執行單元,以避免管線塞車的狀況發生。這中間包括,一口氣抓入一堆指令,然後將執行順序重調過,把擁有近似執行時間的指令 排程在一起執行,使塞車情況不致於發生...等機制。所以當「CISC」得意地宣稱,他們可以在幾平方公分內,塞入幾百萬個電路時,「RISC」陣營的人 就會嗤之以鼻:「多塞那麼多垃圾電路有什麼用!」所以,擁有類似表現的兩顆 CPU, CISC 通常會比 RISC 稍微厚重一點。

因為 CISC 「調高時脈」與「電路複雜」這兩件事,導致做出來的硬體系統有「不易散熱」與「體積稍大」這兩個缺點。這可是嵌入式系統的 大忌!也因此,您會常常見到嵌入式系統所使用的 SoC,是採用 RISC 架構,就是要避開上述兩個缺點。由於 RISC 的指令集數量很少,每個指令能做的事情又很簡單,導致送入 CPU 後執行時間都很相近,管線不會太常塞車。因此,不需要很高的震盪時脈,或者很複雜的電路來預防管線塞車這件事。所以 RISC 的 CPU,就可以用「較低時脈」、「較小尺寸」,來完成與 CISC 差不多的任務。「較低時脈」可以讓發熱減少、功耗降低(省電)。「較小尺寸」可以讓做出小巧的嵌入式產品機會變大。因此,RISC 架構的 SoC,常會是嵌入式系統的首選。

但 RISC 架構的 CPU 也不是沒有缺點。由於它不提供「好用指令」,導致一件本來用「一句話」就可以交代完的事情,要分好幾道指令才能敘述完畢。以「提取(Fetch)」這件事來看,在 CISC 中可以單步提取完畢的指令,在 RISC 中可能得分好幾步。偏偏 CPU 的工作速度,是主記憶體的好幾倍。到記憶體提取指令,對 CPU 來說是嚴重拖慢速度的事。所以,RISC 會在 CPU 內準備非常大量的「暫存器」。好讓 CPU 一口氣提取一大堆資料,存放於暫存器中。運算完畢,也可以將結果寫入暫存器,不急著寫回比較慢速的「主記憶體」。

明天我將跟各位報告「RISC 處理器的四大特色」,敬請期待!

RISC 處理器(上):何謂「RISC」?
RISC 處理器(中):為何嵌入式系統多用 RISC 架構?
RISC 處理器(下):RISC 處理器的四大特色

喜歡這篇文章嗎?喜歡的話請幫忙按一個「讚」喔!
歡迎加入「紀老師電腦教學網」的 Facebook 粉絲團,取得更多資訊喔!

關於作者
紀俊男,現任和群資訊總經理。曾任職於筌寶電子、趨勢科技、西基電腦、展望電腦等公司。教書經驗約 20 年。專長是程式設計、系統管理、嵌入式系統等領域。您可以在本篇留言與之聯繫、討論、或邀課。

沒有留言:

張貼留言