官术网_书友最值得收藏!

2.2 計算機體系結構中的一些有關概念

2.2.1 CISC與RISC

CISC是復雜指令集計算(Complex Instruction Set Computing)的縮寫,RISC是精簡指令集計算(Reduced Instruction Set Computing)的縮寫,它們分別代表著當前微處理器的兩大結構體系。

1.CISC結構微處理器的特點

目前CISC結構的微處理器主要應用于通用目的微機中,具有代表性的且仍被大量使用的有Intel的X86系列(包括與其兼容的AMD公司的產品)和Motorola的680X0系列。1980年以前的微處理器大部分采用的是CISC結構,其主要特點是指令的種類繁多(如早期的8086/8088CPU不包括浮點指令在內都有110多條指令),指令功能強大,指令的機器碼長度因指令不同而不同,指令的執行時間也根據不同的指令有較大的差異。例如大家所熟悉的微處理器8086/8088的指令“INC AL”的機器碼長度為1字節,指令執行時間為2個時鐘周期。指令“MOV AX,[DI+1000]”機器碼長度為4字節,指令執行時間為17個時鐘周期。而除法指令“DIV BX”的機器碼長度為2字節,指令執行時間為155個時鐘周期。在CISC結構計算機這些眾多的指令中,常用的指令只占到了一小部分(20%左右)。經統計使用最多的是傳送類指令,其次是轉移類指令,依次往下是測試和比較類指令,加、減、加1、減1類指令。這類最常用的指令只占指令集中指令數量的20%,但在程序中卻占整個程序指令使用量的80%,被稱為“二八定律”。許多功能強大的指令實際很少使用,但它們卻往往占用了CPU中60%以上的晶體管并伴隨著復雜的實現工藝。

2.RISC結構微處理器的特點

RISC結構主要針對CISC表現出的缺點而設計,它精簡了CPU的指令集(實際上是精簡了處理器的內部結構),統一了指令的字節長度,并將大部分指令執行時間限制在一個時鐘周期。

RISC的概念最早是1975年由IBM在其小型機IBM-801的設計中提出的,但第一個實用的RISC微處理器誕生于美國加州大學伯克利分校,由Patterson和Sequin領導的一個小組于1981年研制出第一臺這樣的機器——RISC I機。相對于CISC,RISC結構的微處理器具有以下特點。

1)具有一個短小精悍的指令集

如果不包括衍生指令,大多數RISC微處理器的指令只有幾十條,如ARM微處理器包括協處理指令在內共有55條指令,而早期的8086CPU不包括浮點指令都有110多條。

2)指令具有相同的機器碼位長

常見的為32位,對有些不足32位的指令都將無用位填0。

3)95%的指令執行時間為一個時鐘周期

剩余的5%指令也只需2個時鐘周期,而且可以通過指令調度技術(Code Scheduling)在編譯系統的幫助下在1個時鐘周期完成。

4)沒有采用CISC必用的微指令(微碼)結構

由于CISC一條指令內會包含幾種不同的尋址方式,所以需要采用微指令技術來實現。這種復雜的微指令結構將耗用芯片內多達60%的晶體管,造成芯片體積和功耗的加大。而RISC的指令中只含有單一的功能和尋址方式,不需要復雜的微指令結構,僅用硬件電路就可以實現,指令譯碼所用的晶體管只占總數的10%,所以可以大大減少芯片體積和功耗,因此可以增加其他的功能電路。

5)采用了載入/存儲(Load/Store)模式

在CISC結構中,一條指令可實現存儲器(源)到存儲器(目的)的操作。例如指令“MUL WORD BYTE [DI]”,先從DI指向的存儲器單元中取出數據與AL中的內容相乘,然后將結果回送到AX中去。這類指令不僅包含了對存儲器單元的尋址,還包含了存儲器內容和寄存器內容的乘法運算,所以必須有復雜的微指令結構參與操作方可實現。為了簡化微指令結構,對存儲器的訪問RISC只設置了單一的尋址模式:將存儲器數據加載到寄存器的尋址方式(Load),或寄存器數據保存到存儲器的尋址方式(Store)。因此在RISC結構中將無法在一條指令中實現存儲器到存儲器的數據傳輸,也就不會出現CISC結構中廣泛使用的存儲器間接尋址方式。要想進行存儲器到存儲器的數據傳輸,需要先用一條Load指令從存儲器讀出數據,然后用一條Store指令將數存入存儲器。這種模式借鑒于1976年推出的超級計算機CRAY1體系結構中的實現技術,所以也同時沿用了其術語稱謂:Load/Store模式。

