KR20230042628A - 임박한 메모리 오류의 결함 인식 예측에 기초한 페이지 오프라인화 - Google Patents

임박한 메모리 오류의 결함 인식 예측에 기초한 페이지 오프라인화 Download PDF

Info

Publication number
KR20230042628A
KR20230042628A KR1020220103893A KR20220103893A KR20230042628A KR 20230042628 A KR20230042628 A KR 20230042628A KR 1020220103893 A KR1020220103893 A KR 1020220103893A KR 20220103893 A KR20220103893 A KR 20220103893A KR 20230042628 A KR20230042628 A KR 20230042628A
Authority
KR
South Korea
Prior art keywords
memory
page
controller
error
host
Prior art date
Application number
KR1020220103893A
Other languages
English (en)
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
Priority claimed from US17/512,432 external-priority patent/US20220050603A1/en
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20230042628A publication Critical patent/KR20230042628A/ko

Links

Images

Classifications

    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0629Configuration or reconfiguration 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/025Detection or location of defective auxiliary circuits, e.g. defective refresh counters in signal lines
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • G11C29/16Implementation of control logic, e.g. test mode decoders using microprogrammed units, e.g. state machines
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • 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/008Reliability or availability analysis
    • 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/0403Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals during or with feedback to manufacture
    • 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
    • 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/0411Online error correction
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/1202Word line control
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/1204Bit line control
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Abstract

시스템은 정정 가능한 오류 패턴이 메모리 아키텍처와 어떻게 상관되는지의 식별에 기초하여 시스템이 메모리의 어떤 페이지를 오프라인화해야 하는지를 예측할 수 있다. 장애 예측은 정정 가능한 오류의 단순한 수나 빈도가 아니라 메모리의 회로-레벨 아키텍처를 고려할 수 있다. 제어기는 메모리의 하드웨어 구성을 이력적 오류 데이터와 연관시키고, 정정 불가능한 오류(UE) 예측에 기초하여 호스트 운영 체제(OS)가 오프라인화할 페이지의 추정을 생성한다.

Description

