이번에는 명령어 세트의 주소 지정 방식을 살펴보도록 하겠습니다.
주소 지정 방식이란 CPU 가 데이터를 접근하는 방법입니다. 여러가지가 있습니다.
CPU 와 Memory 입니다.
Instruction 이 Fetch 가 되어 있기 때문에 명령어는 CPU 에 있습니다. 그리고 대부분의 데이터는 memory 에 있습니다.
이 데이터 operand 가 데이터에 있는게 아니라 명령어 안에 있는 것이 1 : immediate mode 입니다.
그리고 opcode의 연산대상이 되는 데이터가 첫번째에 있다 두번째에 있다라는 걸 명시해둔 게 2: Register 모드 입니다.
연산 대상이 되는 게 주소로 명령어 안에 있는 것을 3 : Direct memory 모드 라고 합니다 .
가리킨 레지스터 안에 실제 operand 데이터의 주소가 있는 걸 4 : Register indirect 입니다.
1에서 operand 주소를 따라가 보았는데 그게 실제 데이터가 아니라 주소를 가지고 있고 이 주소가 실제 데이터인 게 5: Indirect memory 모드입니다.
이걸 그림으로 다시 한번 보겠습니다.
instruction set 내에 operand 를 이미 가지고 있음.
operand의 주소를 가지고 있음
operand의 실제 주소가 아닌 operand 를 가리키는 주소를 가지고 있음
그림을 보면 다 이해가 되실 겁니다.
push 하고 pop 입니다.
Addressing Modes 마다 장단점이 있습니다.
Immediate : 메모리 참조 필요없음 / operand 크기가 작음
Direct : 간단/ 주소 제한적 ( 나눠쓰기 때문에)
Indirect : 단점 여러번 참조를 해야함
Register : 메모리 참조 필요없음 / 주소 제한적(레지스터 몇개 없음)
Register indirect : 단점 메모리 참조가 필요
Displacement : 주소 자유롭게 계산 가능
Immediate Addressing
Direct Addressing
Indirect Addressing
A가 가리키는게 operand가 아니라 address
Register Addressing
Register Indirect Addressing
Displacement Addressing
여기엔 세가지 타입이 있습니다.
-Relative addressing
-Base-Register addressing
-Indexing
Address field
A = base value
R = register that holds displacement
세가지 방식
(1) Relative Addressing
이름과 연관 지어서 생각해보면 옆에 무언가 있다. 즉 알아서 해준다. 제일 많이 쓰이는 것이 PC : Program Counter 입니다. 프로그램 카운터는 알아서 increment 를 해주는 특징이 있습니다. 32 비트면 4만큼 64비트면 8만큼 increment 해줍니다. 여기서는 8이기 때문에 1입니다. 알아서 increment 를 시켜주니 Relative Addressing 이라고 합니다.
(2) Base-Register Addressing
뭐가 기준 베이스를 가지고 있나요? Register 가 base address 를 가지고 있습니다. 그러면 변위 정보는 주어진 A값이 됩니다. Register 의 기준이 되는 정보를 가지고 있습니다. 변위 정보는 A 이죠.
(3) Indexed Addressing
이건 반대 입니다.
이건 언제 쓸까요?
큰 배열인 A 를 쓴다고 할때 A, A+1 ,A+2 에 접근해야합니다. 즉 Indexed Addressing 은 array 에 접근할때 용이합니다.
Combinations - Autoindexing
- Postindex : indirect 주소 값을 얻은 후 index 값을 게산
- Preindex : 인덱싱이 이전에 일어남.
Pentium Addressing Modes 를 보면 다양한 Addressing 방식이 있습니다.
여기서 Base scales index, scaled index 은 다음 그림을 보면 이해를 할 수 있습니다.
Index Register 쪽에 Scale 이 있습니다. 1, 2, 4 or 8 가 있는데 이게 무슨 뜻이냐면 +1 씩 증가 시킬거냐 아니면 32비트 단위로 증가(+4 ) 로 할 것이냐 아니면 64비트 단위로 증가(+8) 하고 싶냐를 결정하는 겁니다. 이는 배열 크기에 따라 AutoIndexing 을 할 수 있는 기능을 제공해주는겁니다.
PowerPC 의 Memory Operand 방식
-Indirect Addressing
-Indirect Indexed Addressing
Instruction Formats
opcode 와 operand 로 구성이 되는데 이 operand 가 데이터가 될 수도 있고 주소가 될 수도 있습니다.
'공부 > 컴퓨터 구조' 카테고리의 다른 글
컴퓨터구조13 Reduced Instruction Set Computers (0) | 2020.07.03 |
---|---|
컴퓨터구조12 CPU Structure and Function (0) | 2020.06.30 |
컴퓨터구조10 Instruction Sets : Characteristics and Functions (0) | 2020.06.29 |
컴퓨터구조9 Computer Arithmetic (0) | 2020.06.23 |
컴퓨터구조7 Input/Output (0) | 2020.06.22 |