KR101495049B1 - 저전력 상태를 지원하는 시스템에서 캐시 메모리를 이용하는 방법 및 장치 - Google Patents
저전력 상태를 지원하는 시스템에서 캐시 메모리를 이용하는 방법 및 장치 Download PDFInfo
- Publication number
- KR101495049B1 KR101495049B1 KR20127033246A KR20127033246A KR101495049B1 KR 101495049 B1 KR101495049 B1 KR 101495049B1 KR 20127033246 A KR20127033246 A KR 20127033246A KR 20127033246 A KR20127033246 A KR 20127033246A KR 101495049 B1 KR101495049 B1 KR 101495049B1
- Authority
- KR
- South Korea
- Prior art keywords
- error correction
- data
- logic
- correction logic
- cache
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Detection And Correction Of Errors (AREA)
- Control Of Vending Devices And Auxiliary Devices For Vending Devices (AREA)
Abstract
저장 및 복잡성 오버헤드가 낮은 멀티 비트 ECC(Error Correcting Code)를 이용하는 캐시 메모리 시스템이 제공된다. 캐시 메모리 시스템은, 상태 손실에 기인해서 아이들 전력(idle power) 상태로부터 및 그 상태로 극적으로 증가하는 천이 레이턴시 없이, 매우 낮은 아이들 전력으로 동작할 수 있다.
Description
본 발명은 일반적으로 메모리에 관한 것이고, 보다 구체적으로는 시스템이 저전력 상태인 동안에 캐시 메모리의 전력 소모를 저감하는 것에 관한 것이다.
기술 발전은 큰 온다이(on-die) eDRAM(embedded Dynamic Random Access Memory) 캐시와 CPU(Central Processing Unit)의 통합을 가능하게 했다. 임베디드 DRAM은 전통적인 SRAM(Static Random Access Memory)보다 대단히 고밀도화되지만, 데이터를 유지하기 위해 주기적으로 리프레시되어야만 한다. SRAM과 마찬가지로, 임베디드 DRAM은 임베디드 DRAM 셀에 대한 리프레시 주기를 결정하는데 요인이 될 수 있는 디바이스 베리에이션(variation)에 민감하다. eDRAM을 리프레시하는데 소모되는 전력은, 특히 CPU가 아이들(idle) 상태일 경우의 저전력 상태 동안 전체 시스템 전력의 많은 부분에 해당한다.
청구되는 내용의 실시예들의 특징은, 이하의 상세한 설명에 따라 명확해질 것이며, 도면 참조시 동일한 부호는 동일 부분을 나타낸다.
도 1은 본 발명의 원리에 따른 캐시 메모리 및 ECC(error code correction) 로직을 포함하는 프로세서의 실시예.
도 2는 캐시 메모리의 캐시 라인에의 고속 액세스를 도시하는 도 1에 나타낸 ECC 로직, 캐시 메모리 및 RALT(Recently Accessed Lines Table)의 실시예를 포함하는 시스템의 블록도.
도 3은 리프레시 주기 내에서의 캐시 라인의 후속 판독을 도시하는 도 2에 나타낸 시스템의 블록도.
도 4a는 도 1에 나타낸 퀵(quick) ECC 로직에 포함된 ECC 인코더의 실시예를 도시하는 블록도.
도 4b는 도 1에 나타낸 퀵 ECC 로직에 포함된 ECC 디코더(디코딩 로직)의 실시예를 나타내는 블록도.
도 5는 본 발명의 원리에 따른 도 1에 나타낸 시스템을 이용하는 방법의 실시예를 도시하는 흐름도.
도 6은 도 1에 나타낸 프로세서의 실시예를 포함하는 시스템의 블록도.
이하의 상세한 설명은 청구되는 내용의 실시예를 참조하여 진행되지만, 실시예의 많은 대체, 변경, 및 변형이 당업자에게 명확할 것이다. 따라서, 청구되는 내용은 광범위하게 검토되어야 하고 첨부된 특허청구범위에서 제시된 바에 따라서만 규정되어야 한다.
도 1은 본 발명의 원리에 따른 캐시 메모리 및 ECC(error code correction) 로직을 포함하는 프로세서의 실시예.
도 2는 캐시 메모리의 캐시 라인에의 고속 액세스를 도시하는 도 1에 나타낸 ECC 로직, 캐시 메모리 및 RALT(Recently Accessed Lines Table)의 실시예를 포함하는 시스템의 블록도.
도 3은 리프레시 주기 내에서의 캐시 라인의 후속 판독을 도시하는 도 2에 나타낸 시스템의 블록도.
도 4a는 도 1에 나타낸 퀵(quick) ECC 로직에 포함된 ECC 인코더의 실시예를 도시하는 블록도.
도 4b는 도 1에 나타낸 퀵 ECC 로직에 포함된 ECC 디코더(디코딩 로직)의 실시예를 나타내는 블록도.
도 5는 본 발명의 원리에 따른 도 1에 나타낸 시스템을 이용하는 방법의 실시예를 도시하는 흐름도.
도 6은 도 1에 나타낸 프로세서의 실시예를 포함하는 시스템의 블록도.
이하의 상세한 설명은 청구되는 내용의 실시예를 참조하여 진행되지만, 실시예의 많은 대체, 변경, 및 변형이 당업자에게 명확할 것이다. 따라서, 청구되는 내용은 광범위하게 검토되어야 하고 첨부된 특허청구범위에서 제시된 바에 따라서만 규정되어야 한다.
ECC(error correction code)는 통상적으로 비휘발성 메모리 및 저장 디바이스가 소프트 및 하드 오류(soft and hard error) 양쪽에 대처할 수 있도록 이용되었다. 디바이스 및 메모리 디바이스(칩, 집적 회로)의 온칩 캐시는 통상적으로 SECDED(Single Error Correction and Double Error Detection) 해밍 코드 등의 간단하고 고속인 ECC를 사용한다. 플래시 메모리 등의 보다 느린 디바이스는, 예를 들면 Reed-Solomon 코드의 강한 오류 정정 능력을 갖는 멀티 비트 ECC를 이용한다. 예를 들면, 강력한 ECC 메커니즘의 더 높은 디코딩 레이턴시(latency)는, 인코딩/디코딩 레이턴시가 인트린직(intrinsic) 디바이스 액세스 시간에 비해 크지 않기 때문에, 대용량 저장 디바이스, 예를 들면 디스크 드라이브에는 큰 문제가 되지 않는다. 그러나, 기술 확대의 결과로서, 온칩 메모리 어레이(캐시)는 멀티 비트 오류에 더 민감하다. 그러므로, 강력한 ECC 코드가 온칩 캐시에도 바람직하다. 레이턴시 오버헤드 외에도, 추가 ECC 비트의 저장 오버헤드는 온칩 캐시 메모리에 대해 멀티 비트 ECC를 이용하는데 장해가 된다.
향상된 전력 및 에너지 효율을 추구하여, 마이크로-프로세서는 다수의 아이들 상태를 실시하여 저전력 모드(상태)를 지원한다. 아이들 상태 동안에 소모되는 전력을 줄이는 것은, 통상의 CPU(Central Processing Unit)가 아이들 상태에서 많은 시간을 보내므로 특히 중요하다. 임베디드 DRAM 기술은 SRAM 셀에 비해 소형 메모리 셀을 가능하게 하고, 결과적으로 메모리 밀도를 크게 증가시킨다. 따라서, DRAM은 고성능 프로세서에서 최종 레벨(last-level) 온칩 캐시로서 SRAM을 대체하는데 이용될 수 있다.
그러나, 임베디드 DRAM(eDRAM) 셀의 문제는 셀이 누설 전류로 인해 시간이 경과함에 따라 전하를 잃는다는 점이다. eDRAM 셀의 유지 시간(retention time)은 셀이 자신의 상태(전하)를 유지할 수 있는 기간으로서 규정된다. 셀 유지 시간은 누설 전류에 의존하며, 결과적으로 디바이스의 누설에 의존한다. 저장된 데이터의 상태를 보존하기 위해서는, eDRAM 셀은 주기적으로 리프레시될 필요가 있다. 캐시의 상태의 상실을 방지하기 위해서, 리프레시 주기는 셀 유지 시간보다 작을 필요가 있다. eDRAM이 종래의 로직 프로세스에 통합된 DRAM이므로, 종래의 DRAM에서 사용된 트랜지스터보다 누설 전류가 큰 고속 로직 트랜지스터를 이용한다. 따라서, eDRAM에 대한 리프레시 시간은 종래의 DRAM보다 약 천배 짧다. 짧아진 리프레시 주기는 아이들 상태 동안 소모되는 전력을 증가시키며, 또한 가용성(availability)을 줄어들게 한다.
SRAM 캐시에서, 인트린직 베리에이션은 저전압에서 실패(fail)(전하를 잃음(그 상태))하는 얼마의 약한 셀들로 인해 고전압에서의 동작을 강제하고, 아이들 상태 동안의 전력 소비를 저감하고자 하는 노력을 방해한다. 마찬가지로, 임베디드 DRAM 캐시에서, 디바이스 베리에이션은, 얼마의 특정 약한 셀(비트)이 전체 캐시의 리프레시 주기를 결정하여, 개별 DRAM 셀들의 리프레시 간의 유지 시간에 영향을 끼친다. 임계 전압의 베리에이션으로 인해, 상이한 DRAM 셀의 유지 시간이 상당히 다양해지게 된다. 이 베리에이션은 대부분 랜덤 도펀트 변동(random dopant fluctuation)에 의해 야기되며, 그들을 eDRAM 사이에서 유지 시간의 임의 분포(random distribution)로서 나타낸다. 그러나, 리프레시율의 증가는 캐시 전력을 상당히 증가시킨다.
캐시 전력을 저감하는 방법은 파워 게이트(power gate)를 사용하는 것이다. 파워 게이트는 트랜지스터의 블록에 대해 전력을 완전히 차단할 수 있는 전원 장치의 스위치이다. eDRAM 및 SRAM 등의 메모리 기술이 전력 부족 시 상태를 유지할 수 없으므로, 파워 게이팅은 메모리 상태를 잃는 것을 감수하고 수행된다.
캐시 밀도가 증가함에 따라, 파워 게이팅의 성능 및 전력 소비도 증가한다. 임베디드 DRAM 캐시의 크기가 커짐에 따라, 아이들 탈출 레이턴시(메인 메모리로부터 캐시 라인을 되찾음으로써 캐시의 상태를 복구하는 시간)와 아이들 상태 동안의 전력 소비 사이에 트레이드오프(tradeoff)가 있다.
DRAM 리프레시 주기는, 상태를 잃은 셀을 동적으로 식별하고 수리하는데 오류 정정 코드(ECC)를 이용함으로써, 증가될 수 있다. 리프레시율은 가장 약한 eDRAM 셀에 상관없이, ECC를 이용하여 잃은 상태를 보상하도록 설정된다. 멀티 비트 오류를 정정하는 능력을 갖는 더 강력한 오류 정정 코드는 증가된 리프레시율 및 저감된 전력 소모를 내포한다. 그러나, 멀티 비트 ECC 코드는 가용성을 제한하는 높은 저장 및 복잡 오버헤드를 갖는다.
본 발명의 실시예는, 저장 및 복잡 오버헤드가 낮은 멀티 비트 ECC 코드를 이용하고 셀(비트)의 상태의 상실로 인해 아이들 전력 상태에 대해 천이 레이턴시를 동적으로 증가시키지 않고, 매우 낮은 아이들 전력으로 동작할 수 있는 유연한 메모리 구조를 제공한다.
도 1은 본 발명의 원리에 따른 캐시 메모리 및 오류 코드 정정(ECC) 로직(122)을 포함하는 프로세서(100)의 실시예이다. ECC 로직(122)은 도 1에 나타낸 메모리 캐시(110) 등의 휘발성 메모리에서의 높은 실패율(failure rate)을 보상하는, 낮은 레이턴시, 저비용, 멀티 비트 오류 정정 로직이다. 도시된 실시예에서, 메모리 캐시(110)는 임베디드 DRAM(eDRAM)이다. 다른 실시예에서, 메모리 캐시(110)는 SRAM(Static Random Access Memory) 또는 임의의 다른 종류의 휘발성 메모리일 수 있다.
더 많은 오류를 정정하는데는 더 높은 용장(redundancy)을 요하게 되어, 높은 체크 비트 오버헤드를 야기한다. 예를 들면, k-비트 입력 데이터에서 t-비트 오류를 정정하기 위해서, BCH 코드는 통상적으로 r=t*ceil(log2k)+1 체크 비트를 요한다. r과 k간의 대수(logarithmic) 관계로 인해, 체크 비트의 수는 입력 데이터의 크기보다 훨씬 느리게 증가한다. 그러므로, ECC 체크 비트 오버헤드는 k를 증가시킴으로써 줄어든다.
예를 들면, 64바이트(512-비트) 캐시 라인에 대한 SECDED(Single Error Correcting, Double Error Detecting) 코드는 약 2%의 오버헤드인 11비트를 요한다. 데이터 워드의 비트 수에 대한 ECC 코드의 비트 수는 데이터 워드의 비트 수가 증가함에 따라 감소된다. 예를 들면 64바이트 캐시 라인에 대한 SECDED 코드는 11비트 오버헤드(2%)를 갖고, 1024바이트(1KB)에 대한 SECDED 코드는 15비트 오버헤드(0.18%)를 갖는다.
그러나, 큰 캐시 라인이 이용될 경우, 캐시 라인 내의 하위 블록에의 기입(write)은 ECC 비트를 재생성하기 위해 매번 전체 캐시 라인이 판독되는 것이 요구될 수 있다. 선형 코드로서, BCH는 선형 시스템의 가산 속성을 받으며, 이는 ECC 체크 비트가 변형된 하위 블록(데이터 덩어리(chunk))의 정보만을 이용하여 갱신될 수 있는 것을 보장한다. 데이터 워드 d(캐시 라인을 표현함)는 다수의 덩어리(하위 블록)[di -1,di -2,...,d0]로 나뉜다. ECC 인코딩에서 이용되는 G 행렬은 G=[Ik, P]와 같이 2부분으로 나뉠 수 있으며, P는 ECC 체크 워드 C, 즉 C=dxP에 대한 생성원이다. 데이터 dj의 j번째 덩어리가 새로운 값 dj _ new로 기입되면, 새로운 ECC는
식 (1)은 새로운 체크 비트의 생성원이 체크 비트의 예전 값 및 수정되는 하위 블록의 이전 및 새로운 값만을 요함을 나타낸다.
도 1로 돌아가면, ECC 로직(122)은 eDRAM 캐시(110)에서의 높은 실패율을 보상할 수 있는, 낮은 레이턴시, 저비용, 멀티 비트 오류 정정 로직이다. ECC 로직(122)은 5개의 오류(5EC)를 정정하고 6개의 오류(6ED)를 검출하는 능력(이하 5EC6ED 코드라 함)을 가진 강력한 BCH 코드를 실시한다. 멀티 비트 ECC를 이용하는 전통적인 접근법은 가용성을 제한하는 2개의 금지 오버헤드에 의해 곤란함이 있다. 첫째로, 멀티 비트 ECC 코드에 대해 낮은 레이턴시 디코더를 만드는 것은 비용이 매우 크다. 둘째로, ECC 비트의 저장 오버헤드가 높다(64바이트를 갖는 캐시 라인에 대한 5EC6ED ECC에 대해 약 10%).
ECC 로직(122)은 매우 작은 에어리어, 레이턴시, 및 전력 오버헤드를 갖는 멀티 비트 오류 정정 코드를 구현한다. ECC 로직(122)은 일반 동작 모드에서 성능 저해 없이 저전력 동작 모드(아이들 상태)로 임베디드 DRAM 전력 소모를 최소화한다. ECC 로직(122)은 정정을 거의 않거나 하지 않는 것을 요하는 캐시 라인에 최적화된 퀵 ECC 로직(104)을 포함한다. ECC 로직(122)은 복잡한 멀티 비트 정정을 요하는 캐시 라인을 위해 하이 레이턴시 ECC 로직(106)을 포함한다. 실시예에서, 하이 레이턴시 멀티 비트 정정을 처리하는 성능 충격(impact)을 최소화하기 위해, ECC 로직(122)은 멀티 비트 실패를 갖는 라인을 디스에이블(disable)한다. 다른 실시예에서, ECC 로직(122)은 데이터의 자연 공간 로컬티(locality)를 강화해 ECC 비트의 저장의 손해를 줄인다.
일 실시예에서, 임베디드 DRAM(110)은 프로세서(100)에 포함되는 128메가바이트(MB) 최종 레벨(LEVEL 3(L3)) 캐시이다. 오류 정정 능력이 없는 기본적인 구성에서, 임베디드 DRAM 캐시(110)에 대한 리프레시간의 시간은 30마이크로초(㎲)이다. 이로 인해, 중앙 처리 장치(CPU)(102)가 아이들 상태일 경우에도 상당량의 전력이 소모된다. 리프레시 동안 소모되는 전력(리프레시 전력)은 저전력 동작 모드, 예를 들면 아이들 상태 동안 임베디드 DRAM 캐시(110)를 플러싱(flushing) 및 파워 게이팅함으로써 저감될 수 있다. 그러나, 이로 인해, CPU(102)가 아이들 모드(상태)에서 벗어날 경우, CPU(102)가 외부 메모리(메인 메모리(도시 생략))로부터 임베디드 DRAM 캐시(110) 내로 데이터를 리로드할 필요가 있으므로, 상당한 성능 페널티를 야기할 수 있고, 이에 의해 많은 콜드 스타트(cold start) 캐시 미스가 초래될 수 있다. 대안으로, 임베디드 DRAM 캐시(110)의 캐시 라인에 저장된 데이터의 리프레시 주파수를 줄임으로써, 즉 리프레시 주기(리프레시간의 시간)를 늘림으로써, 리프레시 전력 소모가 줄어들 수 있다. 그러나, 리프레시 주파수가 줄어들면, 캐시 라인마다 실패(개별 비트(셀)의 상태 상실)가 더 다수 있다.
ECC 로직(122)은 1KB 캐시 라인에 대한 코드(5EC6ED)를 실시하며, 이는 캐시 라인마다 5EC6ED 코드를 저장하는데 추가적으로 71비트(0.87% 오버헤드)를 요한다. 단지 캐시 라인의 1E03(즉, 1/1000)이 실패되도록 리프레시 주기가 선택되는 실시예에서, 실패 경감이 없는 기본적인 구성은 30마이크로초(㎲)의 기본적인 리프레시 시간으로 동작한다. 오류 정정 코드 로직(122)은 기본적인 구성에 비해 리프레시 주기가 거의 15배 줄어든 440마이크로초로 리프레시 주기를 증가하게 한다.
5EC6ED 코드를 지원하는 로직은, 정정되는 오류 비트의 수 및 데이터 비트의 수 양쪽에 비례해서, 매우 복잡하고 긴 디코딩 레이턴시 페널티를 준다. 캐시 메모리의 액세스마다 전체 인코딩/디코딩이 요구되면, 이로 인해 캐시 액세스 레이턴시를 상당히 증가시킬 수 있다. 본 발명의 실시예에서, 캐시의 오류 발생이 쉬운 부분이 디스에이블되어, 동작 동안 디코드의 하이 레이턴시를 피할 수 있다.
오류 정정 코드 로직(122)은 퀵 오류 정정 코드(ECC) 로직(제 1 오류 정정 로직)(104) 및 하이 레이턴시 오류 정정 코드(ECC) 로직(제 2 오류 코드 정정 로직)(106)을 포함한다.
퀵 ECC 로직(유닛)(104)은 제로 또는 하나의 실패를 갖는 eDRAM(110)의 캐시 라인에 대해 신드롬 생성 로직 및 오류 정정 로직을 포함한다. 또한, 퀵 ECC 로직(104)은 신드롬에 의거하여 캐시 라인을 2개의 그룹, 복잡한 멀티 비트 오류 정정을 요하는 캐시 라인 및 2개보다 적은, 즉 제로 또는 하나의 오류를 갖는 캐시 라인으로 분류한다. 멀티 비트 오류 정정을 요하는 캐시 라인은 멀티 비트 오류 정정을 행하는 하이 레이턴시 ECC 처리 로직(유닛)(106)에 포워딩(forwarding)된다. 퀵 ECC 로직(104)에 의해 정정되는 캐시 라인은 L1/L2 캐시(124)를 통해 CPU(102)에 포워딩된다.
일 실시예에서, 하이 레이턴시 ECC 처리 로직(106)은 소프트웨어를 이용하여 오류 정정을 행한다. 다른 실시예에서, 하이 레이턴시 멀티 비트 ECC 처리 로직(106)은 상태 머신(state machine)을 이용하여 멀티 비트 오류 정정을 행한다. 퀵 ECC 로직(104)과 하이 레이턴시 ECC 처리 로직(106)의 조합으로 인해, 하나 또는 더 적은 오류 정정을 요하는 eDRAM(100)의 캐시 라인이 즉시 정정되게 하고 낮은 레이턴시로 L1/L2 캐시(124)를 통해 CPU(102)에 포워딩되게 한다. 2개 이상의 실패를 갖는 eDRAM(110)의 캐시 라인을 CPU(102)에 포워딩하는데는 레이턴시가 증가한다.
ECC 로직(122)의 퀵 ECC 로직(104)은 1 사이클 ECC를 행해서 임베디드 DRAM(110)에서의 캐시 라인의 단일 비트 오류를 정정한다. ECC 로직(122)의 하이 레이턴시 정정 로직(106)은 비파이프라인의(un-pipelined) 하이 레이턴시 ECC 처리를 행해서 캐시 라인의 다수의 비트 오류를 정정한다.
임베디드 DRAM(110)으로부터 캐시 라인이 판독될 경우, 그것이 데이터 버퍼(114)를 통해 태그/ECC 어레이(108)로부터 판독된 캐시 라인과 연관되는 태그 및 ECC와 함께 퀵 오류 정정 로직(104)에 보내진다. 태그 및 ECC는 데이터 버퍼(116)를 통해 퀵 ECC 로직(104)에 보내진다. 퀵 ECC 로직(104)의 디코더(도시 생략)는 수신된 캐시 라인에 대해 신드롬을 생성한다. 생성된 신드롬은 캐시 라인이 제로, 하나, 또는 더 많은 오류를 가지는지의 여부에 대한 정보를 포함한다. 캐시 라인이 제로 또는 하나의 비트 실패를 가지면, 퀵 ECC 로직(104)의 디코더는 짧은 기간에 1비트 실패의 정정을 행한다. 일 실시예에서, 짧은 기간은 단일 사이클(500피코초(㎰))일 수 있다. 다른 실시예에서, 짧은 기간은 1사이클보다 클 수 있다. 기간은 하이 레이턴시 ECC 처리 로직(106)에 의해 멀티 비트 오류 정정을 행하는 시간보다 짧다.
멀티 비트 실패를 다루는 것과 연관된 하이 레이턴시는 성능을 상당히 줄일 수 있다. 이 하이 레이턴시가 초래되는 것을 피하기 위해, 실시예에서, 문제가 있는 라인의 디스에이블 또는 비트 고침 등의 메커니즘이 수리 로직(120)에 통합될 수 있다.
오류의 주파수가 디스에이블 전략의 요인이 된다. 낮은 멀티 비트 오류율이 있다면, 멀티 비트 오류를 포함하는 캐시 라인의 디스에이블 등과 같은 접근법은 성능 패널티를 줄인다. 그러나, 캐시 라인 디스에이블은, 멀티 비트 오류율이 높다면 허용할 수 없는 캐시 용량 손실로 된다. 높은 멀티 비트 오류율이 있다면, 비트 고침 등의 더 복잡한 메커니즘을 이용하여, 캐시 라인의 디스에이블로 잃은 용량을 최소화할 수 있다.
실시예에서, 수리 로직(120)은 데이터 버퍼(114, 116)와 퀵 ECC 로직(122) 사이에 연결된다. 추가적인 수리 로직(120)으로, 멀티 비트 디코딩의 성능 패널티는 한번만 초래되는, 즉 처음에 eDRAM(110)의 약한 셀에 기인한 오류가 식별된다. 수리 로직(120)으로 인해, 캐시 라인을 ECC 로직(122)에 포워딩하기에 앞서 오류의 수가 저감되게 된다. 따라서, 처음에 수리 메커니즘을 이용하여 캐시 라인에 ECC를 적용하기에 앞서 캐시 라인에 알려진 오류를 고침으로써, 전체 레이턴시가 줄어든다.
일 실시예에서, 수리 로직(120)은 비트 고침 로직을 포함한다. 비트 고침 로직은 “손상된(broken)” 비트쌍을 식별하고, 패치를 관리해서 캐시 라인에서 “손상된” 비트쌍을 수리한다. 실시예에서, 비트 고침 로직은 캐시 세트의 웨이(way)의 4분의 1을 이용하여 실패 비트에 대한 위치 및 고침 비트를 저장한다(즉, 세트의 다른 웨이에서 실패 비트에 대해 정정 상태(값)). 저전압 모드에서, 8-웨이 캐시로서 구현되는 캐시 메모리(110)에 대한 실시예에서, 8 웨이 중 2개는 결함 정정 정보를 저장하는데 마련되어 “손상된” 비트쌍을 정정한다.
비트 고침 로직으로 인해, 결함이 있는 쌍, 즉 적어도 하나의 비트가 결함이 있는(로직 상태 유지 실패에 기인함) 캐시 라인의 2비트의 그룹이 디스에이블되게 할 수 있다. 비트 고침 로직은 결함이 있는 2비트 쌍을 정정하는데 이용될 수 있는 2비트 “패치(patch)”를 유지한다(비트 상태 정정). 수리 패턴이 캐시 메모리(eDRAM)(110)의 선택된 캐시 라인에 저장된다. 저전압 동작 동안에, 수리 패턴(수리 포인터 및 패치)이 캐시 메모리(110)에 저장된다. 우선 캐시 라인에 대한 판독 또는 기입 동작은 캐시 라인에 대해 수리 패턴을 페치(fetch)한다. 판독 시, 수리 패턴으로 인해, “손상된” 비트(결함이 있는 비트)로부터 데이터를 판독하는 것을 피할 수 있다. 수리 패턴으로부터 패치를 이용하여, 캐시 라인은, CPU(102), 다른 캐시에 포워딩되기 전에 재구축되거나, 또는 메모리에 다시 기입된다. 기입 시, 수리 패턴으로 인해, 실패된 비트에 기입하는 것을 피할 수 있다. 새로운 패치가 수리 패턴에 기입되어 캐시에 기입된 새로운 데이터를 반영한다. 비트 고침 로직을 이용하는 수리 메커니즘(수리 로직(120))의 실시예를 기술했다. 다른 실시예에서, 비트 고침 이외의 수리 메커니즘이 ECC를 적용하기에 앞서 알려진 오류를 고치는데 이용될 수 있다.
실시예에서, 캐시 메모리(110)는 64B 캐시 라인을 갖는 32K 8웨이 캐시이다. 캐시 메모리(110)에 저장된 데이터에의 각각의 액세스는 적합한 수리 패턴을 검색하는데 추가적인 액세스를 요구한다. 포트의 수를 증가시키지 않고 수리 패턴을 액세스하기 위해, 비트 고침 방식은 캐시 메모리(110)를 2개의 뱅크로 조직화한다. 뱅크마다 하나씩, 2개의 고침 라인이 유지되고, 각각은 상대 뱅크의 캐시 라인을 수리하는데 이용된다. 3개의 캐시 라인에 대한 수리 패턴이 단일 캐시 라인에 적합하다. 따라서, 3개의 캐시 라인마다 단일 고침 라인(수리 패턴을 저장하는 캐시 라인)이 유지된다. 고침 라인에는 수리 패턴을 이용하는 3개의 캐시 라인 반대 뱅크에 할당된다. 이로 인해, 캐시 라인이 캐시 포트 수를 증가시키지 않고 수리 패턴으로 병렬로 페치될 수 있다.
캐시 히트 시, 데이터 라인이 캐시 메모리(110)의 하나의 뱅크로부터 판독되고 고침 라인이 캐시 메모리(110)의 다른 뱅크로부터 판독된다. 데이터 라인은 ‘n' 비트 시프트 스테이지를 거치며, 여기서 'n'은 결함이 있는 비트쌍의 수를 나타낸다. 각각의 스테이지는 결함이 있는 쌍을 제거하며, 고쳐진 쌍으로 교체한다. 또한, 고침 라인이 손상된 비트를 포함할 수도 있어, SECDED ECC가 적용되어 고침 라인의 수리 패턴을 사용전 정정한다. 수리 패턴이 고쳐진 후에, 데이터 라인을 정정하는데 사용된다. 단일 결함이 있는 쌍의 수리는 3개의 부분으로 구성된다. 첫째로, SECDED ECC는 수리 패턴의 임의의 결함이 있는 비트를 수리한다. 둘째로, 결함 포인터는 결함이 있는 쌍을 식별한다. 셋째로, 결함이 있는 쌍을 제거한 후에, 패치는 빠진 정정 비트를 캐시 라인 내로 재도입한다.
도 2는 eDRAM 캐시(110)의 캐시 라인에의 고속 액세스를 나타내는 도 1에 나타낸 최신 액세스된 라인 테이블(RALT)(112) 및 임베디드 DRAM 캐시(110) 및 ECC 로직(122)의 실시예를 포함하는 시스템(200)의 블록도이다.
64바이트보다 큰 캐시 라인 크기는 멀티 비트 ECC 코드를 저장하는데 필요한 메모리 저장을 저감하는데 이용된다. 실시예에서, eDRAM 캐시(110)는 128MB 임베디드 DRAM인 Level 3(L3) 캐시이고 캐시 라인(202)의 크기는 1024바이트(1킬로바이트(KB))이다. Level 2(L2) 캐시/Level 1(L1) 캐시(124)는 64바이트(B) 캐시 라인을 갖는다(L3 캐시 라인의 하위 블록이라 함). L3 eDRAM 캐시(110)에의 대부분의 기입들은 하위 레벨(L1 또는 L2) 캐시 메모리(124)에서 발생되거나 비캐시 메모리(메인 메모리/외부 메모리(도시 생략))로부터 페치된 더 작은 64바이트 하위 블록의 형태이다.
1KB 캐시 라인(202)의 64B 하위 블록(204)을 변경하는데, 판독-변경-기입 동작이 ECC 코드를 컴퓨팅하기 위해, CPU(102)에 의해 행해진다. 우선, 오버라이트되는 64B 하위 블록(204)이 1KB 캐시 라인(202) 전체에 대해 ECC 코드(208)와 함께 eDRAM 캐시(110)로부터 판독된다. 예전 데이터, 예전 ECC 코드, 및 새로운 데이터는 1KB 캐시 라인(202) 전체에 대해 새로운 ECC 코드(208)를 컴퓨팅하는데 이용된다. 새로운 64B 하위 블록(204) 및 새로운 ECC 코드(208)는 L3 eDRAM 캐시(110)에 다시 기입된다. 그러나, 1KB 캐시 라인(202) 전체는 후술하는 바와 같이 새로운 ECC 코드(208)를 컴퓨팅하기 위해 판독되지 않는다.
L3 캐시(110)로부터의 대부분의 판독이 행해져, 캐시 라인을 하위 레벨(L1 및 L2) 캐시(124)에의 할당을 위해 제공한다. 캐시 라인(202)의 임의의 하위 블록(204)의 처리는 보호하는 전체 데이터 워드(1KB 캐시 라인)(202)로 ECC(208)가 처리되는 것을 요한다. 1KB 캐시 라인(202)의 각각의 64B 하위 블록(204)이 체크될 필요가 있으므로, 64B 하위 블록(204)에 대한 각각의 참조는 주변 64B 하위 블록(204)에의 참조를 수반된다. 따라서, L3 임베디드 DRAM 캐시(110)의 임의의 판독은 캐시 라인(202)에서 모든 하위 블록(204)이 공유하는 ECC(208)(캐시 라인마다)에 추가하여, 1KB 캐시 라인(202)의 모든 16 64비트 하위 블록(204)을 액세스한다. 예를 들면, 하나의 1KB 캐시 라인(202)의 16 하위 블록(204)의 8개만 판독하기 위해, 모든 16 하위 블록(204)이 총 128 별개의 하위 블록 판독에 대해 8회 판독된다. 이 다수의 추가적인 하위 블록 판독은 동적 전력 소비를 실질적으로 증가시키고 eDRAM 캐시(110)에 의해 제공되는 유용한 캐시 밴드폭을 감소시키게 된다.
앞서 논의한 바와 같이, eDRAM 캐시(110)가 메모리 셀 각각의 현재 상태를 유지하기 위해 주기적으로 리프레시될 필요가 있으므로, 대부분의 eDRAM 실패는 유지 실패에 기인한다. 실시예에서, 유지 시간은 30마이크로초(㎲)이고, 특정 캐시 라인 각각의 판독은 그 캐시 라인의 리프레시를 자동적으로 내포한다. 따라서, 유지 실패는 특정 캐시 라인에서 캐시 라인이 판독된 후에 30㎲ 동안 일어나지 않을 것이다. 이러한 관찰에 의해, 불필요한 판독 수를 최소화할 수 있다. RALT(112)는 마지막 30㎲ 내에 참조(판독)된 캐시 라인을 추적하는데 이용된다.
eDRAM 캐시(110)의 캐시 라인(202)에 대한 제 1 판독으로 인해, 캐시 라인(202)의 모든 하위 블록(204)이 판독되고 오류에 대해 검사되게 된다. 판독되는 캐시 라인(202)의 어드레스는 RALT(112)의 RALT 엔트리(206)에 저장된다. 저장된 어드레스는 캐시 라인(202)이 최근에 판독 및 검사되었고 따라서 다음 30㎲ 동안 유지 오류가 없음을 지시한다. 판독된 캐시 라인의 어드레스가 RALT(112)에 저장되는 동안, 캐시 라인(202)으로부터의 하위 블록의 후속 판독이 ECC 처리를 하지않고, 따라서 캐시 라인(202) 및 캐시 라인(202)의 다른 하위 블록(204)과 연관된 ECC(208)의 판독을 회피할 수 있다. RALT(112)는 각각의 30㎲ 기간을 복수의 동일한 “캐시 라인 판독” 주기로 분할함으로써 엔트리(206)가 30㎲ 이상 저장되지 않았음을 보장한다. 각각의 주기 동안 RALT(112)에 할당되는 엔트리(206)는 하위 리프레시 주기를 식별하는 주기 식별자(214)로 마크된다. 하위 리프레시 주기간의 천이는 복수의 “캐시 라인 판독” 주기의 하나에 이전에 할당된 모든 RALT 엔트리가 무효화되게 한다(RALT의 엔트리(206)와 연관된 “유효” 필드의 상태에 의해 지시됨).
RALT(112)의 각각의 엔트리(206)는, 엔트리가 연관되는 캐시 라인을 식별하기 위한 라인 어드레스 필드(209), 유효 필드(212), 어느 주기에서 라인이 할당되었는지를 지시하는 주기 식별자 필드(214), 및 캐시 라인의 하위 블록마다 하나의 패리티 비트를 포함하는 패러티 필드(211)를 포함한다. 실시예에서, 주기 식별자 필드(214)는 2비트를 가져서 4개의 주기(P0,P1,P2,P3)의 어느 것에 캐시 라인이 할당되었는지를 지시하고, 패러티 필드(211)는 캐시 라인의 64B 하위 블록마다 하나씩, 16비트를 갖는다. RALT(112)는 직접 매핑되지만, 주기 필드(214)에 대한 CAM(Content Addressable Memory) 무효화를 지원하여 주기 천이 동안 RALT(112)의 엔트리(206)의 벌크 무효화를 허용한다.
처음 하위 블록(204)이 판독되고, 전체 ECC(208)가 또한 1KB 캐시 라인(202)의 각각의 하위 블록과 함께 판독되어 단일 64B 하위 블록(204)에 대한 ECC 처리를 허용한다. RALT(112)의 캐시 라인(202)과 연관된 엔트리(206)는 참조된 캐시 라인(202)의 라인 어드레스, 주기 식별자, 및 캐시 라인(202)의 하위 블록(204)마다 단일 패리티 비트로 갱신된다. 캐시 라인(202)에 대한 처음 히트 후에, 리프레시 주기 내의 동일한 캐시 라인(202)에의 추가 액세스는 ECC 처리를 요하지 않는다.
캐시 라인에의 처음 판독은 라인 내의 모든 하위 블록이 판독되고 실패에 대해 검사되게 한다. 이어서, 라인의 어드레스는 RALT에 저장되어서, 최근에 검사되었고 다음 30㎲ec 동안 유지 실패가 없이 유지됨을 지시한다. 라인의 어드레스가 RALT에 저장되는 한, 라인으로부터 임의의 하위 블록 판독은 ECC 처리를 하지 않을 수 있으므로, 라인에서 ECC 코드 및 다른 하위 블록의 판독을 피할 수 있다.
올바르게 동작하기 위해, RALT(112)는 모든 엔트리가 30㎲ 이상되지 않게 보장한다. 이를 보장하기 위해, 카운터(216)가 각각의 30㎲ 주기의 경과를 측정하는데 이용된다. 각각의 30㎲ 주기는 4개의 동일한 하위 주기(P0, P1, P2, P3)로 분할된다. 각각의 주기 동안 RALT(112)에 할당된 엔트리들은 2비트 식별자로 마크되어, 카운터의 현재 값을 검사함으로써 결정될 수 있는 할당 하위 주기를 특정한다. 예를 들면, 2GHz 프로세서(100)에서의 30㎲의 경과는 60000까지 매 사이클의 카운팅을 증분시키는 카운터(216)를 이용하여 측정될 수 있다. 예를 들면, 0-15000 사이의 카운터 값은 하위 주기 P0에 대응하고, 15001-30000 사이의 카운터 값은 하위 주기 P1에 대응하고, 30001-45000 사이의 카운터 값은 하위 주기 P2에 대응하고, 45001-60000 사이의 카운터 값은 하위 주기 P3에 대응한다. 카운터(216)는 60000에 도달할 경우, 0으로 리셋되어, 결과적으로 P3로부터 P0으로 천이한다. 각각의 하위 주기 천이는 하위 주기의 이전 경우 동안 할당된 일부 또는 모든 RALT 엔트리의 무효화를 야기시킬 수 있다. 예를 들면, 하위 주기 P0으로부터 하위 주기 P1로의 천이는 하위 주기 P1에 이전에 할당된 모든 RALT 엔트리가 무효화게 할 것이다.
도 3은 리프레시 주기 내에서 캐시 라인의 후속 판독을 도시하는 도 2에 나타낸 시스템의 블록도이다. 대부분의 경우에, 요구된 64B 하위 블록(204)만이 판독된다. 64B 하위 블록(204)에 대한 패리티가 컴퓨팅되어 RALT(112)에 저장된 캐시 라인(202)의 64B 하위 블록(204)에 대한 패리티(211)와 비교된다. 매치가 있을 경우, 64B 하위 블록(204)이 유효하고 64B 하위 블록(204)이 요구 캐시(124) 또는 프로세서(102)에 포워딩되는 것을 생각해 볼 수 있다. 패리티 미스매치는 RALT 미스로서 취급되어 전체 1KB 캐시 라인(202)이 판독된다. RALT(112)는 최근 액세스된 캐시 라인(202)을 추적하는데 이용되어, 캐시 판독마다 전체 1KB 캐시 라인(202)을 판독하는 것을 피하게 하며, 이에 따라 동적 전력을 최소화한다.
도 4a는 도 1 에 나타낸 퀵 ECC 로직(104)에 포함된 ECC 인코더(400)의 실시예를 나타내는 블록도이다. BCH 코드는 매우 집중되고 널리 분산된 오류 양쪽를 정정할 수 있는 큰 분류의 멀티 비트 오류 정정 코드이다. 일반적으로, 각각의 BCH 코드는 생성 다항식으로 유한 Galois Field GF(2m)에 대해 정의되는 선형 블록 코드이고, 여기서 2m은 코드 워드 비트의 최대 수를 나타낸다.
ECC 인코더(인코딩 로직)(400)는 k비트 입력 데이터 워드 d를 취하며 미리 정의된 인코더 매트릭스(G)를 사용하여 대응하는 코드 워드 u(u=d×G)를 생성한다. BCH가 조직 코드(systematic code)로서, 원래의 k비트 데이터가 코드 워드 u(x)에 유지되며, 이어서 r 체크 비트가 온다.
도 4b는 도 1에 나타낸 퀵 ECC 로직에 포함된 ECC 디코더(디코딩 로직)(402)의 실시예를 도시하는 블록도이다. 디코딩 로직(402)은 수신된 코드 워드 u(x)에서 임의의 오류를 검출하고 정정하여 데이터의 원래의 값을 되찾는다. 디코딩 로직(402)은 신드롬 생성 로직(404), 오류 분류 로직(406) 및 오류 정정 로직(408)을 포함한다.
우선 신드롬 생성 로직(404)은 ν(ν=u+e와 같이, 오류 e를 갖는 코드 워드)를 미리 정의된 H행렬의 전치 행렬과 곱함으로써 신드롬 S를 컴퓨팅한다(S=ν×HT). G와 H 행렬은 G×HT=0이 되게 구성된다. H 행렬의 일반적인 형태는 다음과 같다.
유한체 GF(2m)에서, 각각의 원소 αi는 m보다 차수가 낮은 α의 다항식, 또는 간단히 m 이차 계수 다항식을 갖는 벡터로 나타낼 수 있다. 따라서, H 행렬은 (t*m+1)행을 갖는 이차 행렬로 확장될 수 있으며, 여기에서 t는 코드가 정정할 수 있는 오류의 최대 수이다. S=ν×HT이므로, S는 또한 t*m+1 비트를 가지며, 다수의 성분[Parity, S1, S3, ..., S2t -1]으로 나눠질 수 있다.
오류 분류 로직은 신드롬 S를 이용하여 코드 워드가 임의의 오류를 갖는지의 여부를 검출한다.
따라서, 제로 오류일 경우, S=0이고 다음의 식은 참을 유지한다.
식 (3)에 나타낸 바와 같이, 코드 워드에 오류가 없을 경우 신드롬 값이 제로가 된다. 이 경우는 모든 신드롬 비트의 논리적 OR이 수행됨으로써 검출될 수 있다. 이는 ceil(log2tm) 2입력 게이트 지연을 요한다.
상기 식이 만족되지 않을 경우, 오류 정정 로직은 신드롬값을 이용하여 오류가 생긴 비트의 위치를 정확히 찾아낸다.
e 내의 오류 위치를 [j1, j2, ..., jt]로 나타내면, 각각의 신드롬 성분 Si는 다음과 같이 특정될 수 있다.
정정 로직은 다음의 3가지 스텝을 실시한다.
스텝 1: 오류 위치 다항식 σ(x)를 결정하며, 여기에서 σ(x)는 σ(x)의 근이 오류 원소 αj1, αj2, ..., αjt의 역수에 의해 얻어지도록 각각 정의된다.
오류 정정의 스텝 1은 t-스텝 반복적 알고리즘(iterative algorithm)에 의거하며, 각각의 반복은 2m 연산만을 취하는 갈로아체 반전을 수반한다.
스텝 2: σ(x)의 근을 풀며, 이 근이 오류 위치이다. 다항식 σ(x)가 결정될 경우, 각각의 필드 원소 αj는 다항식으로 치환된다. 다항식을 제로로 만드는 원소들이 근이다. 스텝 2의 실시는 하나의 회로로 n사이클을 취하거나 n병렬 회로로 단일 사이클을 취할 수 있다. 어느 방식이든, 기본 회로는 O(t*m2)이다.
스텝 3: 데이터 비트의 정정 값을 계산한다. 이는 오류 위치에서 비트를 단순히 플립함으로써 행해진다.
단일 비트 오류의 경우에, 신드롬은 오류 비트에 대응하는 H 행렬 열에 정확하게 매치된다. 따라서, 단일 비트 오류는 H 행렬의 각각의 열과 신드롬을 비교함으로써 검출될 수 있다. 이 정정은, 오류 정정 로직의 스텝 1 및 스텝 2의 대부분을 요하지 않으므로, t-비트 정정(t>1)의 일반적인 경우보다 상당히 빠르다. 모든 신드롬 성분이 전체 H 행렬 열과 매치될 필요가 없다. S1을 H1(식 (1)에서 정의됨)의 각각의 열과 비교하고 다음의 식이 만족되는지 확인하는 것만이 필요하다.
레이턴시를 최소화하기 위해, S1과 H1의 비교 및 식 (7)에서의 모든 비교가 병렬로 진행될 수 있다.
도 5는 본 발명의 원리에 따른 도 1에 나타낸 시스템(100)을 이용하는 방법의 실시예를 나타내는 흐름도이다.
블록 500에서, 캐시 라인 어드레스(addr)가 최근 액세스된 라인 테이블(112)의 RALT 엔트리(206)와 연관되면, 캐시 라인은 최근 액세스되었으며 오류 검사가 필요가 없고, 캐시 라인 어드레스가 L1/L2 캐시(124)를 경유하여 CPU(102)에 포워딩된다. 캐시 라인 어드레스(addr)가 최근 액세스된 라인 테이블(112)의 RALT 엔트리(206)와 연관되어 있지 않으면, 처리는 블록 502로 계속된다.
블록 502에서, 캐시 라인 어드레스(addr)는 도 2와 함께 앞서 논의한 바와 같이, RALT 테이블(112)의 RALT 엔트리(206)의 라인 어드레스 필드(209)에 저장된다. 캐시 메모리(110)의 캐시 라인에 저장된 데이터 및 어드레스에 대응하는 Tag/ECC 어레이(118)에 저장된 Tag/ECC가 판독되어 데이터 버퍼(114, 116)를 통해 포워딩된다. 처리는 블록 504로 계속된다.
블록 504에서, 수리 로직(120)을 포함하는 실시예에서, 처리는 블록 512로 계속되어 캐시 라인을 수리한다. 수리 로직을 포함하지 않는 실시예에서, 처리는 블록 506으로 계속된다.
블록 506에서, 퀵 ECC가 퀵 ECC 로직(104)에 의해 수행되어 캐시 라인에 오류가 있는지의 여부를 결정한다. 처리는 블록 508로 계속된다.
블록 508에서, 정정될 캐시 라인에 오류가 2개보다 많으면, 처리는 블록 514로 계속된다. 오류가 2개보다 적으면, 오류는 퀵 ECC 로직(104)에 의해 정정되며 처리가 블록 510으로 계속된다.
블록 510에서, 정정된 캐시 라인 데이터는 L1/L2 캐시(124)를 경유하여 CPU(102)로 포워딩된다.
블록 512에서, 캐시 메모리(110)로부터 판독되고 데이터 버퍼(114, 116)를 통해 포워딩되는 캐시 라인 데이터는 앞서 논의한 바와 같이 수리된다. 처리는 블록 506으로 계속된다.
블록 514에서, Hi ECC 로직은 캐시 라인에서 멀티 비트 오류를 정정하고 처리는 블록 510으로 계속된다.
도 6은 도 1에 나타낸 프로세서(100)의 실시예를 포함하는 시스템(600)의 블록도이다. 시스템(600)은 임베디드 캐시 메모리를 갖는 프로세서(100), 메모리 컨트롤러 허브(MCH)(602) 및 입력/출력(I/O) 컨트롤러 허브(ICH)(604)를 포함한다. MCH(602)는 프로세서(601)와 외부 메모리(메인 메모리)(610) 사이의 통신을 제어하는 메모리 컨트롤러(606)를 포함한다. 프로세서(100) 및 MCH(602)는 시스템 버스(616)를 통해 통신한다.
CPU(102)는 싱글 코어 인텔®펜티엄 Ⅳ®프로세서, 싱글 코어 인텔 셀러론 프로세서, 인텔®엑스스케일 프로세서 또는 인텔®펜티엄 D 등의 멀티 코어 프로세서, 인텔®제온®프로세서, 또는 인텔®코어®듀오 프로세서 또는 임의의 다른 종류의 프로세서 등의 복수의 프로세서 중 어느 하나일 수 있다.
메모리(610)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(Synchronized Dynamic Random Access Memory), DDR2(Double Data Rate 2) RAM 또는 RDRAM(Rambus Dynamic Random Access Memory) 또는 임의의 다른 종류의 메모리일 수 있다.
ICH(604)는 DMI(Direct Media Interface) 등의 고속 칩간 인터커넥트(614)를 이용하여 MCH(602)에 연결될 수 있다. DMI는 2개의 단향성 레인을 통해 2 기가비트/초 동시 전송률을 지원한다.
ICH(604)는 ICH(604)와 연결되는 적어도 하나의 저장 디바이스(612)와의 통신을 제어하는 저장 입력/출력(I/O) 컨트롤러를 포함할 수 있다. 예를 들면, 저장 디바이스는 디스크 드라이브, DVD(Digital Video Disk) 드라이브, CD(Compact Disk) 드라이브, RAID(Redundant Array of Independent Disk), 테이프 드라이브 또는 다른 저장 디바이스일 수 있다. ICH(604)는 SAS(Serial Attached Small Computer System Interface) 또는 SATA(Serial Advanced Technology Attachment) 등의 시리얼 저장 프로토콜을 이용하여 저장 프로토콜 인터커넥트(618)를 통해 저장 디바이스(612)와 통신할 수 있다.
본 발명의 실시예와 관련된 방법은 컴퓨터 사용 가능한 매체를 포함하는 컴퓨터 프로그램 물품으로 구현될 수 있음은 당업자에게 명확할 것이다. 예를 들면, 이러한 컴퓨터 사용 가능한 매체는 컴퓨터 판독 가능한 프로그램 코드가 저장되는, CD ROM(Compact Disk Read Only Memory) 디스크 또는 종래의 ROM 디바이스 등의 읽기 전용 메모리 디바이스, 또는 컴퓨터 디스켓으로 구성될 수 있다.
본 발명의 실시예를 그 실시예를 참조하여 특별히 도시 및 기술했지만, 첨부된 특허청구범위에 의해 포함되는 본 발명의 실시예의 범주로부터 벗어나지 않고 형태 및 세부 사항에 다양한 변경이 이루어질 수 있음을 당업자는 이해할 것이다.
Claims (22)
- 캐시 메모리와,
상기 캐시 메모리의 캐시 라인에 저장된 데이터를 수신하는 오류 정정 로직을 포함하고,
상기 오류 정정 로직은,
상기 데이터 내의 오류들의 카운트를 결정하고 상기 오류들의 카운트가 하나인 경우 상기 데이터 상에 오류 정정을 수행하기 위한 신드롬(syndrome)을 생성하는 제 1 오류 정정 로직과,
상기 데이터 내의 오류들의 카운트가 하나 보다 많은 경우, 상기 제 1 오류 정정 로직으로부터 상기 데이터를 수신하고 상기 수신된 데이터에 대해 멀티 비트 오류 정정을 수행하는 제 2 오류 정정 로직을 포함하는
장치.
- 제 1 항에 있어서,
상기 데이터를 상기 오류 정정 로직으로 포워딩(forwarding)하기 전에 상기 데이터의 알려진 오류를 고치는(fix) 수리 로직(repair logic)을 더 포함하는
장치. - 제 1 항에 있어서,
상기 캐시 메모리는 휘발성 메모리인
장치.
- 제 1 항에 있어서,
상기 제 1 오류 정정 로직은 상기 멀티 비트 오류 정정과 연관된 제 2 기간보다 짧은 기간에 정정을 행하는 디코더를 포함하는
장치.
- 제 1 항에 있어서,
상기 제 1 오류 정정 로직은 제로(zero) 또는 하나의 실패(failure)를 갖는 캐시 라인들에 대해 신드롬 생성 로직 및 오류 정정 로직을 포함하는
장치.
- 제 1 항에 있어서,
상기 캐시 메모리의 어드레스 버스에 연결되고, 상기 캐시 라인이 상기 캐시 메모리의 현재의 리프레시 기간 내에 액세스되었는지의 여부를 결정하는 RALT(Recently Accessed Line Table)를 더 포함하는
장치.
- 제 6 항에 있어서,
상기 RALT는 상기 캐시 메모리의 최근 액세스된 캐시 라인들을 추적하는데 이용되는
장치.
- 삭제
- 제 1 오류 정정 로직 및 제 2 오류 정정 로직을 포함하는 오류 정정 로직에 의해, 캐시 메모리의 캐시 라인에 저장된 데이터를 수신하는 단계와,
상기 제 1 오류 정정 로직에 의해, 상기 데이터 내의 오류들의 카운트를 결정하기 위한 신드롬을 생성하고 상기 오류들의 카운트가 하나로 결정되는 경우 상기 데이터에 오류 정정을 수행하는 단계와,
상기 데이터 내의 오류들의 카운트가 하나보다 많은 것으로 결정되는 경우, 상기 제 1 오류 정정 로직에 의해 상기 데이터를 상기 제 2 오류 정정 로직으로 포워딩하는 단계와,
상기 제 2 오류 정정 로직에 의해, 상기 제 1 오류 정정 로직에 의해 포워딩된 상기 데이터를 수신하는 것에 응답하여 상기 데이터에 대해 멀티 비트 오류 정정을 수행하는 단계를 포함하는
방법.
- 제 9 항에 있어서,
상기 오류 정정 로직에서 상기 데이터를 수신하기 전에, 하나 이상의 패치들을 사용하는 비트 픽스 로직(bit fix logic)을 이용하는 수리 로직(repair logic)에 의해 상기 데이터의 알려진 오류를 고치는 단계를 포함하는
방법.
- 제 9 항에 있어서,
상기 제 1 오류 정정 로직에 의해, 상기 멀티 비트 오류 정정과 연관된 제 2 기간보다 짧은 기간에 정정을 수행하는 단계를 더 포함하는
방법.
- 제 11 항에 있어서,
상기 캐시 메모리의 어드레스 버스에 연결되는 RALT(Recently Accessed Line Table)에 의해, 상기 캐시 라인이 상기 캐시 메모리의 현재의 리프레시 기간 내에서 액세스되었는지의 여부를 결정하는 단계를 더 포함하는
방법.
- 제 12 항에 있어서,
상기 RALT에 의해 최근 액세스된 하나 이상의 캐시 라인들을 추적하는 단계를 더 포함하는
방법.
- 제 9 항에 있어서,
상기 데이터가 단일 오류를 가진다는 것에 응답하여, 상기 제 1 오류 정정 로직에 의해 오류 정정을 수행하는 단계를 더 포함하는
방법.
- 컴퓨터 실행가능 명령어들을 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은 컴퓨터에 의해 실행되어 머신으로 하여금,
제 1 오류 정정 로직 및 제 2 오류 정정 로직을 포함하는 오류 정정 로직에 의해, 캐시 메모리의 캐시 라인에 저장된 데이터를 수신하고,
상기 제 1 오류 정정 로직에 의해, 상기 데이터 내의 오류들의 카운트를 결정하기 위해 신드롬을 생성하고, 상기 오류들의 카운트가 하나로 결정되는 경우 상기 데이터에 오류 정정을 수행하고,
상기 데이터 내의 상기 오류들의 카운트가 하나보다 많은 것으로 결정되는 경우, 상기 제 1 오류 정정 로직에 의해 상기 데이터를 제 2 오류 정정 로직으로 포워딩하며,
상기 데이터가 상기 제 1 오류 정정 로직에 의해 포워딩되는 경우, 상기 제 2 오류 정정 로직에 의해 상기 데이터에 대해 멀티 비트 오류 정정을 수행하게 하는
컴퓨터 판독가능 저장 매체.
- 제 15 항에 있어서,
상기 컴퓨터에 의해 실행되어 상기 머신으로 하여금
상기 데이터가 상기 오류 정정 로직에 의해 수신되기 전에 상기 데이터 내의 알려진 오류들을 수리 로직에 의해 수리하게 하는 명령어들을 더 저장하는
컴퓨터 판독가능 저장 매체.
- 제 15 항에 있어서,
상기 컴퓨터에 의해 실행되어 상기 머신으로 하여금
상기 제 1 오류 정정 로직에 의해, 멀티 비트 오류 정정과 연관된 제 2 기간보다 짧은 기간에 정정을 수행하게 하는 명령어들을 더 저장하는
컴퓨터 판독가능 저장 매체.
- 제 15 항에 있어서,
상기 컴퓨터에 의해 실행되어 상기 머신으로 하여금
상기 캐시 메모리의 어드레스 버스에 연결되는 RALT(Recently Accessed Line Table)에 의해, 상기 캐시 라인이 상기 캐시 메모리의 현재의 리프레시 기간 내에서 액세스되었는지의 여부를 결정하게 하는 명령어들을 더 포함하는
컴퓨터 판독가능 저장 매체.
- 제 15 항에 있어서,
상기 컴퓨터에 의해 실행되어 상기 머신으로 하여금
상기 제 1 오류 정정 로직에 의해, 상기 수신된 캐시 라인의 단일 오류에 대해 오류 정정을 수행하게 하는 명령어들을 더 포함하는
컴퓨터 판독가능 저장 매체.
- 외부 메모리와,
프로세서를 포함하고,
상기 프로세서는,
상기 외부 메모리로부터 판독된 데이터를 저장하는 캐시 메모리와,
상기 데이터를 수신하는 오류 정정 로직을 포함하고,
상기 오류 정정 로직은,
상기 데이터 내의 오류들의 카운트를 결정하기 위한 신드롬을 생성하고, 상기 오류들의 카운트가 하나로 결정되는 경우 상기 데이터에 오류 정정을 수행하는 제 1 오류 정정 로직과,
상기 데이터 내의 상기 오류들의 카운트가 하나 보다 많은 것으로 결정되는 경우 상기 제 1 오류 정정 로직으로부터 상기 데이터를 수신하며, 상기 제 1 오류 정정 로직으로부터의 상기 데이터의 수신에 응답하여 멀티 비트 오류 정정을 수행하는 제 2 오류 정정 로직을 포함하는
시스템.
- 제 20 항에 있어서,
상기 프로세서는,
상기 데이터를 상기 오류 정정 로직으로 포워딩하기 이전에, 상기 데이터의 알려진 오류들을 고치는 수리 로직을 더 포함하는
시스템.
- 제 20 항에 있어서,
상기 제 1 오류 정정 로직은 하나의 오류를 가지는 상기 데이터를 정정하기 위한 것인
시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/785,182 | 2010-05-21 | ||
US12/785,182 US8640005B2 (en) | 2010-05-21 | 2010-05-21 | Method and apparatus for using cache memory in a system that supports a low power state |
PCT/US2011/037319 WO2011146823A2 (en) | 2010-05-21 | 2011-05-20 | Method and apparatus for using cache memory in a system that supports a low power state |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130020808A KR20130020808A (ko) | 2013-02-28 |
KR101495049B1 true KR101495049B1 (ko) | 2015-02-24 |
Family
ID=44973483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20127033246A KR101495049B1 (ko) | 2010-05-21 | 2011-05-20 | 저전력 상태를 지원하는 시스템에서 캐시 메모리를 이용하는 방법 및 장치 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8640005B2 (ko) |
JP (1) | JP5604513B2 (ko) |
KR (1) | KR101495049B1 (ko) |
CN (1) | CN102253865B (ko) |
BR (1) | BRPI1105243A8 (ko) |
DE (1) | DE112011100579B4 (ko) |
GB (1) | GB2506833B (ko) |
TW (1) | TWI502599B (ko) |
WO (1) | WO2011146823A2 (ko) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484539B1 (en) * | 2009-06-09 | 2013-07-09 | Sk Hynix Memory Solutions Inc. | Controlling power consumption in iterative ECC processing systems |
US8533572B2 (en) | 2010-09-24 | 2013-09-10 | Intel Corporation | Error correcting code logic for processor caches that uses a common set of check bits |
US8924817B2 (en) * | 2010-09-29 | 2014-12-30 | Advanced Micro Devices, Inc. | Method and apparatus for calculating error correction codes for selective data updates |
US8788904B2 (en) * | 2011-10-31 | 2014-07-22 | Hewlett-Packard Development Company, L.P. | Methods and apparatus to perform error detection and correction |
US9304570B2 (en) | 2011-12-15 | 2016-04-05 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements |
US9195551B2 (en) | 2012-03-29 | 2015-11-24 | Intel Corporation | Enhanced storage of metadata utilizing improved error detection and correction in computer memory |
US9444496B2 (en) * | 2012-04-04 | 2016-09-13 | University Of Southern California | Correctable parity protected memory |
US9323608B2 (en) | 2012-06-07 | 2016-04-26 | Micron Technology, Inc. | Integrity of a data bus |
KR101979734B1 (ko) | 2012-08-07 | 2019-05-17 | 삼성전자 주식회사 | 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법 |
US9703364B2 (en) * | 2012-09-29 | 2017-07-11 | Intel Corporation | Rotational graphics sub-slice and execution unit power down to improve power performance efficiency |
KR102081980B1 (ko) * | 2012-10-08 | 2020-02-27 | 삼성전자 주식회사 | 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 |
US9128858B1 (en) * | 2013-01-29 | 2015-09-08 | Pmc-Sierra Us, Inc. | Apparatus and method for adjusting a correctable raw bit error rate limit in a memory system using strong log-likelihood (LLR) values |
US9092353B1 (en) | 2013-01-29 | 2015-07-28 | Pmc-Sierra Us, Inc. | Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system |
KR102024033B1 (ko) * | 2013-03-04 | 2019-09-24 | 삼성전자주식회사 | 이동 통신 시스템에서 메모리 제어 방법 및 장치 |
US10230396B1 (en) | 2013-03-05 | 2019-03-12 | Microsemi Solutions (Us), Inc. | Method and apparatus for layer-specific LDPC decoding |
US9813080B1 (en) | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
US9397701B1 (en) | 2013-03-11 | 2016-07-19 | Microsemi Storage Solutions (Us), Inc. | System and method for lifetime specific LDPC decoding |
US9454414B2 (en) | 2013-03-15 | 2016-09-27 | Microsemi Storage Solutions (Us), Inc. | System and method for accumulating soft information in LDPC decoding |
US9450610B1 (en) | 2013-03-15 | 2016-09-20 | Microsemi Storage Solutions (Us), Inc. | High quality log likelihood ratios determined using two-index look-up table |
US9590656B2 (en) | 2013-03-15 | 2017-03-07 | Microsemi Storage Solutions (Us), Inc. | System and method for higher quality log likelihood ratios in LDPC decoding |
JP2014211800A (ja) * | 2013-04-19 | 2014-11-13 | 株式会社東芝 | データ記憶装置、ストレージコントローラおよびデータ記憶制御方法 |
TWI502601B (zh) * | 2013-04-24 | 2015-10-01 | Ind Tech Res Inst | 混合式錯誤修復方法及其記憶體裝置 |
WO2015016880A1 (en) | 2013-07-31 | 2015-02-05 | Hewlett-Packard Development Company, L.P. | Global error correction |
WO2015016879A1 (en) * | 2013-07-31 | 2015-02-05 | Hewlett-Packard Development Company, L.P. | Operating a memory unit |
CN107632904B (zh) * | 2013-08-23 | 2020-12-22 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
JP6275427B2 (ja) * | 2013-09-06 | 2018-02-07 | 株式会社東芝 | メモリ制御回路およびキャッシュメモリ |
US9286224B2 (en) | 2013-11-26 | 2016-03-15 | Intel Corporation | Constraining prefetch requests to a processor socket |
CN103811047B (zh) * | 2014-02-17 | 2017-01-18 | 上海新储集成电路有限公司 | 一种基于分块dram的低功耗刷新方法 |
JP6140093B2 (ja) | 2014-03-18 | 2017-05-31 | 株式会社東芝 | キャッシュメモリ、誤り訂正回路およびプロセッサシステム |
US9417804B2 (en) | 2014-07-07 | 2016-08-16 | Microsemi Storage Solutions (Us), Inc. | System and method for memory block pool wear leveling |
KR102193682B1 (ko) | 2014-08-01 | 2020-12-21 | 삼성전자주식회사 | 선택적 ecc 기능을 갖는 반도체 메모리 장치 |
US9442801B2 (en) | 2014-09-26 | 2016-09-13 | Hewlett Packard Enterprise Development Lp | Platform error correction |
US9703632B2 (en) * | 2014-11-07 | 2017-07-11 | Nxp B. V. | Sleep mode operation for volatile memory circuits |
US9489255B2 (en) | 2015-02-12 | 2016-11-08 | International Business Machines Corporation | Dynamic array masking |
US10332613B1 (en) | 2015-05-18 | 2019-06-25 | Microsemi Solutions (Us), Inc. | Nonvolatile memory system with retention monitor |
US9740558B2 (en) | 2015-05-31 | 2017-08-22 | Intel Corporation | On-die ECC with error counter and internal address generation |
US9799405B1 (en) | 2015-07-29 | 2017-10-24 | Ip Gem Group, Llc | Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction |
US10127101B2 (en) | 2015-08-28 | 2018-11-13 | Intel Corporation | Memory device error check and scrub mode and error transparency |
US9886214B2 (en) | 2015-12-11 | 2018-02-06 | Ip Gem Group, Llc | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US10268539B2 (en) * | 2015-12-28 | 2019-04-23 | Intel Corporation | Apparatus and method for multi-bit error detection and correction |
US9892794B2 (en) | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US11169707B2 (en) | 2016-01-22 | 2021-11-09 | Netapp, Inc. | Garbage collection pacing in a storage system |
US9899092B2 (en) | 2016-01-27 | 2018-02-20 | Ip Gem Group, Llc | Nonvolatile memory system with program step manager and method for program step management |
US10291263B2 (en) | 2016-07-28 | 2019-05-14 | Ip Gem Group, Llc | Auto-learning log likelihood ratio |
US10157677B2 (en) | 2016-07-28 | 2018-12-18 | Ip Gem Group, Llc | Background reference positioning and local reference positioning using threshold voltage shift read |
US10236915B2 (en) | 2016-07-29 | 2019-03-19 | Microsemi Solutions (U.S.), Inc. | Variable T BCH encoding |
US10379944B2 (en) * | 2017-04-17 | 2019-08-13 | Advanced Micro Devices, Inc. | Bit error protection in cache memories |
US10642683B2 (en) | 2017-10-11 | 2020-05-05 | Hewlett Packard Enterprise Development Lp | Inner and outer code generator for volatile memory |
KR102606009B1 (ko) * | 2018-08-16 | 2023-11-27 | 에스케이하이닉스 주식회사 | 캐시 버퍼 및 이를 포함하는 반도체 메모리 장치 |
US10985780B2 (en) * | 2018-10-15 | 2021-04-20 | SK Hynix Inc. | Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller |
US10884940B2 (en) * | 2018-12-21 | 2021-01-05 | Advanced Micro Devices, Inc. | Method and apparatus for using compression to improve performance of low voltage caches |
KR20200140074A (ko) | 2019-06-05 | 2020-12-15 | 에스케이하이닉스 주식회사 | 휘발성 메모리 장치 및 이의 동작 방법 |
US11036636B2 (en) | 2019-06-28 | 2021-06-15 | Intel Corporation | Providing improved efficiency for metadata usages |
KR20210015087A (ko) | 2019-07-31 | 2021-02-10 | 에스케이하이닉스 주식회사 | 오류 정정 회로, 이를 포함하는 메모리 컨트롤러 및 메모리 시스템 |
US11049585B1 (en) * | 2020-03-27 | 2021-06-29 | Macronix International Co., Ltd. | On chip block repair scheme |
KR20210122455A (ko) | 2020-04-01 | 2021-10-12 | 삼성전자주식회사 | 반도체 메모리 장치 |
CN112181712B (zh) * | 2020-09-28 | 2022-02-22 | 中国人民解放军国防科技大学 | 一种提高处理器核可靠性的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480975B1 (en) * | 1998-02-17 | 2002-11-12 | International Business Machines Corporation | ECC mechanism for set associative cache array |
KR20040090410A (ko) * | 2003-04-17 | 2004-10-22 | 인터내셔널 비지네스 머신즈 코포레이션 | 에러 체크 방법, 에러 보정 코드 체커 및 이를 포함하는컴퓨터 시스템 |
US7389465B2 (en) * | 2004-01-30 | 2008-06-17 | Micron Technology, Inc. | Error detection and correction scheme for a memory device |
KR20080072948A (ko) * | 2005-12-29 | 2008-08-07 | 인텔 코오퍼레이션 | 메모리 비트 정정 보고 방법 및 장치 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4139148A (en) * | 1977-08-25 | 1979-02-13 | Sperry Rand Corporation | Double bit error correction using single bit error correction, double bit error detection logic and syndrome bit memory |
US4236247A (en) * | 1979-01-15 | 1980-11-25 | Organisation Europeene De Recherches Spatiales | Apparatus for correcting multiple errors in data words read from a memory |
JP2696212B2 (ja) | 1987-05-06 | 1998-01-14 | セイコーエプソン株式会社 | 誤り訂正装置 |
JPH0275039A (ja) | 1988-09-12 | 1990-03-14 | Mitsubishi Electric Corp | メモリ回路 |
US5604213A (en) * | 1992-03-31 | 1997-02-18 | British Technology Group Limited | 17-substituted steroids useful in cancer treatment |
US5604753A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for performing error correction on data from an external memory |
CN1159648C (zh) | 1994-12-02 | 2004-07-28 | 现代电子美国公司 | 有限游程转移预测方法 |
JPH0991206A (ja) * | 1995-09-27 | 1997-04-04 | Toshiba Corp | メモリ制御装置およびメモリ検査方法 |
US5802582A (en) * | 1996-09-10 | 1998-09-01 | International Business Machines Corporation | Explicit coherence using split-phase controls |
US6044479A (en) * | 1998-01-29 | 2000-03-28 | International Business Machines Corporation | Human sensorially significant sequential error event notification for an ECC system |
US6304992B1 (en) | 1998-09-24 | 2001-10-16 | Sun Microsystems, Inc. | Technique for correcting single-bit errors in caches with sub-block parity bits |
US6772383B1 (en) * | 1999-05-27 | 2004-08-03 | Intel Corporation | Combined tag and data ECC for enhanced soft error recovery from cache tag errors |
US6505318B1 (en) * | 1999-10-01 | 2003-01-07 | Intel Corporation | Method and apparatus for partial error detection and correction of digital data |
JP2003203010A (ja) | 2002-01-07 | 2003-07-18 | Nec Computertechno Ltd | L2キャッシュメモリ |
US6971041B2 (en) | 2002-03-04 | 2005-11-29 | International Business Machines Corporation | Cache entry error-correcting code (ECC) based at least on cache entry data and memory address |
US7296213B2 (en) * | 2002-12-11 | 2007-11-13 | Nvidia Corporation | Error correction cache for flash memory |
JP4299558B2 (ja) * | 2003-03-17 | 2009-07-22 | 株式会社ルネサステクノロジ | 情報記憶装置および情報処理システム |
JP4041076B2 (ja) * | 2004-02-27 | 2008-01-30 | 株式会社東芝 | データ記憶システム |
US20060031708A1 (en) | 2004-08-04 | 2006-02-09 | Desai Kiran R | Method and apparatus for correcting errors in a cache array |
US7653862B2 (en) * | 2005-06-15 | 2010-01-26 | Hitachi Global Storage Technologies Netherlands B.V. | Error detection and correction for encoded data |
US7590920B2 (en) * | 2005-08-05 | 2009-09-15 | Hitachi Global Storage Technologies Netherlands, B.V. | Reduced complexity error correction encoding techniques |
US7647536B2 (en) * | 2005-12-30 | 2010-01-12 | Intel Corporation | Repair bits for a low voltage cache |
US7512847B2 (en) * | 2006-02-10 | 2009-03-31 | Sandisk Il Ltd. | Method for estimating and reporting the life expectancy of flash-disk memory |
US7890836B2 (en) * | 2006-12-14 | 2011-02-15 | Intel Corporation | Method and apparatus of cache assisted error detection and correction in memory |
US8010875B2 (en) * | 2007-06-26 | 2011-08-30 | International Business Machines Corporation | Error correcting code with chip kill capability and power saving enhancement |
JP4672743B2 (ja) * | 2008-03-01 | 2011-04-20 | 株式会社東芝 | 誤り訂正装置および誤り訂正方法 |
-
2010
- 2010-05-21 US US12/785,182 patent/US8640005B2/en active Active
-
2011
- 2011-04-27 TW TW100114662A patent/TWI502599B/zh active
- 2011-05-19 CN CN201110130191.XA patent/CN102253865B/zh active Active
- 2011-05-20 WO PCT/US2011/037319 patent/WO2011146823A2/en active Application Filing
- 2011-05-20 BR BRPI1105243A patent/BRPI1105243A8/pt active Search and Examination
- 2011-05-20 GB GB1122300.5A patent/GB2506833B/en active Active
- 2011-05-20 KR KR20127033246A patent/KR101495049B1/ko active IP Right Grant
- 2011-05-20 JP JP2012517938A patent/JP5604513B2/ja active Active
- 2011-05-20 DE DE112011100579.2T patent/DE112011100579B4/de active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480975B1 (en) * | 1998-02-17 | 2002-11-12 | International Business Machines Corporation | ECC mechanism for set associative cache array |
KR20040090410A (ko) * | 2003-04-17 | 2004-10-22 | 인터내셔널 비지네스 머신즈 코포레이션 | 에러 체크 방법, 에러 보정 코드 체커 및 이를 포함하는컴퓨터 시스템 |
US7389465B2 (en) * | 2004-01-30 | 2008-06-17 | Micron Technology, Inc. | Error detection and correction scheme for a memory device |
KR20080072948A (ko) * | 2005-12-29 | 2008-08-07 | 인텔 코오퍼레이션 | 메모리 비트 정정 보고 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
DE112011100579B4 (de) | 2021-09-02 |
DE112011100579T5 (de) | 2013-02-07 |
JP2012531683A (ja) | 2012-12-10 |
TW201209841A (en) | 2012-03-01 |
WO2011146823A3 (en) | 2012-04-05 |
CN102253865B (zh) | 2014-03-05 |
GB2506833A (en) | 2014-04-16 |
US8640005B2 (en) | 2014-01-28 |
WO2011146823A2 (en) | 2011-11-24 |
CN102253865A (zh) | 2011-11-23 |
US20110289380A1 (en) | 2011-11-24 |
KR20130020808A (ko) | 2013-02-28 |
BRPI1105243A2 (pt) | 2017-06-20 |
JP5604513B2 (ja) | 2014-10-08 |
TWI502599B (zh) | 2015-10-01 |
GB201122300D0 (en) | 2012-02-01 |
GB2506833B (en) | 2018-12-19 |
BRPI1105243A8 (pt) | 2018-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101495049B1 (ko) | 저전력 상태를 지원하는 시스템에서 캐시 메모리를 이용하는 방법 및 장치 | |
US8276039B2 (en) | Error detection device and methods thereof | |
KR101684045B1 (ko) | 로컬 에러 검출 및 글로벌 에러 정정 | |
US7437597B1 (en) | Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines | |
JP4019061B2 (ja) | Ecc保護機構における固定ビット障害を解決するための特殊eccマトリクスの適用方法 | |
US8869007B2 (en) | Three dimensional (3D) memory device sparing | |
US10020822B2 (en) | Error tolerant memory system | |
US8176391B2 (en) | System to improve miscorrection rates in error control code through buffering and associated methods | |
Mittal et al. | A survey of techniques for improving error-resilience of DRAM | |
US9424195B2 (en) | Dynamic remapping of cache lines | |
US11256563B2 (en) | Memory controller with high data reliability, a memory system having the same, and an operation method of the memory controller | |
US20160139989A1 (en) | Global error correction | |
Chen et al. | RATT-ECC: Rate adaptive two-tiered error correction codes for reliable 3D die-stacked memory | |
US7546514B2 (en) | Chip correct and fault isolation in computer memory systems | |
Kim et al. | Relaxfault memory repair | |
US9430375B2 (en) | Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency | |
Jian et al. | High performance, energy efficient chipkill correct memory with multidimensional parity | |
Longofono et al. | Predicting and mitigating single-event upsets in DRAM using HOTH | |
Wang | Architecting Memory Systems Upon Highly Scaled Error-Prone Memory Technologies | |
US20240303156A1 (en) | Patrol scrubbing cycle for data storage circuitry | |
Kline et al. | Predicting Single Event Effects in DRAM | |
Wu et al. | Redundant Array of Independent Memory Devices | |
Kim et al. | Stay Alive, Don't Give Up: DUE and SDC Reduction with Memory Repair | |
CN117716342A (zh) | 存储器装置的裸片上ecc数据 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180201 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190129 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20200129 Year of fee payment: 6 |