KR101188252B1 - 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한시스템 및 방법 - Google Patents

오류 검출 및 보정에 관련된 지연시간을 완화하기 위한시스템 및 방법 Download PDF

Info

Publication number
KR101188252B1
KR101188252B1 KR1020060001748A KR20060001748A KR101188252B1 KR 101188252 B1 KR101188252 B1 KR 101188252B1 KR 1020060001748 A KR1020060001748 A KR 1020060001748A KR 20060001748 A KR20060001748 A KR 20060001748A KR 101188252 B1 KR101188252 B1 KR 101188252B1
Authority
KR
South Korea
Prior art keywords
data
packet
data structure
error
correction
Prior art date
Application number
KR1020060001748A
Other languages
English (en)
Other versions
KR20060085172A (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 KR20060085172A publication Critical patent/KR20060085172A/ko
Application granted granted Critical
Publication of KR101188252B1 publication Critical patent/KR101188252B1/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
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

데이터 구조의 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한 시스템 및 방법이 개시된다. 이 시스템의 일 실시예는, 데이터 구조의 태그 부분에 기초하여 데이터 구조에 대한 요청에 관련된 응답 패킷을 구성하는 패킷 생성기를 포함할 수 있다. 이 시스템은 또한, 패킷 생성기에 의해 상기 응답 패킷을 구성하는 것과 병행하여 상기 데이터 구조의 오류를 검출하고 보정하는 오류 검출 및 보정(error detection and correction: EDC) 컴포넌트를 포함할 수 있다.
Figure R1020060001748
데이터 구조, 오류, 검출, 보정, 지연시간, 완화, 패킷

Description

오류 검출 및 보정에 관련된 지연시간을 완화하기 위한 시스템 및 방법 {SYSTEMS AND METHODS FOR MITIGATING LATENCY ASSOCIATED WITH ERROR DETECTION AND CORRECTION}
도 1은 데이터 구조(data structure)의 오류 검출 및 보정에 관련된 지연시간(latency)을 완화하기 위한 시스템의 일 실시예의 블록도.
도 2는 데이터 요청에 관련된 지연시간을 완화하기 위한 시스템의 일 실시예의 블록도.
도 3은 데이터 구조 요청(request)에 응답하여 데이터 패킷을 구성하고 송신하는 것에 불확실(speculative) 데이터 구조를 이용할 수 있는 시스템의 일 실시예의 블록도.
도 4는 데이터 구조의 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한 방법론의 일 실시예를 도시하는 도면.
도 5는 데이터 요청에 관련된 지연시간을 완화하기 위한 시스템의 일 실시예를 도시하는 도면.
도 6은 데이터 구조의 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한 방법론의 다른 실시예를 도시하는 도면.
도 7은 데이터 구조의 오류 검출 및 보정에 관련된 지연시간을 완화하기 위 한 방법론의 또 다른 실시예를 도시하는 도면.
전자적(electronic) 시스템에서 오류 부호(error code)는 데이터 오류를 검출 및/또는 보정하기 위해 일반적으로 사용된다. 오류 부호의 전형적인 일 용법은, 컴퓨터 시스템의 메모리에 저장된 데이터를 가지고 오류를 검출하고 보정하는 것이다. 예컨대, 데이터를 하나 이상의 메모리 장치에 저장하기에 앞서서, 오류 보정 비트 또는 체크 비트가 데이터에 대해 생성될 수 있다. 그 오류 보정 비트는 데이터에 덧붙여져서, 메모리에 저장되는 데이터 구조를 제공한다. 데이터가 하나 이상의 메모리 장치로부터 판독될 때, 체크 비트는 데이터 내의 오류를 검출 또는 보정하기 위하여 사용될 수 있다. 오류는, 예컨대 컴퓨터 시스템 내의 결점이 있는 컴포넌트 아니면 잡음에 의해 도입될 수 있다. 결점이 있는 컴포넌트는, 결점이 있는 메모리 장치, 또는 결점이 있는 핀과 같은 컴퓨터 시스템 내의 장치들 간의 결점이 있는 데이터 경로를 포함한다.
이들 오류에 관련된 효과를 완화하기 위해 오류 관리 기법들이 개발되어 왔다. 개인용 컴퓨터에 사용되는 간단한 기법은 패리티(parity) 검사로 알려져 있다. 패리티 검사는 한 조각의 데이터에 관련된 단일 비트를 이용하여, 데이터에 단일 비트 오류가 존재하는지 여부를 결정한다. 패리티 검사는 복수의 비트 오류를 검출할 수 없으며, 오류를 보정하기 위한 아무런 수단도 제공되지 않는다. 예 컨대 서버와 같은 더 복잡한 시스템은, 오류 보정 코드(error correction codes: ECCs)를 사용하여 어느 정도의 오류를 검출하고 보정한다. 하나의 오류 보정 코드(error correction code: ECC)는 한 조각의 데이터에 관련된 한 그룹의 비트들 또는 부호들로 구성된다. 통상적인 ECC 시스템은 64비트의 데이터 조각에 대해 8개의 ECC 비트(체크 비트, 보정 비트)를 사용할 수 있다. ECC 비트는, ECC 알고리즘이 단일 비트 오류를 검출 및 보정하거나 이중 비트 오류를 검출하기에 충분한 정보를 제공한다.
본 발명의 일 실시예는 데이터 구조의 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한 시스템을 포함할 수 있다. 이 시스템은, 데이터 구조의 태그 부분에 기초하여 데이터 구조에 대한 요청에 관련된 응답 패킷을 구성하는 패킷 생성기를 포함할 수 있다. 이 시스템은 또한, 패킷 생성기에 의해 응답 패킷을 구성하는 것과 병행하여 데이터 구조의 오류를 검출하고 보정하는 오류 검출 및 보정(error detection and correction: EDC) 컴포넌트를 포함할 수 있다.
다른 실시예는 메모리 시스템을 포함할 수 있다. 이 메모리 시스템은, 복수의 코드 워드로 형성된 데이터 구조에 관련된 소정의 코드 워드의 오류를 검출하고 보정하는 오류 검출 및 보정(error detection and correction: EDC) 컴포넌트, 그리고 복수의 코드 워드 중 제1 코드 워드에 존재하는 데이터 구조의 태그 부분에 기초하여 데이터 구조에 대한 요청에 관련된 응답 패킷을 구성하는 패킷 생성기를 포함할 수 있다. 이 메모리 시스템은 또한, 소정의 메모리 주소에 기초하여 데이 터 구조를 저장하고, 데이터 구조에 대한 요청에 응답하여 복수의 코드 워드를 EDC 컴포넌트로 제공하는, 복수의 메모리 장치를 포함할 수 있다. EDC 컴포넌트는 복수의 코드 워드를 순차적 방법으로 수신하고, 제1 코드 워드로부터 태그 영역의 사본을 전송하여 데이터 구조의 오류 검출 및 보정과 병행하여 패킷 생성기에 의해 응답 패킷을 구성하는 것을 조장한다.
또 다른 실시예는, 데이터 구조에 대한 요청에 응답하여 데이터 구조의 오류를 보정하는 시스템을 포함한다. 이 시스템은, 태그 부분을 포함하는 데이터 구조에 대해 오류 검출 및 보정을 수행하는 수단, 태그 부분에 기초하여 응답 패킷을 구성하도록 명령을 발행하는 수단, 그리고 데이터 구조에 대한 오류 검출 및 보정과 병행하여 발행 명령에 기초하여 응답 패킷을 구성하는 수단을 포함할 수 있다.
또 다른 실시예는, 데이터 구조의 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한 방법을 포함할 수 있다. 이 방법은, 태그 부분을 포함하는 데이터 구조에 대한 요청에 응답하여 데이터 구조를 제공하는 단계를 포함할 수 있다. 이 방법은 또한, 태그 부분에 기초하여 응답 패킷을 구성하는 단계, 그리고 응답 패킷을 구성하는 것과 병행하여 데이터 구조에 대해 오류 검출 및 보정을 수행하는 단계를 포함할 수 있다.
또 다른 실시예는, 데이터 요청에 관련된 지연시간을 완화하기 위한 방법을 포함할 수 있다. 이 방법은, 순차적인 순서로 데이터 구조를 형성하는 복수의 코드 워드를 제공하되, 제공되는 복수의 코드 워드 중에서 제1 코드 워드는 태그 부분을 포함하는 단계를 포함할 수 있다. 이 방법은 또한, 태그 부분에 기초하여 응 답 패킷의 헤더를 구성하는 단계, 헤더의 구성과 병행하여 순차적인 순서로 복수의 코드 워드에 대해 오류 검출 및 보정을 수행하는 단계, 그리고 오류가 없는 것으로 결정된 소정의 코드 워드에 관련된 데이터를 가지는 응답 패킷을, 후속 코드 워드에 대한 오류 검출 및 보정의 수행과 병행하여, 송신하는 단계를 포함할 수 있다.
본 개시는 일반적으로, 예컨대 데이터 구조에 대한 요청에 응답하여, 데이터 구조의 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한 시스템 및 방법에 대한 것이다. 오류 검출 및 보정은, 데이터 구조에서 비트 오류를 검출하고 보정하는 오류 보정 부호(error correction code: ECC) 기법을 채용할 수 있다. 본 발명의 시스템 및 방법은, 데이터 구조에 대해 오류 검출 및 보정이 수행되는 것과 병행하여, 보정되지 않은 데이터 구조의 적어도 일부분에 오퍼레이션(operation)을 수행한다. 보정되지 않은 또는 불확실(speculative) 데이터 구조는, 오류 검출 및 보정이 수행되지 않은 데이터 구조를 지칭한다. 오류 검출 및 보정에 의해 오류가 검출된다면, 보정되지 않은 데이터 구조에 대한 오퍼레이션은 정지되고 그 결과는 폐기된다. 이어서, 보정된 데이터에 대해 오퍼레이션이 수행된다. 오류가 검출되지 않는다면, 보정되지 않은 또는 불확실 데이터 구조에 대한 오퍼레이션이 계속되고, 이에 따라 데이터 구조에 대해 어떤 오퍼레이션을 수행하기에 앞서서 데이터 구조에 대해 오류 검출 및 보정을 수행하는 것에 관련된 지연시간 불이익(latency penalty)이 완화된다. 많은 시스템에서, ECC 오류는 상대적으로 드문 일이므로, 오류 검출 및 보정으로 인한 평균 지연시간 불이익은 거의 0에 근접할 수 있다.
도 1은 데이터 구조의 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한 시스템(10)을 도시한다. 시스템(10)은 데이터 구조에 오류 검출 및 보정을 수행하는 서버 또는 다른 컴퓨터 시스템의 부분이 될 수 있다. 시스템(10)은 오류 검출 및 보정(EDC) 컴포넌트(12), 캐시 일관성 제어기(cache coherency controller)(14), 패킷 생성기(16) 및 데이터 저장소 장치(18)를 포함한다. 데이터 구조에 대한 요청에 응답하여 데이터 구조가 EDC 컴포넌트(12)로 공급된다. 이러한 요청은, 시스템(10)에 관련된 프로세서로부터, 다중프로세서 시스템에서의 다른 프로세서로부터, 입출력 장치로부터, 또는 데이터 구조를 요청할 수 있는 다양한 다른 장치로부터일 수 있다. 데이터 구조는, 메모리로부터 또는 시스템(10)에 관련된 캐시로부터 판독된 캐시 라인(cache line)이 될 수 있다.
데이터 구조는 태그 부분, ECC 보정 비트 및 데이터 부분을 포함한다. 데이터 구조는 복수의 코드 워드(code word)로 이루어질 수 있어서, EDC 컴포넌트(12)가 순차적인 방법으로 이들 복수의 코드 워드의 각각에 대해 오류 검출 및 보정을 수행하도록 할 수 있다. 예컨대, 이들 복수의 코드 워드는, 각각의 코드 워드마다 24개의 체크 비트를 가지는 네 개의 288비트 코드 워드를 포함할 수 있다. 데이터 구조의 태그 부분은 제1 코드 워드에 존재한다. 태그 부분은, 데이터 구조의 최신 버전(up to date version) 또는 일관된 버전(coherent version)이 어디에 존재하는지 식별시킨다. 예컨대 태그 부분은, 데이터 구조가 일관된 버전이라는(예컨대, 메모리에 존재한다는) 표시(indication), 또는 일관된 버전이 시스템(10)에 관련된 캐시 또는 다중프로세서 시스템의 다른 프로세서에 관련된 다른 캐시에 존재한다는 표시를 제공할 수 있다.
일 실시예에서, 코드 워드는 144비트 부분으로서 EDC 컴포넌트(12)로 제공되어, 소정의 데이터 구조에 대한 요청에 응답하여 전체 데이터 구조가 예컨대 8 클록 사이클에 걸쳐 8개의 144비트 부분으로서 EDC 컴포넌트로 제공되도록 할 수 있다. EDC 컴포넌트(12)는 데이터 구조의 제1 코드 워드를 수신하고, 제1 코드 워드에 대해 오류 검출 및 보정을 시작하면서, 태그 부분의 사본을 캐시 일관성 제어기(14)로 포워딩한다. 태그 부분은 제1 코드 워드에 존재하며, 예컨대 제1 코드 워드의 처음 26비트가 될 수 있다. 캐시 일관성 제어기(14)는 태그를 채용하여, 구성할 패킷 타입을 결정한다. 예컨대, 데이터 구조의 일관된 버전이 메모리에 또는 시스템(10)에 관련된 캐시에 존재한다는 것을 태그 부분이 표시한다면, 데이터 구조에 존재하는 데이터의 사본을 송신할 데이터 패킷이 구성된다. 데이터 구조의 일관된 버전이 다른 엔티티 - 예컨대 다중프로세서 시스템에서의 다른 프로세서에 관련된 캐시와 같은 - 에 존재한다는 것을 태그 부분이 표시한다면, 데이터의 일관된 버전에 대한 요청을 제공하는 요청 패킷이 구성될 것이다. 예컨대, 다중프로세서 시스템에서, 패킷은, 데이터 구조의 일관된 버전에 대한 스누프(snoop) 요청 또는 데이터 구조의 일관된 버전에 대한 리콜(recall) 요청을 생성하는, 소스 스누프 패킷(source snoop packet)이 될 수 있다.
캐시 일관성 제어기(14)는 데이터 구조의 태그 부분을 분석하여, 데이터 구조 요청에 관련된 응답 패킷을 구성하도록 지시하는, 패킷 생성기(16)로의 명령을 생성한다. 실질적으로 동시에, EDC 컴포넌트(12)는, 코드 워드들에 대해 순차적으 로 오류 검출 및 보정을, 각각의 코드 워드에 관련된 해당 ECC 비트에 기초하여, 수행한다. 데이터 구조의 코드 워드들 각각에 관련된 데이터가 모두 데이터 저장소(18)로 로드될 때까지, 오류 검출 및 보정이 완료되자마자, 해당 코드 워드에 관련된 데이터가 데이터 저장소(18)로 로드된다. 데이터 저장소(18)는 캐시 일관성 제어기(14)에 의해 생성되고 있는 명령에 관련된 데이터의 사본을 보유한다. 대안적으로, EDC 컴포넌트(12)는 데이터를, 보정되지 않은 또는 불확실 데이터로서 데이터 저장소로 포워딩할 수 있다.
패킷 생성기(16)는 캐시 일관성 제어기(14)에 의해 생성된 명령에 기초하여 응답 패킷에 관련된 헤더를 구성한다. 응답 패킷이 요청 패킷이라면, 요청 패킷이 해결(resolve)될 때까지 데이터 구조에 관련된 데이터가 보유된다. 요청 패킷이 해결될 수 없다면, 데이터의 일관된 버전을 제공하기 위해 데이터 저장소(18) 내의 데이터 구조에 관련된 데이터가 채용된다. 요청 패킷이 해결될 수 있다면, 데이터 저장소(18) 내의 데이터 구조에 관련된 데이터는 오버라이트(overwrite) 될 수 있다. 응답 패킷이 데이터 패킷이라면, 데이터 구조에 관련된 데이터는 데이터 저장소(18)로부터 순차적으로 독출(retrieve)되어, 그 데이터가 EDC 컴포넌트(12)에 의해 올바른 것으로 결정되고나면 데이터 패킷에 관련된 헤더와 함께 송신될 수 있다.
EDC 컴포넌트(12)는 캐시 일관성 제어기(14) 및 패킷 생성기(16) 양쪽으로 불확실 상태 표시(speculative status indication)를 제공한다. 불확실 상태 표시는 데이터 구조에서 오류가 검출되었는지 아닌지 여부의 표시를 제공할 수 있다. 예컨대, 불확실 상태 표시는, 데이터 구조에 관련된 어느 코드 워드에서라도 오류가 검출되었는지 아닌지 여부의 표시를 제공할 수 있다. 어느 코드 워드에서든지 오류가 검출되었다면, 패킷 생성기(16)는 패킷의 구성을 중단하고, 보정된 데이터 구조에 기초하여 새로운 패킷을 구성한다. 대안적으로, 불확실 상태 표시는 각각의 코드 워드에 대하여 제공될 수 있다. 예컨대, 태그 부분을 포함하는 제1 코드 워드에서 오류가 검출된다면, 패킷 생성기(16)는 패킷의 구성을 중단한다. 이어서, 보정된 태그 부분을 가지는 보정된 데이터 구조에 기초하여 새로운 패킷이 구성된다. 데이터 패킷인 응답 패킷에 대해, 후속 코드 워드에서 오류가 검출된 경우에, 패킷 생성기(16)는, 헤더 및 모든 올바른 데이터를 보유하면서, 데이터 패킷의 송신 또는 재송신에 앞서서, 오류에 관련된 보정된 데이터를 기다릴 수 있다. 데이터 구조에서 오류가 검출되지 않았다면, 패킷 생성기(16)는 보정되지 않은 또는 불확실 데이터를 가지는 데이터 패킷을 송신하고, 이에 따라 데이터 패킷을 구성하기에 앞서서 EDC 컴포넌트(12)가 오류 검출 및 보정을 수행하기를 기다리는 것에 관련된 지연시간을 완화한다.
일 실시예에서, 패킷 생성기(16)는, 태그에서 오류가 발생하지 않았다고 결정되고나면 데이터 패킷의 송신을 시작하도록 동작한다. 패킷 생성기(16)는 헤더를 구성하고, 데이터 저장소(18)로부터 코드 워드 데이터를 추출하기 시작하고, 추출된 데이터가 올바르다고 결정되고나면 추출된 데이터를 가지는 데이터 패킷을 송신하기 시작한다. 후속 코드 워드에서 EDC(12)에 의해 데이터 구조에서 오류가 검출된다면, EDC(12)는 데이터 저장소(18)로 더미 데이터를 제공하기 시작한다. 덧 붙여, EDC(12)는 불확실 상태 표시자를 통해 오류가 발생하였다는 것을 패킷 생성기(16)로 알린다. 그러면, 패킷 생성기(16)는, 송신되고 있는 후속 데이터가 유효하지 않다는 표시(예컨대, 무효 플래그)를 포함하는 더미 데이터를 송신하기 시작한다. 이어서 EDC(12)는 데이터를 보정하고, 보정된 데이터를 데이터 저장소(18)로 로드한다. 덧붙여, EDC(12)는, 데이터 저장소에서 보정된 데이터가 사용 가능하다는 것을 패킷 생성기(16)로 알린다. 그러면, 패킷 생성기(16)는, 송신되고 있는 후속 데이터가 유효하다는 표시(예컨대, 유효 플래그)를 포함하는 보정된 데이터를 송신하기 시작한다.
도 2는 데이터 요청에 관련된 지연시간을 완화하기 위한 시스템(30)의 구체적인 일 구현을 도시한다. 시스템(30)은, 메모리 장치 #1 내지 #K(K는 1보다 큰 정수)로 이름지어진 복수의 DRAM 장치(34)로 이루어지는 시스템 메모리(32)를 포함하는 메모리 시스템이 될 수 있다. 실례로서, 도 2의 DRAM 장치(34)는 4비트 칼럼 폭(column width) 장치인 것으로서 논의될 것이다. 하지만, 다른 칼럼 폭 장치(예컨대, 8, 16, 32, 64 등)가 채용될 수 있다. 시스템 메모리(32)는 데이터 버스(38) 및 주소 버스(36)와 결부된다. 데이터 버스(38), 그리고 DRAM 사이클 동안 시스템 메모리(32)로 판독 및 기록되는 데이터 구조의 크기는, 메모리 장치(34)의 비트 칼럼 폭 곱하기 메모리 장치(34)의 개수와 같다. 본 예에서, 시스템 메모리(34)는 4비트 칼럼 폭을 가지는 72개의 DRAM 장치로 이루어질 수 있다. 따라서, 데이터 버스(38) 및 단일 메모리 사이클에 저장 및 판독되는 데이터 구조의 크기는 288비트이다.
시스템(30)은, 24개의 체크 비트를 포함하는 288비트(예컨대, 264개의 데이터 비트, 24개의 체크 비트)에 대해 오류 보정 및 검출을 수행하는 오류 검출 및 보정(EDC) 컴포넌트(42)를 포함한다. EDC 컴포넌트(42)의 기능성은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 이루어질 수 있다. EDC 컴포넌트(42)는 ASIC(application specific integrated circuit) 또는 VLSI(very large scale integrated circuit)로 형성될 수 있다.
버퍼/다중화기 장치(40)는 데이터 버스(38)를 통해 시스템 메모리(32)와, 그리고 데이터 버스를 통해 EDC 컴포넌트(42)와 결부된다. 판독 오퍼레이션 동안, 주소에 관련된 데이터 구조는 복수의 DRAM 장치(34)로부터 판독되고, 데이터 버스(38)를 통해 버퍼/다중화기(40)로 제공된다. 버퍼/다중화기(40)는 288비트 데이터 코드 워드를 제1의 144비트 부분과 제2의 144비트 부분으로 분리 또는 분할하는데, 이들 부분은 EDC 컴포넌트(42)로 순차적으로 송신된다. 이 프로세스는 후속하는 판독된 코드 워드에 대해 반복되어, 프로세싱 파이프라인이 설립될 수 있게 된다.
시스템(30)은 또한 캐시 일관성 제어기(46), 선입선출(first-in-first-out: FIFO) 명령 큐(50), 패킷 생성기(52) 및 데이터 저장소 장치(58)를 포함한다. 도 1에 관해서 상기한 바와 같이, 데이터 구조에 대한 요청에 응답하여 데이터 구조가 144비트 부분으로서 EDC 컴포넌트로 제공된다. 이러한 요청은, 시스템에 관련된 프로세서로부터, 다중프로세서 시스템에서의 다른 프로세서로부터, 입출력 장치로부터, 또는 데이터 구조를 요청하는 다양한 다른 장치로부터일 수 있다. 예컨대, 이 데이터 구조는, 각각의 코드 워드마다 24개의 체크 비트를 가지는 네 개의 288 비트 코드 워드로 이루어질 수 있다. 데이터 구조는, 메모리에 또는 시스템(30)에 관련된 캐시에 존재하는 캐시 라인이 될 수 있다. 데이터 구조의 태그 부분은 제1 코드 워드에 존재하며, 데이터 구조의 일관된 버전이 어디에 존재하는지 식별시킨다. 예컨대, 데이터 구조가 일관된 버전일 수 있고, 또는 일관된 버전이 다중프로세서 시스템의 프로세서에 관련된 캐시 내에 존재할 수도 있다.
상기한 바와 같이, 코드 워드는 144비트 부분으로서 EDC 컴포넌트(42)로 제공되어, 소정의 데이터 구조에 대한 요청에 응답하여 전체 데이터 구조가 예컨대 8 클록 사이클에 걸쳐 8개의 144비트 부분으로서 EDC 컴포넌트(42)로 제공되도록 할 수 있다. EDC 컴포넌트(42)는 태그 부분의 사본을 캐시 일관성 제어기(46)로 포워딩하고, 데이터 구조에 대해 오류 검출 및 보정의 수행을 시작한다. 캐시 일관성 제어기(46)는 태그를 채용하여, 데이터 구조의 일관된 버전이 시스템 메모리(32)에 존재하는지 또는 어떤 다른 엔티티에 존재하는지 여부에 기초하여, 데이터 패킷을 구성할지 아니면 요청 패킷을 구성할지 결정한다.
요청 패킷이 구성될 것을 태그 부분이 표시한다면, 캐시 일관성 제어기(46)는, 패킷 생성기(52)로 하여금 데이터 구조 요청에 관련된 요청 패킷을 구성하도록 지시하는 명령을 FIFO 큐(50)에 저장한다. 이 상황에서, EDC 컴포넌트(42)는 데이터 구조에 대해 오류 검출 및 보정을 수행하는 것과, 데이터 구조에 관련된 데이터를 데이터 저장소(58)에 저장하는 것을 계속한다. 패킷 생성기(52)는 데이터 패킷에 관련된 헤더를 구성하며, 송신을 위해 데이터 저장소(58)로부터 데이터 구조에 관련된 데이터를 순차적으로 독출할 수 있다.
캐시 일관성 제어기(46)는 또한, FIFO(50)로 발행된(issued) 각각의 명령에 관련된 상태 제어 구조(48)를 유지한다. 상태 제어 구조(48)는, 발행 명령이 불확실 데이터 구조의 태그에 관련되는지 여부, 또는 발행 명령이 올바른 데이터 구조의 태그에 관련되는지 여부의 표시를 제공하는 상태 표시자(status indicator)를 유지할 수 있다. 상태 제어 구조(48)는, 예컨대 태그의 사본을 포함하는, 발행 명령에 관련된 다른 상태 비트들 또는 제어 비트들을 유지할 수 있다.
EDC 컴포넌트(42)는 코드 워드들에 대해 순차적으로 오류 검출 및 보정을, 개별 코드 워드의 해당 ECC 비트에 기초하여, 수행한다. 각각의 코드 워드들이 데이터 저장소(58)로 로드될 때까지, 오류 검출 및 보정이 완료되면서 해당 코드 워드에 관련된 데이터가 데이터 저장소(58)로 로드된다. EDC 컴포넌트(42)는 캐시 일관성 제어기(46) 및 패킷 생성기(52) 양쪽으로 불확실 상태 표시(speculative status indication)를 제공한다. 불확실 상태 표시는 데이터 구조에서 오류가 검출되었는지 아닌지 여부의 표시를 제공할 수 있다.
예컨대, 불확실 상태 표시는, 데이터 구조에 관련된 어느 코드 워드에서라도 오류가 검출되었는지 아닌지 여부의 표시를 제공할 수 있다. 어느 코드 워드에서든지 오류가 검출되었다면, 패킷 생성기(52)는 패킷의 구성을 중단하고, 보정된 데이터 구조에 기초하여 새로운 패킷을 구성한다. 대안적으로, 불확실 상태 표시는 각각의 코드 워드에 대하여 제공될 수 있다. 예컨대, 태그 부분을 포함하는 제1 코드 워드에서 오류가 검출된다면, 패킷 생성기(52)는 패킷의 구성을 중단한다. 이어서, 보정된 태그 부분을 가지는 보정된 데이터 구조에 기초하여 새로운 패킷이 구성된다. 데이터 패킷인 응답 패킷에 대해, 후속 코드 워드에서 오류가 검출된 경우에, 패킷 생성기(52)는, 헤더 및 모든 올바른 데이터를 보유하면서, 데이터 패킷의 송신 또는 재송신에 앞서서, 오류에 관련된 보정된 데이터를 기다릴 수 있다. 데이터 구조에서 오류가 검출되지 않았다면, 패킷 생성기는 보정되지 않은 또는 불확실 데이터를 가지는 데이터 패킷을 송신하고, 이에 따라 데이터 패킷을 구성하기에 앞서서 EDC 컴포넌트(42)가 오류 검출 및 보정을 수행하기를 기다리는 것에 관련된 지연시간을 완화한다.
시스템(30)은 또한, 복수의 분산된 제어 로직 블록(44, 54, 56 및 60)을 포함한다. 제어 로직 블록(44, 54, 56 및 60)은, EDC 컴포넌트(42)로부터 데이터 저장소(58)로의, 그리고 데이터 저장소(58)로부터 패킷 생성기(52)로의, 데이터 흐름 및 핸드셰이킹(handshaking)을 제어한다. 일 실시예에서, 패킷 생성기(52)는, 태그에서 오류가 발생하지 않았다고 결정되고나면 데이터 패킷의 송신을 시작하도록 동작한다. 패킷 생성기(52)는, 헤더를 구성하고, 데이터 저장소(58)로부터 코드 워드 데이터를 추출하기 시작하고, 추출된 데이터를 가지는 데이터 패킷을 송신하기 시작한다. 후속 코드 워드에서 EDC(42)에 의해 데이터 구조에서 오류가 검출된다면, EDC는 데이터 저장소로 더미 데이터를 제공하기 시작한다. EDC(42)에 관련된 제어 로직 블록(44, 54, 56 및 60), 데이터 저장소(58) 및 패킷 생성기(64)는, 송신되고 있는 후속 데이터가 유효하지 않다는 표시(예컨대, 무효 플래그)를 포함하는 더미 데이터를 제공 및 송신하도록 동작한다. 이어서 EDC(42)는 데이터를 보정하고, 보정된 데이터를 데이터 저장소(58)로 로드한다. EDC(42)에 관련된 제어 로직 블록(44, 54, 56 및 60), 데이터 저장소(58) 및 패킷 생성기(52)는, 송신되고 있는 후속 데이터가 이제 유효하다는 표시(예컨대, 유효 플래그)를 포함하는 보정된 데이터를 제공 및 송신하도록 동작한다.
도 3은, 데이터 구조 요청에 응답하여 데이터 패킷을 구성하고 송신하는 것에 불확실 데이터 구조를 이용할 수 있는 시스템(70)의 일 예를 나타낸다. 시스템(70)은 복수의 프로세서(72 및 74)(프로세서 1 내지 프로세서 N으로 표시됨, N은 양의 정수 (N>1))를 포함하는 다중프로세서 환경을 도시한다. 시스템(70)은 또한, 메모리(86)를 포함하는데, 이는 전역적으로 접근가능한 집합적 메모리로서 구현될 수 있다. 예컨대, 메모리(86)는 하나 이상의 메모리 저장소 장치(예컨대, 동적 랜덤 액세스 메모리(direct random access memory: DRAM))를 포함할 수 있다. 메모리 컨트롤(76)은 메모리(86)에 관련된다. 메모리 컨트롤(76)은 불확실 데이터 구조를 가지는 패킷을 구성하고 송신하는 것에 덧붙여 오류 검출 및 보정을 제공한다. 메모리 컨트롤(76)은 도 1-2에 도시된 바와 같은 장치 및 관련된 기능을 포함할 수 있다.
프로세서(72-74) 및 메모리(86)는, 시스템 상호접속(78)을 통하여 요청 및 대응하는 응답을 통해 상호 통신할 수 있는, 시스템의 노드들을 정의한다. 예컨대, 시스템 상호접속(78)은 스위치 패브릭(switch fabric) 또는 계층적 스위치로서 구현될 수 있다. 또한, 90에 개략적으로 도시된 하나 이상의 다른 노드가 시스템(70)에 관련될 수 있다. 다른 노드(90)는 예컨대, 적절한 상호접속 인터페이스(미도시)를 통해 시스템 상호접속(78)에 접속된 하나 이상의 다른 다중프로세서 시스 템에 대응할 수 있다.
각각의 프로세서(72-74)는 적어도 하나의 대응하는 캐시(82-84)를 포함한다. 간결성을 위해 개별 캐시(82-84) 각각은 하나의 메모리 장치로서 나타나지만, 이들은 복수의 메모리 장치 또는 상이한 캐시 레벨을 포함할 수 있다. 각각의 캐시(82-84)는 복수의 캐시 라인을 포함한다. 각각의 캐시 라인은, 그 라인에 저장된 해당 데이터를 식별시키는 관련 주소를 가진다. 캐시 라인은 또한, 각각의 라인에 대한 데이터의 상태를 식별시키는 정보를 포함할 수 있다.
이에 따라, 시스템은 캐시(82-84) 및 메모리(86)를 채용하여, 여기에서 "메모리 블록" 또는 "데이터 구조"라고 지칭되는, 데이터의 블록을 저장한다. 메모리 블록 또는 데이터 구조는, 메모리 라인의 일부 또는 전체 메모리 라인을 점유하거나, 복수의 라인에 걸쳐 있을 수 있다. 하지만, 설명의 단순성을 위해, "메모리 블록" 또는 "데이터 구조"가 메모리에서 하나의 "메모리 라인" 또는 캐시에서 하나의 "캐시 라인"을 점유하는 것으로 가정될 것이다. 덧붙여, 소정의 메모리 블록은 메모리(86)의 메모리 라인뿐만 아니라, 하나 이상의 캐시의 캐시 라인에도 저장될 수 있다.
시스템(70)은 캐시 일관성 프로토콜(cache coherency protocol)을 구현하여, 데이터의 일관성을 보장하기 위해 메모리 블록의 공유를 관리한다. 시스템(70)의 캐시 일관성 프로토콜은, 개별 캐시 라인 또는 메모리(86)에 저장된 각각의 메모리 블록의 상태를 식별시키기 위해, 복수의 상태(state)를 이용한다. 일관성 프로토콜은 상태들 - 예컨대 데이터가 메모리(86), 또는 캐시(82-84)들 중 하나로부터 판 독되거나, 또는 이에 기록되는지 여부와 같은 - 간의 전이(transition)에 대한 규칙을 수립한다.
여기에 사용되는 바와 같이, 판독 또는 기록 요청과 같은 소스 요청(source request)을 발행한 노드는, 소스 노드(source node)를 정의한다. 시스템(70) 내의 다른 노드는 요청의 잠재적 목표(target)이다. 덧붙여, 시스템(70) 내의 각각의 메모리 블록은, 그 메모리 블록에 대한 필수적 전역적 정보 및 데이터 값을 유지하는 "홈 노드(home node)"가 할당될 수 있다. 홈 노드는 프로세서(또는 중앙처리장치), 관련 캐시 및 관련 메모리/디렉터리(directory)로서 정의될 수 있다.
예컨대, 프로세서(72)와 같은 소스 노드가 소정의 메모리 블록의 사본을 필요로 할 때, 통상적으로 우선, 메모리 블록에 관련된 주소를 식별시키는 것에 의해, 로컬의 개인 캐시(private cache)로부터 메모리 블록을 요청한다. 로컬에서 데이터가 발견되면, 시스템 상호접속(78)을 통한 통신 없이 메모리 접근(memory access)이 해결된다. 로컬에서 요청된 메모리 블록이 발견되지 않으면, 소스 노드(72)는 메모리(86)를 포함하는 시스템(70)으로부터 메모리 블록을 요청한다. 요청된 메모리 블록에 관련된 주소를 식별시키는 것에 덧붙여, 요청은 보통 요청자에 의해 발행되는 요청 또는 명령의 유형을 식별시킨다.
예를 들어, 프로세서(72)(소스 노드)가 특정 주소에 관련된 데이터의 사본을 요구한다고 가정하고, 그 데이터는 프로세서의 로컬 캐시(82)에서 사용가능하지 않다고 가정하자. 프로세서(72)가 로컬 캐시(82)에서 데이터에 접근할 수 없기 때문에, 프로세서(72)는 소스 노드로서 시스템 상호접속(78)을 통하여 다른 노드 및 메 모리(86)로 소스 요청을 송신한다. 예컨대, 요청은, 요청에서 식별되는 주소에 관련된 메모리 블록에 대한 소스 판독 요청에 해당할 수 있다. 요청은 또한, 어떤 유형의 요청이 소스 노드(72)에 의해 발행되고 있는지 식별시킬 수 있다.
소스 요청은, 소스 프로세서(72)로부터 시스템(70)의 홈 노드로 송신된다. 홈 노드는 요청된 캐시 라인의 소유자의 위치 정보(예컨대, 디렉토리 내)를 보유한다. 홈 노드는, 소스 요청에 관련된 데이터 구조를 제공하기 위해 메모리(86) 및 관련된 메모리 컨트롤(76)을 포함할 수 있다. 메모리 컨트롤(76)은, 소스 요청에 응답하여, 관련된 데이터 구조 또는 메모리 블록을 메모리(86)로부터 독출할 수 있다. 메모리 컨트롤(76)은 데이터 구조에 대한 오류 검출 및 보정을 수행하면서, 병행하여 데이터 구조에 관련된 응답 패킷을 구성한다. 메모리 컨트롤(76)은 데이터 구조의 태그 영역을 검토하고, 메모리로부터 독출된 데이터 구조가 데이터 구조의 일관된 사본이 아니라면 요청 패킷을, 또는 메모리가 데이터 구조의 일관된 사본이 아니라면 데이터 패킷을 구성한다. 요청 패킷은, 데이터 구조의 일관된 사본의 소유자로의 전방향 신호(forward signal), 또는 데이터 구조의 일관된 사본의 소유자에 관한 정보를 요청하는 시스템으로의 스누프 요청(snoop request)이 될 수 있다.
데이터 패킷은 불확실 데이터를 가지고 구성되어, 그 불확실 데이터가 올바른 데이터인 것으로 결정되고나면 송신될 수 있으며, 그렇지 않으면 보정된 데이터가 수신된다. 대안적으로, 데이터 패킷은, 메모리 컨트롤(76)에 관련된 패킷 생성기에 의해 데이터가 수신되는 것에 따라, 파이프라인 방식으로 송신될 수 있으며, 한편으로 후속 데이터에 대해 오류 검출 및 보정이 수행된다. 오류가 검출된다면, 패킷 생성기에 의해 보정된 데이터가 수신될 때까지 더미 데이터가 송신될 수 있다. 보정된 데이터는 이어서, 송신이 완료될 때까지, 송신될 수 있다.
위에 서술된 상기 구조적 기능적 특징을 고려하면, 어떤 방법들은 도 4-6을 참조하여 더 잘 파악될 수 있을 것이다. 도시된 동작들이, 다른 실시예에서는 다른 순서로 그리고/또는 다른 동작과 병행하여 일어날 수 있다는 것이 이해되고 파악되어야 한다. 또한, 모든 도시된 특징들이 방법을 구현하기 위해 필요한 것은 아니다.
도 4는 데이터 구조의 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한 방법론을 도시한다. 방법론은, 데이터 구조에 대해 오류 검출 및 보정이 시작되는 100에서 시작한다. 데이터 구조는, 데이터 구조에 대한 요청에 응답하여 해당 메모리 또는 캐시로부터 제공되는 메모리 라인 또는 캐시 라인이 될 수 있다. 이러한 요청은, 다중프로세서 시스템에서의 프로세서로부터, 입출력 장치로부터, 또는 데이터 구조를 요청할 수 있는 다양한 다른 장치로부터 올 수 있다. 데이터 구조는 태그 부분, ECC 보정 비트 및 데이터 부분을 포함한다. 데이터 구조는 복수의 코드 워드(code word)로 이루어질 수 있어서, 순차적인 방법으로 이들 복수의 코드 워드의 각각에 대해 오류 검출 및 보정이 수행되도록 할 수 있다. 방법론은 이어서 110으로 진행한다.
110에서, 태그 부분의 사본이 데이터 구조로부터 추출된다. 태그 부분은 데이터 구조의 일관된 버전이 어디에 존재하는지 식별시킨다. 예컨대 태그 부분은, 데이터 구조가 일관된 버전이라는 표시, 또는 일관된 버전이 다중프로세서 시스템에 관련된 캐시에 존재한다는 표시를 제공할 수 있다. 태그 부분은, 데이터 구조를 형성하는 복수의 코드 워드에 관련된 제1 코드 워드에 존재한다. 데이터 요청에 대한 응답 패킷에 관련된 헤더는, 데이터 구조의 태그 부분의 정보에 기초하여 구성된다. 코드 워드들에 대해 오류 검출 및 보정이 순차적으로 수행되고 있는 한편으로, 병행하여 헤더가 구성된다. 방법론은 이어서 120으로 진행한다.
120에서 방법론은 태그 오류가 검출되었는지 결정한다. 태그 오류가 검출되었다면 (YES), 방법론은 130으로 진행한다. 130에서 패킷 생성은 중단되고, 160에서 새로운 패킷이 보정된 데이터를 가지고 구성된다. 방법론은 이어 170으로 진행하여, 보정된 데이터를 가지고 구성된 새로운 패킷을 시스템을 거쳐 송신한다. 120에서 태그 오류가 검출되지 않았다면 (NO), 방법론은 140으로 진행한다. 140에서 방법론은 응답 패킷이 데이터 패킷인지 요청 패킷인지를 데이터 구조의 태그 부분에 기초하여 결정한다. 응답 패킷이 데이터 패킷이 아니라면 (NO), 방법론은 170으로 진행하여, 응답 패킷을 헤더의 형태로 시스템을 거쳐 송신한다. 140에서 응답 패킷이 데이터 패킷이라면 (YES), 방법론은 150으로 진행한다.
150에서 방법론은 데이터 구조에서 오류가 검출되었는지 결정한다. 예컨대, 데이터 구조에 관련된 하나 이상의 코드 워드에서 오류가 검출될 수 있다. 데이터 구조에서 오류가 검출된다면 (YES), 방법론은 130으로 진행하여, 패킷 생성을 중단한다. 160에서, 보정된 데이터를 가지고 새로운 패킷이 송신을 위해 구성된다. 방법론은 이어서 170으로 진행하여, 보정된 데이터를 가지고 구성된 새로운 패킷을 시스템을 거쳐 송신한다. 150에서 데이터 구조에서 오류가 검출되지 않는다면 (NO), 방법론은 160으로 진행한다. 160에서, 데이터 구조에 관련된 데이터를 가지고 데이터 패킷이 구성된다. 170에서, 구성된 데이터 패킷이 시스템을 거쳐 송신된다.
도 5는 데이터 요청에 관련된 지연시간을 완화하기 위한 방법론을 도시한다. 도 5의 방법론은, 데이터 구조 요청에 응답하여 데이터 구조가 일관된 버전으로 결정되도록 데이터 패킷을 제공하는 예시적인 방법론을 도시한다. 방법론은, 데이터 구조에 대해 오류 검출 및 보정이 시작되는 200에서 시작한다. 데이터 구조는, 데이터 구조에 대한 요청에 응답하여 해당 메모리 또는 캐시로부터 제공되는 메모리 라인 또는 캐시 라인이 될 수 있다. 이러한 요청은, 다중프로세서 시스템에서의 프로세서로부터, 입출력 장치로부터, 또는 데이터 구조를 요청할 수 있는 다양한 다른 장치로부터 올 수 있다. 데이터 구조는 태그 부분, ECC 보정 비트 및 데이터 부분을 포함한다. 데이터 구조는 복수의 코드 워드(code word)로 이루어질 수 있어서, 순차적인 방법으로 이들 복수의 코드 워드의 각각에 대해 오류 검출 및 보정이 수행되도록 할 수 있다. 방법론은 이어서 210으로 진행한다.
210에서, 데이터 구조로부터 추출된 태그 부분으로부터, 태그의 사본 내의 정보에 기초하여 데이터 요청에 대한 응답 패킷에 관련된 헤더가 구성된다. 태그 부분은, 데이터 구조를 형성하는 복수의 코드 워드에 관련된 제1 코드 워드에 존재한다. 코드 워드들에 대해 오류 검출 및 보정이 순차적으로 수행되고 있는 한편으로, 병행하여 헤더가 구성된다. 제1 코드 워드에서 오류가 검출된다면, 보정된 태 그에 기초하여 헤더가 재구성된다. 오류가 검출되지 않는다면, 태그의 사본이 올바른 태그이다. 방법론은 이어서 220으로 진행한다.
220에서 방법론은 데이터 패킷 헤더 및 모든 올바른 데이터를 포함하는 데이터 패킷을 송신하기 시작한다. 예컨대, 코드 워드에 대해 오류 검출 및 보정이 순차적으로 수행되므로, 소정의 코드 워드에 관련된 데이터는, 그것이 아무런 오류도 가지지 않는다고 결정되고나면 송신될 수 있다. 방법론은 이어서 230으로 진행하여, 데이터 패킷의 송신이 완료되었는지 결정한다. 데이터 패킷의 송신이 완료되었다면 (YES), 방법론은 종결되고, 데이터 패킷 송신은 종료된다. 데이터 패킷의 송신이 완료되지 않았다면 (NO), 방법론은 240으로 진행한다.
240에서, 코드 워드에 관련된 데이터에서 어떤 오류라도 검출되었는지 결정한다. 코드 워드에 관련된 데이터에서 아무런 오류도 검출되지 않았다면 (NO), 방법론은 220으로 돌아가, 올바른 데이터를 가지는 데이터 패킷을 송신하고, 송신이 완료되었는지 230에서 결정하고, 240에서 오류를 검출하는 것을 계속한다. 코드 워드에 관련된 데이터에서 오류가 검출되었다면 (YES), 방법론은 250으로 진행한다.
250에서, 방법론은 코드 워드에 관련된 데이터 대신에 더미 데이터를 데이터 패킷에 삽입한다. 더미 데이터는, 송신되고 있는 데이터가 유효하지 않다는 표시를 요청자에게 제공하는 표시자(예컨대, 무효 플래그)를 포함할 수 있다. 방법론은 이어서 260으로 진행하여, 보정된 데이터가 수신되었는지 결정한다. 보정된 데이터가 수신되지 않았다면 (NO), 방법론은 250으로 돌아가, 보정된 데이터가 수신 될 때까지 데이터 패킷의 더미 데이터를 송신한다. 보정된 데이터가 수신되었다면 (YES), 방법론은 220으로 돌아가, 올바른 데이터를 가지는 데이터 패킷을 송신하는 것을 계속한다. 보정된 데이터는, 송신되고 있는 데이터가 유효하다는 표시를 요청자에게 제공하는 표시자(예컨대, 유효 플래그)를 포함할 수 있다. 방법론은, 올바른 데이터를 가지는 데이터 패킷을 송신하고, 송신이 완료되었는지 230에서 결정하고, 240에서 오류를 검출하는 것을, 데이터 패킷이 송신을 완료할 때까지 계속한다.
도 7은 데이터 요청에 관련된 지연시간을 완화하기 위한 방법론을 도시한다. 방법론은, 데이터 구조를 형성하기 위한 복수의 코드 워드가 순차적인 순서로 제공되되, 복수의 코드 워드 중 제1 코드 워드가 태그 부분을 가지도록 제공되는, 400에서 시작한다. 410에서, 태그 부분에 기초하여 응답 패킷의 헤더가 구성된다. 420에서, 헤더를 구성하는 것과 병행하여, 순차적인 순서로 복수의 코드 워드에 대해 오류 검출 및 보정이 수행된다. 430에서, 오류가 없는 것으로 결정된 소정의 코드 워드에 관련된 데이터를 가지는 응답 패킷이, 후속 코드 워드에 대해 오류 검출 및 보정을 수행하는 것과 병행하여 송신된다.
이상에서 서술된 것은 본 발명의 예이다. 본 발명을 서술하기 위해 컴포넌트 또는 방법론의 모든 가능한 조합을 서술하는 것은 물론 가능하지 않지만, 당 업계에서 일반적인 기술을 가진 자는 본 발명의 가일층의 조합 또는 치환이 다수 가능하다는 것을 인식할 것이다. 따라서, 본 발명은, 첨부된 청구항의 사상 및 범위 와 부합하는 그러한 변경, 수정 및 변형을 모두 포함하도록 의도된 것이다.

Claims (10)

  1. 데이터 구조를 수신하는 오류 검출 및 보정(error detection and correction: EDC) 컴포넌트로서, 상기 데이터 구조는 상기 데이터 구조 내의 데이터의 일관성을 표시하는 태그를 포함하고 있는, EDC 컴포넌트;
    전송하기 위한 패킷을 구성하는 패킷 생성기; 및
    상기 데이터 구조의 상기 태그를 수신하며, 상기 태그에 기초하여 상기 데이터 구조를 포함하는 데이터 패킷(data packet) 또는 요청 패킷(request packet)을 구성하도록 상기 패킷 생성기로 명령을 발행하는, 캐시 일관성 제어기(cache coherency controller)
    를 포함하고,
    상기 EDC 컴포넌트가 상기 데이터 구조의 오류를 검출하고 보정하는 것과 병행하여 상기 패킷 생성기가 패킷을 구성하며,
    상기 패킷 생성기는, 상기 데이터가 가장 최신의 데이터 버전임을 상기 태그가 표시하는 경우, 상기 데이터 구조 내의 데이터를 포함하는 데이터 패킷을 생성하는,
    시스템.
  2. 제1항에 있어서,
    상기 데이터 구조는 복수의 부분으로 논리적으로 분할되고,
    상기 EDC 컴포넌트는 상기 복수의 부분의 각각에 대하여 오류 검출을 순차적으로 수행하고,
    상기 EDC 컴포넌트가 상기 복수의 부분 중 일부분의 데이터가 에러가 없다고 결정하면, 상기 패킷 생성기가 상기 일부분의 데이터를 전송하는,
    시스템.
  3. 제2항에 있어서,
    상기 EDC 컴포넌트가 상기 데이터 구조의 상기 복수의 부분 중 특정 부분이 오류를 가진다고 결정하면, 상기 패킷 생성기는 상기 특정 부분에 연관된 더미 데이터를 송신하며,
    상기 패킷 생성기는 상기 특정 부분과 관련된 데이터가 보정되고나면 유효한 데이터를 송신하는, 시스템.
  4. 제1항에 있어서,
    상기 패킷 생성기는, 상기 데이터 구조에서 오류가 검출되면 상기 데이터 패킷의 생성을 중단하는, 시스템.
  5. 제1항에 있어서,
    상기 패킷 생성기는, 오류 검출 및 보정에 관련된 지연시간을 완화하도록, 상기 데이터 구조에 관련된 불확실 데이터(speculative data)에 기초하여 데이터 패킷의 적어도 일부분을 구성하는, 시스템.
  6. 제5항에 있어서,
    상기 불확실 데이터는 오류 검출 및 보정이 수행되지 않은 데이터를 포함하고,
    상기 EDC 컴포넌트는, 데이터의 요청자에게 응답 패킷이 전송되기 전에, 상기 불확실 데이터의 오류를 검출하도록 구성된,
    시스템.
  7. 제1항에 있어서,
    상기 캐시 일관성 제어기는, 발행된 명령에 관련된 상태 표시자를 유지하는 상태 제어 구조를 유지하며, 상기 상태 표시자는 소정의 발행 명령이 불확실 데이터 및 올바른 것으로 알려진 데이터 중 어느 한쪽에 기초하는지 여부의 표시를 제공하는, 시스템.
  8. 삭제
  9. 삭제
  10. 삭제
KR1020060001748A 2005-01-21 2006-01-06 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한시스템 및 방법 KR101188252B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/040,380 2005-01-21
US11/040,380 US7577890B2 (en) 2005-01-21 2005-01-21 Systems and methods for mitigating latency associated with error detection and correction

Publications (2)

Publication Number Publication Date
KR20060085172A KR20060085172A (ko) 2006-07-26
KR101188252B1 true KR101188252B1 (ko) 2012-10-09

Family

ID=36698490

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060001748A KR101188252B1 (ko) 2005-01-21 2006-01-06 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한시스템 및 방법

Country Status (2)

Country Link
US (1) US7577890B2 (ko)
KR (1) KR101188252B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7752505B2 (en) * 2007-09-13 2010-07-06 International Business Machines Corporation Method and apparatus for detection of data errors in tag arrays
US7787205B2 (en) * 2007-10-02 2010-08-31 Seagate Technology Llc Detecting and correcting insertion and deletion of bits for bit patterned media storage systems
US8010519B2 (en) * 2008-07-29 2011-08-30 International Business Machines Corporation Method and system for mitigating impact of user errors in data stores
US8839083B2 (en) 2011-10-25 2014-09-16 Taejin Info Tech Co., Ltd. Secure error detection and synchronous data tagging for high-speed data transfer
US9936419B2 (en) * 2012-05-18 2018-04-03 Nokia Solutions And Networks Oy Network nodes and methods for transmitting low-latency data in a radio communications system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046380A1 (en) * 2000-10-13 2002-04-18 Tomonobu Tomaru Communications method, communications apparatus and communications system using same communications apparatus
US20030229839A1 (en) * 2002-06-08 2003-12-11 Axiowave Networks, Inc. Method of and apparatus for protecting against and correcting errors in data packet flow streams in closed ring sequential address generators and the like and in other data pack flow paths, without data flow stream interruption

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4485471A (en) 1982-06-01 1984-11-27 International Business Machines Corporation Method of memory reconfiguration for fault tolerant memory
US5629950A (en) * 1992-04-24 1997-05-13 Digital Equipment Corporation Fault management scheme for a cache memory
US5533189A (en) * 1994-11-28 1996-07-02 International Business Machines Corporation System and method for error correction code generation
US6304992B1 (en) 1998-09-24 2001-10-16 Sun Microsystems, Inc. Technique for correcting single-bit errors in caches with sub-block parity bits
US6233716B1 (en) 1998-09-24 2001-05-15 Sun Microsystems, Inc. Technique for partitioning data to correct memory part failures
US6301680B1 (en) 1998-09-24 2001-10-09 Sun Microsystems, Inc. Technique for correcting single-bit errors and detecting paired double-bit errors
US6453440B1 (en) 1999-08-04 2002-09-17 Sun Microsystems, Inc. System and method for detecting double-bit errors and for correcting errors due to component failures
US6519717B1 (en) 1999-10-06 2003-02-11 Sun Microsystems Inc. Mechanism to improve fault isolation and diagnosis in computers
US6493843B1 (en) 1999-10-28 2002-12-10 Hewlett-Packard Company Chipkill for a low end server or workstation
US6502218B1 (en) * 1999-12-16 2002-12-31 Intel Corporation Deferred correction of a single bit storage error in a cache tag array
US6463506B1 (en) 2000-04-29 2002-10-08 Hewlett-Packard Company Arrangement of data within cache lines so that tags are first data received
US7283528B1 (en) * 2002-03-22 2007-10-16 Raymond Marcelino Manese Lim On the fly header checksum processing using dedicated logic
AU2003224401A1 (en) * 2002-05-16 2003-12-02 Dan Raphaeli Method and system for distance determination of rf tags

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046380A1 (en) * 2000-10-13 2002-04-18 Tomonobu Tomaru Communications method, communications apparatus and communications system using same communications apparatus
US20030229839A1 (en) * 2002-06-08 2003-12-11 Axiowave Networks, Inc. Method of and apparatus for protecting against and correcting errors in data packet flow streams in closed ring sequential address generators and the like and in other data pack flow paths, without data flow stream interruption

Also Published As

Publication number Publication date
US7577890B2 (en) 2009-08-18
US20060168503A1 (en) 2006-07-27
KR20060085172A (ko) 2006-07-26

Similar Documents

Publication Publication Date Title
US6564306B2 (en) Apparatus and method for performing speculative cache directory tag updates
US20230254907A1 (en) Pipelined read-modify-write operations in cache memory
JP5078396B2 (ja) 動作のスヌーピングに応答して無効コヒーレンシー状態を更新するデータ処理システム、キャッシュ・システム、および方法
US9274856B2 (en) Improving processor performance for instruction sequences that include barrier instructions
US5655100A (en) Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5233616A (en) Write-back cache with ECC protection
TWI393005B (zh) 用於在具有多重一致性定義域之資料處理系統中處置清空操作之資料處理系統、快取系統以及方法
US7913048B2 (en) Data subscribe-and-publish mechanisms and methods for producer-consumer pre-fetch communications
US7987384B2 (en) Method, system, and computer program product for handling errors in a cache without processor core recovery
CN106897230B (zh) 用于处理原子更新操作的装置和方法
JPH02255932A (ja) マルチプロセツサ・システム
KR101188252B1 (ko) 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한시스템 및 방법
US9251076B2 (en) Epoch-based recovery for coherent attached processor proxy
JP2005302027A (ja) 自律的エラー回復方法、システム、キャッシュ、およびプログラム・ストレージ装置(メモリ装置のための自律的エラー回復のための方法、システム、およびプログラム)
JP2004260806A (ja) 境界ワード格納機構を用いた読み取り−修正−書き込み動作を回避する方法及びシステム
US20200371862A1 (en) Parallelized scrubbing transactions
JP4112050B2 (ja) コヒーレントメモリシステムにおいて強い順序づけを維持する方法およびシステム
JPH09146836A (ja) キャッシュ索引の障害訂正装置
JP5021978B2 (ja) マルチプロセッサシステム及びその動作方法
KR20210040257A (ko) 캐시 유지보수 동작을 처리하는 장치 및 방법
CN110121874B (zh) 一种存储器数据替换方法、服务器节点和数据存储系统
US20230342297A1 (en) Multisystem shared memory
TWI758317B (zh) 用於提供資料存取行為原子集的裝置及方法
JP6493187B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法
JP2011150486A (ja) データ処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee