ECC 메모리와 registered 메모리의 의미
2010.05.12 03:18
원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어
Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
참고 : 서버에는 ECC 메모리가 사용되며 RAID Controller의 버퍼로 사용되는 메모리는 ECC + 레지스터드 메모리가 사용되고 있습니다. (근래 Dell Products)
Q1. 이번에 컴퓨터를 새로 맞추려고 하는 고민남입니다. 메모리를 뭘살까 고르고 있는데 "ECC"라는 요상한 녀석이 자꾸 보입니다. 듣기로는 서버에나 사용한다는데.. 그만큼 좋다는 뜻인가요? 일반 메모리랑 다른게 뭐죠?
A1. ECC는 에러보정 및 검출을 위한 방식을 뜻합니다.
ECC(Error Correcting Code)는 말그대로 에러를 정정(correct)하는 것 뿐 아니라, 기존의 패리티 메모리에서와 같이 에러를 검출해내는 기능입니다.
복잡한 설명은 피하도록 하고, 기존 simm(single inline memory moddule : 쉽게 이야기하자면 아주 예전 쓰던 72pin 메모리 이하 세대를 지칭합니다.)방식 메모리에서 사용하던 패리티 방식의 경우, 8bit 당 1bit를 할당해서 패리티 신호를 보내고, 이를 통해서 메모리로 부터의 데이터에 어떤 오류가 없는지를 간단히 검사하였습니다.
이경우, 두개의 비트만큼 데이터가 동시에 0이 1로, 혹은 1이 0으로 치환되는 경우(즉 에러가 발생한 경우) 에러를 잡아낼 수 없었습니다. 즉, 단일비트 에러만 검사가 가능했던 것입니다.
하지만, dimm(double inline memory moddule : 쉽게 이야기 하자면 현재 사용하고 있는 sdram 혹은 DDR-sdram들..)의 시대에 접어들어서는 기존의 패리티방식을 대신하여 ecc방식을 사용하고 있습니다.(dimm뿐 아니라 램버스메모리모듈..즉 rimm에서도 ecc적용 메모리는 있습니다.)
ecc의 경우는 64bit당 8bit의 ecc코드(ecc자체가 "코드"라는 말을 포함하고 있지만...)를 사용해서 패리티방식에서 단순히 검출만 가능했던 단일비트 에러는 바로 정정이 가능하고, 복수개 비트 오류에 대해서는 검출이 가능한 방식입니다. 즉, 이때문에 에러보정 및 검출이 가능한 방식이라고 하는 것입니다.
ecc방식 메모리가 서버용으로 사용된다고 하는 것은 어떤 성능상의 이유보다는 혹시 모를 데이터 전송시의 에러발생을 막고자 하는데 더 의의가 있는 것입니다. 즉, "안정성"을 위한 선택이라고 보면 되겠습니다.
일반 유저가 ecc를 선택하는 것은 그다지 매력이 없다고 볼 수 있습니다. 우선 에러 검출과정에서 약간의 성능저하(물론 미미합니다)가 있고, 가격이 일반 제품에 비해 비쌉니다.(ecc를 위해 칩이 하나 더 자리잡게 됩니다. 그리고 수요 역시 범용제품에 비해 적으니까요.)
현재의 일반 pc용 메인보드 칩셋들도 ecc지원이 가능하나, 일반 유저들은 그냥 일반 메모리 제품을 사는 것이 더 나은 선택이라고 생각됩니다.
Q2. 아.. 그렇군요. 그런데 또 궁금한게 있는데요 또 찾다보니 레지스터드라는 녀석이 있더군요. 이 녀석은 또 뭐죠?
A2. 모듈단위로 소형 메모리 컨트롤러를 내장한 방식입니다.
레지스터드(registered ≒ buffered)메모리는 메모리의 확장성을 고려해서 나온 방식이라고 할 수 있습니다.
일반적인 시스템의 경우 다수(일반 pc의 경우 보통 세개)의 메모리 모듈에 대해서 하나의 메모리 컨트롤러(보통의 경우 메인보드의 칩셋이 이를 담당합니다. 노스브리지 혹은 MCH라 불리는 것들...)만 존재하기 때문에, 하나의 모듈에 탑재되는 메모리 칩의 갯수도 제한되고, 이는 전체 관리가능한 모듈의 수를 제한하는 요인이 됩니다.
왜냐하면, 일반적인 sdram이나 DDR-sdram의 경우 병렬방식의 메모리이기 때문에 메모리 칩간의 물리적인 거리에 의해서도 동기화와 같은 제어가 상당히 힘들게 되기때문입니다.
레지스터드 메모리는 이러한 신호정렬의 용이함을 위해서 모듈단위로 소형의 컨트롤러를 탑재하고 있습니다. 이 경우, 하나의 메모리 모듈 내에서 1차적으로 다수의 메모리 칩에 대해서 신호를 정렬해주기 때문에 모듈 디자인도 용이해지고(즉, 하나의 모듈에 탑재가능한 메모리 칩의 수를 늘일수도 있는것입니다.), 전체적으로 보다 많은 다수의 모듈도 메인보드상의 컨트롤러가 제어하기 용이해지는 결과를 가져 올 수 있는 것입니다.
다만 이 레지스터드 방식 메모리 역시 일반 유저가 사용하기에는 별로 매력이 없다고 할 수 있습니다.
왜냐하면, 우선 일반 사용자들의 경우 메모리를 수~수십GB씩 확장해야하는 경우가 잘 없기 때문에 보다 비싼 비용을 감수하면서까지 이 레지스터드 메모리를 선택할 이유가 없으며, 또한 이러한 레지스터드 메모리의 경우 신호정렬을 위해서 다소나마의 성능저하가 발생하기 때문입니다.(한클럭이 소요됩니다.)
보통 일반적으로 우리가 사용하는 메모리의 경우 언버퍼드(unbuffered)방식이라고 지칭하며, 이러한 언버퍼드 메모리를 제한된 수(즉 일반적인 메인보드에서 제공하는 메모리 소켓의 수 정도)만 사용하는 경우 위에서 이야기한것과 같은 우려할만한 신호왜곡문제는 신경쓰지 않아도 좋을듯 합니다. 언버퍼드 메모리의 경우 8~16개(위에서 이야기했던 ecc의 경우는 9~18개)의 메모리칩을 제한된 규격내에서 탑재하기 때문입니다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
참고 : 서버에는 ECC 메모리가 사용되며 RAID Controller의 버퍼로 사용되는 메모리는 ECC + 레지스터드 메모리가 사용되고 있습니다. (근래 Dell Products)
Q1. 이번에 컴퓨터를 새로 맞추려고 하는 고민남입니다. 메모리를 뭘살까 고르고 있는데 "ECC"라는 요상한 녀석이 자꾸 보입니다. 듣기로는 서버에나 사용한다는데.. 그만큼 좋다는 뜻인가요? 일반 메모리랑 다른게 뭐죠?
A1. ECC는 에러보정 및 검출을 위한 방식을 뜻합니다.
ECC(Error Correcting Code)는 말그대로 에러를 정정(correct)하는 것 뿐 아니라, 기존의 패리티 메모리에서와 같이 에러를 검출해내는 기능입니다.
복잡한 설명은 피하도록 하고, 기존 simm(single inline memory moddule : 쉽게 이야기하자면 아주 예전 쓰던 72pin 메모리 이하 세대를 지칭합니다.)방식 메모리에서 사용하던 패리티 방식의 경우, 8bit 당 1bit를 할당해서 패리티 신호를 보내고, 이를 통해서 메모리로 부터의 데이터에 어떤 오류가 없는지를 간단히 검사하였습니다.
이경우, 두개의 비트만큼 데이터가 동시에 0이 1로, 혹은 1이 0으로 치환되는 경우(즉 에러가 발생한 경우) 에러를 잡아낼 수 없었습니다. 즉, 단일비트 에러만 검사가 가능했던 것입니다.
하지만, dimm(double inline memory moddule : 쉽게 이야기 하자면 현재 사용하고 있는 sdram 혹은 DDR-sdram들..)의 시대에 접어들어서는 기존의 패리티방식을 대신하여 ecc방식을 사용하고 있습니다.(dimm뿐 아니라 램버스메모리모듈..즉 rimm에서도 ecc적용 메모리는 있습니다.)
ecc의 경우는 64bit당 8bit의 ecc코드(ecc자체가 "코드"라는 말을 포함하고 있지만...)를 사용해서 패리티방식에서 단순히 검출만 가능했던 단일비트 에러는 바로 정정이 가능하고, 복수개 비트 오류에 대해서는 검출이 가능한 방식입니다. 즉, 이때문에 에러보정 및 검출이 가능한 방식이라고 하는 것입니다.
ecc방식 메모리가 서버용으로 사용된다고 하는 것은 어떤 성능상의 이유보다는 혹시 모를 데이터 전송시의 에러발생을 막고자 하는데 더 의의가 있는 것입니다. 즉, "안정성"을 위한 선택이라고 보면 되겠습니다.
일반 유저가 ecc를 선택하는 것은 그다지 매력이 없다고 볼 수 있습니다. 우선 에러 검출과정에서 약간의 성능저하(물론 미미합니다)가 있고, 가격이 일반 제품에 비해 비쌉니다.(ecc를 위해 칩이 하나 더 자리잡게 됩니다. 그리고 수요 역시 범용제품에 비해 적으니까요.)
현재의 일반 pc용 메인보드 칩셋들도 ecc지원이 가능하나, 일반 유저들은 그냥 일반 메모리 제품을 사는 것이 더 나은 선택이라고 생각됩니다.
Q2. 아.. 그렇군요. 그런데 또 궁금한게 있는데요 또 찾다보니 레지스터드라는 녀석이 있더군요. 이 녀석은 또 뭐죠?
A2. 모듈단위로 소형 메모리 컨트롤러를 내장한 방식입니다.
레지스터드(registered ≒ buffered)메모리는 메모리의 확장성을 고려해서 나온 방식이라고 할 수 있습니다.
일반적인 시스템의 경우 다수(일반 pc의 경우 보통 세개)의 메모리 모듈에 대해서 하나의 메모리 컨트롤러(보통의 경우 메인보드의 칩셋이 이를 담당합니다. 노스브리지 혹은 MCH라 불리는 것들...)만 존재하기 때문에, 하나의 모듈에 탑재되는 메모리 칩의 갯수도 제한되고, 이는 전체 관리가능한 모듈의 수를 제한하는 요인이 됩니다.
왜냐하면, 일반적인 sdram이나 DDR-sdram의 경우 병렬방식의 메모리이기 때문에 메모리 칩간의 물리적인 거리에 의해서도 동기화와 같은 제어가 상당히 힘들게 되기때문입니다.
레지스터드 메모리는 이러한 신호정렬의 용이함을 위해서 모듈단위로 소형의 컨트롤러를 탑재하고 있습니다. 이 경우, 하나의 메모리 모듈 내에서 1차적으로 다수의 메모리 칩에 대해서 신호를 정렬해주기 때문에 모듈 디자인도 용이해지고(즉, 하나의 모듈에 탑재가능한 메모리 칩의 수를 늘일수도 있는것입니다.), 전체적으로 보다 많은 다수의 모듈도 메인보드상의 컨트롤러가 제어하기 용이해지는 결과를 가져 올 수 있는 것입니다.
다만 이 레지스터드 방식 메모리 역시 일반 유저가 사용하기에는 별로 매력이 없다고 할 수 있습니다.
왜냐하면, 우선 일반 사용자들의 경우 메모리를 수~수십GB씩 확장해야하는 경우가 잘 없기 때문에 보다 비싼 비용을 감수하면서까지 이 레지스터드 메모리를 선택할 이유가 없으며, 또한 이러한 레지스터드 메모리의 경우 신호정렬을 위해서 다소나마의 성능저하가 발생하기 때문입니다.(한클럭이 소요됩니다.)
보통 일반적으로 우리가 사용하는 메모리의 경우 언버퍼드(unbuffered)방식이라고 지칭하며, 이러한 언버퍼드 메모리를 제한된 수(즉 일반적인 메인보드에서 제공하는 메모리 소켓의 수 정도)만 사용하는 경우 위에서 이야기한것과 같은 우려할만한 신호왜곡문제는 신경쓰지 않아도 좋을듯 합니다. 언버퍼드 메모리의 경우 8~16개(위에서 이야기했던 ecc의 경우는 9~18개)의 메모리칩을 제한된 규격내에서 탑재하기 때문입니다.