1. 程式人生 > >Linux x86 和ARM什麼區別?

Linux x86 和ARM什麼區別?

問題:
最近在用三星的一款i5處理器的Windows平板,和iPad,以及其他使用ARM處理器的手機相比,發熱量大很多,甚至需要藉助風扇來散熱,耗電量也大了不少。
那麼就很奇怪,在主頻相差不大,並且實際執行效果差不多的情況下,x86架構的處理器的發熱量和功耗為什麼會那麼大?這種差異到底是硬體以及處理器的指令集本身的問題,還是軟體層面的問題?

回答1:
說x86和ARM處理器“實際執行效果差不多”其實有所不妥。樓主也說了比較的幾個裝置主要是windows平板,ipad和智慧手機。這些平臺上的程式都是移動環境下的應用,大多邏輯簡單功能單一,沒什麼“計算”可言。ARM處理器本身定位於嵌入式平臺,應付輕量級、目的單一明確的程式,現在應用在移動裝置上正是得心應手。x86定位於桌面和伺服器,這些平臺上很多應用是計算密集型的,比如多媒體編輯、科研計算、模擬等等。因此將x86和ARM在移動環境下做對比得出“差不多”是不好的。

由於定位的不同,ARM處理器基於精簡指令集(RISC)架構。指令集數量少就可以簡化硬體邏輯的設計,減少電晶體數量,也就意味著低功耗。而且由於移動平臺應用通常簡單,程式的控制流不復雜,執行效率沒有必要很高,所以流水線、分支預測等硬體邏輯都比較簡單。這些都降低了電晶體總量。同時因為移動裝置有電池的能源限制,ARM的電源管理是作為重要部分特別設計了的。比如移動裝置的處理器在待機時通常只以極低的主頻在執行,甚至可以暫時關閉閒置的核心、協處理器來降低功耗。

x86就截然不同。x86是複雜指令集(CISC)架構,存在很多機器指令,只為了高效地完成一項專門任務(比如MMX, SSE中的指令)。這就使得硬體的邏輯很複雜,電晶體數量龐大。為了高效地進行運算,x86架構有較長的流水線以達到指令級並行(ILP)。長流水線帶來的一個弊端,就是當遇到分支時,如果預載入分支指令不是未來真實的分支,那麼要清空整個流水,代價較高。所以x86為此還必須有複雜的分支預測機構,確保流水線的效率。再加上多級cache,支援超執行緒、虛擬化等等,x86的複雜度其實相當高。

回答2:

因為ARM是為了低功耗設計的,而X86是為了高效能。你想把ARM做到X86一樣的效能,勢必增加核心複雜度,增加指令集,到時候你猜ARM對X86還能有多少功耗優勢?X86精簡核心規模拋棄部分指令集,一樣也做到了功耗5W以下的ATOM,你又要問為什麼那些X86手機功耗高發熱大,因為沒有專為X86平臺開發的手機APP,你跑在X86手機上的APP全都是二次轉換執行的,晶片一直高負載。你ARM手機一直高負載功耗不高發熱不大?



ARM和x86幾大簡單比較

  
  處理器通常是指一臺計算機的運算核心和控制核心。但是隨著移動裝置的興起,處理器在智慧手機和平板電腦等移動終端裝置中的也逐漸興起,讓處理器市場的變化開始了。

  英特爾是PC和企業級處理器市場上毋庸置疑的霸主,ARM則是在移動終端市場發展起來的新興霸主。英特爾專注高效能,為個人使用者、企業使用者提供出色的效能支援;而ARM則專注低功耗,為手機和平板使用者帶來超長待機。這兩個看似沒有交集的企業為何會發展成如今對立局面呢?
