最新數(shù)字系統(tǒng)設(shè)計實驗--流水線MIPS微處理器設(shè)計_第1頁
最新數(shù)字系統(tǒng)設(shè)計實驗--流水線MIPS微處理器設(shè)計_第2頁
最新數(shù)字系統(tǒng)設(shè)計實驗--流水線MIPS微處理器設(shè)計_第3頁
最新數(shù)字系統(tǒng)設(shè)計實驗--流水線MIPS微處理器設(shè)計_第4頁
最新數(shù)字系統(tǒng)設(shè)計實驗--流水線MIPS微處理器設(shè)計_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、最新數(shù)字系統(tǒng)設(shè)訃實驗一流水線HIPS微處理濡設(shè)il一、實驗?zāi)康?1) 了解提高CPU性能的方法。(2) 理解數(shù)據(jù)冒險、控制冒險的概念以及流水線沖突的解 決方法。(3 )掌握流水線MIPS微處理器的工作原理。(4 )掌握流水線MIPS微處理器的測試方法。二實驗任務(wù)設(shè)計一個32位流水線M IPS微處理器,具體要求如下設(shè)計要 求:(1 )至少執(zhí)行下列MIPS32指令。算數(shù)運算指令:ADD ADDUSUBSUBUADDIADDU邏輯運算指令:ANDORNORXORANDIORIXORI SLT SLTISLTUSLTIU移位指令:SLLSLLVSRLSRLVSRA條件分支指令:BEQBNEBGEZBG

2、TZBLEZBLTZ 無條件跳轉(zhuǎn)指令:J JR 數(shù)據(jù)傳輸指令:LW SW 空指令:NOP(2 )在用5級流水線技術(shù),對數(shù)據(jù)冒險實現(xiàn)轉(zhuǎn)發(fā)或阻塞功能。 (3 )在XUP Vietex-II Pro開發(fā)系統(tǒng)中實現(xiàn)MIPS微處理器, 要求C P U的運行速度大于2 5MHz.三.實驗原理1 流水線MIPS CPU總體設(shè)計流水線是數(shù)字系統(tǒng)中一種提高系統(tǒng)穩(wěn)定性和工作速度的 方法,廣泛應(yīng)用在高檔CPU的構(gòu)建中。根據(jù)MIPS處理器指 令的特點,將整體的處理過程分為取指令(IF 1指令譯碼、 執(zhí)行、存儲器訪問和寄存器寫回五級,對應(yīng)多周期CPU的五 個處理階段。如圖1所示,_個指令的執(zhí)行需要五個時鐘周 期,每個時

3、鐘周期上升沿來臨時”此指令所代表的一系列數(shù) 據(jù)和控制信息轉(zhuǎn)移到下一級處理??趎nnnnnnrLIF*EXMEMIF12EXXEMIF “EX“MEMdEXuMEMIEILKEX,MEM圖1流水線流水作業(yè)示意圖條MIPS指令分為五個處理步驟,即五級流水線,的具3 / 60體執(zhí)行過程如圖2所示。Z testJgMetnWr.cPC 4RogDstControlMermoReg A LUC ode A.USrcA ALUSfCBRead addressInstruction131-01Instructionmemorylrts!fuctknlralruclkr.(20-llrirucikni5-ii

4、jMReed register 1Read 陽g&er 2V/nfc regtelecRead data 1Read daUi2V/rrte (fesa Rogtctor圖2五級流水線MIPS CPU初步原理框圖流水線寄存器:為了在其它四級流水線中各條指令保持各 自的值,從指令存儲器中讀出的指令必須保存在寄存器中。 同樣的方法應(yīng)用到每個流水線步驟中,需要在上圖中各級之 間加入寄存器,如圖3所示。jpjqlxcia Pl-01Katructcn memoryPC.4c、(i&-ojOMR 1(M0 2顯二工圖3 .在各級分割線添加寄存器后的框圖由于在流水線中,數(shù)據(jù)和控制信息將在時鐘上升沿轉(zhuǎn)移到

5、下一級,所以規(guī)走流水線轉(zhuǎn)移的變量命名遵守如下格式:名 稱_流水線級名稱。例如,在ID級指令譯碼電路(DECODE )產(chǎn)生的寄存器寫允許信號RegWrite在ID級、EX級、MEM級和WB級上的 命名分別為RegWrite_ids RegWrite_ex、RegWrite_men 和RegWritej/vb。在頂層文件中,類似的變量名稱有近百個, 這樣的命名方式起到了很好的識別作用。1MIPS指令格式:R型指令格式3126 2521 2016 1511 106 50oprsrtrdsafunct本實驗需要實現(xiàn)的R型指令有:I)算術(shù)邏輯運算指令:最新數(shù)字系統(tǒng)設(shè)訃實驗一流水線、IIPS微處理器設(shè)訃A

6、DD、ADDU、SUB、SUBU、AND、OR、NOR、XOR、SLT、SLTUII)移位指令:SLLV、SRLV、SRAV、SLL、SRL、SRAIII)寄存器跳轉(zhuǎn)指令:JRI型指令格式3126 2521 2016 150oprsrt16-bits Imm本實驗需要實現(xiàn)的I型指令有:I)存儲器訪問指令:LW、SWII)立即數(shù)算術(shù)邏輯運算指令:ADDI、ADDIU、ANDI、ORI、XORI、SLTI、SLTIUIII)分支指令:BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ分支地址為:PC+4+(sign-extend(Imm)2)理指令格式嚴 26 25?op I26-bits a

