1. 程式人生 > >精簡指令集和複雜指令集的區別

精簡指令集和複雜指令集的區別

RISC(精簡指令集計算機)和CISC(複雜指令集計算機)是當前CPU的兩種架構。它們的區別在於不同的CPU設計理念和方法。

CPU架構是廠商給屬於同一系列的CPU產品定的一個規範,主要目的是為了區分不同型別CPU的重要標示


早期的CPU全部是CISC架構,它的設計目的是要用最少的機器語言指令來完成所需的計算任務。比如對於乘法運算,在CISC架構的CPU上,您可能需要這樣一條指令:MUL ADDRA, ADDRB就可以將ADDRA和ADDRB中的數相乘並將結果儲存在ADDRA中。將ADDRA, ADDRB中的資料讀入暫存器,相乘和將結果寫回記憶體的操作全部依賴於CPU中設計的邏輯來實現。這種架構會增加CPU結構的複雜性和對CPU工藝的要求,但對於編譯器的開發十分有利。比如上面的例子,C程式中的a*=b就可以直接編譯為一條乘法指令。今天只有Intel及其相容CPU還在使用CISC架構。

RISC架構要求軟體來指定各個操作步驟。上面的例子如果要在RISC架構上實現,將ADDRA, ADDRB中的資料讀入暫存器,相乘和將結果寫回記憶體的操作都必須由軟體來實現,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。這種架構可以降低CPU的複雜性以及允許在同樣的工藝水平下生產出功能更強大的CPU,但對於編譯器的設計有更高的要求。

複雜指令集計算機(CISC)
  長期來,計算機效能的提高往往是通過增加硬體的複雜性來獲得.隨著積體電路技術.特別是VLSI(超大規模積體電路)技術的迅速發展,為了軟體程式設計方便和提高程式的執行速度,硬體工程師採用的辦法是不斷增加可實現複雜功能的指令和多種靈活的編址方式.甚至某些指令可支援高階語言語句歸類後的複雜操作.至使硬體越來越複雜,造價也相應提高.為實現複雜操作,微處理器除向程式設計師提供類似各種暫存器和機器指令功能外.還通過存於只讀存貯器(ROM)中的微程式來實現其極強的功能 ,傲處理在分析每一條指令之後執行一系列初級指令運算來完成所需的功能,這種設計的型式被稱為複雜指令集計算機(Complex Instruction Set Computer-CISC)結構.一般CISC計算機所含的指令數目至少300條以上,有的甚至超過500條.
精簡指令集計算機(RISC)
  採用複雜指令系統的計算機有著較強的處理高階語言的能力.這對提高計算機的效能是有益的.當計算機的設計沿著這條道路發展時.有些人沒有隨波逐流.他們回過頭去看一看過去走過的道路,開始懷疑這種傳統的做法:IBM公司沒在紐約Yorktown的JhomasI.Wason研究中心於1975年組織力量研究指令系統的合理性問題.因為當時已感到,日趨龐雜的指令系統不但不易實現.而且還可能降低系統性能.1979年以帕特遜教授為首的一批科學家也開始在美國加冊大學伯克萊分校開展這一研究.結果表明,CISC存在許多缺點.首先.在這種計算機中.各種指令的使用率相差懸殊:一個典型程式的運算過程所使用的80%指令.只佔一個處理器指令系統的20%.事實上最頻繁使用的指令是取、存和加這些最簡單的指令.這樣-來,長期致力於複雜指令系統的設計,實際上是在設計一種難得在實踐中用得上的指令系統的處理器.同時.複雜的指令系統必然帶來結構的複雜性.這不但增加了設計的時間與成本還容易造成設計失誤.此外.儘管VLSI技術現在已達到很高的水平,但也很難把CISC的全部硬體做在一個晶片上,這也妨礙單片計算機的發展.在CISC中,許多複雜指令需要極複雜的操作,這類指令多數是某種高階語言的直接翻版,因而通用性差.由於採用二級的微碼執行方式,它也降低那些被頻繁呼叫的簡單指令系統的執行速度.因而.針對CISC的這些弊病.帕特遜等人提出了精簡指令的設想即指令系統應當只包含那些使用頻率很高的少量指令.並提供一些必要的指令以支援作業系統和高階語言.按照這個原則發展而成的計算機被稱為精簡指令集計算機(Reduced Instruction Set Computer-RISC)結構.簡稱RISC.

