KR101425704B1 - 비트 포이즈닝 장치, 방법, 시스템 및 제품 - Google Patents

비트 포이즈닝 장치, 방법, 시스템 및 제품 Download PDF

Info

Publication number
KR101425704B1
KR101425704B1 KR1020117007706A KR20117007706A KR101425704B1 KR 101425704 B1 KR101425704 B1 KR 101425704B1 KR 1020117007706 A KR1020117007706 A KR 1020117007706A KR 20117007706 A KR20117007706 A KR 20117007706A KR 101425704 B1 KR101425704 B1 KR 101425704B1
Authority
KR
South Korea
Prior art keywords
code
bit
event
processed
read
Prior art date
Application number
KR1020117007706A
Other languages
English (en)
Other versions
KR20110050720A (ko
Inventor
라자트 아가왈
스콧 허들스톤
데니스 브레진스키
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20110050720A publication Critical patent/KR20110050720A/ko
Application granted granted Critical
Publication of KR101425704B1 publication Critical patent/KR101425704B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1064Adding 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

일 실시예에서, 일 방법이 제공되는데, 이 방법은 이벤트의 발생 및 미발생 중 하나를 판정 - 상기 하나는 이벤트 판정 결과를 낳음 - 하는 단계와, 이벤트 비트를 갖는 코드를 처리하는 단계를 포함하되, 상기 이벤트 비트를 갖는 코드를 처리하는 단계는, 상기 이벤트 비트가 상기 이벤트 판정 결과와 대응하는지 여부를 판정하고, 상기 코드를 인코딩하여서 상기 이벤트 판정 결과에 대응하는 포이즌 비트를 생성함으로써, 상기 이벤트 판정 결과 및 상기 코드를 기반으로 한다.

Description

비트 포이즈닝 장치, 방법, 시스템 및 제품{POISON BIT ERROR CHECKING CODE SCHEME}
본 발명은 포이즌 비트 에러(poison bit error) 체킹 코드 방식에 관한 것이다.
데이터가 메모리 내외로 전달될 때에, 다양한 타입의 에러가 발생할 수 있다. 보다 통상적으로는, 이들은 단일 비트 에러이지만 2 비트 및 다른 타입의 에러들이 또한 발생할 수 있다. 에러 체킹은 통상적으로 데이터가 메모리로부터 판독되거나 메모리로 기록될 때에 데이터의 무결성을 체크하기 위해서 사용된다. 에러 체킹은 에러 검출 및/또는 에러 보정을 포함할 수 있다. 에러 검출은 전송 동안 잡음(noise) 또는 다른 훼손 사항들(impairments)에 의해서 유발되는 에러들의 존재를 검출할 수 있는 능력이다. 에러 보정은 최초의 에러가 없는 데이터를 재구성할 수 있는 추가적인 능력이다. 수많은 가용한 방식들이 존재한다.
에러 보정 코드(ECC)는 에러 체킹 방식, 특히 에러 보정 방식 중의 일례이다. ECC에서, 가령, 데이터가 메모리 버스를 가로질러서 전송될 때에, ECC 생성 로직, 가령 배타적 OR 알고리즘이 데이터에 걸쳐서 계산되어서 ECC를 생성한다. 이어서, 데이터 및 ECC가 함께 메모리 내에 저장된다. 이어서, 데이터가 메모리로부터 ECC와 함께 액세스될 때에, ECC 에러 디코드 로직은 그 데이터에 적용되어서 에러 검출 및 보정 정보를 생성한다. 이어서, 데이터는 이 정보에 의해서 보정된다.
본 발명의 실시예들은 다음의 첨부 도면을 참조하여서 한정적인 방식이 아닌 예시적인 방식으로 이하에서 설명될 것이며, 이 첨부 도면에서 동일한 참조 부호는 유사한 구성 요소를 지칭한다.
도 1은 본 발명의 실시예들에 따른 시스템을 나타내고 있다.
도 2는 본 발명의 실시예에 따른 방법을 나타내고 있다.
도 3은 본 발명의 실시예들에 따른 방법을 나타내고 있다.
도 4는 본 발명의 실시예에 따른 상태도이다.
이하에서 기술되는 예시적인 실례들은 오직 설명을 위한 것이지 본 발명의 실시예들을 한정하기 위한 것은 아니다. 따라서, 이러한 실례들이 세부적으로 기술되는 경우에 또는 하나 이상의 실례들이 제공되는 경우에, 이러한 실례들은 한정적으로 해석되지 말아야 하며 본 발명의 실시예들을 이하에서 기술되는 바로만 한정하는 것으로 해석되지 말아야 한다.
도 1은 일 실시예에 따른 컴퓨팅 시스템(100)의 블록도이다. 몇몇 실시예에서, 컴퓨팅 시스템(100)은 N 개의 프로세서에 달하는 복수의 프로세서(102A, 102B, 102C)를 포함한다. 본 명세서에서 사용되는 바와 같이, 복수의 프로세서(102A, 102B, 102C) 중 임의의 소정의 프로세서는 프로세서(102N)로서 지칭될 수 있다. 본 명세서에서 사용되는 "프로세서"는 컴퓨팅 작업(computational task)을 성취할 수 있는 하드웨어 자원 및 소프트웨어 자원들의 임의의 조합과 관련된다. 가령, 프로세서는 사전 규정된 인스트럭션 세트에 따라서 데이터를 처리하기 위한 머신 판독 가능한 인스트럭션들을 실행하는 중앙 처리 유닛(CPU) 또는 마이크로컨트롤러를 포함할 수 있다. 프로세서는 복수의 프로세싱 코어들을 갖는 멀티 코어 프로세서를 포함할 수 있고, 이와 달리 프로세서는 멀티 코어 프로세서 내에 포함된 프로세싱 코어를 나타낼 수도 있으며, 여기서 운영 체제는 실행 리소스의 전체 세트를 갖는 개별 프로세서로서 상기 프로세싱 코어를 인식할 수 있다. 다른 가능한 사항들이 여전히 존재한다.
시스템(100)은 메모리(106)를 더 포함한다. 메모리(106)는 실행될 수 있는 머신 실행 가능한 인스트럭션(132) 및/또는 액세스되거나 조작될 수 있는 데이터를 저장할 수 있다. 본 명세서에서 사용되는 "머신 실행 가능한" 인스트럭션은 하나 이상의 논리적 연산을 수행하기 위해서 하나 이상의 머신들이 이해할 수 있는 표현들을 말한다. 가령, 머신 실행 가능한 인스트럭션(132)은 하나 이상의 데이터 객체 상에서 하나 이상의 연산들을 실행하기 위해서 프로세서 컴파일러에 의해서 해석될 수 있는 인스트럭션들을 포함할 수 있다. 그러나, 이는 단지 머신 실행 가능한 인스트럭션의 일 실례일뿐이며 본 발명의 실시예들은 이로만 한정되는 것은 아니다. 가령, 메모리(106)는 대용량 스토리지(mass storage), RAM(random access memory), 비휘발성 메모리 및/또는 하나 이상의 다른 타입의 머신 액세스 가능한 메모리들을 포함할 수 있다. 메모리가 로컬 캐시들(104A,104B,104C)(프로세서에 대해서 로컬인 캐시들)을 사용하여서 공유되거나 동기화되는 멀티 프로세서 시스템에서, 메모리 내에 저장된 데이터는 캐시 라인으로서 지칭될 수 있다.
로직(130)은 시스템(100)의 임의의 일부 상에 또는 내에 포함될 수 있다. 로직(130)은 하드웨어, 소프트웨어 또는 이들의 조합(가령, 펌웨어)을 포함할 수 있다. 가령, 로직(130)은 본 명세서에서 기술되는 동작들을 수행하는 회로(즉, 하나 이상의 회로)를 포함할 수 있다. 가령, 로직(130)은 하나 이상의 디지털 회로, 하나 이상의 아날로그 회로, 하나 이상의 상태 머신(state machine), 프로그램 가능한 로직 및/또는 하나 이상의 ASIC(application-specific integrated circuit)을 포함할 수 있다. 로직(130)은 하나 이상의 동작들을 수행하도록 하드와이어될(hardwired) 수 있다. 이와 달리 또는 추가적으로, 로직(130)은 이러한 동작들을 수행하기 위해서 메모리(106)와 같은 메모리 내에 저장된 머신 실행 가능한 인스트럭션(132) 내에서 구현될 수 있다. 이와 달리 또는 추가적으로, 로직(130)은 펌웨어로 구현될 수 있다. 로직은 메모리 컨트롤러(114) 내에서와 같이 시스템(100)의 다양한 구성 요소 내에 포함될 수 있다. 로직(130)이 메모리 컨트롤러(114) 내에서 개별 블록으로서 도시되었지만, 본 기술 분야의 당업자는 이와 달리 메모리 컨트롤러(114) 및 로직(130)이 동일한 블록 내에 포함될 수도 있음을 이해할 것이다. 일반적으로, 로직(130)은 본 명세서에서 기술되는 다양한 구성 요소들이 다양한 기능들을 수행할 시에 사용될 수 있다.
허브 컨트롤러(108)는 프로세싱 코어(102A,102B,102C) 각각과 메모리(106)를 서로 접속시킬 수 있는 호스트 브리지/허브 시스템을 포함할 수 있다. 허브 컨트롤러(108)는 Intel® Corporation으로부터 상업적으로 입수 가능한 집적 회로 칩세트들로부터 선택되는 것들(가령, 그래픽, 메모리 및 입출력 컨트롤러 허브 칩세트)과 같은 하나 이상의 집적 회로 칩들을 포함하지만, 이와 달리 다른 하나 이상의 집적 회로 칩들이 사용될 수도 있다. 가령, 허브 컨트롤러(108)는 입출력 제어 허브(ICH), 메모리 제어 허브(MCH) 또는 그래픽/메모리 제어 허브(GMCH)를 포함할 수 있다. 시스템(100)은 ICH 및 MCH와 같은 2 개의 허브 컨트롤러들을 포함하거나 단지 하나의 허브 컨트롤러만을 포함할 수 있지만, 본 발명의 실시예들은 시스템(100) 내에서 허브 컨트롤러들의 개수에 의해서 한정되는 것은 아니다.
허브 컨트롤러(108)는 시스템 버스(110)를 통해서 프로세싱 코어(102A,102B,102C)와 통신하거나 메모리 버스(112)를 통해서 메모리(106)와 통신한다. 허브 컨트롤러(108)는 프로세싱 코어(102A,102B,102C)와 메모리(106) 간 또는 시스템(100) 내의 도시되지 않은 다른 디바이스들 간에서 데이터의 움직임을 관리하기 위한 메모리 컨트롤러(114)를 포함할 수 있다. 이와 달리, 메모리 컨트롤러(114)는 하나 이상의 프로세서(102A,102B,102C)와 함께 다이(die) 상에 집적될 수 있다.
시스템(100)은 디렉토리 캐시(116)를 더 포함한다. 이 디렉토리 캐시(116)는 메모리의 각 블록에 대한 정보 또는 캐시 라인에 대한 정보를 보유할 수 있다. 가령, 디렉토리 캐시(116)는, 가령 공유되거나, 캐시되지 않거나, 배타적인 메모리의 각 블록의 상태를 표시하며, (프로세서(102A,102B,102C) 중 하나에 대응하는) 어느 로컬 캐시가 소정의 캐시 라인의 복사본(copy)을 갖는지를 표시하고, 캐시 라인이 더티(dirty)한지의 여부를 표시한다.
가령, 일 실시예에서, 데이터에 대한 매 요청이 디렉토리 캐시(116)에 전송된다. 디렉토리 캐시(116)는 이 데이터에 대한 요청을 디렉토리 캐시(116)가 그의 로컬 캐시 내에 데이터를 저장하고 있는 것으로 표시한 임의의 개수의 프로세서들(102A,102B,102C)에게 전송한다. 예시적으로, 디렉토리 캐시(116)는 N 개의 노드에 대한 N 비트 벡터 맵을 유지 관리하며 여기서 각 비트는 대응하는 노드가 소정의 캐시 라인의 캐시된 복사본을 유지 관리하는지의 여부를 표시한다.
프로세서(102A,102B,102C), 메모리(106) 및 버스(110,112)는 가령 시스템 마더보드(118)와 같은 단일 회로 보드 내에 포함될 수 있지만, 본 발명을 이로만 한정하는 것은 아니다.
도 2는 본 발명의 실시예들에 따른 방법을 나타내고 있다. 도 2의 방법은 블록(200)에서 시작하고 블록(202)으로 진행하여서 이 블록에서 본 방법은 이벤트의 발생 유무를 판정하는 단계를 포함하며, 이벤트의 발생 유무는 이벤트 판정 사항으로 귀결된다.
가령, 이벤트는 데이터가 캐시되는 이벤트를 포함한다. 가령, 일 실시예에서, 프로세서(102N)는 데이터를 수정하여서 이를 자신의 로컬 캐시 내에 캐시하고 이어서 그 데이터를 메모리(106)와 같은 메모리 내에 기록한다. 본 실례에서, 데이터가 로컬 캐시 내에 저장되면 이벤트가 발생한 것으로 판정될 수 있다. 다른 실례에서, 이벤트는 메시지가 저장되는 이벤트를 포함할 수 있다. 가령, 슈퍼컴퓨터와 같은 소정의 시스템에서, 시스템 내의 다양한 마이크로프로세서 상에서 실행되고 있는 프로세스들은 메시지를 서로 전달할 수 있다. 본 실례에서, 일 프로세스가 다른 프로세스에 대해서 메시지를 생성하고 저장하면, 이벤트가 발생한 것으로 판정될 수 있다.
블록(204)에서, 본 방법은 이벤트 비트를 갖는 코드를 처리하는 단계를 포함하며, 이 처리 단계는 이벤트 판정 결과 및 코드에 따라서 이루어진다. 이벤트 비트는 이벤트의 발생 여부를 나타내도록 설정된 코드 내의 비트를 말한다. 이 이벤트 비트는 가령, 비트 위치 0과 같은 정적(static) 비트 위치를 포함하거나, 가령 비트 위치 3과 같은 동적(danamic) 비트 위치를 포함하여서 특정 프로세서가 이벤트를 생성하였음을 나타낸다. 따라서, 이벤트가 발생한 것으로 판정되면, 이벤트 비트가 일 값으로 설정되거나, 이와 달리, 이벤트가 발생하지 않은 것으로 판정되면, 이벤트 비트는 다른 값으로 설정된다. "설정"은 이벤트의 발생을 표시하기 위해서 비트를 "1"로 설정하거나 이벤트가 발생하지 않았음을 표시하기 위해서 비트를 "0"으로 설정할 수 있다. 이와 달리, "설정"은 이벤트의 발생을 표시하기 위해서 비트를 0으로 설정하거나 이벤트가 발생하지 않았음을 표시하기 위해서 비트를 1로 설정할 수 있다.
이러한 문맥에서 보면, "이벤트 판정 결과 및 코드에 따라서 코드를 처리하는 동작"은 블록(206)에서 코드의 이벤트 비트가 이벤트 판정 결과와 대응되는지의 여부를 판정하고, 대응되지 않으면, 코드가 인코딩되고, 그렇지 않으면 홀로 남겨두는 동작을 말한다. 이벤트 비트가 이벤트 판정 결과에 모순되면 이벤트 비트는 이벤트 판정 결과와 대응되지 않는다. 가령, 이벤트 비트가 "0"의 값을 갖고(이 경우에 이 값은 이벤트가 디스에이블되거나 이벤트가 발생하지 않았음을 나타내도록 구성됨), 이벤트가 발생하였다고 판정되면, 이벤트 비트는 이벤트 판정 결과와 대응되지 않는다.
이와 반대로, 이벤트의 판정 결과에 모순되지 않은 이벤트의 발생을 이벤트 비트가 표시하면 이벤트 비트는 이벤트 판정 결과와 대응된다. 가령, 이벤트 비트가 "1"의 값을 가지며(이 경우에 이 값은 이벤트가 발생하였음을 나타내도록 구성됨), 이벤트가 발생하였다고 판정되면, 이벤트 비트는 이벤트 판정 결과와 대응된다.
블록(208)에서, 이벤트 비트가 이벤트 판정 결과와 대응되지 않으면, 이 코드는 인코딩되어서 이벤트 판정 결과와 대응되는 포이즌 비트(poison bit)를 생성한다. 본 명세서에서 사용되는 바와 같이, "인코딩"은 코드 중 하나 이상의 비트를 포이즈닝(poisoning)하는 바를 말한다. 본 명세서에서 사용되는 바와 같이, "포이즈닝"은 가령 고정된 패턴 코드와 같은 포이즌 마스크(poison mask)를 적용하여서 이벤트 비트 위치에 1 비트 또는 0 비트를 저장하여서 그 아래에 존재하는 코드의 전반적인 유효성을 변경시키지 않으면서 이벤트의 발생 유무를 표시하는 바를 말한다. 또한, 제 1 처리된 코드를 생성하기 위해서 코드에 에러 체킹 로직이 적용되고 제 2 처리된 코드를 생성하기 위해서 디코딩된 코드에 에러 체킹 로직이 적용되면, 오직 제 1 처리된 코드 및 제 2 처리된 코드 중 하나는 보정 불가능하다. 달리 말하면, 추가 인코딩을 갖는 데이터는 메모리로부터 다시 판독될 때에 추가 인코딩을 갖지 않은 데이터와 상대적으로 용이하게 구별될 수 있어야 한다. 이는 또한 공통 메모리 에러(common memory errer)가 존재하는 경우에 더욱 그러하다. 이는 도 3에서 보다 세부적으로 설명될 것이다.
본 발명의 실시예들에서, 가령, 포이즌 마스크는 그 에러 체킹 능력 및/또는 에러 보정 능력이 인코딩되지 않은 에러 체킹 코드만큼 실질적으로 정확하다면 그 하위에 존재하는 에러 체킹 코드의 전반적인 유효성을 변화시키지 않는다. 또한, 다양한 타입의 에러들에 대한 에일리어싱(aliasing)은 거의 존재하지 않는 것이 바람직하다. 가령, 전반적으로 유효한 에러 체킹 코드는 동일한 메모리 디바이스 내에서 1 비트 에러 또는 1 와이어 에러에 대해서 또는 2 비트 에러에 대해서 어떠한 에일리어싱도 발생하지 않는 경우의 것이며, 이 경우에 SDC(silent data corruption) 에러 및 DUE(detected unrecorverable error)가 (가령, 2천 4 백만개의 다른 2 비트 에러들 중 오직 1 개 또는 칩킬(chipkill)에 있어서 2억 5천만 개 중의 하나와 같이) 통계적으로 거의 발생하지 않는다. 일 실시예에서, 인코딩은 포이즌 마스크를 적용하여서 단일 비트를 포이즈닝하는 바를 포함한다.
본 기술 분야의 당업자는 잘 이해할 바와 같이, 에러 체킹 코드를 인코딩하는데 사용되는 로직은 에러 체킹 코드 그 자체에 의존한다. 본 기술 분야의 당업자는 잘 이해할 바와 같이, ECC 코드와 같은 에러 체킹 코드의 생성은 종종 노동 집약적인 작업이며 기밀 사항이며 심지어 외부 유출 금지(trade secret) 데이터이다. 인코딩이 기반으로 하고 있는 코드가 복잡하면, 추가 인코딩을 수행하기 위해서 사용되는 로직은 수학적 분석 및 시행 착오를 요구한다는 사실을 본 기술 분야의 당업자는 잘 이해하고 있을 것이다. 그러나, 만족되어야 할 요구 사항들을 기술함으로써 본 기술 분야의 당업자는 본 발명의 실시예들에 따라서 로직을 생성할 수 있을 것이다.
가령, 일 실시예에서, (1 비트가 데이터가 캐시되었음을 나타내는 경우에) 데이터가 캐시되었으면, 01010100101101000의 에러 체킹 코드(여기서 비트 위치 0은 데이터가 캐시되었는지의 여부를 나타내기 위한 이벤트 비트를 포함함)가 0 비트보다는 1 비트를 저장하기 위해서 비트 위치 0을 포이즈닝함으로써 상기 이벤트에 따라서 인코딩될 필요가 있을 것이다. 본 실례에서, 인코딩 에러 체킹 코드는 01010100101101001이 된다. 한편, (1 비트가 데이터가 캐시되었음을 나타내는 경우에) 데이터가 캐시되었으면, 01010100101101001의 생성된 에러 체킹 코드(여기서 비트 위치 0은 데이터가 캐시되었는지의 여부를 나타내기 위해서 사용됨)가 인코딩될 필요가 없을 것이다.
일 실시예에서, 이벤트 비트는 특정 프로세서(102N)가 데이터를 캐시하였음을 표시하기 위해서 동적 비트 위치에 대응한다. 가령, 캐싱 프로세서(102N)가 프로세서(6)인 8 개의 프로세서(0 내지 7)를 갖는 시스템에서, 이벤트 비트는 비트 #7에 대응한다. 따라서, 에러 체킹 코드가 01010100100101000를 포함하면, 프로세서(6)가 데이터를 자신의 캐시 내에 캐시하였음을 나타내도록 비트를 설정하면 에러 체킹 코드는 01010100101101000가 된다. 이와 마찬가지로, 프로세서 #2가 캐싱 프로세서이면, 에러 체킹 코드는 01010100100101100가 된다. 다른 실시예에서, 이벤트 비트는 프로세서들 중 임의의 하나(102N)에 의해서 데이터가 캐시되었음을 나타내기 위해서 정적 비트 위치에 대응한다. 가령, 에러 체킹 코드가 01010100100101000를 포함하고, 프로세서가 데이터를 캐시하였음을 나타내기 위해서 이벤트 비트가 비트 0을 포함하면, 프로세서(2) 또는 프로세서(7) 중 어느 것이 캐싱 프로세서인지와는 상관없이 에러 체킹 코드는 01010100100101001를 포함한다.
일 실시예에서, 코드는 에러 체킹 코드를 포함한다. 가령, 에러 체킹 코드는 ECC(에러 보정 코드) 또는 CRC(cyclic redundancy code)를 포함한다. 그러나, 본 발명의 실시예들은 이로만 한정되는 것은 아니다.
일 실시예에서, 처리된 코드는 대응하는 데이터와 함께 메모리 내에 저장되는 ECC 코드를 포함할 수 있다. 가령, 도 4에 도시된 바와 같이, 데이터(402)의 캐시 라인이 일단 메모리(106)에 기록되기 위해서 가용될 수 있으면, ECC 생성 로직(104)은 데이터(402)에 대해서 적용되어서 (이벤트 비트를 갖는) ECC(406)이 생성되고, 이 ECC(406)는 메모리(106) 내에 데이터(402)와 함께 저장되어서 데이터(402)의 저장 단계 동안에 발생할 수 있는 소정의 에러(가령, 1 비트 또는 2 비트 에러)를 보정한다. 상술한 바와 같이, 그리고 블록(208)에서 도시된 바와 같이, ECC(406)의 이벤트 비트가 이벤트 판정 결과와 일치하지 않으면, ECC(406)는 포이즌 마스크(408)를 사용하여서 인코딩된다. 만일 ECC(406)의 이벤트 비트가 이벤트 판정 결과와 일치하면, 처리된 코드(401)는 (블록(208)에서 포이즌 마스크를 적용하지 않고서) 메모리(106) 내에 데이터(402)와 함께 저장된다.
도 2의 방법은 블록(206)에서 종료된다.
일 실시예에서, 캐시 라인은 복수의 부분들로 분할될 수 있으며, 이 각 부분들에 대해서 에러 체킹 코드가 생성될 수 있다. 가령, 캐시 라인이 2 개의 절반으로 분할되고, 에러 체킹 코드는 각 절반에 대해서 생성될 수 있다. 또한, 에러 체킹 코드를 인코딩하는 단계는 단일 이벤트를 추론하기 위해서 캐시 라인 부분들 중 적어도 하나의 부분에 대해서 단일 마스크를 인가하는 단계를 포함할 수 있다. 이와 달리, 각 부분에 대응하는 마스크가 복수의 이벤트를 추론하기 위해서 인가될 수 있다. 이는 에러 보정 능력이 덜 우수하지만, SDC 및/또는 DUE에 대한 에일리어싱 확률을 감소시킬 수 있다.
도 2의 방법에 따라서 에러 체킹 코드를 저장한 후에, 본 방법은 도 3의 방법으로 진행한다. 도 3의 방법은 블록(300)에서 시작되어서 블록(302)으로 진행하여 이 블록에서 이 방법은 메모리로부터 상기 코드를 판독하는 단계를 포함한다. 일 실시예에서, 도 4를 참조하면, 이 방법은 대응하는 데이터(402)와 함께 메모리(106)로부터 처리된 ECC 코드(410)를 판독하는 단계를 포함한다.
블록(304)에서, 이 방법은 상기 판독된 코드를 처리하여서 복수의 처리된 코드들을 생성하는 단계를 포함한다.
일 실시예에서, "상기 판독된 코드를 처리하여서 복수의 처리된 코드들을 생성하는 단계"는 판독된 코드를 디코딩하여서 디코딩된 판독 코드를 생성하고 판독된 코드 상에서 코드 체킹을 수행하여서 제 1 처리된 코드를 생성하고 디코딩된 판독 코드에 대해서 코드 체킹을 수행하여서 제 2 처리된 코드를 생성하는 바를 말한다. 이 판독 코드는 메모리로부터 판독된 인코딩된 코드를 말한다. 상기 디코딩된 판독 코드는 상기 코드를 인코딩하는데 사용되었던 코드 반전 단계를 적용함으로써 생성된 코드를 말한다.
도 4의 일 실시예에서, 데이터(402) 및 처리된 ECC(410)는 메모리(106)로부터 판독된다. 이와 관련하여서, 메모리(106)로부터 판독된 에러 보정 코드(410)는 "판독된 코드"로서 지칭된다. 이어서, 판독된 코드는 디코딩되어서(414) 디코딩된 판독 코드(418)가 생성된다. 판독된 코드(412)는 코딩 체킹 로직(416)을 통과하고 이로써 제 1 처리된 코드(420)가 생성되고, 디코딩된 판독 코드(418)가 코딩 체킹 로직(416)을 통과하고 이로써 제 2 처리된 코드(422)가 생성된다.
코드 체킹 로직(416)은 처리된 코드에 따라서 생성될 수 있다. 가령, 처리된 ECC가 포이즈닝되었으면(즉, 포이즌 마스크가 ECC에 적용되었으면), 처리된 ECC(410)가 메모리(106)로부터 판독될 때에(판독된 코드(412)의 경우임), 디코딩된 판독 코드(418)에 대해서 계산된 코드 체킹 로직(416)은 어떠한 에러도 생성하지 않거나 보정 가능한 에러를 생성하거나; 판독된 코드(412)에 대해서 계산된 코드 체킹 로직(416)은 보정 불가능한 에러를 생성하도록 코드 체킹 로직(416)은 생성된다.
이와 마찬가지로, 처리된 ECC가 포이즈닝되지 않았으면, 처리된 ECC(210)가 메모리(106)로부터 판독될 때에(판독된 코드(212)의 경우임), 디코딩된 판독 코드(218)에 대해서 계산된 코드 체킹 로직(216)은 보정 불가능한 에러를 생성하거나; 판독된 코드(212)에 대해서 계산된 코드 체킹 로직(216)은 어떠한 에러도 생성하지 않거나 보정 가능한 에러를 생성하도록 코드 체킹 로직(216)은 생성된다.
다시 한번 말하자면, 추가적인 인코딩을 수행하는 데에 사용되는 로직은 이러한 방식으로 에러 체킹 로직(216) 작업을 하기 위해서 수학적 분석 및 시행 착오를 요구한다는 사실을 본 기술 분야의 당업자는 잘 이해할 것이다.
블록(306)에서, 본 방법은 복수의 처리된 코드 중 하나로부터 보정 가능한 코드를 식별하는 단계를 포함한다. 본 명세서에서 사용되는 바와 같이, "보정 가능한 코드"는 처리된 코드 중 오직 하나만이 보정 불가능한 코드이고 다른 처리된 코드들은 ECC 체킹의 결과로서 보정 가능한 에러를 가지거나 어떠한 에러도 가지지 않게 되는 복수의 처리된 코드들 중 하나를 말한다. 모든/양 처리된 코드가 보정 불가능한 에러로 귀결되거나 아니면 어떠한 에러도 없거나 보정 가능한 에러로 귀결되면, 에일리어싱(aliasing)이 발생하며 보정 가능한 코드는 식별될 수 없다.
표 1은 보정 가능한 코드가 식별될 수 있는지의 여부를 판정하는데 사용될 수 있는 판정 테이블의 실례이다. 본 실례에서, 행렬 A는 판독된 (인코딩된) 코드 상에서 수행되는 ECC 체킹 로직을 말하며, 행렬 B는 디코딩된 코드 상에서 수행되는 ECC 체킹 로직을 말한다. 표의 상부에서의 행들은 판독된 (인코딩된) 코드 상에서 코드 체킹을 수행함으로써 생성된 제 1 처리된 코드의 결과에 대한 값들을 나타내며, 표 1의 좌측 상의 행들은 디코딩된 코드 상에서 코드 체킹을 수행함으로써 생성된 제 2 처리된 코드의 결과에 대한 값들을 나타낸다. 표에서 나타난 바와 같이, 코드는 다음의 시나리오에서는 보정 불가능하다. 즉, 이 시나리오는 제 1 처리된 코드 및 제 2 처리된 코드 모두가 어떠한 에러도 가지지 않거나 보정 가능한 에러를 갖는 경우와, 제 1 처리된 코드 및 제 2 처리된 코드 모두가 보정 불가능한 에러를 갖는 경우를 말한다. 한편, 제 1 처리된 코드 및 제 2 처리된 코드 중 어느 하나가 보정 불가능한 에러를 가지며 다른 하나는 에러를 가지지 않거나 보정 가능한 에러를 갖게 되면, 보정 가능한 코드가 존재한다. 후자의 상황에서, 보정 가능한 코드는 어떠한 에러도 가지지 않거나 보정 가능한 에러를 갖는 처리된 코드이다.
Figure 112011024132345-pct00001
도 4에서, 제 1 처리된 코드(420) 및 제 2 처리된 코드(422) 중의 하나가 보정 불가능하고 다른 하나가 보정 가능하거나 어떠한 에러로 가지지 않으면, 가령 선택 로직(424)에 의해서 보정 가능한 코드(426)가 식별될 수 있다.
블록(308)에서, 이 방법은 보정 가능한 코드가 식별되면 보정 가능한 코드의 이벤트 비트를 판독하여서 이벤트의 발생 유무를 판정하는 단계를 포함한다. 일단 보정 가능한 코드가 식별되면, 이 코드의 이벤트 비트는 판독되어서 이벤트가 발생하였는지의 여부가 판정될 수 있다. 가령, 비트 값 0은 이벤트가 발생하지 않았음을 나타내고, 비트 값 1은 이벤트가 발생하였음을 나타내면, 보정 가능한 코드의 이벤트 비트의 비트 값 0은 이벤트가 발생하지 않았음을 나타내고, 이벤트 비트 값 1은 이벤트가 발생하였음을 나타낸다.
이 방법은 블록(310)에서 종료된다.
전술한 설명들에서, 본 발명은 이의 특정 실시예들을 참조하여서 기술되었다. 그러나, 본 발명의 교시 사항의 범위 내에서 이러한 실시예들에 대해서 다양한 수정 및 변경이 가능하다. 따라서, 본 명세서 및 도면은 본 발명을 한정하는 것이 아닌 예시적으로 설명하는 차원으로 해석되어야 한다.

Claims (20)

  1. 적어도 하나의 비트를 포이즈닝(poisoning)하는 장치로서,
    공유되는 메모리 내에 저장될 캐시 라인에 대응하는 ECC(에러 보정 코드)―상기 ECC는 이벤트 비트를 포함함―를 생성하고,
    이벤트의 발생 및 미발생 중 하나를 판정하여서 이벤트 판정 결과를 생성하고,
    상기 이벤트 비트와 상기 이벤트 판정 결과에 따라 상기 ECC를 처리하고,
    상기 처리된 ECC와 상기 대응하는 캐시 라인을 메모리에 저장하는
    로직을 포함하고,
    상기 이벤트 비트는, 특정 프로세서가 상기 캐시 라인에 대응하는 데이터를 캐시한 것을 나타내는 동적 비트 위치와, 복수의 프로세서 중 임의의 하나가 상기 데이터를 캐시한 것을 나타내는 정적 비트 위치 중 하나에 대응하는
    비트 포이즈닝 장치.
  2. 제 1 항에 있어서,
    상기 공유된 메모리는 상기 복수의 프로세서에 의해서 공유되며,
    상기 대응하는 캐시 라인은 상기 복수의 프로세서 중 하나의 프로세서에 의해서 저장되도록 요청되며,
    상기 이벤트의 발생 및 미발생 중 하나를 판정하는 상기 로직은, 상기 하나의 프로세서가 데이터를 자신의 로컬 캐시에 추가적으로 캐시했는지 여부를 판정하는 로직을 포함하는
    비트 포이즈닝 장치.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 메모리로부터 상기 ECC를 판독하고("코드 판독"),
    상기 판독된 코드를 처리하여서 제 1 처리된 코드 및 제 2 처리된 코드를 생성하고,
    상기 제 1 처리된 코드 및 상기 제 2 처리된 코드에 기초하여서 상기 이벤트의 발생을 추론하는
    로직을 더 포함하는
    비트 포이즈닝 장치.
  5. 제 4 항에 있어서,
    상기 판독된 코드를 처리하여서 제 1 처리된 코드 및 제 2 처리된 코드를 생성하는 상기 로직은, 상기 판독된 코드를 디코딩하여서 디코딩된 판독 코드를 생성하고, 상기 디코딩된 판독 코드에 대해서 코드 체킹을 수행하고, 상기 판독 코드에 대해서 코드 체킹을 수행하는 로직을 포함하는
    비트 포이즈닝 장치.
  6. 제 5 항에 있어서,
    상기 제 1 처리된 코드 및 상기 제 2 처리된 코드에 기초하여서 상기 이벤트의 발생을 추론하는 상기 로직은, 보정 가능한 코드를 식별하고, 상기 보정 가능한 코드의 이벤트 비트를 판독하여서 상기 이벤트의 발생 및 미발생 중 하나를 판정하는 로직을 포함하는
    비트 포이즈닝 장치.
  7. 복수의 프로세서와,
    상기 복수의 프로세서에 접속된(coupled), 공유되는 메모리와,
    상기 복수의 프로세서에 접속되며 메모리 컨트롤러 로직을 구비한 집적 회로를 포함하며,
    상기 메모리 컨트롤러 로직은,
    공유되는 메모리 내에 저장될 캐시 라인에 대응하는 ECC(에러 보정 코드)를 생성하고,
    이벤트의 발생 및 미발생 중 하나를 판정하여서 이벤트 판정 결과를 생성하고,
    상기 이벤트 판정 결과에 따라 상기 ECC를 처리하고,
    상기 처리된 ECC 및 대응하는 캐시 라인을 상기 메모리 내에 저장하기 위한 로직을 포함하며,
    상기 이벤트 비트는, 특정 프로세서가 상기 캐시 라인에 대응하는 데이터를 캐시한 것을 나타내는 동적 비트 위치와, 복수의 프로세서 중 임의의 하나가 상기 데이터를 캐시한 것을 나타내는 정적 비트 위치 중 하나에 대응하는
    비트 포이즈닝 시스템.
  8. 제 7 항에 있어서,
    상기 대응하는 캐시 라인은 상기 복수의 프로세서 중 하나의 프로세서에 의해서 저장되도록 요청되며,
    상기 이벤트의 발생 및 미발생 중 하나를 판정하는 상기 메모리 컨트롤러 로직은, 상기 하나의 프로세서가 데이터를 자신의 로컬 캐시에 추가적으로 캐시했는지 여부를 판정하는 로직을 포함하는
    비트 포이즈닝 시스템.
  9. 삭제
  10. 제 7 항에 있어서,
    상기 메모리 컨트롤러 로직은 또한,
    상기 메모리로부터 상기 코드를 판독하고("코드 판독"),
    상기 판독된 코드를 처리하여서 복수의 처리된 코드를 생성하며,
    상기 복수의 처리된 코드 중 하나로부터 보정 가능한 코드를 식별하고,
    보정 가능한 코드가 식별되면, 상기 보정 가능한 코드의 이벤트 비트를 판독하여서 상기 이벤트의 발생 및 미발생 중 하나를 판정하는
    비트 포이즈닝 시스템.
  11. 제 10 항에 있어서,
    상기 판독된 코드를 처리하여서 복수의 처리된 코드를 생성하는 상기 메모리 컨트롤러 로직은, 상기 판독된 코드를 디코딩하여서 디코딩된 판독 코드를 생성하고, 상기 디코딩된 판독 코드에 대해서 코드 체킹을 수행하고, 상기 판독 코드에 대해서 코드 체킹을 수행하는 로직을 포함하는
    비트 포이즈닝 시스템.
  12. 제 11 항에 있어서,
    상기 판독된 코드를 디코딩하여서 디코딩된 판독 코드를 생성하는 상기 로직은, 포이즌 마스크의 반전(inverse)을 상기 판독된 코드에 적용하는 것을 포함하는
    비트 포이즈닝 시스템.
  13. 적어도 하나의 비트를 포이즈닝하는 방법으로서,
    공유되는 메모리 내에 저장될 캐시 라인에 대응하는 코드를 생성하는 단계와,
    이벤트의 발생 및 미발생 중 하나를 판정하여 이벤트 판정 결과를 생성하는 단계와,
    이벤트 비트를 갖는 상기 코드를 상기 이벤트 판정 결과 및 상기 이벤트 비트에 따라 처리하는 단계 - 상기 처리는 상기 이벤트 비트가 상기 이벤트 판정 결과와 대응하는지 여부를 판정하는 것에 의하며, 상기 이벤트 비트가 상기 이벤트 판정 결과에 대응하지 않는 경우, 상기 코드를 인코딩하여 상기 이벤트 판정 결과에 대응하는 포이즌 비트를 생성함 - 와,
    상기 코드를 메모리 내에 저장하는 단계를 포함하되,
    상기 이벤트 비트는 특정 프로세서가 상기 캐시 라인에 대응하는 데이터를 캐시한 것을 나타내는 동적 비트 위치와, 복수의 프로세서 중 임의의 하나가 상기 데이터를 캐시한 것을 나타내는 정적 비트 위치 중 하나에 대응하는
    비트 포이즈닝 방법.
  14. 삭제
  15. 제 13 항에 있어서,
    상기 메모리로부터 상기 코드를 판독하는("코드 판독") 단계와,
    복수의 처리된 코드를 생성하기 위하여 상기 판독된 코드를 처리하는 단계와,
    상기 복수의 처리된 코드 중 하나로부터 보정 가능한 코드를 식별하는 단계와,
    보정 가능한 코드가 식별되면, 상기 보정 가능한 코드의 이벤트 비트를 판독하여 상기 이벤트의 발생 및 미발생 중 하나를 판정하는 단계를 더 포함하는
    비트 포이즈닝 방법.
  16. 제 15 항에 있어서,
    상기 판독된 코드를 처리하는 단계는,
    상기 판독된 코드를 디코딩하는 단계와,
    판독된 코드에 대해서 코드 체킹을 수행하여서 제 1 처리된 코드를 생성하는 단계와,
    상기 판독된 코드에 대해서 코드 체킹을 수행하여서 제 2 처리된 코드를 생성하는 단계를 포함하는
    비트 포이즈닝 방법.
  17. 적어도 하나의 비트를 포이즈닝하는 인스트럭션을 저장한 머신 판독가능 저장 매체로서,
    상기 인스트럭션은, 머신에 의해서 실행되는 경우,
    공유되는 메모리 내에 저장될 캐시 라인에 대응하는 코드를 생성하는 것과,
    이벤트의 발생 및 미발생 중 하나를 판정하여 이벤트 판정 결과를 생성하는 것과,
    이벤트 비트를 갖는 상기 코드를 상기 이벤트 판정 결과 및 상기 이벤트 비트에 따라 처리하는 것 - 상기 처리는 상기 이벤트 비트가 상기 이벤트 판정 결과와 대응하는지 여부를 판정하는 것에 의하며, 상기 이벤트 비트가 상기 이벤트 판정 결과에 대응하지 않는 경우, 상기 코드를 인코딩하여 상기 이벤트 판정 결과에 대응하는 포이즌 비트를 생성함 - 과,
    상기 코드를 메모리 내에 저장하는 것을 수행하도록 하며,
    상기 이벤트 비트는 특정 프로세서가 상기 캐시 라인에 대응하는 데이터를 캐시한 것을 나타내는 동적 비트 위치와, 복수의 프로세서 중 임의의 하나가 상기 데이터를 캐시한 것을 나타내는 정적 비트 위치 중 하나에 대응하는
    머신 판독가능 저장 매체.
  18. 삭제
  19. 제 17 항에 있어서,
    머신에 의해서 실행되는 경우,
    상기 메모리로부터 상기 코드를 판독하는("코드 판독") 것과,
    복수의 처리된 코드를 생성하기 위하여 상기 판독된 코드를 처리하는 것과,
    상기 복수의 처리된 코드 중 하나로부터 보정 가능한 코드를 식별하는 것과,
    보정 가능한 코드가 식별되면, 상기 보정 가능한 코드의 상기 이벤트 비트를 판독하여서 상기 이벤트의 발생 및 미발생 중 하나를 판정하는 것을 수행하는 인스트럭션을 더 포함하는
    머신 판독가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 판독된 코드를 처리하는 것을 수행하는 상기 인스트럭션은 머신에 의해서 실행되는 경우,
    상기 판독된 코드를 디코딩하는 것과,
    판독된 코드에 대해서 코드 체킹을 수행하여서 제 1 처리된 코드를 생성하는 것과,
    상기 판독된 코드에 대해서 코드 체킹을 수행하여서 제 2 처리된 코드를 생성하는 것을 수행하는 인스트럭션을 포함하는
    머신 판독가능 저장 매체.
KR1020117007706A 2008-12-29 2009-12-10 비트 포이즈닝 장치, 방법, 시스템 및 제품 KR101425704B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/317,849 2008-12-29
US12/317,849 US8438452B2 (en) 2008-12-29 2008-12-29 Poison bit error checking code scheme
PCT/US2009/067530 WO2010077768A2 (en) 2008-12-29 2009-12-10 Poison bit error checking code scheme

Publications (2)

Publication Number Publication Date
KR20110050720A KR20110050720A (ko) 2011-05-16
KR101425704B1 true KR101425704B1 (ko) 2014-08-07

Family

ID=42286404

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117007706A KR101425704B1 (ko) 2008-12-29 2009-12-10 비트 포이즈닝 장치, 방법, 시스템 및 제품

Country Status (6)

Country Link
US (1) US8438452B2 (ko)
EP (1) EP2370899B1 (ko)
JP (1) JP5507573B2 (ko)
KR (1) KR101425704B1 (ko)
CN (1) CN102171658B (ko)
WO (1) WO2010077768A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3010598B1 (fr) * 2013-09-06 2017-01-13 Sagem Defense Securite Procede de gestion de coherence de caches
US20190065314A1 (en) * 2016-03-22 2019-02-28 Hewlett Packard Enterprise Development Lp Memory
KR102410021B1 (ko) * 2017-11-20 2022-06-21 에스케이하이닉스 주식회사 메모리 컨트롤러 및 메모리 모듈을 갖는 메모리 시스템 및 그 메모리 시스템에서의 데이터 처리 방법
US11775382B2 (en) 2020-12-09 2023-10-03 Micron Technology, Inc. Modified parity data using a poison data unit
US11416331B2 (en) 2020-12-09 2022-08-16 Micron Technology, Inc. Modified checksum using a poison data pattern
US20240061741A1 (en) * 2020-12-26 2024-02-22 Intel Corporation Adaptive error correction to improve system memory reliability, availability, and serviceability (ras)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040163030A1 (en) * 2003-02-13 2004-08-19 International Business Machines Corporation Iterative error correcting system
US20070050688A1 (en) * 2005-08-30 2007-03-01 Larry Jay Thayer Memory correction system and method
US20080046792A1 (en) * 2006-08-18 2008-02-21 Fujitsu Limited Node device, control device, control method and control program

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0327433A (ja) * 1989-06-23 1991-02-05 Nec Corp 電子ディスク装置
JPH1050004A (ja) * 1996-07-29 1998-02-20 Nec Ibaraki Ltd 磁気ディスク制御装置
JPH113288A (ja) * 1997-06-10 1999-01-06 Nec Software Ltd キャッシュメモリ装置およびキャッシュメモリの障害制御方法
US6405322B1 (en) * 1999-04-13 2002-06-11 Hewlett-Packard Company System and method for recovery from address errors
US6594785B1 (en) * 2000-04-28 2003-07-15 Unisys Corporation System and method for fault handling and recovery in a multi-processing system having hardware resources shared between multiple partitions
US6622268B2 (en) * 2000-11-29 2003-09-16 Intel Corp Method and apparatus for propagating error status over an ECC protected channel
US6886116B1 (en) * 2001-07-26 2005-04-26 Emc Corporation Data storage system adapted to validate error detection logic used in such system
US20030126409A1 (en) * 2001-12-28 2003-07-03 Toni Juan Store sets poison propagation
JP2003216596A (ja) * 2002-01-17 2003-07-31 Hitachi Ltd マルチプロセッサシステム及びノード装置
US7401269B2 (en) * 2003-05-10 2008-07-15 Hewlett-Packard Development Company, L.P. Systems and methods for scripting data errors to facilitate verification of error detection or correction code functionality
JP4007281B2 (ja) 2003-08-27 2007-11-14 日本電気株式会社 ディレクトリ情報記憶システムおよびメモリコントローラ
US7353433B2 (en) * 2003-12-08 2008-04-01 Intel Corporation Poisoned error signaling for proactive OS recovery
JP4723265B2 (ja) * 2005-03-17 2011-07-13 富士通株式会社 エラー検出訂正装置の制御方法、エラー検出訂正装置、情報処理システム、エラー検出訂正装置の制御プログラム、データ処理装置
CN100364305C (zh) * 2005-06-03 2008-01-23 重庆邮电学院 工业控制网络的信息安全方法及安全功能块
TW200801513A (en) 2006-06-29 2008-01-01 Fermiscan Australia Pty Ltd Improved process
US7500170B2 (en) 2006-08-14 2009-03-03 Motorola, Inc. Method and apparatus for error detection in a data block
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
KR100842680B1 (ko) * 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US20090019306A1 (en) * 2007-07-11 2009-01-15 Herbert Hum Protecting tag information in a multi-level cache hierarchy
US8201069B2 (en) * 2008-07-01 2012-06-12 International Business Machines Corporation Cyclical redundancy code for use in a high-speed serial link

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040163030A1 (en) * 2003-02-13 2004-08-19 International Business Machines Corporation Iterative error correcting system
US20070050688A1 (en) * 2005-08-30 2007-03-01 Larry Jay Thayer Memory correction system and method
US20080046792A1 (en) * 2006-08-18 2008-02-21 Fujitsu Limited Node device, control device, control method and control program

Also Published As

Publication number Publication date
KR20110050720A (ko) 2011-05-16
WO2010077768A3 (en) 2010-09-16
JP5507573B2 (ja) 2014-05-28
EP2370899B1 (en) 2016-11-02
CN102171658A (zh) 2011-08-31
CN102171658B (zh) 2015-02-11
WO2010077768A2 (en) 2010-07-08
US20100169739A1 (en) 2010-07-01
JP2012508425A (ja) 2012-04-05
US8438452B2 (en) 2013-05-07
EP2370899A4 (en) 2012-08-29
EP2370899A2 (en) 2011-10-05

Similar Documents

Publication Publication Date Title
JP4643479B2 (ja) アクセス制御装置、アクセス制御システム、プロセッサ、アクセス制御方法およびメモリアクセス制御方法
US7761779B2 (en) Access control apparatus, access control system, processor, access control method, memory access control apparatus, memory access control system, and memory access control method
US8468416B2 (en) Combined group ECC protection and subgroup parity protection
US7761780B2 (en) Method, apparatus, and system for protecting memory
KR101425704B1 (ko) 비트 포이즈닝 장치, 방법, 시스템 및 제품
US7437597B1 (en) Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines
US8589763B2 (en) Cache memory system
JP2772391B2 (ja) 不良データアルゴリズム
JP2005302027A (ja) 自律的エラー回復方法、システム、キャッシュ、およびプログラム・ストレージ装置(メモリ装置のための自律的エラー回復のための方法、システム、およびプログラム)
JP2006260139A (ja) エラー検出訂正装置の制御方法、エラー検出訂正装置、情報処理システム、エラー検出訂正装置の制御プログラム、データ処理装置
US20200201559A1 (en) Semiconductor device, memory controller, and memory accessing method
JP5213061B2 (ja) ミラーリング制御装置、ミラーリング制御回路、ミラーリング制御方法およびそのプログラム
KR20210116342A (ko) 데이터 처리 디바이스 및 데이터 처리 방법
JP2007257628A (ja) 記憶された情報データの読み取りのための誤り訂正と誤り検出の方法およびそのための記憶制御ユニット
CN114116530B (zh) 存储控制方法及装置、数据处理方法及装置以及存储介质
CN116932424B (zh) 一种基于ecc检测的缓存访问方法、装置、介质和设备
JP2891897B2 (ja) ストアインキャッシュの障害処理システム
JP2011054221A (ja) 記憶装置及び電子機器
JP2010140132A (ja) メモリシステム及びメモリコントローラ
JP2000099410A (ja) メモリ制御回路と情報処理装置
JPH07129466A (ja) 階層記憶装置
JPH11282763A (ja) 記憶装置監視装置および方法
JPH09204363A (ja) データメモリ装置
JPH04130550A (ja) メモリ装置
JPH04324545A (ja) バッファ記憶制御方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E902 Notification of reason for refusal
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190627

Year of fee payment: 6