Addressing Mode
포스트 난이도: HOO_Middle
# Effective Address
Addressing mode를 알기 위해서는 Effective address를 알아야 한다.
Addressing mode로 인해 영향을 받은 결과의 address를 우리는 Effective address라고 부른다.
한국말로는 유효 피연산자 주소라고 부르지만 바로 와닿지가 않는다.
Effective address라는 사전적 의미로 유추할 수 있듯이 컴퓨팅 과정으로부터 얻은 실질적인 주소라고 생각하면 된다.
한마디로 Addressing mode로 인해 결과적으로 얻어지는 최종 주소를 의미한다.
Effective address의 경우에는 Addressing mode 중 하나인 Direct mode일 경우에는 Instruction에 명확한 주소가 주어진다.
하지만 Indirect mode일 경우에는 Instruction에 명확한 주소가 주어지지 않는다.
왜냐하면 Direct mode일 경우 주소를 바로 보여주기 때문이다.
반면에 Indirect mode의 경우에는 Fetching 이루어지고 Direct mode처럼 바로 주소가 보이는 게 아니라 한번 더 과정을 거쳐서 최종 주소로 가게 되기 때문에 Insturciton에 최종 주소가 바로 나오지는 않는다.
따라서 Direct mode가 Indirect mode보다 더 빠르다는 점도 Effective address를 통해 알 수 있다.
# Addressing Mode
Addressing mode에는 다양한 종류의 모드들이 존재한다.
그중에서 대표적인 3가지 모드는 Immediate mode, Direct mode, Indirect mode 등이 있다.
우선 Immediate mode는 말 그대로 Instruction에 value가 바로 주어지는 경우다.
이 경우는 추가적인 operation 없이 바로 값을 받는다.
다음으로 Direct mode는 immediate mode와 달리 값을 바로 받지는 않지만 주소를 받아 operation 과정을 거쳐서 최종 value를 얻을 수 있다.
마지막으로 Indirect mode의 경우에는 최종 주소를 받는 것이 아니라 주소가 있는 위치, 즉 location에 대한 값을 Instruction이 받고 operation 과정을 거쳐서 주소 위치를 찾고 최종 value을 얻는 과정을 거친다.
한마디로 Indirect mode는 포인터와 비슷한 느낌을 가지고 있다고 생각하면 이해하기 쉽다.
# Indirect Mode를 사용한 이유
Indirect mode를 사용하면 2번의 Process를 거쳐야 하기 때문에 느릴 수밖에 없다.
그럼에도 불구하고 Indirect mode를 사용한 이유는 Direct mode가 가진 긴 명령어와 주소 공간의 한계성 때문이다.
예를 들어 정말 많은 데이터를 각 주소 공간마다 배치를 하고 명령을 통해서 이를 실행한다고 가정한다면 주소 자체 길이가 엄청 길 뿐만 아니라 주소 공간에 대한 효율성도 떨어진다.
왜냐하면 Direct mode는 각 주소를 Instruction에 주고 데이터를 가져오기 때문이다.
하지만 Indirect mode를 사용할 경우 주소에 대한 location만 가져오고 해당 Location을 기반으로 실질적으로 찾고자 하는 값의 주소를 가져온 다음 값을 가져오는 단계를 거친다.
이러한 방식으로 Memory에 특정 값의 주소를 저장하고 불러오는 것이 가능하기에 주소 공간의 효율성 증대뿐만 아니라 짧은 명령어로도 많은 작업을 수행할 수 있다.
또한 pointer 기능을 하는 Indirect mode를 사용함으로써 연속적인 데이터를 주소마다 할당한다고 했을 때 일일이 지정하는 Direct mode가 아닌 Loop을 활용하여 지정이 가능하다는 점도 Indirect mode의 장점이다.
'Computer Science' 카테고리의 다른 글
[Operating System] I/O Software Layers (0) | 2022.05.03 |
---|---|
[Operating System] Memory-mapped I/O Maps (0) | 2022.05.03 |
[Programming] Data Hazard: RAW, WAR, WAW (0) | 2022.04.13 |
[Automata] Proof Statements by using Backward [Temp] (0) | 2022.04.13 |
[Programming] Instruction Level Parallelism(ILP), Pipelining (0) | 2022.04.12 |
댓글