명령어의구조와주소지정방식 명령어세트명령어의형식주소지정방식실제명령어의형태 이자료는김종현저 - 컴퓨터구조론 ( 생능출판사 ) 의내용을편집한것입니다.
2.4 명령어세트 (instruction set) 어떤 CPU 를위하여정의되어있는명령어들의집합 명령어세트설계를위해결정되어야할사항들 2 연산종류 (operation repertoire) CPU 가수행할연산들의수와종류및복잡도 데이터형태 (data type) 연산을수행할데이터들의형태, 데이터의길이 ( 비트수 ), 수의표현방식등 명령어형식 (instruction format) 명령어의길이, 오퍼랜드필드들의수와길이, 등 주소지정방식 (addressing mode) 오퍼랜드의주소를지정하는방식 IT 융합공학부컴퓨터구조 2
2.4.1 연산의종류 데이터전송 레지스터와레지스터간, 레지스터와기억장치간, 혹은기억장치와기억장치간에데이터를이동하는동작 3 산술연산 덧셈, 뺄셈, 곱셈및나눗셈과같은기본적인산술연산들 논리연산 데이터의각비트들간에대한 AND, OR, NOT 및 exclusive-or 연산 입출력 (I/O) CPU 와외부장치들간의데이터이동을위한동작들 프로그램제어 명령어실행순서를변경하는연산들 분기 (branch), 서브루틴호출 (subroutine call) IT 융합공학부컴퓨터구조 3
서브루틴호출을위한명령어들 4 CALL 명령어 현재의 PC 내용을스택에저장하고서브루틴의시작주소로분기하는명령어 RET 명령어 CPU 가원래실행하던프로그램으로복귀 (return) 시키는명령어 IT 융합공학부컴퓨터구조 4
CALL/RET 명령어의마이크로연산 CALL X 명령어에대한마이크로 - 연산 t 0 : MBR PC t 1 : MAR SP, PC X 5 t 2 : M[MAR] MBR, SP SP - 1 현재의 PC 내용 ( 서브루틴수행완료후에복귀할주소 ) 을 SP 가지정하는스택의최상위 (top of stack) 에저장 만약주소지정단위가바이트이고저장될 주소는 16 비트라면, SP SP 2 로변경 RET 명령어의마이크로-연산 t 0 : SP SP + 1 t 1 : MAR SP t 2 : PC M[MAR] IT 융합공학부컴퓨터구조 5
2.4.2 명령어형식 명령어의구성요소들 연산코드 (Operation Code) 6 수행될연산을지정 ( 예 : LOAD, ADD 등 ) 오퍼랜드 (Operand) 연산을수행하는데필요한데이터혹은데이터의주소 각연산은한개혹은두개의입력오퍼랜드들과한개의결과오퍼랜드를포함 데이터는 CPU 레지스터, 주기억장치, 혹은 I/O 장치에위치 다음명령어주소 (Next Instruction Address) 현재의명령어실행이완료된후에다음명령어를인출할위치지정 분기혹은호출명령어와같이실행순서를변경하는경우에필요 IT 융합공학부컴퓨터구조 6
명령어형식 7 명령어형식 (instruction format) 명령어내필드들의수와배치방식및각필드의비트수 필드 (field) 명령어의각구성요소들에소요되는비트들의그룹 명령어의길이 = 단어 (word) 길이 [ 예 ] 세개의필드들로구성된 16-비트명령어 IT 융합공학부컴퓨터구조 7
명령어형식의결정에서고려할사항들 연산코드필드길이 : 연산의개수를결정 8 [ 예 ] 4 비트 2 4 = 16 가지의연산정의가능 만약연산코드필드가 5 비트로늘어나면, 2 5 = 32 가지연산들정의가능 다른필드의길이가감소 오퍼랜드필드의길이 : 오퍼랜드의범위결정 오퍼랜드의종류에따라범위가달라짐 데이터 : 표현가능한수의범위결정 기억장치주소 : CPU 가오퍼랜드인출을위하여직접주소를지정할수있는기억장치용량결정 레지스터번호 : 데이터저장에사용될수있는레지스터의개수결정 오퍼랜드1은레지스터번호를지정하고, 오퍼랜드2는기억장치주소를지정하는경우 오퍼랜드1 : 4 비트 16 개의레지스터사용가능 오퍼랜드2 : 8 비트 기억장치의주소범위 : 0 255 번지두개의오퍼랜드들을하나로통합하여사용하는경우 오퍼랜드가 2의보수로표현되는데이터라면, 표현범위 : - 2048 + 2047 오퍼랜드가기억장치주소라면, 2 12 = 4096 개의기억장치주소들지정가능 IT 융합공학부컴퓨터구조 8
오퍼랜드의수에따른명령어분류 1- 주소명령어 (one-address instruction) 9 오퍼랜드를한개만포함하는명령어. ( 다른한오퍼랜드는묵시적으로 AC가됨 ) [ 예 ] ADD X ; AC AC + M[X] 2- 주소명령어 (two-address instruction) 두개의오퍼랜드를포함하는명령어. [ 예 ] ADD R1, R2 ; R1 R1 + R2 MOV R1, R2 ADD R1, X ; R1 R2 ; R1 R1 + M[X] 3- 주소명령어 (three-address instruction) 세개의오퍼랜드들을포함하는명령어. [ 예 ] ADD R1, R2, R3 ; R1 R2 + R3 IT 융합공학부컴퓨터구조 9
1-3 주소명령어의예 10 1- 주소명령어의예 길이가 16 비트인 1-주소명령어, 연산코드가 5 비트인경우주소지정가능한기억장치용량을결정하라주소지정가능한기억장치용량 : 2 11 = 2048 바이트 2- 주소명령어의예 16-비트 CPU에서연산코드가 5 비트, 레지스터의수는 8 개일때 (a) 두오퍼랜드들이모두레지스터번호인경우 (b) 한오퍼랜드는기억장치주소인경우 3- 주소명령어형식의예 IT 융합공학부컴퓨터구조 10
명령어형식이프로그래밍에미치는영향 ( 예 ) 11 [ 예 ] X = (A + B) x (C - D) 계산을위한어셈블리프로그램작성 아래와같은니모닉을가진명령어들을사용 ADD : 덧셈 SUB : 뺄셈 MUL : 곱셈 DIV : 나눗셈 MOV : 데이터이동 LOAD : 기억장치로부터데이터적재 STOR : 기억장치로데이터저장 IT 융합공학부컴퓨터구조 11
1-2-3 주소명령어를사용한프로그램 1- 주소명령어를사용한프로그램 2- 주소명령어를사용한프로그램 LOAD A ; AC M[A] MOV R1, A ; R1 M[A] ADD B ; AC AC + M[B] ADD R1, B ; R1 R1 + M[B] STOR T ; M[T] AC MOV R2, C ; R2 M[C] 12 LOAD C ; AC M[C] SUB D ; AC AC - M[D] SUB R2, D ; R2 R2 - M[D] MUL R1, R2 ; R1 R1 R2 MUL T ; AC AC M[T] MOV X, R1 ; M[X] R1 STOR X ; M[X] AC 프로그램의길이 = 6 단, M[A] 는기억장치 A 번지의내용, T 는기억장치내임시저장장소의주소 프로그램의길이 = 7 3- 주소명령어를사용한프로그램 ADD R1, A, B ; R1 M[A] + M[B] SUB R2, C, D ; R2 M[C] - M[D] MUL X, R1, R2 ; M[X] R1 R2 프로그램의길이 = 3 명령어의길이가증가한다명령어해독과정이복잡해진다 IT 융합공학부컴퓨터구조 12
2.4.3 주소지정방식 (addressing mode) 명령어실행에필요한오퍼랜드 ( 데이터 ) 의주소를결 정하는방식 13 기억장치주소 : 데이터가저장된기억장치의위치를지정 레지스터번호 : 데이터가저장된레지스터를지정 데이터 : 명령어의오퍼랜드필드에데이터가포함 다양한주소지정방식을사용하는이유 제한된수의명령어비트들을이용하여, 사용자 ( 프로그래머 ) 가여러 가지방법으로오퍼랜드의주소를결정하도록해줌 더큰용량의기억장치를사용할수있도록하기위함 IT 융합공학부컴퓨터구조 13
기호 14 EA : 유효주소 (Effective Address), 즉데이터가저장된기억장치의실제주소 A : 명령어내의주소필드내용 ( 오퍼랜드필드의내용이기억장치주소인경우 ) R : 명령어내의레지스터번호 ( 오퍼랜드필드의내용이레지스터번호인경우 ) (A) : 기억장치 A 번지의내용 (R) : 레지스터 R의내용 IT 융합공학부컴퓨터구조 14
주소지정방식의종류 15 직접주소지정방식 (direct addressing mode) 간접주소지정방식 (indirect addressing mode) 묵시적주소지정방식 (implied addressing mode) 즉시주소지정방식 (immediate addressing mode) 레지스터주소지정방식 (register addressing mode) 레지스터간접주소지정방식 (register-indirect addressing mode) 변위주소지정방식 (displacement addressing mode) 상대주소지정방식 (relative addressing mode) 인덱스주소지정방식 (indexed addressing mode) 베이스 - 레지스터주소지정방식 (base-register addressing mode) IT 융합공학부컴퓨터구조 15
1) 직접주소지정방식 (direct addressing mode) 16 오퍼랜드필드의내용이유효주소 (EA) 가되는방식 EA = A 장점 : 데이터인출을위하여한번의기억장치액세스만필요 단점 : 연산코드를제외하고남은비트들만주소비트로사용될수있기때문에직접지정할수있는기억장소의수가제한 IT 융합공학부컴퓨터구조 16
17 IT 융합공학부컴퓨터구조 17
[ 예제 2-6 ( 계속 )] 18 IT 융합공학부컴퓨터구조 18
2) 간접주소지정방식 (indirect addressing mode) 오퍼랜드필드에기억장치주소가저장되어있지만, 그주소가가리키는기억장소에데이터의유효주소를저장해두는방식 EA = (A) 장점 : 19 최대기억장치용량이단어의길이에의하여결정 주소지정가능한기억장치용량확장 단어길이가 n 비트라면, 최대 2 n 개의기억장소주소지정이가능 단점 실행사이클동안에두번의기억장치액세스가필요 첫번째액세스 : 주소인출 두번째액세스 : 그주소가지정하는기억장소로부터실제데이터인출 명령어형식에간접비트 (I) 필요 만약 I = 0 이면, 직접주소지정방식 만약 I = 1 이면, 간접주소지정방식 다단계 (multi-level) 간접주소지정방식 EA = ( (.. (A).. ) ) IT 융합공학부컴퓨터구조 19
20 IT 융합공학부컴퓨터구조 20
3) 묵시적주소지정방식 (implied addressing mode) 21 명령어실행에필요한데이터의위치가묵시적으로지정되는방식 [ 예 ] SHL 명령어 : 누산기의내용을좌측으로시프트 (shift) PUSH R1 명령어 : 레지스터 R1 의내용을스택에저장 장점 : 명령어길이가짧다 단점 : 종류가제한된다 IT 융합공학부컴퓨터구조 2-21
4) 즉시주소지정방식 (immediate addressing mode) 22 데이터가명령어에포함되어있는방식 ( 오퍼랜드필드의내용이연산에사용할실제데이터 ) 용도 프로그램에서레지스터나변수의초기값을어떤상수값 (constant value) 으로세트하는데사용 장점 데이터를인출하기위하여기억장치를액세스할필요가없음 단점 상수값의크기가오퍼랜드필드의비트수에의해제한됨 IT 융합공학부컴퓨터구조 2-22
5) 레지스터주소지정방식 23 연산에사용될데이터가내부레지스터에저장되어있는경우, 명령어의오퍼랜드가해당레지스터를가리키는방식 EA = R 주소지정에사용될수있는레지스터들의수 = 2 k 개 ( 단, k 는 R 필드의비트수 ) 장점 오퍼랜드필드의비트수가적어도된다데이터인출을위하여기억장치액세스가필요없다 단점 데이터가저장될수있는공간이 CPU 내부레지스터들로제한 IT 융합공학부컴퓨터구조 2-23
6) 레지스터간접주소지정방식 24 오퍼랜드필드 ( 레지스터번호 ) 가가리키는레지스터의내용을유효주소로사용하여실제데이터를인출하는방식 EA = (R) 장점 : 주소지정할수있는기억장치영역이확장 레지스터의길이 = 16 비트라면, 주소지정영역 : 2 16 = 64K 바이트레지스터의길이 = 32 비트라면, 주소지정영역 : 2 32 = 4G 바이트 IT 융합공학부컴퓨터구조 2-24
25 IT 융합공학부컴퓨터구조 2-25
7) 변위주소지정방식 (displacement addressing) 26 직접주소지정과레지스터간접주소지정방식의조합 EA = A + (R) 사용되는레지스터에따라여러종류의변위주소지정방식정의 PC 상대주소지정방식 (relative addressing mode) 인덱스레지스터 인덱스주소지정방식 (indexed addressing mode) 베이스레지스터 베이스 - 레지스터주소지정방식 (baseregister addressing mode) IT 융합공학부컴퓨터구조 26
상대주소지정방식 (relative addressing mode) 27 프로그램카운터 (PC) 를레지스터로사용 ( 주로분기명령어에서사용 ) EA = A + (PC) 단, A 는 2 의보수 A > 0 : 앞 (forward) 방향으로분기 A < 0 : 뒷 (backward) 방향으로분기 장점 전체기억장치주소가명령어에포함되어야하는일반적인분기명령어보다적은수의비트만있으면된다 단점 분기범위가오퍼랜드필드의길이에의해제한된다 IT 융합공학부컴퓨터구조 27
28 IT 융합공학부컴퓨터구조 28
인덱스주소지정방식 (indexed addressing mode) 29 인덱스레지스터의내용과변위 A 를더하여유효주소를결정 EA = (IX) + A 인덱스레지스터 (IX) : 인덱스 (index) 값을저장하는특수레지스터 [ 예 ] 데이터배열이기억장치의 500 번지부터저장되어있고, 명령어의주소필드에 500 이포함되어있을때, 인덱스레지스터의내용 (IX) = 3 이라면 데이터배열의 4 번째데이터액세스 주요용도 : 배열데이터액세스 자동인덱싱 (auto-indexing) 명령어가실행될때마다인덱스레지스터의내용이자동적으로증가혹은감소이방식이사용된명령어가실행되면아래의두연산이연속적으로수행됨 EA = (IX) + A IX IX + 1 IT 융합공학부컴퓨터구조 29
베이스 - 레지스터주소지정방식 30 베이스레지스터의내용과변위 A 를더하여유효주소를결정 EA = (BR) + A 주요용도 : 프로그램의위치 ( 변경 ) 지정에사용 [ 예 ] 다중프로그래밍 (multiprogramming) 환경에서프로그램코드및데이터를다른위치로이동시켜야할때, 분기명령어나데이터액세스명령어들의주소필드내용을바꿀필요없이, BR 의내용만변경하면된다. IT 융합공학부컴퓨터구조 30
2.4.4 실제상용프로세서들의명령어형식 31 PDP-10 프로세서 : 고정길이의명령어형식사용 단어의길이 = 36 비트, 명령어의길이 = 36 비트 연산코드 = 9 비트 최대 512 종류의연산허용 ( 실제 365 개 ) PDP-11 프로세서 : 다양한길이의명령어형식들사용 연산코드 = 4 16 비트주소개수 : 0, 1, 2 개 IT 융합공학부컴퓨터구조 31
PDP-11 의명령어형식들 32 IT 융합공학부컴퓨터구조 32
펜티엄프로세서의명령어형식 33 선형주소 (linear address: LA) : 유효주소 + 세그먼트의시작주소 ( 세그먼트의시작주소는세그먼트레지스터 (SR) 에저장 ) IT 융합공학부컴퓨터구조 33