명령어 세트 아키텍처 순천향대학교 정보기술공학부 이상정
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 2 소개 명령어 형식 기술 연산의 종류 (Operation) 오퍼랜드의 저장 위치 자료형 및 크기 분기 타겟 Instruction Fetch Instruction Decode Operand Fetch Execute Result Store Next Instruction
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 3 명령어 세트의 발전단계 Single Accumulator (EDSAC 1950) Accumulator + Index Registers (Manchester Mark I, IBM 700 series 1953) Separation of Programming Model from Implementation High-level Language BasedConcept of a Family (B )(IBM ) General Purpose Register Machines Complex Instruction SetsLoad/Store Architecture RISC (Vax, Intel ) (CDC 6600, Cray ) LIW/”EPIC”?(IA )
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 4 명령어 세트 분류 Accumulator (1 register): 1 addressadd Aacc <- acc + mem[A] 1+x addressaddx Aacc <- acc + mem[A + x] Stack: 0 addressaddtos <- tos + next General Purpose Register: 2 addressadd A BEA(A) <- EA(A) + EA(B) 3 addressadd A B CEA(A) <- EA(B) + EA(C) Load/Store: 3 addressadd Ra Rb RcRa <- Rb + Rc load Ra RbRa <- mem[Rb] store Ra Rbmem[Rb] <- Ra 비교 명령 당 바이트 수 동일 연산에서의 명령어 수 명령 당 사이클 수 (CPI)
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 5 명령어 수 비교 ° Code sequence for C = A + B for four classes of instruction sets: StackAccumulatorRegister (register-memory)(load-store) Push ALoad ALoad R1,A Push BAdd BAdd R1,BLoad R2,B AddStore CStore C, R1Add R3,R1,R2 Pop CStore C,R3
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 6 범용 레지스터 최근 대부분 머신이 범용 레지스터 사용 레지스터 사용 이점 접근속도가 빠름 메모리보다 빠름 컴파일러의 활용이 용이 (A*B)-(C*D)-(E*F) 연산의 경우 곱셈의 순서와 관계 없음 => 스택머신의 경우 순서유지 필요 프로그램 코드 크기 감소 레지스터의 주소길이 < 메모리의 주소 길이
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 7 메모리 주소 현재 대부분의 머신이 바이트 단위로 주소 지정 Big Endian: address of most significant IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA Little Endian: address of least significant Intel 80x86, DEC Vax, DEC Alpha (Windows NT) msblsb little endian byte big endian byte 0 Alignment: require that objects fall on address that is multiple of their size Aligned Not Aligned
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 8 주소지정방식 (Addressing Mode) RegisterAdd R4,R3R4 R4+R3 ImmediateAdd R4,#3R4 R4+3 DisplacementAdd R4,100(R1)R4 R4+Mem[100+R1] Register indirectAdd R4,(R1)R4 R4+Mem[R1] Indexed / BaseAdd R3,(R1+R2)R3 R3+Mem[R1+R2] Direct or absoluteAdd R1,(1001)R1 R1+Mem[1001] Memory indirectAdd R1+Mem[Mem[R3]] Auto-incrementAdd R1,(R2)+R1 R1+Mem[R2]; R2 R2+d Auto-decrementAdd R1,-(R2)R2 R2-d; R1 R1+Mem[R2] Scaled Add R1,100(R2)[R3]R1 R1+Mem[100+R2+R3*d]
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 9 주소지정방식 사용분포 SPEC89 3 programs --- Displacement: 42% avg, 32% to 55% --- Immediate: 33% avg, 17% to 43% --- Register deferred (indirect): 13% avg, 3% to 24% --- Scaled: 7% avg, 0% to 16% --- Memory indirect: 3% avg, 1% to 6% --- Misc:2% avg, 0% to 3% 75% displacement & immediate 88% displacement, immediate & register indirect
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 10 명령어 세트 Data MovementLoad (from memory) Store (to memory) memory-to-memory move register-to-register move input (from I/O device) output (to I/O device) push, pop (to/from stack) Arithmeticinteger (binary + decimal) or FP Add, Subtract, Multiply, Divide Logicalnot, and, or, set, clear Shiftshift left/right, rotate left/right Control (Jump/Branch)unconditional, conditional Subroutine Linkagecall, return Interrupttrap, return Synchronizationtest & set Stringsearch, translate Graphics (MMX)parallel subword ops (4 16bit add)
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 11 Top 10 80x86 Instructions
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 12 조건 테스트 Condition Codes Processor status bits are set as a side-effect of arithmetic instructions (possibly on Moves) or explicitly by compare or test instructions. ex:add r1, r2, r3 bz label Condition Register Ex: cmp r1, r2, r3 bgt r1, label Compare and Branch Ex: bgt r1, r2, label
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 13 조건분기 거리
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 14 조건의 유형
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 15 자료형 Bit: 0, 1 Bit String: sequence of bits of a particular length 4 bits is a nibble 8 bits is a byte 16 bits is a half-word 32 bits is a word 64 bits is a double-word Character: ASCII 7 bit code Decimal: digits 0-9 encoded as 0000b thru 1001b two decimal digits packed per 8 bit byte Integers: 2's Complement Floating Point: Single Precision Double Precision Extended Precision M x R E How many +/- #'s? Where is decimal pt? How are +/- exponents represented? exponent base mantissa
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 16 오퍼랜드 사용 분포
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 17 명령어 형식 유형 Variable: Fixed: Hybrid:
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 18 A "Typical" RISC 32-bit fixed format instruction (3 formats) bit GPR (R0 contains zero, DP take pair) 3-address, reg-reg arithmetic instruction Single address mode for load/store: base + displacement no indirection Simple branch conditions see: SPARC, MIPS, HP PA-Risc, DEC Alpha, IBM PowerPC, CDC 6600, CDC 7600, Cray-1, Cray-2, Cray-3
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 19 DLX 아키텍처 Simple load-store architecture Emphasizes: Simple load-store instruction set Design for pipeline efficiency Design for compiler target DLX registers bit GPRS named R0, R1,..., R bit FPRs named F0, F2,..., F30 Accessed independently for 32-bit data Accessed in pairs for 64-bit (double-precision) data R0 is always 0 Other status registers, e.g., floating-point status register Byte addressable in big-endian with 32-bit address
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 20 DLX 주소지정방식 oprsrtrd immed register Register (direct) oprsrt register Base+index + Memory immedoprsrt Immediate immedoprsrt PC PC-relative + Memory All instructions 32 bits wide
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 21 DLX 명령어 형식 Op rs1rd immediate Op Op rs1rs2 Offset added to PC rd func R-type instruction 1011 I-type instruction J-type instruction
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 22 DLX 연산 Data transfers LB,LBU,SB, LH,LHU,SH, LW,SW LF,LD,SF,SD MOVI2S,MOVS2I, MOVF,MOVD, MOVFP2I,MOVI2FP Arithmetic logical ADD, ADDI, ADDU, ADDUI,SUB,SUBI, SUBU,SUBUI, MULT,MULTU,DIV,DIVU AND,ANDI, OR, ORI, XOR,XORI LHI SLL,SRL,SRA,SLLI,SRLI,SRAI S__, S__I => “__” may be LT,GT,LE,GE,EQ,NE Control BEQZ,BNEZ, BFPT,BFPF J,JR, TRAP, RFE Floating point ADDD,ADDF,SUBD,SUBF,MULTD,MULTF,DIVD,DIVF CVTF2D,CVTF2I,CVTD2F,CTD2I,CVTI2F,CVTI2D __D,__F => “__” may be LT,GT,LE,GE,EQ,NE
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 23 Examples of DLX load and store instructions InstructionExample Meaning load word LW R1, 30(R2) R1 = 32 Mem[30+R2] load word LW R1, 1000(R0) R1 = 32 Mem[1000+0] load byte LB R1, 40(R3) R1 = 32 (Mem[40+R3] 0 ) 24 ## Mem[40+R3] load byte unsigned LBU R1, 40(R3) R1 = ## Mem[40+R3] load half word LH R1, 40(R3) R1 = 32 (Mem[40+R3] 0 ) 16 ## Mem[40+R3] ## Mem[41+R3] load float LF F0, 50(R3) F0 = 32 Mem[50+R3] load double LD F0, 50(R3) F0 ## F1 = 64 Mem[50+R3] store wordSW 500(R4), R3 Mem[500+R4] = 32 R3 store floatSF 40(R3), F0 Mem[40+R3] = 32 F0 store doubleSD 40(R3), F0 Mem[40+R3] = 32 F0; Mem[44+R3] = 32 F1 store half SH 502(R2), R3 Mem[502+R2] = 16 R store byte SB 41(R3), R2 Mem[41+R3] = 8 R
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 24 Examples of DLX arithmetic/logical instructions Instruction Example Meaning add ADD R1,R2,R3 R1 = R2 + R3 add immediate ADDI R1,R2,#3 R1 = R2 + 3 load high immediate LHI R1,#42 R1 = 42##0 16 shift left logical immediateSLLI R1,R2,#5 R1 = R2 << 5 set less thanSLT R1,R2,R3 if (R2<R3) R1 = 1 else R1 = 0
컴퓨터구조특론 1 순천향대학교 정보기술공학부 이 상 정 25 Examples of control-flow instructions InstructionExample Meaning jump J name PC = name; ( (PC+4)-2 25 ) <= name < ( (PC+4)+2 25 ) jump and link JAL name R31 = PC+4; PC = name; ( (PC+4)-2 25 ) <= name < ( (PC+4)+2 25 ) jump and link JALR R2 R31 = PC+4; PC = R2; register jump registerJR R3 PC = R3 branch equal zero BEQZ R4, name if (R4 == 0) PC = name; ( (PC+4)-2 15 ) <= name < ( (PC+4)+2 15 ) branch not equal BNEZ R4, name if (R4 != 0) PC = name; zero ( (PC+4)-2 15 ) <= name < ( (PC+4)+2 15 )