一.計算機硬體組成
計算機系統是一個硬體和軟體的綜合體,可以把它看成按功能劃分的多級層次結構。硬體通常是指一切看得見,摸得著的設備實體。原始的馮諾依曼計算機在結構上是以運算器為中心的,二發展到現在,已轉向以存儲器為中心了。如下圖:
1.控制器。控制器是分析和執行指令的部件,也是統一指揮並控制計算機各部件協調工作的中心部件,所依存的是機器指令。控制器的組成如下:
程序計數器PC:存儲下一條要執行指令的地址。指令寄存器IR:存儲即將執行的指令。指令解碼器ID:對指令中的操作碼欄位進行分析解釋。時序部件:提供時序控制信號。2.運算器。運算器也稱為算術邏輯單元ALU,其主要功能是在控制器的控制下完成各種算術運算和邏輯運算。運算器的組成包含如下:
算術邏輯單元ALU:數據的算術運算和邏輯運算。累加寄存器AC:通用寄存器,為ALU提供一個工作區,用在暫存數據。數據緩衝寄存器DR:寫內存時,暫存指令或數據。狀態條件寄存器PSW:存狀態標誌與控制標誌【爭議:也有將其歸為控制器的】。3.主存儲器:主存儲器也稱為內存儲器【通常簡稱為內存或主存】。存儲現場操作的信息與中間結果,包括機器指令和數據。
4.輔助存儲器。輔助存儲器也稱為外存儲器,通常簡稱為外存或輔存。存儲需要長期保存的各種信息。
5.輸入設備:輸入設備的任務是把人們編好的程序和原始數據輸入到計算機中,並且將它們轉換成計算機內部所能識別和接受的信息方式。按輸入信息的形態可分為字符輸入,圖形輸入,圖像輸入及語音輸入等。目前,常見的輸入設備有鍵盤,滑鼠,掃描儀等。
6.輸出設備:輸出設備的任務是將計算機的處理結果以人或其他設備所能接受的形式輸出計算機。目前,最常用的輸出設備是印表機和顯示器。有些設備既可以是輸入設備,同時也可以是輸出設備,例如,輔助存儲器,自動控制和檢測系統中使用的數模轉換裝置等。
二.計算機系統結構的分類
計算機的發展經歷了電子管和電晶體時代,集成電路時代【中小規模,大規模,超大規模,甚大規模,極大規模】。目前,世界最高水平的單片集成電路晶片上所能容納的元器件數已經達到80多億個。1.存儲程序的概念存儲程序的概念是馮·諾依曼等人於1946年6月首先提出的,它簡要地概括為以下幾點:
計算機硬體應由運算器,存儲器,控制器,輸入設備,輸出設備五大基本部件組成。計算機內部採用二進位來表示指令和數據。將編好的程序和原始數據事先存入存儲器中,然後再啟動計算機工作。這就是存儲程序的基本含義。馮·諾依曼對計算機的最大貢獻在於「存儲程序控制」概念的提出和實現。通常把符合存儲程序概念的計算機統稱為馮·諾依曼型計算機。當然,現代計算機與早期計算機相比,在結構上有很多改進。馮·諾依曼型計算機的主要弱點在於存儲器訪問會成為瓶頸。目前,已出現了一些突破存儲程序控制的計算機,統稱為非馮·諾依曼型計算機,例如,數據驅動的數據流計算機,需求驅動的規約計算機和模式匹配驅動的智能計算機等等。2.Flynn分類根據指令流,數據流的多倍性特徵對計算機系統進行分類:
1.指令流:指機器執行的指令序列。2.數據流:指由指令流調用的數據序列,包括輸入數據和中間結果,但不包括輸出數據。Flynn根據不同的指令流-數據流組織方式,把計算機系統分成以下四類。
單指令單數據流SISD:傳統的順序執行的單處理器計算機,其指令部件每次只對一條指令進行解碼,並只對一個操作部件分配數據。單指令多數據流SIMD:以並行處理機【矩陣處理機】為代表,並行處理機包括多個重複的處理單元,由單一指令部件控制,按照同一指令流的要求為它們分配各自所需的不同數據。多指令流單數據流MISD:具有多個處理單元,每個處理單元按不同的指令對同一數據流及其中間結果進行不同的處理。一個處理單元的輸出又作為另一個處理單元的輸入。這類系統實際上很少見。多指令多數據流MIMD:指能實現作業,任務,指令等各級全面並行的多機系統。如多核處理器,多處理機屬於MIMD。三.複雜指令集系統與精簡指令集系統
在計算機系統結構發展的過程中,指令系統的優化設計有兩個截然不同的方向,一個是增強指令的功能,設置一些功能複雜的指令,把一些原來由軟體實現的,常用的功能改用硬體的指令系統來實現,這種計算機統稱為複雜指令系統計算機CISC;另一個是儘量簡化指令功能,只保留那些功能簡單,能在一個節拍內執行完成的指令,較複雜的功能用一段子程序來實現,這種計算機系統統稱為精簡指令系統計算機RISC;
1.CISC指令的特點:
指令數量眾多。指令系統擁有大量的指令,通常有100~250條。指令使用頻率相差懸殊。最常用的是一些比較簡單的指令,僅佔指令總數的20%,但在程序中出現的頻率卻佔80%。而大部分複雜指令卻很少使用。支持很多種尋址方式。支持的尋址方式通常為5~20種。變長的指令。指令長度不是固定的,變長的指令增加指令解碼電路的複雜性。指令可以對主存單元中的數據直接進行處理。典型的CISC通常都有指令能夠直接對主存單元中的數據進行處理,其執行速度較慢。以微程序控制為主。CISC的指令系統很複雜,難以用硬布線邏輯【組合邏輯】電路實現控制器,通常採用微程序控制。2.RISC指令系統的特點RISC要求指令系統簡化,操作在單周期內完成,指令格式要求一致,尋址方式儘可能減少,並提高編譯的效率,最終達到加快機器處理速度的目的。RISC指令系統的主要特點如下:
指令數量少。優先選取使用頻率最高的一些簡單指令和一些常用指令,避免使用複雜指令。只提供了LOAD【從存儲器只讀數】和STORE【把數據寫入存儲器】兩條指令對存儲器操作,其餘所有的操作都在CPU的寄存器之間進行。指令的尋址方式少。通常只支持寄存器尋址方式,立即尋址方式和相對尋址方式。指令長度固定,指令格式種類少。因為RISC指令數量少,格式少,相對簡單,其指令長度固定,指令之間各欄位的劃分比較一致,解碼相對容易。以硬布線邏輯控制為主。為了提高操作的執行速度,通常採用硬布線邏輯來構建控制器。單周期指令執行採用流水線技術。因為簡化了指令系統,很容易利用流水線技術,使得大部分指令都能在一個機器周期內完成。少數指令可能會需要多周期,例如,LOAD/STORE指令因為需要訪問存儲器,執行時間就會長一些。優化的編譯器:RISC的精簡指令集使編譯工作簡單化。因為指令長度固定,格式少,尋址方式少,編譯時不必具有相似功能的許多指令中進行選擇,也不必為尋址方式的選擇而費心,同時易於實現優化,從而可以生成高效率執行的機器代碼。CPU中的通用寄存器數量多,一般在32個以上,有的可達上千個。大多數RISC採用了Cache方案,使用Cache來提高取指令的速度。而且,有的RISC使用兩個獨立的Cache來改善性能。一個稱為指令Cache,另一個稱為數據Cache。這樣,取指令和取數據可以同時進行,互不幹擾。
四.總線
總線是一組能為多個部件分時共享的公共信息傳送線路。共享是指總線上可以掛接多個部件,各個部件之間相互交換信息都可以通過這組公共線路傳送;分時是指同一時刻只允許有一個部件向總線發送消息,如果出現兩個或兩個以上部件同時向總線發送信息,勢必導致信號衝突。當然,在同一時刻,允許多個部件同時從總線上接收相同的信息。
按總線相對於CPU或其他晶片的位置可分為內部總線和外部總線兩種。在CPU內部,寄存器之間和算術邏輯部件ALU與控制部件之間傳輸數據所用的總線稱為內部總線;外部總線是指CPU與內存RAM,ROM和輸入/輸出設備接口之間進行通信的通路。由於CPU通過總線實現程序取指令、內存/外設的數據交換,在CPU與外設一定的情況下,總線速度是制約計算機整體性能的最大因素。
按總線功能來劃分,又可分為地址總線、數據總線、控制總線三類,人們通常所說的總線都包括這三個組成部分,地址總線用來傳送地址信息,數據總線用來傳送數據信息,控制總線用來傳送各種控制信號。
五. 真題
1. 某指令流水線由5段組成,各段所需要的時間如下:
連續輸入100條指令時的吞吐率為(C)。
A.100/800t
B.100/495t
C.100/305t
D.100/300t
【解析】吞吐率是指單位時間裡流水線處理機流出的結果數。對指令而言即為單位時間裡執行的指令數。對於這一題,流水線的子過程所用時間不同,所以指令第一次執行時間應該為(1+3+1+2+1)△t,從第二次開始,指令在流水操作中應該看最長子過程所用時間,一共有(n-1)次,所以總時問為(1+3+1+2+1)△t+3(n-1)△t。本題中連續輸入100條指令,所以完成這100個任務所需的時間為(1+3+1+2+1)△t+3(100-1)△t=305△t,所以吞吐率為100/305△t。