計算機硬件及網(wǎng)絡(luò)計算機組成原理指令體系結(jié)構(gòu)_第1頁
計算機硬件及網(wǎng)絡(luò)計算機組成原理指令體系結(jié)構(gòu)_第2頁
計算機硬件及網(wǎng)絡(luò)計算機組成原理指令體系結(jié)構(gòu)_第3頁
計算機硬件及網(wǎng)絡(luò)計算機組成原理指令體系結(jié)構(gòu)_第4頁
計算機硬件及網(wǎng)絡(luò)計算機組成原理指令體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩181頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

計算機硬件及網(wǎng)絡(luò)計算機組成原理指令體系結(jié)構(gòu)第1頁/共186頁第2頁/共186頁指令系統(tǒng)層是硬件和軟件之間的接口。指令系統(tǒng)層定義了硬件和編譯器之間的接口,

它是一種硬件和編譯器都能理解的語言。5.1指令系統(tǒng)層概述5.1.1指令系統(tǒng)層的性質(zhì)指令系統(tǒng)層定義計算機的存儲模式、寄存器組織、合法的數(shù)據(jù)類型和指令等信息。ISA層的另一個重要特性是大多數(shù)機器具有2個模式:內(nèi)核模式和用戶模式。第3頁/共186頁5.1.2存儲模式1.內(nèi)存組織所有計算機都把內(nèi)存分成具有連續(xù)地址的單元目前單元長度多為8位

(一個字節(jié))字節(jié)通常按照4個一組(32位)或8個一組(64位)組成字,這樣指令就可以按照字對內(nèi)存進行管理。許多體系結(jié)構(gòu)要求字按照它們的自然邊界對齊。第4頁/共186頁第5頁/共186頁

大多數(shù)計算機的指令系統(tǒng)層具有單一的線性地址空間2.內(nèi)存語義所有內(nèi)存請求都被串行執(zhí)行(一個操作完成以后再執(zhí)行下一個操作)內(nèi)存不保證操作次序介于兩者之間的模式,硬件自動阻塞特定的內(nèi)存操作(如RAW和WAR)。第6頁/共186頁5.1.3寄存器

ISA層的寄存器可以粗略地分成2類:專用寄存器和通用寄存器。*專用寄存器包括:PC,SP和其他一些有專門用途的寄存器。*通用寄存器用于保存重要的局部變量和中間計算結(jié)果,它們的主要用途是提供快速的手段

來訪問哪些使用頻繁的數(shù)據(jù)(避免訪存)*

標(biāo)志寄存器(PSW):是一個可以同時在內(nèi)核

狀態(tài)和用戶狀態(tài)下使用的寄存器.該第7頁/共186頁寄存器保存CPU需要的各種不同的狀態(tài)位,其中最重要的是條件碼。*N—當(dāng)結(jié)果是負(fù)數(shù)時設(shè)置*Z—當(dāng)結(jié)果為零時設(shè)置*V—當(dāng)結(jié)果產(chǎn)生溢出時設(shè)置*C—當(dāng)結(jié)果產(chǎn)生了最高位進位時設(shè)置*A—當(dāng)結(jié)果在第3位產(chǎn)生進位(輔助進位)時設(shè)置*P—當(dāng)結(jié)果具有偶校驗時設(shè)置第8頁/共186頁

5.1.4指令

ISA層主要的特征是機器指令集,正是這些指令在控制計算機的運行。5.1.5Pentium4指令系統(tǒng)層概述Pentium4有3種操作模式:

實模式:所有8088之后增加的新特性都被關(guān)閉,這時Pentium4就像一臺簡單的8088。如果任何一個程序出錯,整臺計算機就會崩潰。

虛擬8086模式:用一種受保護的方式來運行老的8088程序。這時,有一個實際OS在控制第9頁/共186頁整個計算機。為了運行老的8088程序,OS會創(chuàng)建一個特殊的獨立的8088環(huán)境。與實際的8088不同的是當(dāng)程序崩潰時,計算機不會崩潰,而只是通知OS。

保護模式:Pentium4才真的是一臺Pentium4。

在保護模式下,有4種可用的特權(quán)級別,它們由PSW的對應(yīng)位控制。

第0級相當(dāng)于其他計算機的內(nèi)核模式,它可以完全控制計算機,因而只由OS使用。第10頁/共186頁

第3級用于運行用戶程序,它阻塞用戶程序?qū)δ承┨厥獾年P(guān)鍵指令和控制寄存器的訪問,以防止某些惡意的用戶程序搞垮整個計算機。

級別1和2很少使用。Pentium4具有很大的地址空間,它的內(nèi)存分為16384個段,每個段都從地址0---232-1。按字節(jié)編址,地址長度32位。字節(jié)順序-----小端形式。第11頁/共186頁ThePentium4中主要寄存器第12頁/共186頁5.1.6UltraSPARCⅢ指令系統(tǒng)層概述UltraSPARCⅢ的內(nèi)存結(jié)構(gòu)簡單而清晰,其可尋址的地址空間是一個264字節(jié)的線性數(shù)組。默認(rèn)的字節(jié)順序---大端形式,通過PSW中設(shè)置一位可以轉(zhuǎn)換成小端形式。UltraSPARCⅢ有2組寄存器:32個64位的通用寄存器和32個浮點寄存器。第13頁/共186頁UltraSPARCIII的通用寄存器第14頁/共186頁

對程序員來說,任何時刻都只能看到32個R,但UltraSPARCⅢ確實有不止32個通用R,這種著名的寄存器窗口特性是為了有效地支持過程調(diào)用而設(shè)計的(圖5-5)。它的基本思想是用寄存器模擬棧,也就是說,就像一個棧有多個段一樣,在UltraSPARCⅢ中確實存在多個寄存器組。在任意時刻都只能精確地看到32個寄存器。當(dāng)前窗口指針CWP(currentWindowPointer)記錄當(dāng)前使用的寄存器組。第15頁/共186頁UltraSPARCIII寄存器窗口操作

第16頁/共186頁UltraSPARCⅢ體系結(jié)構(gòu)是一個加載/存儲體系結(jié)構(gòu)。也就是說,能夠直接訪問存儲器的唯一操作只有加載(LOAD)和存儲

(STORE),這類指令用于在寄存器和內(nèi)存之間傳遞數(shù)據(jù)。所有的算術(shù)和邏輯運算指令的操作數(shù)都應(yīng)該來自寄存器或者由指令本身提供,所有結(jié)果都必須保存在寄存器中。5.1.78051指令系統(tǒng)層概述

第17頁/共186頁(a)8051芯片內(nèi)部存儲器組織(b)8051的主要寄存器第18頁/共186頁8051的內(nèi)存模式非常簡單,具有一個64KB的程序地址空間和一個64KB的數(shù)據(jù)地址空間。8051采用一種與眾不同的方式來處理寄存器。寄存器有4組,但在任何時刻只有一組是可見的。PSW中有一個2位的字段,決定哪個寄存器組當(dāng)前正在使用。采用多寄存器組實際是為了實現(xiàn)快速的中斷處理。8051寄存器的另一特殊的性質(zhì)是它們出現(xiàn)在內(nèi)存空間中。位操作第19頁/共186頁5.2數(shù)據(jù)類型

討論數(shù)據(jù)在計算機內(nèi)部的表示形式,即計算機硬件能夠直接識別可以被指令系統(tǒng)直接調(diào)用的數(shù)據(jù),包括數(shù)值數(shù)據(jù)和非數(shù)值數(shù)據(jù)兩大類。5.2.1數(shù)值數(shù)據(jù)(大小、符號和小數(shù)點)一、進位計數(shù)制及相互轉(zhuǎn)換二、數(shù)的符號表示1.真值和機器數(shù)真值:帶正、負(fù)號的數(shù)的實際值,如+3,-5等。機器數(shù):數(shù)在計算機中的二進制表示形式。第20頁/共186頁

為了適合計算機存儲與處理,機器數(shù)通常采用將真值按某種方式進行編碼的形式。2.無符號數(shù)(整數(shù))

機器數(shù)的所有二進位都用來表示數(shù)值,每一位的權(quán)值不同。

10111001=1×27+1×25+1×24+1×23+1×20=185

表示范圍:n+1位無符號整數(shù)的表示范圍為0-2n+1-1。(8位數(shù),0—255)第21頁/共186頁3.有符號數(shù)

0-正,1-負(fù),放在二進制數(shù)的最高位(符號位),符號位和數(shù)值位一起編碼:原碼、反碼、補碼、移碼(浮點數(shù)的階碼)由真值求原碼、補碼、反碼

正數(shù):原、反、補相同,都與真值相同。負(fù)數(shù):原碼,負(fù)號用1表示,數(shù)值部分不變

(注意小數(shù)的符號位在小數(shù)點

的左邊)

反碼,原碼除符號外求反

補碼,原碼除符號外求反加1(簡便

方法)第22頁/共186頁例x=0.1011x=-0.1011

x=+1011x=-1011符號擴展8位二進制整數(shù)表示-1的補碼[-1]補=

假定十進制數(shù)-66,按補碼形式存放在一個8位寄存器中,該寄存器的內(nèi)容用十六進制表示為:13(12)、假定編譯器規(guī)定int和short類型長度分別為32位和16位,執(zhí)行下列C語言程序Unsignedshortx=65530Unsignedinty=x得到y(tǒng)的機器數(shù)為A00007FFAHB0000FFFAHCFFFF7FFFAHDFFFFFFFAH第23頁/共186頁移碼

現(xiàn)在計算機中浮點數(shù)的階碼常采用移碼表示。階碼之所以采用移碼表示是因為移碼有兩個重要性質(zhì):一是移碼值增大,對應(yīng)的數(shù)值也大,這樣便于浮點運算時的階碼比較;二是當(dāng)階碼用移碼表示時,浮點數(shù)的機器零和邏輯零表示相同。

例:20×0.1101+22×0.0110如果對每個階碼都加上一個足夠大的正常數(shù),使所有的階碼都轉(zhuǎn)化為正整數(shù),就可消除階碼符號的影響。第24頁/共186頁

移碼定義:[X]移=2n+X,-2n≤X≤2n-1

0128255[x]移-1280127x

數(shù)軸上的移碼表示#機器零第25頁/共186頁真值x[x]補[x]移十進制二進制二進制十進制-128-127┇-101┇127-10000000-01111111┇-000000010000000000000001┇011111111,00000001,0000001┇1,11111110,00000000,0000001┇0,11111110000000000000001┇011111111000000010000001┇1111111101┇127128129┇255移碼與真值、補碼的對應(yīng)關(guān)系第26頁/共186頁★由原碼、補碼、反碼、移碼求真值

正數(shù)

負(fù)數(shù):原碼的符號位1改用負(fù)號“-”表示,數(shù)值部分不變。

反碼,除符號位外求反得到原碼,

再由原碼得出真值。

補碼除符號位外求反加1得到原碼,

然后由原碼得出真值?!镆拼a:移碼和補碼除符號位相反

外,其余各位相同。

移碼補碼真值第27頁/共186頁二進制數(shù)表示無符號數(shù)

碼補碼反碼移

碼0000000000000001︰011111111000000010000001︰111111101111111101︰127128129︰254255+0+1︰+127-0-1︰-126-127+0+1︰+127-128-127︰-2-1+0+1︰+127-127-126︰-1-0-128-127︰-10+1︰+126+127第28頁/共186頁

0的表示:原碼和反碼有2種,補碼和移碼只有一種。12(09),一個C語言程序在一臺32位機器上運行。程序中定義了三個變量x,y和z,其中x和z為int型,y為short型。當(dāng)x=127,y=-9時,執(zhí)行賦值語句z=x+y后,x,y和z的值分別是A.x=0000007FH,y=FFF9H,z=00000076HB.x=0000007FH,y=FFF9H,z=FFFF0076HC.x=0000007FH,y=FFF7H,z=FFFF0076H

D.x=0000007FH,y=FFF7H,z=00000076H[x]補0000007FH[Y]補FFF7H0000007FH+FFFFFFF7H=00000076H第29頁/共186頁13(10).假定有4個整數(shù)用8位補碼分別表示r1=FEH,r2=F2H,r3=90H,r4=F8H,若將運算結(jié)果存放在一個8位寄存器中,則下列運算會發(fā)生溢出的是()A.r1xr2B.r2xr3C.r1xr4D.r2xr4三、數(shù)的小數(shù)點表示定點數(shù)(整數(shù))

浮點數(shù)定點數(shù)的表示范圍(假設(shè)計算機字長為n+1位)第30頁/共186頁原碼(反碼):小數(shù)

整數(shù)

補碼(移碼):小數(shù)

整數(shù)浮點數(shù)

浮點表示法就是一個數(shù)的小數(shù)點的位置不固定,可以浮動。

對于任一數(shù)N可表示成:第31頁/共186頁其中,(Exponent)是指數(shù),被稱為浮點數(shù)的階碼,(Mantissa)稱為浮點數(shù)的尾數(shù)或有效數(shù),尾數(shù)的符號表示數(shù)的正負(fù)。(Radix)是階碼的底,又稱為尾數(shù)的基值。基值

