컴퓨터 구조 제 10 강 중앙처리장치의 명령어
학습 목차 r컴퓨터에서 마이크로 프로세서 유형보기 r어셈블리 프로그램의 이해 r인터럽트(interrupt) r명령어 세트 r주소지정 방식 컴퓨터 구조 2 10. CPU 명령어
학습 목표 r어셈블리 언어는 기계어와 일대일 대응을 하는 언어 로 그 형식과 동작을 이해한다. r인터럽트의 동작과 인터럽트 부 사이클이 포함된 명 령어 사이클을 공부한다. r명령어의 형식은 연산 코드와 오퍼랜드로 구성된다. r오퍼랜드 형태에 따라 0 ~ 3주소 명령어 프로그램 이 존재한다. r명령어 세트에서 연산의 종류를 이해한다. r명령어 형식을 결정하는 명령어 길이와 명령어 종류 의 수를 공부한다. r여러 가지 주소 지정방식을 이해한다. 컴퓨터 구조 3 10. CPU 명령어
마이크로 프로세서 컴퓨터 구조 4 10. CPU 명령어
어셈블리 프로그램의 이해 r 고급언어 r C, COBOL, PASCAL, FORTRAN r 저급언어 r 어셈블리어 r 기계어 r 컴파일러 r 고급 언어로 작성된 프로그램을 하드웨어가 인식할 수 있는 기계어로 변환 컴파일러 고급언어 프로그램 컴파일 과정 기계어 프로그램 BASIC ASSEMBLY C COBOL FORTRAN PASCAL 인터프리터 어셈블러 컴파일러 컴파일러 어셈블러 00001111 10101010 11111111 컴퓨터 구조 5 10. CPU 명령어
어셈블리 프로그램 r 고급언어 r 기계어 Para = 3 11000111 00000110 00000000 00000000 00000011 00000000 r 어셈블리어 MOV Para, 3 r 어셈블리 과정 어셈블러 어셈블리 프로그램 어셈블리 과정 기계어 프로그램 컴퓨터 구조 6 10. CPU 명령어
8086 어셈블리 언어의 형식 DOSTART: ADD X ;X 와 가산기를 더하고 그 결과를 가산기에 저장 Label 부 Operation 부 Operand 부 Command 부 r 레이블 r JUMP, LOOP와 같은 순환이나 반복 명령에서 해당 레이블로 프로그램 카운 터 이동 r 연산 r 명령의 니모닉 또는 어셈블러 디렉티브 등을 기록 r 오퍼랜드 또는 피연산자 r 레지스터 이름, 정수, 라벨, 연산자, 주소 등을 기록 r 주석문 r 프로그램의 설명 컴퓨터 구조 7 10. CPU 명령어
어셈블리 프로그램의 실행과정 주소 명령어 기계 코드 100 LOAD 250 1250 101 ADD 251 5251 102 STA 251 2251 103 JUMP 170 8170 1. 기억장치 250번지에서 데이터를 가산기에 적재 2. 기억장치 251번지의 데이터와 덧셈을 수행 3. 결과를 다시 가산기에 저장 4. 기억장치 251번지에 그 결과를 저장 5. 프로그램의 주소 170번지로 점프 컴퓨터 구조 8 10. CPU 명령어
어셈블리 프로그램의 실행과정 - Load 기억장치 CPU 레지스터 기억장치 CPU 레지스터 100 1250 0100 PC 100 1250 0101 PC 101 5251 AC 101 5251 0004 AC 102 2251 1250 IR 102 2251 1250 IR 103 8170 103 8170 250 0004 250 0004 251 0003 251 0003 단계 1 단계 2 컴퓨터 구조 9 10. CPU 명령어
어셈블리 프로그램의 실행과정 - ADD 기억장치 CPU 레지스터 기억장치 CPU 레지스터 100 1250 0101 PC 100 1250 0102 PC 101 5251 0004 AC 101 5251 0004 AC 102 2251 5251 IR 102 2251 5251 IR 103 8170 103 8170 ALU 250 0004 250 0004 4+3=7 251 0003 251 0003 단계 3 단계 4 컴퓨터 구조 10 10. CPU 명령어
어셈블리 프로그램의 실행과정 - STORE 기억장치 CPU 레지스터 기억장치 CPU 레지스터 100 1250 0102 PC 100 1250 0103 PC 101 5251 0007 AC 101 5251 0007 AC 102 2251 2251 IR 102 2251 2251 IR 103 8170 103 8170 250 0004 250 0004 251 0003 251 0007 단계 5 단계 6 컴퓨터 구조 11 10. CPU 명령어
어셈블리 프로그램의 실행과정 - JUMP 기억장치 CPU 레지스터 기억장치 CPU 레지스터 100 1250 0103 PC 100 1250 0170 PC 101 5251 0007 AC 101 5251 0007 AC 102 2251 8170 IR 102 2251 8 170 IR 103 8170 103 8170 250 0004 250 0004 251 0007 251 0007 단계 7 단계 8 컴퓨터 구조 12 10. CPU 명령어
인터럽트 (Interrupt) r인터럽트 사이클 r인터럽트 사이클의 마이크로 연산 r다중 인터럽트 컴퓨터 구조 13 10. CPU 명령어
인터럽트 r 프로그램이 실행 중에 프로세서가 현재 처리 순서를 중단시 키고 다른 동작을 수행하도록 하는 것 r 외부로부터 인터럽트 요구가 들어오면 r 프로세서는 원래의 프로그램 수행을 중단 r 요구된 인터럽트를 위한 서비스 프로그램을 먼저 수행 r 인터럽트 서비스 루틴(interrupt service routine : ISR) r 인터럽트를 처리하기 위해 수행하는 프로그램 루틴 r 결과적으로 처리 효율을 향상시키는 방법이다 r 인터럽트의 예 r 오버플로우(overflow), 0 에 의한 나누기(division by zero) 등이 발생 하면 프로그램이 종료 컴퓨터 구조 14 10. CPU 명령어
인터럽트에 의한 제어 이동 주 프로그램 인터럽트 서비스 루틴 1 2 호출 인터럽트 발생 i i+1 n-1 복귀 n 컴퓨터 구조 15 10. CPU 명령어
인터럽트 사이클 r프로세서로 하여금 인터럽트 요구가 있는지를 검사 하는 과정 시작 명령어 인출 인출사이클 인터럽트 부 사이클이 포함된 명령어 사이클 아니오 명령어 실행 인터럽트 가능? 예 인터럽트 검사 및 처리준비 실행사이클 인터럽트 사이클 종료 컴퓨터 구조 16 10. CPU 명령어
인터럽트 사이클의 마이크로 연산 t0 : MBR PC t1 : MAR SP, PC ISR 시작주소 t2 : M[MAR] MBR r 세 개의 CPU 클럭으로 구성 r 첫 번째 클럭에서는 PC의 내용이 MBR로 전송 r PC 내용은 주 프로그램에서 수행될 다음 명령어 주소 r 두 번째 클럭에서는 SP(스택 포인터)의 내용이 MAR로 전송 r PC의 내용은 인터럽트 서비스 루틴의 시작 주소로 변경 r 스택 포인터는 MBR에 저장되어 있는 내용을 스택에 저장하기 위해서 저장할 위치를 지정하기 위해서 사용 r 세 번째 클럭에서는 MBR에 저장되어 있던 원래 PC의 내용 이 스택에 저장 컴퓨터 구조 17 10. CPU 명령어
인터럽트 부사이클에서의 데이터 흐름 CPU PC MAR 기억장치 t 1 Control Unit t 2 t 0 MBR 주소 버스 데이터 버스 제어 버스 컴퓨터 구조 18 10. CPU 명령어
인터럽트가 발생한 경우의 마이크로 연산 100 LOAD 250 101 ADD 251 102 STA 251 103 JUMP 170 기억장치 CPU 레지스터 기억장치 CPU 레지스터 100 1250 0101 PC 100 1250 0650 PC 101 5251 0004 AC 101 5251 0004 AC 102 2251 1250 IR 102 2251 1250 IR 103 8170 0999 SP 103 8170 0998 SP 250 0004 250 0004 ISR 주소 251 0003 251 0007 998 998 999 999 0101 원래 PC 내용 (a) LOAD 명령어의 실행 사이클이 종료된 상태 (b) 인터럽트 사이클이 종료된 상태 컴퓨터 구조 19 10. CPU 명령어
다중 인터럽트 r 인터럽트 서비스 루틴 수행 중 다른 인터럽트가 발생 r 인터럽트 불가능(interrupt Disabled) r CPU가 인터럽트 서비스 루틴을 처리하고 있는 도중에는 새로운 인터 럽트 요구가 들어오더라도 CPU가 인터럽트 사이클을 수행하지 않도 록 방지 r 인터럽트는 대기하게 되며, 현재의 인터럽트에 대한 처리가 종료된 후에 발생한 순서대로 처리 r 우선 인터럽트(Priority Interrupt) r 인터럽트의 우선 순위를 결정 r 우선 순위가 낮은 인터럽트가 처리되고 있는 동안에 우선순위가 더 높은 인터럽트가 들어오면 현재의 인터럽트 서비스 루틴의 수행을 중 단하고 새로운 인터럽트를 처리 컴퓨터 구조 20 10. CPU 명령어
다중 인터럽트 사용자 프로그램 인터럽트 서브루틴 X 사용자 프로그램 인터럽트 서브루틴 X 인터럽트 서브루틴 Y 인터럽트 서브루틴 Y 우선순위 다중 인터럽트 사용자 프로그램 프린터 ISR 통신 ISR t = 0 t = 10 t = 15 t = 25 순차적인 다중 인터럽트 t = 45 t = 28 디스크 ISR 다중 인터럽트 처리 시간 흐름 t = 38 컴퓨터 구조 21 10. CPU 명령어
명령어 세트 r명령어 세트의 특징 r오퍼랜드 형태와 수에 따른 명령어 분류 r명령어 형식이 프로그래밍에 미치는 영향 r명령어 세트에서 연산의 종류 r명령어 형식 컴퓨터 구조 22 10. CPU 명령어
명령어 세트 (instruction set) rcpu가 수행할 동작을 정의하는 2진수 코드들의 집 합 또는 명령어들의 집합 r기계 명령어(machine instruction)라고도 함 r일반적으로 어셈블리 코드(assembly code) 형태로 표현 rcpu의 사용목적, 특성에 따라 결정 r명령어 세트 설계를 위해 결정되어야 할 사항들 r CPU가 수행할 연산들의 수와 종류 및 복잡도 등을 결정 r 데이터 형태 r 주소지정 방법 컴퓨터 구조 23 10. CPU 명령어
명령어 세트의 특징 r 명령어의 구성 r 연산 코드(Operation Code) r 오퍼랜드(Operand) r 연산 코드는 수행될 연산을 지정(예: LOAD, ADD 등) r 오퍼랜드(Operand) (Operand)는 연산을 수행하는 데 필요한 데이터 혹 은 데이터의 주소 r 각 연산은 한 개 혹은 두 개의 입력 오퍼랜드들과 한 개의 결 과 오퍼랜드를 포함 r 명령어 분류 r 데이터 처리 r 데이터 저장 r 데이터 이동 r 제어 4-비트 4-비트 8-비트 연산코드 오퍼랜드 1 오퍼랜드 2 16-비트 명령어 형식 컴퓨터 구조 24 10. CPU 명령어
오퍼랜드 형태와 수에 따른 명령어 분류 r오퍼랜드가 주소를 나타내는 경우의 명령어 분류 연산코드 주소 1 주소 2 주소 3 3-주소 명령어 형식 연산코드 주소 1 주소 2 2-주소 명령어 형식 연산코드 주소 1 1-주소 명령어 형식 연산코드 0-주소 명령어 형식 컴퓨터 구조 25 10. CPU 명령어
1-주소 명령어(1 (1-Address instruction) r 오퍼랜드를 한 개만 포함하는 명령어 r [예] LOAD X ; AC M[X] X 주소 하나만 존재 5-비트 11-비트 연산코드 기억장치 주소 컴퓨터 구조 26 10. CPU 명령어
2-주소 명령어(2 (2-Address instruction) r 2개의 오퍼랜드를 포함하는 명령어 r [예] MOV X, Y ; M[X] M[Y] 5-비트 3-비트 3-비트 5-비트 연산코드 레지스터 1 레지스터 2 (사용안됨) (a) 두개의 레지스터 오퍼랜드들을 가지는 경우 5-비트 3-비트 8-비트 연산코드 레지스터 오퍼랜드 2 (b) 한 오퍼랜드는 기억장치 주소인 경우 컴퓨터 구조 27 10. CPU 명령어
3-주소 명령어(3 (3-Address instruction) r 3개의 오퍼랜드를 포함하는 명령어 r [예] ADD X, Y, Z ; M[X] M[Y] + M[Z] 4-비트 4-비트 4-비트 4-비트 연산코드 레지스터 1 레지스터 2 레지스터 3 컴퓨터 구조 28 10. CPU 명령어
명령어 형식이 프로그래밍에 미치는 영향 r어셈블리 명령어 명령어 동작 ADD SUB MUL DIV MOV LOAD STOR 덧셈 뺄셈 곱셈 나눗셈 데이터 이동 기억장치로부터 데이터 적재 기억장치로 데이터 저장 컴퓨터 구조 29 10. CPU 명령어
1-주소 명령어를 사용한 프로그램 r X = B (C+D E-F/G) 100 LOAD F ; AC M[F] 101 DIV G 102 STOR T 103 LOAD D 104 MUL E 105 ADD C 106 SUB T 107 MUL B ; AC AC / M[G] ; M[T] AC ; AC M[D] ; AC AC * M[E] ; AC AC + M[C] ; AC AC - M[T] ; AC AC / M[B] 108 STOR X ; M[X] AC 프로그램 길이 : 9 컴퓨터 구조 30 10. CPU 명령어
2-주소 명령어를 사용한 프로그램 r X = B (C+D E-F/G) 100 MOV R1, D ; M[R1] M[D] 101 MUL R1, E ; M[R1] M[R1] * M[E] 102 MOV R2, F ; M[R2] M[F] 103 DIV R2, G 104 SUB R1, R2 105 ADD R1, C 106 MUL R1, B 107 MOV X, R1 ; M[R2] M[R2] / M[G] ; M[R1] M[R1] M[R2] ; M[R1] M[R1] + M[C] ; M[R1] M[R1] * M[B] ; M[X] M[R1] 프로그램 길이 : 8 컴퓨터 구조 31 10. CPU 명령어
3-주소 명령어를 사용한 프로그램 r X = B (C+D E-F/G) 100 MUL D, E, R1 ; M[R1] M[D] * M[E] 101 ADD C, R1, R1 102 DIV F, G, R2 103 SUB R1, R2, R1 104 MUL B, R1, X ; M[R1] M[C] + M[R1] ; M[R2] M[F] / M[G] ; M[R1] M[R1] - M[R2] ; M[X] M[B] * M[R1] 프로그램 길이 : 5 컴퓨터 구조 32 10. CPU 명령어
스택(Stack) (Stack)의 기본동작 PUSH, POP (LIFO : Last In First Out) Top I Top J J Top J K K K Top JXK L L L L M M M M Base Base Base Base (a) 시작 (b) I를 PUSH한 후 스택의 상태 (c) I를 POP 한 후 스택의 상태 (d) J와 K의 곱셈한 후 스택의 상태 컴퓨터 구조 33 10. CPU 명령어
0-주소 명령어를 사용한 프로그램 r X = B (C+D E-F/G) 100 PUSH B ; 스택에 B가 입력됨 101 PUSH C ; 스택에 C가 입력됨 102 PUSH D ; 스택에 D가 입력됨 103 PUSH E ; 스택에 E가 입력됨 104 MUL ; E와 D를 연속해서POP, 곱셈을 수행 후 결과 PUSH 105 ADD ; E*D의 결과와 C를 연속해서 POP, 덧셈 후 결과 PUSH 106 PUSH F ; 스택에 F가 입력됨 107 PUSH G ; 스택에 G가 입력됨 108 DIV ; G와 F를 연속해서 POP, 나눗셈을 수행한 후 결과 PUSH 109 SUB ; F/G와 C+E*D를 연속해서 POP, 뺄셈을 수행 후 결과 PUSH 110 MUL ; (C+D*E F/G) F/G)와 B를 연속해서 POP, 곱셈을 수행 후 결과 PUSH 111 POP ; 기억장치 X 번지에 저장하기 위해 결과를 POP 프로그램 길이 : 12 컴퓨터 구조 34 10. CPU 명령어
스택에서 0-주소 명령어 프로그램의 동작 컴퓨터 구조 35 10. CPU 명령어
명령어 세트에서 연산의 종류 r데이터 전송 r산술 연산, 논리 연산, 변환 r입출력 명령어, 프로그램 제어 이동 명령어 컴퓨터 구조 36 10. CPU 명령어
데이터 전송 r 레지스터와 레지스터 사이에 데이터를 이동 r 레지스터와 기억장치 사이에 데이터를 이동 r 기억장치와 기억장치 사이에 데이터를 이동 r 데이터 전송 명령어에는 근원지 오퍼랜드(source operand) 와 목적지 오퍼랜드 (destination operand)의 위치가 명시 r 전송될 데이터의 길이와 오퍼랜드의 주소지정 방식 (addressing mode)등이 명시 r [예] CPU에서 읽기 동작 r 주소지정 방식에 근거하여 기억장치 주소를 계산, 실제 주소 획득 r 원하는 데이터가 캐시에 있는 지 검사 r 캐시 히트상태에서는 원하는 데이터를 캐시로부터 얻어서 CPU로 이 동 r 캐시 미스상태의 경우, 기억장치 모듈로 읽기 명령을 전송하고 기억 장치로부터 데이터가 CPU로 전송 컴퓨터 구조 37 10. CPU 명령어
산술 연산, 논리 연산, 변환 r 산술 연산 r 기본산술 연산 r덧셈, 뺄셈, 곱셈, 나눗셈 r 특징적인 산술 연산 r 논리 연산 r단일-오퍼랜드 연산 r절대값(absolute) 연산 r음수화(negate) (negate)연산 r증가(increment) 연산 r감소(decrement) 연산 r 비트들 간에 대한 AND, OR, NOT 및 exclusive-or 연산 r 변환(Conversion) r 2진수 10진수 r EBCDIC 코드 ASCII 코드 컴퓨터 구조 38 10. CPU 명령어
입출력 명령어, 프로그램 제어 이동 명령어 r입출력 명령어 rcpu와 외부 장치들간의 데이터 이동을 위한 명령어 r분리형 I/O r특정 I/O 명령어 사용 r기억장치-사상 I/O r일반적이 데이터 이동 명령어 r프로그램 제어 이동 명령어 r명령어 실행 순서를 변경하는 명령어 r종류 r분기 명령어 r서브루틴 호출 명령어 컴퓨터 구조 39 10. CPU 명령어
분기 명령어 r오퍼랜드가 다음 실행될 명령어의 주소를 가지고 있 음 r명령어 내용에 따라서 무조건 오퍼랜드의 주소로 이 동하거나 조건 만족 시에만 이동하는 형태 r조건 분기에서 연산 결과를 나타내는 조건 코드 (condition code) rzero(0) r부호(+, -) r오버플로우 플래그 컴퓨터 구조 40 10. CPU 명령어
다양한 분기 형태 기억장치 주소 명령어 200 201 무조건 분기 202 203 SUB X, Y BRZ 211 조건 분기 210 BR 202 211 225 BRE R1, R2, 235 조건 분기 235 컴퓨터 구조 41 10. CPU 명령어
서브루틴 호출 명령어 r r 호출 명령어(CALL 명령어)는 현재의 PC 내용을 스택에 저장하고 서브루틴의 시작 주소로 분기하는 명령어 복귀 명령어(RET 명령어) CPU가 원래 실행하던 프로그램으로 되돌아가도록 하는 명령어 t0 : MBR PC t1 : MAR SP, PC X t2 : M[MAR] MBR, SP SP 1 r r r r r r t0에서는 PC의 저장된 다음 명령어 주소가 메모리 버퍼 레지스터(MBR) (MBR)에 저장 r 서브루틴 수행 완료 후에 복귀할 주소가 저장 t1에서는 스택 포인터(SP) (SP)가 메모리 주소 레지스터(MAR) (MAR)에 저장 PC에는 실행 될 서브루틴의 시작 주소가 저장 t2에서는 MBR에 저장되어 있는 복귀 주소가 스택 포인터가 가리키는 스택의 위치에 저장 스택 포인터는 스택의 top값을 하나 감소 서브루틴을 수행 t0 : SP SP + 1 t1 : MAR SP t2 : PC M[MAR] r r r r t0에서는 스택에 저장에 되어 있는 복귀주소를 POP하기 위해서 스택 포인터를 하나 증가 t1에서는 스택 포인터를 메모리 주소 레지스터(MAR) (MAR)에 저장 t2에서는 스택에 저장되어 있는 복귀주소를 POP해서 PC에 저장 PC에 의해서 원래의 프로그램으로 복귀 컴퓨터 구조 42 10. CPU 명령어
서브루틴의 호출과 복귀 과정 기억장치 주소 200 201 주 프로그램 명령어 주 프로그램 200 201 210 CALL SUB 1 1 210 6 END 기억장치 주소 250 서브루틴 SUB1 명령어 260 CALL SUB 2 280 CALL SUB 2 서브루틴 SUB 1 250 2 3 260 280 4 5 RET 서브루틴 SUB 2 기억장치 주소 300 명령어 서브루틴 SUB 2 300 RET (a) 프로그램의 구성 (b) 제어의 흐름 컴퓨터 구조 43 10. CPU 명령어
서브루틴 수행 과정에서 스택의 변화 SP SP 261 SP SP 211 211 211 (a) 초기상태 (b) SUB 1 호출 후 (c) SUB 2 호출 후 (d) SUB 2 복귀 후 SP 281 SP 211 211 SP (e) SUB 2 호출 후 (f) SUB 2 복귀 후 (g) SUB 1 복귀 후 컴퓨터 구조 44 10. CPU 명령어
명령어 형식 r명령어 내의 비트 배열 r명령어 세트에는 한가지 이상의 명령어 형식이 존재 r연산코드의 비트 길이, 오퍼랜드의 수와 길이에 따 라 명령어 형식이 달라질 수 있다. 컴퓨터 구조 45 10. CPU 명령어
명령어 길이에 따른 명령어 형식 r 기억장치와 관련된 명령어 길이 r 기억장치 용량과 기억장치 조직에 의해서 주소를 지정하는 오퍼랜드 부분이 영향 r기억장치의 용량이 많은 경우는 주소의 수가 많아지므로 오퍼랜드 의 비트수가 많아 져야 한다 r 버스 조직(Bus structure)에 의한 명령어 길이 r 데이터를 전송하는 명령어의 경우 이에 맞는 명령어의 길이가 필요 r CPU의 복잡도(complexity) (complexity)와 CPU의 속도에 의한 명령어 길 이 r 명령어는 CPU가 한 번에 읽고 쓸 수 있는 단위로 수행 r CPU가 한 번에 읽고 쓸 수 있는 비트 수를 단어(Word) r 단어의 크기에 따라서 명령어의 길이 결정 컴퓨터 구조 46 10. CPU 명령어
명령어의 종류에 따른 명령어 형식 r 연산 코드의 종류와 오퍼랜드가 커지면 프로그램에 유리 r 주기억 장치의 용량이 증가, 가상 기억장치의 사용량이 증가 하면 더 큰 기억장치 영역들을 주소 지정 가능 r 연산 코드, 오퍼랜드, 주소지정 방식, 주소 범위는 비트들을 필요로 하므로 명령어가 더 길어진다 r 긴 명령어는 비 효율적으로 사용될 가능성 존재 r 명령어 종류의 수와 비트 수에 대한 적절한 조정 필요 r 명령어 내 비트들의 할당에 영향을 주는 요소들 r 주소지정 방식의 수 r 명령어 내 오퍼랜드의 수 r 오퍼랜드 저장에 사용되는 레지스터의 수 r 레지스터 세트의 수 r 주소 영역(address range) r 주소 세분화(address granularity) 컴퓨터 구조 47 10. CPU 명령어
가변길이 명령어 r명령어 형식에서 서로 다른 길이를 가지는 경우 r길이가 서로 다른 더 많은 종류의 연산 코드들을 쉽 게 제공 r레지스터와 기억장치 참조들을 주소 지정 방식들과 다양하게 결합 r주소 지정이 더욱 융통적 rcpu의 복잡도가 증가 컴퓨터 구조 48 10. CPU 명령어
주소지정방식 r 다양한 주소지정 방식(addressing mode)을 사용 r 제한된 명령어 비트들을 적절하게 이용하여 사용자(혹은 프로그래머)로 하여 금 여러 가지 방법으로 오퍼랜드를 지정하고 더 큰 용량의 기억장치를 사용할 수 있도록 하기 위함 r 데이터가 저장된 기억장치의 실제 주소를 유효 주소(Effective Address) : EA r 오퍼랜드 필드가 기억장치 주소를 나타내는 경우 : A r 오퍼랜드 필드가 레지스터 번호를 나타내는 경우 : R r 기억장치 A 번지의 내용 : (A), 레지스터 R의 내용 : (R) r 주소 지정방식 r 직접 주소지정 방식 (direct addressing mode) r 간접 주소지정 방식 (indirect addressing mode) r 묵시적 주소지정 방식 (implied addressing mode) r 즉치 주소지정 방식 (immediate addressing mode) r 레지스터 주소지정 방식 (register addressing mode) r 레지스터 간접 주소지정 방식 (register-indirect indirect addressing mode) r 변위 주소지정 방식 (displacement addressing mode) r상대 주소지정 방식(relative addressing mode) r인덱스 주소지정 방식(indexed addressing mode) r베이스-레지스터 주소지정 방식(base-register addressing mode) 컴퓨터 구조 49 10. CPU 명령어
직접 주소 지정 방식 r 오퍼랜드 필드의 내용이 유효 주소가 되는 방식 r 가장 일반적인 개념의 주소 방식 EA = A r 데이터 인출을 위해 한 번만 기억장치에 액세스 r 연산 코드를 제외하고 남은 비트들이 주소 비트로 사용 r 지정할 수 있는 기억장소의 수가 제한, 많은 수의 주소를 지정 불가능 연산코드 A 기억장치 EA 데이터 컴퓨터 구조 50 10. CPU 명령어
간접 주소 지정 방식 r 오퍼랜드 필드에 데이터 유효 기억장치 주소가 저장되어 있는 주소가 저 장 r 그 주소가 가리키는 기억 장소에서 유효 주소 획득 EA = (A) r 최대 기억장치용량이 CPU가 한 번에 액세스할 수 있는 단어의 길이에 의 하여 결정 r 기억장치의 구조 변경 등을 통해 확장이 가능 r 단어 길이가 n 비트라면, 최대 2 n 개의 기억장소들을 주소지정 가능 r 실행 사이클 동안 두 번의 기억장치 액세스가 필요하다는 단점 r 두 번의 액세스 r 첫 번째 액세스는 주소를 읽기 r 두 번째는 그 주소가 지정하는 위치로부터 실제 데이터를 인출 r 주소 지정 방식을 표시하는 간접비트(I) (I)필드가 필요 컴퓨터 구조 51 10. CPU 명령어
간접 주소 지정 방식 연산코드 A 기억장치 주소 EA 데이터 간접주소 지정 방식 연산코드 I 기억장치 주소 간접 주소 지정 방식에서의 간접 비트 필드 컴퓨터 구조 52 10. CPU 명령어
묵시적 주소 지정 방식 r명령어를 실행하는데 필요한 데이터의 위치가 별도 로 지정되어 있지 않음 r명령어의 연산 코드가 내포하고 있는 방법을 묵시적 주소지정 방식이라고 한다 r명령어 길이가 짧음 r명령어의 종류가 제한 r예> > SHL (shift left) 컴퓨터 구조 53 10. CPU 명령어
즉치 주소 지정 방식 r 데이터가 명령어에 포함되어 있는 방식 r 오퍼랜드 필드의 내용이 연산에 사용할 실제 데이터 r 프로그램에서 레지스터들이나 변수의 초기 값을 어떤 상수값 (constant value)으로 세트하는 데 유용 r 데이터를 인출하기 위하여 기억장치를 액세스할 필요가 없다 r 상수 값의 크기가 오퍼랜드 필드의 비트 수에 의하여 제한 연산코드 데이터 즉치 주소지정 방식에서 오퍼랜드 필드 컴퓨터 구조 54 10. CPU 명령어
레지스터 주소 지정 방식 r 연산에 사용할 데이터가 레지스터에 저장 r 오퍼랜드 부분이 레지스터 번호, 유효주소가 레지스터 번호 EA = R r 오퍼랜드의 비트수가 k비트, 주소지정에 사용될 수 있는 레지스터들의 수 2 k 개 r 오퍼랜드 필드가 레지스터들의 번호를 나타내기 때문에 비트 수가 적어도 가능 r 데이터 인출을 위하여 기억장치에 액세스 할 필요 없음 r 데이터가 저장될 수 있는 공간이 CPU 내부 레지스터들로 제한 연산코드 R 레지스터 세트 EA 주소 컴퓨터 구조 55 10. CPU 명령어
레지스터 간접 주소 지정 방식 r 이 방식은 명령어 형식에서 오퍼랜드 필드가 레지스터 번호 를 지정 r 레지스터의 내용이 유효 주소 EA = (R) r 주소를 지정 할 수 있는 기억장치 영역이 확장 r 레지스터의 길이에 따라 주소지정 영역이 결정 r 레지스터의 길이 : 16 비트 r 주소지정 영역 2 16 비트(64K 바이트) 16 비트 r 한 번의 기억장치 액세스 컴퓨터 구조 56 10. CPU 명령어
레지스터 간접 주소 지정 방식 연산코드 R 레지스터 세트 기억장치 주소 EA 데이터 컴퓨터 구조 57 10. CPU 명령어
변위(displacement) 주소 지정 방식 r 직접 주소지정 방식과 레지스터 간접 주소지정 방식을 조합 한 방식 r 오퍼랜드 필드 r 레지스터 번호필드 r 변위 값 필드 r 두 오퍼랜드의 조합으로 유효 주소가 생성 연산코드 R A 레지스터 세트 기억장치 주소 + EA 데이터 컴퓨터 구조 58 10. CPU 명령어
변위 주소 지정 방식-상대 주소 지정 방식 r 프로그램 카운터(PC) (PC)를 레지스터로 사용 r 주로 분기 명령어에서 사용 EA = A + (PC) r A는 2의 보수 r A 0 이면, 앞(forward) 방향으로 분기 r A <0 이면 후(backward) 방향으로 분기 r 전체 기억장치 주소가 명령어에 포함되어야 하는 일반적인 분기 명령 어보다 적은 수의 비트 사용 r 분기 범위가 오퍼랜드 필드의 길이에 의하여 제한 컴퓨터 구조 59 10. CPU 명령어
변위 주소 지정 방식-인덱스 주소 지정 방식 r 인덱스 레지스터의 내용과 변위 A를 더하여 유효 주소를 결정하는 방식 EA = (IX) + A r 인덱스 레지스터(IX) : 인덱스(index) 값을 저장하는 특수 레지스터 r 방식은 배열 데이터를 액세스할 때 자동 인덱싱(autoindexing) r 명령어가 실행될 때마다 인덱스 레지스터의 내용이 자동적으로 증가 혹은 감소 r 명령어가 실행되면 아래의 두 연산이 연속적으로 수행 EA = (IX) + A IX IX + 1 연산코드 R 500 기억장치 500 D(1) 0003 + 503 501 502 503 D(2) D(3) D(4) 데이터 배열 인덱스 레지스터 컴퓨터 구조 60 10. CPU 명령어
변위 주소 지정 방식 베이스-레지스터 주소지정 방식 r베이스 레지스터의 내용과 변위 A를 더하여 유효 주 소를 결정하는 방식 r서로 다른 세그먼트 내 프로그램의 위치를 지정하는 데 사용 EA = (BR) + A 컴퓨터 구조 61 10. CPU 명령어
간접 사이클 r 간접 주소지정 방식(indirect addressing mode)에서 사용되 는 명령어 부 사이클 r 명령어에 포함되어 있는 주소를 이용하여, 실제 명령어 실행 에 필요한 데이터를 인출하는 사이클 r 부 사이클은 인출 사이클과 실행 사이클 사이에 위치 인출 인터럽트 간접지정 실행 컴퓨터 구조 62 10. CPU 명령어
간접 사이클에서 수행될 마이크로-연산 t0 : MAR IR(addr) t1 : MBR M[MAR] t2 : IR(addr) MBR r인출 사이클에서 인출된 명령어가 저장된 명령어 레 지스터에서 주소필드 부분을 MAR에 저장 rmar에 저장된 주소번지의 기억장치에서 실제 주소 를 MBR에 적재 r명령어 레지스터의 주소 필드 부분에 MBR의 내용, 즉 실제 주소를 적재 컴퓨터 구조 63 10. CPU 명령어
간접 사이클에서의 데이터 흐름도 CPU MAR 기억장치 Control Unit MBR 주소 버스 데이터 버스 제어 버스 컴퓨터 구조 64 10. CPU 명령어