一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

ARM(RISC)和x86(CISC)的技術(shù)差異

 少俠7fttbaxgpp 2018-06-02

RISC和CISC,這一對冤家,從誕生之日開始就處在不停的糾纏之中。直到今天,兩者經(jīng)過多年的發(fā)展后,都在各自領(lǐng)域打開了一片天地,并且相互滲透。RISC專注高性能、高性能功耗比、小體積以及移動設(shè)備領(lǐng)域,CISC專注桌面、高性能和民用市場?,F(xiàn)在,RISC的代表是ARM,而CISC的代表則是我們耳熟能詳?shù)膞86。那么,他們的技術(shù)差異在哪里?究竟是怎樣的技術(shù)分歧帶來了兩者如此大的差別呢?

ARM(RISC)和x86(CISC)的技術(shù)差異。

指令集的出現(xiàn)

要說清楚RISC和CISC,也就是今天熱門的ARM和x86之間的差異,還得把時間往前推一些,觀察計算機誕生之初的一些事情,才能很清楚地了解指令集、精簡和復(fù)雜之間的關(guān)系。

 

機器語言的實例 
機器語言含義
0000,0000,000000010000代表 LOAD A, 16
0000,0001,000000000001代表 LOAD B, 1
0001,0001,000000010000代表 STORE B, 16
0001,0001,000000000001代表 STORE B, 1

 

今天學(xué)生學(xué)習(xí)計算機實在是太幸福了!今天有大量的可視化的操作方式,有成熟的各種接近自然語言的編程語言,在這些語言中還有很多寫好的庫用于完成那些固定而復(fù)雜的任務(wù)。這種“幸?!钡挠嬎銠C的學(xué)習(xí)和使用過程,你完全不應(yīng)該覺得困難——請注意,如果和上個世紀七十年代的計算機使用者比起來,真的好太多了。

老式的計算機,使用紙帶進行輸入輸出,效率極其低下。
老式的計算機,使用紙帶進行輸入輸出,效率極其低下。

上世紀70年代末期,計算機的出現(xiàn)雖然帶來了各種方便,但也帶來了各種不方便。首先就是編程。當時沒有類似今天這樣的高級的、接近自然語言的、各種邏輯都非常完善的編程語言,而是采用最底層的機器語言來寫命令。

機器語言和后來的匯編語言,在使用中都顯得很麻煩,可讀性差,并且很難維護。此外,還有最重要的一點是,這些語言都比較“笨”,如果要計算一些稍微復(fù)雜的操作比如乘法、除法、三角函數(shù)、微積分、方程等,每次計算都需要重新編寫程序(在紙帶上打孔輸入數(shù)據(jù)的時代,是沒有“粘貼+復(fù)制”的方便功能的)。

于是人們想了一個方法,對一些比較常用的指令,比如積分、微分、乘除法等,干脆寫一套標準的程序,留下輸入數(shù)據(jù)的接口。這樣就能夠大幅度地降低編程中的難度,提高編程效率并增加其易用性。這個想法一提出,就得到了很多業(yè)內(nèi)人士的認可,大家給這種想法取了一個名字,叫做“指令集”。

指令集中包含了大量的基礎(chǔ)運算的內(nèi)容,并且以公式化和模塊化的方式供人們使用。對軟件來說,指令集的出現(xiàn)無疑大幅度提高了程序編寫的效率。同時由于模塊化指令的存在,軟件的運行效率也得到了提升。對硬件來說,專用模塊的效率永遠高于通用模塊,因此指令集的出現(xiàn)也為CPU硬件性能的提升開啟了一扇新的大門。

復(fù)雜的還是精簡的?

指令集誕生后,CPU廠商都開始整理、規(guī)范這些指令集,其中就包括英特爾。英特爾在它最為成功的一款處理器8086中,開始加入大量指令集,以提高計算效率、增強CPU性能。與此同時,另外一種思想在悄悄萌芽。

英特爾為了兼容8086處理器,不得不一直采用x86 CISC指令集。
英特爾為了兼容8086處理器,不得不一直采用x86 CISC指令集。

業(yè)界有一個著名的“8020定理”,可以應(yīng)用在很多方面:比如一家公司80%的人都會是普通職員,20%的人才可能成為領(lǐng)導(dǎo)者;這些領(lǐng)導(dǎo)者每天做的事情80%是不緊急或者不重要的、20%才是最緊急最重要的內(nèi)容等等?!?020定理”概括了社會發(fā)展的大部分內(nèi)容,雖然不那么精確,但足以說明大部分內(nèi)容往往沒有什么效率,最值得關(guān)心的往往是那20%的核心部分—比如下面這一段:

