KR20200019706A - 메모리 액세스 기술 및 컴퓨터 시스템 - Google Patents

메모리 액세스 기술 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR20200019706A
KR20200019706A KR1020207001375A KR20207001375A KR20200019706A KR 20200019706 A KR20200019706 A KR 20200019706A KR 1020207001375 A KR1020207001375 A KR 1020207001375A KR 20207001375 A KR20207001375 A KR 20207001375A KR 20200019706 A KR20200019706 A KR 20200019706A
Authority
KR
South Korea
Prior art keywords
data
length
subblock
read
memory controller
Prior art date
Application number
KR1020207001375A
Other languages
English (en)
Other versions
KR102336232B1 (ko
Inventor
스하이 샤오
플로리안 롱노스
웨이 양
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Priority to KR1020217039534A priority Critical patent/KR102443106B1/ko
Publication of KR20200019706A publication Critical patent/KR20200019706A/ko
Application granted granted Critical
Publication of KR102336232B1 publication Critical patent/KR102336232B1/ko

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/1673Details of memory controller using buffers
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

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개의 데이터 서브블록의 메타데이터에서의 위치 식별자들에 기초하여 적어도 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 데이터의 마지막으로 송신될 데이터 서브블록인 것을 표시한다.
본 출원에서 제공되는 컴퓨터 시스템에 따르면, 매체 제어기에 의해 매체 제어기에 반환되는 데이터 서브블록의 메타데이터가 송신될 식별자를 운반하기 때문에, 메모리 제어기에 의해 데이터를 메모리 제어기에 반환하는 프로세스에서, 데이터 서브블록을 메모리 제어기에 전송하는 전송 시퀀스는 송신될 식별자에 기초하여 조정될 수 있다. 이것은 상이한 길이를 갖는 데이터를 판독하기 위한 판독 커맨드들을 처리할 수 있을 뿐만 아니라, 메모리 제어기(106)에 의해 데이터를 수신하는 것에서의 대기 지연을 감소시킬 수 있고, 그에 의해 컴퓨터 시스템의 처리 효율성을 추가로 개선시킨다.
제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은 본 발명의 실시예에 따른 컴퓨터 시스템의 개략적인 아키텍처 도면이다. 도 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)는 데이터 버스, 커맨드/어드레스 버스, 및 판독 데이터 준비(ready) 피드백 버스를 포함할 수 있다. 데이터 버스는 데이터 및 메타데이터를 송신하도록 구성된다. 커맨드/어드레스 버스는 판독 커맨드 또는 기입 커맨드와 같은 액세스 커맨드를 송신하도록 구성된다. 판독 데이터 준비 피드백 버스는 판독될 데이터가 NVDIMM에서 준비되어 있다는 것을 메모리 제어기(106)에 통지하기 위해 사용되는 준비 신호(ready signal)를 전송하도록 구성된다. 실제 응용에서, 메모리 제어기(106)가 NVDIMM(108)으로부터 버스(105)를 통해 데이터를 판독할 때, 메모리 제어기(106)는 커맨드/어드레스 버스에 기초하여 판독 커맨드를 먼저 전송한다. NVDIMM(108)에서의 매체 제어기(110)가 판독 커맨드에서의 목적지 어드레스에 기초하여 NVM(112)으로부터 판독될 데이터를 획득한 후, NVDIMM(108)은 데이터가 NVDIMM에 준비되어 있다는 것을 통지하기 위해 사용되는 준비 신호를, 판독 데이터 준비(ready) 피드백 버스를 통해 메모리 제어기(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이 선택(selected)되는지를 표시하기 위해 사용된다. 필드 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)에 전송한다. 준비 신호는 판독될 데이터가 매체 제어기(110)의 버퍼에 저장되는 것을 메모리 제어기(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 비트(bit)를 점유하고 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)에 반환한다. 매체 제어기(106)에 의해 반환된 데이터의 포맷이 도 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"은 또한 데이터 서브블록이 마지막으로 송신될 데이터 서브블록의 식별자가 아니라는 것을 표시하기 위해 사용되는 예일 뿐이라는 것이 이해될 수 있다. 다른 식별자가 대안적으로 실제 응용에서 사용될 수 있고, 본 명세서에서는 제한이 부과되지 않는다.
본 발명의 실시예들에서, 메모리 제어기(110)에 의해 판독 커맨드의 데이터를 수신하는 것에서의 대기 지연을 감소시키기 위해, 도 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 데이터를 메모리 제어기(110)에 전송한다. 구체적으로, 도 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)에 전송하면, 메모리 제어기(110)에 의한 제1 판독 커맨드 A의 모든 데이터 서브블록들을 수신하는 것에서의 대기 지연은 16개의 기간이고, 메모리 제어기(110)에 의한 제2 판독 커맨드 B의 모든 데이터 서브블록들을 수신하는 것에서의 대기 지연은 12개의 기간이다. 메모리 제어기(110)의 대기 지연을 감소시키기 위해, 버퍼(114)에서의 데이터 서브블록들의 전송 시퀀스가 본 발명의 이 실시예에 도시된 방법에 따라 조정된 후에, 예를 들어, 804에 의해 도시된 스케줄링 시퀀스에 기초하여, 매체 제어기(110)는 제1 판독 커맨드 A의 데이터 서브블록들 A0 및 A1보다 앞서 제2 판독 커맨드 B의 데이터 B0(LB)을 메모리 제어기(110)에 전송할 수 있다. 이 경우에, 메모리 제어기(110)에 의해 제1 판독 커맨드 A의 모든 데이터 서브블록들을 수신하는 것에서의 대기 지연은 변경되지 않으며, 여전히 16개의 기간이다. 그러나, 메모리 제어기(110)에 의해 제2 판독 커맨드 B의 모든 데이터 서브블록들을 수신하는 것에서의 대기 지연은 4개의 기간들이고, 그에 의해 메모리 제어기(110)에 의해 제2 판독 커맨드 B의 데이터 서브블록을 수신하는데 있어서의 지연을 감소시키고, 메모리 제어기(110)에 의해 제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에 도시된 스케줄링 시퀀스에 기초하여 데이터 서브블록들을 메모리 제어기(110)에 전송할 수 있다. 구체적으로, 제2 판독 커맨드에 의해 판독될 데이터 B0 및 B1(LB)은 제1 판독 커맨드 A에 의해 판독될 데이터 서브블록 A0보다 앞서 메모리 제어기에 전송될 수 있다. 하나의 데이터 서브블록을 송신하는 것에서의 송신 지연이 4개의 기간인 것은 여전히 예로서 사용된다. 전송 시퀀스가 조정된 후에, 메모리 제어기(110)에 의해, 제2 판독 커맨드 B에 의해 판독되는 데이터를 수신하는 것에서의 지연은 16개의 지연으로부터 4개의 지연으로 감소되고, 메모리 제어기(110)에 의해, 제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)에 의해 제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 (20)

  1. 컴퓨터 시스템으로서,
    메모리 제어기, 매체 제어기, 및 상기 매체 제어기에 접속된 비휘발성 메모리 NVM을 포함하고,
    상기 NVM은 데이터를 저장하도록 구성되고;
    상기 메모리 제어기는 상기 매체 제어기에 접속되고, 상기 메모리 제어기는 제1 판독 커맨드를 상기 매체 제어기에 전송하도록 구성되고, 상기 제1 판독 커맨드는 제1 ID, 제1 어드레스, 및 제1 길이를 운반하고, 상기 제1 ID는 상기 제1 판독 커맨드의 식별자이고, 상기 제1 길이는 상기 제1 판독 커맨드에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용되고;
    상기 매체 제어기는 상기 제1 어드레스에 기초하여 상기 NVM으로부터 상기 제1 데이터를 판독하도록 구성되고;
    상기 메모리 제어기는 적어도 2개의 send 커맨드를 상기 매체 제어기에 전송하도록 구성되고, 상기 적어도 2개의 send 커맨드는 제3 길이의 적어도 2개의 데이터 피스를 획득하기 위해 사용되고, 상기 제3 길이는 상기 제1 길이보다 작고;
    상기 매체 제어기는 상기 적어도 2개의 send 커맨드에 응답하여, 상기 제3 길이의 적어도 2개의 데이터 서브블록 및 상기 적어도 2개의 데이터 서브블록의 메타데이터를 상기 메모리 제어기에 반환하도록 구성되고, 상기 메타데이터는 상기 제1 ID 및 위치 식별자를 포함하고, 상기 위치 식별자는 상기 제1 데이터에서 대응하는 데이터 서브블록의 오프셋을 표시하기 위해 사용되고;
    상기 메모리 제어기는 상기 적어도 2개의 데이터 서브블록의 메타데이터에서의 위치 식별자들에 기초하여 상기 적어도 2개의 데이터 서브블록을 상기 제1 데이터로 결합하도록 구성되는 컴퓨터 시스템.
  2. 제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를 운반하는 컴퓨터 시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 매체 제어기는,
    상기 NVM으로부터 판독된 상기 제1 데이터를 상기 적어도 2개의 데이터 서브블록으로 분할하여 일시적으로 저장하고, 상기 적어도 2개의 데이터 서브블록의 메타데이터를 기록하도록 추가로 구성되는 컴퓨터 시스템.
  4. 제2항 또는 제3항에 있어서,
    각각의 데이터 서브블록의 메타데이터는 송신 식별자를 추가로 포함하고, 상기 송신 식별자는 상기 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록인지를 표시하기 위해 사용되고;
    상기 컴퓨터 시스템은:
    상기 NVM으로부터 판독된 상기 제1 데이터의 상기 적어도 2개의 데이터 서브블록 및 상기 제2 데이터를 일시적으로 저장하도록 구성된 버퍼를 추가로 포함하고;
    상기 매체 제어기는: 상기 제2 데이터가 상기 버퍼에서 상기 제1 데이터의 제1 데이터 서브블록 이후에 위치되고 상기 버퍼에서 상기 제1 데이터의 제2 데이터 서브블록 이전에 위치될 때, 상기 제2 데이터를 상기 제1 데이터 서브블록보다 앞서 상기 메모리 제어기에 전송하도록 추가로 구성되고, 상기 제1 데이터 서브블록의 송신 식별자는 상기 제1 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록이 아닌 것을 표시하고, 상기 제2 데이터 서브블록의 송신 식별자는 상기 제2 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록인 것을 표시하는 컴퓨터 시스템.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 컴퓨터는:
    제1 액세스 요청을 상기 메모리 제어기에 전송하도록 구성된 프로세서- 상기 제1 액세스 요청은 상기 제1 ID, 상기 제1 어드레스, 및 상기 제1 길이를 포함함 -를 추가로 포함하고;
    상기 메모리 제어기는 상기 제1 액세스 요청에 기초하여 상기 제1 판독 커맨드를 상기 매체 제어기에 전송하도록 추가로 구성되는 컴퓨터 시스템.
  6. 스토리지로서,
    데이터를 저장하도록 구성된 비휘발성 메모리 NVM; 및
    상기 NVM에 접속된 매체 제어기를 포함하고, 상기 매체 제어기는:
    컴퓨터 시스템에서의 메모리 제어기에 의해 전송된 제1 판독 커맨드를 수신하고- 상기 제1 판독 커맨드는 제1 ID, 제1 어드레스, 및 제1 길이를 운반하고, 상기 제1 ID는 상기 제1 판독 커맨드의 식별자이고, 상기 제1 길이는 상기 제1 판독 커맨드에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용됨 -;
    상기 제1 어드레스에 기초하여 상기 NVM으로부터 상기 제1 데이터를 판독하고;
    상기 메모리 제어기에 의해 전송된 적어도 2개의 send 커맨드를 수신하고- 상기 적어도 2개의 send 커맨드는 제3 길이의 데이터를 획득하기 위해 사용되고, 상기 제3 길이는 상기 제1 길이보다 작음 -;
    상기 메모리 제어기에 의해 전송된 상기 적어도 2개의 send 커맨드에 응답하여, 상기 제3 길이의 적어도 2개의 데이터 서브블록 및 상기 적어도 2개의 데이터 서브블록의 메타데이터를 상기 메모리 제어기에 반환하도록 구성되고, 각각의 데이터 서브블록의 메타데이터는 상기 제1 ID 및 위치 식별자를 포함하고, 상기 위치 식별자는 상기 제1 데이터에서 대응하는 데이터 서브블록의 오프셋을 표시하기 위해 사용되어, 상기 적어도 2개의 데이터 서브블록은 상기 적어도 2개의 데이터 서브블록에서의 위치 식별자들에 기초하여 상기 제1 데이터로 결합될 수 있는 스토리지.
  7. 제6항에 있어서,
    상기 매체 제어기는,
    상기 메모리 제어기에 의해 전송된 제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를 운반하는 스토리지.
  8. 제6항 또는 제7항에 있어서,
    상기 스토리지는,
    상기 NVM으로부터 상기 매체 제어기에 의해 판독되는 상기 제1 데이터의 상기 적어도 2개의 데이터 서브블록을 일시적으로 저장하도록 구성된 버퍼를 추가로 포함하고;
    상기 매체 제어기는 상기 적어도 2개의 데이터 서브블록의 메타데이터를 기록하도록 추가로 구성되는 스토리지.
  9. 제7항 또는 제8항에 있어서,
    각각의 데이터 서브블록의 메타데이터는 송신 식별자를 추가로 포함하고, 상기 송신 식별자는 상기 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록인지를 표시하기 위해 사용되고;
    상기 버퍼는 상기 제2 데이터를 일시적으로 저장하도록 추가로 구성되고;
    상기 매체 제어기는: 상기 제2 데이터가 상기 버퍼에서 상기 제1 데이터의 제1 데이터 서브블록 이후에 위치되고 상기 버퍼에서 상기 제1 데이터의 제2 데이터 서브블록 이전에 위치될 때, 상기 제2 데이터를 상기 제1 데이터 서브블록보다 앞서 상기 메모리 제어기에 전송하도록 추가로 구성되고, 상기 제1 데이터 서브블록의 송신 식별자는 상기 제1 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록이 아닌 것을 표시하고, 상기 제2 데이터 서브블록의 송신 식별자는 상기 제2 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록인 것을 표시하는 스토리지.
  10. 메모리 액세스 방법으로서,
    상기 방법은 컴퓨터 시스템에 적용되고, 상기 컴퓨터 시스템은 메모리 제어기, 매체 제어기, 및 상기 매체 제어기에 접속된 비휘발성 메모리 NVM을 포함하고, 상기 방법은:
    상기 메모리 제어기에 의해, 제1 판독 커맨드를 상기 매체 제어기에 전송하는 단계- 상기 제1 판독 커맨드는 제1 ID, 제1 어드레스, 및 제1 길이를 운반하고, 상기 제1 ID는 상기 제1 판독 커맨드의 식별자이고, 상기 제1 길이는 상기 제1 판독 커맨드에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용됨 -;
    상기 매체 제어기에 의해, 상기 제1 어드레스에 기초하여 상기 NVM으로부터 상기 제1 데이터를 판독하는 단계;
    상기 메모리 제어기에 의해, 적어도 2개의 send 커맨드를 상기 매체 제어기에 전송하는 단계- 상기 적어도 2개의 send 커맨드는 제3 길이의 적어도 2개의 데이터 피스를 획득하기 위해 사용되고, 상기 제3 길이는 상기 제1 길이보다 작음 -;
    상기 적어도 2개의 send 커맨드에 응답하여, 상기 매체 제어기에 의해, 상기 제3 길이의 적어도 2개의 데이터 서브블록 및 상기 적어도 2개의 데이터 서브블록의 메타데이터를 상기 메모리 제어기에 반환하는 단계- 각각의 데이터 서브블록의 메타데이터는 상기 제1 ID 및 위치 식별자를 포함하고, 상기 위치 식별자는 상기 제1 데이터에서의 대응하는 데이터 서브블록의 위치를 표시하기 위해 사용됨 -; 및
    상기 메모리 제어기에 의해, 상기 적어도 2개의 데이터 서브블록의 메타데이터에서의 위치 식별자들에 기초하여 상기 적어도 2개의 데이터 서브블록을 상기 제1 데이터로 결합하는 단계
    를 포함하는 메모리 액세스 방법.
  11. 제10항에 있어서,
    상기 메모리 제어기에 의해, 제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를 운반함 -
    를 추가로 포함하는 메모리 액세스 방법.
  12. 제10항 또는 제11항에 있어서,
    상기 매체 제어기에 의해, 상기 NVM으로부터 판독된 상기 제1 데이터를 상기 적어도 2개의 데이터 서브블록으로 분할하여 일시적으로 저장하고, 상기 적어도 2개의 데이터 서브블록의 메타데이터를 기록하는 단계를 추가로 포함하는 메모리 액세스 방법.
  13. 제11항 또는 제12항에 있어서,
    상기 컴퓨터 시스템은 버퍼를 추가로 포함하고, 각각의 데이터 서브블록의 메타데이터는 송신 식별자를 추가로 포함하고, 상기 송신 식별자는 상기 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록인지를 표시하기 위해 사용되고;
    상기 방법은:
    상기 제2 데이터가 상기 버퍼에서 상기 제1 데이터의 제1 데이터 서브블록 이후에 위치되고 상기 버퍼에서 상기 제1 데이터의 제2 데이터 서브블록 이전에 위치될 때, 상기 매체 제어기에 의해, 상기 제2 데이터를 상기 제1 데이터 서브블록보다 앞서 상기 메모리 제어기에 전송하는 단계를 추가로 포함하고, 상기 제1 데이터 서브블록의 송신 식별자는 상기 제1 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록이 아닌 것을 표시하고, 상기 제2 데이터 서브블록의 송신 식별자는 상기 제2 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록인 것을 표시하는 메모리 액세스 방법.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 메모리 제어기에 의해, 상기 컴퓨터 시스템의 프로세서에 의해 전송된 제1 액세스 요청을 수신하는 단계- 상기 제1 액세스 요청은 상기 제1 ID, 상기 제1 어드레스, 및 상기 제1 길이를 포함함 -; 및
    상기 메모리 제어기에 의해, 상기 제1 액세스 요청에 기초하여 상기 제1 판독 커맨드를 상기 매체 제어기에 전송하는 단계
    를 추가로 포함하는 메모리 액세스 방법.
  15. 메모리 액세스 방법으로서,
    상기 방법은 컴퓨터 시스템에 적용되고, 상기 컴퓨터 시스템은 메모리 제어기, 매체 제어기, 및 상기 매체 제어기에 접속된 비휘발성 메모리 NVM을 포함하고, 상기 방법은:
    상기 매체 제어기에 의해, 상기 메모리 제어기에 의해 전송된 제1 판독 커맨드를 수신하는 단계- 상기 제1 판독 커맨드는 제1 ID, 제1 어드레스, 및 제1 길이를 운반하고, 상기 제1 ID는 상기 제1 판독 커맨드의 식별자이고, 상기 제1 길이는 상기 제1 판독 커맨드에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용됨 -;
    상기 매체 제어기에 의해, 상기 제1 어드레스에 기초하여 상기 NVM으로부터 상기 제1 데이터를 판독하는 단계;
    상기 매체 제어기에 의해, 상기 메모리 제어기에 의해 전송된 적어도 2개의 send 커맨드를 수신하는 단계- 상기 적어도 2개의 send 커맨드는 제3 길이의 데이터를 획득하기 위해 사용되고, 상기 제3 길이는 상기 제1 길이보다 작음 -; 및
    상기 적어도 2개의 send 커맨드에 응답하여, 상기 매체 제어기에 의해, 상기 제3 길이의 적어도 2개의 데이터 서브블록 및 상기 적어도 2개의 데이터 서브블록의 메타데이터를 상기 메모리 제어기에 반환하는 단계- 각각의 데이터 서브블록의 메타데이터는 상기 제1 ID 및 위치 식별자를 포함하고, 상기 위치 식별자는 상기 제1 데이터에서의 대응하는 데이터 서브블록의 오프셋을 표시하기 위해 사용되어, 상기 적어도 2개의 데이터 서브블록은 상기 적어도 2개의 데이터 서브블록에서의 위치 식별자들에 기초하여 상기 제1 데이터로 결합될 수 있음 -
    를 포함하는 메모리 액세스 방법.
  16. 제15항에 있어서,
    상기 매체 제어기에 의해, 상기 메모리 제어기에 의해 전송된 제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를 운반함 -
    를 추가로 포함하는 메모리 액세스 방법.
  17. 제15항 또는 제16항에 있어서,
    상기 매체 제어기에 의해, 상기 NVM으로부터 판독된 상기 제1 데이터를 상기 적어도 2개의 데이터 서브블록으로 분할하여 일시적으로 저장하고, 상기 적어도 2개의 데이터 서브블록의 메타데이터를 기록하는 단계를 추가로 포함하는 메모리 액세스 방법.
  18. 제16항 또는 제17항에 있어서,
    상기 컴퓨터 시스템은 버퍼를 추가로 포함하고, 상기 각각의 데이터 서브블록의 메타데이터는 송신 식별자를 추가로 포함하고, 상기 송신 식별자는 상기 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록인지를 표시하기 위해 사용되고;
    상기 방법은:
    상기 제2 데이터가 상기 버퍼에서 상기 제1 데이터의 제1 데이터 서브블록 이후에 위치되고 상기 버퍼에서 상기 제1 데이터의 제2 데이터 서브블록 이전에 위치될 때, 상기 매체 제어기에 의해, 상기 제2 데이터를 상기 제1 데이터 서브블록보다 앞서 상기 메모리 제어기에 전송하는 단계를 추가로 포함하고, 상기 제1 데이터 서브블록의 송신 식별자는 상기 제1 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록이 아닌 것을 표시하고, 상기 제2 데이터 서브블록의 송신 식별자는 상기 제2 데이터 서브블록이 상기 제1 데이터의 마지막으로 송신될 데이터 서브블록인 것을 표시하는 메모리 액세스 방법.
  19. 메모리 액세스 방법으로서,
    상기 방법은 컴퓨터 시스템에 적용되고, 상기 컴퓨터 시스템은 메모리 제어기, 매체 제어기, 및 상기 매체 제어기에 접속된 비휘발성 메모리 NVM을 포함하고, 상기 방법은:
    상기 메모리 제어기에 의해, 제1 판독 커맨드를 상기 매체 제어기에 전송하는 단계- 상기 제1 판독 커맨드는 제1 ID, 제1 어드레스, 및 제1 길이를 운반하고, 상기 제1 ID는 상기 제1 판독 커맨드의 식별자이고, 상기 제1 길이는 상기 제1 판독 커맨드에 의해 판독될 제1 데이터의 크기를 표시하기 위해 사용됨 -;
    상기 메모리 제어기에 의해, 적어도 2개의 send 커맨드를 상기 매체 제어기에 전송하는 단계- 상기 적어도 2개의 send 커맨드는 제3 길이의 적어도 2개의 데이터 피스를 획득하기 위해 사용되고, 상기 제3 길이는 상기 제1 길이보다 작음 -;
    상기 메모리 제어기에 의해, 상기 제3 길이의 적어도 2개의 데이터 서브블록 및 상기 적어도 2개의 데이터 서브블록의 메타데이터를 수신하는 단계- 상기 적어도 2개의 데이터 서브블록 및 상기 메타데이터는 상기 적어도 2개의 send 커맨드에 응답하여 상기 매체 제어기에 의해 전송되고, 상기 적어도 2개의 데이터 서브블록은 상기 제1 어드레스에 기초하여 상기 매체 제어기에 의해 상기 NVM으로부터 획득되고, 각각의 데이터 서브블록의 메타데이터는 상기 제1 ID 및 위치 식별자를 포함하고, 상기 위치 식별자는 상기 제1 데이터에서 대응하는 데이터 서브블록의 위치를 표시하기 위해 사용됨 -; 및
    상기 적어도 2개의 데이터 서브블록의 메타데이터에서의 위치 식별자들에 기초하여 상기 적어도 2개의 데이터 서브블록을 상기 제1 데이터로 결합하는 단계
    를 포함하는 메모리 액세스 방법.
  20. 제19항에 있어서,
    상기 메모리 제어기에 의해, 제2 판독 커맨드를 상기 매체 제어기에 전송하는 단계- 상기 제2 판독 커맨드는 제2 ID, 제2 어드레스, 및 제2 길이를 운반하고, 상기 제2 길이는 상기 제2 판독 커맨드에 의해 판독될 제2 데이터의 크기를 표시하기 위해 사용됨 -;
    상기 메모리 제어기에 의해, 제2 send 커맨드를 상기 매체 제어기에 전송하는 단계- 상기 제2 send 커맨드는 상기 제3 길이의 데이터 블록을 획득하기 위해 사용되고, 상기 제2 길이는 상기 제3 길이와 동일함 -; 및
    상기 메모리 제어기에 의해, 상기 제2 send 커맨드에 기초하여 상기 매체 제어기에 의해 반환되는 상기 제2 데이터 및 상기 제2 데이터의 메타데이터를 수신하는 단계- 상기 제2 데이터는 상기 제2 어드레스에 기초하여 상기 매체 제어기에 의해 상기 NVM으로부터 획득되고, 상기 제2 데이터의 메타데이터는 상기 제2 ID를 운반함 -
    를 추가로 포함하는 메모리 액세스 방법.
