A20 정리

이성훈 2013.09.15 04:12 조회 수 : 1929

중간에 말 하다 꼬였는데 글로 좀 정리하는게 좋으리라 보여 짧게 정리하려 합니다.


Real mode 주소공간에서 1MB의 메모리 공간을 표현하기 위해 8086/8088 그리고 80186까지는 

segment:offset 방식으로 해결 하였습니다. 

그러나 80286이 나오면서 Protect mode가 나오게 되고 이 모드는 멀티태스킹과 가상 주소공간(최대 1GB)을

지원하게 되면서 메모리의 표현 용량이 늘어나게 됩니다.


80286이 나오기 전까진 메모리 버스는 20bit였지만 80286이 나오면서 24bit로 늘어나게 되며, 1MB보다 더 큰 16MB까지 

지원 할 수 있는 메모리 용량이 확장되게 됩니다. 


그러나 intel은 8086에서 외부 기기들의 하위 호환성을 지원하지 않아 8088에서 수정하고 출시한 경험 때문인지

80286에서는 Real mode와 Protect mode를 둘 다 지원 할 수 있도록 합니다.


Real mode는 1MB 실제 주소공간에 접근 할 수 있는 방식이고 

Protect mode는 80286이 나오면서 지원 된 방식으로 16MB 메모리에 접근 할 수 있는 방식이다. 

두 모드의 차이는 접근 할 수 있는 메모리의 범위 문제 이므로 두 모드의 경계가 되는 1MB의 표현을 결정하는

20번 메모리 버스를 on/off 함으로서 쉽게 구분 할 수 있습니다. (실제 Protect mode 진입은 제어 레지스트를 수정하여 진입)


A20은 20번 메모리 버스에 관한 gate로서 

A20 gate를 off하면 Real mode와 동일하게 1MB 이상 메모리 접근은  wrap around하게 되어 Real mode와 동일한 메모리 주소 공간을 

표현 할 수 있도록 하였고,

A20 gate를 on하면 1MB 이상 메모리 접근은 wrap around가 발생하지 않고 정상적으로 표현되어 1MB 이상의 물리 메모리에 

정상 접근 할 수 있게 되는 것입니다.

 

다음 그림은 메모리 버스에 연결 된 A20 gate의 참고 그림입니다.

a0051744_4bb2188183ee9.jpg


메모리 버스 20번을 8042 keyboard controller와 AND 게이트로 연결되어 있어 on/off에 따라 

메모리 접근이 달라지는 것을 알 수 있습니다. 

만약 off 된 상태라면 0xFFFF:0010은 0x0000:0000과 동일하게 인식 될 것입니다. 


그 외에도 A20은 Protect mode에서 반든시 on되어야 홀수 메모리도 표현이 가능 합니다.

1MB 메모리 표현 시 반드시 필요한 메모리 버스 bit에 A20이 존재하기 때문입니다. 


사족으로 A20이 존재 함으로서 80286에서는 Real mode 시 64KB 만큼 메모리를 더 사용 할 수 있습니다.

0xFFFF:0010~0xFFFF:FFFF까지 표현이 가능하기 때문이며, 실제 할당 용량은 64Kbyte - 16byte  입니다.  (1bit의 여유 때문에)

이것을 HMA(High Memory Area)라 부르며 DOS에서 이와 관련 된 파일은 himem.sys 입니다



XE Login