KR20160120323A - 메모리 제어기를 이용하여 데이터 에러 이벤트들을 핸들링하기 위한 방법, 장치 및 시스템 - Google Patents

메모리 제어기를 이용하여 데이터 에러 이벤트들을 핸들링하기 위한 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR20160120323A
KR20160120323A KR1020167025102A KR20167025102A KR20160120323A KR 20160120323 A KR20160120323 A KR 20160120323A KR 1020167025102 A KR1020167025102 A KR 1020167025102A KR 20167025102 A KR20167025102 A KR 20167025102A KR 20160120323 A KR20160120323 A KR 20160120323A
Authority
KR
South Korea
Prior art keywords
handler process
handler
memory
scrubbing
error event
Prior art date
Application number
KR1020167025102A
Other languages
English (en)
Other versions
KR101821515B1 (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 KR20160120323A publication Critical patent/KR20160120323A/ko
Application granted granted Critical
Publication of KR101821515B1 publication Critical patent/KR101821515B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)

Abstract

하나 이상의 예비 메모리 세그먼트를 포함하는 메모리를 포함하는 플랫폼에 대해 에러 검출 및 정정을 제공하기 위한 기술들 및 메커니즘들이 개시되어 있다. 실시예에서, 메모리 제어기는 복수의 현재 활성인 메모리 세그먼트에서의 에러들에 대한 검출을 포함하는 제1 스크러빙 동작들을 수행한다. 하나 이상의 메모리 세그먼트가 각각 교체 메모리 세그먼트로서 활성화를 위해 이용가능한 동안에 이러한 메모리 세그먼트들에 대해 부가적인 패트롤 스크러빙이 수행된다. 다른 실시예에서, 활성 세그먼트 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우에는 (제2 핸들러 프로세스가 아니라) 제1 핸들러 프로세스에 시그널링되는 한편, 예비 세그먼트 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우에는 (제1 핸들러 프로세스가 아니라) 제2 핸들러 프로세스에 시그널링된다. 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 제1 핸들러 프로세스에만 시그널링하는 것은 플랫폼의 크래시 이벤트를 초래한다.

Description