疑的霸主,ARM則是在移動終端市場發展起來的新興霸主。英特爾專注高效能,為個人使用者、企業使用者提供出色的效能支援;而ARM則專注低功耗,為手機和平板使用者帶來超長待機。這兩個看似沒有交集的企業為何會發展成如今對立局面呢?

  技術發展是兩家公司直接競爭的主要原因,在Web2.0時代,Facebook、谷歌這些公司的崛起使得資料中心三大核心技術發生了改變,三大核心技術指的是:計算、儲存和網路。

  ARM是如何滿足資料中心需求的?

  低功耗是ARM處理器的一個優勢,但是在面向企業級領域的時侯,其發現並沒有64位架構處理器,於是在2012年10月31日ARM推出新款ARMv8架構ARMCortex-A50處理器系列產品,來滿足企業級級市場應用的需求。

  而為了彌補自己在企業級市場的經驗劣勢,ARM還拉攏了原本跟英特爾同一陣營的AMD.AMD在伺服器領域積累的相當多的成功經驗,其擁有業界領先的64位微處理器技術以及廣泛的智慧財產權組合與OEM、ODM和ISV合作的經驗,將促進ARM在資料中心領域的擴充套件,滿足資料中心領域的特定需求。

  一、效能:

  X86結構的電腦無論如何都比ARM結構的系統在效能方面要快得多、強得多。X86的CPU隨便就是1G以上、雙核、四核大行其道,通常使用45nm(甚至更高階)製程的工藝進行生產;而ARM方面:CPU通常是幾百兆,最近才出現1G左右的CPU,製程通常使用不到65nm製程的工藝,可以說在效能和生產工藝方面ARM根本不是X86結構系統的對手。

  但ARM的優勢不在於效能強大而在於效率,ARM採用RISC流水線指令集,在完成綜合性工作方面根本就處於劣勢,而在一些任務相對固定的應用場合其優勢就能發揮得淋漓盡致。

  二、擴充套件能力

  X86結構的電腦採用“橋”的方式與擴充套件裝置(如:硬碟、記憶體等)進行連線,而且x86結構的電腦出現了近30年,其配套擴充套件的裝置種類多、價格也比較便宜,所以x86結構的電腦能很容易進行效能擴充套件,如增加記憶體、硬碟等。

  ARM結構的電腦是通過專用的資料介面使CPU與資料儲存裝置進行連線,所以ARM的儲存、記憶體等效能擴充套件難以進行(一般在產品設計時已經定好其記憶體及資料儲存的容量),所以採用ARM結構的系統,一般不考慮擴充套件。基本奉行“夠用就好”的原則。

  三、作業系統的相容性

  X86系統由微軟及Intel構建的Wintel聯盟一統天下,壟斷了個人電腦作業系統近30年,形成巨大的使用者群,也深深固化了眾多使用者的使用習慣,同時x86系統在硬體和軟體開發方面已經形成統一的標準,幾乎所有x86硬體平臺都可以直接使用微軟的視窗系統及現在流行的幾乎所有工具軟體,所以x86系統在相容性方面具有無可比擬的優勢。

  ARM系統幾乎都採用Linux的作業系統,而且幾乎所有的硬體系統都要單獨構建自己的系統,與其他系統不能相容,這也導致其應用軟體不能方便移植,這一點一直嚴重製約了ARM系統的發展和應用。GOOGLE開發了開放式的Android系統後,統一了ARM結構電腦的作業系統,使新推出基於ARM結構的電腦系統有了統一的、開放式的、免費的作業系統,為ARM的發展提供了強大的支援和動力。

x86 和 ARM 優缺點比較

一、背景知識

      指令的強弱是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。從現階段的主流體系結構講,指令集可分為複雜指令集(CISC)和精簡指令集(RISC)兩部分。相應的,微處理隨著微指令的複雜度也可分為 CISC 及 RISC 這兩類。

      CISC是一種為了便於程式設計和提高儲存器訪問效率的晶片設計體系。在20世紀90年代中期之前,大多數的微處理器都採用CISC體系,包括Intel 的 80x86 和 Motorola 的 68K 系列等。 即通常所說的 X86 架構就是屬於 CISC 體系的。

      RISC是為了提高處理器執行速度而設計的晶片設計體系。它的關鍵技術在於流水線操作(Pipelining):在一個時鐘週期裡完成多條指令。而超流水線以及超標量技術已普遍在晶片設計中使用。RISC體系多用於非 x86 陣營高效能微處理器CPU,像HOLTEK MCU系列等。

      ARM(Advanced RISC Machines),既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。而ARM體系結構目前被公認為是業界領先的32位嵌入式 RISC 微處理器結構,所有 ARM 處理器共享這一體系結構。

      因此我們可以從其所屬體系比較入手,來進行X86指令集與ARM指令集的比較。

