메모리의 진화와 기초 지식에 대한 글입니다. 나온지 시간이 꽤 지난지라 최신 기술하곤 거리가 좀 있고, 특히 앞으로의 개발 양상에 대한 것은 예측이 틀린 부분도 있지만, 그래도 예전에 쓰였던 기술들을 정리하는 데는 도움이 될듯 해서 올려봅니다.

 

 

1. PC의 속도를 좌우한 메모리의 진화

 

이번부터는 PC에서 빼놓을 수 없는 메모리의 역사에 대해 해설하고자 합니다.

 

 

고속화가 진행된 486 시대. 메모리와 CPU의 속도 차이가 심해짐

 

1.jpg

 

메모리 기술의 진화와 CPU/칩셋의 대응

 

굳이 말할 필요도 없습니다. PC의 메인 메모리에는 DRAM이 쓰이고 있다는 사실 말입니다. 범용 DRAM이 처음으로 출시된 것은 1970년. 인텔의 인텔 1103이라는 용량 1Kbit의 DRAM이 바로 그것입니다. 이후 반도체 업체들이 DRAM 사업에 주력하면서 일본의 회사들이 큰 점유율을 차지하게 됐습니다. 반대로 인텔이 1985년에 DRAM 사업에서 철수했다는 건 1970~1980년대의 컴퓨터 역사를 보면 반드시 소개하게 되는 일이니 여기에선 굳이 설명하지 않습니다.

 

이런 치열한 경쟁 덕분에 DRAM 용량은 늘어났으며 사용 편리성도 향상됐고 가격이 저렴해졌습니다. 사용하기 쉽다는 걸 예로 들어보면 인텔 1103의 경우 전원 전압이 16V와 19V의 2종류며 신호 레벨은 Hi가 15V, Low는 1.8V로 쓰기가 매우 힘든 물건이었습니다. 이것이 일반적으로 TTL에서 다루는 신호 레벨이 된 것도 기업 간 경쟁이 반복되면서 나타난 결과라고 할 수 있겠습니다. 그 결과 1981년에 등장한 IBM-PC나 그 이전에 존재했던 업체들의 PC를 보면 모두 메인 메모리에 DRAM을 그대로 쓸 수 있게 됐습니다.

 

PC에서 쓰였던 DRAM은 초기 IBM-PC에서 286 기반의 PC/AT를 거쳐 386을 탑재하는 호환 기종이 나올 때까지, 문제가 됐던 건 용량이나 가격이었지 속도는 별로 중요하지 않았습니다. 속도가 문제가 된 건 인텔 486이 등장하면서부터입니다.

 

386 시대까지 CPU는 고속 제품이 50MHz로 동작하는 등, AMD를 비롯한 호환 제조 업체의 CPU는 메모리 액세스가 빠른 편이었습니다. 그러나 다수의 PC에서 쓰였던 i80386SX의 경우 메모리 버스가 16비트 폭이라서 고속 액세스는 무리였습니다. 그 결과 평범한 DRAM을 써도 성능 에서 별 문제는 없었습니다.

 

이것이 486 시대가 되면서 메모리 성능의 장애가 순식간에 높아졌습니다. 버스 폭은 32비트, 버스 클럭은 25~33MHz, 심지어 40~50MHz인 제품도 있습니다. 이를 무리 없이 커버하려면 액세스 타임 20ns 같은 고속 액세스가 가능한 DRAM이 필요합니다. 그러나 당시 쓰였던 주류 제품은 액세스 타임 60~70ns 정도가 대부분이었으며 40ns 짜리는 매우 비쌌습니다. 당시 기술에서 이런 고속 제품의 수율은 상당히 나빴다는 걸 반증하는 것이기도 합니다.

 

CPU와 메모리의 속도 격차 문제를 해결하기 위해, 486 시대 이전부터 주요 DRAM 칩에 탑재된 Fast Page Mode라는 메모리 액세스 방법이 PC용 칩셋에서도 전면적으로 쓰기에 됩니다. 이를 먼저 도입했다고 밝힌 곳은 SiS, Opti였는데 실제 제품으로 출하된 제품이라면 인텔의 인텔 420TX라고 해야 할 것입니다.

 

결과적으로 하이엔트 386을 탑재한 PC와 대부분의 486 탑재 PC는 Fast Page Mode를 지원했습니다. 그렇지만 이것은 메모리 칩에서 이미 지원을 하고 있었으니까, 칩셋이 지원하는 것만으로 쓸 수 있었다는 점을 간과할 수 없습니다.

 

 

EDO DRAM, Burst EDO DRAM을 거처 SDRAM이 등장

 

Fast Page Mode에 이어 1995년에 보다 고속 액세스가 가능한 EDO(Extended Data Output) DRAM이 등장하고 쓰였습니다. EDO는 원래 Hyper Page Mode라 불리던 것으로 Fast Page Mode의 성능을 더욱 개선한 것입니다. 이걸 개발한 곳은 미국 마이크론이지만 제법 보급이 된 편입니다.

 

허나 EDO는 칩셋과 메모리 칩에서의 지원 시기가 비슷하기도 하고, Fast Page Mode만큼 빨리 보급되진 않았습니다. 또 캐시 메모리가 없는 PC에선 효과적이지만 캐시를 CPU나 메인보드에 탑재하면 Fast Page Mode만큼 속도가 크게 변하지 않았고, 이후 출시되는 SDRAM도 있다보니 대대적으로 보급되기 전에 사라지고 말았습니다.

 

이 EDO DRAM의 전송을 더욱 빠르게 한 BEDO DRAM(Burst EDO DRAM)이라는 것도 있습니다. 인텔도 인텔 440FX 칩셋에서 지원했으나 이쪽은 사용이 더욱 한정된 게 사실입니다.

 

EDO에 이어서 1996년부터 쓰인 것이 SDRAM(Synchronous DRAM)입니다. Synchronous는 동기 라는 뜻이지요. SDRAM은 메모리 컨트롤러에서 DRAM 칩에 클럭 신호를 보내고 거기에 맞춰 동기화해서 데이터를 송/수신하는 구조입니다.

 

그럼 그 이전에는 어땠을까요? EDO DRAM까지는 RAS(Row Address Strobe)/CAS(Column Address Strobe)/OE(Output Enable)/WE(Write Enable)라는 4개의 신호 라인을 넣어 데이터 송/수신 시점을 잡았습니다. 허나 SDRAM에서는 타이밍을 클럭에 동기화시키는 방식을 쓰게 됐지요. 더욱이 어드레스 라인을 써서 명령을 보낼 수 있도록 바뀌면서, 다른 신호 라인을 쓰던 RAS/CAS 등을 명령과 같은 신호 라인에서 다루고 보다 복잡한 프로토콜을 쓸 수 있게 됐습니다.

 

또 시클럭을 공급하면서 파이프 라인 처리가 가능해져 Burst EDO와 거의 같은 성능을 쉽게 쓸 수 있게 됐습니다. 이를 지원한 최초의 제품은 인텔 430VX입니다. 430VX는 널리 보급됐다고 보기 어려우나 펜티엄의 마지막 제품인 인텔 430TX, 펜티엄 2용인 인텔 440LX/440BX가 SDRAM을 전면적으로 지원하면서 1997년 부터는 SDRAM이 표준 메모리로 급격히 보급됐습니다.

 

 

SDRAM의 후속작은?

 

여기까지는 FP DRAM→ EDO DRAM→ SDRAM으로 순조롭게 바뀌어 나간 듯 하지만, SDRAM의 후속작은 꽤 복잡했습니다. 우선 NEC(지금은 엘피다 메모리)가 SDRAM을 바탕으로 자체 버퍼(Virtual Channel)을 내부에 넣은 VC SDRAM을 개발했습니다.

 

그러나 이를 지원하는 칩셋은 VIA Technologies와 SiS, ALi밖에 없어 점유율이 낮다보니 그대로 사라질 운명에 처하게 됩니다. 근데 1999년에 대만에서 대지진이 발생해 현지 메모리 제조 업체의 생산이 중단됐고, SDRAM 칩의 공급 부족과 함께 가격 폭등이 발생했습니다.

 

반면 VC SDRAM은 대지진의 영향을 거의 받지 않았고 공급 가격도 안정됐습니다. 그 결과 VC SDRAM이 갑자기 메인 메모리로 SDRAM을 대체한다는 재밌는 상황이 벌어지게 됩니다. 사실 인텔 칩셋은 VC SDRAM을 지원하지 않았으니 모든 PC에서 쓰였던 것은 아닙니다. 또 대만에서 생산이 복구되면서 VC SDRAM의 점유율도 빠르게 줄어들어 결과적으로는 일회성으로 끝나게 됐습니다.

 

그 이상으로 복잡했던 것이 인텔이 전면적으로 추진한 Direct RDRAM입니다. 우선 펜티엄 2/3용 인텔 820에서 쓰여 펜티엄 4 전용인 인텔 850 칩셋에서 전면적으로 Direct RDRAM을 쓰게 됐는데 혼란을 거듭하다 결국 사라지게 됐지요.

 

인텔은 이 시기에 네트워크 전용 프로세서인 IXP2000 시리즈를 독자 개발했는데 여기에도 Direct RDRAM을 사용했으니 금방 사라진 건 아니지만, PC용 메모리에서는 호응하는 업체가 없다보니 결국 사라지게 됐습니다.

 

이렇게 되니 SDRAM의 후속작은 DDR-SDRAM으로 넘어오게 됩니다. DDR-SDRAM을 지원한다고 가장 발표한 것은 비아의 P4X266인데 실제로 출시되진 않았지만 시장에 준 충격은 매우 컸습니다. 비아 이외의 호환 칩셋 제조사나 AMD/트랜스메타같은 CPU 제조사도 DDR-SDRAM을 채용했으며 인텔도 결국 이를 따르게 됩니다.

 

이 DDR-SDRAM 시절에 잠깐 모습을 드러냈다가 사라진 곳이 QBM(Quad Band Memory)입니다. 아이디어는 간단합니다. DDR의 신호 라인 그대로 DDR2 전송을 한다는 것입니다. 2004년에 시험 모듈이 전시된 적도 있었지만 지원 칩셋이 비아의 PT880/PM880 뿐이었으며 주요 DIMM제조사는 지원을 발표하지 않아 결국 제대로 시작도 못하고 사라지게 됐습니다. 허나 이런 이상한 규격에 의존할 필요도 없었습니다. 바로 DDR2-SDRAM이 등장했거든요.

 

2.jpg

 

컴퓨텍스 타이페이 2004에 맞춰 열린 VIA 기술 포럼 2004에서 전시된 QBM 모듈

 

2004년에는 DDR2-SDRAM이 PC용으로 등장했습니다. 처음에 DDR2의 대역을 최대한 쓸 수 있는 환경이 없었으나 2006년에는 DDR2-800을 구입할 수 있게 돼 PC에서도 대역을 확보할 수 있게 됐습니다. 이러한 움직임을 거쳐 2007년에는 DDR3-SDRAM이 등장했으며 지금은 DDR4-SDRAM도 나온 상황이지요. 이 글이 좀 예전에 나온 거니까 그 부분의 설명은 없지만, 예전에 썼던 기술을 보시라는 거니까 그건 넘어가고.

 

DDR3와 DDR4 사이에는 DDR3L-SDRAM이 나왔습니다. 처음에는 LVDDR3라는 이름으루 불렸으나 마지막에 메모리 표준화 단체인 JEDEC에서 DDR3L이라 표준화했습니다. 

 

DDR3L-SDRAM은 DDR3-SDRAM에 비해 통신 속도의 고속화와 저전압이 특징입니다. 기존의 DDR3-SDRAM이 1.5V에서 800~1600MHz의 신호 속도를 내지만 DDR3L-SDRAM은 1.35V/1.25V의 전압에서 1866/2133MHz의 신호 속도를 냅니다. 사실 이 1.35V로 1866MHz라는 조합은 이미 시장에 출시됐으며, 샌디 브릿지 코어 i7/i5부터 비공식적으로 이 전압/속도를 지원합니다. 그래서 노트북에선 DDR3L-SDRAM을 많이 쓰는 편입니다.

 

또 다른 흐름은(PC는 아니지만) 2010년에 등장한 아톰 Z600 시리즈에서 지원한 LPDDR1입니다. LPDDR은 핸드폰을 비롯해 저전력 디바이스에 맞춘 규격이며 DDR-SDRAM의 전압을 낮춰 저전력 모드의 지원이나 대기 전력 감소가 들어간 게 특징입니다. 또 속도를 더욱 높인 LPDDR2 SDRAM이나 LPDDR3까지도 나왔지요.

 

 

2. FP~BEDO DRAM

 

지금까지 메모리가 어떻게 발전했는지를 대충 설명했습니다. 이제부터는 좀 더 세밀하게 메모리에서 쓰는 기술에 대해 해설하겠습니다.

 

 

메모리 동작의 기본

 

DRAM은 여러 DRAM 셀로 구성됩니다. 그리고 DRAM 셀은 1개의 트랜지스터와 1개의 콘덴서로 구성되는 다이나믹 메모리 셀입니다. 다이나믹이라는 건 전원이 공급되도 일정한 시간이 지나면 저장된 내용이 사라진다는 이야기입니다. 전원만 공급되면 저장한 내용이 사라지지 않는 SRAM(Static RAM)나 전원을 차단해도 그 내용이 사라지지 않는 플래시 메모리와는 사용 방법이 근본적으로 다릅니다.

 

왜 DRAM의 데이터는 사라지는 것일까요? 새로 건전지를 사도 계속 방치하면 멋대로 방전되는 것과 같습니다. DRAM의 셀은 전지에 비해 축적된 전하의 양이 매우 적기에 더 짧은 시간만으로도 축적된 전하가 방전될 수 있습니다.

 

구체적으로 어느 정도 시간이 흘러야 사라지는 걸까요? 그건 제품마다 다릅니다. 옛날에 나왔던 Fast Page DRAM과 EDO DRAM의 경우 아무리 길어도 100~150ms 정도였습니다. 그래서 전하가 사라지기 전에 내용을 한번 읽고 덮어쓰는 등, 내용이 지워지지 않도록 처리하는 게 필수였습니다. 이러한 기본적인 DRAM의 매커니즘과 특성은 DDR3, GDDR5 같은 최근의 DRAM도 똑같습니다.

 

그럼 이제 본론으로 들어갑시다. 아래 그림은 DRAM 칩의 기본적인 구조를 단순하게 그린 것입니다. DRAM 셀은 한개의 셀에 1비트 데이터를 기록하니까 1바이트라면 8개의 셀에 나란히 기록을 해야 합니다. 또 DRAM 칩은 패키지를 작게 만들고 코스트를 줄이기 위해 메모리 어드레스를 Row와 Column의 2개로 나눠 보내는 체계를 갖추고 있습니다.

 

예를 들어 세계 최초초로 상품된 DRAM 칩인 인텔 1103은 용량이 1Kbit니가 하나하나 주소를 할당하자면 10개의 신호 라인이 필요합니다. 하지만 열과 행으로 나누면 5개의 신호 라인으로 해결되니 패키지가 훨씬 작아집니다. 이후 급격히 DRAM 용량이 늘어났으나 메모리 칩의 핀 수가 크게 늘어나지 않은 건 이 Row/Column 방식의 영향이 큽니다. 

 

Row와 Column에 의한 2단계 메모리 액세스를 위해서 DRAM 칩의 DRAM 셀은 아래 그림처럼 매트릭스 형태로 배치가 됩니다. 그럼 여기서 메모리 읽기를 예로 들어 설명해 볼까요.

 

3.png

 

DRAM 칩의 기본적인 구조

 

(1) CPU(메모리 컨트롤러)에서 주소 라인(Address)에 Row주소를 보냄

(2) 그 주소가 Row Address Buffer를 통해 Row Decoder로 보내져 읽으려는 셀이 포함된 Row를 액티브 상태로 만듬

(3) 어드레스 라인에 CPU에서 Column 주소를 전달

(4) 그 주소가 Column Address Buffer를 통해 Column Decoder로 보내져 읽으려는 셀이 포함된 Column을 액티브 상태로 만듬

(5) Row/Column이 모두 액티브 상태가 된 셀의 내용을 I/O Sense Amp이 읽음

(6)  읽은 결과가 데이터 라인(Data)으로 보내짐

 

 

RAS와 CAS를 사용해 주소를 통보

 

그림에 나온 RAS는 Row Address Strobe, CAS는 Column Address Strobe의 줄임밀로, 어드레스 라인에서 어느 시점에 Row/Column 주소를 읽어오는지를 지시하는 신호입니다.

 

4.png

 

DRAM의 리드 사이클

 

그럼 실제 신호의 흐름을 시간 순서대로 나타내 볼까요. 왼쪽에서 오른쪽 방향이며 어떤 순서로 메모리에서 데이터를 읽어 오는지를 봅시다.

 

(1) CPU가 어드레스 라인에 Row 어드레스를 전달