임박한 메모리 오류의 결함 인식 예측에 기초한 페이지 오프라인화{PAGE OFFLINING BASED ON FAULT-AWARE PREDICTION OF IMMINENT MEMORY ERROR}
관련 출원에 대한 상호참조
본 출원은 2021년 9월 22일에 출원된 특허 협력 조약(PCT) 출원 번호 PCT/CN2021/119543에 대한 우선권의 이익을 주장한다. 해당 출원의 전체 내용은 참조에 의해 통합된다.
분야
설명은 일반적으로 메모리 시스템에 관한 것이고, 보다 구체적인 설명은 정정 불가능한 오류의 예측에 기초한 페이지 오프라인화(page offlining)에 관한 것이다.
메모리 장애는 데이터센터에서의 서버 장애 및 관련 다운타임(downtime)의 주요 원인 중 하나이다. 메모리 오류는 정정 가능한 오류(correctable error: CE) 또는 정정 불가능한 오류(uncorrectable error: UE)로 분류될 수 있다. CE는 오류 검사 및 정정(error checking and correction: ECC)을 적용하여 정정될 수 있는 메모리 디바이스 데이터 내의 일시적 오류를 나타낸다. UE는 ECC의 적용에 의해 합리적으로 정정될 수 없으며 시스템 장애를 초래하는 오류를 지칭한다.
계획되지 않은 시스템 다운타임을 줄이기 위해 메모리 장애를 예측하려고 시도하는 시스템이 존재한다. 메모리 장애 예측을 위한 한 가지 전략은 오류 조건이 충족될 때 운영 체제(OS)가 특정 페이지를 오프라인화하는 능력을 제공하는 예측성 메모리 페이지 오프라인화일 수 있다.
전통적인 결함 예측은 정정 가능한 오류(CE)의 임계값 기반 카운팅으로, 페이지 레벨 CE 임계값에 응답하여 페이지 오프라인화를 트리거한다. 특정 시간대(보통 24시간)에서 페이지의 오류의 수가 미리 구성된 임계값을 초과하면, 페이지가 오프라인화된다. 그러나, 전통적인 정정 가능한 오류 통계는, CE에 대한 이력 정보와 결합하더라도, 메모리 시스템에서 신뢰할 수 있는 UE 예측을 제공하지 않는다. 따라서, CE 임계값에 의존하는 것은 페이지 오프라인화를 위한 안정적 기반을 제공하지 않는다.
다음 설명은 구현의 예로서 주어진 예시를 갖는 도면의 논의를 포함한다. 도면은 제한이 아니라 예로서 이해되어야 한다. 본 명세서에서 사용되는 바와 같이, 하나 이상의 예에 대한 참조는 본 발명의 적어도 하나의 구현에 포함된 특정 특징, 구조 또는 특성을 설명하는 것으로 이해되어야 한다. 본 명세서에 등장하는 "일 예에서" 또는 "대안적 예에서"와 같은 문구는 본 발명의 구현의 예를 제공하며, 반드시 모두가 동일한 구현을 지칭하는 것은 아니다. 그러나, 이들은 또한 반드시 상호 배타적인 것이 아니다.
도 1은 결함 페이지 예측을 갖는 시스템의 예의 블록도이다.
도 2a는 정정 불가능한 오류 예측 훈련의 예의 블록도이다.
도 2b는 정정 불가능한 오류 예측에 기초한 결함 페이지 예측의 예의 블록도이다.
도 3a는 결함 페이지 예측을 위한 시스템 아키텍처의 예의 블록도이다.
도 3b는 메모리 아키텍처에 기초한 결함 페이지 예측의 예의 블록도이다.
도 4는 결함 페이지 어드레스의 레이아웃의 예를 나타내는 표이다.
도 5a는 결함 페이지 예측의 예의 도식적 표현이다.
도 5b는 도 5a의 그래프에 대한 결함 페이지 예측 값의 예의 표이다.
도 6은 결함 페이지를 예측하기 위한 프로세스의 예의 흐름도이다.
도 7은 결함 페이지 예측이 구현될 수 있는 메모리 서브시스템의 예의 블록도이다.
도 8은 결함 페이지 예측이 구현될 수 있는 컴퓨팅 시스템의 예의 블록도이다.
도 9는 결함 페이지 예측이 구현될 수 있는 멀티-노드 네트워크의 예의 블록도이다.
일부 또는 모든 예 및 다른 잠재적인 구현을 묘사할 수 있는, 도면의 비제한적 설명을 포함하는 특정 세부사항 및 구현에 대한 설명이 이어진다.
본 명세서에 설명된 바와 같이, 시스템은 정정 가능한 오류 패턴이 메모리 아키텍처와 어떻게 상관되는지에 대한 식별에 기초하여 시스템이 메모리의 어떤 페이지를 오프라인화해야 하는지를 예측할 수 있다. 장애 예측은 정정 가능한 오류의 단순한 수나 빈도가 아니라 메모리의 회로-레벨 아키텍처를 고려할 수 있다. 회로 구조와 관련된 오류 패턴을 관찰하는 것은 단순히 총 CE 카운트를 모니터링하는 것보다 훨씬 더 신뢰할 수 있는 페이지 결함 가능성 지표이다. 따라서, 회로-레벨 정보에 기초하여 오프라인화할 페이지를 예측하면 보다 안정적인 예측 및 향상된 시스템 성능이 제공된다.
일 예에서, 메모리 디바이스 결함 예측은 시스템 아키텍처 정보와 상관된 정정 가능한 오류 정보에 기초하여 제공된다. 따라서, 시스템은 정정 불가능한 오류를 예측할 때 메모리의 물리적 체계화 및 구조와 관련된 랭크, 뱅크, 행, 열, 또는 다른 정보를 고려할 수 있다. 정정 불가능한 오류(UE)는 총 정정 가능한 오류(CE) 카운트에 의해 알려지지 않는 열, 행 또는 비트 레벨의 결함과 강하게 상관되는 경향이 있음이 관찰될 수 있다. 제어기는 메모리의 하드웨어 구성을 이력적 오류 데이터와 상관시키고, 정정 불가능한 오류(UE)의 예측에 기초하여 호스트 운영 체제(OS)가 오프라인화할 페이지의 추정을 생성한다.
총 오류의 전통적 카운팅은 결함에 무관하지만, 하드웨어 구성에 기초한 예측은 근본적 하드웨어 결함(underlying hardware faults)의 관찰에 기초할 수 있다. 행(워드라인) 결함, 열(비트라인 또는 DQ(데이터 I/O(입력/출력))) 결함과 같은 일부 결함은 다수의 페이지와 연관된다. 개별 페이지에서 CE를 관찰하는 것은 행 또는 열의 결함 상태를 반영할 수 없다. 또한, 예를 들어, 행 결함은 열 결함보다 영향을 받는 페이지가 더 적기 때문에 페이지 오프라인화를 사용하여 더 적절하게 완화된다. 따라서, 근본적 결함에 대한 세부사항을 알면 시스템은 오프라인화할 행을 더 잘 예측할 수 있게 된다. 단순히 시간의 경과에 따라 CE를 카운팅하는 것은 후속 UE를 예측하는 데 있어 매우 부정확하다. 결함 인식 시스템은 결함 인식에 기초하여 예측을 수행할 수 있으므로, 향후의 UE를 피하기 위해 오프라인화할 페이지를 더 잘 식별할 수 있다.
도 1은 결함 페이지 예측을 갖는 시스템의 예의 블록도이다. 시스템(100)은 호스트에 결합된 메모리를 도시한다. 호스트(110)는 SOC(system on a chip)와 같은 호스트 컴퓨팅 플랫폼을 나타낸다. 호스트(110)는, CPU(central processing unit)(112) 및 메모리 제어기(116)에 의해 표현되는 호스트 처리 요소(예컨대, 프로세서 코어)를 포함한다. 호스트(110)는, 호스트(110)와 DIMM(dual inline memory module)(120) 사이에 상호접속을 제공하는 하드웨어 상호접속 및 드라이버/수신기 하드웨어를 포함한다.
DIMM(120)은 호스트(110)에 결합된 병렬 메모리 자원을 나타내는 메모리(130)를 포함한다. 메모리(130)는 DIMM(120)의 다수의 메모리 디바이스를 나타낸다. 메모리 제어기(116)는 메모리(130)에 대한 액세스를 관리한다. DIMM(120)은 DIMM(120)의 제어 로직을 나타내는 제어기(122)를 포함한다. 일 예에서, 제어기(122)는 DIMM(120) 상의 커맨드 및 데이터의 전송을 관리하는 제어 로직이거나 그 일부이다. 예를 들어, 제어기(122)는 등록 클록 드라이버(registering clock driver: RCD) 또는 다른 제어 로직의 일부일 수 있다. 일 예에서, 제어기(122)는 RCD와 별개의 제어기이다.
일 예에서, 메모리(130)는 온-다이 ECC를 나타내는 ECC(error checking and correction)(132), 또는 호스트(110)와의 데이터 교환을 위한 오류 정정을 수행하기 위한 메모리 디바이스 상의 로직을 포함한다. 일 예에서, 메모리(130)는 ECS(error checking and scrubbing)(134)을 포함한다. ECS(134)는 메모리에 저장된 데이터의 주기적 오류 스크러빙을 수행하기 위한 메모리(130) 상의 로직 온-다이(logic on-die)를 나타내며, 스크러빙 엔진으로 지칭될 수 있다. 오류 스크러빙은 오류를 검출하고, 오류를 정정하고, 정정된 데이터를 메모리 어레이에 다시 기록하는 것을 지칭한다. 일 예에서, 메모리(130)는 ECC(132) 및 ECS(134)에 기초하여 메모리 내의 오류를 검출할 수 있다.
호스트(110)는 메모리 제어기(116)의 일부일 수 있는 ECC(150)를 포함한다. 일 예에서, 호스트(110)는 역시 메모리 제어기(116)의 일부일 수 있는 스크럽 엔진(152)을 포함한다. ECS(134)는 스크러빙 엔진 온-메모리를 나타내고, 시스템(100)은 메모리 제어기(116)로 하여금 패트롤 스크러빙(patrol scrubbing)을 수행할 수 있게 하는 스크럽 엔진(152)을 포함할 수 있다. 일 예에서, 스크럽 엔진(152)은 메모리(130)에서 검출된 오류를 검출하고 보고할 수 있다.
메모리 제어기(116)는 다수의 메모리 디바이스(130)로부터의 데이터에 대해 동시에(in parallel) 시스템-레벨 ECC를 수행하는 반면, ECC(132)는 로컬 데이터에 기초하여 단일 디바이스에 대해 ECC를 수행한다. 제어기(122) 상의 온-다이 ECC(132) 또는 ECC 로직은 데이터를 호스트(110)에 전송하기 전에 오류 정정을 가능하게 할 수 있다. 일 예에서, ECS(134)는 오류 스크러빙을 수행하기 위해 ECC(132)를 사용한다. 메모리 제어기(116)는 ECC(150)를 활용하여 데이터에 대해 시스템-레벨 ECC를 수행할 수 있고, ECC(150)의 동작은 ECC(132)와 별개이다.
ECS(134) 또는 스크럽 엔진(152)은, 24시간마다 전체 메모리를 스크러빙하는 것과 같이, 설정된 기간 내에서의 모든 메모리(130)의 오류 검사 및 스크러빙의 수행을 지칭하는 패트롤 스크러빙을 수행할 수 있다. ECS(134) 또는 스크럽 엔진(152)은 메모리(130)에서 검출된 정정 가능한 오류 및 심각한 결함(hard faults) 또는 정정 불가능한 오류를 나타내기 위해 스크럽 동안 CE 및 UE 정보를 생성할 수 있다. 이러한 정보는 이력적 오류 정보로 지칭될 수 있다. 스크러빙 엔진이 메모리(130)의 데이터에서 오류를 검출할 때, 일 예에서, 스크러빙 엔진은 예측에 사용할 데이터를 기록할 수 있는 메모리 제어기(116)에 정보를 제공한다.
일 예에서, 시스템(100)은 제어기(140)를 포함한다. 일 예에서, 제어기(140)는 시스템(100)의 하드웨어 플랫폼의 제어기 하드웨어의 일부이다. 예를 들어, 제어기(140)는 시스템 보드 또는 마더보드의 제어 회로와 같은 시스템 보드 칩셋의 일부일 수 있다. 일 예에서, 제어기(140)는 제어기(122)의 일부이다. 일 예에서, 제어기(140)는 메모리 제어기(116)의 일부이다. 제어기(140)는 결함 페이지 예측을 제공한다.
일 예에서, 제어기(140)는 시스템 보드 상의 마이크로제어기 내에 구현된 결함 페이지 예측 엔진을 나타낸다. 일 예에서 마이크로제어기는 오류 관리를 위한 전용 제어기이다. 일 예에서, 마이크로제어기는 시스템 보드 제어 하드웨어의 일부이고, 제어기(140)는 마이크로제어기 상의 펌웨어로서 구현될 수 있다. 따라서, 제어기(140)를 실행하는 마이크로제어기는 다른 동작도 수행할 수 있다.
일 예에서, 제어기(140)는 UPM(uncorrectable error prediction model)(142) 및 상관(CORR) 엔진(144)을 포함한다. UPM(142)은 메모리 데이터에서 검출된 정정 가능한 오류의 패턴에 기초한 예상 오류 조건의 모델을 나타낼 수 있다. UPM(142)은 메모리에 대한 장애 예측 모델로 지칭될 수 있다. 정정 가능한 오류의 패턴은 특히 하드웨어 또는 메모리 아키텍처와 관련된 오류 패턴에 기초한 오류 패턴을 지칭한다. 상관 엔진(144)은 데이터에서 검출된 오류를 하드웨어 구성 정보와 상관시켜, 임박한 정정 불가능한 오류의 높은 가능성을 나타내는 패턴을 식별할 수 있다. 상관 엔진(144)은 (예컨대, UPM(142)에 기초하여) 이력적 오류 정보, 즉, 최근에 검출된 오류와 오류 패턴 모두를 상관시킬 수 있다.
일 예에서, 호스트(110)는 하드웨어 정보를 나타내기 위해 구성 정보(CONFIG)를 제어기(140)에 제공한다. 메모리 하드웨어 정보에 추가하여, 일 예에서, 구성 정보는 프로세서, 운영 체제, 주변장치 특징 및 주변장치 제어에 대한 정보, 또는 다른 시스템 구성 정보를 포함할 수 있다. 일 예에서, 메모리(130)는 CE가 언제 어디서 발생했는지를 나타내기 위해 CE의 검출을 나타내는 정정 가능한 오류 정보(CE INFO)를 제어기(140)에 제공한다. 일 예에서, 호스트(110)는 CE INFO를 제어기(140)에 제공하여 메모리(130)에서의 CE의 검출을 나타낸다. 일 예에서, 상관 엔진(144)은 메모리 구조 내에서 오류가 언제 어디서 발생했는지에 대한 정보를 포함하는 CE 정보를 메모리 구성 및 시스템 플랫폼 구성과 같은 구성 정보와 상관시킨다.
일 예에서, UPM(142)은 CE 이력 정보를 나타낸다. 따라서, 시스템(100)은 장애 예측에 CE 이력을 적용할 수 있고, 어떤 페이지가 오프라인화되는지를 예측할 때 CE 이력 정보를 적용할 수 있다. 일 예에서, 이력 정보는, 검출된 CE와 상관될 수 있는 하드웨어-레벨 정보를 식별하는, 제어기(140)에 의해 수집된 정보(CE INFO)와 유사한 입도(granularity)를 가질 수 있다.
일 예에서, 제어기(140)는 검출된 오류를 DIMM(120) 및 메모리(130)에 대한 하드웨어 구성 정보와 상관시킨다. 이러한 정보는 메모리 하드웨어 구성으로 지칭될 수 있다. 일 예에서, 제어기(140)는, 시스템 보드 또는 호스트 하드웨어 플랫폼의 하나 이상의 구성요소의 하드웨어, 소프트웨어, 및 펌웨어 구성뿐만 아니라 메모리 하드웨어 구성을 포함할 수 있는 컴퓨터 시스템에 대한 하드웨어 구성 정보와 검출된 오류를 상관시켰다. 호스트 하드웨어 플랫폼은 컴퓨터 시스템의 동작을 가능하게 하는 호스트 프로세서 및 다른 하드웨어 구성요소의 구성을 지칭할 수 있다. 시스템의 소프트웨어 또는 펌웨어 구성은, 하드웨어의 소프트웨어 구성으로 인해 동일한 하드웨어가 상이한 방식으로 동작할 정도로 하드웨어 구성 정보에 포함될 수 있다.
제어기(140)는 CE 정보를 구성 정보와 상관시키기 위해 상관 엔진(144)을 적용할 수 있다. 일 예에서, 상관 엔진(144)은 UPM(142)에 저장된 모델에 기초하여 이력적 CE 및 하드웨어 구성 정보를 고려한다. 일 예에서, CE 정보는 ECS(134) 또는 스크럽 엔진(152)에 의해 생성되거나 ECS(134)와 스크럽 엔진(152) 모두에 의해 생성되고, 오프라인화할 페이지의 예측을 위해 제어기(140)에 제공된다.
호스트(110)는 CPU(112)에서 실행되는 OS(operating system)(114)를 포함한다. OS(114)는 시스템(100)을 위한 소프트웨어 플랫폼을 나타낸다. 소프트웨어 프로그램 및 프로세스는 OS(114) 하에서 실행될 수 있다. OS(114)는 CPU(112)에서 실행되는 소프트웨어 프로그램을 위한 메모리를 관리한다. 일 예에서, OS(114)는 소프트웨어 프로그램에 의한 사용을 위해 이용 가능한 메모리 페이지를 추적한다. OS(114)는 소프트웨어 프로그램에 의한 메모리 페이지의 사용을 방지하기 위해 메모리 페이지를 오프라인화할 수 있다.
페이지 오프라인화는 페이지에 도입된 잠재적 메모리 오류를 피하기 위해 OS(114)가 메모리 페이지(일반적으로 4K 크기)의 사용을 중지하는 것을 의미한다. 물리적 페이지는 메모리 디바이스에 있는 행의 서브세트에 매핑된다. 페이지 오프라인화의 효율성은 메모리의 근본적 결함에 크게 의존한다. 예를 들어, 열과 연관된 페이지는 너무 많기 때문에(예컨대, 16GB DIMM에서 65536 페이지), 열(비트라인 또는 DQ) 결함은 페이지 오프라인화에 적합하지 않다.
일 예에서, 제어기(140)는 페이지 예측기(146)를 포함한다. 페이지 예측기(146)는 정정 불가능한 오류를 피하기 위해 오프라인화할 페이지의 예측을 생성하는 제어기(140)의 능력을 나타낸다. 페이지 예측기(146)는 메모리(130)의 근본적 결함에 기초하여 OS(114)가 오프라인화할 페이지의 추정을 생성한다. 시스템(100)은 제어기(140)를 통해 메모리(130)에서 정정 불가능한 오류를 예측할 수 있다. 페이지 예측기(146)는 UE가 메모리의 상이한 물리적 페이지에 어떻게 영향을 미칠 것인지를 판정할 수 있고, 어떤 페이지가 오프라인화되어야 하는지에 대한 추정을 OS(114)에 표시할 수 있다.
페이지 예측기(146)는 메모리 아키텍처에 기초한 정정 가능한 오류 패턴의 식별에 기초하여 페이지를 잠재적 장애 페이지로서 식별할 수 있다. 따라서, 장애 예측은 정정 가능한 오류의 단순한 수나 빈도보다는 메모리의 회로-레벨을 고려할 수 있다. 따라서, 시스템은 마이크로레벨 CE 정보를 평가함으로써 정정 불가능한 메모리 오류 또는 정정 불가능한 오류(UE)를 예측할 수 있고, 마이크로레벨 정보에 기초하여 오프라인화에 적합한 후보가 되는 페이지를 식별할 수 있다. 마이크로레벨 정보는 비트 또는 DQ(데이터 버스에 대한 데이터 인터페이스)의 레벨에서의 오류 정보, 행, 열, 디바이스, 랭크, 또는 다른 정보일 수 있다.
일 예에서, 페이지 예측기는 이력적 결함 정보를 마이크로레벨 아키텍처 정보와 상관시킨다. 페이지 내의 CE의 수를 살펴보는 것보다, 페이지 예측기(146)는 하드웨어 아키텍처의 특정 레벨에서의 CE의 패턴을 살펴볼 수 있다. 제어기(140)는 마이크로레벨 결함 표시자를 생성할 수 있고, 페이지 예측기(146)는 마이크로레벨 결함 표시자에 기초하여 페이지가 오프라인화를 위한 후보인지 여부를 판정할 수 있다.
페이지 예측기(146)는 결함 페이지 예측을 할 때 비트 오류 패턴을 살펴본다. 일 예에서, 페이지 예측기(146)는 오류 예측 정보를 ECC 패턴과 비교한다. 일 예에서, 제어기(140)는 ECC(150)가 시스템(100)에서 오류 정정을 적용하는 방법을 이해한다. ECC 패턴 또는 ECC가 호스트(110)에서 적용되는 방법에 기초하여, 페이지 예측기(146)는 결함이 ECC에 의해 완전히 정정 가능한지 또는 ECC에 의해 부분적으로 정정 가능한지를 판정할 수 있다. 결함이 완전히 정정 가능한 경우, UE는 생성되지 않을 것이다. 결함이 부분적으로만 정정 가능한 경우, 결함은 UE를 유발하기 쉬울 수 있는데, 이는 그 결함을 페이지 오프라인화에 적합한 후보가 되게 한다.
페이지 예측기(146)를 사용하면, 제어기(140)는 결함 페이지 예측기 엔진일 수 있다. 제어기(140)는 오프라인화할 결함 페이지를 OS에 표시하기 위해 결함-인식 예측 유도 정책(fault-aware prediction-guided policy)을 제공할 수 있다. 제어기(140)는, OS가 효과적인 메모리 페이지 오프라인화를 수행할 수 있도록 OS(114)에 결함 페이지를 표시하기 위해, 결함 페이지의 플랫폼 원격 측정을 제공할 수 있다. 상관 엔진(144)은 페이지 예측기(146)로 하여금 정확한 UE 예측기를 조사하여 결함이 UE로 이어질 가능성이 있는지 여부를 판정할 수 있게 한다. 페이지 예측기(146)는 결함과 연관된 페이지를 식별하고, 페이지 오프라인화를 위해 OS(114)에 통지할 수 있다.
제어기(140)를 사용하여, 시스템(100)은 임박한 메모리 장애를 예측하고 장애가 발생하기 전에 회피 조치를 취함으로써 개선된 서버 플랫폼 신뢰성을 가질 수 있다. 도 5a를 참조하여 아래에서 설명되는 바와 같이, 시스템(100)에 따른 시스템은 전통적인 오프라인화 정책과 비교할 때 유사한 수의 오프라인화된 페이지로 훨씬 더 낮은 UE 발생을 가질 수 있다. 따라서, 시스템(100)에 따른 시스템은 전통적인 오프라인화 정책을 적용하는 시스템에 비해 개선된 RAS(reliability, availability, serviceability)를 가질 수 있다.
도 2a는 정정 불가능한 오류 예측 훈련의 예의 블록도이다. 시스템(202)은 정정 불가능한 오류로 인한 메모리 결함의 예측을 위한 훈련 단계 또는 훈련 시스템의 요소를 나타낸다. 시스템(202)은 시스템(100)의 UPM(142)의 예에 대한 정보를 제공할 수 있다. 일 예에서, 데이터세트(210)가 과거 시스템 동작에 대한 데이터를 나타낸다는 점에서, 시스템(202)은 오프라인 예측 모델을 훈련하는 것으로 간주될 수 있다. 온라인 시스템은 현재 작동 가능한(operational) 시스템을 지칭한다. 시스템(202)은 모델을 생성하도록 작동 가능하지만 실시간 또는 런타임 데이터가 아닌 이력적 데이터에 기초하여 모델을 생성한다는 의미에서 "작동 가능한" 것이다.
일 예에서, 시스템(202)은 데이터세트(210)를 포함한다. 데이터세트(210)는 마이크로레벨 메모리 오류 정보를 포함하는 대규모 CE 및 UE 장애 데이터세트를 나타낼 수 있다. 마이크로레벨 메모리 오류 정보는 비트, DQ, 행, 열, 디바이스, 랭크, 채널, DIMM, 또는 다른 구성, 또는 정보의 조합에 기초한 장애의 표시를 포함할 수 있다. 일 예에서, 데이터세트(210)는 오류가 발생한 때를 나타내는 타임스탬프를 포함한다. 일 예에서, 데이터세트(210)는 오류 데이터세트와 연관된 하드웨어 구성 정보를 포함한다. 하드웨어 구성 정보는, 메모리 디바이스 정보, DIMM 제조업체 부품 번호, CPU 모델 번호, 시스템 보드 세부사항, 또는 다른 정보, 또는 이러한 정보의 조합과 같은 정보를 포함할 수 있다. 일 예에서, 데이터세트(210)는 대규모 데이터센터 구현으로부터 수집된 정보를 나타낼 수 있다.
시스템(202)은 데이터세트(210)로부터의 데이터를 처리하여 UE를 초래할 가능성이 있는 오류 패턴을 갖는 구성을 나타내는 모델을 생성하는 UPM(UE prediction model) 빌더(builder)(220)를 포함한다. 일 예에서, UPM 빌더(220)는 모델을 생성하는 AI(artificial intelligence) 훈련을 위한 소프트웨어 로직을 나타낸다. 이러한 맥락에서, AI는 대규모 데이터 세트로부터 관계의 패턴을 식별하기 위한 신경망 훈련 또는 다른 형태의 데이터 마이닝(data mining)을 나타낸다. 일 예에서, UPM 빌더(220)는 마이크로레벨(예컨대, 비트, DQ, 행, 열, 디바이스, 랭크) CE 패턴 또는 표시자에 기초하여 각각의 하드웨어 구성에 대한 UPM(230)을 생성한다. 따라서, UPM(230)은 상이한 구성 정보(CONFIG)에 기초한 N개의 상이한 UPM(UPM[1:N])을 포함할 수 있다.
일 예에서, UPM(230)은 CPU 모델과 DIMM 제조업체 또는 부품 번호의 각 조합에 대한 별도의 예측 모델을 포함한다. CPU 모델과 DIMM 부품 번호의 상이한 조합에 대한 이러한 입도(granularity)는, 상이한 하드웨어 구성이 상이한 하드웨어 결함 상태를 유발할 수 있는 점을 고려하여 결함 하드웨어 패턴을 상이하게 식별할 수 있다. 예를 들어, 제조업체가 같거나 부품 번호가 같지만 CPU 모델이 상이한 DIMM은 메모리 제어기에서 ECC를 상이하게 구현할 수 있으며, 이는 ECC 구현의 상이한 거동으로 인해 DIMM의 동일한 결함 하드웨어 상태가 상이한 관찰 결과를 드러내게 한다. CPU 제품군은 다수의 ECC 패턴을 제공할 수 있으므로, 고객은 자신이 선택한 애플리케이션에 따라 ECC를 선택할 수 있다. 마찬가지로, 상이한 제조업체 또는 상이한 부품 번호의 DIMM을 갖는 동일한 CPU 모델의 경우, DIMM 하드웨어의 상이한 설계 및 구현으로 인해 DIMM의 결함 상태는 상이한 관찰 결과를 드러낼 수 있다. 따라서, 일 예에서 시스템(202)은 개선된 예측 정확도 성능을 제공하기 위해 CPU 모델과 DIMM 제조 또는 부품 번호의 조합별로 예측 모델을 생성한다.
도 2b는 정정 불가능한 오류 예측에 기초한 결함 페이지 예측의 예의 블록도이다. 시스템(204)은 시스템(100)의 예에 따른 결함 페이지 예측을 갖는 시스템의 예를 나타낸다. 일 예에서, 시스템(204)은 UE 예측기(256)에서 시스템(202)의 UPM(230)의 예를 구현한다. 시스템(202)은 이력 또는 저장된 정보에 기초하여 동작할 수 있지만, 시스템(204)은 시스템(204)이 이력 정보뿐만 아니라 발생되는 런타임 또는 실시간 파라미터에 대해 동작한다는 점에서 런타임 메모리 장애 예측 시스템으로 간주될 수 있다.
일 예에서, 도 2a의 시스템(202)은 메모리 디바이스의 레벨에서 머신 러닝 기반의 정정 불가능한 메모리 오류 예측 메커니즘을 제공한다. 일 예에서, 시스템(204)은 시스템(202)을 활용하여 예측된 페이지 장애의 런타임 예측을 생성하고 플랫폼의 원격 측정을 통해 결과를 노출한다. 예를 들어, 시스템(204)은 결함 페이지를 예측하기 위해 메모리 오류 통계 표시자(memory error statistics indicators(MESI), 254) 및 결함 구성요소 어드레스(faulty component address(FCA), 258) 정보를 생성할 수 있고, OS(operating system)(240)에 전달할 정보로서 결함 페이지 어드레스(faulty page address(FPA), 264) 정보를 생성할 수 있다.
시스템(204)은 전용 제어기일 수 있는 제어기(282)를 포함하거나, 컴퓨터 시스템의 다른 제어 또는 관리 기능과 공유되는 하드웨어 또는 공유 제어기 상에서의 실행을 위한 펌웨어를 나타낼 수 있다. 제어기(282)는 설명된 임의의 예에 따라 페이지 결함 예측을 생성하는 엔진을 나타내는 페이지 결함 검출기(250)를 실행한다. 일 예에서, 페이지 결함 검출기(250)는 메모리(276)로부터의 정정 가능한 오류(CE) 정보로서 하드웨어(270)로부터 구성 정보(CONFIG)를 수신한다.
하드웨어(270)는 메모리 오류에 대해 모니터링되는 시스템의 하드웨어를 나타낸다. 하드웨어(270)는 예측 분석을 위해 페이지 결함 검출기(250)에 하드웨어 구성을 제공한다. 하드웨어(270)는 호스트 프로세서(272)를 포함할 수 있는데, 이는 컴퓨터 시스템, 주변장치(274), 및 메모리(276)에 대한 처리 자원을 나타낸다. 메모리(276)는 정정 가능한 오류가 식별될 수 있는 메모리 자원을 나타낸다. CE(278)는 메모리(276)의 데이터에서 검출된 오류에 대한 CE 데이터를 나타낸다.
주변장치(274)는 메모리 오류의 처리를 변경할 수 있는 하드웨어(270)의 구성요소 및 특징을 나타낸다. 따라서, 메모리 오류가 처리되는 방식에 영향을 미칠 수 있는 하드웨어 구성요소 및 하드웨어 구성요소의 소프트웨어/펌웨어 구성은 메모리 결함 예측을 위해 페이지 결함 검출기(250)에 전송할 구성 정보에 고려를 위해 포함될 수 있다. 주변장치 구성의 예는 주변장치 제어 허브(peripheral control hub: PCH) 구성, 관리 엔진(management engine: ME) 구성, 빠른 경로 상호접속(quick path interconnect: QPI) 능력, 또는 다른 구성요소 또는 능력을 포함할 수 있다.
페이지 결함 검출기(250)는 오류 통계(stats)(252), UE 예측기(256), 및 어드레스 변환(260)을 포함할 수 있다. 오류 통계(252)는 시스템(204)에 대한 오류 정보를 수집 및 체계화하는 엔진을 나타내는 시스템을 활용할 수 있다. 오류 통계(252)는 마이크로레벨 메모리 오류 통계 추적을 제공할 수 있다. 오류 통계(252)는 메모리(276)에 대한 런타임 CE 데이터를 나타내는 CE 정보를 CE(278)로부터 수신할 수 있다. 오류 통계(252)는 마이크로레벨 정보를 획득하기 위해 메모리(276)에서 검출된 오류를 나타내는 런타임 CE 데이터를 추적 및 디코딩한다. 일 예에서, 오류 통계(252)는 MESI(254)를 생성하여 UE 예측기(256)에 제공한다.
UE 예측기(256)는 결함을 경험하는 어떤 구성요소가 UE를 생성하기 쉬운지(UE-prone)의 예측을 제공할 수 있다. 일 예에서, UE 예측기(256)는 UPM(230)에 기초한 UE 예측 엔진을 구현한다. UE 예측기(256)는 시스템(202)의 UPM 빌더(220)에 의해 생성된 모델을 나타내는 UPM(230)을 저장하거나 그에 액세스할 수 있다. 일 예에서, UE 예측기(256)는 시스템 아키텍처에 대한 구성 정보에 표시된 마이크로레벨 구성요소에 검출된 CE를 귀속시켜 마이크로레벨 구성요소에 결함이 있는지 여부를 추론한다.
UE 예측기(256)는 하드웨어 구성 및 정정 가능한 오류 정보에 기초하여 메모리 결함의 예측을 생성한다. UE 예측은 하드웨어의 레벨에서 이루어진다. 따라서, UE 예측기(256)는 장애가 있을 것으로 예측되는 메모리(276)의 특정 하드웨어 구성요소(예컨대, 셀, 비트라인(열), 워드라인(행), 뱅크, 칩, 랭크)를 나타내기 위해 FCA(258)를 생성할 수 있다. 일 예에서, UE 예측기(256)는 결함 있는 행 또는 셀이 페이지 오프라인화에 적합한지 여부를 판정한다.
일 예에서, UE 예측기(256)는 결함 있는 행 또는 셀에서 관찰된 CE에 대한 분석을 수행한다. 일 예에서, UE 예측기(256)는 시스템(204)에 의해 사용된 ECC 커버리지의 지식에 기초하여 구축된 고급 마이크로레벨 결함 표시자를 포함한다. 일 예에서, 마이크로레벨 결함 표시자는 장래에 UE가 발생할 가능성이 있는지 여부를 예측하도록 DIMM 제조업체로부터의 오류 비트 패턴 분포에 대한 지식에 기초하여 구축된다. UE 예측기(256)는 UE를 생성하기 쉬운 결함 있는 행 또는 셀을 정확히 지적하기 위해 결함 표시자를 적용할 수 있다.
일 예에서, UE 예측기(256)는 특정 메모리 디바이스의 특정 구성요소를 물리적 페이지 어드레스 정보에 매핑하기 위해 FCA(258)를 어드레스 변환(260)으로 전달한다. 따라서, 어드레스 변환(260)은 행 어드레스에서 물리적 페이지 어드레스로의 변환을 수행할 수 있다. 일 예에서, 어드레스 변환(260)은 결함 있는 구성요소에 대한 물리적 메모리 어드레스를 나타내는 FCA(262)를 생성한다. 어드레스 변환(260)은 FCA(262)를 NVRAM(nonvolatile random access memory)(284)으로 전달할 수 있다.
일 예에서, 시스템(204)은 결함 어드레스를 NVRAM(284)에 저장한다. NVRAM(284)이 도시되어 있지만, 결함 어드레스는 플래시 메모리 또는 다른 영구 메모리에 저장될 수 있다. NVRAM(284)은 시스템(204)으로 하여금 부팅들(boots) 사이에서 지속적으로 FCA(286)를 저장할 수 있게 한다. 특정 메모리 결함은 시스템(204)의 전력 사이클에 걸쳐 지속된다. 따라서, NVRAM(284)의 FCA(286)는 업데이트되고 저장되어, 시스템 부팅들 사이에서 오프라인화되어야 하는 페이지를 시스템에 알릴 수 있다.
일 예에서, 어드레스 변환(260)은 FPA(faulty page address)(264)를 OS(240)의 페이지 오프라인 데몬(244)으로 전달한다. 페이지 오프라인 데몬(244)은 시스템(204)에 대한 페이지 오프라인 정보를 관리하는 OS(240)의 서비스 또는 소프트웨어 에이전트를 나타낸다. 페이지 결함 검출기(250)는 OS가 오프라인화해야 하는 페이지를 나타내기 위해 페이지 오프라인 데몬(244)을 통해 OS(240)에 정보를 전달할 수 있다. 페이지 오프라인 데몬(244)은 오프라인화할 페이지를 사용하는 프로그램의 정보를 메모리의 다른 영역으로 이동시킬 수 있다. 그런 다음, 페이지 오프라인 데몬(244)은 페이지를 오프라인화하여 사용할 수 없게 만들 수 있다. 페이지 오프라인(242)은 OS(240)에 의해 오프라인화되는 페이지를 나타낸다. OS(240)는 프로그램이 시스템(204)의 오프라인화된 페이지에 액세스하는 것을 방지할 수 있다.
페이지 결함 검출기(250)는 UE를 생성하기 쉬운 페이지를 검출하기 위해 마이크로레벨 결함의 이해에 기초한 페이지 예측 정책을 제공할 수 있다. 페이지 결함 검출기(250)는 효과적인 메모리 페이지 오프라인화를 수행하도록 OS(240)에 통지하고 안내할 수 있다. 일 예에서, 페이지 결함 검출기(250)는 OS(240)에 의해 페이지가 오프라인화되었던 결함 있는 것으로 식별된 구성요소에 대한 메모리 테스트를 수행할 수 있다. 결함 있는 구성요소가 복구된 것으로 검출되면, 예를 들어 일시적 결함에 의해 야기된 이전 CE가 더 이상 존재하지 않는 경우, 페이지 결함 검출기(250)는 여분의 메모리 용량을 재사용하도록 OS(240)에 통지할 수 있다.
도 3a는 결함 페이지 예측을 위한 시스템 아키텍처의 예의 블록도이다. 시스템(302)은 시스템(100)의 예 또는 시스템(204)의 예에 따른 컴퓨터 시스템을 도시한다. 시스템(302)은 DIMM(320)에 접속된 호스트(310)를 포함한다. 호스트(310)는 DIMM(320)이 동작하는 시스템에 대한 호스트 하드웨어 플랫폼을 나타낸다. 호스트(310)는 DIMM(320)의 메모리에 대한 액세스를 요청하는 동작을 실행하는 호스트 프로세서(명시적으로 도시되지 않음)를 포함한다.
DIMM(320)은 액세스 커맨드를 처리하기 위해 병렬로 접속된 DRAM(dynamic random access memory) 디바이스 또는 DRAM으로 식별되는 다수의 메모리 디바이스를 포함한다. DIMM(320)은 보다 구체적으로 2-랭크 DIMM으로 도시되는데, 각 랭크, 즉, 랭크 0 및 랭크 1에는 M개의 DRAM(DRAM[0:M-1])이 있다. M은 임의의 정수일 수 있다. 일반적으로, DRAM의 랭크는 사용자 데이터를 저장하는 데이터 DRAM 및 시스템 ECC 비트 및 메타데이터를 저장하는 ECC DRAM을 포함한다. 시스템(302)은 DRAM 용도를 구별하지 않는다. 일 예에서, 시스템(302)의 DRAM 디바이스는 JEDEC(Joint Electron Device Engineering Council, 현재는 JEDEC Solid State Technology Association)의 DDR5(Double Data Rate Version 5) 표준과 호환되는 DRAM 디바이스를 나타낸다.
랭크의 DRAM들은 커맨드 버스 및 칩 선택 신호 라인을 공유하며, 개별 데이터 버스 인터페이스를 갖는다. CMD(command)(312)는 랭크 0에 대한 커맨드 버스를 나타내고, CMD(command)(322)는 랭크 1에 대한 커맨드 버스를 나타낸다. 커맨드 버스는 대안적으로 커맨드 및 어드레스 버스로 지칭될 수 있다. CS0은 랭크 0의 디바이스에 대한 칩 선택을 나타내고, CS1은 랭크 1의 디바이스에 대한 칩 선택을 나타낸다. DQ(314)는 랭크 0의 디바이스에 대한 데이터(DQ) 버스를 나타내는데, 여기서 각 DRAM은 B 비트를 제공하고, B는 정수이며, DQ 버스 상에는 총 B*M 비트가 존재한다. DQ(324)는 랭크 1의 디바이스에 대한 데이터(DQ) 버스를 나타낸다.
DRAM(340)은 시스템(302)의 각 DRAM 디바이스에 대한 세부사항의 예의 표현을 제공한다. DRAM(340)은 커맨드를 수신하고 디코딩하는 로직을 나타내는 제어(CTRL) 로직(346)을 포함한다. 제어 로직(346)은 커맨드 버스 상에서 수신된 커맨드에 응답하는 내부 제어 신호를 제공한다. DRAM(340)은 다수의 뱅크(342)를 포함하는데, 여기서 뱅크는 DRAM(340)의 메모리 어레이의 체계화(organization)를 나타낸다. 뱅크(342)는 상이한 뱅크에 대한 병렬식 액세스 또는 비차단 액세스를 허용하는 개별 액세스 하드웨어를 갖는다. 뱅크(342)의 서브어레이(350)는 도 3b와 관련하여 아래에서 설명된다. 350으로 표시된 부분은 DRAM(340)의 전체 메모리 어레이의 서브어레이이다.
메모리 어레이는 메모리 요소의 행(ROW) 및 열(COL)을 포함한다. SA(sense amplifier)(344)는 메모리 어레이로부터의 판독 또는 메모리 어레이로의 기록을 위해 데이터를 스테이징하는 감지 증폭기를 나타낸다. 데이터는 감지 증폭기로 선택되어 어레이의 비트 셀 또는 메모리 셀에 저장된 값의 검출을 허용한다. 점선 박스는 메모리 어레이의 레이블이 지정된 행과 열의 교차를 포함한다. 점선 부분은 제어 요소로서의 트랜지스터 및 저장 요소로서의 커패시터를 포함하는 전형적인 DRAM 셀(348)을 도시한다.
메모리 제어기(MEM CTLR)(318)는 DIMM(320)의 메모리 자원에 대한 액세스를 관리하는 메모리 제어기를 나타낸다. 메모리 제어기(318)는 기록 커맨드에 대한 데이터 전송 또는 판독 커맨드에 대한 데이터 수신을 포함하여 메모리 디바이스에 액세스 커맨드를 제공한다. 메모리 제어기(318)는 커맨드 및 어드레스 정보를 DRAM 디바이스에 전송하고, DRAM 디바이스와 데이터 비트를 교환한다(커맨드 유형에 따라, DRAM 디바이스에 또는 그로부터).
호스트(310)는 호스트(310) 상의 호스트 운영 체제를 나타내는 OS(316)를 포함한다. OS(316)는 호스트(310)에 의해 실행되는 프로그램에 이용가능한 메모리 공간을 관리할 수 있다. OS(316)는 결함 페이지 예측으로부터의 표시에 기초하여 페이지를 오프라인화할 수 있다. 일 예에서, 호스트(310)는 오류 제어(330)를 포함한다. 오류 제어(330)는 DRAM 디바이스에 대한 오류 관리를 수행하기 위한 시스템(302)의 로직을 나타낸다. 일 예에서, 오류 제어는 다양한 DRAM 디바이스에 저장할 데이터의 오류 정정을 위한 시스템-레벨 ECC를 나타내는 ECC(332)를 포함한다. 시스템-레벨 ECC는 랭크의 DRAM에 저장된 데이터에 기초하여 오류 정정을 수행할 수 있다.
일 예에서, 오류 제어(330)는 시스템(204)의 페이지 결함 검출기(250)와 같은 결함 페이지 예측 엔진을 나타내는 결함 페이지 예측기(faulty page predictor: FPP)(334)를 포함한다. 일 예에서, 호스트(310)는 마더보드를 나타낸다. 결함 페이지 예측기(334)는 마더보드 상의 제어기에서 구현될 수 있다. 결함 페이지 예측기(334)는 DRAM에 대한 정정 가능한 오류를 나타내는 정보를 수신하고, CE 정보를 디바이스 아키텍처 정보와 상관시키고, 데이터의 상관에 기초하여 UE를 경험할 가능성이 있는 페이지를 식별한다. 결함 페이지 예측기(334)는 주어진 페이지에서 정정 불가능한 오류가 발생할 가능성에 기초하여 오프라인화되어야 하는 페이지를 OS(316)에 표시하는 예측을 생성할 수 있다.
도 3b는 메모리 아키텍처에 기초한 결함 페이지 예측의 예의 블록도이다. 시스템(304)은 호스트 OS에 의해 관리되는 물리적 어드레스 공간인 것처럼 DRAM의 세부사항이 도시되는 시스템(302)의 예를 제공한다.
비트셀(360)은 메모리 셀 또는 메모리 어레이의 저장 위치를 나타낸다. 비트셀(360)은 행(WL) 및 열(BL) 어드레스의 조합에 의해 식별 가능한 어드레스를 나타내는 특정 WL/BL 위치를 가지면서 워드라인 및 비트라인에 접속된다. 선택 라인은 워드라인의 선택을 가능하게 할 수 있다.
행 디코더(DEC)(354)는 판독, 기록, 또는 다른 액세스를 위해 행 또는 워드라인을 선택하는 디코딩 하드웨어를 나타낸다. 행 디코더(354)는 워드라인(Vwl)에 대한 전압 및 선택 라인(Vsl)에 대한 전압을 수신할 수 있고, 동작을 위해 수신된 행 어드레스(ADDR) 정보에 기초하여 행 선택을 위한 적절한 전압을 제공할 수 있다.
BL(bitline) 선충전(precharge)(356)은 액세스 동작을 위해 하나 이상의 선택된 열 또는 비트라인을 충전할 수 있는 하드웨어를 나타낸다. BL 선충전(356)은 열 및 행 어드레스에 의해 식별되는 비트셀에 저장된 값을 감지할 수 있도록 판독을 위한 비트라인을 충전할 수 있다. 행 버퍼(362)는 어레이의 비트를 판독 또는 기록하기 위한 버퍼를 나타내며, 감지 증폭기로서 구현될 수 있다. 열 디코더(DEC)(358)는 출력 열 또는 비트라인을 선택하는 하드웨어를 나타낸다. 열 디코더(358)는 동작을 위해 수신된 열 어드레스 정보에 기초하여 비트라인을 선택한다.
DRAM 칩(340)은 N개의 뱅크(Bank[0:(N-1)])로 도시된다. N은 정수일 수 있고, 일반적으로 8 또는 16과 같은 이진수이다. DRAM 칩(340)은 커맨드 정보를 디코딩하는 커맨드(CMD) 디코더(DEC)(352)를 포함할 수 있다. 시스템(304)에 도시된 바와 같이, 커맨드(CMD) 버스는 어드레스(ADDR) 버스와 분리되어 있지만, 단일 커맨드 및 어드레스 제어 버스로 간주될 수 있다. 이들은 어드레스 정보로부터 커맨드의 분리를 도시하기 위한 목적으로 시스템(304)에 도시된다.
열 디코더(358)는 기록 동작을 위한 데이터를 수신하고 판독 동작을 위한 데이터를 제공하기 위해 데이터 버스에 접속되는 것으로 도시되어 있다. 기록 동작의 경우, 데이터는 데이터 버스를 통해 수신되고, 메모리 어레이에의 기록을 위해 행 버퍼(362)에 배치된다. 판독 동작의 경우, 데이터는 행 버퍼(362)의 메모리 어레이로부터 페치되어 데이터 버스에서 호스트로 제공된다.
시스템(304)은 Bank[0]의 메모리 어레이에 대한 3가지 상이한 유형의 결함을 도시한다. 점선 박스는 행들 중에서 행 결함(372)를 나타내는 것을 둘러싼다. 어두운 음영 박스는 열들 중에서 열(COL) 결함(374)을 나타내는 것을 둘러싼다. 밝은 음영 박스는 비트셀들 중에서 스턱 비트(stuck bit)(376)를 나타내는 것을 둘러싼다. 행 결함, 열 결함, 및 스턱 비트 결함은 각각 결함 표시자와 연관될 수 있다.
OS는 물리적 어드레스 공간(380)으로 표현되는 페이지 레벨에서 메모리를 관리한다. 물리적 어드레스 공간(380)은 물리적 메모리 페이지일 수 있는 다수의 페이지를 나타낸다. 시스템(304)에서 모든 페이지가 보여지는 것은 아니다. 시스템(304)은 식별된 상이한 결함과 연관된 페이지를 식별한다. 행 결함(372)이 결함 페이지(382), 결함 페이지(384) 및 결함 페이지(386)로 식별되는 3개의 상이한 페이지와 연관되는 시나리오를 고려한다. 스턱 비트(376)는 결함 페이지(388)와 연관된다. 페이지가 열과 연관되는 것을 고려하면, 열 결함(374)과 연관된 페이지는 도시되지 않는다.
메모리는 일반적으로 메모리 인터리빙으로 관리된다. 메모리 인터리빙을 사용하면 상이한 행들에 걸쳐 연속 어드레스 공간이 펼쳐진다. 한 페이지는 다수의 행에 걸쳐 펼쳐질 수 있다. 행 결함(372)은 3개의 결함 페이지가 그 페이지와 연관되는 것으로 식별될 수 있는 것을 고려하면 페이지 오프라인화에 적합한 후보일 수 있다. 스턱 비트(376)는 또한 단일 결함 페이지(388)와 연관되므로 페이지 오프라인화에 적합한 후보일 수 있다. 열 결함(374)은 모든 페이지가 오프라인화되어야 할 것임을 고려하면 페이지 오프라인화에 적합한 후보가 아니다.
일 예에서, 행(워드라인) 결함을 추론하기 위해, 시스템은 행에서 관찰된 오류를 갖는 고유 위치의 수를 추적하고, 이러한 위치를 커버하는 최소 범위를 추적한다. 예를 들면, 오류를 갖는 최대 비트라인 인덱스 및 최소 비트라인 인덱스가 관찰된다. 일 예에서, 고유한 오류 위치와 최소 오류 범위 중 하나 또는 둘 모두가 임계값에 도달하면, 시스템은 그 행을 결함이 있는 것으로 간주한다.
일 예에서, 셀 결함 또는 스턱 비트를 추론하기 위해, 시스템은 특정 셀에서 관찰된 오류의 수를 추적한다. 일 예에서, 오류의 수가 임계값에 도달하면, 시스템은 그 셀을 결함이 있는 것으로 식별한다.
결함 있는 행 또는 셀이 UE로 이어질 가능성이 있는지 여부를 예측하기 위해, 시스템은 ECC 커버리지 및 오류 비트 패턴 분포 지식에 기초한 고급 표시자를 포함할 수 있다. 일 예에서, 표시자는 결함이 ECC에 의해 완전히 정정 가능할 것인지 여부 또는 결함이 ECC에 의해 완전히 정정 가능하지 않을 것인지 여부를 식별할 수 있다. ECC 패턴으로 완전히 정정 가능한 결함을 갖는 페이지의 경우, 그 페이지는 반드시 오프라인화될 필요는 없다.
도 4는 결함 페이지 어드레스의 레이아웃의 예를 도시하는 표이다. 표(400)는 하드웨어 표시자와 검출된 오류의 상관관계로부터의 결함 페이지 예측에 기초하여 결함 페이지 어드레스 원격 측정이 저장되고 호스트 OS에 전송되는 예시적 저장 레이아웃을 제공한다.
일 예에서, 표(400)는 결함 페이지 예측기가 액세스할 수 있는 보안 저장소에 저장될 데이터 구조의 형식을 보여준다. 일 예에서, 표(400)는 결함 페이지 예측기로부터 호스트 OS로 전송되는 데이터의 형식을 보여준다. 일 예에서, 표(400)의 형식은 결함 페이지 어드레스(faulty page address: FPA) 헤더(410)를 포함한다. FPA 데이터의 바디 또는 페이로드는 구성 데이터 블록(configuration data block: CDB)(412)을 포함할 수 있다. CDB(412)는 스코어와 연관된 하드웨어 구성에 대한 정보를 제공한다. 일 예에서, CDB(412)는 업타임(uptime) 및 부팅 횟수와 같은 메모리의 런타임 컨텍스트를 포함한다.
FPA 데이터의 바디는 FPA 데이터 블록(FPA data block: FDB)(414)을 포함할 수 있다. 일 예에서, FDB(414)는 FDB 헤더(420)를 포함한다. FDB(414)는 결함 페이지 예측에 의해 생성된 결함 페이지의 표시를 포함할 수 있다. 행(422)은 결함 페이지 [0]을 나타낸다. 행(424)은 결함 페이지 [1]를 나타낸다. 행(432)은 결함 페이지 [P-2]를 나타낸다. 행(434)은 결함 페이지 [P-1]를 나타낸다. P는 임의의 정수일 수 있다. 결함 페이지의 수(P)는 데이터 오류의 모니터링 및 하드웨어 구성 정보와의 상관에 기초하여 시스템 런타임 동안 동적으로 변경될 수 있다. 결함 페이지 예측기는 예측된 UE와 연관된 페이지를 식별할 수 있고, 페이지 어드레스 정보를 FPA 데이터 블록(414)에 추가할 수 있다.
도 5a는 결함 페이지 예측의 예의 도식적 표현이다. 다이어그램(502)은 회피된 UE(y-축, 0-60으로 도시됨) 대 오프라인화된 페이지(x-축, 0-2500으로 도시됨)의 그래프를 나타낸다. 다이어그램(502)은 전통적인 오프라인화 정책을 나타내는 곡선(520) 및 본 명세서에 설명된 것에 따른 결함 페이지 예측을 나타내는 곡선(510)을 포함한다.
곡선(510) 및 곡선(520)은 서버 환경에 대한 대규모 데이터세트로부터의 오류 로그의 경험적 평가에 기초하여 생성되었다. 곡선(520)은 CE 비율에 기초한 전통적 오프라인화 정책의 기준선을 나타낸다. 도시된 바와 같이 2500페이지에 가까운 오프라인화 상태에서도 CE 카운트 방법은 10개 미만의 UE를 회피했다.
대조적으로, 곡선(510)은 결함 인식 예측 기반의 페이지 오프라인화에 기초한 페이지 오프라인화를 나타낸다. 더 적은 수의 오프라인화된 페이지(약 500개)에서도 결함 인식 접근법은 10개 초과의 UE를 회피했음이 관찰될 수 있다. 오프라인화된 페이지 수가 2000보다 컸을 때, 회피된 UE의 수는 50보다 컸는데, 이는 낮은 쪽에서 4배의 개선, 높은 쪽에서 5배 초과의 개선을 나타낸다.
도 5b는 도 5a의 그래프에 대한 결함 페이지 예측 값의 예의 표이다. 표(504)는 다이어그램(502)에서 그래프로 표시된 특정 데이터를 보여준다.
행(532)은 전통적 WINDOWS 방법을 나타낸다. 본 명세서에서 모든 상표는 식별의 목적으로만 사용되며 상표는 이들 각각의 소유자의 자산이다. WINDOWS는 Microsoft, Inc.의 상표이다. 행(532)은 24시간 동안 16개의 오류가 검출되는 전통적 정책을 나타낸다. 도시된 바와 같이, 오프라인화된 페이지 수는 499개 였고, 이는 3개의 UE를 회피했다.
행(532)과 비교하여, 행(534)은 오류 임계값이 20인 결함 인식 접근법을 나타낸다. 480 페이지가 오프라인화됨으로써 오프라인화된 페이지의 수는 유사했지만, 13개의 UE가 회피됨으로써 회피된 UE는 4배보다 컸다.
행(536)은 24시간 동안 10개의 오류가 검출되는 정책을 갖는 전통적 Linux 방법을 나타낸다. 이러한 접근법을 사용하면, 1005 페이지가 오프라인화되어 6개의 UE가 회피되는 결과를 가져왔다. 대조적으로, 행(538)은 오류 임계값이 15인 오류 인식 접근법을 나타낸다. 1152 페이지가 오프라인화됨으로써 오프라인화된 페이지의 수는 유사했지만, 회피된 UE의 수는 27개 또는 4배 초과의 개선이었다.
행(540)은 24시간 동안 6개의 CE가 검출되는 적극적인(aggressive) 전통적 방법을 나타낸다. 이러한 접근법은 2437개의 페이지가 오프라인화되면서 9개의 UE를 회피하는 결과를 가져왔다. 대조적으로, 행(542)는 오류 임계값이 5인 결함 인식 접근법을 나타내며, 이는 2184 페이지가 오프라인화되고 57개의 UE가 회피되거나 6배 초과로 개선되는 결과를 가져왔다.
도 6은 결함 페이지를 예측하기 위한 프로세스의 예의 흐름도이다. 프로세스(600)는 시스템(100)의 예에 따른 결함 페이지 예측기를 갖는 시스템에 의해 실행될 수 있는 흐름을 도시한다. 프로세스(600)는 결함 인식 예측에 기초하여 페이지 오프라인화를 수행하는 프로세스를 나타낸다.
일 예에서, 602에서, 시스템 부팅시, 제어기는 Current_FRA 표시로서 저장소로부터 결함 행 어드레스(faulty row address: FRA) 정보를 판독한다. 일 예에서, 604에서, 제어기는 Current_FRA가 빈 상태(empty)인지 여부를 판정하는데, 빈 상태는 표시된 결함 페이지가 없는 것을 의미한다. 606에서 FRA가 빈 상태가 아니면(NO 분기), 608에서, 결함 페이지 예측기는 하드웨어 구성 정보와 상관된 마이크로레벨 오류 정보에 기초하여 결함 페이지를 계산할 수 있고 Current_FRA를 업데이트할 수 있다. 608에서, 제어기는 Current_FRA에 표시된 페이지 어드레스에 대한 페이지 오프라인화를 트리거하도록 OS에 통지할 수 있다.
일 예에서, 606에서 FRA가 빈 상태이고 식별된 결함 페이지가 없으면(YES 분기), 610에서 결함 페이지 예측기는 메모리 CE를 모니터링한다. 608에서 결함 페이지 어드레스를 계산하고 결함 페이지를 OS에 통지한 후, 610에서 결함 페이지 예측기는 메모리 CE를 계속 모니터링할 수 있다.
612에서 결함 페이지 예측기가 새로운 CE 이벤트를 예측하지 않으면(NO 분기), 610에서 결함 페이지 예측기는 CE에 대해 메모리를 계속 모니터링한다. 612에서 새로운 CE 이벤트가 검출되면(YES 분기), 614에서 결함 페이지 예측기는 결함 행 범위를 재평가할 수 있다. 616에서 CE 이벤트가 기존 결함에 있는 예측된 UE를 나타내면(이는 새로운 결함 행 범위가 없음을 나타냄)(NO 분기), 610에서 결함 페이지 예측기는 CE에 대해 메모리를 계속 모니터링할 수 있다.
일 예에서, 616에서 CE는 새로운 행에 있는 예측된 UE를 나타내고(즉, 새로운 결함 행 범위가 있음을 나타냄)(YES 분기), 618에서 결함 페이지 예측기는 Current_FRA를 업데이트할 수 있고 결함 페이지를 계산할 수 있다. 620에서 결함 페이지 예측기가 새로운 결함 페이지의 예측을 생성하지 않으면(NO 분기), 610에서 결함 페이지 예측기는 CE에 대해 메모리를 계속 모니터링할 수 있다.
일 예에서, 620에서 계산이 새로운 결함 페이지가 검출되었음을 나타내면(YES 분기), 622에서, 결함 페이지 예측기는 Current_FRA를 업데이트하고, 검출된 새로운 결함 페이지에 대해 페이지 오프라인화를 트리거하도록 OS에 통지한다. 결함 페이지 예측기는 Current_FRA 정보를 저장소에 저장하기 위해 타이머를 유지할 수 있다. 624에서 FRA 타이머가 만료되지 않은 경우(NO 분기), 610에서 결함 페이지 예측기는 CE에 대해 메모리를 계속 모니터링할 수 있다.
일 예에서, 624에서 FRA 타이머가 만료된 경우(YES 분기), 626에서 결함 페이지 예측기는 Current_FRA 스냅샷을 저장소에 기록하고 FRA 타이머를 재설정한다. 그런 다음, 610에서 결함 페이지 예측기는 CE에 대해 메모리를 계속 모니터링할 수 있다.
도 7은 결함 페이지 예측이 구현될 수 있는 메모리 서브시스템의 예의 블록도이다. 시스템(700)은 컴퓨팅 디바이스의 메모리 서브시스템의 요소 및 프로세서를 포함한다. 시스템(700)은 시스템(100)의 예에 따른 시스템의 예이다.
일 예에서, 시스템(700)은 정정 불가능한 오류가 발생할 가능성을 갖는 페이지를 계산하는 결함 페이지 예측기(790) 또는 다른 오류 예측 엔진을 포함한다. 결함 페이지 예측기(790)는 검출된 정정 가능한 오류를, 정정 불가능한 오류가 발생할 가능성을 결정하고 어떤 페이지가 가능성 있는 UE와 연관되는지를 판정하는 하드웨어 구성과 상관시킬 수 있다. ECC(error checking and correction) 로직(756)은 시스템(700)에 대한 결함 또는 CE를 검출 및 식별할 수 있는 ECC 로직 온-메모리(ECC logic on-memory)를 나타낸다. 오류 제어(CTRL)(728)는 메모리 제어기(720)의 오류 제어 로직을 나타내는데, 이는 시스템(700)에 대한 결함 또는 CE를 검출하고 식별하는 ECC 로직을 포함할 수 있다. 검출된 결함에 기초하여, 결함 페이지 예측기(790)는 UE가 발생할 가능성을 결정할 수 있다. 결함 페이지 예측기(790)는 결함 페이지의 표시를 호스트 운영 체제(명시적으로 도시되지 않음)에 제공할 수 있으며, 그런 다음 호스트 운영 체제는 페이지를 오프라인화할 수 있다. 결함 페이지 예측기(790)는 시스템(700)의 시스템 보드 상에 있을 수 있다. 결함 페이지 예측기(790)는 본 명세서의 임의의 예에 따라 예측을 수행할 수 있다.
프로세서(710)는, 집합적으로 호스트 또는 메모리의 사용자로 지칭될 수 있는 운영 체제(OS) 및 애플리케이션을 실행할 수 있는 컴퓨팅 플랫폼의 처리 유닛을 나타낸다. OS 및 애플리케이션은 메모리 액세스를 초래하는 동작을 실행한다. 프로세서(710)는 하나 이상의 개별 프로세서를 포함할 수 있다. 각각의 개별 프로세서는 단일 처리 유닛, 멀티코어 처리 유닛, 또는 이들의 조합을 포함할 수 있다. 처리 유닛은 CPU(central processing unit)와 같은 기본 프로세서, GPU(graphics processing unit)와 같은 주변 프로세서, 또는 이들의 조합일 수 있다. 메모리 액세스는 또한 네트워크 제어기 또는 하드 디스크 제어기와 같은 디바이스에 의해 시작될 수 있다. 이러한 디바이스는 일부 시스템의 프로세서와 통합되거나, 버스(예컨대, PCI 익스프레스)를 통해 프로세서에 부착되거나, 또는 이들의 조합일 수 있다. 시스템(700)은 SOC(system on a chip)로 구현되거나 독립형 구성요소로 구현될 수 있다.
메모리 디바이스에 대한 언급은 상이한 메모리 유형에 적용될 수 있다. 메모리 디바이스는 종종 휘발성 메모리 기술을 지칭한다. 휘발성 메모리는 디바이스의 전원이 차단되면 그 상태(및 그에 저장된 데이터)가 불확정적인(indeterminate) 메모리이다. 비휘발성 메모리는 디바이스의 전원이 차단되어도 상태가 확정적인 메모리를 지칭한다. 동적 휘발성 메모리는 상태를 유지하기 위해 디바이스에 저장된 데이터를 리프레시(refresh)해야 한다. 동적 휘발성 메모리의 일 예는 DRAM(dynamic random-access memory), 또는 동기식 DRAM(SDRAM)과 같은 어떤 변형을 포함한다. 본 명세서에 설명된 메모리 서브시스템은 DDR4(double data rate version 4, JESD79-4, JEDEC(Joint Electron Device Engineering Council, 현재는 JEDEC Solid State Technology Association)에 의해 2012년 9월에 최초 발행됨), LPDDR4(low power DDR version 4, JESD209-4, JEDEC에 의해 2014년 8월에 최초 발행됨), WIO2(Wide I/O 2(WideIO2), JESD229-2, JEDEC에 의해 2014년 8월에 최초 발행됨), HBM(high bandwidth memory DRAM, JESD235A, JEDEC에 의해 2015년 11월에 최초 발행됨), DDR5(DDR version 5, JEDEC에 의해 2020년 7월에 최초 발행됨), LPDDR5(LPDDR version 5, JESD209-5, JEDEC에 의해 2019년 2월에 최초 발행됨), HBM2(HBM version 2, JESD235C, JEDEC에 의해 2020년 1월에 최초 발행됨), HBM3(현재 JEDEC에 의해 논의 중인 HBM version 3), 또는 다른 것, 또는 메모리 기술의 조합, 및 이러한 사양의 파생물 또는 확장에 기초한 기술과 같은 다수의 메모리 기술과 호환될 수 있다.
메모리 제어기(720)는 시스템(700)에 대한 하나 이상의 메모리 제어기 회로 또는 디바이스를 나타낸다. 메모리 제어기(720)는 프로세서(710)에 의한 동작의 실행에 응답하여 메모리 액세스 커맨드를 생성하는 제어 로직을 나타낸다. 메모리 제어기(720)는 하나 이상의 메모리 디바이스(740)에 액세스한다. 메모리 디바이스(740)는 위에 언급된 임의의 것에 따른 DRAM 디바이스일 수 있다. 일 예에서, 메모리 디바이스(740)는 서로 다른 채널로서 체계화 및 관리되는데, 여기서 각 채널은 다수의 메모리 디바이스에 병렬로 결합되는 버스 및 신호 라인에 결합된다. 각 채널은 독립적으로 동작 가능하다. 따라서 각 채널은 독립적으로 액세스 및 제어되며, 타이밍, 데이터 전송, 커맨드 및 어드레스 교환, 및 다른 동작은 채널별로 분리된다. 결합은 전기적 결합, 통신 결합, 물리적 결합, 또는 이들의 조합을 지칭할 수 있다. 물리적 결합은 직접 접촉을 포함할 수 있다. 전기적 결합은 구성요소들 간의 전기적 흐름을 허용하거나, 구성요소들 간의 시그널링을 허용하거나, 또는 둘 다를 허용하는 인터페이스 또는 상호접속을 포함한다. 통신 결합은 구성요소로 하여금 데이터를 교환할 수 있게 하는 접속(유선 또는 무선을 포함함)을 포함한다.
일 예에서, 각 채널에 대한 설정은 개별 모드 레지스터 또는 다른 레지스터 설정에 의해 제어된다. 일 예에서, 각각의 메모리 제어기(720)는 개별 메모리 채널을 관리하지만, 시스템(700)은 단일 제어기에 의해 관리되는 다수의 채널을 갖거나 단일 채널에 대한 다수의 제어기를 갖도록 구성될 수 있다. 일 예에서, 메모리 제어기(720)는 동일한 다이 상에서 구현되거나 프로세서와 동일한 패키지 공간에서 구현되는 로직과 같은 호스트 프로세서(710)의 일부이다.
메모리 제어기(720)는 위에서 언급된 메모리 채널과 같은 메모리 버스에 결합하기 위한 I/O 인터페이스 로직(722)을 포함한다. I/O 인터페이스 로직(722)(및 메모리 디바이스(740)의 I/O 인터페이스 로직(742))은 핀, 패드, 접속기, 신호 라인, 트레이스, 또는 와이어, 또는 디바이스들을 접속하기 위한 다른 하드웨어, 또는 이들의 조합을 포함할 수 있다. I/O 인터페이스 로직(722)은 하드웨어 인터페이스를 포함할 수 있다. 도시된 바와 같이, I/O 인터페이스 로직(722)은 적어도 신호 라인용 드라이버/송수신기를 포함한다. 일반적으로, 집적 회로 인터페이스 내의 와이어는 패드, 핀 또는 접속기와 결합하여 디바이스들 사이의 신호 라인이나 트레이스 또는 다른 와이어를 인터페이스한다. I/O 인터페이스 로직(722)은 디바이스들 사이의 신호 라인 상에서 신호를 교환하기 위해 드라이버, 수신기, 송수신기, 또는 종단(termination), 또는 다른 회로 또는 회로의 조합을 포함할 수 있다. 신호 교환은 송신 또는 수신 중 적어도 하나를 포함한다. 메모리 제어기(720)로부터의 I/O(722)를 메모리 디바이스(740)의 I/O(742)에 결합하는 것으로 도시되어 있지만, 메모리 디바이스(740)의 그룹이 병렬로 액세스되는 시스템(700)의 구현에서는, 다수의 메모리 디바이스가 메모리 제어기(720)의 동일한 인터페이스에 대한 I/O 인터페이스를 포함할 수 있음이 이해될 것이다. 하나 이상의 메모리 모듈(770)을 포함하는 시스템(700)의 구현에서, I/O(742)는 메모리 디바이스 자체 상의 인터페이스 하드웨어에 추가하여 메모리 모듈의 인터페이스 하드웨어를 포함할 수 있다. 다른 메모리 제어기(720)는 다른 메모리 디바이스(740)에 대한 별도의 인터페이스를 포함할 것이다.
메모리 제어기(720)와 메모리 디바이스(740) 사이의 버스는 메모리 제어기(720)를 메모리 디바이스(740)에 결합시키는 다수의 신호 라인으로 구현될 수 있다. 일반적으로, 버스는 적어도 클록(CLK)(732), 커맨드/어드레스(CMD)(734), 기록 데이터(DQ) 및 판독 데이터(DQ)(736), 및 0개 이상의 기타 신호 라인(738)을 포함할 수 있다. 일 예에서, 메모리 제어기(720)와 메모리 사이의 버스 또는 접속은 메모리 버스로 지칭될 수 있다. 일 예에서, 메모리 버스는 멀티-드롭 버스이다. CMD용 신호 라인은 "C/A 버스"(또는 ADD/CMD 버스, 또는 커맨드(C 또는 CMD) 및 어드레스(A 또는 ADD) 정보의 전송을 나타내는 어떤 다른 지정)으로 지칭될 수 있고, 또는 기록 및 판독(DQ)용 신호 라인은 "데이터 버스"로 지칭될 수 있다. 일 예에서, 독립 채널들은 상이한 클록 신호, C/A 버스, 데이터 버스, 및 다른 신호 라인을 갖는다. 따라서 독립 인터페이스 경로가 별도의 버스로 간주될 수 있다는 의미에서, 시스템(700)은 다수의 "버스"를 갖는 것으로 간주될 수 있다. 명시적으로 도시된 라인에 추가하여, 버스는 스트로브 시그널링 라인, 경보 라인, 보조 라인, 또는 다른 신호 라인, 또는 이들의 조합 중 적어도 하나를 포함할 수 있다는 것이 이해될 것이다. 또한, 직렬 버스 기술이 메모리 제어기(720)와 메모리 디바이스(740) 사이의 접속에 사용될 수 있다는 것이 이해될 것이다. 직렬 버스 기술의 예는 각 방향의 신호의 단일 차동 쌍을 통한 임베디드 클록에 의한 고속 데이터의 8B10B 인코딩 및 전송이다. 일 예에서, CMD(734)는 다수의 메모리 디바이스와 병렬로 공유되는 신호 라인을 나타낸다. 일 예에서, 다수의 메모리 디바이스는 CMD(734)의 인코딩 커맨드 신호 라인을 공유하고, 각각은 개별 메모리 디바이스를 선택하기 위한 별도의 칩 선택(CS_n) 신호 라인을 갖는다.
시스템(700)의 예에서, 메모리 제어기(720)와 메모리 디바이스(740) 사이의 버스는 보조 커맨드 버스(CMD)(734) 및 기록 및 판독 데이터(DQ)(736)를 운반하기 위한 보조 버스를 포함한다는 것이 이해될 것이다. 일 예에서, 데이터 버스는 판독 데이터 및 기록/커맨드 데이터를 위한 양방향 라인을 포함할 수 있다. 다른 예에서, 보조 버스 DQ(736)는 호스트로부터 메모리로의 기록 데이터를 위한 단방향 기록 신호 라인을 포함할 수 있고, 메모리로부터 호스트로의 판독 데이터를 위한 단방향 라인을 포함할 수 있다. 선택된 메모리 기술 및 시스템 설계에 따라, 기타 신호(738)는 스트로브 라인(DQS)과 같은 버스 또는 서브 버스를 수반할 수 있다. 시스템(700)의 설계에 기초하거나 또는 설계가 다수의 구현을 지원하면 구현에 기초하여, 데이터 버스는 메모리 디바이스(740)별로 더 많거나 더 적은 대역폭을 가질 수 있다. 예를 들어, 데이터 버스는 x4 인터페이스, x8 인터페이스, x16 인터페이스, 또는 다른 인터페이스 중 하나를 갖는 메모리 디바이스를 지원할 수 있다. 규약 "xW"(여기서 W는 메모리 디바이스(740)의 인터페이스 크기 또는 폭을 지칭하는 정수임)는 메모리 제어기(720)와 데이터를 교환하기 위한 신호 라인의 수를 나타낸다. 메모리 디바이스의 인터페이스 크기는 얼마나 많은 메모리 디바이스가 시스템(700)의 채널당 동시에 사용될 수 있는지 또는 동일한 신호 라인에 병렬로 결합될 수 있는지에 대한 제어 인자이다. 일 예에서, 고대역폭 메모리 디바이스, 넓은 인터페이스 디바이스 또는 스택형 메모리 구성, 또는 이들의 조합은, x128 인터페이스, x256 인터페이스, x512 인터페이스, x1024 인터페이스, 또는 다른 데이터 버스 인터페이스 폭과 같은 더 넓은 인터페이스를 가능하게 할 수 있다.
일 예에서, 메모리 디바이스(740) 및 메모리 제어기(720)는 버스트 또는 연속적 데이터 전송의 시퀀스로 데이터 버스를 통해 데이터를 교환한다. 버스트는 버스 주파수와 관련된 전송 사이클의 수에 대응한다. 일 예에서, 전송 사이클은 동일한 클록 또는 스트로브 신호 에지(예컨대, 상승 에지)에서 발생하는 전송에 대한 전체 클록 사이클일 수 있다. 일 예에서, 시스템 클록의 사이클을 지칭하는 매 클록 사이클은 다수의 단위 간격(UI)으로 분리되는데, 여기서 각 UI는 전송 사이클이다. 예를 들어, 이중 데이터 속도 전송은 클록 신호의 양쪽 에지(예컨대, 상승 및 하강)에서 트리거된다. 버스트는 레지스터에 저장되거나 즉시 트리거되는 구성일 수 있는 구성된 수의 UI 동안 지속될 수 있다. 예를 들어, 8개의 연속적 전송 기간의 시퀀스는 버스트 길이 8(BL8)로 간주될 수 있으며, 각 메모리 디바이스(740)는 각 UI에서 데이터를 전송할 수 있다. 따라서, BL8에서 동작하는 x8 메모리 디바이스는 64 비트의 데이터를 전송할 수 있다(8 데이터 신호 라인 x 버스트를 통해 라인당 전송되는 8 데이터 비트). 이 간단한 예는 단지 예시일 뿐이며 제한적이지 않다는 것이 이해될 것이다.
메모리 디바이스(740)는 시스템(700)에 대한 메모리 자원을 나타낸다. 일 예에서, 각 메모리 디바이스(740)는 개별 메모리 다이이다. 일 예에서, 각각의 메모리 디바이스(740)는 디바이스 또는 다이별로 다수(예컨대, 2) 채널과 인터페이스할 수 있다. 각각의 메모리 디바이스(740)는 디바이스의 구현에 의해 결정되는 대역폭(예컨대, x16 또는 x8 또는 어떤 다른 인터페이스 대역폭)을 갖는 I/O 인터페이스 로직(742)을 포함한다. I/O 인터페이스 로직(742)은 메모리 디바이스로 하여금 메모리 제어기(720)와 인터페이싱할 수 있게 한다. I/O 인터페이스 로직(742)은 하드웨어 인터페이스를 포함할 수 있고, 메모리 제어기의 I/O(722)에 따를 수 있지만, 메모리 디바이스 측에 존재한다. 일 예에서, 다수의 메모리 디바이스(740)는 동일한 커맨드 및 데이터 버스에 병렬로 접속된다. 다른 예에서, 다수의 메모리 디바이스(740)는 동일한 커맨드 버스에 병렬로 접속되고, 상이한 데이터 버스에 접속된다. 예를 들어, 시스템(700)은 병렬로 결합된 다수의 메모리 디바이스(740)로 구성될 수 있는데, 각 메모리 디바이스는 커맨드에 응답하고 각각의 내부에 있는 메모리 자원(760)에 액세스한다. 기록 동작의 경우에 개별 메모리 디바이스(740)는 전체 데이터 워드의 일부를 기록할 수 있고, 판독 동작의 경우에 개별 메모리 디바이스(740)는 전체 데이터 워드의 일부를 페치할 수 있다. 워드의 나머지 비트는 병렬로 다른 메모리 디바이스에 의해 제공되거나 수신될 것이다.
일 예에서, 메모리 디바이스(740)는 컴퓨팅 디바이스의 마더보드 또는 호스트 시스템 플랫폼(예컨대, 프로세서(710)가 배치되는 PCB(printed circuit board) 또는 기판) 상에 직접 배치된다. 일 예에서, 메모리 디바이스(740)는 메모리 모듈(770)로 체계화될 수 있다. 일 예에서, 메모리 모듈(770)은 듀얼 인라인 메모리 모듈(dual inline memory module: DIMM)을 나타낸다. 일 예에서, 메모리 모듈(770)은 호스트 시스템 플랫폼과 별개의 회로, 별개의 디바이스 또는 별개의 보드일 수 있는 액세스 또는 제어 회로의 적어도 일부를 공유하기 위한 다수의 메모리 디바이스의 다른 체계화를 나타낸다. 메모리 모듈(770)은 다수의 메모리 디바이스(740)를 포함할 수 있고, 메모리 모듈은 그들 상에 배치된 포함된 메모리 디바이스에 대한 다수의 개별 채널에 대한 지원을 포함할 수 있다. 다른 예에서, 메모리 디바이스(740)는, 예컨대, MCM(multi-chip-module), 패키지 온 패키지(package-on-package), TSV(through-silicon via), 또는 다른 기술 또는 이들의 조합과 같은 기술에 의해 메모리 제어기(720)와 동일한 패키지에 통합될 수 있다. 유사하게, 일 예에서, 다수의 메모리 디바이스(740)는 메모리 모듈(770)에 통합될 수 있으며, 메모리 모듈 자체는 메모리 제어기(720)와 동일한 패키지에 통합될 수 있다. 이들 및 다른 구현의 경우에 메모리 제어기(720)는 호스트 프로세서(710)의 일부일 수 있음이 인식될 것이다.
메모리 디바이스(740)는 각각 하나 이상의 메모리 어레이(760)를 포함한다. 메모리 어레이(760)는 데이터를 위한 어드레스 지정 가능한 메모리 위치 또는 저장 위치를 나타낸다. 일반적으로, 메모리 어레이(760)는 워드라인(행) 및 비트라인(행 내의 개별 비트) 제어를 통해 액세스되는 데이터 행으로서 관리된다. 메모리 어레이(760)는 메모리의 개별 채널, 랭크 및 뱅크로 체계화될 수 있다. 채널은 메모리 디바이스(740) 내의 저장 위치에 대한 독립적 제어 경로를 지칭할 수 있다. 랭크는 병렬로 다수의 메모리 디바이스(예컨대, 상이한 디바이스들 내의 동일한 행 어드레스)에 걸친 공통 위치를 지칭할 수 있다. 뱅크는 메모리 디바이스(740) 내의 메모리 위치의 서브어레이를 지칭할 수 있다. 일 예에서, 메모리의 뱅크는 공유 회로(예컨대, 드라이버, 신호 라인, 제어 로직)의 적어도 일부를 갖는 서브-뱅크로 분할되는데, 공유 회로는 서브-뱅크에 대해 개별 어드레스 지정 및 액세스를 허용한다. 채널, 랭크, 뱅크, 서브-뱅크, 뱅크 그룹, 또는 메모리 위치의 다른 체계화, 및 이들 체계화의 조합은 물리적 자원에 대한 이들의 적용에서 중첩될 수 있음이 이해될 것이다. 예를 들어, 동일한 물리적 메모리 위치는 특정 뱅크로서 특정 채널을 통해 액세스될 수 있으며, 이 뱅크는 또한 랭크에 속할 수 있다. 따라서, 메모리 자원의 체계화는 배타적이기보다는 포괄적인 방식으로 이해될 것이다.
일 예에서, 메모리 디바이스(740)는 하나 이상의 레지스터(744)를 포함한다. 레지스터(744)는 메모리 디바이스의 동작을 위한 구성 또는 설정을 제공하는 하나 이상의 저장 디바이스 또는 저장 위치를 나타낸다. 일 예에서, 레지스터(744)는 제어 또는 관리 동작의 일부로서 메모리 제어기(720)에 의한 액세스를 위한 데이터를 저장하기 위해 메모리 디바이스(740)에 대한 저장 위치를 제공할 수 있다. 일 예에서, 레지스터(744)는 하나 이상의 모드 레지스터(Mode Registers)를 포함한다. 일 예에서, 레지스터(744)는 하나 이상의 다목적 레지스터를 포함한다. 레지스터(744) 내의 위치의 구성은 상이한 "모드"에서 동작하도록 메모리 디바이스(740)를 구성할 수 있는데, 커맨드 정보는 모드에 기초하여 메모리 디바이스(740) 내의 상이한 동작을 트리거할 수 있다. 추가적으로 또는 대안적으로, 상이한 모드는 또한 모드에 따라 어드레스 정보 또는 다른 신호 라인으로부터 상이한 동작을 트리거할 수 있다. 레지스터(744)의 설정은 I/O 설정(예컨대, 타이밍, 종단 또는 ODT(on-die termination)(746), 드라이버 구성, 또는 다른 I/O 설정)에 대한 구성을 나타낼 수 있다.
일 예에서, 메모리 디바이스(740)는 I/O(742)와 연관된 인터페이스 하드웨어의 일부로서 ODT(746)를 포함한다. ODT(746)는 위에서 언급한 바와 같이 구성될 수 있고, 지정된 신호 라인에 대한 인터페이스에 적용되는 임피던스에 대한 설정을 제공할 수 있다. 일 예에서, ODT(746)는 DQ 신호 라인에 적용된다. 일 예에서, ODT(746)는 커맨드 신호 라인에 적용된다. 일 예에서, ODT(746)는 어드레스 신호 라인에 적용된다. 일 예에서, ODT(746)는 앞의 것의 임의의 조합에 적용될 수 있다. ODT 설정은 메모리 디바이스가 액세스 동작의 선택된 타겟인지 아니면 비-타겟 디바이스인지에 따라 변경될 수 있다. ODT(746) 설정은 종단된 라인 상에서의 시그널링의 타이밍 및 반사에 영향을 줄 수 있다. ODT(746)에 대한 세심한 제어는 적용된 임피던스 및 부하의 개선된 매칭을 갖는 고속 동작을 가능하게 한다. ODT(746)는 I/O 인터페이스(742, 722)의 특정 신호 라인에 적용될 수 있으며(예컨대, DQ 라인용 ODT 또는 CA 라인용 ODT), 반드시 모든 신호 라인에 적용될 필요는 없다.
메모리 디바이스(740)는 제어기(750)를 포함하는데, 이는 메모리 디바이스 내의 내부 동작을 제어하기 위한 메모리 디바이스 내의 제어 로직을 나타낸다. 예를 들어, 제어기(750)는 메모리 제어기(720)에 의해 전송된 커맨드를 디코딩하고, 커맨드를 실행하거나 만족시키기 위한 내부 동작을 생성한다. 제어기(750)는 내부 제어기로 지칭될 수 있으며, 호스트의 메모리 제어기(720)와 별개이다. 제어기(750)는 레지스터(744)에 기초하여 어떤 모드가 선택되는지를 판정할 수 있고, 선택된 모드에 기초하여 메모리 자원(760)에 대한 액세스를 위한 동작 또는 다른 동작의 내부 실행을 구성할 수 있다. 제어기(750)는, 선택된 모드에 대한 적절한 인터페이스를 제공하고 커맨드를 적절한 메모리 위치 또는 어드레스로 안내하도록 메모리 디바이스(740) 내의 비트의 라우팅을 제어하기 위한 제어 신호를 생성한다. 제어기(750)는 커맨드 및 어드레스 신호 라인 상에서 수신된 커맨드 인코딩을 디코딩할 수 있는 커맨드 로직(752)을 포함한다. 따라서, 커맨드 로직(752)은 커맨드 디코더이거나 이를 포함할 수 있다. 커맨드 로직(752)을 사용하여, 메모리 디바이스는 커맨드를 식별할 수 있고, 요청된 커맨드를 실행하기 위한 내부 동작을 생성할 수 있다.
다시 메모리 제어기(720)를 참조하면, 메모리 제어기(720)는 커맨드(CMD) 로직(724)을 포함하는데, 이는 메모리 디바이스(740)에 전송할 커맨드를 생성하는 로직 또는 회로를 나타낸다. 커맨드의 생성은 스케줄링 이전의 커맨드 또는 전송할 준비가 된 대기 중인 커맨드의 준비를 지칭할 수 있다. 일반적으로, 메모리 서브시스템에서의 시그널링은, 메모리 디바이스가 커맨드를 실행해야 하는 하나 이상의 메모리 위치를 표시하거나 선택하기 위한, 커맨드 내에 있거나 커맨드를 동반하는 어드레스 정보를 포함한다. 메모리 디바이스(740)에 대한 트랜잭션의 스케줄링에 응답하여, 메모리 제어기(720)는 I/O(722)를 통해 커맨드를 발행하여 메모리 디바이스(740)로 하여금 그 커맨드를 실행하게 할 수 있다. 일 예에서, 메모리 디바이스(740)의 제어기(750)는 메모리 제어기(720)로부터 I/O(742)를 통해 수신된 커맨드 및 어드레스 정보를 수신하고 디코딩한다. 수신된 커맨드 및 어드레스 정보에 기초하여 제어기(750)는 커맨드를 실행하기 위해 메모리 디바이스(740) 내의 로직 및 회로의 동작 타이밍을 제어할 수 있다. 제어기(750)는 타이밍 및 시그널링 요건과 같은 메모리 디바이스(740) 내의 표준 또는 사양의 준수를 담당한다. 메모리 제어기(720)는 액세스 스케줄링 및 제어에 의해 표준 또는 사양의 준수를 구현할 수 있다.
메모리 제어기(720)는 스케줄러(730)를 포함하는데, 이는 메모리 디바이스(740)로 전송할 트랜잭션을 생성하고 지시하는 로직 또는 회로를 나타낸다. 하나의 관점에서, 메모리 제어기(720)의 주요 기능은 메모리 디바이스(740)에 대한 메모리 액세스 및 다른 트랜잭션을 스케줄링하는 것이라고 할 수 있다. 이러한 스케줄링은 프로세서(710)에 의한 데이터 요청을 구현하고 데이터의 무결성을 유지하기 위해 트랜잭션 자체를 생성하는 것을 포함할 수 있다(예컨대, 리프레시와 관련된 커맨드와 같은 것). 트랜잭션은 하나 이상의 커맨드를 포함할 수 있으며, 클록 사이클 또는 단위 간격과 같은 하나 또는 다수의 타이밍 사이클에 걸쳐 커맨드나 데이터 또는 둘 모두의 전송을 초래할 수 있다. 트랜잭션은 판독 또는 기록 또는 관련 커맨드 또는 이들의 조합과 같은 액세스를 위한 것일 수 있으며, 다른 트랜잭션은 구성, 설정, 데이터 무결성, 또는 다른 커맨드 또는 이들의 조합을 위한 메모리 관리 커맨드를 포함할 수 있다.
일반적으로, 메모리 제어기(720)는 시스템(700)의 성능을 향상시키기 위해 트랜잭션의 선택 및 순서화를 허용하는 스케줄러(730)와 같은 로직을 포함한다. 따라서, 메모리 제어기(720)는 어떤 미결(outstanding) 트랜잭션이 어떤 순서로 메모리 디바이스(740)에 전송되어야 하는지를 선택할 수 있는데, 이는 일반적으로 단순한 선입선출 알고리즘보다 훨씬 더 복잡한 로직으로 달성된다. 메모리 제어기(720)는 메모리 디바이스(740)로의 트랜잭션의 전송을 관리하고, 트랜잭션과 연관된 타이밍을 관리한다. 일 예에서, 트랜잭션은 결정적 타이밍을 갖는데, 이는 메모리 제어기(720)에 의해 관리될 수 있고, 스케줄러(730)로 트랜잭션을 스케줄링하는 방법을 결정하는 데 사용될 수 있다.
일 예에서, 메모리 제어기(720)는 리프레시(REF) 로직(726)을 포함한다. 리프레시 로직(726)은, 휘발성이고 결정적 상태를 유지하기 위해 리프레시될 필요가 있는 메모리 자원에 사용될 수 있다. 일 예에서, 리프레시 로직(726)은 리프레시를 위한 위치 및 수행할 리프레시 유형을 나타낸다. 리프레시 로직(726)은 리프레시 커맨드를 전송함으로써 메모리 디바이스(740) 내에서의 자체 리프레시를 트리거할 수 있거나 자동 리프레시 커맨드로 지칭될 수 있는 외부 리프레시를 실행할 수 있거나, 이들의 조합을 수행할 수 있다. 일 예에서, 메모리 디바이스(740) 내의 제어기(750)는 메모리 디바이스(740) 내에서 리프레시를 적용하는 리프레시 로직(754)을 포함한다. 일 예에서, 리스레시 로직(754)은 메모리 제어기(720)로부터 수신된 외부 리프레시에 따라 리프레시를 수행하는 내부 동작을 생성한다. 리스레시 로직(754)은 커맨드에 응답하여 리프레시가 메모리 디바이스(740)로 향하는지 여부 및 어떤 메모리 자원(760)이 리프레시되는지를 판정할 수 있다.
도 8은 결함 페이지 예측이 구현될 수 있는 컴퓨팅 시스템의 예의 블록도이다. 시스템(800)은 본 명세서의 임의의 예에 따른 컴퓨팅 디바이스를 나타내며, 랩톱 컴퓨터, 데스크탑 컴퓨터, 태블릿 컴퓨터, 서버, 게임 또는 엔터테인먼트 제어 시스템, 임베디드 컴퓨팅 디바이스, 또는 다른 전자 디바이스일 수 있다.
시스템(800)은 시스템(100)의 예에 따른 시스템의 예이다. 일 예에서, 시스템(800)은 결함 페이지 예측기(faulty page predictor: FPP)(890) 또는 정정 불가능한 오류가 발생할 가능성이 있는 페이지를 계산하는 다른 오류 예측 엔진을 포함한다. 결함 페이지 예측기(890)는 검출된 정정 가능한 오류를, 정정 불가능한 오류가 발생할 가능성을 결정하고 어떤 페이지가 가능성 있는 UE와 연관되는지를 판정하는 하드웨어 구성과 상관시킬 수 있다. 메모리 서브시스템(820)은 ECC(error checking and correction)(838)를 포함하는데, 이는 시스템(800)에 대한 오류 또는 CE를 검출 및 식별할 수 있는 ECC 로직을 나타내는 한다. FPP(890)는 검출된 오류에 기초하여 UE가 발생할 가능성을 결정할 수 있다. 결함 페이지 예측기(890)는 결함 페이지의 표시를 호스트 운영 체제(명시적으로 도시되지 않음)에 제공할 수 있고, 그런 다음 호스트 운영 체제는 페이지를 오프라인화할 수 있다. 결함 페이지 예측기(890)는 시스템(800)의 시스템 보드 상에 존재할 수 있다. 결함 페이지 예측기(890)는 본 명세서의 임의의 예에 따라 예측을 수행할 수 있다.
시스템(800)은 프로세서(810)를 포함하는데, 이는 임의의 유형의 마이크로프로세서, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 처리 코어, 또는 다른 처리 하드웨어, 또는 이들의 조합을 포함하여 시스템(800)에 대한 명령어의 처리 또는 실행을 제공할 수 있다. 프로세서(810)는 호스트 프로세서 디바이스일 수 있다. 프로세서(810)는 시스템(800)의 전체 동작을 제어하고, 하나 이상의 프로그래밍 가능한 범용 또는 특수 목적 마이크로프로세서, 디지털 신호 프로세서(DSP), 프로그래밍 가능한 제어기, 주문형 집적 회로(ASIC), 프로그래밍 가능한 로직 디바이스(PLD), 또는 이러한 디바이스들의 조합일 수 있거나 이를 포함할 수 있다.
시스템(800)은 부팅/구성(816)을 포함하는데, 이는 부팅 코드(예컨대, 기본 입/출력 시스템(BIOS)), 구성 설정, 보안 하드웨어(예컨대, 신뢰 플랫폼 모듈(trusted platform module: TPM)), 또는 호스트 OS 외부에서 동작하는 다른 시스템 레벨 하드웨어를 저장하기 위한 저장소를 나타낸다. 부팅/구성(816)은 판독 전용 메모리(ROM), 플래시 메모리, 또는 다른 메모리 디바이스와 같은 비휘발성 저장 디바이스를 포함할 수 있다.
일 예에서, 시스템(800)은 프로세서(810)에 결합된 인터페이스(812)를 포함하는데, 이는 메모리 서브시스템(820) 또는 그래픽 인터페이스 구성요소(840)와 같은 더 높은 대역폭 접속을 필요로 하는 시스템 구성요소에 대한 고속 인터페이스 또는 고처리량 인터페이스를 나타낼 수 있다. 인터페이스(812)는, 독립형 구성요소이거나 프로세서 다이에 통합될 수 있는 인터페이스 회로를 나타낸다. 인터페이스(812)는 프로세서 다이 상에 회로로서 통합되거나 시스템 온 칩 상의 구성요소로서 통합될 수 있다. 존재하는 경우, 그래픽 인터페이스(840)는 시스템(800)의 사용자에게 시각적 디스플레이를 제공하는 그래픽 구성요소에 인터페이스한다. 그래픽 인터페이스(840)는 독립형 구성요소일 수 있거나 프로세서 다이 또는 시스템 온 칩에 통합될 수 있다. 일 예에서, 그래픽 인터페이스(840)는 사용자에게 출력을 제공하는 고화질(HD) 디스플레이 또는 초고화질(UHD) 디스플레이를 구동할 수 있다. 일 예에서, 디스플레이는 터치스크린 디스플레이를 포함할 수 있다. 일 예에서, 그래픽 인터페이스(840)는 메모리(830)에 저장된 데이터에 기초하거나 프로세서(810)에 의해 실행되는 동작에 기초하거나 양쪽 모두에 기초하여 디스플레이를 생성한다.
메모리 서브시스템(820)은 시스템(800)의 메인 메모리를 나타내고, 프로세서(810)에 의해 실행될 코드, 또는 루틴을 실행하는 데 사용될 데이터 값을 위한 저장소를 제공한다. 메모리 서브시스템(820)은 DRAM, 3DXP(three-dimensional crosspoint), 또는 다른 메모리 디바이스, 또는 이러한 디바이스들의 조합과 같은 하나 이상의 다양한 RAM(random-access memory)을 포함할 수 있다. 메모리(830)는 무엇보다도 시스템(800)에서의 명령어의 실행을 위한 소프트웨어 플랫폼을 제공하기 위해 운영 체제(OS)(832)를 저장하고 호스트한다. 또한, 애플리케이션(834)은 메모리(830)로부터의 OS(832)의 소프트웨어 플랫폼 상에서 실행될 수 있다. 애플리케이션(834)은 하나 이상의 기능 실행을 수행하기 위한 자체 운영 로직를 갖는 프로그램을 나타낸다. 프로세스(836)는 OS(832) 또는 하나 이상의 애플리케이션(834) 또는 이들의 조합에 보조 기능을 제공하는 에이전트 또는 루틴을 나타낸다. OS(832), 애플리케이션(834), 및 프로세스(836)는 시스템(800)을 위한 기능을 제공하는 소프트웨어 로직을 제공한다. 일 예에서, 메모리 서브시스템(820)은 메모리 제어기(822)를 포함하는데, 이는 메모리(830)에 커맨드를 생성하고 발행하는 메모리 제어기이다. 메모리 제어기(822)는 프로세서(810)의 물리적 일부 또는 인터페이스(812)의 물리적 일부일 수 있음이 이해될 것이다. 예를 들어, 메모리 제어기(822)는 프로세서(810)와 함께 회로에 통합된(예컨대, 프로세서 다이 또는 시스템 온 칩에 통합된) 통합형 메모리 제어기일 수 있다.
구체적으로 도시되지는 않았지만, 시스템(800)은 디바이스들 사이에 메모리 버스, 그래픽 버스, 인터페이스 버스 등과 같은 하나 이상의 버스 또는 버스 시스템을 포함할 수 있다는 것이 이해될 것이다. 버스 또는 다른 신호 라인은 구성요소들을 통신 가능하게 또는 전기적으로 함께 결합시키거나, 구성요소들을 통신 가능하게 및 전기적으로 결합시킬 수 있다. 버스는 물리적 통신 라인, 점 대 점 접속, 브리지, 어댑터, 제어기, 또는 다른 회로 또는 이들의 조합을 포함할 수 있다. 버스는, 예를 들어, 시스템 버스, PCI(Peripheral Component Interconnect) 버스, HyperTransport 또는 ISA(industry standard architecture) 버스, SCSI(small computer system interface) 버스, USB(universal serial bus), 다른 버스, 또는 이들의 조합을 포함할 수 있다.
일 예에서, 시스템(800)은 인터페이스(814)를 포함하는데, 이는 인터페이스(812)에 결합될 수 있다. 인터페이스(814)는 인터페이스(812)보다 저속의 인터페이스일 수 있다. 일 예에서, 인터페이스(814)는 독립형 구성요소 및 집적 회로를 포함할 수 있는 인터페이스 회로를 나타낼 수 있다. 일 예에서는, 다수의 사용자 인터페이스 구성요소 또는 주변 구성요소, 또는 양쪽 모두가 인터페이스(814)에 결합된다. 네트워크 인터페이스(850)는 하나 이상의 네트워크를 통해 원격 디바이스(예컨대, 서버 또는 다른 컴퓨팅 디바이스)와 통신할 수 있는 능력을 시스템(800)에 제공한다. 네트워크 인터페이스(850)는 이더넷 어댑터, 무선 상호접속 구성요소, 셀룰러 네트워크 상호접속 구성요소, USB(universal serial bus), 또는 다른 유선 또는 무선 표준 기반 또는 독점 인터페이스를 포함할 수 있다. 네트워크 인터페이스(850)는 원격 장치와 데이터를 교환할 수 있는데, 이는 메모리에 저장된 데이터를 전송하거나 메모리에 저장할 데이터를 수신하는 것을 포함할 수 있다.
일 예에서, 시스템(800)은 하나 이상의 입/출력(I/O) 인터페이스(들)(860)를 포함한다. I/O 인터페이스(860)는 사용자로 하여금 시스템(800)과 상호작용할 수 있게 하는 하나 이상의 인터페이스 구성요소(예컨대, 오디오, 영숫자, 촉각/터치 또는 다른 인터페이싱)를 포함할 수 있다. 주변 인터페이스(870)는 위에서 구체적으로 언급되지 않은 임의의 하드웨어 인터페이스를 포함할 수 있다. 주변장치는 일반적으로 시스템(800)에 종속적으로 접속되는 디바이스를 지칭한다. 종속 접속은, 시스템(800)이 동작이 실행되는 소프트웨어 플랫폼 또는 하드웨어 플랫폼 또는 둘 다를 제공하고 사용자가 이와 상호작용하는 접속이다.
일 예에서, 시스템(800)은 비휘발성 방식으로 데이터를 저장하는 저장 서브시스템(880)을 포함한다. 일 예에서, 특정 시스템 구현에서, 저장소(880)의 적어도 특정 구성요소는 메모리 서브시스템(820)의 구성요소와 겹칠 수 있다. 저장 서브시스템(880)은 저장 디바이스(들)(884)를 포함하는데, 이는 하나 이상의 자기, 솔리드 스테이트, NAND, 3DXP, 또는 광학 기반 디스크, 또는 이들의 조합과 같은, 비휘발성 방식으로 대량의 데이터를 저장하는 임의의 종래의 매체일 수 있거나 이를 포함할 수 있다. 저장소(884)는 코드 또는 명령어 및 데이터(886)를 지속적인 상태로 유지한다(즉, 시스템(800)에 대한 전력의 차단에도 불구하고 값이 유지됨). 저장소(884)는 일반적으로 "메모리"로 간주될 수 있지만, 통상적으로 메모리(830)는 프로세서(810)에 명령어를 제공하는 실행 또는 동작 메모리이다. 저장소(884)는 비휘발성인 반면, 메모리(830)는 휘발성 메모리(즉, 시스템(800)에 대한 전력이 차단되면 데이터의 값 또는 상태는 불확정적이 됨)를 포함할 수 있다. 일 예에서, 저장 서브시스템(880)은 저장소(884)와 인터페이스하는 제어기(882)를 포함한다. 일 예에서, 제어기(882)는 인터페이스(814) 또는 프로세서(810)의 물리적 일부이거나, 프로세서(810)와 인터페이스(814) 모두의 회로 또는 로직을 포함할 수 있다.
전원(802)은 시스템(800)의 구성요소에 전력을 제공한다. 보다 구체적으로, 전원(802)은 일반적으로 시스템(800)의 하나 또는 다수의 전원(804)에 인터페이스하여 시스템(800)의 구성요소에 전력을 제공한다. 일 예에서, 전원(804)은 벽면 콘센트에 꽂기 위한 AC-DC(교류-직류) 어댑터를 포함한다. 이러한 AC 전력은 재생 에너지(예컨대, 태양광 전력) 전원(802)일 수 있다. 일 예에서, 전원(802)은 외부 AC-DC 변환기와 같은 DC 전원을 포함한다. 일 예에서, 전원(802) 또는 전원(804)은 충전 필드에 대한 근접성을 통해 충전하는 무선 충전 하드웨어를 포함한다. 일 예에서, 전원(802)은 내부 배터리 또는 연료 전지 소스를 포함할 수 있다.
도 9는 결함 페이지 예측이 구현될 수 있는 멀티-노드 네트워크의 예의 블록도이다. 일 예에서, 시스템(900)은 서버 팜(server farm)을 나타낸다. 일 예에서, 시스템(900)은 데이터 클라우드 또는 처리 클라우드를 나타낸다. 시스템(900)의 노드(930)는 시스템(100)의 예에 따른 시스템을 나타낸다. 노드(930)는 메모리(940)를 포함한다. 노드(930)는 제어기(942)를 포함하는데, 이는 메모리(940)에 대한 액세스를 관리하는 메모리 제어기를 나타낸다.
일 예에서, 노드(930)는 정정 불가능한 오류가 발생할 가능성이 있는 페이지를 계산하는 결함 페이지 예측기(faulty page predictor: FPP)(944) 또는 다른 오류 예측 엔진을 포함한다. 결함 페이지 예측기(944)는 검출된 정정 가능한 오류를, 정정 불가능한 오류가 발생할 가능성을 결정하고 어떤 페이지가 가능성 있는 UE와 연관되는지를 판정하는 하드웨어 구성과 상관시킬 수 있다. 결함 페이지 예측기(944)는 결함 페이지의 표시를 호스트 운영 체제(명시적으로 도시되지 않음)에 제공할 수 있으며, 그런 다음 호스트 운영 체제는 페이지를 오프라인화할 수 있다. 결함 페이지 예측기(944)는 노드(930)의 시스템 보드 상에 존재할 수 있다. 결함 페이지 예측기(944)는 본 명세서의 임의의 예에 따라 예측을 수행할 수 있다.
하나 이상의 클라이언트(902)는 네트워크(904)를 통해 시스템(900)에 요청을 한다. 네트워크(904)는 하나 이상의 로컬 네트워크, 또는 광역 네트워크, 또는 이들의 조합을 나타낸다. 클라이언트(902)는 시스템(900)에 의한 동작 실행에 대한 요청을 생성하는 인간 또는 머신 클라이언트일 수 있다. 시스템(900)은 클라이언트(902)에 의해 요청된 애플리케이션 또는 데이터 계산 작업을 실행한다.
일 예에서, 시스템(900)은 하나 이상의 랙을 포함하는데, 이는 다수의 계산 노드를 수용 및 상호접속하는 구조적 상호접속 자원을 나타낸다. 일 예에서, 랙(910)은 다수의 노드(930)를 포함한다. 일 예에서, 랙(910)은 다수의 블레이드 구성요소(920)를 호스팅한다. 호스팅은 전력, 구조적 또는 기계적 지지, 및 상호접속을 제공하는 것을 지칭한다. 블레이드(920)는 인쇄 회로 기판(PCB)의 컴퓨팅 자원을 지칭할 수 있는데, PCB는 하나 이상의 노드(930)에 대한 하드웨어 구성요소를 수용한다. 일 예에서, 블레이드(920)는 랙(910)에 의해 제공되는 것 이외의 섀시 또는 하우징 또는 다른 "박스"를 포함하지 않는다. 일 예에서 블레이드(920)는 랙(910)에 접속하는 노출된 접속기를 갖는 하우징을 포함한다. 일 예에서, 시스템(900)은 랙(910)을 포함하지 않으며, 각 블레이드(920)는, 다른 블레이드에 근접하게 적층하거나 배치할 수 있고 노드들(930)의 상호접속을 허용하는 섀시 또는 하우징을 포함한다.
시스템(900)은 노드(930)에 대한 하나 이상의 상호접속기를 나타내는 패브릭(970)을 포함한다. 일 예에서, 패브릭(970)은 노드들(930) 사이에서 신호를 라우팅하는 다수의 스위치(972) 또는 라우터 또는 다른 하드웨어를 포함한다. 또한, 패브릭(970)은 클라이언트(902)에 의한 액세스를 위해 시스템(900)을 네트워크(904)에 결합시킬 수 있다. 라우팅 장비에 추가하여, 패브릭(970)은 노드들(930)을 함께 결합시키는 케이블 또는 포트 또는 다른 하드웨어 장비를 포함하는 것으로 간주될 수 있다. 일 예에서, 패브릭(970)은 시스템(900)을 통한 신호의 라우팅을 관리하는 하나 이상의 관련 프로토콜을 갖는다. 일 예에서, 프로토콜 또는 프로토콜들은 시스템(900)에서 사용되는 하드웨어 장비에 적어도 부분적으로 의존한다.
도시된 바와 같이, 랙(910)은 N개의 블레이드(920)를 포함한다. 일 예에서, 시스템(900)은 랙(910)에 추가하여 랙(950)을 포함한다. 도시된 바와 같이, 랙(950)은 M개의 블레이드(960)를 포함한다. M은 N과 반드시 동일할 필요는 없고, 따라서, 다양한 상이한 하드웨어 장비 구성요소가 사용될 수 있고 패브릭(970)을 통해 시스템(900)에 함께 결합될 수 있음이 이해될 것이다. 블레이드(960)는 블레이드(920)와 동일하거나 유사할 수 있다. 노드들(930)은 임의의 유형의 노드일 수 있으며, 반드시 모두 동일한 유형의 노드일 필요는 없다. 시스템(900)은 균질한 것으로 제한되지 않으며, 균질하지 않은 것으로 제한되지도 않는다.
단순성을 위해, 블레이드(920[0])의 노드만이 상세히 도시된다. 그러나, 시스템(900)의 다른 노드는 동일하거나 유사할 수 있다. 적어도 일부 노드(930)는 프로세서(proc)(932) 및 메모리(940)를 갖는 계산 노드이다. 계산 노드는, 운영 체제를 실행하고 하나 이상의 작업을 수신 및 처리할 수 있는 처리 자원(예컨대, 하나 이상의 프로세서)을 갖는 노드를 지칭한다. 일 예에서, 적어도 일부 노드(930)는 프로세서(932) 및 메모리(940)에 의해 표현되는 처리 자원으로서 서버를 갖는 서버 노드이다. 저장 서버는 작업의 실행을 위한 프로세서를 갖는 대신 계산 노드보다 더 많은 저장 자원을 갖는 노드를 지칭하며, 저장 서버는 저장 서버 내의 저장 노드에 대한 액세스를 관리하는 처리 자원을 포함한다.
일 예에서, 노드(930)는 인터페이스 제어기(934)를 포함하는데, 이는 노드(930)에 의한 패브릭(970)에 대한 액세스를 제어하는 로직을 나타낸다. 로직은 물리적 상호접속 하드웨어에 상호접속하는 하드웨어 자원을 포함할 수 있다. 로직은 상호접속을 관리하는 소프트웨어 또는 펌웨어 로직을 포함할 수 있다. 일 예에서, 인터페이스 제어기(934)는 본 명세서 설명된 임의의 예에 따른 패브릭 인터페이스일 수 있는 호스트 패브릭 인터페이스이거나 이를 포함한다.
프로세서(932)는 하나 이상의 개별 프로세서를 포함할 수 있다. 각각의 개별 프로세서는 단일 처리 유닛, 멀티코어 처리 유닛, 또는 이들의 조합을 포함할 수 있다. 처리 유닛은 CPU(central processing unit)와 같은 기본 프로세서, GPU(graphics processing unit)와 같은 주변 프로세서, 또는 이들의 조합일 수 있다. 메모리(940)는 메모리 디바이스 및 메모리 제어기일 수 있거나 이를 포함할 수 있다.
일반적으로 본 명세서의 설명과 관련하여, 일 예에서, 메모리 장애를 예측하는 장치는, 기판과, 기판 상에 배치된 제어기를 포함하는데, 제어기는 메모리 디바이스의 하드웨어 구성을 하드웨어 구성의 특정 요소에 대한 메모리 결함을 나타내는 이력 데이터와 상관시키고, 하드웨어 구성과 이력 데이터의 상관관계에 기초하여 정정 불가능한 오류(UE)를 예측하고, UE의 예측에 기초하여 호스트 운영 체제(OS)가 오프라인화할 페이지의 추정을 생성한다.
장치의 일 예에서, 제어기는 메모리의 행에서 검출된 정정 가능한 오류(CE)의 패턴에 기초하여 UE를 예측한다. 장치의 임의의 선행하는 예에 따라, 일 예에서, 제어기는 메모리의 열에서의 정정 가능한 오류(CE)의 패턴에 기초하여 UE를 예측한다. 장치의 임의의 선행하는 예에 따라, 일 예에서, 제어기는 메모리의 비트에서의 정정 가능한 오류(CE)의 패턴에 기초하여 UE를 예측한다. 장치의 임의의 선행하는 예에 따라, 일 예에서, 제어기는, 물리적 페이지와 하드웨어 구성의 상관관계에 기초하여 UE를 경험할 메모리의 물리적 페이지를 예측하는 것을 포함하여, 호스트 OS가 오프라인화할 페이지의 추정을 생성한다. 장치의 임의의 선행하는 예에 따라, 일 예에서, 제어기는 하드웨어 구성에서 정정 가능한 오류(CE)의 패턴과 연관된 페이지를 식별한다. 장치의 임의의 선행하는 예에 따라, 일 예에서, 제어기는 메모리 디바이스에 적용될 오류 검사 및 정정(ECC) 패턴에 기초하여 호스트 OS가 오프라인화할 페이지의 추정을 생성한다. 장치의 임의의 선행하는 예에 따라, 일 예에서, 제어기는 정정 가능한 오류(CE)의 패턴이 ECC 패턴에 의해 완전히 정정 가능한지 여부를 판정한다. 장치의 임의의 선행하는 예에 따라, 일 예에서, 기판은 듀얼 인라인 메모리 모듈(dual inline memory module: DIMM)의 보드를 포함하는데, 제어기는 DIMM의 제어기를 포함한다. 장치의 임의의 선행하는 예에 따라, 일 예에서, 기판은 마더보드를 포함하는데, 제어기는 마더보드 상의 제어기를 포함한다. 장치의 임의의 선행하는 예에 따라, 일 예에서, 메모리 디바이스는 다수의 동적 랜덤 액세스 메모리(DRAM) 디바이스를 갖는 메모리 모듈을 포함한다.
본 명세서의 설명과 관련하여 일반적으로, 일 예에서, 시스템은, 중앙 처리 유닛(CPU), 및 다수의 메모리 디바이스를 갖는 DIMM(dual inline memory module)을 포함하는 호스트 하드웨어 플랫폼 ― CPU는 운영 체제(OS)를 실행함 ― 과, DIMM의 메모리 디바이스에 결합된 제어기를 포함하는데, 제어기는 메모리 디바이스의 하드웨어 구성을 하드웨어 구성의 특정 요소에 대한 메모리 결함을 나타내는 이력 데이터와 상관시키고, 이력 데이터와 하드웨어 구성의 상관관계에 기초하여 정정 불가능한 오류(UE)를 예측하고, UE의 예측에 기초하여 호스트 운영 체제(OS)가 오프라인화할 페이지의 추정을 생성한다.
시스템의 일 예에서, 제어기는 메모리의 행에서 검출된 CE의 패턴에 기초한 행 결함 예측기, 메모리의 열에서 검출된 CE의 패턴에 기초한 열 결함 예측기, 또는 스턱 비트 표시자 중 하나 이상을 생성한다. 시스템의 임의의 선행하는 예에 따라, 일 예에서, 제어기는 하드웨어 구성에서 정정 가능한 오류(CE)의 패턴과 연관된 페이지를 식별한다. 시스템의 임의의 선행하는 예에 따라, 일 예에서, 제어기는 DIMM의 메모리 디바이스에 적용될 오류 검사 및 정정(ECC) 패턴에 기초하여 호스트 OS가 오프라인화할 페이지의 추정을 생성한다. 시스템의 임의의 선행하는 예에 따라, 일 예에서, 시스템은 CPU에 통신 가능하게 결합된 디스플레이, 호스트 프로세서에 통신 가능하게 결합된 네트워크 인터페이스, 또는 시스템에 전력을 공급하는 배터리 중 하나 이상을 포함한다.
일반적으로 본 명세서의 설명과 관련하여, 일 예에서, 메모리 디바이스 장애를 예측하기 위한 방법은, 메모리 디바이스의 하드웨어 구성을 하드웨어 구성의 특정 요소에 대한 메모리 결함을 나타내는 이력 데이터와 상관시키는 단계와, 하드웨어 구성과 이력 데이터의 상관관계에 기초하여 정정 불가능한 오류(UE)를 예측하는 단계와, UE의 예측에 기초하여 호스트 운영 체제(OS)가 오프라인화할 페이지의 추정을 생성하는 단계를 포함한다.
방법의 일 예에서, UE를 예측하는 단계는, 메모리 디바이스에 대한 구조별 결함 표시자를 상관시키는 것을 포함하여, 메모리 디바이스의 하드웨어 구조를 검출된 정정 가능한 오류(CE)와 상관시키는 단계를 포함한다. 방법의 임의의 선행하는 예에 따라, 일 예에서, UE를 예측하는 단계는, 메모리의 행에서 검출된 CE의 패턴에 기초하여 행 결함 예측기를 생성하는 단계, 또는 메모리의 열에서 검출된 CE의 패턴에 기초하여 열 결함 예측기를 생성하는 단계, 또는 스턱 비트 표시자를 생성하는 단계를 포함한다. 방법의 임의의 선행하는 예에 따라, 일 예에서, 호스트 OS가 오프라인화할 페이지의 추정을 생성하는 단계는, 정정 가능한 오류(CE)의 패턴과 연관된 페이지를 식별하는 단계를 포함한다. 방법의 임의의 선행하는 예에 따라, 일 예에서, 호스트 OS가 오프라인화할 페이지의 추정을 생성하는 단계는, 오류를 메모리 디바이스에 적용될 오류 검사 및 정정(ECC) 패턴과 상관시키는 단계를 포함한다.
본원에 도시된 흐름도는 다양한 프로세스 동작의 시퀀스의 예를 제공한다. 흐름도는 물리적 동작뿐만 아니라 소프트웨어 또는 펌웨어 루틴에 의해 실행될 동작을 나타낼 수 있다. 흐름도는 하드웨어 및/또는 소프트웨어로 구현될 수 있는 유한 상태 머신(finite state machine: FSM)의 상태의 구현의 예를 도시할 수 있다. 특정 시퀀스 또는 순서로 도시되지만, 달리 지정하지 않는 한 동작의 순서는 수정될 수 있다. 따라서, 도시된 도면은 예시로서만 이해되어야 하며, 프로세스는 다른 순서로 수행될 수 있으며, 일부 동작은 동시에 수행될 수 있다. 또한, 하나 이상의 동작은 생략될 수 있고, 따라서, 모든 구현이 모든 동작을 수행하지는 않을 것이다.
다양한 동작 또는 기능이 본 명세서에 설명되는 범위 내에서, 이들은 소프트웨어 코드, 명령어, 구성 및/또는 데이터로 설명되거나 정의될 수 있다. 콘텐츠는 직접 실행 가능한 것("객체" 또는 "실행 가능한" 형태), 소스 코드, 또는 차이 코드("델타" 또는 "패치" 코드)일 수 있다. 본 명세서에 설명된 것의 소프트웨어 콘텐츠는 그 콘텐츠가 저장된 제품을 통해, 또는 통신 인터페이스를 통해 데이터를 전송하기 위해 통신 인터페이스를 동작시키는 방법을 통해 제공될 수 있다. 머신 판독가능 저장 매체는 머신으로 하여금 설명된 기능 또는 동작을 수행하게 할 수 있으며, 기록 가능한/기록 불가능한 매체(예컨대, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스 등)와 같은, 머신(예컨대, 컴퓨팅 디바이스, 전자 시스템 등)에 의해 액세스될 수 있는 형태로 정보를 저장하는 임의의 메커니즘을 포함한다. 통신 인터페이스는, 메모리 버스 인터페이스, 프로세서 버스 인터페이스, 인터넷 접속, 디스크 제어기 등과 같은, 다른 디바이스와 통신하기 위해 유선, 무선, 광학 등의 임의의 매체에 인터페이스하는 임의의 메커니즘을 포함한다. 통신 인터페이스는 소프트웨어 콘텐츠를 설명하는 데이터 신호를 제공하도록 통신 인터페이스를 준비하기 위해 구성 파라미터를 제공하고/하거나 신호를 전송함으로써 구성될 수 있다. 통신 인터페이스는 통신 인터페이스에 전송된 하나 이상의 커맨드 또는 신호를 통해 액세스될 수 있다.
본 명세서에 설명된 다양한 구성요소는 설명된 동작 또는 기능을 수행하기 위한 수단일 수 있다. 본 명세서에 설명된 각 구성요소는 소프트웨어, 하드웨어, 또는 이들의 조합을 포함한다. 구성요소는 소프트웨어 모듈, 하드웨어 모듈, 특수 목적 하드웨어(예컨대, 애플리케이션 특정 하드웨어, 애플리케이션 특정 집적 회로(ASIC), 디지털 신호 프로세서(DSP) 등), 임베디드 제어기, 유선 회로 등으로서 구현될 수 있다.
본 명세서에 설명된 것 외에도, 본 발명의 범위를 벗어나지 않으면서, 개시된 것 및 본 발명의 구현에 대해 다양한 수정이 이루어질 수 있다. 따라서, 본 명세서의 도시 및 예시는 제한적 의미가 아닌 예시적인 것으로 해석되어야 한다. 본 발명의 범위는 오로지 다음 청구범위를 참조하여 평가되어야 한다.

