16
9장 Instruction Set Architecture 9-1 컴퓨터 아키텍쳐 개념 Machine language : (프로그램 메모리에 저장되는) 이진코드 Assembly language : symbolic, opcode + address 정보 아키텍쳐 명령어 세트 아키텍쳐 organization : DP, 제어장치, 연결버스 하드웨어 : 논리적 회로 명령어 format field -opcode - Address : 메모리 또는 레지스터 주소 - Mode field : 주소영역의 규정 - 그외 : shift 비트수, immediate 값 컴퓨터 동작 사이클 컴퓨터 동작 사이클 Instr fetch Instr decode Operand 위치 해석 -PC ( program counter) : 프로그램메모리의 다음실행할주소저장 CPU레지스터세트 Operand fetch 연산실행 결과저장 프로그램메모리의 다음실행할주소저장 -instr decode : 연산종류, 어드레싱모드결정 CPU레지스터세트 사용자접근불가능레지스터 : PC, IR(instr. Reg) uP실행에 필요한 reg, 파이프라인 reg 프로그램가능레지스터 : instr set에 정의 PSR(processor status reg) : C,N,V,Z 의 상태 비트 F/F 1 SP (stack pointer) : 프로그램 실행시 스택값저장 한국기술교육대학교 정보기술공학부 장영조

제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

  • Upload
    ngothu

  • View
    219

  • Download
    4

Embed Size (px)

Citation preview

Page 1: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

제 9장 Instruction Set Architecture

9-1 컴퓨터 아키텍쳐 개념• Machine language : (프로그램 메모리에 저장되는) 이진코드

• Assembly language : symbolic, opcode + address 정보

• 아키텍쳐

명령어 세트 아키텍쳐

organization : DP, 제어장치, 연결버스

하드웨어 : 논리적 회로

• 명령어 format field

- opcodep

- Address : 메모리 또는 레지스터 주소

- Mode field : 주소영역의 규정

- 그외 : shift 비트수, immediate 값

컴퓨터 동작 사이클컴퓨터 동작 사이클

Instrfetch

Instr decode

Operand 위치 해석 -PC ( program counter) :

프로그램메모리의 다음실행할주소저장

CPU의 레지스터세트

Operandfetch

연산실행결과저장

프로그램메모리의 다음실행할주소저장-instr decode :연산종류, 어드레싱모드결정

CPU의 레지스터세트사용자접근불가능레지스터 : PC, IR(instr. Reg) uP실행에 필요한 reg, 파이프라인 reg

프로그램가능레지스터 : instr set에 정의

PSR(processor status reg) : C,N,V,Z 의 상태 비트 F/F

1

SP (stack pointer) : 프로그램 실행시 스택값저장

한국기술교육대학교정보기술공학부 장영조

Page 2: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

9-2 오퍼랜드 어드레싱- ADD 연산에 대한 오퍼랜드 : 최대 3 operand (addend, augend, result)ADD 연산에 대한 오퍼랜드 최대 3 operand (addend, augend, result)

- 오퍼랜드의 저장장소 : 레지스터 또는 메모리

- 오퍼랜드 주소 지정방식

암시적주소(implied address)

명시적 주소(explicit address)명시적 주소(explicit address)

- 명령어에 포함된 주소개수 : 3,2, 1, 0

X = (A + B)(C + D) 연산을 위한 각 주소지정방식

• 3 주소 명령어 : assem 프로그램 코드가 작다 주소지정비트가 크다• 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]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 R2MUL 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]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]

2한국기술교육대학교정보기술공학부 장영조

Page 3: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

• 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]PUSH B TOPS M[B]

ADD TOPS TOPS + TOS-1

PUSH C TOPS M[C]

PUSH D TOPS M[D]

ADD TOPS TOPS + TOS 1ADD TOPS TOPS + TOS-1

MUL TOPS TOPS + TOS-1

POP X M[X] TOS

3한국기술교육대학교정보기술공학부 장영조

Page 4: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

• 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) :postfix 연산자 표현 ( RPN, Reverse Polish Notation)

A B + C x D E x +

~ 변수를 만날 때 스택에 저장 (push), 연산자를 만날 때 2개 변수를 pop하여 연산결과를 다시 스택에 저장

