CS4100计算机结构Pipelining课件

上传人:文**** 文档编号:228258905 上传时间:2023-08-21 格式:PPT 页数:141 大小:6.29MB
收藏 版权申诉 举报 下载
CS4100计算机结构Pipelining课件_第1页
第1页 / 共141页
CS4100计算机结构Pipelining课件_第2页
第2页 / 共141页
CS4100计算机结构Pipelining课件_第3页
第3页 / 共141页
资源描述:

《CS4100计算机结构Pipelining课件》由会员分享,可在线阅读,更多相关《CS4100计算机结构Pipelining课件(141页珍藏版)》请在装配图网上搜索。

1、Pipelining-1OutlinevAn overview of pipeliningvA pipelined datapathvPipelined controlvData hazards and forwardingvData hazards and stallsvBranch hazardsvExceptionsvSuperscalar and dynamic pipeliningPipelining-2vLaundry example:Ann,Brian,Cathy,Dave each have one load ofclothes to wash,dry,and foldWash

2、er takes 30 minutesDryer takes 40 minutes“Folder”takes 20 minutesABCDPipelining Is Natural!Pipelining-3vSequential laundry takes 6 hours for 4 loadsvIf they learned pipelining,how long would it take?ABCD3040203040203040203040206 PM7891011MidnightTaskOrderTimeSequential LaundryPipelining-4vPipelined

3、laundry takes 3.5 hours for 4 loads ABCD6 PM7891011MidnightTaskOrderTime304040404020Pipelined Laundry:Start ASAPPipelining-5Pipelining LessonsvDoesnt help latency of single task,but throughput of entirevPipeline rate limited by slowest stagevMultiple tasks working at same time using different resour

4、cesvPotential speedup=Number pipe stagesvUnbalanced stage length;time to“fill”&“drain”the pipeline reduce speedupvStall for dependencesABCD6 PM789TaskOrderTime304040404020Pipelining-6Single cycle vs.PipelineClkCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9 Cycle 10LoadPipeline Imple

5、mentation:ClkSingle Cycle Implementation:LoadStoreWasteIfetchRegExecMemWrIfetchRegExecMemWrStoreIfetchRegExecMemWrR-typeCycle 1Cycle 2Pipelining-7Pipeline PerformanceSingle-cycle(Tc=800ps)Pipelined(Tc=200ps)Pipelining-8Instr.OrderTime(clock cycles)Inst 0Inst 1Inst 2Inst 4Inst 3ALUImRegDmRegALUImRegD

6、mRegALUImRegDmRegALUImRegDmRegALUImRegDmRegWhy Pipeline?Because the Resources Are There!Single-cycle DatapathPipelining-9OutlinevAn overview of pipeliningvA pipelined datapathvPipelined controlvData hazards and forwardingvData hazards and stallsvBranch hazardsvExceptionsvSuperscalar and dynamic pipe

7、liningPipelining-10Designing a Pipelined ProcessorvExamine the datapath and control diagramStarting with single cycle datapathSingle cycle control?vPartition datapath into stages:IF(instruction fetch),ID(instruction decode and register file read),EX(execution or address calculation),MEM(data memory

8、access),WB(write back)vAssociate resources with stagesvEnsure that flows do not conflict,or figure out how to resolvevAssert control in appropriate stagePipelining-11Multi-Execution StepsBut,use single-cycle datapath.Pipelining-12Split Single-cycle DatapathWhat to add to split the datapath into stag

9、es?FeedbackPathPipelining-13Pipeline registers(latches)Add Pipeline RegistersvUse registers between stages to carry data and controlPipelining-14vIF:Instruction FetchFetch the instruction from the Instruction MemoryvID:Instruction DecodeRegisters fetch and instruction decodevEX:Calculate the memory

10、addressvMEM:Read the data from the Data MemoryvWB:Write the data back to the register fileCycle 1Cycle 2Cycle 3Cycle 4Cycle 5IfetchReg/DecExecMemWrLoadConsider loadPipelining-15ClockCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7IfetchReg/DecExecMemWr1st lwIfetchReg/DecExecMemWr2nd lwIfetchReg/Dec

