본문 바로가기
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

 
 
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
ㅋㅋ 그런 경험담을 들려주세요~
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.
친절한 임베디드 시스템 개발자 되기 강좌 글 전체 리스트 (링크) -



댓글





친절한 임베디드 개발자 되기 강좌 글 전체 리스트 (링크) -