KR20180043451A - 컴퓨팅 시스템 및 그것의 동작 방법 - Google Patents
컴퓨팅 시스템 및 그것의 동작 방법 Download PDFInfo
- 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
Links
- 238000011017 operating method Methods 0.000 title abstract 3
- 230000015654 memory Effects 0.000 claims abstract description 124
- 238000000034 method Methods 0.000 claims description 26
- 230000000295 complement effect Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 5
- 238000005192 partition Methods 0.000 claims description 3
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000011010 flushing procedure Methods 0.000 description 3
- 238000013479 data entry Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/405—Coupling between buses using bus bridges where the bridge performs a synchronising function
- G06F13/4059—Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
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
본 발명은 컴퓨팅 시스템 및 그것의 동작 방법에 관한 것이다.
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는 본 발명의 실시 예 따른 모바일 장치를 예시적으로 보여주는 도면이다.
도 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: 제어기
100: 호스트 장치
200: 저장 장치
120: 호스트 메모리
122: 데이터 어레이
124, HBM: 호스트 메모리 버퍼
124-1: 메타 영역
124-2: 데이터 캐쉬 영역
210, NVM: 비휘발성 메모리
220, CNTL: 제어기
Claims (10)
- 컴퓨팅 시스템의 동작 방법에 있어서:
입출력 요청에 대응하는 커맨드 엔트리를 서브미션 큐에 저장하는 단계;
상기 서브미션 큐로부터 상기 커맨드 엔트리를 페치하는 단계;
저장 장치의 제어에 따라 호스트 메모리의 내부에서 상기 입출력 요청에 대응하는 데이터를 이동시키는 단계;
상기 데이터의 이동 동작 이후에, 상기 입출력 요청에 대한 컴플리션을 컴플리션 큐에 업데이트하는 단계; 및
상기 컴플리션 큐의 업데이트 이후에, 상기 호스트 메모리의 상기 데이터를 상기 저장 장치로 전송하거나, 상기 저장 장치의 데이터를 상기 호스트 메모리로 전송하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 데이터를 이동하는 단계는,
상기 호스트 메모리의 데이터 어레이와 상기 호스트 메모리의 호스트 메모리 버퍼 사이에서 데이터 이동 요청에 응답하여 상기 데이터를 복사하는 단계를 포함하고,
상기 호스트 메모리 버퍼는 상기 저장 장치에 의해 제어되는 방법. - 제 2 항에 있어서,
DMA(direct memory access) 제어기 혹은 비휘발성 메모리 드라이버의 제어에 따라 상기 호스트 메모리 내부에서 상기 데이터가 이동되는 방법. - 제 3 항에 있어서,
상기 데이터를 이동하는 단계는,
상기 저장 장치에서 상기 DMA 제어기의 특수 기능 레지스터 혹은 비휘발성 메모리 드라이버의 사전에 결정된 어드레스에 쓰기/읽기 동작을 통해 상기 호스트 장치로 상기 데이터 이동 요청을 전송하는 단계를 포함하는 방법. - 제 3 항에 있어서,
상기 데이터를 이동하는 단계는,
호스트 장치에서 벤더 스페시픽 커맨드 혹은 BAR(base address register) 어드레스를 통해 상기 DMA 제어기의 특수 기능 레지스터 혹은 비휘발성 메모리 드라이버의 사전에 결정된 어드레스를 상기 저장 장치에 알려주는 단계; 및
상기 알려준 어드레스를 이용하여 상기 호스트 장치로 상기 데이터 이동 요청을 전송하는 단계를 포함하는 방법. - 제 3 항에 있어서,
상기 데이터 이동 요청은 PCIe(peripheral component interconnect express) 인터페이스에 따른 TLP(transaction layer packets) 혹은 DLP(data link layer packets)으로 상기 저장 장치에서 상기 호스트 장치로 전송되는 방법. - 제 1 항에 있어서,
상기 호스트 메모리를 코어 혹은 큐에 따라 여러 개로 분할하는 단계; 및
상기 코어 혹은 큐에 따라 상기 분할된 호스트 메모리들을 상기 저장 장치의 RAM(random access memory) 캐쉬로 이용하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 호스트 메모리를 네임 스페이스(name space) 혹은 파티션에 따라 여러 개로 분할하는 단계; 및
상기 네임 스페이스 혹은 파티션에 따라 상기 분할된 호스트 메모리들을 상기 저장 장치의 RAM 캐쉬로 이용하는 단계를 더 포함하는 방법. - 데이터 어레이 및 호스트 메모리 버퍼를 갖는 호스트 메모리를 포함하는 호스트 장치; 및
상기 호스트 장치에 연결되고, 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치를 포함하고,
상기 호스트 메모리 버퍼는, 상기 저장 장치를 관리하기 위한 메타 데이터를 저장하는 메타 데이터 영역; 및 입출력 요청에 대응하는 데이터를 임시로 저장하는 데이터 캐쉬 영역을 포함하고,
상기 저장 장치는 상기 입출력 요청에 응답하여 상기 데이터 어레이와 상기 데이터 캐쉬 영역 사이에서 데이터 이동 요청을 상기 호스트 장치로 전송하는 컴퓨팅 시스템. - 제 9 항에 있어서,
상기 호스트 장치는 상기 데이터 이동 요청에 응답하여 쓰기 커맨드에 대응하는 쓰기 데이터를 상기 데이터 어레이로부터 상기 데이터 캐쉬 영역으로 복사하고, 상기 저장 장치는 상기 데이터 어레이로부터 데이터 캐쉬 영역으로 상기 데이터가 복사될 때 상기 쓰기 커맨드에 대한 컴플리션을 상기 호스트 장치에 업데이트하고, 상기 컴플리션의 업데이트 이후에, 상기 데이터 캐쉬 영역의 데이터는 상기 저장 장치로 쓰여지고,
읽기 커맨드에 대응하는 어드레스가 상기 호스트 메모리에서 히트될 때, 상기 호스트 장치는 상기 데이터 이동 요청에 응답하여 상기 읽기 커맨드에 대응하는 읽기 데이터를 상기 데이터 캐쉬 영역으로부터 상기 데이터 어레이로 복사하고, 상기 저장 장치는 상기 데이터 캐쉬 영역으로부터 상기 데이터 어레이로 상기 읽기 데이터가 복사될 때 상기 읽기 커맨드에 대한 컴플리션을 상기 호스트 장치에 업데이트하고, 상기 컴플리션 업데이트 이후에, 상기 저장 장치의 데이터가 상기 데이터 캐쉬 영역으로 전송되는 컴퓨팅 시스템.
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)
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)
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 |
-
2016
- 2016-10-19 KR KR1020160136007A patent/KR20180043451A/ko active Search and Examination
-
2017
- 2017-09-19 US US15/709,112 patent/US10970235B2/en active Active
- 2017-10-17 CN CN201710968228.3A patent/CN107967221B/zh active Active
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 |