Decoupled Value Prediction on Trace Processors

Download Report

Transcript Decoupled Value Prediction on Trace Processors

명령어 세트 아키텍처
순천향대학교 정보기술공학부
이상정
2002-2 컴퓨터구조특론1
소개
Instruction
Fetch
Instruction
Decode
Operand
Fetch
 명령어 형식 기술
• 연산의 종류(Operation)
• 오퍼랜드의 저장 위치
• 자료형 및 크기
• 분기 타겟
Execute
Result
Store
Next
Instruction
순천향대학교 정보기술공학부 이 상 정
2
2002-2 컴퓨터구조특론1
명령어 세트의 발전단계
Single Accumulator (EDSAC 1950)
Accumulator + Index Registers
(Manchester Mark I, IBM 700 series 1953)
Separation of Programming Model
from Implementation
High-level Language Based
(B5000 1963)
Concept of a Family
(IBM 360 1964)
General Purpose Register Machines
Complex Instruction Sets
(Vax, Intel 432 1977-80)
Load/Store Architecture
(CDC 6600, Cray 1 1963-76)
RISC
순천향대학교 정보기술공학부 이 상 정
LIW/”EPIC”? 3(IA-64. . .1999)
2002-2 컴퓨터구조특론1
명령어 세트 분류
 Accumulator (1 register):
• 1 address
add A
• 1+x address
addx A
 Stack:
• 0 address
add
 General Purpose Register:
• 2 address
add A B
• 3 address
add A B C
 Load/Store:
• 3 address
acc <- acc + mem[A]
acc <- acc + mem[A + x]
tos <- tos + next
EA(A) <- EA(A) + EA(B)
EA(A) <- EA(B) + EA(C)
add Ra Rb Rc Ra <- Rb + Rc
load Ra Rb
Ra <- mem[Rb]
store Ra Rb
mem[Rb] <- Ra
 비교
• 명령 당 바이트 수
• 동일 연산에서의 명령어 수
• 명령 당 사이클 수(CPI)
순천향대학교 정보기술공학부 이 상 정
4
2002-2 컴퓨터구조특론1
명령어 수 비교
° Code sequence for C = A + B for four classes of instruction s
Stack
Accumulator Register
Register
(register-memory) (load-store)
Push A
Load A
Load R1,A
Load R1,A
Push B
Add B
Add R1,B
Load R2,B
Add
Store C
Store C, R1
Add R3,R1,R2
Pop C
순천향대학교 정보기술공학부 이 상 정
Store C,R3
5
2002-2 컴퓨터구조특론1
범용 레지스터
 최근 대부분 머신이 범용 레지스터 사용
 레지스터 사용 이점
• 접근속도가 빠름
• 메모리보다 빠름
• 컴파일러의 활용이 용이
• (A*B)-(C*D)-(E*F) 연산의 경우 곱셈의 순서와 관계 없음
=> 스택머신의 경우 순서유지 필요
• 프로그램 코드 크기 감소
• 레지스터의 주소길이 < 메모리의 주소 길이
순천향대학교 정보기술공학부 이 상 정
6
2002-2 컴퓨터구조특론1
메모리 주소
 현재 대부분의 머신이 바이트 단위로 주소 지정
• 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)
little endian byte 0
3
2
1
0
msb
lsb
0
0
big endian byte 0
1
2
3
Aligned
Alignment: require that objects fall on address
that is multiple of their size.
Not
순천향대학교 정보기술공학부 이 상 정
7
Aligned
1
2
3
2002-2 컴퓨터구조특론1
주소지정방식(Addressing Mode)
Register
Add R4,R3
R4R4+R3
Immediate
Add R4,#3
R4 R4+3
Displacement
Add R4,100(R1) R4 R4+Mem[100+R1]
Register indirect
Add R4,(R1)
Indexed / Base
Add R3,(R1+R2) R3 R3+Mem[R1+R2]
Direct or absolute
Add R1,(1001)
R1 R1+Mem[1001]
Memory indirect
Add R1,@(R3)
R1 R1+Mem[Mem[R3]]
Auto-increment
Add R1,(R2)+
R1 R1+Mem[R2]; R2 R2+d
Auto-decrement
Add R1,-(R2)
R2 R2-d; R1 R1+Mem[R2]
Scaled
Add R1,100(R2)[R3]
순천향대학교 정보기술공학부 이 상 정
R4 R4+Mem[R1]
R1  R1+Mem[100+R2+R3*d]
8
2002-2 컴퓨터구조특론1
주소지정방식 사용분포
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
순천향대학교 정보기술공학부 이 상 정
9
2002-2 컴퓨터구조특론1
명령어 세트
Data Movement
Arithmetic
Load (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)
integer (binary + decimal) or FP
Add, Subtract, Multiply, Divide
Shift
Logical
shift left/right, rotate left/right
not, and, or, set, clear
Control (Jump/Branch)
unconditional, conditional
Subroutine Linkage
Interrupt
Synchronization
String
Graphics (MMX)
call, return
trap, return
test & set
search, translate
parallel subword ops (4 16bit add)
순천향대학교 정보기술공학부 이 상 정
10
2002-2 컴퓨터구조특론1
Top 10 80x86 Instructions
° Rank instruction
Integer Average Percent total executed
1
load
22%
2
conditional branch
20%
3
compare
16%
4
store
12%
5
add
8%
6
and
6%
7
sub
5%
8
move register-register
4%
9
call
1%
10
return
1%
Total
96%
° Simple instructions dominate instruction frequency
순천향대학교 정보기술공학부 이 상 정
11
2002-2 컴퓨터구조특론1
조건 테스트
 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