CPU的指令集是各種功能的集合。指令集誕生的原因是人們渴望在軟件編寫時更有效率,同時也符合事物發(fā)展中規(guī)范化、模塊化的需求。但是,在所有指令集中,經(jīng)過人們分析和統(tǒng)計,只有20%的指令集會在80%的場合都用到,而絕大部分80%的指令集只有20%的場合需要出現(xiàn)。

RISC處理器的效率很高,一般來說能耗比很出色,但是指令比較復(fù)雜,特別是程序體積較大。圖為IBM的Power 7處理器的接口,是經(jīng)典的高性能RISC處理器。
RISC處理器的效率很高,一般來說能耗比很出色,但是指令比較復(fù)雜,特別是程序體積較大。圖為IBM的Power 7處理器的接口,是經(jīng)典的高性能RISC處理器。

這里的意思就很明確了。如果一個CPU支持所有的指令集,那么其中20%的部分會被經(jīng)常調(diào)用,而80%的部分經(jīng)常閑置無所事事,至少在80%的時間中都是如此。在CPU晶體管“寸土寸金”的年代,這樣的做法是對晶體管的嚴重浪費。在這種情況下,曾任斯坦福大學(xué)校長、美國科學(xué)院、工程學(xué)院和文理學(xué)院三院院士的約翰·亨尼西教授和加州大學(xué)伯克利分校的計算機教授戴維·帕特森等人,就提出了一種更為簡單的指令集,叫做精簡指令集,全稱是Reduced Instruction Set Computing,簡寫為RISC。而傳統(tǒng)的大而全的指令集也被賦予了一個正式的名字,叫做Complex Instruction Set Computing,也就是CISC。

RISC的優(yōu)勢在于將指令數(shù)目和尋址方式都做出了改進,大幅度降低了設(shè)計難度,編譯器的效率更高并且指令的并行執(zhí)行程度更高。同時RISC制造的CPU體積更小、能耗更低、性能功耗比更高。但是RISC并不是沒有缺點,比如RISC的CPU對20%的常用指令集的計算效率更高,而對一些不常用或者復(fù)雜的指令,則以幾個常用指令組合的方式來完成,計算效率就明顯下降。對軟件來說,RISC的程序體積相對CISC會大一些,復(fù)雜度稍高。并且由于指令集精簡,早期的RISC處理器的性能顯然不如同期的CISC,雖然它更小、功耗更低。

今天的CPU:x86和ARM

雖然從原理來看,RISC和CISC可謂井水不犯河水。但RISC和CISC在發(fā)展過程中,彼此反而取長補短,各有所得。

對CISC來說,指令集本身隨著計算要求不斷發(fā)展,肯定會越來越多。CISC繼續(xù)發(fā)展下去,其實際CPU產(chǎn)品的晶體管數(shù)量會難以抑制地上升,性能功耗比和成本表現(xiàn)很難讓人滿意。從設(shè)計角度來看,CISC指令集長度不固定、執(zhí)行時間也不固定、設(shè)計困難很多,很難找出一條高效率的通用設(shè)計道路來完成指令的執(zhí)行。此外,由于CISC處理器和存儲器之間的速度差距,緩存變得越來越重要。這也意味著CPU本身需要更為精簡高效,節(jié)省的空間需要用于容納越來越重要的各級緩存。

為了解決這些問題,現(xiàn)代的CISC處理器開始認真學(xué)習(xí)RISC的思想。CISC的問題在于指令集復(fù)雜多變,為每一個指令制定專門的硬件優(yōu)化顯然不可能。那么,可不可以換一個思路呢?將那些最常使用的指令集挑選出來,然后為其進行專門優(yōu)化,就可以大大提高效率;至于不常用的指令,則可以用幾個基礎(chǔ)指令組合的方式完成——這正是RISC的思想。有所不同的是,RISC讓思想完成在指令層面,而CISC將這個思想實現(xiàn)在硬件層面。

英特爾的Nehalem處理器可謂借鑒RISC思想而設(shè)計的x86。
英特爾的Nehalem處理器可謂借鑒RISC思想而設(shè)計的x86。

以英特爾的Nehalem或者AMD的K10處理器為例。首先,這些x86處理器內(nèi)部都會使用“微指令”。所謂微指令,就是一些基礎(chǔ)的指令,CISC指令中大部分都可以被拆分為幾條簡單而固定的微指令。其次,CPU內(nèi)部設(shè)計了“翻譯單元”,一般是由解碼單元來執(zhí)行的。在運行中,CPU接受一條x86指令,然后解碼單元將接收到的比較復(fù)雜的X86指令拆解為一個或幾個微指令。比如Nehalem設(shè)計了3個簡單的解碼單元和1個復(fù)雜的解碼單元,可以將x86指令解碼拆分、“翻譯”為1~4條微指令。

