[IT Trend]

ECC 메모리와 레지스터드 메모리

하늘을닮은호수M 2007. 7. 19. 09:14
반응형


각종 메모리 모듈들의 모습

심심찮게 ECC 메모리와 레지스터드 메모리라는 것을 볼 수 있다. 일반적으로 사용되는 메모리는 언버퍼드(unbuffered) 메모리라는 명칭을 가지고 있다. 다만, 이러한 명칭은 잘 사용되지 않고, 레지스터드 메모리나 ECC 메모리는 흔히 '서버용'으로 분류되어 있다. 그래서 심지어 메모리를 전문으로 다루는 곳에서도 ECC와 레지스터드를 동일시하는 경우가 많다. 그러나 메모리 제조사들의 홈페이지를 가 보면 분명히 레지스터드 메모리와 ECC 메모리는 구분되어 있으며, 가격도 다르다.

위 화면은 크루셜 홈페이지에서 볼 수 있는 메모리의 종류와 가격이다. ECC 메모리는 일반 메모리에 비해서 약 10% 정도 비싸며, 거기에 레지스터드까지 적용될 경우 가격은 약 10%가 더 상승한다.(해외에서는 이정도 가격차이를 보이지만, 국내에서의 레지스터드 메모리 가격은 일반 메모리의 거의 두배다. 이유는 알아서들 생각하시라.)

또한 사용자들 역시 ECC와 레지스터드의 의미와 그 역할에 있어서 상당한 혼란을 느끼고 있다. 그래서 이번 강좌에서는 ECC 메모리와 레지스드 메모리의 형태 구분과 그 특징, 구조 등을 알아보고자 한다.

외형적 구분

우선, 일반적으로 사용하는 언버퍼드 메모리와 ECC 메모리, 레지스터드 메모리간의 외형적 차이를 보자.

위 사진은 삼성 PC133 언버퍼드(unbuffered) SDRAM의 사진이다. 흔히 볼 수 있는 메모리인만큼 상당히 익숙하다. 다만, 가운데에 칩이 들어갈 자리 하나가 비어있는 것이 눈에 띈다.

삼성 PC133 ECC(Error Correcting Code) SDRAM의 사진이다. 언버퍼드 메모리와 전체적으로 거의 유사하지만, 가운데에 비어있던 부분이 채워져서 총 9개의 메모리 칩이 장착되어 있는 것을 알 수 있다. 양면 메모리라면 18개의 메모리 칩이 장착된다.

역시 삼성의 PC133 레지스터드(Registered) ECC SDRAM의 사진이다. 언버퍼드나 ECC 메모리보다 메모리 모듈의 높이가 약간 높으며, 그래서 아래쪽에 몇가지 부가적인 칩이 달려 있는 것이 보인다. 이 부분이 바로 레지스터(Register)이며, 레지스터가 달려있기 때문에 레지스터드 메모리라고 불린다.

레지스터드 메모리의 구분은 확실하다. 메모리 칩 외에 잡다한 칩들이 더 달려있으면 레지스터드 메모리라고 보아도 좋다. 높이에 의한 구분은, 예전에는 통했지만 지금은 그다지 통하지 않는다. 아래 사진과 같은 메모리가 종종 나오기 때문이다.


엘피다(Elpida)사의 로우 프로파일 레지스터드(low-profile registered)ECC DDR SDRAM
Copyright(C) by
Elpida

이것은 높이가 낮은 1U 서버 등에서 사용되기 위해서 만들어진 것으로써 레지스터드 ECC의 형식을 가지면서도 높이는 일반 언버퍼드와 동일하다. 그래도 메모리 칩 9개(=ECC)가 장착되어 있고 레지스터(가운데 조그마한 칩 두개)가 붙어 있어서 레지스터드 메모리라는 것을 알 수 있다.

한편, ECC 메모리는 어떻게 구분해야할까. 의외로 간단하다. 메모리 칩의 수가 8의 배수이면 일반 언버퍼드 메모리, 9의 배수이면 ECC 메모리라고 생각하면 정확하다. 이는 뒤에서도 다시 설명하겠지만 다음과 같은 이유 때문이다. PC용 메모리는 64bit의 버스 폭을 맞추기 위해서 8개의 8bit 버스 칩으로 구성되어 있다. ECC는 메모리 64bit당 8bit의 ECC코드를 추가하여 데이터를 전송함으로써, 전송중 일어나는 에러를 검출하고 정정할 수 있는 능력을 가진다. 이 기능의 추가를 위해서 동일한 메모리 칩을 1개 더 장착해서 8bit × 9 = 72bit의 메모리 버스를 형성한다. 이 중에서 64bit만이 실질적인 데이터 전송에 사용되며, 8bit는 에러 검출 및 정정을 위한 ECC코드의 전송에 사용되는 것이다.