KR1020207001375A 2017-06-23 2017-06-23 메모리 액세스 기술 및 컴퓨터 시스템 KR102336232B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217039534A KR102443106B1 (ko) 2017-06-23 2017-06-23 메모리 액세스 기술 및 컴퓨터 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/089774 WO2018232736A1 (zh) 2017-06-23 2017-06-23 内存访问技术及计算机系统

Related Child 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
KR20200019706A true KR20200019706A (ko) 2020-02-24
KR102336232B1 KR102336232B1 (ko) 2021-12-07

Family

ID=64735409

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020217039534A KR102443106B1 (ko) 2017-06-23 2017-06-23 메모리 액세스 기술 및 컴퓨터 시스템
KR1020227031161A KR102532173B1 (ko) 2017-06-23 2017-06-23 메모리 액세스 기술 및 컴퓨터 시스템
KR1020207001375A KR102336232B1 (ko) 2017-06-23 2017-06-23 메모리 액세스 기술 및 컴퓨터 시스템

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020217039534A KR102443106B1 (ko) 2017-06-23 2017-06-23 메모리 액세스 기술 및 컴퓨터 시스템
KR1020227031161A KR102532173B1 (ko) 2017-06-23 2017-06-23 메모리 액세스 기술 및 컴퓨터 시스템