(2) CPU는 RAS를 Low로 해서 Row 어드레스를 전달했다고 DRAM에 통지

(3) DRAM은 RAS가 Low가 된 것을 검출. Row Address Buffer가 어드레스 라인에서 어드레스를 취득해 Row 어드레스로 간주, Row Decoder로 보냄

(4) CPU가 어드레스 라인에 Column 어드레스를 전달

(5) CPU는 CAS를 Low로 해서 Column 어드레스를 전달했다고 DRAM에 통지

(6) DRAM은 CAS가 Low가 된 것을 검출. Column Address Buffer가 어드레스 라인에서 어드레스를 취득해 Column 어드레스로 간주, Column Decoder로 보냄

(7) CAS를 Low로 해서 일정 시간이 지나면 DRAM에서 데이터가 데이터 라인으로 넘어가며 CPU가 이를 취득

 

이는 매우 간단하게 줄인 설명입니다. 아래 이미지는 실제 DRAM의 리드 사이클 사례인데, tAA부터 tWPZ까지 21가지 파라미터-매개 변수가 있습니다. 이걸 제대로 지키지 않으면 제대로 읽거나 쓸 수 없습니다.

 

5.png

 

미국 마이크론이 예전에 판매했던 MT4LC4M4E8/9라는 4Mbit EDO DRAM의 데이터 시트에서 인용한 리드 사이클의 설명. EDO나 FastPage 동작 모드를 사용하지 않을 경우.

 

이미지를 보면 알 수 있는대로 이 방식은 DRAM을 액세스하는 효율이 나쁩니다. 액세스할 때마다 Row/Column을 각각 보내야 데이터가 나오기 때문입니다. 게다가 실제로는 딜레이가 더 길기에 실제 메모리 읽기 성능은 꽤 느려집니다.

 

 

연속된 같은 Row를 한번에 접속하는 Fast Page Mode

 

이를 해결하는 방법으로 처음 도입된 것이 Fast Page Mode입니다. DRAM 셀 배열 1Row(페이지, 가로 방향 및)을 한번에 액세스하는 방식입니다. 

 

6.png

 

패스트 페이지 모드의 구조

 

일반적으로 CPU가 메모리를 완전 랜덤으로 액세스하는 경우는 적으며, 연속된 메모리 어드레스를 순서대로 읽어오는 패턴이 많습니다. 예를 들어 처음에 0x100000H를 액세스하면 다음은 0x100001H""0x100002H 같은 식으로 연속해서 엑세스하는 것입니다. 이 경우 아래 값을 보면 알겠지만 Column만 변하지 Row는 그대로입니다.

 

주소 Row Column
0x100000 0x100 0x000
0x100001 0x100 0x001
0x100002 0x100 0x002
0x100003 0x100 0x003

 

그럼 Row를 전달하는 건 처음 한번이면 되지 않느냐...라는 생각이 나오는 게 당연합니다. 그래서 이미지에 나온대로 1페이지의 셀을 순차대로 액세스할 경우 빠른 액세스가 가능한 것이 Fast Page Mode입니다. 보다시피 Row 어드레스를 한번 지정하면 끝나기에 읽기 빈도가 그만큼 높아집니다.

 

7.png

 

Fast Page Mode의 리드 사이클. Data의 송출 횟수가 늘어났습니다.

 

 

EDO DRAM과 Burst EDO DRAM의 구조

 

Fast Page Mode를 더욱 발전시킨 것이 EDO DRAM(Extended Data Out DRAM)입니다. EDO DRAM은 I/O Sense Amp와 데이터 라인 사이에 버퍼가 들어간 구조이며, 이에 따라 DRAM 칩 데이터를 출력하면서 다음 Column 주소를 받을 수 있어 데이터 출력이 보다 빨라집니다.

 

8.png

 

EDO DRAM의 리드 사이클

 

9.png

 

Burst EDO DRAM의 리드 사이클

 

이를 더욱 빠르게 한 것이 Burst EDO DRAM입니다. 원리는 EDO와 같지만 다른 점은 Column 주소를 보내는 것도 한번이라는 점입니다. 예를 들면 앞 페이지가 0x100000H에서 0x100003H까지 접속할 경우 Row에 0x100, Column에 0x000을 주면 거기에 이어지는 0x001/002/003이라는 Column 주소는 DRAM 칩이 내부에서 자동으로 만들어 출력하는 구조입니다. 그럼 CAS 신호를 정기적으로 보내는 것만으로 데이터는 연속 출력됩니다.

 

위 이미지를 보면 Burst EDO와 EDO의 차이를 알기 쉬울 것입니다. EDO의 경우 정기적으로 Column 주소를 갱신하기에 실제로는 딜레이가 어느 정도 포함돼 있습니다. 그러나 Burst EDO에서는 Column 주소를 갱신하지 않기에 CAS와 직결돼 데이터 출력이 가능하니 결과적으로 EDO DRAM보다 약간 빠르게 데이터 출력이 가능합니다.

 

또 이들과는 별개로 Static Column Mode DRAM이라는 것도 존재합니다. 이는 Fast Page Mode DRAM보다 앞서 나온 기술이나 액세스 패턴은 Fast Page Mode DRAM과 흡사합니다. Static Column Mode의 경우 DRAM 내부에 1페이지를 한꺼번에 저장할 수 있는 SRAM을 DRAM셀과 별도로 내장하는 것이 특징입니다.

 

Fast Page Mode는 처음에 Row 주소가 오가며 여기에 따라 Row Address Decoder가 Row를 확정합니다. Static Column Mode에서는 이 Row가 결정된 시점에 1페이지 정도의 내용을 통째로 SRAM에 복사합니다. 그 다음에는 해당 페이지의 데이터를 Column 주소로만으로도 액세스 가능합니다.

 

그러나 1 페이지라고는 해도 메모리 칩에 SRAM를 내장하면 당연히 비사집니다. 또 이 방식은 메모리 표준화 단체인 JEDEC의 표준화 제정이 다소 늦어져 그 사이에 같은 수준의 액세스 성능을 지닌 Fast Page Mode가 보급됐습니다. 그 결과 JEDEC에서 표준화됐으나 PC용 DRAM으로쓰이는 건 거의 없었습니다. 

 

EDO DRAM의 후속 제품은 SDRAM입니다. 다음번엔 SDRAM의 구조에 대해 설명하도록 하겠습니다.

 

 

3. SDRAM~DDR3

 

앞에선 DRAM부터 EDO DRAM까지의 진화를 설명했습니다. 이번엔 거기에 이어 SDRAM의 진화를 설명하고자 합니다.

 

 

RAS/CAS을 클록 신호로 바꾼 SDRAM

 

지난번에 말한대로 SDRAM에는 신호 라인에 클럭 신호가 추가돼 여기에 맞춰 데이터 전송이 이루어집니다. 아래 이미지는 그 리드 사이클을 나타낸 것입니다.

 

10.png

 

SDRAM의 리드 사이클

 

이것을 EDO DRAM과 비교하면 SDRAM에서 RAS/CAS 신호 라인이 필요 없다는 걸 알 수 있습니다. EDO DRAM까지는 주소를 어느 시점에 보낼지를 판단하기 위해 RAS/CAS의 독립된 신호 라인이 필요했습니다.

 

11.png

 

EDO DRAM의 리드 사이클

 

SDRAM은 클럭 힌호의 동작으로 주소를 보내는 구조이며 RAS와 CAS라고 하는 신호 라인에서 타이밍을 주고 받을 필요가 없어졌습니다. 이것의 장점은 2가지입니다. 우선 메모리 컨트롤러에선 DRAM의 타이밍에 맞춰 꼼꼼하게 신호 라인을 오갈 필요가 없어졌습니다.

 

좀 복잡한 이야기지만 CPU 뿐만 아니라 칩셋이나 주변 회로를 포함한 대규모 로직 회로는 동기 회로라 불리는 방식으로 설계되는 게 보통입니다. 이는 클럭 신호에 맞춰 로직 회로의 블럭이 동작하며 블럭 사이에서 데이터가 교환되는 방식입니다.

 

그런데 EDO DRAM까지는 신호 라인이 클럭 신호와 무관한 시점에 오가기에 이를 표준 동기 회로에서 처리하기가 어려웠습니다. 그것이 SDRAM이 되면서 메모리 신호가 동기 신호로 변하기에 별 어려움 없이 메모리 컨트롤러를 동기 회로로 설계할 수 있게 됐습니다.

 

한편 메모리의 속도도 이에 맞춰 빨라지게 됐습니다. SDRAM에서 내부 회로를 CPU와 함께 파이프 라인화하는 게 가능해졌기에 그렇습니다. 또 동시에 파이프 라인화에 따라 어드레스 버스가 명령 버스와 같이 사용할 수 있게 됐습니다. 

 

 

동작 모드를 명령으로 옮겨 보다 세밀한 동작이 가능

 

SDRAM의 파이프 라인화에 대해 설명하지요. DRAM~EDO DRAM 세대에서도 메모리 칩은 다양한 동작 모드를 갖고 있었습니다. 예를 들어 앞에서 말한대로 마이크론의 EDO DRAM 같은 경우는 12종류의 동작 모드가 있습니다.

 

EDO DRAM의 일부 동작 모드
Read Cycle, Early Write Cycle, Read-Write Cycle,
EDO-Page-Mode Read Cycle, EDO-Page-Mode Early Write Cycle,
Read Cycle with WE#-controlled disable, RAS#-only Refresh Cycle,
CBR Refresh Cycle, Hidden Refresh Cycle, Self Refresh Cycle

 

어느 동작 모드를 사용할지는 어드레스나 RAS/CAS와 OE(Output Enable 출력 지시), WE(Write Enable, 읽기나 쓰기를 지시), CS(Chip Select 작동하는 메모리 칩을 지시) 등, 신호 라인에 따라 결정하지만 이게 꽤 까다로운 일입니다.

 

그런데 SDRAM은 클럭 신호에 맞춰 주소가 나오는 시점이 정해져 있으니 RAS/CAS가 필요 없습니다. 그래서 어드레스 버스와 불필요해진 RAS/CAS 등의 신호 라인을 사용해서 주소를 꺼내기 전에 메모리에 명령을 보내는 방식을 쓰게 됐습니다.

 

메모리 입장에서 보면 명령을 받기 전에 디코딩하는 데 시간이 걸리기에 구조가 약간 복잡해집니다. 하지만 기존보다 훨씬 많은 동작 모드를 이용할 수 있게 됐습니다. SDRAM 같은 경우는 다음과 같은 명령이 있으며 이를 CS/RAS/CAS/WE와 BA0/BA1(뱅크 지정) 및 어드레스 버스의 일부를 써서 표현하도록 돼 있습니다.

 

SDRAM의 명령

Command inhibit(NOP), No operation(NOP), Burst Terminate,

Read, Read with Auto Precharge, Write,

Write with Auto Precharge:As above, and Precharge(close row)when done Activate,

Precharge, Precharge All, Auto Refresh, Load mode register

 

예를 들어 Load mode register 명령의 경우 명령을 보낼 뿐만 아니라 어드레스 버스의 나머지를 사용해 CL 값(CAS Latency)이나 버스트 전송의 크기를 지정하는 것도 가능합니다. EDO DRAM까지는 이러한 데이터를 보내는 방법이 애당초 없었기에 큰 진보라 할 수 있겠습니다.

 

 

뱅크를 늘려 고속화하는 DDR-SDRAM의 구조

 

SDRAM은 당초 동작 속도가 50MHz(20ns)에서 66MHz(15.15ns) 정도였습니다. 이후 점점 더 높아지는 고속화의 요구에 따라 100MHz(10ns)과 133MHz(7.5ns), 166MHz(6.67ns)를 거쳐 나중에는 200MHz(5ns)까지 높아졌습니다. 이 때는 제조 공정의 미세화도 진행됐지만, CPU 같은 로직 회로와 다르게 프로세스 미세화와 동작 속도의 고속화는 꼭 연동되는 건 아닙니다. 

 

고속화에서 문제가 되는 건 데이터를 저장하는 DRAM 셀이 트랜지스터+콘덴서로 구성됐다는 것입니다. 최종적으로 이 콘덴서의 성능을 올리지 못하면 속도가 높아지지 않는데 이건 공정 미세화와는 별 관계가 없습니다. 오히려 미세화에 따라 콘덴서의 용량이 줄어들면 전하의 휘발성이 심해지거나 트랜지스터 저항과 콘덴서 조합이 고속화를 방해해 성능이 떨어질 수도 있는 상황이었습니다.

 

이런 사정이 있다보니 DRAM 셀의 속도는 200MHz에서 더 이상 올라가지 않고, 다른 방법을 통해 고속화하는 방법을 생각하게 됩니다. 그것이 바로 DDR-SDRAM입니다.

 

DDR-SDRAM은 다들 알고 계신대로 클럭 신호가 동작과 동작하지 않음의 두가지 시점에서 데이터를 송신해 2배의 전송 속도를 실현하는 기술입니다. 이를 실현하기 위해서 메모리 내부에는 DRAM 셀 뱅크가 2개로 늘어났습니다.

 

12.png

 

DDR-SDRAM의 기본적인 구조

 

이 이미지는 설명을 위하 간단하게 그린 것이며 실제 메모리 칩의 구조는 더 복잡합니다. 원래 SDRAM은 내부가 4개의 뱅크로 분할되며 DDR-SDRAM도 뱅크의 수는 같습니다. 예를 들어 512Mbit SDRAM이라면 8192×4096×4라는 구성인데 512Mbit DDR-SDRAM에서는 8192×2048×8이 됩니다. 실제로는 2셀씩 동시에 접속하는 식이며 이를 Prefetch-2라고 부릅니다.
 

그럼 실제 전송은 어떻게 이루어질까요? 그걸 묘사한 것이 아래 이미지입니다. DDR-SDRAM이라 해도 처음 명령(Read)과 Row/Column의 전송은 SDRAM과 기본적으로 동일하지만 그 이후는 다릅니다.

 

13.png

 

DDR-SDRAM의 리드 사이클

 

Row/Column이 전달되면 각각의 Row/Column Decoder가 거기에 대응되는 셀을 정합니다. 이 때 Bank 0과 Bank 1 양쪽에 모두 Row/Column의 정보가 전달되므로 Bank 0과 Bank 1에서 동시에 데이터가 Data Bus Buffer로 나옵니다. 이미지에 Bank 0 Data와 Bank 1 Data라 표시된 것이 그것입니다.

 

이렇게 나온 데이터는 일단 Data Bus Buffer로 들어가지만 이 Data Bus Buffer가 클럭의 배속으로 동작하기에 클럭이 시작될 때 Bank 0의 데이터를, 꺼질 때 Bank 1의 데이터를 각각 출력합니다. 그 결과 원래의 2배 속도로 데이터를 출력한다는 구조입니다.

 

이러한 매커니즘으로 DDR-SDRAM에서는 DRAM 셀 자체를 고속화하지 않고 전송 속도를 올릴 수 있었습니다. 다만 전송 속도가 배로 늘었다는 건 신호의 속도도 배가 됐다는 것이며 확실하게 신호를 전달하기 위해 신호 전압(메모리 동작 전압)을 SDRAM의 3.3V에서 DDR-SDRAM은 2.5V로 내렸습니다. 또 새로 DQS(Data Strobe)라는 신호를 추가해 고속화한 데이터 신호의 안정성을 확보했습니다.

 

 

DDR는 8뱅크 DDR3에 이어 DDR4까지 도달. 그 다음은?

 

DDR-SDRAM과 마찬가지로 DDR2-SDRAM은 DRAM셀의 뱅크를 4배로 늘려 DRAM 셀의 속도는 같지만 4배속 데이터 전송이 가능합니다. 물론 하나의 클럭 신호에 맞춰서 4개의 데이터를 보내기 어렵기에 클럭 신호도 2배속으로 늘렸습니다. DDR2-400이면 200MHz, DDR2-800이면 400MHz라는 식입니다.

 

빨라진 신호에 맞춰 신호 전압은 1.8V가 됐습니다. 또 다이 위에 종단 저항(ODT:On Die Termination)을 탑재해 신호 파형을 안정시키고 성능에서도 프로토콜 개선 등이 포함됩니다.

 

DDR2를 두배의 속도로 높인 게 DDR#-SDRAM입니다. 8뱅크 동시 액세스 기술로 속도를 높였으며 전원 전압도 1.5V까지 낮췄습니다. 다만 이후에 나올 DDR4-SDRAM의 출시가 늦춰지면서 DDR3는 부득이하게 DDR3-2133까지 규격에 추가하고 신호 전압 1.35V의 저전력 스펙도 더했습니다.

 

지금까지는 기본적으로 메모리 칩에 대해 이야기했습니다. 허나 실제 PC에서 사용할 때는 메모리 칩이 아니라 SIMM이나 DIMM 형태의 모듈로 쓰게 되는데요. 다음번엔 그 이야기를 하도록 하겠습니다.

 

 

4. DIP~DIMM

 