결국 그래서 ECC 메모리는 칩의 개수가 9의 배수이다. 단면으로 구성되었을 경우에는 9개, 양면에서는 18개의 칩이 탑재된다. 고용량 메모리의 경우 36개의 칩을 탑재하는 경우도 있다.

패리티 메모리와 ECC


삼성전자의 PC133 ECC SDRAM

패리티 메모리

PC가 출시되었던 초기에는 메모리의 오류를 막기 위해서 모든 컴퓨터에 패리티 방식이 사용되었다. 패리티라는 것은 8bit당 1bit의 패리티 비트를 두어서 데이터의 전달과정중에 오류가 생긴 것을 검출하는 방식을 지칭한다. 즉, 시스템에서 나타날 수 있는 오류를 방지하고자 패리티 메모리를 포함시켰고, 이것은 그 역할을 충분히 해냈다.

그런데, 1994년부터 분위기가 조금씩 달라졌다. 메모리 기술의 발달로 메모리의 오류 발생 확률이 점점 적어지자 일부 PC 제조사에서 패리티가 포함되지 않은 메모리를 탑재한 컴퓨터를 내놓기 시작한 것이다. 물론 오류 발생 확률은 일반 사용자들이 신경쓸 필요가 없을 정도로 적었으며, 패리티를 제거함으로써 패리티 메모리에 필요한 약 10~15%의 추가 메모리 비용 부담을 줄일 수 있어서 제조사 측에서는 즐거운 일이었다. 하지만, 대단히 중요한 데이터를 다루는 사용자들에게는 역시 패리티는 필요한 것이었으며 그러한 사용자는 별도로 요청을 해야만 했다.

이러한 추세를 급격히 가속시킨 것은 일부 대형 PC 제조사들이 패리티가 없는(넌패리티 : non-parity) 메모리를 탑재한 채로 PC를 출하한 것이다. 대형 PC 제조사들이 이러한 정책을 펴나가자 너도나도 이 정책을 따랐으며, 그 결과 넌 패리티 메모리가 거의 표준으로 굳어진다. 그리고 이것을 완전히 굳어지게 한 것이 인텔의 430FX 칩셋의 출시였다.

인텔 430FX 칩셋은 아예 패리티라는 것을 지원하지 않았다. 칩셋 레벨에서의 패리티 지원은 사실 원가상승에는 그다지 기여하지 않는다. 있으나 없으나 가격은 어차피 비슷하며, 회로도 복잡하지 않기에 만들기도 만만했다. 하지만 430FX는 패리티를 외면해버렸고, 인텔이 그러한 정책을 펼치자 다들 그냥 그러려니 하고 이를 따라갔다. 결국 일반 사용자용 메모리에서는 패리티가 사라졌고, 이것은 ECC까지 그대로 이어졌다.

하지만, 웍스테이션이나 서버, 그리고 대단히 중요한 작업을 하는 시스템들은 가격보다는 시스템의 안정성과 신뢰도가 절대적으로 우선되기 때문에 패리티 메모리나 ECC 메모리를 요구한다.

패리티 메모리와 ECC 메모리의 원리

SDRAM이 나오기 전까지, EDO 메모리나 FPM 등이 사용한 에러 정정방식은 패리티(parity) 방식이었다. 이것과 지금의 ECC를 혼동하는 사용자들도 많다. 우선 패리티가 무엇인지부터 정리해보자.

패리티의 원리는 다음과 같다.

PC에서 사용되는 것은 홀수 패리티(odd parity)이다. 홀수 패리티라는 것은 전송되는 데이터들의 합이 홀수가 되도록 패리티 비트가 정해진다.(보다 정확하게는, 전체의 XOR 값이 1이 되어야 한다고 정의된다. 그러나 이해를 편하게 하기 위해서 전체 합을 홀수가 되어야 한다는 것으로 표현하였다.)예를 들어서 다음과 같은 데이터가 전송된다고 하자.