메모리 제어기를 이용하여 데이터 에러 이벤트들을 핸들링하기 위한 방법, 장치 및 시스템{METHOD, APPARATUS AND SYSTEM FOR HANDLING DATA ERROR EVENTS WITH MEMORY CONTROLLER}
본 발명의 실시예들은 일반적으로 컴퓨터 메모리 분야에 관한 것이며, 전적으로는 아니지만 더 구체적으로는 메모리 디바이스에서의 에러의 핸들링에 관한 것이다.
오늘날의 컴퓨팅 세계에서, 양호한 컴퓨터 시스템 신뢰성 및 가동시간(uptime)을 유지하는 것은 종종 중요하거나 심지어는 필수적이다. 상당한 컴퓨터 가동시간을 유지하기 위해서, 시스템 설계자들은 전체 시스템 신뢰성 및 이용가능성을 개선하기 위한 RASM(reliability, availability, serviceability, manageability) 피처들을 구축한다. 따라서, 이러한 시스템에서 상이한 레벨들로 이용되는 다양한 정도의 리던던시, 에러 정정, 에러 검출 및 에러 억제 기술들을 찾는 것이 일반적이다.
대부분의 일반적인 타입의 컴퓨터 시스템 장애 중 하나는 시스템 메모리 에러들에 기인한다. 메모리 디바이스들은 일시적(transient)(또는 소프트) 에러들과 같은 에러들에 취약하다. 이러한 에러들이 적절하게 핸들링되지 않는 경우, 이들은 컴퓨팅 시스템이 오작동하게 할 수 있다. 그에 따라, 메모리 서브시스템(특히 듀얼 인라인 메모리 모듈들 또는 DIMM들)은 이와 관련하여 특정 통지를 수신한다. 예를 들어, 전체 시스템 신뢰성을 개선하기 위해 메모리 스크러빙 동작들(memory scrubbing operations)에서 에러 정정 코드들(ECC들)의 형태의 중복 정보 또는 다른 이러한 에러 정정 정보가 이용될 수 있다. 요구 메모리 스크러빙(demand memory scrubbing)은 하나의 에러 검출/정정 기술인데, 여기서 단일-비트 에러들인지 또는 멀티-비트 에러들인지 간에, 메모리 세그먼트에서의 에러들은 이 메모리 세그먼트에 액세스하기 위한 호스트 운영 체제의 요청들을 서비스하는 동작 중에 검출될 수 있다. 대조적으로, 패트롤 메모리 스크러빙(patrol memory scrubbing)으로 알려진 다른 RASM 기술은, 메모리 세그먼트에 액세스하기 위한 임의의 이러한 호스트 운영 체제의 요청들 이전에 또는 다른 방식으로는 이러한 요청들에 독립적으로 에러들에 대하여 메모리 세그먼트를 선행적으로 스캔한다.
"메모리 스페어링(memory sparing)"으로 알려진 다른 RAS 기술은, 이용 중인(또는 "활성") 메모리 세그먼트의 실제 또는 예상된 장래 장애의 경우에 예비 세그먼트로서 서비스를 위해 각각 이용가능하게 될 하나 이상의 메모리 세그먼트를 할당한다. 에러 검출 또는 다른 메커니즘들이 이용 중인 메모리 세그먼트의 이러한 장애를 표시할 때, 페일드/페일링 세그먼트(failed/failing segment)에 대한 후속자(successor)의 역할을 하기 위해(이러한 세그먼트를 대체하기 위해) 예비 메모리 세그먼트가 할당된다. 시스템 메모리 맵은 후속자 세그먼트의 메모리 로케이션들과 어드레스들, 예를 들어 어드레스들의 범위를 연관시키기 위해 업데이트되는데, 이전에 이러한 어드레스들은 페일드/페일링 활성 세그먼트의 각각의 로케이션들을 다양하게 식별하도록 매핑되었다.
본 발명의 다양한 실시예들은 첨부 도면들에서 제한이 아니라 예로서 예시되어 있다.
도 1은 실시예에 따른 메모리 세그먼트들에 대한 액세스를 제공하기 위한 컴퓨터 플랫폼의 요소들을 예시하는 기능 블록도이다.
도 2는 실시예에 따른 메모리 에러 이벤트들을 시그널링하는 메모리 제어기의 요소들을 예시하는 기능 블록도이다.
도 3은 실시예에 따른 메모리 에러 이벤트를 핸들링하는 동작들을 호출하기 위한 방법의 요소들을 예시하는 흐름도이다.
도 4a 및 도 4b는 실시예에 따른 메모리 에러 이벤트를 핸들링하기 위한 방법의 요소들을 각각 예시하는 흐름도들이다.
도 4c는 실시예에 따라 수행되는 메모리 세그먼트 할당의 요소들을 예시하는 기능 블록도이다.
도 5a 및 도 5b는 실시예에 따른 메모리 에러 이벤트를 핸들링하기 위한 방법의 요소들을 각각 예시하는 흐름도들이다.
도 5c는 실시예에 따라 수행되는 메모리 세그먼트 할당의 요소들을 예시하는 기능 블록도이다.
도 6은 실시예에 따른 메모리를 제어하기 위한 컴퓨터 시스템의 요소들을 예시하는 기능 블록도이다.
도 7은 실시예에 따른 메모리를 제어하기 위한 모바일 플랫폼의 요소들을 예시하는 기능 블록도이다.
본 명세서에서 논의된 실시예들은 하나 이상의 예비 메모리 세그먼트를 포함하는 플랫폼에서의 에러 검출을 제공한다. 본 명세서에서 이용된 바와 같이, "메모리 세그먼트"는, 하나 이상의 측면에서, 유사한 메모리 하드웨어 유닛들에 독립적으로 동작할 수 있는 메모리 하드웨어의 유닛을 지칭한다. 메모리 세그먼트는 랭크, 뱅크 또는 다른 메모리 하드웨어 컴포넌트를 포함할 수 있고, 예를 들어 이 컴포넌트는 다수의 다양하게 어드레싱가능한 메모리 로케이션들을 포함한다. 메모리 세그먼트는 하나 이상의 다른 메모리 세그먼트가 아니라 그 세그먼트에만 결합하는데 전용인 인터페이스 하드웨어를 포함하거나 이러한 인터페이스 하드웨어에 결합될 수 있고, 그 세그먼트와 메모리 제어기 사이에 버스 또는 다른 인터커넥트(interconnect)가 결합된다. 대안적으로 또는 추가적으로, 메모리 세그먼트는 전용 칩 인에이블 입력, 어드레스 디코더 또는 다른 로직을 포함할 수 있다. 특정 실시예들의 피처들이 개별적인 메모리 랭크들에 대한 메모리 스페어링 및/또는 메모리 스크러빙을 다양하게 구현하는 것과 관련하여 본 명세서에서 논의된다. 그러나, 이러한 논의는 각종의 다른 타입의 메모리 세그먼트들 중 임의의 것에 추가적으로 또는 대안적으로 적용하도록 확장될 수 있다.
주어진 메모리 세그먼트는 예를 들어 호스트 운영 체제(OS) 또는 다른 에이전트가 그 메모리 세그먼트에 현재 액세스할 수 있는지에 기초하여 활성 또는 예비 중 어느 하나로서 분류될 수 있다. 예비 세그먼트는 페일드 세그먼트 또는 페일링 세그먼트로서 식별된 다른 메모리 세그먼트에 대한 교체물의 역할을 하도록 궁극적인 활성화를 위해 이용가능할 수 있다. 간결성을 위해, 이러한 세그먼트는 "페일드/페일링"으로 본 명세서에서 지칭된다. 스크러빙 동작들은 상이한 실시예들에 따라 메모리의 하나 이상의 세그먼트에서 에러들을 검출하도록 그리고 일부 실시예들에서는 이러한 에러들을 정정하도록 다양하게 수행될 수 있다. 특정 실시예들은, ECC들 또는 다른 이러한 에러 정정 정보가 다양하게 계산되고, 저장되고, 후속하여 개별적인 에러 검출 계산의 수행에 있어서의 이용을 위해 검색되는 특정 수단과 관련하여 제한되지는 않는다. 통상의 에러 검출/정정 기술들 및 메커니즘들로부터 적응될 수 있는 이러한 수단의 특정 상세들은 이러한 실시예들의 피처들을 모호하게 하는 것을 회피하기 위해서 본 명세서에서 논의되지 않는다.
예비 메모리 세그먼트의 스크러빙은, 예를 들어 메모리 제어기 및/또는 메모리 디바이스가 예를 들어 호스트 OS 또는 다른 요청자 에이전트에 독립적으로 예비 메모리 세그먼트에 저장할 수 있는 플레이스홀더 데이터(및 대응하는 에러 정정 정보)에 기초하여 수행될 수 있다. 이러한 예비 세그먼트의 스크러빙 동안, 예비 세그먼트는 현재 활성인 메모리 세그먼트들에 액세스하는 호스트 OS 또는 다른 이러한 요청자 에이전트에 가시적이지 않을(예를 들어, 등록되지 않을) 수 있다.
현대의 메모리는 단일 및 더블-비트 에러들을 검출 및/또는 정정하기 위해 에러 정정 코드(ECC)를 이용하지만, 고차 멀티-비트 에러들은 여전히 시스템 신뢰성 및 이용가능성에 대한 상당한 문제점을 제기한다. 에러 검출 메커니즘들은 종종 정정가능 에러 또는 정정불가능 에러 중 하나로서 에러를 분류하는 기능성을 포함한다. 통상의 에러 핸들링 기술들은 운영 체제의 머신 체크 동작들을 개시함으로써 메모리에서의 정정불가능 에러들에 다양하게 응답한다. 이러한 동작들은 시스템-와이드 셧다운(system-wide shutdown)의 수행을 포함한다.
전형적으로, 통상의 메모리 스크러빙 기술들은 예비 메모리의 스크러빙도 지원하지 않으며, 더구나 활성 세그먼트들 및 예비 세그먼트들에 대해 상이한 각각의 에러 핸들링 메커니즘들도 제공하지 않는다. 대조적으로, 특정 실시예들은, 검출된 에러 이벤트와 연관된 메모리 세그먼트가 현재 활성 세그먼트 또는 예비 세그먼트로서 지정되는지(또는 아닌지)에 기초하여 상이한 핸들러 프로세스들로의 시그널링을 제공한다. 예를 들어, 활성 세그먼트에 대해 검출된 에러는 머신 체크 예외 또는 예외 핸들러의 다른 이러한 호출을 초래할 수 있다. 대조적으로, 예비 세그먼트와 연관된 에러 이벤트는 인터럽트 핸들러와 같은 상이한 타입의 이벤트 핸들러로의 시그널링을 초래한다. 실시예에서, 예비 세그먼트 에러 이벤트는 프로세서의 시스템 관리 모드 중에 수행되는 이벤트 핸들링 동작들을 초래하는 한편, 예를 들어 활성 세그먼트 에러 이벤트는 대신에 프로세서의 상이한 모드 중에 호스트 OS에 의해 실행되는 동작들을 초래할 수 있다. 추가적으로 또는 대안적으로, 활성 세그먼트 에러 이벤트는 플랫폼-와이드 리셋(platform-wide reset), 크래시(crash) 또는 다른 이러한 "블루 스크린(blue screen)" 이벤트를 야기시키는 이벤트 핸들링 동작들을 초래할 수 있다. 대신에, 예비 세그먼트 에러 이벤트는 플랫폼에 의한 소프트웨어 실행을 리부트하거나 다른 방식으로 재시작할 임의의 필요성에 독립적으로 이벤트 핸들링 동작들이 완료되는 것을 허용할 수 있다.
도 1은 실시예에 따라 구현된 시스템(100)의 요소들을 예시한다. 시스템(100)은, 예를 들어 본 명세서에서 논의된 바와 같은 에러 검출 기능성 및 메모리 스페어링 기능성을 다양하게 지원하는 서버들, 데스크톱들, 랩톱들, 모바일 디바이스들, 스마트폰들, 게이밍 디바이스들 등을 포함한 다수의 컴퓨팅 시스템 중 임의의 것을 나타낸다.
시스템(100)은 (예시적인 인터커넥트(125)에 의해 표현된 바와 같은) 하나 이상의 데이터, 커맨드, 어드레스 및/또는 다른 신호 라인들을 통해 메모리 제어기(110)에 결합된 메모리 서브시스템(120)을 포함할 수 있고, 예를 들어 메모리 제어기(110)는 요청자와 메모리 서브시스템(120) 사이의 정보의 전송을 적어도 부분적으로 제어한다. 예를 들어, 이러한 요청자는 프로세서(150)(예를 들어, 중앙 처리 유닛, 그래픽 프로세서, 서비스 프로세서, 프로세서 코어 등) 또는 대안적으로는 입/출력 디바이스(예를 들어, PCI(peripheral component interconnect) 익스프레스 디바이스), 메모리 자체, 또는 메모리에 대한 액세스를 요청하는 시스템(100)의 임의의 다른 요소일 수 있다. 일부 실시예들에서, 메모리 제어기(110)는 요청자를 포함하는 것과 동일한 집적 회로(IC) 다이 상에 있다.
메모리 서브시스템(120)은 예를 들어 메모리 셀들의 각각의 행들을 갖는 각종의 타입의 메모리 세그먼트들 중 임의의 것을 포함할 수 있는데, 여기서 데이터는 워드라인 또는 등가물을 통해 액세스가능하다. 일 실시예에서, 메모리 서브시스템(120)은, DDR(Dual Data Rate) 규격, LPDDR(Low Power DDR) 규격 또는 다른 이러한 메모리 표준에 따라 동작하는 것과 같은 동적 랜덤 액세스 메모리(DRAM) 기술을 포함한다. 메모리 서브시스템(120)은 시스템(100)의 더 큰 메모리 디바이스(도시되지 않음) 내의 집적 회로 패키지일 수 있다. 예를 들어, 메모리 서브시스템(120)은 듀얼 인라인 메모리 모듈(DIMM)과 같은 메모리 모듈의 DRAM 디바이스일 수 있다.
메모리 제어기(110)는 메모리 서브시스템(120)의 하나 이상의 세그먼트로부터 다양하게 판독하거나, 이러한 세그먼트에 기입하거나 또는 다른 방식으로 이러한 세그먼트에 액세스하기 위한 커맨드들을 인터커넥트(125)를 통해 송신하는 로직(예를 들어, 각종의 하드웨어 로직 및/또는 실행 소프트웨어 로직 중 임의의 것을 포함함)을 포함할 수 있다. 하나 이상의 이러한 커맨드는 메모리에 액세스하기 위한 하나 이상의 통상의 기술에 따라 메모리 제어기(110)에 의해 송신될 수 있다. 특정 실시예들에서 제한적이지는 않은 이러한 통상의 기술들의 특정 상세들은 이러한 실시예들을 모호하게 하는 것을 회피하기 위해서 본 명세서에 설명되지 않는다.
제한이 아니라 예시로서, 메모리 제어기(110)는, 예를 들어, DDR(dual data rate) 규격, 예컨대 DDR3 동기식 동적 랜덤 액세스 메모리(SDRAM) JEDEC(Joint Electron Device Engineering Council) 표준 JESD79-3C(2008년 4월), DDR4 SDRAM JEDEC 표준 JESD79-4(2012년 9월) 또는 다른 이러한 규격의 요건의 일부 또는 전부를 따르는 커맨드/어드레스 시그널링 기능성을 제공하는 로직을 포함할 수 있다.
예시적인 실시예에서, 메모리 서브시스템(120)은, 주어진 시간에, 현재 "활성"인, 즉 하나 이상의 요청자들을 대신하여 정보를 저장하는데 이용하기 위해 할당되는 세그먼트들(130)을 포함한다. 이러한 할당은 메모리 제어기(110)에 의해 적어도 부분적으로 관리될 수 있다. 주어진 시간에, 세그먼트들(130)은 예시적인 세그먼트들(132a, ..., 132n)에 의해 표현된 바와 같은 특정한 복수의 세그먼트를 포함할 수 있는데, 여기서 활성 세그먼트들(130)의 집단은, 세그먼트들이 메모리 서브시스템(120)의 동작 중에 다양하게 활성화(예를 들어, 이용가능한 것으로부터 예비 세그먼트로서 트랜지션)되거나 비활성화(예를 들어, 디스에이블)됨에 따라 변경될 수 있다.
메모리 제어기(110) 및 메모리 서브시스템(120)은 에러 검출/정정 기능성을 구현하도록 동작한다. 예를 들어, 메모리 제어기(140)는 메모리 스크러버 로직(114)을 포함할 수 있는데, 이는 활성 세그먼트들(130)의 현재 집단의 패트롤 스크러빙 및/또는 요구 스크러빙을 다양하게 수행하는 하드웨어 및/또는 실행 소프트웨어의 각종의 조합들 중 임의의 것을 포함한다. 제한이 아니라 예시로서, 메모리 서브시스템(120)은, 메모리 제어기(110)에 의한 제어 하에, 각각의 데이터 비트들 및 대응하는 에러 체크 비트들, 예를 들어 에러 정정 코드(ECC) 비트들을 세그먼트들(130) 중 상이한 세그먼트들에 다양하게 저장할 수 있다. 이러한 에러 체크 비트들에 기초하여, 메모리 스크러버 로직(114)은, 메모리 서브시스템(120)에 이전에 저장된 대응하는 데이터가 지금 손상된 상태에 있는지를 결정하기 위한 계산들을 수행할 수 있다.
메모리 제어기(110)는, 예를 들어, 메모리 스크러버 로직(114)에 응답하여, 활성 세그먼트들(130) 중 주어진 세그먼트가 페일드(및/또는 페일링) 세그먼트로서 분류되어야 하는지를 식별하는 하드웨어 및/또는 실행 소프트웨어의 각종의 조합들 중 임의의 것을 포함하는 메모리 스페어러 로직(112)을 더 포함할 수 있다. 예를 들어, 메모리 스크러버 로직(114)으로부터의 하나 이상의 표시에 기초하여, 메모리 스페어러 로직(112)은, 활성 세그먼트들(130) 중 주어진 세그먼트에 대해, 예를 들어 에러들의 임계 개수에 도달되었는지, 에러들의 임계 빈도에 도달되었는지 등을 포함하는 소정의 임계 에러 이벤트를 검출할 수 있으며, 이는 그 세그먼트를 하나 이상의 예비 세그먼트(140) 중 하나로 교체할 필요성을 표시한다.
소정의 임계 에러 이벤트를 검출하는 것에 응답하여, 메모리 스페어러 로직(112)은, 활성 세그먼트들(130)의 현재 집단으로부터 페일드/페일링 세그먼트를 제거하는 메모리 스페어링 동작들을 구현하거나, 추적하거나 또는 다른 방식으로 지원하고, 현재의 하나 이상의 예비 세그먼트(140) 중 하나를 활성 세그먼트들(130)의 집단으로 트랜지션하기 위해 이벤트 핸들러 프로세스, 예를 들어 프로세서(150)를 이용하여 실행하거나 실행되는 제1 핸들러(152)에 시그널링할 수 있다. 제1 핸들러(152)는 예를 들어 머신 체크 동작들을 수행하는 것과 같은 호스트 운영 체제(OS) 프로세스를 포함할 수 있다.
실시예에서, 메모리 스크러버 로직(114)은, 활성 세그먼트가 페일드 또는 페일링으로서 식별되는 경우에 예비품의 역할을 하도록 각각 이용가능한 하나 이상의 세그먼트(140)의 현재 집단의 패트롤 스크러빙을 추가로 수행하는 부가적인(또는 동일한) 로직을 포함한다. 하나 이상의 예비 세그먼트(140)의 스크러빙은 예를 들어 활성 세그먼트들(130)에 대해 수행되는 스크러빙의 피처들을 포함할 수 있다.
메모리 스페어러 로직(112)은, 현재의 예비 세그먼트(142)의 이러한 패트롤 스크러빙에 응답하여, 예비 세그먼트(142)가 페일드/페일링 세그먼트로서 분류되어야 하는지를 검출하는 동작들을 추가로 수행할 수 있다. 예를 들어, 임계 에러 이벤트를 검출하는 것에 응답하여, 메모리 스페어러 로직(112)은, 하나 이상의 예비 세그먼트(140)의 현재 집단으로부터의 페일드/페일링 세그먼트의 제거를 구현하거나, 추적하거나 또는 다른 방식으로 지원하기 위해 소정의 다른 이벤트 핸들러 프로세스, 예를 들어 프로세서(150)를 이용하여 실행하거나 실행되는 제2 핸들러(154)에 시그널링할 수 있다. 제2 핸들러(154)는 예를 들어 시스템 관리 모드(SMM)의 인터럽트 핸들러 프로세스를 포함할 수 있는데, 예를 들어 SMM 모드는 제1 핸들러(152)를 구현하는 범용 호스트 OS의 실행을 위한 프로세서(150)의 대안 모드와는 구별되어야 한다.
도 2는 실시예에 따른 메모리 스페어링 및 에러 검출을 수행하는 메모리 제어기(200)의 요소들을 도시한다. 메모리 제어기(200)는 메모리 제어기(110)의 하나 이상의 피처를 포함할 수 있다. 예를 들어, 메모리 제어기(200)는, 메모리 스페어러 로직(112) 및 메모리 스크러버 로직(114)의 기능성의 일부 또는 전부를 각각 제공할 수 있는 메모리 스페어러 로직(210) 및 메모리 스크러버 로직(230)을 포함한다.
실시예에서, 메모리 스크러버 로직(230)은, 메모리(도시되지 않음)의 세그먼트들에 저장된 데이터가 에러들을 포함하는지를 다양하게 계산하는 회로 로직(예시적인 에러 검출 로직(232)에 의해 표현됨)을 포함한다. 일부 실시예들에서, 메모리 스크러버 로직은 이러한 에러들의 일부 또는 전부를 다양하게 정정하는 에러 정정 로직(234)을 더 포함할 수 있다. 에러 검출 로직(232) 및 에러 정정 로직(234)의 동작은 통상의 에러 검출/정정 기술들로부터 적응되는 하나 이상의 프로세스의 수행을 포함할 수 있다. 이러한 통상의 기술들의 특정 상세들은 일부 실시예들에서 제한적이지는 않으며, 이러한 실시예들의 다양한 피처들을 모호하게 하는 것을 회피하기 위해서 본 명세서에서 논의되지 않는다.
메모리 스페어러 로직(210)은 불량 세그먼트 검출 로직(212), 불량 세그먼트 룩업 및 교체(L/R) 로직(220) 및 세그먼트 리매핑 로직(segment remap logic)(222)을 포함할 수 있다. 불량 세그먼트 검출은 수개의 방식으로 구현될 수 있다. 예를 들어, 불량 세그먼트 검출 로직(212)은, 메모리 스크러버 로직(230)과의 교환에 기초하여, 메모리 트랜잭션들 중에 불량 데이터를 리턴하는 메모리의 세그먼트들을 파악할 수 있다. 예를 들어, 메모리에서의 어드레스에 대한 메모리 요청이 메모리 제어기(200)에 도달할 수 있다. 다음에, 이 요청은 시스템 메모리(도시되지 않음)에 송신되고, 메모리는 ECC 정보를 리턴할 수 있다. ECC 정보는 타겟 어드레스에 있는 메모리 세그먼트에서의 트랜잭션에 대해 에러가 있었는지를 결정하기 위해 메모리 스크러버 로직(230)의 에러 검출 로직(232)에 의해 평가될 수 있다. 에러가 발생한 경우, 불량 세그먼트 검출 로직(212)은 트랜잭션과 결과를 파악할 수 있다. 대안적으로 또는 추가적으로, 불량 세그먼트 검출 로직(212)은 (예를 들어, 활성 세그먼트들인지 또는 예비 세그먼트들인지 간에) 메모리 세그먼트들의 스크러빙 중에 리턴된 불량 데이터를 파악할 수 있다. 주어진 에러가 정정가능으로서 식별되는 경우(예를 들어, 에러 정정 메커니즘들이 메모리 제어기에 이용가능하다고 고려되면), 메모리 스크러버 로직(230)의 에러 정정 로직(234)은 요청된 데이터의 수정된, 즉 정정된 버전을 발생시키는 계산들을 수행할 수 있다.
실시예에서, 불량 세그먼트 검출 로직(212)은, 고려 중인 특정 세그먼트가 에러 임계치(214)를 위반하는지를 결정하기 위해 액세스되는 에러 임계치(214)(예를 들어, 최대 임계 에러 개수, 임계 에러 타입 등을 포함함)를 포함하거나 또는 다른 방식으로 에러 임계치에 액세스할 수 있다. 에러 임계치(214)의 이러한 위반이 표시되는 경우, 메모리 스페어링이 수행될 수 있다. 제한이 아니라 예시로서, 활성 세그먼트가 페일드/페일링으로서 식별되는 경우, 세그먼트 L/R 로직(220)은 교체 세그먼트로서 서비스를 위해 활성화되도록 예비 세그먼트를 식별하기 위한 동작들을 수행할 수 있다. 일부 실시예에서, 세그먼트 리매핑 로직(222)은 페일드/페일링 활성 세그먼트의 비활성화 및/또는 선택된 예비 세그먼트의 활성화의 지원으로 구현되는 메모리 맵 업데이트를 결정할 수 있다.
페일드 또는 페일링 세그먼트의 검출은 이벤트 핸들링 동작들이 수행되어야 한다고 핸들러에 시그널링하는 예시적인 핸들러 호출 로직(224)으로 표현되는 메모리 제어기의 소정의 로직을 더 포함할 수 있다. 실시예에서, 핸들러 호출 로직(224)은 검출된 페일드/페일링 세그먼트가 활성 세그먼트인지 또는 예비 세그먼트인지에 따라 상이한 핸들러들을 호출한다. 예를 들어, 핸들러 호출 로직(224)은 페일드/페일링 세그먼트가 활성인 것에 기초하여 제2 핸들러보다는 제1 핸들러를 호출할 수 있다. 대조적으로, 핸들러 호출 로직(224)은 페일드/페일링 세그먼트가 예비 세그먼트인 경우에 제1 핸들러가 아니라 대신에 제2 핸들러를 호출할 수 있다.
도 3은 실시예에 따른 메모리를 제어하기 위한 방법(300)의 요소들을 예시한다. 방법(300)은 예를 들어 방법(300)이 메모리 제어기(110)를 이용하여 수행되는 경우에 메모리 서브시스템(120)과 같은 메모리의 세그먼트들을 관리하기 위해 수행될 수 있다.
방법(300)은, 310에서, 복수의 (단지) 활성 메모리 세그먼트의 제1 스크럽을 수행하는 것을 포함할 수 있다. 310에서 수행되는 제1 스크럽은 요구 스크럽 동작들 및/또는 패트롤 스크럽 동작들을 포함할 수 있다. 실시예에서, 310에서의 제1 스크럽은 소정의 검출 에러를 분류하는 것을 포함한다. 예를 들어, 제1 스크럽은 에러를 정정가능 또는 정정불가능 중 어느 하나로서 분류하는 것을 포함할 수 있다. 대안적으로 또는 추가적으로, 310에서의 제1 스크럽은, 예를 들어 임의의 정정불가능 에러 이벤트에 추가하여 또는 임의의 정정불가능 에러 이벤트 외에 소정의 임계 에러 이벤트가 발생하였는지를 결정하는 것을 포함할 수 있다.
제1 스크럽이 정정불가능 에러를 검출한다고 320에서 결정되는 경우, 방법(300)은, 330에서, 하나 이상의 이벤트 핸들러 동작을 수행하도록 제1 핸들러 프로세스에 시그널링할 수 있다. 특정 실시예들은 이와 관련하여 제한되지는 않지만, 제1 핸들러는 예를 들어 호스트 프로세서의 범용 모드 중에 호스트 OS에 의해 실행될 수 있다. 제1 핸들러 프로세스는 예를 들어 메모리 스페어링의 지원으로 각종의 동작들 중 임의의 것을 포함하거나, 호출하거나 또는 다른 방식으로 구현할 수 있다. 제한이 아니라 예시로서, 제1 핸들러 프로세스는 머신 체크를 호출하기 위한 하드웨어 에러의 시그널링, 머신의 리셋(예를 들어, "블루 스크린" 이벤트), 하나 이상의 캐시 라인의 포이즈닝, 페일드/페일링 세그먼트에 대응하는 하나 이상의 메모리 페이지를 오프라인하도록 호스트 OS에 통지하는 것 등 중 하나 이상을 포함하거나 초래할 수 있다.
320에서 정정불가능 에러 이벤트가 표시되지 않는 경우, 방법(300)은, 340에서, 메모리의 하나 이상의 예비 랭크의 패트롤 스크러빙을 수행할 수 있다. 다른 실시예에서, 340에서의 패트롤 스크러빙은 320에서의 평가에 독립적으로 수행되는데, 예를 들어 340에서의 패트롤 스크러빙의 일부 또는 전부는 미리 결정된 스케줄에 따라 수행된다. 310에서의 제1 스크럽과 유사하게, 340에서의 패트롤 스크럽은 정정가능(또는 정정불가능)으로서 에러를 분류하는 것 및/또는 하나 이상의 임계 에러 이벤트의 임의의 발생에 대해 검출하는 것을 포함할 수 있다.
340에서의 패트롤 스크럽이 정정불가능 에러를 검출한다고 350에서 결정되는 경우, 방법(300)은, 360에서, 하나 이상의 이벤트 핸들러 동작을 수행하도록 제2 핸들러 프로세스에 시그널링할 수 있다. 일 실시예에서, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 제1 핸들러는 350에서 정정불가능 에러가 검출되는 것에 응답하여 시그널링되는 유일한 프로세스일 수 있다. 대안적으로 또는 추가적으로, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 제1 핸들러 프로세스는 320에서 정정불가능 에러가 검출되는 것에 응답하여 시그널링되는 유일한 핸들러 프로세스일 수 있다.
특정 실시예들은 이와 관련하여 제한되지는 않지만, 제2 핸들러 프로세스는 프로세서의 SMM에서 실행될 수 있다. 제2 핸들러 프로세스는 예를 들어 이용가능한 예비 세그먼트들의 풀로부터 세그먼트를 제거하는 것의 지원으로 각종의 동작들 중 임의의 것을 포함하거나, 호출하거나 또는 다른 방식으로 구현할 수 있다. 제한이 아니라 예시로서, 제2 핸들러 프로세스는 페일드/페일링 예비 세그먼트가 디스에이블되는 것 및/또는 더 이상 이용가능하지 않은 것을 반영하도록 세그먼트 L/R 로직(220)(또는 다른 이러한 로직)을 업데이트하는 것 중 하나 이상을 포함하거나 초래할 수 있다. 대안적으로 또는 추가적으로, 페일드/페일링 예비 세그먼트는 파워 다운되거나, 후속 패트롤 스크러빙으로부터 제거되거나 또는 다른 방식으로 장래 메모리 시스템 동작들로부터 격리될 수 있다. 350에서 정정불가능 에러가 표시되지 않는 경우, 방법(300)은 종료하거나 또는 대안적으로는 부가적인 동작들(도시되지 않음)로 진행할 수 있는데, 예를 들어 방법(300)은 310에서의 활성 랭크 스크럽의 다른 수행으로 리턴한다.
실시예에서, 350에서 에러가 검출되는 것에 응답하여 수행되는 임의의 동작들은 320에서 에러가 검출되는 것에 응답하여 수행되는 타입의 하나 이상의 동작의 수행에 독립적일 수 있다. 제1 핸들러 프로세스 및 제2 핸들러 프로세스는 적어도 예비 세그먼트 대 활성 세그먼트에 대한 정정불가능 에러 이벤트들에 응답하는 것과 관련하여 서로 배타적일 수 있다. 예를 들어, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 320에서의 정정불가능 에러의 식별은 제1 핸들러 프로세스만이 호출되게 할 수 있다. 대안적으로 또는 추가적으로, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 350에서의 정정불가능 에러의 식별은 제2 핸들러 프로세스만이 호출되게 할 수 있다. 주어진 페일드/페일링 세그먼트의 특정 활성 상태 대 예비 상태는, 적어도 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 2개의 핸들러 프로세스 중 어느 핸들러 프로세스(예를 들어, 단 하나)가 호출되어야 하는지를 선택하기 위한 "but for" 조건일 수 있다.
도 4a는 실시예에 따른 메모리를 제어하기 위한 방법(400)의 요소들을 예시한다. 방법(400)은 예를 들어 방법(300)의 피처들의 일부 또는 전부를 포함할 수 있다. 실시예에서, 방법(400)은, 하드웨어 플랫폼의 컴포넌트로서 동작하는 하나 이상의 메모리 제어기(110, 200)(또는 다른 이러한 제어기 로직)를 적어도 부분적으로 이용하여 수행된다.
실시예에서, 방법(400)은, 410에서, 예를 들어 제1 스크럽(310)을 참조하여 본 명세서에서 논의된 바와 같이 플랫폼 메모리의 활성 랭크들(또는 다른 이러한 세그먼트들)을 스크럽하기 위한 동작들을 수행하는 것을 포함한다. 도 4c에 도시된 시퀀스(480)에서, 페이즈(482)의 "스크럽 1"은, 메모리가 8개의 현재 활성인 랭크들(Rank0, ..., Rank7)을 포함하는 시나리오에 있어서의 이러한 스크러빙의 일례를 예시한다. 방법(400)은, 412에서, 이러한 스크럽에 의해(예를 들어, 이러한 스크럽 중에) 데이터 에러가 표시되는지를 후속하여 평가할 수 있다. 이러한 데이터 에러가 412에서 표시되지 않는 경우, 422에서, 활성 랭크들의 스크럽이 완료되었는지에 관한 다른 평가가 이루어진다. 스크럽이 완료되지 않은 경우, 방법(400)은 410에서의 활성 랭크 스크럽 동작들을 계속할 수 있다. 그렇지 않으면, 방법(400)은 도 4b의 방법(450)을 참조하여 본 명세서에서 논의되는 바와 같은 예비 랭크 스크러빙 동작들로의 트랜지션을 개시할 수 있다.
412에서의 평가에 의해 데이터 에러가 표시되는 경우, 방법(400)은, 414에서, 검출된 에러가 정정가능한지(또는 아닌지)를 결정할 수 있다. 에러가 정정불가능하다고 414에서 표시되는 경우, 방법(400)은, 416에서, 하드웨어 에러의 발생을 플랫폼의 호스트 OS에 시그널링할 수 있다. 416에서의 시그널링은 예를 들어 방법(300)의 330에서의 시그널링과 관련하여 본 명세서에서 논의된 바와 같이 예를 들어 머신 체크(또는 다른) 예외의 시그널링을 포함할 수 있다. 이러한 예외의 핸들링은 시스템 크래시, 시스템 리셋 또는 다른 이러한 이벤트를 포함하거나 초래할 수 있는데, 이는 실시예에서 방법(400)을 종료한다.
대신에, 412에서 표시된 에러 이벤트가 정정가능하다고 414에서 결정되는 경우, 방법(400)은, 418에서, 손상된 데이터의 정정된 버전을 결정하기 위한 에러 정정 계산들을 수행할 수 있다. 추가적으로, 방법(400)은, 420에서, 412에서 검출된 에러 이벤트가 정정가능 에러들의 임계 개수, 백분율 및/또는 빈도와 같은 소정의 에러 임계치(CE_th_A)의 도달(예를 들어, 초과)을 이루는지를 결정할 수 있다. 선험적인 제약일 수 있는 CE_th_A의 특정 값(및/또는 타입)은 구현-특정 상세들에 따라 광범위하게 변할 수 있으며, 특정 실시예에서 제한적이지는 않다. CE_th_A에 도달되지 않은 경우, 방법(400)은 활성 랭크 스크러빙이 완료되었는지에 대한 422에서의 평가로 리턴할 수 있다.
CE_th_A에 도달되었다고 420에서 결정되는 경우, 방법(400)은, 424에서, 메모리 스페어링의 지원으로 동작들을 수행하도록 이벤트 핸들러 코드에 시그널링할 수 있다. 이러한 결정은 예를 들어 방법(400)의 후속 반복 중에, 예를 들어 도 4c에 예시된 페이즈(484)의 (예를 들어, 스크럽 1 이후의) "스크럽 3" 중에 이루어질 수 있다. 424에서 시그널링되는 이벤트 핸들러 이벤트는 일부 실시예들에서 416에서 다른 방식으로 시그널링될 수 있는 것과 동일할 수 있다. 대안적으로, 다른 이벤트 핸들러 프로세스가 시그널링될 수 있다. 제한이 아니라 예시로서, 시스템 관리 인터럽트는, 예를 들어 호스트 OS가 실행하는 모드로부터 떨어져 트랜지션하는 것을 포함하여 프로세서가 SMM으로 트랜지션하도록 시그널링될 수 있다. 424에서 수행되는 시그널링은, 실시예에서, 활성 랭크들을 평가하거나 관리하거나 또는 다른 방식으로 타겟팅하는 동작들로부터 하나 이상의 예비 랭크를 대신에 타겟팅하는 동작들로 트랜지션하는 것을 에러 핸들링 펌웨어 또는 다른 이러한 로직이 시작하게 할 수 있다.
예를 들어, 424에서의 시그널링은 예비 랭크가 현재 이용가능한지에 관한 426에서의 평가를 초래하거나 다른 방식으로 이러한 평가에 선행할 수 있다. 이러한 평가는, 원래의 하나 이상의 예비 랭크의 전부가 이전에 활성화되었으며 교체 예비 랭크들이 메모리 서브시스템에 전혀 추가되지 않은 경우에 이루어진다. 예비 랭크들이 이용가능하지 않다고 426에서 결정되는 경우, 예를 들어 DIMM 또는 다른 메모리 디바이스가 다음 서비스 호출 중에 교체될 필요가 있다는 통지를 제공하기 위해서 관리 콘솔 또는 컴퓨터 소프트웨어의 다른 소프트웨어를 이용하여 428에서 서비스 요청이 등록될 수 있다.
대신에, 예비 랭크가 이용가능하다고 426에서 결정되는 경우, 430에서 랭크 스페어링 동작들이 개시된다. 430에서의 랭크 스페어링은 426에서 식별된 예비 랭크를 활성화하는 것, 및 활성화된 예비품이 교체물의 역할을 하는 페일드/페일링 랭크를 비활성화하는 것을 포함할 수 있다. 430에서 랭크 스페어링이 수행된 이후에, 방법(400)은 방법(450)을 참조하여 본 명세서에서 논의되는 바와 같이 서비스 요청을 등록할 수 있다. 활성화될 예비 랭크는 예를 들어 방법(450)에 따라 앞서 수행되는 예비 랭크 스크러빙에 의해 이러한 활성화(예비 랭크는 페일드/페일링 랭크가 아님)에 대해 준비가 될 수 있다. 예를 들어, 시퀀스(480)의 메모리 스페어링 페이즈(486)는 교체 활성 랭크(Rank0)로서 서비스하기 위한 예비 랭크(Spare0)를 활성화할 수 있는데, Spare0의 더 이전의 스크럽 2 패트롤 스크러빙은 이러한 활성화를 위해 Spare0의 적격성을 확인하도록 수행되었다.
도 4b는 이러한 예비 랭크 스크러빙을 수행하기 위한 방법(450)의 요소들을 예시한다. 방법들(400, 450)은 일 실시예에 따른 하나의 더 큰 방법의 상이한 부분들일 수 있다. 방법(450)은, 460에서, 예를 들어 방법(300)의 340에서 수행된 스크러빙을 참조하여 본 명세서에서 논의된 바와 같이 (단지) 플랫폼 메모리의 하나 이상의 예비 랭크를 패트롤 스크럽하기 위한 동작들을 수행하는 것을 포함할 수 있다. 시퀀스(480)에서의 이러한 패트롤 스크러빙의 예는 페이즈(482)의 (예를 들어, 스크럽 1 이후의 그리고/또는 스크럽 3 이전의) "스크럽 2"로 표현되는데, 여기서 메모리는 단일 예비 랭크만을 포함한다. 방법(450)은, 462에서, 이러한 패트롤 스크럽에 의해 데이터 에러가 표시되는지를 후속하여 평가할 수 있다. 462에서 이러한 데이터 에러가 표시되지 않는 경우, 예비 랭크 패트롤 스크럽이 완료되었는지에 관한 다른 평가가 472에서 이루어진다. 스크럽이 완료되지 않은 경우, 방법(450)은 460에서의 예비 랭크 스크럽 동작들을 계속할 수 있다. 그렇지 않으면, 방법(450)은 일 실시예에서 방법(400)의 410에서의 것들과 같은 활성 패트롤 스크럽 동작들로 리턴할 수 있다.
462에서의 평가에 의해 데이터 에러가 표시되는 경우, 방법(450)은, 464에서, 검출된 에러가 정정가능한지(또는 아닌지)를 결정할 수 있다. 에러가 정정불가능하다고 464에서 표시되는 경우, 방법(450)은, 474에서, 예비 랭크를 적어도 임의의 페일드/페일링 활성 랭크에 대한 장래 교체물로서 이용가능한 것으로부터 디스에이블할 수 있다. 474에서의 동작들은, 하나 이상의 공급 전압 트레이스로부터 예비 랭크를 결합해제하고, 장래 예비 랭크 패트롤 스크러빙 동작들로부터 예비 랭크를 배제하고, 클록킹을 디스에이블하거나 게이팅하거나 또는 다른 방식으로 감소시키기 위해 하나 이상의 구성을 설정하는 것 등을 더 포함할 수 있다.
대신에, 462에서 표시된 에러 이벤트가 정정가능하다고 464에서 결정되는 경우, 방법(450)은, 468에서, 손상된 데이터의 정정된 버전 또는 이러한 데이터의 손상된 버전에 대한 새로운 ECC를 결정하기 위한 에러 정정 계산들을 수행할 수 있다. 468에서의 정정 이후에(또는 심지어는 이러한 정정 이전에 또는 동안에), 방법(450)은, 470에서, 462에서 검출된 에러 이벤트가 CE_th_A 또는 다른 이러한 임계 값을 포함할 수 있는 소정의 에러 임계치(CE_th_B)의 도달(예를 들어, 초과)을 이루는지를 결정할 수 있다. CE_th_B에 도달되지 않은 경우, 방법(450)은 예비 랭크 스크러빙이 완료되었는지에 대한 472에서의 평가로 리턴할 수 있다.
CE_th_B에 도달되었다고 470에서 결정되는 경우, 방법(450)은 예비 랭크를 디스에이블하기 위한 474에서의 동작들을 수행할 수 있다. 추가적으로, 방법(450)은, 476에서, (예를 들어) DIMM 또는 다른 메모리 디바이스가 다음 서비스 호출 중에 교체될 필요가 있다는 것을 표시하는 서비스 요청을 등록하기 위해 핸들러를 호출할 수 있다. 실시예에서, 476에서의 동작들은, 예를 들어 420에서 검출된 바와 같은 페일드/페일링 활성 랭크를 포함한 메모리 디바이스를 교체할 필요성을 등록하거나 또는 대안적으로는 464에서 또는 470에서 검출된 바와 같은 페일드/페일링 예비 랭크를 포함한 메모리 디바이스를 교체할 필요성을 등록하기 위해서 다양한 조건들 하에서 상이한 시간에 다양하게 수행될 수 있다. 후속하여, 방법(450)은 일 실시예에서 방법(400)의 410에서의 것들과 같은 활성 패트롤 스크럽 동작들로 리턴할 수 있다.
도 5a는 실시예에 따른 메모리를 제어하기 위한 다른 방법(500)의 요소들을 예시한다. 방법(500)은 예를 들어 방법(300)의 피처들의 일부 또는 전부를 포함할 수 있다. 실시예에서, 방법(500)은, 복수의 활성 랭크(또는 다른 세그먼트) 및 복수의 예비 랭크(세그먼트)를 포함한 메모리 서브시스템을 제어하기 위해 수행된다.
실시예에서, 방법(500)은, 510에서, 예를 들어 제1 스크럽(310)을 참조하여 본 명세서에서 논의된 바와 같이 플랫폼 메모리의 활성 랭크들을 스크럽하기 위한 동작들을 수행하는 것을 포함한다. 메모리가 8개의 현재 활성인 랭크들을 포함하는 시나리오에 있어서의 이러한 스크러빙의 예가 도 5c에 도시된 시퀀스(590)의 페이즈(592)에 의해 예시되어 있다. 방법(500)은, 512에서, 이러한 스크럽에 의해(예를 들어, 이러한 스크럽 중에) 데이터 에러가 표시되는지를 후속하여 평가할 수 있다. 이러한 데이터 에러가 512에서 표시되지 않는 경우, 방법(500)은 510에서의 활성 랭크 스크러빙을 재개하도록 루프백한다. 그렇지 않으면, 방법(500)은, 514에서, 검출된 에러가 정정가능한지(또는 아닌지)를 결정할 수 있다. 에러가 정정불가능하다고 514에서 표시되는 경우, 방법(500)은, 516에서, 예를 들어 머신 체크를 개시하기 위해 하드웨어 에러 또는 다른 신호를 플랫폼의 호스트 OS에 전달할 수 있다. 대신에, 512에서 표시된 에러 이벤트가 정정가능하다고 514에서 결정되는 경우, 방법(500)은, 518에서, 손상된 데이터의 정정된 버전을 결정하기 위한 에러 정정 계산들을 수행할 수 있다. 추가적으로, 방법(500)은, 520에서, 소정의 에러 임계치(CE_th_X)(예를 들어, CE_th_A)에 도달되었는지를 결정할 수 있다. CE_th_X에 도달되지 않은 경우, 방법(500)은 510에서의 활성 랭크 스크러빙을 재개하도록 루프백할 수 있다.
CE_th_X에 도달되었다고 520에서 결정되는 경우, 방법(500)은, 522에서, 메모리 스페어링 동작들을 수행하거나 또는 이러한 메모리 스페어링 동작들의 가능성에 대해 준비하는 이벤트 핸들러에 시그널링할 수 있다. 제한이 아니라 예시로서, 시스템 관리 인터럽트는 예를 들어 호스트 OS가 실행하는 모드로부터 떨어져 트랜지션하는 것을 포함하여 프로세서가 SMM으로 트랜지션하도록 시그널링될 수 있다. 522에서 수행되는 시그널링은, 실시예에서, 활성 랭크들을 평가하거나 관리하거나 또는 다른 방식으로 타겟팅하는 동작들로부터 하나 이상의 예비 랭크를 대신에 타겟팅하는 동작들로 프로세서를 트랜지션하는 것을 에러 핸들링 펌웨어 또는 다른 이러한 로직이 시작하게 할 수 있다. 예를 들어, 시퀀스(590)의 페이즈 방법(594)에 의해 예시된 바와 같이, 방법(500)은 페일드/페일링으로서 활성 Rank0을 식별하고, 이에 응답하여 도 5b의 방법(550)의 동작들과 같은 동작들로 트랜지션할 수 있다.
도 5b는 예비 랭크 스크러빙을 수행하기 위한 방법(550)의 요소들을 예시한다. 방법들(500, 550)은 일 실시예에 따른 하나의 더 큰 방법의 상이한 부분들일 수 있다. 실시예에서, 방법(550)은, 560에서, 식별된 페일드/페일링 랭크에 대한 교체물로서의 가능한 선택 및 평가를 위해 이용가능한 예비 랭크가 존재하는지를 결정하는 것을 포함한다. 예비 랭크가 이용가능하지 않은 경우, 방법(550)은, 580에서, 예를 들어 새로운 활성 랭크, 새로운 예비 랭크 또는 양쪽 모두를 제공하기 위해 하나 이상의 DIMM 또는 다른 메모리 디바이스들을 교체할 필요성을 표시하는 서비스 요청을 등록하기 위해 핸들러 또는 다른 프로세스를 호출할 수 있다.
예비 랭크가 평가를 위해 이용가능하다고 560에서 결정되는 경우, 방법(550)은, 562에서, 평가 하의 현재 예비 랭크가 되도록 560에서 검출된 예비 랭크를 할당할 수 있다. 다음에, 방법(550)은 564에서 현재 예비 랭크의 패트롤 스크러빙을 수행할 수 있다. 이러한 패트롤 스크러빙의 예는 페이즈(594)에 의해 시퀀스(590)에서 표현되는데, 여기서 메모리는 예비 랭크들(Spare0, Spare1)을 포함하고, 현재 활성 Rank0은 페일드/페일링으로서 식별되었고, Spare0은 패트롤 스크러빙을 위해 선택된다. 방법(550)은, 566에서, 이러한 패트롤 스크럽에 의해 데이터 에러가 표시되는지를 후속하여 평가할 수 있다. 566에서 이러한 데이터 에러가 표시되지 않는 경우, 현재 예비 랭크의 패트롤 스크럽이 완료되었는지에 관한 다른 평가가 576에서 이루어진다. 스크럽이 완료되지 않은 경우, 방법(550)은 564에서의 활성 랭크 스크럽 동작들을 계속할 수 있다. 그렇지 않으면, 방법(550)은 일 실시예에서 (방법(500)의 520에서 검출된 것과 같은) 페일드/페일링 활성 랭크에 대한 대체물로서 서비스하기 위해 현재 예비 랭크를 활성화하도록 578에서 랭크 스페어링을 구현할 수 있다. 하나의 이러한 메모리 스페어링의 예는 페이즈(596a)에 의해 시퀀스(590)에서 예시되어 있고, 여기서 예비 랭크 Spare0은 새로운 활성 Rank0의 역할을 하도록 활성화된다.
566에서의 평가에 의해 데이터 에러가 표시되는 경우, 방법(550)은, 568에서, 검출된 에러가 정정가능한지(또는 아닌지)를 결정할 수 있다. 에러가 정정불가능하다고 568에서 표시되는 경우, 방법(550)은, 574에서, 현재 예비 랭크를 적어도 임의의 페일드/페일링 활성 랭크에 대한 장래 교체물로서 이용가능한 것으로부터 디스에이블할 수 있다. 574에서의 동작들은, 공급 전압 트레이스로부터 현재 예비 랭크를 결합해제하고/하거나 장래 예비 랭크 패트롤 스크러빙 동작들로부터 현재 예비 랭크를 배제하기 위해 하나 이상의 구성을 설정하는 것을 더 포함할 수 있다. 이러한 예비 랭크 디스에이블의 예는 페이즈(596b)(예를 들어, 페이즈(596a)에 대한 대안)에 의해 시퀀스(590)에서 표현되고, 여기서 Spare0은 대신에 페일드/페일링 랭크로서 식별되었고, 다른 예비 랭크 Spare1이 평가를 위해 현재 예비 랭크로서 후속하여 할당된다. 후속하여, 방법(550)은 다른 예비 랭크가 평가를 위해 다음 현재 예비 랭크의 역할을 할 수 있는지를 평가하는 것(560)으로 리턴할 수 있다.
대신에, 566에서 표시된 에러 이벤트가 정정가능하다고 568에서 결정되는 경우, 방법(550)은 570에서 에러를 정정하고, 572에서 소정의 에러 임계치(CE_th_Y)(예를 들어, CE_th_B)에 도달되었는지를 결정할 수 있다. CE_th_Y에 도달된 경우, 방법(550)은 예비 랭크를 디스에이블하기 위한 574에서의 동작들을 수행할 수 있다. 그렇지 않으면, 방법(550)은 576에서의 평가의 수행으로 진행할 수 있다. 시퀀스(590)의 페이즈(598)는, 페이즈(596b) 이후에, 578에서의 메모리 스페어링이 예비 랭크 Spare1로 하여금 교체물 Rank0로서 서비스하기 위해 활성화되게 하는 시나리오를 예시한다.
도 6은 메모리 액세스들이 구현될 수 있는 컴퓨팅 시스템의 실시예의 블록도이다. 시스템(600)은 본 명세서에 설명된 임의의 실시예에 따른 컴퓨팅 디바이스를 나타내고, 랩톱 컴퓨터, 데스크톱 컴퓨터, 서버, 게이밍 또는 엔터테인먼트 제어 시스템, 스캐너, 복사기, 프린터 또는 다른 전자 디바이스일 수 있다. 시스템(600)은 프로세서(620)를 포함할 수 있고, 프로세서는 시스템(600)에 대해 명령어들의 실행, 동작 관리 및 처리를 제공한다. 프로세서(620)는 시스템(600)에 대해 처리를 제공하는 임의의 타입의 마이크로프로세서, 중앙 처리 유닛(CPU), 처리 코어 또는 다른 처리 하드웨어를 포함할 수 있다. 프로세서(620)는 시스템(600)의 전체 동작을 제어하고, 하나 이상의 프로그램가능 범용 또는 특수 목적 마이크로프로세서, 디지털 신호 프로세서들(DSP들), 프로그램가능 제어기들, 주문형 집적 회로들(ASIC들), 프로그램가능 로직 디바이스들(PLD들) 등, 또는 이러한 디바이스들의 조합일 수 있거나 이들을 포함할 수 있다.
메모리 서브시스템(630)은 시스템(600)의 메인 메모리를 나타내고, 프로세서(620)에 의해 실행될 코드, 또는 루틴의 실행 시에 이용될 데이터 값들에 대한 임시 스토리지를 제공한다. 메모리 서브시스템(630)은, 판독 전용 메모리(ROM), 플래시 메모리, 하나 이상의 각종의 랜덤 액세스 메모리(RAM) 또는 다른 메모리 디바이스들, 또는 이러한 디바이스들의 조합과 같은 하나 이상의 메모리 디바이스를 포함할 수 있다. 메모리 서브시스템(630)은, 다른 것들 중에서, 시스템(600)에서의 명령어들의 실행을 위한 소프트웨어 플랫폼을 제공하는 운영 체제(OS)(636)를 저장하고 호스팅한다. 추가적으로, 시스템(600)의 처리 및 로직을 제공하기 위해 다른 명령어들(638)이 메모리 서브시스템(630)으로부터 저장 및 실행된다. OS(636) 및 명령어들(638)은 프로세서(620)에 의해 실행된다.
메모리 서브시스템(630)은 메모리 디바이스(632)를 포함할 수 있고, 메모리 디바이스는 데이터, 명령어들, 프로그램들 또는 다른 항목들을 저장한다. 일 실시예에서, 메모리 서브시스템은, 본 명세서에 설명된 임의의 실시예에 따른 메모리 제어기이며 메모리 디바이스(632)에 액세스하기 위한 메커니즘들을 제공하는 메모리 제어기(634)를 포함한다. 일 실시예에서, 메모리 제어기(634)는 메모리 디바이스(632)에 액세스하기 위한 커맨드들을 제공한다.
프로세서(620) 및 메모리 서브시스템(630)은 버스/버스 시스템(610)에 결합된다. 버스(610)는, 적절한 브리지들, 어댑터들 및/또는 제어기들에 의해 접속되는, 임의의 하나 이상의 별개의 물리 버스, 통신 라인/인터페이스 및/또는 점대점 접속을 나타내는 추상적 개념(abstraction)이다. 그러므로, 버스(610)는, 예를 들어 시스템 버스, PCI(Peripheral Component Interconnect) 버스, HyperTransport 또는 ISA(industry standard architecture) 버스, SCSI(small computer system interface) 버스, USB(universal serial bus), 또는 IEEE(Institute of Electrical and Electronics Engineers) 표준 1394 버스(통상적으로 "Firewire"로 지칭됨) 중 하나 이상을 포함할 수 있다. 버스(610)의 버스들은 네트워크 인터페이스(650)에서의 인터페이스들에 또한 대응할 수 있다.
시스템(600)은, 버스(610)에 결합되는 하나 이상의 입/출력(I/O) 인터페이스(들)(640), 네트워크 인터페이스(650), 하나 이상의 내부 대용량 저장 디바이스(들)(660) 및 주변 장치 인터페이스(670)를 또한 포함할 수 있다. I/O 인터페이스(640)는 하나 이상의 인터페이스 컴포넌트를 포함할 수 있고, 이러한 인터페이스 컴포넌트들을 통해 사용자는 시스템(600)과 상호작용한다(예를 들어, 비디오, 오디오 및/또는 영숫자 인터페이싱). 네트워크 인터페이스(650)는 하나 이상의 네트워크를 통해 원격 디바이스들(예를 들어, 서버들, 다른 컴퓨팅 디바이스들)과 통신하는 능력을 시스템(600)에 제공한다. 네트워크 인터페이스(650)는 이더넷 어댑터, 무선 상호접속 컴포넌트들, USB(universal serial bus), 또는 다른 유선 또는 무선 표준 기반 또는 사유 인터페이스들을 포함할 수 있다.
스토리지(660)는, 하나 이상의 자기, 고체 상태 또는 광학 기반 디스크 또는 이들의 조합과 같이, 대량의 데이터를 비휘발적 방식으로 저장하기 위한 임의의 통상의 매체일 수 있거나 이러한 매체를 포함할 수 있다. 스토리지(660)는 영속적 상태로(즉, 값은 시스템(600)에 대한 전력의 중단에도 불구하고 보유됨) 코드나 명령어들 및 데이터(662)를 유지한다. 스토리지(660)는 일반적으로 "메모리"로 고려될 수 있지만, 메모리(630)는 프로세서(620)에 명령어들을 제공하는 실행 또는 동작 메모리이다. 스토리지(660)는 비휘발성인 한편, 메모리(630)는 휘발성 메모리를 포함할 수 있다(즉, 데이터의 상태 또는 값은 전력이 시스템(600)에 대해 중단되는 경우에 규정되지 않음(indeterminate)).
주변 장치 인터페이스(670)는 위에서 구체적으로 언급되지 않은 임의의 하드웨어 인터페이스를 포함할 수 있다. 주변 장치들은 시스템(600)에 종속적으로 접속하는 디바이스들을 일반적으로 지칭한다. 종속적인 접속(dependent connection)은, 동작이 실행되며 사용자와 상호작용하는 소프트웨어 및/또는 하드웨어 플랫폼을 시스템(600)이 제공하는 것이다.
도 7은 메모리 액세스들이 구현될 수 있는 모바일 디바이스의 실시예의 블록도이다. 디바이스(700)는, 컴퓨팅 태블릿, 모바일폰 또는 스마트폰, 무선 가능 e-리더기 또는 다른 모바일 디바이스와 같은 모바일 컴퓨팅 디바이스를 나타낸다. 특정 컴포넌트들이 일반적으로 도시되어 있으며, 이러한 디바이스의 모든 컴포넌트가 디바이스(700)에서 도시되지는 않는다는 점이 이해될 것이다.
디바이스(700)는 디바이스(700)의 주요 처리 동작들을 수행하는 프로세서(710)를 포함할 수 있다. 프로세서(710)는, 마이크로프로세서들, 애플리케이션 프로세서들, 마이크로컨트롤러들, 프로그램가능 로직 디바이스들 또는 다른 처리 수단과 같은 하나 이상의 물리적 디바이스를 포함할 수 있다. 프로세서(710)에 의해 수행되는 처리 동작들은 애플리케이션들 및/또는 디바이스 기능들이 실행되는 운영 체제 또는 운영 플랫폼의 실행을 포함한다. 처리 동작들은 인간 사용자나 다른 디바이스들과의 I/O(입/출력)에 관련된 동작들, 전력 관리에 관련된 동작들, 및/또는 디바이스(700)를 다른 디바이스에 접속하는 것에 관련된 동작들을 포함한다. 처리 동작들은 오디오 I/O 및/또는 디스플레이 I/O에 관련된 동작들을 또한 포함할 수 있다.
일 실시예에서, 디바이스(700)는, 컴퓨팅 디바이스에 오디오 기능들을 제공하는 것과 연관된 하드웨어(예를 들어, 오디오 하드웨어 및 오디오 회로들) 및 소프트웨어(예를 들어, 드라이버들, 코덱들) 컴포넌트들을 나타내는 오디오 서브시스템(720)을 포함한다. 오디오 기능들은 스피커 및/또는 헤드폰 출력뿐만 아니라 마이크로폰 입력을 포함할 수 있다. 이러한 기능들을 위한 디바이스들은 디바이스(700)에 통합되거나, 또는 디바이스(700)에 접속될 수 있다. 일 실시예에서, 사용자는, 프로세서(710)에 의해 수신되고 처리되는 오디오 커맨드들을 제공함으로써 디바이스(700)와 상호작용한다.
디스플레이 서브시스템(730)은, 사용자가 컴퓨팅 디바이스와 상호작용하기 위한 시각적 및/또는 촉각적 디스플레이를 제공하는 하드웨어(예를 들어, 디스플레이 디바이스들) 및 소프트웨어(예를 들어, 드라이버들) 컴포넌트들을 나타낸다. 디스플레이 서브시스템(730)은, 사용자에게 디스플레이를 제공하기 위해 이용되는 특정 스크린 또는 하드웨어 디바이스를 포함할 수 있는 디스플레이 인터페이스(732)를 포함할 수 있다. 일 실시예에서, 디스플레이 인터페이스(732)는, 프로세서(710)와는 별개이며 디스플레이에 관련된 적어도 일부 처리를 수행하기 위한 로직을 포함한다. 일 실시예에서, 디스플레이 서브시스템(730)은 사용자에 대해 출력 및 입력 양쪽 모두를 제공하는 터치스크린 디바이스를 포함한다.
I/O 제어기(740)는 사용자와의 상호작용에 관련된 하드웨어 디바이스들 및 소프트웨어 컴포넌트들을 나타낸다. I/O 제어기(740)는 오디오 서브시스템(720) 및/또는 디스플레이 서브시스템(730)의 일부인 하드웨어를 관리하도록 동작할 수 있다. 추가적으로, I/O 제어기(740)는, 사용자가 시스템과 상호작용할 수 있는 디바이스(700)에 접속하는 부가적인 디바이스들에 대한 접속 포인트를 예시한다. 예를 들어, 디바이스(700)에 부착될 수 있는 디바이스들은 마이크로폰 디바이스들, 스피커 또는 스테레오 시스템들, 비디오 시스템들 또는 다른 디스플레이 디바이스, 키보드 또는 키패드 디바이스들, 또는 특정 애플리케이션들과 함께 이용하기 위한 다른 I/O 디바이스들, 예컨대 카드 리더기들 또는 다른 디바이스들을 포함할 수 있다.
위에서 언급된 바와 같이, I/O 제어기(740)는 오디오 서브시스템(720) 및/또는 디스플레이 서브시스템(730)과 상호작용할 수 있다. 예를 들어, 마이크로폰 또는 다른 오디오 디바이스를 통한 입력은 디바이스(700)의 하나 이상의 애플리케이션 또는 기능에 대한 입력 또는 커맨드들을 제공할 수 있다. 추가적으로, 오디오 출력이 디스플레이 출력 대신에 또는 디스플레이 출력에 추가하여 제공될 수 있다. 다른 예에서, 디스플레이 서브시스템이 터치스크린을 포함하는 경우, 디스플레이 디바이스는 또한 I/O 제어기(740)에 의해 적어도 부분적으로 관리될 수 있는 입력 디바이스의 역할을 한다. I/O 제어기(740)에 의해 관리되는 I/O 기능들을 제공하기 위한 부가적인 버튼들 또는 스위치들이 디바이스(700) 상에 또한 존재할 수 있다.
일 실시예에서, I/O 제어기(740)는, 가속도계들, 카메라들, 광 센서들 또는 다른 환경 센서들, 자이로스코프들, 글로벌 포지셔닝 시스템(GPS), 또는 디바이스(700)에 포함될 수 있는 다른 하드웨어와 같은 디바이스들을 관리한다. 입력은 (잡음에 대한 필터링, 밝기 검출을 위한 디스플레이들의 조정, 카메라에 대한 플래시의 적용, 또는 다른 피처들과 같이) 그 동작들에 영향을 주기 위해 환경적 입력을 시스템에 제공하는 것뿐만 아니라, 직접적인 사용자 상호작용의 일부일 수 있다.
일 실시예에서, 디바이스(700)는, 배터리 전력 사용, 배터리의 충전, 및 전력 절감 동작에 관련된 피처들을 관리하는 전력 관리(750)를 포함한다. 메모리 서브시스템(760)은 디바이스(700)에 정보를 저장하기 위한 메모리 디바이스(들)(762)를 포함할 수 있다. 메모리 서브시스템(760)은 비휘발성(메모리 디바이스에 대한 전력이 중단되는 경우에 상태가 변경되지 않음) 및/또는 휘발성(메모리 디바이스에 대한 전력이 중단되는 경우에 상태가 규정되지 않음) 메모리 디바이스들을 포함할 수 있다. 메모리(760)는 애플리케이션 데이터, 사용자 데이터, 음악, 사진, 문서 또는 다른 데이터뿐만 아니라, 시스템(700)의 애플리케이션들 및 기능들의 실행에 관련된 시스템 데이터(장기이든 또는 임시이든)를 저장할 수 있다. 일 실시예에서, 메모리 서브시스템(760)은 메모리(762)를 제어하는 메모리 제어기(764)(시스템(700)의 제어의 일부로서 또한 고려될 수 있으며, 프로세서(710)의 일부로서 잠재적으로 고려될 수 있음)를 포함한다.
접속성(connectivity)(770)은, 디바이스(700)가 외부 디바이스들과 통신하는 것을 가능하게 하기 위한 하드웨어 디바이스들(예를 들어, 무선 및/또는 유선 커넥터들 및 통신 하드웨어) 및 소프트웨어 컴포넌트들(예를 들어, 드라이버들, 프로토콜 스택들)을 포함할 수 있다. 디바이스는, 헤드셋들, 프린터들 또는 다른 디바이스들과 같은 주변 장치들뿐만 아니라, 다른 컴퓨팅 디바이스들, 무선 액세스 포인트들 또는 기지국들과 같은 별개의 디바이스들일 수 있다.
접속성(770)는 다수의 상이한 타입의 접속성을 포함할 수 있다. 일반화하기 위해서, 디바이스(700)는 셀룰러 접속성(772) 및 무선 접속성(774)을 갖는 것으로 예시되어 있다. 일반적으로, 셀룰러 접속성(772)은 무선 캐리어들에 의해 제공되는, 예컨대 GSM(global system for mobile communications) 또는 변형물들이나 파생물들, CDMA(code division multiple access) 또는 변형물들이나 파생물들, TDM(time division multiplexing) 또는 변형물들이나 파생물들, LTE(long term evolution - "4G"로도 지칭됨), 또는 다른 셀룰러 서비스 표준들을 통해 제공되는 셀룰러 네트워크 접속성을 지칭한다. 무선 접속성(774)은 셀룰러가 아닌 무선 접속성을 지칭하며, (블루투스와 같은) 개인 영역 네트워크들, (WiFi와 같은) 로컬 영역 네트워크들, 및/또는 (WiMax와 같은) 광역 네트워크들, 또는 다른 무선 통신을 포함할 수 있다. 무선 통신은 비고체 매체를 통한 변조된 전자기 방사(modulated electromagnetic radiation)의 이용을 통하여 데이터를 전송하는 것을 지칭한다. 유선 통신은 고체 통신 매체를 통하여 발생한다.
주변 장치 접속들(peripheral connections)(780)은, 주변 장치 접속들을 구축하기 위한 하드웨어 인터페이스들과 커넥터들뿐만 아니라 소프트웨어 컴포넌트들(예를 들어, 드라이버들, 프로토콜 스택들)을 포함한다. 디바이스(700)는 다른 컴퓨팅 디바이스들에 대한 주변 디바이스("로(to)"(782))일 뿐만 아니라, 그것에 접속된 주변 디바이스들("로부터(from)"(784))을 가질 수 있다는 점이 이해될 것이다. 디바이스(700)는 통상적으로 디바이스(700) 상의 콘텐츠의 관리(예를 들어, 다운로드 및/또는 업로드, 변경, 동기화)와 같은 목적으로 다른 컴퓨팅 디바이스들에 접속하기 위한 "도킹" 커넥터를 갖는다. 추가적으로, 도킹 커넥터는, 디바이스(700)가 예를 들어 시청각 시스템 또는 다른 시스템에 대한 콘텐츠 출력을 제어할 수 있게 하는 특정 주변 장치들에 디바이스(700)가 접속하는 것을 허용할 수 있다.
사유 도킹 커넥터(proprietary docking connector) 또는 다른 사유 접속 하드웨어에 추가하여, 디바이스(700)는 공통 또는 표준 기반 커넥터들을 통해 주변 장치 접속들(780)을 구축할 수 있다. 공통 타입들은 USB(Universal Serial Bus) 커넥터(다수의 상이한 하드웨어 인터페이스 중 임의의 것을 포함할 수 있음), MDP(MiniDisplayPort)를 포함하는 디스플레이포트(DisplayPort), HDMI(High Definition Multimedia Interface), Firewire 또는 다른 타입을 포함할 수 있다.
일 구현예에서, 메모리 제어기는, 메모리의 복수의 활성 세그먼트의 제1 패트롤 스크럽을 수행하고, 플랫폼의 하나 이상의 세그먼트가 각각 복수의 활성 세그먼트에 대한 예비 세그먼트로서 이용가능한 동안에 하나 이상의 세그먼트의 제2 패트롤 스크럽을 수행하는 회로를 포함하는 스크러버 로직을 포함한다. 메모리 제어기는, 제1 패트롤 스크럽에 기초하여 검출되는 제1 정정불가능 에러 이벤트의 표시를 수신하는 회로를 포함하는 스페어러 로직을 더 포함하고, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 스페어러 로직은 제1 정정불가능 에러 이벤트의 표시에 응답하여 제1 핸들러 프로세스에만 시그널링하고, 스페어러 로직은 제2 패트롤 스크럽에 기초하여 검출되는 제2 정정불가능 에러 이벤트의 표시를 추가로 수신하고, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 스페어러 로직은 제2 정정불가능 에러 이벤트의 표시에 응답하여 제2 핸들러 프로세스에만 시그널링한다.
실시예에서, 제1 핸들러 프로세스는 머신 체크 예외 핸들러를 포함한다. 다른 실시예에서, 제2 핸들러 프로세스는 인터럽트 핸들러를 포함한다. 다른 실시예에서, 제2 핸들러 프로세스는 메모리 디바이스를 교체하라는 서비스 요청을 등록한다. 다른 실시예에서, 제1 핸들러 프로세스는 프로세서에 의한 호스트 운영 체제의 실행 중에 실행되고, 제2 핸들러 프로세스는 프로세서의 시스템 관리 모드 중에 실행된다. 다른 실시예에서, 스페어러 로직은, 제1 패트롤 스크럽에 기초하여 임계 정정가능 에러 이벤트가 검출되는 경우에 제1 프로세스와는 다른 핸들러 프로세스에 추가로 시그널링하고, 임계 정정가능 에러 이벤트에 응답하여 시그널링되는 임의의 핸들러 프로세스는 제1 핸들러 프로세스와는 다른 핸들러 프로세스이다. 다른 실시예에서, 스페어러 로직이 제1 프로세스와는 다른 핸들러 프로세스에 시그널링하는 것은, 스페어러 로직이 프로세서의 시스템 관리 모드 중에 실행되는 핸들러 프로세스에 시그널링하는 것을 포함한다.
다른 구현예에서, 방법은 메모리의 복수의 활성 세그먼트의 제1 패트롤 스크러빙을 수행하는 단계; 및 제1 패트롤 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우, 제1 핸들러 프로세스에 시그널링하는 단계를 포함하고, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 정정불가능 에러 이벤트가 제1 패트롤 스크러빙에 의해 검출되는 것에 응답하여 제1 핸들러 프로세스에만 시그널링된다. 이 방법은, 메모리의 하나 이상의 세그먼트가 각각 복수의 활성 세그먼트에 대한 예비 세그먼트로서 이용가능한 동안에 하나 이상의 세그먼트의 제2 패트롤 스크러빙을 수행하는 단계; 및 제2 패트롤 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우, 제2 핸들러 프로세스에 시그널링하는 단계를 더 포함하고, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 정정불가능 에러 이벤트가 제1 패트롤 스크러빙에 의해 검출되는 것에 응답하여 제1 핸들러 프로세스에만 시그널링된다.
실시예에서, 제1 핸들러 프로세스는 머신 체크 예외 핸들러를 포함한다. 다른 실시예에서, 제2 핸들러 프로세스는 인터럽트 핸들러를 포함한다. 다른 실시예에서, 제2 핸들러 프로세스는 메모리 디바이스를 교체하라는 서비스 요청을 등록한다. 다른 실시예에서, 제1 핸들러 프로세스는 프로세서에 의한 호스트 운영 체제의 실행 중에 실행되고, 제2 핸들러 프로세스는 프로세서의 시스템 관리 모드 중에 실행된다. 다른 실시예에서, 이 방법은, 제1 패트롤 스크러빙에 기초하여 임계 정정가능 에러 이벤트가 검출되는 경우, 제1 프로세스와는 다른 핸들러 프로세스에 시그널링하는 단계를 더 포함하고, 임계 정정가능 에러 이벤트에 응답하여 시그널링되는 임의의 핸들러 프로세스는 제1 핸들러 프로세스와는 다른 핸들러 프로세스이다. 다른 실시예에서, 제1 프로세스와는 다른 핸들러 프로세스에 시그널링하는 단계는, 프로세서의 시스템 관리 모드 중에 실행되는 핸들러 프로세스에 시그널링하는 단계를 포함한다.
다른 구현예에서, 시스템은 하나 이상의 메모리 디바이스; 인터커넥트; 및 인터커넥트를 통해 하나 이상의 메모리 디바이스에 결합된 메모리 제어기를 포함하고, 메모리 제어기는 하나 이상의 메모리 디바이스를 제어한다. 메모리 제어기는, 하나 이상의 메모리 디바이스의 복수의 활성 세그먼트의 제1 패트롤 스크러빙을 수행하고, 하나 이상의 메모리 디바이스의 하나 이상의 세그먼트가 각각 복수의 활성 세그먼트에 대한 예비 세그먼트로서 이용가능한 동안에 하나 이상의 세그먼트의 제2 패트롤 스크러빙을 수행하는 회로를 포함하는 스크러버 로직을 포함한다. 메모리 제어기는, 제1 패트롤 스크러빙에 기초하여 검출되는 제1 정정불가능 에러 이벤트의 표시를 수신하는 회로를 포함하는 스페어러 로직을 더 포함하고, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 스페어러 로직은 제1 정정불가능 에러 이벤트의 표시에 응답하여 제1 핸들러 프로세스에만 시그널링하고, 스페어러 로직은 제2 패트롤 스크러빙에 기초하여 검출되는 제2 정정불가능 에러 이벤트의 표시를 추가로 수신하고, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 스페어러 로직은 제2 정정불가능 에러 이벤트의 표시에 응답하여 제2 핸들러 프로세스에만 시그널링한다.
실시예에서, 제1 핸들러 프로세스는 머신 체크 예외 핸들러를 포함한다. 다른 실시예에서, 제2 핸들러 프로세스는 인터럽트 핸들러를 포함한다. 다른 실시예에서, 제2 핸들러 프로세스는 메모리 디바이스를 교체하라는 서비스 요청을 등록한다. 다른 실시예에서, 제1 핸들러 프로세스는 프로세서에 의한 호스트 운영 체제의 실행 중에 실행되고, 제2 핸들러 프로세스는 프로세서의 시스템 관리 모드 중에 실행된다. 다른 실시예에서, 스페어러 로직은, 제1 스크럽에 기초하여 임계 정정가능 에러 이벤트가 검출되는 경우에 제1 프로세스와는 다른 핸들러 프로세스에 추가로 시그널링하고, 임계 정정가능 에러 이벤트에 응답하여 시그널링되는 임의의 핸들러 프로세스는 제1 핸들러 프로세스와는 다른 핸들러 프로세스이다.
다른 구현예에서, 하나 이상의 처리 유닛에 의해 실행될 때, 하나 이상의 처리 유닛으로 하여금 방법을 수행하게 하는 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 매체가 제공되는데, 이 방법은 메모리의 복수의 활성 세그먼트의 제1 패트롤 스크러빙을 수행하는 단계; 및 제1 패트롤 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우, 제1 핸들러 프로세스에 시그널링하는 단계를 포함하고, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 정정불가능 에러 이벤트가 제1 패트롤 스크러빙에 의해 검출되는 것에 응답하여 제1 핸들러 프로세스에만 시그널링된다. 이 방법은, 메모리의 하나 이상의 세그먼트가 각각 복수의 활성 세그먼트에 대한 예비 세그먼트로서 이용가능한 동안에 하나 이상의 세그먼트의 제2 패트롤 스크러빙을 수행하는 단계; 및 제2 패트롤 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우, 제2 핸들러 프로세스에 시그널링하는 단계를 더 포함하고, 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 정정불가능 에러 이벤트가 제1 패트롤 스크러빙에 의해 검출되는 것에 응답하여 제1 핸들러 프로세스에만 시그널링된다.
실시예에서, 제1 핸들러 프로세스는 머신 체크 예외 핸들러를 포함한다. 다른 실시예에서, 제2 핸들러 프로세스는 인터럽트 핸들러를 포함한다. 다른 실시예에서, 제2 핸들러 프로세스는 메모리 디바이스를 교체하라는 서비스 요청을 등록한다. 다른 실시예에서, 제1 핸들러 프로세스는 프로세서에 의한 호스트 운영 체제의 실행 중에 실행되고, 제2 핸들러 프로세스는 프로세서의 시스템 관리 모드 중에 실행된다.
메모리를 제어하기 위한 기술들 및 아키텍처들이 본 명세서에 설명된다. 위의 설명에서는, 설명을 목적으로, 특정 실시예들의 철저한 이해를 제공하기 위해서 다수의 특정 상세가 제시한다. 그러나, 특정 실시예들은 이러한 특정 상세 없이 실시될 수 있다는 것이 본 기술분야의 통상의 기술자에게 명백할 것이다. 다른 경우에, 본 설명을 모호하게 하는 것을 회피하기 위해서 구조들 및 디바이스들은 블록도 형태로 도시된다.
본 명세서에서 "일 실시예(one embodiment)" 또는 "실시예(an embodiment)"에 대한 언급은, 이 실시예와 관련하여 설명된 특정 피처, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함되는 것을 의미한다. 본 명세서의 다양한 곳에서의 "일 실시예에서"라는 어구의 출현은 반드시 모두가 동일한 실시예를 언급하는 것은 아니다.
본 명세서에서의 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산들의 알고리즘들 및 심볼 표현들에 관하여 제시된다. 이러한 알고리즘 설명들 및 표현들은, 컴퓨팅 기술분야의 통상의 기술자가 그들의 작업의 본질을 본 기술분야의 다른 통상의 기술자에게 가장 효과적으로 전달하기 위해 이용되는 수단이다. 알고리즘은 여기서 그리고 일반적으로 원하는 결과를 초래하는 자기-일관적인(self-consistent) 단계들의 시퀀스인 것으로 고려된다. 단계들은 물리적 양들의 물리적 조작을 요구하는 것들이다. 일반적으로, 반드시 그러하지는 않지만, 이러한 양들은 저장되고, 전송되고, 결합되고, 비교되고, 다른 방식으로 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 주로 통상 사용의 이유로 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 항들, 숫자들 등으로서 지칭하는 것이 때로는 편리하다는 것이 입증되었다.
그러나, 이러한 용어들 및 유사한 용어들 모두가 적절한 물리적 양들과 연관되며, 이러한 양들에 적용된 편리한 라벨들일 뿐이라는 점을 명심해야 한다. 본 명세서에서의 논의로부터 명백한 바와 같이 구체적으로 달리 기술되지 않는 한, 본 설명 전체에 걸쳐 "처리" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 또는 "디스플레이" 등과 같은 용어들을 이용하는 논의들은, 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자적) 양들로서 표현되는 데이터를 조작하여, 컴퓨터 시스템 메모리들이나 레지스터들 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 디바이스들 내의 물리적 양들로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션 및 프로세스들을 지칭한다는 점이 인식된다.
특정 실시예들은 본 명세서에서 동작들을 수행하기 위한 장치에 또한 관한 것이다. 이러한 장치는 특별히 요구된 목적을 위해 구성될 수 있거나, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 플로피 디스크, 광학 디스크, CD-ROM 및 광자기 디스크를 포함하는 임의의 타입의 디스크, 판독 전용 메모리(ROM), 동적 RAM(DRAM)과 같은 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 컴퓨터 시스템 버스에 결합되며 전자 명령어들을 저장하기에 적합한 임의의 타입의 매체와 같지만 이에 제한되지는 않는 컴퓨터 판독가능 저장 매체에 저장될 수 있다.
본 명세서에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치에 관련되지는 않는다. 다양한 범용 시스템들이 본 명세서에서의 교시들에 따라 프로그램들과 함께 이용될 수 있거나, 또는 요구된 방법 단계들을 수행하도록 더 특수화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 각종의 이러한 시스템들에 대해 요구된 구조는 본 명세서에서의 설명으로부터 나타날 것이다. 추가로, 특정 실시예들은 임의의 특정 프로그래밍 언어를 참조하여 설명되지는 않는다. 각종의 프로그래밍 언어들이 본 명세서에 설명된 바와 같은 이러한 실시예들의 교시들을 구현하는데 이용될 수 있다는 점이 인식될 것이다.
본 명세서에 설명되는 것 외에, 그것의 범위로부터 벗어나지 않으면서 본 명세서의 개시된 실시예들 및 구현예들에 대해 다양한 수정들이 이루어질 수 있다. 그러므로, 본 명세서에서의 예시들 및 예들은 제한적인 의미가 아니라 예시적인 의미로 해석되어야 한다. 본 발명의 범위는 후속하는 청구항들에 대한 참조에 의해서만 판단되어야 한다.

