컴퓨터에서 사용하는 주소 지정 방식
지난 게시물에서 살펴봤을 때
명령어에는 '연산 코드'와 '오퍼랜드'로
나뉘고, 이 중 오퍼랜드 필드에는
메모리나 레지스터 주소를 담는다는
내용을 배웠다.
이 때, 주소를 담는 이유는
명령어 길이가 한정되어 있으므로
데이터를 담는 오퍼랜드 필드의 길이 또한
한정되어 있다.
때문에 직접 데이터를 담아
사용하지 않고, 데이터가 담긴
메모리나 레지스터의 주소를 담아
오퍼랜드 필드를 효율적으로 사용한다.
즉시 주소 지정 방식
연산 코드 | 데이터 |
즉시 주소 지정 방식은
오퍼랜드 필드에 연산에 사용할 데이터를
직접 기입하는 방식이다.
명령어 안에 바로 데이터가 있으므로
연산 속도는 빠르다는 장점이 있지만,
오퍼랜드 필드의 길이가 한정되어
있으므로 표현 가능한 데이터의
크기가 작아지는 단점이 있다.
직접 주소 지정 방식
연산 코드 | 데이터가 있는 메모리 주소 |
직접 주소 지정 방식은
오퍼랜드 필드에 연산에 사용할 데이터가
위치하고 있는 메모리 주소를
기입하는 방식이다.
즉시 주소 지정 방식에 비해
오퍼랜드 필드에 작성하는 길이가 짧아져
비교적 많은 데이터를 담을 수 있다는
장점이 있지만,
여전히 오퍼랜드 필드가 부족한 방식입니다.
간접 주소 지정 방식
연산 코드 | (데이터가 있는 메모리 주소)의 메모리 주소 |
간접 주소 지정 방식은
오퍼랜드 필드에 연산에 사용할 데이터가
위치하고 있는 메모리 주소의
메모리 주소를 기입하는 방식이다.
사진에서 왼쪽 위에 보면
연산 코드와 오퍼랜드 필드가 있다.
이 때 오퍼랜드 필드에 담긴 내용은
메모리 내 위치한 데이터의 주소의
주소가 담겨있다.
"실제 데이터는 메모리 내 300번지에 위치한다.
이러한 정보를 메모리 내 200번지에 담아두었다.
오퍼랜드 필드는 위 모든 내용을 알 수 있는
200번지 주소만 담은 것이다.
명령어 입장에서 데이터를 사용하려면
오퍼랜드 필드에 있는 200번지 정보를
메모리 안에서 찾아낸 다음,
찾아낸 정보에서 알려준 300번지에 가서
실제 데이터를 꺼내오는 과정을 거친다."
이 방식은 오퍼랜드 필드에 기입하는 내용이
보다 간단해졌기 때문에
표현 가능한 유효 주소의 범위가 넓어졌다는
장점이 있지만,
메모리 안에서 정보를 찾기 위해
메모리 내부 접근을 두 번이나 하기 때문에
느리다는 단점이 있다.
레지스터 주소 지정 방식
연산 코드 | 데이터가 있는 레지스터 주소 |
레지스터 주소 지정 방식은
연산에 사용할 데이터가 있는
레지스터 주소를 직접 명시하는 방식이다.
이는 데이터가 메모리가 아닌
CPU 내부에 있는 레지스터에 있기 때문에
처리 속도가 빠르다는 장점이 있지만,
직접 주소 지정 방식과 비슷한
단점을 가지고 있다.
"여전히 오퍼랜드 필드가 부족한 방식입니다."
레지스터 간접 주소 지정 방식
연산 코드 | (데이터가 있는 메모리 주소)가 있는 레지스터 주소 |
레지스터 간접 주소 지정 방식은
연산에 사용할 데이터를 메모리에 저장하고
저장된 메모리 주소가 있는 레지스터의 주소를
오퍼랜드 필드에 기입하는 방식이다.
간접 주소 지정 방식과 비슷하게
데이터가 담긴 주소의 주소를
오퍼랜드 필드에 기입하는 방식이다.
이 때, 데이터가 담긴 주소는
메모리의 주소이고
주소는 레지스터의 주소임을 유의하자.
정리
주소 지정 방식 | 오퍼랜드 필드 내용 | 장점 | 단점 |
즉시 주소 지정 방식 | 데이터 | 빠르다 | (표현 가능한) 데이터 크기가 작다 |
직접 주소 지정 방식 | 데이터의 메모리 주소 | 데이터 크기가 커졌다 | 데이터 크기가 좀 작다 |
간접 주소 지정 방식 | 데이터의 메모리 주소의 메모리 주소 |
데이터 크기 크다 | 느리다 |
레지스터 주소 지정 방식 | 데이터의 레지스터 주소 | 빠르다 | 데이터 크기가 좀 작다 |
레지스터 간접 주소 지정 방식 | 데이터의 메모리 주소의 레지스터 주소 |
간접 주소 지정 방식보다 빠르다 |
'개인 학습 > 컴퓨터 구조' 카테고리의 다른 글
11 - 컴퓨터에서 제어장치의 입출력값 (0) | 2023.01.25 |
---|---|
10 - 컴퓨터에서 ALU의 입출력값 (0) | 2023.01.25 |
08 - 컴퓨터에서 사용되는 명령어의 구조 (0) | 2023.01.24 |
07 - 컴퓨터에서 사용되는 언어 (0) | 2023.01.24 |
06 - 컴퓨터에서의 문자 표현 (0) | 2023.01.23 |