在計算機中可以為2、8、或者16,是個常數(shù),在系統(tǒng)中是事先隱含約定的,不需用代碼表示?!喔↑c數(shù)用一對定點數(shù)(階碼(整數(shù)、補或移碼)和尾數(shù)(小數(shù)(原或補碼))表示,基值(數(shù))隱含。第32頁/共186頁

例:20×0.0110100=21×0.0011010=2-1×0.1101000★規(guī)格化浮點數(shù)(唯一、提高計算精度)尾數(shù):正數(shù),0.1××...×負(fù)數(shù)(原碼)1.1××...×負(fù)數(shù)(補碼)1.0××...×規(guī)格化操作:當(dāng)運算結(jié)果尾數(shù)不滿足規(guī)格化條件時,需將尾數(shù)左移以實現(xiàn)規(guī)格化,尾數(shù)每左移一位(小數(shù)點位置不動)階碼減1,直至尾數(shù)滿足規(guī)格化條件為止。第33頁/共186頁

數(shù)

據(jù)機

數(shù)

式(從左到右依次為數(shù)符、階符、l位階碼、n位尾數(shù))

值最大正數(shù)最小正數(shù)(非規(guī)格化)最小正數(shù)(規(guī)格化)最大負(fù)數(shù)(非規(guī)格化)最大負(fù)數(shù)(規(guī)格化)最小負(fù)數(shù)0011…111…110111…100…010111…110…001111…100…011111…110…001011…111…11階碼和尾數(shù)均采用原碼表示★表示范圍:第34頁/共186頁

例:已知16位的浮點數(shù)格式如下:數(shù)符1位,階碼4位(移碼表示),尾數(shù)11位(原碼表示),基值為2,計算此規(guī)格化浮點數(shù)的下列真值:最大正數(shù)最小正數(shù)最大負(fù)數(shù)最小負(fù)數(shù)浮點數(shù)階碼的位數(shù)決定數(shù)的表示范圍,尾數(shù)的位數(shù)決定數(shù)的精度。第35頁/共186頁

IEEE754標(biāo)準(zhǔn):階碼用移碼,尾數(shù)用原碼,基值為2(單精度格式)⊙階碼值的范圍為1~254,它的偏移值為127,最大階碼真值為127,最小階碼真值為-126⊙原碼表示的非0規(guī)格化浮點數(shù)的尾數(shù)的最高有效位一定為1,IEEE754標(biāo)準(zhǔn)中利用這一點,規(guī)定規(guī)格化浮點數(shù)在小數(shù)點的左邊有一隱含位(作為二進制整數(shù)的個位)。由于該位為1,不需要存儲,在運算時,自動加上該位參加運算。因此,使單精度浮點數(shù)的尾數(shù)的有效位為24位。此時規(guī)格化浮點數(shù)的尾數(shù)為1.f(f第36頁/共186頁為尾數(shù),1為隱含位)。所以,規(guī)格化非零數(shù)的階碼真值e為[-126,127],則階碼值E為[1,254],所表示的規(guī)格化浮點數(shù)為±2E-127(1.f)=(-1)s×2E-127×(1+f)?!袸EEE754標(biāo)準(zhǔn)的單精度規(guī)格化浮點數(shù)的表示范圍最大正數(shù)2127(2-2-23)非0最小正數(shù)2-126最大負(fù)數(shù)-2-126最小負(fù)數(shù)-2127(2-2-23)⊙零、正負(fù)無窮大數(shù)、非數(shù)、非規(guī)格化數(shù)表示第37頁/共186頁符號偏移階碼尾數(shù)值正零負(fù)零正無窮大負(fù)無窮大非數(shù)(NaN)正規(guī)格化非零數(shù)負(fù)規(guī)格化非零數(shù)正非規(guī)格化數(shù)負(fù)非規(guī)格化數(shù)01010或1010100255(全1)255(全1)255(全1)0E2550E2550000000fff0f00-0NaN2E-127(1.f)-2E-127(1.f)2-126(0.f)-2-126(0.f)第38頁/共186頁以IEEE754標(biāo)準(zhǔn)的單精度數(shù)據(jù)格式表示

-0.75-0.75=-0.11×20=-1.1×2-1∵IEEE754單精度浮點數(shù)的數(shù)值為:(-1)S×2E-127×(1+f)則-1.1×2-1=(-1)1×2126-127×(1+.10000000000000000000000)∴-0.75的IEEE754標(biāo)準(zhǔn)單精度數(shù)據(jù)格式為:10111111010000000000000000000000第39頁/共186頁14(10).假定變量i,f,d的數(shù)據(jù)類型分別為int,float,double(int用補碼表示,float和double用IEEE754單精度和雙精度浮點數(shù)據(jù)格式表示),已知i=785,f=1.5678e3,d=1.5e100,若在32位機器中執(zhí)行下列關(guān)系表達式,則結(jié)果為真的是()(I)i==(int)(float)i(II)f==(float)(int)f(III)f==(float)(double)f(IV)(d+f)-d==f

A.僅I和IIB.

僅I和IIIC.僅II和IIID.僅III和IV說明:第40頁/共186頁1)后邊一個括號優(yōu)先級高;2)兩個不同類型的數(shù)相加時,會將低類型(暫時)轉(zhuǎn)變?yōu)楦哳愋?,再運算。(I)i==(int)(float)i

//經(jīng)過兩次類型轉(zhuǎn)換后相同,結(jié)果為真。(II)f==(float)(int)f

//f的類型為float,int(f)小數(shù)點以后被舍掉,會有精度損失,即使再進一步轉(zhuǎn)換為float,損失亦無法彌補;(III)f==(float)(double)f

//同1的解釋,低精度先變?yōu)楦呔龋僮優(yōu)榈途?,結(jié)果為真(IV)(d+f)-d==f

//d+f的結(jié)果為double類型,而f為float類型,因此肯定不成立。第41頁/共186頁13(11)、float型數(shù)據(jù)通常用IEEE754單精度浮點數(shù)格式表示。若編譯器將float型變量分配在一個32位浮點寄存器FR1中,且x=-8.25,則FR1的內(nèi)容是A.C1040000HB.C2420000HC.C1840000HD.C1C20000H解:X=-8.25=-1000.01=-1.00001*233=130-1271100000100000100000000000000000=C1040000H第42頁/共186頁

00111111010110000000000000000000的十進制數(shù)值是多少?偏移階碼E=(01111110)2=(126)10

階碼=126-127=-1

規(guī)格化的尾數(shù)是+1.1011

該浮點數(shù)的數(shù)值是+1.1011×2-1

=+0.11011

=(+0.84375)10第43頁/共186頁14(12)、float類型(即IEEE754標(biāo)準(zhǔn)單精度浮點數(shù)格式)能表示的最大正整數(shù)是A.

B.C.D.十進制數(shù)據(jù)類型:BCD碼(binarycodedecimalformat)用一個4位二進制編碼來表示一個十進制數(shù)位(如8421碼),用一個字節(jié)壓縮存放兩個十進制數(shù)位。第44頁/共186頁例00110111,00101000….輔助進位位(第3位的進位)5.2.2非數(shù)值數(shù)據(jù)類型

