본문 바로가기
공부/컴퓨터 구조

컴퓨터구조11 Instruction Sets : Addressing Modes and Formats

by 맑은청이 2020. 6. 30.
728x90
반응형

이번에는 명령어 세트의 주소 지정 방식을 살펴보도록 하겠습니다. 

주소 지정 방식이란 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 모드입니다. 

 

 

 

 

 

 

이걸 그림으로 다시 한번 보겠습니다.

immediate mode 

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 가 데이터가 될 수도 있고 주소가 될 수도 있습니다. 

728x90
반응형