중앙처리장치의명령어 Prof. Jae Young Choi ( 최재영교수 ) (2015 Spring 의학진단및치료기기학 ) Prof. Jae Young Choi
스택저장장치 (1/2) 스택 (Stack) 은 CPU 내부의레지스터집합에존재하는저장장치 데이터가순차적으로저장 / 스택의길이는가변함 한번에하나의요소에만액세스가능 데이터접근방법 : 나중입력먼저출력 (LIFO: Last-In-First-Out) 스택의동작에서데이터가입력되고출력되는액세스부분을스택의 Top 이라고함 스택의 Top 에새로운요소를추가저장하는동작을 PUSH 라고함 스택의 Top 에서하나의요소를꺼내는동작을 POP 이라고함 연산과정에서 Top 에위치한요소는 POP 동작으로스택에서인출되어연산을수행하고, 연산의결과를다시스택에저장하도록 PUSH 한다. 결과데이터가저장되므로 Top 은위쪽으로이동함 스택포인터는 Top 의위치를표시하는장치로특수레지스터를이용하여자동으로처리 2
스택저장장치 (2/2) 3
컴퓨터에서마이크로프로세서유형보기 마이크로프로세서중앙처리장치를한개의칩으로구현한것 [ 그림 10-1] 제조회사에따른마이크로프로세서 4
고급언어 어셈블리프로그램의이해 C, COBOL, PASCAL, FORTRAN 저급언어 어셈블리어 기계어의비트형식이나타내는의미를심벌 (Symbol) 로표현한것으로프로그램을이해하거나작성하기가쉽다. 기계어 컴퓨터가직접해독할수있는 2 진숫자 (binary digit) 로표현한언어 컴퓨터명령어형식은기계어로표현되고, 컴퓨터는기계명령어를해독하여수행 컴퓨터에따라고유의명령형식이존재하므로기계어구조도컴퓨터에따라구성 컴퓨터명령은여러개의입출력명령, 수치및논리연산명령, 자료이동및분기명령으로구성 기계어의명령단위는어떤동작을지시하는명령코드부와동작의대상이되는데이터가어디에있는지를지시하는주소부로나눔 5
컴파일 (compile) 컴파일러 : 고급언어로작성된프로그램을기계어로변환 [ 그림 10-2] 고급언어프로그램의컴파일을통한기계어변환 6
어셈블리프로그램고급언어 : Para = 3 기계어 11000111 00000110 00000000 00000000 00000011 00000000 어셈블리어 : MOV Para, 3 어셈블리과정 7
어셈블리언어 (1/2) 8
어셈블리언어 (2/2) 9
8086 어셈블리언어의형식 DOSTART: ADD X ; X 와가산기를더하고그결과를가산기에저장 Label 부 Operation 부 Operand 부 Command 부 레이블 JUMP, LOOP 와같은순환이나반복명령에서해당레이블로프로그램카운터이동연산명령의니모닉또는어셈블러디렉티브등을기록오퍼랜드또는피연산자레지스터이름, 정수, 라벨, 연산자, 주소등을기록주석문프로그램의설명 10
어셈블리프로그램의실행과정 주소 명령어 기계코드 100 LOAD 250 1250 101 ADD 251 5251 102 STA 251 2251 103 JUMP 170 8170 [ 표 10-1] 어셈블리프로그램 기억장치 250번지에서데이터를가산기에적재기억장치 251번지의데이터와덧셈을수행결과를다시가산기에저장기억장치 251번지에그결과를저장프로그램의주소 170번지로점프 11
어셈블리프로그램의실행 Load 명령어인출과정 명령어실행 [ 그림 10-4] LOAD 명령어의동작 12
어셈블리프로그램의실행 ADD [ 그림 10-5] ADD 명령어의동작 13
어셈블리프로그램의실행 STORE [ 그림 10-6] STORE 명령어의동작 14
어셈블리프로그램의실행 JUMP [ 그림 10-7] JUMP 명령어의동작 15
명령어사이클 명령어는인출단계와실행단계로구분되고두단계를하나의사이클로수행이를명령어사이클 (instruction cycle) 이라고함인출사이클 (fetch cycle) 실행사이클 (execute cycle) 인출사이클과실행사이클이연속적으로반복 16
명령어사이클 인출사이클과실행사이클의동작은여러단계 (step) 로구성각단계에서실제수행되는동작을마이크로연산 (micro-operations) 이라고함이는명령어를실행하기위한가장기본단위의프로그램수행실행사이클 (execute cycle) 인출사이클은기억장치에서명령어를중앙처리장치로읽어오는과정 / 실행사이클은명령어가실행되는사이클 프로그램실행의계층구조 17
명령어인출사이클 18
명령어인출사이클 19
명령어실행사이클 20
명령어실행사이클 21
인터럽트 프로그램이실행중에프로세서가현재처리순서를중단시키고다른동작을수행하도록하는것 외부로부터인터럽트요구가들어오면프로세서는원래의프로그램수행을중단요구된인터럽트를위한서비스프로그램을먼저수행 인터럽트서비스루틴 (interrupt service routine : ISR) 인터럽트를처리하기위해수행하는프로그램루틴 인터럽트의예 오버플로우 (overflow), 0 에의한나누기 (division by zero) 등이발생하면프로그램이종료 22
인터럽트에의한제어이동 [ 그림 10-8] 인터럽트에의한제어이동 23
인터럽트사이클 프로세서가인터럽트요구를검사하는과정 인터럽트부사이클이포함된명령어사이클 [ 그림 10-10] 인터럽트부사이클이포함된명령어사이클의순서도 24
인터럽트사이클의마이크로연산 t0 : MBR PC t1 : MAR SP, PC ISR 시작주소 t2 : M[MAR] MBR 첫번째클럭 : PC 의내용이 MBR 로전송 PC 내용은주프로그램에서수행될다음명령어주소 두번째클럭 : SP( 스택포인터 ) 의내용이 MAR 로전송 PC 의내용은인터럽트서비스루틴의시작주소로변경스택포인터는 MBR 에저장되어있는내용을스택에저장하기위해서저장할위치를지정하기위해서사용 세번째클럭 : MBR 에저장되어있던원래 PC 의내용이스택에저장 25
인터럽트부사이클에서의데이터흐름 [ 그림 10-11] 인터럽트부사이클에서의데이터흐름 26
인터럽트가발생한경우의마이크로연산 100 LOAD 250 101 ADD 251 102 STA 251 103 JUMP 170 27
인터럽트가발생한경우의마이크로연산 [ 그림 10-12] 인터럽트요구에따른상태변화 28
다중인터럽트 인터럽트서비스루틴수행중다른인터럽트가발생인터럽트불가능 (interrupt Disabled) CPU 가인터럽트서비스루틴을처리하고있는도중에는새로운인터럽트요구가들어오더라도 CPU 가인터럽트사이클을수행하지않도록방지인터럽트는대기하게되며, 현재의인터럽트에대한처리가종료된후에발생한순서대로처리우선인터럽트 (Priority Interrupt) 인터럽트의우선순위를결정우선순위가낮은인터럽트가처리되고있는동안에우선순위가더높은인터럽트가들어오면현재의인터럽트서비스루틴의수행을중단하고새로운인터럽트를처리 29
순차적인다중인터럽트 [ 그림 10-13] 순차적인다중인터럽트처리 30
우선순위다중인터럽트 [ 그림 10-14] 우선순위다중인터럽트처리 31
우선순위다중인터럽트 다중인터럽트처리시간흐름 [ 그림 10-15] 다중인터럽트처리시간흐름 32
Section 04 명령어세트 (instruction set) CPU 가수행할동작을정의하는 2 진수코드들의집합또는명령어들의집합 기계명령어 (machine instruction) 라고도함 일반적으로어셈블리코드 (assembly code) 형태로표현 명령어세트설계를위해결정되어야할사항들 CPU 가수행할연산들의수와종류및복잡도데이터형태주소지정방법 33
명령어의구성 연산코드 (Operation Code) 오퍼랜드 (Operand) 연산코드는수행될연산을지정 ( 예 : LOAD, ADD 등 ) 오퍼랜드 (Operand) 는연산을수행하는데필요한데이터혹은데이터의주소각연산은한개혹은두개의입력오퍼랜드들과한개의결과오퍼랜드를포함명령어분류데이터처리데이터저장데이터이동 제어 명령어세트의특징 [ 그림 10-16] 명령어형식 34
오퍼랜드형태와수에따른명령어분류 오퍼랜드가주소를나타내는경우명령어분류 [ 그림 10-17] 주소수에따른명령어분류 35
1- 주소명령어 오퍼랜드를한개만포함하는명령어 [ 예 ] LOAD X ; AC M[X] X 주소하나만존재 [ 그림 10-18] 1- 주소명령어의형식 36
2-주소명령어 2개의오퍼랜드를포함하는명령어 [ 예 ] MOV X, Y ; M[X] M[Y] [ 그림 10-19] 2- 주소명령어의형식 37
3- 주소명령어 3 개의오퍼랜드를포함하는명령어 [ 예 ] ADD X, Y, Z ; M[X] M[Y] + M[Z] [ 그림 10-20] 3- 주소명령어의형식 38
명령어세트에서연산의종류 데이터전송 산술연산, 논리연산, 변환 입출력명령어, 프로그램제어이동명령어 39
데이터전송레지스터와레지스터사이에데이터를이동레지스터와기억장치사이에데이터를이동기억장치와기억장치사이에데이터를이동데이터전송명령어에는근원지오퍼랜드 (source operand) 와목적지오퍼랜드 (destination operand) 의위치가명시전송될데이터의길이와오퍼랜드의주소지정방식 (addressing mode) 등이명시 40
[ 예 ] CPU 에서읽기동작 데이터전송 주소지정방식에근거하여기억장치주소를계산, 실제주소획득 원하는데이터가캐시에있는지검사 캐시히트상태에서는원하는데이터를캐시로부터얻어서 CPU 로이동 캐시미스상태의경우, 기억장치모듈로읽기명령을전송하고기억장치로부터데이터가 CPU 로전송 41
산술연산 기본산술연산 덧셈, 뺄셈, 곱셈, 나눗셈특징적인산술연산 단일 - 오퍼랜드연산 절대값 (absolute) 연산 음수화 (negate) 연산 증가 (increment) 연산 감소 (decrement) 연산 논리연산 산술연산, 논리연산, 변환 비트들간에대한 AND, OR, NOT 및 exclusive-or 연산 변환 (Conversion) 2 진수 10 진수 42
입출력명령어, 프로그램제어이동명령어 입출력명령어 CPU 와외부장치들간의데이터이동을위한명령어분리형 I/O 특정 I/O 명령어사용기억장치 - 사상 I/O 일반적이데이터이동명령어 프로그램제어이동명령어명령어실행순서를변경하는명령어종류 분기명령어 서브루틴호출명령어 43
오퍼랜드가다음실행될명령어의주소를가지고있음 명령어내용에따라서무조건오퍼랜드의주소로이동하거나조건만족시에만이동하는형태 조건분기에서연산결과를나타내는조건코드 (condition code) zero(0) 부호 (+, -) 오버플로우플래그 분기명령어 44
다양한분기형태 [ 그림 10-23] 다양한분기형태 45
서브루틴수행과정에서스택의변화 [ 그림 10-25] 서브루틴수행과정에서스택의변화 46
명령어형식 명령어내의비트배열 명령어세트에는한가지이상의명령어형식이존재 연산코드의비트길이, 오퍼랜드의수과길이에따라명령어형식이달라질수있다. 47
명령어길이에따른명령어 기억장치와관련된명령어길이 기억장치용량과기억장치조직에의해서주소를지정하는오퍼랜드부분이영향 기억장치의용량이많은경우는주소의수가많아지므로오퍼랜드의비트수가많아져야한다버스조직 (Bus structure) 에의한명령어길이데이터를전송하는명령어의경우이에맞는명령어의길이가필요 CPU 의복잡도 (complexity) 와 CPU 의속도에의한명령어길이명령어는 CPU 가한번에읽고쓸수있는단위로수행 CPU 가한번에읽고쓸수있는비트수를단어 (Word) 단어의크기에따라서명령어의길이결정 48
명령어의종류에따른명령어형식 연산코드의종류와오퍼랜드가커지면프로그램에유리주기억장치의용량이증가, 사상기억장치의사용량이증가하면더큰기억장치영역들을주소지정가능연산코드, 오퍼랜드, 주소지정방식, 주소범위는비트들을필요로하므로명령어가더길어진다긴명령어는비효율적으로사용될가능성존재명령어종류의수와비트수에대한적절한조정필요명령어내비트들의할당에영향을주는요소들 주소지정방식의수명령어내오퍼랜드의수오퍼랜드저장에사용되는레지스터의수레지스터세트의수주소영역 (address range) 주소세분화 (address granularity) 49
가변길이명령어 명령어형식에서서로다른길이를가지는경우 길이가서로다른더많은종류의연산코드들을쉽게제공 레지스터와기억장치참조들을주소지정방식들과다양하게결합 주소지정이더욱융통적 CPU 의복잡도가증가 50
Section 05 주소지정방식 다양한주소지정방식 (addressing mode) 을사용 제한된명령어비트들을적절하게이용하여사용자 ( 혹은프로그래머 ) 로하여금여러가지방법으로오퍼랜드를지정하고더큰용량의기억장치를사용할수있도록하기위함데이터가저장된기억장치의실제주소를유효주소 (Effective Address) : EA 오퍼랜드필드가기억장치주소를나타내는경우 : A 오퍼랜드필드가레지스터번호를나타내는경우 : R 기억장치 A 번지의내용 : (A), 레지스터 R 의내용 : (R) 51
주소지정방식 직접주소지정방식 (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) 52
직접주소지정방식 오퍼랜드필드의내용이유효주소가되는방식가장일반적인개념의주소방식 EA = A 데이터인출을위해한번만기억장치에액세스연산코드를제외하고남은비트들이주소비트로사용 지정할수있는기억장소의수가제한, 많은수의주소를지정불가능 [ 그림 10-26] 직접주소지정방식 53
간접주소지정방식 오퍼랜드필드에기억장치주소가저장되어있는주소가저장 그주소가가리키는기억장소에서유효주소획득 EA = (A) 실행사이클동안두번의기억장치액세스가필요하다는단점 두번의액세스첫번째액세스는주소를읽기두번째는그주소가지정하는위치로부터실제데이터를인출 주소지정방식을표시하는간접비트 (I) 필드가필요 54
간접주소지정방식 [ 그림 10-27] 간접주소지정방식 [ 그림 10-28] 간접주소지정방식에서의간접비트필드 55
묵시적주소지정방식 명령어를실행하는데필요한데이터의위치가별도로지정되어있지않음 명령어의연산코드가내포하고있는방법을묵시적주소지정방식이라고한다 명령어길이가짧음 명령어의종류가제한 SHL 명령어 AC( 누산기 ) 의내용을좌측으로쉬프트 (shift) 시키는것 56
즉치주소지정방식 데이터가명령어에포함되어있는방식오퍼랜드필드의내용이연산에사용할실제데이터프로그램에서레지스터들이나변수의초기값을어떤상수값 (constant value) 으로세트하는데유용데이터를인출하기위하여기억장치를액세스할필요가없다상수값의크기가오퍼랜드필드의비트수에의하여제한 [ 그림 10-29] 즉치주소지정방식에서오퍼랜드필드 57
레지스터주소지정방식 연산에사용할데이터가레지스터에저장오퍼랜드부분이레지스터번호, 유효주소가레지스터번호 EA = R 오퍼랜드필드가레지스터들의번호를나타내기때문에비트수가적어도가능데이터인출을위하여기억장치에액세스할필요없음데이터가저장될수있는공간이 CPU 내부레지스터들로제한 [ 그림 10-30] 레지스터주소지정방식 58
레지스터간접주소지정방식 [ 그림 10-31] 레지스터간접주소지정방식 59
변위주소지정방식 직접주소지정방식과레지스터간접주소지정방식을조합한방식오퍼랜드필드레지스터번호필드변위값필드두오퍼랜드의조합으로유효주소가생성 [ 그림 10-32] 변위주소지정방식 60
Thank you