앞에선 SDRAM의 등장부터 DDR3-SDRAM 까지의 진화를 대충 설명했지만 어디까지나 메모리 칩 자체에 대한 설명이었습니다. 허나 PC에서 사용하는 메모리는 칩이 아니라 DIMM 등의 메모리 모듈을 사용하는 게 일반적입니다. 이번에는 메모리 모듈의 진화에 대해 설명하고자 합니다.

 

 

DIP에서 SIP, 그리고 SIMM로 발전한 초기의 메모리

 

원래 최초의 PC인 IBM PC가 세상에 나왔을 때는 DIP(Dual Inline Package)라는 패키지로 DRAM 칩이 구현돼 있었습니다.

 

14.jpg

 

아두이노라는 8비트 마이크로 컨트롤러에 장착된 ATMEGA328이라는 DIP의 8비트 MCU. DIP의 DRAM은 안 남아 있네요.

 

DIP는 사진에 나온대로 길다란 플라스틱 몰드(금속이나 세라믹제도 있음) 양쪽에 단자가 나와 있는 반도체 패키지입니다. 이름 그대로 기판에 납땜하는 경우도 있고 사진에 나온대로 DIP 소켓으로 기판에 장착하는 경우도 있습니다.

 

최초의 IBM PC는 메인보드에 9개의 DRAM이 납땜되며 16KB 메모리를 구성(패리티 비트용 1바이트를 포함한 9비트 구성)합니다. 그 외 27개의 DRAM용 DIP 소켓이 있어 여기까지 메모리 칩을 장착하면 최대 64KB가 되는 구성입니다. 

 

당시엔 별 문제가 되지 않았지만 이후 PC/AT 호환 기종이 많이 등장하면서 더 많은 메모리를 탑재하게 되자, 더 쉽게 메모리를 증설하자는 요구가 나오게 됩니다. 여기에 맞춰 나온 것이 SIP와 SIMM입니다.

 

SIP는 Single In-line Package의 줄임말로 DIP의 단자가 한쪽에만 나와 있는 IC 패키지입니다. 다수의 메모리 칩을 기판에 모여 장착해 그걸 꽂는 SIP 모듈이라는 게 등장했는데요. 여기에는 자점과 단점이 각각 있습니다.

SIP 모듈의 장점
·기판에 수직으로 장착할 수 있어 실장 면적을 최소화
·기존 DIP와 같은 구조의 소켓에 연결할 수 있어 장착이 쉬움
 
SIP 모듈의 단점
- 메모리 칩과 기판의 무게에 비해 핀이 취약하기에 장착 후 구부러지거나 파손되기 쉬움
·핀 수가 많아 장착이 어려움

그래서 SIP에 비해 다소 패키지 비용은 비싸지만 기계적인 강도가 뛰어난 SIMM"(Single In-line Memory Module)이 등장하게 됐습니다.

 

 

JEDEC에서 표준화를 거친 30핀 SIMM이 PC의 주류로 등극

 

15.jpg

 

SIMM

 

SIMM은 전용 소켓이 필요하기에 SIP보다 가격이 비싸지만, 기계적 강도가 뛰어나고 착탈도 훨씬 쉽습니다.

 

이 SIP와 SIMM은 전자 부품규격의 표준화 단체인 JEDEC에서 표준화됐습니다. 허나 그 전에 여러 독자적인 규격에 만들어졌으며 그걸 그대로 넣어 비슷한 스펙이 몇가지 공존하게 됐습니다. 예를 들어 JEDEC Standard 21-C(JESD21-C)의 4.2 One Byte Memory Modules에서는 아래의 4가지(엄밀ㅣ 말하면 9가지)의 SIP/SIMM/ZIP가 정의됩니다.

 

4.2.1 - 22/24/30pin SIP/SIMM DRAM MODULE

4.2.2 - 30pin SIP/SIMM DRAM MODULE FAMILY

4.2.3 - 23/25/26/28pin ZIP/SIMM DRAM MODULE FAMILY

4.2.4 - 60/70pin ZIP/SIMM SRAM MODULE

 

참고로 ZIP(Zig-zag In-line Package)는 SIP와 비슷한 모듈로서 DRAM 칩을 탑재한 기판에서 나온 핀이 한줄이 아니라 서로 어긋나게 배치된 것입니다.

 

당시 SIP/SIMM/ZIP는 단순히 PC 뿐만 아니라 워크스테이션에서도 쓰였습니다. 당시엔 업체끼리의 호환성이 없는 독자적인 모듈이었으나 그리 문제가 되는 건 없었습니다. 표준 규격을 쓰게 해도 저렴한 호환품을 사거나 독자 규격의 비싼 정품을 사도록 하는 등 다양한 상황이 있었습니다. 허나 PC/AT 호환기종을 보면 30핀 SIMM을 쓰는 제품이 압도적으로 많았습니다.

 

당시 SIMM은 앞서 말한 JEDEC의 스펙에도 나온대로 1바이트, 즉 8비트 폭의 메모리 모듈입니다. 내부 구조는 4비트 폭의 DRAM 칩을 사용할 경우 2개가 1묶음이 됩니다. 2비트 폭의 칩이라면 4개, 1비트 폭이라면 8개를 탑재합니다. 어드레스 버스나 CAS/RAS 등의 신호 라인은 모든 칩이 공유하지만 데이터 버스는 칩마다 분할됩니다.

 

16.png

 

1바이트 SIMM의 구조

 

1바이트 SIMM이 등장하고 잠시 후에는 좀 더 데이터 폭이 넓은 SIMM이 필요하다는 이야기가 나왔습니다. 에를 들어 386세대에선 32비트 버스(386DX 계열)과 16비트 버스(386SX 계열)이 섞여 있었으나 486 이후엔 버스 폭이 32비트가 됐습니다. 8비트 폭의 SIMM은 증설 단위가 최소 4장이라 불편하기도 했습니다.

 

이에 따라 JEDEC에서는 16비트 폭의 40pin SIP/SIMM DRAM FAMILY와 60pin DRAM CARD FAMILY, 68pin MULTIPLE TECHNOLOGY MEMORY CARD FAMILY 같은 규격을 제정했습니다. 그러나 이들을 사용한 경우에도 32비트를 실현하기 위해선 최소 2장을 써야 하니 별 도움이 안됩니다. 결과 16비트 폭의 제품은 그리 보급되지 않고 32비트를 기록하는 72핀 SIMM이 널리 보급됩니다.

 

 

뱅크로 대용량화와 고속화를 누린 72핀 SIMM

 

17.png

 

4바이트 SIMM의 구조

 

72핀 SIMM의 대략적인 구조는 이 그림과 같습니다. 어드레스 라인과 각종 신호선은 공용이며, 데이터 라인을 DRAM 칩마다 분할하는 스타일인데 30핀 SIMM과 같습니다. 데이터 폭이 32비트가 됐다는 게 가장 큰 차이입니다. 이에 따라 메모리 증설을 할 때 SIMM을 1장 단위로 늘릴 수 있게 됐습니다.

 

72핀 SIMM에는 뱅크라는 개념도 추가됐습니다. 정확히 말하면 16비트 폭 60핀 SIMM에 뱅크 스펙이 추가됐으며 72핀에서 이를 계승한 것입니다. 아래 그림은 8비트 폭의 DRAM 칩을 사용했을 때 2뱅크 SIMM의 구조입니다.

 

18.png

 

4바이트 SIMM 2뱅크의 구조

 

원래 8비트 폭의 DRAM 칩이라면 4개로 32비트 버전을 고성할 수 있습니다. 하지만 4개만으로는 메모리 용량이 부족한 경우가 있어서 DRAM 칩의 수를 늘릴 필요가 있습니다. 이 때 CE0(Chip Enable 0)와 CE1라는 2개의 신호선을 사용해 대상으로 하는 DRAM을 선택함으로써 D0~D31의 32비트 데이터선을 공유할 수 있게 됐습니다.

 

이 뱅크 전환은 나중에 뱅크 인터리브라는 고속화 기술에서도 쓰입니다. 처음에 DRAM#1~#4과 #5~#8에서 동시에 리퀘스트를 내놓습니다. 그럼 일단 CE0을 설정해 DRAM#1~#4에서 출력한 후 CE1를 설정해 DRAM#5~#8을 출력시키는 방법입니다. 이에 따라 DRAM#1~DRAM#8까지 전체 액세스 시간을 다소 고속화할 수 있습니다.

 

이 72핀 SIMM이 보급됐을 당시에도  그것 외에 64핀 SIMM와 88핀 SIMM, 112핀 SO-DIMM, 100핀 DIMM 같은 몇몇 규격이 있었습니다. 64핀 SIMM은 매킨토시 II fx에서 쓰이기도 했으나 결국은 널리 보급되지 못하고 끝났습니다.

  

 

64비트 버스에 대응하는 DIMM이 등장

 

72핀 SIMM에 이어 등장한 것이 DIMM(Dual In-line Memory Module)입니다. SIMM과 DIMM의 가장 큰 차이는 신호 핀이 한쪽이냐 양쪽이냐는 것입니다. 사실 일부 SIMM에는 기판의 앞뒷면 모두에 신호 핀이 있었으나, 전기적으로 겉과 속은 이어지기에 실제로는 1줄밖에 신호 핀이 없는 것이나 마찬가지입니다.

 

한편 DIMM은 기판의 겉과 속에 서로 다른 신호 핀이 할당돼 있습니다. 결과적으로 72핀 SIMM와 처음 등장한 DIMM의 크기는 별로 변하지 않았으나 핀 수는 168핀까지 늘었습니다.

 

DIMM이 등장하게 된 가장 큰 이유는 버스 폭이 늘어나서입니다. 펜티엄 이후에 버스 폭이 64비트로 늘었기에 메모리 모듈도 1장으로 64비트 구성하면 좋겠지요. 그러나 SIMM은 핀 수가 부족하니 DIMM이 생긴 것입니다.

 

최초로 등장한 DIMM은 EDO DRAM을 탑재했으나 앞서 설명한대로 EDO DRAM이 바로 SDRAM으로 대체되면서 이 세대를 건너뛴 사람도 적지 않았습니다. 인텔의 펜티엄 2와 인텔 440LX/440BX 칩셋은 SDRAM을 전면적으로 채용한 첫세대 제품이 됐습니다. 여기에 맞춰 기존의 30/72핀 SIMM을 버리고 SDRAM DIMM로 갈아타는 경우도 많았습니다.

 

SDRAM이 등장한 후에는 SDRAM에서 DDR-SDRAM, DDR2와 DDR3로 변화했지만 메모리 버스 폭은 여전히 64비트였습니다. 그래서 DIMM의 물리적인 형태를 크게 바꾸지 않고 잘못 꽂는 일을 막기 위해 슬롯이 끊겨 있는 위치만 바꾸는 식으로 변화를 주었습니다.

 

19.jpg

 

위에서부터 DDR-SDRAM, DDR2-SDRAM, DDR3-SDRAM. 슬롯이 끊기는 위치가 점점 왼쪽으로 움직이고 있습니다.

 

허나 전기적으로는 큰 차이가 있기 때문에 DDR-SDRAM에서 DDR2-SDRAM의 세대로 가면서 JEDEC 표준을 따르게 됐는데요. 여기에 대해선 아래에서 좀 더 자세하게 설명하겠습니다.

 

 

DIMM 세대에서 추가된 2개의 기술. SPD와 ECC

 

SIMM에서 DIMM으로 발전하면서 여러 기능이 추가됐습니다. 그 중 하나가 SPD(Serial Presence Detect)인데요. 이것은 메모리 모듈에 메모리의 특징을 기록한 소용량 ROM을 넣어 정해진 방법대로 액세스하도록 만든 구조입니다.

 

칩셋은 메모리 모듈의 초기화 시점에서 이 SPD를 먼저 읽습니다. 그래서 메모리 특성에 맞춰 메모리 액세스 타이밍 등을 자동으로 조정할 수 있게 됩니다.

 

SPD 자체는 SDRAM에만 쓰이는 기술이 아니라 EDO DRAM과 FastPage DRAM 등에서도 이용 가능한 것입니다. 그러나 30핀 SIMM에 SPD가 탑재된 경우는 찾아보기 힘듭니다. 72핀 SIMM에 탑재된 경우도 극소수이며 EDO DRAM 기반의 DIMM에서도 실제로 SPD를 쓴 사례는 거의 없었던 듯 합니다. SPD가 널리 쓰이기 시작한 것은 SDRAM DIMM, 그것도 DDR-SDRAM부터가 아니었을까 싶습니다. 

 

또 옛날부터 널리 사용된 메모리 모듈로는 패리티/ECC용 9/36/72비트 SIMM/DIMM이 있습니다. 데이터 폭은 원칙적으로 8비트의 배수이기에 8/32/64비트 데이터 폭이면 됩니다. 예를 들면 노이즈가 많은 환경에서 배선이 노이즈가 끼어들어 잘못된 데이터를 인식하는 경우가 있는데, 8/32/64비트라면 그 데이터가 틀렸는지를 검출할 수 있습니다. 그래서 데이터에 패리티 비트를 넣어 최소 1비트로 오류를 검출할 수 있게 됐습니다.

 

이 1비트를 더하면 데이터 폭이 9비트니까 9비트 SIMM이 먼저 등장한 후 36비트(9비트 x4) SIMM이나 72비트(9비트 x8) DIMM등이 등장하게 됐습니다. 지금은 패리티를 발전시킨 더욱 강력한 에러 수정 방식이 쓰이는데 그것이 ECC(Error Correction Coding 또는 Error Check and Correction의 약자)입니다.

 

패리티 대응 DIMM의 경우 64비트 데이터에 8비트 패리티 영역이 있습니다. 이 패리티 영역을 사용해 해밍 부호라는 특수한 연산을 통해 더욱 강력한 에러 검출/수정 기능을 갖춘 것이 ECC입니다. DIMM은 여분의 패리티를 더한 게 전부이며 패리티와 ECC 계산은 칩셋에서 하게 됩니다.

 

ECC의 경우 해밍 부호를 할당하는 영역이 클수록 더 에러 검출/수정 능력이 높아진다는 특징이 있습니다. 그래서 JEDEC의 표준을 보면 9/18/36/72비트의 SIMM/DIMM 외에 10/20/40/80비트 SIMM/DIMM의 스펙이 준비됐습니다. 이걸 쓴 제품은 거의 없지만요.

 

그 외에 레지스터드 DIMM이란 기술도 있습니다. 아래서 봅시다.

 

 

5. 메모리의 대용량화를 뒷받침하는 기술 Registered DIMM

 

계속해서 메모리에서 쓰이는 기술에 대해 보도록 하겠습니다. 우선 레지스터드 DIMM입니다.

 

 

메모리 칩을 추가해도 안정적으로 동작하는 Registered DIMM의 구조

 

예를 들어 서버용의 경우 멀티 뱅크 메모리를 여럿 사용하겠다는 수요는 많습니다. 서버 전용 애플리케이션(데이터베이스라던가)의 경우 메모리 속도나 레이턴시의 미세한 차이보다 메모리 용량이 그대로 성능과 직결됩니다. 그래서 메모리를 잔뜩 넣고 싶다는 요구가 많으며 여기에 맞출 필요가 있습니다.

 

여기서 문제가 되는 것은 기존의 DIMM를 다수 썼을 때 신호 라인의 부하입니다. 아래 그림은 3장의 Non Parity 1-Bank DIMM을 장착한 경우인데, 하나의 메모리 칩이 8비트의 데이터 폭을 지원하기에 8개의 칩으로 64비트가 됩니다.

 

20.png

 

Non Parity 1-Bank DIMM(Unbuffered DIMM)의 신호 라인

 

그림의 D0~D63은 데이터 버스로서 3장의 DIMM을 연결하면 1개의 신호 라인에 3개의 메모리 칩을 계산해야 하는데 이 정도라면 별 문제가 안됩니다. 이게 2뱅크로 늘어나면 칩 수가 6개가 되나 여기까지도 문제가 안 됩니다. 문제는 빨간색으로 표시한 Address/Command 라인입니다.

 

Address/Command 라인은 하나의 DIMM에서 더 분기하기에 그림 1의 경우 8×3=24개의 메모리 칩에 신호를 전달할 필요가 있습니다. 이것이 패리티의 경우 27개로 늘어나며 2뱅크 구성에선 54개가 됩니다. Address/Command 라인이 구동하는 메모리 칩의 수는 데이터 버스에 비해 크게 늘어나게 됩니다.

 

그 결과 1개나 2개의 DIMM은 작동하지만 3~4장의 멀티 뱅크 타입 DIMM을 이용하는 경우 오동작을 일으키게 됩니다.

 

이에 대한 해결책이 DIMM에 레지스터(버퍼)을 두고 여기서 신호를 만든다는 것입니다. 아래 그림처럼 DIMM에 작은 레지스터를 두고 Address/Command의 신호를 일단 여기서 받습니다. 그리고 레지스터에서 각각의 메모리 칩에 분배합니다. 이에 따라 Address/Command의 신호는 IMM당 1개의 레지스터만을 구동하면 되니 데이터 버스와 같은 조건인 셈입니다.

 