字符類型::ASCII、UNICODE

字符串:(連續(xù)的字符流),拷貝、搜索、編輯等

布爾值:

位圖:

指針:一個機器地址第45頁/共186頁5.2.3Pentium4的數(shù)據(jù)類型Pentium4的數(shù)值數(shù)據(jù)類型

(×表示支持該類型)第46頁/共186頁5.2.4UltraSPARCⅢ的數(shù)據(jù)類型

UltraSPARCIII的數(shù)值數(shù)據(jù)類型(×表示支持該類型)第47頁/共186頁5.2.58051的數(shù)據(jù)類型8051的數(shù)值數(shù)據(jù)類型

(×表示支持該類型)第48頁/共186頁5.3指令格式

基本指令格式操作碼地址碼第49頁/共186頁指令長度5.3.1指令格式設(shè)計原則1.指令長度第50頁/共186頁短指令優(yōu)于長指令

(1)需要存儲空間少(2)減少指令長度可以快速處理

內(nèi)存帶寬:每秒能夠讀寫多少位。如果一個指令cache的帶寬是tbit/s,平均指令長度是r位,那么這個cache每秒至多可以傳送t/r條指令。R越小,單位時間傳送的指令條數(shù)越多(執(zhí)行指令的上限)

缺點:譯碼和重疊執(zhí)行變得困難2.必須有足夠的空間表示所有的操作類型n位操作碼,計算機最多可以有種操作。3.地址字段中位的數(shù)量

第51頁/共186頁粒度:給一個地址可以尋址的位數(shù)

現(xiàn)代計算機能夠?qū)λ械淖止?jié)進行尋址,但是所有的內(nèi)存在進行一次訪問時都會讀出一個、兩個有時是四個字。8888323232320

12232-1012230-1第52頁/共186頁5.3.2擴展操作碼定長操作碼:作碼長度一致,位于指令的固定字段)

擴展操作碼:操作碼和地址碼之間如何平衡opcodeaddresskn2k2n第53頁/共186頁擴展操作碼使用4位操作碼和三個4位地址字段的指令第54頁/共186頁共允許15條三地址指令、14條2-地址指令、31條1-地址指令和16條零地址指令的擴展操作碼方式。標(biāo)記為xxxx,yyyy,和zzzz的是4-位

的地址字段。第55頁/共186頁例:設(shè)機器指令字長16位,指令中地址字段的長度4位,如果指令系統(tǒng)中已有11條三地址指令,72條二地址指令和64條零地址指令,問最多能規(guī)定多少一地址指令?例:某指令系統(tǒng)指令字長16位,每個操作數(shù)的地址碼長6位,指令分為無操作數(shù)、單操作數(shù)和雙操作數(shù)三類。若雙操作數(shù)指令為K種,無操作數(shù)指令為L種,問單操作數(shù)指令最多可能為幾種?第56頁/共186頁

可使用兩種方法來利用變長操作碼:

1)所有指令的長度保持相等,給需要使用最多的位定義其他信息的指令分配最短的操作碼。2)通過給常用的指令分配較短的操作碼,不常用的指令分配較長的操作碼來使平均指令長度達到最小。

通過對每條指令都使用需要的最少的位進行編碼,使所有指令的平均長度達到最小也是可能的。第57頁/共186頁5.3.3Pentium4的指令格式

Pentium4指令格式第58頁/共186頁5.3.4UltraSPARCⅢ的指令格式

最初的SPARC指令格式第59頁/共186頁5.3.58051的指令格式8051指令格式第60頁/共186頁5.4尋址

5.4.1尋址方式1.有效地址的概念形式地址:指令中地址字段內(nèi)容有效地址:主存地址或寄存器編號2.?dāng)?shù)據(jù)尋址和指令尋址

數(shù)據(jù)尋址是指獲得操作數(shù)的有效地址的方法。指令尋址是指確定將要執(zhí)行的下一條指令的地址的方法。通常有兩種方法:

第61頁/共186頁

順序?qū)ぶ罚篜C增量的方式自動形成下一條指令的地址。轉(zhuǎn)移尋址:需要提供轉(zhuǎn)移地址裝入PC,轉(zhuǎn)移完成后,按照新的轉(zhuǎn)移地址去執(zhí)行。轉(zhuǎn)移地址的形成和操作數(shù)地址相同。5.4.2立即尋址#立即尋址是尋址的最簡單形式。在這種方式中由指令直接給出操作數(shù),又稱為立即數(shù)。把4存入R1的立即尋址指令第62頁/共186頁5.4.3直接尋址A

指令的地址字段含有操作數(shù)的有效地址,根據(jù)該地址可以直接讀取操作數(shù)。5.4.4寄存器尋址R指令的地址字段給出寄存器號(寄存器地址),操作數(shù)在指定的寄存器中。5.4.5寄存器間接尋址(R)指令的地址字段給出寄存器號,操作數(shù)的有效地址在指定的寄存器中。

第63頁/共186頁計算數(shù)組元素之和的一段普通匯編程序5.4.6變址尋址

A(R)操作數(shù)的有效地址等于變址寄存器(顯式第64頁/共186頁或隱式)的內(nèi)容與指令中的形式地址(偏移量)之和。計算有1024個元素的兩個數(shù)組(A

ANDB)的OR的一段匯編程序第65頁/共186頁5.4.7基址變址尋址操作數(shù)的有效地址等于變址寄存器的內(nèi)容、基址寄存器內(nèi)容與指令中的形式地址(可選)之和。LOOP:MOVR4,(R2+R5)ANDR4,(R2+R6)MOVR4,A(R2)的一種可能的表示法第66頁/共186頁5.4.8堆棧尋址1.逆波蘭表達式

中綴表達式:x+y

后綴表達式(逆波蘭表達式):xy+

中綴表達式及其相應(yīng)的逆波蘭表達式的一些例子第67頁/共186頁2.逆波蘭表達式求值

(8+2*5)/(1+3*2-4)825*+132*+4_/

使用棧對逆波蘭表達式求值第68頁/共186頁5.4.9轉(zhuǎn)移指令的尋址方式轉(zhuǎn)移指令和過程調(diào)用指令也需要尋址方式來指定目標(biāo)地址前面討論的直接尋址、寄存器間接尋址、變址尋址都可用于轉(zhuǎn)移指令,但常用的是PC相對尋址:指令中帶符號的偏移量加到PC得到目標(biāo)地址(變址尋址)第69頁/共186頁16(09)某機器字長16位,主存按字節(jié)編址,轉(zhuǎn)移指令采用相對尋址,由兩個字節(jié)組成,第一字節(jié)為操作碼字段,第二字節(jié)為相對位移量字段。假定取指令時,每取一個字節(jié)PC自動加1。若轉(zhuǎn)移指令所在主存地址為2000H,相對位移量字段的內(nèi)容為06H,則該轉(zhuǎn)移指令成功轉(zhuǎn)移后的目標(biāo)地址是:A2006HB2007HC

