임베디드 레시피

Egloos | Log-in





RAM Memory의 물리적 동작

Memory 이해하면 System 이해하는데 엄청 좋아요. Memory 모르고는 System 이해 한다고 말하기 그렇죠. 모든 주변 Device들은 Memory 똑같이 Control 가능하다고 보시면 되니까요. 정확하고 자세한 Memory Control 관련해서는 Device Control System Architecture "Memory Device Control한다는 " 읽어 보시면 자세하게 나올테고요기본적인 Memory 동작에 대해서 얘기해 보죠.

 

Memory 이렇게 생겼어요.

 

Address Pin Data pin으로 구성되어 있고요, 나머지는 RD (Read), WR (Write) pin으로 구성되어 있어요. RD Memory로부터 Data 읽을 , WR Memory Data Write 사용하는 pin이고요, A[0]~ A[7] Address pin, D[0]~D[7] Data pin이에요. Address 개수가 8개니까, 2^8 가지 ( pin 마다 0 아니면 1 가질 있으니까요) Address 나타낼 있으니까요. 0~ 2^8-1 주소만큼을 Memory 처리할 있는 거지요. - 0x0~ 0xFF까지 에요, 256 Byte만큼의 크기네요 - 메모리 마다 처리할 양에 따라 Address pin 개수가 틀려요. 1MB까지 처리 있는 녀석은 Address pin 20 있으면 되겠지요. (2^20 1MB니까요)

Data 0~7까지 8bit 처리할 있네요. 한번에 Data 담을 있는 양이라고 보시면 되어요. 때도 1 Byte만큼, 읽을 때도 1 Byte 만큼을 한번에 처리할 있는 거죠. 그러니까 한번에 처리 가능한 만큼씩이니까 8 bit씩이라고 생각하시면 곤란해요.

 

, 그러면 이제 Memory 어떻게 동작하는지 한번 볼까요! 0xAB (10101011)번지의 Data Write 때의 Memory 상태는 이렇습니다요. WR 1 주고요, RD에는 0 주는 거죠. Write 꺼니까요.

 

그러면 0xAB번지를 Address pin 주고서요, 쓰고 싶은 Data 0x7C (1111100) Data pin으로 주게 되면 0xAB번지에 0x7C 써지는 거에요.

 

 

오호, 간단하죠. 그럼 반대로 읽을 때는 어떻게 할까요? 0x7C 써져 있는지 확인해 보시죠.

역시 간단해요. RD 1 주고요, WR 0으로 주고요, Address 0xAB 주게 되면,

Data pin으로 0x7C 튀어 나오게 되는 것이죠.

 

오호, 이런 거에요. Memory에는 이런 식으로 Data 저장되고, 읽어드릴 수도 있는 거죠. 여기에서 RD WR 다른 형식으로도 control 있지만, (이건 뒤쪽에 자세히! 나올 꺼에요) Address Data 관련된 ~ ~ 똑같으니까, 이것만 알아둬도, 오호! Memory 이런 거구나 하고 있을 것이라 생각하고 있어요.

  Address Bus Width가 16 bit이면 최대로 나타낼 수 있는 Memory Size는 얼마 인가요? 라는 질문에 당당하게 대답하실 수 있는 부운~? 자자, 별거 아니지요~ 일단은 Address Bus Width가 16 bit이면 2^16 만큼 Address를 표현 할 수 있겠지요? 왜냐하면 1byte당 address를 1을 차지하거든요. 그러니까 2 byte면 0x2만큼의 Address가 필요하고요, 4byte면 0x4만큼의 Address가 필요한 거에요. 자자, 그러면 얼마 인가요? 2^16만큼의 Address를 표현 하는 거지요. 즉, 64KB이죠? 아하하~ 그러면 한번에 16 bit씩 Access하는 (즉, word가 16bit씩인 System) System에서는 얼마나 큰 Address 크기를 나타낼 수 있는 걸까요? 뭐, 간단하죠. 두배 되겠지요? 한번에 2 byte씩 Access하니까 굳이 1 byte씩 표현 할 이유가 없겠지요? 그러니까 64KB를 나타 낼 수 있는 Address line에서 그런 경우라면 128KB 인거죠. 이런 configuration에서는 dataline이 16개 나와 있을 거에요~ 그렇겠지요? 이거 잘 알아 두시면 엄청 편리하죠. - 이게 더 헷갈리게 하는 거 아닌가 모르겠어요. T.T

by 히언 | 2009/05/31 21:30 | 하드웨어꼴라쥬 | 트랙백 | 핑백(2) | 덧글(10)

Linked at 친절한 임베디드 시스템 개발자.. at 2009/10/01 12:32

... ⓟ RAM Memory의 물리적 동작 ... more

Linked at 더러운 북극토끼님의 이글루입니.. at 2015/10/07 15:41

... ... more

Commented by 이진석 at 2009/06/24 13:05
마지막 알아두면 엄청 편리하다는 설명이 살짝 이해 안가는걸요.....에구
Commented by 레드락 at 2009/06/24 17:21
1byte 주소가 나타낸수 있는 주소는 64KB인데 한번에 2byte씩 읽으니까 1byte주소로 실제 128KB를 나타낼수 있다. 이런뜻이 아닐까...요?
Commented by 히언 at 2009/06/24 23:50
ㅋ 맞습니다~ 끝의 사족을 다시 한번 손보았숨다
Commented by 최영 at 2009/07/10 17:10
궁금한게 있는데요~ 왜 2byte씩 읽는 건가요?
Commented by 히언 at 2009/07/12 23:50
ㅎ. Processor마다 틀린데, 2byte씩 처리하는 Processor도 있고요, 4byte씩 처리하는 Processor가 있어요.. 그러다 보니 dataline이 16bit짜리도 있고, 32bit짜리도 있거든요. dataline이 16bit짜리는 2byte씩 한번에 읽을 수 있는 셈인거에요.
Commented by 그냥 at 2009/07/28 16:07
0x7c 라면 1111100 이 맞을것 같은데, 그림은 0x7c가 아니라 fc로 나와 있는거 아닌가 하는 의구심이,,^^;;
Commented by 히언 at 2009/07/28 20:19
와랏! D7이 0이어야 되네요! 냐핫! 0xFC로 하면 맞을 듯 하고요! 역시나!! 감사함다!! 큰일 날뻔 했사와요.
Commented by 히언 at 2009/08/03 22:55
어디가 바뀌었을까요~?
Commented by koyoon at 2009/08/04 15:59
Address, Data line 예측 잘못해서 큰 낭패본 경험이......ㅡㅜ
Commented by 히언 at 2009/08/06 00:23
ㅋㅋ 그런 경험담을 들려주세요~
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.

◀ 이전 페이지          다음 페이지 ▶