21.png

 

Registered DIMM의 신호 라인. DIMM에 있는 빨간 사각형이 레지스터.

 

이 레지스터를 탑재한 DIMM을 Registered DIMM, 탑재하지 않은 DIMM을 Unbuffered DIMM이라고 부릅니다. Registered DIMM에서는 패리티의 유무나 뱅크가 버퍼에 영향을 줍니다. 그래서 Address/Command 라인도 데이터 버스와 같은 조건인 뱅크 증가와 패리티의 영향을 받지 않습니다. 오히려 데이터 버스에선 뱅크의 수에 맞춰 구동하는 메모리 칩의 수가 늘어나는데 비해 Address/Command는 레지스터가 처리하니 그 수가 늘지 않습니다. 그래서 뱅크는 Registered DIMM 쪽이 유리합니다.

 

22.png

 

멀티 뱅크에서 Unbuffered DIMM(왼쪽)과 Registered DIMM(오른쪽)신호 라인의 차이. 빨간색 선이 Address/Command 선이며 파란색선은 데이터 버스

 

 

레이턴시가 길고 가격도 비싸다. Registered DIMM이 PC에서 사용되지 않는 이유

 

Registered DIMM에도 물론 단점은 있습니다. 우선 레지스터를 거치기에 Address/Command의 신호에 약간의 딜레이가 더 발생하게 됩니다. 이를 커버하기 위해선 레지스터의 딜레이 만큼 메모리 컨트롤러가 빠르게 신호를 보내거나 데이터 측의 타이밍을 약간 비틀어 조정하는 수밖에 없습니다.

 

일반적으로는 데이터의 타이밍을 늦추는 게 편합니다. 그래서 Unbuffered DIMM을 예로 들면 PC100 CL2에서 작동하던 메모리 칩을 Registered DIMM에 넣었을 경우 PC100 CL3로 동작시키게 됩니다. 대용량 메모리를 탑재하는 서버 분야에선 이 정도의 단점은 크지 않지만 소용량 고성능이 중요한 PC에선 Registered DIMM을 쓰지 않을 이유가 됩니다.

 

또 칩을 추가했으니 가격이 오를 수밖에 없습니다. 실제로 Registered DIMM을 필요로 하는 곳은 서버 뿐이라 당연히 생산 수량도 적고 가격도 비싸지게 됩니다. 이 또한 PC에서 쓰이지 않는 이유가 됩니다.

 

참고로 Registered DIMM만 지원한다던가 Unbuffered DIMM만 지원한다고 표기한 칩셋은 많지만 신호 레벨에서 보자면 두 경우는 같습니다. 지원의 여부는 오직 검증 과정이 들어가느냐 그렇지 않느냐에 따라 갈립니다. 보통의 PC는 일반적으로 Registered DIMM 테스트를 안 하며 서버는 반대로 Unbuffered DIMM을 지원하지 않는 경우가 많습니다. 그래서 DIMM의 SPD를 보고하지 않는 방식의 메모리는 레이턴시를 두는 방법을 도입하는 게 일반적입니다.

 

 

고속 메모리에서 빼놓을 수 없는 메모리 버스 터미네이터 저항

 

이야기를 되돌려서 DDR 세대 이전에는 어땠는지를 봅시다. SDRAM에 이어 DDR-SDRAM의 세대가 찾아오면서 DDR2/DDR3으로 발전해 왔지만 그 여정은 쉽지 않았습니다.

 

SDRAM에서 DDR-SDRAM로 오면서 신호 속도가 두배로 빨라지면서 신호 전달 문제가 많이 나왔습니다. 우선 반사의 문제입니다. 그릇에 물을 붓고 수면 중앙을 손가락으로 흔들면 파문이 발생해 밖으로 퍼져 나갔다가 그릇의 안쪽 벽에 부딛히면 다시 중앙으로 돌아오게 됩니다. 이 어딘가에 부딪혀 돌아온다는 성질은 전기도 마찬가지입니다.

 

아래 그림처럼 메모리 컨트롤러에서 2장의 DIMM이 장착된 경우를 예로 들어 봅시다. 어떤 신호 라인에서 메모리 컨트롤러의 포트 A와 DIMM#1의 B, DIMM#2의 C가 어떤 파형을 내는지를 생각해 봅시다.

 

23.png

 

신호 반사의 설명

 

우선 T=0의 시점에 A의 신호가 나옵니다. 이는 약간의 시간차(배선 위를 신호가 통과하는데 필요한 시간)를 두고 T=1의 시점에서 B에 닿아 더 시간이 흐른 T=2가 되면 C에 도달합니다. 문제는 C까지 온 다음입니다. 신호는 C에서 막다른 곳에 막히게 되니 여기서 반사파가 발생하고 B로 돌아갑니다(그림의 빨간 부분). 즉 T=3의 시점에서 DRAM#1에는 메모리 컨트롤러에서 온 신호와 DRAM#2에서 돌아온 반사파까지 2개가 서로 엉키게 되는 것입니다.

 

이 문제를 피하기 위해 DDR-SDRAM에서는 메인보드의 배선에 터미네이터(종단 저항)이라는 것을 넣습니다. 아래 왼쪽은 SDRAM, 오른쪽은 DDR-SDRAM 메모리 슬롯입니다. DDR-SDRAM은 슬롯의 위쪽에 여러 부품이 장착돼 있는게 그것이 터미네이터이다.

 

24.png

 

AOpen의 메인보드인 AX63 Pro의 DIMM 슬롯. 칩셋에서 온 배선은 DIMM 슬롯에서 끝납니다.

 

25.png

 

ULi의 칩셋인 M1695/M1567의 레퍼런스 메인보드의 DIMM 슬롯. CPU에서 나온 메모리 배선이 그대로 뻗어 DIMM 슬롯에 연결되며, 그 위에는 작은 터미네이터 저항(빨간색 테두리로 표시)으로 이어집니다.

 

즉 신호의 파도가 반사돼 돌아오니 문제가 생기는 것이며, 따라서 신호 선의 끝에 저항을 부착해 신호를 감쇠시키면 반사의 영향이 없어지게 됩니다.

 

 

메모리의 고속화에서 비롯된 기판의 신뢰성 문제

 

반사파 뿐만 아니라 메모리의 신뢰성 문제에는 거버(Gerber)가 있습니다. 거버는 컴퓨터 업계에서 기판 설계 데이터를 가리키는 데 쓰는 단어입니다. 단순한 기판 배선도 외에도 각각의 재질이나 경우에 따라선 제조 방법까지 포함하는 경우도 많습니다.

 

SDRAM 시절까지 메모리 칩 제조사는 전자 부품 규격의 표준화 단체인 JEDEC에서 정한 스펙을 충족시키는 칩을 출하하고, 그걸 메모리 모듈 제조사가 구입해 자신들이 만드는 DIMM 기판에 장착해 판매하는 식이었습니다. 당시엔 DIMM 기판에 따라 차이가 그리 크지 않았습니다. 타이밍의 여유가 충분하고 신호의 전압도 높아서 노이즈의 영향에 비교적 강한 점도 있습니다.

 

그런데 DDR-SDRAM 시대가 오면서 신호가 최대 3배로 빨라져(PC133과 DDR-400의 비교) 기판 회로의 사소한 부분이 신호 전달에 큰 영향을 주게 됐습니다. 또 메인보드에 종단 저항을 붙이는 건 물론 DDR-333 DIMM 이후의 DIMM에도 칩 저항을 탑재할 필요가 생겼습니다.

 

26.png

 

JEDEC 스펙을 준수하는 PC-2700 DIMM

 

27.png

 

빨간색 테두리 안의 RP4가 PC-2700에서 추가된 저항입니다.

 

이러한 설계와 호환성 확보의 어려움을 감안하여 JEDEC은 DIMM의 표준 거버를 책정했습니다. 일본에서는 지금의 버팔로가 이 JEDEC 표준 거버 책정에 참가했습니다.

 

다만 이 JEDEC의 표준 거버를 사용하면 안정성은 높지만 가격도 비싸집니다. 그래서 한때는 다양한 DIMM 제품이 섞이는 상황도 발생하게 됐는데요. 브랜드가 없으며 오작동을 내는 제품과 메이커가 확실하고 믿을만한 제품은 가격이 4배까지도 차이가 나게 됩니다.

 

JEDEC 표준 거버와 표준 DDR-SDRAM 칩을 탑재

JEDEC 표준 거버를 쓰지만 칩은 규격 외

JEDEC 표준 거버에 비표준 저항을 탑재

독자 거버에 표준 DDR-SDRAM 칩으로 호환성을 확보

독자 거버에 칩도 규격 외

 

이 상황을 다소 완화시킨 것은 메모리의 트렌드가 DDR에서 DDR2로 이행하면서 기술력은 모자라지만 가격으로 승부했던 회사들이 퇴출된 것을 꼽을 수 있습니다. 아무리 싸도 제대로 작동하지 않는 제품이 외면당한 셈입니다. 한때 '궁합을 보장'하는 제품을 얼마 더 받고 팔았던 것도 호환성이 부족해서 나온 현상입니다.

 

DDR-SDRAM에서 DDR2-SDRAM으로 이행할 때는 SDRAM에서 DDR-SDRAM로 올 때처럼 혼란은 없었던 것처럼 보였습니다. 그러나 신호 속도가 2배가 된다는 건 당연히 신호의 파동에 따른 여유 폭도 절반이 된다는 이야기입니다. 게다가 전압을 2.5V에서 1.8V에 내림으로써(DDR-400만 2.6V) 노이즈 내성도 같이 낮아져 DIMM이나 DIMM 슬롯의 조정이 더욱 어려워졌습니다.

 

DIMM의 호환성 문제는 이런 과정을 거쳐 많이 줄어들었지만 완전히 사라지진 않았습니다. XMP DDR3 DIMM이 AMD 890FX 칩셋 메인보드에서는 잘 작동하는데 인텔 P67 익스프레스 칩셋 메인보드에선 POST를 제대로 표시하지 못하는 경우도 있었다고 필자는 말하네요.

 

DDR2 세대에선 기술력을 갖춘 업체가 돈을 들여 적극적으로 거버를 확장하는 경우도 있었습니다. 아래 슬라이드는 미국 커세어의 메모리인 도미네이터 시리즈입니다.

 

28.jpg

 

오버클럭 동작을 전제로 두고, DRAM 칩을 표면의 히트싱크 외에 DIMM 기판의 배선을 거쳐 적극적으로 분산한다는 메모리 모듈 컨셉(IDF에서 커세어의 강연 자료)

 

29.jpg

 

이 컨셉에 따른 DIMM의 위쪽을 보면 히트싱크에 연결하는 거대한 패드가 있습니다. 도미네이터 시리즈 메모리가 큰 이유는 단순히 히트싱크 외에도 DIMM 기판 자체가 크기 때문입니다.

 

이는 커세어가 DHX(Dual-path Heat eXchange)라고 부르는 메모리 모듈의 컨셉입니다. 메모리를 오버클럭하는 걸 전제로 해서 보다 높은 방열 효율을 갖춘 기판을 독자적으로 설계했다는 이야기입니다. 이와 비슷한 건 오버클럭 제품을 발표하는 주요 메모리 제조사라면 하나씩 갖고 있습니다.

 

여기에 더해서 DDR3 세대에서는 내부 재검토도 했습니다. 예를 들어 DDR3에서는 Fly-by라는 새로운 전송 방식을 채용하고 있습니다. 이것은 DIMM의 배선에 맞춰 DRAM 칩에서 타이밍을 조정하는 구조입니다. 이에 따라 칩끼리 배선 지연에 따른 편차를 흡수한다는 것입니다.

 

이처럼 DIMM에는 다양한 기술이 있지만 DDR3 세대는 큰 벽에 부딪혔고 본격적인 DDR4 세대가 오기까진 아직 시간이 있습니다. 다음번엔 FB-DIMM에 대해 설명하겠습니다.

  

 

6. 많은 장점이 있었지만 소송과 경쟁 때문에 사라진 FB-DIMM

 

이번엔 많은 기대를 모았으나 결국 사라진 FB-DIMM(Fully Buffered DIMM)에 대해 봅시다.

 

 

점점 더 빨라지는 메모리에서 드러나는 신호 파형의 감쇠 문제

 

FB-DIMM의 아이디어는 앞서 설명한 레지스터드 DIMM에서 한발 더 나아간 것이라 생각하면 됩니다. 전회 Registered DIMM은 Address/Command를 버퍼를 통해 메모리 칩에 보냄으로써 보다 다수의 DIMM을 연결할 수 있도록 한다는 아이디어였습니다.

 

그러나 신호 속도가 더욱 빨라지면서 Address/Command 만 아니라 데이터 신호에서 정밀도를 유지하기가 어려워졌습니다. 아래 그림은 이를 알기 쉽게 다소 과장해서 그린 것인데요. 기판 위에 메모리 컨트롤러와 2장의 DIMM이 장착된 경우를 상정하고 있습니다.

 

30.png

 

메모리 컨트롤러에서 나온 신호가 감쇠하는 모습

 

메모리 컨트롤러에서 나온 시점에 신호는 모두 디지털 신호이지만 DIMM 시점에서 보자면 신호는 상당히 둔화됩니다. DIMM이 2개가 되면 신호의 변화는 더 큽니다. 이는 모두 속도에서 비롯된 문제입니다.

 

DDR-SDRAM 세대에서는 1채널 당 DIMM 3장이란 구성이 PC에서도 가능했으나 DDR2-SDRAM 세대 이후에는 1채널 당 DIMM 2장까지로 제한되기 시작했습니다. 이는 데이터 속도가 빨라지면서 3장 이상의 DIMM에서 신호의 변동이 너무 커진다는 문제 때문입니다.

 

이 신호의 변동은 여러 대책을 세워뒀습니다. 가장 유명한 것으로는 신호에 미리 Pre-Emphasis를 넣어 송신하거나 수신 쪽에서 보정하는(이퀼라이저)같은 방법이 있습니다.

.

Pre-Emphasis는 잠복 신호의 사전 보정입니다. 메모리 컨트롤러에서 깨끗한 신호를 보내도 두번째 DIMM에선 파형이 무너집니다(아래 그림의 첫번째). 이 파형을 정돈시키려면 무너지는 파형과 반대 위상의 신호를 보내면 됩니다. 아래 그림에서 빨간선으로 표시한 것이 그것입니다. 이렇게 하면 두번째 DIMM에서도 깨끗한 파형이 출현하게 됩니다.

 

31.png

 

Pre-Emphasis의 개념도. 파형이 어지러워질 것을 전제로 두고 반대 위상의 보정 신호를 미리 넣어서 송신. 

 

거꾸로 이퀄라이저는 파형이 흐트러지는 걸 전제로 하여 그 흐트러진 결과를 보고 원래 파형을 재현하는 방식입니다.

 

문제는 이러한 수단이 별로 실용적이지 않다는 것입니다. 예를 들어 Pre-Emphasis의 경우 두번째 DIMM에 맞춰 파형을 보정하면 첫번째 DIMM에서는 반대 방향으로 변화된 파형이 됩니다. 다수의 DIMM이 하나의 메모리 채널에 연결된 구조에서는 강력한 Pre-Emphasis를 넣어 신호를 보낼 경우 오히려 문제가 됩니다.

 

또 이퀄라이저는 메모리 컨트롤러 같은 로직 회로에 넣는 건 그리 어렵지 않으나 DRAM 칩은 원래 그런 복잡한 회로를 내장하는 걸 전제로 한 제조 공정이 아닙니다. 그래서 실제로 쓰긴 어려우며 제조 단가도 많이 비싸지니 이것도 좋은 방법은 아닙니다.

  

 

해결 방법과 댓가의 균형을 잡기 어려운 DRAM 신호 감쇠와 노이즈 문제

 

또 신호 속도가 높아지면 그동안 DRAM에서 사용된 싱글 엔드 데드 전송(1개의 신호 라인으로 신호를 전송하는 방식)에서 노이즈의 영향을 받기 쉬워진다는 단점도 있습니다. 아래 그림을 봅시다.

 

32.png

 

싱글 엔드 데드의 신호 파형이 받는 노이즈의 영향

 

원래 신호에 노이즈가 끼면 합계 파형(오른쪽의 파란 선)은 상당히 복잡한 양상을 보이게 됩니다. 하이 레벨은 논외로 하더라도 로우 레벨에서 노이즈의 영향을 많이 받는 게 문제입니다. 옛날에는 신호 파형에서 높고 낮음의 전위차가 커서 약간의 노이즈가 낀다 해도 영향을 받지 않았습니다. 그러나 속도를 높이기 위해 전압 레벨을 떨어트리면서 상대적으로 신호가 노이즈의 영향을 받기 쉬워졌습니다.

 

이를 해결하기 위해 디퍼런셜 전송(2개의 신호 라인으로 전송하는 방식)이 널리 쓰입니다. 아래 그림을 보면 2개의 신호 라인을 써서 신호를 보내고 있습니다.

 

