'H/W 이야기'에 해당되는 글 1건

Memory를 고속으로 Interface하는 H/W적 방법 - Interleaved Interface :: 2008/03/13 11:47   by 한도희(16기)

 DRAM, SRAM, FRAM, PRAM, SDRAM, SSRAM, Flash...메모리의 종류는 굉장히 많습니다. 이들은 기본 셀이 F/F(FlipFlop), Gate Charge, Capacitor, Phase 등으로 구성되는가에 따라서 구분되기도 하고 Interface 방식에 따라 구분되기도 합니다. SRAM, DRAM에 Synchronous라는 말이 붙어서 SSRAM, SDRAM이 됩니다. DRAM의 종류에 대해선 컴퓨터에 관심이 많은 사람들이 저보다 더 많이 아실지도 모르겠네요. 같은 기본 셀을 가지면서 다른 Interface 방식의 메모리를 만드는 이유는 단순히 속도를 높이기 위해서 입니다.

 메모리의 속도를 높이는 방법은 여러가지가 있습니다. 메모리의 속도는 근본적으로는 어떤 기본 셀로 구성되어 있는 가에 따라 결정됩니다. CPU의 Cache를 구성하는 SRAM이 F/F구조로 가장 빠르구요. Charge를 충방전 시키는 방식의 Flash, DRAM은 상대적으로 느립니다. 이렇게 상대적으로 느린 Memory의 속도를 높이는 방법은 여러가지로 제안되어 왔습니다. 예를 들어 DDR SDRAM같은 경우는 Clock의 positive-edge만 이용하던 기존 방식에 negative-edge도 추가적으로 이용해서 속도를 2배 높인 경우이지요.

 Interleaved Interface도 위와 같이 속도를 높이기 위한 하나의 방식입니다. 원래 하드웨어 플렛폼 구성에 관심이 있는 분이나, SoC에 관심이 있으신 분들에게 좋은 예가 될 것 같습니다. SoC의 근간은 바로 버스 Interface거든요.

Reference – “고성능 DRAM”, 유회준 저, IDEC 교재 12.

1. Memory System

사용자 삽입 이미지

간단한 구조의 Memory Interface System입니다. Address Latch, Address Mux를 이용하여 구성되어 있죠. Address와 Data bus를 같은 선을 이용하여 공유하고 Address Latch Enable 신호를 이용 573 Latch로 Address를 출력합니다.

2. Memory Latency
위의 복잡한 구조를 Latency 관점에서 모델링 하면 아래 그림과 같이 나타낼 수 있죠. 여기서 Latency란 Interface의 지연을 의미하는 것인데 원인은 Chip 내부의 Gate Delay, PCB 상에서의 전달 지연등이 원인이 될 수 있습니다. 그냥 간단하게 신호가 전달되는 시간정도로 생각하시면 됩니다..
사용자 삽입 이미지

Memory를 읽을 때 걸리는 총 Latency, Delay는 크게 5가지의 요소로 구성되어 있죠.
(1) ALE active delay: CPU의 ALE(Address Latch Enable)신호가 Latch를 활성화시키는데 걸리는 시간
(2) Latche's delay: Address가 Latch를 거쳐 출력되는 시간
(3) access time: Memory가 Address, Control신호를 받아 Data를 출력할 때까기 걸리는 시간. 가장 많은 시간 Delay가 발생
(4) transceiver's delay: MUX등의 transceiver가 있을 때 발생하는 추가적인 Delay
(5) CPU setup time: Memory에서 입력된 데이터를 CPU에서 인식할때 까지 걸리는 Delay

시간 관점에서 본 각 Delay의 구성은 아래 그림과 같습니다.

사용자 삽입 이미지

이론적으로 설명을 해드리는 것보다 실제로 CPU에 메모리를 붙여서 Interface를 한번 해보시면 위의 내용이 무슨 말인지 바로 이해가 갈겁니다. 멤버쉽에서 많이 쓰는 AVR에 외부 메모리를 달아서 각 신호선들을 오실로스코프로 찍어보면 됩니다.

 결론만 말씀드리자면 위의 1~5의 요소들을 최대한 줄이자는 것이죠. 하지만 다 줄일 수 있는 것은 아닙니다. 좋은 Latch를 써서 Gate Delay(2번)를 줄을 수 있겠고, PCB 설계를 훌륭하게 해서 1,4번 요소들을 줄일 수 있습니다. CPU의 성능이 좋다면 5번 요소도 줄일 수 있겠죠. 하지만 가장 큰 Delay를 차지하는 3번, Memory Access Time은 Memory의 기본 셀의 동작 속도로 결정되는 것이기 때문에 속도가 빠른 소자를 이용하지 않는 이상 줄이는 것이 불가능합니다.

 이런 Memory의 기본적인 Memory Access Time을 줄이고자 Interleaved Interface의 Address Mux방식이 이용됩니다.

3. Interleaved Memory
사용자 삽입 이미지

Interleaved 방식의 가장 큰 특징을 나타내는 그림입니다.
두 개의 가장 큰 차이점은 CS(Chip Select)를 Address의 MSB로 하느냐 LSB로 하느냐입니다. 0x0000번지에서 0x0fff번지를 Module0의 메모리 공간으로 잡고, 0x1000에서 0x2fff까지를 Module2의 메모리 공간으로 잡으려고 한다면 (b)의 방식데로 MSB를 CS-Module select로 사용하는 것이고, Interleaved 방식을 이용하는 것은 (a)번 방식입니다.

위 그림보다 이해하기 쉬운 아래의 타이밍도를 보시죠.
사용자 삽입 이미지




























(b)번 방식의 Interface입니다. 하나의 데이터가 나오고 다음 데이터가 나오기 위해서 메모리는 tpr이라는 시간이 필요합니다. 따라서 CPU에서 데이터를 빠르게 읽어오려고 해도 tpr만큼 기다린 다음에 읽어야 하는 Delay가 존재합니다.
사용자 삽입 이미지
(a)의 Interleaving 방식이죠. Address의 LSB를 CS로 이용하기 때문에 Module0에서의 데이터가 나오고 tpr의 Delay동안 CPU가 다음 Address인 Module1의 데이터를 읽어옵니다. Module1이 tpr의 시간이 필요할때는 다시 Module0을 Access해서 Data를 읽어오는 거죠.

즉 Interleaving이라는 것은 메모리의 Access Time동안 다른 메모리의 데이터를 읽어오는 방식인 거죠. 4개의 Module을 이용하는 방식이 아래 그림에 나타나 있습니다.
사용자 삽입 이미지
ta라는 시간을 4개로 쪼개서 Address를 공유해 메모리 데이터가 출력되고 있습니다.

메모리 개수와 Access Time과 관계식은 다음과 같이 정의될 수 있습니다.
사용자 삽입 이미지

사용자 삽입 이미지

----------------------------------------------------------------
많은 내용들을 생략하고 간단하게 썼습니다. 시간의 문제도 있지만 중요한 핵심만 전달하기 위한 것도 있었다고 하고 싶네요..^^ Interleaving 방식이 아니더라도 메모리 H/W Access에 대한 문제가 있다면 언제든지 물어봐주세요..^^
☆ 글쓴이 소개☆
hando님의 글입니다.

Trackback Address :: http://blog.swssm.org/trackback/169
Name
Password
Homepage
Secret