第三,CPU內(nèi)部針對這些微指令會做出充足的優(yōu)化,讓其執(zhí)行效率和速度都達到令人滿意的程度。當然,在解碼處理的過程中,不是所有的x86指令都會得到平均對待。那些最常用的指令比如mov、push、call、cmp、add等會被重點、優(yōu)先、加速處理,不常用的指令要么被拆分為常用指令,要么進入普通循環(huán)進行處理。效率雖然有影響,但考慮到其使用幾率很低,因此這樣的設(shè)計完全可以接受。在微指令解碼和處理過程中,如何更有效率、更為高效地執(zhí)行x86命令;微指令應(yīng)該如何表達、運行;微指令和x86指令的關(guān)系以及哪些微指令是最常用、最優(yōu)先的指令,成為最影響CPU性能的核心內(nèi)容。

未來的ARM Cortex A-50是高性能處理器的代表產(chǎn)品
未來的ARM Cortex A-50是高性能處理器的代表產(chǎn)品。

在采用了RISC思想、對x86處理器的設(shè)計進行革新后,如今的CISC處理器基本上可以解決CISC指令復(fù)雜、體積龐大,晶體管耗費多等問題。對廠商來說,一個設(shè)計優(yōu)秀的x86處理器的解碼和流水線核心可以維持數(shù)代發(fā)展而不落伍。廠商可以在發(fā)展過程中不斷對已經(jīng)設(shè)計好的核心進行調(diào)整和調(diào)配,在緩存、總線配置上進行更改以獲取更好的性能。

CISC借鑒RISC的思想,讓自己獲得了新生。相對來說,RISC對CISC也有借鑒,但不算太多。RISC指令簡單并且相對固定,處理快速,在設(shè)計上甚至可以使用更長的流水線來達到高頻率,并最終獲得更優(yōu)秀的效能。但RISC的主要問題在于指令集簡單,因此在處理一些比較復(fù)雜的應(yīng)用時,存儲器需要讀入的指令總數(shù)耗費時間更多,部分場合下性能表現(xiàn)不理想也是RISC的硬傷。因此,在RISC的發(fā)展中,RISC也在逐漸注入CISC的思想。比如緊跟時代加入一些新的指令集,更進一步優(yōu)化內(nèi)部架構(gòu),運行周期變成不固定周期等。RISC發(fā)展到現(xiàn)在,指令也逐漸增多,浮點計算等重要性能也日益強大。以ARM為例,不但逐漸增強浮點計算性能、新增專門的浮點指令,還計劃在現(xiàn)有的基礎(chǔ)上開展高性能ARM處理器的發(fā)展,以增強未來應(yīng)對市場變化特別是對x86處理器競爭的能力。

未來的處理器,功耗更低,效能更高

從目前CPU的發(fā)展來看,無論是ARM還是x86,無論是CISC還是RISC,除了努力鞏固自己的性能優(yōu)勢,加強產(chǎn)品的性能外,還積極吸取對方產(chǎn)品的特色,取長補短,期望有所突破。不過無論如何,未來的CPU肯定在朝著高性能、低功耗的方向發(fā)展。目前移動計算大潮已經(jīng)來臨,競爭日趨激烈。但說到底就是性能功耗比的競爭,誰能在低功耗下提供高性能,誰就有希望獲得成功。未來的處理器,功耗將更低,效能會更高。

 

 

===================================

轉(zhuǎn)自 http://www./index.php/article/index/id/12476

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产一区二区三区四区中文| 麻豆精品视频一二三区| 午夜国产精品国自产拍av| 欧美成人一区二区三区在线| 欧美日韩综合在线精品| 亚洲乱码av中文一区二区三区| 国产日韩欧美在线亚洲| 儿媳妇的诱惑中文字幕| 国产成人综合亚洲欧美日韩| 国产精品一区二区三区欧美 | 国产亚洲视频香蕉一区| 精品一区二区三区免费看| 亚洲中文字幕在线观看黑人| 精品伊人久久大香线蕉综合| 国产一级精品色特级色国产| 欧美国产精品区一区二区三区| 欧美人禽色视频免费看| 精品人妻一区二区三区四在线| 国产肥妇一区二区熟女精品| 欧美一级特黄大片做受大屁股| 欧美日韩国产成人高潮| 风韵人妻丰满熟妇老熟女av| 亚洲精品福利视频你懂的| 精品少妇一区二区视频| 中文字幕一区久久综合| 国产又黄又猛又粗又爽的片| 国产精品亚洲一级av第二区| 91麻豆精品欧美视频| 国产毛片对白精品看片| 国产在线小视频你懂的| 久久99国产精品果冻传媒| 爽到高潮嗷嗷叫之在现观看| 毛片在线观看免费日韩| 成人日韩在线播放视频| 色婷婷成人精品综合一区| 亚洲av一区二区三区精品| 亚洲av熟女一区二区三区蜜桃| 在线中文字幕亚洲欧美一区| 亚洲精品福利视频在线观看| 欧美整片精品日韩综合| 91老熟妇嗷嗷叫太91|