Country Status (8)

Country Link
US (3) US10732876B2 (ko)
EP (3) EP3480702B1 (ko)
JP (2) JP6900518B2 (ko)
KR (3) KR102443106B1 (ko)
CN (1) CN109478168B (ko)
BR (1) BR112019026942B1 (ko)
ES (1) ES2840423T3 (ko)
WO (1) WO2018232736A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
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
WO2019200142A1 (en) * 2018-04-12 2019-10-17 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
US11409436B2 (en) * 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US11074007B2 (en) 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876944A (zh) * 2009-11-26 2010-11-03 威盛电子股份有限公司 动态随机存取存储器控制器和控制方法
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
CN102414666A (zh) * 2009-05-06 2012-04-11 苹果公司 用于受管理的非易失性存储器的低等待时间读取操作
EP2801912A1 (en) * 2012-01-18 2014-11-12 Huawei Technologies Co., Ltd Message-based memory access device and access method thereof

Family Cites Families (28)

* Cited by examiner, † Cited by third party
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
TWI454906B (zh) * 2009-09-24 2014-10-01 Phison Electronics Corp 資料讀取方法、快閃記憶體控制器與儲存系統
JP5611889B2 (ja) 2011-05-17 2014-10-22 株式会社東芝 データ転送装置、データ送信システムおよびデータ送信方法
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
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 コニカミノルタ株式会社 胸部診断支援システム
US9021154B2 (en) 2013-09-27 2015-04-28 Intel Corporation Read training a memory controller
JP6287571B2 (ja) * 2014-05-20 2018-03-07 富士通株式会社 演算処理装置、情報処理装置、及び、演算処理装置の制御方法
US9733847B2 (en) * 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
KR102249416B1 (ko) * 2014-06-11 2021-05-07 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 구동 방법
JP6306737B2 (ja) * 2014-11-04 2018-04-04 株式会社日立製作所 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102414666A (zh) * 2009-05-06 2012-04-11 苹果公司 用于受管理的非易失性存储器的低等待时间读取操作
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
CN101876944A (zh) * 2009-11-26 2010-11-03 威盛电子股份有限公司 动态随机存取存储器控制器和控制方法
EP2801912A1 (en) * 2012-01-18 2014-11-12 Huawei Technologies Co., Ltd Message-based memory access device and access method thereof

