KR20160034913A - 미―준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어 - Google Patents

미―준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어 Download PDF

Info

Publication number
KR20160034913A
KR20160034913A KR1020167001969A KR20167001969A KR20160034913A KR 20160034913 A KR20160034913 A KR 20160034913A KR 1020167001969 A KR1020167001969 A KR 1020167001969A KR 20167001969 A KR20167001969 A KR 20167001969A KR 20160034913 A KR20160034913 A KR 20160034913A
Authority
KR
South Korea
Prior art keywords
memory
command
module
compliant
memory controller
Prior art date
Application number
KR1020167001969A
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
Application filed by 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 filed Critical 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피
Publication of KR20160034913A publication Critical patent/KR20160034913A/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/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/022Detection or location of defective auxiliary circuits, e.g. defective refresh counters in I/O circuitry
    • 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/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50012Marginal testing, e.g. race, voltage or current testing of timing
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1063Control signal output circuits, e.g. status or busy flags, feedback command signals
    • 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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

예시적인 실시예는 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어에 관한 것이다. 메모리 모듈은 데이터 전송 표준을 준수하는 메모리 버스에 대한 인터페이스 ― 메모리 버스는 메모리 제어기와 통신함 ― , 및 데이터 전송 표준을 준수하지 않는 미-준수 메모리 기술에 대한 인터페이스를 포함할 수 있다. 메모리 모듈은, 커맨드가 데이터 전송 표준에 따라 완료되어야 하는 정의된 일정량의 시간 내에, 메모리 제어기로부터의 커맨드가 미-준수 메모리 회로에 의해 완료되는지 또는 완료될 것인지를 결정하기 위한 커맨드 모니터링 회로를 포함할 수 있다. 메모리 모듈은, 커맨드 정의된 일정량의 시간 내에 완료되지 않았거나 완료되지 않을 때, 메모리 제어기 또는 운영 시스템으로 시그널링하는 에러 발생 회로를 포함할 수 있다.

Description