33.png

 

디퍼런셜 전송 신호 파형

 

디퍼런셜 전송은 2개의 신호 라인에 모두 노이즈가 낀다 하더라도 수신하는 쪽에서 노이즈의 영향을 줄일 수 있습니다. 또 신호의 전압 그 자체를 싱글 엔 데드보다 낮추기 쉽다는 장점도 있어 보다 고속화에 적합합니다. 문제는 일반적인 DRAM 칩이 디퍼런셜 전송을 지원하지 않는다는 겁니다.

 

그 이유는 간단합니다. 신호 라인의 수가 2배로 늘어나 그렇습니다. 이로써 DRAM 패키지가 커지고 배선을 넣는 데 시간이 필요하니 그만큼 제조 원가가 비싸질 수밖에 없습니다. 또한 DRAM 그 자체도 복잡해지면서(이퀄라이저 정도는 아니지만) 더욱 제조 단가가 비싸지는 것입니다. FB-DIMM은 이들을 모두 정리해 해결하는 아이디어입니다.

 

 

신호 문제를 해결하는 FB-DIMM의 구조

 

34.jpg

 

FB-DIMM. 2006년에 판매된 제품과 전시 샘플

 

35.jpg

 

AMB

 

FB-DIMM의 기본적인 구조입니다. 모든 FB-DIMM에는 AMB(Advanced Memory Buffer)라는 버퍼가 탑재됐으며 DIMM의 메모리 칩은 이 AMB에 액세스합니다. 메모리 컨트롤러는 이 AMB와 연결돼 메모리 버스는 하행 10비트 폭, 상행 14비트 폭의 디퍼런셜 전송으로 구성되며 각각의 AMB는 디지 체인으로 최대 8개까지 연결됩니다.

 

36.png

 

FB-DIMM의 구조

 

FB-DIMM에서는 지금까지 말한 문제가 거의 해결됩니다. 우선 신호를 빠르게 하는 것은 메모리 컨트롤러가 AWB하고만 연결되니 싱글 엔드 데드 전송에 구애받지 않고 디퍼런셜 전송을 쓸 수 있습니다. 신호 라인의 수가 늘어나는 문제는 신호의 속도를 올리는 방식으로 해결했습니다. FB-DIMM의 경우 메모리 컨트롤러와 AMB는 6배의 속도로 동작합니다.

 

예를 들어 DDR2-533 메모리 칩을 사용할 경우 신호의 속도는 533×6=3.2GHz로 구동합니다. 그래서 하행 속도는 3.2GHz× 10bit=4GB/초, 상행은 3.2GHz× 14bit=5.6GB/초라는 대역이 확보됩니다. DDR2-533 DIMM의 원래 대역은 4.3GB/초니까 충분히 이를 넘는 대역이 확보되고 있습니다. 게다가 신호 라인의 수는 모두 69개(상하행 외에 별도의 클럭이 필요하기 때문)로 기존의 Unbuffered DIMM/Registered DIMM을 사용했을 때보다 많이 적어집니다.

 

또 AMB 간에 신호를 중계해 DIMM의 수를 늘려도 신호가 열화하지 않습니다. 그래서 1채널 당 DIMM 수를 크게 늘릴 수 있으며 이걸로 시스템 전체의 전체 메모리 용량을 크게 높일 수 있었습니다.

 

 

왜 FB-DIMM이 보급되지 않았는가?

 

장점만 가득한 것처럼 보이는 FB-DIMM은 실제로 사용 과정 중에 단점이 드러나 결국 보급이 잘 되지 않았습니다.

 

먼저 문제가 된 것이 AMB 자체의 가격입니다. AMB는 인텔 외에 NEC 일렉트로닉스(지금은 르네사스 일렉트로닉스), IDT, Inphi 등의 제조사가 제공했지만, 애시당초 인텔보다 먼저 샘플을 내놨던 텍사스 인스트루먼트가 도중에 AMB의 제공을 중단했습니다. 이유는 여러가지가 있으나 제조 비용과 시장의 문제로 볼 수 있겠습니다.

  

FB-DIMM을 보급시키기 위해선 AMB의 가격을 저렴하게 해야 하겠으나 그러면 제조사의 이윤이 줄어듭니다. 물론 AMB가 (당초 인텔이 기대한 정도로) 널리 보급되면 양산 효과도 기대할 수 있었습니다. 그러나 여러 문제가 드러나면서 시장 규모 자체가 그리 기대할 수 없게 됐습니다. 이쯤 되니 TI가 양산에서 손을 떼는 것도 무리가 아닐 것입니다. 결과적으로 AMB의 제조 원가와 맞물려 FB-DIMM은 Registered DIMM처럼 서버 시장 전용 메모리 모듈이 되고 말았습니다.


다음에 문제가 된 것은 AMB의 발열입니다. AMB 자체는 비교적 단순한 버퍼지만 동작이 신호 속도와 같은 3.2GHz(DDR2-533의 경우)나 4GHz(DDR2-677)다보니까 발열이 만만치 않습니다.


일단 히트싱크를 장착하는 것으로 대처했으나 최종형에 도달하기까지 3년 동안 여러가지 히트싱크가 등장하게 됐습니다. 그래도 처음엔 발열이 너무 많아 연속 사용 시 메모리 동작이 불안정해졌고, 랙에 넣을 경우 시스템 전체의 발열이 문제가 됐습니다.

 

37.jpg

 

NEC가 처음부터 사용했던 AMB용 히트싱크. 가장 완벽한 방안이지만 비쌉니다.

 

38.jpg

 

인텔이 레퍼런스로 쓴 히트싱크. 단순하게 구리판을 고정한 것으로 저렴하나 효과가 부족합니다.

 

39.jpg

 

독일 인피니언의 샘플. 너무 두꺼워서 여러 DIMM 슬롯을 연달아 장착할 수 없으니 실용적이지 못합니다.

 

그flrh 2007년 부터는 FB-DIMM이 시스템의 소비 전력을 높인다는 지적이 나오면서 발열이 아닌 전력의 문제로 주제가 바뀌게 됩니다.

 

40.jpg

 

결국엔 DIMM 전체를 가리는 커버를 사용합니다.

 

마지막으로 성능 문제도 있습니다. FB-DIMM는 용량 문제를 확실하게 해결했으나 그 대신 성능, 특히 메모리 액세스의 딜레이가 매우 크다는 문제가 나왔습니다. 어찌 보면 당연한 이야기인데 AMB를 경유하는 시점에서 어느 정도 레이턴시가 늘어나는 것은 불가피한 것입니다. 특히 FB-DIMM을 8장도 장착하면 메모리 리퀘스트를 냈을 때 최악의 경우 이런 순서로 명령이 오가게 됩니다.

 

하행: 컨트롤러 → AMB#1→ AMB#2→……AMB#8→ DRAM

상행: DRAM→ AMB#8→ AMB#7→……AMB#1→ 컨트롤러

 

즉 왕복에서 총 14번이나 여분의 AMB를 경유하게 됩니다. AMB를 1번 경유할 때 생기는 딜레이를 1사이클이라고 해도(실제로는 좀 더 큽니다) 총 14 사이클 정도 딜레이가 생기는 것입니다. 이에 따른 성능 저하는 피할 수 없습니다.

 

 

소송 문제로 큰 타격을 입고 DDR3의 등장으로 쐐기가 박히다

 

이것만으로도 FB-DIMM의 보급에는 문제가 있는 것처럼 보이는데 여기에 이어지는 두가지 사건은 FB-DIMM의 관뚜껑에 못질을 했습니다. 하나는 미국 램버스와의 특허 문제입니다. FB-DIMM의 시장이 커지기 직전인 2005년 후반에 램버스가 FB-DIMM 관련 제조사를 대상으로 AMB는 램버스의 특허에 걸린다고 주장한 것입니다.


이 특허는 다음에 설명할 Direct RDRAM과 관계된 것입니다. 처음에는 인텔이 조정에 나섰으나 실패했고, 이 시점에 FB-DIMM은 JEDEC 표준 규격이었지만 이걸 쓰기 위해 램버스와 개별적으로 라이센스 계약을 맺을 필요가 생겼습니다. 당연히 라이센스가 제품 원가에 반영되며 그렇지 않아도 비싼 FB-DIMM이 더 비싸지게 됐습니다.


또 하나의 타격은 DDR3의 보급입니다. 원래 2003년의 인텔 로드맵에서는 DDR2-800이 실현될지 확실치 않으니 이 때부터 FB-DIMM로 건너간다는 것이었습니다.

 

41.jpg

 

2003년의 가을 IDF에서 공개된 인텔의 메모리 로드맵. 이 시점에 RDRAM은 이미 주류에서 벗어났습니다.

 

그런데 3년 후인 2006년에는 위 로드맵처럼 바뀌고 말았습니다. 인텔의 계획이 빗나가  FB-DIMM와 별도로 DDR2와 DDR3이 보급된 것입니다.

 

42.jpg

 

2006년 가을의 IDF 로드맵

 

이렇게 되면 FB-DIMM이 갖고 있던 고속 전송이란 장점이 사라지고 메모리의 용량을 늘릴 수 있다는 것만 남게 됩니다. 그래도 이 시점에서는 FB-DIMM2라는 DDR3 세대의  FB-DIMM을 개발할 계획이 있었으나 반년 후에는 이것도 로드맵에서 사라지고 말았습니다.


더 엄밀히 말하면 이는 AMB를 모듈에 탑재하는 걸 포기했다는 말이기도 합니다. 2010년에 인텔은 네할렘-EX 기반인 제온 7500 시리즈를 발표하는데요. 이 제온 7500 시리즈는 메모리 버스에 SMB"(Scalable Memory Buffer)라 불리는 칩이 있고 그것이 Registered DDR3 DIMM에 이어지는 방식입니다.

 

43.jpg

 

제온 7500의 데이터 시트 Volume 2, Figure 9-2에서 인용. SMI는 Intel Scalable Memory Interconnect의 줄임말입니다. 설명을 보면 Formerly FMD2 or Fully Buffered DIMM 2 interface라 표기.

 

다시 말해서 AMB의 DDR3 버전이 SMB가 되니까 구조적으로는 FB-DIMM에 가깝습니다. FB-DIMM에서 문제가 된 디지 체인 기반 메모리 액세스 레이턴시를 해결하기 위해 메모리의 접속 방법은 크게 달라집니다. 


다음은 문제가 많았던 Direct RDRAM에 대해 해설합니다.

 

 

7. Direct RDRAM은 왜 PC에서 실패했는가?

 

이번에는 널리 보급되지 못했던 램버스의 메모리 기술 다이렉트 RDRAM에 대해 보도록 하겠습니다. 

 

 

RDRAM의 컨셉: 신호의 고속화로 좁은 버스에서도 빠르게 전송하는 것

 

원래 램버스는 회사 이름대로 (Ram+bus) DRAM에서 사용하는 인터페이스를 다루는 걸 목적으로 1990년에 설립된 회사입니다. 최근에는 DRAM이라는 분류를 넘어서 고속 신호 전송 기술 전반을 아우르는 회사가 됐지요. 그래서 광범위한 아날로그 기술의 특허를 갖고 있으며 특허 소송에 자주 등장하곤 합니다. 그러다보니 다양한 표준화 단체(JEDEC와 PCI-SIG등)과 사이가 좋다고 말할 수 없는 회사이기도 합니다.


램버스는 지금까지 5세대의 메모리 기술을 발표했으며 그 중 4개 세대는 상품화가 됐습니다. 처음에 등장한 것이 RDRAM(Rambus DRAM, Base RDRAM 이라고도 부름)이며 뒤이어 성능을 높인 Concurrent RDAM이 등장했고 3세대인 Direct RDRAM에서는 PC용 메모리로 채용됐습니다.


이 Direct RDRAM에서 큰 폭으로 구성을 바꾼 것이 PS3에서 채택된 바 있는 4세대 제품 XDR DRAM입낟. 지금은 5세대인 XDR2 DRAM까지도 나왔지요.


다만 램버스는 어디까지나 기술을 제공하는 회사입니다. 실제 제품은 램버스에서 IP 라이센스를 받은 메모리 칩 제조사(삼성, 엘피다)와 그 외의 메모리 컨트롤러 제조사(인텔, 도시바) 등이 램버스의 기술을 넣으 생산하게 됩니다. 


1세대 Base RDRAM에서 3세대 Direct RDRAM까지 특징을 정리한 것이 아래의 표입니다. XDR DRAM은 이런 범주에서 벗어난 제품이기에 여기서 뺐습니다.

 

Base RDRAM Concurrent RDRAM Direct RDRAM
최대 동작 속도 500MHz(250MHz DDR) 667MHz(333MHz DDR) 1066MHz(533MHz DDR)
데이터 버스 폭 9bit 18bit
주소 지정 데이터 버스를 시분할 다중 어드레스 라인을 이용
뱅크 수 최대 4뱅크 최대 64뱅크
인터리브 없이 최대 2단/칩 최대 4단/칩
전원 전압 3.3V 2.5V
신호 전압 2.5V 1.8V
신호 진폭 1.0V 0.8V
최대 신호 지연 0.7사이클 3사이클

 

1~ 3세대의 특징을 단적으로 말하자면 버스 폭을 줄이는 대신 전송 속도를 높여 보다 높은 대역을 확보하는 것입니다. 기존의 FP DRAM부터 SDRAM까지를 보면 전송 속도를 높이기가 어려워대역을 늘리기 위해 버스 폭을 넓힐 필요가 있었습니다. 그 결과 64비트 폭의 DIMM이 쓰이면서 더욱 대역폭을 높이기 위해 멀티 채널 메모리 버스를 도입하게 됐는데요. 이는 배선 수의 증가로 이어지기에 설계와 구현이 힘들었습니다. 64비트라면 4~8개, 128비트라면 8~16개의 DRAM이 필요하다는 제한도 있습니다. 


이를 역이용해서 회로 기술과 패키지 기술을 최적화해 신호 속도를 높여 버스 폭이 좁아도 필요한 대역을 확보한다는 게 RDRAM입니다. 표를 보면 그 점이 분면하게 드러납니다. Base RDRAM과 Concurrent RDRAM은 9비트(패리티 포함. 그렇지 않으면 8비트), Direct RDRAM에서도 18비트(마찬가지로 16비트)라는 좁은 버스 폭에도 불구하고 전송 속도가 500~800MHz로 빠르기에 전체적인 대역폭은 비슷한 시기의 다른 DRAM 기술을 넘어섰습니다.


여기서 중요한 건 DRAM 칩의 수를 대폭 줄이면서도 대역을 확보할 수 있다는 점입니다. Base RDRAM은 미국 Chromatic Research의 미디어 프로세서 MPACT!에, Concurrent RDRAM은 닌텐도의 닌텐도 64와 시러스 로직의 GD546x 그래픽 칩에, Direct RDRAM은 PS2에 채용됐습니다.


이들 제품은 모두 높은 대역폭이 필요하지만 전체적으로 필용한 메모리 용량은 그리 많지 않고 비용 절감을 위해서라도 칩의 수가 적을수록 좋은 제품입니다. 여기에 RDRAM의 아키텍처는 잘 들어맞는 것이지요. 허나 이를 PC용 메모리에 쓰려 하자 문제가 복잡해졌습니다. 

 

 

분기를 배제하는 고속화 방법

 

44.png

 

다이렉트 RDRAM의 구조

 

위 그림은 Direct RDRAM의 기본적인 구조입니다. Base RDRAM과 Concurrent RDRAM은 배선 수를 줄일 목적으로 Data와 Address/Command를 분할해 다중화하는 정교한 구조를 씁니다. Direct RDRAM에서 전송 효율을 높이기 위해 Data와 Address/Command를 분할하면서 배선 수는 더 늘어납니다.


Direct RDRAM은 1채널의 신호 라인에 최대 64개의 메모리 칩을 연결합니다. Data와 Address/Command는 종단 저항을 넣어 반사파를 줄였으며 이는 나중에 나오는 DDR 메모리도 같은 방법을 채용합니다. 반면 송수신에 이용하는 클럭 신호는 끝으로 되돌아가 신호의 차이를 줄이는 구조입니다.


기본적으로는 SDRAM과 같은에 왜 고속 전송이 가능한 것인지 생각하는 사람도 있을 것입니다. 램버스의 설명에 의하면 여기서 핵심은 분기를 만들지 않는다는 것입니다. 

 

45.png

 

Non Parity 1-Bank DIMM(Unbuffered DIMM)의 신호 라인

 

이 그림을 보면 DIMM을 넣으면서 Data에서는 3개 분기가, Address/Command에서는 27개의 분기가 생겼습니다. 이러한 분기가 신호를 어지럽히는 가장 큰 요인이 됩니다. 따라서 분기를 빼면 신호를 고속화해도 파형이 어지럽게 흩어지진 않는다는 이야기입니다.


위 그림에서도 분기가 생기는 것처럼 보이지만 실제 배선은 한번에 종단 저항까지 이어집니다. 이 배선의 바로 위에 직접 메모리 칩을 연결해 물리적인 분기의 길이를 최소화하도록 연구했습니다. Base RDRAM과 Concurrent RDRAM 메모리 칩에선 리드(배선용 다리)가 SOP 패키지이었으나 Direct RDRAM에서는 BGA(Ball Grid Array)로 바꿔 여분의 도선을 줄임으로서 분기를 최소화했습니다. 

 

 

PC용 메모리 모듈로 쓰기 위해 RIMM과 C-RIMM을 개발

 

가정용 게임기나 그래픽 카드처럼 기판에 DRAM 칩을 바로 장착하는 제품이라면 간단합니다. 하지만 PC는 DIMM 같은 메모리 모듈을 통해서 사용자가 업그레이드할 수 있도록 시스템을 만들어야 합니다. 그래서 나온 것이 RIMM(Rambus Inline Memory Module)입니다.

 

46.jpg

 

2002년에 판매된 RIMM

 

위 그림은 RIMM을 4장 장착하는 구조를 설명하는 그림입니다. 4장의 RIMM 배선이 단번에 연결되도록 구성했음을 알 수 있습니다. 이러한 구조를 씀으로서 위 그림과 같은 구조를 유지하면서 메모리 모듈 방식으로 업그레이드도 가능해졌습니다.

 

47.png

 

RIMM을 4장 장착하는 시스템의 배선

 

다만 이 구성의 경우 SDRAM처럼 빈 슬롯을 둘 수가 없습니다. 중간에 연결이 끊기기 때문입니다. 이를 피하기 위해서 C-RIMM이라는 걸 씁니다. 아래 그림은 2장의 RIMM과 2장의 C-RIMM을 사용한 사례입니다. C-RIMM은 단순히 배선을 연결만 기판으로 RIMM을 장착하지 않는 슬롯에 이 C-RIMM을 장착하면 종단 저항까지 배선이 전부 이어진다는 구조입니다.

 

48.jpg

 

RIMM과 C-RIMM

 

49.png

 

2장의 RIMM과 2장의 C-RIMM을 사용하는 시스템의 구성

 

 

이상과 현실의 괴리. 비싼 가격과 별로인 성능

 

50.jpg

 

인텔 850 칩셋과 펜티엄 4

 

RIMM의 등장으로 RDRAM은 PC용 메모리로 쓰이게 됐습니다. 1996년에 인텔과 램버스는 라이센스 계약을 체결하고, 여기에 따라 인텔은 1999년에 펜티엄 3 전용 인텔 820 칩셋 시리즈를, 2001년에는 펜티엄 4 용으로 인텔 850 시리즈를 발표했습니다. 허나 이후의 상황은 인텔과 램버스의 예상처럼 흘러가진 않았습니다.

 

먼저 실장의 어려움이 있었습니다. 위에선 회로 기술과 실장 기술을 최적화한다고 말했지만, 이론적으로는 좋다 하더라도 이를 실제로 실현하기란 어려운 일이었습니다. 당시 메인보드 제조 업체의 기술은 100~133MHz까지의 신호는 문제가 없으나, 단번에 800MHz로 신호 속도가 높아지자 문제가 생기게 됐습니다.

 

단순히 설계 툴이 대응하지 못하는 것 외에도 부품의 품질 격차, 기판 자체의 재질과 그 편차, 제조 방법 등 생각할 수 있는 모든 부분이 800MHz 동작에는 부적합했습니다. 그 결과 4층 기판으론 메인보드를 만들 수 없게 됐으며, 당시로선 상당히 비쌌던 6층 기판을 쓰게 됐습니다.

 

6층 기판의 메인보드는 SDRAM을 사용하는 동급의 메인보드에 비해 10만원 정도 비싸졌습니다. SDRAM 메인보드의 가격이 십만원이라면 두배가 된 셈이지요. 또 RIMM도 비쌌습니다. 1999년의 가격은 다음과 같은데요. 이 정도면 RIMM의 매력이 별로 없다고 할 수 있습니다.

 

1999년 말의 SDRAM DIMM과 RIMM가격
SDRAM DIMM RIMM
PC133 CL3 128MB 20만원 미만 PC800 128MB 90만원 안팎
PC100 CL2 128MB 160000원 PC700 128MB 50만원 미만

 

RIMM 가격 안정은 이후 계속 진행되면서 초기 펜티엄 4에는 CPU 패키지에 RIMM을 무료로 번들하는 세트 판매가 되기도 했습니다만 그래도 보급 속도는 느렸습니다.

 

51.jpg

 

당시 판매된 펜티엄 4의 패키지. 2개의 64MB RIMM이 번들돼 있습니다.

 

또 다른 문제는 성능이 제대로 나오지 않았다는 것입니다. 특히 펜티엄 3용 인텔 820에서 이것이 두드러졌는데요. 800MHz로 구동하는 RIMM을 탑재한 인텔 820은 PC100 SDRAM을 탑재한 인텔 440BX보다 못한 성능이 나오는 경우가 있었고, PC133 SDRAM을 탑재한 오버클럭 인텔 440BX에 완전히 뒤떨어지는 상황에 빠졌습니다.

 

 

블랙 박스 때문에 개량해도 성능을 높이지 못함

 

물론 인텔도 팔짱 끼고 구경만 한 것은 아닙니다. 허나 RDRAM이 블랙 박스가 존재한다는 게 문제입니다. Direct RDRAM을 이용할 경우 램버스에서 제공하는 RAC(Rambus ASIC Cell)라는 회로를 거치게 됩니다.

 

52.png

 

노스브릿지와 RAC, RIMM의 관계

 

이 RAC과 다른 회로 사이는 Direct RDRAM이 800MHz로 구동할 경우 128비트/100MHz로 접속되는 구조입니다. 이러한 회로를 제공할 경우 일반적으로는 하드 매크로와 소프트 매크로라는 2가지 제공 방법이 있습니다. 소프트 매크로는 회로도가 제공되기에 부품을 직접 조립할 필요가 없으며 기술이 있다면 이를 응용하기 쉽습니다.

 

반면 하드 매크로는 완성품에 가깝기에 전원이나 배선만 하면 바로 쓸 수 있지만 나중에 수정하기가 매우 어렵습니다. RAC는 하드 매크로로 램버스가 제공했으니 인텔이 독자적으로 손을 대려 해도 매우 힘들었습니다.

 

이후 램버스 담당자는 Direct RDRAM 대역을 활용하려면 메모리 컨트롤러나 CPU에서도 파이프라인 액세스를 고려하지 않으면 안된다고 설명했습니다. 허나 처음부터 파이프라인을 고려한 펜티엄 4라면 몰라도 그렇지 않은 펜티엄 3에선 제 성능을 낼 수가 없지요. 그런 점이 있는데도 인텔이 강행했으니 결국 성능을 끝까지 개선할 수 없었습니다.

 

 

Direct RDRAM은 끝나지만 기술력 향상으로 이어짐

 

마지막으로 Direct RDRAM의 관뚜껑에 못을 박은 건 출시 후 결함이 발견됐기 때문입니다. 이것은 태생적인 결함보다는 실장 방식의 문제였지만(MCH의 문제인지 RAC의 문제인지는 알려지지 않음), 부하가 높아지면 노스브릿지(메모리 컨트롤러 허브, MCH)에 리셋이 걸리는 문제였습니다. 이 때문에 인텔 820을 탑재한 메인보드는 전량 리콜됩니다.

 

그리고 인텔 820의 리콜 파문으로 타격을 입은 것이 MTH(Memory Translator Hub)입니다. MTH는 RIMM 대신 장착해서 PC100 SDRAM을 쓰게 하는 것인데요. RIMM 기판 높이를 늘리고 여기에 MTH와 PC100 DIMM 슬롯 2개를 장착한 라이저 카드도 나와 판매되기도 했습니다.

 

53.png

 

MTH를 사용한 시스템의 구성

 

그러나 인텔 820의 리콜로 안정적인 동작에 의구심이 생기게 되면서 인텔 820과 인텔 850에서 쓰이지 않게 됩니다. 사실 MTH를 쓰면 제 성능을 내지 못하는 건 당연하며, 인텔은 RIMM의 가격이 저렴해지기 전까지 과도기에 SDRAM을 쓰자는 발상이었던 듯 합니다. 그런데 이 MTH를 지원하지 않게 되면서 PC에서 Direct RDRAM은 비싼데다 느린 메모리가 돼 버렸습니다.

 

그러다보니 Direct RDRAM은 PC용 메모리에선 빠르게 사라지게 됐습니다. 허나 그렇다고 해서 Direct RDRAM이 PC 업계에서 의미가 없었냐고 물으면 그것도 아닙니다. Direct RDRAM을 지원하기 위해 메인보드 제조사가 기술력을 높였거든요.

 

설계 뿐만 아니라 메인보드의 생산에서도 마찬가지입니다. 처음에는 6층 기판이 필수였던 인텔 850 메인보드도 나중에는 4층 기판에서 제조할 수 있게 됐습니다. 여기에서 800MHz의 고속 신호에 대한 노하우를 축적한 결과, AGP나 400MHz를 넘는 FSB 신호도 무난하게 처리할 수 있게 됐습니다. Direct RDRAM가 가져온 기술 수준 향상은 무시할 수 없다고 할 수 있겠습니다.

 

램버스는 나중에 다른 액세스 방식을 사용하는 XDR DRAM로 가게 되는데 거기에 대해선 나중에 설명하지요.

 

 

8. 그래픽 전용 메모리의 진화와 불투명한 미래

 

이번에는 시스템 메모리 말고 GDDR, Graphics DDR. 즉 그래픽 전용 메모리에 대해 보도록 하겠습니다.

 

 

이론적으론 빠른  듀얼 포트 VRAM. 허나 실제로 쓰인 사례는 적음

 

원래 그래픽 전용 메모리는 듀얼 포트 DRAM을 VRAM라 이름 붙이고 쓰는 경우가 많았습니다. 듀얼 포트 DRAM에는 여러 종류가 있지만 VRAM으로 쓰인 건 아래 그림을 참고하세요.

 

54.png

 

DRAM과 VRAM의 구조 차이

 

왼쪽은 기존의 DRAM이며 오른쪽은 시리얼 출력이 추가된 VRAM입니다. 일반적인 DRAM을 장착해서 그래픽 카드를 구성할 경우 렌더링과 화면 출력(화면 리프레시)을 하나의 DRAM 인터페이스(I/F)에서 전부 해야 합니다. 아래 그림에선 렌더링(빨간색)과 화면 리프레시(파란색)이 같은 DRAM I/F를 거치고 있는데요. 그 때문에 그래픽 컨트롤러가 화면 전환 사이에 렌더링 명령을 발행해야 했고 그만큼 렌더링 성능도 떨어집니다.

 

55.png

 

DRAM과 VRAM를 사용한 그래픽카드의 차이

 

이를 해결한 것이 VRAM입니다. 내부에 라인 버퍼라 불리는 1개 라인의 버퍼를 따로 넣어, 호스트에서 지시해 DRAM 셀에 정리해 데이터를 복사할 수 있습니다. 복제된 데이터를 시리얼 출력이라 불리는 포트에서 (기존의 DRAM 데이터 버스와 다른 타이밍으로) 읽을 수 있습니다. 그리고 이것을 사요앟면 그래픽카드를 위 그림의 오른쪽처럼 구성할 수 있습니다. 화면 리프레시용 데이터는 시리얼 출력에서 읽어들일 수 있기에 일반적인 데이터 버스를 차지할 필요도 없고 보다 성능을 높일 수 있다는 것입니다.

 

물론 이론과 실제는 다릅니다. S3의 2세대 그래픽인 S3 801/805는 DRAM만, S3 928은 VRAM을 지원했는데요. 이걸 장착한 그래픽카드인  다이아몬드 스텔스 24(S3 801/805)와 다이아몬드 스텔스 프로(S3 928)를 비교하면 VRAM을 탑재했으며 가격도 비싼 다이아몬드 스텔스 프로가 더 느린 경우가 있었습니다.

 

VRAM에서 문제가 되는 건 1개 라인을 복사하는 동안 DRAM 셀 액세스가 안 된다는 것입니다. 또 SDRAM과 다른 커맨드를 패킷으로 보내는 기능도 없기에 RAS/CAS나 다른 제어 라인/어드레스를 사용해서 1라인에 해당하는 복사를 하라고 명령을 보내는 것 자체가 오버헤드가 됩니다.

 

하지만 이 '다수의 포트를 지닌 그래픽 전용 DRAM'이란 아이디어는 이후에도 살아남았습니다. 1995년에 삼성전자가 개발한 WRAM(Window RAM) 역시 듀얼 포트 구성으로 DRAM 칩에서 간단한 연산이 가능한 것이 특징이었습니다. WRAM은 당시 인기를 모은 그래픽카드인 매트록스 밀레니엄에 탑재돼 유명해졌지만 이후 다른 제조사에서 쓰이진 않았습니다. 매트록스도 밀레니엄과 후속작인 밀레니엄 II에선 WRAM을 채용했지만 그게 끝니었습니다.

 

WRAM에 이어 SGRAM(Synchronous Graphic RAM)이라는 제품이 인텔에서 발표됐습니다. SGRAM은 SDRAM에 렌더링용 연산 회로를 탑재해 WRAM의 SDRAM 버전이라 할 수 있는데요. WRAM과 다른 출력은 1포트로 돼 있습니다. 매트록스를 비롯해 몇몇 칩 제조사가 SGRAM을 채용했지만 이것도 그리 오랬동안 쓰이진 않았습니다.

 

 

DDR SDRAM을 바탕으로 그래픽에 특화된 GDDR이 등장

 

왜 이런 특수한 메모리가 보급되지 못한 것일가요? 우선 듀얼 포트 메모리는 비쌌습니다. 게다가 표준 규격이 아니라 특정 메모리 제조사만 공급하는 제품이었기에 카드 제조사 입장에서도 공급에 불만을 가졌습니다. 비싼 메모리를 사용하면 당연히 제품 가격도 비쌀 수밖에 없어 제품 경쟁력이 떨어집니다.

 

또 이러한 특수 메모리는 범용 제품의 속도를 짧은 시간 안에 따라가기가 힘듭니다. 그래픽용 메모리는 고속으로 동작한다면 듀얼 포트와 렌더링 기능이 없어도 전체 성능은 올라갑니다. 많은 기능을 탑재했지만 동작 속도가 느린 전용 메모리보다, 최소한의 기능을 갖췄지만 빠른 범용품을 쓰는 게 성능이 더 높을 뿐더러 저렴합니다. 그렇게 되면 굳이 전용 제품을 사용할 매리트가 없습니다.

 

이러한 이유로 그래픽 카드의 메모리에도 PC용 메인 메모리인 SDRAM이나 DDR-SDRAM이 쓰였습니다. 그러나 그 중에 범용 SDRAM으로는 성능이 부족한 상황이 벌어지게 됐습니다. 그래픽 컨트롤러가 GPU라 불리게 되던 시기로 보이는데, 이 때 렌더링 성능이 급속히 성정한 반면 범용 SDRAM이나 DDR-SDRAM은 따라가지 못했기 때문입니다.

 

그러나 예전에 그랬던 것처럼 전용 제품을 출시하면 VRAM과 WRAM, SGRAM처럼 될 수 있습니다. 그래서 나온 것이 DDR-SDRAM을 바탕으로 보다 빠르게 동작하는 그래픽 전용 메모리의 개발입니다. PC용 메인 메모리와 다르게 그래픽 카드의 메모리는 사용자가 메모리 조합을 바꿀 필요가 없으니 DIMM을 거칠 필요가 없습니다. 또 용량보다 속도가 중요하니까 하나의 메모리 버스에 여러 메모리 칩을 연결할 때 케이스를 따질 필요도 없습니다. 거기에 신호 전압과 소비 전력이 달라도 설계가 그리 복잡해지지 않습니다.

 

이러한 조건에 따라 내부 구조는 DDR-SDRAM과 같으면서도 보다 빠른 메모리를 내놓을 수 있게 됐는데 그것이 GDDR입니다. 전자 부품 규격 표준화 단체인 JEDEC은 이를 GDDRn SGRAM이라고 부릅니다(n은 2~5. GDDR1는 GDDR SGRAM이라고 부름).

 

GDDR 계열과 기준이 된 DDR의 관계를 정리한 것이 아래 그림입니다.

 

56.png

 

DDR과 GDDR의 로드맵

 

 

GDDR1

 

1998년 3월에 JEDEC에서 표준화 되었습니다. 기본적으로는 DDR-SDRAM과 같은 2.5V 동작이며 마지막엔 1Gbps 정도의 전송 속도를 지닌 제품이 등장했습니다. 칩 버스 폭은 32비트라 하나의 칩으로 낼 수 있는 속도는 최대 4GB/초(32Gbps). 다만 표준화가 마치고 실제로 장착한 제품이 나올 때까지는 시차가 있어, 실제 시장에 출시된 건 1999년 후반~2000년 쯤이었습니다.

 