Claims (25)

  1. 메모리 제어기로서,
    메모리의 복수의 활성 세그먼트의 제1 패트롤 스크럽(patrol scrub)을 수행하고, 상기 플랫폼의 하나 이상의 세그먼트가 각각 상기 복수의 활성 세그먼트에 대한 예비 세그먼트로서 이용가능한 동안에 상기 하나 이상의 세그먼트의 제2 패트롤 스크럽을 수행하는 회로를 포함하는 스크러버 로직; 및
    상기 제1 패트롤 스크럽에 기초하여 검출되는 제1 정정불가능 에러 이벤트의 표시를 수신하는 회로를 포함하는 스페어러 로직(sparer logic) - 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 상기 스페어러 로직은 상기 제1 정정불가능 에러 이벤트의 표시에 응답하여 상기 제1 핸들러 프로세스에만 시그널링하고, 상기 스페어러 로직은 상기 제2 패트롤 스크럽에 기초하여 검출되는 제2 정정불가능 에러 이벤트의 표시를 추가로 수신하고, 상기 제1 핸들러 프로세스 및 상기 제2 핸들러 프로세스 중에서, 상기 스페어러 로직은 상기 제2 정정불가능 에러 이벤트의 표시에 응답하여 상기 제2 핸들러 프로세스에만 시그널링함 -
    을 포함하는 메모리 제어기.
  2. 제1항에 있어서,
    상기 제1 핸들러 프로세스는 머신 체크 예외 핸들러(machine check exception handler)를 포함하는 메모리 제어기.
  3. 제1항에 있어서,
    상기 제2 핸들러 프로세스는 인터럽트 핸들러를 포함하는 메모리 제어기.
  4. 제1항에 있어서,
    상기 제2 핸들러 프로세스는 메모리 디바이스를 교체하라는 서비스 요청을 등록하는 메모리 제어기.
  5. 제1항에 있어서,
    상기 제1 핸들러 프로세스는 프로세서에 의한 호스트 운영 체제의 실행 중에 실행되고, 상기 제2 핸들러 프로세스는 상기 프로세서의 시스템 관리 모드 중에 실행되는 메모리 제어기.
  6. 제1항에 있어서,
    상기 스페어러 로직은, 상기 제1 패트롤 스크럽에 기초하여 임계 정정가능 에러 이벤트(threshold correctable error event)가 검출되는 경우에 상기 제1 프로세스와는 다른 핸들러 프로세스에 추가로 시그널링하고, 상기 임계 정정가능 에러 이벤트에 응답하여 시그널링되는 임의의 핸들러 프로세스는 상기 제1 핸들러 프로세스와는 다른 핸들러 프로세스인 메모리 제어기.
  7. 제6항에 있어서,
    상기 스페어러 로직이 상기 제1 프로세스와는 다른 핸들러 프로세스에 시그널링하는 것은, 상기 스페어러 로직이 프로세서의 시스템 관리 모드 중에 실행되는 핸들러 프로세스에 시그널링하는 것을 포함하는 메모리 제어기.
  8. 방법으로서,
    메모리의 복수의 활성 세그먼트의 제1 패트롤 스크러빙을 수행하는 단계;
    상기 제1 패트롤 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우, 제1 핸들러 프로세스에 시그널링하는 단계 - 상기 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 상기 정정불가능 에러 이벤트가 상기 제1 패트롤 스크러빙에 의해 검출되는 것에 응답하여 상기 제1 핸들러 프로세스에만 시그널링됨 -;
    상기 메모리의 하나 이상의 세그먼트가 각각 상기 복수의 활성 세그먼트에 대한 예비 세그먼트로서 이용가능한 동안에 상기 하나 이상의 세그먼트의 제2 패트롤 스크러빙을 수행하는 단계; 및
    상기 제2 패트롤 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우, 상기 제2 핸들러 프로세스에 시그널링하는 단계 - 상기 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 상기 정정불가능 에러 이벤트가 상기 제1 패트롤 스크러빙에 의해 검출되는 것에 응답하여 상기 제1 핸들러 프로세스에만 시그널링됨 -
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 제1 핸들러 프로세스는 머신 체크 예외 핸들러를 포함하는 방법.
  10. 제8항에 있어서,
    상기 제2 핸들러 프로세스는 인터럽트 핸들러를 포함하는 방법.
  11. 제8항에 있어서,
    상기 제2 핸들러 프로세스는 메모리 디바이스를 교체하라는 서비스 요청을 등록하는 방법.
  12. 제8항에 있어서,
    상기 제1 핸들러 프로세스는 프로세서에 의한 호스트 운영 체제의 실행 중에 실행되고, 상기 제2 핸들러 프로세스는 상기 프로세서의 시스템 관리 모드 중에 실행되는 방법.
  13. 제8항에 있어서,
    상기 제1 패트롤 스크러빙에 기초하여 임계 정정가능 에러 이벤트가 검출되는 경우, 상기 제1 프로세스와는 다른 핸들러 프로세스에 시그널링하는 단계를 더 포함하고, 상기 임계 정정가능 에러 이벤트에 응답하여 시그널링되는 임의의 핸들러 프로세스는 상기 제1 핸들러 프로세스와는 다른 핸들러 프로세스인 방법.
  14. 제13항에 있어서,
    상기 제1 프로세스와는 다른 핸들러 프로세스에 시그널링하는 단계는, 프로세서의 시스템 관리 모드 중에 실행되는 핸들러 프로세스에 시그널링하는 단계를 포함하는 방법.
  15. 시스템으로서,
    하나 이상의 메모리 디바이스;
    인터커넥트(interconnect); 및
    상기 인터커넥트를 통해 상기 하나 이상의 메모리 디바이스에 결합된 메모리 제어기
    를 포함하고,
    상기 메모리 제어기는 상기 하나 이상의 메모리 디바이스를 제어하고,
    상기 메모리 제어기는,
    상기 하나 이상의 메모리 디바이스의 복수의 활성 세그먼트의 제1 패트롤 스크러빙을 수행하고, 상기 하나 이상의 메모리 디바이스의 하나 이상의 세그먼트가 각각 상기 복수의 활성 세그먼트에 대한 예비 세그먼트로서 이용가능한 동안에 상기 하나 이상의 세그먼트의 제2 패트롤 스크러빙을 수행하는 회로를 포함하는 스크러버 로직; 및
    상기 제1 패트롤 스크러빙에 기초하여 검출되는 제1 정정불가능 에러 이벤트의 표시를 수신하는 회로를 포함하는 스페어러 로직 - 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 상기 스페어러 로직은 상기 제1 정정불가능 에러 이벤트의 표시에 응답하여 상기 제1 핸들러 프로세스에만 시그널링하고, 상기 스페어러 로직은 상기 제2 패트롤 스크러빙에 기초하여 검출되는 제2 정정불가능 에러 이벤트의 표시를 추가로 수신하고, 상기 제1 핸들러 프로세스 및 상기 제2 핸들러 프로세스 중에서, 상기 스페어러 로직은 상기 제2 정정불가능 에러 이벤트의 표시에 응답하여 상기 제2 핸들러 프로세스에만 시그널링함 -
    을 포함하는 시스템.
  16. 제15항에 있어서,
    상기 제1 핸들러 프로세스는 머신 체크 예외 핸들러를 포함하는 시스템.
  17. 제15항에 있어서,
    상기 제2 핸들러 프로세스는 인터럽트 핸들러를 포함하는 시스템.
  18. 제15항에 있어서,
    상기 제2 핸들러 프로세스는 메모리 디바이스를 교체하라는 서비스 요청을 등록하는 시스템.
  19. 제15항에 있어서,
    상기 제1 핸들러 프로세스는 프로세서에 의한 호스트 운영 체제의 실행 중에 실행되고, 상기 제2 핸들러 프로세스는 상기 프로세서의 시스템 관리 모드 중에 실행되는 시스템.
  20. 제15항에 있어서,
    상기 스페어러 로직은, 상기 제1 스크럽에 기초하여 임계 정정가능 에러 이벤트가 검출되는 경우에 상기 제1 프로세스와는 다른 핸들러 프로세스에 추가로 시그널링하고, 상기 임계 정정가능 에러 이벤트에 응답하여 시그널링되는 임의의 핸들러 프로세스는 상기 제1 핸들러 프로세스와는 다른 핸들러 프로세스인 시스템.
  21. 하나 이상의 처리 유닛에 의해 실행될 때, 상기 하나 이상의 처리 유닛으로 하여금 방법을 수행하게 하는 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    메모리의 복수의 활성 세그먼트의 제1 패트롤 스크러빙을 수행하는 단계;
    상기 제1 패트롤 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우, 제1 핸들러 프로세스에 시그널링하는 단계 - 상기 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 상기 정정불가능 에러 이벤트가 상기 제1 패트롤 스크러빙에 의해 검출되는 것에 응답하여 상기 제1 핸들러 프로세스에만 시그널링됨 -;
    상기 메모리의 하나 이상의 세그먼트가 각각 상기 복수의 활성 세그먼트에 대한 예비 세그먼트로서 이용가능한 동안에 상기 하나 이상의 세그먼트의 제2 패트롤 스크러빙을 수행하는 단계; 및
    상기 제2 패트롤 스크러빙에 기초하여 정정불가능 에러 이벤트가 검출되는 경우, 상기 제2 핸들러 프로세스에 시그널링하는 단계 - 상기 제1 핸들러 프로세스 및 제2 핸들러 프로세스 중에서, 상기 정정불가능 에러 이벤트가 상기 제1 패트롤 스크러빙에 의해 검출되는 것에 응답하여 상기 제1 핸들러 프로세스에만 시그널링됨 -
    를 포함하는 컴퓨터 판독가능 저장 매체.
  22. 제21항에 있어서,
    상기 제1 핸들러 프로세스는 머신 체크 예외 핸들러를 포함하는 컴퓨터 판독가능 저장 매체.
  23. 제21항에 있어서,
    상기 제2 핸들러 프로세스는 인터럽트 핸들러를 포함하는 컴퓨터 판독가능 저장 매체.
  24. 제21항에 있어서,
    상기 제2 핸들러 프로세스는 메모리 디바이스를 교체하라는 서비스 요청을 등록하는 컴퓨터 판독가능 저장 매체.
  25. 제21항에 있어서,
    상기 제1 핸들러 프로세스는 프로세서에 의한 호스트 운영 체제의 실행 중에 실행되고, 상기 제2 핸들러 프로세스는 상기 프로세서의 시스템 관리 모드 중에 실행되는 컴퓨터 판독가능 저장 매체.