Also Published As

Publication number Publication date
JP7162102B2 (ja) 2022-10-27
KR20210150611A (ko) 2021-12-10
EP4152166A2 (en) 2023-03-22
KR102336232B1 (ko) 2021-12-07
EP3480702A4 (en) 2019-09-04
US20190196716A1 (en) 2019-06-27
JP2020524859A (ja) 2020-08-20
US11681452B2 (en) 2023-06-20
ES2840423T3 (es) 2021-07-06
EP4152166A3 (en) 2023-04-26
KR20220129100A (ko) 2022-09-22
WO2018232736A1 (zh) 2018-12-27
EP3480702A1 (en) 2019-05-08
BR112019026942A2 (pt) 2020-07-07
US11231864B2 (en) 2022-01-25
US20200393965A1 (en) 2020-12-17
US10732876B2 (en) 2020-08-04
CN109478168B (zh) 2020-12-04
JP6900518B2 (ja) 2021-07-07
EP3822798A3 (en) 2021-06-09
EP3822798B1 (en) 2022-08-24
EP3822798A2 (en) 2021-05-19
JP2021152933A (ja) 2021-09-30
KR102532173B1 (ko) 2023-05-16
US20220206686A1 (en) 2022-06-30
KR102443106B1 (ko) 2022-09-14
BR112019026942B1 (pt) 2024-02-15
CN109478168A (zh) 2019-03-15
EP3480702B1 (en) 2020-09-30

Similar Documents

Publication Publication Date Title
KR102336232B1 (ko) 메모리 액세스 기술 및 컴퓨터 시스템
TWI546672B (zh) 用於低電力記憶體裝置之通用晶粒實作技術
EP3470971B1 (en) Method, apparatus, and system for accessing memory device
US11985078B2 (en) Packet arbitration for buffered packets in a network device
US10254974B2 (en) Storage device, computing device including the same, and operation method of the computing device
US20120198173A1 (en) Router and many-core system
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
US8856389B1 (en) Efficient data transfers over serial data streams
CN117312201B (zh) 一种数据传输方法、装置及加速器设备、主机和存储介质
US20220188251A1 (en) Operating method of transaction accelerator, operating method of computing device including transaction accelerator, and computing device including transaction accelerator
JP7363344B2 (ja) メモリ制御装置、および制御方法
US20220121394A1 (en) Identifying memory hotspots
US20160004655A1 (en) Computing system and operating method of the same

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant