Upload
ngodieu
View
227
Download
2
Embed Size (px)
Citation preview
1
제9장 Instruction Set Architecture 9-1 컴퓨터 아키텍쳐 개념
• Machine language : (프로그램 메모리에 저장되는) 이진코드
• Assembly language : symbolic, opcode + address 정보
• 아키텍쳐
명령어 세트 아키텍쳐
organization : DP, 제어장치, 연결버스
하드웨어 : 논리적 회로
• 명령어 format field
- opcode
- Address : 메모리 또는 레지스터 주소
- Mode field : 주소영역의 규정
- 그외 : shift 비트수, immediate 값
• CPU의 레지스터세트
사용자 접근불가능 레지스터 : PC, IR(instr. Reg) uP실행에 필요한 reg, 파이프라인 reg
프로그램가능레지스터 : instr set에 정의
PSR(processor status reg) : C,N,V,Z 의 상태 비트 F/F
SP (stack pointer) : 프로그램 실행시 스택값저장 -PC ( program counter) :프로그램메모리의 다음실행할 주소저장
-instr decode :연산종류, 어드레싱모드결정
한국기술교육대학교 전기전자통신공학부
Instrdecode
Operand 위치 해석
Operandfetch
연산실행결과저장
Instrfetch
컴퓨터 동작사이클
2
9-2 오퍼랜드 어드레싱- ADD 연산에 대한 오퍼랜드 : 최대 3 operand (addend, augend, result)
- 오퍼랜드의 저장장소 : 레지스터 또는 메모리
- 오퍼랜드 주소 지정방식
암시적 주소(implied address)
명시적 주소(explicit address)
- 명령어에 포함된 주소개수 : 3,2, 1, 0
X = (A + B)(C + D) 연산을 위한 각 주소지정방식
• 3 주소 명령어 : assem 프로그램 코드가 작다, 주소지정비트가 크다
- 메모리사용ADD T1, A, B M[T1] ß M[A] + M[B]
ADD T2, C, D M[T2] ß M[C] + M[D]
MUL X, T1, T2 M[X] ß M[T1] x M[T2]
- 레지스터사용ADD R1, A, B R1 ß M[A] + M[B]
ADD R2, C, D R2 ß M[C] + M[D]
MUL X, R1, R2 M[X] ß R1 x R2
• 2 주소 명령어 : 결과저장 오퍼랜드를 암시적 주소로 사용, 코드길이가 길어진다.MOVE T1, A M[T1] ß M[A]
ADD T1, B M[T1] ß M[T1] + M[B]
MOVE X, C M[X] ß M[C]
ADD X, D M[X] ß M[X] + M[D]
MUL X, T1 M[X] ß M[X] x M[T1]
한국기술교육대학교 전기전자통신공학부
3
• 1 주소 명령어 : 암시적 주소 레지스터인 accumulator 사용
LD A ACC ß M[A]
ADD B ACC ß ACC + M[B]
ST X M[X] ß ACC
LD C ACC ß M[C]
ADD D ACC ß ACC + M[D]
MUL X ACC ß ACC X M[X]
ST X M[X] ß ACC
• 제로주소 명령어 :
stack (LIFO, Last In First Out) 사용
TOS(top of stack) ~ 보통 stack pointer(SP)라는 레지스터에 값 저장
PUSH A TOPS ß M[A]
PUSH B TOPS ß M[B]
ADD TOPS ß TOPS + TOS-1
PUSH C TOPS ß M[C]
PUSH D TOPS ß M[D]
ADD TOPS ß TOPS + TOS-1
MUL TOPS ß TOPS + TOS-1
POP X M[X] ß TOS
한국기술교육대학교 전기전자통신공학부
4
• Addressing architecture
- memory-to-memory 구조
- register-to-register 구조 ~ load/store 구조
LD R1, A R1 ß M[A] LD R2, D R2 ß M[D]
LD R2, B R2 ß M[B] ADD R1, R1, R2 R1 <- R1 + R2
ADD R3, R1, R2 R3 <- R1 + R2 MUL R1, R1, R3 R1 <- R1 X R3
LD R1, C R1 ß M[C] ST X, R1 M[X] ß R1
- register-memory 구조
ADD R1, A R1 ß R1 + M[A]
- 단일 누산기 구조 : 1 주소 명령어, 레지스터 파일이 없다, 21번의 메모리 접근으로 비효율적
ADD B ACC ß ACC + M[B]
- 스택 구조 : 제로 명령어, 스택이 메모리에 있기때문에 빈번한 메모리접근 발생
infix 연산자 표현 : (A + B) x C + ( D x E)
postfix 연산자 표현 ( RPN, Reverse Polish Notation) : A B + C x D E x +
~ 변수를 만날 때 스택에 저장 (push), 연산자를 만날 때 2개 변수를 pop하여 연산결과를 다시 스택에 저장
PUSH A
PUSH B
ADD
PUSH C
MUL
PUSH D
PUSH E
MUL
ADD
한국기술교육대학교 전기전자통신공학부
5
9-3 어드레싱 모드- 명령어에 포함되는 영역
opcode : 연산 종류
모드 : 오퍼랜드 지정방식
주소 : 오퍼랜드위치, 메모리 또는 레지스터
• 암시모드(implied mode)
- Binary 명령어가 2개 이하의 주소 포함시 한 주소는 암시적
2 addr ADD T1, B M[T1] ß M[T1] + M[B] -- 결과 주소는 암시적
1 addr ADD B ACC ß ACC + M[B] -- ACC를 암시적 주소로 사용
0 addr ADD TOS ß TOS + TOS –1 -- 스택의 TOS가 암시적 주소
• 즉시 모드(immediate mode)
- 상수 값을 갖는 오퍼랜드를 명령어에 포함
LDA #100H ACC ß #100H
• Register mode /register indirect mode
- 레지스터 모드 :명령어에서 주소영역이 특정, 임의 레지스터를 지정
LDA R1 ACC ß R1
- 레지스터 간접모드 : 주소영역이 레지스터를 지정하고 이 레지스터의 내용은 오퍼랜드의 메모리 주소 표현
LDA (R1) ACC ß M[R1] ß 직접 메모리 주소 지정보다 적은 비트 수 사용
auto increment / auto decrement : 메모리에 배열(array) 형태의 데이터가 저장된 경우,
배열에 대한 메모리 주소를 레지스터가 지정한다.
레지스터의 내용을 자동 1 증가 또는 감소하므로써 메모리 배열에 접근
ADD (R1)+, 3 M[R1] ß M[R1] +3, R1 ß R1 + 1
배열의 모든 원소에 3을 더하는 연산
(R1) 배열의 첫번째 주소지정, 주소 접근후 R1을 다음 연산을 위해 자동 1 증가
한국기술교육대학교 전기전자통신공학부
6
• 직접 어드레싱 (Direct addressing )모드
- 오퍼랜드가 접근될 메모리 주소를 직접 사용
LDA ADRS ACC ß M[ADRS] 2 워드 명령어, PC값은 2 증가
BRA ADRS if ACC=0 PC ß ADRS branch 명령
if ACC=0 PC ß PC+2
• 간접 어드레싱 (Indirect addressing)모드
- 유효주소(effective address)가 저장된 메모리 주소 지정
LDA [ADRS] ACC ß M[M[ADRS]]
• 상대어드레싱 (Relative addressing) 모드
- 특정 레지스터(예 :PC)를 사용하여 이의 내용에
주소 영역값을 더하여 유효 주소 계산
유효주소 = 명령어의 주소부분 + PC의 내용
LDA $ADRS ACC ß M[ADRS + PC]
** 분기할 주소가 현재 실행명령어와 가까이 있는 경우,
전체 메모리 주소 지정보다 적은 비트수로 표현가능
• indexed addressing mode
- 인덱스 레지스터 사용
유효 주소 = index reg의 내용 + 명령어주소부분
LDA ADRS (R1) ACC ß M[ADRS+R1]
이때 (R1) 값은 ADRS 값으로부터 상대적인 위치값
- 전용 index reg 또는 임의의 CPU reg를 index reg로 사용
- base-register mode : index reg 대신 base reg를 사용하여
유효주소= base reg 내용 + 명령어주소부분
이때 명령어 주소값은 base reg 주소로부터의 상대적 위치값
한국기술교육대학교 전기전자통신공학부
8
9-4 명령어 세트 구조• RISC(reduced instruction set computer) 구조
(1) 메모리 접근은 load/store 명령어만 가능, 데이터 처리 명령어는 reg-to-reg 모드만 가능
(2) 제한된 어드레싱 모드
(3) 고정길이 명령어 포맷
(4) 명령어는 기본적 연산 수행
- 많은 데이터 처리량과 빠른 처리속도를 목적
- 메모리 접근은 시간이 많이 걸리므로 load/store외 다른 명령어에서는 배제
- 큰 레지스터 파일을 사용하여 데이터 처리
- 단순한 제어장치구조로 하드와이드 방식 사용
- 파이프라인 구조를 기본적 구조로 사용
• CISC (Complex instruction set computer) 구조
(1) 직접 메모리접근이 가능한 명령어가 많다
(2) 다양한 어드레싱 모드
(3) 가변길이의 명령어 포맷
(4) 기본적 연산과 복합연산을 포함하는 명령어 세트
- 프로그램 규모를 줄여 메모리 사용을 줄이는 명령어
- 메모리접근이 용이하므로 레지스터 파일은 비교적 작다.
- 복잡한 명령어에 대한 제어논리회로는 마이크로프로그래밍 방식 사용
uP 제어회로는 내부적으로 RISC의 기본연산 실행과 같이 파이프라인으로 처리
• CPU의 기본 연산 명령어 군 (CISC 및 RISC 모두에 포함)
(1) 데이터 전송 명령어
(2) 데이터 처리 명령어
(3) 프로그램처리명령어
한국기술교육대학교 전기전자통신공학부
9
9-5 데이터 전송 명령- 데이터 이동 : 데이터 내용 불변
- 전송 장소
메모리-레지스터, CPU 레지스터-입출력 레지스터,
레지스터-레지스터, 메모리-메모리 …• 스택 명령어
- 프로시져 호출과 복귀, interrupt 시 상태정보 저장
- 메모리 스택과 레지스터 사이의 데이터 전송 : push/pop
- SP(stack pointer)현재의 스택주소, TOS
스택에 저장된 데이터는 pop 동작으로 제거되는 것이 아니고 SP값만 감소
push SP ß SP-1 pop R1 ß M[SP]
M[SP] ß R1 SP ß SP+1
- 스택 증가가 주소값이 증가하는 형태의 스택 구성방식 :
push SP ß SP+1 pop R1 ß M[SP]
M[SP] ß R1 SP ß SP-1
- SP가 TOS의 다음 위치 지정 형태(스택 주소 증가방식)
push M[SP] ß R1 pop SP ß SP-1
SP ß SP+1 R1 ß M[SP]
• 입출력 명령어: CPU 레지스터와 입출력장치의 전송
- 독립I/O (independent I/O)시스템 : isolated I/O configuration
메모리와 입출력 포트의 주소가 분리, 특정 I/O 포트를 지정하기 위한 명령어지원
- 메모리-매핑 I/O (memory mapped I/O)시스템
메모리 주소의 일부를 I/O포트 주소로 할당
독립적 I/O 명령어가 없고 load/store 명령사용, 명령어가 단순
한국기술교육대학교 전기전자통신공학부
10
9-6 데이터 처리 명령어- 산술, 논리와 비트처리, 자리이동
• 산술 명령어 : add, sub, mult, div,….
- 부호화된 정수, unsigned 정수 구분
- 2진수, 10진수, 부동소수점
- 연산에 대한 레지스터의 비트 수
à double precision은 기본 레지스터의 2배수
• 논리연산, 비트처리 명령어
- 오퍼랜드의 각 비트에 대한 독립적인 논리연산
- A=1010 1101 B=1111 0000
A AND B = 1010 0000 A OR B = 1111 1101 A XOR B = 0101 1101, 이때 B의 역할은
mask, bit clear bit set bit complement
• 자리이동 명령어
A SHR 2 = 0010 1011 A SHL 3 = 0110 1000 ß 논리자리이동 빈자리를 0으로 채움
A SHRA 2 = 1110 1011 A SHLA 3 = 0110 1000 ß 산술자리이동, 왼쪽 빈자리는 sign extension 형태
A ROR 1 = 1101 0110
A ROLC 3 = 1 0110 1010 Carry=0으로 가정
- 자리이동 명령어 포맷 :
OP REG TYPE RL COUNT
OP : opcode
REG : operand
TYPE : 2 비트, 자리이동 형태
RL : 1비트 left/right 방향
COUNT : k비트, 0~2k-1의
자리이동수
한국기술교육대학교 전기전자통신공학부
11
9-7 부동소수점 (Floating point) 계산
- 가수(fraction)와 지수(exponent)로 표현
10진수 +.6132789 +04 è F x 10E = +.6132789 x 10+4 F및 E만 저장
2진수1001.11 è 01001110 000100 è F x 2E = +(0.1001110)2 x 2+4
부호 가수 지수 정규화
- 정규화(normalized) : 정밀도증가 ex) 0.0035 0.350
48비트 레지스터에 저장된 수 가정할 때, 1비트 부호 사용
정수의 범위 +-(247 – 1) à +- 1014
부동소수 범위 +-(1-2-35) x 2+2047 à +- 10615 [12비트 지수, 35비트 가수]
가수 비트를 크게 하면 정확도 증가, 지수 비트를 크게 하면 수의 범위 증가
• 산술연산
- 두수의 덧셈 및 뺄셈 : 지수를 같게 하기 위해 radix point 위치 정렬 필요
.5372400 x 102 .5372400 x 102
+ .1580000 x 10-1 + .0001580 x 102
.5373980 x 102 ß 결과의 가수는 다시 자리이동으로 정규화한다.
- 두수의 곱셈과 나눗셈 : radix point 정렬 불필요
곱셈 : 두 가수는 곱하고 지수끼리 더한 후 정규화
나눗셈 : 두 가수는 나누고 지수끼리 뺀 후 정규화
- 바이어스된 지수
가수 : 부호-크기방식 표현
지수 : 초과수를 더하여 biased 지수 표현, 지수부호제거
예: 초과bias=99 경우, e=E+99 E:실제지수
E=-99 à e = 0 E=+99 à e=198
0 ~ 198의 양의 지수로 표현 ß 지수계산시 부호고려 불필요
한국기술교육대학교 전기전자통신공학부
12
• 표준오퍼랜드 포맷
- single precision: 32비트, FS
double precision : 64 비트, FL(floating-point long)
ADDF : floating ADD 명령어
- IEEE standard 1배 정확도 부동소수점 표현
s : 부호 1비트
f : 가수 23비트 1.f1f2…f23 형식 실제 24비트값 1.111…11 ~ 1.000…00
significand,유효자리값, 항상 정규화됨
e: 지수 8비트, 127 초과 바이어스값
유효지수범위 : -126 ~ + 127
정규화된 수 표현 : (-1)se-127 x (1.f)
최대수 à s=0, e=254 f=1.11..111 (1+1-2-23)
+2127 x (2-2-23)
최소양 및 음의수 à e=1 f=1.00..000 = +- 2-126
특수수 표현
e=255, f=0 +- infinity
e=255, f=0 NaN (Not a Number), 유효하지 않은 연산
e=0, f=0 +0 -0
e=0, f=0 denormalized, 정규화된 수 보다 작은 수
23비트
f field significand 십진수
100…00
010…00
000…00
1.100…00
1.010…00
1.000..00
1.50
1.25
1.00등비수열합
한국기술교육대학교 전기전자통신공학부
13
9-8 프로그램 제어 명령어- 프로그램 명령어는 메모리에 연속 저장되고 한 번지씩 읽어 실행
- 메모리의 주소는 PC로부터, 메모리가 읽힐 때마다 자동 1 증가
- 프로그램의 실행 순서(주소)를 바꾸는 명령어 : 분기(branch) 와 점프(jump) 명령어
분기 명령어 : 상대 어드레싱
점프 명령어 : 직접, 간접 어드레싱
조건 명령어 : 조건이 만족될 때 분기/점프, 유효주소를 PC에 로드
아닐 때는 PC의 연속된 다음 주소 실행
skip 명령어 실행 예 :
skip on C
jump addr1
ADD R1
ß 조건분기 명령어보다 비효율적, 2개 명령어 실행
비교 명령어 : 두 오퍼랜드의 뺄셈에 의하여 비교,
이때 레지스터, 상태비트의 변화로 조건분기를 발생
test 명령어 : 두 오퍼랜드의 ANDing 결과로
레지스터, 상태비트 변화로 조건분기발생
- 조건명령어 : PSR 비트값을 조건으로 하여 유효주소값 변경
BZ, BNZ : ALU 연산결과가 0인지 PSR의 Z 비트로 검사
BC, BNC : ALU에서의 캐리, 자리이동레지스터의 캐리
BN, BNN : 부호비트, ALU의 최상단 왼쪽비트
BV, BNV : 부호화된 수의 산술연산의 자리수 넘침(overflow)
A-B : 부호없는 두 수의 뺄셈
A-B ß 연산기
상태비트 C ( 캐리 또는 borrow ), Z변화
조건이 만족하면 다음 명령어 skip (PC 증가), 아니면 무조건 분기
한국기술교육대학교 전기전자통신공학부
14
• 부호없는 수의 조건분기 명령어
A-B와 같은 연산을 실행하여
ALU 값과 PSR의 C, Z 비트 사용
BLE ( A <= B ) : C=1 or Z=1 à C+Z=1
BH (A > B) : BLE의 complement, à C+Z=0
• 부호화된 수의 조건분기 명령어
A-B와 같은 연산을 실행하여
ALU 값과 PSR의 N, V, Z 비트 사용
A >= B :
N=0 V=0 뺄셈의 부호 +, not overflow, A >= B
N=1 V=1 부호반전, 양의값 결과, A>=B
à N xor V = 0
A > B : 결과는 양수이고 not zero
à (N xor V) + Z = 0
A < B : A >= B 의 complement
A <= B : A>B의 complement
• 프로시주어 호출과 복귀명령어
서브루틴을 실행(CALL) 하기 위해 시작하는 위치로 분기한 후 서브루틴실행이 끝나면 주 프로그램으로 복귀(RET)
CALL addr1 다음 명령어의 주소를 임시장소에 저장 : return 주소
LD R1 addr1을 PC에 로드
return 주소 저장장소 : 메모리의 고정된 위치, 프로세서 레지스터, 메모리 스택
스택사용시 : 연속된 call 주소를 스택에 저장, 프로그래머가 복귀 주소 관리 불필요
call SP ß SP-1 return PC ß M[SP] (LD R1 주소 )
M[SP] ß PC (LD R1 주소) SP ß SP + 1
PC ß 유효주소 (addr1)
한국기술교육대학교 전기전자통신공학부
15
9-9 프로그램 가로채기(Interrupt)- 정상적인 프로그램의 진행순서에서 벗어나 외부 또는 내부에서 발생한 요구에 따른 서비스프로그램 실행
내부/외부에서 예측할 수 없는 시점에서 발생
서비스 프로그램의 주소는 하드웨어 처리로 결정
interrupt 발생시, PC외 상태 레지스터 값도 저장
- 가로채기 발생시 해당 서비스 프로그램 실행 전에 현재 실행되는 프로그램의 실행을 완료후, 복귀주소,
PSR 등을 저장한 후 서비스 프로그램을 실행하고 복귀시는 저장된 레지스터 값을 복원
- 컴퓨터의 2가지 동작모드 : PSR 또는 특정 비트로 결정
시스템모드 : 운영체제의 프로그램 실행시, 시스템모드 특권 명령어, 사용자는 접근불가
사용자 모드 : 사용자프로그램 실행상태, 시스템특권명령어 실행불가
- 가로채기 발생시 현재값 저장 하드웨어 형태
PC 값만 저장하는 기능 하드웨어- 가로채기서비스프로그램에서 필요레지스터 내용 저장기능을 포함해야함
가로채기 발생시 필요 레지스터내용을 자동적으로 저장
alternate 레지스터 세트를 가진 형태 : 모드 세트로 두 레지스터 세트를 교대로 사용
- 가로채기 처리 하드웨어 형태
프로세서 레지스터 내용을 메모리 스택에 저장하고 서비스프로그램의 첫번째 명령어 하드웨어주소를 PC에 로드
서비스프로그램의 시작주소를 하나의 메모리 위치에 할당
가로채기 각 소스에 대하여 별도의 독립적인 주소 할당
가로채기 소스 하드웨어 자체에서 서비스 루틴의 주소 제공
서비스 루틴으로 분기하기 위한 주소를 선택하게 하드웨어 처리과정을 거치는 경우
- 가로채기 발생시 대부분, 현재 실행중인 명령어가 완료되기까지 가로채기에 응답하지 않는다.
한국기술교육대학교 전기전자통신공학부
16
- 가로채기 형태 : 외부 가로채기, 내부 가로채기, 소프트웨어 가로채기
external interrupt : 하드웨어, 입출력장치, 타이밍장치, 파워 공급 등 외부요인에 의한 발생
Internal interrupt : 하드웨어, 명령어나 데이터의 잘못된 사용 등으로 trap발생이라고 함
산술overflow, 0으로 나눌 때, 잘못된 연산코드 실행, 메모리 스택 overflow,
protection violation(메모리 접근 금지영역을 접근하려고 할 때)
software interrupt : 사용자가 명령어를 실행하여 interrupt를 의도적으로 발생
입출력전송이 필요한 경우 시스템모드로 변환시켜 전송을 시스템모드가 실행하게 하는 sw intr 발생
- 외부 가로채기 하드웨어 형태
여러 개의 intr 소스 사용가능
EI (intr enable) 세트 레지스터 – ENI, DSI 명령어로 세트/리세트
- 가로채기 마이크로 명령어 실행단계
SP ß SP – 1
M[SP] ß PC
M[SP] ß SP – 1
M[SP] ß PSR
EI ß 0
INTACK ß 1
PC ß IVAD
한국기술교육대학교 전기전자통신공학부