[전자계산기] 주소 지정 방식
주소 설계 시 고려 사항
-
주소의 효율적 표현
필요한 정보를 읽거나 저장하기 위해서는 읽을 위치나 저장 위치를 지정해 주어야 하는데 이 위치를 표현하기 위한 가장 작은 비트 수, 가장 빠른 액세스를 가능하도록 하는 방법이나 절차를 마련하는 것을 의미 -
사용의 편리성
사용자들이 주소를 사용하는 방법이 편리해야 한다는 의미 -
주소 공간과 기억 공간을 독립
여러 개의 프로그램이 데이터를 사용하는데 있어 프로그램의 변경 없이 서로 다른 시간에 데이터에 접근할 수 있도록 재배치가 가능하도록 하는 것을 의미
주소 표현 방식
- 완전 주소 : 데이터가 기억된 장소를 직접 사상시킬 수 잇는 주소
- 약식 주소 : 주소의 일부분을 생략한 주소, 계산에 의한 주소 지정, 레지스터 이용
- 생략 주소 : 주소를 구체적으로 지정하지 않는 경우, 스택, 누산기 지정시
- 데이터 자신 : 주소 표현 위치에 실제 데이터를 위치시키는 경우, 많은 비트 필요
주소 지정 방식
즉시 주소(Immediate Address)
- 명령어의 주소 부분에 실제 데이터가 들어 있는 방식으로 명령어 수행이 즉각적으로 이루어진다
- 실제 데이터를 가져오기 위해 메모리를 참조할 필요가 없다
- 명령어에 실제 데이터를 포함하고 있으므로 수행 속도는 빠르지만 Operand에 실제 데이터를 넣기 위해서는 명령어 길이에 제약이 따를 수 밖에 없다
직접 주소(Direct Address)
- 명령어의 주소(Operand) 부분에 데이터를 기억하고 있는 기억 장소의 주소를 지정하는 방식
- 실제 데이터를 가져오기 위해 메모리는 한 번만 참조하면 된다
- 단순한 대신에 융통성이 조금 떨어진다
간접 주소(Indirect Address)
- 명령어의 주소 부분이 지정하는 메모리 번지에 실제 데이터의 주소가 저장되는 방식
- 실제 데이터를 가져오기 위해 메모리를 두 번 이상 참조해야 한다
- 명령어의 길이가 짧고 제한되어 있어도 이것을 이용하여 긴 주소를 찾아갈 수 있기 때문에 주소 지정에 많은 융통성이 있다
계산에 의한 주소(Calculate Address)
오퍼랜드 부분에 있는 주소 값에 임의의 상수 값이나 레지스터에 있는 값을 더해서 유효 주소를 결정하는 방법
인덱스 주소 지정(Index Register Address)
- 명령어 오퍼랜드 부분에 있는 주소 값과 인덱스 레지스터(
IR
, Index Register)에 들어 있는 값을 더해서 실제 데이터가 들어 있는 기억 장소의 위치를 지정하게 하는 방식 - 배열 엑세스 방식에 주로 사용
상대 주소(Relative Address)
- 명령어의 오퍼랜드 부분에 있는 주소 값과 프로그램 카운터(
PC
, Program Counter)에 들어 있는 값을 더해서 실제 데이터가 들어 있는 기억 장소의 위치를 지정하게 하는 방식 - 데이터 영역의 배치와 프로그램 영역의 배치가 유사한 경우에 주로 사용
- 분기 명령에 많이 사용
기준 주소 지정(Base Register Address)
- 명령어의 오퍼랜드 부분에 있는 주소 값과 베이스 레지스터(
Base Register
)에 들어 있는 값을 더해서 실제 데이터가 들어 있는 기억 장소의 위치를 지정하게 하는 방식 - 프로그램의 재배치를 하는 경우에 상대적인 변위 지정만으로 해당 위치를 지정하기 위해 많이 사용
- 다중 프로그래밍 기법에서 주로 사용
묵시적 주소(Implied Address)
- 0-주소 명령어나 1-주소 명령어 형식포스트 이동하기에서 스택이나 누산기의 위치를 지정할 때는 명시적으로 지정하는 것이 아니라 묵시적으로 가리키게 되는데, 이 경우를 의미
레지스터 주소(Register Address)
- 명령어의 오퍼랜드에 레지스터의 위치를 지정하는 방식
주소 지정 방식 속도 비교
입출력 장치의 주소 지정 방식
주소 지정 방식 | 설명 | 장점 | 단점 |
---|---|---|---|
기억 장치 사상 방식 (Memory-Mapped) |
입출력 장치와 주기억 장치가 하나의 주소 공간을 공유해서 사용하는 방식 | 구조가 쉽고 관리하기 쉽다 | 주소가 한정되어 있어 주기억 장치 확장일 때 문제가 있다 |
분리형 입출력 방식 (I/O Mapped) |
입출력 주소와 기억 장치 주소가 각각 따로 존재하는 방식 | 기억 장치 용량이 늘어나기 때문에 더 큰 프로그램 수행이 가능 | 기억 장치 주소와 입출력 주소를 구분하기 위해서 명령어를 사용해야 한다. 명령어가 늘어나면 제어하는 장치도 늘어나야 되서 하드웨어(CPU)가 복잡해진다. |
댓글남기기