11、ExecMemWr3rd lwPipelining loadv5 functional units in the pipeline datapath are:Instruction Memory for the Ifetch stageRegister Files Read ports(busA and busB)for the Reg/Dec stageALU for the Exec stageData Memory for the MEM stageRegister Files Write port(busW)for the WB stagePipelining-16vIR=memPC;

12、PC=PC+4IF Stage of loadIR,PC+4Pipelining-17ID Stage of loadvA=RegIR25-21;B=RegIR20-16;Pipelining-18EX Stage of loadvALUout=A+sign-ext(IR15-0)Pipelining-19MEM State of loadvMDR=memALUoutPipelining-20WB Stage of loadvRegIR20-16=MDRWho will supply this address?Pipelining-21Cycle 1Cycle 2Cycle 3Cycle 4I

13、fetchReg/DecExecWrR-typeThe Four Stages of R-typevIF:fetch the instruction from the Instruction MemoryvID:registers fetch and instruction decodevEX:ALU operates on the two register operandsvWB:write ALU output back to the register filePipelining-22vWe have a structural hazard:Two instructions try to

14、 write to the register file at the same time!Only one write portClockCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9IfetchReg/DecExecWrR-typeIfetchReg/DecExecWrR-typeIfetchReg/DecExecMemWrLoadIfetchReg/DecExecWrR-typeIfetchReg/DecExecWrR-typeOps!We have a problem!Pipelining R-type an

15、d loadPipelining-23Important ObservationIfetchReg/DecExecMemWrLoad12345IfetchReg/DecExecWrR-type1234vEach functional unit can only be used once per instructionvEach functional unit must be used at the same stage for all instructions:Load uses Register Files write port during its 5th stageR-type uses

16、 Register Files write port during its 4th stageSeveral ways to solve:forwarding,adding pipeline bubble,making instructions same lengthPipelining-24ClockCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9IfetchReg/DecMemWrR-typeIfetchReg/DecMemWrR-typeIfetchReg/DecExecMemWrLoadIfetchReg/D

17、ecMemWrR-typeIfetchReg/DecMemWrR-typeIfetchReg/DecExecWrR-typeMemExecExecExecExec12345Solution:Delay R-types WritevDelay R-types register write by one cycle:R-type also use Reg Files write port at Stage 5MEM is a NOP stage:nothing is being done.R-type also has 5 stagesPipelining-25Cycle 1Cycle 2Cycl

18、e 3Cycle 4IfetchReg/DecExecMemStoreWrThe Four Stages of storevIF:fetch the instruction from the Instruction MemoryvID:registers fetch and instruction decodevEX:calculate the memory addressvMEM:write the data into the Data MemoryAdd an extra stage:vWB:NOPPipelining-26vIF:fetch the instruction from th

19、e Instruction MemoryvID:registers fetch and instruction decodevEX:compares the two register operandselect correct branch target addresslatch into PCAdd two extra stages:vMEM:NOPvWB:NOPCycle 1Cycle 2Cycle 3Cycle 4IfetchReg/DecExecMemBeqWrThe Three Stages of beqPipelining-27Pipelined DatapathPipelinin

20、g-28Graphically Representing PipelinesvCan help with answering questions like:How many cycles to execute this code?What is the ALU doing during cycle 4?Help understand datapathsPipelining-29Example 1:Cycle 1Pipelining-30Example 1:Cycle 2Pipelining-31Example 1:Cycle 3Pipelining-32Example 1:Cycle 4Pip

21、elining-33Example 1:Cycle 5Pipelining-34Example 1:Cycle 6Pipelining-35OutlinevAn overview of pipeliningvA pipelined datapathvPipelined controlvData hazards and forwardingvData hazards and stallsvBranch hazardsvExceptionsvSuperscalar and dynamic pipeliningPipelining-36Pipeline Control:Control Signals

22、Pipelining-37Fig.4.22Group Signals According to StagesvCan use control signals of single-cycle CPU Pipelining-38vPass control signals along just like the dataMain control generates control signals during ID Data Stationary ControlFig.4.50Pipelining-39IF/ID RegisterID/Ex RegisterEx/MEM RegisterMEM/WB

