KR20230070231A - 신뢰할 수 있는 저전압 캐시 동작을 위한 마스킹된 결함 검출 - Google Patents
신뢰할 수 있는 저전압 캐시 동작을 위한 마스킹된 결함 검출 Download PDFInfo
- Publication number
- KR20230070231A KR20230070231A KR1020237011033A KR20237011033A KR20230070231A KR 20230070231 A KR20230070231 A KR 20230070231A KR 1020237011033 A KR1020237011033 A KR 1020237011033A KR 20237011033 A KR20237011033 A KR 20237011033A KR 20230070231 A KR20230070231 A KR 20230070231A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- cache
- bit errors
- cache line
- inverted
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/353—Adaptation to the channel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
신뢰할 수 있는 저전압 캐시 동작을 위해 마스킹된 결함 검출을 구현하기 위한 시스템, 장치 및 방법이 개시된다. 프로세서는 전력을 절약하기 위해 상대적으로 낮은 전압 레벨에서 동작할 수 있는 캐시를 포함한다. 그러나 낮은 전압 레벨에서 캐시는 비트 오류가 발생할 가능성이 더 크다. 낮은 전압 레벨에서 캐시 라인에서 발생하는 비트 오류를 완화하기 위해 캐시는 실제 소프트웨어 애플리케이션이 데이터에 대한 런타임 액세스 중에 마스킹된 결함을 발견하는 전략을 사용한다. 예를 들어, 주어진 캐시 라인의 제1 판독에 대해, 주어진 캐시 라인의 데이터가 반전되어 동일한 데이터 어레이 엔트리에 다시 기록된다. 또한, 반전된 데이터에 대해 오류 정정 비트가 재생성된다. 주어진 캐시 라인의 제2 판독에 대해, 주어진 캐시 라인의 결함 모집단이 변경되면 주어진 캐시 라인의 오류 보호 레벨이 업데이트된다.
Description
정부
라이센스
권리
본 발명은 로렌스 리버모어 국가 안보 (Lawrence Livermore National Security), 주 계약 번호 제 DE-AC52-07NA27344호, 미국 에너지부에 의해 수여된 하도급 번호 제 B620717호와 함께 Path Forward 프로젝트 하에 정부 지원으로 이루어졌다. 미국 정부는 본 발명에 대해 특정 권리들을 갖는다.
대부분의 현대 컴퓨팅 디바이스들은 컴퓨팅 디바이스의 메인 메모리 외에 적어도 한 레벨의 캐시 메모리(또는 "캐시(cache)")를 제공한다. 일반적으로, 캐시들은 동작들을 수행하는 컴퓨팅 디바이스의 기능 블록들에 더 가까운 다양한 동작들(예를 들어, 계산 동작들)을 수행하는 데 사용되는 제한된 수의 데이터 복사본들 및 명령어들을 저장하는 데 사용되는 더 작은 용량의, 더 빠른 액세스 메모리들이다. 캐시들은 일반적으로 정적 랜덤 액세스 메모리(SRAM) 집적 회로들 및 다른 유형들의 메모리 회로들과 같은, 고속 메모리 회로들을 사용하여 구현된다.
일반적으로, 캐시는 다중 블록들을 저장할 수 있고, 그의 각각은 시스템 메모리의 대응하는 어드레스에 저장된 데이터의 복사본이다. 본 명세서에서 사용되는 바와 같이, "캐시 라인(cache line)" 또는 "캐시 블록(cache block)"은 코히어런시(coherency) 목적들을 위한 유닛으로 취급되는, 연속 메모리 위치들에 저장된 바이트들의 세트이다. 일부 구현예들에서, 캐시 라인은 또한 캐시의 할당 및 할당 해제의 유닛이 될 수 있다. 캐시 라인의 바이트들의 수는 디자인 선택에 따라 다르다.
동작 중에, 캐시의 메모리 회로들은 컴퓨팅 디바이스에 의해 소비되는 전체 전력의 상당한 부분을 소비할 수 있다. 전력 소비는 컴퓨팅 디바이스들의 중요한 관심사이기 때문에, 설계자들은 캐시들의 메모리 회로들에 의한 전력 소비를 줄이기 위한 다양한 기술들을 제안했다. 예를 들어, 설계자들은, 메모리 회로들의 전력 소비를 눈에 띄게 줄일 수 있는, 메모리 회로들의 공급 전압을 줄이는 것을 제안했다. 불행하게도, 공급 전압의 감소는, 공급 전압의 감소들이 메모리 회로들의 개별 메모리 요소들에 대한 노이즈 마진(noise margin)들의 감소와 연관되기 때문에, 메모리 회로들이 비트 오류들에 더 취약해지도록 야기한다. 즉, 메모리 회로들의 메모리 요소들은 더 낮은 공급 전압들을 갖는 프로세스 변동에서 발생하는 결함들에 더 취약하다. 또한, 메모리의 주변 회로들에 고장들이 있을 수 있어 저전압 동작 하에 고장들을 야기할 수 있다.
일반적으로, 비트 오류들은 캐시의 메모리 요소들에 대한 액세스들이 해당 요소들에 저장되지 않은 값들을 반환할 때 발생한다. 예를 들어, "0" 값이 메모리 요소에 저장되어 있는 경우, 비트 오류는 메모리 요소를 판독할 때 "1" 값이 반환되면 발생한다. 대안적으로, "1" 값이 주어진 요소에 저장되어 있는 경우, 비트 오류는 주어진 요소를 판독할 때 "0" 값이 반환되면 발생한다. 그러나, "0" 값이 이 결함 요소에 저장되어 있고, "0"이 요소를 판독할 때 반환되면, 결함 요소가 실제로 제대로 기능하고 있다는 인상을 캐시 제어기에 준다. "1"이 이 결함 요소에 저장된 경우에만, 결함이 발견된다. 이 시나리오는 "논리적으로 마스킹된 결함"이라고 지칭된다. 즉, "논리적으로 마스킹된 결함"은 메모리 요소가 메모리 요소의 비신뢰성을 숨기는 값을 저장하는 이벤트로 정의된다. "논리적으로 마스킹된 결함들"은 또한 본 명세서에서 "마스킹된 결함들"이라고 지칭될 수 있다. 마스킹된 결함들은 캐시 제어기가 캐시 라인들의 신뢰성 또는 안정성을 잘못 평가하도록 야기할 수 있다.
본 명세서에 설명된 방법 및 메커니즘의 장점은 첨부 도면을 조합하여 이하의 설명을 참조함으로써 더 잘 이해될 수 있다.
도 1은 계산 시스템의 일 구현의 블록도이다.
도 2는 컴퓨팅 시스템의 일 구현예의 블록도이다.
도 3은 컴퓨팅 시스템의 일 구현예의 블록도이다.
도 4는 캐시의 일 구현예의 블록도이다.
도 5는 일 구현예에 따른 태그 엔트리를 예시한다.
도 6은 채움 후 캐시 라인에 대한 제1 판독을 처리하는 캐시의 일 구현예의 블록도이다.
도 7은 신뢰할 수 있는 저전압 캐시 동작을 위해 마스킹된 결함 검출을 사용하는 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 8은 캐시 라인 오류 보호 레벨들을 조정하기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 9는 캐시 라인들에서 마스킹된 결함들을 추적하기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 10은 캐시에 저장된 데이터에 대한 오류 보호 레벨들을 업데이트하기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 1은 계산 시스템의 일 구현의 블록도이다.
도 2는 컴퓨팅 시스템의 일 구현예의 블록도이다.
도 3은 컴퓨팅 시스템의 일 구현예의 블록도이다.
도 4는 캐시의 일 구현예의 블록도이다.
도 5는 일 구현예에 따른 태그 엔트리를 예시한다.
도 6은 채움 후 캐시 라인에 대한 제1 판독을 처리하는 캐시의 일 구현예의 블록도이다.
도 7은 신뢰할 수 있는 저전압 캐시 동작을 위해 마스킹된 결함 검출을 사용하는 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 8은 캐시 라인 오류 보호 레벨들을 조정하기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 9는 캐시 라인들에서 마스킹된 결함들을 추적하기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 10은 캐시에 저장된 데이터에 대한 오류 보호 레벨들을 업데이트하기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
아래의 설명에서, 본 명세서에 제시된 방법 및 메커니즘에 대한 완전한 이해를 제공하기 위해 다양한 구체적인 세부 사항이 제시된다. 그러나, 당업자는 이러한 구체적인 세부 사항 없이 다양한 구현을 실시할 수 있음을 인식해야 한다. 일부 실례에서, 잘 알려진 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령 및 기술은 본 명세서에 설명된 방법을 모호하게 하는 것을 피하기 위해 상세히 설명하지 않는다. 첨부 도면의 단순성과 명확성을 위해, 도면에 도시된 요소는 반드시 축척대로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 일부 요소의 크기는 다른 요소에 비해 과장될 수 있다.
신뢰할 수 있는 저전압 캐시 동작을 위한 마스킹된 결함 검출을 구현하기 위한 시스템, 장치 및 방법이 본 명세서에서 개시된다. 일 구현예에서, 시스템은 데이터(예를 들어, 캐시 라인 및/또는 대응하는 태그)를 저장하도록 구성된 메모리를 갖는 하나 이상의 캐시 레벨을 포함한다. 다양한 구현들에서, 캐시는 데이터(예를 들어, 캐시 라인)를 저장하도록 구성된 엔트리, 저장된 데이터와 연관된 태그를 저장하도록 구성된 엔트리 및 캐시 제어기를 포함한다. 일부 실시예에서, 캐시는 데이터 어레이에 데이터를 저장하고 태그 어레이에 태그를 저장한다. 일부 구현예에서는, 데이터 및 태그 어레이는 별도의 구조이고 다른 경우에는 단일 구조로 조합된다. 이들 및 다른 실시예는 데이터를 저장하기 위해 고려된다. 주어진 데이터 어레이는 복수의 캐시 라인들을 저장하기 위한 복수의 데이터 엔트리들을 포함하고, 주어진 태그 어레이는 복수의 캐시 라인들에 대응하는 복수의 태그 엔트리들을 포함한다. 일 구현예에서, 캐시는 상대적으로 낮은 전압 레벨에서 동작하여 전력을 보존한다. 그러나 낮은 전압 레벨에서 캐시는 비트 오류가 발생할 가능성이 더 크다. 낮은 전압 레벨에서 동작하는 것 외에 다른 이유로 비트 오류가 발생할 수 있으며 본 명세서에 설명된 기술은 이러한 시나리오에서 비트 오류를 발견하고 해결할 수 있는 점에 유의한다.
캐시 라인에서 발생하는 비트 오류를 완화하기 위해, 캐시는 프로세서에서 실행되는 실제 소프트웨어 애플리케이션에 의한 데이터에 대한 런타임에 액세스 동안 마스킹된 결함을 발견하는 전략을 사용한다. 이 전략을 실행하기 위해, 캐시 제어기는 주어진 캐시 라인의 데이터를 반전시키고 채움 후 주어진 캐시 라인의 제1 판독을 검출하는 것에 응답하여 반전된 데이터를 주어진 캐시 라인에 다시 기록한다. 주어진 캐시 라인은 캐시의 임의의 캐시 라인을 나타낸다. 캐시 제어기는 축출 동안 주어진 캐시 라인의 데이터가 캐시로부터 판독될 때 주어진 캐시 라인의 데이터를 반전시키지 않는다는 점에 유의한다. 데이터 반전은 캐시로부터 데이터를 판독하는 프로세서에서 실행되는 실제 소프트웨어 애플리케이션에 대한 응답으로 발생한다. 다음으로, 캐시 제어기는 주어진 캐시 라인을 태깅한다. 다음으로, 캐시 제어기는 주어진 캐시 라인을 반전된 데이터를 저장하는 것으로 마킹한다. 그런 다음, 캐시 제어기는 반전된 데이터에 대한 오류 정정 비트를 재생성하고 재생성된 오류 정정 비트로 주어진 캐시 라인에 대한 원래 오류 정정 비트를 덮어쓴다. 주어진 캐시 라인의 제2 판독 후 캐시 라인의 결함 모집단이 변경되면, 캐시 제어기는 주어진 캐시 라인을 보호하는 데 사용되는 오류 보호 레벨을 변경한다. 이는 마스킹된 결함을 기반으로 오류 보호 체계를 적절하게 조정하는 데 도움이 된다.
일 구현예에서, 각각의 태그 엔트리는 대응하는 데이터 엔트리가 반전된 또는 비반전 데이터를 포함하는지 여부에 대한 표시기를 포함한다. 일 구현예에서, 캐시 제어기는 주어진 캐시 라인에 대한 이력 데이터를 검색하고, 이력 데이터는 주어진 캐시 라인의 제1 판독 동안 검출된 비트 오류들의 제1 수의 표시를 포함한다. 또한, 캐시 제어기는 프로세서가 주어진 캐시 라인의 제2 판독을 수행하는 것에 응답하여 주어진 캐시 라인에 대한 비트 오류들의 제2 수를 결정하며, 여기서 비트 오류의 제2 수는 재생성된 오류 정정 비트를 판독함으로써 결정된다. 제2 판독 후에, 캐시 제어기는 비트 오류들의 제2 수를 비트 오류들의 제1 수와 비교한다. 비트 오류들의 제2 수가 비트 오류들의 제1 수보다 크면 캐시 제어기는 주어진 캐시 라인을 보호하는 데 사용되는 오류 보호 레벨을 높인다.
여기서, 도 1을 참조하면, 계산 시스템(100)의 일 구현의 블록도가 도시되어 있다. 일 구현예에서, 컴퓨팅 시스템(100)은 적어도 프로세서(들)(110), 입/출력(I/O) 인터페이스들(120), 메모리 서브시스템(130) 및 주변 디바이스(들)(135)를 포함한다. 다른 구현예들에서, 컴퓨팅 시스템(100)은 다른 컴포넌트들을 포함할 수 있고, 컴퓨팅 시스템(100)은 예시된 컴포넌트를 생략할 수 있으며, 및/또는 컴퓨팅 시스템(100)은 다르게 배열될 수 있다. 일 구현예에서, 각각의 프로세서(110)는 캐시 서브시스템(115)을 포함한다. 캐시 서브시스템(115)은 구현예에 따라 변할 수 있는 임의의 다양한 유형들의 캐시들 중 임의의 수의 캐시 레벨들을 갖는다. 일부 경우들에서, 캐시 서브시스템(115)의 캐시 계층구조(hierarchy)에 있는 하나 이상의 캐시들은 프로세서(들)(110) 외부의 다른 위치들에 위치될 수 있다. 일 구현예에서, 캐시 서브시스템(115)의 하나 이상의 캐시들은 실제 소프트웨어 애플리케이션들에 의한 데이터에 대한 라이브 액세스들 동안 마스킹된 결함들을 밝히기 위한 방식들을 사용한다. 이러한 방식들에 대한 더 자세한 내용들은 본 개시내용의 나머지 부분을 통해 제공될 것이다.
프로세서(들)(110)는 임의의 수와 유형의 처리 유닛들(예를 들어, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 디지털 신호 처리기(DSP), 필드 프로그래밍 가능 게이트 어레이(FPGA), 주문형 집적 회로(ASIC))을 대표한다. 메모리 서브시스템(130)은 임의의 수와 유형의 메모리 디바이스들을 포함한다. 예를 들어, 메모리 서브시스템(130)의 메모리 디바이스들의 메모리의 유형은 고대역폭 메모리(HBM), 비휘발성 메모리(NVM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), NAND 플래시 메모리, NOR 플래시 메모리, 강유전체 랜덤 액세스 메모리(FeRAM) 등을 포함할 수 있다. I/O 인터페이스(120)는 임의의 수 및 유형의 I/O 인터페이스(예를 들어, 주변 구성 요소 상호연결(PCI) 버스, PCI-확장(PCI-X), PCIE(PCI Express) 버스, 기가비트 이더넷(GBE) 버스 및 범용 직렬 버스(USB))를 나타낸다. 다양한 유형들의 주변 디바이스(들)(135)는 I/O 인터페이스들(120)에 결합될 수 있다. 이러한 주변 디바이스(들)(135)는 디스플레이들, 키보드들, 마우스들, 프린터들, 스캐너들, 조이스틱들 또는 다른 유형들의 게임 제어기들, 미디어 기록 디바이스들, 외부 스토리지 디바이스들, 네트워크 인터페이스 카드들 등을 포함한다(그러나 이에 제한되지 않는다).
다양한 실시형태에서, 계산 시스템(100)은 컴퓨터, 랩톱, 모바일 장치, 게임기, 서버, 스트리밍 장치, 웨어러블 장치 또는 다른 다양한 유형의 계산 시스템 또는 장치 중 임의의 것이다. 계산 시스템(100)의 구성 요소 수는 실시형태에 따라 달라진다는 점에 유의한다. 예를 들어, 다른 구현에서, 각 구성 요소는 도 1에 도시된 수보다 더 많거나 적다. 다른 구현에서, 계산 시스템(100)은 도 1에 도시되지 않은 다른 구성 요소를 포함한다는 점에 또한 유의한다. 추가적으로, 다른 구현에서, 계산 시스템(100)은 도 1에 도시된 것과 다른 방식으로 구조화된다.
이제 도 2를 참조하면, 컴퓨팅 시스템(200)의 일 구현예의 블록도가 도시되어 있다. 도시된 바와 같이, 시스템(200)은 데스크톱 컴퓨터(210), 랩톱 컴퓨터(220), 서버(230), 모바일 디바이스(240) 등의 칩, 회로부, 컴포넌트들 등을 나타낸다. 다른 디바이스들이 가능하며 고려된다. 예시된 구현예에서, 시스템(200)은 다중 컴포넌트들(205A 내지 N) 및 캐시 서브시스템(115)(도 1의)의 적어도 하나의 인스턴스(instance)를 포함한다. 컴포넌트들(205A 내지 N)은 하나 이상의 프로세서들, 하나 이상의 메모리 디바이스들, 하나 이상의 주변 디바이스들 등과 같은, 임의의 수 및 유형의 컴포넌트들을 대표한다. 캐시 서브시스템(115)은 실제 소프트웨어 애플리케이션들에 의한 데이터에 대한 런타임 액세스 동안 마스킹된 결함들을 밝히기 위한 메커니즘들을 포함하는 임의의 수의 캐시 레벨들을 포함한다. 이러한 메커니즘들 및 대응하는 방법들에 관한 더 자세한 내용들은 본 개시내용의 나머지 부분을 통해 제공될 것이다.
이제 도 3을 참조하면, 일부 구현예들에 따른 컴퓨팅 디바이스(300)를 예시하는 블록도가 도시되어 있다. 도 3에서 볼 수 있는 바와 같이, 컴퓨팅 디바이스(300)는 2개의 코어들(302)을 포함한다. 각 코어(302)는 중앙 처리 유닛(CPU)들, 그래픽 처리 유닛(GPU)들, 임베디드 프로세서들, 주문형 집적 회로(ASIC)들, 및/또는 컴퓨팅 디바이스(300)에서 계산 및/또는 처리 동작들을 수행하는 다른 계산 메커니즘들과 같은 하나 이상의 계산/처리 메커니즘들을 포함하는 기능 블록이다.
컴퓨팅 디바이스(300)는 메모리(304)를 포함한다. 메모리(304)는 컴퓨팅 디바이스(300)의 "메인 메모리"이며, 그리고 동적 랜덤 액세스 메모리(DRAM), 2배속 동기식 DRAM(DDR SDRAM), 비휘발성 랜덤 액세스 메모리(NVRAM) 및/또는 데이터를 저장하기 위한 다른 유형들의 메모리 회로들 중 하나 이상과 같은 메모리 회로들 및 컴퓨팅 디바이스(300)의 기능 블록들에 의해 사용하기 위한 명령어들, 뿐만 아니라 메모리 회로들에 저장된 데이터 및 명령어들의 액세스들을 처리하기 위한 제어 회로들을 포함한다.
컴퓨팅 디바이스(300)는 각 코어(302)에 대한 레벨 1(L1) 캐시(306), 레벨 2(L2) 캐시(308) 및 레벨 3(L3) 캐시(310)를 포함하는 캐시 메모리들(또는 "캐시들")의 계층구조를 포함한다. L1 캐시(306), L2 캐시(308) 및 L3 캐시(310)의 각각은 데이터 및 명령어들의 복사본들을 저장하는 데 사용되는 정적 랜덤 액세스 메모리(SRAM) 메모리 회로들과 같은 메모리 회로들과 뿐만아니라, 메모리 회로들의 액세스들을 처리하는 제어 회로들을 포함한다. L1 캐시(306), L2 캐시(308) 및 L3 캐시(310) 순서로 진행하면, 각 캐시는 용량이 더 크고 거기에 저장된 데이터 및 명령어들을 사용하는 계산 메커니즘에서 물리적으로 더 멀리 위치되므로 액세스 속도가 더 느려진다. 일부 구현예들에서, 캐시들의 계층구조에서 일부 또는 모든 캐시들은 동시 기록 캐시(write-through cache)들로 구성된다. 이러한 구현예들에서, 수정된 데이터가 코어로부터 동시 기록 캐시로 기록될 때, 데이터는 즉시 계층구조의 다음 하위 캐시 및/또는 메모리(304)에 기록된다. 이 방식에서, 동시 기록 캐시에 있는 데이터의 정확한 최신 복사본은 다음 하위 캐시 및/또는 메모리(304)에 유지된다.
구현예들이 코어들(302)의 특정 배열로 설명되지만, 일부 구현예들은 도 3에서 줄임표로 도시된 바와 같이, 코어들의 상이한 수 및/또는 배열을 포함한다. 예를 들어, 일부 구현예들은 하나의 코어만을 갖는 반면, 다른 구현예들은 5개, 8개 또는 또 다른 수의 코어들을 갖는다. 일반적으로, 설명된 구현예들은 본 명세서에 설명된 동작들을 수행할 수 있는 코어들의 임의의 배열을 사용할 수 있다.
구현예들이 캐시들의 특정 배열로 설명되지만, 일부 구현예들은 캐시들의 상이한 수 및/또는 배열을 포함한다. 예를 들어, 일부 또는 모든 캐시들(예를 들어, L1 캐시(306))은 별도의 명령어 및 데이터 캐시들로 구현될 수 있다. 또 다른 예로서, 일부 구현예들은 단 한가지 레벨의 캐시에서 다중 레벨들의 캐시들에 이르기까지, 상이한 레벨들의 캐시들을 포함하며, 이러한 캐시들 중 일부 또는 전부는 코어(302) 내에 및/또는 코어(302) 외부에 위치될 수 있다. 일반적으로, 설명된 구현예들은 본 명세서에 설명된 동작들을 수행할 수 있는 캐시들의 임의의 배열을 사용할 수 있다.
컴퓨팅 디바이스(300)가 예시 목적들을 위해 단순화되었지만, 일부 구현예들에서, 컴퓨팅 디바이스(300)는 본 명세서에 설명된 동작들 및 다른 동작들을 수행하기 위한 추가적인 또는 상이한 요소들 및 메커니즘들을 포함한다. 예를 들어, 컴퓨팅 디바이스(300)는 전력 서브시스템들, 미디어 처리 서브시스템들, 입력-출력 서브시스템들, 통신 서브시스템들, 네트워킹 서브시스템들, 디스플레이 서브시스템들 등을 포함할 수 있다.
컴퓨팅 디바이스(300)는 계산 동작들을 수행하는 임의의 전자 디바이스일 수 있거나, 또는 이에 포함될 수 있다. 예를 들어, 컴퓨팅 디바이스(300)는 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 웨어러블 컴퓨팅 디바이스들, 태블릿 컴퓨터들, 가상 또는 증강 현실 장비, 스마트폰들, 서버들, 네트워크 기기들, 장난감들, 시청각 장비, 가전 제품들, 제어기들, 차량들 등 및/또는 이들의 조합들과 같은 전자 디바이스들일 수 있거나, 또는 이에 포함될 수 있다.
이제 도 4를 참조하면, 일부 구현예들에 따른 캐시(400)를 예시하는 블록도가 도시되어 있다. 일부 구현예들에서, L1 캐시(306), L2 캐시(308) 및 L3 캐시(310)(도 3)의 일부 또는 모두는 캐시(400)에 도시된 기능 블록들을 포함한다. 도 4에서 볼 수 있는 바와 같이, 캐시(400)는 데이터 어레이(402), 태그 어레이(406), 오류 정정 코드(ECC) 캐시(408) 및 캐시 제어기(410)를 포함한다. 데이터 어레이(402)는 캐시(400)에 데이터를 저장하는 데(즉, 데이터 및/또는 명령어들을 저장하기 위해) 사용되는 메모리 회로들(예를 들어, SRAM 또는 다른 유형들의 메모리 회로들)을 포함하는 기능 블록이다. 데이터 어레이(402)는 임의의 수의 부분들(404)(그 중 일부만이 도 4에 도시됨), 단일 캐시 라인(캐시 라인은 N 바이트이고, N은 64, 128, 또는 또 다른 값)을 위한 데이터를 저장하기 위해 메모리 회로들의 서브세트를 포함하는 각 부분(404)을 포함한다. 일부 구현예들에서, 각각의 부분(404)은 또한 메타데이터(예를 들어, 유효 비트들, 액세스된 비트들, 허가 비트들)와 같은 정보를 포함하거나 이와 연관된다.
일부 구현예들에서, 데이터와 함께, 데이터 어레이(402)(예를 들어, 부분들(404)의 일부 또는 모두)는 패리티 정보(parity information)를 저장하는 데 사용된다. 일반적으로, 주어진 패리티 정보 조각은 데이터 어레이(402)의 대응하는 데이터 엔트리에서 비트 오류들을 검출하는 데 사용되는 추가 정보(예를 들어, 하나 이상의 비트)를 포함한다. 예를 들어, 일부 구현예들에서, 세그먼트 및 인터리브된 패리티가 사용된다. 세그먼트 및 인터리브된 패리티의 경우, 데이터는 논리적으로 다수의 오버랩핑 세그먼트들로(예를 들어, 4개) 나눠지고 패리티 정보는 각 세그먼트에 대해 생성된다. 세그먼트 및 인터리브된 패리티를 사용하여, 다중-비트 비트 오류들은 데이터에서 검출될 수 있다. 다른 구현예들에서, 패리티 정보는 데이터 어레이(402)가 아닌 다른 위치들에 저장될 수 있다.
태그 어레이(406)는 대응하는 이력 레코드와 함께, 데이터 어레이(402)의 대응하는 부분에 저장된 데이터를 고유하게 식별하는 각각의 엔트리 저장 어드레스(또는 "태그") 정보를 갖는, 다수의 엔트리들로 논리적으로 나눠지는 메모리 회로들을 포함하는 기능 블록이다. 데이터가 데이터 어레이(402)의 부분들(404)에 저장됨에 따라, 태그 어레이(406)의 대응하는 엔트리들은 데이터에 대한 어드레스들에 기초하거나 그로부터 유도된 어드레스 정보로 업데이트된다. 태그 어레이(406)의 엔트리들에 있는 어드레스 정보는 이후 요청된 데이터의 어드레스들에 기초하여, 요청된 데이터가 데이터 어레이(402)에 존재하는지 여부를 결정하는 데 사용된다.
오류 정정 코드(ECC) 캐시(408)는 다수의 엔트리들로 논리적으로 나눠지는 메모리 회로들을 포함하는 기능 블록이며, 각각의 엔트리는 오류 정정 코드에 의해 생성된 체크비트(checkbit)들을 저장하도록 구성된다. 체크비트들은 데이터 어레이(402)의 부분들(404)에 저장된 데이터의 비트 오류들을 검출 및/또는 정정하는 데 사용된다. 예를 들어, 일부 구현예들에서, 오류 정정 코드들은 단일-오류 정정, 이중-오류 검출(SEC-DED) 코드들이다. SEC-DED 코드를 사용하여, 단일-비트 오류들은 정정될 수 있고 2비트 오류들은 대응하는 데이터에서 검출될 수 있다. 다른 오류 정정 코드들은 이중-오류 정정, 삼중-오류 검출(DEC-TED) 코드들, 삼중-오류 정정, 4중 오류 검출(TEC-QED) 코드들 등을 포함한다. 여기서 열거된 것 이외의 다른 유형들의 오류 검출 코드들 또는 오류 정정 코드들이 사용될 수 있음을 이해해야 한다. 일부 구현예들에서, ECC 캐시(408)는 체크비트들을 저장하기 위한 다수의 엔트리들을 갖는 데이터 어레이 및 대응하는 어드레스 정보를 저장하기 위한 태그 어레이를 포함한다. 이들 구현예들에서, 오류 정정 코드 캐시(408)의 태그 어레이는 태그 어레이(406)가 데이터 어레이(402)의 부분들(404)에서 데이터를 검색하는 데 사용되는 방식과 유사한 방식으로 특정 어드레스들에 대한 체크비트들을 검색하는 데 사용될 수 있다.
일부 구현예들에서, ECC 캐시(408)는 데이터 어레이(402)에 있는 부분들(404)보다 적은 수의 엔트리들을 포함한다. 예를 들어, ECC 캐시(408)는 데이터 어레이(402)의 부분들 수의 20%인 다수의 엔트리들을 가질 수 있다. 이 경우에서, 데이터 어레이(402)에 500개의 부분들이 있다면, 오류 정정 코드 캐시(408)에는 100개의 항목들이 있을 것이다. 이들 구현예들 중 일부에서, ECC 캐시(408)의 엔트리들은 데이터 어레이(402)의 특정 부분들(404)에 영구적으로 매핑되지 않는다. 대신에, 각 엔트리는 데이터 어레이(402)의 다양한 부분들(404) 중 임의의 것에 구성가능하게 매핑된다. 예를 들어, 일 구현예에서, ECC 캐시(408)의 각 엔트리는 단일-비트 오류를 갖는 것으로 검출된 데이터 어레이(402)의 단일 대응하는 부분(404)에 매핑된다.
일부 구현예들에서, ECC 캐시(408)에 있는 엔트리들의 구성가능한 매핑은 동적으로 업데이트되거나 변경된다(즉, 캐시(400)가 동작함에 따라 런타임에 업데이트됨). 예를 들어, 일시적인 단일-비트 오류가 부분(404)에서 검출될 때(예를 들어, 우주 광선 결함(cosmic ray fault)과 같은 소프트 오류로 인해), ECC 캐시(408)의 엔트리는 해당 부분에 대한 체크비트들을 유지하기 위해 배정되거나 할당될 수 있다. 이후에 단일-비트 오류가 더 이상 존재하지 않는 것으로 확인되고 체크비트들이 부분(404)에 더 이상 필요하지 않을 때, ECC 캐시(408)의 엔트리는 배정되지 않거나 무효화되거나 등 일 수 있다. 엔트리는 필요에 따라 데이터 어레이(402)의 또 다른 부분(404)에 배정될 수 있다.
일 구현예에서, ECC 캐시(408)는 데이터 어레이(402)의 부분들(404)에서 검출된 오류들과 연관된 임의의 수 및 유형의 이력 데이터 레코드들을 대표하는 이력 레코드들(412)을 저장한다. 이력 레코드들(412)은 대응하는 부분들(404)에서 검출된 다수의 비트 오류들의 표현을 저장한다. 예를 들어, 일부 구현예들에서, 각 이력 레코드(412)는 각 대응하는 부분(404)에 대한 2비트 값이다. 이들 구현예들에서, 00의 값은 대응하는 부분(404)에서 비트 오류가 검출되지 않았음을 나타내고, 01의 값은 단일-비트 비트 오류가 검출되었음을 나타내며, 및 11의 값은 다중-비트 비트 오류가 검출되었음을 나타낸다. 다른 구현예들은 대응하는 부분(404)당 다른 수들의 비트들을 가질 수 있다. 구현예에 따라, 이력 레코드들(412)은 부분들(404)의 서브세트에 대한 엔트리들만을 포함할 수 있거나 이력 레코드들(412)은 부분들(404)의 전체에 대한 엔트리들을 포함할 수 있다. 일 구현예에서, 이력 레코드들(412)은 대응하는 부분(404)에 대한 오류 보호 레벨 또는 대응하는 부분(404)이 비활성화되어야 하는지 여부를 결정하는 데 사용된다. 이력 레코드들(412)은 또한 캐시의 부분들에 대한 로드 및 저장 요청들을 서비스할 때 수행될 동작들을 결정하는 데 사용된다.
캐시 제어기(410)는 캐시(400)에서 동작들을 제어하기 위한 다양한 기능들을 수행하는 기능 블록이다. 예를 들어, 캐시 제어기(410)는 데이터 어레이(402)에 데이터를 저장하고, 데이터를 무효화하고, 데이터 어레이(402)로부터 데이터를 축출하는 것을 관리한다. 캐시 제어기(410)는 또한 태그 어레이(406)의 데이터에 대한 룩업(lookup)들을 수행하고, 캐시(400)에 대한 코히어런시 동작들을 처리하고 및/또는 캐시(400)로부터 데이터에 대한 요청에 응답한다. 일부 구현예들에서, 캐시 제어기(410)는 본 명세서에 설명된 바와 같이 검출된 오류들의 총 수에 기초하여 부분들(404)에 대한 오류 보호 레벨을 선택하기 위한 동작들 중 적어도 일부를 수행한다. 도 4에 도시된 캐시(400)는 설명 목적들을 위해 단순화되었지만, 일부 구현예들에서, 캐시(400)는 기능 블록들의 상이한 배열을 포함한다. 일반적으로, 캐시(400)는 본 명세서에 설명된 동작들 및 캐시들에 의해 수행되는 다른 동작들을 수행하기에 충분한 기능 블록들을 포함한다.
일부 구현예에서, 하나 이상의 메커니즘들은 캐시(400)에 제공되는 공급 전압을 조정하기 위해 사용된다. 예를 들어, 일부 구현예들에서, 메모리 회로들에 대한 공급 전압은 캐시(400)의 메모리 회로들에 의해 소비되는 전력의 양을 감소시키기 위해 낮아질 수 있다. 이들 구현예들 중 일부에서, 저전압 결합들을 야기할 만큼 충분히 낮게 공급 전압을 낮추는 것이 가능하며, 즉, 더 낮은 공급 전압에 의해 야기된 감소된 노이즈 마진으로 인해 메모리 회로들이 예상하지 못한 값들이나 바람직하지 않은 값들을 출력하도록 야기할 수 있다. 이러한 결함들은 주어진 공급 전압-주파수 조합에서 영구적일 수 있다. 잘못된 데이터를 사용하는 것을 피하기 위해, 오류 보호 레벨들은 저장된 데이터 값들 하에 마스킹된 오류들을 포함하는 모든 오류들의 검출에 기초하여 캐시(400)의 부분들에 대해 조정된다. 또한, 캐시(400)의 부분들은 오류 보호가 효과가 없도록 비활성화될 수 있다.
본 명세서에 설명된 메커니즘들 및 동작들은 저전압 결함들에 대한 보호에 제한되지 않는다. 고장난 회로 요소들, 프로세스 변동 결함들, 열적 결함들, 노후화-관련 결함들 또는 주어진 특정 동작 조건들에서 메모리 요소들에 영구적 또는 반복적 결함들을 발생시키는 다른 문제들과 같은, 캐시의 데이터 어레이에 있는 메모리 요소들에 대한 액세스들에 영향을 미치는 다른 결함들은 본 명세서에 설명된 메커니즘들과 동작들을 사용하여 완화될 수 있다.
이제 도 5를 참조하면, 일 구현예에 따른 태그 엔트리(500)가 도시되어 있다. 구현예에 따라, 태그 엔트리(500)는 낮은 공급 전압에서 동작할 수 있는 캐시에서 사용하기 위한 복수의 상이한 필드들을 포함한다. 이들 필드들은 태그 어레이(예를 들어, 도 4의 태그 어레이(406)) 또는 캐시 내의 다른 위치들에 저장될 수 있다. 일 구현예에서, 태그 필드(502)는 대응하는 캐시 라인의 어드레스의 태그 부분을 포함한다. 구현예에 따라, 메타데이터 필드(504)는 유효한 비트, 허가들, 속성들, 및/또는 대응하는 캐시 라인과 연관된 다른 정보를 포함한다.
일 구현예에서, 반전된 필드(508)는 캐시 라인의 데이터가 반전된 상태로 저장되는지 여부를 지정하는 표시를 포함한다. 캐시 제어기는 캐시 라인에 액세스하기 위해 캐시 라인으로부터 검색된 데이터를 반전할지 여부를 결정하기 위해 반전된 필드(508)에 질의한다. 제1 판독 필드(510)는 판독이 채워진 이후 캐시 라인에 대해 수행되었는지 여부를 지정하는 표시를 포함한다. 캐시 제어기는 채우기 시 제1 판독 필드(510)를 클리어하고, 제1 판독 필드(510)는 제1 판독 후에 설정된다. 대안적으로, 또 다른 구현예에서, 반전된 필드(508)는 제1 판독이 발생했는지 여부를 표시하는 역할을 한다. 이 구현예에서, 반전된 필드(508)가 제1 값(예를 들어, 0)이면, 이는 데이터가 반전되지 않았고, 제1 판독이 발생하지 않았다는 것을 의미한다. 반전된 필드(508)가 제2 값(예를 들어, 1)인 경우, 이는 데이터가 반전되었고, 제1 판독이 발생했다는 것을 의미한다. 이 구현예에서, 제1 판독 필드(510)는 태그 어레이 엔트리(500)에서 생략될 수 있다.
캐시 라인이 채워진 후 처음으로 판독될 때, 캐시 제어기는 데이터를 반전시킨 다음 반전된 데이터를 데이터 어레이의 엔트리에 다시 기록한다. 캐시 제어기는 또한 캐시 라인에 대해 저장된 체크비트들에 기초하여 캐시 라인(캐시 라인의 제1 판독 이후)에 대한 비트 오류들의 수를 계산한다. 일 실시예에서, 캐시 제어기는 비트 오류 필드(512)에 비트 오류들의 수를 저장한다. 또 다른 실시예에서, 비트 오류들의 수는 선택된 오류 보호 레벨 필드(506)에 의해 추론될 수 있고 필드(512)에 저장될 필요가 없다.
캐시 라인의 제2 판독에서, 반전된 데이터가 데이터 어레이에서 판독될 것이다. 캐시 제어기는 반전된 데이터에 대해 생성된 체크비트들을 사용함으로써 반전된 데이터의 오류들의 수를 결정할 것이다. 일 실시예에서, 캐시 라인의 총 비트 오류들의 수는 반전된 데이터 및 필드(512)의 원래의 데이터에 대한 비트 오류들의 합과 동일하다. 반전된 데이터의 비트 오류들의 수가 0이 아니면, 캐시 제어기가 하나 이상의 마스킹된 결함들을 발견한 것이며, 캐시 제어기는 캐시 라인을 보호하는 데 사용되는 오류 보호 체계(error protection scheme)를 보수적으로 증가시킨다. 일부 경우들에서, 캐시 제어기는 총 비트 오류들의 수가 임계값보다 큰 경우 캐시 라인을 사용할 수 없거나 비활성화된 것으로 표시할 수 있다. 또한, 일부 구현예들에서, 캐시 제어기는 이들 단계들을 수행하고 캐시를 동작하는 데 사용되는 다중의 상이한 주파수/전압 조합들에 대한 상이한 오류 정보를 저장할 수 있다.
이제 도 6을 참조하면, 채우기 후 캐시 라인에 대한 제1 판독을 처리하는 캐시(600)의 일 구현예의 블록도가 도시되어 있다. 일 구현예에서, 캐시 제어기(604)는 주어진 메모리 어드레스에 대한 판독 요청을 수신할 때 일치하는 엔트리를 찾기 위해 태그 어레이(602)에 액세스한다. 태그 어레이(602)에 대한 룩업이 적중(hit)을 초래하면, 캐시 제어기(604)는 태그 어레이(602)로부터 매칭 엔트리를 검색한다. 이 논의의 목적들을 위해 태그 어레이(602)에 대한 룩업이 엔트리(606)의 태그(607)와 일치한다고 가정된다. 이는 또한 주어진 메모리 어드레스의 데이터가 캐시(600)에 할당되었기 때문에 주어진 메모리 어드레스에 대한 제1 판독이라고 가정된다. 일 구현예에서, 태그 어레이(602)의 매칭 엔트리의 필드(613)는 실제 애플리케이션을 실행하는 프로세서에 의한 채우기 이후 캐시 라인의 제1 판독이라는 표시를 캐시 제어기(604)에 제공한다.
엔트리(606)에 대한 적중 검출에 응답하여, 캐시 제어기(604)는 또한 엔트리(606)로부터 오류 보호 레벨(609)을 검색한다. 오류 보호 레벨(609)은 태그 어레이 엔트리(606)에 대응하는 데이터 어레이 엔트리(620)를 보호하기 위해 현재 사용되고 있는 오류 보호의 레벨(예를 들어, SEC-DED, DEC-TED)을 지정한다. 또한 엔트리(606)에 대한 적중 검출에 응답하여, 캐시 제어기(604)는 데이터 어레이(612)의 대응하는 엔트리(620)로부터 데이터를 검색하고 캐시 제어기(604)는 체크비트들(622)을 검색한다. 체크비트들(622)은 일 구현예에서 캐시 라인 데이터와 동일한 데이터 어레이 엔트리(620)에 저장될 수 있지만, 체크비트들(622)은 다른 구현예들에서 다른 위치들에 저장될 수 있다. 데이터 어레이(612)의 엔트리(620)의 일부인 체크비트들(622)의 예시는 단지 일 구현예를 대표하고 체크비트들(622)을 다른 위치들(예를 들어, 전용 ECC 어레이)에 저장하는 것을 배제하지 않는다는 것을 이해해야 한다. 캐시 제어기(604)는 데이터 어레이(612)의 엔트리(620)로부터 검색된 데이터의 비트 오류들의 수를 계산하기 위해 체크비트들(622)을 사용한다. 일 구현예에서, 캐시 제어기(604)는 태그 어레이(602)의 엔트리(606)의 원래의 비트 오류들 필드(615)에 비트 오류들의 수의 표시를 저장한다. 임의의 유형의 인코딩은 태그 엔트리(606)의 필드(615)에서 비트 오류들의 수의 표시를 인코딩하는 데 사용될 수 있다.
또한, 인버터들(630)은 반전된 데이터(635)를 생성하기 위해 데이터 어레이 엔트리(620)로부터 검색된 비반전 데이터(625)를 반전시킨다. 그 다음 반전된 데이터(635)가 동일한 데이터 어레이 엔트리(620)에 다시 기록되고, 반전된 필드(611)와 제1 판독 필드(613)가 (프로세서에 의해) 제1 판독이 엔트리(620)에 수행되었음을 나타내도록 설정된다. 반전된 필드(611)를 설정함으로써, 이는 엔트리(620)가 반전된 데이터(635)를 저장함을 나타낸다. 비반전 데이터(625)에 임의의 수정가능한 오류들이 있는 경우, 이들 오류들은 반전된 데이터(635)를 생성하기 전에 수정될 수 있으며 오류 처리기는 수정가능한 오류들을 기록할 수 있다는 점에 유의한다. 임의의 수정가능하지 않는 오류들이 있는 경우, 오류 처리기는 호출될 수 있다. 임의의 유형의 오류 처리기는 사용될 수 있으며, 오류 처리기의 유형은 구현예마다 다르다. 또한, 체크비트들은 반전된 데이터(635)에 기초하여 재생성되고, 이들 재생성된 ECC 비트들은 원래의 체크비트들(622) 위에 재기록된다.
주어진 메모리 어드레스에 대한 제2 판독에서, 엔트리(620)가 액세스되고 반전된 데이터(635) 및 재생성된 체크비트들(622)이 검색된다. 캐시 제어기(604)는 얼마나 많은 오류들이 검색된 반전된 데이터(635)에 포함되어 있는지를 결정하기 위해 재생성된 체크비트들(622)을 사용한다. 또한, 캐시 제어기는 반전된 데이터(635)의 임의의 수정가능한 오류들을 수정한 다음, 인버터들(630)이 데이터를 원래의 상태로 다시 반전한다. 그 다음 원래의 상태의 데이터는 요청자(예를 들어, 프로세서 코어)에게 제공된다. 일 구현예에서, 원래의 상태의 데이터는 엔트리(620)에 다시 기록되고, 체크비트들(622)은 재생성되고, 반전된 필드(611)는 데이터가 비반전된 상태로 저장되었음을 나타내도록 클리어된다. 반전된 데이터(635)의 오류들의 수가 0이 아닌 경우, 캐시 제어기(604)는 엔트리(620)를 보호하는 데 사용되는 오류 보호 레벨을 증가시킨다. 예를 들어, 이전 오류 보호 레벨이 SEC-DED 코드를 사용했을 경우, 새로운 오류 보호 레벨은 반전된 데이터(635)의 오류들의 수가 1개라면 DEC-TED 코드를 사용할 수 있다. 캐시 제어기(604)가 엔트리(620)를 보호하는 데 사용되는 오류 보호 레벨을 증가시킬 때, 캐시 제어기(604)는 보호의 이 증가된 레벨의 표시를 기록하기 위해 오류 보호 레벨 필드(609)를 업데이트한다.
이제 도 7을 참조하면, 신뢰할 수 있는 저전압 캐시 동작을 위해 마스킹된 결함 검출을 사용하기 위한 방법(700)의 일 구현예가 도시되어 있다. 논의의 목적들을 위해, 이 구현예의 단계들과 도 8 및 도 9의 단계들이 순차적으로 도시되어 있다. 그러나, 설명된 방법의 다양한 실시형태에서, 설명된 요소 중 하나 이상이 동시에 수행되거나, 도시된 것과 다른 순서로 수행되거나 전체적으로 생략될 수 있다는 점에 유의해야 한다. 또한, 다른 추가 요소가 원하는 대로 수행된다. 본 명세서에 설명된 임의의 다양한 시스템들 또는 장치들은 방법(700)을 구현하도록 구성된다.
캐시 제어기는 채우기에 이은 주어진 캐시 라인의 제1 판독을 검출한다(블록(705)). 본 명세서에서 사용된 바와 같이, 용어 "제1 판독"은 주어진 캐시 라인이 캐시에 할당된 후 주어진 캐시 라인의 어드레스를 대상으로 하는 판독 요청이 캐시 제어기에 의해 수신되는 제1 시간으로 정의된다. 이 논의의 목적들을 위해 판독 요청이 실제 사용자 소프트웨어 애플리케이션을 실행하는 프로세서에 의해 생성된다고 가정된다. 주어진 캐시 라인의 제1 판독을 검출한 것에 응답하여, 캐시 제어기는 주어진 캐시 라인에서 검출된 오류들의 수의 표시를 기록한다(블록(710)). 또한 주어진 캐시 라인의 제1 판독을 검출한 것에 응답하여, 캐시 제어기는 주어진 캐시 라인의 데이터를 반전시키고 반전된 데이터를 다시 주어진 캐시 라인에 기록한다(블록(715)). 다음으로, 캐시 제어기는 주어진 캐시 라인이 반전된 데이터를 저장한다는 표시를 저장한다(블록(720)). 그 다음, 캐시 제어기는 반전된 데이터에 대한 오류 정정 비트들을 재생성하고 재생성된 오류 정정 비트들로 캐시 라인에 대한 원래의 오류 정정 비트들을 덮어쓴다(블록(725)).
나중 시점에서, 캐시 제어기는 채우기 이후 주어진 캐시 라인의 제2 판독을 검출한다(블록(730)). 주어진 캐시 라인의 제2 판독 검출에 응답하여, 캐시 제어기는 반전된 데이터의 비트 오류들의 수를 계산한다(블록(735)). 반전된 데이터의 비트 오류들의 수가 주어진 캐시 라인의 제2 판독 후 0보다 큰 경우(조건 블록(740), "예" 레그), 그 다음 캐시 제어기는 주어진 캐시 라인을 보호하기 위해 사용되는 오류 보호 레벨을 업그레이드한다(블록(745)). 그렇지 않으면, 반전된 데이터에 대한 비트 오류 카운트가 주어진 캐시 라인의 제2 판독 후 0이면(조건부 블록(740), "아니오" 레그), 그 다음 캐시 제어기는 주어진 캐시 라인을 보호하기 위해 원래의 오류 보호 레벨을 유지한다(블록(750)). 블록들 (745 및 750) 후에, 방법(700)은 종료한다.
또 다른 실시예에서, 캐시 라인의 비트 오류들의 총 수는 캐시 라인 내에 오류들의 상대 위치를 사용하여 추정된다. 위의 시나리오에서, 동일한 캐시 스토리지 셀이 비반전된 상태와 반전된 상태 모두에 대해 실패하는 경우, 두 번 카운트되어 두 개의 뚜렷한 결함들을 갖는 라인을 보수적으로 표시하도록 초래할 수 있다. 이 방법을 개선하기 위해, 일 구현예에서, ECC 로직에 의해 생성된, 비반전된 상태 신드롬(syndrome)은 ECC 캐시(408) 또는 비반전된 데이터가 처음으로 캐시 데이터 어레이에 저장 될 때 데이터 어레이(612)에 저장된다. 단계(735)에서, 반전된 데이터의 신드롬이 생성되고, 단계(740)에서, XOR 동작은 비반전된 상태의 신드롬과 반전된 상태의 신드롬 사이에 수행된다. XOR이 0을 초래하는 경우, 이는 반전된 상태 및 비반전된 상태의 모든 결함들이 동일한 비트 위치들에서 발생했음을 의미하며, 따라서 오류들의 수가 반전된 데이터로 변경되지 않았으며 오류 보호 레벨이 동일하게 유지될 수 있음을 가정한다. 이는 조건부 블록(740)에서 블록(750)까지 "아니오" 레그에 대응한다. 그러나, 비반전된 상태와 반전된 상태의 신드롬들 사이의 XOR 동작에 대한 0이 아닌 결과에서, 이는 반전된 데이터의 일부 또는 모든 결함들이 비반전된 데이터의 결함들과 상이한 위치들에서 발생함을 의미한다. 그러므로 라인은 반전된 데이터에서 검출된 오류들의 수(조건부 블록(740)에서 블록(745)으로의 "예" 레그에 대응)와 동일한 다수의 추가 결함들을 갖는 것으로 표시될 것이며 오류 보호 레벨이 높아질 것이다.
이제 도 8로 전환하면, 캐시 라인 오류 보호 레벨들의 조정을 위한 방법(800)의 일 구현예가 도시된다. 캐시 제어기는 캐시에서 할당 시 주어진 캐시 라인을 보호하기 위해 제1 오류 보호 레벨을 사용한다(블록(805)). 제1 오류 보호 레벨은 구현예마다 다른 임의의 다양한 레벨들일 수 있다. 예를 들어, 상이한 가능 오류 보호 레벨들은 SEC-DED 코드들, DEC-ETD 코드들, TEC-QED 코드들 등을 사용하는 레벨들을 포함한다. 주어진 캐시 라인을 제1 오류 보호 레벨로 보호하는 목적은 주어진 캐시 라인의 임의의 비트 오류들을 검출하고 정정하여 잘못된 데이터 및/또는 명령어들이 호스트 프로세서로 발송되는 것을 방지하는 것이다.
다음으로, 캐시 제어기는 주어진 캐시 라인에 대한 제1 및 제2 판독들을 검출하며, 여기서 주어진 캐시 라인의 데이터가 반전되고 제1과 제2 판독들 사이의 동일한 데이터 어레이 엔트리로 다시 저장된다(블록(810)). 제1 및 제2 판독들은 호스트 프로세서에서 실행되는 실제 런타임 애플리케이션에 의해 시작된 판독 액세스들(즉,로드 동작들)을 지칭한다는 점에 유의해야 한다. 이는 실제 애플리케이션에서 캐시가 사용되지 않을 때 실행되는 오프라인 캐시 테스트 체계들인 메모리 내장 자체-테스트(MBIST) 체계들과 대조적이다. 또한, 오류 정정 데이터는 제1 판독 이후 주어진 캐시 라인의 반전된 데이터에 대해 업데이트된다(블록(815)).
주어진 캐시 라인의 총, 추정된 결함 모집단(population)이 실제 런타임 애플리케이션(조건부 블록(820),"예"레그)에 의해 제1 및 제2 판독들 사이에서 변경되는 경우, 그 다음 캐시 제어기는 주어진 캐시 라인의 제2 오류 보호 레벨을 사용하여 스위칭하고, 여기서 제2 오류 보호 레벨은 제1 오류 보호 레벨과 상이하다(블록(820)). 그렇지 않으면, 주어진 캐시 라인의 총, 추정된 결함 모집단이 실제 런타임 애플리케이션에 의해 제1 및 제2 판독들(제2 판독 동안 결함들이 검출되지 않음) 사이에 동일하게 유지되는 경우(조건부 블록(815),"예"레그), 그 다음 캐시 제어기는 주어진 캐시 라인의 제1 오류 보호 레벨을 계속 사용한다(블록(825)). 블록들(815 및 825) 후, 방법(800)은 종료한다. 일 구현예에서, 용어 "결함 모집단"은 다수의 비트 오류들로 정의된다. 또 다른 구현예에서, 용어 "결함 모집단"은 다수의 비트 오류들과 비트 오류들의 위치들로 정의된다.
방법(800)(및 본 명세서에 설명된 다른 방법들)은 MBIST 기술들과 함께 또는 MBIST 기술들 대신에 사용될 수 있다는 점에 유의한다. 예를 들어, 컴퓨팅 시스템 또는 디바이스는 방법(800)(다른 방법들에 대한)을 사용함으로써 MBIST 회로부를 생략하고 영역 절약들을 달성할 수 있다. 대안적으로, 방법(800)은 MBIST 기술들을 증강시키는 데 사용될 수 있다. 예를 들어, 일 구현예에서, 서버는 부팅시 캐시 라인 비트 결함들을 확인하는 MBIST 회로부를 포함한다. 그러나, 이 서버는 재부팅없이 오랫동안 실행할 수 있으며, 노후화-관련 오류들(또는 다른 유형들의 오류들)은 초기 부팅 후 캐시들에서 발생할 수 있다. 이 구현예에서, 서버는 이들 유형들의 캐시 비트 오류들을 검출하고 완화하기 위해 방법(800)(또는 본 명세서에 설명된 또 다른 방법)을 구현할 수 있다.
이제 도 9를 참조하면, 캐시 라인들에서 결함들을 추적하기 위한 방법(900)의 일 구현예가 도시되어 있다. 캐시 제어기는 캐시 라인의 제1 판독 이후 비트 오류들의 제1 수와 비트 오류들의 제1 위치들을 기록한다(블록(905)). 이 논의의 목적들로 오류 정정 체계는 캐시 라인 내에 비트 오류들의 위치들을 검출할 수 있도록 사용된다고 가정된다. 또한 이 논의의 목적들로 비트 오류들의 수는 비트 오류들의 위치들이 결정될 수 있을 정도로 충분히 낮다고 가정된다. 예를 들어, 캐시 라인의 비트 오류들의 제1 위치는 일 구현예에서 3 번째 비트 위치 및 11 번째 비트 위치일 수 있다. 오류들을 갖는 비트 위치들의 위치들이 검출될 때, 이들 위치들은 캐시 제어기에 의해 인코딩되고 저장된다. 공유 스토리지 영역은 일 구현예에서 비트 오류들의 제1 수 및 비트 오류들의 제1 위치들을 기록하는 데 사용될 수 있다는 점에 유의한다. 다시 말해서, 캐시 제어기는 캐시의 모든 캐시 라인들에 대한 비트 오류 위치들을 기록하기 위해 스토리지를 포함할 필요가 없으며, 오히려 캐시 제어기는 제한된 수의 캐시 라인들에 대한 비트 오류 데이터를 저장하기 위해 비교적 작은 스토리지 영역을 유지할 수 있다. 주어진 캐시 라인에 대한 결함 모집단 데이터가 더 이상 필요하지 않을 때, 메모리 위치들은 또 다른 캐시 라인과 연관된 결함 모집단 데이터에 대해 재사용될 수 있다.
캐시 라인의 제1 판독 이후, 캐시 제어기는 캐시 라인의 데이터를 반전시키고 반전된 데이터의 오류 정정 데이터를 재생성한다(블록 (910)). 다음으로, 캐시 제어기는 캐시 라인의 원래의 오류 정정 데이터 및 원래의 데이터 각각에 대해 반전된 데이터 및 재생성 오류 정정 데이터를 다시 기록한다(블록(915)). 그 다음, 캐시 제어기는 캐시 라인의 제2 판독 이후 비트 오류들의 제2 수와 비트 오류들의 제2 위치들을 기록한다(블록(920)). 비트 오류들의 제2 위치들이 비트 오류들의 제1 위치들(조건부 블록(925), "아니오"레그)과 매칭되지 않는 경우, 그 다음 캐시 제어기는 비트 오류들의 제1 및 제2 위치들 사이의 다수의 미스매칭들에 기초하여 전체 결함 수를 계산하고 저장한다(블록(930)).
예를 들어, 4 번째 비트 위치에서 제1 판독 후 단일 비트 오류가 있고, 9 번째 비트 위치에서 제2 판독 후 단일 비트 오류가 있는 경우, 이는 두 가지 결함들이 있음을 나타낸다. 이 경우에서, 결함들의 수는 제1과 제2 판독들에 대한 오류들 수들의 합과 동일하다. 캐시 제어기가 제1 또는 제2 판독 후에 총 비트 오류들의 수만 살펴보고 (두 경우들 모두 1) 비트 오류들의 수가 제1 및 제2 판독들 후에 동일하게 유지되는 것을 보았을 경우, 캐시 제어기는 결함들의 수에 대한 잘못된 값을 계산할 수 있다. 일부 마스킹된 결함들은 0이 비트 위치에 저장되는 경우에만 검출될 수 있지만 다른 마스킹된 결함들은 1이 비트 위치에 저장된 경우에만 검출될 수 있다. 캐시 제어기는 데이터 값들이 반전된 후 오류들의 위치들의 변경들을 추적함으로써 이들 마스킹된 결함들의 위치들을 발견할 수 있다. 또 다른 예에서, 5 번째 비트 위치에서 제1 판독 후 단일 비트 오류가 있고, 5 번째 비트 위치에서 제2 판독 후 단일 비트 오류가 있는 경우, 이는 마스킹되지 않은 결함이 하나만 있음을 나타낸다. 이 경우에서, 총 결함들의 수는 제1및 제2 판독들에 대한 고유한 오류들의 수와 동일하다.
블록(930) 이후, 캐시 제어기는 총 결함들의 수에 기초하여 캐시 라인에 대한 오류 보호 레벨을 선택한다(블록(935)). 일반적으로 말하자면, 캐시 제어기는 총 결함들의 수가 증가함에 따라 오류 보호 레벨을 증가시킨다. 또 다른 방법으로, 캐시 제어기는 캐시 라인의 총 결함들의 수가 감소함에 따라 캐시 라인에 대한 오류 보호 레벨을 감소시킨다. 일부 경우들에서, 총 결함들의 수가 임계값보다 큰 경우, 캐시 제어기는 추가 사용에서 캐시 라인을 비활성화한다. 블록(935) 후, 방법(900)은 종료된다. 그렇지 않으면, 비트 오류들의 제2 위치들이 비트 오류들의 제1 위치(조건부 블록(925), "예"레그)와 매칭되는 경우, 캐시 제어기는 종래 방식으로 총 결함들의 수를 계산한다(블록(940)). 블록(940) 후, 방법(900)은 종료된다.
이제 도 10으로 전환하면, 캐시에 저장된 데이터에 대한 오류 보호 레벨을 업데이트하기 위한 방법(1000)의 일 구현예가 도시되어 있다. 캐시 제어기는 메모리로부터의 데이터의 제1 판독을 검출하는 데 응답하여, 반전된 데이터로 메모리의 엔트리에 저장된 데이터를 대체한다(블록(1005)). 다음으로, 캐시 제어기는 적어도 하나의 오류가 반전된 데이터에서 검출될 때 데이터에 사용되는 오류 보호 레벨을 변경한다(블록(1010)). 예를 들어, 일 구현예에서, 캐시 제어기는 반전된 데이터에서 검출된 오류들의 수가 0이 아닌 경우 데이터의 제2 판독 후 오류 보호 레벨을 증가시킨다. 오류 보호 레벨을 증가시키면 오류들을 검출하고 정정하는 능력을 향상시키는 것을 의미한다. 예를 들어, 원래의 오류 보호 레벨이 하나의 오류를 수정할 수 있는 경우, 보호 레벨의 증가된 예는 다중 오류들을 수정할 수 있는 것이다. 일반적으로, 오류 보호 레벨을 증가시키는 것은 데이터에 대해 생성되고 저장되는 체크비트들의 수를 늘리는 것을 포함한다. 데이터는 오류 보호 레벨이 변경된 후 반전 또는 비반전 상태에 저장될 수 있다는 점에 유의한다. 블록(1010) 후, 방법(1000)은 종료된다.
다양한 실시형태에서, 소프트웨어 애플리케이션의 프로그램 명령은 본 명세서에 설명된 방법 및/또는 메커니즘을 구현하기 위해 사용된다. 예를 들어, 일반적인 프로세서 또는 특수 목적 프로세서에 의해 실행 가능한 프로그램 명령이 고려된다. 다양한 구현예들에서, 그러한 프로그램 명령어는 고급 프로그래밍 언어로 표현될 수 있다. 다른 구현에서, 프로그램 명령어는 고급 프로그래밍 언어에서 바이너리, 중간 또는 다른 형식으로 컴파일링될 수 있다. 대안적으로, 하드웨어의 동작이나 설계를 설명하는 프로그램 명령어가 기록될 수 있다. 이러한 프로그램 명령어는 C와 같은 고급 프로그래밍 언어로 표현될 수 있다. 대안적으로, 베리로그(Verilog)와 같은 하드웨어 설계 언어(HDL)가 사용될 수 있다. 다양한 실시형태에서, 프로그램 명령은 다양한 비일시적 컴퓨터 판독가능한 저장 매체 중 하나에 저장된다. 저장 매체는 사용과정에 계산 시스템에 의해 액세스가능하여 프로그램을 실행하기 위해 계산 시스템에 프로그램 명령을 제공할 수 있다. 일반적으로 말하면, 이러한 계산 시스템은 적어도 하나 이상의 메모리 및 프로그램 명령을 실행하도록 구성된 하나 이상의 프로세서를 포함한다.
전술한 구현은 구현의 비제한적인 예일 뿐이라는 것이 강조되어야 한다. 상기 개시 내용이 완전히 이해되면, 당업자는 복수의 변형 및 수정이 명백해질 것이다. 이하의 특허청구범위는 이러한 모든 변형 및 수정을 포함하도록 해석되는 것으로 의도된다.
Claims (20)
- 캐시(cache)에 있어서,
메모리(memory);
캐시 제어기(cache controller)를 포함하고, 상기 캐시 제어기는:
상기 메모리로부터의 데이터의 제1 판독을 검출하는 것에 응답하여, 상기 메모리의 엔트리(entry)에 저장된 데이터를 반전된 데이터(inverted data)로 대체하고; 및
오류가 상기 데이터의 제2 판독 후 상기 반전된 데이터에서 검출될 때 상기 데이터에 대해 사용되는 오류 보호 레벨(error protection level)을 변경하도록 구성되는, 캐시. - 제1항에 있어서, 상기 오류 보호 레벨은 프로세서에서 실행되는 애플리케이션에 의해 개시된 상기 데이터의 제2 판독에 응답하여 변경되는, 캐시.
- 제1항에 있어서, 상기 캐시 제어기는:
상기 데이터의 상기 제1 판독 이후 상기 데이터에 대한 비트 오류들의 제1 수의 표시를 기록하고;
상기 데이터의 상기 제2 판독을 수행하는 것에 응답하여 상기 데이터에 대한 비트 오류들의 제2 수를 결정하고 - 상기 비트 오류들의 제2 수는 상기 반전된 데이터에 대응하는 재생성된 오류 정정 비트들에 기초하여 결정됨-;및
상기 비트 오류들의 제2 수가 0이 아닌 경우, 상기 데이터 보호에 사용되는 상기 오류 보호 레벨을 증가시키도록 더 구성되는, 캐시. - 제3항에 있어서, 하나 이상의 마스킹된 결함(masked fault)들은 상기 데이터를 반전시키고 상기 반전된 데이터의 상기 제2 판독을 수행하는 것에 기초하여 발견되는, 캐시.
- 제4항에 있어서, 상기 데이터에 대한 다수의 마스킹된 결함들은 상기 비트 오류들의 제2 수와 동일한, 캐시.
- 제1항에 있어서, 상기 엔트리는 제1 캐시 라인이고, 상기 캐시 제어기는 상기 제1 캐시 라인에 대한 상기 오류 보호 레벨의 변경의 표시를 저장하도록 구성되는, 캐시.
- 제6항에 있어서, 상기 캐시 제어기는 제1 판독 이후 반전된 상태에 데이터를 저장함에 따라 상기 제1 캐시 라인을 태깅하도록 더 구성되는, 캐시.
- 방법으로서,
캐시 제어기에 의해, 메모리로부터의 데이터의 제1 판독을 검출하는 것에 응답하여, 상기 메모리의 엔트리에 저장된 상기 데이터를 반전된 데이터로 대체하는 단계; 및
오류가 상기 데이터의 제2 판독 후 상기 반전된 데이터에서 검출될 때 상기 데이터에 대해 사용되는 오류 보호 레벨을 변경하는 단계를 포함하는, 방법. - 제8항에 있어서, 상기 오류 보호 레벨은 프로세서에서 실행되는 애플리케이션에 의해 개시된 상기 데이터의 상기 제2 판독에 응답하여 변경되는, 방법.
- 제8항에 있어서,
상기 데이터의 상기 제1 판독 후 상기 데이터에 대한 비트 오류들의 제1 수의 표시를 기록하는 단계;
상기 데이터의 상기 제2 판독을 수행하는 것에 응답하여 상기 데이터에 대한 비트 오류들의 제2 수를 결정하는 단계 - 상기 비트 오류들의 제2 수는 상기 반전된 데이터에 대응하는 재생성된 오류 정정 비트들에 기초하여 결정됨-;
상기 비트 오류들의 제2 수가 0이 아닌 경우, 상기 데이터 보호에 사용되는 상기 오류 보호 레벨을 증가시키는 단계를 더 포함하는, 방법. - 제10항에 있어서, 하나 이상의 마스킹된 결함들은 상기 데이터를 반전시키고 상기 반전된 데이터의 상기 제2 판독을 수행하는 것에 기초하여 발견되는, 방법.
- 제11항에 있어서, 상기 제1 데이터에 대한 다수의 마스킹된 결함들은 상기 비트 오류들의 제2 수와 동일한, 방법.
- 제8항에 있어서, 상기 엔트리는 제1 캐시 라인이고, 상기 방법은 상기 제1 캐시 라인에 대한 상기 오류 보호 레벨의 변경의 표시를 저장하는 단계를 더 포함하는, 방법.
- 제13항에 있어서, 상기 제1 판독 이후 반전된 상태에 데이터를 저장함에 따라 상기 제1 캐시 라인을 태깅하는 단계를 더 포함하는, 방법.
- 시스템으로서,
프로세서; 및
캐시를 포함하고, 상기 캐시는:
상기 프로세서에서 실행되는 애플리케이션에 의해 메모리로부터의 데이터의 제1 판독을 검출하는 것에 응답하여, 상기 메모리의 엔트리에 저장된 상기 데이터를 반전된 데이터로 대체하고; 및
오류가 상기 데이터의 제2 판독 후 상기 반전된 데이터에서 검출될 때 상기 데이터에 대해 사용되는 오류 보호 레벨을 변경하도록 구성되는, 시스템. - 제15항에 있어서, 상기 오류 보호 레벨은 상기 애플리케이션에 의해 개시된 상기 데이터의 상기 제2 판독에 응답하여 변경되는, 시스템.
- 제15항에 있어서, 상기 캐시는:
상기 데이터의 상기 제1 판독 후 상기 데이터에 대한 비트 오류들의 제1 수의 표시를 기록하고;
상기 데이터의 제2 판독을 수행하는 것에 응답하여 상기 데이터에 대한 비트 오류들의 제2 수를 결정하고 - 상기 비트 오류들의 제2 수는 상기 반전된 데이터에 대응하는 재생성된 오류 정정 비트들에 기초하여 결정됨-;
상기 비트 오류들의 제2 수가 0이 아닌 경우, 상기 데이터 보호에 사용되는 상기 오류 보호 레벨을 증가시키도록 더 구성되는, 시스템. - 제17항에 있어서, 하나 이상의 마스킹된 결함들은 상기 데이터를 반전시키고 상기 반전된 데이터의 상기 제2 판독을 수행하는 것에 기초하여 발견되는, 시스템.
- 제18항에 있어서, 상기 제1 데이터에 대한 다수의 마스킹된 결함들은 상기 비트 오류들의 제2 수와 동일한, 시스템.
- 제15항에 있어서, 상기 엔트리는 제1 캐시 라인이고, 상기 캐시는 상기 제1 캐시 라인에 대한 상기 오류 보호 레벨의 변경의 표시를 저장하도록 구성되는, 시스템.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063083399P | 2020-09-25 | 2020-09-25 | |
US63/083,399 | 2020-09-25 | ||
US17/125,145 | 2020-12-17 | ||
US17/125,145 US11509333B2 (en) | 2020-09-25 | 2020-12-17 | Masked fault detection for reliable low voltage cache operation |
PCT/US2021/043028 WO2022066274A1 (en) | 2020-09-25 | 2021-07-23 | Masked fault detection for reliable low voltage cache operation |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230070231A true KR20230070231A (ko) | 2023-05-22 |
Family
ID=80821533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237011033A KR20230070231A (ko) | 2020-09-25 | 2021-07-23 | 신뢰할 수 있는 저전압 캐시 동작을 위한 마스킹된 결함 검출 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11509333B2 (ko) |
EP (1) | EP4217869A1 (ko) |
JP (1) | JP2023549630A (ko) |
KR (1) | KR20230070231A (ko) |
CN (1) | CN116324730A (ko) |
WO (1) | WO2022066274A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11822484B2 (en) * | 2021-12-20 | 2023-11-21 | Advanced Micro Devices, Inc. | Low power cache |
KR20240015986A (ko) * | 2022-07-28 | 2024-02-06 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 메모리 컨트롤러를 포함하는 메모리 시스템 및 그것의 동작 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7069494B2 (en) * | 2003-04-17 | 2006-06-27 | International Business Machines Corporation | Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism |
DE102013211077B4 (de) * | 2013-06-13 | 2015-09-24 | Infineon Technologies Ag | Verfahren zum Testen eines Speichers und Speichersystem |
JP6540703B2 (ja) | 2014-07-24 | 2019-07-10 | ソニー株式会社 | メモリコントローラおよびメモリコントローラの制御方法 |
US9979416B2 (en) * | 2014-12-10 | 2018-05-22 | Rambus Inc. | Memory controller and method of data bus inversion using an error detection correction code |
KR20180087496A (ko) | 2017-01-23 | 2018-08-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US10379944B2 (en) | 2017-04-17 | 2019-08-13 | Advanced Micro Devices, Inc. | Bit error protection in cache memories |
US10908991B2 (en) | 2018-09-06 | 2021-02-02 | Advanced Micro Devices, Inc. | Bit error protection in cache memories |
US10884940B2 (en) | 2018-12-21 | 2021-01-05 | Advanced Micro Devices, Inc. | Method and apparatus for using compression to improve performance of low voltage caches |
-
2020
- 2020-12-17 US US17/125,145 patent/US11509333B2/en active Active
-
2021
- 2021-07-23 KR KR1020237011033A patent/KR20230070231A/ko unknown
- 2021-07-23 WO PCT/US2021/043028 patent/WO2022066274A1/en active Application Filing
- 2021-07-23 JP JP2023518233A patent/JP2023549630A/ja active Pending
- 2021-07-23 EP EP21783066.0A patent/EP4217869A1/en active Pending
- 2021-07-23 CN CN202180065326.0A patent/CN116324730A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11509333B2 (en) | 2022-11-22 |
JP2023549630A (ja) | 2023-11-29 |
CN116324730A (zh) | 2023-06-23 |
US20220103191A1 (en) | 2022-03-31 |
WO2022066274A1 (en) | 2022-03-31 |
EP4217869A1 (en) | 2023-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884940B2 (en) | Method and apparatus for using compression to improve performance of low voltage caches | |
US10789117B2 (en) | Data error detection in computing systems | |
US8091000B2 (en) | Disabling portions of memory with defects | |
US9229803B2 (en) | Dirty cacheline duplication | |
US10558519B2 (en) | Power-reduced redundant array of independent memory (RAIM) system | |
US20130339820A1 (en) | Three dimensional (3d) memory device sparing | |
US10908991B2 (en) | Bit error protection in cache memories | |
US9058290B2 (en) | Memory protection cache | |
US20120311248A1 (en) | Cache line lock for providing dynamic sparing | |
US20230393933A1 (en) | Error correcting codes for multi-master memory controller | |
CN103137215A (zh) | 向存储器提供低延时错误纠正码能力 | |
KR20230070231A (ko) | 신뢰할 수 있는 저전압 캐시 동작을 위한 마스킹된 결함 검출 | |
US20190042114A1 (en) | SELECTIVE BACKGROUND DATA REFRESH FOR SSDs | |
US6591393B1 (en) | Masking error detection/correction latency in multilevel cache transfers | |
US10379944B2 (en) | Bit error protection in cache memories | |
US9141552B2 (en) | Memory using voltage to improve reliability for certain data types | |
US8751898B2 (en) | Utilizing error correcting code data associated with a region of memory | |
US20140032855A1 (en) | Information processing apparatus and method | |
US7747896B1 (en) | Dual ported replicated data cache | |
KR20150062646A (ko) | 전자 시스템 및 이의 동작 방법 | |
JP2023039212A (ja) | メモリシステムおよび制御方法 | |
CN115599594A (zh) | 用于启用本地检查点和恢复的错误遏制 |