2012-10-25 2 views
1

저는 Minecraft (레드 스톤 포함)에서 간단한 RAM 메모리를 만들었습니다. 주소는 4bits, 각 셀에는 4bits가 저장되어 있습니다. 우리의 다음 목표는 다양한 종류의 변수를 저장하고 다르게 처리하는 것입니다.변수가 RAM 메모리에 저장되는 방법은 무엇입니까?

우리는 엔지니어가 아니므로 우리는 실제로 알지 못합니다. 그러나 우리는 아주 복잡한 것들을 만들었으며 우리는 이것을 할 수 있다고 생각합니다. 문제는 단일 셀에 저장할 수있는 더 많은 비트 변수를 저장하는 방법을 파악할 수 없다는 것입니다. 예를 들어 보겠습니다.

16 비트 변수를 생각해보십시오. 우리는 큰 셀을 만드는 데는 아무런 의미가 없다고 생각하여 각 셀에 4bits를 저장하는 데이터를 저장하기로 결정했습니다. 하지만 충분하지 않습니다. 우리는이 4 개의 세포를 연관시켜야했습니다. 그래서 우리는 변수의 다음 4bits가 저장되는 주소를 저장하기 위해 4bits의 내용과 4bits가있는 8 비트 셀을 만들어야한다고 생각했습니다. 그러나 주소 중 4 비트는 RAM에 대한 것이 아니며 아무 것도 저장할 수 없습니다. 따라서 우리는 주소에 적어도 8 비트가 필요합니다. 4bits의 내용도 매우 낮게 보입니다. 변수의 유형을 저장하려면 최소한 다른 4bits가 필요합니다.

글쎄, 마침내 우리는 기법이 터무니 없다고 생각했고 실생활에서 그렇게 할 수는 없다고 생각했습니다. 그리고 우리는 지금 그것을 어떻게 할 지 모른다. 나는 RAM이 어떻게 작동하는지에 대한 웹을 조사했고, 내가 찾은 소수는 우리의 요구에 너무 복잡했다.

실생활에서 어떻게 이루어 졌는지 설명해주세요.

답변

2

Heh 당신은 비난 게임을하고있어 물리적 RAM 구현시 메모리 관리의 모든 책임을 다하려고합니다.

실제로 RAM은 기억 장치 (레드 스톤 타일)가 실제로 데이터를 저장하는 프로그램의 책임입니다. 다른 말로하면 RAM에 표준화 된 메모리 셀 "연결"전략이 필요하지 않습니다. RAM에 쓰고 다시 읽는 프로그램이기 때문에 자체적 인 일반적인 방법을 알고 있습니다.

염두에두고 값을 저장하는 것은 쉽습니다. 4 비트/워드 RAM에 저장된 16 비트 정수 (4 워드의 데이터)를 원한다고 가정 해보십시오. 변수 0 ~ 4를 참조하기 만하면됩니다. 당신이 그것에서 읽고 쓰는 방법을 모두 알고 있기 때문에 "연결"이 필요하지 않으며, 당신은 자신의 발가락을 밟지 않을 것입니다 (이론적으로).

구조를 확장하기위한 추가 고려 사항 : 전문 레지스트리 (스택 포인터를 반복적 인 컴퓨팅을 위해 사용하는 포인터, 튜링 기계의 프로그램 포인터 등)에 대한 추가 위치. 나는 하나 더 가지고 있었지만 그 것을 쓰는 동안 그것을 잊었다. 나는 그것을 기억할 것이고 나는 편집 할 것이다.

관련 문제