KR20180043451A - 컴퓨팅 시스템 및 그것의 동작 방법 - Google Patents

컴퓨팅 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20180043451A
KR20180043451A KR1020160136007A KR20160136007A KR20180043451A KR 20180043451 A KR20180043451 A KR 20180043451A KR 1020160136007 A KR1020160136007 A KR 1020160136007A KR 20160136007 A KR20160136007 A KR 20160136007A KR 20180043451 A KR20180043451 A KR 20180043451A
Authority
KR
South Korea
Prior art keywords
data
host
storage device
memory
host memory
Prior art date
Application number
KR1020160136007A
Other languages
English (en)
Inventor
홍주형
정의영
Original Assignee
삼성전자주식회사
연세대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 연세대학교 산학협력단 filed Critical 삼성전자주식회사
Priority to KR1020160136007A priority Critical patent/KR20180043451A/ko
Priority to US15/709,112 priority patent/US10970235B2/en
Priority to CN201710968228.3A priority patent/CN107967221B/zh
Publication of KR20180043451A publication Critical patent/KR20180043451A/ko

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

본 발명에 따른 컴퓨팅 시스템의 동작 방법은, 입출력 요청에 대응하는 커맨드 엔트리를 서브미션 큐에 저장하는 단계, 상기 서브미션 큐로부터 상기 커맨드 엔트리를 페치하는 단계, 저장 장치의 제어에 따라 호스트 메모리의 내부에서 상기 입출력 요청에 대응하는 데이터를 이동시키는 단계, 상기 데이터의 이동 동작 이후에, 상기 입출력 요청에 대한 컴플리션을 컴플리션 큐에 업데이트하는 단계, 및 상기 컴플리션 큐의 업데이트 이후에, 상기 호스트 메모리의 상기 데이터를 상기 저장 장치로 전송하거나, 상기 저장 장치의 데이터를 상기 호스트 메모리로 전송하는 단계를 포함할 수 있다.

Description

컴퓨팅 시스템 및 그것의 동작 방법{COMPUTING SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 컴퓨팅 시스템 및 그것의 동작 방법에 관한 것이다.
SSD(solid state drive)는 크게 호스트(host)와 연결되는 고속 인터페이스(high speed interface), 데이터 저장을 제어하는 CPU(central processing unit), 데이터가 저장되는 비휘발성 메모리(non-volatile memory, NVM), 데이터 버퍼로 사용되는 버퍼 메모리로 구현되어 있다. 최근에 PCIe(peripheral component interconnect express) 기술로 하는 SSD가 등장하게 되었다. 또한, HDD(hard disk drive)에 적합하였던 AHCI(advanced host controller interface) 기술은 NVM를 사용하는 SSD의 장점들을 모두 보여 주기에는 무리가 있으므로, NVMe 인터페이스가 새롭게 등장하게 되었다.
NVMe가 새로운 storage 기술로 조명되는 가장 큰 이유는, HDD 시대에 설계되었던 AHCI 인터페이스를 대체할 수 있다는 점이다. 대표적으로 지적되는 한계인 큐(queue)의 경우 AHCI에서는 큐 당 명령어가 32 개인데, NVMe의 경우 6만 4천 개까지 지원될 수 있다. 즉 최대 큐 깊이가 2 천 배 좋아지므로, 시스템 성능이 획기적으로 향상될 수 있다. 또한 CPU의 멀티 코어를 보다 더 효율적으로 지원할 수 있으므로 기존 호스트 인터페이스 기술보다 많은 장점을 가지고 있다.
본 발명의 목적은 호스트 메모리를 저장 장치의 데이터 캐쉬로 이용하는 컴퓨팅 시스템 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법은, 입출력 요청에 대응하는 커맨드 엔트리를 서브미션 큐에 저장하는 단계, 상기 서브미션 큐로부터 상기 커맨드 엔트리를 페치하는 단계, 저장 장치의 제어에 따라 호스트 메모리의 내부에서 상기 입출력 요청에 대응하는 데이터를 이동시키는 단계, 상기 데이터의 이동 동작 이후에, 상기 입출력 요청에 대한 컴플리션을 컴플리션 큐에 업데이트하는 단계, 및 상기 컴플리션 큐의 업데이트 이후에, 상기 호스트 메모리의 상기 데이터를 상기 저장 장치로 전송하거나, 상기 저장 장치의 데이터를 상기 호스트 메모리로 전송하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은, 데이터 어레이 및 호스트 메모리 버퍼를 갖는 호스트 메모리를 포함하는 호스트 장치, 및 상기 호스트 장치에 연결되고, 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치를 포함하고, 상기 호스트 메모리 버퍼는, 상기 저장 장치를 관리하기 위한 메타 데이터를 저장하는 메타 데이터 영역, 및 입출력 요청에 대응하는 데이터를 임시로 저장하는 데이터 캐쉬 영역을 포함하고, 상기 저장 장치는 상기 입출력 요청에 응답하여 상기 데이터 어레이와 상기 데이터 캐쉬 영역 사이에서 데이터 이동 요청을 상기 호스트 장치로 전송할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템 및 그것의 동작 방법은, 입출력 요청에 응답하여 호스트 메모리 내부에서 데이터 이동 동작을 수행한 후에 곧바로 컴플리션을 발행함으로써, 입출력 성능 향상을 기대할 수 있다.
도 1은 본 발명의 개념을 설명하기 위한 컴퓨팅 시스템을 예시적으로 보여는 도면이다.
도 2는 쓰기 동작시 호스트 장치와 저장 장치 사이에서 컴플리션 시점을 예시적으로 보여주는 도면이다.
도 3은 읽기 동작시 호스트 장치와 저장 장치 사이에서 컴플리션 시점을 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 커맨드 처리 과정을 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 데이터 패스들을 예시적으로 보여주는 실시 예이다.
도 6은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 호스트 메모리에서 데이터를 데이터 어레이와 HMB 사이에 이동시키는 방법에 대한 실시 예를 예시적으로 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 호스트 메모리에서 데이터를 데이터 어레이와 HMB 사이에 이동시키는 방법에 대한 다른 실시 예를 예시적으로 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 호스트 장치와 저장 장치 사이에서 메모리 복사 동작과 관련된 통신을 예시적으로 보여주는 도면이다.
도 9는 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 10은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 입출력 동작 방법을 예시적으로 보여주는 흐름도이다.
도 12는 본 발명의 실시 예 따른 모바일 장치를 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
도 1은 본 발명의 개념을 설명하기 위한 컴퓨팅 시스템를 예시적으로 보여는 도면이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 호스트 장치(100) 및 그것의 데이터를 저장하는 저장 장치(200)를 포함할 수 있다.
호스트 장치(100)는 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 호스트 장치(100)에서 사용하는 데이터 어레이 영역(122) 및 호스트 메모리 버퍼(124, HBM)를 포함할 수 있다. 여기서 호스트 메모리 버퍼(124)는 호스트 메모리(120)의 일부를 저장 장치(200)가 독립적으로 사용할 수 있는 영역일 수 있다.
또한, 호스트 메모리 버퍼(124)는, 저장 장치(200)를 관리하는데 필요한 메타 데이터를 저장하는 영역(124-1, 이하 '메타 데이터 영역')과, 저장 장치(200)의 버퍼 메모리 기능을 수행하는 데이터 캐쉬를 저장하는 영역(124-2, 이하 '데이터 캐쉬 영역')을 포함할 수 있다.
실시 예에 있어서, 메타 데이터는 L2P(logical to physical) 테이블을 포함할 수 있다. 여기서 L2P 테이블은, 논리 어드레스에 대응하는 저장 장치(200) 내부의 비휘발성 메모리(NVM)의 물리 어드레스에 관련된 정보를 포함할 수 있다.
저장 장치(200)는 적어도 하나의 비휘발성 메모리 장치(NVM(s), 210)와 그것을 제어하는 제어기(220)를 포함할 수 있다.
비휘발성 메모리 장치(210)는 데이터를 저장하도록 구현될 수 있다. 비휘발성 메모리 장치는, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
또한, 비휘발성 메모리 장치는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명의 실시 예로서, 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 또는 그 이상의 물리 레벨들에 모놀리식으로(monolithically) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 모놀리식(monolithical)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착 됨을 의미한다.
본 발명의 개념에 따른 실시 예로서, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩 층을 포함한다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조를 갖고, 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에 공유된 워드 라인들 또는 비트 라인들을 갖는다. 3차원 메모리 어레이에 적합한 구성은, 삼성전자에서 출원하였으며, 이 출원의 참고문헌으로 결합된 US 7,679,133, US 8,553,466, US 8,654,587, US 8,559,235, 및 US 2011/0233648에 설명될 것이다. 본 발명의 비휘발성 메모리 장치(NVM)는 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다.
제어기(220)는 호스트 메모리 버퍼(124)의 메타 데이터 영역(124-1)에 저장된 메타 데이터를 이용하여 저장 장치(200)의 전반적인 동작을 제어하도록 구현될 수 있다.
또한, 제어기(220)는 호스트 장치(100)의 입출력 요청에 응답하여 호스트 메모리 버퍼(124)의 데이터 캐시 영역(124-2)에 관련 데이터를 임시로 저장하도록 구현될 수 있다. 예를 들어, 호스트 장치(100)에서 쓰기 요청된 쓰기 데이터가 임시로 호스트 메모리 버퍼(124)의 데이터 캐시 영역(124-2)에 저장될 수 있다. 또한, 호스트 장치(100)에서 읽기 요청된 읽기 데이터는 호스트 메모리 버퍼(124)의 데이터 캐시 영역(124-2)으로부터 읽어 올 수 있다.
일반적으로, NVMe 사양(specification)은 호스트 장치의 간섭 없이 저장 장치가 호스트 메모리(120)의 일부 영역을 사용할 수 있는 호스트 메모리 버퍼(HMB, 124)를 제공하고 있다. HMB(124)를 이용하는 종래 기술은, Logical to Physical address의 매핑 정보를 저장하고 있다. 호스트 장치와 저장 장치의 사이의 입출력 DMA(direct memory access)는 기본적으로 둘 사이의 DMA만 가능하도록 구현되어 있을 뿐이다. 하지만, NVMe 인터페이스의 경우, 저장 장치가 호스트 장치의 메모리 영역을 직접 접근할 수 할 수 있고, 호스트 드라이버(host driver) 및 H/W의 약간의 수정으로 저장 장치가 호스트 메모리 복사(host memory copy)를 요청하고 호스트 장치가 DMA를 수행할 수 있으면, NVMe 프로토콜을 위반하지 않은 체, HMB(124)를 저장 장치의 데이터 버퍼로 동작 가능하다.
도 2는 쓰기 동작시 호스트 장치와 저장 장치 사이에서 컴플리션 시점을 예시적으로 보여주는 도면이다. (i)는 호스트 장치와 저장 장치 사이에 데이터 버퍼가 존재하지 않을 때, (ii)는 호스트 장치와 저장 장치 사이에 데이터 버퍼가 존재할 때, (iii)는 호스트 장치와 저장 장치 사이에 HMB(124) 내의 데이터 버퍼가 존재할 때, 쓰기 동작을 도시한다.
(i)의 데이터 버퍼가 없는 쓰기 동작시, 상대적으로 많이 느린 NVM 에 쓰기(write)를 완료한 후, 저장 장치는 컴플리션을 호스트 장치에 알려줄 수 있다. 이때 데이터는 PCIe를 통해 호스트 장치에서 저장 장치로 전송될 수 있다.
(ii)의 저장 장치에 데이터 버퍼가 있는 쓰기 동작시, 데이터 버퍼에만 데이터를 저장한 후, 저장 장치는 호스트 장치에 컴플리션을 알려 줄 수 있다. 그리고, 추후에 NVM에 쓰기(write) 하게 된다.
(iii)의 HMB(124) 내의 데이터 버퍼가 있는 쓰기 동작시, IO 스택(stack)과 IO 인터페이스를 거치지 않으므로, 호스트 메모리(120)의 내부에서 HMB(124)로 데이터를 복사하면, 저장 장치는 곧바로 호스트 장치에 컴플리션을 알려줄 수 있다. 이는 (i), (ii)의 그것보다 더 빠른 컴플리션이 가능하다.
도 3은 읽기 동작시 호스트 장치와 저장 장치 사이에서 컴플리션 시점을 예시적으로 보여주는 도면이다.
(i)의 데이터 버퍼가 없는 경우는, 저장 장치는 NVM로부터 데이터를 읽고, 읽혀진 데이터를 PCIe 통해 호스트 장치에 전송한 뒤, 컴플리션을 호스트 장치에 알려 줄 수 있다.
(ii)의 저장 장치에 데이터 버퍼가 있는 경우, 읽기 요청된 데이터가 데이터 버퍼에 존재하는 히트(hit)라고 가정하겠다. 이때, 저장 장치는 데이터 버퍼로부터 대응하는 데이터를 읽고, 읽혀진 데이터를 호스트 장치로 전송한 뒤, 컴플리션을 알려 줄 수 있다. 이후, 저장 장치의 데이터 버퍼로부터 데이터 플러쉬가 이루어질 수 있다.
(iii)의 HMB(124) 내에 데이터 버퍼가 있는 경우, 읽기 요청된 데이터가 HMB(124)의 데이터 버퍼에 존재하는 히트(hit)라고 가정하겠다. 이때, 저장 장치는 HMB(124) 내의 데이터 버퍼에 존재하는 데이터를 읽고, 호스트 메모리(120)로 복사한 뒤 컴플리션을 알려 줄 수 있다. 이후, 데이터 버퍼로부터 데이터 플러쉬가 이루어질 수 있다. 읽기 동작의 경우 데이터 버퍼에서 데이터 히트일 때, NVM로부터 읽는 것보다 더 빠른 응답 속도를 낼 수 있다.
도 4는 본 발명의 실시 예에 따른 커맨드 처리 과정을 예시적으로 보여주는 도면이다. 도 4를 참조하면, 커맨드 처리 과정은 다음과 같다.
호스트 장치(100)는 입출력 요청(쓰기/읽기 요청)에 따라 서브미션 큐(submission queue)에 커맨드 엔트리(command entry)를 저장하고, 링 도어벨(ring doorbell)을 저장 장치(200)로 전송할 수 있다(①). 이후, 저장 장치(200)는 호스트 메모리(120)에 있는 커맨드 엔트리를 fetch 할 수 있다(②).
만일, 커맨드가 쓰기 커맨드이면, 커맨드 엔트리의 PRP(physical region page)를 참조하여 호스트 메모리(120)의 데이터 어레이(122)에 저장된 데이터를 HMB(124)로 복사할 수 있다. 또한, 커맨드가 읽기 커맨드이면, 읽기 커맨드에 대응하는 어드레스가 HMB(124)에서 히트 되었다면, HMB(124)에 저장된 데이터를 호스트 메모리(120)의 데이터 어레이(122)로 복사할 수 있다. 상술 된 바와 같이, 쓰기 요청 혹은 읽기 요청에 응답하여 호스트 메모리(120)의 데이터 어레이(122)와 HMB(124) 사이에서 데이터 복사 동작이 수행될 수 있다(③).
상술 된 데이터 복사 동작이 완료되면, 저장 장치(200)는 쓰기/읽기 동작이 완료되었다는 컴플리션 큐를 호스트 장치(100)로 전송할 수 있다(④). 이후, 저장 장치(200)는 인터럽트를 호스트 장치(100)로 전송할 수 있다. 여기서 인터럽트는, MSI(message signaled interrupts)/MSI-X 일 수 있다(⑤). 이후, 호스트 장치(100)는 컴플리션 큐를 업데이트하고, 링 도어벨을 저장 장치(200)로 전송할 수 있다(⑥). 최종적으로 호스트 장치(100)는 입출력 요청을 완료 처리할 수 있다.
이후에, 아이들 타임(idle time) 이나 저장 장치(100)의 상황이 허락할 때, HMB(124)에 저장된 데이터는 저장 장치(100)에 라이트 백(write back) 할 수 있다. 그리고 자주 사용되는 데이터는 HMB(124)의 데이터 캐쉬 영역(124-2)으로 프리페치(prefetch) 할 수 있다(⑦). 이로써 읽기 출력(read throughout)의 성능이 향상될 수 있다.
도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)에서 데이터 패스들을 예시적으로 보여주는 실시 예이다. 도 5에서는 설명의 편의를 위하여 PCIe 인터페이스에 따라 통신하는 호스트 장치(100)와 저장 장치(200)가 도시된다. 하지만, 본 발명이 여기에 제한되지 않는다고 이해되어야 할 것이다.
도 5를 참조하면, 호스트 메모리(120)와 저장 장치(100) 사이의 제 1 데이터 패스가 존재할 수 있고, HMB(124)와 저장 장치(100) 사이의 제 2 데이터 패스가 존재할 수 있고, 호스트 메모리(120)의 데이터 어레이(122)와 HMB(124) 사이의 내부적인 제 3 데이터 패스가 존재할 수 있다.
호스트 메모리(120)와 HMB(124) 사이의 데이터 이동은, 종래의 경우에는 PCIe 인터페이스를 경유해야 했다. 하지만, 본 발명의 경우, 호스트 메모리(120)와 HMB(124) 사이에 내부적인 제 3 데이터 패스를 통하여 데이터 이동이 가능하다.
본 발명의 실시 예에 따른 컴퓨팅 시스템(10)은 메인 메모리(혹은, 호스트 메모리)로부터 system bus, north bridge, south bridge, PCIe switch 등을 거치면서 발생하는 레이턴시(latency)를 줄일 수 있으므로 큐 Depth 1 latency를 크게 향상시킬 수 있다. 또한 멀티 큐(multi queue) 뎁쓰(depth)에 대해서, PCIe 대역폭(bandwidth)보다 큰 시스템 대역폭(system bandwidth)로 데이터 전송이 되므로, 데이터 출력(data throughout)이 증가하게 되고, 결국 IOPS(input/output per second)가 증가하게 된다.
도 6은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)에서 호스트 메모리(120)에서 데이터를 데이터 어레이(122)와 HMB(124) 사이에 이동시키는 방법에 대한 실시 예를 예시적으로 보여주는 도면이다. 도 6을 참조하면, 호스트 메모리(120) 내부에서 데이터 이동 동작은, DMA(direct memory access) 제어기 혹은 NVMe 드라이버에 의해 수행될 수 있다.
첫째로, 호스트 장치(100)는 DMA 제어기를 동작시키기 위한 특수 기능 레지스터(special function register; SFR) 혹은 DMA 디스크립터(descriptor)의 어드레스를, NVMe 커맨드 중에서 벤더 스페시픽 커맨드(vendor specific command) 또는 BAR(base address registers) 어드레스의 reserved address를 이용하여 NVMe 초기화 동작 중에 저장 장치(200)에 알려 줄 수 있다. 이후, 저장 장치(200)는 대응하는 어드레스를 통하여 IO 동작을 위해서 DMA 제어기를 구동시킬 수 있다.
둘째로, 호스트 장치(100)가 DMA 제어기를 저장 장치(200)에게 할당하지 못할 때, 저장 장치(200)는 DMA 제어기의 역할을 대신하여, 메모리 복사(memory copy) 동작을 수행할 수도 있다.
한편, DMA 제어기 혹은 NVMe 드라이버에 의한 데이터 이동 동작 이후에, 복사 동작이 완료되었다는 것을 저장 장치(200)가 알아야, 커맨드 프로토콜(command protocol)의 다음 단계를 진행할 수 있다.
저장 장치(200)는, 도 6에 도시된 바와 같이, 초기화 동작(initialization) 시에 호스트 장치(100)로부터 받은 DMA 제어기의 SFR(special function registers) 어드레스 혹은 NVMe 드라이버의 상태 어드레스(state address)를 폴링(polling) 함으로써, 데이터 복사 동작의 완료 유무를 확인할 수 있다.
한편, 호스트 장치(100)가 직접적으로 저장 장치(200)로 데이터 복사 동작이 완료되었음을 알려 줄 수도 있다.
도 7은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)에서 호스트 메모리(120)에서 데이터를 데이터 어레이(122)와 HMB(124) 사이에 이동시키는 방법에 대한 다른 실시 예를 예시적으로 보여주는 도면이다. 도 7을 참조하면, 데이터 복사 동작은, 도 6에 도시된 그것과 비교하여, 호스트 장치(100)가 직접 reserved BAR 어드레스 혹은 벤더 스페시픽 커맨드(vendor specific command)를 사용하여 저장 장치(200)가 복사 동작의 완료를 알게 할 수 있다.
도 8은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 호스트 장치(100)와 저장 장치(200) 사이에서 메모리 복사 동작과 관련된 통신을 예시적으로 보여주는 도면이다. 도 8을 참조하면, 호스트 장치(100) 및 저장 장치(200)는 각각 PCIe 인터페이스들(102, 202)을 통하여 통신할 수 있다.
실시 예에 있어서, 호스트 장치(100)의 PCIe 인터페이스(102)는 TLP(transport layer packet)/DLP(data link layer packet)을 통하여 저장 장치(200)의 PCIe 인터페이스(202)의 레지스터(204)에 알림 메시지를 전송할 수 있다. 예를 들어, 알림 메시지는 레지스터(204)의 BAR(base address register) 영역(206)에 저장될 수 있다.
실시 예에 있어서, 저장 장치(200)의 PCIe 인터페이스(202)는 TLP/DLP을 통하여 호스트 장치(100)의 PCIe 인터페이스(102)의 레지스터(104)에 데이터 이동 요청을 전송할 수 있다. 한편, 본 발명의 실시 예에 따른 컴퓨팅 시스템은 호스트 메모리의 데이터 캐쉬 영역을 분할하여 관리하도록 구현될 수 있다.
도 9는 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(20)을 예시적으로 보여주는 도면이다. 도 9를 참조하면, 컴퓨팅 시스템(20)은, NVMe의 코어 별로 큐를 생성할 수 있는 특성을 고려하여, 코어 당 혹은 큐 당 HMB(124) 영역을 분할하여 캐쉬된 데이터 엔트리를 관리할 수 있다.
도 10은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 시스템(30)을 예시적으로 보여주는 도면이다. 도 10을 참조하면, 컴퓨팅 시스템(30)은 네임 스페이스(name space) 별로 HMB(124) 영역을 분할하여 캐쉬 된 데이터 엔트리를 관리할 수 있다.
실시 예에 있어서, 저장 장치는 IO 요청 패턴을 분석하여 HMB(124)에 데이터를 캐싱(cashing) 할지, 아니면 직접 저장 장치로 전송할지 결정할 수 있다. 예를 들어, 사용자 혹은 애플리케이션이 HMB(124) 캐쉬에 범위가 큰 LBA(logical block address) 혹은 연속한(sequential) 한 LBA를 쓰기(write) 하는 경우, 저장 장치에 데이터가 저장될 수 있다.
도 11은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 입출력 동작 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 11을 참조하면, 컴퓨팅 시스템의 입출력 동작은 다음과 같이 진행될 수 있다.
저장 장치는 호스트 장치로부터 입출력 요청을 수신할 수 있다(S110). 저장 장치는 입출력 요청에 따른 데이터 처리를 위해 HMB(124)를 사용할지를 결정할 수 있다(S120). 예를 들어, 용량의 큰 데이터 혹은 연속적인 어드레스에 대응하는 데이터라면, 저장 장치는 호스트 메모리의 HMB(124)를 사용하지 않을 수 있다.
만일, HMB(124) 사용이 결정되면, 저장 장치는 호스트 메모리의 데이터 어레이와 HMB(124) 사이에서 데이터 복사 요청을 호스트 장치로 전송할 수 있다. 여기서 데이터 복사 요청은 입출력 요청에 대응할 수 있다(S130). 이후, 데이터 복사 요청에 대응하는 데이터가 호스트 메모리의 데이터 어레이와 HMB(124) 사이에서 전송될 수 있다(S140). 입출력 요청에 대응하는 데이터 전송이 호스트 메모리 내부에서 완료되면, 입출력 요청이 완료될 수 있다.
한편, 본 발명은 모바일 장치에 적용 가능하다.
도 12는 본 발명의 실시 예 따른 모바일 장치(1000)를 예시적으로 보여주는 도면이다. 도 12를 참조하면, 모바일 장치(1000)는 프로세서(AP/ModAP, 1100), 버퍼 메모리(1200), 디스플레이/터치 모듈(1300) 및 저장 장치(1400)를 포함할 수 있다.
프로세서(1100)는 모바일 장치(1000)의 전반적인 동작 및 외부와의 유선/무선 통신을 제어하도록 구현될 수 있다. 예를 들어, 프로세서(1100)는 어플리케이션 프로세서(AP, application processor), 통합 모뎀 어플리케이션 프로세서(ModAP) 등 일 수 있다.
프로세서(1100)는 보안 칩 및 접근 제어 로직을 포함할 수 있다. 보안 칩은, 소프트웨어 및/혹 변조 방지 하드웨어(tamper resistant hardware)로 구성되고, 높은 수준의 보안을 허용하고, 프로세서(1100)의 TEE(trusted execution environment)에 협력하여 작업할 수 있다. 보안 칩은 운영 체제인 Native OS(operation system), 내부의 데이터 저장소인 보안 저장 장치, 보안 칩에 접근권을 제어하는 접근 제어 블록, 오너십 관리(ownership management), 키 관리(key management), 디지털 서명(digital signature), 암호/복호 등을 수행하는 보안 기능 블록과 보안 칩의 펌웨어를 업데이트하기 위한 펌웨어 업데이트 블록을 포함할 수 있다. 보안 칩은, 예를 들어, UICC(universal IC card, 예, USIM, CSIM, ISIM), SIM(subscriber identity module) 카드, eSE(embedded secure elements), MicroSD, Stickers 등 일 수 있다. 접근 제어 로직은 버퍼 메모리(1200)의 암호화 데이터 영역에 대한 접근을 제어하도록 구현될 수 있다.
버퍼 메모리(1200)는 모바일 장치(1000)의 처리 동작 시 필요한 데이터를 임시로 저장하도록 구현될 수 있다. 실시 예에 있어서, 버퍼 메모리(1200)는 DRAM, SDRAM, MRAM 등으로 구현될 수 있다. 버퍼 메모리(1200)는 비암호화 데이터 영역과 암호화 데이터 영역을 포함할 수 있다. 여기서 암호화 데이터 영역은 보안 칩에 의해 암호화된 데이터를 저장할 수 있다. 실시 예에 있어서, 버퍼 메모리(1200)는 DDR(double data rate) 인터페이스를 통하여 프로세서(1100)에 연결될 수 있다.
실시 예에 있어서, 버퍼 메모리(1200)는 상술 된 호스트 메모리 버퍼(HMB(124))를 포함할 수 있다. 저장 장치(1400)는 호스트 메모리 버퍼(HMB(124))에 프로세서(1100)의 개입 없이 독립적/배타적으로 접근할 수 있다.
디스플레이/터치 모듈(1300)은 프로세서(1100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 수 있다.
저장 장치(1400)는 사용자의 데이터를 저장하도록 구현될 수 있다. 저장 장치(1400)는 eMMC(embedded multimedia card), SSD(solid state drive), UFS(universal flash storage) 등 일 수 있다. 저장 장치(1400)는 적어도 하나의 비휘발성 메모리 장치를 포함할 수 있다. 실시 예에 있어서, 저장 장치(1400)는 PCIe 인터페이스를 통하여 프로세서(1100)에 연결될 수 있다.
본 발명의 실시 예에 따른 모바일 장치(1000)는 HMB(124)를 저장 장치(1400)의 데이터 캐쉬로 사용함으로써, 전체적인 성능 향상을 기대할 수 있다.
본 발명의 실시 예에 따른 저장 시스템은, 호스트 메모리를 저장 장치가 배타적으로 이용할 수 있는 스토리지 인터페이스(storage interface) 상에서 인터페이스 프로토콜을 유지한 체, 호스트 메모리를 저장 장치의 데이터 버퍼로 사용할 수 있다. 여기서, 호스트 메모리는 저장 장치의 NVM으로 쓰기(write) 하기 전, RAM 캐쉬로 사용될 수 있다.
실시 예에 있어서, 호스트 메모리의 데이터 영역과 HMB 영역 사이의 데이터 이동은 호스트 장치 내의 DMA 제어기 혹은 NVMe 드라이버에 의해 동작할 수 있다. 여기서 저장 장치는 DMA 제어기 혹은 NVMe 드라이버에 의한 데이터 이동을 호스트 장치에 요청할 수 있다.
실시 예에 있어서, 저장 장치는 호스트 메모리와 호스트 메모리 이외의 시스템 메모리 사이의 데이터 이동을 요청할 수 있다. 예를 들어, 저장 장치는 DMA 제어기의 SFR(special function register) 혹은 NVMe 드라이버의 정해진 어드레스에 쓰기/읽기 동작을 통해 요청할 수 있다. 또한, 저장 장치는 디스크립터(descriptor) 방식으로 데이터 이동 동작 엔트리를 생성하여 DMA 제어기 혹은 NVMe 드라이버에 전달할 수 있다.
실시 예에 있어서, 저장 장치는 NVMe vendor specific command를 이용하거나 BAR 영역을 통해 호스트 메모리 내의 데이터 이동을 요청할 수 있다.
실시 예에 있어서, 데이터 이동 요청은, PCIe TLP(transaction layer packets) 이나 DLP(data link layer packets)을 이용할 수 있다.
실시 예에 있어서, 호스트 메모리 내의 데이터 이동 완료는, 인터페이스 사양(interface specification) 을 통해서 저장 장치가 폴링(polling)을 통해서 체크하거나, 호스트 장치가 저장 장치에 직접 알려줄 수 있다.
실시 예에 있어서, 호스트 메모리와 호스트 메모리 이 외의 시스템 메모리 사이의 데이터 이동 상태는 저장 장치의 폴링(polling)으로 알 수 있거나, 호스트 장치의 알림에 의해 저장 장치에 알려질 수 있다.
호스트 장치는 NVMe vendor specific command를 이용하거나 BAR 영역을 이용하여 데이터 이동 상태를 저장 장치에 알릴 수 있다. 이때, 알림 메시지는 PCIe TLP(transaction layer packets) 이나 DLP(data link layer packets)을 이용할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법은, 코어 혹은 큐별로 호스트 메모리를 분할하여 코어 혹은 큐별로 RAM(random access memory) 캐쉬를 할당 할 수 있다.
실시 예에 있어서, 동작 방법은 저장 장치의 네임 스페이스(name space)나 파티션(partition) 별로 호스트 메모리를 분할하여 RAM 캐쉬를 독립적으로 할당할 수 있다.
실시 예에 있어서, 호스트 메모리의 데이터를 저장 장치로 라이트 백(write back) 하거나 플러쉬(flush) 할 때, 저장 장치는 내부의 NVM에 쓰기(write) 하거나 혹은 저장 장치 내의 데이터 버퍼에 쓰기(write) 할 수 있다.
실시 예에 있어서, 저장 장치의 호스트 메모리 매니저는 NVM에 저장된 데이터를 미리 호스트 메모리에 프리페치 할 수 있다.
실시 예에 있어서, 프리페치 데이터의 판단은 요청 회수, 공간 지역성(spatial locality), 국부성(temporal locality), LRU(least recently used) 등의 프리페치(prefetch) 예측 기법을 사용할 수 있다.
실시 예에 있어서, 저장 장치는 입출력 요청의 pattern을 판별하고, 호스트 메모리의 캐쉬에 저장 할 지 아니면, 저장 장치로 가져 올 지 결정할 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10: 컴퓨팅 시스템
100: 호스트 장치
200: 저장 장치
120: 호스트 메모리
122: 데이터 어레이
124, HBM: 호스트 메모리 버퍼
124-1: 메타 영역
124-2: 데이터 캐쉬 영역
210, NVM: 비휘발성 메모리
220, CNTL: 제어기

Claims (10)

  1. 컴퓨팅 시스템의 동작 방법에 있어서:
    입출력 요청에 대응하는 커맨드 엔트리를 서브미션 큐에 저장하는 단계;
    상기 서브미션 큐로부터 상기 커맨드 엔트리를 페치하는 단계;
    저장 장치의 제어에 따라 호스트 메모리의 내부에서 상기 입출력 요청에 대응하는 데이터를 이동시키는 단계;
    상기 데이터의 이동 동작 이후에, 상기 입출력 요청에 대한 컴플리션을 컴플리션 큐에 업데이트하는 단계; 및
    상기 컴플리션 큐의 업데이트 이후에, 상기 호스트 메모리의 상기 데이터를 상기 저장 장치로 전송하거나, 상기 저장 장치의 데이터를 상기 호스트 메모리로 전송하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 데이터를 이동하는 단계는,
    상기 호스트 메모리의 데이터 어레이와 상기 호스트 메모리의 호스트 메모리 버퍼 사이에서 데이터 이동 요청에 응답하여 상기 데이터를 복사하는 단계를 포함하고,
    상기 호스트 메모리 버퍼는 상기 저장 장치에 의해 제어되는 방법.
  3. 제 2 항에 있어서,
    DMA(direct memory access) 제어기 혹은 비휘발성 메모리 드라이버의 제어에 따라 상기 호스트 메모리 내부에서 상기 데이터가 이동되는 방법.
  4. 제 3 항에 있어서,
    상기 데이터를 이동하는 단계는,
    상기 저장 장치에서 상기 DMA 제어기의 특수 기능 레지스터 혹은 비휘발성 메모리 드라이버의 사전에 결정된 어드레스에 쓰기/읽기 동작을 통해 상기 호스트 장치로 상기 데이터 이동 요청을 전송하는 단계를 포함하는 방법.
  5. 제 3 항에 있어서,
    상기 데이터를 이동하는 단계는,
    호스트 장치에서 벤더 스페시픽 커맨드 혹은 BAR(base address register) 어드레스를 통해 상기 DMA 제어기의 특수 기능 레지스터 혹은 비휘발성 메모리 드라이버의 사전에 결정된 어드레스를 상기 저장 장치에 알려주는 단계; 및
    상기 알려준 어드레스를 이용하여 상기 호스트 장치로 상기 데이터 이동 요청을 전송하는 단계를 포함하는 방법.
  6. 제 3 항에 있어서,
    상기 데이터 이동 요청은 PCIe(peripheral component interconnect express) 인터페이스에 따른 TLP(transaction layer packets) 혹은 DLP(data link layer packets)으로 상기 저장 장치에서 상기 호스트 장치로 전송되는 방법.
  7. 제 1 항에 있어서,
    상기 호스트 메모리를 코어 혹은 큐에 따라 여러 개로 분할하는 단계; 및
    상기 코어 혹은 큐에 따라 상기 분할된 호스트 메모리들을 상기 저장 장치의 RAM(random access memory) 캐쉬로 이용하는 단계를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 호스트 메모리를 네임 스페이스(name space) 혹은 파티션에 따라 여러 개로 분할하는 단계; 및
    상기 네임 스페이스 혹은 파티션에 따라 상기 분할된 호스트 메모리들을 상기 저장 장치의 RAM 캐쉬로 이용하는 단계를 더 포함하는 방법.
  9. 데이터 어레이 및 호스트 메모리 버퍼를 갖는 호스트 메모리를 포함하는 호스트 장치; 및
    상기 호스트 장치에 연결되고, 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치를 포함하고,
    상기 호스트 메모리 버퍼는, 상기 저장 장치를 관리하기 위한 메타 데이터를 저장하는 메타 데이터 영역; 및 입출력 요청에 대응하는 데이터를 임시로 저장하는 데이터 캐쉬 영역을 포함하고,
    상기 저장 장치는 상기 입출력 요청에 응답하여 상기 데이터 어레이와 상기 데이터 캐쉬 영역 사이에서 데이터 이동 요청을 상기 호스트 장치로 전송하는 컴퓨팅 시스템.
  10. 제 9 항에 있어서,
    상기 호스트 장치는 상기 데이터 이동 요청에 응답하여 쓰기 커맨드에 대응하는 쓰기 데이터를 상기 데이터 어레이로부터 상기 데이터 캐쉬 영역으로 복사하고, 상기 저장 장치는 상기 데이터 어레이로부터 데이터 캐쉬 영역으로 상기 데이터가 복사될 때 상기 쓰기 커맨드에 대한 컴플리션을 상기 호스트 장치에 업데이트하고, 상기 컴플리션의 업데이트 이후에, 상기 데이터 캐쉬 영역의 데이터는 상기 저장 장치로 쓰여지고,
    읽기 커맨드에 대응하는 어드레스가 상기 호스트 메모리에서 히트될 때, 상기 호스트 장치는 상기 데이터 이동 요청에 응답하여 상기 읽기 커맨드에 대응하는 읽기 데이터를 상기 데이터 캐쉬 영역으로부터 상기 데이터 어레이로 복사하고, 상기 저장 장치는 상기 데이터 캐쉬 영역으로부터 상기 데이터 어레이로 상기 읽기 데이터가 복사될 때 상기 읽기 커맨드에 대한 컴플리션을 상기 호스트 장치에 업데이트하고, 상기 컴플리션 업데이트 이후에, 상기 저장 장치의 데이터가 상기 데이터 캐쉬 영역으로 전송되는 컴퓨팅 시스템.
KR1020160136007A 2016-10-19 2016-10-19 컴퓨팅 시스템 및 그것의 동작 방법 KR20180043451A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160136007A KR20180043451A (ko) 2016-10-19 2016-10-19 컴퓨팅 시스템 및 그것의 동작 방법
US15/709,112 US10970235B2 (en) 2016-10-19 2017-09-19 Computing system with a nonvolatile storage and operating method thereof
CN201710968228.3A CN107967221B (zh) 2016-10-19 2017-10-17 具有非易失性存储器的计算***及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160136007A KR20180043451A (ko) 2016-10-19 2016-10-19 컴퓨팅 시스템 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20180043451A true KR20180043451A (ko) 2018-04-30

Family

ID=61904014

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160136007A KR20180043451A (ko) 2016-10-19 2016-10-19 컴퓨팅 시스템 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US10970235B2 (ko)
KR (1) KR20180043451A (ko)
CN (1) CN107967221B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180043451A (ko) * 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
US11144481B2 (en) 2018-04-11 2021-10-12 Apple Inc. Techniques for dynamically adjusting the manner in which I/O requests are transmitted between a computing device and a storage device
CN109885432B (zh) * 2018-11-28 2022-06-03 深圳忆联信息***有限公司 NVMe前端测试方法、装置、计算机设备及存储介质
CN109582247B (zh) * 2018-12-10 2022-04-22 浪潮(北京)电子信息产业有限公司 一种主机到存储***io的传输方法及存储***
JP2020149222A (ja) 2019-03-12 2020-09-17 キオクシア株式会社 メモリシステム
CN110442463B (zh) * 2019-07-16 2020-07-07 阿里巴巴集团控股有限公司 Tee***中的数据传输方法和装置
CN110442462B (zh) 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee***中的多线程数据传输方法和装置
CN110399235B (zh) 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee***中的多线程数据传输方法和装置
US10699015B1 (en) 2020-01-10 2020-06-30 Alibaba Group Holding Limited Method and apparatus for data transmission in a tee system
DE102020110559A1 (de) 2019-08-14 2021-02-18 Samsung Electronics Co., Ltd. Rechensystem zur Reduzierung von Latenz zwischen seriell verbundenen elektronischen Vorrichtungen
KR20210021202A (ko) * 2019-08-14 2021-02-25 삼성전자주식회사 직렬로 연결된 전자 장치들 사이의 레이턴시를 감소시키기 위한 컴퓨팅 시스템
JP2021056550A (ja) 2019-09-26 2021-04-08 キオクシア株式会社 メモリシステム、メモリシステムの制御方法、および情報処理システム
CN110968529A (zh) * 2019-11-28 2020-04-07 深圳忆联信息***有限公司 无缓存固态硬盘的实现方法、装置、计算机设备及存储介质
KR20210094178A (ko) 2020-01-20 2021-07-29 삼성전자주식회사 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템
US11537320B2 (en) 2020-02-03 2022-12-27 Western Digital Technologies, Inc. Storage system and method for host memory access
US11507309B2 (en) * 2020-05-04 2022-11-22 Western Digital Technologies, Inc. Storage system and method for using memory allocated in a host for read data as a host memory buffer
US11321017B2 (en) * 2020-06-29 2022-05-03 SK Hynix Inc. Systems and methods for controlling completion rate of commands
KR20220049396A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 간접 어드레싱을 위한 시스템, 장치 및 방법
KR20220105304A (ko) * 2021-01-20 2022-07-27 에스케이하이닉스 주식회사 시스템 및 시스템의 동작 방법
US11853603B2 (en) 2021-11-15 2023-12-26 Western Digital Technologies, Inc. Host memory buffer cache management
CN113986773A (zh) * 2021-11-16 2022-01-28 深圳忆联信息***有限公司 基于固态硬盘的写放大优化方法、装置及计算机设备
US20240160372A1 (en) * 2022-11-16 2024-05-16 Samsung Electronics Co., Ltd. Prepopulating commands at a storage device for accelerated host-issued live migration of storage data

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6715000B2 (en) * 2001-03-16 2004-03-30 Texas Instruments Incorporated Method and device for providing high data rate for a serial peripheral interface
US8321650B2 (en) * 2003-01-13 2012-11-27 Emulex Design & Manufacturing Corporation Alignment-unit-based virtual formatting methods and devices employing the methods
US7167929B2 (en) * 2003-01-13 2007-01-23 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays, and a storage-shelf-interface tunneling method and system
US7930422B2 (en) 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
US7284082B2 (en) * 2004-08-19 2007-10-16 Lsi Corporation Controller apparatus and method for improved data transfer
JP4398386B2 (ja) * 2005-01-28 2010-01-13 富士通株式会社 複数の処理ノードをシリアルバスにより相互接続する装置
US8127059B1 (en) * 2005-09-02 2012-02-28 Pmc-Sierra Us, Inc. Apparatus for interconnecting hosts with storage devices
KR100881191B1 (ko) * 2007-03-27 2009-02-05 삼성전자주식회사 멀티 프로토콜 씨리얼 인터페이스 장치 및 그에 따른soc 장치
US8102710B2 (en) * 2007-10-17 2012-01-24 Micron Technology, Inc. System and method for setting access and modification for synchronous serial interface NAND
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8060681B2 (en) * 2007-11-27 2011-11-15 Microsoft Corporation Interface protocol and API for a wireless transceiver
US8407407B1 (en) 2009-10-06 2013-03-26 Marvell International Ltd. Solid state drive access control system with equalized access timing
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8527693B2 (en) 2010-12-13 2013-09-03 Fusion IO, Inc. Apparatus, system, and method for auto-commit memory
TW201301028A (zh) * 2011-06-16 2013-01-01 Amic Technology Corp 用於串列式快閃記憶體之同時讀寫方法
US9122810B2 (en) * 2012-05-18 2015-09-01 Dell Products, Lp System and method for providing input/output functionality to a processing node
KR101988287B1 (ko) * 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
US9311261B2 (en) * 2013-06-27 2016-04-12 Samsung Electronics Co., Ltd. Universal serial interface and semiconductor device including the same
US20150281126A1 (en) * 2014-03-31 2015-10-01 Plx Technology, Inc. METHODS AND APPARATUS FOR A HIGH PERFORMANCE MESSAGING ENGINE INTEGRATED WITHIN A PCIe SWITCH
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US20160011790A1 (en) 2014-07-14 2016-01-14 Sandisk Technologies Inc. Systems and methods to enable access to a host memory associated with a unified memory architecture (uma)
KR102330389B1 (ko) 2014-07-24 2021-11-24 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US9672180B1 (en) * 2014-08-06 2017-06-06 Sanmina Corporation Cache memory management system and method
US9934177B2 (en) 2014-11-04 2018-04-03 Cavium, Inc. Methods and systems for accessing storage using a network interface card
KR102238652B1 (ko) * 2014-11-12 2021-04-09 삼성전자주식회사 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법
US20160162416A1 (en) 2014-12-08 2016-06-09 Intel Corporation Apparatus and Method for Reducing Latency Between Host and a Storage Device
KR20160087224A (ko) * 2015-01-13 2016-07-21 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR102398213B1 (ko) * 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
KR102430187B1 (ko) * 2015-07-08 2022-08-05 삼성전자주식회사 RDMA NVMe 디바이스의 구현 방법
US10241953B2 (en) * 2015-08-07 2019-03-26 Qualcomm Incorporated Dynamic data-link selection over common physical interface
EP3400688B1 (en) * 2016-01-04 2020-05-20 Gray Research LLC Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications
US10521118B2 (en) * 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
KR20180010951A (ko) * 2016-07-22 2018-01-31 삼성전자주식회사 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법
US10567006B2 (en) * 2016-08-05 2020-02-18 Sandisk Technologies Llc Data relocation
KR20180043451A (ko) * 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
KR102410671B1 (ko) * 2017-11-24 2022-06-17 삼성전자주식회사 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법
US10558367B2 (en) * 2018-03-08 2020-02-11 Western Digital Technologies, Inc. Adaptive transaction layer packet for latency balancing

Also Published As

Publication number Publication date
CN107967221A (zh) 2018-04-27
US20180107614A1 (en) 2018-04-19
US10970235B2 (en) 2021-04-06
CN107967221B (zh) 2023-06-27

Similar Documents

Publication Publication Date Title
CN107967221B (zh) 具有非易失性存储器的计算***及其操作方法
US10496544B2 (en) Aggregated write back in a direct mapped two level memory
CN107015920B (zh) 存储设备和存储设备的操作方法
US10896136B2 (en) Storage system including secondary memory that predicts and prefetches data
US20210263645A1 (en) NVMe Controller Memory Manager
US10725835B2 (en) System and method for speculative execution of commands using a controller memory buffer
CN107391397B (zh) 支持近存储器和远存储器访问的存储器通道
CN112948292B (zh) 储存设备及其中断生成方法
CN110073323B (zh) 使用控制器存储器缓冲区进行推测性执行命令的***和方法
TWI596474B (zh) 用於系統存取非依電性半導體儲存體作為隨機存取記憶體之方法及半導體晶片
US20180113614A1 (en) Direct data move between dram and storage on a memory module
KR20170051688A (ko) 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법
KR20170114069A (ko) 스토리지 장치 및 그것의 이벤트 통지 방법
KR20120037786A (ko) 저장 장치, 그것의 락 모드 관리 방법, 및 그것을 포함하는 메모리 시스템
KR20190066466A (ko) 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법
US20220121581A1 (en) Controller and operation method thereof
CN112445721A (zh) 提高效率的经混淆逻辑到物理映射管理
US8782345B2 (en) Sub-block accessible nonvolatile memory cache
KR20190011123A (ko) 스토리지 장치, 스토리지 시스템 및 이의 동작 방법
KR102219759B1 (ko) 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법
US20210200689A1 (en) Storage System and Method for Secure Host Controller Memory Buffer Access
KR20220050177A (ko) 3단의 계층적 메모리 시스템
US20230019584A1 (en) Effective key management for data encyrption and decryption
US10379768B2 (en) Selective memory mode authorization enforcement
US20170153994A1 (en) Mass storage region with ram-disk access and dma access

Legal Events

Date Code Title Description
A201 Request for examination