KR1020167025102A 2014-04-16 2014-04-16 메모리 제어기를 이용하여 데이터 에러 이벤트들을 핸들링하기 위한 방법, 장치 및 시스템 KR101821515B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/075472 WO2015157932A1 (en) 2014-04-16 2014-04-16 Method, apparatus and system for handling data error events with memory controller

Publications (2)

Publication Number Publication Date
KR20160120323A true KR20160120323A (ko) 2016-10-17
KR101821515B1 KR101821515B1 (ko) 2018-01-23

Family

ID=54323369

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167025102A KR101821515B1 (ko) 2014-04-16 2014-04-16 메모리 제어기를 이용하여 데이터 에러 이벤트들을 핸들링하기 위한 방법, 장치 및 시스템

Country Status (6)

Country Link
US (1) US9535782B2 (ko)
EP (1) EP3132449B1 (ko)
KR (1) KR101821515B1 (ko)
CN (1) CN106463179B (ko)
TW (1) TWI553650B (ko)
WO (1) WO2015157932A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703661B2 (en) 2015-02-05 2017-07-11 International Business Machines Corporation Eliminate corrupted portions of cache during runtime
US9904595B1 (en) 2016-08-23 2018-02-27 Texas Instruments Incorporated Error correction hardware with fault detection
US10437729B2 (en) 2017-04-19 2019-10-08 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache
US10489253B2 (en) 2017-05-16 2019-11-26 International Business Machines Corporation On-demand GPR ECC error detection and scrubbing for a multi-slice microprocessor
GB2563887B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Masking of architectural state associated with a realm
US10679718B2 (en) * 2017-10-04 2020-06-09 Western Digital Technologies, Inc. Error reducing matrix generation
KR102538679B1 (ko) * 2018-04-06 2023-06-02 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI685751B (zh) 2018-04-10 2020-02-21 神雲科技股份有限公司 伺服器裝置的錯誤報告功能的控制方法
US11221910B2 (en) 2018-07-24 2022-01-11 Micron Technology, Inc. Media scrubber in memory system
US10846162B2 (en) 2018-11-29 2020-11-24 Oracle International Corporation Secure forking of error telemetry data to independent processing units
CN114579340A (zh) * 2019-03-01 2022-06-03 超聚变数字技术有限公司 内存错误处理方法和装置
US11042483B2 (en) 2019-04-26 2021-06-22 International Business Machines Corporation Efficient eviction of whole set associated cache or selected range of addresses
US11334457B1 (en) * 2019-06-27 2022-05-17 Samsung Electronics Co., Ltd. Semiconductor memory device and memory system including the same
US11403010B2 (en) 2020-08-19 2022-08-02 Silicon Motion, Inc. Data storage device and plane selection method thereof
KR20220049397A (ko) 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
WO2022099531A1 (en) * 2020-11-12 2022-05-19 Intel Corporation Offloading reliability, availability and serviceability runtime system management interrupt error handling to cpu on-die modules
US11348620B1 (en) * 2021-01-26 2022-05-31 Dell Products L.P. Systems and methods for power protection on failed memory devices
US11537468B1 (en) * 2021-12-06 2022-12-27 Hewlett Packard Enterprise Development Lp Recording memory errors for use after restarts
CN117581211A (zh) * 2021-12-13 2024-02-20 英特尔公司 基于置信因子、基于故障感知分析的不可校正错误的系统内减轻
US20230333749A1 (en) * 2022-04-15 2023-10-19 SK Hynix Inc. Memory, operation method of memory, and operation method of memory system

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0617363B1 (en) 1989-04-13 2000-01-26 SanDisk Corporation Defective cell substitution in EEprom array
US5263032A (en) 1991-06-27 1993-11-16 Digital Equipment Corporation Computer system operation with corrected read data function
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
US5379415A (en) * 1992-09-29 1995-01-03 Zitel Corporation Fault tolerant memory system
US6480982B1 (en) * 1999-06-04 2002-11-12 International Business Machines Corporation Computer RAM memory system with enhanced scrubbing and sparing
US6715116B2 (en) 2000-01-26 2004-03-30 Hewlett-Packard Company, L.P. Memory data verify operation
US6981173B2 (en) * 2001-09-28 2005-12-27 Hewlett-Packard Development Company, L.P. Redundant memory sequence and fault isolation
US7234099B2 (en) 2003-04-14 2007-06-19 International Business Machines Corporation High reliability memory module with a fault tolerant address and command bus
US7334159B1 (en) 2003-09-29 2008-02-19 Rockwell Automation Technologies, Inc. Self-testing RAM system and method
US8060774B2 (en) * 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US20070089032A1 (en) * 2005-09-30 2007-04-19 Intel Corporation Memory system anti-aliasing scheme
US7325078B2 (en) * 2005-10-06 2008-01-29 Hewlett-Packard Development Company, L.P. Secure data scrubbing
US7913147B2 (en) 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
US7823011B2 (en) * 2007-08-22 2010-10-26 International Business Machines Corporation Intra-disk coding scheme for data-storage systems
US8161356B2 (en) * 2008-03-28 2012-04-17 Intel Corporation Systems, methods, and apparatuses to save memory self-refresh power
US8122308B2 (en) 2008-06-25 2012-02-21 Intel Corporation Securely clearing an error indicator
US8020053B2 (en) * 2008-10-29 2011-09-13 Hewlett-Packard Development Company, L.P. On-line memory testing
US20110041005A1 (en) 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US8640006B2 (en) * 2011-06-29 2014-01-28 International Business Machines Corporation Preemptive memory repair based on multi-symbol, multi-scrub cycle analysis
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
US9003223B2 (en) * 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment

Also Published As

Publication number Publication date
CN106463179A (zh) 2017-02-22
US9535782B2 (en) 2017-01-03
EP3132449A4 (en) 2017-12-20
TWI553650B (zh) 2016-10-11
WO2015157932A1 (en) 2015-10-22
EP3132449A1 (en) 2017-02-22
CN106463179B (zh) 2019-11-19
US20160004587A1 (en) 2016-01-07
TW201603040A (zh) 2016-01-16
EP3132449B1 (en) 2023-04-26
KR101821515B1 (ko) 2018-01-23

Similar Documents

Publication Publication Date Title
KR101821515B1 (ko) 메모리 제어기를 이용하여 데이터 에러 이벤트들을 핸들링하기 위한 방법, 장치 및 시스템
CN107430538B (zh) 基于错误类型的ecc的动态应用
US10310926B2 (en) Data error detection in computing systems
US9904591B2 (en) Device, system and method to restrict access to data error information
US8806285B2 (en) Dynamically allocatable memory error mitigation
US20150067437A1 (en) Apparatus, method and system for reporting dynamic random access memory error information
KR101736225B1 (ko) 커맨드/어드레스 레지스터 디바이스 내에 저장된 데이터에의 액세스
US10229018B2 (en) System and method for data restore flexibility on dual channel NVDIMMs
US11977744B2 (en) Memory anomaly processing method and system, electronic device, and storage medium
US20140089576A1 (en) Method, apparatus and system for providing a memory refresh
US10916326B1 (en) System and method for determining DIMM failures using on-DIMM voltage regulators
US20190163557A1 (en) Error recovery in volatile memory regions
US9122598B2 (en) Semiconductor device and operating method thereof
US10289339B2 (en) System and method for storing modified data to an NVDIMM during a save operation
US10990291B2 (en) Software assist memory module hardware architecture
KR101141487B1 (ko) 집적 메모리 제어기의 결함 메모리 디바이스들과의 투과성 동작 인에이블링
CN112631822A (zh) 存储器、具有其的存储系统及其操作方法
US20080052721A1 (en) Dynamic Affinity Mapping to Reduce Usage of Less Reliable Resources
US10635553B2 (en) Error recovery in non-volatile storage partitions
US10777296B2 (en) Information handling system and method to dynamically detect and recover from thermally induced memory failures
US12013946B2 (en) Baseboard memory controller (BMC) reliability availability and serviceability (RAS) driver firmware update via basic input/output system (BIOS) update release
US20240118970A1 (en) Techniques for memory scrubbing associated with reliability availability and serviceability features
US20210311889A1 (en) Memory device and associated flash memory controller
JP2013020515A (ja) メモリ冗長化装置、メモリ冗長化方法、及びプログラム

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