二、CISC和RISC的比較
(一)CISC
1. CISC體系的指令特徵

      1) 使用微程式碼。指令集可以直接在微程式碼儲存器(比主儲存器的速度快很多)裡執行,新設計的處理器,只需增加較少的電晶體就可以執行同樣的指令集,也可以很快地編寫新的指令集程式。

      2) 龐大的指令集。可以減少程式設計所需要的程式碼行數,減輕程式設計師的負擔。高階語言對應的指令集:包括雙運算元格式、暫存器到暫存器、暫存器到儲存器以及儲存器到暫存器的指令。
2. CISC體系的優缺點

      1) 優點:能夠有效縮短新指令的微程式碼設計時間,允許設計師實現 CISC 體系機器的向上相容。新的系統可以使用一個包含早期系統的指令超集合,也就可以使用較早電腦上使用的相同軟體。另外微程式指令的格式與高階語言相匹配,因而編譯器並不一定要重新編寫。

      2) 缺點:指令集以及晶片的設計比上一代產品更復雜,不同的指令,需要不同的時鐘週期來完成,執行較慢的指令,將影響整臺機器的執行效率。

(二)RISC
1. RISC體系的指令特徵

      1) 精簡指令集:包含了簡單、基本的指令,通過這些簡單、基本的指令,就可以組合成複雜指令。

      2) 同樣長度的指令:每條指令的長度都是相同的,可以在一個單獨操作裡完成。

      3) 單機器週期指令:大多數的指令都可以在一個機器週期裡完成,並且允許處理器在同一時間內執行一系列的指令。
2. RISC體系的優缺點

      1) 優點:在使用相同的晶片技術和相同執行時鐘下,RISC 系統的執行速度將是 CISC 的2~4倍。由於RISC處理器的指令集是精簡的,它的記憶體管理單元、浮點單元等都能設計在同一塊晶片上。RISC 處理器比相對應的 CISC 處理器設計更簡單,所需要的時間將變得更短,並可以比CISC處理器應用更多先進的技術,開發更快的下一代處理器。

      2) 缺點:多指令的操作使得程式開發者必須小心地選用合適的編譯器,而且編寫的程式碼量會變得非常大。另外就是RISC體系的處理器需要更快的儲存器,這通常都集成於處理器內部,就是L1 Cache(一級快取)。

      綜合上面所述,若要再進一步比較CISC與RISC之差異,可以由以下幾點來進行分析:

      1. 指令的形成:CISC 因指令複雜,故採用微指令碼控制單元的設計,而RISC的指令90%是由硬體直接完成,只有10%的指令是由軟體以組合的方式完成,因此指令執行時間上RISC較短,但RISC所須ROM空間相對的比較大,至於RAM使用大小應該與程式的應用比較有關係。

      2. 定址模式:CISC的需要較多的定址模式,而RISC只有少數的定址模式,因此CPU在計算儲存器有效位址時,CISC佔用的匯流排週期較多。

      3. 指令的執行:CISC指令的格式長短不一,執行時的週期次數也不統一,而RISC結構剛好相反,故適合採用流水線處理架構的設計,進而可以達到平均一週期完成一指令的方向努力。顯然的,在設計上RISC較CISC簡單,同時因為CISC的執行步驟過多,閒置的單元電路等待時間增長,不利於平行處理的設計,所以就效能而言RISC較CISC還是佔了上風,但RISC因指令精簡化後造成應用程式碼變大,需要較大的儲存器空間,且存在指令種類較多等等的缺點。