미―준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어{RESPONSE CONTROL FOR MEMORY MODULES THAT INCLUDE OR INTERFACE WITH NON-COMPLIANT MEMORY TECHNOLOGIES}
동적 랜덤-액세스 메모리(DRAM)는, 비트의 값을 유지하기 위해 전력을 필요로 하는 커패시터에 데이터의 비트를 저장하는 휘발성 타입의 메모리이다. 값을 유지하기 위해 전력이 요구되기 때문에, DRAM은 정적 메모리와 대조적으로 휘발성 또는 동적 메모리로 지칭된다. 다양한 현대의 컴퓨팅 시스템은 시스템 메모리를 구현하기 위해 DRAM DIMM을 활용한다. DIMM(dual in-line memory module)은 다수의 DRAM 메모리 회로를 포함하는 컴퓨터 메모리 구성요소 또는 모듈이다. DIMM은 인쇄 회로 보드일 수 있고, 그 위에 장착된 DRAM 메모리 회로를 포함할 수 있다. DIMM은 메모리 버스와 인터페이스하기 위해 컴퓨팅 시스템의 마더보드에 플러깅 또는 그와 접속할 수 있고, 이에 따라 메모리 제어기와 인터페이스할 수 있다.
다음의 상세한 설명은 도면을 참조한다.
도 1은 미-준수 메모리 기술을 포함하거나 그와 인터페이스하는 메모리 모듈에 대한 응답 제어를 구현하는 예시적인 컴퓨팅 시스템의 블록도이다.
도 2는 미-준수 메모리 기술을 포함하거나 그와 인터페이스하는 메모리 모듈에 대한 응답 제어를 구현하는데 사용되는 예시적인 응답기 모듈의 블록도이다.
도 3은 미-준수 메모리 기술을 포함하거나 그와 인터페이스하는 메모리 모듈에 대한 응답 제어를 구현하는 예시적인 컴퓨팅 시스템의 블록도이다.
도 4는 미-준수 메모리 기술을 포함하거나 그와 인터페이스하는 메모리 모듈에 대한 응답 제어를 위한 예시적인 방법의 흐름도를 도시한다.
도 5는 미-준수 메모리 기술을 포함하거나 그와 인터페이스하는 메모리 모듈에 대한 응답 제어를 위한 예시적인 방법의 흐름도를 도시한다.
도 6은 미-준수 메모리 기술을 포함하거나 그와 인터페이스하는 메모리 모듈에 대한 응답 제어를 위한 예시적인 컴퓨팅 시스템의 블록도이다.
도 7은 미-준수 메모리 기술을 포함하거나 그와 인터페이스하는 메모리 모듈에 대한 응답 제어를 위한 예시적인 방법의 흐름도이다.
다양한 DIMM은 DDR(double data rate) 데이터 전송 표준을 준수할 수 있다. 그러한 시나리오에서, 메모리 제어기 및 메모리 버스가 DDR-준수 DIMM과 통신하기 위해, 메모리 제어기 및 메모리 버스는 물론 DDR을 준수하도록 요구될 수 있다. 따라서, 다양한 컴퓨팅 시스템에서, 메모리 제어기 및 메모리 버스는 DDR 데이터 레이트 전송 표준에 따라 동작하도록 설계된다(즉, 그들은 DDR을 준수한다). DDR 준수 메모리 제어기를 포함하는 컴퓨팅 시스템에서, 컴퓨팅 시스템의 다양한 다른 구성요소(예를 들면, 중앙 프로세서, 마더보드 등)는 DDR 준수 메모리 제어기와 인터페이스하도록 설계될 수 있다. 또한, DDR 준수 메모리 제어기가 DDR 준수 메모리 버스 및 DDR 준수 DIMM과 인터페이스하도록 설계되기 때문에, 그들은 특정 메모리 통신 특성을 예상하도록 설계될 수 있다. 예를 들면, 메모리 제어기가 판독 커맨드(간단히 "판독"으로 지칭됨)를 DIMM으로 발행할 때, 메모리 제어기는 DIMM이 미리 정의된(예를 들면, 짧은) 시간 기간 내에 요청된 판독 데이터를 제공할 것으로 예상할 수 있다. 다시 말해서, DDR 규격은, DIMM이 일관된 판독 레이턴시를 가질 것을 요구할 수 있고, 예를 들면, DIMM이 예상 가능한, 정의된 그리고 상대적으로 빠른 시간 기간 후에 요청된 판독 데이터를 제공할 것을 요구할 수 있다. DDR 표준은 결정론적 프로토콜로 불릴 수 있는데, 이것은, 커맨드가 메모리 제어기로부터 메모리 버스로 전송될 때, 커맨드가 특정 수의 사이클에서 완료될 것이라고 예상된다는 것을 의미한다. DDR DRAM 메모리 회로는 그러한 예상 가능한, 정의된 그리고 상대적으로 빠른 시간 기간 내에 그들에게 발행된 판독을 완료할 수 있지만, 다른 타입의 메모리 회로/기술이 그렇지 않을 수 있다.
일부 시나리오에서, (예를 들면, DIMM 또는 유사한 메모리 모듈을 통해) DDR 준수 메모리 버스 및 메모리 제어기와 인터페이스하는 비-휘발성 메모리 기술(예를 들면, FLASH, PC-RAM, STT-MRAM, ReRAM 등)을 구현하는 것이 바람직할 수 있다. 다양한 비휘발성 메모리 기술은, 그들에게 발행된 판독이 예측 가능한, 정의된 및/또는 상대적으로 빠른 시간 기간 내에 완료될 것이라는 것(예를 들면, 판독 데이터가 준비되도록 요청됨)을 보장하는 것이 불가능할 수 있다. 예를 들면, 비휘발성 메모리 기술은, 일관된 레이턴시 후에 판독 데이터를 반환하는 대신에, 판독 데이터가 준비가 될 때를 (예를 들면, 와이어, 라인 또는 신호를 통해) 나타낼 수 있다. 이들 다양한 비휘발성 메모리 기술은 DDR-준수 메모리 제어기에 의해 예상된 바와 같이 거동하지 않을 수 있기 때문에, 그러한 메모리 제어기는 그러한 메모리 기술과 통신하지 않을 수 있다.
비휘발성 메모리 기술을 처리하는 그러한 접근법은, DIMM(예를 들면, DIMM에 대한 또는 DIMM에 접속된 비휘발성 메모리 기술)이 메모리 제어기로 전송될 준비가 된 판독 데이터를 가질 때 시그널링할 수 있도록 하는 여분의 와이어 또는 라인을 부가하는 것을 포함할 수 있다. 그러나, 그러한 접근법은 컴퓨팅 시스템의 몇몇의 구성요소에 대한 수정을 요구할 수 있다. 예를 들면, 마더보드, 메모리 버스 및 메모리 제어기는 그러한 신호에 대한 여분의 라인/와이어를 연결하도록 수정될 필요가 있을 수 있다. 또한, 메모리 제어기는 여분의 라인/와이어 및 신호를 처리/지원하는 방법을 이해하도록 수정될 필요가 있을 수 있다. 다시 말해서, 미준수(예를 들면, 비-DDR 준수) 마더보드, 메모리 버스 및 메모리 제어기는 적어도 그러한 접근법에 대해 요구될 수 있다.
비휘발성 메모리 기술을 처리하는 다른 접근법은, 메모리 제어기가 자신이 커맨드들을 발행하는 메모리 기술의 레이턴시를 인지하는 것을 요구할 수 있다. 그러한 접근법에서, 메모리 제어기는 메모리 기술의 최장 레이턴시를 결정하기 위해 메모리 기술에 대한 테스트 커맨드를 발행할 수 있다. 그후, 메모리 제어기는 자신이 통신하는 다양한 메모리 기술의 레이턴시를 저장할 수 있고, 커맨드들을 발행할 때 진행하는 그러한 레이턴시를 사용할 수 있다. 비휘발성 메모리 기술을 처리하는 또 다른 접근법은 컴퓨팅 시스템 내의 어딘가에서 이들 기술을 (예를 들면, DIMM과 같은 메모리 모듈 상에서 또는 이를 통하지 않고) 접속하는 것을 포함할 수 있다. 그러한 시나리오에서, 메모리 제어기(및 아마도 프로세서)가 이들 비휘발성 메모리 기술로부터 데이터를 판독하기 위해, 메모리 제어기 및/또는 프로세서가 데이터를 액세스할 수 있기 전에, 데이터는 먼저 명시적으로 DIMM(예를 들면, DIMM 상의 DRAM 메모리 회로)으로 이동되도록 요구될 수 있다. 그러한 예비적인 명시적인 데이터 전송은 다른 잠재적인 문제 중에서도 시간 소비형일 수 있다.
본 개시는 미-준수 메모리 회로/기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어를 기술한다. 본 개시는, 미-준수(예를 들면, 비휘발성) 메모리 회로/기술이 준수(예를 들면, DDR 준수) 메모리 버스 및 준수(예를 들면, DDR 준수) 메모리 제어기와 인터페이스하도록 허용하는 (DIMM과 같은 메모리 모듈 상의) 응답 제어 모듈을 설명한다. 이것은 미-준수 메모리 회로/기술이 메모리 제어기와 더 직접적으로 통신하는 것의 이점(예를 들면, 성능 이점)을 이용하도록 허용할 수 있다. 본 개시는 메모리 제어기(예를 들면, 수정되지만 여전히 준수 메모리 제어기) 및 적어도 하나의 미-준수 메모리 회로/기술 사이의 응답 제어 모듈을 설명한다. 응답 제어 모듈은 적어도 하나의 미-준수 메모리 기술로 지향된 메모리 제어기에 의해 수신된 커맨드(예를 들면, 판독 및 기록)를 분석할 수 있고, 그러한 커맨드가 특정 데이터 전송 프로토콜(예를 들면, DDR)에 따라 완료될 것으로 예상되는 때를 알 수 있다. 커맨드가 예상된 메모리 기술에 의해 (예를 들면, 판독의 경우에서) 완료되지 않거나 (예를 들면, 기록의 경우에) 완료되지 않을 것이면, 응답 제어 모듈은 에러를 메모리 제어기(또는 운영 시스템)로 시그널링할 수 있고, 메모리 제어기(또는 운영 시스템)는 메모리 제어기가 준수 방식으로(예를 들면, DDR 프로토콜에 따라) 메모리 모듈과 여전히 통신하도록 에러를 처리할 수 있다. 예를 들면, 판독 커맨드의 경우에, 응답 제어 모듈은 DDR 프로토콜에 따라 예상될 수 있는 바와 같이 반환 데이터가 이용 불가한 때 (예를 들면, 메모리 제어기 또는 운영 시스템으로) 시그널링할 수 있다. 이러한 신호에 기초하여, 메모리 제어기, 운영 시스템 또는 컴퓨팅 시스템의 일부 다른 모듈은 나중 시간에 판독 커맨드를 재시도할 수 있다. 응답 제어 모듈은, 커맨드가 예상된 바와 같이 완료되지 않을 수 있는 때 시그널링하기 위해 준수 인터페이스의 패리티 비트 또는 ECC(error correcting code) 비트를 사용할 수 있다. 그러한 시그널링 메커니즘은 준수 메모리 제어기가 변경되고 미지의 레이턴시의 메모리 회로/기술과 인터페이스하도록 허용할 수 있다.
본 개시는, DIMM(예를 들면, 제한된 공간을 갖는 버퍼 메커니즘)이 다른 기록을 수용할 준비가 되지 않은 때 DIMM이 시그널링할 수 있도록 여분의 와이어 또는 라인을 부가하는 것을 포함하는 일부 접근법에 비해 이점을 또한 제안할 수 있다. 본 개시는 에러 또는 재시도 신호가 준수(예를 들면, DDR 준수) 인터페이스 및 와이어링 경로를 통해 전송될 수 있는 해결책을 설명한다. 예를 들면, 응답 제어 모듈은, 커맨드가 예상된 바와 같이 완료되지 않을 수 있는 때 시그널링하기 위해 준수 인터페이스의 패리티 비트 또는 ECC(error correcting code) 비트를 사용할 수 있다. 그러한 패리티 또는 ECC 비트는 메모리 모듈(예를 들면, DIMM) 및 메모리 버스 및 메모리 제어기 사이의 인터페이스에서 이미 존재할 수 있다. 본 개시는 고성능, 저가, 비휘발성 메모리가 메모리 제어기와 인터페이스하도록 허용할 수 있고, 이것은 그러한 메모리가 컴퓨팅 시스템 내의 종래의 메모리(예를 들면, DDR DRAM 메모리)와 함께 동작하도록 허용할 수 있다.
본 개시 전반에서, 용어 "준수"(예를 들면, 준수 메모리 기술 또는 준수 메모리 제어기에서와 같이)는 특정 데이터 전송 표준(예를 들면, DDR 또는 다른 데이터 전송 표준)을 준수하도록 설계된 컴퓨터 구성요소를 지칭할 수 있다. 마찬가지로, 용어 "미-준수"는 특정 데이터 전송 표준을 준수(또는 이와 호환 불가)하도록 설계되지 않은 컴퓨터 구성요소를 지칭할 수 있다. 용어 "데이터 전송 표준"은 데이터가 다수의 통신 와이어 또는 라인(예를 들면, 정보가 전송 및/또는 수신되는 금속 와이어)을 통해 전송되는 프로토콜을 지칭할 수 있다. 데이터 전송 표준은 데이터 사이클의 수, 다양한 커맨드(예를 들면, 판독, 기록 등)의 타이밍, 및 하나의 컴퓨터 구성요소가 다른 컴퓨터 구성요소로부터 데이터를 수신 및/또는 전송하기 위해 요구될 수 있는 다양한 다른 세부사항을 지정할 수 있다. 하나의 특정 예로서, 데이터 전송 표준이 DDR이면, 컴퓨터 구성요소는 DDR 데이터 전송 표준에 관련하여 준수(예를 들면, DDR 준수) 컴퓨터 구성요소 또는 미-준수 컴퓨터 구성요소(예를 들면, 비-DDR 준수)일 수 있다. DDR의 경우에, 일부 비휘발성 메모리 회로 또는 기술은 미-준수 컴퓨터 구성요소의 예인데, 예를 들면, 왜냐하면 그들이 휘발성 DDR 메모리 회로와 같이 동작하지 않기 때문이다. 따라서, 아래의 다양한 설명에서, 비휘발성 메모리 회로 또는 기술에 대해 참조가 이루어질 때, 이것이 미-준수 컴퓨터 구성요소라고 추론될 수 있다. 비휘발성 메모리 기술(예를 들면, 비-DDR 준수)의 예는 PCRAM, SATA, STT-RAM, reRAM, 멤리스터(memristor), FLASH 및 PCle 상의 스피닝 디스크를 포함할 수 있다. 본 개시는 물론 다양한 다른 타입의 비휘발성 메모리 기술에 적용될 수 있다. 본 개시 전반에서, 용어 "커맨드"(예를 들면, 기록 커맨드 또는 판독 커맨드에서와 같이)는 다중-비트 디지털 값을 지칭할 수 있고, 여기서 각각의 비트는 전용 통신 와이어 또는 라인을 통해 전송될 수 있다. 커맨드는 다수의 "필드"를 가질 수 있고, 각각의 필드는 다중-비트 디지털 값이다. 예시적인 필드는 "어드레스(addr)", "커맨드(cmd)", "데이터", "패리티" 및 "ECC"일 수 있다. 커맨드 필드(즉, cmd)는 더 넓은 커맨드(예를 들면, 기록 또는 판독 커맨드)와 혼동되지 않아야 한다. cmd 필드는 더 넓은 커맨드에 의해 어떠한 타입의 커맨드가 의도되는지를 표시할 수 있고, 더 넓은 커맨드는 커맨드를 실행하는데 요구되는 부가적인 정보(예를 들면, addr 및 데이터)를 포함할 수 있다.
도 1은 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어를 구현하는 예시적인 컴퓨팅 시스템(100)의 블록도이다. 컴퓨팅 시스템(100)은, 예를 들면, 메모리 버스(예를 들면, 104)를 통해 메모리 모듈(예를 들면, 106)을 액세스하는 메모리 제어기(예를 들면, 102)를 포함하는 임의의 컴퓨팅 시스템 또는 컴퓨팅 디바이스일 수 있다. 도 1의 예에서, 언급되는 데이터 전송 표준은 DDR이지만, 본원에 설명된 기술 및 해결책이 임의의 다른 데이터 전송 표준에서 사용될 수 있다는 것이 이해되어야 한다. 컴퓨팅 시스템(100)은 메모리 제어기(102), 메모리 버스(104), 메모리 모듈(106) 및 프로세서(108)를 포함할 수 있다. 아래에 더 상세히 설명되는 바와 같이, 메모리 모듈(106)은, 단지 준수 메모리 회로/기술(예를 들면, DDR 메모리 회로/기술)을 포함하는 메모리 모듈(예를 들면, DIMM)과 비교할 때 수정될 수 있다. 컴퓨팅 시스템(100)은, (도 1 및 도 3에 도시되지 않지만) 단지 준수 메모리 회로/기술을 포함하는 다수의 메모리 모듈을 또한 포함할 수 있고, 그러한 메모리 모듈은 메모리 버스(104)와 통신할 수 있다.
메모리 제어기(102)는 메모리 커맨드(예를 들면, 판독 커맨드, 기록 커맨드 등)를 메모리 버스(104)로 전송할 수 있고, 메모리 버스(104)는 결국 메모리 커맨드가 메모리 모듈(106)에 도달하게 할 수 있다. 일부 시나리오에서, 반환 데이터는 메모리 모듈(106)로부터 메모리 버스(104)로 전송될 수 있고, 결국 메모리 제어기(102)에 다시 도달할 수 있다. 메모리 버스(104)와 인터페이스하기 위해, 메모리 제어기(102)는, 예를 들면, 도 1에 도시된 바와 같이, 다수의 어드레스(즉, addr) 와이어/라인, 다수의 커맨드(즉, cmd) 와이어/라인 및 다수의 데이터 와이어/라인을 사용하여 데이터 버스(104)에 접속할 수 있다. 메모리 제어기(102), 메모리 버스(104) 및 메모리 모듈(106) 사이의 인터페이스는 또한 도 1에서 "패리티/ECC"로 도시된 다수의 패리티 또는 ECC 와이어/라인을 포함할 수 있다. 메모리 제어기(102)는 메모리 커맨드를 메모리 모듈(106)로 전송하고, 컴퓨팅 시스템(100)의 일부 다른 구성요소, 예를 들면, 프로세서(108)를 대신하여 메모리 모듈(106)로부터 데이터를 수신할 수 있다. 도 1이 메모리 제어기(102)와 인터페이스하는 프로세서(108)를 도시하지만, 그것은 적어도 하나의 구성요소가 프로세서(108) 및 메모리 제어기(102) 사이에 위치되는 경우일 수 있다는 것이 이해되어야 한다. 그것은 또한, (예를 들면, 프로세서 이외의) 일부 다른 구성요소가 메모리 모듈(106)과 통신하기 위해 메모리 제어기(102)와 인터페이스하는 경우일 수 있다.
메모리 제어기(102)는 준수(예를 들면, DDR 준수) 메모리 제어기일 수 있고, 이것은 메모리 제어기(102)가 특정 데이터 전송 표준(예를 들면, DDR)에 따라 동작할 수 있다는 것을 의미한다. 따라서, 메모리 제어기(102)는 데이터 전송 표준에 지정된 바와 같이 메모리 버스(104)로 데이터를 전송하고 메모리 버스(104)로부터 데이터를 수신할 수 있고, 데이터 전송 표준은 판독 커맨드가 메모리 모듈(106)에 의해 완료될 수 있는 일정량의 시간(예를 들면, 예상 가능한, 정의된 그리고 상대적으로 빠른 시간 기간)과 같은 세부사항을 지정할 수 있다. 메모리 버스(104)는 또한 준수(예를 들면, DDR 준수)일 수 있고, 이것은 메모리 버스(104)가 데이터 전송 표준에 의해 지정된 바와 같이 커맨드를 수신 및 전송할 수 있다는 것을 의미한다. DDR 데이터 전송 표준의 특정 경우에, 메모리 제어기(102)는 예상 가능한 레이트로 판독 커맨드를 메모리 버스(104)로 전송할 수 있고, 메모리 버스(104)는 예상 가능한 레이트로 판독 커맨드를 메모리 모듈(106)로 지속적으로 전송할 수 있다. 메모리 제어기(102)는 예상 가능한 정의된 일정량의 시간 후에 이들 판독 커맨드에 응답하여 반환 데이터를 수신할 것으로 예상할 수 있다. 그러한 반환 데이터가 예상된 바와 같이 반환 불가하면, 메모리 제어기(102)는 판독 커맨드를 재시도해야 할 수 있는데, 예를 들면, 왜냐하면 DDR 표준이 판독 반환 데이터를 더 오래 대기하는 것을 지원할 수 없기 때문이다.
메모리 모듈(106)은 메모리 회로 및/또는 메모리 기술(예를 들면, DRAM회로)을 포함하거나 이와 인터페이스하는 임의의 타입의 메모리 모듈(예를 들면, DIMM)일 수 있다. 메모리 모듈(106)은, 예를 들면, 컴퓨팅 시스템(100)의 마더보드에 플러깅하거나 이에 접속하는 인쇄 회로 보드일 수 있다. 메모리 모듈(106)은 메모리 버스(104)로부터 커맨드(예를 들면, 판독 커맨드)를 수신할 수 있다. 메모리 버스(104)와 인터페이스하기 위해, 메모리 모듈(106)은, 예를 들면, 도 1에 도시된 바와 같이, 다수의 어드레스(즉, addr) 와이어/라인, 다수의 커맨드(즉, cmd) 와이어/라인, 다수의 데이터 와이어/라인 및 다수의 패리티 또는 ECC 와이어/라인을 사용하여 메모리 버스(104)에 접속할 수 있다. 메모리 모듈(106)은 준수 방식으로(예를 들면, 데이터 전송 표준에 지정된 레이트로) 메모리 버스(104)로부터 커맨드를 수신할 수 있다. 메모리 모듈(106)은 데이터 전송 표준에 의해 정의된 시간 기간에서 그러한 수신된 커맨드를 완료할 수 있거나, 메모리 모듈은 커맨드에 대해 작업하기 시작할 수 있고, 그 동안에, 커맨드가 제시간에 완료되기 불가능하다는 것을 메모리 제어기(또는 운영 시스템)로 시그널링할 수 있고, 이것은 커맨드의 재시도를 트리거링할 수 있다. 일부 예에서, 응답 제어 모듈(120)이 메모리 모듈(106)과 별개의 컴퓨터 구성요소(예를 들면, 아래에 더 상세히 설명됨)인 경우에, 응답 제어 모듈(120)은 메모리 버스(104)와 인터페이스하는 addr, cmd, 데이터, 패리티/ECC 와이어/라인을 가질 수 있고, 메모리 모듈(106)은 응답 제어 모듈(120)과 인터페이스하기 위한 접속을 가질 수 있다.
메모리 모듈(106)은 적어도 하나의 준수 메모리 회로 또는 기술(예를 들면, DDR 메모리 회로/기술(112))을 포함할 수 있거나 이와 인터페이스할 수 있다. 메모리 모듈(106)은 적어도 하나의 미-준수 메모리 회로 또는 기술(예를 들면, 비-DDR 메모리 회로/기술(114))을 포함할 수 있거나 이와 인터페이스할 수 있다. 일부 예에서, 메모리 모듈(106)은 적어도 하나의 준수 메모리 회로/기술(예를 들면, 112) 및 적어도 하나의 미-준수 메모리 회로/기술(예를 들면, 114) 양자를 포함할 수 있거나 이와 인터페이스할 수 있다. 그러한 예에서, 메모리 모듈(106)은 단지 적어도 하나의 미-준수 메모리 회로/기술(예를 들면, 114)을 포함하거나 이와 통신할 수 있다. 그러한 예에서, 메모리 모듈(106)은 준수 메모리 회로/기술(예를 들면, 112)을 포함하거나 이와 인터페이스하지 않을 수 있고, 관련 구성요소 및/또는 모듈(예를 들면, 모듈(130))이 배제될 수 있다.
메모리 모듈(106)은 응답 제어 모듈(120)을 포함할 수 있다. 응답 제어 모듈(120)은, 일부 상황에서, 응답 제어 회로로 지칭될 수 있다. 도 1에서 볼 수 있듯이, 응답 제어 모듈(120)은 준수 메모리 제어기(102) 및 미-준수 메모리 회로/기술(예를 들면, 114) 사이에 위치된다. 응답 제어 모듈(120)은 미-준수(예를 들면, 비휘발성) 메모리 기술이 준수(예를 들면, DDR 준수) 메모리 버스(예를 들면, 104) 및 준수 메모리 제어기(예를 들면, 102)와 인터페이스하도록 허용할 수 있다. 응답 제어 모듈(120)은 전자 회로(즉, 회로)로서 구현될 수 있다. 일부 예에서, 모듈(120)은 단지 하드웨어(예를 들면, 정적 회로)로서 구현될 수 있다. 다른 예에서, 모듈(120)은, 프로그래밍 또는 구성될 수 있는 회로(예를 들면, 펌웨어) 또는 명령어를 판독 및 실행할 수 있는 회로(예를 들면, 머신-판독 가능 저장 매체 상의 명령어 및/또는 소프트웨어를 실행하기 위한 마이크로프로세서를 갖는 회로)로서 구현될 수 있다. 하나의 특정 예에서, 응답 제어 모듈(120)은 주문형 집적 회로(ASIC)일 수 있고, 메모리 모듈(106)에 부착되거나 메모리 모듈(106) 상에 장착될 수 있다. 다른 예에서, 모듈(120)은 메모리 모듈(106)과 별개의 컴퓨터 구성요소일 수 있다. 예를 들면, 모듈(120)은 메모리 버스(104)와 인터페이스하기 위해 컴퓨팅 디바이스(100)의 마더보드에 플러깅 또는 이에 접속될 수 있고, 그후 메모리 모듈(106)은 모듈(120)에 플러깅 또는 이에 접속될 수 있다.
응답 제어 모듈(120)은 다수의 모듈, 예를 들면, 모듈(122, 124, 126, 130 및 132)을 포함할 수 있다. 이들 모듈 각각은, 앞서 언급된 바와 같이, 전자 회로(예를 들면, 하드웨어 및/또는 펌웨어)일 수 있고 및/또는 이들 모듈 각각은 응답 제어 모듈(120)의 마이크로프로세서에 의해 실행 가능한 머신-판독 가능 저장 매체 상의 명령어일 수 있다. 본원에 설명 및 도시된 모듈에 관련하여, 하나 모듈 내에 포함된 전자 회로 및 실행 가능 명령어의 부분 또는 전부가, 대안적인 실시예에서, 도면에 도시된 상이한 모듈 또는 도시되지 않은 상이한 모듈에 포함될 수 있다는 것이 이해되어야 한다. 도시된 모듈 각각은 다양한 예에서 존재할 수 있거나 존재하지 않을 수 있고, 일부 예에서, 부가적인 모듈이 존재할 수 있다.
준수 버스 인터페이스 모듈(122)은 특정 데이터 전송 표준(예를 들면, DDR)에 따라 (예를 들면, 메모리 모듈(106)을 통해) 메모리 버스(104)와 통신할 수 있다. 예를 들면, 준수 버스 인터페이스 모듈(122)은 예상 가능한, 정의된 그리고 상대적으로 빠른 레이트로 메모리 버스(104)로부터 판독 커맨드를 수신할 수 있다. 준수 버스 인터페이스 모듈(122)은 또한, 데이터가 준비된 경우에, 예상 가능한, 정의된 그리고 상대적으로 빠른 시간 기간 내에 판독 명령에 응답하여 데이터(예를 들면, "반환 데이터"로 지칭됨)를 메모리 제어기(102)로 반환할 수 있다. 판독 커맨드는 적어도 하나의 준수 메모리 회로/기술(예를 들면, 112) 및/또는 적어도 하나의 미-준수 메모리 회로/기술(예를 들면, 114)로부터 데이터를 판독하도록 의도될 수 있다. 준수 버스 인터페이스 모듈(122)은 또한 특정 데이터 전송 표준에 따라 기록 커맨드 및 다른 타입의 커맨드를 수신할 수 있다. 준수 버스 인터페이스 모듈(122)은 메모리 버스(104)와 인터페이스하기 위한 다수의 접속, 예를 들면, 도 1에 도시된 바와 같은 다수의 addr, cmd, 데이터 및 패리티/ECC 와이어/라인을 가질 수 있다. 준수 버스 인터페이스 모듈(122)은 커맨드(예를 들면, 판독 및/또는 기록 커맨드)를 디코더 모듈(122)에 제공할 수 있다. 준수 버스 인터페이스 모듈(122)은 또한 디코더 모듈(124) 및 응답 제어 모듈(120)의 다른 모듈로부터 반환 데이터를 수신할 수 있다.
디코더 모듈(124)은 준수 버스 인터페이스 모듈(122)로부터 커맨드를 수신할 수 있다. 디코더 모듈(124)은 커맨드 및/또는 커맨드로부터의 다양한 필드를 응답 제어 모듈(120)의 다양한 모듈로 라우팅할 수 있다. 예를 들면, 디코더 모듈(124)은 커맨드의 어드레스(즉, addr) 필드에 기초하여 특정 커맨드(또는 필드)를 라우팅할 곳을 결정할 수 있다. 이와 관련하여, 응답 제어 모듈(120)의 다양한 모듈은 각각 특정 "어드레스 공간"과 연관될 수 있다. 하나의 특정 예로서, 다양한 어드레스는 미-준수 메모리 회로/기술(예를 들면, 114)과 연관될 수 있고, 디코더 모듈(124)은 이러한 어드레스로 지향된 커맨드를 미-준수 메모리 인터페이스 모듈(132)로 라우팅할 수 있고, 이것은 결국 메모리 모듈(106) 상에 있는(또는 이에 인터페이스하는) 비-DDR 메모리 회로/기술(예를 들면, 114)로 커맨드를 라우팅할 수 있다. 마찬가지로, 다양한 어드레스는 준수 메모리 회로/기술(예를 들면, 112)과 연관될 수 있다. 따라서, 디코더 모듈(124)이 준수 버스 인터페이스 모듈(122)로부터 커맨드를 수신할 때, 모듈(124)은 커맨드(예를 들면, addr 필드)를 분석할 수 있고, 커맨드를 적절히 라우팅할 수 있다.
디코더 모듈(124)은, 일부 경우에서, 완전한 것보다 더 적은 커맨드(예를 들면, 커맨드의 모든 필드보다 더 적은 필드)를 다양한 모듈로 라우팅할 수 있다. 예를 들면, 디코더 모듈이 메모리 회로/기술 또는 레지스터를 판독하기 위한 판독 커맨드를 수신하면, 모듈(124)은 단지 addr 및 cmd 필드를 메모리 회로/기술 또는 레지스터로 라우팅할 수 있다. 디코더 모듈(124)은, 일부 경우에, 수정 없이 특정 비트, 와이어, 라인 또는 커맨드의 필드를 통과시킬 수 있다. 예를 들면, 디코더 모듈이 기록 커맨드를 수신하면, 디코더 모듈(124)로 들어오는 (예를 들면, 모듈(122)로부터의) 데이터 라인은 기록 버퍼로 통과할 수 있는데, 예를 들면, 왜냐하면, 데이터 와이어/라인이 인입하는 커맨드를 디코딩하도록 요구되지 않을 수 있기 때문이다. 디코더 모듈(124)은 응답 제어 모듈(120)의 다양한 모듈, 예를 들면, 모듈(126)로부터 반환 데이터를 수신할 수 있다. 디코더 모듈(124)은 또한, 예를 들면, 인터페이스 모듈(130, 132)을 통해 적어도 하나의 메모리 회로/기술(예를 들면, 112 및/또는 114)로부터 반환 데이터를 수신할 수 있다. 도 1은 판독을 메모리 회로/기술(예를 들면, 112, 114)로 발행하는 (그리고 이로부터 데이터를 반환하는) 기능적 양태에 주로 포커싱할 수 있다. 도 3은, 예를 들면, 기록을 발행하는 다른 기능적 양태에 포커싱할 수 있다.
인터페이스 모듈(130 및 132)은 커맨드(예를 들면, 판독 커맨드 및/또는 기록 커맨드) 또는 커맨드의 특정 필드를 수신할 수 있고, 이들을 이들 각각의 메모리 회로/기술(예를 들면, 112, 114)로 전송할 수 있다. 인터페이스 모듈(130 및 132)은 또한 그들 각각의 메모리 회로/기술로부터 반환 데이터를 수신할 수 있고, 그러한 데이터를 응답 제어 모듈(120)의 적어도 하나의 모듈, 예를 들면, 응답기 모듈(126)로 전송할 수 있다. 메모리 회로/기술(예를 들면, 112, 114) 각각은 메모리 모듈(106) 상에 장착될 수 있거나 메모리 모듈(106) 외부에 있을 수 있다. 메모리 회로/기술이 메모리 모듈(106) 외부에 있다면, 각각의 메모리 인터페이스 모듈(예를 들면, 130, 132)은 포트, 커넥터, 와이어의 세트 등을 통해 외부 메모리 회로/기술에 접속할 수 있다.
응답기 모듈(126)은, 예를 들면, 미-준수 메모리 회로 또는 기술(예를 들면, 114)로 지향된 디코더 모듈(124)로부터의 커맨드를 수신 또는 액세스할 수 있다. 응답기 모듈(124)은 일정량의 시간을 결정할 수 있고, 일정량의 시간 내에 (예를 들면, 수신 또는 액세스되는 특정 타입의) 커맨드가 데이터 전송 표준(예를 들면, DDR)에 따라 완료되어야 한다. 응답기 모듈(124)은 모듈(124)로부터 수신된 또는 액세스 가능한 커맨드를 분석할 수 있고, 각각의 커맨드가 일정량의 시간 내에 미-준수 메모리 회로에 의해 (예를 들면, 판독의 경우에) 완료되는지 또는 (예를 들면, 기록의 경우에) 완료될 가능성이 있는지를 결정할 수 있다. 커맨드가 일정량의 시간 내에 미-준수 메모리 회로에 의해 완료되거나 완료될 가능성이 있다면, 응답기 모듈(124)은 커맨드 응답이 (예를 들면, 판독의 경우에) 완료하도록 허용할 수 있거나, (예를 들면, 기록의 경우에) 어떠한 것도 하지 않을 수 있다. 더 상세하게, 판독의 경우에, 모듈(124)은 반환 데이터가 메모리 제어기(102)로 반환되도록 허용할 수 있다. 커맨드가 일정량의 시간 내에 미-준수 메모리 회로에 의해 완료되지 않거나 완료되지 않을 가능성이 있다면, 응답기 모듈(124)은 그러한 시나리오(예를 들면, 에러)를 메모리 제어기(102)로 시그널링할 수 있다. 응답기 모듈(124)은 시그널링을 수행하기 위해 패리티 비트 또는 에러 정정 코드(ECC) 비트를 사용할 수 있다. 그러한 신호에 기초하여, 메모리 제어기 또는 컴퓨팅 시스템(100)의 운영 시스템은, 예를 들면, 일정 시간 기간 후에 커맨드를 재시도할 수 있다.
패리티 비트는, 이진 코드 내의 1-값 비트의 수가 짝수(예를 들면, 짝수 패리티 방식) 또는 홀수(예를 들면, 홀수 패리티 방식)인지를 표시하는 이진 코드(즉, 데이터)의 끝에 부가되는 비트를 지칭한다. 패리티 비트는 수신된 데이터가 전송된 데이터와 상이한지를 검출하는데 사용될 수 있고, 이것은 전송, 저장 등에서 에러를 표시할 수 있다. 패리티 비트를 사용하여 에러가 검출되면, 데이터는 해체되고 아마도 재전송되는데, 왜냐하면 패리티 비트가 데이터의 정정을 허용하지 않을 수 있기 때문이다. 에러 정정 코드(ECC)는, 데이터에서 에러를 검출하고 아마도 정정하는데 사용될 수 있는 이진 코드(즉, 데이터)의 끝에 부가되는 복수의 비트를 지칭할 수 있다. ECC는 리던던트 정보를 데이터에 부가할 수 있다. 리던던트 정보는 데이터의 다수의 오리지널 비트의 함수로서 결정될 수 있고, 리던던트 정보는 오리지널 데이터를 복원 또는 정정하는데 (예를 들면, 다른 함수를 통해) 사용될 수 있다. 본원의 다양한 설명 및/또는 도면은 패리티 비트 및/또는 ECC 또는 ECC 비트를 지칭할 수 있다. 패리티 비트를 언급하는 다양한 설명 및/또는 도면이 ECC에 동일하게 적용될 수 있고, 그 역도 가능하다는 것이 이해되어야 한다. 따라서, 패리티 비트 대 ECC 비트 및 그 역을 언급하는 특정 예는 제한적인 것으로 해석되지 않아야 한다.
응답기 모듈(126)은, 커맨드가 데이터 전송 프로토콜에 따라 예상된 일정량의 시간 내에 미-준수 메모리 회로에 의해 (예를 들면, 판독의 경우에) 완료되지 않거나 (예를 들면, 기록의 경우에) 완료되지 않을 가능성이 있을 때, 시그널링하기 위해 패리티 또는 ECC 비트를 사용할 수 있다. 패리티 또는 ECC 비트는 이미 메모리 모듈(106) 및 메모리 버스 사이 및 메모리 버스(104) 및 메모리 제어기(102) 사이의 인터페이스의 부분일 수 있다. 따라서, 시그널링을 수행하기 위해 어떠한 부가적인 비트/와이어/라인도 요구되지 않는다. 일 예에서, 단일 패리티 비트가 사용되면, 응답기 모듈(126)은 패리티 에러를 의도적으로 발생시키기 위해 패리티 비트를 설정할 수 있다. 그후, 메모리 제어기(102) 또는 운영 시스템은, 아래에 더 상세히 설명되는 바와 같이, 패리티 에러를 인식하고 이에 응답할 수 있다. 이러한 상황에서, 패리티 비트는 단지 단일 타입의 에러를 표시할 수 있고, 따라서 에러에 대한 메모리 제어기 또는 운영 시스템의 응답(예를 들면, 디폴트 응답 또는 변경된 응답)은 응답기 모듈(126)에 유용한 응답(예를 들면, 커맨드 재시도)일 필요가 있을 수 있다. 부가적으로, 응답은 데이터 전송 등에서 에러의 결과로서 발생할 수 있는 규칙적인 패리티 에러에 대해 적절할 필요가 있을 수 있다.
다른 예로서, 응답기 모듈(126)은, 커맨드가 제시간에 완료되지 않거나 제시간에 완료되지 않을 가능성이 있다는 것을 시그널링하기 위해 다수의 ECC 비트를 사용할 수 있다. 다수의 ECC 비트를 통해, 다수의 값, 메시지 또는 코드가 ECC 비트에서 인코딩될 수 있다. 따라서, 우선, 응답기 모듈(126)은, 메모리 제어기(102) 또는 운영 시스템이, 예를 들면, 실제 데이터 전송 에러 및 커맨드가 제시간에 완료되지 않는 것으로 인해 응답기 모듈(126)에 의해 개시된 에러 사이를 구별할 수 있도록 ECC 비트를 인코딩할 수 있다. 그후, 응답기 모듈(126)은 다양한 "에러 코드"로 ECC 비트를 추가로 인코딩할 수 있다. 에러 코드는 모듈(126)에 의해 개시된 에러에 관한 다양한 부가적인 세부사항, 예를 들면, 커맨드가 재시도될 때까지 얼마나 오래 대기하는지, 커맨드를 얼마나 여러번 재시도하는지 등과 같은 세부사항을 표시할 수 있다. 또 다른 예에서, 메모리 모듈(106) 및 메모리 버스(104) 및 메모리 제어기(102) 사이의 인터페이스(예를 들면, 준수 인터페이스)의 다양한 다른 비트/라인/와이어는 에러에 관한 세부사항을 제공하는데 사용될 수 있다. 예를 들면, 인터페이스의 "데이터" 필드는 에러에 관한 세부사항으로 (예를 들면, 모듈(126)에 의해) 인코딩될 수 있다. 따라서, 모듈(126)에 의해 개시된 에러의 경우에, 인터페이스의 모든 이용 가능한 비트/라인/와이어는 에러에 관한 부가적인 세부사항을 포함하는데 사용될 수 있다. 결국, 커맨드는 어떻게든 재시도될 수 있어서, 그렇지 않다면 다른 이용 가능한 비트(예를 들면, 데이터 응답 비트)는 사용되지 않게 될 수 있다.
메모리 제어기(102)는, 데이터 전송 프로토콜에 따라 예상된 바와 같이 커맨드가 완료되지 않거나 완료되지 않을 가능성이 있을 것이라는 것을 표시하는, 메모리 모듈(106)로부터의 신호(예를 들면, 에러 신호)를 해석하고 및/또는 신호에 따라 행동하도록 설계 및/또는 구성될 필요가 있을 수 있다. 그러나, 메모리 제어기(102)의 인터페이스가 여전히 특정 데이터 전송 표준(예를 들면, DDR)을 준수할 수 있다는 것이 이해되어야 한다. 예를 들면, 메모리 제어기(102)가 커맨드를 전송할 때마다, 메모리 제어기(102)는 특정 데이터 전송 표준(예를 들면, DDR)에 따라 커맨드를 전송할 수 있다. 마찬가지로, 메모리 제어기(102)가 반환 데이터를 수신할 때마다, 메모리 제어기(102)는 특정 데이터 전송 표준(예를 들면, DDR)에 따라 반환 데이터를 수신할 수 있다. 메모리 제어기(102)는, 예를 들면, 메모리 모듈(106)로부터의 신호에 기초하여 이전에 전송된 커맨드를 재시도할 수 있지만, 오리지널 커맨드 및 재시도된 커맨드 양자는 특정 데이터 전송 표준에 따라 전송될 수 있다. 따라서, 커맨드 재시도를 구현하지 않는 메모리 제어기와 비교할 때, 메모리 제어기(102)가 변경될 필요가 있을 수 있을지라도, 변경된 메모리 제어기는 데이터 전송 표준을 준수하는 컴퓨팅 시스템(100)의 모든 다른 컴퓨터 구성요소와 여전히 인터페이스할 수 있다. 예를 들면, DIMM 메모리 모듈에 대한 소켓을 포함하여 마더보드는 변경될 필요가 없을 수 있다(예를 들면, 그들은 여전히 준수할 수 있음). 하나의 특정 시나리오에서, 일부 시스템에서, 메모리 제어기는 중앙 프로세서(예를 들면, 108)의 부분이고, 따라서 기존의 프로세서는, 변경된 메모리 제어기(102)를 포함하는 프로세서와 간단히 교환(swap out)될 수 있고, 그후, 컴퓨팅 시스템은 커맨드 재시도를 구현할 준비가 될 수 있다.
메모리 제어기(102)는, 디폴트로, 패리티 또는 ECC 에러에 따라 행동하도록 설계 및/또는 구성될 수 있다. 예를 들면, 메모리 제어기(102)는 패리티 에러의 경우에 커맨드를 자동적으로 재시도할 수 있거나, 메모리 제어기(102)는, ECC 비트가 제공되는 경우에 자동적으로 데이터를 정정하려고 시도할 수 있다. 메모리 제어기(102)의 디폴트 응답이 응답기 모듈(126)에게 유용하지 않다면(예를 들면, 커맨드 재시도를 발생시킴), 메모리 제어기(102)는 변경/수정될 수 있다. 메모리 제어기(102)는 (예를 들면, 실제 데이터 전송 에러와 반대로) 응답기 모듈(126)에 의해 개시된 에러를 인지하도록 설계 및/또는 구성될 수 있다. 메모리 제어기(102) 및 응답기 모듈(126)은, 인코딩 충돌이 회피되도록, (예를 들면, 다수의 ECC 비트 및/또는 데이터 비트와 같은 다른 이용 가능한 비트를 사용하여) 공통의 인코딩 방식을 사용할 필요가 있을 수 있다. 예를 들면, 실제 데이터 전송 에러가 발생하고, 에러가 응답기 모듈(126)에 의해 개시된 에러인 것처럼 메모리 제어기(102)가 에러에 따라 행동하면, 이것은 문제를 발생시킬 수 있다. 일부 상황에서, 메모리 제어기(102)는, 예를 들면, 다수의 ECC 비트로부터 에러 코드를 검출 및 디코딩할 수 있다.
메모리 제어기(102)는 에러에 기초하여 커맨드를 자동적으로 재시도할 수 있다. 메모리 제어기(102)는 에러를 수신한 후에 커맨드를 재시도하기 전에 일정량의 시간을 대기할 수 있다. 재시도 전의 일정량의 시간은 변할 수 있고, 구성 가능할 수 있고, 예를 들면, 응답기 모듈(126)로부터 전송된 에러 코드에 표시될 수 있다. 메모리 제어기(102)는, 자신이 커맨드를 재시도하려고 시도하는 것을 "포기"하거나 정지하기 전에 단지 여러번 커맨드를 재시도할 수 있다. 재시도의 수는 변할 수 있고, 구성 가능할 수 있고, 예를 들면, 응답기 모듈(126)로부터 전송된 에러 코드에 표시될 수 있다.
일부 상황에서, 컴퓨팅 시스템(100)은, 예를 들면, 프로세서(108) 상에서 실행되는 메인 운영 시스템(OS)을 포함한다. OS는, 데이터 전송 프로토콜에 따라 예상된 바와 같이, 커맨드가 완료되지 않을 것이라는 것을 표시하는, 메모리 모듈(106)로부터의 신호를 해석하고 및/또는 신호에 따라 행동하도록 설계 및/또는 구성될 수 있다. 일부 예에서, OS는 메모리 제어기(102) 대신에 패리티 및/또는 ECC 에러(예를 들면, "실제" 패리티/ECC 에러 및 응답기 모듈(126)에 의해 개시된 에러)를 처리할 수 있다. 예를 들면, 패리티 및/또는 ECC 에러는 메모리 제어기(102)를 통해 다시 OS(예를 들면, OS 내의 트랩 처리기(trap handler))로 전달될 수 있고, 그후 OS는 적절한 조치를 취할 수 있다. 다른 예에서, OS 및 메모리 제어기는 그러한 에러를 처리하기 위해 함께 동작할 수 있다.
앞서 설명된 메모리 제어기(102)의 동작과 마찬가지로, OS는, 예를 들면, 메모리 모듈(106)로부터의 패리티 또는 ECC 신호에 기초하여 이전에 전송된 커맨드를 재시도할 수 있다. 디폴트로, OS는 (예를 들면, 트랩 처리기 또는 에러 검출 및/또는 정정 경로를 통해) 패리티 및/또는 ECC 비트를 처리하도록 설계 및/또는 구성될 수 있다. 예를 들면, 데이터를 수신할 때, OS는 데이터 전송에서 에러를 검출하기 위해 자동적으로 패리티/ECC 비트(들)를 사용할 수 있고, 자동적으로 (예를 들면, ECC의 경우에서) 데이터를 정정하려고 시도할 수 있다. OS가 또한 에러 기초하여(또는 반복되는 에러에 기초하여) 다양한 결정을 내릴 수 있다. 예를 들면, OS는 특정 메모리가 완전히 실패하였다는 것을 인식할 수 있고, 실패한 디바이스를 사용하지 않기 위해 그의 데이터 맵을 재맵핑하거나 재인코딩할 수 있다.
본 개시에 따라, OS(예를 들면, 트랩 처리기 또는 에러 검출 및/또는 정정 경로)는 디폴트 시나리오에 상이하게 거동하도록 변경 또는 수정될 수 있다. OS는 메모리 제어기(102)에 대해 앞서 설명된 것과 유사한 방식으로 응답기 모듈(126)로부터의 에러를 처리할 수 있다. 예를 들면, OS는 에러에 기초하여 자동적으로 커맨드를 재시도할 수 있다. OS는, 에러를 수신한 후에 커맨드를 재시도하기 전에 일정량의 시간을 대기할 수 있다. OS는, 자신이 커맨드를 재시도하려는 시도를 "포기"하거나 정지하기 전에 단지 여러번 커맨드를 재시도할 수 있다.
일부 상황에서, 응답기 모듈(126)로부터, 메모리 버스를 통하고, 메모리 제어기를 통하고 다시 OS로 향하는 통신 경로는 길고 높은 레이턴시 경로일 수 있다. 따라서, 응답기 모듈(126)에 의해 개시된 에러를 처리하기 위한 그러한 해결책은, 아래에 더 상세히 설명되는 바와 같이, 응답 제어 모듈(120) 내에 포함된(예를 들면, 응답기 모듈(126) 내부의) 캐시(cache)와 관련하여 사용될 수 있다. 그러한 캐시를 통해, 응답(예를 들면, 판독 커맨드의 경우에 반환 데이터)이 캐싱될 수 있다. 따라서, 초기 커맨드는 재시도될 필요가 있을 수 있지만(예를 들면, 다시 OS로 라우팅), 응답 데이터가 캐시 내에 있다면, 후속의 유사한 커맨드는 재시도될 필요가 없을 수 있다.
도 2는 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어를 구현하는데 사용되는 예시적인 응답기 모듈(200)의 블록도이다. 응답기 모듈(200)은, 예를 들면, 도 1의 응답기 모듈(126)과 유사할 수 있다. 응답기 모듈(200)은 다수의 모듈, 예를 들면, 모듈(202, 204, 206, 208)을 포함할 수 있다. 이들 모듈 각각은 전자 회로(예를 들면, 하드웨어 및/또는 펌웨어)일 수 있고 및/또는 이들 모듈 각각은, 예를 들면, 응답 제어 모듈(120)의 마이크로프로세서에 의해 실행 가능한 머신-판독 가능 저장 매체 상에서 인코딩되는 명령어일 수 있다. 본원에 설명 및 도시된 모듈에 관련하여, 하나의 모듈 내에 포함되는 실행 가능 명령어 및/또는 전자 회로의 부분 또는 전부가, 대안적인 실시예에서, 도면에 도시된 상이한 모듈 또는 도시되지 않은 상이한 모듈에 포함될 수 있다는 것이 이해되어야 한다. 도시된 모듈 각각은 다양한 예에서 존재할 수 있거나 존재하지 않을 수 있고, 일부 예에서, 부가적인 모듈이 존재할 수 있다.
커맨드 완료 시간 저장 모듈(202)은 일정량의 시간을 결정, 수신 및/또는 저장할 수 있고, 일정량의 시간 내에 커맨드는 특정 데이터 전송 프로토콜(예를 들면, DDR)에 따라 완료될 것으로 예상된다. 모듈(202)은, 예를 들면, 이러한 일정량의 시간을 저장할 수 있는 ROM 또는 일부 다른 프로그래밍 가능 저장 매체를 포함할 수 있다. DDR 프로토콜의 예에서, 프로토콜을 준수하기 위해 특정 타입의 모든 커맨드(예를 들면, 판독, 기록 등)는 특정 수의 사이클 내에 완료되어야 한다. 모듈(202)은, 예를 들면, 이러한 일정량의 시간(예를 들면, 사이클)을 저장할 수 있고, 이것을 다양한 모듈(예를 들면, 204)에 제공할 수 있어서, 실제 완료 시간, 가능 완료 시간 또는 대기 시간이 이러한 저장된 일정량의 시간과 비교될 수 있다.
커맨드 모니터링 모듈(204)은 메모리 모듈에 입력되는 커맨드, 예를 들면, 미-준수 메모리 회로 또는 기술(예를 들면, 114)로 지향되는 커맨드를 수신 또는 액세스할 수 있다. 커맨드 모니터링 모듈(204)은, 일부 상황에서, 커맨드 모니터링 회로로 지칭될 수 있다. 일부 상황에서, 모듈(204)은 단지 특정 타입의 커맨드, 예를 들면, 단지 판독 커맨드를 수신 또는 액세스할 수 있다. 커맨드 모니터링 모듈(204)은, 예를 들면, 미-준수 메모리 회로 또는 기술로 커맨드를 전송하는 것을 포함하여, 이러한 커맨드를 모니터링할 수 있다. 커맨드 모니터링 모듈(204)은, 그러한 미-준수 메모리 회로가 이러한 커맨드에 응답하여 반환할 수 있는 임의의 반환 데이터의 상태, 또는 각각의 커맨드가 메모리 모듈로 전송된 이래로 얼마나 많은 시간이 지났는지를 추적할 수 있다. 모듈(204)은, 각각의 모니터링된 커맨드에 대해, 커맨드가 전송된 이래로 지난 일정량의 시간 및 (예를 들면, 모듈(202)로부터의) 예상된 완료 시간을 비교할 수 있다. 예를 들면, 판독 커맨드에 관련된 반환 데이터가 예상된 일정량의 시간 내에 메모리 회로 또는 기술에 의해 제공되지 않았다고 모듈(204)이 결정하면, 모듈(204)은 에러(예를 들면, 앞서 설명된 패리티/ECC 에러)를 개시하기 위해 모듈(208)과 통신할 수 있다.
커맨드/응답 캐시 모듈(206)은 모듈(204)에 의해 수신 또는 액세스된 커맨드를 추적할 수 있고, 이들 커맨드에 응답하여 메모리 회로/기술로부터의 반환된 임의의 반환 데이터를 추적할 수 있다. 이와 관련하여, 커맨드(예를 들면, 판독 커맨드)가 예상된 일정량의 시간 내에 완료(반환 데이터가 준비됨)되지 않았다고 (예를 들면, 모듈(204)에 의해) 결정되고, 한편 응답기 모듈(200)이 (예를 들면, 모듈(208)을 통해) 에러를 개시할 수 있다면, 메모리 회로/기술은 커맨드를 계속해서 처리할 수 있다. 결국, 메모리 회로/기술은 커맨드에 관련된 반환 데이터를 제공할 수 있고, 그러한 데이터(예를 들면, 그리고 아마도 서라운딩 데이터)는 모듈(206)에 저장될 수 있다. 그러한 데이터는 일정 시간 기간 동안에 모듈(206)에 저장될 수 있고, 커맨드(또는 유사한 커맨드)가 일정 미래의 시간에 재시도되면, 응답기 모듈(200)은, 예를 들면, 데이터 전송 프로토콜(예를 들면, DDR)을 준수할 수 있는 응답 시간 내에 캐싱된 반환 데이터를 빠르게 반환할 수 있다. 특정 예에서, 판독 커맨드가 처음에 전송되고, 반환 데이터가 예상된 때 준비가 되지 않는다면, 반환 데이터가 준비가 될 때, 반환 데이터가 캐싱될 수 있다. 그후, 판독 커맨드가 재시도될 때, 응답기 모듈(200)은, 이러한 커맨드가 이전에 수신 또는 액세스되었다는 것을 (예를 들면, 모듈(204 및 206)을 통해) 인식할 수 있고, 캐싱된 데이터가 이용 가능하고 결정할 수 있다.
에러 발생 모듈(208)은 메모리 모듈 및 메모리 버스 사이의 인터페이스의 패리티/ECC 비트에 대한 액세스를 가질 수 있고, 다양한 상황, 메시지 또는 코드를 표시하기 위해 이러한 비트를 설정할 수 있다. 예를 들면, 앞서 설명된 바와 같이, 응답기 모듈(200)은 커맨드가 예상된 일정량의 시간 내에 (예를 들면, 판독의 경우에) 완료되지 않거나 (예를 들면, 기록의 경우에) 완료될 가능성이 없다는 것을 표시하기 위해 (예를 들면, 모듈(208)을 통해) 패리티/ECC 비트를 사용할 수 있다. 다른 예로서, 에러 발생 모듈(208)은, 응답(예를 들면, 판독 커맨드에 대한 응답 데이터)이 예상된 시간 내에 완료 불가한 이전에 전송된 커맨드에 대해 준비가 되는 때를 표시하기 위해 패리티/ECC 비트를 사용할 수 있다. 에러 발생 모듈(208)은, 일부 상황에서, 에러 발생 회로로 지칭될 수 있다.
도 3은 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어를 구현하는 예시적인 컴퓨팅 시스템(100)의 블록도이다. 컴퓨팅 시스템(100)은 도 1에 도시된 동일한 컴퓨팅 시스템(100)일 수 있다. 도 1이 판독 커맨드를 발행하는 것과 연관된 다양한 특징을 도시하지만, 도 3은 기록 커맨드를 발행하는 것과 연관된 다양한 특징, 특히, 기록 버퍼 모듈(128)을 모니터링하고, 기록 커맨드가 특정 데이터 전송 프로토콜(예를 들면, DDR)에 따라 예상된 바와 같이 완료되지 않거나 완료되지 않은 것을 표시하기 위해 커맨드(cmd) 패리티 에러 비트(들)를 사용하는 응답기 모듈을 도시한다. 도 1 및 도 3을 비교함으로써, 다양한 모듈 및/또는 구성요소가 2 개의 도면 사이에서 공유된다는 것을 알 것이다. 그러나, 설명을 용이하게 하기 위해, 일부 모듈 및/또는 구성요소가 도 1이 아닌 도 3에 도시될 수 있고 그 역도 가능하다. 예를 들면, 도 3에서, 컴퓨팅 시스템(100)은 기록 버퍼 모듈(128)을 포함할 수 있다. 일부 예시적인 컴퓨팅 시스템이 도 1 및/또는 도 3 중 어느 하나에 도시된 모듈 및/또는 구성요소의 임의의 조합을 포함할 수 있다는 것이 이해되어야 한다. 일부 예시적인 컴퓨팅 시스템은 도 1 및/또는 도 3 중 어느 하나에 도시된 모든 구성요소를 포함할 수 있다.
기록 버퍼 모듈(128)은 적어도 하나의 기록 버퍼를 포함할 수 있다. 기록 버퍼 모듈(128)은 디코더 모듈(124)로부터 기록 커맨드를 수신하고 이를 (예를 들면, 선입 선출 방식으로) 저장할 수 있다. 기록 버퍼 모듈(128)은, 기록 버퍼가 한번에 얼마나 많은 기록 커맨드를 유지할 수 있는지를 결정할 수 있는 크기 또는 용량을 가질 수 있다. 기록 버퍼가 자신의 크기/용량과 동일한 수의 기록 커맨드를 저장할 때, 기록 버퍼는 "가득할" 수 있다. 용어 "사용되는 용량"은 기록 버퍼에 현재 저장된 기록 커맨드의 수를 지칭할 수 있다. 용어 "이용 가능한 용량"은, 기록 버퍼가 가득하기 전에 기록 버퍼가 현재 수용할 수 있는 기록 커맨드의 수를 지칭할 수 있다. 기록 버퍼 모듈(128)은, 예를 들면, 적어도 하나의 인터페이스 모듈(예를 들면, 130 및/또는 132)을 통해 저장된 기록 커맨드를 메모리 회로/기술(예를 들면, 112 및/또는 114)로 전송할 수 있다. 예를 들면, 인터페이스 모듈(130 및/또는 132)은, 자신이 다른 기록 커맨드를 수신하기 위해 이용 가능할 때를 기록 버퍼 모듈(128)에 표시할 수 있다. 다른 예에서, 특정 인터페이스 모듈(예를 들면, 130)이 DDR 준수하면, 기록 버퍼 모듈(128)은 DDR 데이터 전송 표준에 지정된 바와 같이(예를 들면, 예상 가능한, 정의된 그리고 상대적으로 빠른 레이트로) 저장된 기록 커맨드를 인터페이스 모듈로 전송할 수 있다. 일부 예에서, 준수 메모리 회로/기술에 대해, 커맨드는 도 2에 도시된 바와 같이 기록 버퍼 모듈(128)을 우회할 수 있다.
기록 버퍼 모듈(128)은, 도 2에 도시된 바와 같이, 여러번(예를 들면, 사이클마다) 자신의 이용 가능한 용량을 응답기 모듈(128)로 통신할 수 있다. 대안적으로, 응답기 모듈(128)은 기록 버퍼 모듈(128)의 이용 가능한 용량을 검출할 수 있다. 따라서, 여러번(예를 들면, 사이클마다), 응답기 모듈(128)은 기록 버퍼 모듈(128)이 수용할 수 있는 기록 커맨드의 수의 스냅샷을 유지할 수 있다. 기록 버퍼가 가득하면, 기록 버퍼 모듈은 제로 값을 응답 제어 크레디트 모듈로 반환할 수 있다. 앞서 언급된 바와 같이, 본 개시는 미-준수 메모리 기술(예를 들면, 114)이 준수(예를 들면, DDR 준수) 메모리 버스 및 준수 메모리 제어기와 인터페이스하도록 허용한다. 일부 시나리오에서, 미-준수 메모리 회로/기술(예를 들면, 114)은, 자신이 부가적인 기록 커맨드를 수용할 수 있을 때 및/또는 자신이 더 이상 기록 커맨드를 수용할 수 없을 때 기록 버퍼 모듈에 (예를 들면, 인터페이스 모듈(132)을 통해) 시그널링할 수 있다. 그후, 기록 버퍼 모듈(128)은 저장된 기록 커맨드를 그러한 미-준수 메모리 회로/기술로 전송하는 것을 정지하기 위해 그러한 신호를 사용할 수 있다. 그 동안에, 기록 버퍼 모듈(128)은 인입하는 기록 커맨드를 (예를 들면, DDR 레이트로) 여전히 수신할 수 있다. 따라서, 특정 시나리오에서, 기록 버퍼 모듈(128)은 가득 차기 시작할 수 있다(예를 들면, 이용 가능한 용량이 감소할 수 있음).
응답기 모듈(126)은 기록 버퍼 모듈(128)의 이용 가능한 용량을, 여러번(예를 들면, 사이클마다) 수신 또는 검출할 수 있다. 기록 커맨드가 예상된 일정량의 시간 내에 완료하기에 충분한 이용 가능한 용량을 기록 버퍼 모듈이 갖지 않는다면, 응답기 모듈(126)은 에러, 예를 들면, 커맨드(cmd) 패리티 에러를 시그널링할 수 있다. 커맨드 패리티 비트는 메모리 모듈(106) 및 메모리 버스(104) 및 메모리 제어기(102) 사이의 인터페이스에서 이미 존재하는 비트/와이어/라인이다. 커맨드 패리티 비트는, 패리티 에러가 메모리 모듈로 전송되는 커맨드에 관련하여 검출되면 에러를 메모리 제어기로 시그널링하는데 사용될 수 있다. 다양한 DIMM은 디폴트로 커맨드 패리티 점검 및 에러 시그널링 제어기 또는 메커니즘을 갖고, 응답기 모듈(126)은 예상된 일정량의 시간 내에 완료 불가할 기록 커맨드를 시그널링하기 위해 이러한 제어기/메커니즘을 활용(예를 들면, 수정)할 수 있다.
응답기 모듈(126)은 일정량의 시간을 결정, 수신 및/또는 저장할 수 있고, 일정량의 시간 내에 커맨드(예를 들면, 기록 커맨드)가 특정 데이터 전송 프로토콜(예를 들면, DDR)에 따라 완료될 것으로 예상된다. 응답기 모듈(126)은, 기록 버퍼 모듈(128)의 이용 가능한 용량에 기초하여, (예를 들면, 최상 경우의 시나리오)기록 버퍼에 입력되는 다양한 기록 커맨드가 (예를 들면, 메모리 회로/기술에 기록됨으로써) 완료하는데 걸리는 시간을 또한 결정할 수 있다. 응답기 모듈(126)은 이러한 최상 경우의 시간과 예상된 완료 시간을 비교할 수 있고, 커맨드에 대한 최상 경우의 시간이 예상된 시간을 초과하면, 응답기 모듈(126)은 커맨드 패리티 에러를 개시할 수 있다. 대안적으로, 최상 경우의 완료 시간을 고려하는 대신에, 특정 기록 커맨드가 사실상 메모리 회로/기술로 전송되는 때를 검출하기 위해, 응답기 모듈은 기록 버퍼 모듈(128)의 출력을 모니터링할 수 있다. 이러한 경우에, 응답기 모듈(126)은, 기록 커맨드가 사실상 예상된 시간 내에 완료되지 않았다고 결정할 수 있다. 대안적으로, 최상 경우의 완료 시간 또는 실제 완료를 고려하는 대신에, 응답기 모듈은 기록 버퍼가 (예를 들면, 특정수의 이용 가능한 엔트리들) 과하게 가득 차게 되는 때 시그널링하기 위해 커맨드 패리티 에러를 간단히 사용할 수 있다.
메모리 제어기(102)는, 기록 커맨드가 데이터 전송 프로토콜에 따라 예상된 바와 같이 완료되지 않았다는 것을 표시하는, 메모리 모듈(106)로부터의 커맨드 패리티 에러 신호를 해석하고 및/또는 이에 따라 행동하도록 설계 및/또는 구성될 필요가 있을 수 있다. 그러나, 메모리 제어기(102)의 인터페이스가 여전히 특정 데이터 전송 표준(예를 들면, DDR)을 준수할 수 있다는 것이 이해되어야 한다. 다양한 메모리 제어기는 커맨드 패리티 에러가 수신될 때 디폴트로 커맨드를 재시도할 수 있다. 그러한 시나리오에서, 디폴트 메모리 제어기는 충분할 수 있다. 대안적으로, 메모리 제어기(102)는, 예를 들면, 도 1에 관련하여 앞서 설명되는 바와 같이, 커맨드가 재시도하는 방식과 유사한 방식으로 커맨드를 재시도하도록 수정될 수 있다.
일부 상황에서, 응답기 모듈(126)은, 공식적인 커맨드 패리티 에러를 발행하기 위해 커맨드 패리티 에러 신호를 사용하는 대신에, 직렬 통신 링크로서 커맨드 패리티 에러 신호를 사용할 수 있다. 응답기 모듈(126)은 메시지, 에러 코드 등을 커맨드 패리티 에러 비트를 통해 전송할 수 있고, 메모리 제어기(102)는 그러한 메시지 또는 에러 코드를 검출 및/또는 디코딩하도록 설계 및/또는 구성될 수 있다.
도 4는 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어를 위한 예시적인 방법(400)의 흐름도를 도시한다. 도 4는 판독 커맨드가 처리될 수 있는 다양한 단계를 도시할 수 있고, 도 5는 기록 커맨드가 처리될 수 있는 다양한 단계를 도시할 수 있다. 방법(400)은 응답 제어 모듈(예를 들면, 도 1의 120) 또는 임의의 다른 적절한 전자 회로, 예를 들면, 도 5의 메모리 모듈(520) 상의 회로에 의해 실행될 수 있다. 방법(400)은 전자 회로의 형태로 및/또는 머신-판독 가능 저장 매체, 예를 들면, 응답 제어 모듈(120)에 배치된 머신-판독 가능 저장 매체 상에 저장된 실행 가능한 명령어 형태로 구현될 수 있다. 본 개시의 대안적인 실시예에서, 방법(400)의 하나 이상의 단계는 실질적으로 동시에 또는 도 4에 도시된 것과 상이한 순서로 실행될 수 있다. 본 개시의 대안적인 실시예에서, 방법(400)은 도 4에 도시된 것보다 더 많거나 더 적은 단계를 포함할 수 있다. 일부 실시예에서, 방법(400)의 하나 이상의 단계는, 여러번, 계속 진행될 수 있고 및/또는 반복될 수 있다.
도 4를 참조하면, 방법(400)은 단계(402)에서 시작하고, 단계(404)로 계속될 수 있고, 여기서 응답 제어 모듈(120)은 시간을 결정할 수 있고, 시간 내에 판독 커맨드는 (예를 들면, DDR 프로토콜에 따라) 완료될 것으로 예상된다. 단계(406)에서, 판독 커맨드는 응답 제어 모듈(120)이 배치된 메모리 모듈(예를 들면, DIMM)에 의해 수신될 수 있다. 판독 커맨드는 메모리 회로/기술(예를 들면, 미-준수 메모리 회로/기술)로부터 데이터를 판독하도록 의도될 수 있다. 단계(408)에서, 응답 제어 모듈(120)은 판독 커맨드의 상태, 예를 들면, 커맨드가 메모리 회로/기술에 의해 완료되었는지(반환 데이터가 준비됨)를 모니터링할 수 있다. 또한, 단계(408)에서, 응답 제어 모듈(120)은 판독 커맨드가 메모리 모듈에 의해 수신된 이후의 시간(예를 들면, 사이클)을 추적할 수 있다. 단계(410)에서, 응답 제어 모듈(120)은 판독 커맨드가 수신된 이후의 시간과 예상된 완료 시간을 비교할 수 있다. 단계(412)에서, 응답 제어 모듈(120)은, 커맨드가 수신된 이후의 시간에 기초하여, 반환 데이터가 예상된 완료 시간까지 준비되지 않을 것이라고 결정할 수 있다. 단계(414)에서, 응답 제어 모듈(120)은, 판독 커맨드가 예상된 시간 내에 완료되지 않는다는 것을 메모리 제어기 또는 운영 시스템에 표시하는 패리티 또는 ECC 에러를 개시할 수 있다. 에러에 응답하여, 단계(416)에서, 메모리 제어기 또는 운영 시스템은, 예를 들면, 일정 시간 기간 후에 판독 커맨드를 재시도할 수 있다. 방법(400)은 결국 단계(418)로 계속될 수 있고 여기서 방법(400)이 정지될 수 있다.
도 5는 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어를 위한 예시적인 방법(500)의 흐름도를 도시한다. 도 5는 기록 커맨드가 처리될 수 있는 다양한 단계를 도시할 수 있다. 방법(500)은 응답 제어 모듈(예를 들면, 도 3의 120) 또는 임의의 다른 적절한 전자 회로, 예를 들면, 도 5의 메모리 모듈(520) 상의 회로에 의해 실행될 수 있다. 방법(500)은 전자 회로의 형태로 및/또는 머신-판독 가능 저장 매체, 예를 들면, 응답 제어 모듈(120)에 배치된 머신-판독 가능 저장 매체 상에 저장된 실행 가능한 명령어 형태로 구현될 수 있다. 본 개시의 대안적인 실시예에서, 방법(500)의 하나 이상의 단계는 실질적으로 동시에 또는 도 5에 도시된 것과 상이한 순서로 실행될 수 있다. 본 개시의 대안적인 실시예에서, 방법(500)은 도 5에 도시된 것보다 더 많거나 더 적은 단계를 포함할 수 있다. 일부 실시예에서, 방법(500)의 하나 이상의 단계는, 여러번, 계속 진행될 수 있고 및/또는 반복될 수 있다.
도 5를 참조하면, 방법(500)은 단계(502)에서 시작하고, 단계(504)로 계속될 수 있고, 여기서 응답 제어 모듈(120)은 시간을 결정할 수 있고, 시간 내에 기록 커맨드는 (예를 들면, DDR 프로토콜에 따라) 완료될 것으로 예상된다. 단계(506)에서, 기록 커맨드는 응답 제어 모듈(120)이 배치된 메모리 모듈(예를 들면, DIMM)에 의해 수신될 수 있다. 기록 커맨드는 메모리 회로/기술(예를 들면, 미-준수 메모리 회로/기술)로부터 데이터를 기록하도록 의도될 수 있다. 기록 커맨드는, 기록 버퍼가 이용 가능한 공간을 갖는 경우에, 응답 제어 모듈(120)의 기록 버퍼에 배치될 수 있다. 단계(508)에서, 응답 제어 모듈(120)은 기록 버퍼의 상태(예를 들면, 이용 가능한 공간이 얼마나 많은지, 다양한 기록 커맨드가 버퍼 내에 있는 곳 등)를 모니터링할 수 있다. 단계(510)에서, 응답 제어 모듈(120)은 기록 커맨드가 메모리 회로/기술로 전송되는 최상 경우의 시간을 결정할 수 있거나, 모듈(120)은 기록 커맨드가 사실상 메모리 회로/기술로 전송되는 때를 모니터링할 수 있다. 단계(512)에서, 응답 제어 모듈(120)은 최상 경우의 시간 또는 실제 시간과 예상된 완료 시간을 비교할 수 있다. 단계(514)에서, 응답 제어 모듈(120)은, 최상 경우의 시간 또는 실제 시간이 예상된 완료 시간보다 더 큰다고 결정할 수 있다. 단계(516)에서, 응답 제어 모듈(120)은, 기록 커맨드가 제시간에 완료되지 않을 것이거나 완료되지 않았다는 것을 메모리 제어기 또는 운영 시스템에 표시하는 커맨드 패리티 에러를 개시할 수 있다. 단계(518)에서, 메모리 제어기 또는 운영 시스템은, 에러에 응답하여, 기록 커맨드를 재시도한다. 방법(500)은 결국 단계(520)로 계속될 수 있고 여기서 방법(500)이 정지될 수 있다.
도 6은 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어를 위한 예시적인 컴퓨팅 시스템(600)의 블록도이다. 컴퓨팅 시스템(600)은, 예를 들면, 메모리 버스를 통해 메모리 모듈(예를 들면, 620)을 액세스하는 메모리 제어기(예를 들면, 612)를 포함하는 임의의 컴퓨팅 시스템 또는 컴퓨팅 디바이스일 수 있다. 예시적인 컴퓨팅 시스템에 관한 세부사항은, 예를 들면, 도 1 및 도 3의 컴퓨팅 시스템(100)에 관련하여 앞서 설명될 수 있다. 도 6의 실시예에서, 컴퓨팅 시스템(600)은 메모리 제어기(612) 및 메모리 모듈(620)을 포함한다. 메모리 제어기(612)는 도 1 및 도 3의 메모리 제어기(102)와 유사할 수 있고, 메모리 모듈(620)은, 예를 들면, 메모리 모듈(106)과 유사할 수 있다.
메모리 모듈(620)은 다수의 구성요소(622, 624, 626 및 628)를 포함할 수 있다. 이들 구성요소 각각은 전자 회로 형태로 및/또는 머신-판독 가능 저장 매체, 예를 들면, 메모리 모듈(620)에 배치된 머신-판독 가능 저장 매체 상에 저장된 실행 가능 명령어 형태로 구현될 수 있다. 그러한 머신-판독 가능 저장 매체는 실행 가능한 명령어를 저장하는 임의의 전자, 자기, 광학, 또는 다른 물리적 저장 디바이스일 수 있다. 따라서, 그러한 머신-판독 가능 저장 매체는, 예를 들면, 랜덤 액세스 메모리(RAM), 전기적으로 소거 가능한 프로그래밍 가능 판독-전용 메모리(EEPROM) 등일 수 있다. 구성요소(622, 624, 626 및 628)가 실행 가능한 명령어로서 구현되는 경우에, 메모리 모듈(620)은 머신-판독 가능 저장 매체에 저장된 명령어의 검색 및 실행에 적합한 임의의 종류의 마이크로프로세서를 포함할 수 있다. 그러한 프로세서는, 다른 것 중에서도, 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어를 구현하기 위한 명령어(예를 들면, 구성요소(622, 624, 626, 628))를 페칭(fetch), 디코딩 및 실행할 수 있다. 도 6에 도시된 구성요소 상자(예를 들면, 622, 624, 626, 628)에 관련하여, 하나의 상자 내에 포함된 실행 가능한 명령어 및/또는 회로의 부분 또는 전부가, 대안적인 실시예에서, 도면에 도시된 상이한 상자 또는 도시되지 않은 상이한 상자에 포함될 수 있다는 것이 이해되어야 한다.
준수 메모리 버스 인터페이스(622)는 메모리 버스를 통해 메모리 제어기(612)와 통신할 수 있다. 인터페이스(622), 메모리 제어기(612) 및 메모리 버스 각각은 특정 데이터 전송 표준(예를 들면, DDR)을 준수할 수 있다. 미-준수 메모리 인터페이스(624)는 데이터 전송 표준을 준수하지 않는 미-준수 메모리 회로 또는 기술에 인터페이스할 수 있다. 커맨드 모니터링 회로(626)는 메모리 제어기로부터 미-준수 메모리 회로 또는 기술로의 커맨드를 분석할 수 있다. 커맨드 모니터링 회로는, 커맨드가 정의된 일정량의 시간 내에 미-준수 메모리 회로에 의해 완료되는지 또는 완료될 것인지를 결정할 수 있다. 정의된 일정량의 시간은, 커맨드가 데이터 전송 표준에 따라 완료되어야 하는 적어도 하나의 지정된 일정량의 시간의 세트로부터의 것일 수 있다. 에러 발생 회로(628)는, 커맨드가 정의된 일정량의 시간 내에 완료되지 않거나 완료되지 않을 때 메모리 제어기 또는 운영 시스템으로 시그널링할 수 있다. 에러 발생 회로는 시그널링을 수행하기 위해 메모리 버스에 대한 인터페이스의 패리티 비트 또는 에러 정정 코드(ECC) 비트를 사용할 수 있다. 에러 발생 회로는, 패리티 비트 또는 ECC 비트의 설정을 통해, 메모리 제어기 또는 운영 시스템이 일정 시간 기간 후에 커맨드를 재시도하게 할 수 있다.
도 7은 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어를 위한 예시적인 방법(700)의 흐름도이다. 방법(700)은 메모리 모듈(예를 들면, 도 6의 620) 또는 임의의 다른 적절한 전자 회로, 예를 들면, 도 1 및 도 3의 응답 제어 모듈(120)에 의해 실행될 수 있다. 방법(700)은 전자 회로의 형태로 및/또는 머신-판독 가능 저장 매체, 예를 들면, 응답 제어 모듈(620)에 배치된 머신-판독 가능 저장 매체 상에 저장된 실행 가능한 명령어 형태로 구현될 수 있다. 본 개시의 대안적인 실시예에서, 방법(700)의 하나 이상의 단계는 실질적으로 동시에 또는 도 7에 도시된 것과 상이한 순서로 실행될 수 있다. 본 개시의 대안적인 실시예에서, 방법(700)은 도 7에 도시된 것보다 더 많거나 더 적은 단계를 포함할 수 있다. 일부 실시예에서, 방법(700)의 하나 이상의 단계는, 여러번, 계속 진행될 수 있고 및/또는 반복될 수 있다.
방법(700)은 단계(702)에서 시작하고 단계(704)로 계속될 수 있고, 여기서 메모리 모듈(620)은 데이터 전송 표준을 준수하는 메모리 버스에 대한 인터페이스를 통해 커맨드를 수신할 수 있다. 메모리 버스는 메모리 제어기와 통신할 수 있다. 단계(706)에서, 메모리 모듈(620)은 데이터 전송 표준을 준수하지 않는 미-준수 메모리 회로 또는 기술로 커맨드를 전송할 수 있다. 단계(708)에서, 메모리 모듈(620)은, 커맨드가 정의된 일정량의 시간 내에 미-준수 메모리 회로에 의해 완료되는지 또는 완료될 것인지를 결정하기 위해 커맨드를 모니터링할 수 있다. 단계(710)에서, 메모리 모듈(620)은, 커맨드가 정의된 일정량의 시간 내에 완료되지 않거나 완료되지 않을 때, 패리티 비트 또는 에러 정정 코드(ECC) 비트를 사용하여, 에러를 메모리 제어기 또는 운영 시스템으로 시그널링할 수 있다. 패리티 비트 또는 ECC 비트는 데이터 전송 표준을 준수하는 메모리 버스에 대한 인터페이스의 부분이다. 방법(700)은 결국 단계(712)로 계속될 수 있고 여기서 방법(700)이 정지할 수 있다.