7、ddress本實驗需要實現(xiàn)的J型指令只有:無條件跳轉(zhuǎn)指令:J跳轉(zhuǎn)地址為:PC31:28zIR25:0l2/ bOO特別注意:1、寄存器跳轉(zhuǎn)指令JR不是J型指令,而是R型指令,其指令格式為:3126 2521 2016/5行 106 50031 一一 0008跳轉(zhuǎn)地址為:$ra ,寄存器號為rs2、移閔旨令SLL、SRL、SRA只有rt個源操作數(shù):3126 2521 20 二門 106 50031 一00083、取字指令的操作過程:rt V二Memrs+sig n_ exte nd(imm)存字指令的操作過程:Memrs+sign_extend(imm) and $4. $2 S5or $8.

8、$2. $6add $9. $4. $2圖3.6數(shù)據(jù)冒險與阻塞注意到W指令只能在第4眄 鐘周期從內(nèi)存中讀出數(shù) 據(jù)卩、此它和緊隨其啟 的mnd指令之間的依賴J 系與時序方向定相反 g的.這種冒險是無法通I 過轉(zhuǎn)發(fā)來實現(xiàn)的。這類冒險不同于數(shù)據(jù)相關(guān)冒險,需要單獨一個冒險檢 測單元(Hazard Detector 丫 f它在ID級完成。冒險成立的條件為: 上一條指令是lw指令,即MemRead_ex=l ; 在EX級的lw指令與在ID級的指令讀寫的是同一個寄 存器 / 即 Reg Wr i te Ad d r_ex=Rs Ad d r_i d 或RegW riteAd d r_ex=RtAd dr_i

9、do冒險的解決:引入流水線阻塞當(dāng)Hazard Detector檢測到冒險條件成立時,在lw指 令和下一條指令之間插入阻塞,即流水線氣泡(bubble), 使后一條指令延遲一個時鐘周期執(zhí)行,這樣就將該冒險轉(zhuǎn)化 為二階數(shù)據(jù)相關(guān),可用轉(zhuǎn)發(fā)解決。如圖3.7所示。Timo (in clock cycles) CC1 CC2 CC3 CC4 CC 5 CC6 CC 7 CC 8 CC9 CC10lw $2. 20($ 1)and becoi ies nopadd $4, $2. $5or $8, $2. $6add $9, $4. $2圖3.7流水線氣泡的引入需要注意的是,如果處于ID級的指令被阻塞z那么

10、處 于IF級的指令也必須阻塞,否則,處于ID級的指令就會丟 失。防止這兩條指令繼續(xù)執(zhí)行的方法是:保持PC寄存器和 IF/ID流水線寄存器不變,同時插入一個流水線氣泡。具體實現(xiàn)方法如下:流水線氣泡的插入:在ID級檢測到冒險條件時,Hazard Detector輸出一個信號:stall ,將ID/EX流水線寄 存器中的EX、MEM和WB級控制信號全部清零。這些信號 傳遞到流水線后面的各級,由于控制信號均為零,所以不會 對任何寄存器和存儲器進行寫操作。保持PC寄存器和IF/ID流水線寄存器不變:在ID級 檢測到冒險條件時,Hazard Detector輸出一個信號:PCJFWrite,作為使能信號同

11、時送給PC寄存器和IF/ID流 水線寄存器。冒險成立時,該信號為低電平,禁止PC寄存 器和IF/ID流水線寄存器接收新數(shù)據(jù)。33分支冒險還有一類冒險是包含分支的流水線冒險z下圖。Time (in clock cycles) CC7 CC8 CC 9CC 1 CC2 CC3 CC4 CC 5861.S3.28 ,卄二 40 beq $1. S3. 2844 and $12. S2. $5g52 addS14.S2. $272 lw $4. 50(57)圖3.8分支冒險實例流水線每個時鐘周期都得取指令才能維持運行但分支 指令必須等到MEM級才能確定是否執(zhí)行分支。這種為了確定預(yù)取正確的指令而導(dǎo)致的延

12、遲叫做控制冒險或分支冒險。種比較普遍的提高分支阻塞速度的方法是假設(shè)分支 不發(fā)生,并繼續(xù)執(zhí)行順序的指令流。如果分支發(fā)生的話,就 丟棄已經(jīng)預(yù)取并譯碼的指令,指令的執(zhí)行沿著分支目標繼 續(xù)。由于分支指令直到MEM級才能確定下一條指令的PC, 這就意味著為了丟棄指令必須將流水線中的IF、ID和EX級 的指令都清除掉(flush X這種優(yōu)化方法的代價較大,效率 較低。如果我們能在流水線中提前分支指令的執(zhí)行過程,那么 就能減少需要清除的指令數(shù)。這是一種提高分支效率的方 法,降低了執(zhí)行分支的代價。因此我們采用提前分支指令的方法解決分支冒險。提前分支指令需要提前完成兩個操作: 計算分支的目的地址:由于已經(jīng)有了

13、PC值禾口 IF/ID流水線寄存器中的指令值, 所以可以很方便地將EX級的分支地址計算電路移到ID級。 我們針對所有指令都執(zhí)行分支地址的計算過程”但只有在需 要它的時候才會用到。 判斷分支指令的跳轉(zhuǎn)條件:我們將用于判斷分支指令成立的Zero信號檢測電路(Z test )從ALU中獨立出來,并將它從EX級提前至ID級。 具體的設(shè)計將在ID級設(shè)計中介紹。在提前完成以上兩個操作之外,我們還需丟棄IF級的指 令。具體做法是:加入一個控制信號IF.flush ,做為F/ID 流水線寄存器的清零信號。當(dāng)分支冒險成立,即Z=1 ,則 IF_flush = l ,否則 IF_flush=0 ,故 IF_flu

14、sh = Ze考慮到本系統(tǒng)還要實現(xiàn)的無條件跳轉(zhuǎn)指令:J和JR ,在 執(zhí)行這兩個指令時也必須要對IF/ID流水線寄存器進行清 空,因此,IF_flush的表達式應(yīng)表示為:IF_flush = Z| J | JRe綜合以上分析,最終的無冒險的流水線MIPS CPU原理框圖如圖3.9。ZwoTwt)cid!HY 一Qlrzt/ud諭農(nóng) 0tOuPCpllIkftfC tdLGrrRcu(AUJSuA ALU 妝 B,0 、T、ertd /km :df 2“TO2域-:d|F.(D血女Cd 匸RtgWfiUjM? -愉納五,1肪則晟紈伙IXinR-d oddmtoj *|SliliDCcvnmvs a

15、srnv5專011龍MEMWIwt、購dcul23 / 60EsOm (:rAdh)胸TOujot ALVFjrdlrrrn圖3.9無冒險的流水線MIPS CPU總體原理框圖!1!流水線MIPS微處理器的設(shè)計根據(jù)流水線不同階段,將系統(tǒng)劃分為IF、ID、EX和MEM四大模塊,WB部分功能電路非常簡單,可直接在頂層文件中設(shè)計。另外,系統(tǒng)還包括IF/ID、ID/EX、EX/MEM、MEM/WB四個流水線寄存器。1、取指令級模塊(IF )的設(shè)計s 8 纟 TV !A 紗”AM也畋bTErA中2fBranch 描令 的分支地址RaaWctoAliMrf4W.S*_J Mux /.-OS 1 4Sr血3衛(wèi)

16、rR 陀WnS.S r4涼* 只,#retw。gcdp奇存器堆婪求IUEXf * mKlllVtOirr37ID級電路結(jié)構(gòu)指令譯碼(Decode )子模塊的設(shè)計Decode控制器的主要作用是根據(jù)指令確定各個控制信 號的值,是一個組合電路。我們將指令分成八類:R.typel : ADD、ADDU、SUB、SUBU、AND、OR、NOR、XOR、SLT、SLTU、SLLV、SRLV、SR AVR_type2 : SLL、SRL、SRAJR_type : JRJ_type : JI. type : ADDI、ADDIU、ANDI、ORI、XORI、SLTI、SLTIUBranch : BEQ、BNE

17、、BGEZ、BGTZ、BLEZ、BLTZ最新數(shù)字系統(tǒng)設(shè)訃實驗一流水線HIPS微處理濡設(shè)ilLW : LWSW : SWDecode輸出的九組控制信號: RegWrite決走是否對寄存器(Registers )進行寫操作。當(dāng)RegWrite高電平有效時,將數(shù)據(jù)寫入指定的寄存器 中。需要寫回寄存器的指令有:LW、R_typel、R_type2 和 I_type ,貝URegWrite_id= LW | R_typel | R_type2 | I_type RegDst決走目標寄存器是rt還是rde當(dāng)RegDst=0時, rt為目標寄存器;當(dāng)RegDst時,rd為目標寄存器。需要寫回寄存器的指令類型

18、有:LW、RJypel.R_type2 和 I_type。其中 z R.typel 和 R_type2 的目 標寄存器是rd,而LW和IJype的目標寄存器是rte 所以:RegDst_id= R_typel | R_type2 MemWrite決走是否對數(shù)據(jù)存儲器進行寫操作。當(dāng)MemWrite有效時,將數(shù)據(jù)寫入數(shù)據(jù)存儲器指定的位需要對寫存儲器的指令只有SW,所以:MemWrite_id= SW MemRead決走是否對數(shù)據(jù)存儲器進行讀操作。當(dāng)MemRead 有效時,讀取數(shù)據(jù)存儲器指定位置的數(shù)據(jù)。需要對讀存儲器的指令只有LW ,所以:MemRead_id= LW MemtoReg決走寫入寄存器

19、(registe的數(shù)據(jù)來自ALU還是 數(shù)據(jù)存儲器。當(dāng)MemtoReg=0時,數(shù)據(jù)來自ALU ; 當(dāng)MemtoReg = l時,數(shù)據(jù)來自數(shù)據(jù)存儲器。需要寫回寄存器的指令類型有:LW、RJypel.R_type2和I_type。其中,只有LW寫回寄存器的數(shù) 據(jù)取自存儲器,所以:MemtoReg_id= LW ALUSrcA決走ALU第一操作數(shù)來源。當(dāng)ALUSrcA=0時, ALU第一操作數(shù)A (詳見轉(zhuǎn)發(fā)電路設(shè)計);當(dāng) ALUSrcA=l時,ALU第一操作數(shù)來源于0擴展的用于 移位指令的5位sa。八種指令類型中J_tpye、JR_tpye及Branch類型 指令沒有使用ALU ;其他使用ALU的指令

20、類型中LW、 SW、RJypel和IJype均采用的rs作為ALU第一操 作數(shù),只有R_type2的第一操作數(shù)采用的是0擴展的 sa ,所以:ALUSrcA_id= R_type2 ALUSrcB決走ALU第二操作數(shù)來源。當(dāng)ALUSrcB=O時, ALU第二操作數(shù)B。當(dāng)ALUSrcB=l時,ALU第二操 作數(shù)來源于符號擴展的16位Imme八種指令類型中J_tpye、JR_tpye及Branch類型 指令沒有使用ALUe其他使用ALU的指令類型中 RJypel和R_type2采用rt作為ALU第二操作數(shù), 而LW、SW、I_type的第二操作數(shù)采用的是符號擴展 的立即數(shù)Im m段,所以:ALUS

21、rcB_id= LW | SW | I.type PCSource決定寫入PC寄存器的來源。PCSource由JRJpye、J_tpye 及 Z 決定:即:PCSource=JR, J, ZPCSource=000時z寫入值為下一條指令的地 址PC+4 ;PCSource=001時z寫入值為Branch指令的分支地址;27 / 60最新數(shù)字系統(tǒng)設(shè)訃實驗一流水線HIPS微處理濡設(shè)ilPCSource=010時 寫入值為J指令的跳轉(zhuǎn)地址;PCSource=100時,寫入值為JR指令的跳轉(zhuǎn)地 址。 ALUCode決走ALU的功能,由指令中的op段、rt段禾口 funct段決定。功能表如下:opfun

22、ctionrt疋算ALU codeBEQopxxxxxxxxxXZ=(A=B)5*dl0BNE.opxxxxxxxxxXZ=(A= = B)5*dl1BGE 乙opxxxxx5*dlZ=(A=0)5*dl2BGTZ_opxxxxx5*d0Z=(A0)5*dl3BLEZ_opxxxxx5*d0Z=(A=D5*dl4BLTZ_opxxxxx5*d0Z=(A0)5*dl5R_type_opADD_functxxxxX加5*d0ADDU_f unctxxxxXAND_functxxxxX與5*dlXOR.functxxxxX異或5*d2OR_functxxxxX或5*d3NOR_functxxxxX5

23、*d4SUB_functxxxxX減5*d5SUBU_functxxxxXSLT_OP_functxxxxXAB?1:05dl9SLTU_OP_functxxxxXAA5*dl6SLLV.functxxxxXSRL_functxxxxXBA5*dl8ARAVJunctxxxxXADDI-OPxxxxxxxxxX加5*d0ADDIU_opxxxxxxxxxXANDI-OPxxxxxxxxxX與5*dlXORI_OPxxxxxxxxxX異或5*d2ORI_oPxxxxxxxxxX或5*d329 / 60最新數(shù)字系統(tǒng)設(shè)訃實驗一流水線、IIPS微處理器設(shè)訃SLTI_OPxxxxxxxxxXAB?1:0

24、5*dl9SLTIU-OPxxxxxxxxxXAB?1:0(無符號 數(shù))5*d20SW_oPxxxxxxxxxX加(計算5*d0LW_oPxxxxxxxxxX地址)分支檢測(Branch Test)電路的設(shè)計Zero檢測電路主要用于判斷Branch指令的分支條件是 否成立,其中BEQ、BNE兩個操作數(shù)為RsData與RtData , 而BGE乙BGTZ、BLEZ和BLTZ指令則為RsData與常數(shù)0 比較,所以輸出信號Z的表達式為:RsData31 | (| RsData31: 0);ALUCoae=alu _blezRsData31;ALUCode=alu _bltz RsData31 &

25、(| RsData31: 0);ALUCode=alu _bgtzZ= RsData31;ALUCode=alu _bgez| ( RsData31: 0 A RtData31: 0);ALUCode=alu_bne& ( RsData31: 0人 RtData31: 0);ALUCode=alu_beq0;ALUCode=OTHER寄存器堆(Registers )子模塊的設(shè)計寄存器堆由32個32位寄存器組成,這些寄存器通過寄存器號進行讀寫存取。寄存器堆的原理框圖如下圖所示。因為讀取寄存器不會更改其內(nèi)容,故只需提供寄存號即可讀出該寄存器內(nèi)容。讀端口采用數(shù)據(jù)選擇器即可實現(xiàn)讀取功31 / 60能。

26、應(yīng)注意0號寄存器為常數(shù)0.RsAddr寄存器堆的原理框團最新數(shù)字系統(tǒng)設(shè)訃實驗一流水線、IIPS微處理器設(shè)訃# / 60對于往寄存器里寫數(shù)據(jù),需要目標寄存器號(WriteRegister 待寫入數(shù)據(jù)(WriteData )、寫允許信號 (RegWrite )三個變量。圖3.13中5位二進制譯碼器完成 地址譯碼,其輸出控制目標寄存器的寫使能信號EN,決走 將數(shù)據(jù)WriteData寫入哪個寄存器。在流水線CPU設(shè)計中,寄存器堆設(shè)計還應(yīng)解決三階數(shù) 據(jù)相關(guān)的數(shù)據(jù)轉(zhuǎn)發(fā)問題。當(dāng)滿足三階數(shù)據(jù)相關(guān)條件時,寄存 器具有Read after Write的特性。為實現(xiàn)該功能,在寄存器 堆的基礎(chǔ)上加一轉(zhuǎn)發(fā)電路。如下圖所

27、示。圖中轉(zhuǎn)發(fā)檢測電路 的輸出表達式為RsSel = Reg Write_wb&(- (Reg WriteAd d r_wb=0)&(RegWriteAddr_wb= = RsAddr_id)RtSel = RegWrite_wb&(RegWriteAddr_wb=O)&(RegWriteAddr_wb= = RtAddr_id)一轉(zhuǎn)發(fā)電路。該屯路原理見實驗27代碼已提供。轉(zhuǎn)發(fā)檢測電 路及MUX .設(shè)計。丿RsAddr idRtAddr idRegWrit e Addr_wb ReaWntewbRcgWritcData_vb轉(zhuǎn)發(fā)-g- RsDra idRtData id47具有Read Afte

28、r Write特性寄存器堆的原理框圖三階數(shù)據(jù)相關(guān) 成立的條件MUX0實現(xiàn)數(shù)據(jù) 轉(zhuǎn)發(fā)的數(shù)I慣選擇超丿RsDataRsAddisRtAddrWritcAddrRegWriieWrircDataRtEJataMUX冒險檢測功能電路(Hazard Deterctor)的設(shè)計冒險成立的條件為: 上一條指令是LW指令,即MemRead_ex=l ; 在EX級的LW指令與在ID級的指令讀寫的是同一個 寄存器 / 即 Reg W rite Ad d r_ex=Rs Ad d r_i d 或 RegW riteAd d r_ex=RtAd d r_i d解決冒險的方法為: 插入一個流水線氣泡Stall清空ID/

29、EX寄存器并且阻塞 流水線ID級、IF級流水線,有:Stall = (RegWriteAddr_ex= = RsAddr -id川(RegWriteAddr_ex= = RtAddrJ d)&MemRead_ex 保持PC寄存器和IF/ID流水線寄存器不變,有:PC_IFWrite= Stall其它單元電路的設(shè)計 Branch指令分支地址的計算電路:Bran chAddr= NextPC_id + (sig n exte nd(Imm_id)v A10011 (alu slt)AB? 1:0,其中A、B為有符號數(shù)10100 (alu_sltii)AB? 1:0,其中A、B為無符號數(shù)為了提高運算速度,可將各種運算同時執(zhí)行,得到的運算結(jié)果由ALUCode信號進行挑選。ALU的基本結(jié)構(gòu)如下圖37 / 60最新數(shù)字系統(tǒng)設(shè)訃實驗一流水線、IIPS微處理器設(shè)訃畸。本結(jié)構(gòu) 加、減電路的設(shè)計考慮減法、比較(S

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論