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

내용 삭제됨 내용 추가됨
잔글편집 요약 없음
잔글 →‎예
17번째 줄:
하지만 메모리 매핑 입출력은 어드레스와 데이터 버스를 무척 많이 사용하게 된다. 그래서 보통 메인 메모리에 접근하는 것보다 매핑된 장치에 접근하는 것이 더 느리다. 반면, 포트 매핑 입출력은 입출력용으로 할당된 버스를 사용할 경우 느리지 않다.
 
== ==
[[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이회로가 하게 되고, 이런 식으로 시스템의 메모리 맵이 만들어진다.
 
이렇게 만들어지는 메모리 맵은 다음과 같다.
[[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;" -->
줄 27 ⟶ 26:
{| class="wikitable"
|-
! Device장치
! Address주소 range범위<br />([[hexadecimal16진법|16진수]])
! 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인터페이스]] 참조)
 
== 불완전한 어드레스 디코딩 ==