(三)X86指令集和ARM指令集
1. X86指令集

      X86指令集是Intel為其第一塊16位CPU(i8086)專門開發的,後來的電腦中為提高浮點資料處理能力而增加的X87晶片系列數學協處理器以及使用X87指令,以後就將X86指令集和X87指令集統稱為X86指令集。雖然隨著CPU技術的不斷髮展,Intel陸續研製出更新型的i80386、i80486,但為了保證電腦能繼續執行以往開發的各類應用程式以保護和繼承豐富的軟體資源,所以Intel公司所生產的所有CPU仍然繼續使用X86指令集,所以它的CPU仍屬於X86系列。由於Intel X86系列及其相容CPU都使用X86指令集,所以就形成了今天龐大的X86系列及相容CPU陣容。

      除了具備上述CISC的諸多特性外,X86指令集有以下幾個突出的缺點:

    通用暫存器組——對CPU核心結構的影響。X86指令集只有8個通用暫存器,所以,CISC的CPU執行是大多數時間是在訪問儲存器中的資料,而不是暫存器中的。這就拖慢了整個系統的速度。RISC系統往往具有非常多的通用暫存器,並採用了重疊暫存器視窗和暫存器堆等技術使暫存器資源得到充分的利用。
    解碼——對CPU的外核的影響。解碼器(Decode Unit),這是x86 CPU才有的東西。其作用是把長度不定的x86指令轉換為長度固定的類似於RISC的指令,並交給RISC核心。解碼分為硬體解碼和微解碼,對於簡單的x86指令只要硬體解碼即可,速度較快,而遇到複雜的x86指令則需要進行微解碼,並把它分成若干條簡單指令,速度較慢且很複雜。Athlon也好,PIII也好,老式的CISC的X86指令集嚴重製約了他們的效能表現。
    定址範圍小——約束了使用者需要。即使AMD研發出X86-64架構時,雖然也解決了傳統X86固有的一些缺點,比如定址範圍的擴大,但這種改善並不能直接帶來效能上的提升。

(2) ARM指令集

      相比而言,以RISC為架構體系的ARM指令集的指令格式統一,種類比較少,定址方式也比複雜指令集少。當然處理速度就提高很多。ARM處理器都是所謂的精簡指令集處理機(RISC)。其所有指令都是利用一些簡單的指令組成的,簡單的指令意味著相應硬體線路可以儘量做到最佳化,而提高執行速率,相對的使得一個指令所需的時間減到最短。而因為指令集的精簡,許多工作都必須組合簡單的指令來完成,而針對較複雜組合的工作便需要由編譯器(compiler) 來執行,而 CISC 體系的X86指令集因為硬體所提供的指令集較多,所以許多工作都能夠以一個或是數個指令來代替,編譯器的工作因而減少許多。

      除了具備上述RISC的諸多特性之外,可以總結ARM指令集架構的其它一些特點如下:

    ARM的特點:1) 體積小,低功耗,低成本,高效能;2) 支援Thumb(16 位)/ARM ( 32 位)雙指令集,能很好的相容 8 位 /16 位器件;3) 大量使用暫存器,指令執行速度更快;4) 大多數資料操作都在暫存器中完成;5) 定址方式靈活簡單,執行效率高;6) 指令長度固定;7) 流水線處理方式;8) load-store結構。
    ARM的一些非RISC思想的指令架構:1) 允許一些特定指令的執行週期數字可變,以降低功耗,減小面積和程式碼尺寸;2) 增加了桶形移位器來擴充套件某些指令的功能;3) 使用了16位的Thumb指令集來提高程式碼密度;4) 使用條件執行指令來提高程式碼密度和效能;5) 使用增強指令來實現數字訊號處理的功能。

