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 환경에서 주로 사용

 

댓글