2008HD2009H

第70頁/共186頁(R)+-(R)第71頁/共186頁一個簡單的三地址計算機的指令格式設(shè)計5.4.10操作碼和尋址方式的關(guān)系(正交性)

從軟件的觀點來看,指令和地址應(yīng)該是有規(guī)律的結(jié)構(gòu)第72頁/共186頁

一個簡單的二地址計算機的指令格式設(shè)計第73頁/共186頁5.4.11Pentium4的尋址方式

Pentium4的32-位尋址方式.M[x]表示x處的內(nèi)存字第74頁/共186頁for(i=0;i<n;i++)a[i]=0訪問

a[i]第75頁/共186頁5.4.12UltraSPARCⅢ的尋址方式LOAD、STORE:變址尋址,計算2個寄存器的和作為間接地址第76頁/共186頁5.4.138051的尋址方式5種基本尋址方式:隱式使用累加器模式寄存器尋址直接尋址寄存器間接尋址立即尋址特殊的尋址方式第77頁/共186頁5.4.14尋址方式討論尋址方式比較第78頁/共186頁

例:某計算機的指令系統(tǒng)有寄存器尋址、寄存器間接尋址、變址尋址、和相對尋址等尋址方式,設(shè)當(dāng)前指令的地址碼部分為0002H,正在執(zhí)行的指令所在地址為1000H,如下所示

1000H寄存器尋址、寄存器間接尋址、變址尋址所使用的寄存器的內(nèi)容為0003H,問(1)當(dāng)執(zhí)行取數(shù)指令時,如為寄存器間接尋址方式,操作數(shù)地址是多少?

如為變址尋址方式,操作數(shù)地址是多少?

OP0002H第79頁/共186頁

(2)當(dāng)執(zhí)行轉(zhuǎn)移指令時,轉(zhuǎn)移地址又是多少?1003H例:設(shè)(R)=1000H,(1000H)=2000H,(2000H)=3000H,(Rx)=1000H,指令中地址字段的內(nèi)容為1000H,問在以下尋址方式下訪問到的操作數(shù)的值是什么?1)寄存器間接尋址2)變址尋址3)間接尋第80頁/共186頁已知存儲器的值如下:

地址

內(nèi)容

10H20H20H30H30H40H40H50H50H60H給出下面每條指令的執(zhí)行結(jié)果。MOVR0,#10HMOVR1,#20HMOVR2,20HADDR0,(R1)MOVR3,20H(R1)ANDR3,10H(R1)ORR2,R3第81頁/共186頁

43(10)某計算機字節(jié)長為16位,主存地址空間大小為128KB,按字編址。采用單字指令格式,指令各字段定義如下:轉(zhuǎn)移指令采用相對尋址方式,相對偏移用補碼表示,尋址方式定義如下:OpMsRsMdRd1512119865320

源操作數(shù)目的操作數(shù)第82頁/共186頁Ms/Md尋址方式助記符含義000B寄存器直接Rn操作數(shù)=(Rn)001B寄存器間接(Rn)操作數(shù)=((Rn))010B寄存器間接、自增(Rn)+操作數(shù)=((Rn))(Rn)+1)(Rn)011B相對D(Rn)轉(zhuǎn)移目標(biāo)地址=(PC)+(Rn)

注:(X)表示存儲地址X或寄存器X的內(nèi)容請回答下列問題:

(1)、該指令系統(tǒng)最多可有多少條指令?該計算機最多有多少個通用寄存器?存儲器地址寄存器(MAR)和存儲器數(shù)據(jù)寄存器(MDR)至少各需多少位?第83頁/共186頁

(2)、轉(zhuǎn)移指令的目標(biāo)地址范圍是多少?

(3)、若操作碼0010B表示加法操作(助記符為add),寄存器R4和R5的編號分別為100B和101B,R4的內(nèi)容為1234H,R5的內(nèi)容為5678H,地址1234H中的內(nèi)容為5678H,地址5678H中的內(nèi)容為1234H,則匯編語言為add(R4),(R5)+(逗號前為源操作數(shù),逗號后為目的操作數(shù))對應(yīng)的機器碼是什么(用十六進制表示)?該指令執(zhí)行后,哪些寄存器和存儲單元的內(nèi)容會改變?改變后的內(nèi)容是什么?

第84頁/共186頁

(1)OP4位,最多可有16條指令

寄存器編號3位,最多有8個通用寄存器按字編址,容量64K字,MAR至少需要16位,

字長16位,MDR也至少16位

(2)轉(zhuǎn)移指令的目標(biāo)地址范圍64K

(3)add(R4),(R5)+對應(yīng)的機器碼為:0010001100010101B=2315H(R5)=5679H(5678)=5678+1234=68ACH第85頁/共186頁44(09)某計算機字長16位,采用16位定長指令字結(jié)構(gòu),部分?jǐn)?shù)據(jù)通路結(jié)構(gòu)如圖所示圖中所有控制信號為1時表示有效,為0時表示無效,如MDRinE為1表示允許數(shù)據(jù)從DB打入MDR,MDRin為1表示允許數(shù)據(jù)從內(nèi)總線打入MDR,假設(shè)MAR的輸出一直處于使能狀態(tài)。加法指令“ADD(R1),R0”的功能為:(R0)+((R1))(R1)即將R0的數(shù)據(jù)與R1的內(nèi)容所指的存儲單元的數(shù)據(jù)相加,并將結(jié)果送入R1的內(nèi)容所指的存儲單元保存。第86頁/共186頁

下表給出了上述指令取指和譯碼階段每個節(jié)拍(時鐘周期)的功能和有效控制信號,請按表中描述的方式用表格列出指令執(zhí)行階段每個節(jié)拍的功能和有效控制信號。時鐘功能有效控制信號C1MAR(PC)PCout,MARinC2MDRM(MAR)PC(PC)+1MemR,MDRinEPC+1C3IR(MDR)MDRout,IRinC4指令譯碼無第87頁/共186頁第88頁/共186頁時鐘

功能

有效控制信號C5MAR(R1)

R1out,MARinC6MDRM(MAR)

A(R0)

MemR,MDRinER0out,AinC7AC(MDR)+(A)MDRout,Add,ACinC8MDR(AC)Acout,MDRinC9M(MAR)(MDR)MDRoutE,MemWA(R0)也可在C7:AC(MDR)+(A)之前單列的一個時鐘周期內(nèi)執(zhí)行。

