RISC和CISC,這一對冤家,從誕生之日開始就處在不停的糾纏之中。直到今天,兩者經過多年的發展后,都在各自領域打開了一片天地,并且相互滲透。RISC專注高性能、高性能功耗比、小體積以及移動設備領域,CISC專注桌面、高性能和民用市場。現在,RISC的代表是ARM,而CISC的代表則是我們耳熟能詳的x86。那么,他們的技術差異在哪里?究竟是怎樣的技術分歧帶來了兩者如此大的差別呢?
指令集的出現
要說清楚RISC和CISC,也就是今天熱門的ARM和x86之間的差異,還得把時間往前推一些,觀察計算機誕生之初的一些事情,才能很清楚地了解指令集、精簡和復雜之間的關系。
機器語言的實例 | |
機器語言 | 含義 |
0000,0000,000000010000 | 代表 LOAD A, 16 |
0000,0001,000000000001 | 代表 LOAD B, 1 |
0001,0001,000000010000 | 代表 STORE B, 16 |
0001,0001,000000000001 | 代表 STORE B, 1 |
今天學生學習計算機實在是太幸福了!今天有大量的可視化的操作方式,有成熟的各種接近自然語言的編程語言,在這些語言中還有很多寫好的庫用于完成那些固定而復雜的任務。這種“幸福”的計算機的學習和使用過程,你完全不應該覺得困難——請注意,如果和上個世紀七十年代的計算機使用者比起來,真的好太多了。
老式的計算機,使用紙帶進行輸入輸出,效率極其低下。
上世紀70年代末期,計算機的出現雖然帶來了各種方便,但也帶來了各種不方便。首先就是編程。當時沒有類似今天這樣的高級的、接近自然語言的、各種邏輯都非常完善的編程語言,而是采用最底層的機器語言來寫命令。
機器語言和后來的匯編語言,在使用中都顯得很麻煩,可讀性差,并且很難維護。此外,還有最重要的一點是,這些語言都比較“笨”,如果要計算一些稍微復雜的操作比如乘法、除法、三角函數、微積分、方程等,每次計算都需要重新編寫程序(在紙帶上打孔輸入數據的時代,是沒有“粘貼+復制”的方便功能的)。
于是人們想了一個方法,對一些比較常用的指令,比如積分、微分、乘除法等,干脆寫一套標準的程序,留下輸入數據的接口。這樣就能夠大幅度地降低編程中的難度,提高編程效率并增加其易用性。這個想法一提出,就得到了很多業內人士的認可,大家給這種想法取了一個名字,叫做“指令集”。
指令集中包含了大量的基礎運算的內容,并且以公式化和模塊化的方式供人們使用。對軟件來說,指令集的出現無疑大幅度提高了程序編寫的效率。同時由于模塊化指令的存在,軟件的運行效率也得到了提升。對硬件來說,專用模塊的效率永遠高于通用模塊,因此指令集的出現也為CPU硬件性能的提升開啟了一扇新的大門。
復雜的還是精簡的?
指令集誕生后,CPU廠商都開始整理、規范這些指令集,其中就包括英特爾。英特爾在它最為成功的一款處理器8086中,開始加入大量指令集,以提高計算效率、增強CPU性能。與此同時,另外一種思想在悄悄萌芽。
英特爾為了兼容8086處理器,不得不一直采用x86 CISC指令集。
業界有一個著名的“8020定理”,可以應用在很多方面:比如一家公司80%的人都會是普通職員,20%的人才可能成為領導者;這些領導者每天做的事情80%是不緊急或者不重要的、20%才是最緊急最重要的內容等等。“8020定理”概括了社會發展的大部分內容,雖然不那么精確,但足以說明大部分內容往往沒有什么效率,最值得關心的往往是那20%的核心部分—比如下面這一段:
CPU的指令集是各種功能的集合。指令集誕生的原因是人們渴望在軟件編寫時更有效率,同時也符合事物發展中規范化、模塊化的需求。但是,在所有指令集中,經過人們分析和統計,只有20%的指令集會在80%的場合都用到,而絕大部分80%的指令集只有20%的場合需要出現。
RISC處理器的效率很高,一般來說能耗比很出色,但是指令比較復雜,特別是程序體積較大。圖為IBM的Power 7處理器的接口,是經典的高性能RISC處理器。
這里的意思就很明確了。如果一個CPU支持所有的指令集,那么其中20%的部分會被經常調用,而80%的部分經常閑置無所事事,至少在80%的時間中都是如此。在CPU晶體管“寸土寸金”的年代,這樣的做法是對晶體管的嚴重浪費。在這種情況下,曾任斯坦福大學校長、美國科學院、工程學院和文理學院三院院士的約翰·亨尼西教授和加州大學伯克利分校的計算機教授戴維·帕特森等人,就提出了一種更為簡單的指令集,叫做精簡指令集,全稱是Reduced Instruction Set Computing,簡寫為RISC。而傳統的大而全的指令集也被賦予了一個正式的名字,叫做Complex Instruction Set Computing,也就是CISC。
RISC的優勢在于將指令數目和尋址方式都做出了改進,大幅度降低了設計難度,編譯器的效率更高并且指令的并行執行程度更高。同時RISC制造的CPU體積更小、能耗更低、性能功耗比更高。但是RISC并不是沒有缺點,比如RISC的CPU對20%的常用指令集的計算效率更高,而對一些不常用或者復雜的指令,則以幾個常用指令組合的方式來完成,計算效率就明顯下降。對軟件來說,RISC的程序體積相對CISC會大一些,復雜度稍高。并且由于指令集精簡,早期的RISC處理器的性能顯然不如同期的CISC,雖然它更小、功耗更低。
今天的CPU:x86和ARM
雖然從原理來看,RISC和CISC可謂井水不犯河水。但RISC和CISC在發展過程中,彼此反而取長補短,各有所得。
對CISC來說,指令集本身隨著計算要求不斷發展,肯定會越來越多。CISC繼續發展下去,其實際CPU產品的晶體管數量會難以抑制地上升,性能功耗比和成本表現很難讓人滿意。從設計角度來看,CISC指令集長度不固定、執行時間也不固定、設計困難很多,很難找出一條高效率的通用設計道路來完成指令的執行。此外,由于CISC處理器和存儲器之間的速度差距,緩存變得越來越重要。這也意味著CPU本身需要更為精簡高效,節省的空間需要用于容納越來越重要的各級緩存。
為了解決這些問題,現代的CISC處理器開始認真學習RISC的思想。CISC的問題在于指令集復雜多變,為每一個指令制定專門的硬件優化顯然不可能。那么,可不可以換一個思路呢?將那些最常使用的指令集挑選出來,然后為其進行專門優化,就可以大大提高效率;至于不常用的指令,則可以用幾個基礎指令組合的方式完成——這正是RISC的思想。有所不同的是,RISC讓思想完成在指令層面,而CISC將這個思想實現在硬件層面。
英特爾的Nehalem處理器可謂借鑒RISC思想而設計的x86。
以英特爾的Nehalem或者AMD的K10處理器為例。首先,這些x86處理器內部都會使用“微指令”。所謂微指令,就是一些基礎的指令,CISC指令中大部分都可以被拆分為幾條簡單而固定的微指令。其次,CPU內部設計了“翻譯單元”,一般是由解碼單元來執行的。在運行中,CPU接受一條x86指令,然后解碼單元將接收到的比較復雜的X86指令拆解為一個或幾個微指令。比如Nehalem設計了3個簡單的解碼單元和1個復雜的解碼單元,可以將x86指令解碼拆分、“翻譯”為1~4條微指令。
第三,CPU內部針對這些微指令會做出充足的優化,讓其執行效率和速度都達到令人滿意的程度。當然,在解碼處理的過程中,不是所有的x86指令都會得到平均對待。那些最常用的指令比如mov、push、call、cmp、add等會被重點、優先、加速處理,不常用的指令要么被拆分為常用指令,要么進入普通循環進行處理。效率雖然有影響,但考慮到其使用幾率很低,因此這樣的設計完全可以接受。在微指令解碼和處理過程中,如何更有效率、更為高效地執行x86命令;微指令應該如何表達、運行;微指令和x86指令的關系以及哪些微指令是最常用、最優先的指令,成為最影響CPU性能的核心內容。
未來的ARM Cortex A-50是高性能處理器的代表產品。
在采用了RISC思想、對x86處理器的設計進行革新后,如今的CISC處理器基本上可以解決CISC指令復雜、體積龐大,晶體管耗費多等問題。對廠商來說,一個設計優秀的x86處理器的解碼和流水線核心可以維持數代發展而不落伍。廠商可以在發展過程中不斷對已經設計好的核心進行調整和調配,在緩存、總線配置上進行更改以獲取更好的性能。
CISC借鑒RISC的思想,讓自己獲得了新生。相對來說,RISC對CISC也有借鑒,但不算太多。RISC指令簡單并且相對固定,處理快速,在設計上甚至可以使用更長的流水線來達到高頻率,并最終獲得更優秀的效能。但RISC的主要問題在于指令集簡單,因此在處理一些比較復雜的應用時,存儲器需要讀入的指令總數耗費時間更多,部分場合下性能表現不理想也是RISC的硬傷。因此,在RISC的發展中,RISC也在逐漸注入CISC的思想。比如緊跟時代加入一些新的指令集,更進一步優化內部架構,運行周期變成不固定周期等。RISC發展到現在,指令也逐漸增多,浮點計算等重要性能也日益強大。以ARM為例,不但逐漸增強浮點計算性能、新增專門的浮點指令,還計劃在現有的基礎上開展高性能ARM處理器的發展,以增強未來應對市場變化特別是對x86處理器競爭的能力。
未來的處理器,功耗更低,效能更高
從目前CPU的發展來看,無論是ARM還是x86,無論是CISC還是RISC,除了努力鞏固自己的性能優勢,加強產品的性能外,還積極吸取對方產品的特色,取長補短,期望有所突破。不過無論如何,未來的CPU肯定在朝著高性能、低功耗的方向發展。目前移動計算大潮已經來臨,競爭日趨激烈。但說到底就是性能功耗比的競爭,誰能在低功耗下提供高性能,誰就有希望獲得成功。未來的處理器,功耗將更低,效能會更高。
推薦閱讀
史海拾趣
燦科盟電子實業有限公司成立于2003年8月,注冊資金100萬。公司創始人憑借在電子行業多年的積累,決定創立自有品牌“CKMTW”,專注于連接器產品的研發與生產。在初創階段,公司面臨著資金緊張、市場競爭激烈等挑戰,但憑借堅定的信念和不斷的技術創新,逐漸在市場中站穩腳跟。
ETC2公司自創立之初,就專注于ETC技術的研發與創新。他們發現傳統ETC系統存在信號識別率低、數據傳輸速度慢等問題,于是投入大量研發資源,成功開發出了新一代ETC設備。這款設備采用了先進的無線通信技術和高速數據處理芯片,大幅提升了信號識別率和數據傳輸速度,為高速公路收費系統帶來了革命性的變革。ETC2公司的技術創新不僅贏得了市場的認可,也為其在電子行業中樹立了良好的口碑。
為了拓展全球市場,ETC2公司制定了國際化戰略。他們積極參加國際展覽和交流活動,與國際同行建立了廣泛的合作關系。同時,ETC2公司還針對不同國家和地區的市場特點,推出了定制化的ETC產品和服務。這些舉措不僅幫助ETC2公司成功打入國際市場,也為其未來的發展奠定了堅實的基礎。
帝特在國內市場取得一定成績后,開始積極拓展國際市場。公司在中國區開設了廣州、深圳分公司,并在泰國和馬來西亞等地設立了分公司和專賣店。通過全球化的戰略布局,帝特的產品銷售網絡遍布東南亞、中東、非洲和美洲等國家和地區,公司的知名度和市場份額均得到了顯著提升。
面對全球電子市場的不斷變化,Electro-Term公司及時調整了市場布局和戰略方向。公司深入分析了不同地區的市場需求和消費者偏好,制定了有針對性的市場推廣策略。同時,公司還加強了與國際知名企業的合作,共同開發新技術和產品。這些努力使Electro-Term在全球市場上取得了顯著的成績。
在技術創新的基礎上,Altonics公司積極拓展市場。公司不僅在國內建立了完善的銷售網絡,還積極開拓國際市場,產品遠銷海外。同時,公司注重品牌建設,通過提供優質的產品和服務,樹立了良好的品牌形象。公司的廣告宣傳和展會參展活動也提升了品牌知名度,為公司的長遠發展奠定了堅實的基礎。
本帖最后由 paulhyde 于 2014-9-15 03:23 編輯 安裝之后點擊crack中的exe然后,點擊patch,生成的那個exe拷貝到安裝目錄下就好了 英文版的,感覺功能上還是挺強大的 … 查看全部問答∨ |
內容見: http://topic.eeworld.net/u/20090115/16/9f8974a2-139e-4f72-81b2-c502928ed4b7.html… 查看全部問答∨ |
我的單片機程序有點小問題想問問大家。 就是開關電源的時候,出現異常現象。 開開電源就出現所有本來有單片機控制的開關都自動的開一下又關閉,時間很短,瞬間的。 關閉電源時候現象一樣。 開關電壓220v。 另外一個開關電壓12v,只是開的時 ...… 查看全部問答∨ |
EVC如何用CListCtrl控件實現如資源管理器(Explorer.exe)一樣的功能?謝謝! 我想做一個類似于CFileDialog的程序,現在的問題是,CFileDialog不能自行定義其外觀,我想象資源管理器那樣顯示不同文件擴展名對應不同的圖標,打算用CListCtrl控件實現,那么該如何實現呢? ps:由于本人沒有eeworld ...… 查看全部問答∨ |
我要在wince中建一個數據庫,但是在我的應用程序中添加 #include<AFXDB.H> 就出現問題: FilterNum.cpp C:\\Program Files\\Microsoft Visual Studio 8\\VC\\ce\\atlmfc\\include\\AFXDB.H(15) : fatal error C1189: #error : ...… 查看全部問答∨ |
我現在用TCPMP播放視頻,當TCPMP正在播放的時候,我拔掉卡,系統會給我一個拔卡事件,之后我關閉TCPMP播放。這樣理論是應該是沒有問題的,但是實際上操作,卻偶爾發現播放器會死掉(系統還沒死,只是TCPMP被卡住了)。我對播放進行跟蹤,發現是播放器 ...… 查看全部問答∨ |
基于FSSDC-9B506-EK Easy Kit的作品(1) 去年暑假期間,富士通公司舉辦了“2010-2011富士通半導體杯創意未來電子競賽”,我有兩個學生參加這個比賽。做了點東西,應該說還行吧。現在富士通在論壇征集建議,剛好他們使用的開發板就是Cortex-M3 Easy Kit,作為響應吧,我 ...… 查看全部問答∨ |
|
感謝劉勇貢獻的基于iar平臺的STM32F407VGT6的移植。下載地址為: http://www.raw-os.org/Download.html 倉庫的地址為: https://git.oschina.net/raw-os/STM32F407VGT6-iar.git 有iar編譯器需求的童鞋可以下載。 … 查看全部問答∨ |
如何在ti公司f28m35雙核芯片flash中用can通信燒寫應用程序 如何在ti公司f28m35雙核芯片flash中用can通信燒寫應用程序,有這方面經驗的朋友, 請介紹如何實現把應用程序通過can通信發到操作器的eeprom保存,然后也可用can通 信把操作器保存的應用程序數據通過can通信發到f28m35的flash保存,并可上電后boot ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析
- 傳統晶體管的極限!臺積電3nm N3P已量產
- 分析師稱H20出口管制毫無意義:對中國AI發展影響不大