GDDR 계열은 GDDR1에서 비교적 오랬동안 쓰였습니다. 이후 GDDR2/3이 저렴하게 나오게 되면서 가격적인 부분에서 GDDR1을 사용하는 메리트가 줄어들어 2005년에는 사용하는 제품이 거의 사라졌습니다. 그리고 GDDR1의 신호 전압은 2.5V지만 내부의 DRAM 셀은 2.5~2.8V로 구동됐습니다.

 

 

GDDR2

 

GDDR1은 DDR-SDRAM을 기반으로 했지만 GDDR2는 DDR2-SDRAM을 기반으로 한 것입니다. 2003년 6월에 JEDEC에서 표준화됐지요. 전송 속도가 최고 1.6Gbps로 GDDR1에 비해 많이 높아진 건 아닌데, 그러다보니 GDDR3이 비교적 빨리 보급됐습니다.

 

GDDR2은 신호 전압이 1.8V로 내려갔지만 내부 동작 전압은 2.0~2.5V로 설정돼 있습니다. 내부 전압은 처음에 130nm 공정을 쓴것도 있고 해서 2.5V가 아니면 동작하지 않았습니다. 나중에 90nm까지 미세화가 진행돼 2.0V에서 동작하게 됐지요. 이는 GDDR1과 GDDR3의 후기 버전에서도 비슷한 경향을 볼 수 있습니다.

 

 

GDDR3

 

GDDR2의 연장선상에 있는 것이 GDDR3입니다. GDDR2와 차이점이라면 DQS(Data Strobe 신호)가 RDS(Read Data Strobe 신호)와 WDQS(Write Data Strobe 신호)로 분할돼 읽고 쓰기를 다른 시점에 따로 할 수 있게 됐다는 것입니다. 그리고 하드웨어 초기화 기능도 탑재됐습니다. 제조 공정은 70nm를 쓰는 경우가 많으며 그래서 GDDR2보다 동작 전압이 줄었습니다.

 

GDDR3의 표준화는 2003년 9월로 GDDR2와 거의 차이가 나지 않았습니다. 또 신호 라인도 거의 같은지라(DQS와 리셋만 신경쓰면 됨) GDDR3를 지원하는 GPU는 실제로 GDDR2와 GDDR3을 모두 지원하는 게 일반적입니다. 처음에는 보급형이 GDDR2, 메인 스트림이 GDDR3 같은 식이었지만 나중에는 섞이게 됐습니다.

 

가격에서도 별 차이가 나지 않다보니 GDDR2는 2008년에 사라졌습니다. 반면 GDDR3는 지금도 저가형 제품에서 쓰이기도 합니다. 

 

 

GDDR4

 

GDDR3까지는 DDR2를 기반으로 만들었지만 GDDR4는 DDR3 기반으로 바뀌었습니다. GDDR4의 표준화는 2005년 12월에 이루어졌으며, 이를 탑재한 제품은 2006년 이후에 나왔습니다.

 

GDDR4는 기본적으로 DDR3과 같은 전송 프로토콜을 사용하지만, 독자적으로 DBI(Data Bus Invention)와 Preamable 같은 확장이 이루어졌습니다. DBI는 신호가 High인 상태가 계속될 경우 이를 Low로 대체해 신호의 전력을 줄이는 것이며, Preamable는 레이턴시를 미래 통지해 컨트롤러가 효율적으로 통신할 수 있게 해줍니다.

 

신호 전압/동작 전압은 1.5V와 1.8V가 표준화되면서 처음엔 1.8V을 사용하는 제품이 많았지만 나중에는 1.5V 제품이 늘었습니다. 마지막엔 동작 클럭이 3.2Gbps까지 올랐으나 후속작인 GDDR5가 나오면서 지금은 거의 쓰이지 않습니다.

 

 

GDDR5

 

지금도 현역인 GDDR5는 2009년 9월에 JEDEC에서 최초의 표준화가 진행됐습니다. 처음엔 4Gbps의 규격으로 시작해 5Gbps, 6Gbps로 점점 성능이 높아져 7Gbps까지도 나온 상황입니다.

 

GDDR5는 GDDR4처럼 DDR3 기반이지만 GDDR4과 차이점이라면 클럭 신호가 추가된 점을 꼽을 수 있겠습니다. 예를 들어 4Gbps의 GDDR5는 1GHz의 CK, CK#이란 클럭과 2GHz의 WCK, WCK#라는 4종류의 클럭 신호를 사용합니다. 어드레스와 커맨드의 명령은 CK/CK로 전송하며 데이터 쓰기는 WCK/WCK에 동기화하는 식입니다.

 

GDDR5도 처음엔 1.5V로 작동했으나 최신 프로세스를 사용하는 제품 중에는 1.35V를 쓰는 것도 나오게 됩니다.

 

57.png

 

DDR과 GDDR이 쓰이던 시기

 

 

2012년 이후 불투명해진 차세대 GDDR

 

문제는 그 다음입니다. GDDR5에서 7Gbps까지 올라가면서 지금 나오는 제품도 GDDR5를 계속 쓰고 이지만, 메모리 대역의 부족 문제는 계속해서 나오고 있지요. 그래서 보다 빠른 전송 속도를 내야 하는데 이 때 문제가 되는 건 DRAM이 아니라 GPU와 DRAM의 접속 방법입니다.

 

GDDR과 메모리의 접속은 1대 1로 이어지는 Point to Point 방식이지만 신호 방식은 단순한 싱글 엔드 방식(기준치보다 전압이 높으면 1, 낮으면 0)이기에 정확한 신호 전달이 어렵습니다. 램버스는 GDDR5에서 최고 12Gbps까지 전송 가능한 메모리 컨트롤러를 선보였는데 이건 램버스의 특허 기술로 가능한 것이지, 일반적인 메모리 컨트롤러에서 실현하기란 매우 어렵습니다.

 

이는 신호를 디퍼런셜 방식으로 전송할 경우에도 마찬가지입니다. 이 역시 램버스가 XDR DRAM과 XDR2 DRAM에서 많은 특허를 낸 상태인지라, 이를 회피하려 하다보면 FB-DIMM처럼 됩니다.

 

이후 JEDEC은 차세대 GDDR에 대한 논의를 정식으로 시작했지만 지금까지 이렇데 할만한 확실한 전망이 있진 않습니다. DRAM의 내부 구조 자체는 이전과 같이 유지하면서 DDR4를 도입해 고속화하는 게 아닌가 싶습니다. 다만 신호 방식을 지금처럼 싱글 엔드 방식으로 할 것인지 디퍼런셜 방식으로 바꾸는지를 놓고도 의견이 분분한지라, 아직 많은 시간이 필요할 것으로 보입니다.

 

그리고 그래픽 회사들은 GDDR5 이후 하이엔드 그래픽카드에 HBM 방식의 인터페이스를 도입하는 분위기지만요.

 

 

9. PS3에서 처음으로 사용됐으며 차세대 GPU용 메모리도 노렸던 XDR DRAM

 

이번엔 램버스의 메모리 기술인 XDR DRAM 시리즈에 대해 보도록 하겠습니다. 인텔과 협업으로 나온 Direct RDRAM은 앞서 보신대로 PC에서 사용이 잘 되지 않았지요.

 

인텔은 Direct RDRAM에서 DDR SDRAM로 바꾸면서 배상액을 램버스에 지불했습니다. 이후 라이센스 계약을 장기간 맺으면서 손실 보전을 했기에 램버스도 결코 손해를 보진 않았을 것입니다. 허나 장기적으로 봤을 때 PC용 메인 메모리라는 거대한 시장을 놓친 건 큽니다. 여기에는 인텔 뿐만 아니라 램버스에도 분명 여러가지 문제가 있었습니다.

 

 

신호 속도의 고속화가 배선 지연 문제를 낳음

 

Direct RDRAM 이후 램버스는 새로운 메모리 버스 규격만 아니라 고속 아날로그 전송 기술 전반을 제공하는 쪽으로 방향을 바꾸게 됩니다. 이러한 방향 전환은 Direct RDRAM에서 XDR DRAM로 가면서 기술적인 개량도 이뤄졌습니다.

 

우선 싱글 엔드 신호 방식을 포기했습니다. Direct RDRAM까지는 싱글 엔드를 유지하면서 속도를 높였습니다. 그러나 이 방식은 노이즈에 약하지요. 그래서 XDR DRAM은 디퍼런셜 방식으로 전환했습니다. 나중에 설명하겠지만 완전한 디퍼런셜은 아니고 싱글 엔드와 디퍼런셜의 혼합입니다. 이에 따라 배선에도 큰 변화가 있었습니다. 이는 램버스가 특허를 갖고 있는 FlexPhase 기술을 사용한 것입니다.

 

Direct RDRAM을 포함한 기존의 DRAM은 병렬 버스를 전달 방식으로 썼습니다. 예를 들어 메모리 칩의 읽기를 보면, SDRAM/DDR 계열에서 8비트, Direct RDRAM은 16비트, GDDR 계열이면 32비트가 각각 메모리 칩의 데이터 버스 폭입니다. 클럭을 공급하면 8비트 폭에서 8비트가 한꺼번에 나옵니다.

 

문제는 메모리 칩으로 넣을 때는 데이터를 모아도, 메모리 컨트롤러에 들어갈 때는 흩어지며 항상 모이지 않는다는 것입니다. 신호 전달 속도가 높아지면서 배선의 미묘한 차이가 자칫 잘못하면 클럭 절반 정도 주기의 차이를 초래할 수도 있습니다.

 

일반적으로 구리 케이블에서 전기 신호의 속도는 광속의 2/3 정도라고 합니다. 따라서 속도를 20만Km/초라고 잡아 봅시다. 여기에 1GHz의 신호를 넣으면 파장이 20cm 정도 나옵니다. 이 정도면 되지 않냐고 생각할 수 있으나 이는 어디까지나 이상적인 상황의 이야기입니다. 실제로는 이보다 더 늦어지며 신호 속도가 높아지면 이와 반비례해서 파장이 짧아집니다. 그래서 대체로 10cm 미만, 일반적인 설계에선 5cm 정도를 상정하는 듯 합니다.

 

이것은 배선 길이의 차이가 5cm를 넘으면 1클럭 만큼 어긋난다는 겁니다. 실제로는 클럭 절반에 해당하는 2.5cm가 어긋나도 제대로 송/수신을 할 수 없게 됩니다. 그래서 배선 길이의 차이가 이 범위 안에서 유지되도록 설계해야 하지만 이건 쉽지 않습니다.

 

 59.jpg

 

메모리 컨트롤러와 DRAM 배선이 간단할 경우

 

위 그림처럼 메모리 컨트롤러와 DRAM의 핀이 일직선으로 늘어서 있다면 배선을 균등하게 만들기가 쉽습니다. 다만 아래 그림처럼 된다면 배선 길이가 제각각이 됩니다. 아래 그림에서 빨간 배선은 파란 배선의 두배 길이가 됩니다.

 

 60.jpg

 

배선이 어려운 경우

 

이런 경우에 배선 길이를 맞추려면 어떻게 해야 할까요. 그 중 하나가 짧은 배선의 길이를 가장 긴 배선에 맞춰 늘리는 것입니다. 그게 바로 아래 그림이지요. 아래 사진은 실제 DDR3 배선의 일부인데 지그재그로 배선 길이를 늘려 전체 길이를 맞췄음을 알 수 있습니다.

 

 61.jpg

 

배선 길이를 맞춘 경우

 

62.jpg

 

 

DDR3-SDRAM DIMM 배선의 예

 

 

딜레이를 넣어 차이를 조절하는 FlexPhase의 구조

 

FlexPhase는 아래 그림처럼 메모리 컨트롤러 마지막에 들어갑니다. FlexPhase는 전원이 켜지거나-시스템 가동 중에 동적으로 메모리 컨트롤러와 DRAM 칩 사이의 지연 시간을 측정하고 차이를 조정하는 구조입니다.

 

63.jpg

 

FlexPhase(하늘색 부분)을 내장한 경우

 

메모리 읽기는 각 핀의 신호가 배선 지연 때문에 어긋난채로 오게 되지만, FlexPhase가 이들 신호를 제각각 받아 타이밍을 조절한 후 정리해서 메모리 컨트롤러로 보냅니다. 반대로 메모리 쓰기에선 배선의 지연을 고려해 배선 거리가 짧은 핀은 그만큼 지연을 넣어 보내게 됩니다. 물론 무한대로 타이밍을 조정할 순 없지만 최대 2클럭 정도 범위, 3.2GHz의 데이터 레이트에선 2.5ps(피코초, 1ns=1000ps)마다 조정할 수 있습니다.

 

FlexPhase를 사용하면 DDR처럼 선 길이를 똑같이 맞추는 것에 비해 배선을 훨씬 간소화할 수 있습니다. FlexPhase의 장점은 배선 길이 뿐만 아니라 온도 변화 등에서 비롯되는 에러도 보정한다는 것입니다. 시스템이 가동중일 때에도 동적으로 레이턴시를 바꿀 수 있습니다.

 

 

PS3에서 쓰이면서 세상에 나온 XDR DRAM. PC용으로 XDIMM도 개발

 

XDR DRAM는 클럭 신호의 8배속으로(ODR, Octal Data Rate) 구동됩니다. 초기의 XDR DRAM은 400MHz 클럭에 3.2Gbps의 데이터 레이트입니다. XDR DRAM 칩의 버스 폭은 16비트이며 XDR DRAM 칩 한개가 6.4GB/초의 대역을 냅니다. XDR DRAM을 처음으로 사용한 건 다들 알고 계실대로 PS3입니다. PS3의 초기 버전은 이를 4개 사용해서 총 25.6GB/s의 대역을 확보했습니다.

 

XDR DRAM은 개발 초기에 PC용 메모리에 미련을 가졌던 듯 합니다. XDIMM이라는 DIMM 모듈도 있었거든요. 이는 XDR DRAM을 DIMM에 장착해 쓸 수 있도록 한 것으로 물리적으로는 Direct RDRAM 용 RIMM와 같은 커넥터에 장착됩니다. XDIMM 버스 폭은 32비트로 1장 당 12.8GB(3.2Gbps일 경우)~25.6GB/초(6.4Gbps의 경우)의 대역이 나옵니다.

 

다만 XDR DRAM은 디퍼런셜 방식이라 메모리 컨트롤러와 접속은 P2P로만 이루어집니다. 그래서 여러 장의 XDIMM을 하나의 채널에 장착할 수 없습니다. 그래서 2장의 XDIMM을 장착할 경우 아래 그림처럼 되는데 이게 듀얼 채널 XDIMM가 됩니다. 이 외에도 가변형 P2P 방식도 있습니다.

 

64.jpg

 

XDIMM과 메모리에 연결한 경우. 듀얼 채널

 

앞에서 FlexPhase는 배선의 차이를 조정하는 것이라 설명했지만 버스 폭의 조정도 가능합니다. 아래 그림은 2장의 XDIMM을 각각 16비트 폭으로 접속하는 것인데요 이 경우 FlexPhase는 각각의 XDIMM 칩에 비해 유효 버스 폭을 절반으로 하도록 통지합니다.

 

65.jpg

 

XDIMM과 메모리 컨트롤러의 연결 사례. 절반의 버스 폭으로 접속

 

이 방식일 때 XDIMM이 한장이라면 어떻게 될까요? 아래 그림처럼 Continuous Module을 장착하고 이를 통해 메모리 컨트롤러와 XDIMM을 32비트로 접속합니다. Direct RDRAM의 C-RIMM 같은 구조입니다.

 

66.jpg

 

XDIMM과 메모리 컨트롤러의 연결 사례. XDIMM이 1장인 경우

 

이 구성은 몇 장의 XDIMM를 쓰건 일정한 대역을 이용할 수 있다는 장점이 있습니다. 허나 Direct RDRAM에서 데인 PC 업계는 XDIMM을 외면했지요.

 

 

XDR2에서 그래픽 메모리를 노림

 

XDR DRAM에 이어 램버스는 XDR2 DRAM과 TBI(Tera Band Initiative)라는 기술을 발표합니다. XDR2 DRAM은 당초 XDR DRAM을 그대로 고속화하고 옵션으로 MicroThreading이라 불리는 랜덤 액세스 성능 향상 기술을 도입한 것이었으나, 개발 중 TBI 기술을 전면 도입함으로서 XDR DRAM과 신호 선 호환성이 없어졌습니다.

 

TBI는 1TB/초의 메모리 대역(TBI)을 실현하는 기술로서 이를 위해 더 빠른 데이터 전송이 필요했습니다. 그래서 XDR2는 XDR DRAM의 4배인 32X Data Rate(클럭 신호의 32배속)를 탑재할 예정이었습니다. 최종적으로 XDR2는 클럭 신호의 16배속으로(16X Data Rate)로 머물렀지만요.

 