Claims (25)

  1. 메모리 장애를 예측하기 위한 장치로서,
    기판과,
    상기 기판 상에 배치된 제어기를 포함하되,
    상기 제어기는, 메모리 디바이스의 하드웨어 구성을 상기 하드웨어 구성의 특정 요소에 대한 메모리 결함을 나타내는 이력 데이터와 상관시키고, 상기 하드웨어 구성과 상기 이력 데이터의 상관관계에 기초하여 정정 불가능한 오류(uncorrectable error: UE)를 예측하고, 상기 UE의 예측에 기초하여 호스트 운영 체제(operating system: OS)가 오프라인화할(offline) 페이지의 추정을 생성하는,
    장치.
  2. 제1항에 있어서,
    상기 제어기는 메모리의 행에서 검출된 정정 가능한 오류(correctable errors: CE)의 패턴에 기초하여 상기 UE를 예측하는,
    장치.
  3. 제1항 또는 제2항에 있어서,
    상기 제어기는 메모리의 열에서의 정정 가능한 오류(CE)의 패턴에 기초하여 상기 UE를 예측하는,
    장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제어기는 메모리의 비트에서의 정정 가능한 오류(CE)의 패턴에 기초하여 상기 UE를 예측하는,
    장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제어기는 물리적 페이지와 상기 하드웨어 구성의 상관관계에 기초하여 상기 UE를 경험할 상기 메모리의 물리적 페이지를 예측하는 것을 포함하여, 상기 호스트 OS가 오프라인화할 페이지의 추정을 생성하는,
    장치.
  6. 제5항에 있어서,
    상기 제어기는 상기 하드웨어 구성에서 정정 가능한 오류(CE)의 패턴과 연관된 페이지를 식별하는,
    장치.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 제어기는 상기 메모리 디바이스에 적용될 오류 검사 및 정정(error checking and correction: ECC) 패턴에 기초하여 상기 호스트 OS가 오프라인화할 페이지의 추정을 생성하는,
    장치.
  8. 제7항에 있어서,
    상기 제어기는 정정 가능한 오류(CE)의 패턴이 상기 ECC 패턴에 의해 완전히 정정 가능한지 여부를 판정하는,
    장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 기판은 듀얼 인라인 메모리 모듈(dual inline memory module: DIMM)의 보드를 포함하고, 상기 제어기는 상기 DIMM의 제어기를 포함하는,
    장치.
  10. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 기판은 마더보드를 포함하고, 상기 제어기는 마더보드 상의 제어기를 포함하는,
    장치.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 메모리 디바이스는 다수의 DRAM(Dynamic Random Access Memory) 디바이스를 갖는 메모리 모듈을 포함하는,
    장치.
  12. 메모리 장애를 예측하기 위한 시스템으로서,
    CPU(central processing unit), 및 다수의 메모리 디바이스를 갖는 DIMM(Dual Inline Memory Module)을 포함하는 호스트 하드웨어 플랫폼 ― 상기 CPU는 운영 체제(OS)를 실행함 ― 과,
    상기 DIMM의 상기 메모리 디바이스에 결합된 제어기를 포함하되,
    상기 제어기는, 메모리 디바이스의 하드웨어 구성을 상기 하드웨어 구성의 특정 요소에 대한 메모리 결함을 나타내는 이력 데이터와 상관시키고, 상기 하드웨어 구성과 상기 이력 데이터의 상관관계에 기초하여 정정 불가능한 오류(UE)를 예측하고, 상기 UE의 예측에 기초하여 호스트 운영 체제(OS)가 오프라인화할 페이지의 추정을 생성하는,
    시스템.
  13. 제12항에 있어서,
    상기 제어기는 메모리의 행에서 검출된 CE의 패턴에 기초한 행 결함 예측기, 메모리의 열에서 검출된 CE의 패턴에 기초한 열 결함 예측기, 또는 스턱 비트 표시자 중 하나 이상을 생성하는,
    시스템.
  14. 제12항 또는 제13항에 있어서,
    상기 제어기는 상기 하드웨어 구성에서 정정 가능한 오류(CE)의 패턴과 연관된 페이지를 식별하는,
    시스템.
  15. 제12항 내지 제14항 중 어느 한 항에 있어서,
    상기 제어기는 상기 DIMM의 메모리 디바이스에 적용될 오류 검사 및 정정(ECC) 패턴에 기초하여 상기 호스트 OS가 오프라인화할 페이지의 추정을 생성하는,
    시스템.
  16. 제12항 내지 제14항 중 어느 한 항에 있어서,
    상기 CPU에 통신 가능하게 결합된 디스플레이,
    호스트 프로세서에 통신 가능하게 결합된 네트워크 인터페이스, 또는
    상기 시스템에 전력을 공급하는 배터리
    중 하나 이상을 더 포함하는,
    시스템.
  17. 메모리 장애를 예측하기 위한 방법으로서,
    메모리 디바이스의 하드웨어 구성을 상기 하드웨어 구성의 특정 요소에 대한 메모리 결함을 나타내는 이력 데이터와 상관시키는 단계와,
    상기 하드웨어 구성과 상기 이력 데이터의 상관관계에 기초하여 정정 불가능한 오류(UE)를 예측하는 단계와,
    상기 UE의 예측에 기초하여 호스트 운영 체제(OS)가 오프라인화할 페이지의 추정을 생성하는 단계를 포함하는,
    방법.
  18. 제17항에 있어서,
    상기 UE를 예측하는 단계는, 상기 메모리 디바이스에 대한 구조-특정적 결함 표시자를 상관시키는 것을 포함하여, 상기 메모리 디바이스의 하드웨어 구조를 검출된 정정 가능한 오류(CE)와 상관시키는 단계를 포함하는,
    방법.
  19. 제18항에 있어서,
    상기 UE를 예측하는 단계는 메모리의 행에서 검출된 CE의 패턴에 기초하여 행 결함 예측기를 생성하는 단계, 또는 메모리의 열에서 검출된 CE의 패턴에 기초하여 열 결함 예측기를 생성하는 단계, 또는 스턱 비트 표시자를 생성하는 단계를 포함하는.
    방법.
  20. 제17항 내지 제19항 중 어느 한 항에 있어서,
    상기 호스트 OS가 오프라인화할 페이지의 추정을 생성하는 단계는 정정 가능한 오류(CE)의 패턴과 연관된 페이지를 식별하는 단계를 포함하는,
    방법.
  21. 제17항 내지 제20항 중 어느 한 항에 있어서,
    상기 호스트 OS가 오프라인화할 페이지의 추정을 생성하는 단계는 상기 메모리 디바이스에 적용될 오류 검사 및 정정(ECC) 패턴과 오류를 상관시키는 단계를 포함하는,
    방법.
  22. 콘텐츠가 저장된 컴퓨터 판독가능 저장 매체로서,
    상기 콘텐츠는 실행될 때 머신으로 하여금 메모리 장애를 예측하기 위한 동작을 수행하게 하고, 상기 동작은,
    메모리 디바이스의 하드웨어 구성을 상기 하드웨어 구성의 특정 요소에 대한 메모리 결함을 나타내는 이력 데이터와 상관시키는 것과,
    상기 하드웨어 구성과 상기 이력 데이터의 상관관계에 기초하여 정정 불가능한 오류(UE)를 예측하는 것과,
    상기 UE의 예측에 기초하여 호스트 운영 체제(OS)가 오프라인화할 페이지의 추정을 생성하는 것을 포함하는,
    컴퓨터 판독가능 저장 매체.
  23. 제22항에 있어서,
    상기 UE를 예측하는 것은, 상기 메모리 디바이스에 대한 구조-특정적 결함 표시자를 상관시키는 것을 포함하여, 상기 메모리 디바이스의 하드웨어 구조를 검출된 정정 가능한 오류(CE)와 상관시키는 것을 포함하는,
    컴퓨터 판독가능 저장 매체.
  24. 제22항 또는 제23항에 있어서,
    상기 호스트 OS가 오프라인화할 페이지의 추정을 생성하는 것은 정정 가능한 오류(CE)의 패턴과 연관된 페이지를 식별하는 것을 포함하는,
    컴퓨터 판독가능 저장 매체.
  25. 제22항 내지 제24항 중 어느 한 항에 있어서,
    상기 호스트 OS가 오프라인화할 페이지의 추정을 생성하는 것은 상기 메모리 디바이스에 적용될 오류 검사 및 정정(ECC) 패턴과 오류를 상관시키는 단것을 포함하는,
    컴퓨터 판독가능 저장 매체.
