본문 바로가기
컴퓨터 구조

명령어 세트 : 주소 지정 방식과 형식

by ash9river 2024. 3. 28.

명령어 세트 : 주소 지정 방식과 형식

주소 지정 방식(Addressing Mode)

  1. 즉시(Immediate)
    • 명령어가 operand 포함
  2. 직접(Direct)
    • 명령어 주소 = operand 위치
  3. 간접(Indirect)
    • 명령어 주소 = operand 위치를 가르키는 주소
  4. 레지스터(Registor)
    • 명령어의 주소 = 레지스터 번호
  5. 레지스터 간접(Registor Indirect)
    • 명령어의 주소 -> 레지스터 번호 -> operand 주소
  6. 변위(Displacement)
    • 여러 개의 주소 결합(덧셈)을 통한 상대주소 계산
  7. 스택(Stack)
    • CPU가 지정하는 자동 증가 주소(암묵적임)

주소 지정 방식들


기본적인 주소지정 방식들



즉시 주소지정

  • 가장 간단한 형태의 주소 지정
  • 오퍼랜드 = A (주소필드)
  • 이 방식은 상수(constant)를 정의하여 사용하거나, 변수의 초기 값을 세트하는데 사용한다.
    • 일반적으로 수는 2의 보수 형태로 저장한다.
    • 오퍼랜드 필드의 맨 좌측 비트(MSB)가 부호 비트로 사용된다.
  • 장점
    • 오퍼랜드를 인출하거나 기억장치를 참조할 필요가 없어서, 명령어 사이클에서 하나의 기억장치 사이클 또는 캐시 사이클을 줄일 수 있다.
  • 단점
    • 수의 크기가 주소필드의 크기로 제한된다.

$Instruction(word) = opcode + Address \ Field$


즉시 주소 지정

  • 명령어의 주소 필드가 오퍼랜드의 유효주소(EA)를 가지고 있다.
  • $EA = A$
    • $EA = operand$
  • 초기의 컴퓨터들에게 널리 사용되었다.
  • 한번의 기억장치 참조만 필요하며, 다른 특별한 계산은 필요 없다.
  • 주소 공간이 제한되어 있다.

간접 주소 지정

  • 주소 필드는 기억장치에 저장된 단어의 주소를 가리키도록 하고, 그 기억장치에 오퍼랜드의 주소 전체가 저장되어 있도록 하는 방식
  • $EA = (A)$
    • 괄호는 그 내용을 의미하는 것으로 해석
  • 장점
    • 단어 길이가 N이면, $2^{n}$ 개의 주소 공간을 가질 수 있다.
  • 단점
    • 명령어 실행 과정에서 두 번의 기억장치 참조들이 필요하다.
    • 두 번째는 그 주소가 지정하는 위치로부터 오퍼랜드를 가져오기 위한 것이다.
  • 간접 주소 지정의 변형으로 다단계(multilevel) 또는 연속(cascaded) 간접 주소 지정 방식
    • $EA = (...(A)...)$
    • 단점은 한 개의 오퍼랜드를 인출하기 위해서 여러 번의 기억장치 참조들이 필요하다.

레지스터 주소 지정

  • 주소 필드가 주 기억장치 주소가 아닌 레지스터(번호)를 가리킨다.
  • $EA = R$
    • $operand -> registor$
  • 장점
    • 명령어에서 주소 필드가 작아도 된다.
    • 기억장치 액세스가 필요없다.
  • 단점
    • 주소 공간이 매우 제한된다.

      만약 CPU 내의 Registor 수가 적다면,

      장점은 번호에 사용되는 비트 수가 줄어든다.

      단점은 공간이 작아진다.


레지스터 간접 주소 지정

  • 간접 주소 지정과 유사하나, 주소 필드가 기억장치와 레지스터 중에서 어느 것을 지정하냐가 다르다.
  • $EA =(R)$
  • 주소 필드에 의해 주소 공간이 제한되는 문제점은 그 필드가 주소를 가지고 있는 단어의 위치를 가르킴으로써, 해결한다.
  • 간접 주소 지정 방식보다 기억장치 액세스 횟수가 한 번 더 작다.

Memory Access 횟수 단축

Address Space ⬆ = word size


변위 주소 지정

  • 직접 주소 지정과 레지스터 간접 주소 지정의 기능들을 조합
  • $EA = A + (R)$
  • 변위 주소 지정을 사용하는 명령어는 두 개의 주소필드들을 가지며, 그들 중에서 적어도 한 필드는 실제로 명시(explicit)된다.
    • $A + (R)$ : 명시 or 묵시 = 전용 레지스터
    • 하나의 주소 필드에 포함되어있는 값(A)는 직접 사용한다.
    • 다른 주소 필드 또는 연산 코드에 따른 묵시적 참조는 레지스터를 지정하며, 그 레지스터의 내용이 A와 더해져서 유효 주소를 생성한다.
  • 가장 널리 사용되고 있는 세 가지 변위 주소 지정 방식들
    1. 상대 주소 지정(Relative Addressing)
    2. 베이스-레지스터 주소 지정(Base-Registor Addressing)
    3. 인덱싱(Indexing)

상대 주소 지정

  • 묵시적으로 참조되는 레지스터가 프로그램 카운터
    • 다음 명령어 주소가 주소 필드에 더해진다.
    • 전형적으로, 이 연산을 위하여 주소 필드는 2의 보수로 취급된다.
    • 따라서, 유효주소는 명령어의 주소를 기준으로한 상대적인 변위이다.
  • 지역성의 개념을 이용한다.
  • 대부분의 기역장치 참조들이 현재 실행되고 있는 명령어에 인접해있다면, 상대 주소 지정 방식을 이용함으로써 명령어의 주소 비트 절약 가능

$EA = A + (R)$

여기서 $(R)$ 은 PC(현재 명령어 위치)


베이스-레지스터 주소 지정

  • 참조된 레지스터는 기억 장치 주소를 가지고 있으며, 주소 필드는 그 주소로부터의 변위값을 가진다.
  • 레지스터 참조는 묵시적 or 명시적이다.
  • 기억 장치 참조는 지역성을 이용한다.
  • 세그멘테이션(Segmentation) 구현을 하는데 편리하다.

$A + (R) => Logical Address$

$(R) => Segment-Base Registor$


인덱싱

  • $Data Array(Vector)$에 주로 사용
  • 주소 필드가 주 기억장치 주소를 가리키고, 지정된 레지스터는 그 주소로부터 양의 변위값을 가지고 있다.
  • 주 용도는 반복 연산의 수행을 위한 효율적인 메커니즘 제공이다.

'컴퓨터 구조' 카테고리의 다른 글

축소 명령어 세트 컴퓨터 : RISC  (0) 2024.03.28
프로세서의 조직과 기능  (0) 2024.03.28
제 12장 명령어 세트 : 특성과 기능  (0) 2024.03.28
제 10장 컴퓨터 산술  (0) 2024.03.28
제 8장 운영 체제 지원  (0) 2024.03.28