(四)小結

      因此,大量的複雜指令、可變的指令長度、多種的定址方式這些CISC的特點,也是CISC的缺點,因為這些都大大增加了解碼的難度,而在現在的高速硬體發展下,複雜指令所帶來的速度提升早已不及在解碼上浪費的時間。除了個人PC市場還在用X86指令集外,伺服器以及更大的系統都早已不用CISC了。x86仍然存在的理由就是為了相容大量的x86平臺上的軟體,同時,它的體系結構組成的實現不太困難。而RISC體系的ARM指令最大特點是指令長度固定,指令格式種類少,定址方式種類少,大多數是簡單指令且都能在一個時鐘週期內完成,易於設計超標量與流水線,暫存器數量多,大量操作在暫存器之間進行。優點是不言而喻的,因此,ARM處理器才成為是當前最流行的處理器系列,是幾種主流的嵌入式處理體系結構之一。RISC目前正如日中天,Intel似乎也將最終拋棄x86而轉向RISC結構。而實際上,隨著RISC處理器在嵌入式領域中大放異彩,傳統的X86系列CISC處理器在Intel公司的積極改進下也克服了功耗過高的問題,成為一些高效能嵌入式裝置的最佳選擇,發展到今天,CISC與RISC之間的界限已經不再是那麼涇渭分明,RISC自身的設計正在變得越來越複雜(當然並不是完全依著CISC的思路變複雜),因為所有實際使用的CPU都需要不斷提高效能,所以在體系結構中加入新特點就在所難免。另一方面,原來被認為是CISC體系結構的處理器也吸收了許多RISC的優點,比如Pentium處理器在內部的實現中也是採用的RISC的架構,複雜的指令在內部由微碼分解為多條精簡指令來執行,但是對於處理器外部來說,為了保持相容性還是以CISC風格的指令集展示出來。

相關推薦

Linux x86 ARM什麼區別

問題:最近在用三星的一款i5處理器的Windows平板,和iPad,以及其他使用ARM處理器的手機相比,發熱量大很多,甚至需要藉助風扇來散熱,耗電量也大了不少。那麼就很奇怪,在主頻相差不大,並且實際執行效果差不多的情況下,x86架構的處理器的發熱量和功耗為什麼會那麼大?這種差

3分鐘看懂gcc、arm-Linux-gccarm-elf-gcc的組成及區別

一、GCC簡介 The GNU Compiler Collection,通常簡稱 GCC,是一套由 GNU 開發的編譯器集,為什麼是編輯器集而不是編譯器呢? 那是因為它不僅支援 C 語言編譯,還支援 C++, Ada,Objective C 等許多語言。另外 GCC 對硬

linux編譯x86arm平臺的x264

摘抄網址:http://blog.csdn.net/baliguan163/article/details/11773363 參考網址:http://blog.csdn.net/evsqiezi/article/details/8467822 參考網址:http://bl

linux中~/的區別

roo oot home inux linux中 nbsp linux 目錄 地址 ~ 是當前用戶的目錄地址 / 是根目錄的地址(一般稱呼為root,/ 和 /root/ 是有區別的) / 也指目錄分隔符 1 當用戶是root用戶時 ~ 代表/root/,即根

CPU兩大架構X86 ARM

(1)中央處理單元(CPU):   主要由運算器、控制器、暫存器三部分組成。運算器就是起著運算的作用,控制器就是負責發出CPU每條指令所需要的資訊,暫存器就是儲存運算或者指令的一些臨時檔案,這樣可以保證更高的速度。   CPU有著處理指令、執行操作、控制時間、處理資

Linux PCARM版的QT環境設定及到ARM移植&常見錯誤解決方法

* *********安裝前,系統更新,能夠減少未知情況出現 1 PC版本 http://blog.csdn.net/chchchdx123/article/details/6911267 在終端中輸入:sudo apt-get install qt4-dev-t

libcurl庫的編譯(包括:x86ARM版本)

由於專案中需要使用libcurl庫,所以就在網上搜羅了一些如何編譯出x86版本和ARM版本的libcurl庫。 首先給出如何使用原始碼來編譯出x86版本的庫。 一、下載:libcurl http://curl.haxx.se/download/curl-7.21.1.t