6)具有更多數量的寄存器

大多數的RISC CPU具有32個或更多的通用寄存器,其目的是為了避免對大量堆棧的使用。盡管RISC結構也使用堆棧,但不如CISC結構那樣頻繁和耗時。

3.CISC和RISC結構的優、缺點

CISC或RISC結構各自的優、缺點主要體現在硬件結構的復雜性和編程軟件的復雜性兩個方面。

CISC結構的CPU雖然有著晶體管數量多、結構復雜、功耗大等缺點,但是其豐富的指令集使得編程方便簡捷。由于有許多功能強大的指令,所以實現同樣功能所使用的代碼量比RISC結構CPU少很多。而RISC結構微處理器則有著晶體管數量少、功耗低、指令平均執行速度高等優點,但由于其指令集僅提供一些使用頻度高的指令,對于一些CISC結構下一條指令就可以完成的功能就必須用多條指令甚至是復雜的程序體來實現。假定一個程序總的執行時間為T,T=N×C×S,式中N是要執行的指令數,C是平均每條指令執行所需的時鐘周期數,S是處理器時鐘周期。為提高程序的執行速度,CISC和R1SC都努力減小S,即提高處理器的時鐘速率。CISC是著眼減小N,卻付出了較大C的代價;RISC是力圖減小C,卻付出了較大N的代價。CISC技術的復雜性在于硬件,在于CPU內部用于實現復雜指令必須的微指令控制器實現技術。RISC技術的復雜性在于軟件,在于編譯程序的編寫與優化。因此RISC微處理器直接用匯編語言編程將是一項繁復的工作,故編程多采用C或其他高級語言。正是由于CISC和RISC結構各自的優缺點,這兩種結構也都在相互滲透,而且其界限也越來越模糊。例如Intel的Pentium微處理器中的U流水線采用的是傳統的CISC結構方式,而V流水線則采用了RISC結構方式。另一方面,RISC處理器為了提高其功能也在不斷的擴充其指令系統,如浮點指令、DSP指令、Java指令、多媒體指令等。可能有一天我們會感覺到精簡指令集處理器的指令集并不精簡。

2.2.2 馮·紐曼(Von Neuman)結構和哈佛(Harvard)結構

1.馮·紐曼結構(Von Neumann Architecture)

馮·紐曼結構為經典的計算機系統架構方式,其主要特征為程序中指令與數據使用相同的存儲空間,因此指令與數據可相混,即數據作為指令使用也無妨,反之亦然。

該結構率先在1945年由被譽為“現代電腦之父”的美籍奧地利科學家馮·紐曼首先提出,故稱為馮·紐曼結構。其原創貢獻在于提出了“存儲程序”的概念和計算機運用二進制運行的原理,后來人們把利用這種概念和原理設計的電子計算機系統統稱為“馮·紐曼型結構”計算機。X86 CPU中的實模式就采用了馮·紐曼結構。馮·紐曼結構的處理器指令與數據使用同一個存儲器,經由同一個總線傳輸,如圖2-2所示。

圖2-2 馮·紐曼結構示意圖

馮·紐曼結構處理器具有以下幾個特點:

  • 必須有一個存儲器;
  • 必須有一個控制器;
  • 必須有一個運算器,用于完成算術運算和邏輯運算;
  • 必須有輸入和輸出設備,用于進行人機通信。

馮·紐曼的主要貢獻就是提出并實現了“存儲程序”的概念。由于指令和數據都是二進制碼,指令和操作數的地址又密切相關,因此代碼和數據共享同一存儲區和同一總線是一種自然的選擇。但是這種指令和數據共享同一總線的結構,使得信息流的傳輸成為限制計算機性能的瓶頸,影響了數據處理速度的提高。例如當程序中出現大的數據塊訪問操作時,CISC處理器可以采用兩種方式:一種是等待數據傳輸結束再運行后續的指令,顯然CPU利用率會降低;另一種是在DMA控制器的配合下采用所謂的周期竊取技術,利用CPU取指令/執行指令的間隙竊取數據總線的控制權,斷斷續續地完成數據的傳輸。雖然CPU不會等待,但是需要在CPU和DMA控制器間不斷的切換總線控制權,這將影響系統的運行速度。