Claims (15)

  1. 응답 제어를 위한 메모리 모듈로서,
    데이터 전송 표준을 준수하는 메모리 버스에 대한 인터페이스 ― 상기 메모리 버스는 메모리 제어기와 통신함 ― 와,
    상기 데이터 전송 표준을 준수하지 않는 미-준수 메모리 기술(a non-compliant memory technology)에 대한 인터페이스와,
    상기 메모리 제어기로부터 상기 미-준수 메모리 기술로의 커맨드(command)를 분석하기 위한 커맨드 모니터링 회로 ― 상기 커맨드 모니터링 회로는, 커맨드가 상기 데이터 전송 표준에 따라 완료되어야 하는 정의된 일정량의 시간 내에, 상기 커맨드가 상기 미-준수 메모리 회로에 의해 완료되었는지 또는 완료될 것인지를 결정함 ― 와,
    상기 커맨드가 상기 정의된 일정량의 시간 내에 완료되지 않았거나 완료되지 않을 때, 상기 메모리 제어기 또는 운영 시스템으로 시그널링하는 에러 발생 회로 ― 상기 에러 발생 회로는 상기 시그널링을 수행하기 위해 상기 메모리 버스에 대한 인터페이스의 패리티 비트(parity bit) 또는 ECC(error correcting code) 비트를 사용함 ― 를 포함하는
    메모리 모듈.
  2. 제 1 항에 있어서,
    상기 커맨드는 판독 커맨드이고,
    상기 커맨드 모니터링 회로는, 상기 미-준수 메모리 회로가 상기 정의된 일정량의 시간 내에 반환 데이터를 준비하였는지를 결정하는
    메모리 모듈.
  3. 제 1 항에 있어서,
    상기 커맨드는 기록 커맨드이고,
    상기 커맨드 모니터링 회로는, 상기 기록 커맨드가 상기 정의된 일정량의 시간 내에 상기 미-준수 메모리 회로로 전송될 것인지 또는 전송되었는지를 결정하는
    메모리 모듈.
  4. 제 1 항에 있어서,
    상기 에러 발생 회로는, 상기 패리티 비트 또는 ECC 비트의 설정을 통해, 상기 메모리 제어기 또는 상기 운영 시스템으로 하여금 일정 시간 기간 후에 상기 커맨드를 재시도하게 하는
    메모리 모듈.
  5. 제 4 항에 있어서,
    상기 커맨드가 재시도될 때, 상기 메모리 모듈이 반환 데이터를 상기 메모리 제어기로 반환할 수 있도록, 상기 정의된 일정량의 시간 내에 완료되지 않은 판독 커맨드에 대한 반환 데이터를 저장하는 캐시(cache)를 더 포함하고,
    상기 반환 데이터는, 상기 재시도된 커맨드가 상기 메모리 모듈에 의해 수신된 후에 상기 정의된 일정량의 시간 내에 반환될 수 있는
    메모리 모듈.
  6. 제 1 항에 있어서,
    상기 데이터 전송 표준은 DDR(double data rate) 표준인
    메모리 모듈.
  7. 제 6 항에 있어서,
    상기 미-준수 메모리 기술은 비-휘발성 메모리 기술인
    메모리 모듈.
  8. 제 1 항에 있어서,
    상기 메모리 제어기 또는 상기 운영 시스템으로의 시그널링은, 상기 메모리 버스가 상기 데이터 전송 표준에 따라 상기 메모리 모듈 및 상기 미-준수 메모리 기술과 통신하기 위해 사용하는 부가적인 통신 와이어를 사용하지 않고서, 수행되는
    메모리 모듈.
  9. 메모리 모듈에서 실행되는 응답 제어를 위한 방법으로서,
    데이터 전송 표준을 준수하는 메모리 버스에 대한 인터페이스를 통해 커맨드를 수신하는 단계 ― 상기 메모리 버스는 메모리 제어기와 통신함 ― 와,
    상기 데이터 전송 표준을 준수하지 않는 미-준수 메모리 기술로 상기 커맨드를 전송하는 단계와,
    커맨드가 상기 데이터 전송 표준에 따라 완료되어야 하는 정의된 일정량의 시간 내에, 상기 커맨드가 상기 미-준수 메모리 회로에 의해 완료되었는지 또는 완료될 것인지를 결정하기 위해 상기 커맨드를 모니터링하는 단계와,
    상기 커맨드가 상기 정의된 일정량의 시간 내에 완료되지 않았거나 완료되지 않을 때, 패리티 비트 또는 ECC(error correcting code) 비트를 사용하여, 에러를 상기 메모리 제어기 또는 운영 시스템으로 시그널링하는 단계 ― 상기 패리티 비트 또는 상기 ECC 비트는 데이터 전송 표준을 준수하는 상기 메모리 버스에 대한 인터페이스의 부분임 ― 를 포함하는
    응답 제어 방법.
  10. 제 9 항에 있어서,
    상기 패리티 비트 또는 상기 ECC 비트는, 커맨드가 상기 정의된 일정량의 시간 내에 완료되지 않았거나 완료되지 않을 것을 표시하는 에러와, 실제 패리티 또는 ECC 에러를 상기 메모리 제어기 또는 상기 운영 시스템이 구별할 수 있는 방식으로, 인코딩되는
    응답 제어 방법.
  11. 제 9 항에 있어서,
    상기 시그널링은 상기 메모리 제어기 또는 상기 운영 시스템으로 하여금 일정 시간 기간 후에 상기 커맨드를 재시도하게 하는
    응답 제어 방법.
  12. 제 11 항에 있어서,
    상기 에러를 시그널링하는 단계는,
    실제 패리티 또는 ECC 에러로부터 상기 에러를 구별하는 표시와,
    상기 커맨드를 재시도하기 전에 상기 메모리 제어기 또는 상기 운영 시스템이 대기해야 하는 일정량의 시간과,
    포기하기 전에 상기 메모리 제어기 또는 상기 운영 시스템이 재시도해야 하는 횟수와 같은 정보 중 적어도 하나를 사용하여, 상기 메모리 버스에 대한 인터페이스의 상기 ECC 비트 또는 상기 데이터 비트를 인코딩하는 단계를 더 포함하는
    응답 제어 방법.
  13. 컴퓨팅 시스템으로서,
    메모리 제어기에 연결된 메모리 버스 ― 상기 메모리 버스 및 상기 메모리 제어기는 DDR(double data rate) 데이터 전송 표준을 준수함 ― 와,
    상기 DDR 데이터 전송 표준을 준수하지 않는 미-준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈과,
    상기 메모리 모듈 상에 있거나 상기 메모리 모듈에 접속된 응답 제어 회로를 포함하고, 상기 응답 제어 회로는,
    상기 메모리 버스에 대한 인터페이스, 및 상기 미-준수 메모리 기술에 대한 인터페이스와,
    상기 메모리 제어기로부터 상기 미-준수 메모리 기술로의 판독 커맨드를 분석하기 위한 커맨드 모니터링 회로 ― 상기 커맨드 모니터링 회로는, 판독 커맨드가 상기 데이터 전송 표준에 따라 완료되어야 하는 정의된 일정량의 시간 내에, 상기 판독 커맨드에 대한 반환 데이터가 상기 미-준수 메모리 기술에서 준비가 되는지를 결정함 ― 와,
    상기 반환 데이터가 상기 정의된 일정량의 시간 내에 준비가 되지 않을 때, 상기 메모리 제어기 또는 상기 컴퓨팅 시스템의 운영 시스템으로 시그널링하는 에러 발생 회로 ― 상기 에러 발생 회로는 상기 시그널링을 수행하기 위해 상기 메모리 버스에 대한 인터페이스의 패리티 비트 또는 ECC(error correcting code) 비트를 사용함 ― 를 포함하는
    컴퓨팅 시스템.
  14. 제 13 항에 있어서,
    상기 에러 발생 회로는, 상기 패리티 비트 또는 상기 ECC 비트의 설정을 통해, 상기 메모리 제어기 또는 상기 운영 시스템으로 하여금 일정 시간 기간 후에 상기 판독 커맨드를 재시도하게 하는
    컴퓨팅 시스템.
  15. 제 13 항에 있어서,
    상기 데이터 전송 표준은 DDR(double data rate) 표준이고,
    상기 미-준수 메모리 기술은 비-휘발성 메모리 기술인
    컴퓨팅 시스템.
KR1020167001969A 2013-07-25 2013-07-25 미―준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어 KR20160034913A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/052031 WO2015012838A1 (en) 2013-07-25 2013-07-25 Response control for memory modules that include or interface with non-compliant memory technologies

Publications (1)

Publication Number Publication Date
KR20160034913A true KR20160034913A (ko) 2016-03-30

Family

ID=52393697

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167001969A KR20160034913A (ko) 2013-07-25 2013-07-25 미―준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어

Country Status (6)

Country Link
US (1) US20160170831A1 (ko)
EP (1) EP3025238A4 (ko)
KR (1) KR20160034913A (ko)
CN (1) CN105474190A (ko)
TW (1) TWI537969B (ko)
WO (1) WO2015012838A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678716B2 (en) 2018-03-26 2020-06-09 SK Hynix Inc. Memory device and memory system including the same
US10790011B2 (en) 2018-02-26 2020-09-29 SK Hynix Inc. Address and command generation circuit, and semiconductor system

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
US9904621B2 (en) 2014-07-15 2018-02-27 Sandisk Technologies Llc Methods and systems for flash buffer sizing
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US9436397B2 (en) * 2014-09-23 2016-09-06 Sandisk Technologies Llc. Validating the status of memory operations
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9558125B2 (en) 2014-10-27 2017-01-31 Sandisk Technologies Llc Processing of un-map commands to enhance performance and endurance of a storage device
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9824007B2 (en) 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9647697B2 (en) 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
US9772796B2 (en) 2015-04-09 2017-09-26 Sandisk Technologies Llc Multi-package segmented data transfer protocol for sending sub-request to multiple memory portions of solid-state drive using a single relative memory address
US9864545B2 (en) 2015-04-14 2018-01-09 Sandisk Technologies Llc Open erase block read automation
US9753653B2 (en) 2015-04-14 2017-09-05 Sandisk Technologies Llc High-priority NAND operations management
US10372529B2 (en) 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
US9778878B2 (en) 2015-04-22 2017-10-03 Sandisk Technologies Llc Method and system for limiting write command execution
US20160378594A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Method and apparatus to decode low density parity codes
US9870149B2 (en) 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
US9715939B2 (en) 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
US10126970B2 (en) 2015-12-11 2018-11-13 Sandisk Technologies Llc Paired metablocks in non-volatile storage device
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
TWI657447B (zh) 2017-04-28 2019-04-21 Silicon Motion, Inc. 記憶裝置、存取系統及存取方法
US11599481B2 (en) * 2019-12-12 2023-03-07 Western Digital Technologies, Inc. Error recovery from submission queue fetching errors
ES2922322T3 (es) * 2020-02-25 2022-09-13 Siemens Schweiz Ag Configuración de dispositivo
KR20220149220A (ko) 2021-04-30 2022-11-08 삼성전자주식회사 메모리 장치

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6944738B2 (en) * 2002-04-16 2005-09-13 Sun Microsystems, Inc. Scalable design for DDR SDRAM buses
US7367503B2 (en) * 2002-11-13 2008-05-06 Sandisk Corporation Universal non-volatile memory card used with various different standard cards containing a memory controller
US8250295B2 (en) * 2004-01-05 2012-08-21 Smart Modular Technologies, Inc. Multi-rank memory module that emulates a memory module having a different number of ranks
US7289386B2 (en) * 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US7487265B2 (en) * 2004-04-16 2009-02-03 Sandisk Corporation Memory card with two standard sets of contacts and a hinged contact covering mechanism
US8135935B2 (en) * 2007-03-20 2012-03-13 Advanced Micro Devices, Inc. ECC implementation in non-ECC components
US20100115181A1 (en) * 2008-11-04 2010-05-06 Sony Ericsson Mobile Communications Ab Memory device and method
US20100323725A1 (en) * 2009-06-18 2010-12-23 Yigang Cai Individualized retry configurations for messages having failed delivery
US8374049B2 (en) * 2010-04-08 2013-02-12 Agiga Tech Inc. DIMM memory module reference voltage switching circuit
DE102012002400B4 (de) * 2011-03-17 2020-06-18 Eb-Invent Gmbh Manipulator
US8607089B2 (en) * 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
JP2012252530A (ja) * 2011-06-03 2012-12-20 Fujitsu Ltd メモリコントローラ及び制御方法
US20140281680A1 (en) * 2013-03-15 2014-09-18 Avalanche Technology, Inc. Dual data rate bridge controller with one-step majority logic decodable codes for multiple bit error corrections with low latency

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10790011B2 (en) 2018-02-26 2020-09-29 SK Hynix Inc. Address and command generation circuit, and semiconductor system
US11373699B2 (en) 2018-02-26 2022-06-28 SK Hynix Inc. Address and command generation circuit, and semiconductor system
US10678716B2 (en) 2018-03-26 2020-06-09 SK Hynix Inc. Memory device and memory system including the same