23、 RegisterIDEXMEMExtOpALUOpRegDstALUSrcBranchMemWrMemtoRegRegWrMainControlExtOpALUOpRegDstALUSrcMemtoRegRegWrMemtoRegRegWrMemtoRegRegWrBranchMemWrBranchMemWWBData Stationary Control(cont.)vSignals for EX(ExtOp,ALUSrc,.)are used 1 cycle latervSignals for MEM(MemWr,Branch)are used 2 cycles latervSignal

24、s for WB(MemtoReg,MemWr)are used 3 cycles laterPipelining-40WB Stage of loadvRegIR20-16=MDRWho will supply this address?Pipelining-41Datapath with ControlPipelining-42lw$10,20($1)sub$11,$2,$3and$12,$4,$5or$13,$6,$7add$14,$8,$9Lets Try it OutPipelining-43Example 2:Cycle 1Pipelining-44Example 2:Cycle

25、2Pipelining-45Example 2:Cycle 3Pipelining-46Example 2:Cycle 4Pipelining-47Example 2:Cycle 5Pipelining-48Example 2:Cycle 6Pipelining-49Example 2:Cycle 7Fig.6.34Pipelining-50Example 2:Cycle 8Fig.6.34Pipelining-51Example 2:Cycle 9Pipelining-52Summary of Pipeline BasicsvPipelining is a fundamental conce

26、ptMultiple steps using distinct resourcesUtilize capabilities of datapath by pipelined instruction processingvStart next instruction while working on the current onevLimited by length of longest stage(plus fill/flush)vNeed to detect and resolve hazards vWhat makes it easy in MIPS?All instructions ar

27、e of the same lengthJust a few instruction formatsMemory operands only in loads and storesvWhat makes pipelining hard?hazardsPipelining-53OutlinevAn overview of pipeliningvA pipelined datapathvPipelined controlvData hazards and forwarding(R-Type and R-Type)vData hazards and stalls(Load and R-type)vB

28、ranch hazardsvExceptionsvSuperscalar and dynamic pipeliningPipelining-54Pipeline HazardsvPipeline Hazards:Structural hazards:attempt to use the same resource in two different ways at the same timevEx.:combined washer/dryer or folder busy doing something else(watching TV)Data hazards:attempt to use i

29、tem before readyvInstruction depends on result of prior instruction still in the pipelineControl hazards:attempt to make decision before condition is evaluatedvEx.:wash football uniforms and need to see result of previous load to get proper detergent levelvBranch instructionsvCan always resolve haza

30、rds by waitingpipeline control must detect the hazardtake action(or delay action)to resolve hazardsPipelining-55MemInstr.OrderTimeLoadInstr 1Instr 2Instr 3Instr 4ALUMemRegMemRegALUMemRegMemRegALUMemRegMemRegALURegMemRegALUMemRegMemRegStructural Hazard:Single MemoryPipelining-56Pipeline Hazards Illus

31、tratedIF ID EX MEM WBStructuralHazardIF ID .timePipelining-57MemInstr.OrderTimeLoadInstr 1Instr 2Instr 3Instr 4ALUMemRegMemRegALUMemRegMemRegALUMemRegMemRegALURegMemRegALUMemRegMemRegUse 2 memory:data memory and instruction memoryStructural Hazard:Single MemoryPipelining-58InstructionmemoryAddress43

32、20AddAddresultShiftleft 2InstructionIF/IDEX/MEMMEM/WBMux01AddPC0WritedataMux1RegistersReaddata 1Readdata 2Readregister 1Readregister 216SignextendWriteregisterWritedataReaddata1ALUresultMuxALUZeroID/EXDatamemoryAddressFeedback PathPipelining-59Data HazardsIMRegIMRegCC 1CC 2CC 3CC 4CC 5CC 6Time(in cl

33、ock cycles)sub$2,$1,$3Programexecutionorder(in instructions)and$12,$2,$5IMRegDMRegIMDMRegIMDMRegCC 7CC 8CC 91010101010/-2 0-20-2 0-2 0-20or$13,$6,$2add$14,$2,$2sw$15,100($2)Value of register$2:DMRegRegRegRegDMPipelining-60Types of Data HazardsThree types:(inst.i1 followed by inst.i2)vRAW(read after

34、write):i2 tries to read operand before i1 writes itvWAR(write after read):i2 tries to write operand before i1 reads itGets wrong operand,e.g.,autoincrement addr.Cant happen in MIPS 5-stage pipeline because:vAll instructions take 5 stages,and reads are always in stage 2,and writes are always in stage