參考答案一AMDRAC(A)+(R0)第89頁/共186頁參考方案二:將以R1為地址的存儲單元的內(nèi)容取出后送A,再與RO的內(nèi)容相加送AC.44(12)、某16位計算機中,帶符號整數(shù)用補碼表示,數(shù)據(jù)Cache和指令Cache分離。題44表給出了指令系統(tǒng)中部分指令格式,其中Rs和Rd表示寄存器,Mem表示存儲單元地址,(x)表示寄存器x或存儲單元x的內(nèi)容。第90頁/共186頁名稱指令的匯編格式指令含義加法指令A(yù)DDRs,Rd(Rs)+(Rd)Rd算術(shù)/邏輯左移SHLRd2*(Rd)Rd算術(shù)右移SHRRd(Rd)/2Rd取數(shù)指令LOADRd,Mem(Mem)Rd存數(shù)指令STORERs,Mem(Rs)Mem該計算機采用5段流水方式執(zhí)行指令,各流水段分別是取指(IF)、譯碼/讀寄存器(ID)、執(zhí)行/計算有效地址(EX)、訪問存儲器(M)和結(jié)果寫回寄存器(WB),流水線采用“按序發(fā)射、按序完成”方式,沒有采用轉(zhuǎn)發(fā)技術(shù)處理數(shù)據(jù)相關(guān),并且同一寄存器的讀和寫操作不能在同一個時鐘周期內(nèi)進行。請回答下列問題:第91頁/共186頁(1)若int型變量x的值為-513,存放在寄存器R1中,則執(zhí)行指令“SHRR1”后,R1中的內(nèi)容是多少/(用十六進制表示)(2)若某個時間段內(nèi)中,有連續(xù)的4條指令進入流水線,在其執(zhí)行過程中沒有發(fā)生任何阻塞,則執(zhí)行這4條指令所需的時鐘周期數(shù)為多少?(3)若高級語言程序中某賦值語句為x=a+b,x、a和b均為int型變量,它們的存儲單元地址分別表示為[x]、[a]和[b]。該語句對應(yīng)的的指令序列及其在指令流水線中的執(zhí)行過程如題44圖所示。第92頁/共186頁I1LOADR1,[a]I2LOADR2,[b]I3ADDR1,R2I4STORER2,【x】指令1234567891011121314I1IFIDEXMWBI2IFIDEXMWBI3IFIDEXMWBI4IFIDEXMWB則這4條指令的執(zhí)行過程中,I3的ID段和I4的IF段被阻塞的原因各是什么?第93頁/共186頁(4)若某高級語言程序中賦值語句為x=2*x+a,x和a均為unsignedint類型變量,它們的存儲單元地址分別表示為[x]、[a],則執(zhí)行這條語句至少需要多少個時鐘周期?要求模仿題44圖畫出這條語句對應(yīng)的指令序列及其在流水線中的執(zhí)行過程示意圖。解:1)-513=-0000001000000001補碼:1111110111111111=FDFFH右移一位:1111111011111111=FEFFH2)執(zhí)行4條指令所需時鐘周期數(shù):5+(4-1)=8

3)I3的ID段被阻塞的原因:寫后讀相關(guān)I4的IF段被阻塞的原因:I4與I3存在結(jié)構(gòu)相關(guān)第94頁/共186頁1234567891011121314151617I1IFIDEXMWBI2IFIDEXMWBI3IFIDEXMWBI4IFIDEXMWBI5IFIDEXMWBI1LOADR1,[X]I4ADDR1,R2I2LOADR2,[a]I5STORER2,[X]I3SHRR1

第95頁/共186頁5.5.指令類型5.5.1數(shù)據(jù)移動(傳送)指令把數(shù)據(jù)從一個地方復(fù)制到另一個地方是所有操作的基礎(chǔ)。復(fù)制指創(chuàng)建一個和原有對象完全相同的對象。寄存器寄存器,寄存器存儲器,存儲器寄存器,存儲器存儲器第96頁/共186頁5.5.2雙操作數(shù)指令

雙操作數(shù)指令使用2個操作數(shù)產(chǎn)生一個結(jié)果。算術(shù)運算(整數(shù)、浮點數(shù)加減乘除)和邏輯運算指令1.補碼加減運算(定點)1)依據(jù)的關(guān)系式[x]補+[y]補=[x+y]補[x-y]補=[x]補+[-y]補[-y]補是將[y]補連同符號位一起求反加12)算法:①參加運算的操作數(shù)用補碼表示。

②符號位參加運算第97頁/共186頁

③對于兩數(shù)相加減的各種情況,計算機都執(zhí)行求和操作。當(dāng)操作碼為加運算時,兩數(shù)直接相加;當(dāng)操作碼為減運算時,將減數(shù)連同符號位一起求反加1與被減數(shù)相加。

④運算結(jié)果以補碼表示。例1已知:x=0.1001,y=-0.0110,

求x+y=?解:[x]補=0.1001[y]補=1.1010[x]補0.1001

+[y]補1.1010[x+y]補

10.0011x+y=0.0011第98頁/共186頁例2已知:x=-0.1001,y=-0.0101,求x+y=?解:[x]補=1.0111[y]補=1.1011[x]補1.0111+[y]補1.1011[x+y]補

11.0010x+y=-0.1110例3已知:x=0.1001,y=0.0110,求x-y=?解:[x]補=0.1001[y]補=0.0110[-y]補=1.1010[x]補0.1001

+[-y]補1.1010[x-y]補

10.0011x-y=0.0011第99頁/共186頁例4已知:x=-0.1001,y=-0.0110,求x-y=?解:[x]補=1.0111[y]補=1.1010[-y]補=0.0110[x]補1.0111

+[-y]補0.0110[x-y]補1.1101x-y=-0.00113)溢出概念和判別方法

運算結(jié)果超出機器數(shù)所能表示的數(shù)據(jù)范圍判別方法:單符號位OVR=an-1bn-1sn-1+an-1bn-1sn-1雙符號位OVR=sf1⊕sf2用cn-1和cn判斷OVR=cn-1⊕cn第100頁/共186頁43(11).假定在一個8位字長的計算機中運行如下類C程序段:unsignedintx=134;unsignedinty=246;intm=xintn=yunsignedintz1=x-y;unsignedintz2=x+y;intk1=m-nintk2=m+n

若編譯器編譯時將8個8位寄存器R1-R8分別分配給x、y、m、n、z1、z2、k1和k2,請回答下列問題(帶符號數(shù)用補碼表示)第101頁/共186頁(1)執(zhí)行上述程序段后,寄存器R1、R5和R6的內(nèi)容(十六進制表示)(2)執(zhí)行上述程序段后,變量m和k1的值(十進制表示)(3)上述程序段涉及帶符號整數(shù)加減、無符號整數(shù)加減運算,這四種運算能否利用同一個加法器輔助電路實現(xiàn)?(簡述理由)(4)計算機內(nèi)部如何判斷帶符號整數(shù)加減運算的結(jié)果是否發(fā)生溢出?上述程序段中哪些帶符號整數(shù)運算語句的執(zhí)行結(jié)果會發(fā)生溢出?第102頁/共186頁無符號x=134R1=10000110=86HY=246R2=11110110=F6H有符號

