메모리의 진화와 기초 지식에 대한 글입니다. 나온지 시간이 꽤 지난지라 최신 기술하곤 거리가 좀 있고, 특히 앞으로의 개발 양상에 대한 것은 예측이 틀린 부분도 있지만, 그래도 예전에 쓰였던 기술들을 정리하는 데는 도움이 될듯 해서 올려봅니다.
1. PC의 속도를 좌우한 메모리의 진화
이번부터는 PC에서 빼놓을 수 없는 메모리의 역사에 대해 해설하고자 합니다.
고속화가 진행된 486 시대. 메모리와 CPU의 속도 차이가 심해짐
메모리 기술의 진화와 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이 등장했거든요.
컴퓨텍스 타이페이 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 셀은 아래 그림처럼 매트릭스 형태로 배치가 됩니다. 그럼 여기서 메모리 읽기를 예로 들어 설명해 볼까요.
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 주소를 읽어오는지를 지시하는 신호입니다.
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가지 파라미터-매개 변수가 있습니다. 이걸 제대로 지키지 않으면 제대로 읽거나 쓸 수 없습니다.
미국 마이크론이 예전에 판매했던 MT4LC4M4E8/9라는 4Mbit EDO DRAM의 데이터 시트에서 인용한 리드 사이클의 설명. EDO나 FastPage 동작 모드를 사용하지 않을 경우.
이미지를 보면 알 수 있는대로 이 방식은 DRAM을 액세스하는 효율이 나쁩니다. 액세스할 때마다 Row/Column을 각각 보내야 데이터가 나오기 때문입니다. 게다가 실제로는 딜레이가 더 길기에 실제 메모리 읽기 성능은 꽤 느려집니다.
연속된 같은 Row를 한번에 접속하는 Fast Page Mode
이를 해결하는 방법으로 처음 도입된 것이 Fast Page Mode입니다. DRAM 셀 배열 1Row(페이지, 가로 방향 및)을 한번에 액세스하는 방식입니다.
패스트 페이지 모드의 구조
일반적으로 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 어드레스를 한번 지정하면 끝나기에 읽기 빈도가 그만큼 높아집니다.
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 주소를 받을 수 있어 데이터 출력이 보다 빨라집니다.
EDO DRAM의 리드 사이클
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에는 신호 라인에 클럭 신호가 추가돼 여기에 맞춰 데이터 전송이 이루어집니다. 아래 이미지는 그 리드 사이클을 나타낸 것입니다.
SDRAM의 리드 사이클
이것을 EDO DRAM과 비교하면 SDRAM에서 RAS/CAS 신호 라인이 필요 없다는 걸 알 수 있습니다. EDO DRAM까지는 주소를 어느 시점에 보낼지를 판단하기 위해 RAS/CAS의 독립된 신호 라인이 필요했습니다.
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개로 늘어났습니다.
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과 기본적으로 동일하지만 그 이후는 다릅니다.
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 칩이 구현돼 있었습니다.
아두이노라는 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에 비해 다소 패키지 비용은 비싸지만 기계적인 강도가 뛰어난 SIMM"(Single In-line Memory Module)이 등장하게 됐습니다.
JEDEC에서 표준화를 거친 30핀 SIMM이 PC의 주류로 등극
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 등의 신호 라인은 모든 칩이 공유하지만 데이터 버스는 칩마다 분할됩니다.
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
4바이트 SIMM의 구조
72핀 SIMM의 대략적인 구조는 이 그림과 같습니다. 어드레스 라인과 각종 신호선은 공용이며, 데이터 라인을 DRAM 칩마다 분할하는 스타일인데 30핀 SIMM과 같습니다. 데이터 폭이 32비트가 됐다는 게 가장 큰 차이입니다. 이에 따라 메모리 증설을 할 때 SIMM을 1장 단위로 늘릴 수 있게 됐습니다.
72핀 SIMM에는 뱅크라는 개념도 추가됐습니다. 정확히 말하면 16비트 폭 60핀 SIMM에 뱅크 스펙이 추가됐으며 72핀에서 이를 계승한 것입니다. 아래 그림은 8비트 폭의 DRAM 칩을 사용했을 때 2뱅크 SIMM의 구조입니다.
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의 물리적인 형태를 크게 바꾸지 않고 잘못 꽂는 일을 막기 위해 슬롯이 끊겨 있는 위치만 바꾸는 식으로 변화를 주었습니다.
위에서부터 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비트가 됩니다.
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개의 레지스터만을 구동하면 되니 데이터 버스와 같은 조건인 셈입니다.
Registered DIMM의 신호 라인. DIMM에 있는 빨간 사각형이 레지스터.
이 레지스터를 탑재한 DIMM을 Registered DIMM, 탑재하지 않은 DIMM을 Unbuffered DIMM이라고 부릅니다. Registered DIMM에서는 패리티의 유무나 뱅크가 버퍼에 영향을 줍니다. 그래서 Address/Command 라인도 데이터 버스와 같은 조건인 뱅크 증가와 패리티의 영향을 받지 않습니다. 오히려 데이터 버스에선 뱅크의 수에 맞춰 구동하는 메모리 칩의 수가 늘어나는데 비해 Address/Command는 레지스터가 처리하니 그 수가 늘지 않습니다. 그래서 뱅크는 Registered DIMM 쪽이 유리합니다.
멀티 뱅크에서 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가 어떤 파형을 내는지를 생각해 봅시다.
신호 반사의 설명
우선 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은 슬롯의 위쪽에 여러 부품이 장착돼 있는게 그것이 터미네이터이다.
AOpen의 메인보드인 AX63 Pro의 DIMM 슬롯. 칩셋에서 온 배선은 DIMM 슬롯에서 끝납니다.
ULi의 칩셋인 M1695/M1567의 레퍼런스 메인보드의 DIMM 슬롯. CPU에서 나온 메모리 배선이 그대로 뻗어 DIMM 슬롯에 연결되며, 그 위에는 작은 터미네이터 저항(빨간색 테두리로 표시)으로 이어집니다.
즉 신호의 파도가 반사돼 돌아오니 문제가 생기는 것이며, 따라서 신호 선의 끝에 저항을 부착해 신호를 감쇠시키면 반사의 영향이 없어지게 됩니다.
메모리의 고속화에서 비롯된 기판의 신뢰성 문제
반사파 뿐만 아니라 메모리의 신뢰성 문제에는 거버(Gerber)가 있습니다. 거버는 컴퓨터 업계에서 기판 설계 데이터를 가리키는 데 쓰는 단어입니다. 단순한 기판 배선도 외에도 각각의 재질이나 경우에 따라선 제조 방법까지 포함하는 경우도 많습니다.
SDRAM 시절까지 메모리 칩 제조사는 전자 부품 규격의 표준화 단체인 JEDEC에서 정한 스펙을 충족시키는 칩을 출하하고, 그걸 메모리 모듈 제조사가 구입해 자신들이 만드는 DIMM 기판에 장착해 판매하는 식이었습니다. 당시엔 DIMM 기판에 따라 차이가 그리 크지 않았습니다. 타이밍의 여유가 충분하고 신호의 전압도 높아서 노이즈의 영향에 비교적 강한 점도 있습니다.
그런데 DDR-SDRAM 시대가 오면서 신호가 최대 3배로 빨라져(PC133과 DDR-400의 비교) 기판 회로의 사소한 부분이 신호 전달에 큰 영향을 주게 됐습니다. 또 메인보드에 종단 저항을 붙이는 건 물론 DDR-333 DIMM 이후의 DIMM에도 칩 저항을 탑재할 필요가 생겼습니다.
JEDEC 스펙을 준수하는 PC-2700 DIMM
빨간색 테두리 안의 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 세대에선 기술력을 갖춘 업체가 돈을 들여 적극적으로 거버를 확장하는 경우도 있었습니다. 아래 슬라이드는 미국 커세어의 메모리인 도미네이터 시리즈입니다.
오버클럭 동작을 전제로 두고, DRAM 칩을 표면의 히트싱크 외에 DIMM 기판의 배선을 거쳐 적극적으로 분산한다는 메모리 모듈 컨셉(IDF에서 커세어의 강연 자료)
이 컨셉에 따른 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이 장착된 경우를 상정하고 있습니다.
메모리 컨트롤러에서 나온 신호가 감쇠하는 모습
메모리 컨트롤러에서 나온 시점에 신호는 모두 디지털 신호이지만 DIMM 시점에서 보자면 신호는 상당히 둔화됩니다. DIMM이 2개가 되면 신호의 변화는 더 큽니다. 이는 모두 속도에서 비롯된 문제입니다.
DDR-SDRAM 세대에서는 1채널 당 DIMM 3장이란 구성이 PC에서도 가능했으나 DDR2-SDRAM 세대 이후에는 1채널 당 DIMM 2장까지로 제한되기 시작했습니다. 이는 데이터 속도가 빨라지면서 3장 이상의 DIMM에서 신호의 변동이 너무 커진다는 문제 때문입니다.
이 신호의 변동은 여러 대책을 세워뒀습니다. 가장 유명한 것으로는 신호에 미리 Pre-Emphasis를 넣어 송신하거나 수신 쪽에서 보정하는(이퀼라이저)같은 방법이 있습니다.
.
Pre-Emphasis는 잠복 신호의 사전 보정입니다. 메모리 컨트롤러에서 깨끗한 신호를 보내도 두번째 DIMM에선 파형이 무너집니다(아래 그림의 첫번째). 이 파형을 정돈시키려면 무너지는 파형과 반대 위상의 신호를 보내면 됩니다. 아래 그림에서 빨간선으로 표시한 것이 그것입니다. 이렇게 하면 두번째 DIMM에서도 깨끗한 파형이 출현하게 됩니다.
Pre-Emphasis의 개념도. 파형이 어지러워질 것을 전제로 두고 반대 위상의 보정 신호를 미리 넣어서 송신.
거꾸로 이퀄라이저는 파형이 흐트러지는 걸 전제로 하여 그 흐트러진 결과를 보고 원래 파형을 재현하는 방식입니다.
문제는 이러한 수단이 별로 실용적이지 않다는 것입니다. 예를 들어 Pre-Emphasis의 경우 두번째 DIMM에 맞춰 파형을 보정하면 첫번째 DIMM에서는 반대 방향으로 변화된 파형이 됩니다. 다수의 DIMM이 하나의 메모리 채널에 연결된 구조에서는 강력한 Pre-Emphasis를 넣어 신호를 보낼 경우 오히려 문제가 됩니다.
또 이퀄라이저는 메모리 컨트롤러 같은 로직 회로에 넣는 건 그리 어렵지 않으나 DRAM 칩은 원래 그런 복잡한 회로를 내장하는 걸 전제로 한 제조 공정이 아닙니다. 그래서 실제로 쓰긴 어려우며 제조 단가도 많이 비싸지니 이것도 좋은 방법은 아닙니다.
해결 방법과 댓가의 균형을 잡기 어려운 DRAM 신호 감쇠와 노이즈 문제
또 신호 속도가 높아지면 그동안 DRAM에서 사용된 싱글 엔드 데드 전송(1개의 신호 라인으로 신호를 전송하는 방식)에서 노이즈의 영향을 받기 쉬워진다는 단점도 있습니다. 아래 그림을 봅시다.
싱글 엔드 데드의 신호 파형이 받는 노이즈의 영향
원래 신호에 노이즈가 끼면 합계 파형(오른쪽의 파란 선)은 상당히 복잡한 양상을 보이게 됩니다. 하이 레벨은 논외로 하더라도 로우 레벨에서 노이즈의 영향을 많이 받는 게 문제입니다. 옛날에는 신호 파형에서 높고 낮음의 전위차가 커서 약간의 노이즈가 낀다 해도 영향을 받지 않았습니다. 그러나 속도를 높이기 위해 전압 레벨을 떨어트리면서 상대적으로 신호가 노이즈의 영향을 받기 쉬워졌습니다.
이를 해결하기 위해 디퍼런셜 전송(2개의 신호 라인으로 전송하는 방식)이 널리 쓰입니다. 아래 그림을 보면 2개의 신호 라인을 써서 신호를 보내고 있습니다.
디퍼런셜 전송 신호 파형
디퍼런셜 전송은 2개의 신호 라인에 모두 노이즈가 낀다 하더라도 수신하는 쪽에서 노이즈의 영향을 줄일 수 있습니다. 또 신호의 전압 그 자체를 싱글 엔 데드보다 낮추기 쉽다는 장점도 있어 보다 고속화에 적합합니다. 문제는 일반적인 DRAM 칩이 디퍼런셜 전송을 지원하지 않는다는 겁니다.
그 이유는 간단합니다. 신호 라인의 수가 2배로 늘어나 그렇습니다. 이로써 DRAM 패키지가 커지고 배선을 넣는 데 시간이 필요하니 그만큼 제조 원가가 비싸질 수밖에 없습니다. 또한 DRAM 그 자체도 복잡해지면서(이퀄라이저 정도는 아니지만) 더욱 제조 단가가 비싸지는 것입니다. FB-DIMM은 이들을 모두 정리해 해결하는 아이디어입니다.
신호 문제를 해결하는 FB-DIMM의 구조
FB-DIMM. 2006년에 판매된 제품과 전시 샘플
AMB
FB-DIMM의 기본적인 구조입니다. 모든 FB-DIMM에는 AMB(Advanced Memory Buffer)라는 버퍼가 탑재됐으며 DIMM의 메모리 칩은 이 AMB에 액세스합니다. 메모리 컨트롤러는 이 AMB와 연결돼 메모리 버스는 하행 10비트 폭, 상행 14비트 폭의 디퍼런셜 전송으로 구성되며 각각의 AMB는 디지 체인으로 최대 8개까지 연결됩니다.
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년 동안 여러가지 히트싱크가 등장하게 됐습니다. 그래도 처음엔 발열이 너무 많아 연속 사용 시 메모리 동작이 불안정해졌고, 랙에 넣을 경우 시스템 전체의 발열이 문제가 됐습니다.
NEC가 처음부터 사용했던 AMB용 히트싱크. 가장 완벽한 방안이지만 비쌉니다.
인텔이 레퍼런스로 쓴 히트싱크. 단순하게 구리판을 고정한 것으로 저렴하나 효과가 부족합니다.
독일 인피니언의 샘플. 너무 두꺼워서 여러 DIMM 슬롯을 연달아 장착할 수 없으니 실용적이지 못합니다.
그리고 2007년 부터는 FB-DIMM이 시스템의 소비 전력을 높인다는 지적이 나오면서 발열이 아닌 전력의 문제로 주제가 바뀌게 됩니다.
결국엔 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로 건너간다는 것이었습니다.
2003년의 가을 IDF에서 공개된 인텔의 메모리 로드맵. 이 시점에 RDRAM은 이미 주류에서 벗어났습니다.
그런데 3년 후인 2006년에는 위 로드맵처럼 바뀌고 말았습니다. 인텔의 계획이 빗나가 FB-DIMM와 별도로 DDR2와 DDR3이 보급된 것입니다.
2006년 가을의 IDF 로드맵
이렇게 되면 FB-DIMM이 갖고 있던 고속 전송이란 장점이 사라지고 메모리의 용량을 늘릴 수 있다는 것만 남게 됩니다. 그래도 이 시점에서는 FB-DIMM2라는 DDR3 세대의 FB-DIMM을 개발할 계획이 있었으나 반년 후에는 이것도 로드맵에서 사라지고 말았습니다.
더 엄밀히 말하면 이는 AMB를 모듈에 탑재하는 걸 포기했다는 말이기도 합니다. 2010년에 인텔은 네할렘-EX 기반인 제온 7500 시리즈를 발표하는데요. 이 제온 7500 시리즈는 메모리 버스에 SMB"(Scalable Memory Buffer)라 불리는 칩이 있고 그것이 Registered DDR3 DIMM에 이어지는 방식입니다.
제온 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용 메모리에 쓰려 하자 문제가 복잡해졌습니다.
분기를 배제하는 고속화 방법
다이렉트 RDRAM의 구조
위 그림은 Direct RDRAM의 기본적인 구조입니다. Base RDRAM과 Concurrent RDRAM은 배선 수를 줄일 목적으로 Data와 Address/Command를 분할해 다중화하는 정교한 구조를 씁니다. Direct RDRAM에서 전송 효율을 높이기 위해 Data와 Address/Command를 분할하면서 배선 수는 더 늘어납니다.
Direct RDRAM은 1채널의 신호 라인에 최대 64개의 메모리 칩을 연결합니다. Data와 Address/Command는 종단 저항을 넣어 반사파를 줄였으며 이는 나중에 나오는 DDR 메모리도 같은 방법을 채용합니다. 반면 송수신에 이용하는 클럭 신호는 끝으로 되돌아가 신호의 차이를 줄이는 구조입니다.
기본적으로는 SDRAM과 같은에 왜 고속 전송이 가능한 것인지 생각하는 사람도 있을 것입니다. 램버스의 설명에 의하면 여기서 핵심은 분기를 만들지 않는다는 것입니다.
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)입니다.
2002년에 판매된 RIMM
위 그림은 RIMM을 4장 장착하는 구조를 설명하는 그림입니다. 4장의 RIMM 배선이 단번에 연결되도록 구성했음을 알 수 있습니다. 이러한 구조를 씀으로서 위 그림과 같은 구조를 유지하면서 메모리 모듈 방식으로 업그레이드도 가능해졌습니다.
RIMM을 4장 장착하는 시스템의 배선
다만 이 구성의 경우 SDRAM처럼 빈 슬롯을 둘 수가 없습니다. 중간에 연결이 끊기기 때문입니다. 이를 피하기 위해서 C-RIMM이라는 걸 씁니다. 아래 그림은 2장의 RIMM과 2장의 C-RIMM을 사용한 사례입니다. C-RIMM은 단순히 배선을 연결만 기판으로 RIMM을 장착하지 않는 슬롯에 이 C-RIMM을 장착하면 종단 저항까지 배선이 전부 이어진다는 구조입니다.
RIMM과 C-RIMM
2장의 RIMM과 2장의 C-RIMM을 사용하는 시스템의 구성
이상과 현실의 괴리. 비싼 가격과 별로인 성능
인텔 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을 무료로 번들하는 세트 판매가 되기도 했습니다만 그래도 보급 속도는 느렸습니다.
이상 상편은 마치도록 하겠습니다.
백과사전에 있는게 이미지가 깨졌다는 댓글이 있어서 재업로드 합니다.
잠시후 하편으로 오도록 하죠
첫댓글 ㄷㄱ
좋은글 감사합니다