x86 常見呼叫約定(cdecl,fastcall,stdcall) & x86ARM呼叫約定的棧幀分析 & ARM ATPCS(ARM-THUMB procedure call standard)

#PS:要轉載請註明出處,本人版權所有 #PS:這個只是 《 我自己 》理解,如果和你的 #原則相沖突,請諒解,勿噴 由於某些工作的需要,我需要掌握X86以及ARM的一些呼叫規則,讓自己可以大致看懂ASM程式碼。於是,我總結了一下我需要的東西

簡單說明gccarm-linux-gcc的區別

首先了解一下編譯的過程:一個原始檔經過gcc編譯器編譯後生成可執行檔案其實經歷了四個過程: * 預處理(Pre-processing) * 編譯(Compiling) * 彙編(Assembling)

linux中 ll ls 區別

彩色 顯示文件 時間排序 linux 常用 所有 數字 名稱 sub ll 列出來的結果詳細,有時間,是否可讀寫等信息 ,象windows裏的 詳細信息ls 只列出文件名或目錄名 就象windows裏的 列表ll -t 是降序, ll -t | tac 是升序 ll不是

linux下 bash_profilebashrc區別

bash_profile和bashrc區別【.bash_profile 與 .bashrc 的區別】.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.【l

jsoncpp linux平臺編譯arm移植

clas inux sta 編譯 動態 cpp 取出 dir 沒有 下載 http://sourceforge.net/projects/jsoncpp/ 或者 http://download.csdn.net/detail/chinaeran/8631141 Linux平

ARMX86 CPU架構區別

兼容性 即使 應該 能夠 調制 數據 bubuko linu 工作 CISC(復雜指令集計算機)和RISC(精簡指令集計算機)是當前CPU的兩種架構。它們的區別在於不同的CPU設計理念和方法。早期的CPU全部是CISC架構,它的設計目的是 CISC要用最少的機器語言指令來完

gdbarm-linux-gdb命令詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Linux下profilebashrc區別

Linux下profile和bashrc區別 1./etc/profile 用來設定系統環境引數,比如$PATH. 這裡面的環境變數是對系統內所有使用者生效的。 2./etc/bashrc 這個檔案設定系統bash shell相關的東西,對系統內所有使用者生效。只要

ARM V7 ARM V8的區別

ARM V7版架構 從V7版本後開始變成了Cortex架構。 Cortex-A系列: 應用處理器,主要用於移動計算、智慧手機、車載娛樂、自動駕駛、伺服器、高階處理器等領域。時鐘頻率超過1GHZ,支援Linux、Android、Windows等完整作業系統需要的記憶體管理單元MMU。 Cort

linux下&&;的區別

&&符號:前一個命令執行成功,才執行後一個 [[email protected] ~]# cd /tmp/ && ls ssh-yHGjKVtMPT5Q 前一個執行失敗時,後一個不執行 [[email protected]

ARM架構與x86架構的區別

一、什麼是ARM架構   ARM架構過去稱作進階精簡指令集機器(AdvancedRISCMachine,更早稱作:AcornRISCMachine),是一個32位精簡指令集(RISC)處理器架構,其廣泛地使用在許多嵌入式系統設計。由於節能的特點,ARM處理器非常適用於移動通訊領域,符合其主要設計

Linux 下 C語言 open() fopen() 區別

fopen() #include <stdio.h> FILE *fopen(const char *path, const char *mode); mode 指定檔案的開啟模式: r:只讀方式開啟一個文字檔案(該檔案必須存在) r+:可讀可寫方式開啟一個文字檔案(該檔

DSP處理器ARM處理器的區別以及各自應用在哪些領域

由於工作經常接觸到各種多核的處理器,如TI的達芬奇系列晶片擁有1個DSP核3個ARM核。那麼DSP處理器和ARM處理器各自有什麼區別,各自適合那些領域? DSP:digital signal processor數字訊號處理器,也指digital signal process數字訊號處理,有自己指