




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章微處理器的內(nèi)部結(jié)構(gòu)及外部功能特性本章主要內(nèi)容(1)微處理器的內(nèi)部組成結(jié)構(gòu)(2)微處理器的外部引腳功能(3)微處理器的總線時(shí)序7.1微處理器的內(nèi)部結(jié)構(gòu)及相關(guān)技術(shù)為了說(shuō)明現(xiàn)代微處理器的內(nèi)部組成結(jié)構(gòu),這里給出一個(gè)經(jīng)適當(dāng)簡(jiǎn)化的Pentium處理器的內(nèi)部結(jié)構(gòu)框圖(如圖7.1所示),并以此為例對(duì)現(xiàn)代微處理器的主要組成部件及其實(shí)現(xiàn)技術(shù)做概要說(shuō)明。Pentium微處理器(1993,320萬(wàn)晶體管)圖7.1Pentium處理器的內(nèi)部結(jié)構(gòu)框圖7.1.1總線接口單元BIU總線接口單元BIU(BusInterfaceUnit)是微處理器與微機(jī)中其他部件(如存儲(chǔ)器、I/O接口等)進(jìn)行連接與通信的物理界面。通過(guò)這個(gè)界面,實(shí)現(xiàn)微處理器與其他部件之間的數(shù)據(jù)信息、地址信息以及控制命令信號(hào)的傳送。由圖7.1可見(jiàn),Pentium處理器的外部數(shù)據(jù)總線寬度為64位,它與存儲(chǔ)器之間的數(shù)據(jù)傳輸率可達(dá)528MB/s。由于Pentium處理器內(nèi)部的算術(shù)邏輯單元ALU(ArithmaticLogicUnit)和寄存器的寬度仍是32位的,所以它仍屬于32位微處理器。Pentium處理器的地址總線位數(shù)為32位,即它的直接尋址物理地址空間為232=4GB。另外,BIU還有地址總線驅(qū)動(dòng)、數(shù)據(jù)總線驅(qū)動(dòng)、總線周期控制及總線仲裁等多項(xiàng)功能。7.1.2指令Cache與數(shù)據(jù)CacheCache(高速緩存)技術(shù)是現(xiàn)代微處理器及微型計(jì)算機(jī)設(shè)計(jì)中普遍采用的一項(xiàng)重要技術(shù)。它使CPU在較低速的存儲(chǔ)器件條件下獲得較高速的存儲(chǔ)器訪問(wèn)時(shí)間,并提高系統(tǒng)的性能價(jià)格比。在Pentium之前的80386設(shè)計(jì)中,曾在處理器外部設(shè)置一個(gè)容量較小但速度較快的“片外Cache”。在80486中,則是在處理器內(nèi)部設(shè)置了一個(gè)8KB的“片內(nèi)Cache”,統(tǒng)一作為指令和數(shù)據(jù)共用的高速緩存。
Pentium處理器中的Cache設(shè)計(jì)與80386和80486有很大的不同,它采用哈佛結(jié)構(gòu)。把Cache分為“指令Cache”和“數(shù)據(jù)Cache”分別設(shè)置,從而避免僅僅設(shè)置統(tǒng)一Cache時(shí)發(fā)生存儲(chǔ)器訪問(wèn)沖突的現(xiàn)象。Pentium包括兩個(gè)8KB的Cache——一個(gè)為8KB的數(shù)據(jù)Cache,一個(gè)為8KB的指令Cache。指令Cache只存儲(chǔ)指令,而數(shù)據(jù)Cache只存儲(chǔ)指令所需的數(shù)據(jù)。在只有統(tǒng)一的高速緩存的微處理器(如80486)中,一個(gè)數(shù)據(jù)密集的程序很快就會(huì)占滿高速緩存,幾乎沒(méi)有空間用于指令緩存,這就降低了微處理器的執(zhí)行速度。在Pentium中就不會(huì)發(fā)生這種情況,因?yàn)樗袉为?dú)的指令Cache。如圖7.1所示,經(jīng)過(guò)BIU,指令被保存在8KB的“指令Cache”中,而指令所需要的數(shù)據(jù)則保存在8KB的“數(shù)據(jù)Cache”中。
這兩個(gè)Cache可以并行工作,并被稱為“1級(jí)Cache”或“片內(nèi)Cache”,以區(qū)別于設(shè)置在微處理器外部的“2級(jí)Cache”或“片外Cache”。7.1.3超標(biāo)量流水線結(jié)構(gòu)“超標(biāo)量流水線”結(jié)構(gòu)是Pentium處理器設(shè)計(jì)技術(shù)的核心。流水線(pipeline)方式是把一個(gè)重復(fù)的過(guò)程分解為若干子過(guò)程,每個(gè)子過(guò)程可以與其他子過(guò)程并行進(jìn)行的工作方式。*洗衣房里的流水線操作采用流水線技術(shù)設(shè)計(jì)的微處理器,把每條指令分為若干個(gè)順序的操作(如取指、譯碼、執(zhí)行等),每個(gè)操作分別由不同的處理部件(如取指部件、譯碼部件、執(zhí)行部件等)來(lái)完成。這樣構(gòu)成的微處理器,可以同時(shí)處理多條指令。對(duì)于每個(gè)處理部件來(lái)說(shuō),每條指令的同類操作(如取指令)就像流水一樣連續(xù)被加工處理。這種指令重疊、處理部件連續(xù)工作的計(jì)算機(jī)(或處理器),稱為流水線計(jì)算機(jī)(或處理器)。采用流水線技術(shù),可以加快計(jì)算機(jī)執(zhí)行程序的速度并提高處理部件的使用效率。圖7.2表示了把指令劃分為五個(gè)操作步驟并由處理器中五個(gè)處理部件分別處理時(shí)流水線的工作情形。圖7.2五級(jí)流水的工作情形如圖7.2所示,流水線中的各個(gè)處理部件可并行工作,從而可使整個(gè)程序的執(zhí)行時(shí)間縮短。容易看到,在圖中所示的7個(gè)時(shí)間單位內(nèi),已全部執(zhí)行完3條指令。如果以完全串行的方式執(zhí)行,則3條指令需3×5=15個(gè)時(shí)間單位才能完成。顯然,采用流水線方式可以顯著提高計(jì)算機(jī)的處理速度。Pentium處理器的流水線由分別稱為“U流水”和“V流水”的兩條指令流水線構(gòu)成(雙流水線結(jié)構(gòu)),其中每條流水線都擁有自己的地址生成邏輯、ALU及數(shù)據(jù)Cache接口。Pentium處理器可以在一個(gè)時(shí)鐘周期內(nèi)同時(shí)發(fā)送兩條指令進(jìn)入流水線。比相同頻率的單條流水線結(jié)構(gòu)(如80486)性能提高了一倍。通常稱這種具有兩條或兩條以上能夠并行工作的流水線結(jié)構(gòu)為超標(biāo)量(superscalar)結(jié)構(gòu)。與圖7.2所示的情形相同,Pentium的每一條流水線也是分為五個(gè)階段(5級(jí)流水):“指令預(yù)取”、“指令譯碼”、“地址生成”、“指令執(zhí)行”和“回寫”。Pentium處理器實(shí)現(xiàn)的是兩條流水線的并行操作,而每條流水線由五個(gè)流水級(jí)構(gòu)成。
另外,還可以將流水線的若干流水級(jí)進(jìn)一步細(xì)分為更多的階段(流水小級(jí)),并通過(guò)一定的流水線調(diào)度和控制,使每個(gè)細(xì)分后的“流水小級(jí)”可以與其他指令的不同的“流水小級(jí)”并行執(zhí)行,從而進(jìn)一步提高微處理器的性能。這被稱為“超級(jí)流水線”技術(shù)(superpipelining)?!俺?jí)流水線”與“超標(biāo)量”結(jié)構(gòu)的不同:超標(biāo)量結(jié)構(gòu)是通過(guò)重復(fù)設(shè)置多個(gè)“取指”部件,設(shè)置多個(gè)“譯碼”、“地址生成”、“執(zhí)行”和“寫結(jié)果”部件,并讓這些功能部件同時(shí)工作來(lái)加快程序的執(zhí)行,實(shí)際上是以增加硬件資源為代價(jià)來(lái)?yè)Q取處理器性能的;而超級(jí)流水線處理器則不同,它只需增加少量硬件,是通過(guò)各部分硬件的充分重疊工作來(lái)提高處理器性能的。從流水線的時(shí)空角度上看:超標(biāo)量處理器采用的是空間并行性;超級(jí)流水線處理器采用的是時(shí)間并行性。從超大規(guī)模集成電路(VLSI)的實(shí)現(xiàn)工藝來(lái)看:超標(biāo)量處理器能夠更好地適應(yīng)VLSI工藝的要求。通常,超標(biāo)量處理器要使用更多的晶體管。超流水線處理器則需要更快的晶體管及更精確的電路設(shè)計(jì)。為了進(jìn)一步提高處理器執(zhí)行指令的并行度,可以把超標(biāo)量技術(shù)與超流水線技術(shù)結(jié)合在一起,這就是“超標(biāo)量超流水線”處理器。例如,Intel的P6結(jié)構(gòu)(PentiumⅡ/Ⅲ處理器)就是采用這種技術(shù)的更高性能微處理器,其超標(biāo)度為3(即有3條流水線并行操作);流水線的級(jí)數(shù)為12級(jí)。7.1.4動(dòng)態(tài)轉(zhuǎn)移預(yù)測(cè)及轉(zhuǎn)移目標(biāo)緩沖器BTB
(BranchTargetBuffer)正是由于計(jì)算機(jī)指令中具有能夠改變程序流向的指令,才使得程序結(jié)構(gòu)靈活多樣,程序功能豐富多彩。這類指令一般包括跳轉(zhuǎn)(JMP)指令、調(diào)用(CALL)指令和返回(RET)指令等,統(tǒng)稱之為轉(zhuǎn)移(branch)指令。轉(zhuǎn)移指令又可分為“無(wú)條件轉(zhuǎn)移指令”及“條件轉(zhuǎn)移指令”兩大類。無(wú)條件轉(zhuǎn)移指令執(zhí)行時(shí)一定會(huì)發(fā)生轉(zhuǎn)移,而條件轉(zhuǎn)移指令執(zhí)行時(shí)是否發(fā)生轉(zhuǎn)移則取決于指令所要求的條件當(dāng)時(shí)是否滿足。例如:
80x86系統(tǒng)中的條件轉(zhuǎn)移指令“JCSTART”,執(zhí)行時(shí)若進(jìn)位標(biāo)志CF為1,則使程序轉(zhuǎn)移到“轉(zhuǎn)移目標(biāo)地址”START處;否則,將順序執(zhí)行緊接著這條指令之后的下一條指令。
轉(zhuǎn)移指令也給處理器的流水線操作帶來(lái)麻煩。因?yàn)樵谔幚砥黝A(yù)取指令時(shí)還未對(duì)指令進(jìn)行譯碼,即它還不知道哪條指令是轉(zhuǎn)移指令,所以只能按程序的靜態(tài)順序進(jìn)行。也就是說(shuō),即使是遇到一條轉(zhuǎn)移指令,也無(wú)法到“轉(zhuǎn)移目標(biāo)地址”處去預(yù)取指令裝入指令隊(duì)列,而只能順序地裝入緊接著轉(zhuǎn)移指令之后的若干條指令。而當(dāng)指令被執(zhí)行并確實(shí)發(fā)生轉(zhuǎn)移時(shí),指令預(yù)取緩沖器中預(yù)先裝入的指令就沒(méi)用了。此時(shí)必須將指令緩沖器中原來(lái)預(yù)取的指令廢除(也稱“排空”流水線),并從轉(zhuǎn)移目標(biāo)地址開(kāi)始處重新取指令裝入流水線。這樣就極大地影響了流水線的處理速度和性能。已有多項(xiàng)技術(shù)用于減小轉(zhuǎn)移指令對(duì)流水線性能的影響,如基于編譯軟件的“延遲轉(zhuǎn)移”(delayedbranching)技術(shù)和基于硬件的“轉(zhuǎn)移預(yù)測(cè)”(branchprediction)技術(shù)。轉(zhuǎn)移預(yù)測(cè)又有“靜態(tài)轉(zhuǎn)移預(yù)測(cè)”及“動(dòng)態(tài)轉(zhuǎn)移預(yù)測(cè)”之分。靜態(tài)轉(zhuǎn)移預(yù)測(cè)只依據(jù)轉(zhuǎn)移指令的類型來(lái)預(yù)測(cè)轉(zhuǎn)移是否發(fā)生。例如,對(duì)某一類條件轉(zhuǎn)移指令總是預(yù)測(cè)為轉(zhuǎn)移發(fā)生,對(duì)另一類總是預(yù)測(cè)轉(zhuǎn)移不發(fā)生。顯然,靜態(tài)轉(zhuǎn)移預(yù)測(cè)的正確率不會(huì)很高,只能作為其他轉(zhuǎn)移處理技術(shù)的輔助手段。動(dòng)態(tài)轉(zhuǎn)移預(yù)測(cè)法(dynamicbranchprediction)是依據(jù)一條轉(zhuǎn)移指令過(guò)去的行為來(lái)預(yù)測(cè)該指令的將來(lái)行為。即處理器要有一個(gè)“不斷學(xué)習(xí)”的過(guò)程。由于程序結(jié)構(gòu)中有眾多重復(fù)或循環(huán)執(zhí)行的機(jī)會(huì),所以在預(yù)測(cè)算法選得較好的情況下,動(dòng)態(tài)轉(zhuǎn)移預(yù)測(cè)會(huì)達(dá)到較高的正確率,故被現(xiàn)代微處理器所普遍采用。下面,我們?nèi)砸訮entium為例來(lái)簡(jiǎn)要說(shuō)明這種動(dòng)態(tài)轉(zhuǎn)移預(yù)測(cè)法的基本工作原理。Pentium提供了一個(gè)稱為“轉(zhuǎn)移目標(biāo)緩沖器”BTB(BranchTargetBuffer)的小Cache來(lái)動(dòng)態(tài)預(yù)測(cè)程序的轉(zhuǎn)移操作。在程序執(zhí)行時(shí),若某條指令導(dǎo)致轉(zhuǎn)移,便記憶下這條轉(zhuǎn)移指令的地址及轉(zhuǎn)移目標(biāo)地址(放入BTB內(nèi)部的“登記項(xiàng)”中),并用這些信息來(lái)預(yù)測(cè)這條指令再次發(fā)生轉(zhuǎn)移時(shí)的路徑,預(yù)先從這里記錄的“轉(zhuǎn)移目標(biāo)地址”處預(yù)取指令,以保證流水線的指令預(yù)取不會(huì)空置。其基本工作機(jī)制如圖7.3所示。
圖7.3PentiumBTB的工作機(jī)制轉(zhuǎn)移目標(biāo)地址歷史位有效位轉(zhuǎn)移指令地址┇┇┇┇指令預(yù)取器邏輯控制執(zhí)行指令譯碼預(yù)取緩沖器指令Cache加入新項(xiàng)轉(zhuǎn)移取順序取選擇相應(yīng)操作實(shí)際執(zhí)行情況命中與否查找取指令“指令譯碼”階段檢查從預(yù)取緩沖器中取出的指令是否為轉(zhuǎn)移指令,若是轉(zhuǎn)移指令,則將此指令的地址送往BTB進(jìn)行查找。若BTB命中(即在BTB中存在相應(yīng)的登記項(xiàng)),則根據(jù)該項(xiàng)的“歷史位”狀態(tài)預(yù)測(cè)此指令在執(zhí)行階段是否發(fā)生轉(zhuǎn)移。若預(yù)測(cè)為發(fā)生轉(zhuǎn)移,則將該項(xiàng)中登記的“轉(zhuǎn)移目標(biāo)地址”提交給指令預(yù)取器,并指揮指令預(yù)取器從“轉(zhuǎn)移目標(biāo)地址”處提取指令裝入預(yù)取緩沖器,即進(jìn)行圖7.3中所示的“轉(zhuǎn)移取”;若預(yù)測(cè)為不發(fā)生轉(zhuǎn)移,則從該轉(zhuǎn)移指令的下一條指令開(kāi)始提取指令,即進(jìn)行所謂“順序取”。若BTB未命中(即在BTB中不存在相應(yīng)的登記項(xiàng)),則說(shuō)明BTB中沒(méi)有該指令的歷史記錄,此時(shí)固定預(yù)測(cè)為不發(fā)生轉(zhuǎn)移,即固定進(jìn)行“順序取”。至于該指令在執(zhí)行階段實(shí)際發(fā)生轉(zhuǎn)移時(shí)的處理情況,將在下面介紹Pentium“執(zhí)行單元”的功能時(shí)再作具體說(shuō)明。BTB登記項(xiàng)中的“歷史位”用以登記相應(yīng)轉(zhuǎn)移指令先前的執(zhí)行行為,并用于預(yù)測(cè)此指令執(zhí)行時(shí)是否發(fā)生轉(zhuǎn)移。在執(zhí)行階段要根據(jù)實(shí)際是否發(fā)生轉(zhuǎn)移,來(lái)修改命中項(xiàng)的歷史位;對(duì)于BTB未命中的轉(zhuǎn)移指令而在執(zhí)行階段發(fā)生轉(zhuǎn)移的情況,在BTB中建立新項(xiàng)(加入新項(xiàng))并設(shè)定歷史位為11。圖7.4給出了BTB歷史位的意義及狀態(tài)轉(zhuǎn)換情況。圖7.4PentiumBTB歷史位的意義及狀態(tài)轉(zhuǎn)換歷史位:11預(yù)測(cè):強(qiáng)發(fā)生轉(zhuǎn)移歷史位:00預(yù)測(cè):不發(fā)生轉(zhuǎn)移歷史位:01預(yù)測(cè):弱發(fā)生轉(zhuǎn)移歷史位:10預(yù)測(cè):發(fā)生轉(zhuǎn)移實(shí)際發(fā)生轉(zhuǎn)移時(shí),歷史位修改方向?qū)嶋H不發(fā)生轉(zhuǎn)移時(shí),歷史位修改方向發(fā)生轉(zhuǎn)移不發(fā)生轉(zhuǎn)移由圖7.4可以看出,Pentium對(duì)歷史位意義的設(shè)定更傾向于預(yù)測(cè)轉(zhuǎn)移發(fā)生。歷史位11常稱為“強(qiáng)發(fā)生”(stronglytaken)狀態(tài),10稱為“發(fā)生”(taken)狀態(tài),01稱為“弱發(fā)生”(weaklytaken)狀態(tài),這三種歷史位都預(yù)測(cè)轉(zhuǎn)移發(fā)生。
容易想到,對(duì)于循環(huán)程序而言,在首次進(jìn)入循環(huán)和退出循環(huán)時(shí),都將出現(xiàn)轉(zhuǎn)移預(yù)測(cè)錯(cuò)誤的情況。即首次進(jìn)入循環(huán)時(shí),預(yù)測(cè)不發(fā)生轉(zhuǎn)移,而實(shí)際發(fā)生轉(zhuǎn)移;退出循環(huán)時(shí),預(yù)測(cè)發(fā)生轉(zhuǎn)移,而實(shí)際不發(fā)生轉(zhuǎn)移。這兩種情況下均需要重新計(jì)算轉(zhuǎn)移地址,并造成流水線的停頓和等待。但若循環(huán)10次,2次預(yù)測(cè)錯(cuò)誤而8次正確;循環(huán)100次,2次預(yù)測(cè)錯(cuò)誤而98次正確。因此,循環(huán)次數(shù)越多,BTB的效益越明顯。7.1.5指令預(yù)取器和預(yù)取緩沖器指令預(yù)取器總是按給定的指令地址,從指令Cache中順序地取出指令放入預(yù)取緩沖器中,直到在指令譯碼階段遇到一條轉(zhuǎn)移指令并預(yù)測(cè)它在指令執(zhí)行階段將發(fā)生轉(zhuǎn)移時(shí)為止。此時(shí),如圖7.4所示,由BTB提供預(yù)測(cè)轉(zhuǎn)移發(fā)生時(shí)的目標(biāo)地址,并按此地址開(kāi)始再次順序地取指令,直到又遇到一條轉(zhuǎn)移指令并預(yù)測(cè)轉(zhuǎn)移發(fā)生時(shí)為止。指令預(yù)取器就是以這種折線式順序由指令Cache取出指令裝入預(yù)取緩沖器的。7.1.6指令譯碼器指令譯碼器的基本功能是將預(yù)取來(lái)的指令進(jìn)行譯碼,以確定該指令的操作。
Pentium處理器中,指令譯碼器的工作過(guò)程可分為兩個(gè)階段:在第一個(gè)階段,對(duì)指令的操作碼進(jìn)行譯碼,并檢查是否為轉(zhuǎn)移指令。若是轉(zhuǎn)移指令,則將此指令的地址送往BTB。再進(jìn)一步檢查BTB中該指令的歷史記錄,并決定是否實(shí)施相應(yīng)的轉(zhuǎn)移預(yù)測(cè)操作。
在第二個(gè)階段,指令譯碼器需生成存儲(chǔ)器操作數(shù)的地址。在保護(hù)方式下,還需按保護(hù)模式的規(guī)定檢查是否有違約地址,若有,則產(chǎn)生“異常”(exception),并進(jìn)行相應(yīng)的處理。7.1.7執(zhí)行單元EU指令的執(zhí)行以兩個(gè)ALU為中心,完成U、V流水線中兩條指令的算術(shù)及邏輯運(yùn)算。執(zhí)行單元的主要功能有:(1)按地址生成階段(即指令譯碼的第二階段)提供的存儲(chǔ)器操作數(shù)地址,首先在1級(jí)數(shù)據(jù)Cache中獲取操作數(shù);若1級(jí)數(shù)據(jù)Cache“未命中”(操作數(shù)未在Cache中),則在2級(jí)Cache(片外Cache)或主存中查找。(2)確認(rèn)在指令譯碼階段對(duì)轉(zhuǎn)移指令的轉(zhuǎn)移預(yù)測(cè)是否與實(shí)際情況相符,即確認(rèn)預(yù)測(cè)是否正確。若預(yù)測(cè)正確,則除了適當(dāng)修改BTB中的“歷史位”外,其他什么事情也不發(fā)生;若預(yù)測(cè)錯(cuò)誤,則除了修改“歷史位”外,還要清除該指令之后已在U、V流水線中的全部指令(“排空”流水線),并指揮“指令預(yù)取器”重新取指令裝入流水線。另外,對(duì)于前面提到的在查找BTB時(shí)“未命中”從而固定預(yù)測(cè)為不發(fā)生轉(zhuǎn)移的情況:若在執(zhí)行階段此指令確實(shí)沒(méi)有發(fā)生轉(zhuǎn)移,則其他什么事情也不發(fā)生,以后再遇到此轉(zhuǎn)移令時(shí)仍作為一個(gè)“新面孔”的轉(zhuǎn)移指令按前述辦法來(lái)對(duì)待;若在執(zhí)行階段此指令實(shí)際發(fā)生轉(zhuǎn)移的話,則按“預(yù)測(cè)錯(cuò)誤”處理,此時(shí)除了“排空”流水線外,還需將“轉(zhuǎn)移目標(biāo)地址”提交給BTB,連同在指令譯碼階段提交的“轉(zhuǎn)移指令地址”,在BTB中建立一個(gè)新項(xiàng),并設(shè)定“歷史位”為“強(qiáng)發(fā)生”狀態(tài)(11)。7.1.8浮點(diǎn)處理單元FPU浮點(diǎn)處理單元FPU(FloatingPointUnit)專門用來(lái)處理浮點(diǎn)數(shù)或進(jìn)行浮點(diǎn)運(yùn)算,因此也稱浮點(diǎn)運(yùn)算器。在8086、80286及80386年代,曾設(shè)置單獨(dú)的FPU芯片(8087、80287和80387),并稱為算術(shù)協(xié)處理器(mathematicalcoprocessor),簡(jiǎn)稱協(xié)處理器。那時(shí)的主板上配有專門的協(xié)處理器插座。自從80486DX開(kāi)始,則將FPU移至微處理器內(nèi)部,成為微處理器芯片的一個(gè)重要組成部分(如圖7.1所示)。Pentium處理器的FPU性能已做了很大改進(jìn)。FPU內(nèi)有8個(gè)80位的浮點(diǎn)寄存器FR0~FR7,內(nèi)部數(shù)據(jù)總線寬度為80位,并有分立的浮點(diǎn)加法器、浮點(diǎn)乘法器和浮點(diǎn)除法器,可同時(shí)進(jìn)行三種不同的運(yùn)算。FPU的浮點(diǎn)指令流水線也是雙流水線結(jié)構(gòu)。每條流水線分為8個(gè)流水級(jí):預(yù)取指令、指令譯碼、地址生成、取操作數(shù)、執(zhí)行1、執(zhí)行2、寫回結(jié)果和錯(cuò)誤報(bào)告。7.1.9控制單元CU控制單元CU(ControlUnit)的基本功能是控制整個(gè)微處理器按照一定的時(shí)序過(guò)程一步一步地完成指令的操作。Pentium的大多數(shù)簡(jiǎn)單指令都是以所謂“硬連線”(hardwired)邏輯來(lái)實(shí)現(xiàn)的,即指令通過(guò)“指令譯碼器”譯碼后直接產(chǎn)生相應(yīng)的控制信號(hào)來(lái)控制指令的執(zhí)行,從而獲得較快的指令執(zhí)行速度;對(duì)于那些復(fù)雜指令的執(zhí)行則是以“微程序”(microprogramming)方式實(shí)現(xiàn)的。按照微程序?qū)崿F(xiàn)方式,是將指令的操作變成相應(yīng)的一組微指令序列(即微程序)并預(yù)先存放在一個(gè)只讀存儲(chǔ)器中。當(dāng)指令執(zhí)行時(shí),按安排好的順序從只讀存儲(chǔ)器中一條一條讀出這些微指令,從而產(chǎn)生相應(yīng)的操作控制信號(hào)去控制指令的執(zhí)行。“微程序”方式與“硬連線”方式是CPU控制指令執(zhí)行的兩種不同的實(shí)現(xiàn)方式。它們各有不同的特點(diǎn)。一般說(shuō)來(lái),“微程序”方式較方便靈活,但指令執(zhí)行速度較慢,在傳統(tǒng)的微處理器設(shè)計(jì)如CISC(ComplexInstructionSetComputer)結(jié)構(gòu)中常被采用;“硬連線”方式靈活性較差,但它的突出優(yōu)點(diǎn)是指令執(zhí)行速度很快,常用于RISC(ReducedInstructionSetComputer)結(jié)構(gòu)的機(jī)器中。也可以說(shuō),RISC結(jié)構(gòu)中一般不使用“微程序”技術(shù)。另外,控制單元還負(fù)責(zé)流水線的時(shí)序控制,以及處理與“異?!焙汀爸袛唷庇嘘P(guān)的操作和控制。7.2微處理器的外部功能特性7.2.1微處理器的外部引腳信號(hào)
1.80386DX的外部引腳信號(hào)概況80386DX微處理器共132個(gè)外部引腳,用來(lái)實(shí)現(xiàn)與存儲(chǔ)器、I/O接口或其他外部電路進(jìn)行連接和通信。按功能的不同,可將這132個(gè)引腳信號(hào)分成4組:
存儲(chǔ)器/IO接口中斷接口
DMA接口協(xié)處理器接口圖7.6給出了80386DX外部引腳信號(hào)概況圖示。表7-1列出了各個(gè)引腳信號(hào)的名稱、功能、傳送方向以及每個(gè)信號(hào)的有效電平。圖7.680386DX引腳信號(hào)分組微處理器80386DXA31~A2D31~D0DMA接口中斷接口協(xié)處理器接口HOLDHLDAINTRNMI_____BUSYPEREQRESET_______ERROR____BE3~BE0_____READY___ADS
__M/IO
__W/R____BS16____LOCK___NA
__D/C存儲(chǔ)器/IO接口表7-180386DX外部引腳信號(hào)列表名稱功能方向有效電平CLK2系統(tǒng)時(shí)鐘輸入-A31~A2地址總線輸出-字節(jié)允許輸出0D31~D0數(shù)據(jù)總線輸入/輸出-16位總線寬度輸入0W/寫/讀指示輸出1/0D/數(shù)據(jù)/控制指示輸出1/0M/存儲(chǔ)器/IO指示輸出1/0地址狀態(tài)輸出0就緒輸入0下一地址請(qǐng)求輸入0總線封鎖輸出0INTR中斷請(qǐng)求輸入1NMI非屏蔽中斷請(qǐng)求輸入1RESET系統(tǒng)復(fù)位輸入1HOLD總線保持請(qǐng)求輸入1HLDA總線保持響應(yīng)輸出1PEREQ協(xié)處理器請(qǐng)求輸入1協(xié)處理器忙輸入0協(xié)處理器錯(cuò)輸入0例如,“存儲(chǔ)器/IO接口”中的M/IO信號(hào):其功能是“存儲(chǔ)器/IO指示”,用以告訴外部電路當(dāng)前微處理器是在訪問(wèn)存儲(chǔ)器還是I/O接口;該信號(hào)的傳送方向是輸出,即它是由微處理器產(chǎn)生的輸出信號(hào);它的有效電平為1/0,其含義為,在這個(gè)信號(hào)線上的邏輯1電平表明CPU當(dāng)前是在訪問(wèn)存儲(chǔ)器,而邏輯0電平表明是在訪問(wèn)I/O接口。又如,“中斷接口”中的INTR信號(hào):是可屏蔽中斷請(qǐng)求輸入信號(hào),其有效電平是邏輯1。外部設(shè)備利用這個(gè)信號(hào)通知微處理器,它們需要得到服務(wù)。2.存儲(chǔ)器/IO接口信號(hào)(1)地址和數(shù)據(jù)總線信號(hào)地址總線和數(shù)據(jù)總線形成了CPU與存儲(chǔ)器和I/O子系統(tǒng)間進(jìn)行通信的基本通路。在早期的Intel微處理器(如8085、8086/8088)中,曾普遍采用地址總線和數(shù)據(jù)總線復(fù)用技術(shù),即將部分(或全部)地址總線與數(shù)據(jù)總線共用微處理器的一部分引腳,目的是為了減少微處理器的引腳數(shù)量,但由此也會(huì)帶來(lái)控制邏輯及操作時(shí)序上的復(fù)雜性。自80286及更高型號(hào)的微處理器開(kāi)始,則采用分開(kāi)的地址和數(shù)據(jù)總線。如圖7.6所示,80386DX的地址總線信號(hào)A31~A2和數(shù)據(jù)總線信號(hào)D31~D0被分別設(shè)定在不同的引腳上。從硬件的觀點(diǎn)來(lái)看,80386DX的實(shí)模式與保護(hù)模式之間僅有一點(diǎn)不同,即地址總線的規(guī)模。在實(shí)模式下,只輸出低18位地址信號(hào)A19~A2。在保護(hù)模式下,則輸出30位地址信號(hào)A31~A2。其實(shí),實(shí)模式的地址長(zhǎng)度為20位,保護(hù)模式的地址長(zhǎng)度是32位。其余的兩位地址碼A1和A0被80386DX內(nèi)部譯碼,產(chǎn)生字節(jié)允許信號(hào)BE3、BE2、BE1和BE0,以控制在總線上傳送字節(jié)、字或雙字。由圖7.6及表7-1可以看到,地址總線是輸出信號(hào)線。它們用于傳送從CPU到存儲(chǔ)器或I/O接口的地址信息。在實(shí)模式下,20位地址給出了80386DX尋址1M字節(jié)物理地址空間的能力;而在保護(hù)模式下,32位地址可以尋址4G(232)字節(jié)的物理地址空間。無(wú)論是在實(shí)模式下還是保護(hù)模式下,80386DX微型計(jì)算機(jī)均具有獨(dú)立的I/O地址空間。該I/O地址空間的大小為64K字節(jié)單元。所以,在尋址I/O設(shè)備時(shí),僅需使用地址線A15~A2及相應(yīng)的字節(jié)允許信號(hào)BE。數(shù)據(jù)總線由32條數(shù)據(jù)線D31~D0構(gòu)成。由圖7.6及表7-1可以看到,數(shù)據(jù)總線是雙向的,即數(shù)據(jù)既可以由存儲(chǔ)器或I/O接口輸入給CPU,也可以由CPU輸出給存儲(chǔ)器或I/O接口。在數(shù)據(jù)總線上傳送數(shù)據(jù)的類型是對(duì)存儲(chǔ)器讀/寫的數(shù)據(jù)或指令代碼、對(duì)外部設(shè)備輸入/輸出的數(shù)據(jù)以及來(lái)自中斷控制器的中斷類型碼等。在一個(gè)總線周期內(nèi),80386DX在數(shù)據(jù)總線上可以傳送字節(jié)、字或雙字。所以,它必須通知外部電路發(fā)生何種形式的數(shù)據(jù)傳送以及數(shù)據(jù)將通過(guò)數(shù)據(jù)總線的哪一部分進(jìn)行傳送。80386DX是通過(guò)激活相應(yīng)的字節(jié)允許信號(hào)(BE3~BE0)來(lái)做到這一點(diǎn)的。表7-2列出了每個(gè)字節(jié)允許信號(hào)及對(duì)應(yīng)被允許的數(shù)據(jù)總線部分。表7-2字節(jié)允許及數(shù)據(jù)總線信號(hào)字節(jié)允許數(shù)據(jù)總線信號(hào)D7~D0D15~D8D23~D16D31~D24例7.1當(dāng)字節(jié)允許信號(hào)BE3BE2BE1BE0=1100時(shí),將產(chǎn)生哪種類型的數(shù)據(jù)傳送(字節(jié)、字、雙字)?數(shù)據(jù)傳送經(jīng)過(guò)哪些數(shù)據(jù)線?解由表7-2容易發(fā)現(xiàn),此時(shí)將在數(shù)據(jù)線D15~D0上進(jìn)行一個(gè)數(shù)據(jù)字的傳送。(2)控制信號(hào)微處理器的控制信號(hào)用來(lái)支持和控制在地址和數(shù)據(jù)總線上進(jìn)行的信息傳輸。通過(guò)這些控制信號(hào)表明,何時(shí)有效地址出現(xiàn)在地址總線上,數(shù)據(jù)以什么樣的方向在數(shù)據(jù)總線上傳送,寫入到存儲(chǔ)器或I/O接口的數(shù)據(jù)何時(shí)在數(shù)據(jù)總線上有效,以及從存儲(chǔ)器或I/O接口讀出的數(shù)據(jù)何時(shí)能夠在數(shù)據(jù)總線上放好,等等。
80386DX并不直接產(chǎn)生上述功能的控制信號(hào),而是在每個(gè)總線周期的開(kāi)始時(shí)刻輸出總線周期定義的指示信號(hào)。這些總線周期指示信號(hào)需在外部電路中進(jìn)行譯碼,從而產(chǎn)生對(duì)存儲(chǔ)器和I/O接口的控制信號(hào)。三個(gè)信號(hào)用來(lái)標(biāo)識(shí)80386DX的總線周期類型,即在圖7.6及表7-1中所列出的“寫/讀指示”(W/R)、“數(shù)據(jù)/控制指示”(D/C)及“存儲(chǔ)器/IO指示”(M/IO)信號(hào)。表7-3列出了這些總線周期指示信號(hào)的全部狀態(tài)組合及對(duì)應(yīng)的總線周期類型。表7-3總線周期指示信號(hào)及總線周期類型M/D/W/總線周期類型000中斷響應(yīng)001空閑010讀I/O數(shù)據(jù)011寫I/O數(shù)據(jù)100讀存儲(chǔ)器代碼101暫停/關(guān)機(jī)110讀存儲(chǔ)器數(shù)據(jù)111寫存儲(chǔ)器數(shù)據(jù)例7.2若總線周期指示碼M/IO、D/C、W/R=010,則將產(chǎn)生什么類型的總線周期?解:
表7-3不難發(fā)現(xiàn),總線周期指示碼010標(biāo)識(shí)著一個(gè)“讀I/O數(shù)據(jù)”的總線周期。
在圖7.6的“存儲(chǔ)器/IO接口”中,還可以看到另外三個(gè)控制信號(hào),即地址狀態(tài)(ADS)、就緒(READY)及下一地址(NA)信號(hào)。ADS為邏輯0表示總線周期指示碼(M/IO、D/C、W/R)、字節(jié)允許信號(hào)(BE3~BE0)及地址信號(hào)(A31~A2)全為穩(wěn)定狀態(tài)。ADS信號(hào)通常是提供給外部總線控制邏輯電路,表明總線周期指示碼、字節(jié)允許及地址信號(hào)是否有效。READY信號(hào)用于插入等待狀態(tài)(Tw)到當(dāng)前總線周期中,以便通過(guò)增加時(shí)鐘周期數(shù)使之得到擴(kuò)展。在圖7.6中可以看到,這個(gè)信號(hào)是輸入給80386DX的。通常它是由存儲(chǔ)器或I/O子系統(tǒng)產(chǎn)生并經(jīng)外部總線控制邏輯電路提供給80386DX。通過(guò)將READY信號(hào)變?yōu)檫壿?,存儲(chǔ)器或I/O接口可以告訴80386DX它們已經(jīng)準(zhǔn)備好,處理器可以完成數(shù)據(jù)傳送操作。
80386DX支持在其總線接口上的地址流水線方式。所謂地址流水線(AddressPipelining),是指對(duì)下一個(gè)總線周期的地址、總線周期指示碼及有關(guān)的控制信號(hào)可以在本總線周期結(jié)束之前發(fā)出,從而使對(duì)下一個(gè)總線周期的尋址與本總線周期的數(shù)據(jù)傳送相重疊。采用這種方式,可以用較低速的存儲(chǔ)器電路獲得與較高速存儲(chǔ)器相同的性能。外部總線控制邏輯電路是通過(guò)將NA輸入信號(hào)有效(變?yōu)檫壿?)來(lái)激活這種流水線方式的。
由80386DX輸出的另一個(gè)控制信號(hào)是總線封鎖(LOCK)信號(hào)。這個(gè)信號(hào)用以支持多處理器結(jié)構(gòu)。在使用共享資源(如全局存儲(chǔ)器)的多處理器系統(tǒng)中,該信號(hào)能夠用來(lái)確保系統(tǒng)總線和共享資源的占用不被間斷。當(dāng)微處理器執(zhí)行帶有LOCK前綴的指令時(shí),則LOCK輸出引腳變?yōu)檫壿?,從而可以封鎖共享資源以獨(dú)占使用。
最后一個(gè)控制信號(hào)是“16位總線寬”(BS16)輸入信號(hào)。該信號(hào)用來(lái)選擇32位(BS16=1)或16位(BS16=0)數(shù)據(jù)總線。3.中斷接口信號(hào)由圖7.6可見(jiàn),80386DX的中斷接口信號(hào)有“中斷請(qǐng)求”(INTR)、“非屏蔽中斷請(qǐng)求”(NMI)及“系統(tǒng)復(fù)位”(RESET)。INTR是一個(gè)對(duì)80386DX的輸入信號(hào),用來(lái)表明外部設(shè)備需要得到服務(wù)。80386DX在每條指令的開(kāi)始時(shí)刻采樣這個(gè)輸入信號(hào)。INTR引腳上的邏輯1電平表示出現(xiàn)了中斷請(qǐng)求。
當(dāng)80386DX檢測(cè)到有效的中斷請(qǐng)求信號(hào)后,若IF=1,便啟動(dòng)一個(gè)中斷響應(yīng)總線周期時(shí)序。在表7-3中可以看到,中斷響應(yīng)總線周期的出現(xiàn)是通過(guò)總線周期指示碼M/IO、D/C、W/R等于000來(lái)通知外部電路的。這個(gè)總線周期指示碼將被外部總線控制邏輯電路譯碼從而產(chǎn)生一個(gè)中斷響應(yīng)信號(hào)。通過(guò)這個(gè)中斷響應(yīng)信號(hào),80386DX告訴發(fā)出中斷請(qǐng)求的外部設(shè)備它的服務(wù)請(qǐng)求已得到同意。INTR輸入是可屏蔽的,即它的操作可以通過(guò)微處理器內(nèi)部的標(biāo)志寄存器中的“中斷標(biāo)志位”(IF)予以允許或禁止。而非屏蔽中斷NMI輸入,是不可屏蔽的中斷輸入。只要在NMI引腳上出現(xiàn)0到1的跳變,不管中斷標(biāo)志IF的狀態(tài)如何,一個(gè)中斷服務(wù)請(qǐng)求總會(huì)被微處理器所接受。在執(zhí)行完當(dāng)前指令后,程序一定會(huì)轉(zhuǎn)移到非屏蔽中斷服務(wù)程序的入口處。
RESET輸入用來(lái)對(duì)80386DX進(jìn)行硬件復(fù)位。例如,利用這個(gè)輸入可以使微型計(jì)算機(jī)在加電時(shí)被復(fù)位。RESET信號(hào)跳變到邏輯1,將初始化微處理器的內(nèi)部寄存器。當(dāng)它返回到邏輯0時(shí),程序控制被轉(zhuǎn)移到系統(tǒng)復(fù)位服務(wù)程序的入口處。該服務(wù)程序用來(lái)初始化其余的系統(tǒng)資源,如I/O端口、中斷標(biāo)志及數(shù)據(jù)存儲(chǔ)器等。
4.DMA接口信號(hào)
由圖7.6可見(jiàn),80386DX的DMA(DirectMemoryAccess,直接存儲(chǔ)器訪問(wèn))接口只通過(guò)兩個(gè)信號(hào)實(shí)現(xiàn):總線保持請(qǐng)求(HOLD)和總線保持響應(yīng)(HLDA)。當(dāng)一個(gè)外部電路(如DMA控制器)希望掌握總線控制權(quán)時(shí),它就通過(guò)將HOLD輸入信號(hào)變?yōu)檫壿?來(lái)通知當(dāng)前的總線主80386DX。
80386DX如果同意放棄總線控制權(quán)(未在執(zhí)行帶LOCK前綴的指令),就在執(zhí)行完當(dāng)前總線周期后,使相關(guān)的總線輸出信號(hào)全部變?yōu)楦咦钁B(tài)(第三態(tài)),并通過(guò)將HLDA輸出信號(hào)變到邏輯1電平來(lái)通知外部電路它已交出了總線控制權(quán)。80386DX維持這種狀態(tài)直至“總線保持請(qǐng)求”信號(hào)撤消(變?yōu)檫壿?),隨之80386DX將“總線保持響應(yīng)”信號(hào)也變?yōu)檫壿?,并重新收回總線控制權(quán)。5.協(xié)處理器接口信號(hào)在圖7.6中可以看到,在80386DX微處理器上提供了協(xié)處理器接口信號(hào),以實(shí)現(xiàn)與80387DX數(shù)值協(xié)處理器的接口
80387DX不能獨(dú)立地形成經(jīng)數(shù)據(jù)總線的數(shù)據(jù)傳送。每當(dāng)80387DX需要從存儲(chǔ)器讀或?qū)懖僮鲾?shù)時(shí),它必須通知80386DX來(lái)啟動(dòng)這個(gè)數(shù)據(jù)傳送過(guò)程。這是通過(guò)將80386DX的“協(xié)處理器請(qǐng)求”(PEREQ)輸入信號(hào)變?yōu)檫壿?來(lái)實(shí)現(xiàn)的。
另外兩個(gè)協(xié)處理器接口信號(hào)是BUSY和ERROR。“協(xié)處理器忙”(BUSY)是80386DX的一個(gè)輸入信號(hào)。每當(dāng)協(xié)處理器80387DX正在執(zhí)行一條數(shù)值運(yùn)算指令時(shí),它就通過(guò)將BUSY輸入信號(hào)變?yōu)檫壿?來(lái)通知80386DX。如果在協(xié)處理器運(yùn)算過(guò)程中有一個(gè)錯(cuò)誤產(chǎn)生,這將通過(guò)使“協(xié)處理器錯(cuò)”(ERROR)輸入信號(hào)變?yōu)檫壿?來(lái)通知80386DX。7.2.2微處理器的總線時(shí)序
總線時(shí)序是微處理器功能特性的一個(gè)重要方面。1.總線時(shí)序基本概念
(1)指令周期、總線周期及時(shí)鐘周期指令的執(zhí)行通常由取指令、譯碼和執(zhí)行等操作步驟組成,執(zhí)行一條指令所需要的時(shí)間稱為指令周期(instructioncycle)。不同指令的指令周期是不相同的。
CPU與存儲(chǔ)器或I/O接口交換信息是通過(guò)總線進(jìn)行的。
CPU通過(guò)總線完成一次訪問(wèn)存儲(chǔ)器或I/O接口操作所需要的時(shí)間,稱為總線周期(buscycle)。一個(gè)指令周期由一個(gè)或幾個(gè)總線周期構(gòu)成。
時(shí)鐘周期是CPU執(zhí)行指令的基本時(shí)間計(jì)量單位,它由計(jì)算機(jī)的主頻決定。例如,8086的主頻為5MHz,則一個(gè)時(shí)鐘周期為200ns;PentiumⅢ的主頻為500MHz,則其時(shí)鐘周期僅為2ns。時(shí)鐘周期也稱T狀態(tài)(T-State)。對(duì)于不同型號(hào)的微處理器,一個(gè)總線周期所包含的時(shí)鐘周期數(shù)并不相同。
例如,8086的一個(gè)總線周期通常由4個(gè)時(shí)鐘周期組成,分別標(biāo)以T1、T2、T3和T4;從80286開(kāi)始,CPU的一個(gè)總線周期一般由兩個(gè)時(shí)鐘周期構(gòu)成,分別標(biāo)以T1和T2。(2)等待狀態(tài)和空閑狀態(tài)通過(guò)一個(gè)總線周期完成一次數(shù)據(jù)傳送,一般要有輸出地址和傳送數(shù)據(jù)兩個(gè)基本過(guò)程例如,對(duì)于由四個(gè)時(shí)鐘周期構(gòu)成一個(gè)總線周期的8086來(lái)說(shuō),在第一個(gè)時(shí)鐘周期(T1)期間由CPU輸出地址,在隨后的三個(gè)時(shí)鐘周期(T2、T3和T4)用來(lái)傳送數(shù)據(jù)。數(shù)據(jù)傳送必須在T2~T4這三個(gè)時(shí)鐘周期內(nèi)完成。否則,由于在T4周期之后將開(kāi)始下一個(gè)總線周期而會(huì)造成總線操作的錯(cuò)誤。
在實(shí)際應(yīng)用中,當(dāng)一些慢速設(shè)備在T2、T3、T4三個(gè)時(shí)鐘周期內(nèi)不能完成數(shù)據(jù)讀寫時(shí),那么總線就不能被系統(tǒng)所正確使用。為此,允許在總線周期中插入用以延長(zhǎng)總線周期的T狀態(tài),稱為“等
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《嬰幼兒行為觀察與記錄》 項(xiàng)目六任務(wù)二思考與練習(xí)答案
- 基本公共衛(wèi)生服務(wù)項(xiàng)目政策解析
- 代理銷售合同
- 房屋抵債協(xié)議書參考
- 不要孩子雙方同意離婚合同
- 2025年公司遷移是否合法地導(dǎo)致員工合同終止
- 2025綜合裝修合同范本
- 項(xiàng)目合作協(xié)議范本
- 講師合作合同協(xié)議
- 2025租房合同附件格式
- 2025年上海市普陀區(qū)中考英語(yǔ)二模試卷(含答案)
- 浙江省杭州市蕭山區(qū)高橋初中教育集團(tuán)2024學(xué)年第二學(xué)期4月份素養(yǎng)調(diào)研九年級(jí)語(yǔ)文試卷題卷
- 玉盤二部合唱正譜
- 2025年第六屆(中小學(xué)組)國(guó)家版圖知識(shí)競(jìng)賽測(cè)試題庫(kù)及答案
- 色卡-CBCC中國(guó)建筑標(biāo)準(zhǔn)色卡(千色卡1026色)
- 醫(yī)院藥品信息管理系統(tǒng)(DOC)
- isa-381g站用變接地保護(hù)測(cè)控裝置技術(shù)使用說(shuō)明書南網(wǎng)版v3
- 計(jì)算機(jī)應(yīng)用基礎(chǔ)(中等職業(yè)學(xué)校校本教材)
- 完整版健康管理師
- 沈陽(yáng)終止解除勞動(dòng)合同范文證明書(三聯(lián))
- 廣東省中型灌區(qū)續(xù)建配套與節(jié)水改造工程初步設(shè)計(jì)報(bào)告編制指南17
評(píng)論
0/150
提交評(píng)論