제 4장 명령어 구조

Standard

명령어란?
     사용자가 원하는 연산과 오퍼랜드 그리고 처리되는 순서를 프로세서에게 지시하는 명령문


   1.명령어 구성
컴퓨터가 수행해야하는 물리적인 연산, 그명령어를 수행하는데 필요한 자료가 저장된 위치(레지스터,메모리)등을 나타내는 0과 1의 2진 코드이다.

4096 워드를 가진 기억장치에 대한 주소 할당을 위하여 최소 12비트 번지가 필요하다 따라서 16비트로 구성된 명령어 길이를 사용한다면 12비트는 번지에 그리고 나머지 4비트는 연산코드에 할당함으로써 최소한 16개의 명령어를 작성할수 있다.
이러한 명령어를 실행하면 지정된 번지의 오퍼랜드와 레지스터 사이에 마이크로 연산 들이 실행된다.
연산은 명령어의 일부로서 즉 연산 코드로 컴퓨터에게 지정된 연산을 실행하도록 하는 2진 코드이다.

2. 레지스터

컴퓨터의 중요한 차이는 컴퓨터의 중앙처리장치에 포함되어 있는 레지스터의 수 그리고 기능과 관련이 있다.

AC : accumulator register
DC : general – purpose register
MQ : multiplier – quotient register
MM : Main Memory

3. 프로세서 상태 비트

프로세서 상태 비트(플래그(flag))
연산과정에서 발생되는 상태의 정보를 보관하거나 상태를 나타내는 비트

4. 오퍼랜드 액세스

주기억장소와 레지스터 모두 액세스하는 명령어를 M-R(Memory-toRegister) 명령어 형태라 하고 주기억장소로부터 오퍼랜드를 가져와서 실행한 후 실행결과를 다시 주기억장소로 저장하는 명령어를 M-M (Memory – to – Memory)명령어 형태라 한다. 이러한 형태는 문자열을 연산하는 명령어 형태이다 레지스터로부터 오퍼랜드를 가져와서 실행한후 실행결과를 다시 레지스터로 보내는 명령어를 R-R(Register – to – Register)명령어 형태라 한다.

6. 명령어 길이

명령어를 코드하 할 때 다음과 같은 사항에 대하여 균형이 되도록 해야한다.

-가능하면 많은 레지스터와 주소 지정 형태를 포함하려고 한다.
-레지스터의 크기와 주소 지정 필드의 결정은 평균명령어 길이가 되고 또한 평균 프로그램 크기가된   다.
-파이프라인 구현에 알맞은 명령어 코드 파이프라인을 사용한다.

명령어 셋 구조
 1.오퍼랜드 저장위치에 따른 명령어 셋 구조 분류.

1.스택 구조

  산술논리 명령들을 수행하기 전에 연산에 필요한 오퍼랜드들을 스택에 저장하고 또한 연산의 결과도 스택에 저장하는 형태의 컴퓨터이다.

장점
  명령어의 길이가 짧음
  레지스터로 스택을 구현 한 경우에는 메인 메모리 밴드 폭의 이용이 효율적임
  명령어 수행 시간이 짧음
단점
  연산기능의 명령어는 스택에 기억되어 있는 데이터만 연산 가능
  일정한 순서로만 연산이 되므로 연산에 사용할 데이터를 미리 스택에 저장(push)해야 되고 데이터를 처리되 는 순서대로 기억시켜야 함

2.누산기 구조
   모든 연산 기능의 명령어 수행에 필요한 오퍼랜드들 중 하나를 누산기에 기억시키는 컴퓨터 구조이다. 중앙처리 장치 내에 있는 유일한 데이터 레지스터로 연산 명령어를 수행할 때 오퍼랜드를 기억시키는 레지스터이다.

  이와같이 누산기 컴퓨터에서는 누산기에 기억된 계산의 임시 결과를 메인 메모리에 기억시키고 , 누산기에 기억되어 있던 임시 결과가 필요할때 다시 읽어 와야 하므로 명령어 수행 시간이 길어진다.

3.범용 레지스터 컴퓨터의 구조
  범용 레지스터 컴퓨터의 구조는 중앙 처리 장치 내에 많은 수의 용도가 정해지지 않은 레지스터를 가지고 있는 컴퓨터이다.
  레지스터는 프로세서의 내부 저장형태로서 메모리 보다 빠르다.

4.오퍼랜드 수에 따른 명령어 셋 구조 분류
  초기의 컴퓨터 이후 얼마나 많은 명시된 외부 오퍼랜드 주소를 명령어에 포함할 것인가에 대해 주요한 초점이 되었다. 명확하게 적은 주소를 사용하여 보다 짧은 명령어를 구성하려고 했다. 여기서는 이러한 주소의 수 즉 오퍼랜드 수에 따른 명령어 셋 구조를 분류하여 보자.

  Ø-오퍼랜드 명령어
   O P – C O D E
   대부분 오퍼랜드 명령어는 외부에 명시된 오퍼랜드가 없으며 명령어 자체에 함축되어 있다. 이러한 명령어는 스택기반 구조로 메모리에 소프트웨어로 구현되어 있거나 CPU에 하드웨어로 구현되어 있다.


PC : 다음 명령어의 주소 저장
IR : 현재 명령어 저장
ALU : 스택으로붜 2개의 오퍼랜드를 POP하고 연산 결과를 스택에 Push한다.