2.哈佛結構(Harvard Architecture)

哈佛結構的主要特點是程序和數據分別由不同的存儲區提供,而且采用獨立的總線進行訪問。因最早的實現結構出現在哈佛·馬克一號計算機(Harvard Mark I calculator)上,故稱為哈佛結構(但早期這部機器的程序由打孔紙帶輸入,數據則存于機器內部)。X86 CPU系列的保護模式也采用了該結構。由于數字信號處理一般需要較大的運算量和較高的運算速度,為了提高數據吞吐量,需要進行大量數字信號處理的處理器大多采用哈佛結構,如DSP處理器等。早期的哈佛結構示意圖如圖2-3所示。

與馮·紐曼結構處理器比較,哈佛結構處理器有兩個明顯的特點:

  • 使用兩個獨立的存儲器模塊,分別存儲指令和數據,每個存儲模塊都不允許指令和數據并存;
  • 使用獨立的兩條總線,分別作為CPU與每個存儲器之間的專用通信路徑,而這兩條總線之間毫無關聯。

后來,又提出了改進型哈佛結構,如圖2-4所示,這種結構中雖然在CPU外部共用了一組地址和數據線,但內部對程序和數據仍然是分別進行訪問的機制。

圖2-3 哈佛結構

圖2-4 改進型哈佛結構

改進型哈佛結構的特點為:

  • 使用兩個獨立的存儲器模塊,分別存儲指令和數據,每個存儲模塊都不允許指令和數據并存,以便實現并行處理;
  • 具有一條獨立的地址總線和一條獨立的數據總線,利用公用地址總線訪問兩個存儲模塊(程序存儲模塊和數據存儲模塊),公用數據總線則被用來完成程序存儲模塊或數據存儲模塊與CPU之間的數據傳輸;
  • CPU內部保留了程序和數據分別訪問結構,但外部分時復用一組地址和數據總線。

3.馮·紐曼結構與哈佛結構工作方式的區別

在典型情況下,完成一條指令需要3個步驟,即取指令、指令譯碼和執行指令。從指令流的定時關系也可看出馮·紐曼結構與哈佛結構處理方式的差別。舉一個最簡單的對存儲器進行讀寫操作的指令時序例子,如圖2-5所示。

圖2-5 馮·紐曼結構處理器指令流的定時關系示意圖

指令1至指令3均為存數據指令。對于馮·紐曼結構處理器,由于取指令和存數據要從同一個存儲空間存取,經同一總線傳輸,因而它們無法重疊執行,只有一個完成后再進行下一個。

采用哈佛結構處理以上同樣的3條存取數指令如圖2-6所示,由于取指令和存取數據分別經由不同的存儲空間和不同的總線,使得各條指令可以重疊執行,這樣,也就克服了數據流傳輸的瓶頸,提高了運算速度。

圖2-6 哈佛結構處理器指令流的定時關系示意圖

在ARM處理器系列中,ARM7TDMI采用了馮·紐曼結構,所以其內核的高速數據緩存器Cache就只有一個統一的存儲區;而ARM9及之后的處理器則采用了哈佛結構,其內核有相互獨立的數據Cache(D Cache)和代碼Cache(I Cache)。

主站蜘蛛池模板: 汉中市| 绍兴县| 东台市| 张北县| 郧西县| 印江| 林西县| 闸北区| 怀宁县| 孝昌县| 威远县| 合水县| 长寿区| 永顺县| 上思县| 洪湖市| 柘荣县| 柳河县| 旅游| 裕民县| 马尔康县| 红河县| 长寿区| 嘉善县| 库伦旗| 岑溪市| 临西县| 宜宾市| 三门县| 隆德县| 张家口市| 肇州县| 凯里市| 盘锦市| 潮安县| 清水县| 彰武县| 泰和县| 江永县| 万盛区| 乃东县|