전송되는 8bit 내에 1이 다섯개 있어서 전체의 합은 홀수가 된다. 이를 홀수로 유지시키기 위해서는 0이 더해져야만 하며, 그래서 패리티 비트가 0이 된다. 한편, 데이터 안에 1이 짝수개가 있다면 패리티 비트가 1이 되어서 전체의 합을 홀수로 유지시킨다.

데이터를 수신하는 측에서는 수신된 데이터와 패리티 비트를 합해서 그 결과가 홀수가 나오는지, 짝수가 나오는지를 살펴보고, 홀수가 나온다면 무사히 지나가고 짝수가 나온다면 사용자에게 에러가 발생했다는 것을 통보한다.

패리티를 사용하면 시스템의 어디서 문제가 발생했는지를 검출할 수 있다. 데이터가 전달되는 부분마다 패리티 검사를 수행하기 때문에 만약 메모리 컨트롤러에서 문제가 생겼는지, 메모리 자체에서 문제가 생겼는지 등이 검출되어서 시스템을 수리하는 과정도 보다 용이해진다.

물론 단점도 있다. 만약 2개의 bit에서 동시에 문제가 발생했다면, 데이터에 문제가 있다고 할지라도 데이터의 합계의 홀/짝은 그대로 유지된다. 즉, 이러한 경우에는 데이터 오류가 검출되지 않는다. 물론, 메모리 자체의 오류도 적게 일어나거니와, 전체 메모리 오류 중에서 97% 이상이 단일 bit에서 발생하는 문제이기 때문에 패리티가 잡아낼 수 없는 문제점은 거의 없다고 보아도 좋다. 그러나 확률적으로 문제가 있는 데이터가 그대로 전달되는 상황이 발생하기도 한다.

이러한 문제를 해결한 것이 ECC(Error Correcting Code)이다. ECC는 단지 에러를 검출하기만 하는 패리티에서 대폭 향상되어서 단일 bit의 에러에 대해서는 이를 검출하여 직접 교정할 수 있는 능력을 가지고 있다. 즉, 패리티에서는 데이터에 오류가 있을 경우 이의 재전송을 요구하거나 동작을 중지하였던 것에 반해서 절대 다수를 차지하는 단일 bit의 에러에서는 시스템의 정지 없이 바로 교정하면서 연속적인 동작이 가능하다.

ECC의 종류에는 여러가지가 있는데, PC용 메모리에 적용되어 있는 ECC는 '단일 bit 에러 교정, 2bit 에러 검출(SEC-DED : Single-bit Error Correcting, Double-bit Error Detecting)' 방식이다. 그래서 하나의 bit에서 문제가 발생했다면 이를 직접 교정하고, 2개의 bit에서 문제가 발생한다고 해도 이를 검출하여 사용자에게 통보할 수 있다.

ECC의 구현원리는 다음과 같다.

먼저, 데이터를 기록할 때, 메모리 컨트롤러는 체크 비트를 만들어내어 이를 같이 기록한다.

이때 만들어진 체크 비트는 메모리에 같이 저장되었다가 이를 메모리 컨트롤러가 읽어낼 때 같이 읽혀진다.

이 과정에서, 메모리 컨트롤러는 저장되어 있는 데이터와 체크 비트를 비교하면서 서로 맞는 것인가를 확인한다. 이 때, 데이터와 체크 비트가 서로 맞는 것이라면 그대로 데이터가 출력되고, 만약, 데이터 내에 1bit의 오류가 발생했다면 이를 자동으로 정정한다. 2bit 이상의 오류가 발견될 경우 이를 사용자에게 알리고 그 이상의 시스템 운영을 정지시킨다.

그래서 ECC 메모리는 패리티에 비해서 높은 데이터 신뢰도를 구현하면서 동시에 단일 bit에 대해서는 직접적으로 정정을 수행함으로 인해 성능저하를 줄일 수 있게 되었다.

물론, ECC 메모리 컨트롤러 내에서 체크 비트를 연산하고, 이를 사용하여 검사하는 과정에서 성능의 하락이 일어난다. 하지만 이것은 수 % 내외이므로 큰 폭의 성능하락은 일어나지 않으며, 안정성의 극대화라는 측면에서 본다면 실보다는 득이 훨씬 크다.

SIMM에서는 패리티이고, DIMM에서는 ECC가 사용된다는데..


이제는 과거의 유물이 되어버린 72pin SIMM

