8086의 메모리(주 기억장치) 접근 방식에 대해서

208 views
Skip to first unread message

CCUPER

unread,
Oct 23, 2009, 3:38:50 AM10/23/09
to 어셈러브
Intel 8086 CPU의 경우 주 기억장치에서 Instruction Q로 2byte씩 읽어오는데 메모리 주소의 짝수번지를 경
계로 해서 읽어옵니다. 예를 들어
Main Memory
----------------------------
00000 B8 MOV AX,1066
00001 66
----------------------------
00002 10
00003 8E MOV DS, AX
----------------------------
00004 D8
00005 90
----------------------------
00006 90
...

다음과 같은 경우 명령어 큐에 첫번째로 B8 66이 들어옵니다.
1. B8|66|00|00|00|00
2. 66|10|8E|00|00|00
3. 10|8E|D8|90|00|00
명령어가 주 기억장치에서 팻치되는 대략적인 순서 입니다.
위에서 보았다 시피 2byte 단위로 팻치를 받습니다.

이 것뿐 아니라 명령어 실행중 간접사이클 실행시 역시 주 기억장치에서
데이터를 읽어 오는 것 역시 짝수 경계를 기준으로 읽어옵니다.
데이터가 홀수 번지에서 시작하여 짝수 번지에 걸처 있을 경우, 예를 들어 위의
MOV DS,AX 를 보면 3~4, 2~3번지를 한번 읽고 4~5번지를 또한번 읽습니다.
즉 두번 읽게 되는 겁니다. 어떻게 보면 매우 비효율적 입니다.

인텔에서는 왜 그렇게 만들었을 까요? 16bit 8086 CPU의 경우 주 기억장시에서
메모리를 읽고 쓸때 짝수 뱅크와 홀수 뱅크로 나뉘어서 관리하는 것은 알지만,
단지 이것 때문이라고는 이유가 너무 불충분하고 또한 확실하지 않습니다.

어셈러브 분들 도대체 왜!!2byte를 꼭 짝수 경계로 읽어와야 하는 걸까요?

김기오

unread,
Oct 23, 2009, 7:43:59 AM10/23/09
to 어셈러브
CPU에서 메모리까지 연결된 전선이 16개라 그렇습니다.
메모리 버스가 16비트라고도 말하는데 같은 이야기입니다.
메모리 버스의 비트가 많을 수록 한번에 많이씩 읽어오니까 좋습니다만
너무 많아도 한두바이트씩 접근할 때 여러번 읽어야되니까 많기만한다고 좋은것도 아닙니다.
8086으로 만든 컴퓨터의 회로도를 한번 찾아보세요.
진짜로 전선이 16개있는 것을 보실 수 있습니다.
참고로 요즘 8086은 모토롤라에서 맹글고 있습니다. 몇년전에는 5천원이었는데 지금은 만원이라고 들었습니다.

CCUPER

unread,
Oct 23, 2009, 8:28:22 AM10/23/09
to 어셈러브
홀수뱅크 짝수뱅크 8개씩 16개가 메모리의 디코더로 들어가는 것은 알지만
제가 궁금한것은 왜 홀수번지부터 메모리를 읽는 것은 불가능한지 그것이
궁금합니다. 2바이트씩 읽는 것은 좋은데 왜 꼭 짝수부터 읽어야 할까요?
왜 홀수부터 읽는 것은 없는 걸까요?

> > 어셈러브 분들 도대체 왜!!2byte를 꼭 짝수 경계로 읽어와야 하는 걸까요?- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -

김기오

unread,
Oct 23, 2009, 10:07:43 AM10/23/09
to 어셈러브
CPU마다 구현이 다르기때문에 ARM초기버전은 홀수번지 접근이 안되기도 합니다.
인텔은 홀수번지 접근이 되긴 하지만 그것은 짝수번지를 2번 접근해서
쪼개서 저장해주는 것입니다.

메모리 접근이 16비트 단위로 되니까 항상 2바이트씩 읽게되니까요
0번지, 2번지, 4번지... 이렇게 읽으니
결국 주소 비트에서 0번 비트는 안쓰자나요.
그래서 회로도에서 주소 버스 연결을 보면 A0번 라인이 없습니다.
CPU가 작은데 핀 하나의 공간도 아쉬우니까요 그렇게라도 핀 하나를 줄이는 것이지요.

따지고 들면 몇가지 이유가 더 있는데
가장 큰 이유는 메모리 버스 크기 단위에 따라 주소 라인이 설계되기 때문입니다.

CCUPER

unread,
Oct 23, 2009, 12:21:00 PM10/23/09
to 어셈러브
아.. 그렇군요....
기오님 감사합니다..^^

> > > - 원본 텍스트 보기 -- 원본 텍스트 숨기기 -

Reply all
Reply to author
Forward
0 new messages