CISC與RISC的區別 

  我們經常談論有關"PC"與"Macintosh"的話題,但是又有多少人知道以Intel公司X86為核心的PC系列正是基於CISC體系結構,而 Apple公司的Macintosh則是基於RISC體系結構,CISC與RISC到底有何區別?
  從硬體角度來看CISC處理的是不等長指令集,它必須對不等長指令進行分割,因此在執行單一指令的時候需要進行較多的處理工作。而RISC執行的是等長精簡指令集,CPU在執行指令的時候速度較快且效能穩定。因此在並行處理方面RISC明顯優於CISC,RISC可同時執行多條指令,它可將一條指令分割成若干個程序或執行緒,交由多個處理器同時執行。由於RISC執行的是精簡指令集,所以它的製造工藝簡單且成本低廉。
  從軟體角度來看,CISC執行的則是我們所熟識的DOS、Windows作業系統。而且它擁有大量的應用程式。因為全世界有65%以上的軟體廠商都理為基於CISC體系結構的PC及其相容機服務的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面卻顯得有些勢單力薄。雖然在RISC上也可執行DOS、Windows,但是需要一個翻譯過程,所以執行速度要慢許多。
  目前CISC與RISC正在逐步走向融合,Pentium Pro、Nx586、K5就是一個最明顯的例子,它們的核心都是基於RISC體系結構的。他們接受CISC指令後將其分解分類成RISC指令以便在遇一時間內能夠執行多條指令。由此可見,下一代的CPU將融合CISC與RISC兩種技術,從軟體與硬體方面看二者會取長補短。

複雜指令集CPU內部為將較複雜的指令譯碼,也就是指令較長,分成幾個微指令去執行,正是如此開發程式比較容易(指令多的緣故),但是由於指令複雜,執行工作效率較差,處理資料速度較慢,PC 中 Pentium的結構都為CISC CPU。
RISC是精簡指令集CPU,指令位數較短,內部還有快速處理指令的電路,使得指令的譯碼與資料的處理較快,所以執行效率比CISC高,不過,必須經過編譯程式的處理,才能發揮它的效率,我所知道的IBM的 Power PC為RISC CPU的結構,CISCO 的CPU也是RISC的結構。
咱們經常見到的PC中的CPU,Pentium-Pro(P6)、Pentium-II,Cyrix的M1、M2、AMD的K5、K6實際上是改進了的CISC,也可以說是結合了CISC和RISC的部分優點。

RISC與CISC的主要特徵對比

比較內容 CISC RISC
指令系統 複雜,龐大 簡單,精簡
指令數目 一般大於200 一般小於100
指令格式 一般大於4 一般小於4
定址方式 一般大於4 一般小於4
指令字長 不固定 等長
可訪存指令 不加限制 只有LOAD/STORE指令
各種指令使用頻率 相差很大 相差不大
各種指令執行時間 相差很大 絕大多數在一個週期內完成
優化編譯實現 很難 較容易
程式原始碼長度 較短 較長
控制器實現方式 絕大多數為微程式控制 絕大多數為硬佈線控制
軟體系統開發時間 較短 較長

相關推薦

精簡指令複雜指令區別

RISC(精簡指令集計算機)和CISC(複雜指令集計算機)是當前CPU的兩種架構。它們的區別在於不同的CPU設計理念和方法。 CPU架構是廠商給屬於同一系列的CPU產品定的一個規範,主要目的是為了區分不同型別CPU的重要標示 早期的CPU全部是CISC架構,它的設計目的是

RISC與CISC(精簡指令複雜指令)比較(轉載)

1.簡介 RISC(Reduced Instruction Set Computing,精簡指令集計算機)CISC(Complex Instruction Set Computer,複雜指令集計算機)是當前CPU的兩種架構。它們的區別在於不同的C

ida Pro ARM指令Thumb指令的切換

在動態除錯android的ndk程式的時候,發現很多程式都會反彙編錯誤,原來是ARM反彙編的模式沒搞對。因為在動態除錯的時候,ida Pro並沒有去解析elf模組中的一些資訊,造成了模組資訊丟失,有時候反彙編就會錯誤。   類似下面這樣: B6FC7DD0明顯反彙編錯了,

神經網路中訓練資料、驗證資料測試資料區別

whats the difference between train, validation and test set, in neural networks? Answer: The training and validation sets are used during t

在CentOS7上部署MongoDB復制復制的管理維護

重新 冗余 ast erro gre 能夠 mmap base enable MongoDB復制集的概述 復制集是額外的數據副本,是跨多個服務器同步數據的過程,復制集提供了冗余並增加了數據可用性,通過復制集可以對硬件故障和中斷的服務進行恢復。 復制集工作原理 MongoD

彙編指令---ROLROR指令

       迴圈左移/右移指令只是移位方向不同,它們移出的位不僅要進入CF,而且還要填補空出的位。       例如:              MOV AL,82H              ROL AL,1       首先把82H轉換成二進位制數10000010B

h.264的圖象引數序列引數

http://blog.sina.com.cn/s/blog_12eb15b660102vk23.html h.264解碼中首先過濾碼流獲得引數集,引數集是H.264標準的一個新概念,是一種通過改進視訊碼流結構增強錯誤恢復能力的方法。眾所周知,一些關鍵資訊位元的丟失(如

