IS1200 Datorteknik

上传人:li****i 文档编号:243141109 上传时间:2024-09-16 格式:PPT 页数:68 大小:503.50KB
返回 下载 相关 举报
IS1200 Datorteknik_第1页
第1页 / 共68页
IS1200 Datorteknik_第2页
第2页 / 共68页
IS1200 Datorteknik_第3页
第3页 / 共68页
点击查看更多>>
资源描述
Klicka hr fr att ndra format p bakgrundsrubriken,Klicka hr fr att ndra format p bakgrundstexten,Niv tv,Niv tre,Niv fyra,Niv fem,*,IS1200 Datorteknik, frelsning 3,*,9/16/2024,IS1200 Datorteknik, frelsning 3,1,IS1200 Datorteknik,Frelsning 3,Metoder / subrutiner,Kursboken, valda delar av kapitel 4,9/16/2024,IS1200 Datorteknik, frelsning 3,2,F1,F2,F3,F4,F5,F7,F8,F9,F10,2,1,3,LAB-1,Hemlab-1,4,7,LAB-3,Hemlab-2,8,Hemlab-3,9,Tentamen,10,Assemblerkod 4 stegs pipeline,Nios2time,C-kod,Nios2io,Nios2int,Cache-minnen,CPU-scheduling,IS1200 Datorteknik,http:/www.ict.kth.se/courses/IS1200,F6,5,6,LAB-2,9/16/2024,IS1200 Datorteknik, frelsning 3,3,Frelsning 3Innehll,4-stegs PIPE-LINE, repetition,Nios-II, Instruktioner och -format,MACRO, pseudo-instruction,exempel,Load och Store med indexerad adress,Stack med SP samt PUSH och POP,Subrutiner, anrop, retur, parametrar,Activation Record, aktiveringsblock,9/16/2024,IS1200 Datorteknik, frelsning 3,4,Litteraturhnvisningar,Kursboken, valda delar av kapitel 4,4.1 - 4.3 principer, ej MIPS-kod,4.5 Subrutiner och Stack,9/16/2024,IS1200 Datorteknik, frelsning 3,5,Viktiga delar i en dator,CPU,MEM,BUS,I/O,program,data,9/16/2024,IS1200 Datorteknik, frelsning 3,6,Programexekveringi tv steg,(decode),EXECUTE,FETCH,(update PC),9/16/2024,IS1200 Datorteknik, frelsning 3,7,Programexekveringi fyra steg,EXecute/,MEMory,Fetch,Operand,Write,Back,Fetch,Instruction,Program,Memory,m x 8,ALU,ADD,Register,File,32 x 32,Register,File,32 x 32,PC,NVZC,Logik fr,villkorligt,hopp,op-code,Cond,true/false,PC+k/PC+Imm,RWM,9/16/2024,IS1200 Datorteknik, frelsning 3,8,Instruktioner i ”vr” 4-stegs CPU,ADDR,dst, R,srcA, R,srcB,# SUB/AND/OR/XOR,ADDIR,dst, R,srcA, Imm,# SUBI/ANDI/ORI/XORI,JMP / BR# ovillkorliga hopp,LDWR,dst, (R,src,)# LOAD,STWR,src, (R,dst,) # STORE,CMPRsrcA , RsrcB,CMPIRsrcA , Imm,BCond# villkorliga hopp,R0 = 0 ger ytterligare funktioner, NOP, CLR, COPY,9/16/2024,IS1200 Datorteknik, frelsning 3,9,Innehll i register r0 om det alltid r 0,Det medfr att,ADD r0, r0, r0 utfr NOP, No OPeration,ADD rA, r0, r0 utfr CLR rA, CLeaR reg,ADD rA, rB, r0 utfr COPY rA, rB, MOV,ADDI rA, rB, 0 utfr,”MOV rA, rB”,ADDI rA, r0, Imm utfr,”MOVI rA, Imm”,.,9/16/2024,IS1200 Datorteknik, frelsning 3,10,Instruktioner Nios-II-Instruktioner,MOVR,dst, R,src,MOVIR,dst, Imm,16,# ADDI/SUBI,ADDR,dst, R,srcA, R,srcB,# SUB/AND/OR/XOR,ADDIR,dst, R,srcA, Imm,# SUBI/ANDI/ORI/XORI,BR / JMP / BCond,LDWR,dst, offset(R,src,)# indexerad adress,STWR,src, offset(R,dst),# indexerad adress,CMPCondRdst, RsrcA , RsrcB # CMPICond,Forts.,9/16/2024,IS1200 Datorteknik, frelsning 3,11,Branch on ConditionNios-II-instructions,BEQ rA, rB, Label,if,rA=rB,then,PC:=PC+Imm,16,else,PC:=PC+4,Bcond rA, rB, Label,if,”true”,then,PC:=PC+Imm,16,else,PC:=PC+4,cond = EQ, NE, GT, GE, .,Label = PC,BEQ,+ 4 + Imm,16,Imm,16,= Label - PC,BEQ,- 4,9/16/2024,IS1200 Datorteknik, frelsning 3,12,Macro-instructionPseudo-instruktion,TYPEXEMPEL MALL,.macroNOP,ADDr0, r0, r0,.endm,Effekt: man kan anvnda en ny (pseudo-) instruktion,NOP, No Operation som inte gr ngot mer n att frbruka tid,(case sensitive !),9/16/2024,IS1200 Datorteknik, frelsning 3,13,Macro-instructionPseudo-instruktion,TYPEXEMPEL MALL,.macroCLR reg,MOVIreg, 0x0,.endm,Effekt: man kan anvnda en ny (pseudo-) instruktion,CLR %ri,fr att nollstlla register %ri,MOVI grs med ADDI !,(case sensitive !),9/16/2024,IS1200 Datorteknik, frelsning 3,14,NEG reg,Skriv makro fr NEG-instruktion,.macroNEG reg,SUBreg, r0, reg,.endm,Effekt: man kan anvnda en ny (pseudo-) instruktion,NEG rA,fr att ta fram 2-komplementet,av innehllet i ett register, rA,(case sensitive !),9/16/2024,IS1200 Datorteknik, frelsning 3,15,SWAPR regA, regB,(utmaning),Skriv makro fr swap-instruktion med 2 register,.macroSWAPR reg1, reg2XORreg1, reg1, reg2.#hr saknas en del.#icketrivial kod,.endm,Effekt: man kan anvnda en ny (pseudo-) instruktion,SWAPR rA, rB,fr att byta plats p,innehll i rA och rB (begrsningar ?),9/16/2024,IS1200 Datorteknik, frelsning 3,16,Ngot om Nios-II,Nios-II-processorn,Varje instruktion i Nios-II upptar 32 bitar !,Det finns endast 3 olika instruktionsformat,R-format,I-format,J-format,9/16/2024,IS1200 Datorteknik, frelsning 3,17,add rC, rA, rB#rC, rA + rB,INSTRUKTIONSFORMAT,Nios-II: R-type,5 5 5 11 6,A,B,OPX,OP,C,Andra exempel: sub, and, or, xor, .,9/16/2024,IS1200 Datorteknik, frelsning 3,18,addi rB, rA, IMM16#rB, rA + sext(IMM16),INSTRUKTIONSFORMAT,Nios-II: I-type,5 5 16 6,A,B,IMM16,OP,Andra exempel: subi, andi, ori, orhi, xori, .,9/16/2024,IS1200 Datorteknik, frelsning 3,19,call label#PC, (PC,31.28,:IMM26x4),INSTRUKTIONSFORMAT,Nios-II: J-type,26 6,OP,IMM26,Enda exempel: call ! (och snart JMPI),9/16/2024,IS1200 Datorteknik, frelsning 3,20,ori rB, rA, IMM16 #rB, rA,|,(0x0000:IMM16),ori rB, rA, IMM16,Instruktion i Nios-2, I-type,5 5 16 6,A,B,IMM16,OP,Komplettera IMM16 med nollor,i de 16,mest,signifikanta bitarna.,Gr or-operation med innehll i rA,Skriv resultat till rB,9/16/2024,IS1200 Datorteknik, frelsning 3,21,orhi rB, rA, IMM16 #rB, rA,|,(IMM16:0x0000),orhi rB, rA, IMM16,Instruktion i Nios-2, I-type,5 5 16 6,A,B,IMM16,OP,Komplettera IMM16 med nollor,i de 16,minst,signifikanta bitarna.,Gr or-operation med innehll i rA,Skriv resultat till rB,9/16/2024,IS1200 Datorteknik, frelsning 3,22,Ladda ett register med ettkonstant vrde, Nios-II,16-bitars vrde,MOVI rB, IMMED,movi r6, -30#sign extension to 32 bits,”movi is implemented as addi rB, r0, IMMED”,32-bitars vrde,MOVIA rB, Value#Value is any 32 bits,might,be implemented as (but it is not!?),orhirB, r0, %hi(Value)#fyller ut med nollor,orirB, rB, %lo(Value) #fyller ut med nollor,9/16/2024,IS1200 Datorteknik, frelsning 3,23,Imm1,16,Hjlp frn versttaren,%hi (value),%lo (value),Imm2,16,= value,32,orhirB, r0, %hi(Value)#fyller ut med nollor,orirB, rB, %lo(Value) #fyller ut med nollor,orhirB, r0, Imm1#fyller ut med nollor,orirB, rB, Imm2 #fyller ut med nollor,9/16/2024,IS1200 Datorteknik, frelsning 3,24,MOVIA Rdest, Addr,Nios-II macro,Skriv makro fr ladda register med 32 bitars vrde,.macroMOVI32 reg, value,ORHIreg, r0, %hi(value)ORIreg, reg, %lo(value),.endm,OBS att inga registerinnehll “frstrs”,MOVIA r implementerad p annat (fel) stt!,9/16/2024,IS1200 Datorteknik, frelsning 3,25,LOAD och STOREi fyra stegs pipeline,EXecute/,MEMory,Fetch,Operand,Write,Back,Fetch,Instruction,Program,Memory,m x 8,ALU,ADD,Register,File,32 x 32,Register,File,32 x 32,PC,NVZC,Logik fr,villkorligt,hopp,op-code,CCR,true/false,PC+k/PC+Imm,RWM,9/16/2024,IS1200 Datorteknik, frelsning 3,26,LOAD och STOREi 4 stegs pipeline,Vi kan utfra instruktionernaLDWR,dst, (R,addr,)STW R,src, (R,addr,),9/16/2024,IS1200 Datorteknik, frelsning 3,27,Behov av indexerad adress,Programvariabler ligger samlade,Ett register pekar ut variabelarean,Varje LOAD/STORE behver frst en adressberkning med ADD,Indexerad adress,LOAD R2,8(R28); R2,hm(r28 + 8),Sparar en klockcykel vid varje LOAD/STORE,9/16/2024,IS1200 Datorteknik, frelsning 3,28,Programvariabler placerassamlade i minnet,Variabler,int i;,int j;,int k;,lggs efter varanni minnet av kompilatorn,minne,i,j,k,9/16/2024,IS1200 Datorteknik, frelsning 3,29,Ett register pekar ut variabelarean,Vid programstart tilldelas registret adressen till variabelarean i minnet,Global pointer r r26 i Nios-II,minne,i,j,k,register,r26,9/16/2024,IS1200 Datorteknik, frelsning 3,30,Varje LOAD/STORE behver adressberkning med ADD,k ska hmtas till R2,R17 r ledigt,ADDI R17 - R26 + 8,LOAD R2 - (R17),En extra instruktion,En extra klockcykel,Extra krngel i programkoden,minne,i,j,k,register,r26,9/16/2024,IS1200 Datorteknik, frelsning 3,31,Indexerad adress,Addition i LOAD-instruktionen,LOAD R2,8(R26),innebrR2,hm(r26+8),Innehll i R26, plus talet 8, blir minnesadress,minne,i,j,k,register,r26,9/16/2024,IS1200 Datorteknik, frelsning 3,32,LOAD och STORE,I Nios-II finns instruktionernaLDWR,dst, Offset (R,addr,)STW R,src, Offset( R,addr,),(De kan inte utfras i en 4 stegs pipeline utan behver en 5 stegs pipeline som presenteras senare i kursen),9/16/2024,IS1200 Datorteknik, frelsning 3,33,Typisk hopp-instruktionJUMP (R,addr,),Kopiera registerinnehll till PC,Register med 32 bitar betyder att32 bits adress kan anvndas,Hur fr man 32 bits adress till registret ?,MOVIA R,addr, Imm,32,eller motsvarande,9/16/2024,IS1200 Datorteknik, frelsning 3,34,Nios-II hopp-instruktionJMP rA,Kopiera innehllet i angivet register till PC,9/16/2024,IS1200 Datorteknik, frelsning 3,35,Om man vill kan man infraeget makro: JUMPA addr,# Ladda ett 32 bitars vrde till PC,# Hopp med absolutadressering,.macroJUMPA addrMOVIAr1, addrJMPr1,.endm,OBS att innehll i reg r1 “frstrs”,r1 kallas ven “at” assembler temporary,9/16/2024,IS1200 Datorteknik, frelsning 3,36,Metoder, funktioner, subrutiner,Hur sker anrop ?,Med “hopp”-instruktion !,Hur sker terhopp ?,Med “hopp”-instruktion !,Returadress mste lagras ! Var ?,I register eller minne !,9/16/2024,IS1200 Datorteknik, frelsning 3,37,Subrutinanrop,CALL RUT,RET1:ADD ,CALL RUT,RET2:SUB .,RUT:ADD ,RETURN,9/16/2024,IS1200 Datorteknik, frelsning 3,38,Subrutinanrop i flera nver(nested procedures),CALL RUT,RET1:ADD ,CALL RUT,RET2:SUB .,RUT:ADD ,CALL FKN,RETURN,FKN:MUL ,CALL NEW,RETURN,9/16/2024,IS1200 Datorteknik, frelsning 3,39,Subrutinanrop, rekursion,CALL RUT,RET1:ADD ,CALL RUT,RET2:SUB .,RUT:ADD ,CALL RUT,RETURN,9/16/2024,IS1200 Datorteknik, frelsning 3,40,metoder, funktioner, subrutiner,Hur sker parameterverfringVar lagras parametrar (register/minne),frn anropare till rutinen, inparametrar,frn rutinen till anroparen, returvrden,Olika typ av parameter,vrde,pekare,9/16/2024,IS1200 Datorteknik, frelsning 3,41,Nios-II hopp-instruktionCALLR rA,Liknar JMP rA med tillgg att,Returadress sparas i register r31,Returadressen r adressen till instruktionen nrmast efter CALLRdvs adress till CALLR kat med 4 !,9/16/2024,IS1200 Datorteknik, frelsning 3,42,Om man vill kan man infraeget makro: CALLA addr,# Subrutinanrop med absolutadressering,.macroCALLA addrMOVIAr1, addrCALLRr1,.endm,# OBS att innehll i reg r1 “frstrs”,9/16/2024,IS1200 Datorteknik, frelsning 3,43,Nios-II hopp-instruktionCALL Label,Liknar CALLA med begrnsning att,Label mste ligga inom det 256MB omrde,som anges av de 4 mest signifikanta bitarna,i PC,9/16/2024,IS1200 Datorteknik, frelsning 3,44,Stackhantering,Stack r speciell reserverad,plats i minnet,stack-pekare,pekar p plats i stacken,PUSH-,operation, lgg p stack,POP-,operation, hmta frn stack,9/16/2024,IS1200 Datorteknik, frelsning 3,45,STACKoperationer PUSH och POP,Stack Pointer,SP,PUSH op:,SP,sp - nmem(sp),op,POPdst:,dst,mem(sp),SP,sp + n,n = antal bytes,+,-,9/16/2024,IS1200 Datorteknik, frelsning 3,46,Nios-II: PUSH reg,#Pusha ett register p stacken,.macroPUSH regSUBIsp, sp, 4#sp = r27STWreg, 0(sp),.endm,#PUSH sp r inte bra,9/16/2024,IS1200 Datorteknik, frelsning 3,47,Nios-II: POP reg,#Poppa ett register frn stacken,.macroPOP regLDWreg,0(SP) ADDIsp, sp, 4#sp = r27,.endm,# POP sp r,frdande,9/16/2024,IS1200 Datorteknik, frelsning 3,48,Nios-II: StackReservera plats, initiera SP,Stack Pointer,SP,.equ size , 256,.data,.align2,stack: .fill size, 4, 0,.,.text,movia sp, stack+size*4,+,-,stack:,Behver / SKA inte gras i laborationsprogramvaran !,9/16/2024,IS1200 Datorteknik, frelsning 3,49,Nios-II std fr stack,Stack Pointer = r27 = sp,Finns det Stack-operationer ? Nej ! Jo!,LDW reg, offset(sp),STW reg, offset(sp),Ingen PUSH- eller POP-instruktion,Inga subrutinanrop och returhopp med returadress p stack,9/16/2024,IS1200 Datorteknik, frelsning 3,50,Nios-II std fr subrutiner,Anrop med CALLR reg, returadress i register r31 = ra,Retur med RETsom medfr att r31 kopieras till PC,JMP r31 r “illegal” (och leder till exception),9/16/2024,IS1200 Datorteknik, frelsning 3,51,Allmnt: Var placerasReturadress vid subrutinanrop,I ett speciellt register (frdel/nackdel),I valfritt register (frdel/nackdel),I minnet p speciell plats (frdel/nackdel),I minnet p valfri plats (frdel/nackdel),I minnet p en stack med PUSH (frdel/nackdel),I frsta ordet i subrutinen (frdel/nackdel),9/16/2024,IS1200 Datorteknik, frelsning 3,52,Parameterplatstill och frn subrutin,I register (frdel/nackdel),I minnet p fast adress (frdel/nackdel),I minnet p en stack (frdel/nackdel),9/16/2024,IS1200 Datorteknik, frelsning 3,53,Exempel p parameterverfringNios-II: i r2-r3 och r4-r7,Anroparen lagrar parametrar i r4-r7,Anroparen gr CALL eller CALLR varvidreturadress sparas i r31,Parametrar finns i r4-r7,Det finns 8 ”lediga” register, r8-r15,Returvrde ska placeras i r2-r3,Returadress i r31, retur ska gras med RET,9/16/2024,IS1200 Datorteknik, frelsning 3,54,Anrop av subrutin frn subrutin”nested subroutine call”,Viktiga registerinnehll mste skyddas,Stacken anvnds fr att skydda register.,Speciellt returadress i ra,mste,skyddas,Anroparen, caller, har ansvar fr register r8-r15caller saved. De fr frstras av den anropade.,Den anropade, callee, har ansvar att inte frndra innehll i r16-r23, callee saved,Parametrar i r2-r3 och r4-r7 mste hanteras rtt,9/16/2024,IS1200 Datorteknik, frelsning 3,55,Activation Recordvid Funktionsanrop,Stacken anvnds vid funktionsanrop fr att i ett aktiveringsblock lagra informationen,Inparametrar,terhoppsadress,Lokala variabler,.,9/16/2024,IS1200 Datorteknik, frelsning 3,56,old top,push param-n,.,push param-2,push param-1,+,-,param-1,param-2,param-n,Stack Pointer,SP,Activation Recordlagring av inparametrar,9/16/2024,IS1200 Datorteknik, frelsning 3,57,old top,push param-n,.,push param-2,push param-1,callmethod,+,-,param-1,param-2,param-n,Stack Pointer,SP,Activation Recordfunktionsanrop, returadress,9/16/2024,IS1200 Datorteknik, frelsning 3,58,old top,method:,push ra,+,-,param-1,param-2,param-n,Stack Pointer,SP,Activation RecordSave return address,retaddr,9/16/2024,IS1200 Datorteknik, frelsning 3,59,old top,method:,push ra,move fp, sp,+,-,param-1,param-2,param-n,Stack Pointer,SP,Activation RecordFrame Pointer,retaddr,Frame Pointer,FP,Frame pointer r,r28 i Nios-II,9/16/2024,IS1200 Datorteknik, frelsning 3,60,Frame Pointer,FP,+,-,locvar-2,locvar-1,retaddr,param-1,param-2,param-n,Stack Pointer,SP,Activation RecordLocal variables,old top,method:,push ra,move fp, sp,subisp, sp, n*4,9/16/2024,IS1200 Datorteknik, frelsning 3,61,Adressering i metodenadress relativt frame pointer,Frame Pointer,FP,param-1 = 1n(fp),param-2 = 2n(fp),param-k = kn(fp),.,locvar-1 = -1n(fp),locvar-2 = -2n(fp),+,-,locvar-2,locvar-1,retaddr,param-1,param-2,param-n,Stack Pointer,SP,9/16/2024,IS1200 Datorteknik, frelsning 3,62,Frame Pointer,FP,+,-,locvar-2,locvar-1,retaddr,param-1,param-2,param-n,Stack Pointer,SP,Activation Recordreturn operation,old top,method:,push ra,move fp, sp,subisp, sp, n*4,”work”,movsp, fp,popra,ret,X,X,9/16/2024,IS1200 Datorteknik, frelsning 3,63,old top,push param-n,.,push param-2,push param-1,callmethod,+,-,param-1,param-2,param-n,Stack Pointer,SP,Activation Recordafter return to caller,9/16/2024,IS1200 Datorteknik, frelsning 3,64,old top,push param-n,.,push param-2,push param-1,callmethod,addi sp, sp, 4*n,+,-,param-1,param-2,param-n,Stack Pointer,SP,Activation Recordafter return to caller,9/16/2024,IS1200 Datorteknik, frelsning 3,65,Frelsning 3Innehll,4-stegs PIPE-LINE, repetition,Nios-II, Instruktioner och -format,MACRO, pseudo-instruction,exempel,Load och Store med indexerad adress,Stack med SP samt PUSH och POP,Subrutiner, anrop, retur, parametrar,Activation Record, aktiveringsblock,Spara registervid nestade anrop,subrutin:pushr31,.,callannan1,callannan2,.,popr31,ret,9/16/2024,IS1200 Datorteknik, frelsning 3,66,Spara registervid nestade anrop,subrutin:pushr31,use r8 to r15,push8to15,callannan1,callannan2,pop15to8,use r8 to r15,popr31,ret,9/16/2024,IS1200 Datorteknik, frelsning 3,67,Spara registervid nestade anrop,subrutin:pushr31,pushr16tor23,use r16 to r23,callannan1,callannan2,use r16 to r23,pop23to16,popr31,ret,9/16/2024,IS1200 Datorteknik, frelsning 3,68,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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