[전자계산기구조] 주소지정방식

[전자계산기구조] 주소지정방식

유효주소 (Effective Address)

데이터가 저장된 기억장치의 실제주를 유효주소라 한다.
주어진 주소지정방식에 의해 얻어진 데이터의 기억장치 주소를 가르킨다.



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

명령어의 주소 필드의 내용이 유효 주소가 되는 방식이다.
데이터의 인출을 위해 기억장치를 한번만 접근하나,
지정할 수 있는 기억장치 주소 공간이 제한적이다.

단, 레지스터 접근 방식보다는 느리다.


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

명령어의 주소 필드에 유효주소의 주소가 저장되어 있는 방식이다.
두 번의 기억장치 접근이 필요하며 기억장치를 임의로 사용한다거나 프로그램상의 융통성을 발휘할 수 있다.
  • 실제 데이터를 가져오기 위해서는 메모리를 2번 이상 참조해야 한다.
  • 명령어의 주소(operand) 부분에 레지스터의 주소가 들어 있다.
  • 직접 주소 방식보다 속도가 느리다.
  • 명령어 내의 오퍼랜드부에 실제 데이터가 저장된 장소의 번지를 가진 기억장소의 번지를 표현함으로써, 명령의 주소필드 길이가 짧고 제한되어 있어도 긴 주소에 접근 가능한 방식이다.
  • 주소지정 방식 중 데이터를 읽어올 때 참조횟수가 가장 많은 방법이다.



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

명령어를 실행하는데 필요한 데이터의 위치가 지정되어 있지 않고, 명령어의 정의에 의해 정해져 있는 방식이다.
누산기를 사용하는 1 주소 명령이나, 스택 구조의 컴퓨터에서의 무주소 명령어도 묵시적 주소 방식에 해당한다.


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

명령어의 주소 필드에 데이터가 들어있으며, 상수의 정의나 변수 값의 초기화에 편리하다.
데이터를 얻기 위한 기억장치 접근이 필요 없으므로 
명령어 사이클에서 한 개의 기억장치 접근 사이클을 줄일 수 있으나,
사용할 수 있는 수의 크기가 주소 필드의 크기로 제한된다.

  • 가장 신속하나 자료의 길이가 제한을 받는다.


레지스터 주소 방식 (Register Mode)

CPU내에 레지스터에 데이터가 저장되어 있는 방식이다.
n비트의 주소 필드는 2^n개의 레지스터 중 하나를 사용한다.

주소 필드가 레지스터 번호를 나타내므로 비트수가 적어도 되며,
데이터 인출을 위해 기억장치를 접근할 필요가 없으나,
데이터 저장공간이 중앙처리장치 내부 레지스터들로  제한된다.

  • 오퍼랜드가 레지스터에 저장되어 있는 방식이다.


레지스터 간접 주소 방식 (Register Indirect Mode)

명령어의 주소 필드에 레지스터 번호를 나타내고,
그 레지스터의 내용이 유효주소인 방식이다.

주소를 지정할 수 있는 기억장치 영역이 확장되며,
레지스터의 길이에 따라 주소 지정 영역이 결정된다.



상대 주소 지정 방식 (Relative Address Mode)

Program Counter(PC) 값에 명령어의 주소 필드 값을 더해서 유효주소를 구하며, 분기 명령어 근처에 분기될 위치가 있는 경우 흔히 사용된다.

  • 직접 데이터에 접근할 수 없다.
  • 메모리를 효율적으로 사용할 수 있다.
  • 주소에 변위를 더해야만 한다.
  • 상대주소지정방법은 계산에 의한 주소지정 방법이다.
    따라서 직접주소지정방법에 비하면 이해하기가 어렵다.
전체 기억장치 주소가 명령어에 포함되어야 하는 일반적인 분기 명령어보다 적은 수의 비트만 있으면 되는 것이 장점이다.



인덱스 주소 지정 방식 (Indexed Addressing Mode)

명령어의 주소필드의 값과 인덱스 레지스터의 값을 더해 유효 주소를 구하며,
Array의 참조에 유용하다.

인덱스 레지스터는 인덱스 값을 저장하는 레지스터이다.



베이스 레지스터 주소 지정 방식 (Base Register Addressing Mode)

베이스 레지스터의 값과 주소 필드의 변위 값을 더해서
유효주소를 구하며 기억장치 재배치시 유용하다.



출처

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?