ARM彙編指令——算數邏輯指令

MOV : 傳送 (Move)//相當於賦值語句 MOV{條件}{S} <dest>, <op 1> dest = op_1 MOV 從另一個暫存器、被移位的暫存器、或一個立即值裝載一個值到目的暫存器。你可

Alink漫談(七) : 如何劃分訓練資料測試資料

# Alink漫談(七) : 如何劃分訓練資料集和測試資料集 [TOC] ## 0x00 摘要 Alink 是阿里巴巴基於實時計算引擎 Flink 研發的新一代機器學習演算法平臺,是業界首個同時支援批式演算法、流式演算法的機器學習平臺。本文將為大家展現Alink如何劃分訓練資料集和測試資料集。 ##

CISC(複雜指令)與RISC(精簡指令)的區別

複雜指令集計算機(CISC)  Complex Instruction SetComputer 長期來,計算機效能的提高往往是通過增加硬體的複雜性來獲得.隨著積體電路技術.特別是VLSI(超大規模積體電路)技術的迅速發展,為了軟體程式設計方便和提高程式的執行速度,硬體工程師

解釋執行編譯執行的區別、基於棧基於暫存器的指令區別

1. 解釋執行和編譯執行的區別 我們在學習java的時候,對class檔案都有個疑惑,虛擬機器是如何執行發方法中的位元組碼指令的呢?其實 虛擬機器的執行引擎在執行java程式碼的時候有解釋執行和編譯執行兩種選擇。通俗說來,解釋執行是通過直譯器執行,編譯執行即通

ARM彙編:載入儲存指令(六大類)---LDR、LDRB、LDRH、STR、STRB、STRH

ARM的六大類指令集---LDR、LDRB、LDRH、STR、STRB、STRH ARM微處理器支援載入/儲存指令用於在暫存器和儲存器之間傳送資料,載入指令用於將儲存器中的資料傳送到暫存器,儲存指令則完成相反的操作。常用的載入儲存指令如下: —  LDR     字資料載

微控制器、CPU、指令作業系統的關係

鄭重宣告:轉載自http://blog.csdn.net/zhongjin616/article/details/18765301 1> 首先討論各種微控制器與作業系統的關係 說到微控制器,大家第一時間想到的應該是51微控制器,對吧。不錯,更高階一點的AVR,把他稱為微控制器,我們也還覺得可以接受。那

JVM學習05-位元組碼執行過程JVM指令

1. 位元組碼的Code部分 在執行位元組碼的時候,無非也就是對呼叫類中的函式。那麼下面將介紹下位元組碼函式的Code部分,Code部分的程式碼一個可以用java自帶的命令javap命令進行檢視。還可以在eclipse中安裝ByteCode visualize

ESP8266-01學習筆記02:指令注意事項

設定WiFi模組的名字和密碼(AP模式下) AT+CWSAP=”ESP8266”,”1234567890”,5,3 本模組可以工作在三種模式: 1. STA 2 .AP 3 .AP+STA, 出廠設定為第三種 Sta模式: Station, 類似於無線終端

ARMneon指令

在移動平臺上進行一些複雜演算法的開發,一般需要用到指令集來進行加速。目前在移動上使用最多的是ARM晶片。 ARM是微處理器行業的一家知名企業,其晶片結構有:armv5、armv6、armv7和armv8系列。晶片型別有:arm7、arm9、arm11、cortex系列。

《自己動手寫Java虛擬機器》學習筆記(五)指令直譯器

第五章 指令集和直譯器 本章基於第三章(解析.class檔案)和第四章(執行時資料區),編寫一個建議的直譯器。 5.1 位元組碼和指令集 每一個類或者介面都可以被Java編譯器編譯成為一個.class檔案,類或介面的方法資訊就放在.class檔案的method_info

關於指令cpu

轉載自:http://blog.csdn.net/yu132563/article/details/55251534 無論處於上層的軟體多麼的高階, 想要在CPU執行, 就必須被翻譯成"機器碼", 翻譯這個工作由編譯器來執行. 編譯器在這個過程中, 要經過"編譯", "彙編

ARM之指令結構

一、指令集    1、CISC複雜指令集CPU,CISC體系的設計理念使用最少的指令來完成任務,因此CISC的CPU        本身設計複雜,工藝複雜,但好處是編譯器好設計。CISC出現較早,Intel還一直採用CISC設        計。    2、RISC精簡指令集

ARM指令、Thumb指令、Thumb-2指令

32bit image 存儲 wid mage 頻率 arm 16bit 承載 MCU使用什麽指令集主要由內核決定的,比如Cortex-M3使用的是Thumb-2指令集 ARM指令集: 編代碼全部是 32bits 的,每條指令能承載更多的信息,因此使用最少的指令完