KR100572800B1 - 에러 체크 방법, 에러 정정 코드 체커 및 이를 포함하는 컴퓨터 시스템 - Google Patents

에러 체크 방법, 에러 정정 코드 체커 및 이를 포함하는 컴퓨터 시스템 Download PDF

Info

Publication number
KR100572800B1
KR100572800B1 KR1020040017576A KR20040017576A KR100572800B1 KR 100572800 B1 KR100572800 B1 KR 100572800B1 KR 1020040017576 A KR1020040017576 A KR 1020040017576A KR 20040017576 A KR20040017576 A KR 20040017576A KR 100572800 B1 KR100572800 B1 KR 100572800B1
Authority
KR
South Korea
Prior art keywords
bit
data
ecc
error
bits
Prior art date
Application number
KR1020040017576A
Other languages
English (en)
Other versions
KR20040090410A (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 KR20040090410A publication Critical patent/KR20040090410A/ko
Application granted granted Critical
Publication of KR100572800B1 publication Critical patent/KR100572800B1/ko

Links

Images

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16FSPRINGS; SHOCK-ABSORBERS; MEANS FOR DAMPING VIBRATION
    • F16F9/00Springs, vibration-dampers, shock-absorbers, or similarly-constructed movement-dampers using a fluid or the equivalent as damping medium
    • F16F9/32Details
    • F16F9/34Special valve constructions; Shape or construction of throttling passages
    • 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
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16FSPRINGS; SHOCK-ABSORBERS; MEANS FOR DAMPING VIBRATION
    • F16F9/00Springs, vibration-dampers, shock-absorbers, or similarly-constructed movement-dampers using a fluid or the equivalent as damping medium
    • F16F9/32Details
    • F16F9/3207Constructional features
    • F16F9/3235Constructional features of cylinders
    • F16F9/3242Constructional features of cylinders of cylinder ends, e.g. caps
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명은 캐시 또는 시스템 버스와 같은 컴퓨터 장치의 ECC 보호 메카니즘에서 에러를 정정하는 방법에 관한 것으로, 이 방법은 비트 수 N을 갖는 데이터를 에러 정정 코드(ECC) 행렬에 제공하여 에러 검출 신드롬(an error detection syndrome)을 생성하는 단계를 포함하는데, 여기서 ECC 행렬은 다수의 행과 열을 가지며 소정 열은 상기 각 데이터 비트에 대응하고, ECC 행렬에 대한 인코딩이 N 비트 에러 정정 및 (N-1) 비트 에러 검출을 가능하게 하도록 선택된 비트가 ECC 행렬 내에서 각 행 및 각 열을 따라서 설정된다. 예시적인 실시예에서, ECC 행렬은 자신의 각 행에서 설정된 홀수 개의 비트를 갖는다. 메모리 장치와 같은 ECC 보호 메카니즘의 경우에, 이러한 특성은 저장된 데이터에서의 하드 에러를 정정하기 위한 반전(inversion)의 사용을 용이하게 한다. 에러가 검출되어 정정된 후에, 정정된 데이터는 반전되고 이어서 캐시 어레이에 재기록된다. 이러한 엔트리를 위한 대응하는 반전 비트는 현재 저장된 데이터는 반전되었음을 표시하도록 설정된다. 이후에, 그 데이터는 그 어레이로부터 다시 판독되고 만일에 상기 에러가 하드 에러(스턱 비트)로 인한 것이었다면 (상기 반전 비트에 의해 표시된 극성(polarity)을 제공한 후에는) 상기 반전이 결함을 가지고 있는 비트 값을 스턱 값으로 변경하였기 때문에 그 데이터는 정확한 데이터로 된다. 상기 반전 비트는 데이터 그 자체의 일부일 수 있다. 이 경우에, ECC 행렬 내의 열들 중 하나의 열이 반전 비트에 대응하고, ECC 행렬의 상기 열 내의 각 비트는 설정된다. 시스템 버스와 같은 ECC 보호 메카니즘의 경우에는, 일단 스턱 비트 상태가 검출되면, 전송 디바이스가 데이터를 전송하기로 결정하며 이로써 그 비트에 대한 그 데이터의 극성은 와이어 상의 스턱 값의 로직 레벨와 일치하도록 항상 플립된다. 이러한 방식은 심지어 스턱 비트가 존재하는 경우에도 완벽한 단일 비트 정정 및 이중 비트 검출을 가능하게 한다.

Description

에러 체크 방법, 에러 정정 코드 체커 및 이를 포함하는 컴퓨터 시스템 {APPLICATION OF SPECIAL ECC MATRIX FOR SOLVING STUCK BIT FAULTS IN AN ECC PROTECTED MECHANISM}
도 1은 주 메모리 장치 및 다중 메모리 캐시를 포함하는 메모리 계층 구조를 도시하는 통상적인 컴퓨터 시스템의 블록도,
도 2는 인 라인 에러 정정 코드(in-line error correction code)(ECC) 회로를 갖는 세트 연관 캐시 메모리(a set-associative cache memory)의 하이 레벨 도면,
도 3a는 48 비트 값을 체크하기 위해 종래 기술에 따라 설계된 ECC 행렬의 도면,
도 3b는 반전 비트(an inversion bit)를 포함하는 48 비트 값에 적용되는 본 발명에 따라 구성된 신규한 ECC 행렬의 도면,
도 4는 캐시 어드레스 디렉토리에서의 하드 에러를 해결하기 위해 반전 비트를 사용하는 레벨 3(L3) 캐시에서의 ECC 회로의 일 실시예의 하이 레벨 도면,
도면의 주요 부분에 대한 부호의 설명
70 : 종래 기술에 따른 ECC 행렬,
72 : 본 발명에 따른 ECC 행렬.
관련 출원에 대한 교차 참조
본 출원은 2003년 4월 8일에 동시에 미국 출원되어 공동 계류 중인 미국 특허 출원 "CACHE DIRECTORY ARRAY RECOVERY MECHANISM TO SUPPORT SPECIAL ECC STUCK BIT MATRIX"(IBM 참조 번호 AUS920030121US1)와 관련된다.
본 발명은 전반전으로 데이터 처리 시스템에 관한 것이며, 특히 컴퓨터 시스템 내에서 가령 캐시 메모리, 버스 또는 통신 링크, 칩 인터페이스 또는 에러 정정 코드(error correction code)(ECC)가 사용될 수 있는 다른 위치에서 에러 데이터 비트를 정정하는 방법 및 시스템에 관한 것이다.
통상적인 컴퓨터 시스템(10)의 기본 구조가 도 1에 도시된다. 컴퓨터 시스템(10)은 하나 이상의 처리 장치(12a,12b)를 가지며 이 처리 장치들은 (가령, 디스플레이 모니터, 키보드 및 영구 저장 장치와 같은) 입출력 장치(14), 프로그램 인스트럭션을 수행하기 위해 상기 처리 장치에 의해서 사용되는 (가령, RAM과 같은) 메모리 장치(16) 및 제일 먼저 컴퓨터의 전원이 켜질 때 (통상적으로는 영구 메모 리 장치인) 주변 장치들 중 하나로부터 운영 체제를 탐색 및 로딩하는 펌웨어(18)를 포함하여 다양한 주변 장치에 접속된다. 처리 장치(12a,12b)는 일반화된 상호접속부 또는 버스(20)를 포함하여 다양한 수단에 의해 주변 장치들과 통신한다. 컴퓨터 시스템(10)은 가령 모뎀 또는 프린터로의 접속을 위한 직렬, 병렬 범용 버스 포트와 같은 도시되지 않은 수 많은 추가 구성 요소를 가지고 있다. 본 기술 분야의 당업자는 도 1의 블록도에 도시된 구성 요소들과 함께 사용될 수 있는 다른 구성 요소들이 존재함을 이해할 것이다. 가령, 디스플레이 어댑터는 비디오 디스플레이 모니터를 제어하는 데 사용될 수 있으며 메모리 제어기는 메모리(16)를 액세스하는 데 사용될 수 있다. 또한, 입출력 장치(14)를 버스(20)로 직접 접속시키는 대신, 이 입출력 장치는 버스(20)로 접속된 입출력 브리지에 접속된 제 2 차 입출력 버스에 접속될 수도 있다. 컴퓨터는 두 개 이상의 처리 장치를 가질 수 있다.
대칭형 다중 프로세서(SMP) 컴퓨터에서, 모든 처리 장치들은 일반적으로 동일한데, 즉 이들 모두는 공통 인스트럭션 및 프토토콜 세트 또는 서브세트를 사용하여 동작하며 일반적으로 동일한 아키텍쳐를 갖는다. 통상적인 아키텍쳐가 도 1에 도시된다. 처리 장치는 다수의 레지스터 및 실행 유닛을 갖는 프로세서 코어(22)를 포함하며 상기 실행 유닛은 프로그램 인스트럭션을 실행하여 컴퓨터를 동작시킨다. 예시적인 처리 장치는 IBM사에 의해 제공되는 PowerPCTM 프로세서이다. 이 처리 장치는 또한 고속 메모리 장치를 사용하여 구현될 수 있는 인스트럭 션 캐시(24) 및 데이터 캐시(26)와 같은 하나 이상의 캐시를 가질 수도 있다. 이 캐시들은 통상적으로 프로세서에 의해 반복적으로 액세스되는 값을 임시적으로 저장하는 데 사용되며 이로써 메모리(16)로부터 상기 값을 로딩하는 데 필요한 시간을 단축시킴으로써 처리 속도를 증가시킨다. 이 캐시들은 단일 집적 칩(28) 상의 프로세서 코어와 통합적으로 패키징될 때에 "온 보드(on-board)"로서 지칭된다. 각 캐시는 프로세서 코어와 캐시 메모리 간의 데이터 전달을 관리하는 캐시 제어기(도시되지 않음)와 연결되어 있다.
처리 장치(12)는 캐시(30)가 온 보드(레벨 1) 캐시(24,26)를 지원하기 때문에 레벨 2(L2)로서 지칭되는 캐시(30)와 같은 추가 캐시를 포함할 수 있다. 달리 말하면, 캐시(30)는 메모리(16)와 온 보드 캐시 사이의 중간 매체로서 기능하며 온 보드 캐시가 저장할 수 있는 것보다 더 많은 양의 정보(인스트럭션 및 데이터)를 저장할 수 있지만 이 경우에는 액세스 시간이 보다 길어진다. 가령, 캐시(30)는 256 또는 512 킬로바이트의 저장 용량을 갖는 칩일 수 있으며 프로세서는 64 킬로바이트의 총 저장 용량을 갖는 온 보드 캐시를 갖는 IBM사의 PowerPCTM 604 시리즈 프로세서일 수 있다. 캐시(30)가 버스(20)에 접속되며 메모리(16)로부터의 정보를 프로세서 코어(22) 내부로 로딩하는 것은 모두가 다 통상적으로 캐시(30)를 통해서 이루어진다. 도 1은 2 레벨만을 갖는 캐시 계층 구조를 도시하였지만, 상호접속된 캐시들의 레벨이 많이 존재하는 다중 레벨 캐시 계층 구조가 제공될 수도 있다.
캐시는 다양한 인스트럭션 및 데이터 값을 개별적으로 저장할 수 있는 수 많은 블록을 갖는다. 임의의 캐시 내의 블록은 "세트" 또는 "합동 클래스(congruence class)"로 지칭되는 블록 그룹들로 분할된다. 세트는 소정 메모리 블록이 그 내에 상주할 수 있는 캐시 블록들의 집합이다. 임의의 소정 메모리 블록에 대해, 캐시 내에서는 사전설정된 맵핑 함수에 따라서 그 블록이 맵핑될 수 있는 고유한 세트가 존재한다. 세트 내의 블록의 개수는 그 캐시의 연관 정도(associativity)로 지칭되는데, 가령 2 웨이 세트 연관(2-way set associative)은 임의의 소정 메모리 블록에 대해 그 캐시 내에는 상기 메모리 블록이 맵핑될 수 있는 두 개의 블록이 존재함을 의미하며 한편 주 메모리 내의 몇 개의 상이한 블록들은 임의의 소정 세트로 맵핑될 수 있다. 1 웨이 세트 연관 캐시는 직접 맵핑되는데 즉 특정 메모리 블록을 포함할 수 있는 오직 한 개의 캐시 블록만이 존재한다. 만일 메모리 블록이 임의의 캐시 블록을 점유할 수 있고 즉 하나의 합동 클래스가 존재하고 어드레스 태그가 그 메모리 블록의 전체 어드레스이다면, 캐시는 그 전체가 연관된 것으로 말해질 수 있다.
예시적인 캐시 라인(블록)은 어드레스 태그 필드, 상태 비트 필드, 포용도 비트 필드(inclusivity bit field) 및 실제 인스트럭션 또는 데이터를 저장하는 값 필드(valule field)를 포함한다. 상태 비트 필드 및 포용도 비트 필드는 (그 캐시 내에 저장된 값의 유효성을 표시하기 위해) 다중프로세서 컴퓨터 시스템에서 캐시 코히어런시(cache coherency)을 유지하는 데 사용된다. 어드레스 태그는 대응하는 메모리 블록의 전체 어드레스의 서브세트이다. 어드레스 태그 필드 내부의 태그들 중 하나와 입력 어드레스 간의 비교 정합은 캐시 "히트(hit)"를 나타낸다. 캐시 내의 어드레스 태그들의 모든 집합(및 때때로 상태 비트 필드 및 포용도 비트 필드)은 디렉토리로서 지칭되며 모든 값 필드들의 집합은 캐시 엔트리 어레이(cache entry array)이다.
소정 캐시에 대한 합동 클래스 내의 모든 블록들이 차 있고 상기 차 있는 합동 클래스로 맵핑하는 메모리 위치로의 "기록" 또는 "판독" 요청을 상기 캐시가 수신하면, 상기 캐시는 현재 그 클래스 내에 있는 블록들 중 하나를 축출(evict)해야 한다. 상기 캐시는 축출될 블록을 본 기술 분야의 당업자에게 잘 알려진 다수의 방법(LRU(least recently used) 선택, 임의 선택, 의사 LRU(pseudo-LRU) 선택 등) 중 하나에 의해서 선택한다. 선택된 블록 내의 데이터가 수정된다면, 그 데이터는 메모리 계층 구조에서 (레벨 1 캐시 또는 온 보드 캐시의 경우에) 다른 캐시이거나 (도 1의 2 레벨 아키텍쳐에서 도시된 바와 같이 레벨 2 캐시의 경우에) 주 메모리일 수 있는 다음의 최저 레벨로 기록된다. 포용(inclusion) 원리에 의해, 계층 구조의 보다 아래의 레벨은 기록된 수정된 데이터를 보유할 수 있는 블록을 이미 가지고 있다. 그러나, 선택된 블록 내의 데이터가 수정되지 않는다면, 그 블록은 간단히 폐기되고 데이터는 그 계층 구조의 다음의 최저 레벨로 기록되지 않는다. 계층 구조의 한 레벨로부터 블록을 제거하는 이러한 프로세스는 "축출(eviction)" 프로세스로서 알려져 있다. 이러한 축출 프로세스로 인해서, 그 캐시는 축출된 블록의 복제 블록을 더 이상 보유할 수 없다.
도 2는 전술한 캐시 구조 및 축출 프로세스를 도시한다. 캐시(40)(레벨 1 또는 하부 레벨)는 캐시 디렉토리(42), 캐시 엔트리 어레이(44), LRU 어레이(46) 및 특정 합동 클래스로부터 축출될 블록을 선택하는 제어 로직(48)을 포함한다. 도시된 캐시(40)는 8 웨이 세트 연관 정도를 가지며 이로써 디렉토리(42), 캐시 엔트리 어레이(44) 및 LRU 어레이(46) 각각은 참조 부호(50)로서 표시된 특정 합동 클래스에 대해 8 개의 블록으로 된 특정 세트를 갖는다. 달리 말하자면, 캐시 디렉토리(42) 내의 합동 클래스의 특정 멤버는 합동 글래스(50)에 도시된 "X"로서 표시된 캐시 엔트리 어레이(44) 내의 합동 클래스의 특정 멤버 및 LRU 어레이(46) 내의 합동 클래스의 특정 멤버와 연관된다.
디렉토리(42) 내의 각 블록들은 에러 정정 코드(ECC) 회로(52)를 통해 제어 로직에 접속된다. (스트레이 방사(stray radiation) 또는 정전기 방전과 같은) 소프트 에러(soft error) 또는 (결함성 셀과 같은) 하드 에러(hard error)로 인해서 소정 캐시 블록 내의 비트는 정확하지 않는 정보를 포함할 수 있다. ECC는 적합한 데이터 스트림을 재구성하는 데 사용될 수 있다. 특정 블록 내의 두 개 이상의 비트가 유효하지 않아서 ECC가 적합한 데이터 스트림이 실제로 무엇이어야 하는지 결정할 수 없지만 적어도 오류 상태는 검출될 수 있는 경우에는 몇몇 ECC는 오직 단일 비트 에러만을 검출 및 정정하는 데 사용될 수 있다. 다른 ECC는 너무 정교하여서 심지어 이중 비트 에러도 검출 및 정정할 수 있다. 그러나, 이러한 에러는 정정하는 데 노력이 많이 들지만 설계 상의 절충은 이중 비트 에러가 발생할 때에 머신을 정지시키는 것이다. 오직 디렉토리(42)만이 ECC 회로와 함께 도시되었지만, 이 ECC 회로는 캐시 엔트리 어레이(44)와 같은 다른 어레이와도 함께 유사하게 사용될 수 있다.
(정정된) 메모리 블록 어드레스에 대응하는 값을 갖는 ECC 회로(52)의 출력은 각각의 비교기(54)에 접속되는데 이 비교기 각각은 또한 요청된 메모리 블록의 어드레스도 수신한다. 요청된 메모리 블록의 유효한 복제 블록이 합동 클래스(50) 내에 존재한다면, 비교기들(54) 중 오직 하나만이 활성 신호를 출력할 것이다. 비교기(54)의 출력은 멀티플렉서(56) 및 OR 게이트(58)에 접속되며 이 OR 게이트의 출력은 멀티플렉서(56)를 제어한다. 캐시 히트가 발생하면(요청된 어드레스가 캐시 디렉토리(42) 내의 어드레스와 정합되면), OR 게이트(58)는 멀티플렉서(56)를 활성화시켜서 합동 클래스의 어느 멤버가 상기 어드레스와 일치하는지를 표시하는 신호를 제공한다. 이 신호는 캐시 엔트리 어레이(44) 내의 엔트리들 각각으로부터 입력을 수신하는 다른 멀티플렉서(60)를 제어한다. 이러한 방식으로, 디렉토리 내에서 캐시 히트가 발생하면, 대응하는 값이 멀티플렉서(60)를 통해 버스(62)로 제공된다.
캐시 미스(a chche miss)가 발생하고 특정 합동 클래스(50) 내의 모든 블록들이 메모리 블록의 유효한 복제 블록을 이미 가지고 있다면, 합동 클래스(50) 내의 캐시 블록 중 하나는 축출되기 위해 선택되어야 한다. 이러한 선택은 LRU 어레이(46) 내의 합동 클래스를 위한 LRU 비트를 사용함으로써 수행된다. 상기 클래스 내의 각 캐시 블록에 대해, 다수의 LRU 비트가 존재할 수 있다. 가령, 8 웨이 세트 연관 캐시의 경우 블록 마다 3 개의 LRU 비트가 존재한다. 그 클래스 내의 각 블록으로부터의 LRU 비트는 8 비트 출력을 갖는 디코더(64)에 입력으로서 제 공되는데 상기 출력은 어느 블록이 축출되어야 하는지를 표시한다. 상기 출력은 멀티플렉서(56)에 제공된다. 이러한 방식으로, OR 게이트(58)가 활성 상태가 아니면, 멀티플렉서(56)는 디코더(64)의 상기 출력을 기반으로 하여 사용될 캐시 블록의 표시 사항을 제공한다.
상술된 ECC 회로는 메모리 셀에서 발생하는 소프트 에러를 처리하는 한가지 수단이다. 하드 에러를 처리할 수 있는 다른 방식은 어레이(가령, 디렉토리, LRU, 캐시) 내에 리던던시(redundancy)를 제공하는 것이다. 캐시 칩이 제조될 때에, 어레이들 각각 내에 어떠한 결함성 열 라인 또는 행 라인이 존재하는지의 여부를 결정하기 위해 캐시 칩이 테스트된다(여기서, 열 라인 및 행 라인은 전체 캐시, 디렉토리, LRU에 대해서 테스트된다). 만일 어레이에 결함이 있다면, 자신이 결함이 있다는 것을 표시하기 위해서 퓨즈가 영구적으로 끊어진다. 각 액세스된 어드레스가 결함을 가지고 있는 어드레스와 일치하는지를 알기 위해서 각 액세스된 어드레스에 대해 어레이 내부에서 비교가 수행된다. 만일 일치한다면, 적절한 로직이 여분의 비트 라인(열) 및 워드 라인(행)인, 칩 상에 형성된 다수의 여분의 열 라인 및 행 라인 중 하나로 상기 어드레스를 재경로지정한다. 여분의 비트 라인 및 워드 라인의 개수는 결함 레이트 및 요구된 칩 수율에 따라 변할 수 있다. 낮은 결함 레이트를 갖는 (큰 물리적 크기를 갖는) 캐시의 경우 매 256 개의 규칙적인 라인에 대해 두 개의 여분의 라인이 제공되며 큰 결함 레이트를 갖는 (작은 물리적 크기를 갖는) 캐시의 경우 매 8 개의 규칙적인 라인에 대해 두 개의 여분의 라인이 제공될 수 있다.
칩 제조 및 컴퓨터 구성 기술이 발전함에 따라서, L2 캐시 및 L3 캐시의 크기가 증가하고 있으며 이는 보다 큰 온 칩 디렉토리 및 온 칩 (또는 오프 칩) 데이터 캐시 엔트리 어레이를 필요로 한다. 보다 크기가 크며 보다 밀도가 큰 어레이는 전체 칩/시스템의 신뢰성을 저하시키는데 그 이유는 제조 시에 또는 필드 내에서 결함이 발생할 수 있는 확률이 증가하기 때문이다. 이러한 대형 디렉토리/데이터 캐시의 신뢰성을 증가시키기 위해, 가령 인 라인 패리티(in-line parity) 또는 ECC 검출/정정과 같은 수 많은 방법들이 통상적으로 사용되어왔지만, 이러한 방법들은 몇몇 단점 또는 한계를 가지고 있다. 소프트 에러(즉, 단속적 고장)는 디렉토리 내의 데이터를 복구 및 재기록하는 ECC 회로를 사용하여 정정될 수 있지만, 이 기술은 캐시 디렉토리 비트가 하이 또는 로우 상태로 스턱(stuck)되어 버린 경우인 하드 에러를 해결하지 못한다. 인-라인 ECC 정정은 이러한 스턱 에러를 정정하는 데 사용될 수 있지만 이 기술은 각 액세스마다 정정이 필요하기 때문에 어레이로의 액세스 시간을 증가시키며 에러 정정 능력의 일부분을 반복적으로 소비한다. 여분의 캐시 라인을 사용하게 되면 이러한 하드 에러를 부분적으로는 해결할 수 있지만 이러한 여분의 캐시 라인을 갖는 리던던시 구조는 칩 또는 시스템 보드 상에서 상당한 공간을 차지 하기 때문에 추가의 비용을 필요로 한다. 또한, 수 많은 결함을 정정하는 데 있어서 이러한 리던던시 능력은 한계를 가지고 있다. 또한, 테스트 후에 발생하는 하드 에러는 이러한 여분의 라인을 사용하여 정정될 수 없다. 이러한 하드 타입 에러가 발생할 경우에, 통상적인 ECC가 회로가 데이터를 복구 및 재기록하려고 하면 시스템은 반복적으로 그 에러를 정정하려고 시도하지만 결국 실패로 돌아간다. 이러한 상황에서, 전체 에러 정정 및 검출 자원들이 보유되어야 한다면, 머신은 복구될 수 없어서 그의 동작이 정지되고 자신은 복구되어야 하며 이는 사용자의 시간과 비용을 소비하게 된다.
전술한 측면으로 볼 때, 캐시와 같은 메모리 디바이스에서 하드 에러를 검출 및 정정할 수 있는 개선된 방법을 제공할 필요가 있다. 만일 이 방법이 디렉토리 액세스 시간을 필요로 하기 때문에 시스템 성능을 저하시키는 리던던시 회로 또는 인 라인 정정을 사용하지 않고도 구현될 수 있다면 더욱 유리하다.
본 발명의 목적은 컴퓨터 시스템을 위한 개선된 메모리 구조물, 특히 캐시 메모리를 제공하는 것이다.
본 발명의 다른 목적은 에러 정정 코드(ECC)를 사용하는 개선된 캐시 메모리를 제공하는 것이다.
본 발명의 또 다른 목적은 컴퓨터 시스템 내의 캐시 메모리 또는 시스템 버스에서의 에러를 검출 및 정정하며 저속의 인 라인 정정을 필요로 하지 않고 하드 에러(스턱 비트:stuck bit) 상태를 해결할 수 있는 개선된 방법 및 시스템을 제공하는 것이다.
이러한 목적들은 컴퓨터 시스템의 데이터 비트에서의 에러를 정정하는 방법에 의해 성취되는데, 이 방법은 비트 수 N을 갖는 데이터를 에러 정정 코드(ECC) 행렬에 제공하여 에러 검출 신드롬(an error detection syndrome)을 생성하는 단계를 포함하며, 여기서 ECC 행렬은 다수의 행과 열을 가지며 소정 열은 상기 각 데이터 비트에 대응하고, ECC 행렬에 대한 인코딩이 N 비트 에러 정정 및 (N-1) 비트 에러 검출을 가능하게 하도록 선택된 비트가 ECC 행렬 내에서 각 행 및 각 열을 따라서 설정된다. 이렇게 생성된 ECC 검출 신드롬은 데이터 처리 시스템의 위치로부터 판독된 데이터에서 에러를 검출하려 한다. 예시적인 실시예에서, ECC 행렬은 자신의 각 행에서 설정된 홀수 개의 비트를 갖는다. 이러한 특성은 저장된 데이터에서의 하드 에러를 정정하기 위한 반전(inversion)의 사용을 용이하게 한다. 에러가 검출되어 정정된 후에, 정정된 데이터는 반전되고 이어서 저장 장치 또는 전송 매체에 재기록된다. 이러한 엔트리를 위한 대응하는 반전 비트는 현재 저장된 데이터는 반전되었음을 표시하도록 설정된다. 이후에, 그 데이터는 저장 장치 또는 전송 매체로부터 다시 판독되고 만일에 상기 에러가 하드 에러(스턱 비트)로 인한 것이었다면 (상기 반전 비트에 의해 표시된 극성(polarity)을 제공한 후에는) 상기 반전이 결함을 가지고 있는 비트 값을 스턱 값으로 변경하였기 때문에 그 데이터는 정확한 데이터로 된다. 상기 반전 비트는 데이터 그 자체의 일부일 수 있다. 이 경우에, ECC 행렬 내의 열들 중 하나의 열이 반전 비트에 대응하고, ECC 행렬의 상기 열 내의 각 비트는 설정된다. 이 행렬은 버스 또는 통신 링크 또는 칩 인터페이스를 포함하여 ECC를 사용하는 컴퓨터 시스템의 임의의 위치에 적용될 수 있으며 캐시 메모리와 같은 메모리 디바이스에서는 특히 유용하다. 데이터를 갖는 시스템 버스 상에 반전 비트를 포함함으로써, 시스템 버스는 그 데이터의 극성을 반전시켜서 그 버스 상에서 알려진 스턱 비트를 보상할 수 있다. 특정 구성을 갖는 ECC 행렬은 심지어 에러 반전 비트의 효과로 인해 그 데이터의 모든 비트가 에러를 가지고 있는 경우인, 에러가 (검출불가능한 에러를 생성하는) 반전 비트에서 발생하는 경우에도 그 에러의 검출 및 정정을 가능하게 한다. 본 발명에서 규정된 ECC 행렬은 반전 비트 그 자체 상의 에러를 포함하여 데이터 및 ECC 비트의 어떠한 에러도 정정 및 검출하게 한다. 이러한 기술로 인해서 시스템 버스는 스턱 비트가 존재하는 경우에도 전적인 ECC 보호를 보유할 수 있게 된다.
본 발명의 상술된 목적, 특징 및 장점과 다른 목적, 특징 및 장점은 다음의 상세한 설명 부분에서 분명해질 것이다.
또한, 본 발명의 목적, 특징 및 장점은 첨부 도면을 참조하게 되면 보다 양호하게 이해될 것이다.
전체 도면에서 동일한 참조 부호는 유사한 또는 동일한 항목을 표시한다.
배경 기술 부분에서 설명한 바와 같이, 통상적인 에러 정정 코드(ECC) 회로는 메모리 어레이(가령, 캐시) 또는 통신 링크(가령, 시스템 버스)와 같은 컴퓨터 장치에서 하드 에러(스턱 비트)를 어드레싱하는 데 부적합하다. 본 발명은 스턱 에러 디렉토리 어레이 상태를 복구하기 위해 특정 ECC 행렬을 사용하는 새로운 하드웨어 메카니즘을 통해서 스턱 비트 문제를 해결한다. 캐시 디렉토리 어드레스/태그 또는 시스템 버스 전송과 함께 포함되는 새로운 비트 및 저장된 정보의 상대적 극성을 표시하는 추가적인 반전 비트에 ECC 행렬이 인가된다. 다음의 상세한 설명은 L3 캐시 디렉토리 어레이에서 본 발명을 구현하지만 본 기술의 당업자는 본 발명이 값(프로그램 인스트럭션 또는 오퍼랜드 데이터)을 저장하는 다른 메모리 장치에도 동일하게 적용될 수 있음을 이해할 것이다.
도 3a는 41 데이터 비트 및 7 ECC 비트를 포함하는 48 비트 값에 대해 종래 기술에 따라 설계된 ECC 행렬(70)을 나타낸다. 이 행렬은 통상적인 방식으로 사용되어 임의의 에러에 대해 어드레스 태그를 체크한다. 모든 저장된 48 비트가 올바르다면, 도 3a의 ECC 행렬을 인가하는 것은 모두가 제로인 신드롬을 생성하며 이는 어떤 정정도 필요 없음을 표시한다. 48 비트 값이 XOR 방식으로 그 행렬의 7 개의 행 각각에 개별적으로 인가되어 각기 그 신드롬의 7 개의 비트를 산출한다. 오직 한 개의 비트에 에러가 존재한다면, 이러한 신드롬은 어느 비트가 에러를 가지고 있는지를 검출하는 데 사용된다. 이 최초의 ECC 행렬(70) 뿐만 아니라 단일 비트 정정/이중 비트 검출(SBC/DBC)을 감당하는 모든 통상적인 ECC 행렬에서, 정정이능한 비트임을 나타내는 표식을 규정하는 홀수 개의 비트 세트가 각 열 내에 존재한다. 몇몇 행들에는 홀수 개의 비트 세트가 존재하며 다른 나머지 행들에는 짝수 개의 비트 세트가 존재하는데 가령 행렬(70)에서 행 1 및 행 7에서는 각각 20 개의 비트 세트가 존재한다.
도 3b는 본 발명에 따라 수정된 48 비트 값에 대한 전자 ECC 행렬(72)을 도시한다. 이 특정 구현에서, 수정 사항은 2 개이다. 먼저, 행렬(72)의 한 열은 저장된 데이터의 상대적 극성(액티브-로우 또는 액티브 하이:active-low or active high)을 표시하는 반전 비트에 대응하며 이 열은 종래 기술 행렬(70)과 다른 비트 세트를 갖는다. 가령, 반전 비트(IB)는 (데이터 비트 0 내지 40 중에서) 비트 번호 30이며 도 3b에서 도시된 바와 같이 행렬(72)의 대응하는 열 내의 모든 비트들이 설정되었다. 둘째로, 그 행렬 내의 각 수평 행이 홀수 개의 비트 세트를 가지기 때문에, 비트들이 행렬(72)의 다른 열에 부가되었다. 종래 기술 행렬(70)에 비해서, 이러한 특성을 낳기 위해 행렬(72)에 행해진 특정 변경은 (IB 열 30에 대해 모든 비트를 설정하는 것 이외에) 데이터 비트 1 및 2 에 대응하는 열에 대해서도 추가적으로 설정하는 것이다. 특히, 두 개의 추가 비트가 데이터 비 1에 대응하는 열 내에 설정되었으며 두 개의 추가 비트가 데이터 비트 2에 대응하는 열 내에 설정되었다. (종래 기술 행렬(70)에 대해) 수정된 열은 도 3b에서 * 으로 표시되었다. 본 기술 분야의 당업자는 홀수 개의 비트 세트를 갖는 모든 행에 대해 동일한 결과를 성취하기 위해 다른 설정 방식이 유사한 48 비트, 41 비트 행렬들에서 사용될 수 있음을 이해할 것이다. 반전 비트는 ECC 행렬에서 고려되지 말아야 한다.
이러한 신규한 행렬 구성 및 이와 관련된 신드롬 인코딩에 의해서, ECC 행렬(72)은 1. 단일 비트 에러 검출, 2. 다중 비트 에러 검출, 3. N 비트 에러 정정, 4 (N-1) 비트 에러 검출의 ECC에 의해 감당되는 "N" 비트 데이터 필드에 대한 특성을 획득한다. 이 특성 중 3. N 비트 에러 정정 및 4. (N-1) 비트 에러 검출은 그 데이터의 극성을 표시하는 반전 비트가 ECC 인코딩에 의해 저장되고 감당되기 때문에 유용하다. 극성 비트 상에 단일 비트 에러가 존재하면, ECC 체크 로직에 존재하는 데이터는 올바르지 않는 모든 "N" 비트를 가질 것이지만 이 행렬은 이 경우를 검출 및 정정하도록 구축된다. 이중 비트 에러가 발생하고 에러를 갖는 비트 중 하나이 비트가 극성 비트이면, 그 행렬은 이 특성을 검출하고 이 에러는 정정불가능한 이중 비트 에러임을 표시한다.
예시적인 실시예에서, 이 행렬은 41 개의 데이터 비트 dat(0:40) 및 7 개의 ECC 비트 ecc(0:6)을 포함하는 48 비트에 적용된다. 41 개의 데이터 비트는 dat(0:29)에 대응하는 30 개의 비트 L3 어드레스 태그 addr_tag(14:43), dat(30)에 대응하는 반전 비트 및 dat(31:40)에 대응하는 10 개의 비트의 캐시 상태 정보 (코히어런시 비트 및 포용도 비트:coherency bit and inclusivity bit) dir_state(0:9)를 포함한다. 따라서, 한 개의 극성 비트가 캐시 디렉토리 내의 각 엔트리에 제공된다. "블록 코드" 타입 ECC 인코딩이 이러한 특정 실례에서 사용된다.
어드레스 태그 및 상태 정보와 함께 L3 디렉토리 내에 저장되고(또한 ECC 비트가 감당하는) 극성 비트는 그 정보가 액티브 하이 극성 또는 액티브 로우 극성으로 L3 디렉토리 내에 저장되었는지의 여부를 표시한다. ECC 에러가 검출되면, 저장된 정보는 반대 극성으로 L3 디렉토리 내로 다시 기록될 수 있다. 이러한 방식으로, 스턱 비트 에러가 그 반대 극성과 일치할 것이며 후속 판독 시에 에러를 유발하지 않는다. 따라서, 이렇게 반전 비트를 사용함으로써 여분의 저장 셀 또는 인 라인 ECC 검출/정정을 사용하지 않고도 하드 에러에 의해 유발된 어떠한 단일 비트 에러도 해결할 수 있으며 필요하다면 반전 정정 절차를 신속하게 처리할 수 있다.
디렉토리 판독이 (머신 디스패치 시) 수행될 때, 가공되지 않은/체크되지 않은 L3 디렉토리 데이터가 "태그 비교" 파이프라인을 통해서 병렬로 ECC 체크 파이프라인으로 전송된다. 에러가 발견되면, 디렉토리 머신 디스패치 시퀀스(the directory machine dispatch sequence)가 ECC 에러로 인해서 정지되고 극성 에러 정정(PEC) 시퀀스가 그 디렉토리를 제어하며 이로써 정정된 데이터로 그 디렉토리를 복구/재기록할 수 있다. 한편, 이전에 정지된 디스패치가 다시 시도될 때에는 먼저 PEC 시퀀스가 단일 비트 "소프트" 정정이능한 에러(CE)를 복구하였다면 이 디스패치는 결국에는 성공할 것이다.
(어레이 셀이 0 또는 1에서 스턱되는) L3 디렉토리 내의 단일 스턱 비트 에러를 차단하기 위해서, PEC 시퀀스는 디렉토리 어레이로 기록된 데이터의 극성을 제어하는 추가 능력을 갖는다. PEC 시퀀스는 PEC 시퀀스 동안 dw_invert_bit를 어서트(assert)함으로써 어레이에 기록된 데이터를 반전시켜서 스턱 비트를 차단한다(스턱 값을 비트로 기록한다). 상기 dw_invert_bit는 디렉토리 내에 저장되어 그 데이터가 그 디렉토리 내에서 반전되었으며 이로써 판독 동안 반전되어야 하는지의 여부를 기록한다. 이 반전 비트가 디렉토리 내에 저장되기 때문에, 이중 비트 에러를 검출하고 상술된 바와 같이 반전 비트를 포함하여 모든 비트에 대해 단일 비트 정정을 제공하기 위해서 그 행렬이 개선된다. 상술된 수정 실시예에서, ECC 행렬(72)은 엔트리 상에서 dw_invert_bit를 포함하여 (소프트 에러 또는 스턱 비트로 인해 생성되는) 단일 비트 에러를 정정하며 상기 dw_invert_bit와 관련된 이중 비트 에러를 포함하여 엔트리 내의 임의의 두 개의 비트와 관련된 이중 비트 에러 검출을 제공할 것이다.
도 4는 8 웨이 세트 연관 L3 캐시를 위한 디렉토리에 적용된 도 3b의 ECC 행렬을 사용하는 흐름도이다. 캐시 디렉토리의 기록 회로(80)에서, 머신으로부터의 반전 비트 dw_invert_bit는 먼저 멀티플렉서(82)에 의해서 데이터와 결합된다. 결합된 데이터는 ECC 생성기(84)에 의해 사용되어 ECC 비트를 생성한다. ECC 비트의 생성은 ECC 행렬(72)이 기반으로 했던 것과 동일한 신드롬 인코딩을 사용한다. 데이터는 또한 반전 비트 dat(30)에 의해 제어되는 반전기(86)를 통과한다. 상기 머신에 의한 (즉, 하부 레벨 캐시 또는 주 메모리로부터의) 정상적인 직접 기록 동작이 반전 비트 dw_invert_bit를 0으로 기록한다. 반전 비트 및 ECC 비트를 포함하여 모든 데이터는 이어서 다른 멀티플렉서(88)와 결합되며 L3 디렉토리 어레이(92)로 최종적으로 기록되기 위해서 래치(90)로 전송된다.
반전 비트가 dat(0:29) 및 dat(31:40)이 기록되는 극성을 반전기(86)에 의해 제어할 때, dat(30) 및 ecc(0:6)의 극성은 반전기에 의해 영향을 받지 않는다. 반전 비트에 대응하는 열(열 30) 내의 모든 비트를 설정함으로써 ecc(0:6)의 극성은 ECC 행렬(72)을 통해 효과적으로 반전된다. 반전 비트 dw_invert_bit가 제로가 될 때에, dat(0:29) 및 dat(31:40)은 L3 디렉토리에 액티브 하이로서 기록된다. 반전 비트 dw_invert_bit가 1이 될 때에, dat(0:29) 및 dat(31:40)은 L3 디렉토리에 액티브 로우로서 기록된다.
데이터가 L3 디렉토리 어레이(92)로부터 판독되면, 이 데이터는 먼저 다른 래치(94)로 기록되며 이후에 dat(30)에 의해 제어되는 다른 반전기(96)를 통과한 다. AND 게이트(98)를 사용하여 dat(30)와 결합되는 모드 비트를 설정함으로써 반전이 디스에이블될 수 있다. 이제 적절하게 설정된 극성을 갖게 된 데이터는 신드롬 synd(0:6)를 생성하는 ECC 체커(100)에 전송된다. ECC 체커(100)는 XOR 회로로 하드 와이어(hard-wire)될 수 있는 ECC 행렬(72)을 사용한다. 데이터 및 신드롬은 래치(102) 및 멀티플렉서(104)에 기록된다. 신드롬은 디코더(106)에 의해 제어된다. "0000000" 신드롬은 데이터가 올바르다는 것을 (또는 적어도 어떠한 에러도 검출되지 않았음을) 표시한다. "1111111" 신드롬은 데이터가 반전 비트 상의 CE를 가짐을 표시한다. 디코더(106)는 신드롬이 특정 데이터 비트 n(dat(0:29,31:40))에 대해 단일 비트 에러를 표시할 때 개별적으로 활성 상태가 되는 일련의 출력 fix_dat(n)을 갖는다. 다른 출력 fix_invert은 신드롬이 "1111111"일 때에 활성 상태가 된다. 상기 fix_dat(n) 비트는 먼저 OR 게이트(108)에서 fix_invert 비트와 결합되며 이어서 XOR 게이트(110)를 사용하여 데이터 비트에 영향을 준다. 또한, 상기 fix_invert 비트는 XOR 게이트(112)에서 반전 비트 dat(30)에 인가된다. 이어서, 모든 데이터 비트 dat(0:40)는 출력 래치(114)로 전달된다.
모든 이중 비트 에러가 타당한 CE 신드롬과 일치하지 않는 신드롬(0:6)을 생성할 것이다. CE 경우에 대한 신드롬 synd(0:6) 값의 표식(signature)은 (모든 7 개의 비트 세트를 갖는 dw_invert_bit 상의 CE를 포함하여) 그들의 표식에서 홀수 개의 비트 세트를 가지며, 이중 비트 에러는 (상기 반전 비트 dw_invert_bit 그 자체가 관련되이 있는 경우를 포함하여) 짝수 개의 비트 세트를 갖는 신드롬 synd(0:6)를 생성한다. 사용자가 두 개의 CE 신드롬을 결합하여, 이로써 생성된 신드롬은 이중 비트 에러를 표시하는 짝수 개의 synd(0:6) 비트 세트를 가질 것이라는 특성을 ECC 행렬(72)이 갖는다.
본 발명이 특정 실시예를 참조하여 기술되었지만, 이 실시예는 본 발명을 한정하기 위한 것이 아니다. 따라서, 개시된 실시예들의 다양한 수정 및 변경 뿐만 아니라 본 발명의 다른 실시예들이 본 발명의 개시 내용을 참조하게 되면 분명해질 것이다. 가령, 상술된 실시예들은 ECC 행렬 및 반전 비트를 캐시 엔트리를 위한 어드레스 태그(즉, 캐시 디렉토리)에 인가하였지만, 이는 어드레스 태그가 가리키는 값(프로그램 인스트럭션 또는 오퍼랜드 데이터)을 보유하는 캐시 엔트리 어레이에도 적용될 수 있다. 상술된 행렬은 또한 시스템 버스를 포함하여 ECC 보호를 수행하는 시스템 내의 임의의 요소에 적용될 수 있다. 반전 비트를 시스템 버스에 인가하고 상술된 반전 기술을 사용함으로써, 시스템 버스는 스턱 비트가 존재하는 경우에도 스턱 비트 로직 레벨과 언제나 일치하도록 데이터를 반전시킴으로써 완벽한 ECC 보호를 유지할 수 있다. 그러므로, 상기 수정 및 변경은 첨부된 청구 범위에서 규정된 본 발명의 사상 및 범위 내에서 가능하다.
본 발명을 통해 컴퓨터 시스템 내의 캐시 메모리 또는 시스템 버스에서의 에러를 검출 및 정정하되 저속의 인 라인 정정을 필요로 하지 않고 하드 에러(스턱 비트:stuck bit) 상태를 해결할 수 있다.

Claims (15)

  1. 데이터 처리 시스템의 ECC 보호 메카니즘에서 에러를 체크하는 방법에 있어서,
    복수의 비트(N)를 갖는 데이터를 에러 정정 코드(ECC) 행렬에 제공하여 에러 검출 신드롬(an error detection syndrome)을 생성하는 단계와,
    상기 데이터 처리 시스템의 한 위치로부터 판독된 데이터에서 적어도 하나의 에러를 검출하기 위해 상기 에러 검출 신드롬을 분석하는 단계를 포함하되,
    상기 ECC 행렬은 다수의 행과 열을 가지며, 소정 열은 상기 각 데이터 비트에 대응하고, 상기 ECC 행렬에 대한 인코딩이 N 비트 에러 정정 및 (N-1) 비트 에러 검출을 가능하게 하도록 선택된 비트들이 상기 ECC 행렬 내에서 상기 각 행 및 상기 각 열을 따라서 설정되는
    에러 체크 방법.
  2. 제 1 항에 있어서,
    홀수 개의 비트가 상기 ECC 행렬의 각 행에서 설정되도록 상기 ECC 행렬 내의 비트들을 선택적으로 설정하는 단계를 더 포함하는
    에러 체크 방법.
  3. 제 1 항에 있어서,
    상기 ECC 행렬에 대한 인코딩이 단일 비트 에러 검출을 또한 가능하게 하며,
    상기 에러 검출 신드롬 분석 단계는 상기 데이터에서 오직 하나의 에러만을 검출하는 단계인
    에러 체크 방법.
  4. 제 1 항에 있어서,
    상기 에러 검출 신드롬 분석 단계는 다수의 정정불가능한 에러를 검출하는 단계인
    에러 체크 방법.
  5. 제 1 항에 있어서,
    상기 에러 검출 신드롬을 사용하여 정정된 데이터를 생성하는 단계와,
    상기 정정된 데이터가 상기 데이터 처리 시스템의 상기 위치에 다시 기록될 때에 상기 정정된 데이터를 반전시키는 단계와,
    현재 저장된 데이터가 반전된 상태임을 표시하도록 반전 비트를 설정하는 단계를 포함하는
    에러 체크 방법.
  6. 제 5 항에 있어서,
    상기 반전 비트는 상기 데이터의 일부이며,
    상기 ECC 행렬 내의 상기 열 중의 하나는 상기 반전 비트에 대응하고,
    상기 에러 체크 방법은 상기 반전 비트에 대응하는 상기 ECC 행렬의 상기 열 내의 각 비트를 설정하는 단계를 더 포함하는
    에러 체크 방법.
  7. 제 6 항에 있어서,
    상기 에러 검출 신드롬 분석 단계는 상기 반전 비트 상의 정정이능한 에러를 검출하는 단계인
    에러 체크 방법.
  8. 에러 정정 코드 체커(an error correction code checker)에 있어서,
    복수의 비트(N)를 갖는 데이터를 체크하고 상기 데이터에 대한 에러 검출 신드롬을 생성하도록 구성된 전자 에러 정정 코드(an electronic ECC) 행렬을 포함하되,
    상기 ECC 행렬은 다수의 행과 열을 가지며 소정 열은 상기 각 데이터 비트에 대응하고, 상기 ECC 행렬에 대한 인코딩이 N 비트 에러 정정 및 (N-1) 비트 에러 검출을 가능하게 하도록 선택된 비트들이 상기 ECC 행렬 내에서 상기 각 행 및 상기 각 열을 따라서 설정되는
    에러 정정 코드 체커.
  9. 제 8 항에 있어서,
    상기 데이터가 임의의 에러를 포함하는지의 여부를 판정하도록 상기 에러 검출 신드롬을 분석하는 신드롬 디코더(syndrome decoder)를 더 포함하는
    에러 정정 코드 체커.
  10. 제 9 항에 있어서,
    상기 신드롬 디코더는 또한 상기 데이터 내에서 발견된 어떠한 단일 에러도 정정하는
    에러 정정 코드 체커.
  11. 제 8 항에 있어서,
    상기 ECC 행렬 내의 상기 비트는 홀수 개의 비트가 상기 ECC 행렬의 각 행 내에 설정되도록 설정되는
    에러 정정 코드 체커.
  12. 제 8 항에 있어서,
    상기 ECC 행렬에 대한 인코딩은 또한 단일 비트 에러 검출을 가능하게 하는
    에러 정정 코드 체커.
  13. 제 8 항에 있어서,
    상기 ECC 행렬의 상기 열 중 하나는 상기 데이터의 극성을 표시하는 반전 비트에 대응하는
    에러 정정 코드 체커.
  14. 제 13 항에 있어서,
    상기 반전 비트에 대응하는 상기 열 내의 각 비트가 설정되는
    에러 정정 코드 체커.
  15. 컴퓨터 시스템에 있어서,
    프로그램 인스트럭션을 처리하는 수단과,
    상기 처리 수단에 접속된 메모리 장치를 포함하되,
    상기 메모리 장치는 제 8 항 내지 제 14 항 중 어느 한 항에 따른 에러 정정 코드 체커를 포함하는
    컴퓨터 시스템.
KR1020040017576A 2003-04-17 2004-03-16 에러 체크 방법, 에러 정정 코드 체커 및 이를 포함하는 컴퓨터 시스템 KR100572800B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/418,549 2003-04-17
US10/418,549 US7069494B2 (en) 2003-04-17 2003-04-17 Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism

Publications (2)

Publication Number Publication Date
KR20040090410A KR20040090410A (ko) 2004-10-22
KR100572800B1 true KR100572800B1 (ko) 2006-04-19

Family

ID=33159133

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040017576A KR100572800B1 (ko) 2003-04-17 2004-03-16 에러 체크 방법, 에러 정정 코드 체커 및 이를 포함하는 컴퓨터 시스템

Country Status (5)

Country Link
US (1) US7069494B2 (ko)
JP (1) JP4019061B2 (ko)
KR (1) KR100572800B1 (ko)
CN (1) CN1290012C (ko)
TW (1) TWI269155B (ko)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7650624B2 (en) * 2002-10-01 2010-01-19 Koplar Interactive Systems International, L.L.C. Method and apparatus for modulating a video signal with data
US7793020B1 (en) 2002-11-27 2010-09-07 International Business Machines Corporation Apparatus and method to read information from an information storage medium
US7149947B1 (en) * 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US7191379B2 (en) * 2003-09-10 2007-03-13 Hewlett-Packard Development Company, L.P. Magnetic memory with error correction coding
US7075583B2 (en) * 2003-10-20 2006-07-11 Koplar Interactive Systems International, L.L.C. Methods for improved modulation of video signals
US7305638B1 (en) * 2004-06-04 2007-12-04 Pdf Solutions, Inc. Method and system for ROM coding to improve yield
US7471569B2 (en) * 2005-06-15 2008-12-30 Infineon Technologies Ag Memory having parity error correction
US7533321B2 (en) * 2005-09-13 2009-05-12 International Business Machines Corporation Fault tolerant encoding of directory states for stuck bits
US7689891B2 (en) * 2005-09-13 2010-03-30 International Business Machines Corporation Method and system for handling stuck bits in cache directories
CN1779833B (zh) * 2005-09-27 2011-05-18 威盛电子股份有限公司 计算错误检测码的方法
US7954034B1 (en) * 2005-09-30 2011-05-31 Emc Corporation Method of and system for protecting data during conversion from an ECC protection scheme to a parity protection scheme
JP2008217857A (ja) * 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
CN101183565B (zh) * 2007-12-12 2011-02-16 深圳市硅格半导体有限公司 存储介质中数据校验方法
US8245105B2 (en) * 2008-07-01 2012-08-14 International Business Machines Corporation Cascade interconnect memory system with enhanced reliability
US8139430B2 (en) * 2008-07-01 2012-03-20 International Business Machines Corporation Power-on initialization and test for a cascade interconnect memory system
US8082474B2 (en) * 2008-07-01 2011-12-20 International Business Machines Corporation Bit shadowing in a memory system
US8082475B2 (en) * 2008-07-01 2011-12-20 International Business Machines Corporation Enhanced microprocessor interconnect with bit shadowing
US7895374B2 (en) * 2008-07-01 2011-02-22 International Business Machines Corporation Dynamic segment sparing and repair in a memory system
US20100005335A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation Microprocessor interface with dynamic segment sparing and repair
US8234540B2 (en) 2008-07-01 2012-07-31 International Business Machines Corporation Error correcting code protected quasi-static bit communication on a high-speed bus
US8201069B2 (en) * 2008-07-01 2012-06-12 International Business Machines Corporation Cyclical redundancy code for use in a high-speed serial link
US7979759B2 (en) * 2009-01-08 2011-07-12 International Business Machines Corporation Test and bring-up of an enhanced cascade interconnect memory system
US20100180154A1 (en) * 2009-01-13 2010-07-15 International Business Machines Corporation Built In Self-Test of Memory Stressor
KR20100098969A (ko) * 2009-03-02 2010-09-10 삼성전자주식회사 에러 정정 코드들의 신뢰성을 향상시킬 수 반도체 장치, 이를 포함하는 반도체 시스템, 및 에러 정정 코드 처리 방법
US8230495B2 (en) * 2009-03-27 2012-07-24 International Business Machines Corporation Method for security in electronically fused encryption keys
US8661315B2 (en) * 2009-10-07 2014-02-25 Mediatek Inc. Efuse devices, correction methods thereof, and methods for operating efuse devices
JP5600963B2 (ja) * 2010-02-22 2014-10-08 富士通株式会社 不揮発性記憶装置、及びデータ初期化方法
US8640005B2 (en) * 2010-05-21 2014-01-28 Intel Corporation Method and apparatus for using cache memory in a system that supports a low power state
US8352839B2 (en) 2010-06-11 2013-01-08 International Business Machines Corporation Encoding data into constrained memory
WO2012029137A1 (ja) * 2010-08-31 2012-03-08 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US8990660B2 (en) 2010-09-13 2015-03-24 Freescale Semiconductor, Inc. Data processing system having end-to-end error correction and method therefor
US9112536B2 (en) * 2011-01-31 2015-08-18 Everspin Technologies, Inc. Method of reading and writing to a spin torque magnetic random access memory with error correcting code
US8566672B2 (en) 2011-03-22 2013-10-22 Freescale Semiconductor, Inc. Selective checkbit modification for error correction
US8607121B2 (en) 2011-04-29 2013-12-10 Freescale Semiconductor, Inc. Selective error detection and error correction for a memory interface
US8990657B2 (en) 2011-06-14 2015-03-24 Freescale Semiconductor, Inc. Selective masking for error correction
US8839025B2 (en) 2011-09-30 2014-09-16 Oracle International Corporation Systems and methods for retiring and unretiring cache lines
US8972649B2 (en) * 2012-10-05 2015-03-03 Microsoft Technology Licensing, Llc Writing memory blocks using codewords
US9274884B2 (en) * 2012-10-10 2016-03-01 HGST Netherlands B.V. Encoding and decoding data to accommodate memory cells having stuck-at faults
US9070483B2 (en) * 2012-10-10 2015-06-30 HGST Netherlands B.V. Encoding and decoding redundant bits to accommodate memory cells having stuck-at faults
US8812934B2 (en) * 2012-12-12 2014-08-19 HGST Netherlands B.V. Techniques for storing bits in memory cells having stuck-at faults
DE102013211077B4 (de) * 2013-06-13 2015-09-24 Infineon Technologies Ag Verfahren zum Testen eines Speichers und Speichersystem
KR102098247B1 (ko) 2013-11-25 2020-04-08 삼성전자 주식회사 메모리 시스템에서 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치
US9171624B2 (en) 2013-12-20 2015-10-27 Apple Inc. Management of data storage in analog memory cells using a non-integer number of bits per cell
US9582354B2 (en) * 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
CN105097039B (zh) * 2014-04-30 2019-07-30 中芯国际集成电路制造(上海)有限公司 存储阵列的操作方法和存储器
US9772899B2 (en) * 2015-05-04 2017-09-26 Texas Instruments Incorporated Error correction code management of write-once memory codes
US10176040B2 (en) * 2016-04-05 2019-01-08 Micron Technology, Inc. Error correction code (ECC) operations in memory
US10120749B2 (en) * 2016-09-30 2018-11-06 Intel Corporation Extended application of error checking and correction code in memory
KR102457144B1 (ko) 2017-04-18 2022-10-20 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10606689B2 (en) * 2017-04-18 2020-03-31 SK Hynix Inc. Memory system and operating method thereof
TWI631570B (zh) * 2017-09-04 2018-08-01 威盛電子股份有限公司 錯誤檢查糾正解碼方法與裝置
DE102018122826A1 (de) 2017-09-21 2019-03-21 Samsung Electronics Co., Ltd. Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür
JP2019109806A (ja) * 2017-12-20 2019-07-04 ルネサスエレクトロニクス株式会社 データ処理装置及びデータ処理方法
CN110716824B (zh) * 2018-07-13 2023-08-15 华邦电子股份有限公司 编码方法及使用所述编码方法的存储器存储装置
US11016843B2 (en) 2018-12-06 2021-05-25 Micron Technology, Inc. Direct-input redundancy scheme with adaptive syndrome decoder
CN111008175A (zh) * 2019-09-19 2020-04-14 江西精骏电控技术有限公司 一种excel转dbc文件的生成方法及装置
US10998081B1 (en) * 2020-02-14 2021-05-04 Winbond Electronics Corp. Memory storage device having automatic error repair mechanism and method thereof
US11057060B1 (en) * 2020-03-23 2021-07-06 Sage Microelectronics Corporation Method and apparatus for matrix flipping error correction
US11509333B2 (en) * 2020-09-25 2022-11-22 Advanced Micro Devices, Inc. Masked fault detection for reliable low voltage cache operation
KR20230030795A (ko) 2021-08-26 2023-03-07 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 장치

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3576982A (en) * 1968-12-16 1971-05-04 Ibm Error tolerant read-only storage system
US3582878A (en) * 1969-01-08 1971-06-01 Ibm Multiple random error correcting system
US3768071A (en) * 1972-01-24 1973-10-23 Ibm Compensation for defective storage positions
US3949208A (en) * 1974-12-31 1976-04-06 International Business Machines Corporation Apparatus for detecting and correcting errors in an encoded memory word
US4045779A (en) * 1976-03-15 1977-08-30 Xerox Corporation Self-correcting memory circuit
JPS5381036A (en) * 1976-12-27 1978-07-18 Hitachi Ltd Error correction-detection system
JPS592057B2 (ja) * 1979-02-07 1984-01-17 株式会社日立製作所 エラ−訂正・検出方式
JPS6051749B2 (ja) * 1979-08-31 1985-11-15 富士通株式会社 エラ−訂正方式
US4479214A (en) * 1982-06-16 1984-10-23 International Business Machines Corporation System for updating error map of fault tolerant memory
US4458349A (en) * 1982-06-16 1984-07-03 International Business Machines Corporation Method for storing data words in fault tolerant memory to recover uncorrectable errors
US4535455A (en) * 1983-03-11 1985-08-13 At&T Bell Laboratories Correction and monitoring of transient errors in a memory system
JPS59185098A (ja) * 1983-04-04 1984-10-20 Oki Electric Ind Co Ltd 自己診断回路内蔵型半導体メモリ装置
US4608687A (en) * 1983-09-13 1986-08-26 International Business Machines Corporation Bit steering apparatus and method for correcting errors in stored data, storing the address of the corrected data and using the address to maintain a correct data condition
US4604751A (en) * 1984-06-29 1986-08-05 International Business Machines Corporation Error logging memory system for avoiding miscorrection of triple errors
US4661955A (en) * 1985-01-18 1987-04-28 Ibm Corporation Extended error correction for package error correction codes
US4888773A (en) * 1988-06-15 1989-12-19 International Business Machines Corporation Smart memory card architecture and interface
US5228046A (en) * 1989-03-10 1993-07-13 International Business Machines Fault tolerant computer memory systems and components employing dual level error correction and detection with disablement feature
US5274646A (en) * 1991-04-17 1993-12-28 International Business Machines Corporation Excessive error correction control
US5267242A (en) * 1991-09-05 1993-11-30 International Business Machines Corporation Method and apparatus for substituting spare memory chip for malfunctioning memory chip with scrubbing
JP3070025B2 (ja) * 1992-02-04 2000-07-24 富士通株式会社 半導体記憶装置
US5644583A (en) * 1992-09-22 1997-07-01 International Business Machines Corporation Soft error correction technique and system for odd weight row error correction codes
US5535226A (en) * 1994-05-31 1996-07-09 International Business Machines Corporation On-chip ECC status
US5632013A (en) * 1995-06-07 1997-05-20 International Business Machines Corporation Memory and system for recovery/restoration of data using a memory controller
US5857069A (en) * 1996-12-30 1999-01-05 Lucent Technologies Inc. Technique for recovering defective memory
US6675341B1 (en) * 1999-11-17 2004-01-06 International Business Machines Corporation Extended error correction for SEC-DED codes with package error detection ability

Also Published As

Publication number Publication date
KR20040090410A (ko) 2004-10-22
US7069494B2 (en) 2006-06-27
JP2004318870A (ja) 2004-11-11
JP4019061B2 (ja) 2007-12-05
TW200508850A (en) 2005-03-01
CN1290012C (zh) 2006-12-13
CN1538298A (zh) 2004-10-20
TWI269155B (en) 2006-12-21
US20040210814A1 (en) 2004-10-21

Similar Documents

Publication Publication Date Title
KR100572800B1 (ko) 에러 체크 방법, 에러 정정 코드 체커 및 이를 포함하는 컴퓨터 시스템
US7272773B2 (en) Cache directory array recovery mechanism to support special ECC stuck bit matrix
US6480975B1 (en) ECC mechanism for set associative cache array
US7533321B2 (en) Fault tolerant encoding of directory states for stuck bits
US5267242A (en) Method and apparatus for substituting spare memory chip for malfunctioning memory chip with scrubbing
US6006311A (en) Dynamic updating of repair mask used for cache defect avoidance
KR101319670B1 (ko) 캐시 메모리 시스템 및 캐시 메모리 시스템의 제어 방법
US7353438B2 (en) Transparent error correcting memory
US8276039B2 (en) Error detection device and methods thereof
US8977820B2 (en) Handling of hard errors in a cache of a data processing apparatus
US6023746A (en) Dual associative-cache directories allowing simultaneous read operation using two buses with multiplexors, address tags, memory block control signals, single clock cycle operation and error correction
KR100273907B1 (ko) 컴퓨터에 의해 사용되는 캐쉬내의 결함을 제거하기 위한 방법
US20080181035A1 (en) Method and system for a dynamically repairable memory
US9146808B1 (en) Soft error protection for content addressable memory
US6085288A (en) Dual cache directories with respective queue independently executing its content and allowing staggered write operations
US5883904A (en) Method for recoverability via redundant cache arrays
EP2240856B1 (en) Error detector in a cache memory using configurable way redundancy
JPH0524540B2 (ko)
KR100297914B1 (ko) 스누핑장치를위한다중캐쉬디렉토리
US5867511A (en) Method for high-speed recoverable directory access
WO2000007107A1 (en) A method and apparatus for performing cache accesses
US7689891B2 (en) Method and system for handling stuck bits in cache directories
US6212616B1 (en) Even/odd cache directory mechanism
US6567952B1 (en) Method and apparatus for set associative cache tag error detection

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110302

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee