




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章計算機系統知識第1章計算機系統知識計算機系統包括硬件系統和軟件系統。計算機系統結構是程序設計人員看到的計算機系統的外部屬性,即系統的功能和結構特性。計算機組成主要研究計算機的內部屬性,計算機各部件的功能和聯系,以及組成工作原理。計算機軟件系統知識,在以后各章中敘述。本章內容根據考試大綱的要求和歷屆考試命題的情況制定。主要包括數據表示、指令系統、中央處理器、存儲系統、I/O技術、并行處理、計算機安全性、可靠性和系統性能評價。1.1內容提要=1\*GB3①計算機系統的組成和特性,層次結構及分類方法。=2\*GB3②計算機中數據表示方法,數制、碼制、浮點數表示法及數據校驗碼。=3\*GB3③CPU基本構造及功能。=4\*GB3④指令系統及RISC技術。=5\*GB3⑤存儲系統,包括Cache及虛擬存儲器工作原理。=6\*GB3⑥外圍設備,包括接口、總線及I/O控制方式。=7\*GB3⑦計算機安全性、可靠性及系統性能評價。1.1.1計算機系統的組成和特性1.計算機系統構成根據馮·諾依曼提出的經典的計算機結構模型,計算機由運算器、控制器、存儲器、輸入裝置和輸出裝置五大部件構成,運算器為中心,被運算的數據用二進制數表示,機器指令包括操作碼和地址碼,也用二進制數編碼表示。計算程序和數據都放在存儲器中,存儲單元地址采用線性編址,使用程序計數器PC決定程序中指令執行的順序。馮·諾依曼結構計算機是基于控制驅動的存儲程序計算機。虛擬計算機:人根據邏輯設計使用各種電子器件研制成功的計算機稱為物理機器,是實實在在的硬件計算機。人們使用機器語言(二進制指令)與物理機器打交道。計算機系統包含硬件系統和軟件系統。不同的用戶使用不同層次的軟件語言與計算機交往,可以看作與不同層次語言的虛擬計算機交往。這種機器實際上是不存在的,都必須通過編譯程序等翻譯成機器語言,才能在物理機器上運行。2.計算機系統的層次結構用戶在不同層次使用不同語言與計算機打交道,均可實現程序要求,故可以把計算機看作一個多層次的系統。第一層(核心層)是物理機器。人們使用二進制機器指令與機器交往。第二層是操作系統級機器。操作系統用于管理計算機的軟件和硬件資源。人們通過系統調用,方便有效地使用和管理計算機資源,把這個層次叫做操作系統級機器,也可叫做操作系統虛擬機。第三層是匯編語言機器。人們使用容易記憶的符號表示的指令(匯編語言)與機器打交道。當然,最終執行這些匯編語言時還要通過匯編器把匯編語言翻譯成機器語言才能在物理機器上執行。可把這層看作匯編語言虛擬機。第四層是高級語言機器。人們使用高級語言與機器打交道。運行程序時,首先通過編譯程序把高級語言翻譯成機器語言才能執行,這層也可叫做高級語言虛擬機。3.計算機的特性50年來,計算機在各個領域得到了廣泛應用,其主要原因和技術關鍵在于以下幾點。①由于采用高速電子開關電路,決定了計算機高速度運算的功能。②由于采用二進制數表示被運算的數據,決定了機器具有非常高的運算精度。③邏輯運算能力決定了計算機的控制功能和人工智能領域的應用。④數字化信息編碼技術,決定了計算機處理文字、語音、圖像的通用性。⑤由于存儲程序技術的采用,決定了自動執行程序的能力和計算的快速性。因此通常講的計算機,準確地說應該稱為電子數字計算機。4.計算機的分類①按照計算機邏輯電路采用的器件劃分,計算機可分為電子管、晶體管、集成電路和大規模集成電路(一、二、三、四代)計算機。②按照機器的功能和規模可將計算機劃分為巨、大、中、小、微各種類型。③按照計算機的應用領域,可將計算機分成通用機和專用機。例如工作站、服務器,嵌入式計算機,以及圖像處理計算機、控制計算機等。④由于并行處理技術的發展,按照計算機系統中處理機的數目和作用可分為單處理機、多處理機、并行處理機、超標量處理機、超流水線處理機、MPP大規模并行處理機和機群系統等。⑤1966年M.J.Flynn提出了按照指令流和數據流的不同組織方式的Flynn分類法,計算機系統可以分為以下幾類。SISD:單指令流單數據流計算機,即普通的計算機。SIMD:單指令流多數據流的計算機,如陣列處理計算機。MISD:多指令流單數據流計算機,有人把流水線機器劃歸這一類。MIMD:多指令流多數據流計算機,即多處理機系統。⑥1972年馮澤云按照最大并行度的概念,提出了馮氏分類法,他把計算機的字長和位片寬度(每次處理的字數)作為計算機分類的主要指標,最大并行度指計算機系統單位時間內能夠同時處理的二進制位數。字串位串WSBS為第一代串行計算機,計算機中對各個字的處理是串行進行的,每個字的各位二進制數又是串行進行的,速度很慢。字并位串WPBS指傳統計算機,計算機一個字的各位二進制數是并行運算的,但各個字是串行進行的,每次只處理一個字。字串位并WSBP處理機的字寬是1位,但同時可處理多個字,如STARAN、MPP計算機等。字并位并WPBP處理機字長各位二進制數同時運算,同時機器可對多個字并行處理,如ILLIACIV、Cmmp等。在技術和應用的推動下,計算機的系統結構取得了很大的發展,例如采用數據驅動的數據流計算機,面向函數式語言的歸約計算機等,它們都是非諾依曼計算機,但計算機的主流和基礎仍是馮·諾依曼結構。1.1.2數據表示1.內容要點1)數據分類計算機中處理的數據有兩類:數值數據和非數值數據。數值數據指表示數量的數據,有正負和大小之分,在計算機中的數據表示為二進制的形式進行運算和存儲。非數值數據包括字符、漢字、聲音和圖像等,在計算機中處理前必須用某種編碼形式表示并轉換成二進制數。2)數制常用的十進制數的計數法則是:表示一位數有10個不同的符號(0,1,2,3,4,5,6,7,8,9),相鄰數位之間的關系是“逢十進一”(各位數的位權是10n),它所表示的數值是各位數按權展開的和,十進制數中的10稱為該計數制的基數。二進制數的基數為2,表示一位數有兩個符號:0和1,相鄰數位間之進位關系為“逢二進一”,表示的十進制數值為各位數按權展開的和。為了方便,計算機中二進制數常用八進制數、十六進制數表示,應熟記八進制數、十六進制數與二進制數的對應關系。BCD碼:每位十進制數用4位二進制數表示,又可分為有權碼和無權碼兩種方案。3)二進制數與其他記數制數的轉換方法二進制數轉換為十進制數是把二進制數各位按權展開求和。十進制數轉換為二進制數時分整數和小數兩部分,分開進行轉換然后相加。十進制整數部分采用“除2取余”法,直到商數為0,最后得到的余數是二進制數的最高位。十進制小數部分采用“乘2取整”的方法,首先得到的整數部分為轉換成二進制小數的最高位,直到要求的精度。以此類推,十進制數轉換成任意進制數(如r進制)的方法,整數部分為“除r取余”,小數部分為“乘r取整”。4)機器數各種數據在計算機中表示的形式稱為機器數,其特點是數的符號用0、1表示,如0表正數,1表負數。小數點隱含表示不占位置。機器數對應的實際數值稱為該數的真值。機器數有兩種:無符號數和帶符號數。無符號數表示正數,沒有負數,機器數中無符號位。無符號整數的小數點,固定在該數最低位之后,是純整數。無符號小數的小數點固定在該數最高位之前,是純小數。帶符號機器數的最高位是表示正、負數的符號位,其余為數值位。帶符號整數的小數點固定在該數最低位之后,是純整數。帶符號小數的小數點固定在該數最高位(符號位)之后,最高數值位之前,是純小數。這種表示數的方式稱為定點數。浮點數小數點的位置不是固定的,如N=MRE。小數點位置用階碼E表示,E為定點整數。浮點數的數值部分用尾數M表示,M為定點小數,R為階E的底數,在一個指定的機器中R是固定的,在浮點數表示中不再出現。5)定點數據編碼方法為了運算方便,帶符號的機器數有不同的編碼方法,稱為碼制。=1\*GB3①原碼:又稱符號絕對值碼。該數最高位為符號位,正數用0表示,負數用1表示。其他位為數據位,用二進制數絕對值表示。原碼與真值轉換方便,但作加減運算不便,且零有+0和–0兩種表示方法。=2\*GB3②反碼:正數的反碼表示與原碼相同。負數的反碼,符號位用1表示,數值位由其絕對值各位取反得到。反碼零也有+0和–0兩種表示方法。因運算不便使用較少。=3\*GB3③補碼:為了加減運算方便引入補碼概念。關鍵思想是用加法代替減法。正數的補碼與原碼表示相同。負數的補碼,符號位用1表示,數值位用其絕對值的補數表示(即原碼各位求反,末位加1)。補碼最大的優點是作加減運算方便,如(x+y)補=(x)補+(y)補,(x–y)補=(x)補+(–y)補。補碼符號位參加運算,不單獨處理,現代計算機中大都采用補碼系統。補碼的另一優點是零的表示形式是唯一的,即(+0000)補=(–0000)補=00000。補碼的表數范圍比原碼、反碼略寬。在定點小數中,補碼可以表示–1。(–1)補=1.0000,而原碼、反碼不能表示絕對值為1的數。=4\*GB3④移碼:為了比較兩個整數的大小,引入移碼的概念。移碼與補碼有類似的地方(數值部分),但符號位與補碼相反,即正數的移碼符號位為1,負數的移碼符號位為0。或者說求一個數的移碼,先求其補碼再將其符號位變反即可得到。移碼表數范圍與補碼整數的表數范圍相同。6)非數值數據(符號數據)英文字符編碼的國際標準是ASCII碼。用7位二進制數表示,可表示128個符號。擴展的二/十進制交換碼EBCDIC,采用8bits表示一個字符,可表示28=256個不同符號。漢字編碼有很多種方法。常用的數字編碼方式是區位碼,將常用漢字分成94個區,每個區又分94位,每個漢字的區位編號用兩個字節十進制數表示。拼音碼和字形碼也是漢字常用輸入編碼方法。漢字國標碼也是數字編碼,它是漢字信息交換碼國家標準,與區位碼一一對應,但區號位號用十六進制數表示,且第一個漢字放在(21)16區(21)16位。計算機內存儲漢字的編碼方法與輸入編碼不同,通常用兩個字節漢字國標碼表示,為與ASCII碼區分,將每個字節最高位置1表示漢字字符,而ASCII碼最高位為0,低7位表示其編碼,這種漢字編碼稱為漢字機內編碼,簡稱內碼。漢字輸出時通過內碼找到其對應字模碼(點陣字型)逐點輸出點陣字形。如果一個漢字用16×16點陣表示,則每個漢字要占2字節×16=32字節,兩級漢字共6763個字模,占用大量存儲空間。7)數據校驗方法計算機中的數據在傳送、存儲過程中可能出錯,為了及時發現和糾正錯誤,編碼中引入差錯檢查機制。常用的校驗編碼有奇偶校驗碼、海明校驗碼和CRC循環冗余校驗碼。奇偶校驗是最常用的校驗方法,可以發現一位錯或奇個數位同時出錯。2.學習難點1)碼制碼制是為了運算方便而提出的數值數據的編碼方法。=1\*GB3①4種碼制中,正數的原碼、補碼、反碼的表示都是一樣的,即符號位為0,數值位為其絕對值。而正數的移碼表示中,雖然其數值也是其絕對值,但符號位相反,即正數的符號位為1,負數的符號位為0。=2\*GB3②負數的原碼、反碼、補碼的符號位都為1,但數值位表示方法是不同的。原碼的數值位為該數的絕對值。反碼的數值位為該數的絕對值每位求反。補碼的數值位為該數絕對值的補數,即其絕對值每位求反,末位加1。負數的移碼,其數值位與補碼相同,即該數絕對值的補數,但符號位與補碼不同(與原碼反碼也不同),即負數移碼的符號位為0。=3\*GB3③4種編碼中零的表示不同。(+0)原?=0000(–0)原=1000(+0)反=0000(–0)反=1111(+0)補?=0000(–0)補=0000(+0)移=1000(–0)移=1000=4\*GB3④4種編碼表示數的范圍不同,以8位二進制帶符號整數x為例表示如下。11111111(x)原01111111,–(27–1)?(x)原?(27–1),即–127?(x)原?+127;10000000?(x)反?01111111,–(27–1)?(x)反?(27–1),即–127?(x)反?+127;10000000?(x)補?01111111,–27?(x)補?(27–1),即–128?(x)補?+127;注意:此時(x)補最小值是–27=–128,而不是–(27–1)=–127。00000000?(x)移?11111111,–27?(x)移?(27–1),即–128?(x)移?+127。2)浮點數n位定點數的補碼或移碼可表示2n個數,而其原碼、反碼只能表示2n–1個數,表數范圍小。浮點數是小數點位置不固定的數,同時為了擴大定點數的表示范圍,引入浮點數概念。任意浮點數N可用階碼E和尾數M兩個部分來表示:N=MRE。M稱為浮點數尾數,表示其數值的有效數字,是定點小數。E稱為浮點數的階碼,表示小數點的位置,是定點整數。R是階碼的底。在浮點數表示中R是固定不變的,隱含表示,通常取R=2,則N=M×2E。機器中只需給出E和M,即可知該數之數值。E和M都是定點數,也可分別指定其為原碼、反碼、補碼、移碼,同樣可求出其表數范圍。需要注意,對于浮點數N,有以下幾種情況。=1\*GB3①最大正數:M是最大正數,E是最大正數。=2\*GB3②最小正數:M是最小正數,E是最小負數。=3\*GB3③最大負數:M是最大負數,E是最小負數。=4\*GB3④最小負數:M是最小負數,E是最大正數。注意補碼、移碼的最小負數與原碼、反碼是不同的。計算機中一個數的浮點數有許多種表示方法。為了規范,規定在運算結束將運算結果存到機器中時,必須是規格化的浮點數,即浮點數尾數的最高數值位是有效數字,即1/2?|M|?1。3)海明校驗碼常用于發現糾正1位數據出錯。其編碼規則是在n位被校驗數據位間,插入K個校驗位,其校驗位之個數滿足關系2k–1?n+k;校驗位在海明碼中的位置是固定的,即海明碼的1,2,4,8…位;一個校驗位可校驗多個數據位,每個校驗位的取值等于其被校驗數據位之和。其中被校數據位海明位號等于各校驗位海明位號之和。當某個數據位出錯時,則引起有關的校驗位改變;當所有海明位均正確時,則有關的校驗值全為0。當某個校驗位出錯時,則有關的校驗值只有一位不為0,且其編碼為該出錯校驗位之海明位號;當某個數據位出錯時,則有關的校驗值有兩位或3位不為0,且其編碼為該出錯數據位之海明位號。糾正錯誤時,只要將出錯位變反即可,因此可以自動糾正1位錯。發現多位數據出錯或糾正多位出錯的情況要復雜得多。4)CRC循環冗余校驗碼用于發現和糾正信息傳送過程中連續出現的多位錯誤。CRC碼是指在k位被校驗數據之后拼接r位校驗碼,得到k+r位編碼。需設計一種算法,使得發送方根據k位數據算出r位校驗位之值,一起傳給對方;接收方根據同一算法對k+r位數據進行校驗,即可判斷傳送是否出錯。關鍵是找出這種算法。我們把一個二進制代碼看成一個多項式M(x)按x的降冪排列的多項式的系數。例如,可將1101看成1x3+1x2+0x1+1x0的各個系數,一個4位二進制代碼看作一個三次多項式,一個n位代碼可看作n–1次多項式。代碼左移3位相當于多項式乘以x3,如(x3+x2+1)x3=x6+x5+x3。一個多項式除以另一個多項式,其商和余數也都是多項式,余數多項式次數比除數多項式的次數少1。對多項式系數的運算按模二運算進行,運用模二運算時各位數據間沒有進位關系。為了產生CRC碼的r位校驗碼,選擇一個生成多項式G(x),G(x)是一個r次的多項式。如果被校驗的代碼為k位二進制數據,可用M(x)=Mk–1Mk–2…M1M0來表示;k位數據后增加r位校驗位,則將M(x)乘以xr,左移r位,再除以G(x),所得余數多項式R(x),為r–1次多項式,余數相應代碼為r位;將該r位代碼接在左移r位的M(x)后面得到M(x)xr+R(x),它是G(x)的倍式,可以被G(x)整除。其各位系數即構成k+r位CRC循環冗余校驗碼。接收方收到這k+r位信息后用同樣的生成多項式G(x)去除,如果傳送信息完全正確,則應能除盡,余數為0。如果余數不為0,則說明傳送出錯,并根據不同的余數判斷哪一位出錯。將該位變反,即可糾正錯誤。顯然生成的多項式G(x)任何一位出錯,CRC碼除以G(x)的余數不為0。不同的碼位出錯余數不能相同。給定生成多項式后,余數與出錯碼位之間對應關系不變,與被校驗數據無關。對余數繼續作模二除法運算,應使余數循環。1.1.3計算機算術運算和邏輯運算1.內容要點(1)定點加減法運算。一般采用補碼加減法實現,對于定點小數,加法:(x+y)補?=(x)補+(y)補mod2;減法:(x–y)補=(x)補+(–y)補mod2。定點數的模數可看作最高位(符號位)之進位,定點小數之模為2。定點數相加減,可能出現溢出,它不是最高位之進位。溢出判斷方法有兩種:雙符號位法和進位判別法。雙符號位法,數的符號位用兩位二進制數表示:00為正數,11為負數,兩個符號不相同時溢出。進位判別法判斷結果溢出,要求符號位進位Cn與次高位(最高數據位)進位Cn–1之中有一個有進位,但不能同時有進位,即CnCn–1=1。(2)定點數乘除法用原碼方便,結果的符號為運算兩數符號之異或,積(或商)為兩數絕對值之積(或商)。(3)浮點數加減法運算步驟。①對階,參加運算兩數階碼必須相同。②尾數加減。③尾數規格化。④舍入。⑤溢出處理,判斷階碼是否溢出。(4)浮點數的乘除運算。浮點數的乘除運算:浮點數相乘,其積的階碼為兩數階碼之和,積的尾數為兩尾數之積;浮點數相除,其商的階碼為兩數階碼之差,商的尾數為兩尾數之商。其結果均需規格化。(5)邏輯代數與基本邏輯運算。=1\*GB3①必須熟記基本邏輯運算常用公式,對邏輯表達式化簡很有用。=2\*GB3②邏輯運算(與、或、非、異或)都是對應位之間的運算,相鄰數位沒有進位關系。2.學習難點1)浮點加減法運算=1\*GB3①首先必須完成對階操作。即當兩數階碼不同時,要把兩數的階碼都變成大階,此時階碼小的數變大,為了與原數保持相等,必須把該數之尾數右移兩數階差那么多位。=2\*GB3②浮點數兩尾數相加減后必須對結果進行規格化,尾數為定點小數,所謂規格化即要求尾數的絕對值要大于等于0.5,且小于1。在補碼表示方法中,要求尾數的符號位與數值最高位不同,即0.1×…×或1.0×…×。尾數規格化有向左規格化與向右規格化之分。當該尾數絕對值小于0.5時,需要左規,每左規一位,其階碼要減1才能保持與左規前的數相等。當尾數溢出時,需要右規。判斷尾數之和是否溢出,可用雙符號位法。00表示正數符號,11表示負數符號。當溢出時兩個符號位不同,結果大于1為上溢,結果符號為01;結果小于–1為下溢,結果符號為10。當該尾數的絕對值大于等于1時,需要右規,右規一位,其階碼要加1。注意:此時浮點數階的底數(基數)等于2。=3\*GB3③溢出處理。浮點數尾數加減運算及規格化完成后,需要判斷該浮點數結果是否溢出。溢出指浮點數結果的階碼超過階碼能表示的范圍。階碼符號采用雙符號位表示時,正數的符號為00,負數的符號為11;正溢時符號位為01,負溢時符號位為10。即階碼兩個符號位不相同時為溢出。正溢時,置溢出標志轉溢出處理,負溢時,把結果當零看待,各位均置0,稱為機器零。2)邏輯表達式化簡常用公式要記清:A+A=A,AA=A,A+=1,=0;A+0=A,A+1=1,A=A;AB=+,A(B+C)=AB+AC;A+(BC)=(A+B)(A+C);,;A+=A+B。證明這些公式或化簡邏輯表達式可用真值表法、公式法或卡諾圖法等。1.1.4CPU基本構造及功能1.計算機的硬件組成計算機由5大部件組成,再加上外存儲器,機構越來越復雜。5個部件都要進行互聯交換數據,常用的方案是采用總線結構。總線可分為內部總線與外部總線,內部總線用于連接CPU內各模塊,外部總線用于連接CPU、存儲器和I/O設備,又稱系統總線。總線的特點是分時共享,不能有兩個設備同時向總線上發送數據。系統總線包括數據總線、地址總線、控制總線,也可采用分層總線結構,滿足不同部件對數據傳輸速率的不同要求。2.中央處理器中央處理部件簡稱CPU,由運算器、控制器構成,是整個計算機的核心。運算器負責數據的處理和加工,其中心是算術邏輯運算部件ALU,決定ALU的性能的關鍵是并行加法器和先行進位系統。負責存放被運算數據和運算結果的是一組通用寄存器,通過兩個多路數據選擇開關向ALU同時提供兩個被運算的數據,因此通用寄存器通常采用雙端口寄存器。每條指令的運算結果也寫入通用寄存器中,指令運算結果的若干特征存放到標志寄存器中,又叫程序狀態字寄存器,PSW主要標志有溢出標志V,進位標志C,結果為零標志Z和數據符號標志S,當運算結果為零時,置標志Z?=1。當Z?=0時,表示運算結果不為零。控制器是整機的控制中心,主要功能是決定程序中指令執行順序和產生完成每條指令功能的全部控制命令。控制器包括指令計數器PC,用于指出當前指令在主存中存放的地址,通常程序順序執行時(PC)+1,自動產生下一條要執行指令的地址。指令寄存器,存放正執行的指令,直到本條指令結束。指令譯碼器,用來分析指令功能,決定控制器產生完成指令功能的控制命令。時序電路產生控制命令所需的時間信號,通常執行指令需要經過若干步驟才能實現,如取指令、分析指令、取數、運算幾個階段,而不是一步就能完成的。每一個功能階段稱為一個CPU周期,又叫機器周期,每一個機器周期內的操作,有時也要分出先后次序,因此又給出節拍電位(時鐘周期),這些用來區別時間先后順序的信號稱為時序信號,用來表示每一個控制命令產生的時間順序。操作控制部件,用來產生計算機內各個部件完成各種指令功能的全部控制命令,這是一個很復雜,也很重要的部件,控制命令產生的條件主要是操作碼譯碼器的輸出和時序信號,有時還需要運算器等有關條件、狀態信號。操作控制命令通常采用邏輯門電路實現,這種控制器方案又叫組合邏輯控制器方案。組合邏輯控制器的特點是產生控制命令的速度較快,常用于追求速度的實時控制場合和RISC系統中,其缺點是調試、修改、擴充指令時比較困難。產生控制命令的另一種方案叫微程序控制方案,其特點是每一條機器指令都用一個專門的微程序來實現,微程序存放在速度很高的控制存儲器中,對控存的要求是速度快、可靠,通常采用只讀存儲器ROM。微程序控制器的優點是邏輯電路規整,調試、修改、擴充指令都較方便,缺點是速度較慢。運算器、控制器各個部件間交換數據時,不使用專門的線路連接,通常都采用總線的方案,將各寄存器都接到一組總線上,寄存器發送數據時,發送到這組總線上,寄存器需要接收數據時,從這組總線上下載數據,不但節省連線數目,連接也比較規整,擴充也較容易。其缺點是多個部件同時要發送數據時必須分先后次序分開進行。總線工作的特點是分時共享。CPU內部各寄存器間交換數據使用CPU總線,通常是指ALU的輸出到各寄存器的數據接收端。CPU與存儲器、I/O設備間交換數據使用系統總線。典型的單總線結構計算機是DEC的PDP-11計算機。為了提高運算速度,常常采用雙總線結構,CPU訪問主存使用存儲總線,CPU與I/O通信使用I/O總線。也有以存儲器為中心的雙總線方案,主存的一邊連接CPU,另一邊連接I/O,以滿足高速外存儲器的直接存儲器訪問DMA技術的需求。1.1.5指令系統與RISC技術1.指令格式一條指令的內容,應該包括該指令執行的操作運算種類和參加運算的操作數放在什么地方,有時還給出下條指令的地址,保證程序可以連續運行下去。計算程序是由一條一條指令組成的,指令和運算的數據一樣放到存儲器中保存,需要時從存儲器中一條一條地取出來加以執行。因此,指令字長不是任意指定的,為了簡化存儲器的結構,充分發揮存儲器中每一個存儲單元的利用率,一般規定一個存儲單元存放一條指令。為了照顧功能不同的長短指令的要求,一個存儲單元可以存放多條指令,或一條指令存放在多個存儲單元中。因為機器字長是字節長度的整數倍,指令字長也是字節長度的整數倍。具體指令字的長度與指令包括的內容有關,如:操作碼的位數,直接決定機器中指令的種類;地址碼位數,決定可直接訪問的存儲器的容量;地址碼的個數,直接影響地址碼部分的長度,影響執行指令的具體操作。一般指令中給出的信息數目越多,指令的功能越強。通常指令需要給出以下信息。=1\*GB3①操作碼:指明操作種類。=2\*GB3②操作數地址:通常雙操作數指令,如,加減乘除指令需要給出兩個操作數在存儲器中存放的地址,有時還需要給出運算結果存放的地址。=3\*GB3③下條指令地址。但地址個數越多,指令字就越長,程序占主存的存儲空間就越大。為了壓縮指令字長,減少指令中地址個數是很有意義的。按照指令中地址碼的個數,指令可分為以下三種。1)三地址指令指令中給出三個地址:兩個操作數地址A1、A2,及運算結果存放地址A3。如果操作碼用OP表示,則這種三地址指令執行的操作是:(A1)OP(A2)→A3。其含義是A1單元的內容與A2單元的內容執行OP規定的操作,運算結果放在A3單元中。關于下條指令的地址是這樣解決的,程序中的指令是按照它們的執行順序存放的,下條指令就放在本條指令之后的那個單元中,本條指令的地址加1,就是下條指令的地址。因此,一般機器中設置程序計數器PC,指明本條指令地址,取出本條指令后(PC)+1給出下條指令地址,這樣在指令字中可以節省一個地址。三地址指令的地址數目較多,指令字較長,是其不便之處。2)二地址指令為了進一步減少指令中地址的個數,通常不給出運算結果存放的地址。這種指令格式規定運算結果存放到兩個操作數地址中的一個地址中。為了區分兩個操作數地址,哪個地址存放運算結果,我們把既放操作數又放運算結果的地址稱為目的操作數地址,另外一個地址稱為源操作數地址。若源地址為A1,目的地址為A2,則其二地址指令執行的操作是:(A2)OP(A1)→A2。二地址指令的地址數目較少,為不少機器采用,但指令執行結束時,目的地址中原來的操作數將被運算結果代替。3)一地址指令為了進一步壓縮指令字長,減少指令中地址的個數,規定一條指令中,只給出一個操作數地址A,另一個字段是操作碼OP。對于雙操作數指令,另一個操作數隱含的規定由運算器的累加寄存器提供。累加寄存器AC專門用于存放每條指令的運算結果。在運算器中是一個特別指定的唯一的寄存器。這種運算器又稱單累加器結構運算器。一地址指令執行的操作是:(AC)OP(A)→AC。累加寄存器AC,不但提供一個操作數,而且存放指令的運算結果。2.尋址方式由于指令字長有限,地址碼的位數有限,為了使指令能夠訪問更大的存儲空間,指令中的地址碼字段不直接給出要訪問的操作數地址,而是只給出尋找操作數地址的位移量(形式地址)和尋找操作數地址的方法。根據位移量和尋找操作數地址方法的規定,找出操作數存放的實際地址(有效地址)。尋找操作數有效地址的方法叫尋址方式。尋址方式不但可以擴大訪問的存儲空間,還可以為用戶提供更加靈活的方法,使得對數組、循環指令的操作數訪問更加方便。(1)直接尋址方式,是指令中的地址碼字段直接給出操作數的有效地址,直接按地址碼訪問存儲器,就可得到操作數。例如,操作碼為OP,地址碼為D,采用直接尋址方式時,操作數有效地址EA=D。(2)間接尋址方式,是指令中地址碼字段D給出的不是操作數的有效地址,D單元的內容才是操作數的有效地址。而地址碼字段D稱為間接地址IA=D,間接地址單元的內容是有效地址EA=(IA)=(D)。(3)變址尋址方式,指令中地址碼字段D給出的是一個位移量,或叫形式地址,另外還需指定一個寄存器作變址寄存器Rx,變址寄存器的內容叫做變址量(Rx),操作數的有效地址EA=(Rx)+D。變址方式可以擴大訪存空間,當形式地址D是8位二進制數時,變址量(Rx)是16位二進制數,二者之和為16位二進制數,因此訪問主存的地址可由8位變成16位,CPU訪問主存空間可達216=64K個單元。另外一個用途,當變址寄存器的內容改變時,訪存地址將隨著變址量的改變而改變,而不需要修改指令。有些機器指令系統中使用自增型變址和自減型變址,就是每讀一次變址寄存器,其內容自動修改+1或者–1,因此可為訪問數組數據提供方便。(4)相對尋址,是一種特殊的變址尋址,當指定程序計數器PC作為變址寄存器使用時,這種變址尋址,叫做相對尋址。此時操作數的有效地址EA=(PC)+D。由于位移量D在指令中是一個常量,因此操作數單元距本條指令單元的距離是固定的,相差D個單元。相對尋址在程序搬家時很有用,因為不管怎么搬家,操作數單元距離本條指令單元的位置是固定不變的,都是D個單元。(5)寄存器尋址。現代計算機運算器中存放數據的寄存器增多,這樣可以減少訪存次數、取數的次數,提高運算速度,并且各寄存器在運算器中的地位和作用都是一樣的,不設專門的累加器,每個數據寄存器都可作為累加器,都可以存放運算結果,這種運算器稱為多累加器方案,或通用寄存器結構。但必須給通用寄存器中每個寄存器一個編號,CPU按寄存器編號從通用寄存器中取數或把結果寫入到通用寄存器中。這時機器指令地址碼字段中給出的是寄存器編號,執行指令時,操作數可由通用寄存器讀出,不需訪問存儲器,執行指令時間較快,指令字長也較短。采用寄存器尋址的指令中,一般采用二地址方案,即一條指令中給出兩個寄存器地址(寄存器編號),一個為源操作數寄存器,另一個為目的操作數寄存器,目的寄存器除了在雙操作數指令中提供一個操作數外,還用來存放運算結果。(6)寄存器間接尋址。仿照間接尋址,也可設寄存器間接尋址,此時寄存器的內容不是操作數,而是存放操作數的主存地址。此時取操作數仍要訪問主存,但可減少取操作數有效地址的訪存時間。仿照直接尋址,寄存器尋址也可稱為寄存器直接尋址。如果某機指令系統中,地址碼字段為D,PC為程序計數器,Rx為變址寄存器,Rb為基址寄存器。常用尋址方式中操作數有效地址EA的計算方法如下。①直接尋址:EA=D。②間接尋址:EA=(D)。③變址尋址:EA=(Rx)+D。④基址尋址:EA=(Rb)+D。⑤相對尋址:EA=(PC)+D。⑥立即數尋址:操作數由指令地址碼字段給出,因此操作數就是D,不需訪存。=7\*GB3⑦堆棧尋址。堆棧是主存中一個專門的存儲區,訪問堆棧時,不需要指定訪問堆棧單元的地址,而是由堆棧指針自動給出訪問單元的地址。例如出棧指令,指令中并不需要指定堆棧中讀出哪個單元,只要指定是出棧操作,則堆棧自動把棧頂單元的內容彈出來送給運算器,具體的棧頂單元的地址是由堆棧指針給出的。堆棧中設有棧底和堆棧指針SP。堆棧空的時候,SP指向棧底單元。當執行堆棧操作時,在向上生成的堆棧中,新寫入的數據不能寫入當前SP指出的棧頂單元中,而是先把堆棧指針加1,把將寫入的數據寫到棧頂單元上面一個單元中,此時(SP)+1指出新寫入數據的單元地址,即已經裝入數據的新棧頂單元。從棧底開始,先進棧的數據單元最接近棧底,以后進入堆棧的數據單元地址逐漸增大;而出棧時,先從最后進棧的數據單元向外彈出數據,每彈出一個數據,堆棧指針(SP)–1,直到堆棧指針指向棧底,堆棧空了,就不能再執行出棧操作了。因此,堆棧尋址的特點是,先進入堆棧的數據最后才能讀出,后進入堆棧的數據反而要先行讀出。這種讀出方法稱為先進后出。在多重中斷嵌套時很有用處。3.RISC技術計算機的指令系統,一定程度上反映了機器的功能,一般大型計算機都具備功能齊全、使用靈活的指令系統,這當然需要復雜的硬件作代價。早期的計算機只有加、減、移位等簡單指令;現代計算機中,不但包括乘除指令,還設了浮點運算、十進制運算、字符運算指令,尋址方式也非常靈活多樣,使用起來非常方便,但軟硬件造價都很高,這種計算機我們稱之為復雜指令系統計算機(CISC)。1975年IBM公司開始研究指令系統合理性問題,J.Cocke提出了精簡指令系統的概念。人們對CISC進行的測試表明,機器執行程序時,各種指令出現的頻率是不同的,最常使用的簡單指令在指令系統中只占20%,但在程序中出現的頻率卻達80%,換句話說,80%的指令,在機器中出現的頻率只有20%。因此簡化指令系統,簡化尋址方式,提高常用的簡單指令的執行速度成為人們追求的方向。1981年加州大學伯克利分校研制的精簡指令系統計算機RISCI,1983年研制的RISCⅡ,以及斯坦福大學的MIPS計算機的出現對RISC技術的發展起了很大推動作用。RISC機具有以下特點。①指令系統只包括使用頻率較高的簡單指令和不復雜的指令。②指令字長度固定,指令格式簡單,尋址方式少。③只有取數、存數指令訪問存儲器,其余指令操作不訪存。④CPU中增加了通用寄存器數量,減少了訪存次數。⑤采用流水線技術,大部分指令在一個機器周期內完成。⑥采用組合邏輯控制器方案。因而RISC非常有效地提高了計算機的運算速度,降低了成本,縮短了研制周期,并能有效地支持高級程序語言,成為計算機發展的一個重要方向。1.1.6存儲系統存儲器是存放被運算數據和處理程序的關鍵設備,存儲器的速度和容量一直是人們努力解決的核心問題。除了提高主存單元的速度外,人們提出了高速緩存、主存和外存儲器的三級結構方案。主存是CPU可以直接隨機訪問的存儲空間,使用者對主存儲器的主要要求是速度、容量、帶寬以及可靠性。為了解決主存成本高、容量小的問題,人們提出了各種外存儲器方案。如磁盤、光盤等設備具有大容量、低成本的特點,但速度太低,CPU不能直接訪問它們,不能直接從外存取一個數據、一條指令,只能作為主存的輔助存儲器。通過虛擬存儲器的辦法,有效地解決了存儲容量問題。為了提高主存的速度,人們又提出了高速緩沖存儲器方案。高速緩存、主存、外存緊密配合構成一個完整的三級存儲系統,較好地滿足了人們提出的要求。1.主存儲器主存儲器是隨機訪問存儲器,CPU可以直接訪問存儲器的任何一個單元,且其訪問速度與被訪單元的位置無關。這種隨機訪問存儲器簡稱RAM。1)周期機器對主存的要求首先是速度要快,通常用存取周期來表示。一個存取周期,包括讀寫時間和恢復再生時間。因此,存取周期是指連續兩次訪問同一個存儲單元的最小間隔時間。2)存儲容量存儲容量是CPU能夠直接存取的存儲器單元數的總和。CPU每訪問主存一次,讀出的單位是一個字,對不同機器字的長度有不同的規定,但都是字節的整數倍。在一些機器中,訪問一次主存,可以讀出一個字節的數據,因此每一個字節必須有一個地址,稱為字節尋址,其存儲器的容量單位是字節(B)。主存的容量決定于由指令尋址方式產生的操作數有效地址的位數。若有效地址是10位二進制數,則其容量為210B=1KB;若有效地址是20位二進制數,則其容量是220B=1MB;若有效地址是30位二進制數,則其容量是230B=1GB。3)半導體存儲器的分類和特點=1\*GB3①RAM為隨機讀寫存儲器。=2\*GB3②動態隨機存儲器(DRAM)采用動態MOS電路,需要定時刷新保存當前信息。單管MOS電路集成度高、功耗小,是當前RAM的主流型號。=3\*GB3③靜態隨機存儲器(SRAM)不需要刷新,速度快,但線路復雜,集成度低,寫入數據后只要不斷電,即可長久保持數據不變。=4\*GB3④只讀存儲器(ROM),用于存放常用的固定程序,只讀不寫。=5\*GB3⑤掩模ROM出廠時廠家已經把ROM制好,用戶不能改動。=6\*GB3⑥可編程只讀存儲器(PROM),用戶只能編程一次寫入所需的數據,以后不能再改動。=7\*GB3⑦可擦除可編程ROM(EPROM),用紫外線照射15分鐘擦除,再用高壓電路寫入新內容。=8\*GB3⑧E2PROM為電可擦除可編程ROM,使用比EPROM方便。=9\*GB3⑨FM為FlashM,又叫閃存,為快速聯機可改寫只讀存儲器,但擦除時只能成塊地擦去。4)主存儲器的組成和工作原理主存儲器是按地址訪問的隨機訪問存儲器,存儲矩陣中所有存儲單元的地位都是平等的,因此,要求訪存時對每一個存儲單元都同時進行地址譯碼。主存是按單元的地址進行讀寫的,因此,存儲器中應該有地址寄存器。存放數據單元的集合稱為存儲體。由地址尋找存儲體中某一個存儲單元時是通過地址譯碼電路實現的。讀出的數據存放在數據緩沖寄存器中,準備送往數據總線,所有這些操作都是由存儲器讀寫控制電路控制實現的。寫入存儲器的操作與讀出的操作不同,除了CPU提供存儲單元的地址外,還必須在寫入前將要寫入的數據通過數據總線送往存儲器的數據緩沖寄存器,再在寫入命令的控制下,將數據寫入地址寄存器指定的存儲單元中。因此主存儲器必須包括存儲體、地址寄存器、地址譯碼器、數據緩沖寄存器和讀寫控制電路。2.存儲系統中三級存儲結構的工作原理三級存儲系統的主要目的是在現有技術基礎上構造一個高速度、大容量的存儲器。其原理是基于程序訪問的局部性。當執行程序時,其后繼指令和所需數據都是相對集中存放的,因此只要把包括當前指令的一個程序段一起取到高速存儲器中,則訪問后繼指令或數據時,很大可能性是這些指令和數據已經取到高速存儲器中,CPU可以很快取走,以提高運算速度。主存是一個CPU隨機訪問的存儲器,但其速度比CPU慢一個數量級。為了使主存與CPU速度匹配,特別在CPU和主存之間構造一個高速緩沖存儲器Cache時,把正在執行的程序段調入高速Cache中,其后CPU再取指令和數據,大部分可在Cache中找到,就不用再訪問主存了,因而提高了CPU的訪存速度。用戶程序可能是很大的,主存容量又滿足不了要求,為了擴大存儲器的容量,特別又增加了一個大容量的輔助存儲器,用來存放暫不使用的程序和數據。當CPU需要使用輔存中的程序時,再將有關程序成批地調入主存儲器中,由于程序的局部性原理,CPU需要取后繼指令或數據時,不需要訪問輔存,只要訪問主存就可以得到了,因而大大提高了訪問輔存的速度,大大擴充了主存的容量。理想情況下,如果CPU每次訪問輔存中的指令或數據都可在主存中得到,每次訪問主存單元都可在高速緩沖存儲器Cache中找到,則我們好像得到了一個速度與Cache一樣快,容量與輔存一樣大的主存儲器,這是非常理想的。Cache-主存層次和主存-輔存層次的工作原理都是相似的。在訪問時,都需要經過地址變換,每次交換數據都是以數據塊為單位,都是利用程序局部性原理,如果每次訪存Cache命中率較高,則我們將可得到一個速度比主存快,容量比主存大的存儲器,這是我們期望的。因為Cache-主存層次更強調提高速度,所以地址變換等機制都是采用硬件辦法實現的。而主存-輔存層次更側重于擴大容量,并不苛求速度,所以地址變換等機制采用軟件方法實現。3.高速緩沖存儲器組織【例題】設有一個存儲器,容量是256KB,Cache容量是2KB,每次交換的數據塊是16B。Cache組織有以下問題。①主存可劃分為多少塊?②主存地址多少位,Cache地址多少位?③Cache容量2KB,可劃分為多少塊?④CPU訪問Cache進行地址映像時,主存地址分為幾個部分,每部分多少位?【解】①主存容量是256KB,每塊16B,主存可劃分的塊數為:256KB??16B=16K塊。②Cache容量是2KB,每塊16B,Cache可劃分的塊數為:2KB??16B=2048??16=128塊。③主存容量是256KB,218B=256KB,主存地址位數為18位,Cache容量為2KB,211B=2KB,Cache地址有11位。④訪問Cache時,主存地址可劃分為3部分:區號、塊號、與塊內地址。區號即主存地址高位標志,其位數是主存地址位數與Cache地址位數之差。本例中,高位地址標志(區號)=18–11=7位。也就是說,整個主存可以分為27=128個區,每個區的容量相當于Cache的容量,即2KB。塊號:Cache中可分為128塊(27=128),塊地址編號為7位。塊內地址,決定每塊大小,16=24,每塊16字節,塊內地址為4位。1)Cache地址映像方式CPU訪問主存時,給出主存單元的地址,在具有Cache高速緩存的計算機中,首先必須檢查該主存單元的內容在Cache單元中是否存在,如果已經調入Cache,我們可直接由Cache中取出,不需要再訪問主存。把主存單元的地址變成Cache相應單元的地址,叫做地址映像。Cache地址映像通常有以下三種方式。①直接映像方式。因為主存容量比Cache大,可把主存分成若干個Cache容量大小的區,如果Cache容量是2KB單元(地址11位),主存容量1MB單元(地址20位),則可把主存分成220–11=29=512個區。Cache中又分成若干塊,主存中也分成相同大小的塊,顯然主存每區中的塊數與Cache中的塊數是相等的。每個數據塊數都有塊號地址。訪問主存時,向Cache中傳送數據時,一次讀出一個數據塊。直接映像方式規定,主存中某區中某個塊讀出時,其內容需調入Cache中塊號相同的那個塊中,為了區別是哪個區的數據塊放在Cache中,必須在該塊數據調入Cache的同時,將該數據塊在主存中的區號(高位主存地址,或稱主存字塊標志)存入Cache對應的數據塊標志中。直接映像方式地址轉換方法簡單,即主存中各區的0塊只能放在Cache中0塊,主存中各區的1數據塊只能放在Cache的1數據塊中……主存各區數據塊調入Cache時,其塊號必須與Cache的塊號相同,不能任意存放。其缺點是,Cache單元利用率不高。因為塊號相同的多個主存數據塊,只能放在Cache同一個數據塊中,即使其他Cache數據塊空閑也不能用。②全相聯映像方式。它允許主存中任何數據塊存放到Cache空間中任何一個數據塊位置上。存放起來很靈活。其缺點是,訪問主存時,查找Cache非常困難,必須把Cache中每一個數據塊的高位地址標志讀出來與要訪問的主存單元高位地址相比較,這是很復雜的,也是很慢的。為了提高查找速度,通常采用按內容訪問的聯想存儲器,當然這套設備是很復雜的。③組相聯映像。它是直接映像與全相聯映像的折衷方案,其映射方法是把Cache分成若干組,每組又分成若干塊。主存與Cache交換時以數據塊為單位,但主存分組與Cache分組間采用直接映像辦法,組內各字塊按全相聯映像,即在分組內部各數據塊是隨意存放的。組相聯映像在靈活性與復雜性上都界于直接映像與全相聯映像之間。2)Cache替換算法當有新字塊需要調入到Cache時,有關的Cache字塊已經被占用,采用一種方法調出舊字塊,這種調出方法稱為替換算法。常用的替換算法有先進先出法(FIFO算法)和LRU近期最少使用法等替換算法,LRU算法認為調進來時間較早且最近未使用的數據塊應該是用處不大的數據塊,替換時應先調出去。4.虛擬存儲器1)虛擬存儲器與虛擬存儲空間用戶希望主存的空間大一些,以便存放更大的應用程序,實際上做不到這一點。磁盤容量很大,但速度很慢,不適合CPU直接由磁盤中存取指
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金屬工具在工藝品制作的創新應用考核試卷
- 輪椅設計與定制考核試卷
- 虛擬IP形象廣告考核試卷
- 理解數據一致性在數據庫中的實現試題及答案
- 行政組織在公共政策中的作用研究試題及答案
- 石墨在生物醫學成像材料的設計考核試卷
- 選礦設備故障診斷與維修考核試卷
- 文化用品行業科技創新考核試卷
- 酒吧經營策略與酒水銷售技巧考核試卷
- 公路工程施工質量試題及答案要點
- 2025屆廣東省深圳實驗學校高中園與惠東高級中學高三下學期5月適應性聯考(三模)物理試卷
- 2025年蘇教版科學小學五年級下冊期末檢測題附答案(二)
- 中國鐵路濟南局集團有限公司招聘普通高校考試真題2024
- 2025年高考第二次模擬考試物理(浙江卷)(考試版)-20250416-113627
- 施工項目資料管理試題及答案
- 煙草專賣合同協議書
- 車輛終止掛靠協議合同
- 《糖尿病合并高血壓患者管理指南(2025版)》解讀
- 2025年4月稽陽聯誼學校高三聯考語文試題解析
- 小學生科普天文知識課件
- 胃癌手術預康復管理中國專家共識(2024版)解讀
評論
0/150
提交評論