PUSH A

PUSH BPUSH B

ADD

PUSH C

MUL

PUSH DPUSH D

PUSH E

MUL

ADD

4한국기술교육대학교정보기술공학부 장영조

Page 5: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

9-3 어드레싱 모드- 명령어에 포함되는 영역명령어에 포함되는 영역

opcode : 연산 종류

모드 : 오퍼랜드 지정방식

주소 : 오퍼랜드위치, 메모리 또는 레지스터

• 암시모드(implied mode)암시모드(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 --스택의 TOS가 암시적주소0 addr ADD TOS TOS + TOS –1 스택의 TOS가 암시적주소

• 즉시 모드(immediate mode)

- 상수값을 갖는 오퍼랜드를 명령어에 포함

LDA #100H ACC #100H

• Register mode /register indirect mode• Register mode /register indirect mode

- 레지스터 모드 :명령어에서 주소영역이 특정, 임의 레지스터를 지정

LDA R1 ACC R1

- 레지스터 간접모드 : 주소영역이 레지스터를 지정하고 이 레지스터의 내용은 오퍼랜드의 메모리 주소 표현

LDA (R1) ACC M[R1]LDA (R1) ACC M[R1]

직접 메모리 주소 지정보다 적은 비트수 사용

auto increment / auto decrement : 메모리에 배열(array)형태의 데이터가 저장된 경우,

배열에 대한 메모리 주소를 레지스터가 지정한다.

레지스터의 내용을 자동 1 증가 또는 감소하므로써 메모리 배열에 접근레지스터의 내용을 자동 1 증가 또는 감소하므로써 메모리 배열에 접근

ADD (R1)+, 3 M[R1] M[R1] +3, R1 R1 + 1

배열의 모든 원소에 3을 더하는 연산

(R1) 배열의 첫번째 주소지정, 주소접근후 R1을 다음 연산을 위해 자동 1 증가

5한국기술교육대학교정보기술공학부 장영조

Page 6: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

• 직접 어드레싱(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)모드간접 어드레싱(Indirect addressing)모드

- 유효주소(effective address)가 저장된 메모리 주소 지정

LDA [ADRS] ACC M[M[ADRS]]

• 상대어드레싱 (Relative addressing) 모드• 상대어드레싱 (Relative addressing) 모드

- 특정 레지스터(예 :PC)를 사용하여 이의 내용에

주소영역값을 더하여 유효 주소 계산

유효주소 = 명령어의 주소부분 + PC의 내용

LDA $ADRS ACC M[ADRS + PC]LDA $ADRS ACC M[ADRS + PC]

** 분기할 주소가 현재 실행명령어와 가까이 있는경우,

전체 메모리 주소 지정보다 적은 비트수로 표현가능

indexed addressing mode• indexed addressing mode

- 인덱스 레지스터 사용

유효 주소 =index reg의 내용+명령어주소부분

LDA ADRS (R1) ACC M[ADRS+R1]

이때 (R1) 값은 ADRS 값으로부터 상대적인 위치값이때 (R1) 값은 ADRS 값으로부터 상대적인 위치값

- 전용 index reg 또는 임의의 CPU reg를 index reg로 사용

- base-register mode : index reg 대신 base reg를 사용하여

유효주소= base reg 내용 + 명령어주소부분

6

이때 명령어주소값은 base reg주소로부터의 상대적위치값

한국기술교육대학교정보기술공학부 장영조

Page 7: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

- 어드레싱 모드 예

7한국기술교육대학교정보기술공학부 장영조

Page 8: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

9-4 명령어 세트 구조• RISC(reduced instruction set computer) 구조RISC(reduced instruction set computer) 구조

(1) 메모리 접근은 load/store 명령어만 가능, 데이터 처리 명령어는 reg-to-reg 모드만 가능

(2) 제한된 어드레싱 모드

(3) 고정길이 명령어 포맷

(4) 명령어는 기본적 연산 수행(4) 명령어는 기본적 연산 수행

- 많은 데이터 처리량과 빠른 처리속도를 목적

- 메모리접근은 시간이 많이 걸리므로 load/store외 다른 명령어에서는 배제

- 큰 레지스터 파일을 사용하여 데이터 처리

- 단순한 제어장치구조로 하드와이드 방식 사용단순한 제어장치구조로 하드와이드 방식 사용

- 파이프라인 구조를 기본적 구조로 사용

• CISC (Complex instruction set computer) 구조

(1) 직접 메모리접근이 가능한 명령어가 많다(1) 직접 메모리접근이 가능한 명령어가 많다

(2) 다양한 어드레싱 모드

(3) 가변길이의 명령어 포맷

(4) 기본적 연산과 복합연산을 포함하는 명령어 세트

프로그램 규모를 줄여 메모리 사용을 줄이는 명령어- 프로그램 규모를 줄여 메모리 사용을 줄이는 명령어

- 메모리접근이 용이하므로 레지스터 파일은 비교적 작다.

- 복잡한 명령어에 대한 제어논리회로는 마이크로프로그래밍방식 사용

uP 제어회로는 내부적으로 RISC의 기본연산 실행과 같이 파이프라인으로 처리

• CPU의 기본 연산 명령어 군 (CISC 및 RISC 모두에 포함)

(1) 데이터 전송 명령어

(2) 데이터 처리 명령어

8

(3) 프로그램처리명령어

한국기술교육대학교정보기술공학부 장영조

Page 9: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

9-5 데이터 전송 명령- 데이터 이동 : 데이터 내용 불변데이터 이동 데이터 내용 불변

- 전송 장소

메모리-레지스터,

CPU 레지스터-입출력 레지스터,

레지스터-레지스터레지스터 레지스터

메모리-메모리 …• 스택 명령어

- 프로시져 호출과 복귀, interrupt 시 상태정보 저장

- 메모리 스택과 레지스터 사이의 데이터 전송 : push/pop메모리 스택과 레지스터 사이의 데이터 전송 : push/pop

- SP(stack pointer)현재의 스택주소, TOS

스택에 저장된 데이터는 pop 동작으로 제거되는것이 아니고 SP값만 감소

push SP SP-1 pop R1 M[SP]

M[SP] R1 SP SP+1M[SP] R1 SP SP+1

- 스택증가가 주소값이 증가하는형태의 스택구성방식 :

push SP SP+1 pop R1 M[SP]

M[SP] R1 SP SP-1

SP가 TOS의 다음 위치 지정 형태(스택주소증가방식)- SP가 TOS의 다음 위치 지정 형태(스택주소증가방식)

push M[SP] R1 pop SP SP-1

SP SP+1 R1 M[SP]

• 입출력 명령어: CPU 레지스터와 입출력장치의 전송

독립I/O (i d d I/O)시스템 i l d I/O fi i- 독립I/O (independent I/O)시스템 : isolated I/O configuration

메모리와 입출력 포트의 주소가 분리, 특정 I/O 포트를 지정하기위한 명령어지원

- 메모리-매핑 I/O (memory mapped I/O)시스템

메모리주소의 일부를 I/O포트주소로 할당

9

독립적 I/O 명령어가없고 load/store 명령사용, 명령어가 단순

한국기술교육대학교정보기술공학부 장영조

Page 10: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

9-6 데이터 처리 명령어- 산술, 논리와 비트처리, 자리이동산술, 논리와 비트처리, 자리이동

• 산술 명령어 :add, sub, mult, div,….

- 부호화된 정수, unsigned 정수 구분

- 2진수, 10진수, 부동소수점

- 연산에 대한 레지스터의 비트 수연산에 대한 레지스터의 비트 수

double precision은 기본 레지스터의 2배수

• 논리연산, 비트처리 명령어

- 오퍼랜드의 각 비트에 대한 독립적인 논리연산

- A=1010 1101 B=1111 0000A=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 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

Y 2 비트 자리이동 형태TYPE : 2 비트, 자리이동 형태

RL : 1비트 left/right 방향

COUNT : k비트, 0~2k-1의

자리이동수

10한국기술교육대학교정보기술공학부 장영조

Page 11: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

9-7 부동소수점 (Floating point) 계산

가수(fraction)와 지수(exponent)로 표현- 가수(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비트 가수]부동소수 범위 + (1 2 ) x 2 + 10 [12비트 지수, 35비트 가수]

가수비트를 크게하면 정확도 증가, 지수비트를 크게하면 수의범위증가

• 산술연산

- 두수의 덧셈 및 뺄셈 : 지수를 같게하기 위해 radix point 위치 정렬 필요

5372400 x 102 5372400 x 102.5372400 x 102 .5372400 x 102

+ .1580000 x 10-1 + .0001580 x 102

.5373980 x 102

결과의 가수는다시 자리이동으로 정규화한다.

두수의 곱셈과 나눗셈 : di i t 정렬 불필요- 두수의 곱셈과 나눗셈 : radix point 정렬 불필요

곱셈 : 두 가수는 곱하고 지수끼리 더한후 정규화

나눗셈 : 두 가수는 나누고 지수끼리 뺀후 정규화

바이어스된 지수

가수 부호 크기방식표현- 가수 : 부호-크기방식표현

- 지수 : 초과수를 더하여 biased 지수 표현, 지수부호제거

예: 초과bias=99 경우, e=E+99 E:실제지수

E=-99 e = 0 E=+99 e=198

11

0 ~ 198의 양의 지수로 표현 지수계산시 부호고려 불필요

한국기술교육대학교정보기술공학부 장영조

Page 12: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

• 표준오퍼랜드 포맷

- single precision: 32비트, FS

double precision : 64 비트, FL(floating-point long)

ADDF : floating ADD 명령어

- IEEE standard 1배 정확도 부동소수점 표현

s : 부호 1비트

23비트

f field significand 십진수f : 가수 23비트 1.f1f2…f23 형식 실제 24비트값 1.111…11 ~ 1.000…00

significand,유효자리값, 항상 정규화됨

e: 지수 8비트, 127 초과 바이어스값

유효지수범위 : -126 ~ + 127

g

100…00

010…00

000…00

1.100…00

1.010…00

1.000..00

1.50

1.25

1.00등비수열합

정규화된 수 표현 : (-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 1 f 1.00..000 2

특수수 표현

e=255, f=0 +- infinity

e=255, f=0 NaN (Not a Number), 유효하지 않은 연산

e=0, f=0 +0 -0

e=0, f=0 denormalized, 정규화된 수 보다 작은 수

12한국기술교육대학교정보기술공학부 장영조

Page 13: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

9-8 프로그램 제어 명령어- 프로그램 명령어는 메모리에 연속저장되고 한 번지씩 읽어 실행프로그램 명령어는 메모리에 연속저장되고 한 번지씩 읽어 실행

- 메모리의 주소는 PC로부터, 메모리가 읽힐때마다 자동 1 증가

- 프로그램의 실행 순서(주소)를 바꾸는 명령어 : 분기(branch) 와 점프(jump) 명령어

분기명령어 : 상대 어드레싱

점프 명령어 : 직접 간접 어드레싱점프 명령어 : 직접, 간접 어드레싱

조건명령어

조건이 만족될때 분기/점프, 유효주소를 PC에 로드

아닐때는 PC의 연속된 다음 주소 실행

skip 명령어 실행예 :skip 명령어 실행예 :

skip on C

jump addr1

ADD R1

jump 명령어보다 비효율적 2개 명령어 실행

조건이 만족하면 다음명령어 skip (PC 증가), 아니면 무조건 분기

jump 명령어보다 비효율적, 2개 명령어 실행

비교 명령어 : 두오퍼랜드의 뺄셈에 의하여 비교,

이때 레지스터, 상태비트의 변화로 조건분기를 발생

test 명령어 : 두오퍼랜드의 ANDing 결과로

레지스터 상태비트 변화로 조건분기발생레지스터, 상태비트 변화로 조건분기발생

조건명령어 : PSR 비트값을 조건으로하여 유효주소값 변경

BZ, BNZ : ALU 연산결과가 0인지 PSR의 Z 비트로 검사

BC, BNC : ALU에서의 캐리, 자리이동레지스터의 캐리

N NN 부호비트 ALU의 최상단왼쪽비트BN, BNN : 부호비트, ALU의 최상단왼쪽비트

BV, BNV : 부호화된수의 산술연산의 자리수넘침(overflow)

A-B : 부호없는두수의 뺄셈

A-B 연산기

13

상태비트 C ( 캐리 또는 borrow ), Z변화

한국기술교육대학교정보기술공학부 장영조

Page 14: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

- 부호없는수의 조건분기 명령어

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 : A >= B 의 complementA < B A > B 의 complement

A > B : 결과는 양수이고 not zero

(N xor V) + Z = 0

A <= B : A>B의 complement

프로시주어 호출과 복귀명령어

서브루틴을 실행(CALL)) 하기위해 시작하는 위치로 분기한후 서부루틴실행이 끝나면 주푸로그램으로 복귀(RET)

CALL addr1 다음명령어의 주소를 임시장소에 저장 : return 주소

LD R1 addr1을 PC에 로드LD R1 addr1을 PC에 로드

- return 주소 저장장소 : 메모리의 고정된 위치, 프로세서 레지스터, 메모리스택

스택사용시 : 연속된 call 주소를 스택에 저장, 프로그래머가 복귀 주소 관리 불필요

call SP SP-1 return PC M[SP] (LD R1 주소 )

M[SP] PC (LD R1 주소) SP SP + 1

14

M[SP] PC (LD R1 주소) SP SP + 1

PC 유효주소 (addr1)

한국기술교육대학교정보기술공학부 장영조

Page 15: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

9-9 프로그램 가로채기(Interrupt)- 정상적인 프로그램의 진행순서에서 벗어나 외부또는 내부에서 발생한 요구에 따른 서비스프로그램실행정상적인 프로그램의 진행순서에서 벗어나 외부또는 내부에서 발생한 요구에 따른 서비스프로그램실행

내부/외부에서 예측할수 없는 시점에서 발생

서비스프로그램의 주소는 하드웨어 처리로 결정

interrupt 발생시, PC외 상태레지스터값도 저장

- 가로채기발생시 해당서비스 프로그램실행전에 현재실행되는 프로그램의 실행을 완료후 복귀주소 PSR등을저가로채기발생시 해당서비스 프로그램실행전에 현재실행되는 프로그램의 실행을 완료후, 복귀주소, PSR등을저장한후서비스프로그램을 실행하고 복귀시는 저장된 레지스터값을 복원

- 컴퓨터의 2가지 동작모드 : PSR 또는 특정 비트로 결정

시스템모드 : 운영체제의 프로그램 실행시, 시스템모드 특권 명령어, 사용자는 접근불가

사용자 모드 : 사용자프로그램 실행상태, 시스템특권명령어 실행불가사용자 모드 사용자프로그램 실행상태, 시스템특권명령어 실행불가

- 가로채기 발생시 현재값 저장 하드웨어 형태

PC 값만 저장하는기능하드웨어- 가로채기서비스프로그램에서 필요레지스터 내용저장기능를 포함해야함

가로채기 발생시 필요 레지스터내용을 자동적으로 저장

alternate 레지스터 세트를 가진 형태 : 모드 세트로 두 레지스터 세트를 교대로 사용alternate 레지스터 세트를 가진 형태 : 모드 세트로 두 레지스터 세트를 교대로 사용

- 가로채기 처리 하드웨어형태

프로세서 레지스터 내용을 메모리 스택에 저장하고 서비스프로그램의 첫번째 명령어 하드웨어주소를 PC에 로드

서비스프로그램의 시작주소를 하나의 메모리 위치에 할당

가로채기 각 소스에 대하여 별도의 독립적인 주소 할당가로채기 각 소스에 대하여 별도의 독립적인 주소 할당

가로채기소스 하드웨어자체에서 서비스루틴의 주소 제공

서비스루틴으로 분기하기위한 주소를 선택하게 하드웨어 처리과정을 거치는 경우

- 가로채기 발생시 대부분, 현재 실행중인 명령어가 완료되기까지 가로채기에 응답하지 않는다.

15한국기술교육대학교정보기술공학부 장영조

Page 16: 제9장Instruction Set Architecture€¦ ·  · 2016-10-31• Assembly language : ... infix 연산자표현: (A + B) x C + ( D x E) postfix 연산자표현(RPN,ReversePolishNotation)(

- 가로채기 형태

외부가로채기, 내부가로채기, 소프트웨어 가로채기

- 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] PSRM[SP] PSR

EI 0

INTACK 1

PC IVAD

16한국기술교육대학교정보기술공학부 장영조