brunch

You can make anything
by writing

C.S.Lewis

by 이경종 Apr 05. 2020

Ch5-3. 메모리 인터페이스

메모리 주소와 입출력 연결

메모리를 사용하기 위해서는 메모리의 주소를 알아야 한다.

뒤에서 살펴보겠지만, 소프트웨어에서 접근하는 메모리 주소는 부트로더초기화 코드나 어셈블러 등의 일부 코드를 제외하면 모두 가상 메모리 주소다. 실제 물리적 메모리를 읽거나 쓰기 위해서 먼저 가상 메모리 주소는 물리적 주소로 변환(mapping)되어야 한다.


가상 메모리는 조만간 다시 다루기로 하고, 여기서는 물리적 메모리 주소와 메인 프로세서와의 인터페이스에 대해서 살펴보자. 이미 살펴본 바 있지만, word는 해당 프로세서에 다루는 기본 데이터 단위다.


                                                         m x n memory


32비트 시스템이 4K word의 메모리를 가지고 있다면 해당 메모리의 크기는 4K x 32 = 128K비트, 즉 16K바이트(128/8) 메모리다. 통상적으로 메모리는 바이트 단위로 표시한다. (예) 2GB DDR = 2Giga Bytes = 16 Giga Bits)


메모리 사양을 보면 표시뒤에 x16이나 x8 같은 것이 붙어 있는데, 이는 데이터입출력 비트를 의미한다. x16이면 16비트 데이터입출력 인터페이스를 가지고 있는 것이고, x8이면 8비트 데이터 입출력 인터페이스다.


x16 메모리로 32비트 프로세서를 위한 메모리를 구성하려면 2의 배수로 메모리장치가 필요하다. 메모리를 병렬로 연결해서 필요한 메모리 구조를 만들수 있다.

x8 메모리로 구성한다면 당근 4의 배수로 메모리 장치가 필요하겠죠잉?


메모리의 물리적 인터페이스를 살펴보자. 크게 주소를 입력할수 있는 핀과 데이터를 입출력할수 있는 핀, 그리고 읽기인지 쓰기인지를 선택할 수 있는 핀(r/w), 마지막으로 해당 메모리를 쓸 것인지 안 쓸 것인지 선택하는 핀(enable, 보통 CS나 CE라고 한다)이 있다.

A0~ Ak-1이 주소 인력핀이고, Q0~Qn-1이 데이터 입출력 핀이다. x8 메모리라면 n=8이다. 

그리고 2KB 메모리라면 k=11이 되어야 한다. 산수를 해보면 알 수 있다.


이 관계를 산술식으로 굳이 설명하면 아래와 같다.


m = 2^k 
(m = 메모리 크기, k=주소입력핀 개수)


자, 여기까지는 쉽다. 응, 그렇군 끄덕끄덕 별거 아니다. 그럼 조금 더 심화해보자. 2KB의 메모리크기를 갖는 x16 메모리 장치 가 하나 (MY_MEM)있다고 치자.

MY_MEM을 쓰는 프로세서는 16비트 프로세서로 이 프로세서에서 소프트웨어를 돌리는데 2KB로는 메모리가 부족해서 아래 그림처럼 MY_MEM을 두개를 써서 4KB의 메모리를 구성했다고 치자.

합쳐진 4KB의 메모리공간을 물리적인 메모리 주소로 표현하면 아래와 같다.

(4KB = 4096 Bytes = 0x1000 Bytes)


시작주소 0x0000 (b 0000 0000 0000 0000)

끝 주소    0x0FFF (b 0000 1111 1111 1111)


자 그럼 0x00FF이라는 주소값은 MY_MEM_A의 주소인가? MY_MEM_B의 주소인가?

대답을 얻기 위해 그림을 좀더 확장해보자.

MY_MEM A 메모리의 CE핀에 프로세서의 주소라인 A11이 반전으로 연결되어 있는 것을 볼 수 있다.

A11이 0이면 MY_MEM_A이 선택되고, A11이 1이면 MY_MEM_B가 선택되는 것이다.

그러므로, 0x0000부터 0x07FF까지는 MY_MEM_A의 주소공간이고, 0x0800부터 0x0FFF까지가 MY_MEM_B의 주소공간이 되는 것이다.


그럼 좀 더 심화해서 MY_MEM 4개로 메모리를 구성해서 총 8KB의 메모리를 쓴다면 어떻게 구성해야 할까?

메모리를 선택하기 위해 별도의 회로가 필요하게 된다. 논리회로로 표현하면 아래와 같이 쓰면 될 것이다.

(아래 회로와 구성은 개념을 설명하기 위한 단순한 예시일뿐이다)

이상은 RAM의 경우다. 각각의 메모리 타입별로 읽고 쓰거나 제어하는 방식은 다를 수 있다. 일례로 소용량저장장치로 많이 사용되는 EEPROM(NVRAM)의 경우 전 챕터에서 살펴본바 있는 I2C 통신프로토콜로 데이터를 읽고 쓴다. 


       YES24 링크 교보문고 링크

작가의 이전글 Ch5-2. 메모리 종류
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari