Memory Mapped IO, I/O Mapped I/O
태그 :
I. I/O 장치와 I/O 주소지정방식의 종류
가. I/O 장치의 개념
- 중앙처리장치 내에서 수행할 데이터를 주기억장치 내에 기억시키는 입력동작과 수행한 결과를 주기억 장치에서 출력매체로 이동시키는 출력동작을 수행하는데 필요한 장치
나. 입출력 주소지정방식의 종류
- CPU가 입출력 포트가 사용하는 입출력 주소와 주기억장치가 사용하는 주소를 분리하는지에 따라 분류
구분 |
내용 |
Memory Mapped I/O |
주기억장치들의 일부 주소를 입출력장치에 할당하는 방법 |
I/O Mapped I/O |
I/O Interface번지와 메모리의 번지를 구별하여 지정하는 방법 |
다. I/O 제어기의 구조 및 제어를 위한 주소 할당
1) I/O제어기의 구조
2) I/O제어를 위한 필요한 주소 할당
필요 주소 |
설명 |
상태/제어 레지스터 주소 |
- 내부적으로 두 개의 레지스터로 구성되지만 주소는 하나만 지정되는 레지스터 들 - Read: I/O장치 상태와 오류 검사 결과 등을 나타내는 비트 확인 (상태 Register) - Write: CPU가 보낸 I/O 명령 단어(I/O command word)를 발송 (제어 Register) |
데이터 레지스터 주소 |
- I/O 제어기에서 데이터를 읽거나 쓰기 위한 주소 (실 데이터 통신) |
- I/O 장치를 제어하기 위해서는 각 장치마다 2개의 주소가 필요함
- 이 주소를 할당하는 방식에 따라 Memory Mapped I/O와 I/O Mapped I/O로 구분함
II. Memory Mapped I/O와 I/O Mapped I/O의 개념
가. Memory Mapped I/O의 개념
- CPU가 주기억장치에 저장된 데이터를 액세스하고 저장하기 위해 명령어를 사용하는 방식과 입출력 명령어를 사용하는 방식으로 주기억장치의 일부분을 입출력 장치용으로 공유
나. Memory Mapped I/O의 특징
- 메모리의 일부 공간을 I/O포트에 할당
- 메모리와 입출력번지 사이의 구별이 없음
- 메모리 명령으로 사용가능
- 기억장치 이용효율이 낮고 H/W가 간단
다. I/O Mapped I/O의 개념
- 주기억장치와 입출력장치가 사용하는 주소공간의 액세스방식 및 저장방식을 완전히 분리하여 각각 명령어를 사용하는 방식
라. I/O Mapped I/O의 특징
- I/O인터페이스 번지와 메모리 번지를 구별가능
- 메모리 명령과 I/O명령을 구별하여 사용
- 전체 메모리 공간을 사용한다
- 기억 장치 이용 효율이 높다 ·
- H/W가 복잡하다
III. Memory Mapped I/O와 I/O Mapped I/O 의 비교
가. 입출력장치 영역에 따른 비교
구분 |
Memory Mapped I/O |
I/O Mapped I/O |
영역 |
|
|
설명 |
주소 비트들이 10 비트인 경우 - 전체 기억 장소들의 수 = 1024 - 상위 512 개 주소: 기억장치에 할당 - 하위 512 개 주소: I/O 장치들에 할당 |
주소 비트들이 10 비트인 경우 - 기억장치 주소와 I/O 주소를 각각 1024 개씩 할당 가능 |
특징 |
- 주소 영역을 공유 하기 때문에 전체 메모리 사용하는데 제약이 있음 |
- 별도로 분리된 메모리 영역을 사용하기 때문에 기억 장치 주소공간을 효율적으로 사용가능 |
나. 명령어 관점에서의 비교
구분 |
Memory Mapped I/O |
I/O Mapped I/O |
명령어 방식 |
메모리 영역에 접근하는 방식 그대로 사용 - LOAD, STORE 명령어 사용하여 접근 가능 |
별도의 명령어를 통해 I/O에 접근 - IN/OUT 명령어 같은 별도의 명령어 사용 |
접근 예 |
- 413주소가 상태/제어 레지스터 주소이고 412주소가 데이터 레지스터 주소 인 경우
- 상태 레지스터를 Load명령어로 읽어서 확인한 후 맨 처음 비트 확인 - 프린트할 데이터를 M(기억장치)에서 읽어옴 -프린트할 데이터를 데이터레지스터에 STORE - S0H를 제어레지스터에 STORE |
- 별도 주소로 1을 상태/제어 레지스터로 0을 데이터 주소로 매핑 한 경우
- IN 명령어로 상태레지스터를 확인 - 프린트할 데이터를 M(기억장치)에서 읽어옴 - 프린트할 데이터를 데이터 레지스터에 OUT - 80H를 제어레지스터에 OUT |
특징 |
- 메모리 접근 명령어를 그대로 사용하기 때문에 프로그래밍이 간단함 |
- I/O 제어를 위해 I/O 명령어들만 이용할 수 있으므로, 프로그래밍이 불편 |
다. 하드웨어 관점에서의 비교
구분 |
Memory Mapped I/O |
I/O Mapped I/O |
구성 방식 |
별도의 하드웨어 신호 핀을 두지않고 Address Line에 따라 분기하여 하드웨어에 접근 |
프로세서의 칩셋에 별도의 신호 핀을 두어 I/O명령을 전달 |
구성 |
|
|
특징 |
- 하드웨어 구성이 간단함 - 주소나 데이터 버스를 많이 사용하게 됨 |
- 별도의 회로 설계가 필요하여 하드웨어 구성이 복잡함 |
Ⅳ. Memory Mapped I/O와 I/O Mapped I/O의 활용
구분 |
Memory Mapped I/O |
I/O Mapped I/O |
대표 프로세서 |
ARM, MIPS 등 |
X86계열 |
특징 |
- CPU내부 로직이 덜 필요하고 더 저렴하고 빠르고 쉬운 CPU가 설계 가능함 |
- 어드레싱 능력이 제한 된 CPU를 사용할 시 메모리 주소영역 전체를 사용 할 수 있음 |
고려사항 |
- 메인 메모리에 접근하는 것 보다 매핑한 장치에 접근하는 것이 느림 |
- I/O 제어를 위해 I/O 명령어들만 이용할 수 있으므로, 프로그래밍이 불편 |
사용분야 |
RISC, 임베디드 프로세서 등에서 주로 사용 |
- 범용성 넓어 입출력장치 추가/삭제가 자유로운 PC 환경에서 주로 사용 |