반응형
[다시 쓰는 8051 따라하기] 메모리에 관해서 ...
+------------------------------------------------------+
게시장소 : 다음 tinyrobo
작성자 : Timy(me^^;)
작성일 : 2004.10.28
문의 : 다음카페 http://cafe.daum.net/tinyrobo 혹은 개인블로그 http://electoy.cafe24.com/blog
+------------------------------------------------------+
[시작]

## RAM, ROM, ...

메모리라 하면 우선 PC를 쓰면서 종종 듣는 말일게다. 램이라는 말로도 많이 쓴다.
램이 몇메가니 하는 말은 그 컴퓨터에 메모리가 얼마나 달려있는가라는 의미이다.
보통 우리가 메모리를 말하면 램을 의미하는데 여기서는 램뿐만 아니라 롬도 메모리임을 알고 넘어가면 되겠다.

폰노이만과 하버드 아키텍쳐라는 말을 혹시 들어 봤는지 모르겠다. 조금 어려운 말이기도 한데, 간단히 이해하자면 두가지는 명령과 데이터의 처리방식에 있어 큰 차이를 보여준다. 폰노이만 구조는 현재의 대부분의 PC가 가지고 있는 처리방식이다. 폰노이만이라는 사람이 제안한 것으로 지금의 개인용 컴퓨터에 채택된 방식이다. 이 사람은 대단한 천재였다. 프로그램 코드와 데이타를 분리시키지 않고 동일한 것으로 보았다. 그래서 데이타역시 프로그램 코드내에 함께 들어가게 구조를 만들었다.

폰노이만 구조에서는 프로세서의 속도가 빠르면 빠를수록 고성능을 나타내는 구조가 된다.

반면에 또 다른 구조로 하버드 아키텍쳐가 있다. 하버드 구조에서는 데이터와 인스트럭션(명령어)를 분리시켜서 처리한다.

그래서 일반 PC에서는 보통 우리가 메모리라고 할때 램만을 의미한다. 보조기억장치인 HDD 에 온갖 잡동사니를 모두 모아둔 다음, 내가 원하는 일을 하고자 할때 그중 일부를 불러다가 램에 올린다. 이때 램은 프로그램 코드와 함께 데이타까지 함께 가지게 된다. 쉽게 말해서 영상을 처리하는 프로그램이 있다고 하자. 열심히 게임을 하고 있는데, 이 게임에서는 영상을 아주 고밀도로 저장해야 한다. 또 3D 처리를 위해서 복잡한 알고리즘이 적용된 프로그램도 돌려야 한다. 이 프로그램과 영상에 대한 정보를 모두 램에 보관하는 것이다. 그렇게해서 램이 많아야 영상을 보다 많이 저장할 수 있고, 그러면서 또 다른 작업 - 백그라운드에서 p2p를 돌려서 파일을 다운 받는 등 .. - 을 할수 있는 것이다. 램이 작으면 여러작업을 하지 못하고, 하는 작업 또한 램이 부족하면 제대로 수행할 수 없다. 모든 프로그램 코드 명령어와 데이타가 램에 다 저장이 되고 있기 때문에 그렇다.

그런데 이런 구조가 마이크로프로세서를 사용하는 측면에서는 그다지 좋지 않다. 우선 마이크로 프로세서는 일정한 명령을 수행하는데, 그 명령들이 일반 PC에서 사용하는 것들만큼 다양하지 않다. 그래서 최적의 수행을 위해 명령들을 모아둔 곳과 데이타를 모아두는 곳을 별도로 관리하는 것이 편리할 수 있다. 이런 구조가 하버드 구조라고 불리는 것이다.

그래서 어드레스버스와 데이타버스가 분리된 RISC 와, 어드레스버스와 데이타버스가 분리되지 않은 CISC 가 있게 된다. 8051은 구형 MPU 다. 그래서 CISC 방식이 채택되어 있으며, 하나의 명령에 최소1 주기부터 4주기까지 있게 된다. 이것이 CISC 방식에 비해 가지게 되는 약점이긴 하다.

메모리에 대해서 이야기를 해야 하는데, 조금 쓸데없는 이야기를 많이 한것 같다.
다시 돌아가서 기본적으로 명령들은 롬에 들어 있고, 램은 데이타를 보관하는 곳이라고 했던 것부터 시작하자.

8051 은 외부에 롬과 램을 달수 있다. 그렇게 해서 32Kb 까지 확장해서 사용할 수 있다.... 메뉴얼에 그렇게 되어 있고, 또 어떻게 설명도 할수는 있지만, 그건 나중에 쓰고 싶은 사람이나 쓰라고 하자.^^

지금은 AT89S52 라는 8051 유사품을 사용하고 있으므로 이 녀석에 대해서 쓰기로 하자. 왜 클래식하게 8051을 쓰지 않느냐고? 그건 8051 이라는 녀석은 조금 쓰기가 까다로운 녀석이라 그렇다. 우선 마스크롬이라는게 있는데, 이게 뭐냐하면 한번만 구울수 있는 롬이라는 게다. 그런데 이게 8051안에 있다. 그리고 이걸 구우려면 최소한 몇천개 정도는 한꺼번에 공장에 주문해서 구워야 한다는게다. 이걸 어떻게 쓸수 있겠나? 그래서 예전에 썼던 방법은 내부에 롬을 제거한 8031 이라는 녀석을 가지고 외부에 롬과 램을 달아서 트레이닝보드를 만들어 사용했었다. 꽤 괜찮은 방법이다. 필자도 그걸로 처음 시작해 보았는데, 모니터 프로그램에 사용되는 내용들이 참 공부하게에 좋았던 기억이 난다.

그리고 지금은 이런 식으로도 가능하지만 ISP 가 지원되면서도 가격이 싼 녀석들이 나와서 이것으로 사용해 보려고 한다.
그중에 저렴하면서 가장 기본 8051에 가까운 녀석, 바로  AT89S51과  AT89S52 이다. 51과 52의 차이는 내부 플래시 메모리가 4k 냐 8k 냐일 뿐이다. 가격도 별 차이가 없다. AT89S51 과 AT89S52 가격이 차이가 나면 AT89S51 을 사용해 보겠는데, 별 차이가 없다. 그래서 그냥 AT89S52 를 사용하기로 마음먹은것이다.

게다가 8K 정도면 왠만한 프로그램 돌리는데 지장이 없는 충분한 양이기도 하다.^^

기본 8051에 내부에 있는 마스크롬 대신 플래시롬이 달리고, 그것도 8K나, 게다가 거기에 프로그램을 쓸때 롬라이터를 쓸필요없이 아주 간단하게 ISP 라는 방식으로 롬을 쓸수 있는 녀석, 그것이 바로 AT89S52 라는 녀석이다. 가격도 아주 싸다. 롬없는 녀석을 사서 옆에다 롬을 붙이느니 이녀석을 사는게 두배는 절약된다.

괜히 부품선전하다가 끝난것 같다마는 그래도 이 녀석에 대해서 조금 자세히 알아 두기를 바란다.

http://www.atmel.com/dyn/resources/prod_documents/doc1919.pdf


위에 AT89S52 를 링크시켜두었다. 영어로 된 문서가 열릴텐데, 아크로뱃 리더가 설치되어 있지 않으면 알아서 설치하기 바란다. ^^


+------------------------------------------------------+

반응형

+ Recent posts