版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一講單周期數(shù)據(jù)通路的設(shè)計(jì)第二講單周期控制器的設(shè)計(jì)第三講多周期處理器的設(shè)計(jì)第四講微程序控制器設(shè)計(jì)與異常處理Ch6:CPU-DatapathandControl中央處理器:數(shù)據(jù)通路和控制器第一講單周期數(shù)據(jù)通路的設(shè)計(jì)CPU的功能及其與計(jì)算機(jī)性能的關(guān)系數(shù)據(jù)通路的位置單周期數(shù)據(jù)通路的設(shè)計(jì)數(shù)據(jù)通路的功能和實(shí)現(xiàn)操作元件(組合邏輯部件)狀態(tài)/存儲(chǔ)元件(時(shí)序邏輯部件)數(shù)據(jù)通路的定時(shí)選擇MIPS指令集的一個(gè)子集作為CPU的實(shí)現(xiàn)目標(biāo)下條指令地址計(jì)算與取指令部件R型指令的數(shù)據(jù)通路訪存指令的數(shù)據(jù)通路立即數(shù)運(yùn)算指令的數(shù)據(jù)通路分支和跳轉(zhuǎn)指令的數(shù)據(jù)通路綜合所有指令的數(shù)據(jù)通路主要內(nèi)容回顧:CPU功能及其與計(jì)算機(jī)性能的關(guān)系與或門等(邏輯運(yùn)算)移位器寄存器運(yùn)算控制邏輯(大家都需要:多路選擇器和傳輸線路等)加法器ALU運(yùn)算部件ALU以加法器為核心運(yùn)算部件以ALU/加法器為核心指令執(zhí)行控制邏輯更多寄存器等CPU計(jì)算機(jī)性能(程序執(zhí)行快慢)由三個(gè)關(guān)鍵因素決定(回顧)指令數(shù)目、CPI、時(shí)鐘周期指令數(shù)目由編譯器和ISA決定時(shí)鐘周期和CPI由CPU的實(shí)現(xiàn)來決定因此,CPU的設(shè)計(jì)與實(shí)現(xiàn)非常重要!它直接影響計(jì)算機(jī)的性能。CPU基本組成原理圖執(zhí)行部件控制部件CPU由執(zhí)行部件和控制部件組成指令寄存器IR程序計(jì)數(shù)器PC控制器主要由指令譯碼器和控制信號(hào)形成部件組成CPU的工作:取指令,指令譯碼,取操作數(shù),運(yùn)算,存結(jié)果(每步都需檢測(cè)“異?!薄爸袛唷保?shù)據(jù)通路(執(zhí)行部件)的位置計(jì)算機(jī)的五大組成部分:什么是數(shù)據(jù)通路(DataPath)?指令執(zhí)行過程中,數(shù)據(jù)所經(jīng)過的路徑,包括路徑中的部件。它是指令的執(zhí)行部件。進(jìn)行數(shù)據(jù)存儲(chǔ)、處理、傳送控制器(Control)的功能是什么?對(duì)指令進(jìn)行譯碼,生成指令對(duì)應(yīng)的控制信號(hào),控制數(shù)據(jù)通路的動(dòng)作。能對(duì)執(zhí)行部件發(fā)出控制信號(hào),是指令的控制部件。ControlMemoryCPUInputOutputDatapathDatapath注意以下層次結(jié)構(gòu):CPU執(zhí)行部件(數(shù)據(jù)通路)操作元件存儲(chǔ)(狀態(tài))元件寄存器控制部件(控制器)操作元件:組合邏輯電路加法器(Adder)多路選擇器(MUX)算邏部件(ALU)32AB32Y32SelectMUX3232AB32ResultZeroOPALU3232AB32SumCarryAdderCarryIn3Decoderout0out1out7out2譯碼器(Decoder)控制信號(hào)組合邏輯元件的特點(diǎn):其輸出只取決于當(dāng)前的輸入。即:若輸入一樣,則其輸出也一樣定時(shí):所有輸入到達(dá)后,經(jīng)過一定的邏輯門延時(shí),輸出端改變,并保持到下次改變,不需要時(shí)鐘信號(hào)來定時(shí)狀態(tài)元件:時(shí)序邏輯電路狀態(tài)(存儲(chǔ))元件的特點(diǎn):具有存儲(chǔ)功能,在時(shí)鐘控制下輸入被寫到電路中,直到下個(gè)時(shí)鐘到達(dá)輸入端狀態(tài)由時(shí)鐘決定何時(shí)被寫入,輸出端狀態(tài)隨時(shí)可以讀出定時(shí)方式:規(guī)定信號(hào)何時(shí)寫入狀態(tài)元件或何時(shí)從狀態(tài)元件讀出邊沿觸發(fā)(edge-triggered)方式:狀態(tài)單元中的值只在時(shí)鐘邊沿改變。每個(gè)時(shí)鐘周期改變一次。上升沿(risingedge)觸發(fā):在時(shí)鐘正跳變時(shí)進(jìn)行讀/寫。下降沿(fallingedge)觸發(fā):在時(shí)鐘負(fù)跳變時(shí)進(jìn)行讀/寫。cycletimerisingedgefallingedge狀態(tài)元件中何時(shí)狀態(tài)被改變?切記:狀態(tài)單元的輸入信息總是在一個(gè)時(shí)鐘邊沿到達(dá)后的“Clk-to-Q”時(shí)才被寫入到單元中,此時(shí)的輸出才反映新的狀態(tài)值數(shù)據(jù)通路中的狀態(tài)元件:寄存器(組)(LatchProp-鎖存延遲)Q總是在clock-to-Q后跟著D變化這期間D的變化不影響Q狀態(tài)元件:寄存器和寄存器組寄存器(Register)有一個(gè)寫使能(WriteEnable-WE)信號(hào) 0:時(shí)鐘邊沿到來時(shí),輸出不變
1:時(shí)鐘邊沿到來時(shí),輸出開始變?yōu)檩斎肴裘總€(gè)時(shí)鐘邊沿都寫入,則不需WE信號(hào)寄存器組(RegisterFile)兩個(gè)讀口(組合邏輯操作):busA和busB分別由RA和RB給出地址。地址RA或RB有效后,經(jīng)一個(gè)“取數(shù)時(shí)間(AccessTime)”,busA和busB有效。一個(gè)寫口(時(shí)序邏輯操作):寫使能為1的情況下,時(shí)鐘邊沿到來時(shí),busW傳來的值開始被寫入RW指定的寄存器中。ClkDataInWrite
EnableNNDataOutClkbusWWrite
Enable3232busA32busB555RWRARB3232-bitRegisters寄存器組的內(nèi)部結(jié)構(gòu)busWCD031MUXMXURegister0Register1Register
30Register
31WriteEnableRW32-to-1DecoderRARBbusAbusBClkCDCDCD每個(gè)寄存器由32個(gè)觸發(fā)器組成;輸入數(shù)據(jù)來自busW,讀出數(shù)據(jù)分別送busA和busB;WriteEnable信號(hào)控制是否寫入新值。Backtoadd理想存儲(chǔ)器(idealizedmemory
)DataOut:讀出數(shù)據(jù)DataIn:寫入數(shù)據(jù)Address:存儲(chǔ)器地址讀操作(組合邏輯操作):地址Address有效后,經(jīng)一個(gè)“取數(shù)時(shí)間AccessTime”,DataOut上數(shù)據(jù)有效。寫操作(時(shí)序邏輯操作):寫使能為1的情況下,時(shí)鐘Clk邊沿到來時(shí),DataIn傳來的值開始被寫入Address指定的存儲(chǔ)單元中。額外假設(shè)的狀態(tài)元件:理想存儲(chǔ)器ClkDataInWriteEnable3232DataOutAddress為簡(jiǎn)化數(shù)據(jù)通路操作說明,把存儲(chǔ)器簡(jiǎn)化為帶時(shí)鐘信號(hào)Clk的理想模型。并非真實(shí)存在于CPU中!數(shù)據(jù)通路與時(shí)序控制假定采用下降沿觸發(fā)(負(fù)跳變)方式(也可以是上升沿方式)所有狀態(tài)單元在下降沿寫入信息,經(jīng)過LatchProp(clk-to-Q)后輸出有效CycleTime=LatchProp+LongestDelayPath+Setup+ClockSkew
Clk寄存器的輸入可變化SetupHold............SetupHold數(shù)據(jù)通路由“…+狀態(tài)元件
+操作元件(組合電路)+狀態(tài)元件
+…”組成只有狀態(tài)元件能存儲(chǔ)信息,所有操作元件都須從狀態(tài)單元接收輸入,并將輸出寫入狀態(tài)單元中。其輸入為前一時(shí)鐘生成的數(shù)據(jù),輸出為當(dāng)前時(shí)鐘所用的數(shù)據(jù)現(xiàn)代計(jì)算機(jī)的時(shí)鐘周期ClkClk數(shù)據(jù)通路與時(shí)序控制現(xiàn)代計(jì)算機(jī)都是同步系統(tǒng)(Synchronoussystem)所有動(dòng)作有專門時(shí)序信號(hào)來定時(shí)同步系統(tǒng)常用的定時(shí)信號(hào):時(shí)鐘現(xiàn)代計(jì)算機(jī)中的“指令周期”CPU取并執(zhí)行一條指令的時(shí)間每條指令的指令周期肯定一樣嗎?——不一定一個(gè)指令周期可分為取指令、讀操作數(shù)、執(zhí)行并寫結(jié)果等多個(gè)步驟,將在幾個(gè)時(shí)鐘周期內(nèi)完成。準(zhǔn)備工作:組成指令功能的四種基本操作每條指令的功能總是由以下四種基本操作來實(shí)現(xiàn):(1)讀取某一主存單元的內(nèi)容,并將其裝入某個(gè)寄存器;(2)把一個(gè)數(shù)據(jù)從某個(gè)寄存器存入給定的主存單元中;(3)把一個(gè)數(shù)據(jù)從某個(gè)寄存器送到另一個(gè)寄存器或者ALU;(4)進(jìn)行某種算術(shù)運(yùn)算或邏輯運(yùn)算,將結(jié)果送入某個(gè)寄存器。操作功能可形式化描述描述語言稱為寄存器傳送語言RTL(RegisterTransferLanguage)本章所用的RTL規(guī)定如下:(1)R[r]——寄存器r的內(nèi)容;(2)M[addr]——讀取主存單元addr的內(nèi)容;(3)“
”——表示傳送操作,傳送源在右,傳送目的在左;(4)PC——表示程序計(jì)數(shù)器PC的值;(5)OP[data]——對(duì)數(shù)據(jù)data進(jìn)行OP操作。單總線數(shù)據(jù)通路
四種基本操作的時(shí)序在通用寄存器之間傳送數(shù)據(jù)R0out,Yin完成算術(shù)、邏輯運(yùn)算R1out,YinR2out,Add,ZinZout,R3in從主存取字R1out,MARinRead,WMFC
(等待MFC)MDRout,R2in寫字到主存R1out,MARinR2out,MDRin,Write,
WMFCR[R2]←M[R[R1]]
M[R[R1]]←R[R2]CPU訪存有兩種通信方式早期:直接訪問MM,“異步”方式,用MFC應(yīng)答信號(hào);現(xiàn)在:先Cache后MM,“同步”方式,無需應(yīng)答信號(hào)。問題:時(shí)鐘周期的寬度如何確定?以“Riout,OP,Zin”所花時(shí)間來確定還是以“Read/Write”所花時(shí)間來確定?以上四種操作各需要幾個(gè)時(shí)鐘周期?1Cycle?3Cycles?3Cycles?3Cycles?Read/Write時(shí)間更長(zhǎng),故以此為準(zhǔn)!OP:Add、Sub、And、Or等通用寄存器總線連接方式!內(nèi)總線內(nèi)總線外總線復(fù)習(xí):MIPS的三種指令類型ADDandSUBSTRACTaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtargetoptarget
address026316
bits26bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bitsoprsrtimmediate0162126316bits16bits5bits5
bits本講目標(biāo):實(shí)現(xiàn)以上7條指令對(duì)應(yīng)的數(shù)據(jù)通路!教材中實(shí)現(xiàn)了11條指令,可將7條指令和11條指令的數(shù)據(jù)通路進(jìn)行對(duì)比,以深入理解設(shè)計(jì)原理。大家記得是哪三種類型?R-Type、I-Type、J-Type設(shè)計(jì)處理器的步驟第一步:分析每條指令的功能,并用RTL(RegisterTransferLanguage)來表示。第二步:根據(jù)指令的功能給出所需的元件,并考慮如何將他們互連。第三步:確定每個(gè)元件所需控制信號(hào)的取值。第四步:匯總所有指令所涉及到的控制信號(hào),生成一張反映指令與控制信 號(hào)之間關(guān)系的表。第五步:根據(jù)表得到每個(gè)控制信號(hào)的邏輯表達(dá)式,據(jù)此設(shè)計(jì)控制器電路。
處理器設(shè)計(jì)涉及到數(shù)據(jù)通路的設(shè)計(jì)和控制器的設(shè)計(jì)數(shù)據(jù)通路中有兩種元件
操作元件:由組合邏輯電路實(shí)現(xiàn)存儲(chǔ)(狀態(tài))元件:由時(shí)序邏輯電路實(shí)現(xiàn)ISA確定后,進(jìn)行處理器設(shè)計(jì)的大致步驟RTL:TheADDInstruction(加法指令)add rd,rs,rtM[PC] 從PC所指的內(nèi)存單元中取指令R[rd]←R[rs]+R[rt] 從rs、rt所指的寄存器中取數(shù)后相加。若結(jié)果不溢出,則將結(jié)果送rd所指的寄存器中;若結(jié)果溢出,則不送結(jié)果,并轉(zhuǎn)到“溢出處理程序”執(zhí)行。PC←PC+4 PC加4,使PC指向下一條指令oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bitsRTL:TheLoadInstruction(裝入指令)lw rt,rs,imm16M[PC] (同加法指令)Addr←R[rs]+SignExt(imm16)計(jì)算數(shù)據(jù)地址(立即數(shù)要進(jìn)行符號(hào)擴(kuò)展)R[rt]←M[Addr] 從存儲(chǔ)器中取出數(shù)據(jù),裝入到寄存器中PC←PC+4
(同加法指令)oprsrtimm160162126316bits16bits5bits5
bits取指令部件(InstructionFetchUnit)每條指令都有的公共操作:取指令:M[PC]更新PC:PC←PC+4下地址邏輯:或者實(shí)現(xiàn)+4,或者在需要轉(zhuǎn)移(BranchandJump)時(shí),將PC更新為“轉(zhuǎn)移目標(biāo)地址”32Instruction
WordAddressInstructionMemoryPCClkNext
AddrLogic順序:先取指令,再改PC的值(具體實(shí)現(xiàn)時(shí),可以并行)下地址邏輯取指后,各指令功能不同,數(shù)據(jù)通路也不同取指令部件加法和減法指令(R-type類型)實(shí)現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget首先考慮add和sub指令(R-Type指令的代表)oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bitsoprsrtimmediate0162126316bits16bits5bits5
bitsoptarget
address026316
bits26bitsRR(R-type)型指令的數(shù)據(jù)通路功能:R[rd]←R[rs]opR[rt],如:addrd,rs,rt32ResultALUctrClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersrsrtrdALU不考慮公共操作,僅R-Type指令執(zhí)行階段的數(shù)據(jù)通路如下:ALUctr,RegWr:指令譯碼后產(chǎn)生的控制信號(hào)Ra,Rb,Rw
分別對(duì)應(yīng)指令的rs,rt,rd“addrd,rs,rt”控制信號(hào)為?ALUctr=add,RegWr=1oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bits溢出時(shí),不寫結(jié)果并需轉(zhuǎn)異常處理程序溢出帶立即數(shù)的邏輯指令(ori指令)實(shí)現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget2.考慮ori指令(I-Type指令和邏輯運(yùn)算指令的代表)oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bitsoprsrtimmediate0162126316bits16bits5bits5
bitsoptarget
address026316
bits26bitsRTL:TheORImmediateInstructionori rt,rs,imm16M[PC] 取指令(公共操作,取指部件完成)R[rt]
R[rs]orZeroExt(imm16)
立即數(shù)零擴(kuò)展,并與rs內(nèi)容做“或”運(yùn)算PC
PC+4計(jì)算下地址(公共操作,取指部件完成)imm16016153116
bits16bits0000000000000000零擴(kuò)展ZeroExt(imm16)思考:應(yīng)在前面數(shù)據(jù)通路上加哪些元件和連線?用何控制信號(hào)?oprsrtimm160162126316bits16bits5bits5
bits帶立即數(shù)的邏輯指令的數(shù)據(jù)通路R[rt]←R[rs]opZeroExt[imm16]] Example:orirt,rs,imm1632ResultALUctrClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersRs(Rt)ALUR-Type類型的結(jié)果寫入RdR-Type的操作數(shù)來自busB應(yīng)加蘭色部分,完成操作數(shù)的值和結(jié)果位置的指定(將Rtype和ori區(qū)分開)Ori指令的控制信號(hào):RegDst=?;RegWr=?;ALUctr=?;ALUSrc=?Ori指令的控制信號(hào):RegDst=1;RegWr=1;ALUSrc=1;ALUctr=orRtRdRegDstMux01ZeroExtMux1632imm16ALUSrc01oprsrtimm160162126316bits16bits5bits5
bits訪存指令中的數(shù)據(jù)裝入指令(lw)實(shí)現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget3.考慮lw指令(訪存指令的代表)oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bitsoprsrtimmediate0162126316bits16bits5bits5
bitsoptarget
address026316
bits26bitsRTL:TheLoadInstructionlw rt,rs,imm16M[PC] 取指令(公共操作,取指部件完成)Addr
R[rs]+SignExt(imm16)計(jì)算存儲(chǔ)單元地址(符號(hào)擴(kuò)展!)R[rt]
M[Addr] 裝入數(shù)據(jù)到寄存器rt中PC
PC+4 計(jì)算下地址(公共操作,取指部件完成)immediate016153116
bits16
bits0000000000000000000161531immediate16
bits16
bits
11111111111111111符號(hào)擴(kuò)展
:立即數(shù)用補(bǔ)碼表示oprsrtimmediate0162126316bits16bits5bits5
bits裝入(lw)指令的數(shù)據(jù)通路R[rt]←M[R[rs]+SignExt[imm16]] lwrt,rs,imm1632ALUctrClkbusWRegWr3232busA32busB555RwRaRb32
32-bitRegistersRsRtDon’t
Care(Rt)RdRegDstMuxMux3216imm16ALUSrcALUExtExtOpMuxMemtoRegClkData
InWrEn32AdrDataMemory32MemWr加蘭色部分。為什么?控制信號(hào)RegDst,RegWr,ALUctr,ExtOp,ALUSrc,MemWr,MemtoReg各取何值?0101RegDst=1,RegWr=1,ALUctr=add,ExtOp=1,ALUSrc=1,MemWr=0,MemtoReg=10:零擴(kuò)展,1:符號(hào)擴(kuò)展01oprsrtimm160162126316bits16bits5bits5
bits訪存指令中的存數(shù)指令(sw)實(shí)現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget4.考慮sw指令(訪存指令的代表)oprsrtimmediate0162126316bits16bits5bits5
bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bitsoptarget
address026316
bits26bitsRTL:TheStoreInstructionsw rt,rs,imm16M[PC] 取指令(公共操作,取指部件完成)Addr
R[rs]+SignExt(imm16)計(jì)算存儲(chǔ)單元地址(符號(hào)擴(kuò)展?。㎝em[Addr]←R[rt] 寄存器rt中的內(nèi)容存到內(nèi)存單元中PC
PC+4 計(jì)算下地址(公共操作,取指部件完成)
oprsrtimm160162126316bits16bits5bits5
bits存數(shù)(sw)指令的數(shù)據(jù)通路M[R[rs]+SignExt[imm16]]
←
R[rt] Example:swrt,rs,imm1632ALUctrClkbusWRegWr3232busA32busB555RwRaRb32
32-bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkDataInWrEn32AdrDataMemory32MemWrALU0101加蘭色部分。才能向存儲(chǔ)器存數(shù)RegDst=x,RegWr=0,ALUctr=add,ExtOp=1,ALUSrc=1,MemWr=1,MemtoReg=x01oprsrtimm160162126316bits16bits5bits5
bits分支(條件轉(zhuǎn)移)指令(相等轉(zhuǎn)移:beq)實(shí)現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget5.考慮beq指令(條件轉(zhuǎn)移指令的代表)oprsrtimmediate0162126316bits16bits5bits5
bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bitsoptarget
address026316
bits26bitsRTL:TheBranchInstructionbeq rs,rt,imm16M[PC] 取指令(公共操作,取指部件完成)Cond
R[rs]-R[rt] 做減法比較rs和rt中的內(nèi)容if(CONDeq0) 計(jì)算下地址(根據(jù)比較結(jié)果,修改PC)PC
PC+4+(SignExt(imm16)x4) elsePC
PC+4立即數(shù)的含義是相對(duì)指令數(shù)!立即數(shù)用補(bǔ)碼表示oprsrtimm160162126316bits16bits5bits5
bits條件轉(zhuǎn)移指令的數(shù)據(jù)通路beqrs,rt,imm16 WeneedtocompareRsandRt!ALUctrClkbusWRegWr3232busA32busB555RwRaRb32
32-bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpALUPCClkNext
AddrLogic16imm16BranchToInstructionMemoryZero思考:下址邏輯如何設(shè)計(jì)?RegDst=x,RegWr=0,ALUctr=sub,ExtOp=x,ALUSrc=0,MemWr=0,MemtoReg=x,Branch=10101oprsrtimm160162126316bits16bits5bits5
bits下地址計(jì)算邏輯的設(shè)計(jì)PC是一個(gè)32位地址:順序執(zhí)行時(shí):PC<31:0>=PC<31:0>+4轉(zhuǎn)移執(zhí)行時(shí):PC<31:0>=PC<31:0>+4+SignExt[Imm16]X4MIPS按字節(jié)編址,每條指令為32位,占4個(gè)字節(jié),故PC的值總是4的倍數(shù),即后兩位為00,因此,PC只需要30位即可。下地址計(jì)算邏輯簡(jiǎn)化為:
順序執(zhí)行時(shí):PC<31:2>=PC<31:2>+1轉(zhuǎn)移執(zhí)行時(shí):PC<31:2>=PC<31:2>+1+SignExt[Imm16]取指令時(shí):
指令地址=PC<31:2>串接“00”PC采用30位后,其轉(zhuǎn)移地址計(jì)算邏輯變得更加簡(jiǎn)單??梢杂煤?jiǎn)便的方式實(shí)現(xiàn)如下:下址邏輯設(shè)計(jì)3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZeroAddr<31:2>InstructionMemoryAddr<1:0>“00”32Instruction<31:0>(Instruction<15:0>)30先根據(jù)當(dāng)前PC取指令,計(jì)算的下條指令地址在下一個(gè)時(shí)鐘到來后才能寫入PC!標(biāo)志位ZF,由ALU產(chǎn)生!為什么這里沒有用“ALU”而是用“Adder”?“Adder”無需操作控制信號(hào)。無條件轉(zhuǎn)移指令實(shí)現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget6.考慮Jump指令(無條件轉(zhuǎn)移指令的代表)oprsrtimmediate0162126316bits16bits5bits5
bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bitsoptarget
address026316
bits26bitsRTL:TheJumpInstructionj targetM[PC] 取指令(公共操作,取指部件完成)PC<31:2>←PC<31:28>串接target<25:0>計(jì)算目標(biāo)地址optarget
address026316
bits26bits下地址邏輯的完善:InstructionFetchUnit:取指令部件3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZero“00”Addr<31:2>InstructionMemoryAddr<1:0>32Instruction<15:0>Instruction<31:0>imm16、Target、…30264Mux10Target30JumpInstruc<25:0>這是“取指部件”的完整設(shè)計(jì)3個(gè)輸入:jump,Branch,Zero1個(gè)輸出:指令字PC的改變?cè)谙聜€(gè)Clk到達(dá)后發(fā)生!RegDst=ExtOp=ALUSrc=MemtoReg=ALUctr=x,
RegWr=0,MemWr=0,Branch=0,Jump=1完整的單周期數(shù)據(jù)通路32ALUctrClkbusWRegWr3232busA32busB555RwRaRb-3232
bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkDataInWrEn32AdrDataMemory32MemWrALUInstructionFetch
UnitClkZeroInstruction<31:0>JumpBranch010101<21:25><16:20><11:15><0:15>Imm16RdRtRs指令執(zhí)行結(jié)果總是在下個(gè)時(shí)鐘到來時(shí)開始保存在寄存器或存儲(chǔ)器或
PC
中!下一講考慮:如何產(chǎn)生控制信號(hào)!(控制器的設(shè)計(jì)內(nèi)容)數(shù)據(jù)通路中的關(guān)鍵路徑(Load操作)記?。杭拇嫫鹘M和理想存儲(chǔ)器的定時(shí)方式寫操作時(shí),作為時(shí)序邏輯電路。即:時(shí)鐘到達(dá)前,輸入需setup;到達(dá)后經(jīng)“Clk-to-Q”,寫入數(shù)據(jù)到達(dá)輸出端讀操作時(shí),作為組合邏輯電路。即:地址有效后經(jīng)過“accesstime”,輸出開始有效Clk5RwRaRb32
32-bitRegistersRdALUClkDataInDataOutDataAddressIdealDataMemoryInstructionbusInstruction
AddressIdealInstructionMemoryClkPC5Rs5Rt16Imm32323232Load操作:R[Rt]←M[R[Rs]+Imm16]第一講小結(jié)CPU設(shè)計(jì)直接決定了時(shí)鐘周期寬度和CPI,所以對(duì)計(jì)算機(jī)性能非常重要!CPU主要由數(shù)據(jù)通路和控制器組成數(shù)據(jù)通路:實(shí)現(xiàn)指令集中所有指令的操作功能控制器:控制數(shù)據(jù)通路中各部件進(jìn)行正確操作數(shù)據(jù)通路中包含兩種元件操作元件(組合電路):ALU、MUX、Ext.、Adder、Reg/MemRead等狀態(tài)元件(時(shí)序電路):PC、Reg/MemWrite數(shù)據(jù)通路的定時(shí)數(shù)據(jù)通路中的操作元件沒有存儲(chǔ)功能,其操作結(jié)果必須寫到存儲(chǔ)元件中在時(shí)鐘到達(dá)后clk-to-Q時(shí)存儲(chǔ)元件開始更新狀態(tài)MIPS指令集的一個(gè)子集作為CPU的實(shí)現(xiàn)目標(biāo)公共操作:取指令和PC+4下址計(jì)算:30位PC,三路選擇:順序、Branch(結(jié)合標(biāo)志Zero)、JumpR型:ALU兩個(gè)操作數(shù)來自rs和rt,結(jié)果寫到rd訪存:符號(hào)擴(kuò)展,數(shù)據(jù)在rt和主存單元中交換立即數(shù):0擴(kuò)展后的操作數(shù)送到ALU的一個(gè)輸入端第二講單周期控制器的設(shè)計(jì)考察每條指令在數(shù)據(jù)通路中的執(zhí)行過程和涉及到的控制信號(hào)的取值公共操作:取指令和計(jì)算下址PCR-Type指令(add/sub)立即數(shù)指令(ori)訪存指令(lw/sw)分支指令(beq)跳轉(zhuǎn)指令(j)匯總各指令的控制信號(hào)取值分兩類控制信號(hào):直接送往數(shù)據(jù)通路/送往局部控制單元分析ALU操作對(duì)應(yīng)的控制信號(hào)與func字段之間的關(guān)系設(shè)計(jì)ALU局部控制單元設(shè)計(jì)主控制單元主要內(nèi)容WhereareWeNow?ControlDatapathMemoryProcessorInputOutput下一個(gè)目標(biāo):設(shè)計(jì)單周期數(shù)據(jù)通路的控制器。設(shè)計(jì)方法:根據(jù)每條指令的功能,分析控制信號(hào)的取值,并在表中列出。根據(jù)列出的指令和控制信號(hào)的關(guān)系,寫出每個(gè)控制信號(hào)的邏輯表達(dá)式。Add/Sub操作開始時(shí)取指部件中的動(dòng)作3030SignExt3016imm16Mux01Adder“1”PCAdder3030Branch
=
previousZero=
previous“00”Addr<31:2>InstructionMemoryAddr<1:0>32Mux10264PC<31:28>Target30取指令:Instruction←M[PC]所有指令都相同Jump=previousInstruction<15:0>Instruction<31:0>30Instr<25:0>Clk新指令還沒有取出譯碼,所以控制信號(hào)的值還是原來指令的舊值。新指令還沒有執(zhí)行,所以標(biāo)志也為舊值。取出指令的第31-26位作為操作碼首先被譯碼。op=000000,則為R-type指令在下個(gè)Clk到來之前PC輸入端的值不會(huì)寫入。只要保證下個(gè)Clk來之前能產(chǎn)生正確的信號(hào)并存入正確的PC即可(等待譯碼結(jié)果)!指令譯碼后R型指令(Add/Sub)操作過程32ALUctr
=AddorSubClkbusWRegWr
=13232busA32busB555RwRaRb32
32-bitRegistersRsRtRtRdRegDst
=1ExtMuxMux3216imm16ALUSrc
=0ExtOp
=xMuxMemtoReg=0ClkData
InWrEn32AdrDataMemory32MemWr
=0ALUInstructionFetch
UnitClkZeroInstruction<31:0>Jump=0Branch
=0R[rd]←R[rs]+/-R[rt]010101<21:25><16:20><11:15><0:15>Imm16RdRtRsoprsrtrdshamtfunc061116212631R型指令(Add/Sub)最后階段取指部件中的動(dòng)作3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch
=0Zero=x“00”Addr<31:2>InstructionMemoryAddr<1:0>32Mux10264PC<31:28>Target30PC←PC+4除BranchandJump以外的指令都相同Jump=0Instruction<15:0>Instruction<31:0>30Instruction<25:0>此時(shí)控制信號(hào)已經(jīng)是新的(譯碼和運(yùn)算后產(chǎn)生),
保證了正確的PC值的產(chǎn)生,在足夠長(zhǎng)的時(shí)間后,下個(gè)時(shí)鐘Clk到來!Register-Register(R型指令)Timing32ResultALUctrClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersRsRtRdALUClkPCRs,Rt,Rd,Op,FuncClk-to-QALUctrInstruction
MemoryAccessTimeOldValueNewValueRegWrOldValueNew
ValueDelaythroughControlLogicbusA,BRegister
FileAccessTimeOldValueNew
ValuebusWALU
DelayOldValueNewValueOld
ValueNew
ValueNew
Value(上個(gè)周期內(nèi)算好的,本條指令的地址)Old
ValueRegisterWriteOccursHerePC+4PC+4
PCori指令譯碼后的執(zhí)行過程32ALUctr
=OrClkbusWRegWr
=13232busA32busB555RwRaRb3232-bitRegistersRsRtRtRdRegDst
=0ExtMuxMux3216imm16ALUSrc
=1ExtOp
=0MuxMemtoReg
=0ClkData
InWrEn32AdrDataMemory32MemWr
=0ALUInstructionFetch
UnitClkZeroInstruction<31:0>Jump
=0Branch
=0R[rt]←R[rs]orZeroExt[Imm16]010101<21:25><16:20><11:15><0:15>Imm16RdRtRsoprsrtimmediate016212631Load指令譯碼后的執(zhí)行過程32ALUctr=AddClkbusWRegWr
=13232busA32busB555RwRaRb3232-bitRegistersRsRtRtRdRegDst
=0ExtMuxMux3216imm16ALUSrc
=1ExtOp=1MuxMemtoReg
=1ClkDataInWrEn32AdrDataMemory32MemWr
=0ALUInstructionFetch
UnitClkZeroInstruction<31:0>Jump
=0Branch
=0010101<21:25><16:20><11:15><0:15>Imm16RdRtRsR[rt]←DataMemory{R[rs]+SignExt[imm16]}oprsrtimmediate016212631Store指令譯碼后的執(zhí)行過程32ALUctr=AddClkbusWRegWr=03232busA32busB555RwRaRb32
32-bitRegistersRsRtRtRdRegDst
=xExtMuxMux3216imm16ALUSrc
=1ExtOp
=1MuxMemtoReg=xClkData
InWrEn32AdrDataMemory32MemWr
=1ALUInstructionFetch
UnitClkZeroInstruction<31:0>Jump
=0Branch=0010101<21:25><16:20><11:15><0:15>Imm16RdRtRsM{R[rs]+SignExt[imm16]}←R[rt]oprsrtimmediate016212631Branch指令譯碼后的執(zhí)行過程32ALUctr=SubClkbusWRegWr=03232busA32busB555RwRaRb3232-bitRegistersRsRtRtRdRegDst=xExtMuxMux3216imm16ALUSrc
=0ExtOp
=xMuxMemtoReg=xClkDataInWrEn32AdrDataMemory32MemWr
=0ALUInstructionFetch
UnitClkZeroInstruction<31:0>Jump=0Branch=1010101<21:25><16:20><11:15><0:15>Imm16RdRtRsif(R[rs]-R[rt]==0)thenZero←1;elseZero←0oprsrtimmediate016212631Branch指令最后階段取指部件中的動(dòng)作3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch=1Zero=1“00”Addr<31:2>InstructionMemoryAddr<1:0>32Mux10264PC<31:28>Target30Jump
=0Instruction<15:0>Instruction<31:0>30Instruction<25:0>if(Zero==1)thenPC=PC+4+SignExt[imm16]*4;elsePC=PC+4oprsrtimmediate016212631Jump指令譯碼后的執(zhí)行過程32ALUctr=xClkbusWRegWr
=03232busA32busB555RwRaRb3232-bitRegistersRsRtRtRdRegDst=xExtMuxMux3216imm16ALUSrc=xExtOp
=xMuxMemtoReg
=xClkData
InWrEn32AdrDataMemory32MemWr=0ALUInstructionFetch
UnitClkZeroInstruction<31:0>Jump
=1Branch
=0010101<21:25><16:20><11:15><0:15>Imm16RdRtRsIFU中目標(biāo)地址送PC,其他什么都不做(只要保證存儲(chǔ)部件不發(fā)生寫的動(dòng)作)optargetaddress02631如何保證存儲(chǔ)部件不發(fā)生寫?使相應(yīng)的寫使能信號(hào)為0!Jump指令結(jié)束前IFU中的動(dòng)作3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch=
0Zero=x“00”Addr<31:2>InstructionMemoryAddr<1:0>32Mux10264PC<31:28>Target30PC←PC<31:29>concattarget<25:0>concat“00”Jump=1Instruction<15:0>Instruction<31:0>30Instruction<25:0>optarget
address02631綜合分析結(jié)果,得到如下指令與控制信號(hào)的關(guān)系表addsuborilwswbeqjumpRegDstALUSrcMemtoRegRegWriteMemWriteBranchJumpExtOpALUctr<2:0>1001000xAdd1001000xSubtr01010000Or01110001Addx1x01001Addx0x0010xSubtrxxx0001xxxxfuncop00000000
000000
110110001110101100010000
001010000010
0010與func字段無關(guān)!主控制單元和ALU局部控制單元R-typeorilwswbeqjumpRegDstALUSrcMemtoRegRegWriteMemWriteBranchJumpExtOpALUctr1001000xAdd/Subtr01010000Or01110001Addx1x01001Addx0x0010xSubtrxxx0001xxxxop00
000000
110110
001110
101100
010000
0010MIPS指令格式中指示操作性質(zhì)的字段有兩個(gè):op(主控)和func(ALU局控)。ALUctr的值取決于ALUop和func,其他控制信號(hào)僅取決于op。ALUop有5種情況,N可為3.哪5種?funcMainControlop6ALUControl(Local)N=?6ALUopALUctr3ALUALUop和“func”字段的譯碼R-typeorilwswbeqjumpALUop(Symbolic)“R-type”O(jiān)rAddAddSubtrxxxALUop<2:0>1xx0100000
00
0x1xxxMainControlop6ALUControl(Local)funcN6ALUopALUctr3000000rsrtrdshamtfunc061116212631R-typefunc<5:0>Instruction
Operation10000010
0010100100100101101010addsubtractandorset-on-less-thanALUctr<2:0>ALU
Operation000001100101010AddSubtractAndOr
SubtractALUctrALUALUop的編碼定義如下:ALUctr與func后4位有關(guān),需建立ALUctr與ALUop和func后四位之間對(duì)應(yīng)關(guān)系問題:ALUop能否僅用2位?能!因?yàn)閖ump時(shí)任意,故可僅用兩位。如R:11,ori:10,beq:01,lw/sw:00,J-xxR-Type取1xx,不會(huì)發(fā)生編碼沖突!頭三行非R-Type,由ALUop決定,與func無關(guān)。R-Type時(shí),操作完全由func決定。ALUctr控制信號(hào)的真值表R-typeorilwswbeqALUop(Symbolic)“R-type”O(jiān)rAddAddSubtrALUop<2:0>1xx010000000
0x1ALUopfuncbit2bit1bit0bit<2>bit<1>bit<0>bit<3>000xxxxALUctrALUOperationAdd000bit<2>bit<1>bit<0>0x1xxxxSubtract001010xxxxOr1101xx0000Add0001xx0010Subtract0011xx0100And0101xx0101Or1101xx1010Subtract001funct<3:0>Instruction
Op.00000010010001011010addsubtractandorset-on-less-than建立ALUop、func后4位和ALUctr之間的關(guān)系表由關(guān)系表可得出ALUctr的邏輯表達(dá)式:ALUctr[i]=f(ALUop[i],func[i])ALUctr可用更多位數(shù),這樣便于擴(kuò)充,例如,可加入異或、移位等操作。TheLogicEquationforALUctr<0>ALUctr<0>=!ALUop<2>&ALUop<0>+ ALUop<2>&!func<2>&func<1>&!func<0>ALUopfuncbit<2>bit<1>bit<0>bit<2>bit<1>bit<0>bit<3>ALUctr<0>0x1xxxx11xx001011xx10101Thismakesfunc<3>adon’tcare從前面的真值表中,抽取出ALUctr[0]為1的行TheLogicEquationforALUctr<1>ALUopfuncbit<2>bit<1>bit<0>bit<2>bit<1>bit<0>bit<3>010xxxx1ALUctr<1>1xx010011xx01011ALUctr<1>=!ALUop<2>&ALUop<1>&!ALUop<0>+ ALUop<2>&!func<3>&func<2>&!func<1>從前面的真值表中,抽取出ALUctr[1]為1的行TheLogicEquationforALUctr<2>ALUopfuncbit<2>bit<1>bit<0>bit<2>bit<1>bit<0>bit<3>ALUctr<2>010xxxx11xx01011ALUctr<2>=!ALUop<2>&ALUop<1>&!ALUop<0> +ALUop<2>&!func<3>&func<2>&!func<1>&func<0>
從前面的真值表中,抽取出ALUctr[2]為1的行局部ALU控制單元邏輯ALUControl(Local)func36ALUopALUctr3ALUctr<0>=!ALUop<2>&ALUop<0>+ ALUop<2>&!func<2>&func<1>&!func<0>ALUctr<1>=!ALUop<2>&ALUop<1>&!ALUop<0>+ALUop<2>&!func<3>&func<2>&!func<1>ALUctr<2>=!ALUop<2>&ALUop<1>&!ALUop<0>+ ALUop<2>&!func<3>&func<2>&!func<1>&func<0>
總結(jié)前面的結(jié)果,得到:根據(jù)以上邏輯方程,可實(shí)現(xiàn)局部ALU控制單元!主控制單元的真值表R-typeorilwswbeqjumpRegDstALUSrcMemtoRegRegWriteMemWriteBranchJumpExtOpALUop(Symbolic)1001000x“R-type”01010000Or01110001Addx1x01001Addx0x0010xSubtrxxx0001xxxxop00
000000
110110
001110
101100
0100000010ALUop<2>10000xALUop
<1>x100xxALUop<0>x0001xMainControlop6ALUControl(Local)func36ALUopALUctr3RegDstALUSrc:主控單元的輸入主控單元的輸出考察每個(gè)控制信號(hào)的邏輯方程(如:RegWrite)R-typeorilwswbeqjumpRegWrite111000op00
000000
110110
001110101100010000
0010RegWrite=R-type+ori+lw=!op<5>&!op<4>&!op<3>&!op<2>&!op<1>&!op<0> (R-type)+!op<5>&!op<4>&op<3>&op<2>&!op<1>&op<0> (ori)+op<5>&!op<4>&!op<3>&!op<2>&op<1>&op<0> (lw)op<0>op<5>..op<5>..<0>op<5>..<0>op<5>..<0>op<5>..<0>op<5>..<0>R-typeorilwswbeqjumpRegWrite指令譯碼器MainControl的PLA實(shí)現(xiàn)op<0>op<5>..op<5>..<0>op<5>..<0>op<5>..<0>op<5>..<0>op<5>..<0>R-typeorilwswbeqjumpRegWriteALUSrcMemtoRegMemWriteBranchJumpRegDstExtOpALUop<2>ALUop<1>ALUop<0>指令譯碼器BACK執(zhí)行前述7條指令的完整的單周期處理器32ALUctrClkbusWRegWr3232busA32busB555RwRaRb32
32-bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkData
InWrEn32AdrDataMemory32MemWrALUInstructionFetch
UnitClkZeroInstruction<31:0>JumpBranch010101<21:25><16:20><11:15><0:15>Imm16RdRsRtMainControlop6ALUControlfunc63ALUopALUctr3RegDstALUSrc:Instr<5:0>Instr<31:26>Instr<15:0>lw指令的執(zhí)行時(shí)間最長(zhǎng),它所花時(shí)間作為時(shí)鐘周期ClkPCRs,Rt,Rd,Op,FuncClk-to-QALUctrInstructionMemoryAccessTimeOldValueNewValueRegWrOld
ValueNewValueDelaythroughControlLogicbusARegisterFileAccessTimeOld
ValueNew
ValuebusBALUDelayOldValueNew
ValueOld
ValueNewValueNew
ValueOld
ValueExtOpOld
ValueNewValueALUSrcOldValueNewValueMemtoRegOld
ValueNewValueAddressOld
ValueNew
ValuebusWOldValueNewDelaythroughExtender&MuxRegisterWriteOccursDataMemoryAccessTimePC+4PC+4PC
單周期計(jì)算機(jī)的性能單周期處理器的CPI為多少?其他條件一定的情況下,CPI越小,則性能越好!CPI=1,不是很好嗎?單周期處理器的性能會(huì)不會(huì)很好?為什么?計(jì)算機(jī)的性能除CPI外,還取決于時(shí)鐘周期的寬度單周期處理器的時(shí)鐘寬度為最復(fù)雜指令的執(zhí)行時(shí)間很多指令可以在更短的時(shí)間內(nèi)完成CPI=1!單周期計(jì)算機(jī)的性能假設(shè)在單周期處理器中,各主要功能單元的操作時(shí)間為:
存儲(chǔ)單元:200psALU和加法器:100ps寄存器堆(讀/寫):50ps假設(shè)程序中各類指令占比:25%取數(shù)、10%存數(shù)、45%ALU、15%分支、5%跳轉(zhuǎn)假設(shè)MUX、控制單元、PC、擴(kuò)展器和傳輸線路都沒有延遲,則下面實(shí)現(xiàn)方式中,哪個(gè)更快?快多少?(1)每條指令在一個(gè)固定長(zhǎng)度的時(shí)鐘周期內(nèi)完成(2)每條指令在一個(gè)時(shí)鐘周期內(nèi)完成,但時(shí)鐘周期僅為指令所需,也即為可變的(實(shí)際不可行,只是為了比較)單周期計(jì)算機(jī)的性能解:CPU執(zhí)行時(shí)間=指令條數(shù)xCPIx時(shí)鐘周期=指令條數(shù)x時(shí)鐘周期兩種方案的指令條數(shù)都一樣,CPI都為1,所以只要比較時(shí)鐘周期寬度即可。各類指令要求的時(shí)間長(zhǎng)度為:?jiǎn)沃芷谟?jì)算機(jī)的性能對(duì)于方式(1),時(shí)鐘周期由最長(zhǎng)指令來決定,應(yīng)該是load指令,為600ps對(duì)于方式(2),時(shí)鐘周期取各條指令所需時(shí)間,時(shí)鐘周期從600ps至200ps不等根據(jù)各類指令的頻度,計(jì)算出平均時(shí)鐘周期長(zhǎng)度為:CPU時(shí)鐘周期=600x25%+550x10%+400x45%+350x15%+200x5%=447.5psCPU性能比====1.34方式(1)的CPU執(zhí)行時(shí)間方式(2)的CPU執(zhí)行時(shí)間方式(1)的CPU時(shí)鐘周期方式(2)的CPU時(shí)鐘周期600447.5由此可見,可變時(shí)鐘周期的性能是定長(zhǎng)周期的1.34倍但是,對(duì)每類指令采用可變長(zhǎng)時(shí)鐘周期
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024國(guó)際貨物買賣合同CIF術(shù)語
- 2024天津市勞動(dòng)合同范本
- 2024裝飾工程勞務(wù)分包標(biāo)準(zhǔn)合同
- 2024年度企業(yè)管理系統(tǒng)升級(jí)合同
- 2024年企業(yè)咨詢服務(wù)提供合同
- 2024年度安置房買賣合同中的交易過程監(jiān)督
- 2024企業(yè)間貸款合同范文
- 2024建材訂貨合同范文
- 2024年度安徽省某地行政中心建筑施工合同
- 2024年度廣告制作合同:某廣告公司對(duì)客戶的廣告制作及標(biāo)的廣告創(chuàng)意要求
- 曾國(guó)藩為人識(shí)人及用人
- 雙喜公司雙喜世紀(jì)婚禮策劃活動(dòng)
- 色貌與色貌模型
- (2021年)浙江省杭州市警察招考公安專業(yè)科目真題(含答案)
- 中國(guó)佛教文化課件
- 民用無人駕駛航空器飛行題庫(kù)(判斷100)
- 氣管插管術(shù) 氣管插管術(shù)
- DB32T 4301-2022《裝配式結(jié)構(gòu)工程施工質(zhì)量驗(yàn)收規(guī)程》(修訂)
- BIM工程師題庫(kù)500道及參考答案(完整版)
- SB/T 10412-2007速凍面米食品
- 材料力學(xué)06章13彎曲變形課件
評(píng)論
0/150
提交評(píng)論