KR1020220103893A 2021-09-22 2022-08-19 임박한 메모리 오류의 결함 인식 예측에 기초한 페이지 오프라인화 KR20230042628A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN2021119543 2021-09-22
CNPCT/CN2021/119543 2021-09-22
US17/512,432 US20220050603A1 (en) 2021-09-22 2021-10-27 Page offlining based on fault-aware prediction of imminent memory error
US17/512,432 2021-10-27

Publications (1)

Publication Number Publication Date
KR20230042628A true KR20230042628A (ko) 2023-03-29

Family

ID=82846224

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220103893A KR20230042628A (ko) 2021-09-22 2022-08-19 임박한 메모리 오류의 결함 인식 예측에 기초한 페이지 오프라인화

Country Status (3)

Country Link
EP (1) EP4156192A1 (ko)
KR (1) KR20230042628A (ko)
CN (1) CN115910177A (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468422B2 (en) * 2007-12-21 2013-06-18 Oracle America, Inc. Prediction and prevention of uncorrectable memory errors
US20210279122A1 (en) * 2021-05-11 2021-09-09 Intel Corporation Lifetime telemetry on memory error statistics to improve memory failure analysis and prevention

Also Published As

Publication number Publication date
CN115910177A (zh) 2023-04-04
EP4156192A1 (en) 2023-03-29

Similar Documents

Publication Publication Date Title
US10824499B2 (en) Memory system architectures using a separate system control path or channel for processing error information
US10002043B2 (en) Memory devices and modules
US20230083193A1 (en) Uncorrectable memory error prediction
NL2029034B1 (en) Adaptive internal memory error scrubbing and error handling
US20220050603A1 (en) Page offlining based on fault-aware prediction of imminent memory error
US9785570B2 (en) Memory devices and modules
US20160055058A1 (en) Memory system architecture
US11664083B2 (en) Memory, memory system having the same and operating method thereof
US20220121398A1 (en) Perfect row hammer tracking with multiple count increments
KR20210119276A (ko) 시스템 내의 메모리 모듈의 초기화 및 전력 고장 분리
US20220293162A1 (en) Randomization of directed refresh management (drfm) pseudo target row refresh (ptrr) commands
US11282584B2 (en) Multi-chip package and method of testing the same
US20240013851A1 (en) Data line (dq) sparing with adaptive error correction coding (ecc) mode switching
US10521113B2 (en) Memory system architecture
EP4141662A1 (en) Deferred ecc (error checking and correction) memory initialization by memory scrub hardware
EP4156192A1 (en) Page offlining based on fault-aware prediction of imminent memory error
WO2023108319A1 (en) In-system mitigation of uncorrectable errors based on confidence factors, based on fault-aware analysis
US20210279122A1 (en) Lifetime telemetry on memory error statistics to improve memory failure analysis and prevention
US20220350715A1 (en) Runtime sparing for uncorrectable errors based on fault-aware analysis
CN114840451A (zh) 存储装置、存储系统和操作存储装置的方法
CN115762621A (zh) 不可校正的存储器错误预测
US20230205626A1 (en) Multilevel memory failure bypass
US20220011939A1 (en) Technologies for memory mirroring across an interconnect
US20220190844A1 (en) Method and apparatus to perform cyclic redundancy check training in a memory module
US20220326860A1 (en) Method and apparatus to perform bank sparing for adaptive double device data correction