*해당 글은 '혼자 공부하는 컴퓨터구조 + 운영체제(강민철 지음)'을 참고하여 작성되었습니다.
*구체적인 예시와 함께 더 자세히 공부하고 싶으신 분들은 해당 책을 읽어보시기를 추천드립니다.
지난 시간까지 명령어의 구조를 배웠습니다.
명령어는 연산 코드와 오퍼랜드로 이루어져 있다고 했었죠?
그리고 직전 시간에는 오퍼랜드, 그리고 오퍼랜드에 왜 주소를 저장하는 경우가 많은지를 설명했습니다.
이번 시간에는 주소 지정 방식에 대해 알아볼 것입니다.
주소 지정 방식(Addressing Mode)이란, 오퍼랜드 필드가 데이터가 저장된 위치를 명시할 때, 연산에 사용할 데이터의 위치를 찾는 방법이라고 했었죠?
다양한 주소 지정 방식이 있는데요, 대표적인 방법 5가지를 소개드리겠습니다!
즉시 주소 지정 방식
즉시 주소 지정 방식 (Immediate Addressing Mode)이란,
연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식을 말합니다.
지난 시간에, 데이터를 직접 명시하면 데이터의 크기가 작아지는 단점이 있다고 했었죠?
하지만 메모리나 레지스터에 접근해서 데이터를 찾아오는 과정이 없기 때문에 빠르다는 장점이 있습니다.
직접 주소 지정 방식
직접 주소 지정 방식 (Direct Addressing Mode)이란,
오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식을 말합니다.
(여기서의 유효 주소는 일반적으로 메모리 주소를 말합니다.)
데이터 자체가 아닌 데이터가 저장된 위치의 주소를 가리키기 때문에,
표현할 수 있는 데이터의 크기는 해당 주소에 대한 데이터 크기만큼 커지게 되겠죠?
하지만 오퍼랜드 필드에 유효 주소를 직접적으로 명시하면, 표현할 수 있는 유효 주소의 범위에는 제한이 생기겠죠?
간접 주소 지정 방식
간접 주소 지정 방식 (Indirect Addressing Mode)이란,
유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식입니다. 조금 헷갈리나요...?
(여기서의 유효 주소는 일반적으로 메모리 주소를 말합니다. 유효 주소의 주소 또한 메모리 주소를 말합니다.)
방금 전의 직접 주소 지정 방식은, 데이터의 크기는 해당 주소에 대한 데이터 크기만큼 커지지만,
그 대신 표현할 수 있는 유효 주소의 범위는 해당 오퍼랜드 필드의 크기에 따라 제한될 수 있다고 했죠?
하지만 오퍼랜드 필드에 유효 주소의 주소를 저장하면 어떻게 될까요?
해당 주소에 대한 크기만큼, 더 넓은 범위의 유효 주소를 표현할 수 있을 것입니다.
다만, 유효 주소가 있는 주소에 접근하고, 거기 있는 유효 주소를 확인해서 실제 데이터가 저장된 주소로 다시 접근해야 합니다.
이렇게 2번의 메모리 접근이 필요하기 때문에, 앞에서 설명한 주소 지정 방식들보다 일반적으로 느립니다.
레지스터 주소 지정 방식
레지스터 주소 지정 방식 (Register Addressing Mode)이란,
연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방식입니다.
직접 주소 지정 방식과 비슷하죠?
하지만 CPU 외부의 메모리에 접근하는 것보다 CPU 내부에 있는 레지스터에 접근하는 것이 더 빠르기 때문에,
레지스터 주소 지정 방식이 직접 주소 지정 방식보다 더 빠르게 데이터에 접근할 수 있습니다.
단점도 직접 주소 지정 방식과 비슷합니다.
표현할 수 있는 레지스터의 크기가 오퍼랜드 필드의 크기에 따라 제한될 수 있다는 것이죠.
레지스터 간접 주소 지정 방식
레지스터 간접 주소 지정 방식 (Register Indirect Addressing Mode)이란,
연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방식입니다.
간접 주소 지정 방식과 비슷하지만,
간접 주소 지정 방식은 메모리에 2번 접근하는 반면, 레지스터 간접 주소 지정 방식은 메모리에 1번만 접근합니다.
때문에, 간접 주소 지정 방식보다 레지스터 간접 주소 지정 방식이 더 빠릅니다.
주소 지정 방식에 따라 오퍼랜드에 저장되는 값의 유형과 주요 특징을 간단하게 정리해보겠습니다.
- 즉시 주소 지정 방식 : 연산에 사용할 데이터
- 직접 주소 지정 방식 : 유효 주소(메모리 주소)
- 간접 주소 지정 방식 : 유효 주소의 주소
- 레지스터 주소 지정 방식 : 유효 주소(레지스터 주소)
- 레지스터 간접 주소 지정 방식 : 유효 주소(메모리 주소)를 저정한 레지스터 주소
이렇게 주소 지정 방식들에 대해 알아봤습니다!
명령어의 구조와 연산 코드, 오퍼랜드에 대해 알아보면서 이번 시간까지 왔습니다.
다음 시간부터는 컴퓨터의 핵심 부품 4가지에 알아볼 건데요,
CPU부터 차근차근 배워보도록 하겠습니다!
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조][기초] CPU - 제어장치 (2) | 2025.03.14 |
---|---|
[컴퓨터구조][기초] CPU - ALU (산술/논리 연산 장치) (1) | 2025.03.13 |
[컴퓨터구조][기초] 명령어의 구조 - 오퍼랜드 (0) | 2025.03.11 |
[컴퓨터구조][기초] 명령어의 구조 - 연산 코드 (3) | 2025.03.11 |
[컴퓨터구조][기초] 목적 파일, 실행 파일 (0) | 2025.03.10 |