i430TX 칩셋까지 사용되었던 72pin SIMM과 현재 사용되고 있는 168pin SDRAM DIMM 및 184pin DDR SDRAM DIMM의 근본적인 차이점은 단면(SIMM - Single Inline Memory Module), 양면(DIMM - Double~) 이라는 차이 외에도, 메모리 인터페이스의 폭에 있다. 72핀 메모리는 32bit의 메모리 버스를 가졌고, DIMM은 64bit의 메모리 버스를 가지고 있었다.(펜티엄에 72pin 메모리를 사용하기 위해서 2개의 메모리를 꽂는 것은 바로 이 버스 폭을 맞추기 위함이었다. 펜티엄 프로세서는 64bit의 메모리버스를 갖고 있기 때문이다. 즉, 당시의 72pin 메모리는 듀얼채널로 동작했다는 놀라운 사실!!!)

패리티의 경우 8bit당 1bit의 패리티 비트를 필요로 한다. 버스폭이 넓어진다면 이 역시 16bit에 2bit, 64bit에 8bit 하는 식으로 커지면 된다. 그런데, ECC는 연산 방법이 좀 복잡해서, 32bit의 메모리가 한번에 전송된다면 여기에 7bit의 체크 비트를 필요로 한다. 만약, 32bit의 버스폭을 가지는 메모리에서 32MB의 메모리 용량을 구현한다면 여기에 7MB의 메모리가 추가로 장착되어야만 ECC가 구현된다는 것이다. 한편, 64bit가 한번에 전송된다면 8bit의 체크 비트를 필요로 한다. 이것은 결국 패리티와 같은 수준의 추가 메모리만을 요구한다는 것이다.

이러한 이유 때문에, 32bit의 버스폭을 갖는 72핀 메모리에서는 패리티가 사용되었지만, 64bit의 버스폭을 갖는 168핀 DIMM 부터는 패리티 대신에 ECC가 사용되고 있는 것이다.

레지스터드 메모리


삼성전자의 PC133 Registered ECC SDRAM

레지스터드 메모리 ≠ ECC 메모리


킹스톤사의 512MB Registered ECC PC133 SDRAM의 레지스터

레지스터드 메모리가 그러한 이름으로 불리는 이유는 지극히 간단하다. 바로 레지스터(Register)가 달려있기 때문이다. 흔히, 레지스터드 메모리를 ECC 메모리와 혼동하는 경우가 있는데, 레지스터드 메모리와 ECC 메모리는 바로 레지스터의 유무를 보고 쉽게 분간할 수 있다.

대개 서버용으로 ECC가 사용되기도 하고 레지스터드 ECC가 사용되기도 한다는 점이 이러한 혼란에 일조하기도 하지만, 모든 레지스터드 메모리가 기본적으로 ECC가 적용된 것이기 때문에 '레지스터드' 대신 '레지스터드 ECC' 메모리라고도 불리고 있다는 것도 이러한 혼란을 불러일으키는 이유이다.

하지만, ECC와 레지스터드의 개념을 확실히 알고 있다면 외형적으로 완전히 틀리는 이들 메모리를 분간하지 못할 까닭은 없다.

레지스터와 레지스터드 메모리

레지스터의 역할은 신호왜곡(skew)의 제거, 쉽게말하면 신호의 정렬이며, 이는 곧 메모리 칩의 제어를 의미한다.

즉, 간소화된 메모리 컨트롤러가 메모리 모듈 상에 위치한다고 보면 된다. 이러한 구성은 시스템의 수준에서, 그리고 메모리 모듈 자체의 수준에서 각각 한가지씩의 잇점을 제공한다.

일반적인 언버퍼드 메모리의 경우 각 메모리 디바이스까지도 칩셋의 메모리 컨트롤러가 담당하는 구조를 가진다.

이러한 구조는 전체적인 구조가 간소화되며, 빠른 동작을 기대할 수 있다는 잇점을 가지지만, 반대로, 메모리 컨트롤러 하나가 모든 메모리 디바이스까지 직접 제어해야 하기 때문에 메모리의 확장이 쉽게 한계에 다다른다. 특히나 메모리의 속도가 빨라질수록 메모리의 타이밍이 대단히 민감해지기 때문에 컨트롤러 하나로 모든 메모리를 제어하는 방법에서는 다룰 수 있는 메모리 디바이스의 제한이 더욱 심해진다.

일반 사용자들이라면야 2개 혹은 3개의 모듈을 사용해도 별 상관이 없지만 수십 GB급의 고용량을 필요로 하는 서버 및 그에 준하는 시스템에서는 언버퍼드 메모리로는 메모리 확장에 답답함을 느낄수밖에 없다.

한편, 레지스터드 메모리는 이러한 문제점을 상당부분 해소한다.

각 메모리 디바이스의 제어는 메모리 모듈에 탑재된 레지스터에서 행하고 있기 때문에 메인 칩셋에 있는 메모리 컨트롤러는 단지 레지스터들만을 제어하면 된다. 이는 메모리 컨트롤러의 설계를 대단히 단순하게 바꿀 수 있을뿐만 아니라 메모리 모듈을 보다 많이 사용하게 해 줌으로써 대용량 메모리의 구현이 가능해진다.

또한, 메모리 모듈 자체에서 얻을 수 있는 잇점도 있다. 일반적으로 하나의 메모리 모듈에 탑재할 수 있는 메모리 칩의 개수는 한 면에 8개, ECC 칩까지 포함해서 9개이다. 그리고 양면 구성으로 18개까지가 가능하다. 현재 가장 많이 사용되는 메모리 칩의 용량은 256Mbit. 이 칩으로 단면 메모리를 구성하면 256MB가 된다. 그리고 양면 메모리를 만들면 512MB. 만약 1GB 용량의 모듈을 만들고 싶다면 어떻게 해야할까. 한 면에 9개의 칩이 아닌, 18개의 칩이 장착되어야만 한다.

이러한 구성을 위해서, 메모리는 복층구조, 혹은 다열구조를 가져야만 한다. 그러나 복층/다열구조를 가지게 된다면 문제가 발생한다. 바로 메모리의 위치 때문이다.


이런 메모리가 가능할까?

간단히 생각해 본다면, 메모리를 2열로 구성하면 메모리 용량이 2배가 되기는 한다. 이러한 구조가 되면서 메모리 디바이스의 수가 많아지고, 컨트롤러에서 이들 메모리를 제어하는게 힘들어진다는 것은 쉽게 생각할 수 있다. 그런데, 한가지 문제가 더 발생하는데, 바로 신호왜곡(skew)이 상당히 커진다는 것이다.

메모리 칩으로부터 모듈이 보드에 연결되는 핀까지의 거리가 윗 열과 아랫 열의 메모리 사이에 엄청난 차이가 생긴다. 안그래도 높은 클럭으로 인해서, 그리고 64bit라는 넓은 버스로 인해서 신호왜곡은 상당히 민감한 문제가 되고 있는데도 불구하고 여기에 어려움을 주는 대단히 큰 요소가 하나 더 등장한 것이다. 여기에 레지스터가 개입됨으로써 문제는 해소될 수 있다.

레지스터는 각 메모리 디바이스를 제어함과 동시에, 메모리 디바이스들로부터 신호를 받아서 이들의 타이밍을 재조정하여 출력함으로써 내부적으로 발생하는 신호왜곡을 제거하는 효과를 가진다. 대신, 레지스터드 메모리에서는 속도의 저하가 일어난다.

레지스터에서 각 칩의 신호들을 정렬하기 위해서는 한번의 클럭을 필요로 한다. 즉, 데이터의 전송과정에서 레지스터가 '까먹는' 클럭이 생기는 것이다. 이 때문에 레지스터드 메모리는 언버퍼드 메모리에 비해서 약간 낮은 성능을 갖는다. 일반 사용자들용 제품군에 레지스터드 메모리를 사용하지 않으려는 것은 가격도 가격이지만, 이러한 성능의 차이 때문이기도 하다.

여하튼, 이러한 특징으로 인해 레지스터드 메모리는 다열구조나 복층구조는 물론이며, 메모리 칩의 배치에서 상당한 다양성을 가질 수 있게 되며, 다수의 메모리 칩을 장착함으로써 대용량의 메모리를 만들 수 있다. 아래의 사진들은 그러한 '다양한' 메모리 배치의 사례를 보여주고 있다.


트랜센드(Trenscend) 사의 1GB 레지스터드 ECC PC133 SDRAM


인피니언사의 1GB 레지스터드 ECC DDR333 메모리

레지스터드 메모리의 반대말은 언버퍼드 메모리라고?

이제 레지스터드 메모리가 어떤 것인지 독자분들도 어느정도 감을 잡았을 것이라고 생각한다. 그런데, 분명 이러한 생각을 가지는 독자가 있을 것이다. '레지스터드의 반대말이 왜 언버퍼드인가? 언레지스터드가 아닌가? 또한, 언버퍼드의 반대말은 버퍼드가 되어야하지 않는가?'라고.

분명히 생길 수 있는 의문점이다.

이것은 이전부터 이어져내려온 관례라고 생각하는 것이 좋다. EDO 메모리가 한창 사용되던 때에 사용된 서버용 메모리는 '버퍼드(buffered)'라고 불렸다. 여기에서의 버퍼 역시 지금의 레지스터와 거의 유사한 역할을 한다. 그래서 이러한 메모리의 반대되는 말로 '언버퍼드(unbuffered)'가 사용되었다.

이후에, EDO 메모리의 영역을 SDRAM이 대체하게 되면서, 버퍼드 메모리는 레지스터드 메모리로 바뀌었다. 이것은 EDO 메모리와 SDRAM 간의 특성 차이로 인해서 이름이 변경된 것인데, 일반 사용자용 언버퍼드 메모리들은 어차피 달라지는 것이 거의 없어서 그대로 언버퍼드 메모리로 불리게 되었다.

결국, 현재에 이르러서도 '언레지스터드-레지스터드'가 아닌, '언버퍼드-레지스터드'로 불리고 있다.

레지스터드 메모리의 구성과 용도

레지스터드 메모리의 구성

앞서 설명한대로, 레지스터드 메모리는 레지스터가 달려있기 때문에 메모리 모듈 내의 칩 배치가 상당히 자유롭고, 보다 많은 칩을 장착할 수 있다. 그래서 많은 메모리 제조사들은 다양한 방법을 사용하여 고용량 메모리를 제조하고 있다.

이것은 가장 일반적인 레지스터드 메모리의 구성이다. 메모리 칩은 아홉개(ECC가 적용되었으므로)이며, 그 아래로 레지스터드 메모리가 위치해있다. 대개 이러한 경우 메모리 칩은 9개(단면) 혹은 18개(양면)가 탑재된다. 하나의 메모리 칩이 가지는 용량이 256Mbit라고 할 때, 하나의 모듈에서 512MB의 구성이 가능하다.

이것은 다열구조의 메모리이다. 언버퍼드 메모리에서는 메모리의 데이터 경로 길이의 차이로 인해서 다열구조의 메모리 구성이 불가능하지만, 레지스터드 메모리에서는 타이밍을 정렬해주는 레지스터로 인해서 이러한 다열구조 메모리가 만들어질 수 있다. 말 그대로, 메모리의 열이 두배로 늘어났기 때문에 탑재되는 메모리의 양도 두배로 늘어난다. 위와 같은 조건일 경우 양면으로 해서 하나의 모듈로 1GB의 고용량을 구현할 수 있다.

그러나 다열구조 메모리는 최근에는 잘 사용되고 있지 않다. 서버들의 크기가 점점 작아지고 있기 때문이다. 예전같으면 서버는 무조건 커다란 케이스에 이거저거 다 집어넣은 것이었지만, 요즘의 서버는 랙에 장착되는 경우가 많다. 이는 공간절약과 작업의 효율성 때문인데, 여하튼 1U 내지는 2U 서버 사용의 증가로 인해서 지나치게 높이가 높은 메모리는 서버에 장착한다는 것이 거의 불가능하다. 특히나 1U 서버라면 현재 판매되고 있는 일반적인 언퍼버드 메모리 정도밖에 장착할 수 없다. (그래서 메모리 슬롯이 30˚ 각도로 비스듬하게 장착되어 있는 메인보드도 있다.)

이러한 이유로 인해서 요즘은 고용량 메모리의 제작에 아래와 같은 스택(stack)형 메모리를 사용한다.

일단 겉보기에는 보통의 메모리와 다를바가 없어보인다. 그러나 자세히 보면 스택형 메모리의 특징이 드러난다. 바로 메모리의 복층구조이다.

메모리가 다른 메모리를 '업고' 있다. 이렇게 만들기 위해서는 공정이 좀 복잡해지기는 하지만 일반적인 메모리의 높이에서 두배의 메모리 용량을 구현할 수 있어서 TSOP 타입의 패키지를 사용하면서 고용량 메모리르 구현하는데에 자주 사용되는 방법이다.

특히 엘피다(elpida)사의 경우 TSOP 패키지가 아닌, TCP(Tape Carrier Package) 패키지를 사용해서 스택 구조에서도 일반 메모리에 비해서 두께가 많이 두꺼워지지 않는다.


엘피다 메모리의 TCP 스택구조
Copyright(c) by Elpida


엘피다의 2GB용량의 DDR SDRAM 메모리 모듈. 512Mbit 칩 36개를 사용하였다.
Copyright(c) by Elpida

또는, 점점 고속화되가는 메모리로 인해서 아예 BGA 패키지를 사용하는 경우도 있다. BGA 패키지는 TSOP 패키지에 비해서 차지하는 면적이 월등히 좁기 때문에 같은 면적에 보다 많은 메모리를 탑재하는 것이 가능하다. 아래 사진에서 보이는 인피니언사의 1GB DDR333 레지스터드 메모리 모듈은 그러한 예를 단적으로 보여준다.


인피니언사의 1GB 레지스터드 ECC DDR333 메모리
Copyright(c) by Infineon

메모리의 높이는 일반적인 메모리와 거의 유사함에도 불구하고 한면에 18개의 메모리가 탑재되어 있다. 이것은 메모리가 BGA 타입으로 변경되면서 크기가 줄어들었기 때문에 가능해진 것이다. 물론 BGA 패키지는 그 특성상 스택이 불가능하기 때문에 고용량을 위해서는 이러한 형태를 취해야만 한다.

레지스터드 메모리의 용도

레지스터드 메모리가 사용될 필요성은 크게 두가지로 나눌 수 있다. 우선은 위와 같은 대용량 메모리의 구성이다. 18개를 초과하는 칩을 하나의 모듈에 탑재하기 위해서는 레지스터드가 필수적이다. 또 한가지는 바로 '보다 많은 메모리 모듈을 사용하기 위해서'이다. 단적인 예가 바로 다음과 같은 메인보드이다.



Supermicro사의 P4QH8 메인보드와, 이 메인보드에 사용되는 메모리 확장카드인 MEC2
Copyright(c) by
Supermicro

위의 메인보드는 서버용으로 사용되는 제품이다. 4개의 Xeon 프로세서를 탑재하고, 무엇보다도 메모리를 최대 32GB까지 지원한다. 메모리 확장슬롯은 총 16개이며, 32GB의 메모리를 사용하기 위해서는 모듈당 2GB의 용량을 가지는 메모리를 사용해야 한다. 이것은 이 글에서 내내 언급했던 레지스터드 메모리의 필요성을 보여주는 것이다. 총 16개의 메모리 슬롯을 사용하기 위해서, 그리고 모듈당 2GB의 용량을 구현하기 위해서 레지스터드 메모리는 필수적이다.

굳이 이렇게 거창한 메인보드를 예로 들지 않더라도, 주변에서 쉽게 찾을 수 있다. 쉬운 예로, VIA의 Apollo KT266A 칩셋(오른쪽 사진)이 있다. KT266A 칩셋을 사용한 메인보드는 일반적으로 3개의 메모리 슬롯만을 가진채로 출시되었다. 그러나 데이터시트 상의 데이터에 의하면 총 4개의 메모리 모듈을 사용할 수 있었다.

이것은 KT266A(KT266도..) 칩셋이 언버퍼드 메모리를 사용해서는 3개까지의 모듈만을 지원하고, 레지스터드 메모리를 사용해야만 4개의 모듈을 모두 사용할 수 있기 때문이었다. 어차피 일반 사용자는 레지스터드 메모리를 잘 사용하지 않기 때문에, 업체의 입장에서는 굳이 4개의 메모리 소켓을 달아서 '4개를 사용하려면 레지스터드 메모리를 사용해라'는 등의 주의문구를 넣느니보다, 그냥 메모리소켓을 3개까지만 장착하는 것이 편리했던 것이다.

그래도 극히 일부 메인보드는 4개의 메모리 슬롯을 탑재하고 출시되었다.(물론 다 사용하려면 레지스터드 메모리를 사용해야 하고..)

이것은 AMD760 칩셋에도 마찬가지로 적용되어서 AMD760 칩셋에서 4개의 메모리 슬롯을 사용하기 위해서는 레지스터드 메모리만을 사용해야 했다. 그렇지 않으면 메모리 모듈 사용한계는 2개로 줄어들었고, 이 때문에 대개의 AMD760 칩셋 메인보드는 2개의 메모리 슬롯만을 가지고 있다.

반응형