m=xR3=86H=-122n=yR4=F6H=-10(無符號整數(shù)轉(zhuǎn)換為有符號整數(shù),位模式不變,值可能改變)無符號z1=x-yR5=10000110-11110110=10010000=90Hz2=x+yR6=10000110+11110110=01111100=7CH

第103頁/共186頁

無符號數(shù)和有符號數(shù)都是以補碼形式存儲的,在不考慮溢出情況下,加減運算沒有區(qū)別,只是輸出時有符號數(shù)的最高位為符號位;有溢出時,兩者有區(qū)別??捎猛粋€加法器實現(xiàn),但溢出判別電路不同。

有符號k1=m-nR7=-112k2=m+n溢出帶符號整數(shù)加減運算結(jié)果的溢出判斷:三種方法

第104頁/共186頁2.浮點數(shù)的加減運算

對階:小階向大階看齊求和/差:規(guī)格化:向左規(guī)格化(非規(guī)格化數(shù))、向右規(guī)格化(尾數(shù)溢出)舍入:0舍1入和恒置1溢出判斷:階碼溢出判斷13(09),浮點數(shù)加、減法運算過程一般包括對階、尾數(shù)運算、規(guī)格化、舍入和判溢出等步驟。設(shè)浮點數(shù)的階碼和尾數(shù)均采用補碼表示,第105頁/共186頁且位數(shù)分別為5位和7位(均含兩位符號位)。若有兩個數(shù)則用浮點數(shù)加法計算X+Y的最終結(jié)果是

A.001111100010B.001110100010C.010000010001D.發(fā)生溢出3.邏輯運算AND從字中提取位OR把位組合到字中Mask

第106頁/共186頁10110111101111001101101110001011A00000000111111110000000000000000B(MASK)-------------------------------------------------------00000000101111000000000000000000AANDB10110111101111001101101110001011A11111111111111111111111100000000B(MASK)-------------------------------------------------------10110111101111001101101100000000AANDB00000000000000000000000001010111C-------------------------------------------------------10110111101111001101101101010111(AANDB)ORC第107頁/共186頁5.5.3單操作數(shù)指令

只有一個操作數(shù)并產(chǎn)生一個結(jié)果(移位和循環(huán)移位)

00000000000000000000000001110011A

00000000000000000000000000011100A右移2位

11000000000000000000000000011100A循環(huán)右移2位11111111111111111111111111110000A00111111111111111111111111111100A沒有符號擴展的右移11111111111111111111111111111100A有符號擴展的右移

將一個正數(shù)左移k位,如果不考慮溢出,結(jié)果就等于原來的數(shù)乘以2k;將一個正數(shù)右移k位,結(jié)果就等于原來的數(shù)除以2k第108頁/共186頁11111111111111111111111111111110-1的反碼11111111111111111111111111111100-1左移1位=-311111111111111111111111111111000-1左移2位=-711111111111111111111111111111111-1的補碼11111111111111111111111111111111.111111-1右移6位=-118×n=16×n+2×n第109頁/共186頁移位分為邏輯移位、循環(huán)移位和算術(shù)移位。

邏輯移位:左移低位補0,右移高位補0

循環(huán)移位:(前已述)

算術(shù)移位:數(shù)的符號不變,左移×2(不溢出),右移/2(不考慮舍入)

原碼:符號不變,左移低位補0(不能溢出,最高數(shù)值位不能為1)右移高位補0

補碼:左移時,數(shù)值位同符號位一起逐位左移,低位空位補0(在不產(chǎn)生溢出的情況下,正數(shù),最高數(shù)值位不能為1,負(fù)數(shù),最高數(shù)值位不能為0),右移時,符號位同數(shù)值位一起逐位右移,高位空位補符號位。第110頁/共186頁例:補碼D4H、A6H左右移位結(jié)果CLR,INC,NEG5.5.4比較和條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令測試某些條件,如果條件滿足,則轉(zhuǎn)移到一個特定的內(nèi)存地址。測試條件:符號位,溢出位,進位位,零位等

比較指令則比較2個字或2個字符是否相等,如果不等還要判斷哪個比較大第111頁/共186頁從小到大:UnsignedSigned001100(smallest)001101010110011111100000101001110010111011(largest)第112頁/共186頁5.5.5過程調(diào)用指令過程(子程序或方法)是執(zhí)行某個任務(wù)的指令集合,可以被程序的其他部分調(diào)用。當(dāng)被調(diào)用的過程完成了它的任務(wù)后,必須返回到調(diào)用之后的語句。返回地址可以放在以下三種位置:內(nèi)存、寄存器或棧。遞歸:過程調(diào)用自身的能力5.5.6循環(huán)控制指令按照固定的次數(shù)重復(fù)執(zhí)行一組指令第113頁/共186頁for(i=0;i<n;i++){statements}(a)循環(huán)結(jié)束時測試

(b)循環(huán)開始時測試

第114頁/共186頁5.5.7I/O指令忙等待的程序控制I/O.中斷驅(qū)動I/O.直接內(nèi)存訪問(DMA)I/O.I/O方式:在主機與I/O設(shè)備之間采用的不同的控制方式實現(xiàn)數(shù)據(jù)傳送。

第115頁/共186頁

(1)程序控制I/O

通過直接執(zhí)行I/O程序控制主機與外設(shè)之間的信息傳送。其過程簡述如下:先由主機通過啟動指令啟動外設(shè)工作,啟動后主機用測試指令不斷查詢外設(shè)工作是否完成,一旦外設(shè)工作完成,就可進行數(shù)據(jù)傳送。用于低端微處理器(如嵌入式系統(tǒng))和必須對外界變化作出快速響應(yīng)的系統(tǒng)(實時系統(tǒng))。

第116頁/共186頁第117頁/共186頁簡單終端的設(shè)備寄存器第118頁/共186頁程序控制I/O舉例第119頁/共186頁22(11)某計算機處理器主頻為50MHz,采用定時查詢方式控制設(shè)備A的I/O,查詢程序運行一次所用的時鐘周期數(shù)至少為500,。在設(shè)備A工作期間,為保證數(shù)據(jù)不丟失,每秒需對其查詢至少200次,則CPU用于設(shè)備A的I/O的時間占整個CPU時間的百分比至少是A.0.02%B.0.05%C.0.20%D.0.50%解:主頻50MHz,50M個時鐘周期

查詢程序運行一次500時鐘周期,每秒查詢200次,共100000時鐘周期100000/50M=0.2%優(yōu)點:控制簡單第120頁/共186頁

缺點:CPU把大部分時間浪費在等待設(shè)備做好準(zhǔn)備的循環(huán)上(這種策略稱為忙等待),

