"메모리 맵 입출력"의 두 판 사이의 차이

2,225 바이트 추가됨 ,  13년 전
편집 요약 없음
 
하지만 메모리 매핑 입출력은 어드레스와 데이터 버스를 무척 많이 사용하게 된다. 그래서 보통 메인 메모리에 접근하는 것보다 매핑된 장치에 접근하는 것이 더 느리다. 반면, 포트 매핑 입출력은 입출력용으로 할당된 버스를 사용할 경우 느리지 않다.
 
==예==
 
[[8-bit]] [[microprocessor]]로 구현된 간단한 시스템을 가정해보자. 해당 CPU는 16-bit 어드레스 라인을 가지고 있어서, 64[[kibibyte]] (KiB)의 메모리를 억세스할 수있다. 이러한 시스템에서, 어드레스 공간의 첫 32 KiB는 [[random access memory]] (RAM)에 할당되어 있고, 그 다음 16K는 [[read only memory]] (ROM)에 할당되어 있다. 그리고 나머지는 timer나 counter, video display chip, 오디오 발생 장치와 같은 다양한 장치들을 위해서 할당이 되어 있다고 하자. 연결된 장치(device)들은 자기들을 의미하는 주소에 대해서만 반응을 하고, 다른 주소들은 무시를 한다. 이런 것은 address decoding circuit이 하게 되고, 이런 식으로 시스템의 메모리 맵이 만들어진다.
 
그래서 만들어지게 되는 메모리 맵은 다음과 같을 수있다.
 
<!-- border="1" cellpadding="1" cellspacing="0" style="font-size: 85%; border: gray solid 1px; border-collapse: collapse; text-align: center; width: 100%" style="background: #ececec;" -->
 
{| class="wikitable"
|-
! Device
! Address range<br />([[hexadecimal]])
! Size
|-
!RAM
|0000 - 7FFF
|32 KiB
|-
!General purpose I/O
|8000 - 80FF
|256 bytes
|-
!Sound controller
|9000 - 90FF
|256 bytes
|-
!Video controller/text-mapped display RAM
|A000 - A7FF
|2 KiB
|-
!ROM
|C000 - FFFF
|16 KiB
|}
 
메모리 맵에 빈 공간들이 있다는 점을 주목하자. 이런 것은 흔한 일이다.
 
자 이제 비디오 컨트롤러의 네번째 레지스터가 화면의 바탕 색깔을 지정하는데 쓰인다고 가정해보자. CPU는, 일반적으로 메모리에 기록하는 명령을 이용해서, A003이라는 메모리 내의 위치에 값을 기록함으로써 배경색을 지정할 수있다. 같은 방법을 이용해서, 비디오 컨트롤러의 특별한 램 공간에 문자를 써서, 화면에 글자를 표현할 수있다. [[비트맵|비트맵 디스플레이]을 사용할 수있도록 만든 싼 [[Random Access Memory|RAM]]이 나오기 전까지는, 이런 식의 캐릭터 쎌 방식을 이용해서 디스플레이하는 것이 대종을 이루었었다. ([[Text user interface]] 참조)
 
== 불완전한 어드레스 디코딩 ==

편집

25