KR20220129100A - 메모리 액세스 기술 및 컴퓨터 시스템 - Google Patents
메모리 액세스 기술 및 컴퓨터 시스템 Download PDFInfo
- Publication number
- KR20220129100A KR20220129100A KR1020227031161A KR20227031161A KR20220129100A KR 20220129100 A KR20220129100 A KR 20220129100A KR 1020227031161 A KR1020227031161 A KR 1020227031161A KR 20227031161 A KR20227031161 A KR 20227031161A KR 20220129100 A KR20220129100 A KR 20220129100A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory controller
- subblocks
- read
- nvdimm
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
- Saccharide Compounds (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
본 출원은 메모리 액세스 기술 및 컴퓨터 시스템을 제공한다. 컴퓨터 시스템은 메모리 제어기, 매체 제어기, 및 매체 제어기에 접속된 비휘발성 메모리(NVM)를 포함한다. 메모리 제어기로부터 제1 판독 커맨드를 수신한 후에, 매체 제어기는 제1 판독 커맨드에서의 제1 어드레스에 기초하여 NVM으로부터 제1 데이터를 판독할 수 있다. 그 후, 매체 제어기는 메모리 제어기로부터 적어도 2개의 send 커맨드에 기초하여, 적어도 2개의 고정 길이 데이터 서브블록 및 적어도 2개의 데이터 서브블록의 메타데이터를 메모리 제어기에 반환할 수 있다. 메타데이터는 제1 데이터에서의 대응하는 데이터 서브블록의 오프셋을 표시하는 위치 식별자를 포함한다. 따라서, 메모리 제어기는 적어도 2개의 데이터 서브블록 및 메타데이터에서의 위치 식별자들에 기초하여 제1 데이터를 획득한다.
Description
본 출원은 컴퓨터 기술 분야에 관한 것이며, 특히, 메모리 액세스 기술 및 컴퓨터 시스템에 관한 것이다.
비휘발성 이중 인라인 메모리 모듈(non-volatile dual in-line memory module, NVDIMM)은 컴퓨터의 랜덤 액세스 메모리(random access memory, RAM)이다. NVDIMM은 복수의 비휘발성 메모리(non-volatile memory, NVM) 칩들을 포함할 수 있다. NVDIMM은 시스템이 완전히 파워 오프될 때 완전한 메모리 데이터를 여전히 저장할 수 있다. NVDIMM 상의 NVM 칩은 구체적으로 비휘발성 랜덤 액세스 메모리(non-volatile random access memory, NVRAM)일 수 있다는 것이 이해될 수 있다. NVDIMM 상의 NVM은 상 변화 메모리(phase change memory, PCM), 저항성 랜덤 액세스 메모리(resistive random access memory, RRAM), 자기 랜덤 액세스 메모리(magnetic random access memory, MRAM), 스핀 전달 토크 MRAM(spin-transfer torque MRAM, STT-MRAM) 등을 포함할 수 있다. NVDIMM은 NVDIMM-P 프로토콜을 사용하여 메모리 제어기와 통신한다. NVDIMM-P 프로토콜은 더블 데이터 레이트(double data rate, DDR) 프로토콜과 호환가능한 버스 액세스 프로토콜이다.
본 기술분야의 통상의 기술자는 프로세서가 일반적으로 상이한 길이를 갖는 데이터를 판독하기 위한 판독 요건을 갖는다는 것을 알 수 있다. 따라서, 프로세서는 메모리 제어기에 상이한 길이를 갖는 데이터를 판독하기 위한 액세스 요청들을 전송할 수 있다. 예를 들어, 프로세서는 요건에 기초하여, 64B(Byte) 데이터를 판독하기 위한 액세스 요청 또는 128B 데이터를 판독하기 위한 액세스 요청을 메모리 제어기에 전송할 수 있다. 종래 기술에서, 메모리 제어기는 일반적으로 고정 길이 데이터를 판독하기 위한 판독 커맨드를 NVDIMM에 전송한다. 예를 들어, 하나의 경우에, 메모리 제어기는 64B 데이터를 판독하기 위한 판독 커맨드를 NVDIMM에 전송할 수 있다. 이 경우, 메모리 제어기가 프로세서에 의해 전송되고 128B 데이터를 판독하기 위해 사용되는 액세스 요청을 수신할 때, 메모리 제어기는 액세스 요청을 2개의 64B 데이터 판독 커맨드로 분할하고, 2개의 판독 커맨드를 사용하여 NVDIMM으로부터, 프로세서에 의해 요구되는 128B 데이터를 판독할 필요가 있다. 이러한 처리 방식은 커맨드 버스의 대역폭을 낭비하고, 시스템 성능에 영향을 미친다. 다른 경우에, 메모리 제어기는 128B 데이터를 판독하기 위한 판독 커맨드만을 NVDIMM에 전송한다. 이 경우, 메모리 제어기가 프로세서에 의해 전송되고 64B 데이터를 판독하기 위해 사용되는 액세스 요청을 수신할 때, 메모리 제어기는 64B 데이터에 대한 액세스 요청을 128B 데이터에 대한 판독 커맨드로 변경할 필요가 있고, 128B 데이터에 대한 판독 커맨드를 NVDIMM에 전송한다. 명백히, 이러한 방식은 데이터 버스의 대역폭을 낭비한다.
본 출원에서 제공되는 메모리 액세스 기술 및 컴퓨터 시스템은 버스 대역폭을 낭비하지 않고서, 상이한 길이를 갖는 데이터를 판독하기 위한 판독 커맨드들을 지원하여 시스템 성능을 개선할 수 있다.
제1 양태에 따르면, 본 출원은 컴퓨터 시스템을 제공한다. 컴퓨터 시스템은 메모리 제어기, 매체 제어기, 및 매체 제어기에 접속된 비휘발성 메모리 NVM을 포함한다. NVM은 데이터를 저장하도록 구성된다. 메모리 제어기는 매체 제어기에 접속된다. 메모리 제어기가 제1 판독 커맨드를 매체 제어기에 전송한 후에, 매체 제어기는 제1 판독 커맨드에서의 제1 어드레스에 기초하여 NVM으로부터 제1 데이터를 판독할 수 있다. 제1 판독 커맨드는 제1 ID, 제1 어드레스, 및 제1 길이를 운반하고, 제1 ID는 제1 판독 커맨드의 식별자이고, 제1 길이는 제1 판독 커맨드에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용된다. 메모리 제어기는 적어도 2개의 send 커맨드를 매체 제어기에 전송하고, 여기서 적어도 2개의 send 커맨드는 제3 길이의 적어도 2개의 데이터 피스를 획득하기 위해 사용되고, 제3 길이는 제1 길이보다 작다. 매체 제어기는, 적어도 2개의 send 커맨드에 응답하여, 제3 길이의 적어도 2개의 데이터 서브블록 및 적어도 2개의 데이터 서브블록의 메타데이터를 메모리 제어기에 반환한다. 메타데이터는 제1 ID 및 위치 식별자를 포함하고, 위치 식별자는 제1 데이터에서의 대응하는 데이터 서브블록의 오프셋을 표시하기 위해 사용된다. 메모리 제어기는 적어도 2개의 데이터 서브블록의 메타데이터에서의 위치 식별자들에 기초하여 적어도 2개의 데이터 서브블록을 제1 데이터로 결합한다.
비교적 큰 데이터를 획득하기 위한 액세스 요청을 수신할 때, 본 출원에서 제공되는 컴퓨터 시스템은 판독 커맨드를 추가하지 않고서, 시스템의 액세스 요청을 지원하여 버스 대역폭의 낭비를 감소시키고 시스템 성능을 개선할 수 있다.
실제 응용에서, 위치 식별자는 적어도 하나의 비트이다. 메모리 제어기는 NVDIMM-P 프로토콜을 따르는 것에 의해 매체 제어기와 통신한다.
제1 양태를 참조하여, 제1 가능한 구현에서, 메모리 제어기는 제2 판독 커맨드를 매체 제어기에 전송하도록 추가로 구성되고, 여기서 제2 판독 커맨드는 제2 ID, 제2 어드레스, 및 제2 길이를 운반하고, 제2 길이는 제2 판독 커맨드에 의해 판독될 제2 데이터의 크기를 표시하기 위해 사용된다. 매체 제어기는 제2 어드레스에 기초하여 NVM으로부터 제2 데이터를 획득하도록 추가로 구성된다. 메모리 제어기는 제2 send 커맨드를 매체 제어기에 전송하도록 추가로 구성되고, 제2 send 커맨드는 제3 길이의 데이터 블록을 획득하기 위해 사용되고, 제2 길이는 제3 길이와 동일하다. 매체 제어기는 제2 send 커맨드에 응답하여, 제2 데이터 및 제2 데이터의 메타데이터를 메모리 제어기에 반환하도록 추가로 구성되고, 여기서 제2 데이터의 메타데이터는 제2 ID를 운반한다.
본 출원에서 제공되는 컴퓨터 시스템은 판독 커맨드들의 수량을 증가시키지 않고서, 그리고 버스 대역폭을 낭비하지 않고서, 상이한 길이를 갖는 데이터를 판독하기 위한 판독 요건을 지원할 수 있고, 그에 의해 시스템 성능을 개선시킨다.
제1 양태 또는 제1 양태의 제1 가능한 구현을 참조하여, 제2 가능한 구현에서, 매체 제어기는 NVM으로부터 판독된 제1 데이터를 적어도 2개의 데이터 서브블록으로 분할하여 일시적으로 저장하고, 적어도 2개의 데이터 서브블록의 메타데이터를 기록하도록 추가로 구성된다.
제1 양태의 제1 또는 제2 가능한 구현을 참조하여, 제3 가능한 구현에서, 각각의 데이터 서브블록의 메타데이터는 송신 식별자를 추가로 포함하고, 송신 식별자는 데이터 서브블록이 제1 데이터의 마지막으로 송신될 데이터 서브블록인지를 표시하기 위해 사용된다. 컴퓨터 시스템은 버퍼를 추가로 포함하고, 버퍼는 NVM으로부터 판독된 제1 데이터의 적어도 2개의 데이터 서브블록 및 제2 데이터를 일시적으로 저장하도록 구성된다. 매체 제어기는, 제2 데이터가 버퍼에서 제1 데이터의 제1 데이터 서브블록 이후에 위치되고 버퍼에서 제1 데이터의 제2 데이터 서브블록 이전에 위치될 때, 제2 데이터를 제1 데이터 서브블록보다 앞서 메모리 제어기에 전송하도록 추가로 구성된다. 제1 데이터 서브블록의 송신 식별자는 제1 데이터 서브블록이 제1 데이터의 마지막으로 송신될 데이터 서브블록이 아닌 것을 표시하고, 제2 데이터 서브블록의 송신 식별자는 제2 데이터 서브블록이 제1 데이터의 마지막으로 송신될 데이터 서브블록인 것을 표시한다.
본 출원에서 제공되는 컴퓨터 시스템에 따르면, 매체 제어기에 의해 매체 제어기에 반환되는 데이터 서브블록의 메타데이터가 송신 식별자를 운반하기 때문에, 메모리 제어기에 의해 데이터를 메모리 제어기에 반환하는 프로세스에서, 데이터 서브블록을 메모리 제어기에 전송하는 전송 시퀀스는 송신 식별자에 기초하여 조정될 수 있다. 이것은 상이한 길이를 갖는 데이터를 판독하기 위한 판독 커맨드들을 처리할 수 있을 뿐만 아니라, 메모리 제어기에 의해 데이터를 수신하는 것에서의 대기 지연을 감소시킬 수 있고, 그에 의해 컴퓨터 시스템의 처리 효율성을 추가로 개선시킨다.
제1 양태, 또는 제1 양태의 제1 내지 제3 가능한 구현들 중 어느 하나를 참조하면, 제4 가능한 구현에서, 컴퓨터 시스템은 프로세서를 추가로 포함한다. 프로세서는 제1 액세스 요청을 메모리 제어기에 전송하도록 구성된다. 제1 액세스 요청은 제1 ID, 제1 어드레스, 및 제1 길이를 포함한다. 메모리 제어기는 제1 액세스 요청에 기초하여 제1 판독 커맨드를 매체 제어기에 전송하도록 추가로 구성된다. 가능한 구현에 따른 컴퓨터 시스템에서, 비교적 큰 데이터를 판독하기 위해 사용되고 프로세서에 의해 전송되는 액세스 요청이 수신되더라도, 프로세서에 의해 전송된 액세스 요청은 복수의 작은 데이터 피스에 대한 판독 커맨드로 변경되지 않는다. 따라서, 종래 기술과 비교하여, 판독 커맨드들의 수량이 감소될 수 있고, 버스 대역폭이 절약될 수 있고, 그에 의해 컴퓨터 시스템의 성능을 개선시킨다.
제2 양태에 따르면, 본 출원은 스토리지를 제공한다. 메모리는 비휘발성 메모리 NVM 및 NVM에 접속된 매체 제어기를 포함한다. NVM은 데이터를 저장하도록 구성된다. 매체 제어기는, 컴퓨터 시스템에서의 메모리 제어기에 의해 전송된 제1 판독 커맨드를 수신하고, 제1 판독 커맨드에서의 제1 어드레스에 기초하여 NVM으로부터 제1 데이터를 판독하도록 구성된다. 제1 판독 커맨드는 제1 ID, 제1 어드레스, 및 제1 길이를 운반하고, 제1 ID는 제1 판독 커맨드의 식별자이고, 제1 길이는 제1 판독 커맨드에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용된다. 메모리 제어기에 의해 전송된 적어도 2개의 send 커맨드를 수신한 후, 매체 제어기는, 적어도 2개의 send 커맨드에 응답하여, 제3 길이의 적어도 2개의 데이터 서브블록 및 적어도 2개의 데이터 서브블록의 메타데이터를 메모리 제어기에 반환한다. 적어도 2개의 send 커맨드는 제3 길이의 데이터를 획득하기 위해 사용되고, 제3 길이는 제1 길이보다 작다. 각각의 데이터 서브블록의 메타데이터는 제1 ID 및 위치 식별자를 포함한다. 위치 식별자는 제1 데이터에서의 대응하는 데이터 서브블록의 오프셋을 표시하기 위해 사용되어, 적어도 2개의 데이터 서브블록은 적어도 2개의 데이터 서브블록에서의 위치 식별자들에 기초하여 제1 데이터로 결합될 수 있다.
제2 양태를 참조하여, 제1 가능한 구현에서, 매체 제어기는: 메모리 제어기에 의해 전송된 제2 판독 커맨드를 수신하고, 제2 판독 커맨드에서의 제2 어드레스에 기초하여 NVM으로부터 제2 데이터를 획득하도록 추가로 구성된다. 제2 판독 커맨드는 제2 ID, 제2 어드레스 및 제2 길이를 운반하고, 제2 길이는 제2 판독 커맨드에 의해 판독될 제2 데이터의 크기를 표시하기 위해 사용된다. 메모리 제어기에 의해 전송된 제2 send 커맨드를 수신한 후, 매체 제어기는, 제2 send 커맨드에 응답하여, 제2 데이터 및 제2 데이터의 메타데이터를 메모리 제어기에 반환한다. 제2 send 커맨드는 제3 길이의 데이터 블록을 획득하기 위해 사용되고, 여기서 제2 길이는 제3 길이와 동일하고, 제2 데이터의 메타데이터는 제2 ID를 운반한다.
제2 양태 또는 제2 양태의 제1 가능한 구현을 참조하여, 메모리는 버퍼를 추가로 포함하고, 버퍼는 NVM으로부터 매체 제어기에 의해 판독되는 제1 데이터의 적어도 2개의 데이터 서브블록을 일시적으로 저장하도록 구성된다. 매체 제어기는 적어도 2개의 데이터 서브블록의 메타데이터를 기록하도록 추가로 구성된다.
제2 양태의 제1 또는 제2 가능한 구현을 참조하여, 제3 가능한 구현에서, 각각의 데이터 서브블록의 메타데이터는 송신 식별자를 추가로 포함하고, 송신 식별자는 데이터 서브블록이 제1 데이터의 마지막으로 송신될 데이터 서브블록인지를 표시하기 위해 사용된다. 버퍼는 제2 데이터를 일시적으로 저장하도록 추가로 구성된다. 매체 제어기는, 제2 데이터가 버퍼에서 제1 데이터의 제1 데이터 서브블록 이후에 위치되고 버퍼에서 제1 데이터의 제2 데이터 서브블록 이전에 위치될 때, 제2 데이터를 제1 데이터 서브블록보다 앞서 메모리 제어기에 전송하도록 추가로 구성된다. 제1 데이터 서브블록의 송신 식별자는 제1 데이터 서브블록이 제1 데이터의 마지막으로 송신될 데이터 서브블록이 아닌 것을 표시하고, 제2 데이터 서브블록의 송신 식별자는 제2 데이터 서브블록이 제1 데이터의 마지막으로 송신될 데이터 서브블록인 것을 표시한다.
제3 양태에 따르면, 본 출원은 메모리 액세스 방법을 제공하고, 이 방법은 제1 양태 또는 제1 양태의 임의의 가능한 구현에서 제공되는 컴퓨터 시스템에 적용되어, 제1 양태 또는 제1 양태의 임의의 가능한 구현에 제공되는 컴퓨터 시스템의 기능들을 구현한다.
제4 양태에 따르면, 본 출원은 다른 메모리 액세스 방법을 제공한다. 방법은 제1 양태 또는 제1 양태의 임의의 가능한 구현에서 제공되는 컴퓨터 시스템에서의 매체 제어기에 의해 수행되어, 제1 양태 또는 제1 양태의 임의의 가능한 구현에서 제공되는 컴퓨터 시스템에서의 매체 제어기의 기능들을 구현한다.
제5 양태에 따르면, 본 출원은 다른 메모리 액세스 방법을 제공한다. 방법은 제1 양태 또는 제1 양태의 임의의 가능한 구현에서 제공되는 컴퓨터 시스템에서의 메모리 제어기에 의해 수행되어, 제1 양태 또는 제1 양태의 임의의 가능한 구현에서 제공되는 컴퓨터 시스템에서의 메모리 제어기의 기능들을 구현한다.
제6 양태에 따르면, 본 출원은 메모리 제어기를 제공한다. 메모리 제어기는 통신 인터페이스 및 통신 인터페이스에 접속된 제어 회로를 포함한다. 통신 인터페이스는 제1 판독 커맨드를 컴퓨터 시스템에서의 매체 제어기에 전송하도록 구성되고, 여기서 제1 판독 커맨드는 제1 ID, 제1 어드레스 및 제1 길이를 운반하고, 제1 ID는 제1 판독 커맨드의 식별자이고, 제1 길이는 제1 판독 커맨드에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용된다. 통신 인터페이스는: 적어도 2개의 send 커맨드를 매체 제어기에 전송하고, 제3 길이의 적어도 2개의 데이터 서브블록 및 적어도 2개의 데이터 서브블록의 메타데이터를 수신하도록 추가로 구성된다. 적어도 2개의 데이터 서브블록 및 메타데이터는 적어도 2개의 send 커맨드에 응답하여 매체 제어기에 의해 전송된다. 적어도 2개의 send 커맨드는 제3 길이의 적어도 2개의 데이터 피스를 획득하기 위해 사용되고, 제3 길이는 제1 길이보다 작다. 적어도 2개의 데이터 서브블록은 제1 어드레스에 기초하여 컴퓨터 시스템에서의 비휘발성 메모리 NVM으로부터 매체 제어기에 의해 획득된다. 각각의 데이터 서브블록의 메타데이터는 제1 ID 및 위치 식별자를 포함하고, 위치 식별자는 제1 데이터에서의 대응하는 데이터 서브블록의 위치를 표시하기 위해 사용된다. 제어 회로는 적어도 2개의 데이터 서브블록의 메타데이터에서의 위치 식별자들에 기초하여 적어도 2개의 데이터 서브블록을 제1 데이터로 결합하도록 구성된다.
제6 양태를 참조하여, 제6 양태의 제1 가능한 구현에서, 통신 인터페이스는 제2 판독 커맨드를 매체 제어기에 전송하도록 추가로 구성된다. 제2 판독 커맨드는 제2 ID, 제2 어드레스 및 제2 길이를 운반하고, 제2 길이는 제2 판독 커맨드에 의해 판독될 제2 데이터의 크기를 표시하기 위해 사용된다. 그 후, 통신 인터페이스는 제2 send 커맨드를 매체 제어기에 전송하고, 제2 send 커맨드에 기초하여 매체 제어기에 의해 반환되는 제2 데이터 및 제2 데이터의 메타데이터를 수신한다. 제2 send 커맨드는 제3 길이의 데이터 블록을 획득하기 위해 사용되고, 제2 길이는 제3 길이와 동일하다. 제2 데이터는 제2 어드레스에 기초하여 매체 제어기에 의해 NVM으로부터 획득되고, 제2 데이터의 메타데이터는 제2 ID를 운반한다.
제7 양태에 따르면, 본 출원은 프로그램 코드를 포함하는 컴퓨터 프로그램 제품을 추가로 제공하고, 프로그램 코드에 포함된 명령어는 컴퓨터에 의해 실행되어, 제3 양태, 제4 양태 또는 제5 양태에 따른 방법을 구현한다.
제8 양태에 따르면, 본 출원은 컴퓨터 판독가능 저장 매체를 추가로 제공한다. 컴퓨터 판독가능 저장 매체는 프로그램 코드를 저장하도록 구성되고, 프로그램 코드에 포함된 명령어는 컴퓨터에 의해 실행되어, 제3 양태, 제4 양태 또는 제5 양태에 따른 방법을 구현한다.
본 발명의 실시예들에서의 기술적인 해결책들을 더 명확히 설명하기 위해, 다음은 실시예들을 설명하기 위해 필요한 첨부 도면들을 간략히 설명한다. 분명히, 다음의 설명에서의 첨부 도면들은 단지 본 발명의 일부 실시예들을 도시한다.
도 1은 본 발명의 실시예에 따른 컴퓨터 시스템의 개략적인 아키텍처 도면이다;
도 2는 본 발명의 실시예에 따른 메모리 액세스 방법의 시그널링 도면이다;
도 3은 본 발명의 실시예에 따른 판독 커맨드의 데이터 구조의 개략도이다;
도 4는 본 발명의 실시예에 따른 메모리 제어기에, 매체 제어기에 의해 반환된 데이터의 개략적인 구조도이다;
도 5는 본 발명의 실시예에 따른 메모리 제어기에, 매체 제어기에 의해 반환된 데이터에서의 메타데이터의 데이터 구조의 개략도이다;
도 6은 본 발명의 실시예에 따른 다른 메모리 액세스 방법의 시그널링 도면이다;
도 7은 본 발명의 실시예에 따른 스케줄링 방법의 흐름도이다;
도 8은 본 발명의 실시예에 따른 스케줄링 방법의 개략도이다; 그리고
도 9는 본 발명의 실시예에 따른 다른 스케줄링 방법의 개략도이다.
도 1은 본 발명의 실시예에 따른 컴퓨터 시스템의 개략적인 아키텍처 도면이다;
도 2는 본 발명의 실시예에 따른 메모리 액세스 방법의 시그널링 도면이다;
도 3은 본 발명의 실시예에 따른 판독 커맨드의 데이터 구조의 개략도이다;
도 4는 본 발명의 실시예에 따른 메모리 제어기에, 매체 제어기에 의해 반환된 데이터의 개략적인 구조도이다;
도 5는 본 발명의 실시예에 따른 메모리 제어기에, 매체 제어기에 의해 반환된 데이터에서의 메타데이터의 데이터 구조의 개략도이다;
도 6은 본 발명의 실시예에 따른 다른 메모리 액세스 방법의 시그널링 도면이다;
도 7은 본 발명의 실시예에 따른 스케줄링 방법의 흐름도이다;
도 8은 본 발명의 실시예에 따른 스케줄링 방법의 개략도이다; 그리고
도 9는 본 발명의 실시예에 따른 다른 스케줄링 방법의 개략도이다.
본 기술분야의 통상의 기술자가 본 발명에서의 기술적 해결책들을 더 잘 이해하게 하기 위해, 이하는 본 발명의 실시예들에서의 첨부 도면들을 참조하여 본 발명의 실시예들에서의 기술적 해결책들을 명확하게 설명한다. 명백히, 설명된 실시예들은 본 발명의 실시예들의 전부가 아닌 단지 일부이다.
도 1은 본 발명의 실시예에 따른 컴퓨터 시스템의 개략적인 아키텍처 도면이다. 도 1에 도시된 바와 같이, 컴퓨터 시스템(100)은 적어도 프로세서(102), 메모리 제어기(106), 및 비휘발성 이중 인라인 메모리 모듈(non-volatile dual in-line memory module, NVDIMM)(108)을 포함할 수 있다. 통상적으로, 메모리 제어기(106)는 프로세서(102)에 통합될 수 있다. 본 발명의 이 실시예에 제공된 컴퓨터 시스템에서, 도 1에 도시된 디바이스들에 더하여, 컴퓨터 시스템(100)은 통신 인터페이스 및 외부 스토리지로서 사용되는 디스크와 같은 다른 디바이스를 포함할 수 있다는 점에 유의해야 한다. 이것은 본 명세서에서 제한되지 않는다.
프로세서(processor)(102)는 컴퓨터 시스템(100)의 동작 코어 및 제어 유닛(control unit)이다. 프로세서(102)는 복수의 프로세서 코어(core)(104)를 포함할 수 있다. 프로세서(102)는 하이퍼스케일 집적 회로일 수 있다. 프로세서(102) 상에는 운영 체제 및 다른 소프트웨어 프로그램이 설치되어, 프로세서(102)가 NVDIMM(108), 버퍼, 및 디스크에 액세스할 수 있게 한다. 본 발명의 이 실시예에서, 프로세서(102)에서의 코어(104)는 예를 들어, 중앙 처리 유닛(central processing unit, CPU)일 수 있거나, 다른 애플리케이션-특정 집적 회로(application-specific integrated circuit, ASIC)일 수 있다는 것이 이해될 수 있다.
메모리 제어기(memory controller)(106)는 컴퓨터 시스템(100)에 있고 NVDIMM(108)을 제어하고 NVDIMM(108)으로부터 코어(104)로의 데이터 송신을 관리하고 계획하도록 구성되는 버스 회로 제어기이다. 메모리 제어기(106)를 통해 NVDIMM(108)과 코어(104) 사이에서 데이터가 교환될 수 있다. 메모리 제어기(106)는 별개의 칩일 수 있고, 시스템 버스를 통해 코어(104)에 접속된다. 본 기술분야의 통상의 기술자는 메모리 제어기(106)가 대안적으로 (도 1에 도시된 바와 같이) 프로세서(102)에 통합될 수 있거나, 노스브리지에 내장될 수 있다는 것을 알 수 있다. 메모리 제어기(106)의 특정 위치는 본 발명의 본 실시예에서 제한되지 않는다. 실제 응용에서, 메모리 제어기(106)는 통신 인터페이스(1062) 및 제어 회로(1064)를 포함할 수 있고, 메모리 제어기(106)는 통신 인터페이스(1062)를 통해 프로세서(102) 및 NVDIMM(108)과 통신할 수 있다. 메모리 제어기(106)는 제어 회로(1064)를 사용하여 필요한 논리를 제어하여, NVDIMM(108)에 데이터를 기입하거나 NVDIMM(108)으로부터 데이터를 판독할 수 있다.
NVDIMM(108)은 컴퓨터 시스템(100)의 랜덤 액세스 메모리 RAM이고, 컴퓨터 시스템(100)에서의 메모리 또는 저장소로서 사용될 수 있다. NVDIMM(108)은 매체 제어기(110), 적어도 하나의 비휘발성 메모리 NVM(112), 및 버퍼(114)를 포함할 수 있다. 매체 제어기(110)는 제어 능력을 갖는 논리 회로를 포함할 수 있다. NVM(112)은 운영 체제 상에서 현재 실행 중인 다양한 소프트웨어, 입력 및 출력 데이터, 외부 스토리지와 교환되는 정보 등을 저장하도록 구성된다. NVM(112)은 칩 형태로 존재할 수 있다. 전술한 바와 같이, NVM(112)은 상 변화 메모리(phase change memory, PCM), 저항성 랜덤 액세스 메모리(resistive random access memory, RRAM), 자기 랜덤 액세스 메모리(magnetic random access memory, MRAM), 또는 스핀-전달 토크 MRAM(spin-transfer torque MRAM, STT-MRAM)과 같은, 메모리로서 사용될 수 있는 비휘발성 메모리를 포함할 수 있다.
메모리 제어기(106)는 버스(105)를 통해 NVDIMM(108)에 접속된다. 메모리 제어기(106)는 NVDIMM-P 프로토콜을 따르는 것에 의해 NVDIMM(108)과 통신한다. NVDIMM-P 프로토콜은 더블 데이터 레이트(double data rate, DDR) 프로토콜과 호환가능한 버스 액세스 프로토콜이다. 매체 제어기(110)는, 메모리 제어기(106)의 액세스 커맨드에 기초하여, NVM(112)에 저장되는 데이터에 액세스할 수 있다. 메모리 제어기(106)에 의해 전송된 액세스 커맨드는 판독 커맨드 또는 기입 커맨드일 수 있다는 점이 이해될 수 있다. 매체 제어기(110)는 메모리 제어기(106)에 의해 전송된 판독 커맨드에 기초하여 NVM(112)으로부터 데이터를 판독할 수 있다. 대안적으로, 매체 제어기(110)는 메모리 제어기(106)에 의해 전송된 기입 커맨드에 기초하여 NVM(112)에 데이터를 기입할 수 있다.
본 발명의 이 실시예에서 버스(105)는 데이터 버스, 커맨드/어드레스 버스, 및 판독 데이터 준비 피드백 버스를 포함할 수 있다. 데이터 버스는 데이터 및 메타데이터를 송신하도록 구성된다. 커맨드/어드레스 버스는 판독 커맨드 또는 기입 커맨드와 같은 액세스 커맨드를 송신하도록 구성된다. 판독 데이터 준비 피드백 버스는 판독될 데이터가 NVDIMM에서 준비되어 있다는 것을 메모리 제어기(106)에 통지하기 위해 사용되는 준비 신호(ready signal)를 전송하도록 구성된다. 실제 응용에서, 메모리 제어기(106)가 NVDIMM(108)으로부터 버스(105)를 통해 데이터를 판독할 때, 메모리 제어기(106)는 커맨드/어드레스 버스에 기초하여 판독 커맨드를 먼저 전송한다. NVDIMM(108)에서의 매체 제어기(110)가 판독 커맨드에서의 목적지 어드레스에 기초하여 NVM(112)으로부터 판독될 데이터를 획득한 후, NVDIMM(108)은 데이터가 NVDIMM에 준비되어 있다는 것을 통지하기 위해 사용되는 준비 신호를, 판독 데이터 준비 피드백 버스를 통해 메모리 제어기(106)에 전송한다. NVDIMM(108)에 의해 전송된 준비 신호를 수신한 후, 메모리 제어기(106)는 데이터를 획득하기 위해 사용되는 send 커맨드를, 커맨드/어드레스 버스를 통해 NVDIMM(108)에 전송한다. 메모리 제어기(106)에 의해 send 커맨드를 전송하는데 있어서의 고정 지연 후에, 매체 제어기(110)는 NVDIMM(108)의 버퍼에서의 준비된 데이터를 데이터 버스를 통해 메모리 제어기(106)에 반환한다. NVDIMM-P 프로토콜은 NVM 판독 커맨드의 비순차 실행을 지원하기 때문에, 실제 응용에서, 메모리 제어기(106)가 send 커맨드를 전송할 때, 그에 응답하여 매체 제어기(110)에 의해 데이터가 반환되는 특정 판독 커맨드를 결정할 수 없다.
버퍼(114)는 NVM(112)으로부터 매체 제어기(110)에 의해 판독된 데이터를 일시적으로 저장하도록 구성된다. 버퍼(114)는 버퍼 큐를 포함할 수 있다. 일반적으로, 버퍼 큐는 선입 선출 시퀀스(first in first out sequence)로 데이터를 버퍼링한다. 매체 제어기(110)는 버퍼(114)에서의 데이터의 시퀀스에 기초하여 버퍼(114)에서의 데이터를 스케줄링할 수 있다. 예를 들어, 매체 제어기(110)는 버퍼 큐에서의 데이터의 시퀀스에 기초하여 데이터를 NVM(112)에 기입하거나 버퍼링된 데이터를 메모리 제어기(106)에 전송할 수 있다. 본 발명의 이 실시예에서, 매체 제어기(110)는 선입 선출 시퀀스로 데이터를 스케줄링하지 않을 수 있지만, 데이터의 우선순위 또는 응용 요구에 기초하여 버퍼 큐에서의 데이터를 스케줄링한다. 실제 응용에서, NVDIMM(108)은 NVM(112)에 기입될 데이터를 일시적으로 저장하도록 구성되는 (도 1에 도시되지 않은) 기입 버퍼를 추가로 포함할 수 있다는 점이 이해될 수 있다.
본 기술분야의 통상의 기술자는 NVDIMM-P 버스 프로토콜이 표준 DDR 버스 프로토콜과 호환가능하기 때문에, NVDIMM-P 버스 프로토콜에서의 데이터 버스가 재사용될 수 있다는 것을 알 수 있다. 이러한 방식으로, 메모리 제어기에 의해 전송된 기입 커맨드 및 데이터를 획득하기 위해 사용되는 send 커맨드 둘 다는 동일한 데이터 버스를 재사용한다. 따라서, 버스 상에서 커맨드들의 충돌을 방지하기 위해, send 커맨드를 매체 제어기에 전송할 때, 메모리 제어기는 send 커맨드에 기초하여 반환된 데이터의 송신 시간을 결정하여, 다음 커맨드를 전송하기 위한 시간을 결정할 필요가 있어서, 각각의 액세스 커맨드는 정확하게 스케줄링될 수 있다. 그러나, NVDIMM-P 프로토콜은 NVM 판독 커맨드의 비순차적 실행을 지원한다. 따라서, 상이한 길이를 갖는 데이터에 액세스하기 위한 판독 커맨드들을 처리하는 프로세스에서, 메모리 제어기는 send 커맨드를 전송할 때, 매체 제어기(110)에 의해 반환된 데이터가 속하는 특정 판독 커맨드를 알 수 없고, 따라서 메모리 제어기에 의해 수신된 데이터의 길이를 알 수 없다. 또한, 메모리 제어기는 send 커맨드를 전송할 때, 반환된 데이터의 송신 시간을 결정할 수 없다. 전술한 이유들에 기초하여, 전술한 바와 같이, 종래 기술에서, 메모리 제어기(106)는 일반적으로 NVDIMM(108)에 고정 길이 판독 커맨드를 전송한다. 예를 들어, 메모리 제어기(106)는 64B 데이터를 판독하기 위해 사용되는 판독 커맨드 또는 128B 데이터를 판독하기 위해 사용되는 판독 커맨드를, NVDIMM(108)에 전송한다. 프로세서는 상이한 길이를 갖는 데이터를 판독하기 위한 요건을 갖는다. 따라서, 메모리 제어기(106)가 NVDIMM(108)에 고정 길이 판독 커맨드를 전송하는 방식은 판독 커맨드들의 수량에서의 증가 또는 버스(105)의 대역폭의 낭비를 야기할 수 있어, 시스템 성능의 개선에 영향을 미친다. 또한, 웨어 레벨링은 일반적으로 수신된 액세스 커맨드에 기초하여 NVDIMM 내에서 수행될 필요가 있다. 커맨드들의 증가된 수량은 웨어 레벨링의 작업을 증가시킬 수 있고, 결과적으로 종래 기술에서의 메모리 액세스 방법은 시스템 성능을 개선하는 데 도움이 되지 않는다. 따라서, 대역폭을 절약하고 시스템 성능을 개선하기 위해, 메모리 제어기(106)에 의해 NVDIMM(108)과 상이한 길이를 갖는 데이터의 판독을 지원할 수 있는 컴퓨터 시스템을 제공하는 것이 필요하다.
이하에서는, 도 1을 참조하여, 컴퓨터 시스템(100)이 상이한 요건들에 기초하여 NVDIMM(108)으로부터 상이한 길이를 갖는 데이터를 판독하는 방법을 상세히 설명한다. 즉, 본 발명의 실시예들에서 제공되는 컴퓨터 시스템(100)은 다중 길이(multi-length) 판독 커맨드를 지원할 수 있다. 종래 기술의 판독 커맨드와 실시예들에서의 판독 커맨드를 구별하기 위해, 본 발명의 이 실시예에서, 메모리 제어기(106)에 의해 매체 제어기(110)에 전송된 판독 커맨드는 XREAD 커맨드로서 지칭된다. 도 2는 본 발명의 실시예에 따른 데이터 판독 방법의 시그널링 도면이다. 도 2에 도시된 바와 같이, 본 방법은 이하의 단계들을 포함할 수 있다.
단계 202: 프로세서(102)는 제1 액세스 요청을 메모리 제어기(106)에 전송한다. 제1 액세스 요청은 제1 논리 어드레스 및 제1 길이를 운반하고, 제1 길이는 프로세서(102)에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용되고, 제1 논리 어드레스는 판독될 제1 데이터의 어드레스를 표시하기 위해 사용된다.
단계 204: 메모리 제어기(106)는 제1 액세스 요청에 기초하여 제1 판독 커맨드를 매체 제어기(110)에 전송하고, 여기서 제1 판독 커맨드는 제1 ID, 제1 어드레스, 및 제1 길이를 운반하고, 제1 길이는 제1 판독 커맨드에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용된다. 제1 어드레스는 NVM(112)에서의 제1 데이터의 물리 어드레스를 표시하기 위해 사용된다.
본 발명의 이 실시예에서, 제1 판독 커맨드의 포맷이 도 3에 도시될 수 있다. 도 3은 본 발명의 실시예에 따른 XREAD 커맨드의 데이터 구조의 개략도이다. XREAD 커맨드는 2개의 기간에서 송신된다. 제1 기간에서의 칩 선택(chip select, CS) 신호는 로우(L)이고, 제2 기간은 제1 기간에 후속하고, 제2 기간에서의 칩 선택 신호는 하이(H)이다. 각각의 기간은 클록 신호의 상승 에지 및 클록 신호의 하강 에지를 추가로 포함한다. 도 3에 도시된 바와 같이, NVDIMM-P 프로토콜에 따르면, 커맨드/어드레스 버스 클록 신호의 상승 에지 및 하강 에지 둘 다는 데이터 정보를 송신하기 위해 사용될 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 클록 신호의 상승 에지 상에서 송신되는 정보에 대해서는, 도 3의 "커맨드/어드레스 신호 상승(Command/Address Signal Rising) CLK_t" 부분을 참조한다. 클록 신호의 하강 에지 상에서 송신되는 정보에 대해서는, 도 3의 "커맨드/어드레스 신호 하강(Command/Address Signal Falling) CLK_t" 부분을 참조한다. 구체적으로, 본 발명의 이 실시예에서 제공되는 XREAD 커맨드는 다음의 필드들을 포함할 수 있다. "CS" 비트는 칩 선택 신호 필드이고, NVDIMM이 선택되는지를 표시하기 위해 사용된다. 필드 Length[2:0]는 XREAD 커맨드에 의해 판독될 데이터의 길이를 표시하기 위해 사용된다. 필드들 ADDR[11:5] 및 ADDR[4:1]은 XREAD 커맨드에 의해 판독될 데이터의 어드레스를 표시하기 위해 사용된다. 필드들 RID[9:7] 및 RID[6:0]은 XREAD 커맨드의 ID를 표시하기 위해 사용된다. 필드 "RFU"는 미사용된 예약된 필드이다. 본 기술분야의 통상의 기술자는 도 3에 도시된 XREAD 커맨드에서의 각각의 필드가 도 1에 도시된 버스(105)의 커맨드/어드레스 버스를 통해 송신될 수 있다는 것을 알 수 있다. 버스(105)는 NVDIMM-P 프로토콜을 따른다.
본 발명의 이 실시예에서, 제1 판독 커맨드는 제1 판독 커맨드의 제1 ID를 포함할 수 있고, 제1 ID는 제1 판독 커맨드의 식별자이다. 예를 들어, 제1 ID는 식별을 위해 도 3의 필드들 RID[9:7] 및 RID[6:0]을 사용할 수 있다. 또한, 제1 판독 커맨드는 판독될 데이터의 어드레스를 추가로 포함할 수 있다. 설명의 용이함을 위해, 본 발명의 이 실시예에서, 제1 판독 커맨드에서 운반되는 판독될 데이터의 어드레스는 제1 어드레스로서 지칭된다. 예를 들어, 제1 어드레스는 식별을 위해 도 3의 필드들 ADDR[11:5] 및 ADDR[4:1]을 사용할 수 있다. 제1 어드레스는 NVM(112)에서의 제1 데이터의 물리 어드레스라는 점을 유의해야 한다.
본 발명의 이 실시예에서 제공되는 컴퓨터 시스템이 프로세서의 다중 길이(multi-length) 판독 커맨드를 지원하게 하기 위해, 메모리 제어기(106)에 의해 매체 제어기(110)에 전송된 제1 판독 커맨드에서, 일부 필드들은 제1 판독 커맨드에 의해 판독될 제1 데이터의 길이를 표시하기 위해 추가로 필요할 수 있다. 예를 들어, 도 3에서의 필드 "Length[2:0]"는 제1 데이터의 길이를 표시하기 위해 사용될 수 있다. 이러한 방식으로, 필드 "Length[2:0]"는 메모리 제어기(106)에 의해 판독될 데이터에 포함된 64B(byte) 데이터 블록들의 수량을 표시하기 위해 사용될 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 필드 "Length[2:0]"는 3 비트를 가질 수 있고, 필드 "Length[2:0]"는 000 내지 111을 사용하여 표시될 수 있다. 이에 대응하여, 필드 "Length[2:0]"는 메모리 제어기에 의해 판독될 데이터의 길이가 64B 내지 512B일 수 있음을 표시하기 위해 사용될 수 있다. 즉, 도 3에 도시된 XREAD 커맨드의 데이터 포맷에 기초하여, 컴퓨터 시스템(100)은 512B 데이터를 한 번 판독하는 판독 동작을 지원할 수 있다.
도 3에서의 필드 "Length[2:0]"는 단지 예이고, 판독될 데이터의 길이를 제한하려는 의도는 아니라는 점을 유의해야 한다. 실제 응용에서, 더 예약된 필드들은 판독될 데이터의 길이를 나타내기 위해 사용될 수 있다. 예를 들어, 실제 응용에서, 도 3에 도시된 필드 "RFU"는 판독될 데이터의 길이를 표시하기 위해 추가로 사용될 수 있다. 이 경우, 판독될 데이터의 길이를 표시하기 위해 사용되는 필드는 4 비트를 포함할 수 있고, 필드는 0000 내지 1111의 값들을 표시할 수 있다. 컴퓨터 시스템(100)에 의해 판독될 수 있는 데이터는 64Bx16=1024B일 수 있다. 또한, 본 발명의 이 실시예에서, 64B의 입도가 필드 "Length[2:0]"에 의해 표시되는 판독될 데이터의 크기에 대한 예로서 사용된다. 이러한 방식으로, 판독될 데이터의 크기는 64B의 배수이다. 실제 응용에서, 32B, 128B, 또는 다른 크기의 입도는 대안적으로 필드 "Length[2:0]"에 의해 표시된 판독될 데이터의 크기에 대해 사용될 수 있고, 본 발명의 이 실시예에서 제한이 부과되지 않는다.
단계 206: 매체 제어기(110)는 제1 어드레스에 기초하여 NVM(112)으로부터 제1 데이터를 판독한다. 구체적으로, 매체 제어기(110)는 제1 어드레스 및 제1 길이에 기초하여 NVM(112)으로부터 제1 데이터를 판독한다. 제1 데이터를 판독한 후에, 매체 제어기(110)는 제1 데이터를 버퍼(buffer)에 일시적으로 저장할 수 있다. 본 발명의 이 실시예에서, 제1 데이터를 판독한 후에, 매체 제어기(110)는 64B의 입도를 단위로서 사용하는 것에 의해 블로킹(blocking) 방식으로 제1 데이터를 버퍼링할 수 있다. 예를 들어, 제1 길이가 128B이면, 제1 데이터는 2개의 64B 데이터 블록으로 분할될 수 있고, 2개의 데이터 블록은 NVDIMM(108)의 버퍼(114)에 개별적으로 저장될 수 있다. 각각의 데이터 블록을 저장하는 프로세스에서, 데이터 블록이 속하는 판독 커맨드의 ID 및 판독 커맨드에 의해 판독될 데이터에서의 데이터 블록의 위치는 각각의 데이터 블록에 마킹될 수 있다. 예를 들어, 제1 데이터의 제1 길이가 128B이면, 매체 제어기(110)는 제1 데이터를 저장하기 위해 제1 데이터 서브블록 및 제2 데이터 서브블록으로 분할하고, 제1 ID 및 제1 데이터에서의 제1 데이터 서브블록의 위치를 제1 데이터 서브블록의 메타데이터 정보에 기록할 수 있다. 제1 데이터에서의 제1 데이터 서브블록의 위치는 제1 데이터에서의 제1 데이터 서브블록의 오프셋을 의미한다. 예를 들어, 제1 데이터 서브블록이 제1 데이터에서 최상위 64B이고, 제2 데이터 서브블록이 제1 데이터에서 최하위 64B이면, 제1 데이터 서브블록의 위치 정보는 제1 데이터 서브블록의 메타데이터에서 1로서 기록될 수 있고, 제2 데이터 서브블록의 위치 정보는 제2 데이터 서브블록의 메타데이터에서 0으로서 기록될 수 있다.
"0" 및 "1"은 데이터 블록의 메타데이터에서의 위치 식별자의 일례일 뿐이라는 것이 이해될 수 있다. 데이터 블록의 메타데이터에서의 위치 표시 비트는 단지 1 비트가 아닐 수 있고, 복수의 비트의 필드가 판독될 데이터에서의 데이터 블록의 위치를 표시하기 위해 사용될 수 있다는 점이 이해될 수 있다. 예를 들어, 데이터 블록의 위치를 표시하기 위해 3 비트의 필드가 사용되는 경우, 000 내지 111은 판독될 데이터에서의 데이터 블록들의 8개의 상이한 위치를 각각 표시하기 위해 사용될 수 있다.
단계 208: 매체 제어기(110)는 준비 신호를 메모리 제어기(106)에 전송한다. 준비 신호는 판독될 데이터가 NVDIMM(108)의 버퍼에 저장되는 것을 메모리 제어기(106)에 통지하기 위해 사용된다. 본 기술분야의 통상의 기술자는, NVM의 액세스 지연이 고정되지 않기 때문에, NVDIMM이 동적 랜덤 액세스 메모리 DRAM의 방식으로, 판독 커맨드를 수신한 후 고정된 시간 내에 판독 커맨드에 의해 판독될 데이터를 메모리 제어기에 반환할 수 없다는 것을 알 수 있다. 따라서, 데이터를 판독하는 프로세스에서 데이터 피드백을 위해 사용되는 준비 신호는 NVDIMM-P 프로토콜에서 정의된다. 이것은 또한 NVDIMM-P 프로토콜과 DDR 버스 프로토콜 사이의 차이이다. 준비 신호는 NVDIMM이 메모리 제어기에 의해 판독될 데이터를 준비한 것을 메모리 제어기에 통지하기 위해 사용된다. 준비 신호를 수신한 후에, 메모리 제어기는 send 커맨드를 사용하여 NVDIMM의 버퍼(buffer)로부터 준비된 데이터를 획득할 수 있다.
단계 210: 메모리 제어기(106)는 send 커맨드를 매체 제어기(110)에 전송한다. send 커맨드는 NVDIMM의 버퍼에 일시적으로 저장되는 제3 길이의 데이터 블록을 판독하기 위해 사용된다. 데이터가 NVDIMM의 버퍼에 저장될 때, 매체 제어기는 준비 신호를 메모리 제어기(106)에 전송한다는 점을 유의해야 한다. NVDIMM-P 프로토콜이 NVM 판독 커맨드의 비순차 실행을 지원하기 때문에, 이 경우, 메모리 제어기(106)는 NVDIMM이 데이터를 준비하는 특정 판독 커맨드를 알 수 없다. 위에서 언급된 바와 같이, 다중 길이 데이터를 판독하기 위해 사용되는 판독 커맨드를 처리하는 경우에, 메모리 제어기(106)는 send 커맨드를 매체 제어기(110)에 전송할 때, 메모리 제어기(106)에 의해 획득될 데이터의 크기를 알지 못하고, 따라서 반환될 데이터의 송신 시간을 결정할 수 없다. 본 발명의 이 실시예에서, 버스 상에서 커맨드들의 무질서를 피하기 위해, 프로세서에 의해 전송된 액세스 요청이 상이한 길이를 갖는 데이터를 판독할 수 있더라도, 메모리 제어기(106)는 고정 길이(예를 들어, 제3 길이) 데이터를 획득하는 방식으로 send 커맨드를 전송한다. 이러한 방식으로, 상이한 액세스 요청들이 판독될 데이터의 상이한 크기들을 갖더라도, 한번 획득된 데이터의 길이가 고정되기 때문에, 매체 제어기(110)에 의해 반환되는 데이터의 송신 시간이 결정될 수 있다. 따라서, 메모리 제어기(106)는, NVDIMM으로부터의 판독될 데이터를 획득하기 위해, 고정된 데이터 송신 시간에 기초하여 send 커맨드를 매체 제어기(110)에 전송할 수 있다. 제3 길이는 실제 응용에 따라 설정될 수 있다는 점이 이해될 수 있다. 실제 응용에서, 대역폭을 절약하기 위해, 제3 길이는 64B일 수 있다.
단계 212: 매체 제어기(110)는 send 커맨드에 기초하여 제3 길이의 데이터 블록 및 대응하는 메타데이터를 메모리 제어기(106)에 반환한다. 본 기술분야의 통상의 기술자는, send 커맨드를 수신할 때, 매체 제어기(110)가 제3 길이와 동일한 크기의 데이터 블록 및 대응하는 메타데이터를 반환한다는 것을 알 수 있다. 데이터의 메타데이터는 데이터를 설명하기 위해 사용되는 정보이다. 실제 응용에서, send 커맨드에 기초하여 메모리 제어기(106)에 데이터를 반환할 때, 매체 제어기(110)는 일반적으로 데이터 블록 및 대응하는 메타데이터를 함께 반환한다. 설명의 용이함을 위해, 본 발명의 이 실시예에서, 매체 제어기(110)에 의해 반환되는 제3 길이의 데이터 블록 및 대응하는 메타데이터는 대안적으로, 반환된 데이터로서 총괄하여 지칭될 수 있다. 매체 제어기(110)에 의해 반환된 데이터의 포맷이 도 4에 도시될 수 있다. 도 4에 도시된 바와 같이, 반환된 데이터는 다음의 정보: 데이터(402), ECC(404), ID(406), 및 위치(408)를 포함할 수 있다. 필드 데이터(402)는 제3 길이의 데이터 블록이다. 예를 들어, 필드 데이터(402)는 64B 데이터 블록일 수 있다. 제3 길이는 실제 요구에 따라 설정될 수 있다는 점이 이해될 수 있다. 예를 들어, 제3 길이가 고정 길이이면, 제3 길이는 64B 또는 128B로 설정될 수 있다. 필드 ECC(404)는 데이터 블록의 오류 정정 정보를 표시하기 위해 사용된다. 실제 응용에서, 필드 ECC(404)는 12B를 점유할 수 있다. 또한, 실제 응용에서, 반환된 데이터는 필드 ECC(404)를 포함하지 않을 수 있다. 필드 ID(406)는 데이터 블록이 속하는 판독 커맨드를 표시하기 위해 사용된다. 예를 들어, 전술한 제1 판독 커맨드를 예로서 사용하여, 제1 판독 커맨드에 의해 판독될 제1 데이터가 제1 데이터 서브블록 및 제2 데이터 서브블록으로 분할되면, 메모리 제어기(106)에 의해 전송된 2개의 send 커맨드에 기초하여 매체 제어기(110)에 의해 반환된 데이터 블록들의 메타데이터에서, 제1 데이터 서브블록의 ID 및 제2 데이터 서브블록의 ID는 각각 제1 판독 커맨드의 ID일 수 있다. 위치(408)는 ID(406)에 의해 표시되는 판독 커맨드에 의해 판독될 데이터에서의 반환된 데이터 서브블록의 위치를 표시하기 위해 사용된다. 예를 들어, 매체 제어기(110)가 제1 데이터 서브블록을 반환할 때, 위치(408)는 반환된 제1 데이터 서브블록이 제1 판독 커맨드에 의해 판독될 데이터에서 최상위 64B라는 것을 표시하기 위해 "1"일 수 있다.
실제 응용에서, 필드 ECC(404), 필드 ID(406), 및 필드 위치(408)는 반환된 데이터 서브블록의 메타데이터에 포함될 수 있다. 도 5는 본 발명의 실시예에 따른 send 커맨드에 기초하여 반환된 데이터 블록의 메타데이터의 데이터 구조의 개략도이다. 도면에 도시된 바와 같이, M0 및 M1은 메타데이터를 송신하기 위해 2개의 신호 케이블에서 송신되는 신호들을 표시하기 위해 사용된다. "RID" 필드는 데이터 블록이 속하는 판독 커맨드를 표시하기 위해 사용된다. 즉, 매체 제어기(110)에 의해 반환된 데이터 블록을 수신한 후에, 메모리 제어기(106)는, 필드 "RID"에 기초하여, 반환된 데이터 블록을 판독하는 특정 판독 커맨드를 식별할 수 있다. 필드 "SB"는 필드 "RID"에 의해 표시되는 판독 커맨드에 의해 판독될 데이터에서의 반환된 데이터 블록의 오프셋을 표시하기 위해 사용된다.
도 5에 도시된 데이터 구조에서, RID가 10 비트를 점유하고 SB가 3 비트를 점유하는 것이 설명을 위한 예로서 사용된다. 메타데이터에서의 RID 정보는 도 3에 도시된 XREAD 커맨드에서의 필드들 RID[9:7] 및 RID[6:0]에 대응하고, 데이터 서브블록이 속하는 판독 커맨드를 표시하기 위해 사용된다. SB에 의해 점유된 3 비트는 도 3에 도시된 XREAD 커맨드에서 "Length[2:0]"에서의 3 비트에 대응한다. 이러한 방식으로, XREAD 커맨드에서의 Length[2:0]=7인 경우, 이것은 판독될 필요가 있는 데이터의 길이가 8개의 64B 데이터 블록인 것을 표시한다. 반환된 데이터 블록에서, SB[2:0]=0인 경우, 이것은 반환된 데이터 서브블록이 판독될 데이터에서의 제1 데이터 서브블록인 것을 표시한다. SB[2:0]=7인 경우, 이것은 반환된 데이터 서브블록이 판독될 데이터에서의 제8 데이터 서브블록인 것을 표시한다. 실제 응용에서, 필드 ID(406) 및 필드 위치(408)에 의해 점유된 비트들의 수량은 실제 요구에 따라 설정될 수 있다는 점이 이해될 수 있다. 본 발명의 이러한 실시예에서 제한이 부과되지 않는다.
본 기술분야의 통상의 기술자는, NVDIMM(108) 내에 있는, 반환될 판독 데이터를 일시적으로 저장하기 위해 사용되는 버퍼(114)에 데이터가 있을 때, 매체 제어기(110)는 준비 신호를 메모리 제어기(106)에 전송한다는 것을 알 수 있다. 메모리 제어기(106)는 매체 제어기(110)에 의해 전송된 준비 신호를 수신한 후, send 커맨드를 매체 제어기(110)에 전송한다. 매체 제어기(110)는 send 커맨드를 수신한 후, send 커맨드에 대한 제3 길이의 데이터 블록을 메모리 제어기(106)에 반환한다. 따라서, 판독 커맨드에 의해 판독될 데이터가 비교적 클 때, 예를 들어, 특정된 제3 길이보다 더 클 때, 단계 208 내지 단계 212는 판독 커맨드에 의해 판독될 데이터를, NVDIMM으로부터 완전히 판독하기 위해 적어도 2번 수행될 필요가 있다는 것이 이해될 것이다. 본 발명의 이 실시예에서, 제1 데이터가 제3 길이보다 큰 길이의 것이라는 것이 예로서 사용된다. 메모리 제어기는 NVDIMM으로부터 제1 데이터를 획득하기 위해 적어도 2개의 send 커맨드를 전송할 필요가 있다. 예를 들어, 메모리 제어기(106)는 적어도 2개의 send 커맨드를 전송하고, 매체 제어기는 적어도 2개의 send 커맨드에 개별적으로 응답하여, 제1 데이터의 적어도 2개의 데이터 서브블록을 메모리 제어기(106)에 개별적으로 전송한다.
단계 214: 메모리 제어기(106)는 수신된 적어도 2개의 데이터 서브블록에 기초하여 제1 데이터를 획득한다. 구체적으로, 메모리 제어기(106)는 send 커맨드에 기초하여 매체 제어기(110)에 의해 반환된 데이터를 수신한 후에, 반환된 데이터 서브블록의 메타데이터에 기초하여, 데이터 서브블록이 속하는 판독 커맨드를 결정할 수 있다. 제1 판독 커맨드에 의해 판독될 제1 데이터가 제3 길이보다 큰 길이의 것이라는 것은 본 발명의 이 실시예에서 예로서 사용된다. 메모리 제어기(106)는 제1 ID를 포함하는 적어도 2개의 데이터 서브블록을 수신한 후에, 적어도 2개의 데이터 블록의 메타데이터에서의 필드 SB에 기초하여 제1 데이터에서의 각각의 데이터 서브블록의 위치를 개별적으로 획득할 수 있어서, 메모리 제어기(106)는, 제1 데이터에서의 각각의 데이터 서브블록의 오프셋에 기초하여, 제1 ID를 포함하는 적어도 2개의 데이터 서브블록에 따라 제1 데이터를 획득할 수 있다. 단계 216: 메모리 제어기(106)는 제1 데이터를 프로세서(102)에 반환한다.
도 2에 도시된 실시예에서, 컴퓨터 시스템(100)에서 메모리 액세스가 어떻게 수행되는지는 비교적 큰 데이터를 판독하는 예를 사용하여 설명된다. 컴퓨터 시스템은 상이한 요건들을 위한 판독 커맨드들을 지원할 수 있기 때문에, 이하에서는 다른 경우를 예로서 사용하여, 컴퓨터 시스템(100)에 의해 작은 데이터를 판독하는 프로세스를 설명한다. 도 6은 본 발명의 실시예에 따른 다른 메모리 액세스 방법의 시그널링 도면이다. 도 6에 도시된 바와 같이, 본 방법은 다음의 단계들을 포함할 수 있다.
단계 602: 프로세서는 제2 액세스 요청을 메모리 제어기(106)에 전송한다. 제2 액세스 요청은 판독될 제2 데이터의 제2 길이를 포함하고, 제2 길이는 제3 길이보다 작거나 같다. 본 발명의 이 실시예에서, 제2 데이터가 64B의 것이라는 것은 설명을 위한 예로서 사용된다.
단계 604: 메모리 제어기(106)는 제2 판독 커맨드를 매체 제어기(110)에 전송한다. 제2 판독 커맨드는 제2 ID, 제2 어드레스 및 제2 길이를 포함한다. 제2 판독 커맨드의 데이터 포맷이 또한 도 3에 도시될 수 있다. 제2 길이는 제2 판독 커맨드에 의해 판독될 제2 데이터의 크기를 표시하기 위해 사용된다. 단계 606: 매체 제어기(110)는 NVM(112)으로부터 제2 데이터를 판독한다. 단계 206과 유사하게, 매체 제어기(110)는 제2 어드레스 및 제2 길이에 기초하여 NVM(112)으로부터 제2 데이터를 판독하고, 판독된 제2 데이터를 NVDIMM의 버퍼에 일시적으로 저장할 수 있다. 제2 데이터를 저장하는 프로세스에서, 제2 데이터 및 제2 데이터의 메타데이터 둘 다가 저장될 필요가 있다. 제2 데이터의 메타데이터는 제2 판독 커맨드의 ID 및 제2 데이터의 위치를 포함할 수 있다. 제2 데이터가 비교적 작기 때문에, 매체 제어기(110)는 제2 데이터를 블로킹 방식으로 일시적으로 저장할 필요가 없다.
단계 608: 매체 제어기(110)는 준비 신호를 메모리 제어기(106)에 전송한다. 단계 610: 메모리 제어기(106)는 send 커맨드를 매체 제어기(110)에 전송한다. 단계 612: 매체 제어기(110)는 제2 데이터 및 제2 데이터의 메타데이터를 메모리 제어기(106)에 반환한다. 매체 제어기(110)에 의해 반환된 데이터의 포맷이 도 4에 도시될 수 있다. 제2 데이터의 메타데이터는 도 5에 도시될 수 있다. 제2 데이터의 크기가 64B이기 때문에, 메모리 제어기가 매체 제어기(110)에 의해 반환된 제2 데이터를 획득한 후에, 단계 614에서, 메모리 제어기(106)는 제2 데이터를 프로세서(102)에 직접 반환할 수 있다.
본 발명의 이 실시예에서, 제2 데이터의 길이가 send 커맨드에 의해 판독되는 데이터의 길이와 동일하기 때문에, 매체 제어기(110)는 제2 데이터를 반환할 때, 제2 데이터가 하나의 데이터 블록만을 갖는다는 것을 표시하기 위해 제2 데이터의 메타데이터에서의 위치 식별자를 000으로 설정할 수 있다는 점을 유의해야 한다. 다른 경우에, 메모리 제어기(106)는 매체 제어기(110)에 의해 반환된 제2 데이터를 수신할 때, 제2 데이터의 메타데이터에서의 제2 ID에 기초하여, 데이터가 제2 판독 커맨드에 의해 판독될 데이터에 속하는 것을 학습하고, 제2 판독 커맨드의 길이가 제3 길이와 동일한 것을 추가로 학습할 수 있다. 이러한 방식으로, 메모리 제어기(106)는 제2 데이터가 단지 하나의 데이터 블록을 가져서, 메모리 제어기(106)가 제2 데이터의 메타데이터에서의 위치 식별자를 의미 없는 식별자로서 고려할 수 있다는 것을 알 수 있다.
도 6에 도시된 실시예는 도 2에 도시된 실시예와 유사하다. 따라서, 도 6에 도시된 실시예에서 관련된 단계들에 관한 세부 사항들에 대해서는, 도 2에서 대응하는 단계의 설명을 참조한다. 도 2에 도시된 실시예와는 상이하게, 제2 액세스 요청에 의해 판독될 제2 데이터가 상대적으로 작기 때문에, 메모리 제어기(106)는 하나의 send 커맨드를 사용하여 제2 데이터를 획득할 수 있다. 따라서, 메모리 제어기(106)가, 매체 제어기(110)에 의해 반환된 제2 데이터의 메타데이터에 기초하여, 제2 판독 커맨드에 의해 판독될 제2 데이터가 완전히 반환된 것으로 결정한 후에, 메모리 제어기는 제2 데이터를 프로세서(102)에 직접 반환할 수 있다.
실제 응용에서, 본 발명의 이 실시예에서 제공되는 컴퓨터 시스템(100)은 상이한 NVM(112) 칩들에 액세스하기 위한 복수의 상이한 판독 커맨드를 동시에 처리할 수 있다. 예를 들어, 컴퓨터 시스템(100)은 제1 판독 커맨드 및 제2 판독 커맨드를 동시에 처리할 수 있다. 도 2 및 도 6은 단지, 컴퓨터 시스템(100)이 상이한 길이를 갖는 데이터를 판독하기 위한 판독 커맨드들을 처리하는 실행 방법의 개략도들이다. 또한, 본 발명의 이 실시예에서 제공되는 컴퓨터 시스템(100)은 판독 커맨드의 비순차적 실행을 추가로 지원할 수 있다. 이러한 방식으로, 도 2의 단계들 및 도 6의 단계들은 교차 수행될 수 있다. 예를 들어, 단계 208 이전에, 메모리 제어기는 단계 604를 수행할 수 있다. 매체 제어기는 데이터를 메모리 제어기(106)에 반환할 때, 도 2에 도시된 제1 판독 커맨드에 의해 판독된 제1 데이터의 일부를 먼저 반환할 수 있거나, 도 6에 도시된 제2 판독 커맨드에 의해 판독된 제2 데이터를 먼저 반환할 수 있다. 따라서, 본 발명의 이 실시예에서, 도 2 및 도 6에 도시된 메모리 액세스 방법들의 단계들의 실행 시퀀스는 제한되지 않는다.
전술한 실시예에서 제공되는 컴퓨터 시스템에서, 프로세서(102)가 상이한 길이를 갖는 데이터를 판독하기 위해 사용되는 액세스 요청들을 전송할 때, 메모리 제어기(106)는 수신된 액세스 요청들에 기초하여 NVDIMM(108)에, 상이한 길이를 갖는 데이터를 판독하기 위해 사용되는 판독 커맨드들을 전송할 수 있다. 메모리 제어기(106)는 비교적 큰 데이터(예를 들어, 제1 데이터)를 판독하기 위해 사용되는 제1 판독 커맨드를 전송할 때, 고정 길이(예를 들어, 제3 길이) 데이터를 판독하기 위해 사용되는 적어도 2개의 send 커맨드를, NVDIMM(108)에서의 매체 제어기에 전송할 수 있다. 제3 길이는 제1 데이터의 제1 길이보다 작다. 매체 제어기(110)는 적어도 2개의 수신된 send 커맨드에 기초하여 제3 길이의 적어도 2개의 데이터 서브블록 및 메타데이터를 메모리 제어기(106)에 반환할 수 있다. 각각의 데이터 서브블록에 대응하는 메타데이터는 제1 데이터에서의 데이터 서브블록의 위치 식별자를 포함한다. 따라서, 메모리 제어기(106)는 적어도 2개의 데이터 서브블록의 메타데이터에서의 반환된 위치 식별자들에 기초하여 적어도 2개의 데이터 서브블록을 제1 데이터로 결합할 수 있다. 본 발명의 이 실시예에서 제공되는 방법은 판독 커맨드들의 수량을 증가시키지 않고 그리고 버스 대역폭을 낭비하지 않고 상이한 길이를 갖는 데이터를 판독하기 위한 판독 요건을 지원할 수 있다.
실제 응용에서, 컴퓨터 시스템(100)은 복수의 상이한 판독 커맨드를 동시에 처리할 수 있기 때문에, 이러한 방식으로, 복수의 판독 커맨드에 의해 판독될 데이터가 NVDIMM(108)의 버퍼(114)에 일시적으로 저장될 수 있다. 실제 응용에서, 데이터가 버퍼(114)에 저장될 때, 매체 제어기(110)는 준비 신호를 메모리 제어기(106)에 전송하여 데이터를 획득하도록 메모리 제어기(106)에 지시한다. 메모리 제어기에 의해 데이터를 획득하는 것에서의 대기 지연을 감소시키기 위해, 본 발명의 이 실시예에서, 버퍼에서의 데이터 블록들의 스케줄링 시퀀스가 추가로 최적화될 수 있다. 이하에서는, 도 5 및 도 7을 참조하여, 본 발명의 실시예들에서 제공되는 컴퓨터 시스템(100)이 메모리 제어기에 의해 데이터를 획득하는 것에서의 대기 지연을 감소시키는 방법을 상세히 설명한다.
본 발명의 이 실시예에서, 메모리 제어기에 의해 데이터를 획득하는 것에서의 대기 지연을 감소시키기 위해, 송신 식별자(LB)가 도 5에 도시된 메타데이터에 더 추가될 수 있다. 송신 식별자 LB는 도 5에 도시된 메타데이터에서 하나의 비트만을 점유한다. 구체적으로, 비트는 송신 식별자로서 도 5에 도시된 메타데이터 구조에서 미사용 비트들(예를 들어, 도 5에서 RFU에 의해 표시된 비트들)로부터 선택될 수 있다. 송신 식별자는 데이터 서브블록이 RID에 의해 표시되는 판독 커맨드에 의해 판독될 데이터에서의 마지막으로 송신될 데이터 블록인지를 표시하기 위해 사용된다. 예를 들어, 제1 데이터가 저장을 위해 적어도 2개의 데이터 서브블록으로 분할될 때, 적어도 2개의 데이터 서브블록 중 임의의 하나는 제1 데이터의 마지막으로 송신될 데이터 서브블록으로서 사용될 수 있다. 이러한 방식으로, 결정된 마지막으로 송신될 데이터 서브블록의 메타데이터에서의 LB 비트는 "1"로서 마킹될 수 있고, 제1 데이터에서의 다른 데이터 서브블록의 메타데이터에서의 LB 비트는 "0"으로서 마킹될 수 있다. "1"은 데이터 서브블록이 마지막으로 송신될 데이터 서브블록의 식별자라는 것을 표시하기 위해 사용되는 예일 뿐이고, "0"은 또한 데이터 서브블록이 마지막으로 송신될 데이터 서브블록의 식별자가 아니라는 것을 표시하기 위해 사용되는 예일 뿐이라는 것이 이해될 수 있다. 다른 식별자가 대안적으로 실제 응용에서 사용될 수 있고, 본 명세서에서는 제한이 부과되지 않는다.
본 발명의 실시예들에서, 메모리 제어기(106)에 의해 판독 커맨드의 데이터를 수신하는 것에서의 대기 지연을 감소시키기 위해, 도 2에 도시된 단계 212 및 도 6에 도시된 단계 612에서, 매체 제어기(110)는 버퍼(114)에 저장되는, 판독 커맨드들의 데이터 서브블록들을 반환하기 위한 시퀀스를 더 최적화할 수 있다. 이하에서는, 도 7 내지 도 9를 참조하여, 본 발명의 실시예들에서의 매체 제어기(110)가 데이터 블록을 메모리 제어기(106)에 반환하는 방법을 상세히 설명한다. 도 7은 본 발명의 실시예에 따른 스케줄링 방법의 흐름도이다. 도 8은 본 발명의 실시예에 따른 스케줄링 방법의 개략도이다. 도 9는 본 발명의 실시예에 따른 다른 스케줄링 방법의 개략도이다. 설명의 명확성을 위해, 제1 데이터 및 제2 데이터의 적어도 2개의 데이터 서브블록이 도 7에 도시된 실시예에서 버퍼(114)에 일시적으로 저장되는 것은 설명을 위한 예로서 사용된다. 도 7에 도시된 바와 같이, 데이터 블록을 메모리 제어기(106)에 반환할 때, 매체 제어기(110)는 다음의 단계들을 수행할 수 있다.
단계 702: 매체 제어기(110)는 제2 데이터가 버퍼(114)에서의 제1 데이터의 제1 데이터 서브블록 이후에 위치되고 버퍼(114)에서의 제1 데이터의 제2 데이터 서브블록 이전에 위치되는 것으로 결정한다. 제1 데이터 서브블록의 송신 식별자는 제1 데이터 서브블록이 제1 데이터의 마지막으로 송신될 데이터 서브블록이 아니라는 것을 표시하고, 제2 데이터 서브블록의 송신 식별자는 제2 데이터 서브블록이 제1 데이터의 마지막으로 송신될 데이터 서브블록이라는 것을 표시한다.
설명의 명확성을 위해, 예가 도 8을 참조하여 설명을 위해 사용된다. 도 8에 도시된 바와 같이, 제1 판독 커맨드 A 및 제2 판독 커맨드 B가 예로서 사용된다. 제1 판독 커맨드 A에 의해 판독될 데이터는 데이터 서브블록 A0, 데이터 서브블록 A1, 및 데이터 서브블록 A2(LB)를 포함하고, 제2 판독 커맨드 B에 의해 판독될 데이터는 데이터 서브블록 B0(LB)을 포함한다. A2(LB)는 A2가 제1 판독 커맨드 A에 의해 판독되는 데이터의 마지막으로 송신될 데이터 서브블록인 것을 표시하기 위해 사용되고, B0(LB)은 B0이 제2 판독 커맨드 B에 의해 판독되는 데이터의 마지막으로 송신될 데이터 서브블록인 것을 표시하기 위해 사용된다. 버퍼(114)에서의 데이터 서브블록들의 버퍼링 시퀀스가 802에 도시된다. 데이터 서브블록 B0(LB)은 데이터 서브블록 A0 및 데이터 서브블록 A1 이후에 위치되고 데이터 서브블록 A2(LB) 이전에 위치된다.
단계 704: 매체 제어기(110)는, 메모리 제어기(106)에 의해 전송된 send 커맨드에 응답하여, 제1 데이터 서브블록보다 앞서 제2 데이터를 메모리 제어기(106)에 전송한다. 구체적으로, 도 8에서의 스케줄링 시퀀스(804)에 의해 도시된 바와 같이, 매체 제어기(110)는 메모리 제어기(106)에 의해 전송된 하나의 send 커맨드에 먼저 응답하여, 제2 데이터 B0(LB)을 메모리 제어기(106)에 전송하고, 그 후 메모리 제어기(106)에 의해 전송된 적어도 2개의 다른 send 커맨드에 응답하여, 제1 데이터 서브블록 A0, 제2 데이터 서브블록 A1 및 제3 데이터 서브블록 A2(LB)를 메모리 제어기(106)에 반환할 수 있다.
하나의 데이터 서브블록을 송신하는데 있어서의 송신 지연은 4개의 기간인 것으로 가정된다. 매체 제어기(110)가 도 8에서 802에 의해 도시된 버퍼링 시퀀스에 기초하여 데이터 서브블록들을 메모리 제어기(106)에 전송하면, 메모리 제어기(106)에 의한 제1 판독 커맨드 A의 모든 데이터 서브블록들을 수신하는 것에서의 대기 지연은 16개의 기간이고, 메모리 제어기(106)에 의한 제2 판독 커맨드 B의 모든 데이터 서브블록들을 수신하는 것에서의 대기 지연은 12개의 기간이다. 메모리 제어기(106)의 대기 지연을 감소시키기 위해, 버퍼(114)에서의 데이터 서브블록들의 전송 시퀀스가 본 발명의 이 실시예에 도시된 방법에 따라 조정된 후에, 예를 들어, 804에 의해 도시된 스케줄링 시퀀스에 기초하여, 매체 제어기(110)는 제1 판독 커맨드 A의 데이터 서브블록들 A0 및 A1보다 앞서 제2 판독 커맨드 B의 데이터 B0(LB)을 메모리 제어기(106)에 전송할 수 있다. 이 경우에, 메모리 제어기(106)에 의해 제1 판독 커맨드 A의 모든 데이터 서브블록들을 수신하는 것에서의 대기 지연은 변경되지 않으며, 여전히 16개의 기간이다. 그러나, 메모리 제어기(106)에 의해 제2 판독 커맨드 B의 모든 데이터 서브블록들을 수신하는 것에서의 대기 지연은 4개의 기간들이고, 그에 의해 메모리 제어기(106)에 의해 제2 판독 커맨드 B의 데이터 서브블록을 수신하는데 있어서의 지연을 감소시키고, 메모리 제어기(106)에 의해 제2 판독 커맨드 B를 처리하는 것에서의 처리 효율을 개선시킨다.
제2 판독 커맨드에 의해 판독될 데이터가 단지 하나의 데이터 서브블록 B0(LB)만을 포함하는 것은 도 8에서의 설명을 위한 예로서 사용된다. 실제 응용에서, 제2 판독 커맨드에 의해 판독될 데이터가 복수의 데이터 서브블록을 포함하는 경우, 제2 판독 커맨드에 의해 판독될 각각의 데이터 서브블록이 버퍼에서 제1 판독 커맨드에 의해 판독될 데이터에서의 데이터 서브블록 이후에 위치되고 버퍼에서 제1 판독 커맨드에 의해 판독될 데이터의 마지막으로 송신될 데이터 서브블록 이전에 위치되면, 매체 제어기(110)는 제1 판독 커맨드에 의해 판독될 데이터 서브블록보다 앞서 제2 판독 커맨드에 의해 판독될 데이터 서브블록을 메모리 제어기(106)에 전송할 수 있다. 도 9의 902에 도시된 바와 같이, 제2 판독 커맨드 B에 의해 판독될 데이터는 B0 및 B1(LB)을 포함한다. B0 및 B1(LB)은 버퍼(114)에서 제1 판독 커맨드 A에 의해 판독될 데이터 서브블록 A0 이후에 위치되고, B0 및 B1(LB)은 버퍼(114)에서 제1 판독 커맨드 A에 의해 판독될 데이터의 마지막으로 송신될 데이터 서브블록 A2(LB) 이전에 위치된다. 매체 제어기(110)는 904에 도시된 스케줄링 시퀀스에 기초하여 데이터 서브블록들을 메모리 제어기(106)에 전송할 수 있다. 구체적으로, 제2 판독 커맨드에 의해 판독될 데이터 B0 및 B1(LB)은 제1 판독 커맨드 A에 의해 판독될 데이터 서브블록 A0보다 앞서 메모리 제어기에 전송될 수 있다. 하나의 데이터 서브블록을 송신하는 것에서의 송신 지연이 4개의 기간인 것은 여전히 예로서 사용된다. 전송 시퀀스가 조정된 후에, 메모리 제어기(106)에 의해, 제2 판독 커맨드 B에 의해 판독되는 데이터를 수신하는 것에서의 지연은 16개의 기간으로부터 8개의 지연으로 감소되고, 메모리 제어기(106)에 의해, 제1 판독 커맨드 A에 의해 판독되는 데이터를 수신하는 것에서의 지연은 여전히 20개의 지연이다. 따라서, 메모리 제어기의 처리 효율은 어느 정도까지 최적화된다.
또한, 공정성을 고려하여, 메모리 제어기(106)에 의해 판독 커맨드의 데이터를 수신하는 것에서의 지연의 증가를 회피하기 위해, 본 발명의 이 실시예에서, 매체 제어기(110)는 버퍼에서 제1 판독 커맨드의 데이터의 마지막으로 송신될 데이터 서브블록 이후에 위치되는 다른 판독 커맨드에 의해 판독될 데이터 서브블록을, 제1 판독 커맨드의 데이터 서브블록보다 앞서 메모리 제어기에 전송할 수 없다. 예를 들어, 도 8 및 도 9에 도시된 바와 같이, 제3 판독 커맨드 C의 데이터 서브블록 C0(LB)은 버퍼(114)에서 제1 판독 커맨드 A의 데이터 서브블록 A2(LB) 이후에 위치되고, 매체 제어기(110)는 C0(LB)을, 제1 판독 커맨드의 데이터 서브블록들 A0, A1, 및 A2(LB)보다 앞서 메모리 제어기(106)에 전송할 수 없다. 매체 제어기(110)가 C0(LB)을, 제1 판독 커맨드의 데이터 서브블록들 A0, A1, 및 A2(LB)보다 앞서 메모리 제어기(106)에 전송하는 경우, 메모리 제어기(106)에 의해 제1 판독 커맨드 A의 데이터 블록을 수신하는 것에서의 지연이 증가한다. 예를 들어, 도 8에 도시된 예에서, 제3 판독 커맨드 C의 데이터 서브블록이 전송된 후에 제1 판독 커맨드 A의 데이터 서브블록이 전송되는 것으로 가정하면, 메모리 제어기(106)에 의해 제1 판독 커맨드 A의 데이터를 수신하는 것에서의 지연은 16개 기간으로부터 20개의 기간으로 증가한다.
본 발명의 이 실시예에서, 매체 제어기(110)가 데이터 블록들의 전송 시퀀스를 조정할 때, 판독 커맨드에 의해 판독되는 데이터에서 마지막으로 송신될 데이터 블록은 커맨드의 다른 데이터 블록보다 앞서 전송될 수 없다는 점을 유의해야 한다. 예를 들어, 매체 제어기(110)는 제1 판독 커맨드의 데이터 서브블록 A2(LB)를 데이터 서브블록 A0 또는 A1보다 앞서 메모리 제어기(106)에 전송할 수 없다.
전술한 설명으로부터, 본 발명의 실시예들에서의 도 2 및 도 6의 방법들에 기초하여, 판독 데이터를 매체 제어기(110)에 의해 메모리 제어기(106)에 반환하는 프로세스에서, 판독 커맨드들에 의해 판독되는 데이터의 반환 시퀀스가 조정되어, 상이한 길이를 갖는 데이터를 판독하기 위한 판독 커맨드들이 처리될 수 있고, 추가로 메모리 제어기(106)에 의해 데이터를 수신하는 것에서의 지연이 감소될 수 있고, 그에 의해 메모리 제어기(106)의 처리 효율을 개선시킨다는 것을 알 수 있다.
본 기술분야의 통상의 기술자는 본 명세서에서 개시되는 실시예들에서 설명되는 예들과 관련하여 방법 단계들이 전자 하드웨어, 또는 컴퓨터 소프트웨어와 전자 하드웨어의 조합에 의해 구현될 수 있다는 것을 알 수 있다. 기능들이 하드웨어에 의해 수행되는지 또는 소프트웨어에 의해 수행되는지는 기술적 해결책들의 특정한 응용들 및 설계 제약 조건들에 의존한다. 본 기술분야의 통상의 기술자는 각각의 특정한 응용에 대해 설명된 기능들을 구현하기 위해 상이한 방법들을 사용할 수 있지만, 구현이 본 출원의 범위를 벗어나는 것으로 고려되어서는 안 된다.
전술한 실시예들의 전부 또는 일부는 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 구현될 수 있다. 소프트웨어가 실시예들을 구현하기 위해 사용될 때, 실시예들은 컴퓨터 프로그램 제품의 형태로 완전히 또는 부분적으로 구현될 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령어를 포함한다. 컴퓨터 프로그램 명령어들이 컴퓨터 상에서 로딩되고 실행될 때, 본 발명의 실시예들에 따른 절차들 또는 기능들은 모두 또는 부분적으로 생성된다. 컴퓨터는 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크, 또는 다른 프로그램가능 장치일 수 있다. 컴퓨터 명령어들은 컴퓨터 판독가능 저장 매체에 저장될 수 있거나, 컴퓨터 판독가능 저장 매체로부터 다른 컴퓨터 판독가능 저장 매체로 송신될 수 있다. 예를 들어, 컴퓨터 명령어들은 유선(예를 들어, 동축 케이블 및 광섬유) 또는 무선(예를 들어, 적외선, 라디오 및 마이크로파) 방식으로 웹사이트, 컴퓨터, 서버, 또는 데이터 센터로부터 다른 웹사이트, 컴퓨터, 서버 또는 데이터 센터로 송신될 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨터에 의해 액세스가능한 임의의 사용가능 매체, 또는 하나 이상의 사용가능 매체를 통합하는, 서버 또는 데이터 센터와 같은, 데이터 저장 디바이스일 수 있다. 사용가능 매체는 자기 매체(예를 들어, 플로피 디스크, 하드 디스크, 또는 자기 테이프), 광학 매체(예를 들어, 광 디스크), 또는 프로그램 코드를 저장할 수 있는 반도체 매체(예를 들어, 솔리드 스테이트 드라이브(solid-state drive, SSD)와 같은 비일시적(non-transitory) 머신 판독가능 매체일 수 있다.
본 출원에서 제공되는 실시예들은 단지 예들이라는 것을 유의해야 한다. 본 기술분야의 통상의 기술자는 설명의 편의성 및 간결성을 위해, 전술한 실시예들에서, 실시예들이 상이한 양태들을 강조하고, 일 실시예에서 상세하게 설명되지 않은 부분에 대해서는, 다른 실시예의 관련 설명을 참조한다는 것을 명확하게 알 수 있다. 본 발명의 실시예들, 청구항들, 및 첨부 도면들에서 개시된 특징들은 독립적으로 존재할 수도 있거나, 조합하여 존재할 수도 있다. 본 발명의 실시예들에서 하드웨어 형태로 설명된 특징들은 소프트웨어에 의해 실행될 수 있으며, 그 반대로도 가능하며, 이들은 여기서 제한되지 않는다.
Claims (29)
- 컴퓨터 시스템으로서,
메모리 제어기;
버스에 의해 상기 메모리 제어기에 접속된 비휘발성 이중 인라인 메모리 모듈(NVDIMM)
을 포함하고, 상기 NVDIMM은 데이터를 저장하기 위한 비휘발성 메모리(NVM) 및 매체 제어기를 가지며;
상기 메모리 제어기는,
상기 NVDIMM에 저장된 제1 데이터를 판독하기 위한 판독 커맨드를 상기 NVDIMM의 상기 매체 제어기에 전송하고- 상기 제1 데이터는 다수의 데이터 서브블록을 포함하고, 상기 판독 커맨드는 상기 판독 커맨드를 식별하는 식별자를 포함함 -;
상기 매체 제어기로부터, 다수의 준비 신호를 수신하고- 상기 다수의 준비 신호 각각은 상기 제1 데이터의 상기 다수의 데이터 서브블록 중 하나가 이용가능함을 상기 메모리 제어기에 통지함 -;
상기 다수의 데이터 서브블록을 페치하기 위한 다수의 send 커맨드를 상기 매체 제어기에 전송하고- 상기 다수의 send 커맨드 각각은 상기 다수의 준비 신호 중 하나에 응답함 -;
상기 매체 제어기로부터, 상기 제1 데이터의 상기 다수의 데이터 서브블록을 수신하도록 구성되며, 상기 다수의 데이터 서브블록 각각은 상기 판독 커맨드를 식별하는 상기 식별자와 함께 수신되는 컴퓨터 시스템. - 제1항에 있어서, 상기 메모리 제어기는 상기 매체 제어기로부터, 상기 다수의 데이터 서브블록의 메타데이터를 수신하도록 더 구성되고, 상기 다수의 데이터 서브블록 각각의 메타데이터는 상기 제1 데이터 내의 대응하는 데이터 서브블록의 오프셋을 표시하는 위치 ID를 포함하는 컴퓨터 시스템.
- 제1항 또는 제2항에 있어서, 상기 메모리 제어기는 더블 데이터 레이트(DDR) 버스 프로토콜과 호환가능한 버스 액세스 프로토콜을 준수함으로써 상기 매체 제어기와 통신하는 컴퓨터 시스템.
- 제1항 또는 제2항에 있어서, 상기 메모리 제어기는 NVDIMM-P 버스 프로토콜을 준수함으로써 상기 매체 제어기와 통신하는 컴퓨터 시스템.
- 제2항에 있어서, 상기 위치 ID는 3 비트를 점유하는 컴퓨터 시스템.
- 제1항, 제2항, 및 제5항 중 어느 한 항에 있어서, 상기 다수의 데이터 서브블록 각각의 크기는 64 바이트인 컴퓨터 시스템.
- 제1항, 제2항, 및 제5항 중 어느 한 항에 있어서,
상기 NVM에 결합되고, 상기 제1 데이터의 상기 다수의 데이터 서브블록 및 상기 NVM으로부터 판독된 제2 데이터를 일시적으로 저장하도록 구성된 버퍼를 더 포함하고, 상기 제2 데이터의 크기는 상기 제1 데이터의 상기 다수의 데이터 서브블록 중 하나의 크기와 동일하고,
상기 매체 제어기는 상기 제2 데이터가 상기 버퍼에서 상기 제1 데이터의 제1 데이터 서브블록 이후에 그리고 상기 버퍼에서 상기 제1 데이터의 제2 데이터 서브블록 이전에 위치될 때 상기 버퍼에서 상기 제1 데이터의 상기 제1 데이터 서브블록을 전송하기 전에 상기 제2 데이터를 상기 메모리 제어기에 전송하도록 구성되고, 상기 제2 데이터 서브블록은 상기 제1 데이터의 마지막 송신될 데이터 서브블록인 컴퓨터 시스템. - 비휘발성 이중 인라인 메모리 모듈(NVDIMM)로서,
데이터를 저장하기 위한 비휘발성 메모리(NVM); 및
상기 NVM에 결합된 매체 제어기
를 포함하고, 상기 매체 제어기는,
컴퓨터 시스템의 메모리 제어기로부터, 상기 NVM에 저장된 제1 데이터를 판독하기 위한 판독 커맨드를 수신하고- 상기 제1 데이터는 다수의 데이터 서브블록을 포함하고, 상기 판독 커맨드는 상기 판독 커맨드를 식별하는 식별자를 포함함 -;
상기 메모리 제어기에, 상기 제1 데이터의 다수의 데이터 서브블록이 이용가능함을 상기 메모리 제어기에 통지하기 위한 다수의 준비 신호를 전송하고- 상기 다수의 준비 신호 각각은 상기 다수의 데이터 블록 중 하나에 대응함 -;
상기 메모리 제어기로부터, 상기 다수의 데이터 서브블록을 페치하기 위한 다수의 send 커맨드를 수신하고- 상기 다수의 send 커맨드 각각은 상기 다수의 준비 신호 중 하나에 응답함 -;
상기 다수의 send 커맨드에 응답하여, 상기 다수의 데이터 서브블록을 상기 메모리 제어기에 전송하도록 구성되며, 상기 다수의 데이터 서브블록 각각은 상기 판독 커맨드를 식별하는 상기 식별자와 함께 전송되는 NVDIMM. - 제8항에 있어서, 상기 매체 제어기에 결합되고, 상기 NVM으로부터 판독된 상기 제1 데이터의 상기 다수의 데이터 서브블록을 일시적으로 저장하도록 구성된 버퍼를 더 포함하는 NVDIMM.
- 제9항에 있어서, 상기 버퍼는 다른 판독 커맨드에 따라 상기 NVM으로부터 판독된 제2 데이터를 일시적으로 저장하도록 더 구성되고, 상기 제2 데이터의 크기는 상기 제1 데이터의 상기 다수의 데이터 서브블록 중 하나의 크기와 동일하고;
상기 매체 제어기는 상기 제2 데이터가 상기 버퍼에서 상기 제1 데이터의 제1 데이터 서브블록 이후에 그리고 상기 버퍼에서 상기 제1 데이터의 제2 데이터 서브블록 이전에 위치될 때 상기 버퍼에서 상기 제1 데이터의 상기 제1 데이터 서브블록을 전송하기 전에 상기 제2 데이터를 상기 메모리 제어기에 전송하도록 더 구성되고, 상기 제2 데이터 서브블록은 상기 제1 데이터의 마지막 송신될 데이터 서브블록인 NVDIMM. - 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 매체 제어기는,
상기 다수의 send 커맨드에 응답하여, 상기 다수의 데이터 서브블록의 메타데이터를 상기 메모리 제어기에 전송하도록 더 구성되고, 상기 다수의 데이터 서브블록 각각의 메타데이터는 상기 제1 데이터 내의 대응하는 데이터 서브블록의 오프셋을 표시하는 위치 ID를 포함하는 NVDIMM. - 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 NVDIMM은 더블 데이터 레이트(DDR) 버스 프로토콜과 호환가능한 버스 액세스 프로토콜을 준수함으로써 상기 메모리 제어기와 통신하는 NVDIMM.
- 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 NVDIMM은 NVDIMM-P 버스 프로토콜을 준수함으로써 상기 메모리 제어기와 통신하는 NVDIMM.
- 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 위치 ID는 3 비트를 점유하는 NVDIMM.
- 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 다수의 데이터 서브블록 각각의 크기는 64 바이트인 NVDIMM.
- 컴퓨터 시스템 내의 메모리 제어기에 의해 수행되는 메모리 액세스 방법으로서,
상기 메모리 제어기에 접속된 비휘발성 이중 인라인 메모리 모듈(NVDIMM)의 매체 제어기에, 상기 NVDIMM의 비휘발성 메모리(NVM)에 저장된 제1 데이터를 판독하기 위한 판독 커맨드를 전송하는 단계- 상기 제1 데이터는 다수의 데이터 서브블록을 포함하고, 상기 판독 커맨드는 상기 판독 커맨드를 식별하는 식별자를 포함함 -;
상기 매체 제어기로부터 다수의 준비 신호를 수신하는 단계- 상기 다수의 준비 신호 각각은 상기 제1 데이터의 상기 다수의 데이터 서브블록 중 하나가 이용가능함을 상기 메모리 제어기에 통지함 -;
상기 다수의 데이터 서브블록을 페치하기 위한 다수의 send 커맨드를 상기 매체 제어기에 전송하는 단계- 상기 다수의 send 커맨드 각각은 상기 다수의 준비 신호 중 하나에 응답함 -; 및
상기 매체 제어기로부터, 상기 제1 데이터의 상기 다수의 데이터 서브블록을 수신하는 단계를 포함하고, 상기 다수의 데이터 서브블록 각각은 상기 판독 커맨드를 식별하는 식별자와 함께 수신되는 메모리 액세스 방법. - 제16항에 있어서,
상기 매체 제어기로부터, 상기 다수의 데이터 서브블록의 메타데이터를 수신하는 단계를 더 포함하고, 상기 다수의 데이터 서브블록 각각의 메타데이터는 상기 제1 데이터 내의 대응하는 데이터 서브블록의 오프셋을 표시하는 위치 ID를 포함하는 메모리 액세스 방법. - 제16항 또는 제17항에 있어서, 상기 메모리 제어기는 더블 데이터 레이트(DDR) 버스 프로토콜과 호환가능한 버스 액세스 프로토콜을 준수함으로써 상기 매체 제어기와 통신하는 메모리 액세스 방법.
- 제16항 또는 제17항에 있어서, 상기 메모리 제어기는 NVDIMM-P 버스 프로토콜을 준수함으로써 상기 매체 제어기와 통신하는 메모리 액세스 방법.
- 제16항 또는 제17항에 있어서, 상기 위치 ID는 3 비트를 점유하는 메모리 액세스 방법.
- 제16항 또는 제17항에 있어서, 상기 다수의 데이터 서브블록 각각의 크기는 64 바이트인 메모리 액세스 방법.
- 비휘발성 이중 인라인 메모리 모듈(NVDIMM)의 매체 제어기에 의해 수행되는 메모리 액세스 방법으로서,
상기 NVDIMM에 접속된 메모리 제어기로부터, 상기 NVDIMM의 비휘발성 메모리(NVM)에 저장된 제1 데이터를 판독하기 위한 판독 커맨드를 수신하는 단계- 상기 제1 데이터는 다수의 데이터 서브블록을 포함하고, 상기 판독 커맨드는 상기 판독 커맨드를 식별하는 식별자를 포함함 -;
상기 메모리 제어기에, 상기 제1 데이터의 다수의 데이터 서브블록이 이용가능함을 상기 메모리 제어기에 통지하기 위한 다수의 준비 신호를 전송하는 단계- 상기 다수의 준비 신호 각각은 상기 다수의 데이터 블록 중 하나에 대응함 -;
상기 메모리 제어기로부터, 상기 다수의 데이터 서브블록을 페치하기 위한 다수의 send 커맨드를 수신하는 단계- 상기 다수의 send 커맨드 각각은 상기 다수의 준비 신호 중 하나에 응답함 -; 및
상기 다수의 send 커맨드에 응답하여, 상기 다수의 데이터 서브블록을 상기 메모리 제어기에 전송하는 단계를 포함하고, 상기 다수의 데이터 서브블록 각각은 상기 판독 커맨드를 식별하는 식별자와 함께 전송되는 메모리 액세스 방법. - 제22항에 있어서,
상기 메모리 제어기로부터, 상기 NVM에 저장된 제2 데이터를 판독하기 위한 다른 판독 커맨드를 수신하는 단계- 상기 제2 데이터의 크기는 상기 제1 데이터의 상기 다수의 데이터 서브블록 중 하나의 크기와 동일함 -;
상기 메모리 제어기에, 상기 제2 데이터가 이용가능함을 상기 메모리 제어기에 통지하기 위한 다른 준비 신호를 송신하는 단계;
상기 메모리 제어기로부터, 상기 제2 데이터를 페치하기 위한 다른 send 커맨드를 수신하는 단계;
제1 데이터 서브블록을 전송하기 전에 상기 제2 데이터를 상기 메모리 제어기에 전송하는 단계를 포함하고, 상기 NVM으로부터 판독된 상기 제2 데이터는 상기 NVDIMM의 버퍼에서 상기 제1 데이터의 상기 제1 데이터 서브블록 이후에 그리고 상기 버퍼에서 상기 제1 데이터의 제2 데이터 서브블록 이전에 위치되고, 상기 제2 데이터 서브블록은 상기 제1 데이터의 마지막 송신될 데이터 서브블록인 메모리 액세스 방법. - 제22항 또는 제23항에 있어서,
상기 다수의 send 커맨드에 응답하여, 상기 다수의 데이터 서브블록의 메타데이터를 상기 메모리 제어기에 전송하는 단계를 더 포함하고, 상기 다수의 데이터 서브블록 각각의 메타데이터는 상기 제1 데이터 내의 대응하는 데이터 서브블록의 오프셋을 표시하는 위치 ID를 포함하는 메모리 액세스 방법. - 제22항 또는 제23항에 있어서, 상기 NVDIMM은 더블 데이터 레이트(DDR) 버스 프로토콜과 호환가능한 버스 액세스 프로토콜을 준수함으로써 상기 메모리 제어기와 통신하는 메모리 액세스 방법.
- 제22항 또는 제23항에 있어서, 상기 NVDIMM은 NVDIMM-P 버스 프로토콜을 준수함으로써 상기 메모리 제어기와 통신하는 메모리 액세스 방법.
- 제22항 또는 제23항에 있어서, 상기 위치 ID는 3 비트를 점유하는 메모리 액세스 방법.
- 제22항 또는 제23항에 있어서, 상기 다수의 데이터 서브블록 각각의 크기는 64 바이트인 메모리 액세스 방법.
- 하나 이상의 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 저장 매체로서,
상기 하나 이상의 컴퓨터 실행가능 명령어가 컴퓨터 상에서 실행될 때, 상기 컴퓨터는 제16항, 제17항, 제22항, 및 제23항 중 어느 한 항에 따른 방법을 수행하는 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/089774 WO2018232736A1 (zh) | 2017-06-23 | 2017-06-23 | 内存访问技术及计算机系统 |
KR1020217039534A KR102443106B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217039534A Division KR102443106B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220129100A true KR20220129100A (ko) | 2022-09-22 |
KR102532173B1 KR102532173B1 (ko) | 2023-05-16 |
Family
ID=64735409
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227031161A KR102532173B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
KR1020207001375A KR102336232B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
KR1020217039534A KR102443106B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207001375A KR102336232B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
KR1020217039534A KR102443106B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
Country Status (8)
Country | Link |
---|---|
US (3) | US10732876B2 (ko) |
EP (3) | EP3822798B1 (ko) |
JP (2) | JP6900518B2 (ko) |
KR (3) | KR102532173B1 (ko) |
CN (1) | CN109478168B (ko) |
BR (1) | BR112019026942B1 (ko) |
ES (1) | ES2840423T3 (ko) |
WO (1) | WO2018232736A1 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877669B1 (en) * | 2011-06-30 | 2020-12-29 | Amazon Technologies, Inc. | System and method for providing a committed throughput level in a data store |
US10831650B2 (en) * | 2018-03-07 | 2020-11-10 | Exten Technologies, Inc. | Systems and methods for accessing non-volatile memory and write acceleration cache |
US11442634B2 (en) * | 2018-04-12 | 2022-09-13 | Micron Technology, Inc. | Replay protected memory block command queue |
US10969994B2 (en) * | 2018-08-08 | 2021-04-06 | Micron Technology, Inc. | Throttle response signals from a memory system |
US11074007B2 (en) | 2018-08-08 | 2021-07-27 | Micron Technology, Inc. | Optimize information requests to a memory system |
US11409436B2 (en) | 2018-08-08 | 2022-08-09 | Micron Technology, Inc. | Buffer management in memory systems for read and write requests |
US10782916B2 (en) | 2018-08-08 | 2020-09-22 | Micron Technology, Inc. | Proactive return of write credits in a memory system |
US11210093B2 (en) | 2019-04-08 | 2021-12-28 | Micron Technology, Inc. | Large data read techniques |
US11256423B2 (en) * | 2019-10-14 | 2022-02-22 | Western Digital Technologies, Inc. | Efficiently identifying command readiness based on system state and data spread in multi queue depth environment |
CN110781120B (zh) * | 2019-10-23 | 2023-02-28 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
US11599485B2 (en) * | 2020-11-25 | 2023-03-07 | Micron Technology, Inc. | Status check using signaling |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130132606A (ko) * | 2011-05-17 | 2013-12-04 | 가부시끼가이샤 도시바 | 데이터 전송 장치, 데이터 송신 시스템 및 데이터 송신 방법 |
KR20160034961A (ko) * | 2013-09-27 | 2016-03-30 | 인텔 코포레이션 | 메모리 제어기의 판독 트레이닝 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07302176A (ja) * | 1994-05-09 | 1995-11-14 | Toshiba Corp | 半導体ディスク装置 |
US7480781B2 (en) * | 2004-12-30 | 2009-01-20 | Intel Corporation | Apparatus and method to merge and align data from distributed memory controllers |
WO2010093356A1 (en) * | 2009-02-11 | 2010-08-19 | Stec, Inc. | A flash backed dram module |
US8438453B2 (en) | 2009-05-06 | 2013-05-07 | Apple Inc. | Low latency read operation for managed non-volatile memory |
US20110041039A1 (en) | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
TWI454906B (zh) * | 2009-09-24 | 2014-10-01 | Phison Electronics Corp | 資料讀取方法、快閃記憶體控制器與儲存系統 |
CN101876944B (zh) | 2009-11-26 | 2012-02-15 | 威盛电子股份有限公司 | 动态随机存取存储器控制器和控制方法 |
US9294564B2 (en) * | 2011-06-30 | 2016-03-22 | Amazon Technologies, Inc. | Shadowing storage gateway |
US8793343B1 (en) * | 2011-08-18 | 2014-07-29 | Amazon Technologies, Inc. | Redundant storage gateways |
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN103034603B (zh) | 2012-12-07 | 2014-06-18 | 天津瑞发科半导体技术有限公司 | 多通道闪存卡控制装置及其控制方法 |
CN104216837A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种内存系统、内存访问请求的处理方法和计算机系统 |
CN104375946B (zh) * | 2013-08-16 | 2018-04-20 | 华为技术有限公司 | 一种数据处理的方法及装置 |
JP6217241B2 (ja) | 2013-08-28 | 2017-10-25 | コニカミノルタ株式会社 | 胸部診断支援システム |
JP6287571B2 (ja) * | 2014-05-20 | 2018-03-07 | 富士通株式会社 | 演算処理装置、情報処理装置、及び、演算処理装置の制御方法 |
US9823864B2 (en) * | 2014-06-02 | 2017-11-21 | Micron Technology, Inc. | Systems and methods for throttling packet transmission in a scalable memory system protocol |
KR102249416B1 (ko) * | 2014-06-11 | 2021-05-07 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 구동 방법 |
WO2016071954A1 (ja) * | 2014-11-04 | 2016-05-12 | 株式会社日立製作所 | 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 |
US9711194B2 (en) * | 2015-01-28 | 2017-07-18 | Xilinx, Inc. | Circuits for and methods of controlling the operation of a hybrid memory system |
US9778864B2 (en) * | 2015-03-10 | 2017-10-03 | SK Hynix Inc. | Data storage device using non-sequential segment access and operating method thereof |
JP6515602B2 (ja) * | 2015-03-12 | 2019-05-22 | 日本電気株式会社 | データ処理装置及びデータ処理方法 |
JP6541998B2 (ja) * | 2015-03-24 | 2019-07-10 | 東芝メモリ株式会社 | メモリデバイス、半導体装置および情報処理装置 |
US10353747B2 (en) * | 2015-07-13 | 2019-07-16 | Futurewei Technologies, Inc. | Shared memory controller and method of using same |
US10254990B2 (en) * | 2015-12-07 | 2019-04-09 | Netapp, Inc. | Direct access to de-duplicated data units in memory-based file systems |
US9460791B1 (en) * | 2015-12-08 | 2016-10-04 | Inphi Corporation | Data clock synchronization in hybrid memory modules |
US10152237B2 (en) * | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
KR102554416B1 (ko) * | 2016-08-16 | 2023-07-11 | 삼성전자주식회사 | 메모리 장치의 내부 상태 출력 장치 및 이를 적용하는 메모리 시스템 |
US20180059933A1 (en) * | 2016-08-26 | 2018-03-01 | Sandisk Technologies Llc | Electrically-Buffered NV-DIMM and Method for Use Therewith |
CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
US10542089B2 (en) * | 2017-03-10 | 2020-01-21 | Toshiba Memory Corporation | Large scale implementation of a plurality of open channel solid state drives |
-
2017
- 2017-06-23 KR KR1020227031161A patent/KR102532173B1/ko active IP Right Grant
- 2017-06-23 KR KR1020207001375A patent/KR102336232B1/ko active IP Right Grant
- 2017-06-23 EP EP20195180.3A patent/EP3822798B1/en active Active
- 2017-06-23 WO PCT/CN2017/089774 patent/WO2018232736A1/zh unknown
- 2017-06-23 CN CN201780043116.5A patent/CN109478168B/zh active Active
- 2017-06-23 BR BR112019026942-8A patent/BR112019026942B1/pt active IP Right Grant
- 2017-06-23 EP EP17914958.8A patent/EP3480702B1/en active Active
- 2017-06-23 KR KR1020217039534A patent/KR102443106B1/ko active IP Right Grant
- 2017-06-23 JP JP2019570989A patent/JP6900518B2/ja active Active
- 2017-06-23 ES ES17914958T patent/ES2840423T3/es active Active
- 2017-06-23 EP EP22188013.1A patent/EP4152166A3/en active Pending
-
2019
- 2019-02-25 US US16/284,609 patent/US10732876B2/en active Active
-
2020
- 2020-07-13 US US16/927,066 patent/US11231864B2/en active Active
-
2021
- 2021-06-15 JP JP2021099325A patent/JP7162102B2/ja active Active
-
2022
- 2022-01-06 US US17/569,911 patent/US11681452B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130132606A (ko) * | 2011-05-17 | 2013-12-04 | 가부시끼가이샤 도시바 | 데이터 전송 장치, 데이터 송신 시스템 및 데이터 송신 방법 |
KR20160034961A (ko) * | 2013-09-27 | 2016-03-30 | 인텔 코포레이션 | 메모리 제어기의 판독 트레이닝 |
Also Published As
Publication number | Publication date |
---|---|
EP4152166A3 (en) | 2023-04-26 |
JP2021152933A (ja) | 2021-09-30 |
JP7162102B2 (ja) | 2022-10-27 |
CN109478168B (zh) | 2020-12-04 |
EP3822798A2 (en) | 2021-05-19 |
EP3480702A4 (en) | 2019-09-04 |
KR20200019706A (ko) | 2020-02-24 |
BR112019026942B1 (pt) | 2024-02-15 |
US11231864B2 (en) | 2022-01-25 |
EP4152166A2 (en) | 2023-03-22 |
EP3822798B1 (en) | 2022-08-24 |
EP3480702B1 (en) | 2020-09-30 |
KR102532173B1 (ko) | 2023-05-16 |
US20220206686A1 (en) | 2022-06-30 |
CN109478168A (zh) | 2019-03-15 |
WO2018232736A1 (zh) | 2018-12-27 |
KR102336232B1 (ko) | 2021-12-07 |
EP3480702A1 (en) | 2019-05-08 |
BR112019026942A2 (pt) | 2020-07-07 |
US20200393965A1 (en) | 2020-12-17 |
US11681452B2 (en) | 2023-06-20 |
US20190196716A1 (en) | 2019-06-27 |
KR20210150611A (ko) | 2021-12-10 |
KR102443106B1 (ko) | 2022-09-14 |
EP3822798A3 (en) | 2021-06-09 |
ES2840423T3 (es) | 2021-07-06 |
JP2020524859A (ja) | 2020-08-20 |
JP6900518B2 (ja) | 2021-07-07 |
US10732876B2 (en) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102443106B1 (ko) | 메모리 액세스 기술 및 컴퓨터 시스템 | |
US11784756B2 (en) | Memory access technology and computer system | |
US8494010B2 (en) | Data transfer device, data transmitting device, data receiving device, and data transfer method | |
US10467175B1 (en) | Secure digital (SD) direct command for improving throughput with a reduced memory footprint | |
US10929332B2 (en) | USB transmission device and transmission method | |
CN117312201B (zh) | 一种数据传输方法、装置及加速器设备、主机和存储介质 | |
US10318362B2 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium | |
US20140136751A1 (en) | Multi-channel storage system supporting a multi-command protocol | |
US8856389B1 (en) | Efficient data transfers over serial data streams | |
JP2020098386A (ja) | バスシステム | |
JP7363344B2 (ja) | メモリ制御装置、および制御方法 | |
US12026109B2 (en) | Operating method of transaction accelerator, operating method of computing device including transaction accelerator, and computing device including transaction accelerator | |
WO2024001332A1 (zh) | 多端口存储器、多端口存储器的读写方法及装置 | |
CN116569128A (zh) | 存储器热点识别 | |
CN103544123A (zh) | Sdram控制器及对sdram存储空间的访问方法 | |
CN112783811A (zh) | 微控制器架构及架构内数据读取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |