ECC Memory.docx
- 文档编号:18661288
- 上传时间:2023-08-24
- 格式:DOCX
- 页数:24
- 大小:1.34MB
ECC Memory.docx
《ECC Memory.docx》由会员分享,可在线阅读,更多相关《ECC Memory.docx(24页珍藏版)》请在冰点文库上搜索。
ECCMemory
ECC메모리와레지스터드메모리
각종메모리모듈들의모습
심심찮게ECC메모리와레지스터드메모리라는것을볼수있다.일반적으로사용되는메모리는언버퍼드(unbuffered)메모리라는명칭을가지고있다.다만,이러한명칭은잘사용되지않고,레지스터드메모리나ECC메모리는흔히'서버용'으로분류되어있다.그래서심지어메모리를전문으로다루는곳에서도ECC와레지스터드를동일시하는경우가많다.그러나메모리제조사들의홈페이지를가보면분명히레지스터드메모리와ECC메모리는구분되어있으며,가격도다르다.
위화면은크루셜홈페이지에서볼수있는메모리의종류와가격이다.ECC메모리는일반메모리에비해서약10%정도비싸며,거기에레지스터드까지적용될경우가격은약10%가더상승한다.(해외에서는이정도가격차이를보이지만,국내에서의레지스터드메모리가격은일반메모리의거의두배다.이유는알아서들생각하시라.)
또한사용자들역시ECC와레지스터드의의미와그역할에있어서상당한혼란을느끼고있다.그래서이번강좌에서는ECC메모리와레지스드메모리의형태구분과그특징,구조등을알아보고자한다.
외형적구분
우선,일반적으로사용하는언버퍼드메모리와ECC메모리,레지스터드메모리간의외형적차이를보자.
위사진은삼성PC133언버퍼드(unbuffered)SDRAM의사진이다.흔히볼수있는메모리인만큼상당히익숙하다.다만,가운데에칩이들어갈자리하나가비어있는것이눈에띈다.
삼성PC133ECC(ErrorCorrectingCode)SDRAM의사진이다.언버퍼드메모리와전체적으로거의유사하지만,가운데에비어있던부분이채워져서총9개의메모리칩이장착되어있는것을알수있다.양면메모리라면18개의메모리칩이장착된다.
역시삼성의PC133레지스터드(Registered)ECCSDRAM의사진이다.언버퍼드나ECC메모리보다메모리모듈의높이가약간높으며,그래서아래쪽에몇가지부가적인칩이달려있는것이보인다.이부분이바로레지스터(Register)이며,레지스터가달려있기때문에레지스터드메모리라고불린다.
레지스터드메모리의구분은확실하다.메모리칩외에잡다한칩들이더달려있으면레지스터드메모리라고보아도좋다.높이에의한구분은,예전에는통했지만지금은그다지통하지않는다.아래사진과같은메모리가종종나오기때문이다.
엘피다(Elpida)사의로우프로파일레지스터드(low-profileregistered) ECCDDRSDRAM
Copyright(C)byElpida
이것은높이가낮은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
삼성전자의PC133ECCSDRAM
패리티메모리
PC가출시되었던초기에는메모리의오류를막기위해서모든컴퓨터에패리티방식이사용되었다.패리티라는것은8bit당1bit의패리티비트를두어서데이터의전달과정중에오류가생긴것을검출하는방식을지칭한다.즉,시스템에서나타날수있는오류를방지하고자패리티메모리를포함시켰고,이것은그역할을충분히해냈다.
그런데,1994년부터분위기가조금씩달라졌다.메모리기술의발달로메모리의오류발생확률이점점적어지자일부PC제조사에서패리티가포함되지않은메모리를탑재한컴퓨터를내놓기시작한것이다.물론오류발생확률은일반사용자들이신경쓸필요가없을정도로적었으며,패리티를제거함으로써패리티메모리에필요한약10~15%의추가메모리비용부담을줄일수있어서제조사측에서는즐거운일이었다.하지만,대단히중요한데이터를다루는사용자들에게는역시패리티는필요한것이었으며그러한사용자는별도로요청을해야만했다.
이러한추세를급격히가속시킨것은일부대형PC제조사들이패리티가없는(넌패리티:
non-parity)메모리를탑재한채로PC를출하한것이다.대형PC제조사들이이러한정책을펴나가자너도나도이정책을따랐으며,그결과넌패리티메모리가거의표준으로굳어진다.그리고이것을완전히굳어지게한것이인텔의430FX칩셋의출시였다.
인텔430FX칩셋은아예패리티라는것을지원하지않았다.칩셋레벨에서의패리티지원은사실원가상승에는그다지기여하지않는다.있으나없으나가격은어차피비슷하며,회로도복잡하지않기에만들기도만만했다.하지만430FX는패리티를외면해버렸고,인텔이그러한정책을펼치자다들그냥그러려니하고이를따라갔다.결국일반사용자용메모리에서는패리티가사라졌고,이것은ECC까지그대로이어졌다.
하지만,웍스테이션이나서버,그리고대단히중요한작업을하는시스템들은가격보다는시스템의안정성과신뢰도가절대적으로우선되기때문에패리티메모리나ECC메모리를요구한다.
패리티메모리와ECC메모리의원리
SDRAM이나오기전까지,EDO메모리나FPM등이사용한에러정정방식은패리티(parity)방식이었다.이것과지금의ECC를혼동하는사용자들도많다.우선패리티가무엇인지부터정리해보자.
패리티의원리는다음과같다.
PC에서사용되는것은홀수패리티(oddparity)이다.홀수패리티라는것은전송되는데이터들의합이홀수가되도록패리티비트가정해진다.(보다정확하게는,전체의XOR값이1이되어야한다고정의된다.그러나이해를편하게하기위해서전체합을홀수가되어야한다는것으로표현하였다.) 예를들어서다음과같은데이터가전송된다고하자.
전송되는8bit내에1이다섯개있어서전체의합은홀수가된다.이를홀수로유지시키기위해서는0이더해져야만하며,그래서패리티비트가0이된다.한편,데이터안에1이짝수개가있다면패리티비트가1이되어서전체의합을홀수로유지시킨다.
데이터를수신하는측에서는수신된데이터와패리티비트를합해서그결과가홀수가나오는지,짝수가나오는지를살펴보고,홀수가나온다면무사히지나가고짝수가나온다면사용자에게에러가발생했다는것을통보한다.
패리티를사용하면시스템의어디서문제가발생했는지를검출할수있다.데이터가전달되는부분마다패리티검사를수행하기때문에만약메모리컨트롤러에서문제가생겼는지,메모리자체에서문제가생겼는지등이검출되어서시스템을수리하는과정도보다용이해진다.
물론단점도있다.만약2개의bit에서동시에문제가발생했다면,데이터에문제가있다고할지라도데이터의합계의홀/짝은그대로유지된다.즉,이러한경우에는데이터오류가검출되지않는다.물론,메모리자체의오류도적게일어나거니와,전체메모리오류중에서97%이상이단일bit에서발생하는문제이기때문에패리티가잡아낼수없는문제점은거의없다고보아도좋다.그러나확률적으로문제가있는데이터가그대로전달되는상황이발생하기도한다.
이러한문제를해결한것이ECC(ErrorCorrectingCode)이다.ECC는단지에러를검출하기만하는패리티에서대폭향상되어서단일bit의에러에대해서는이를검출하여직접교정할수있는능력을가지고있다.즉,패리티에서는데이터에오류가있을경우이의재전송을요구하거나동작을중지하였던것에반해서절대다수를차지하는단일bit의에러에서는시스템의정지없이바로교정하면서연속적인동작이가능하다.
ECC의종류에는여러가지가있는데,PC용메모리에적용되어있는ECC는'단일bit에러교정,2bit에러검출(SEC-DED:
Single-bitErrorCorrecting,Double-bitErrorDetecting)'방식이다.그래서하나의bit에서문제가발생했다면이를직접교정하고,2개의bit에서문제가발생한다고해도이를검출하여사용자에게통보할수있다.
ECC의구현원리는다음과같다.
먼저,데이터를기록할때,메모리컨트롤러는체크비트를만들어내어이를같이기록한다.
이때만들어진체크비트는메모리에같이저장되었다가이를메모리컨트롤러가읽어낼때같이읽혀진다.
이과정에서,메모리컨트롤러는저장되어있는데이터와체크비트를비교하면서서로맞는것인가를확인한다.이때,데이터와체크비트가서로맞는것이라면그대로데이터가출력되고,만약,데이터내에1bit의오류가발생했다면이를자동으로정정한다.2bit이상의오류가발견될경우이를사용자에게알리고그이상의시스템운영을정지시킨다.
그래서ECC메모리는패리티에비해서높은데이터신뢰도를구현하면서동시에단일bit에대해서는직접적으로정정을수행함으로인해성능저하를줄일수있게되었다.
물론,ECC메모리컨트롤러내에서체크비트를연산하고,이를사용하여검사하는과정에서성능의하락이일어난다.하지만이것은수%내외이므로큰폭의성능하락은일어나지않으며,안정성의극대화라는측면에서본다면실보다는득이훨씬크다.
SIMM에서는패리티이고,DIMM에서는ECC가사용된다는데..
이제는과거의유물이되어버린72pinSIMM
i430TX칩셋까지사용되었던72pinSIMM과현재사용되고있는168pinSDRAMDIMM및184pinDDRSDRAMDIMM의근본적인차이점은단면(SIMM-SingleInlineMemoryModule),양면(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가사용되고있는것이다.
레지스터드메모리
삼성전자의PC133RegisteredECCSDRAM
레지스터드메모리≠ECC메모리
킹스톤사의512MBRegisteredECCPC133SDRAM의레지스터
레지스터드메모리가그러한이름으로불리는이유는지극히간단하다.바로레지스터(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레지스터드ECCPC133SDRAM
인피니언사의1GB레지스터드ECCDDR333메모리
레지스터드메모리의반대말은언버퍼드메모리라고?
이제레지스터드메모리가어떤것인지독자분들도어느정도감을잡았을것이라고생각한다.그런데,분명이러한생각을가지는독자가있을것이다.'레지스터드의반대말이왜언버퍼드인가?
언레지스터드가아닌가?
또한,언버퍼드의반대말은버퍼드가되어야하지않는가?
'라고.
분명히생길수있는의문점이다.
이것은이전부터이어져내려온관례라고생각하는것이좋다.EDO메모리가한창사용되던때에사용된서버용메모리는'버퍼드(buffered)'라고불렸다.여기에서의버퍼역시지금의레지스터와거의유사한역할을한다.그래서이러한메모리의반대되는말로'언버퍼드(unbuffered)'가사용되었다.
이후에,EDO메모리의영역을SDRAM이대체하게되면서,버퍼드메모리는레지스터드메모리로바뀌었다.이것은EDO메모리와SDRAM간의특성차이로인해서이름이변경된것인데,일반사용자용언버퍼드메모리들은어차피달라지는것이거의없어서그대로언버퍼드메모리로불리게되었다.
결국,현재에이르러서도'언레지스터드-레지스터드'가아닌,'언버퍼드-레지스터드'로불리고있다.
레지스터드메모리의구성과용도
레지스터드메모리의구성
앞서설명한대로,레지스터드메모리는레지스터가달려있기때문에메모리모듈내의칩배치가상당히자유롭고,보다많은칩을장착할수있다.그래서많은메모리제조사들은다양한방법을사용하여고용량메모리를제조하고있다.
이것은가장일반적인레지스터드메모리의구성이다.메모리칩은아홉개(ECC가적용되었으므로)이며,그아래로레지스터드메모리가위치해있다.대개이러한경우메모리칩은9개(단면)혹은18개(양면)가탑재된다.하나의메모리칩이가지는용량이256Mbit라고할때,하나의모듈에서512MB의구성이가능하다.
이것은다열구조의메모리이다.언버퍼드메모리에서는메모리의데이터경로길이의차이로인해서다열구조의메모리구성이불가능하지만,레지스터드메모리에서는타이밍을정렬해주는레지스터로인해서이러한다열구조메모리가만들어질수있다.말그대로,메모리의열이두배로늘어났기때문에탑재되는메모리의양도두배로늘어난다.위와같은조건일경우양면으로해서하나의모듈로1GB의고용량을구현할수있다.
그러나다열구조메모리는최근에는잘사용되고있지않다
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ECC Memory