Also Published As

Publication number Publication date
TW201506944A (zh) 2015-02-16
TWI537969B (zh) 2016-06-11
EP3025238A4 (en) 2017-04-19
CN105474190A (zh) 2016-04-06
US20160170831A1 (en) 2016-06-16
EP3025238A1 (en) 2016-06-01
WO2015012838A1 (en) 2015-01-29

Similar Documents

Publication Publication Date Title
KR20160034913A (ko) 미―준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어
US20160139807A1 (en) Write flow control for memory modules that include or interface with non-compliant memory technologies
CN105373345B (zh) 存储器设备和模块
KR102381233B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN111566738B (zh) 存储器系统中的有效和选择性的备用位
US10754552B2 (en) Data storage device and operating method thereof
KR102504765B1 (ko) 메모리 시스템 및 그것의 동작 방법
US11748025B2 (en) Nonvolatile memory device, data storage device including the same and operating method thereof
US11036493B2 (en) Memory system and operating method thereof
KR20190032104A (ko) 비휘발성 메모리 장치, 비휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법
KR102469098B1 (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 이를 포함하는 데이터 저장 장치
US11126379B2 (en) Memory system
US11385834B2 (en) Data storage device, storage system using the same, and method of operating the same
US10514866B2 (en) Data storage device, operating method thereof and method for operating nonvolatile memory device
US10817377B2 (en) Memory system re-performing access operation and operating method thereof
US10628322B2 (en) Memory system and operating method thereof
CN111324302B (zh) 数据存储装置及其操作方法
US11256565B2 (en) Transaction metadata
US11537514B2 (en) Data storage device and operating method thereof

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid