+ 한국항공대학교 길현영 교수님의 컴퓨터구조론 과목 내용을 정리한 글입니다.
주소 지정 방식 (addressing mode)
명령어의 피연산자 필드를 사용하여, 데이터 유효 주소(effective address)를 결정하는 방식이다.
데이터 유효 주소: 메모리나 저장 장치에 실제로 유효한 데이터가 저장되어 있는 위치를 가리키는 주소
0-단계 주소 지정 방식
- 유효 주소를 확정하기 위해 연산 과정을 0번 수행한다.
- 데이터 유효 주소를 명시하지 않는다.
1-단계 주소 지정 방식
- 유효 주소를 확정하기 위해 연산 과정을 1번 수행한다.
- 피연산자 필드가 데이터 유효 주소이다.
2-단계 주소 지정 방식
- 유효 주소를 확정하기 위해 연산 과정을 2번 수행한다.
- 피연산자 필드가 데이터의 유효 주소를 가리키는 주소이다.
0-단계 주소 지정 방식
즉시 주소 지정 방식 (immediate addressing mode)
명령어 피연산자 필드에 실제 데이터가 포함된다.
- 명령어 decode시에 사용할 데이터가 바로 인출된다.
프로그램의 초기 환경 값을 세팅할 때 자주 사용된다.
- 작은 정수 데이터나, 상수같이 변경없이 쓰는 데이터에 사용된다.
장점: 레지스터 엑세스조차 없이 수행되므로 매우 빠르다.
단점: 피연산자 크기 만큼 제한된 bit 수로 표현할 수 있는 정수나 상수 등 제한적으로 사용된다.
묵시적 주소 지정 방식 (implied addressing mode)
명령어 실행에 필요한 데이터의 위치가 묵시적으로 지정되어있다. (미리 정의)
- 누산기나 스택 등 정해진 장소의 데이터를 사용한다.
ex) SHL 명령어: 누산기 내용을 좌측으로 시프트(shift)
장점: 명령어 길이가 짧고, CPU 내에서 연산을 수행한다.
단점: 컴퓨터 구조나 명령어에 따라 제한적으로 사용할 수 있다.
1-단계 주소 지정 방식
레지스터 주소 지정 방식 (register addressing mode)
(실제) 데이터는 한 레지스터에 저장되어 있고, 명령어 피연산자는 해당 레지스터의 주소를 포함한다.
레지스터 필트가 k bit일 때, 주소 지정에 사용될 수 있는 레지스터들의 수는 2^k개이다.
장점: 데이터 접근을 위한 메모리 엑세스가 없고, 피연산자 필드의 bit 수가 적어도 무방하다.
단점: CPU 내 레지스터로 데이터 저장 공간이 제한된다.
EA = R (EA: Effective address, R: 명령어 피연산자 필드가 명시하는 Register 주소)
=> 데이터 유효 주소 = 레지스터 주소
직접 주소 지정 방식 (direct addressing mode)
데이터는 메모리에 저장되어 있고, 명령어 피연산자는 해당 메모리 주소를 포함한다.
장점: 데이터 접근을 위해 한 번의 메모리 엑세스가 발생하고, 더 많은 메모리(메인 메모리) 활용이 가능하다. (이 후와 비교)
단점: 연산 코드를 제외하고 남은 bit로 메모리 주소 bit로 사용해야하므로 직접 지정할 수 있는 기억장소의 수가 제한된다. (피연산자의 크기만큼만 메모리 주소를 가리킬 수 있다. 피연산자의 크기를 늘리면, 명령어의 크기가 커진다.)
EA = A (EA: Effective address, A: 명령어 피연산자 필드가 명시하는 Memory 주소)
2-단계 주소 지정 방식
레지스터 간접 주소 지정 방식 (register-indirect addressing mode)
명령어 피연산자 필드가 가리키는 레지스터의 내용을 유효 주소로 사용한다.
1단계: 피연산자 필드에 명시된 레지스터 주소를 읽는다.
2단계: 해당 레지스터의 내용이 가리키는 주소를 사용하여 메모리에 접근한다.
EA = Reg[x] (EA: Effective address, Reg[x]: 레지스터 x의 내용)
메모리 간접 주소 지정 방식 (indirect addressing mode)
명령어 피연산자 필드가 가리키는 메모리의 내용을 유효 주소로 사용한다.
1단계: 피연산자 필드에 명시된 메모리 주소를 읽는다.
2단계: 해당 메모리의 내용이 가리키는 주소를 사용하여 메모리에 접근한다.
장점: 지정할 수 있는 메모리 주소 공간의 제약을 해결한다.
단점: 2번의 메모리 접근이 필요하다.
EA = Mem[x] (EA: Effective address, Mem[x]: 메모리 x의 내용)
변위 주소 지정 방식 (displacement addressing mode)
명령어 내 2개의 피연산자 필드를 사용하거나 1개의 레지스터를 추가 사용하여, 유효 주소를 확정한다.
- 직접 주소 지정 방식 + 레지스터 간접 주소 지정 방식
EA = Reg[x] + A (EA: Effective address, Reg[x]: 레지스터 x의 내용, A: 피연산자 필드가 명시한 메모리 주소)
베이스 - 레지스터 주소 지정 방식 (base-register addressing mode)
- 피연산자 필드 중 하나는 메모리 주소(베이스 주소)를 갖고 있는 레지스터 주소를, 다른 하나는 오프셋값으로 사용할 메모리 주소를 포함한다.
베이스 주소: 프로그램의 시작점을 가리키는 주소
오프셋 값: 베이스 주소으로부터 얼마나 떨어져 있는지
PC 상대 주소 지정 방식 (relative addressing mode)
- PC 레지스터에 메모리 주소(베이스 주소)를 포함한다.
(레지스터가 가리키는 메모리 주소는 시작점을 가리킨다.)
- 유일한 피연산자 필드는 오프셋값으로 사용할 메모리 주소를 포함한다.
'Computer Science > Computer Architecture' 카테고리의 다른 글
[Computer Architecture] picoMIPS 명령어 집합 구조 (2) | 2023.10.15 |
---|---|
[Computer Architecture] CISC & RISC (49) | 2023.10.08 |
[Computer Architecture] 명령어 집합 분류 (1) | 2023.10.06 |
[Computer Architecture] 명령어 집합 (2) (0) | 2023.09.23 |
[Computer Architecture] 명령어 집합 (1) (0) | 2023.09.22 |