또 XDR DRAM에선 클럭 신호와 데이터 신호만 디퍼런셜 방식으로 하며 어드레스/커맨드 신호는 싱글 엔드 방식이었지만 TBI에서는 어드레스/커맨드도 디퍼런셜 방식으로 바뀌었습니다. 또 XDR DRAM의 핵심 기술이었던 FlexPhase는 Enhanced FlexPhase로 진화해 더 많은 기능과 높은 정확도의 타이밍 조정이 가능해졌습니다.

 

이러한 기능을 담은 결과 XDR2 DRAM은 10Gbps 이상을 노리는 메모리 기술로 태어났습니다. 2010년 4월에는 12.8Gbps라 설명했으나 2011년 2월 발표에서는 20Gbps 동작 데모도 이루어져 성능에 상당한 여유를 지녔습니다.

 

다만 이 동작 데모는 어디까지나 메모리 컨트롤러나 기판의 데모일 뿐입니다. 메모리 칩은 XDR2 DRAM의 동작을 에뮬레이트하는 실리콘 칩을 쓴거지 실제로 메모리 칩이 20Gbps로 동작할지는 메모리 제조사의 입장이 나오지 않아 단언할 수 없습니다.

 

램버스는 XDR2 DRAM에서 분명하게 목표를 바꿨습니다. 원래 XDR DRAM은 PS3 외에도 디지털 TV등 많은 가전 제품에 쓰였으며 일본에서의 채용 실적은 훌륭한 편이었습니다. 여기에 더해서 그래픽 카드를 노린 것이죠. 첫 제품으로 램버스가 노린 건 인텔의 라라비입니다. 1세대 라라비는 GDDR 기반 제품이었지만 2세대 라라비는 XDR DRAM을 쓴다는 전망이었습니다.

 

허나 다들 알고 계신대로 라라비의 상품화가 취소됐고 2세대의 도입도 없던 이야기가 됐습니다. 한편으로는 위에서 설명한대로 일반적인 GDDR 계열도 포화 현상이 뚜렷해졌으며 차세대 GDDR6가 어떻게 될 것인지 분명하지 않습니다. 그래서 램버스는 GPU에 특화된 메모리 컨트롤러를 제공해 XDR2의 보급을 노렸습니다.

 

이 메모리 컨트롤러는 GDDR5와 XDR, XDR2의 3종류의 메모리를 하나의 인터페이스로 취급할 수 있습니다. 위에서 말한대로 이 메모리 컨트롤러를 사용하면 GDDR5 프로토콜로 12Gbps까지의 전송이 가능합니다. 그래서 이 메모리 컨트롤러를 우선 GPU 제조사에 보급하고 이후 GDDR5를 추격하는 빠른 속도를 누릴 수 있도록 한다는 솔루션입니다.

 

일단 메모리 컨트롤러에 채용되면 핀 수를 바꾸지 않고 XDR DRAM과 XDR2 DRAM로 이행이 가능합니다. 기존의 XDR DRAM에서도 7.2Gbps 전송이 가능하고 XDR2 DRAM에서는 10~20Gbps 전송까지 노릴 수 있어 GDDR의 대역 포화에 따른 성능 한계가 문제인 GPU에선 좋은 선택이 된다는 게 램버스의 계획입니다.

 

물론 이건 어디까지나 램버스의 계획이며 AMD와 NVIDIA는 JEDEC의 표준 메모리를 사용한다는 방침을 바꾸지 않았습니다. 지금은 HBM의 도입이 코 앞까지 왔지 XDR은 아예 이야기도 안 되고 있지요. 램버스도 사업 전략을 수정한 상황이고.

 

 

10.  모바일 RAM부터 Wide IO까지 모바일 메모리의 진화

 

마지막으로 모바일 메모리의 기술을 봅시다. 이제는 스마트폰은 물론이고 태블릿에도 쓰이는 경우가 많습니다. 아톰도 LPDDR 계열 메모리를 지원하는 상황이지요.

 

 

SDRAM의 전력 절약 기능에 기능을 더한 Mobile RAM

 

처음에 모바일용 메모리가 출시된 건 2000~2001년으로서 이 때는 표준화 단체인 JEDEC가 아닌 독자 규격의 제품이었습니다. 원래는 모바일 RAM이라 불렸는데 나중에는 제품명이 아닌 제품 종류로 인식됐지요. SDRAM 기반으로 시작해 프로세스 미세화로 DRAM 셀의 동작 전압을 2.5V로, I/O 전압을 1.8V나 2.5V로 낮췄습니다(표준 SDRAM은 모두 3.3V).

 

도 세세한 소비 전력 절감 옵션을 갖고 있는 게 특징입니다. 사실 SDRAM도 전력 절약 모드라 불리는 동작 모드를 탑재하고 있습니다. 가장 효과가 큰 것은 CKE(Clock Enable)라 불리는 모드로서, CKE가 유효(신호 레벨 High)일 때 SDRAM은 클럭 동기화 형태로 데이터 송수신을 수행, 만약 메모리와 전송이 이루어지지 않아도 SDRAM은 클럭 동기화돼 동작합니다. 그래서 전송이 발생하지 않을 땐 메모리 컨트롤러가 CLE을 무효(신호 레벨 Low)로 하면 SDRAM은 완전히 동작을 정지해 대기 중 소비 전력을 낮춥니다.

 

그러나 이 모드를 장시간 유지하면 DRAM 셀의 내용이 휘발해서 사라집니다. 그래서 리프레시 시점에 CKE을 사용해서 리프레시 동작을 하도록 만들 필요가 있고, 이 때문에 소비 전력이 늘어납니다. 그래서 셀프 리프레시 방식을 병용해 소비 전력을 한층 더 낮추는 것이 가능해졌습니다.

 

셀프 리프레시는 SDRAM 칩 내부의 타이머를 켜 일정 시간마다 DRAM 셀의 리프레시를 칩 자체에서 수행하는 것입니다. 타이머를 사용하는 만큼 소비 전력이 약간 늘어나지만 메모리 컨트롤러나 메모리 버스는 완전히 정지할 수 있어 전체적으로 소비 전력은 더 낮출 수 있습니다.

 

 

Mobile RAM의 특징 5개

 

이러한 SDRAM의 저전력 매커니즘은 그대로 Mobile RAM에 이어졌습니다. Mobile RAM은 다음과 같은 특징을 갖습니다.

 

1. PASR(Partial Array Self Refresh) 일반적인 SDRAM에는 내부의 DRAM 셀 전체를 대상으로 리프레시 동작을 수행합니다. 그러나 어떤 디바이스에서도 메모리를 항상 100% 쓰는 경우는 드뭅니다. 그래서 1개의 SDRAM 칩 속에는 데이터를 저장하는 DRAM 셀과 데이터가 없는 DRAM 셀이 섞여 있습니다. 데이터가 없는 셀이 리프레시 동작을 하면 전력의 낭비지요. 그래서 어떤 영역을 리프레시할 것인지를 세밀하게 정하는 것이 PASR입니다.

 

2. TCSR(Temperature Compensated Self Refresh) DRAM 셀의 리프레시 간격은 최악의 값에 맞춰져 있습니다. 허나 실제로는 온도가 높을 수록 빨리 휘발하며 온도가 나자지면 휘발하는 데 걸리는 시간이 늘어납니다. 그래서 DRAM 칩 위에 OTCS(On Chip Temperature Sensor)을 탑재해 온도에 맞춰 리프레시 간격을 조정하는 것이 TCSR입니다. 메모리 액세스가 많으면 DRAM 칩 자체의 온도가 높아질 수 있으니 리프레시 간격을 짧게 할 필요가 있습니다. 한편 액세스가 많지 않을 때는 그만큼 칩의 온도가 낮으니 리프레시 간격을 벌릴 수 있지요. 이것이 전체 소비 전력과 리프레시 간격, 발열을 줄이게 됩니다.

 

3. DPD(Deep Power Down) CPU의 저전력 모드인 Deep Sleep과 비슷한 기능입니다. 일반적인 SDRAM 칩의 경우 대기 상태에서 소비 전력은 mA 급이지만 이를 μA 급으로 낮추는 것입니다.

 

4. DS(scalable Drive Strength) 신호 전압을 조정하는 기능입니다. SDRAM의 경우 3.3V±0.3V로 전압이 정해져 있으나 Mobile RAM에서는 전압을 낮출 수 있습니다. 메모리 액세스에 따라 신호 노이즈의 발생량이나 소비 전력을 낮추는 효과가 있지요. 물론 전압을 동적으로 조정하는 기능은 없으니 탑재 디바이스마다 세밀하게 설정을 바꿉니다.

 

5. 소형 패키지 휴대용 디바이스 안에 구현하거나 다른 칩과 적층해서 하나의 패키지로 만드는 경우로 쓰기엔 표준 SDRAM 칩의 패키지는 큽니다. 그래서 60 ball이나 90 ball의 FBGA(Fine pitch Ball Grid Array)을 패키지로 사용합니다.

 

Mobile RAM은 휴대용 기기를 위한 제품입니다. 2개의 칩을 하나의 버스에 접속하는 것 보다 2배 용량의 칩을 하나의 버스에 연결하는 게 실장이나 체적을 절약하는 방법입니다. 하물며 DIMM을 사용할 일도 없다보니 메모리 칩과 컨트롤러 사이의 접속 방법은 GDDR과 비슷합니다. 여러 칩을 쓸 필요가 없을 경우엔 버스 폭을 조정합니다. 대체로 Mobile RAM에선 4/8/16비트 폭이 나와 있습니다.

 

 

LPDDR은 2006년에 규격화

 

이러한 특징을 가진 1세대 Mobile RAM은 JEDEC에서 표준화되지 않은 독자 규격이었습니다. 이와 함께 JEDEC에서도 저전력 SDRAM의 표준화 작업이 진행되고 있었는데요. 그것이 2006년 5월에 LPDDR SDRAM(Low Power Double Data Rate)이란 이름으로 나오게 됩니다.

 

Mobile RAM의 낮은 전력 사용량은 분명 매력적이었지만 SDRAM과 같은 133~166MHz의 신호 레이트로선 점점 더 높아지는 광대역 요구를 맞출 수 없다고 판단한 것입니다. 그래서 표준화된 LPDDR은 DDR-SDRAM을 기반으로 하는 규격입니다.

 

LPDDR은 초기에 LPDDR-200과 LPDDR-266이 규격화됐으며 이후 LPDDR-333가 추가됐습니다. 전원/신호 전압은 1.8V까지 낮췄습니다. Mobile RAM에서 설명한 PASR/TCSR/DPD/DS라는 기능도 계승됐고 패키지는 Mobile RAM과 같은 60-ball/90-ball의 FBGA입니다. 그렇지만 이것은 LPDDR 용으로 JEDEC에 제안된 패키지를 Mobile RAM가 먼저 쓴 것이라, 당연히 같다고 할 수 있습니다.

 

이 LPDDR에 이어 등장한 것이 LPDDR2입니다. 허나 여기에는 DDR과 DDR2, 플래시 메모리까지 포함돼 있어 매우 헷갈리지요. LPDDR2에는 다음과 같은 3가지 종류가 있습니다.

 

LPDDR2-S2: DDR과 똑같이 2셀에 동시 액세스하는 구조

LPDDR2-S4: DDR2과 똑같이 4셀에 동시 액세스하는 구조

LPDDR2-N: 플래시 메모리

 

이렇게 3가지가 나온 건 디바이스 업체를 배려한 것으로서, 하나의 인터페이스나 패키지로서 이러한 메모리를 액세스할 수 있다는 장점이 있어서입니다. 물론 같다고는 해도 완전히 같은 건 아닙니다. 예를 들어어 플래시 메모리인 LPDDR2-N은 당연히 리프레시가 없습니다. 마찬가지로 메모리 칩의 용량도 LPDDR2-S2/S4는 8Gbit까지만 LPDDR2-N은 64Gbit까지 정의되는 등 세밀한 부분에서 여러 차이가 있습니다.

 

프로토콜의 대부분은 같기에 격차 없이 이행이 가능하다는 점에선 공통화의 의미가 큽니다. 덧붙여서 LPDDR2에서 DRAM 셀의 전압은 1.8V/1.35V/1.2V, 신호 전압은 1.2V로 낮췄으며 PASR의 기능이 강화돼 보다 정교한 제어가 가능합니다.

 

Mobile RAM~LPDDR3의 주요 사양
버스 폭 신호 속도 용량 동작 전압
Mobile RAM 4/8/16bit 133/166Mbps 64M~512Mbit 2.5:1.8V
LPDDR SDRAM 8/16/32bit 200/266/333Mbps 64M~2Gbit 1.8V:1.8V
LPDDR2 SDRAM 8/16/32bit 200~1066Mbps 64M~8Gbit 1.8/1.35/1.2V:1.2V
LPDDR3 SDRAM 8/16/32bit 1066~3200Mbps 64M~8Gbit 1.35/1.2V:1.2V

 

 

차세대 주자인 Wide IO는 늦어질 듯. GPU용으로 쓰일 것인가?

 

LPDDR2에 이어현재 표준화 작업이 된 것이 LPDDR3와 Wide IO입니다. LPDDR3는 LPDDR2의 후속작으로 6.4Gbps의 전송이 가능한 것인데, 원래 쓰일 예정이었던 Wide IO가 실현이 늦다 보니 먼저 이것이 나오게 됐습니다. 기존 기술의 연장선상에서 실현할 수 있으니 수요가 늘어난 광대역 메모리를 위해 이걸 먼저 내놓겠다는 것이 JEDEC의 뜻입니다.

 

나중에 등장하게 될 Wide IO는 3D-RAM이라는 이름으로 불렸는데, 단적으로 말해서 TSV(Through-Silicon Via)를 사용해 메모리를 광대역 접속하는 것입니다.

 

67.jpg

 

TSV를 사용한 연결의 모식도. 실리콘 칩을 뚫어 위아래로 배선이 연결됩니다. 2010년 6월에 개최된 MEMCON10에서 하이닉스의 마케팅 담당 부사장인 Arun Kamat이 발표한 자료

 

기존 SDRAM 계열에선 메모리 칩의 핀 수를 크게 늘릴 수 없기에 DDR처럼 신호 속도를 높여 필요한 메모리 대역을 확보하려 했습니다. 그러나 신호 속도가 늘어나면 소비 전력도 따라 늘어난다는 문제가 있습니다. 그래서 핀 수를 늘리고 신호 속도를 줄여 소비 전력도 낮추자는 게 Wide IO의 기본 발상입니다.

 

아직 표준화까지는 시간이 걸리지만 일단 처음에 나오는 것은 128비트/채널 입니다. 이것이 4채널이면 총 512비트 버스 폭이 나오니, 신호 속도를 200Mbps로 줄여도 전체적으로는 12.8GB/초의 대역을 확보하게 됩니다. 칩의 용량도 32Gbit 정도는 가능합니다. 그 이상이 필요한 경우엔 위의 슬라이드네 나온대로 다수의 칩을 적층하게 됩니다.

 

68.jpg

 

Wide IO는 현재 SDR 접속을 염두에 두고 있습니다(200MHz의 클럭이며 1핀이 200Mbps의 속도). 이걸 DDR로 하면 25.6GB/s입니다. 2011년 5월에 독일에서 개최된 MEMCON 11의 강연 자료.

 

Wide IO 표준화의 일정은 2011년 9월에 표준화 발표에 2013년에 이를 사용한 스마트폰용 SoC 밮표 이야기가 있었으나, 지금 이게 쓰이는 제품은 없는 것 같네요.

 

69.jpg

 

WideIO와 프로세서의 로드맵. MEMCON 11에서 C.Freund의 강연 자료

 

그리고 Wide IO는 모바일 전용이라 해도 과언이 아닙니다. 여기서 문제가 되는 건 발열이죠. TSV의 설명에서도 알 수 있듯이 Wide I/O는 컨트롤러에 메모리 칩이 직접 탑재됩니다. 이 구조에선 거대한 방열판과 쿨링팬이 필요한 PC용 CPU와 TDP가 200W를 넘는 지금의 GPU에 사용했다간 메모리 칩이 고장날 것입니다.

 

또 이러한 고온 환경에서는 열에 의한 소재의 변형과 이에 따른 TSV의 접속 불량 재료의 변질 등도 상당히 큰 문제가 될 것입니다. 저전력이 요구되는 모바일에서나 먼저 쓸 수 있다는 이야기며, 범용 프로세서나 GPU에 이것을 쓸 수 있는 날은 아직 먼 듯 합니다.

 

소스:

http://ascii.jp/elem/000/000/596/596711/
http://ascii.jp/elem/000/000/597/597885/
http://ascii.jp/elem/000/000/599/599290/
http://ascii.jp/elem/000/000/600/600666/
http://ascii.jp/elem/000/000/601/601925/
http://ascii.jp/elem/000/000/603/603232/
http://ascii.jp/elem/000/000/604/604231/
http://ascii.jp/elem/000/000/607/607606/
http://ascii.jp/elem/000/000/608/608997/
http://ascii.jp/elem/000/000/610/610799/

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.