35、 5vWAW(write after write):i2 tries to write operand before i1 writes itLeaves wrong result(i1s not i2s);occur only in pipelines that write in more than one stageCant happen in MIPS 5-stage pipeline because:vAll instructions take 5 stages,and writes are always in stage 5Pipelining-61Pipeline Hazards

36、Illustrated IF ID EX MEM WB IF ID EX MemRAW(read after write)Data HazardWAW Data Hazard(write after write)IF ID EX MEM WBWAR Data Hazard(write after read)IF ID EX MEM WB IF ID EX MEM WBtimePipelining-62Handling Data HazardsvUse simple,fixed designsEliminate WAR by always fetching operands early(ID)i

37、n pipelineEliminate WAW by doing all write backs in order(last stage,static)These features have a lot to do with ISA designvInternal forwarding in register file:Write in first half of clock and read in second halfRead delivers what is written,resolve hazard between sub and addvDetect and resolve rem

38、aining onesCompiler inserts NOP(software solution)Forward(hardware solution)Stall(hardware solution)Pipelining-63Software SolutionvHave compiler guarantee no hazardsvWhere do we insert the NOPs?sub$2,$1,$3and$12,$2,$5or$13,$6,$2add$14,$2,$2sw$15,100($2)vProblem:this really slows us down!Pipelining-6

39、4Data HazardsIMRegIMRegCC 1CC 2CC 3CC 4CC 5CC 6Time(in clock cycles)sub$2,$1,$3Programexecutionorder(in instructions)and$12,$2,$5IMRegDMRegIMDMRegIMDMRegCC 7CC 8CC 91010101010/-2 0-20-2 0-2 0-20or$13,$6,$2add$14,$2,$2sw$15,100($2)Value of register$2:DMRegRegRegRegDMInsert two nopsPipelining-65Data H

40、azards:ForwardingIMRegIMRegCC 1CC 2CC 3CC 4CC 5CC 6Time(in clock cycles)sub$2,$1,$3Programexecutionorder(in instructions)and$12,$2,$5IMRegDMRegIMDMRegIMDMRegCC 7CC 8CC 91010101010/-20-20-20-20-20or$13,$6,$2add$14,$2,$2sw$15,100($2)Value of register$2:DMRegRegRegRegDMPipelining-66Datapath with Forwar

41、dingPipelining-67Control:Detecting Data HazardsvHazard conditions:1a.EX/MEM.RegisterRd=ID/EX.RegisterRs1b.EX/MEM.RegisterRd=ID/EX.RegisterRt2a.MEM/WB.RegisterRd=ID/EX.RegisterRs2b.MEM/WB.RegisterRd=ID/EX.RegisterRtvTwo optimizations:Dont forward if instruction does not write register=check if RegWri

42、te is assertedDont forward if destination register is$0=check if RegisterRd=0Pipelining-68Detecting Data Hazards(cont.)vHazard conditions using control signals:At EX stage:EX/MEM.RegWrite and(EX/MEM.RegRd0)and(EX/MEM.RegRd=ID/EX.RegRs)At MEM stage:MEM/WB.RegWrite and(MEM/WB.RegRd0)and(MEM/WB.RegRd=I

43、D/EX.RegRs)(replace ID/EX.RegRt for ID/EX.RegRs for the other two conditions)Pipelining-69vUse temporary results,e.g.,those in pipeline registers,dont wait for them to be writtenResolving Hazards:ForwardingPipelining-70Datapath with ForwardingPipelining-71Forwarding LogicvForwarding:input to ALU fro

44、m any pipe reg.Add multiplexors to ALU input Control forwarding in EX=carry Rs in ID/EXvControl signals for forwarding:If both WB and MEM forward,e.g.,add$1,$1,$2;add$1,$1,$3;add$1,$1,$4;=let MEM forwardEX hazard:vif(EX/MEM.RegWrite and(EX/MEM.RegRd0)and(EX/MEM.RegRd=ID/EX.RegRs)ForwardA=10MEM hazar

45、d:vif(MEM/WB.RegWrite and(MEM/WB.RegRd0)and(EX/MEM.RegRd ID/EX.Reg.Rs)and(MEM/WB.RegRd=ID/EX.RegRs)ForwardA=01(ID/EX.RegRtID/EX.RegRs,ForwardB ForwardA)Pipelining-72Example 3:Cycle 3Pipelining-73Example 3:Cycle 4Fig.6.41Pipelining-74Example 3:Cycle 5Pipelining-75Example 3:Cycle 6Fig.6.42Pipelining-7

46、6OutlinevAn overview of pipeliningvA pipelined datapathvPipelined controlvData hazards and forwarding(R-Type and R-Type)vData hazards and stalls(Load and R-type)vBranch hazardsvExceptionsvSuperscalar and dynamic pipeliningPipelining-77vlw can still cause a hazard:if is followed by an instruction to

47、read the loaded reg.Cant Always ForwardUse stalling or compiler to resolvePipelining-78StallingvStall pipeline by keeping instructions in same stage and inserting an NOP insteadPipelining-79Datapath with Stalling UnitvForwarding controls ALU inputs,hazard detection controls PC,IF/ID,control signalsP

48、ipelining-80Control:Handling StallsvHazard detection unit in ID to insert stall between a load instruction and its use:if(ID/EX.MemRead and (ID/EX.RegisterRt=IF/ID.RegisterRs)or (ID/EX.RegisterRt=IF/ID.registerRt)stall the pipeline for one cycle(ID/EX.MemRead=1 indicates a load instruction)vHow to s

49、tall?Stall instruction in IF and ID:not change PC and IF/ID=the stages re-execute the instructionsWhat to move into EX:insert an NOP by changing EX,MEM,WB control fields of ID/EX pipeline register to 0vas control signals propagate,all control signals to EX,MEM,WB are deasserted and no registers or m

50、emories are writtenPipelining-81Example 4:Cycle 2Pipelining-82Example 4:Cycle 3Pipelining-83Example 4:Cycle 4Pipelining-84Example 4:Cycle 5Pipelining-85Example 4:Cycle 6Fig.6.49Pipelining-86Example 4:Cycle 7Pipelining-87OutlinevAn overview of pipeliningvA pipelined datapathvPipelined controlvData ha

51、zards and forwardingvData hazards and stallsvBranch hazardsvExceptionsvSuperscalar and dynamic pipeliningPipelining-88InstructionmemoryAddress4320AddAddresultShiftleft 2InstructionIF/IDEX/MEMMEM/WBMux01AddPC0WritedataMux1RegistersReaddata 1Readdata 2Readregister 1Readregister 216SignextendWriteregis

52、terWritedataReaddata1ALUresultMuxALUZeroID/EXDatamemoryAddressFeedback PathPipelining-89Pipeline Datapath with Control SignalsPipelining-90vWhen decide to branch,other inst.are in pipeline!Branch HazardsPipelining-91Handling Branch HazardtPredict branch always not takenlNeed to add hardware for flus

53、hing inst.if wronglBranch decision made at MEM=need to flush instruction in IF/ID,ID/EX by changing control values to 0tReduce delay of taken branch by moving branch execution earlier in the pipelinelMove up branch address calculation to IDlCheck branch equality at ID(using XOR)by comparing the two

54、registers read during IDlBranch decision made at ID=one instruction to flushlAdd a control signal,IF.Flush,to zero instruction field of IF/ID=making the instruction an NOPtDynamic branch predictiontCompiler rescheduling,delay branchPipelining-92Pipeline with FlushingPipelining-93Example 5:Cycle 3Pip

55、elining-94Example 5:Cycle 4Pipelining-95Dynamic Branch PredictionvIn deeper and superscalar pipelines,branch penalty is more significantvUse dynamic prediction(e.g.loop)Branch prediction buffer(i.e.,branch history table)Indexed by recent branch instruction addressesStores outcome(taken/not taken)To

56、execute a branchvCheck table,expect the same outcomevStart fetching from fall-through or targetvIf wrong,flush pipeline and flip predictionPipelining-961-Bit Predictor:ShortcomingvInner loop branches mispredicted twice!outer:inner:beq,inner beq,outerlMispredict as taken on last iteration of inner lo

57、oplThen mispredict as not taken on first iteration of inner loop next time aroundPipelining-972-Bit PredictorvOnly change prediction on two successive mis-predictionsPipelining-98Calculating the Branch TargetvEven with predictor,still need to calculate the target address1-cycle penalty for a taken b

58、ranchvBranch target bufferCache of target addressesIndexed by PC when instruction fetchedvIf hit and instruction is branch predicted taken,can fetch target immediatelyPipelining-99vPredict-not-taken+branch decision at ID=the following instruction is always executed=branches take effect 1 cycle later

59、0 clock cycle penalty per branch instruction if can find instruction to put in slot(50%of time)Instr.OrderTime(clock cycles)addbeqmiscALUMemRegMemRegALUMemRegMemRegMemALURegMemReglwMemALURegMemRegDelayed BranchPipelining-100OutlinevAn overview of pipeliningvA pipelined datapathvPipelined controlvDat

60、a hazards and forwardingvData hazards and stallsvBranch hazardsvExceptionsvSuperscalar and dynamic pipeliningPipelining-101Exceptions and Interruptsv“Unexpected”events requiring changein flow of controlDifferent ISAs use the terms differentlyvExceptionArises within the CPUe.g.,undefined opcode,overf

61、low,syscall,vInterruptFrom an external I/O controllervDealing with them without sacrificing performance is hard4.9 ExceptionsPipelining-102Handling ExceptionsvIn MIPS,exceptions managed by a System Control Coprocessor(CP0)vSave PC of offending(or interrupted)instructionIn MIPS:Exception Program Coun

62、ter(EPC)vSave indication of the problemIn MIPS:Cause registerWell assume 1-bitv0 for undefined opcode,1 for overflowvJump to handler at 8000 00180Pipelining-103An Alternate MechanismvVectored InterruptsHandler address determined by the causevExample:Undefined opcode:C000 0000Overflow:C000 0020:C000

63、0040vInstructions eitherDeal with the interrupt,orJump to real handlerPipelining-104Handler ActionsvRead cause,and transfer to relevant handlervDetermine action requiredvIf restartableTake corrective actionuse EPC to return to programvOtherwiseTerminate programReport error using EPC,cause,Pipelining

64、-105Exceptions in a PipelinevAnother form of control hazardvConsider overflow on add in EX stageadd$1,$2,$1Prevent$1 from being clobberedComplete previous instructionsFlush add and subsequent instructionsSet Cause and EPC register valuesTransfer control to handlervSimilar to mispredicted branchUse m

65、uch of the same hardwarePipelining-106Pipeline with ExceptionsPipelining-107Exception PropertiesvRestartable exceptionsPipeline can flush the instructionHandler executes,then returns to the instructionvRefetched and executed from scratchvPC saved in EPC registerIdentifies causing instructionActually

66、 PC+4 is savedvHandler must adjustPipelining-108Exception ExamplevException on add in40sub$11,$2,$444and$12,$2,$548or$13,$2,$64Cadd$1,$2,$150slt$15,$6,$754lw$16,50($7)vHandler80000180sw$25,1000($0)80000184sw$26,1004($0)Pipelining-109Exception ExamplePipelining-110Exception ExamplePipelining-111Multiple ExceptionsvPipelining overlaps multiple instructionsCould have multiple exceptions at oncevSimple approach:deal with exception from earliest instructionFlush subsequent instructions“Precise”except

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!