포트 I/O 에 대한 내용이 자세하지 않아 여기저기 자료를 찾아보았습니다. 아래는 시스템 버스(어드레스 버스, 컨트롤 버스, 데이터 버스) 를 나타낸 그림입니다.
보시면 아시겠지만 I/O 어드레스가 별도 존재합니다. 입출력 장치의 컨트롤러는 시스템 버스와 연결되는데 이때 메모리 영역처럼 고유한 주소를 가지게되며 이를 I/O 어드레스라 부릅니다.(메모리 어드레스와 구분해야합니다.)
예를 들어 Port I/O 에서 0x60, 0x64 번지의 경우 키보드와 관련되지만... 메모리(램) 에서 해당 번지는 전혀 다른 공간에 위치하고 있습니다. 이와 같이 분리된 형태를 Port I/O 라고 부르며 인텔 프로세서들이 주로 사용하는 방식입니다. 반면, 메모리의 특정 공간에 I/O 주소를 매핑하여 사용하는 방식(I/O 어드레스가 가리키는 곳과 메모리 어드레스가 가리키는 곳이 동일함)을 memory mapped I/O 라고 부르며 과거 매킨토시에서 사용한 모토로라의 프로세서 및 RISC 칩에서 사용하는 방식입니다.
Port I/O
- I/O 와 Memory 가 분리되어있어 전체 메모리를 사용할 수 있다.(최근 메모리 용량이 급증하며 큰 장점은 아니다.)
- I/O 어드레스에 접근할 수 있는 별도 어셈블리 명령어가 있어(IN, OUT), 언제 I/O 가 발생하는지 소스 파악이 용이하다.
- 별도 할당된 버스를 사용하여 빠른 편이다.
Memory mapped I/O
- 단순한 구조를 가진다.
- 임베디드 시스템 구현시 용이하다.(저렴하고 쉽다)
- 주소와 데이터 버스를 많이 사용하게 되어, 매핑된 장치에 접근하는 속도가 느리다.
다음은 일반적으로 알려져있는 포트들이며 IN/OUT 명령어로 해당 주소로 접근 가능합니다.
참고: http://wiki.osdev.org/I/O_Ports
'프로그래밍 > 이론' 카테고리의 다른 글
A20 게이트 (0) | 2014.04.20 |
---|---|
x86 CPU 메모리맵 (0) | 2014.04.17 |
ArcGIS 측지기준계 (0) | 2013.07.11 |
PPP - Point to Point Protocol (0) | 2012.01.11 |
OSI 7계층 (1) | 2012.01.09 |
댓글