CPU與外設(shè)只能串行工作,效率低且只能進行數(shù)據(jù)傳送,無法檢測設(shè)備故障(可能進入“死機”局面)。

(2)中斷驅(qū)動I/OCPU啟動I/O設(shè)備,并告訴它當(dāng)設(shè)備準(zhǔn)備好時就產(chǎn)生一個中斷。這時CPU可以繼續(xù)工作。當(dāng)設(shè)備準(zhǔn)備好時(輸入、輸出完成),通過設(shè)置設(shè)備寄存器中的中斷使能位,硬件會給軟件一個中斷信號。CPU接到中斷信號后,為設(shè)備服務(wù)。(3)DMAI/O直接存儲器存?。―irectMemoryAccess

第121頁/共186頁

-DMA)是在外設(shè)和主存之間開辟一條直接數(shù)據(jù)通道,當(dāng)設(shè)備的數(shù)據(jù)傳送準(zhǔn)備好后,在專門硬件DMA控制器的控制下,實現(xiàn)高速外設(shè)與主存之間的成批數(shù)據(jù)交換。

在DMA方式下,CPU與DMA控制器共享總線,通常有3種工作方式。

1)CPU暫停方式(獨占總線方式):CPU響應(yīng)DMA請求后,讓出總線給DMA控制器使用,直到數(shù)據(jù)全部傳送完畢,DMA控制器再把總線交還給CPU。

2)周期挪用(周期竊取)方式:在DMA控制器占用總線周期傳送數(shù)據(jù)期間,若CPU在此

期間并不需要使用總線,它可繼續(xù)執(zhí)行指令;若

第122頁/共186頁

CPU也要使用總線,則讓出一個總線周期給DMA控制器使用,DMA控制器利用此總線周期控制傳送一個字,然后再把總線交還給CPU。3)CPU和DMA控制器交替訪問內(nèi)存方式

使用DMA控制器的系統(tǒng)第123頁/共186頁1)DMA控制器組成DMA芯片內(nèi)部至少有4個寄存器:主存地址寄存器:存放讀/寫的內(nèi)存地址100字?jǐn)?shù)計數(shù)器:存放傳送的字節(jié)數(shù)或字?jǐn)?shù)32設(shè)備地址寄存器:使用的設(shè)備號或I/O空間地址,即定義需要的I/O設(shè)備4方向寄存器:判斷是從I/O設(shè)備讀數(shù)據(jù)還是往I/O設(shè)備寫數(shù)據(jù)1(控制寄存器)數(shù)據(jù)緩沖寄存器、DMA請求線路及控制邏輯、中斷控制邏輯2)DMA操作步驟:DMA的數(shù)據(jù)傳送過程可分三個階段:第124頁/共186頁

DMA傳送前的預(yù)處理(初始化,即CPU用主程序為DMA傳送作準(zhǔn)備):把有關(guān)數(shù)據(jù)來源、去向、傳送數(shù)據(jù)的總數(shù)和控制信息等事先通知DMA控制器。

數(shù)據(jù)傳送:當(dāng)設(shè)備準(zhǔn)備好傳送的數(shù)據(jù)后,就發(fā)DMA請求給DMA控制器,由DMA控制器發(fā)出總線請求,申請使用系統(tǒng)總線。在DMA控制器獲得總線使用權(quán)(幾個設(shè)備同時請求需要判優(yōu))后,就在DMA控制器的控制下,開始I/O設(shè)備與主存的數(shù)據(jù)交換。

傳送結(jié)束后處理:CPU響應(yīng)中斷后,則停止原程序執(zhí)行,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,做一些第125頁/共186頁DMA結(jié)束處理工作,如對送入主存數(shù)據(jù)的檢驗,測試在傳送過程中是否發(fā)生錯誤等。例:一個DMA模塊采用周期竊取方法把字符傳輸?shù)酱鎯ζ鳎O(shè)備的傳輸率為9600位/秒,處理器以1×條指令/秒的速度獲取指令,由于DMA模塊,處理器將減慢多少?

解:設(shè)備字符傳輸率=9600/8=1200字符/s

傳輸一個字符時間T=1/1200秒,相當(dāng)于一次DMA操作?。在T時間內(nèi)CPU不能獲取的指令數(shù)目為T×1×=833條第126頁/共186頁43(12)、假定某計算機的CPU主頻為80MHz,CPI為4,并且平均每條指令訪存1.5次,主存與Cache之間交換的塊大小為16B,Cache的命中率為99%,存儲器總線寬度為32位。請回答下列問題:(1)該計算機的MIPS數(shù)是多少?平均每秒Cache缺失的次數(shù)是多少?在不考慮DMA傳送的情況下,主存帶寬至少達到多少才能滿足CPU的訪存要求?(2)假定在Cache缺失的情況下訪問主存時,存在0.0005%的缺頁率,則CPU平均每秒產(chǎn)生多少次缺頁異常?若頁面大小為4KB,每次缺頁都需要訪問磁盤,訪問磁盤時DMA傳送采用周期挪用方式,磁盤I/O接口的數(shù)據(jù)緩沖寄存器為32位,則磁盤I/O接口平均每秒發(fā)出的DMA請求次數(shù)至少是多少?第127頁/共186頁(3)CPU和DMA控制器同時要求使用存儲器總線時,哪個優(yōu)先級更高?為什么?(4)為了提高性能,主存采用4體交叉存儲模式,工作時每1/4周期啟動一個體。若每個體的存儲周期為50ns,則該主存能提供的最大帶寬是多少?解:(1)執(zhí)行一條指令時間:4/(80*106)=50ns

每秒執(zhí)行指令條數(shù):1/50ns=20MIPS

每秒訪存次數(shù):20*106*1.5=30*106

因cache命中率為99%,故每秒cache缺失次數(shù)為:30*106*1%=3*105第128頁/共186頁

每秒訪存次數(shù)3*105,訪存一次傳送一個數(shù)據(jù)塊16B,主存帶寬:3*105*16B=4.8MB/s(2)每秒缺頁異常:3*105*0.0005%=1.5

每秒發(fā)出DMA請求次數(shù):1.5*(4KB/4B)=1K*1.5(3)DMA控制器(4)每個體存儲周期50ns,采用4體交叉存儲模式,則存儲周期為50/4,頻率為4/50=80Mhz

每次傳輸32位,80M*4B=320MB/s第129頁/共186頁選出的Pentium4整數(shù)指令5.5.8Pentium4指令第130頁/共186頁選出的Pentium4整數(shù)指令第131頁/共186頁選出的Pentium4整數(shù)指令第132頁/共186頁選出的Pentium4整數(shù)指令第133頁/共186頁

UltraSPARCIII中主要整數(shù)指令5.5.9UltraSPARCⅢ

指令第134頁/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論