1-오퍼랜드 형식


 1-오퍼랜드 컴퓨터는 누산기라 불리는 특별한 레지스터를 갖고 있다. 또한 대부분 내부적 오퍼랜드이며 다른 오퍼랜드는 메모리에 있다.


 


  2-오퍼랜드 형식

    대부분의 컴퓨터가 이용하는 형식으로 인텔의 x86구조 등이 대표적이다. 하나의 오퍼랜드는 누산기나 색인  레지스터이며 다른 하나의 오퍼랜드는 메모리에 있거나 직접자료이다.
인텔의 경우 레지스터를 사용할 수도 있다. 결과는 원시 레지스터에 저장된다.


 


3-오퍼랜드 형식


명령어 분류

  컴퓨터를 설계할 때 구조가들은 컴퓨터의 명령어 셋 구조를 조심스레 검토하고, 형태들, 데이터 형태에 따른 연산들 프로그램 실행시 이루어지는 제어의 논리적 흐름등을 참조하여 선택한다. 그리고 명령어 셋 구조를 정의한 후 명령어 형태를 지정하여 각 명령어를 표현하는 하드웨어를 결정하게 된다.

  1.연산관련 명령어

    연산을 실행하기 위한 오퍼랜드와 연산과정을 기술 해야한다. 이때 명령어는 묵시 오퍼랜드 또는 명시 오퍼랜드를 지정할수 있다. 오퍼랜드가 다른 내용의 기술 없이 연산코드에 의해 지정되는 형태를 묵시 오퍼랜드라 한다. 명시 오퍼랜드는 며령어의 연산코드 이외의 다른 필드 즉 주소필드에 그 내용을 기술한다.

 1) 산술 연산
   ADD, SUBTRACT, MULTIPLY, DIVIDE와 같은 산술연산 명령어를 제공한다. 일반적으로 조건 코드나 프로세서 상태 플래그로 연산의 결과나 과정을 표시 하도록 한다. 자리올림, 자리빌림, 오버플로, 언더플로 등으로 발생되고 그 결과를 0으로 표시한다.

  2) 논리 연산
   AND,OR,NOT,XOR등을 제공한다. 이러한 명령어 들은 다른 많은 연산을 수행하고 비트 그룹에서 특정비트들을 추출 또는 지우는 등 조건코드를 자주 셋 시킨다.

  3) 쉬프트 연산
   쉬프트 명령어는 ROTATE LEFT/RIGHT, SHIFT LEFT/RIGHT등으로 데이터의 각 비트가 좌, 우로 이동되는 명령으로 다음과 같이 구분한다.
다음은 왼쪽, 오른쪽 쉬프트 이동 과정을 보여준다.
2번째 그림은 로테이트 를 설명한다.

   4)문자와 문자열 처리 명령
    문자 명령어는 문자 정보를 처리하는 유용한 수단이다. 논리적 또는 쉬픝 명령어를 이용하여 문자열을 처리 할 수 있으나 대부분의 컴퓨터는 문자열을 처리하는 특별한 명령어 MOVE CHARACTER/STRING, COMPARE CHARACTER/STRING등을 제공하고 잇다. 문자 명령어는 바이트 기반 명령어 이다.

   메모리 액세스 명령어
    프로그램 수행동안 제어장치에 의해 주기억장소와 레지스터 사이에 정보교환이 이루어 지도록 지시하는 명령으로 일반적으로 적재와 저장으로 불린다
    LOAD는 메인메모리에서 레지스터로 정보가 이동되는 과정을 의미 하고 반대로 레지스터에서 메인메모리로 정보가 이동되는 과정을 STORE라 한다.
    LOADA와 STORE명령어들은 오퍼랜드의 크기를들면 바이트,워드,2배 워드 등을 지정한다.

  제어 명령어
    제어 기능에 다라 프로그래머가 프로그램에 의해 구체적인 제어를 지시할 수 있다.


       1) 분기 조건
               분기가 발생할 경우
               CPU는 프로그램 카운터 안에 분기-목표 주소를 배치
               분기가 발생하지 않을 경우
               CPU는 프로그램 카운터의 내용을 바꾸지 않음
        2)서브루틴- 연결 명령어
               프로시저로 분기하는 명령이 있고 프로시저로부터 반환하는 명령이다 jsr명령은 전형적인 분기 프로시저이다.

 레지스터-간접 주소 지정방식


– 명령어는 연산레지스터를 지정하고 내용은 오퍼랜드의 절대-2진 주소를 보관한다.



변위 주소 지정방식


– 전감 레지스터를 사용하여 저장된 내용을 더하여 유효주소를 생성한다.



색인 주소 지정방식


– 배열원소에 효과적으로 액세스하는데 적합한 주소지정방식으로 모든 컴퓨터들은 이러한 색인 형태를 지우너하고 있다.
간접주소 지정방식


– 간접분기주소가 123 일 때 메모리 위치 123에 보관되어 있는 주소의 명령으로 분기


 


색인-간접 주소 지정방식


– 색인주소지정방식과 간접주소지정방식을 혼합한 형태이다.


기준-변위 주소 지정방식


– 색인주소지정방식과 비슷하다. 베이스레지스터는 기준주소라고 불리는 유효주소를 보관한다. 이때 베이스레지스터는 범용레지스터에 속한다.



자동증가와 자동감소 주소 지정방식


– 메인 메모리에 스택을 구현하려는 프로그래머에게 도움을 주고, 선형구조의 원소를 순차적으로 액세스하도록 하여준다.


– 자동감소주소지정방식은 그것을 사용하기 전에 레지스터 주소를 감소시키고, 자동증가 주소지정방식은 그것을 사용한 후 주소를 증가시킨다. 


 


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다