순천향대학교 정보기술공학부 이 상 정
12
2002-2 컴퓨터구조특론1
조건분기 거리
Int. Avg.
FP Avg.
40%
30%
20%
10%
0%
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15
Bits of Branch Dispalcement
순천향대학교 정보기술공학부 이 상 정
13
2002-2 컴퓨터구조특론1
조건의 유형
7%
LT/GE
40%
Int Avg.
FP Avg.
7%
GT/LE
23%
86%
EQ/NE
37%
0%
20%
40%
60%
80%
Frequency of comparison
types in branches
순천향대학교 정보기술공학부 이 상 정
14
100%
2002-2 컴퓨터구조특론1
자료형
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
E
MxR
Floating Point:
Single Precision
mantissa
Double Precision
Extended Precision
순천향대학교 정보기술공학부 이 상 정
exponent
base
15
How many +/- #'s?
Where is decimal pt?
How are +/- exponents
represented?
2002-2 컴퓨터구조특론1
오퍼랜드 사용 분포
Doubleword
0%
69%
74%
Word
Halfword
Byte
31%
Int Avg.
FP Avg.
19%
0%
7%
0%
0%
20%
40%
60%
Frequency of reference by size
순천향대학교 정보기술공학부 이 상 정
16
80%
2002-2 컴퓨터구조특론1
명령어 형식 유형
Variable:
Fixed:
Hybrid:
순천향대학교 정보기술공학부 이 상 정
17
2002-2 컴퓨터구조특론1
A "Typical" RISC
 32-bit fixed format instruction (3 formats)
 32 32-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
순천향대학교 정보기술공학부 이 상 정
18
2002-2 컴퓨터구조특론1
DLX 아키텍처
 Simple load-store architecture
 Emphasizes:
• Simple load-store instruction set
• Design for pipeline efficiency
• Design for compiler target
 DLX registers
• 32 32-bit GPRS named R0, R1, ..., R31
• 32 32-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
address
순천향대학교 정보기술공학부 이 상 정
in
big-endian
19
with
32-bit
2002-2 컴퓨터구조특론1
DLX 주소지정방식
• All instructions 32 bits wide
Register (direct)
op
rs
rt
rd
register
Immediate
Base+index
op
rs
rt
immed
op
rs
rt
immed
register
PC-relative
op
rs
rt
+
immed
PC
순천향대학교 정보기술공학부 이 상 정
Memory
Memory
+
20
2002-2 컴퓨터구조특론1
DLX 명령어 형식
R-type instruction
31
26 25
Op
21 20
rs1
11 10
16 15
rs2
0
func
rd
I-type instruction
31
26 25
Op
rs1
21 20
16 15
rd
0
immediate
J-type instruction
31
26 25
Op
순천향대학교 정보기술공학부 이 상 정
0
Offset added to PC
21
2002-2 컴퓨터구조특론1
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
순천향대학교 정보기술공학부 이 상 정
22
2002-2 컴퓨터구조특론1
Examples of DLX load and store
instructions
Instruction
load word
load word
load byte
load byte unsigned
load half word
Example
LW R1, 30(R2)
LW R1, 1000(R0)
LB R1, 40(R3)
LBU R1, 40(R3)
LH R1, 40(R3)
load float
load double
store word
store float
store double
store half
store byte
LF F0, 50(R3)
LD F0, 50(R3)
SW 500(R4), R3
SF 40(R3), F0
SD 40(R3), F0
SH 502(R2), R3
SB 41(R3), R2
순천향대학교 정보기술공학부 이 상 정
Meaning
R1 =32 Mem[30+R2]
R1 =32 Mem[1000+0]
R1 =32 (Mem[40+R3]0)24 ## Mem[40+R3]
R1 =32 024 ## Mem[40+R3]
R1 =32 (Mem[40+R3]0)16 ## Mem[40+R3]
## Mem[41+R3]
F0 =32 Mem[50+R3]
F0 ## F1 =64 Mem[50+R3]
Mem[500+R4] =32 R3
Mem[40+R3] =32 F0
Mem[40+R3] =32 F0; Mem[44+R3] =32 F1
Mem[502+R2] =16 R316..31
Mem[41+R3] =8 R224..31
23
2002-2 컴퓨터구조특론1
Examples of DLX arithmetic/logical
instructions
Instruction
Example
add
ADD R1,R2,R3
add immediate
ADDI R1,R2,#3
load high immediate
LHI R1,#42
shift left logical immediate SLLI R1,R2,#5
set less than
SLT R1,R2,R3
else R1 = 0
순천향대학교 정보기술공학부 이 상 정
Meaning
R1 = R2 + R3
R1 = R2 + 3
R1 = 42##016
R1 = R2 << 5
if (R2<R3) R1 = 1
24
2002-2 컴퓨터구조특론1
Examples of control-flow instructions
Instruction
jump
Example
J name
jump and link
JAL name
jump and link
JALR R2
register
jump register
JR R3
branch equal zero BEQZ R4, name
branch not equal
zero
BNEZ R4, name
순천향대학교 정보기술공학부 이 상 정
Meaning
PC = name;
( (PC+4)-225) <= name < ( (PC+4)+225)
R31 = PC+4; PC = name;
( (PC+4)-225) <= name < ( (PC+4)+225)
R31 = PC+4; PC = R2;
PC = R3
if (R4 == 0) PC = name;
( (PC+4)-215) <= name < ( (PC+4)+215)
if (R4 != 0) PC = name;
( (PC+4)-215) <= name < ( (PC+4)+215)
25