본문 바로가기
IT 이론/컴퓨터구조

명령어의 형식과 주소 지정방식

by 지식id 2016. 10. 8.
반응형

CPU구조는 기준에 따라 다양하게 분류될 수 있지만 명령어 처리방식을 기준으로 나누면 '단일누산기구조', '범용레지스터구조', '스택구조' 로 나눌 수 있다. 이런 분류는 명령어의 형태에 따라 나뉜다. CPU에게 있어서 명령어란 마이크로 오퍼레이션에 의해 수행되는 하나의 명령을 말한다. 명령어는 아래와 같이 4가지 형식으로 나뉜다.


명령어의 형식(구조)


1) 0-주소 구조


 연산코드(Operation code)부


명령어는 보통 연산코드(OP-code)부와 자료(Operand)부(주소부라고도 한다)로 나뉘나 0-명령어 형식에선 자료가 없고 오로지 연산코드 밖에 없다. 이런 명령어는 스택구조에서 사용된다. 우리가 알고 있는 후위식으로 된 연산대상을 하나씩 Push, Pop해가며 연산이 이루어지는 것이다. 스택머신(Stack Machine)이라고도 부른다.


 - CPU구조 : 스택구조

 - 사용 : 간단한 전자 계산기, 전자 시계 등의 소형 전자제품



2) 1-주소 구조



 연산코드(Operation code)부

 자료(Operand)부


연산 대상 중 하나면 표현하고 나머지는 누산기(AC)를 사용한다. 하나의 연산대상은 AC에 있고 나머지는 주소에 있는 번지로 주기억장치에 있는 연산대상을 찾는다. 연산의 결과는 AC에 저장된다.


 - CPU구조 : 단일누산기구조

 - 사용 : 옛날 PC, PDA, 모니터, 공학용 계산기 등 처리할 내용이 무겁지 않은 전자제품


3) 2-주소 구조


 연산코드(Operation code)부

 자료(Operand)1

 자료(Operand)2


명령어에 연산 대상 둘의 주소가 모두 저장 되어 있다. 연산 결과는 Operand1에 저장되므로 자료 중 하나는 소실된다.


 - CPU구조 : 범용레지스터 구조

 - 사용 : 일반적인 PC, 태블릿, 스마트폰 등


4) 3-주소 구조


 연산코드(Operation code)부

 자료(Operand)1 - 결과

 자료(Operand)2

 자료(Operand)3 


연산대상 두개와 연산결과를 저장 할 수 있도록 구성되어 있다. 여러개의 범용 레지스터를 가진 CPU에서 사용할 수 있다. 하나의 명령을 수행하기 위해 주기억장치에 4번이나 접근하여야 하므로 명령어 수행시간이 길어진다. 그러나 전체 프로그램 실행 시 명령어 인출을 위한 주기억장치 접근 횟수가 줄어들어 프로그램 실행 속도를 단축시킬 수 있다. 특수한 목적의 컴퓨터에서 사용된다. 자료의 소실이 없다.


 - CPU구조 : 범용 레지스터 구조

 - 사용 : 서버 등 특수목적 컴퓨터




주소지정방식


위 내용을 자세하게 읽었다면 Operand를 주소부라고도 부르고 자료부라고도 부른다고 해 놓은 말을 보았을 것이다. 이는 주소 지정방식에 따라 차이가 날 수 있는 부분이다. (Operand의 사전적 의미는 '피연산자' 이다.) 주소 지정방식은 아래와 같이 5가지로 나눌 수 있다.


1) 암시적 주소 지정방식(Implied Mode)


 - 명령 실행에 필요한 데이터의 위치를 지정하지 않고 누산기나 스택의 데이터를 묵시적으로 정하여 사용한다. 예를 들면 '피연산자의 주소가 메모리의 XXX번지에 있다.' 라고 하는게 아니라 그냥 스택의 Pop되는 데이터를, 누산기에 저장돼 있는 자료를 피연산자로 하겠다는 것이다.

 - 스택구조나 단일누산기구조와 같이 Operand가 1개인 명령어 형식에서 사용된다.



2) 즉시주소지정방식(Immediate Mode)


 - 명령어 자체에 실제 피연산자료를 내포하고 있는 방식이다. 이런 경우도 있기에 Operand를 '자료부'라고도 부르는 것이다.

 - 메모리나 다른 별도으 기억장소에 엑세스 하지 않고 CPU에서 바로 읽어서 사용하므로 속도가 빠르다.

 - 명령어에 저장되어야 하므로 길이에 제한이 있어 데이터의 값이 제한적이다.



3) 직접주소지정방식(Direct Mode)


 - 명령어의 Operand가 실제 데이터가 아닌 데이터의 주소인 경우이다.

 - 실제 데이터를 포함 하는 것보단 덜하지만 주소 또한 길이가 짧은 데이터가 아니기에 길이 제약이 있다.

 - 기억 용량이 2의 n승의 워드인 메모리 시스템에서 주소를 표현하려면 최소한 n비트를 저장할 수 있어야 한다.

 - Operand에 데이터가 저장된 레지스터 번호를 저장하면 레지스터 모드라고 한다.



4) 간접주소지정방식(Indirect Mode)


 - 명령어에 나타낼 주소가 Operand에 할당된 비트보다 클때 사용하는 방식

 - Operand의 주소가 실제 데이터가 있는 주소를 가리키는 주소이다. 주기억장치에 2번 접근해야 한다.

 - 마찬가지로 데이터가 저장된 레지스터의 번호를 지정하면 레지스터 간접 모드라고 한다.



5) 계산에 의한 주소 지정방식


 - Operand부의 주소와 특정 레지스터 값이 더해져서 유효주소를 계산한다.

 - 상대주소지정방식 : Operand + PC

 - Base Register Mode : Operand + Base Register

 - Index Register Mode : Operand + Index Register

 - 레지스터 값은 묵시적으로 정해진다. 주소의 일부만 저장하고 있으므로 약식 주소 라고도 부른다.


반응형

댓글