KR20210148852A - Host controller interface using multiple circular queue, and operating method thereof - Google Patents
Host controller interface using multiple circular queue, and operating method thereof Download PDFInfo
- Publication number
- KR20210148852A KR20210148852A KR1020210008898A KR20210008898A KR20210148852A KR 20210148852 A KR20210148852 A KR 20210148852A KR 1020210008898 A KR1020210008898 A KR 1020210008898A KR 20210008898 A KR20210008898 A KR 20210008898A KR 20210148852 A KR20210148852 A KR 20210148852A
- Authority
- KR
- South Korea
- Prior art keywords
- queue
- memory
- host
- command
- data
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title description 4
- 230000004044 response Effects 0.000 claims abstract description 226
- 239000000872 buffer Substances 0.000 claims abstract description 169
- 230000015654 memory Effects 0.000 claims description 395
- 238000000034 method Methods 0.000 claims description 49
- 238000012545 processing Methods 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 10
- 239000010410 layer Substances 0.000 description 80
- 229910052751 metal Inorganic materials 0.000 description 77
- 239000002184 metal Substances 0.000 description 77
- 238000010586 diagram Methods 0.000 description 47
- 230000005540 biological transmission Effects 0.000 description 30
- 230000002093 peripheral effect Effects 0.000 description 28
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 27
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 27
- 239000000758 substrate Substances 0.000 description 26
- 238000012546 transfer Methods 0.000 description 20
- 150000002739 metals Chemical class 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 238000007726 management method Methods 0.000 description 7
- 239000007787 solid Substances 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 101000617285 Homo sapiens Tyrosine-protein phosphatase non-receptor type 6 Proteins 0.000 description 6
- 102100021657 Tyrosine-protein phosphatase non-receptor type 6 Human genes 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 239000010949 copper Substances 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 101100449814 Arabidopsis thaliana GTL1 gene Proteins 0.000 description 4
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 4
- 229910052802 copper Inorganic materials 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 208000011580 syndromic disease Diseases 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 229910052782 aluminium Inorganic materials 0.000 description 3
- XAGFODPZIPBFFR-UHFFFAOYSA-N aluminium Chemical compound [Al] XAGFODPZIPBFFR-UHFFFAOYSA-N 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000011229 interlayer Substances 0.000 description 3
- WFKWXMTUELFFGS-UHFFFAOYSA-N tungsten Chemical compound [W] WFKWXMTUELFFGS-UHFFFAOYSA-N 0.000 description 3
- 229910052721 tungsten Inorganic materials 0.000 description 3
- 239000010937 tungsten Substances 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 101100058970 Arabidopsis thaliana CALS11 gene Proteins 0.000 description 2
- 101100058961 Arabidopsis thaliana CALS2 gene Proteins 0.000 description 2
- 101100058964 Arabidopsis thaliana CALS5 gene Proteins 0.000 description 2
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 2
- 102100031272 Calcineurin B homologous protein 2 Human genes 0.000 description 2
- 241001510512 Chlamydia phage 2 Species 0.000 description 2
- 102100031885 General transcription and DNA repair factor IIH helicase subunit XPB Human genes 0.000 description 2
- 101000777239 Homo sapiens Calcineurin B homologous protein 2 Proteins 0.000 description 2
- 101000920748 Homo sapiens General transcription and DNA repair factor IIH helicase subunit XPB Proteins 0.000 description 2
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 2
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 2
- 101100287040 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ARG82 gene Proteins 0.000 description 2
- 101100341076 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) IPK1 gene Proteins 0.000 description 2
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 230000000593 degrading effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 238000007616 round robin method Methods 0.000 description 2
- 229910052709 silver Inorganic materials 0.000 description 2
- 239000004332 silver Substances 0.000 description 2
- 101150064834 ssl1 gene Proteins 0.000 description 2
- 101150062870 ssl3 gene Proteins 0.000 description 2
- JPKJQBJPBRLVTM-OSLIGDBKSA-N (2s)-2-amino-n-[(2s,3r)-3-hydroxy-1-[[(2s)-1-[[(2s)-1-[[(2s)-1-[[(2r)-1-(1h-indol-3-yl)-3-oxopropan-2-yl]amino]-1-oxo-3-phenylpropan-2-yl]amino]-1-oxo-3-phenylpropan-2-yl]amino]-1-oxo-3-phenylpropan-2-yl]amino]-1-oxobutan-2-yl]-6-iminohexanamide Chemical compound C([C@H](NC(=O)[C@@H](NC(=O)[C@@H](N)CCCC=N)[C@H](O)C)C(=O)N[C@@H](CC=1C=CC=CC=1)C(=O)N[C@@H](CC=1C=CC=CC=1)C(=O)N[C@H](CC=1C2=CC=CC=C2NC=1)C=O)C1=CC=CC=C1 JPKJQBJPBRLVTM-OSLIGDBKSA-N 0.000 description 1
- 102100031277 Calcineurin B homologous protein 1 Human genes 0.000 description 1
- 241000839426 Chlamydia virus Chp1 Species 0.000 description 1
- 101000777252 Homo sapiens Calcineurin B homologous protein 1 Proteins 0.000 description 1
- 101000943802 Homo sapiens Cysteine and histidine-rich domain-containing protein 1 Proteins 0.000 description 1
- 229910052581 Si3N4 Inorganic materials 0.000 description 1
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 102100033019 Tyrosine-protein phosphatase non-receptor type 11 Human genes 0.000 description 1
- 101710116241 Tyrosine-protein phosphatase non-receptor type 11 Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 101150005884 ctp1 gene Proteins 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011810 insulating material Substances 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 150000002736 metal compounds Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 229910021420 polycrystalline silicon Inorganic materials 0.000 description 1
- -1 polysilicon Chemical class 0.000 description 1
- 229920005591 polysilicon Polymers 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- HQVNEWCFYHHQES-UHFFFAOYSA-N silicon nitride Chemical compound N12[Si]34N5[Si]62N3[Si]51N64 HQVNEWCFYHHQES-UHFFFAOYSA-N 0.000 description 1
- 229910052814 silicon oxide Inorganic materials 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
Abstract
Description
본 개시의 기술적 사상은 스토리지 장치에 명령을 전송하는 호스트 컨트롤러 인터페이스에 관한 것으로, 보다 구체적으로는 비트맵(bitmap) 기반 도어벨(doorbell) 구조를 가지며 다중 원형 큐를 이용 가능한 호스트 컨트롤러 인터페이스에 관한 것이다.The technical idea of the present disclosure relates to a host controller interface that transmits a command to a storage device, and more particularly, to a host controller interface having a bitmap-based doorbell structure and using multiple circular queues. .
스토리지 장치(예를 들어, 솔리드 스테이트 드라이브; SSD)를 기반으로 하는 스토리지 시스템에 사용되는 인터페이스로 SATA(Serial ATA), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI), eMMC(embedded MMC), 및 UFS(Universal Flash Strage) 등이 이용된다. 스토리지 장치는 점차 개선되고 있고, 동시에 처리되는 데이터 양도 점차 증가하고 있다. 하지만, SATA와 같은 인터페이스는 SSD와 같은 스토리지 장치에 특화된 인터페이스가 아니므로, 근본적으로 한계점을 가지고 있다. Interface used in storage systems based on storage devices (e.g. solid state drives; SSDs); Serial ATA (SATA), Peripheral Component Interconnect Express (PCIe), Serial Attached SCSI (SAS), embedded MMC (eMMC) , and UFS (Universal Flash Strage) are used. Storage devices are gradually improving, and the amount of data being processed at the same time is also increasing. However, an interface such as SATA is not an interface specialized for storage devices such as SSD, and therefore has a fundamental limitation.
최근, 데이터 저장 장치에 적용될 수 있는 표준화된 인터페이스를 만들고자 하는 노력의 일환으로써, NVMe(Non-Volatile Memory Express) 및 UFS가 탄생하게 되었다. NVMe는 PCIe 버스를 통해 연결되는 스토리지 장치들(또는 비휘발성 메모리 들)에 대하여 직접 메모리 접근(Direct Memory Access)의 기능을 제공할 수 있고, UFS는 MIPI(Mobile Industry Processor Interface)의 M-PHY 및 UniPro를 채택한 구조이다. Recently, as part of an effort to create a standardized interface that can be applied to data storage devices, NVMe (Non-Volatile Memory Express) and UFS were born. NVMe can provide a function of direct memory access to storage devices (or non-volatile memories) connected through a PCIe bus, and UFS can provide the M-PHY and It is a structure adopting UniPro.
하나의 비트맵 도어벨을 복수의 코어들이 공유하는 경우, 자원 점유 오버헤드가 발생함으로써 시스템 전체의 성능이 저하될 수 있다. 예를 들어, UFS 규격은 복수의 코어들 중 어느 하나의 코어가 비트맵 도어벨에 접근 시, 다른 코어들은 비트맵 도어벨에 액세스할 수 없다. When a single bitmap doorbell is shared by a plurality of cores, resource occupation overhead may occur, thereby degrading the overall system performance. For example, according to the UFS standard, when any one of a plurality of cores accesses the bitmap doorbell, other cores cannot access the bitmap doorbell.
본 개시의 기술적 사상이 해결하고자 하는 과제는 비트맵(bitmap) 기반 도어벨(doorbell) 구조를 가지며 다중 원형 큐를 이용할 수 있는 호스트 컨트롤러 인터페이스 및 이의 동작 방법을 제공하는데 있다. SUMMARY OF THE INVENTION An object of the technical spirit of the present disclosure is to provide a host controller interface having a bitmap-based doorbell structure and using multiple circular queues, and an operating method thereof.
상기와 같은 목적을 달성하기 위하여, 본 개시의 예시적 실시예에 따른 호스트 장치와 스토리지 장치 간 인터페이싱을 제공하도록 구성된 호스트 컨트롤러 인터페이스는, 적어도 하나의 큐의 헤드 포인터 및 테일 포인터를 저장하도록 구성된 도어벨 레지스터, 상기 적어도 하나의 큐에 포함된 제1 커맨드 또는 제1 리스폰스를 저장하도록 구성된 엔트리 버퍼, 상기 적어도 하나의 큐의 순서를 중재하도록 구성된 중재기, 순서에 따라 상기 제1 커맨드가 상기 엔트리 버퍼에 저장될 수 있게 경로화하도록 구성된 제1 라우터 및 상기 제1 리스폰스가 상기 도어벨 레지스터에 저장될 수 있게 경로화하도록 구성된 제2 라우터를 포함할 수 있다.In order to achieve the above object, the host controller interface configured to provide interfacing between the host device and the storage device according to an exemplary embodiment of the present disclosure is a doorbell configured to store a head pointer and a tail pointer of at least one queue a register, an entry buffer configured to store a first command or a first response included in the at least one queue, an arbiter configured to arbitrate an order of the at least one queue, according to an order, the first command is stored in the entry buffer a first router configured to route to be stored and a second router configured to route such that the first response is stored to the doorbell register.
본 개시의 예시적 실시예에 따른 스토리지 시스템은, 호스트 장치 및 스토리지 장치를 포함하고, 상기 스토리지 장치에 커맨드를 전송하는 상기 호스트 장치는, 적어도 하나의 큐를 저장하는 호스트 메모리, 및 상기 적어도 하나의 큐를 처리하도록 구성된 적어도 하나의 코어, 및 상기 호스트 메모리와의 인터페이싱을 제공하도록 구성된 호스트 컨트롤러 인터페이스를 포함하는 호스트 컨트롤러를 포함하고, 상기 스토리지 장치는, 상기 커맨드에 기초하여 메모리 동작을 수행한 결과인 리스폰스를 상기 호스트 장치에 제공하고, 상기 호스트 컨트롤러 인터페이스는, 상기 적어도 하나의 큐에 대한 헤드 포인터 및 테일 포인터를 저장하는 도어벨 레지스터를 포함하는 것을 특징으로 할 수 있다.A storage system according to an exemplary embodiment of the present disclosure includes a host device and a storage device, wherein the host device transmitting a command to the storage device includes a host memory that stores at least one queue, and the at least one a host controller comprising at least one core configured to process a queue, and a host controller interface configured to provide interfacing with the host memory, wherein the storage device is a result of performing a memory operation based on the command. A response may be provided to the host device, and the host controller interface may include a doorbell register configured to store a head pointer and a tail pointer for the at least one queue.
본 개시의 예시적 실시예에 따른 적어도 하나의 커맨드를 포함하는 적어도 하나의 큐를 이용하는 호스트 장치와 스토리지 장치 간 인터페이싱을 제공하도록 구성된 호스트 컨트롤러 인터페이스의 동작 방법은, 제1 큐에 포함된 제1 커맨드를 포함하는 복수의 커맨드들의 순서를 중재하는 단계, 상기 제1 커맨드를 엔트리 버퍼에 저장하는 단계, 상기 제1 큐의 제1 헤드 포인터를 갱신하는 단계, 제2 커맨드를 상기 엔트리 버퍼에 저장하는 단계, 상기 제2 커맨드를 포함하는 제2 큐의 제2 헤드 포인터를 갱신하는 단계, 및 상기 제1 커맨드 및 상기 제2 커맨드를 순차적으로 상기 스토리지 장치에 제공하는 단계를 포함할 수 있다.An operating method of a host controller interface configured to provide interfacing between a host device and a storage device using at least one queue including at least one command according to an exemplary embodiment of the present disclosure includes a first command included in a first queue Arbitrating the order of a plurality of commands comprising: storing the first command in an entry buffer; updating a first head pointer of the first queue; , updating a second head pointer of a second queue including the second command, and sequentially providing the first command and the second command to the storage device.
본 개시의 기술적 사상에 따른 호스트 컨트롤러 인터페이스는 다중 원형 큐를 이용할 수 있으므로, 복수의 코어 간 공유 자원 점유 문제에 의한 오버헤드를 해결하고, 성능을 극대화할 수 있다. Since the host controller interface according to the technical idea of the present disclosure can use a multi-circular queue, it is possible to solve an overhead caused by a problem of occupying a shared resource between a plurality of cores and maximize performance.
또한, 본 개시의 기술적 사상에 따른 호스트 컨트롤러 인터페이스는 다중 원형 큐를 이용함에 있어서, UFS에 적용되는 비트맵 기반 도어벨 구조를 그대로 유지하되 중재기 및 라우터를 추가로 이용함으로써 HCI 및 스토리지 간 인터페이스의 구조 변경을 최소화할 수 있고, 종전의 장치들과의 호환성을 유지할 수 있다.In addition, in using the multi-circular queue, the host controller interface according to the technical idea of the present disclosure maintains the bitmap-based doorbell structure applied to UFS as it is, but additionally uses an arbiter and a router to improve the interface between HCI and storage. Structural change can be minimized, and compatibility with existing devices can be maintained.
또한, 본 개시의 기술적 사상에 따른 호스트 컨트롤러 인터페이스에 따르면, 다중 코어가 리소스를 점유함으로써 유발되는 오버헤드가 감소되고 데이터 처리 성능이 향상될 수 있다. In addition, according to the host controller interface according to the technical spirit of the present disclosure, an overhead caused by multiple cores occupying a resource may be reduced and data processing performance may be improved.
도 1은 본 개시의 예시적인 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 도 1에 도시된 호스트 장치의 일 구현 예를 나타내는 블록도이다.
도 3은 도 1에 도시된 스토리지 컨트롤러의 일 구현 예를 나타내는 블록도이다.
도 4는 UFS 인터페이스가 적용된 스토리지 시스템의 일 구현 예를 나타내는 블록도이다.
도 5는 본 개시의 예시적 실시예에 따른 스토리지 시스템의 동작을 도시하는 도면이다.
도 6는 본 개시의 예시적 실시예에 따른 호스트 장치의 동작 방법을 도시하는 흐름도이다.
도 7은 본 개시의 예시적 실시예에 따라 커맨드가 기입되는 스토리지 시스템을 도시하는 블록도이다.
도 8은 본 개시의 예시적 실시예에 따라 리스폰스가 기입되는 스토리지 시스템을 도시하는 블록도이다.
도 9는 본 개시의 예시적 실시예에 따른 커맨드가 원형 큐에 기입되는 과정을 도시한 도면이다.
도 10은 본 개시의 예시적 실시예에 따른 스토리지 시스템의 동작 방법을 도시하는 흐름도이다.
도 11 및 도 12는 호스트 메모리 및 호스트 컨트롤러 내의 레지스터에 저장되는 각종 정보의 일 예를 나타내는 블록도이다.
도 13은 UFS 인터페이스에 따른 데이터 독출 동작 및 패킷의 일 구현 예를 나타내는 도면이다.
도 14a 및 도 14b는 본 개시의 예시적 실시예에 따른 패킷의 구조를 나타내는 도면이다.
도 15는 본 개시의 예시적인 실시예에 따른 스토리지 장치가 적용된 시스템을 도시한 도면이다.
도 16은 본 개시의 예시적인 실시예에 따른 UFS 시스템에 대해 설명하기 위한 도면이다.
도 17a 내지 도 17c는 본 개시의 예시적인 실시예에 따른 UFS 카드(card)의 폼 팩터(form factor)에 대해 설명하기 위한 도면이다.
도 18a는 본 개시의 예시적인 실시예에 따른 호스트-스토리지 시스템을 나타내는 블록도이고, 도 18b 내지 도 18e는 도 18a의 구성들의 상세 블록도이다.
도 19는 본 개시의 예시적인 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 20은 본 개시의 예시적인 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 21은 본 개시의 예시적인 실시예에 따른 메모리 장치를 나타내는 블록도이다.
도 22는 본 개시의 예시적인 실시예에 따른 UFS 장치에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다.
도 23은 본 개시의 예시적인 실시예에 따른 메모리 장치를 나타내는 단면도이다.
도 24는 본 개시의 예시적인 실시예에 따른 호스트 스토리지 시스템이 적용된 데이터 센터를 나타낸 도면이다.1 is a block diagram illustrating a storage system according to an exemplary embodiment of the present disclosure.
FIG. 2 is a block diagram illustrating an implementation example of the host device shown in FIG. 1 .
FIG. 3 is a block diagram illustrating an example implementation of the storage controller illustrated in FIG. 1 .
4 is a block diagram illustrating an implementation example of a storage system to which a UFS interface is applied.
5 is a diagram illustrating an operation of a storage system according to an exemplary embodiment of the present disclosure.
6 is a flowchart illustrating a method of operating a host device according to an exemplary embodiment of the present disclosure.
7 is a block diagram illustrating a storage system to which a command is written according to an exemplary embodiment of the present disclosure.
8 is a block diagram illustrating a storage system to which a response is written according to an exemplary embodiment of the present disclosure.
9 is a diagram illustrating a process in which a command is written into a circular queue according to an exemplary embodiment of the present disclosure.
10 is a flowchart illustrating a method of operating a storage system according to an exemplary embodiment of the present disclosure.
11 and 12 are block diagrams illustrating examples of various types of information stored in a host memory and a register in the host controller.
13 is a diagram illustrating an implementation example of a data read operation and a packet according to a UFS interface.
14A and 14B are diagrams illustrating the structure of a packet according to an exemplary embodiment of the present disclosure.
15 is a diagram illustrating a system to which a storage device according to an exemplary embodiment of the present disclosure is applied.
16 is a diagram for explaining a UFS system according to an exemplary embodiment of the present disclosure.
17A to 17C are diagrams for explaining a form factor of a UFS card according to an exemplary embodiment of the present disclosure.
18A is a block diagram illustrating a host-storage system according to an exemplary embodiment of the present disclosure, and FIGS. 18B to 18E are detailed block diagrams of the configurations of FIG. 18A .
19 is a block diagram illustrating a memory system according to an exemplary embodiment of the present disclosure.
20 is a block diagram illustrating a memory system according to an exemplary embodiment of the present disclosure.
21 is a block diagram illustrating a memory device according to an exemplary embodiment of the present disclosure.
22 is a diagram for explaining a 3D V-NAND structure applicable to a UFS device according to an exemplary embodiment of the present disclosure.
23 is a cross-sectional view illustrating a memory device according to an exemplary embodiment of the present disclosure.
24 is a diagram illustrating a data center to which a host storage system according to an exemplary embodiment of the present disclosure is applied.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다.Hereinafter, embodiments of the present disclosure will be described in detail with reference to the accompanying drawings.
도 1은 본 개시의 예시적인 실시예에 따른 스토리지 시스템(10)을 나타내는 블록도이다. 1 is a block diagram illustrating a
스토리지 시스템(10)은 호스트 장치(100) 및 스토리지 장치(200)를 포함할 수 있다. The
호스트 장치(100)와 스토리지 장치(200)의 원활한 데이터 전송을 위해 많은 표준 규격들이 개발 되고 있거나 현재 개발 중이다. 표준 규격 중 하나로서, 스마트 폰 및 태블릿 컴퓨터와 같은 모바일 디바이스들에서의 플래시 메모리 기반 스토리지를 위해 JEDEC(Joint Electron Device Engineering Council)에 의해 유니버설 플래시 스토리지(UFS; Universal Flash Storage)가 개발되었다. UFS는 커맨드 대기행렬의 특징을 갖는 다중 커맨드들을 지원하는 커맨드 프로토콜 및 SCSI(Small Computer System Interface) 아키텍처 모델을 채용하고, 이로써 멀티 스레드 프로그래밍 패러다임을 가능하게 한다. Many standards are being developed or are currently being developed for smooth data transmission between the
JEDEC에 의해 개발된 또 다른 표준 규격은 eMMC(embedded MultiMediaCard) 표준 규격이다. eMMC는 간략화된 애플리케이션 인터페이스 설계, 소형 패키지 사이즈 및 저전력 소비를 제공할 수 있다. eMMC 플래시 메모리 기반 저장 디바이스들은 현재 모바일 디바이스들에서 스토리지의 주요 형태들 중 하나이다. Another standard developed by JEDEC is the eMMC (embedded MultiMediaCard) standard. eMMC can provide simplified application interface design, small package size and low power consumption. eMMC flash memory based storage devices are currently one of the main forms of storage in mobile devices.
본 개시의 기술적 사상에 따른 스토리지 시스템(10)은 UFS 및 eMMC 와 같은 플래시 메모리 기반 저장 디바이스 표준 규격을 사용할 수 있다. 그러나, 본 실시예는 이에 제한되지 않는다.The
스토리지 시스템(10)은 예를 들어, 데스크톱(Desktop) 컴퓨터, 및 랩톱(Laptop) 컴퓨터를 포함하는 퍼스널 컴퓨터(personal computer; PC), 데이터 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT(Internet of Things) 장치, 워크스테이션(Workstation), 서버(Server), 전기 자동차 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book) 및/또는 웨어러블 기기 등을 포함할 수 있다.The
스토리지 시스템(10)은 호스트 장치(100)의 커맨드(CMD)에 따라 스토리지 장치(200)에 데이터를 저장하거나, 불러올 수 있다. 예시적인 실시예에서, 호스트 장치(100)는 스토리지 장치(200)에 기입(write)할 데이터를 제공할 수 있고, 스토리지 장치(200)로부터 리스폰스(RESP)를 수신함으로써 데이터를 독출(read)할 수 있다. 예시적인 실시예에 따르면, 호스트 장치(100)는 커맨드(CMD)를 발행하여 스토리지 장치(200)에 전송할 수 있고, 스토리지 장치(200)는 커맨드(CMD)에 따라 데이터를 독출, 소거, 또는 기입할 수 있으며, 결과로서 리스폰스(RESP)를 생성하여 호스트 장치(100)에 제공할 수 있다. The
커맨드(CMD)는 커맨드 패킷(PACKET_C)에 포함되어 관리될 수 있고, 리스폰스(RESP)는 리스폰스 패킷(PACKET_R)에 포함되어 관리될 수 있다. 패킷의 구성에 관하여는 도 14a 및 도 14b를 참조하여 상세히 설명된다.The command CMD may be included in the command packet PACKET_C and managed, and the response RESP may be included and managed in the response packet PACKET_R. The structure of the packet will be described in detail with reference to FIGS. 14A and 14B.
호스트 장치(100)는 호스트 컨트롤러(110) 및 호스트 메모리(130)를 포함할 수 있다.The
호스트 장치(100)는 하나 이상의 전자 회로, 칩, 장치의 동작들에 따라, 호스트 장치(100)의 사용자에게 다양한 서비스를 제공할 수 있다. 예시적인 실시예에 따르면, 호스트 장치(100)는, 호스트 장치(100)의 사용자로부터 수신된 명령을 처리하기 위해 다양한 연산을 수행할 수 있고, 호스트 장치(100)의 사용자에게 연산 결과를 제공할 수 있다. 예시적 실시예에 따른 호스트 장치(100)는 운영 체제, 애플리케이션 등을 포함할 수 있다. 본 개시의 예시적 실시 예에 따른 호스트 장치(100)는 UFS(Universal Flash Storage) 프로토콜을 지윈하기 위한 UFS 호스트 컨트롤 드라이버를 포함할 수 있다. 그러나, 본 개시는 이에 제한되지 않고, 호스트 장치(100)는 eMMC(embedded Multi-Media Card) 프로토콜, 또는 NVMe(Non Volatile Memory express) 프로토콜을 지원하기 위한 드라이버를 포함할 수 있다. The
호스트 컨트롤러(110)는 호스트 장치(100)의 전반적인 동작, 보다 구체적으로는 호스트 장치(100)를 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 예시적인 실시예에서, 호스트 컨트롤러(110)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다. 이 외에도, 호스트 컨트롤러(110)는 전용 논리 회로(예컨대, FPGA(Field Programmable Gate Array), ASICs(Application Specific Integrated Circuits) 등)를 포함하는 연산 프로세서(예를 들어, CPU(Central Processing Unit), GPU(Graphic Processing Unit), AP(Application Processor) 등)로 구현될 수 있으나 이에 제한되지 않는다.The
호스트 컨트롤러(110)는 호스트 메모리(130)에 로드된 다양한 소프트웨어를 실행할 수 있다. 예를 들어, 호스트 컨트롤러(110)는 운영 체제(OS) 및 애플리케이션들(애플리케이션)(Application Program)을 실행할 수 있다.The
호스트 컨트롤러(110)는 사용자의 요청에 따라 커맨드(CMD)를 생성하고, 커맨드(CMD)를 스토리지 장치(200)에 전송할 지 여부를 판단할 수 있다. 또한, 호스트 컨트롤러(110)는 리스폰스(RESP)를 수신할 수 있다. 예시적인 실시예에서, 호스트 컨트롤러(110)는 커맨드(CMD) 및/또는 리스폰스(RESP)를 처리 대기열인 큐(queue)에 기입하거나 큐에서 제거할 수 있다.The
호스트 컨트롤러(110)는 하나 이상의 코어를 포함할 수 있으며, 메모리 및/또는 스토리지 장치(200)를 제어하기 위한 다른 IP(Intellectual Propoerty)를 더 포함할 수 있다. 예시적 실시예에 따라, 코어는 호스트 장치(100)에서 처리되는 커맨드(CMD) 및 리스폰스(RESP)의 처리 대기열인 큐를 실행할 수 있다. 예시적 실시예에 따라, 호스트 컨트롤러(110)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기를 더 포함할 수 있고, 가속기는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 호스트 컨트롤러(110)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.The
호스트 컨트롤러(110)는 호스트 컨트롤러 인터페이스(Host Controller Interface; 이하, HCI)를 포함할 수 있으며, 호스트 컨트롤러 인터페이스는 호스트 메모리(130)의 데이터(예컨대, 기입 데이터)를 비휘발성 메모리(230)에 저장하거나, 비휘발성 메모리(230)의 데이터(예컨대, 독출 데이터)를 호스트 메모리(130)에 저장하는 동작을 관리할 수 있다. 또한, 스토리지 컨트롤러(210)는 호스트 컨트롤러(110)와의 인터페이스를 위한 디바이스 컨트롤러 인터페이스(미도시)를 포함할 수 있다.The
서브미션 큐(SQ)는 호스트 장치(100)의 요청, 커맨드(CMD)를 포함하는 여러 유형의 이벤트가 처리되기 위해 대기중인 열을 지칭할 수 있다. 서브미션 큐(SQ)에 저장된 커맨드(CMD)는 호스트 컨트롤러(110)에 의해 펫칭됨으로써 스토리지 장치(200)에 전송될 수 있다. 컴플리션 큐(CQ)는 스토리지 장치(200)의 요청, 및 리스폰스(RESP)를 포함하는 여러 유형의 이벤트를 처리하기 위한 열을 지칭할 수 있다. 컴플리션 큐(CQ)에 저장된 리스폰스(RESP)는 호스트 컨트롤러(110)에 의해 펫칭됨으로써, 메모리 동작(예를 들어, 데이터의 기입, 독출, 또는 소거)이 완료 된 후 호스트에서 처리될 메타 데이터의 갱신을 지시할 수 있다. 서브미션 큐(SQ) 및 컴플리션 큐(CQ)는 호스트 장치(100)의 호스트 메모리(130)에 생성될 수 있다. 본 개시에서는, 설명의 편의를 위해 서브미션 큐 및 컴플리션 큐가 원형(Circular) 큐로서 구현됨이 예시되었으나, 이에 한정되지는 않는다.The submission queue SQ may refer to a queue in which various types of events including a request and a command CMD of the
본 개시의 예시적인 실시예에 따르면, 호스트 컨트롤러(110)는 도어벨 레지스터를 포함할 수 있다. 도어벨 레지스터는 서브미션 큐(Submission Queue; SQ)와 컴플리션 큐(Completion Queue; CQ)를 관리하도록 할당된 레지스터이다. 예를 들어, 호스트 컨트롤러(110)는 도어벨 레지스터를 통해 서브미션 큐(SQ)와 컴플리션 큐(CQ)에 접근함으로써, 호스트 메모리(130)와의 서브미션 큐(SQ) 및 컴플리션 큐(CQ)에 대한 인터페이스 동작을 수행할 수 있다. 예시적인 실시예에 따라, 도어벨 레지스터는 호스트 컨트롤러 인터페이스에 포함될 수 있다.According to an exemplary embodiment of the present disclosure, the
본 개시의 예시적인 실시예에 따른 도어벨 레지스터는 호스트 장치(100)에 의해 생성된 큐 페어(queue pair)를 관리하거나, 제어할 수 있다. 도어벨 레지스터는 하나의 큐 페어와 대응될 수 있다. 예시적인 실시예에 따르면, 도어벨 레지스터큐의 헤드 포인터(HP) 및 테일 포인터(TP)를 저장할 수 있다. 예를 들어, 도어벨 레지스터는 서브미션 큐의 테일을 가리키는 테일 포인터(TP)와 컴플리션 큐의 헤드를 가리키는 헤드 포인터(HP)를 저장할 수 있다. The doorbell register according to an exemplary embodiment of the present disclosure may manage or control a queue pair generated by the
본 개시에서, 서브미션 큐(SQ)에 관련된 도어벨 레지스터는 SQ 도어벨 레지스터로, 컴플리션 큐(CQ)에 관련된 도어벨 레지스터는 CQ 도어벨 레지스터로 각각 지칭된다. 또한, 하나의 큐 페어와 대응되는 도어벨이 1 비트 데이터 공간의 집합인 비트맵으로 표현되는 데이터 구조는 비트맵 도어벨이라고 지칭된다. 본 개시의 예시적인 실시예에 따라, SQ 도어벨 레지스터, CQ 도어벨 레지스터, 및 비트맵 도어벨 등은 호스트 컨트롤러 인터페이스에 의해 관리될 수 있다. 호스트 컨트롤러 인터페이스에 관하여는 도 5에서 보다 상세히 설명된다.In the present disclosure, a doorbell register related to the submission queue SQ is referred to as an SQ doorbell register, and a doorbell register related to the completion queue CQ is referred to as a CQ doorbell register, respectively. Also, a data structure in which a doorbell corresponding to one cue pair is expressed as a bitmap that is a set of 1-bit data spaces is referred to as a bitmap doorbell. According to an exemplary embodiment of the present disclosure, an SQ doorbell register, a CQ doorbell register, and a bitmap doorbell may be managed by a host controller interface. The host controller interface is described in more detail in FIG. 5 .
호스트 메모리(130)는 메인 메모리(main memory) 또는 캐시 메모리로 사용될 수 있다. 또한, 호스트 메모리(130)는 소프트웨어(software), 애플리케이션(application) 또는 펌웨어(firmware) 등을 구동하기 위한 구동 메모리(driving memory)로 사용될 수도 있다. 호스트 메모리(130)에는 호스트 컨트롤러(110)에서 처리될 프로그램이나 데이터들이 로드될 수 있다. 예를 들어, 호스트 메모리(130)는 파일 시스템, 애플리케이션 및 장치 드라이버 등이 로드될 수 있다. 파일 시스템은 커맨드(예를 들어, 기입 커맨드 또는 독출 커맨드)에 따른 논리적 어드레스를 스토리지 장치(200)로 제공할 수 있다. 파일 시스템은 호스트 장치(200)에서 실행되는 특정한 운영 체제에 따라 사용될 수 있다. 파일 시스템은 소프트웨어, 애플리케이션 또는 펌웨어 등을 통해 구현될 수 있다. 예를 들어, 호스트 장치(200)는 윈도우(Windows), 리눅스(Linux), 유닉스(Unix) 등을 실행할 수 있다.The
호스트 메모리(130)는 호스트 장치(100)와 스토리지 장치(200) 간의 인터페이싱 동작을 위해 이용되는 서브미션 큐(SQ) 및 컴플리션 큐(CQ)를 로딩할 수 있다. 서브미션 큐(SQ)는 스토리지 장치(200)로 제공될 커맨드(CMD)를 저장할 수 있고, 컴플리션 큐(CQ)는 스토리지 장치(200)에서 완료된 동작에 대한 완료 정보인 리스폰스(RESP)를 저장할 수 있다.The
본 개시의 예시적인 실시예에 따르면, 호스트 메모리(130)가 로딩한 서브미션 큐(SQ) 및 컴플리션 큐(CQ)는 호스트 컨트롤러(110)에 의해 참조될 수 있다. 예를 들어, 호스트 컨트롤러(110)는 테일 포인터(TP)를 참조함으로써 커맨드(CMD) 또는 리스폰스(RESP)를 서브미션 큐(SQ)에 기입할 수 있고, 헤드 포인터(HP)를 참조함으로써 커맨드(CMD) 또는 리스폰스(RESP)를 컴플리션 큐(CQ)로부터 독출할 수 있다. 예를 들어, 호스트 컨트롤러(110)는 서브미션 큐(SQ), 또는 컴플리션 큐(CQ)에 커맨드(CMD) 또는 리스폰스(RESP)가 기입된 후, 다음 빈 공간을 지시하도록 테일(TAIL) 값을 증가시킬 수 있다. 큐에 커맨드(CMD) 또는 리스폰스(RESP)가 기입되거나 독출되는 동작에 관하여는 도 9에서 보다 상세히 설명된다.According to an exemplary embodiment of the present disclosure, the submission queue SQ and the completion queue CQ loaded by the
예시적인 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(130)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(130)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(130)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 메모리 장치 또는 메모리 모듈일 수 있다.According to an exemplary embodiment, the
호스트 장치(100)는 스토리지 장치(200)의 구동에 관련된 각종 장치들을 더 포함할 수 있다. 일 예로서, 호스트 애플리케이션 및 장치 드라이버 등의 소프트웨어 모듈(미도시)이 더 구비되고, 상기 소프트웨어 모듈은 호스트 메모리(130)에 로딩되어 프로세서(미도시)에 의해 실행될 수 있다. The
스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리 장치(Non-Volatile Memory device; NVM)(230)를 포함할 수 있다. 비휘발성 메모리(230)는 비휘발성 메모리 코어(NVM Core)를 포함할 수 있다.The
스토리지 장치(200)는 호스트 장치(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 하나 이상의 솔리드 스테이트 드라이브(Solid State Drive, SSD)를 포함할 수 있다. 스토리지 장치(200)가 솔리드 스테이트 드라이브를 포함하는 경우, 스토리지 장치(200)는 데이터를 비휘발성하게 저장하는 다수 개의 플래시 메모리 칩들(예컨대, NAND 메모리 칩들)을 포함할 수 있다. The
예시적인 실시예에 따르면, 스토리지 장치(200)는 하나 이상의 플래시 메모리 칩들을 포함하는 플래시 메모리 장치에 해당할 수 있다. 플래시 메모리 장치는 데이터가 전기적으로 기입되고 소거될 수도 있는 비휘발성(non-volatile) 데이터 저장 매체일 수 있다. 예시적 실시예에서, 스토리지 장치(200)는 스토리지 시스템(10)에 내장되는 임베디드(embedded) 메모리일 수 있다. 예를 들어, 스토리지 장치(200)는 Emmc 또는 임베디드 UFS 메모리 장치일 수 있다. 예시적 실시예에서, 스토리지 장치(200)는 스토리지 시스템(10)에 착탈 가능한 외장(external) 메모리일 수 있다. 예를 들어, 스토리지 장치(200)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick), 솔리드 스테이트 드라이브(SSD; Solid State Drive) 및 유니버설 시리얼 버스(USB; Universal Serial Bus) 플래시 드라이브들을 포함한, 다양한 플래시 메모리 기반 저장 디바이스들을 포함할 수 있다. According to an exemplary embodiment, the
스토리지 장치(200)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 상기 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역을 가지는 메모리 셀들의 어레이들, 또는 상기 메모리 셀들의 동작과 관련된 회로로서 상기 기판상에 또는 상기 기판 내에 형성된 회로의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식”은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다. When the
예시적인 실시예에서, 상기 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 Vertical NAND 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다. In an exemplary embodiment, the 3D memory array includes vertical NAND strings arranged in a vertical direction such that at least one memory cell is positioned on top of another memory cell. The at least one memory cell may include a charge trap layer.
미국 특허공개공보 제7,679,133호, 동 제8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.U.S. Patent Publication Nos. 7,679,133, 8,553,466, 8,654,587, 8,559,235, and U.S. Patent Application Publication No. 2011/0233648 disclose that a 3D memory array is constructed in multiple levels and contains word lines and/or Those detailing suitable configurations for a 3D memory array in which bit lines are shared between levels, are incorporated herein by reference.
다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.As another example, the
스토리지 컨트롤러(210)는 스토리지 장치(200)의 전반적인 동작들을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 비휘발성 메모리(230)의 동작들을 스케줄링하거나, 스토리지 장치(200)에서 처리되는 신호들/데이터를 인코딩 및 디코딩할 수 있다. 예시적인 실시예에서, 스토리지 컨트롤러(210)는 비휘발성 메모리(230)이 데이터를 기입, 독출, 또는 소거하도록 비휘발성 메모리(230)를 제어할 수 있다. The
비휘발성 메모리(230)은 호스트 장치(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 예시적인 실시예에서, 비휘발성 메모리(230)은 데이터를 비휘발성하게 저장하는 적어도 하나의 플래시 메모리 칩을 포함할 수 있으며, NAND, 또는 VNAND 메모리 어레이를 포함할 수 있음은 전술한 바와 같다.The
호스트 장치(100)와 스토리지 장치(200)는 다양한 종류의 인터페이스를 통해 서로 통신할 수 있다. 일 예로서, 호스트 장치(100)와 스토리지 장치(200)는 UFS(universal flash storage), SATA(serial ATA), SCSI(small computer small interface), SAS(serial attached SCSI), eMMC(embedded Multi Media Card) 등과 같은 표준 인터페이스를 통해 연결될 수 있다. 호스트 장치(100)와 스토리지 장치(200)는 각각 채용된 인터페이스의 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다. 도 1의 예에서는, 호스트 장치(100)에서 생성되어 스토리지 장치(200)로 전송되는 커맨드 패킷(PACKET_C)과, 스토리지 장치(200)에서 생성되어 호스트 장치(100)로 전송되는 리스폰스 패킷(PACKET_R)이 예시된다.The
본 개시의 기술적 사상에 따르면, 호스트 장치(100)는 SQ 도어벨 레지스터, CQ 도어벨 레지스터, 비트맵 도어벨, 및 SQ와 CQ의 중재와 경로화를 직접 제어함으로써, 호스트 장치(100)의 컴퓨팅 자원의 점유 문제를 해소하고, 성능을 극대화할 수 있다.According to the spirit of the present disclosure, the
도 2는 도 1에 도시된 호스트 장치(100)의 일 구현 예를 나타내는 블록도이다. 도 2의 예에서는 호스트 컨트롤러(110)를 포함하는 애플리케이션 프로세서(AP)가 도시된다. 이하에서는 애플리케이션 프로세서(AP)를 이용하여 호스트 장치(100)를 설명하나, 본 개시의 기술적 사상은 애플리케이션 프로세서(AP)로 구현되는 것에 국한되지 않고, 호스트-슬레이브 기능을 제공할 수 있는 다양한 호스트 장치(100)에 적용될 수 있음이 이해되어야 한다.FIG. 2 is a block diagram illustrating an example implementation of the
도 2를 도 1과 함께 참조하면, 호스트 장치(100)는 애플리케이션 프로세서(AP) 및 호스트 메모리(130)를 포함하고, 애플리케이션 프로세서(AP)는 하나 이상의 모듈들을 지능 소자(Intellectual Property, IP)서 포함할 수 있다. 예시적인 실시예에서, 애플리케이션 프로세서(AP)는 호스트 컨트롤러(110), 적어도 하나의 코어(120), 호스트 메모리 컨트롤러(140), 모뎀(150), 임베디드 메모리(160), 카메라 인터페이스(170), 및 디스플레이 인터페이스(170)를 포함할 수 있다. 호스트 컨트롤러(110), 적어도 하나의 코어(120), 호스트 메모리 컨트롤러(140), 모뎀(150), 임베디드 메모리(160), 카메라 인터페이스(170), 및 디스플레이 인터페이스(170)는 내부 버스를 통해 서로 신호를 송수신할 수 있다. 호스트 컨트롤러(110)는 레지스터(111), 및 호스트 컨트롤러 인터페이스(HCI)(190)를 포함할 수 있다.Referring to FIG. 2 together with FIG. 1 , the
도 2에서는 호스트 메모리(130)가 애플리케이션 프로세서(AP)의 외부의 메모리에 해당하는 것으로 도시되었으나 본 개시의 실시예는 이에 국한될 필요가 없다. 예컨대, 애플리케이션 프로세서(AP) 내부의 임베디드 메모리(160)가 전술한 실시예에서의 호스트 메모리(130)로 이용될 수도 있을 것이다. 한편, 도 2에 도시된 구성들은 하나의 실시예에 불과한 것으로서, 애플리케이션 프로세서(AP)는 도 2에 도시된 구성들 이외에도 다른 구성들을 더 포함할 수도 있으며, 또는 도 2에 도시된 구성들 중 일부는 애플리케이션 프로세서(AP)에 구비되지 않아도 무방하다.In FIG. 2 , the
적어도 하나의 코어(120)는 애플리케이션 프로세서(AP)의 전반적인 동작을 제어할 수 있다. 일 예로서, 스토리지 시스템(10)에 대한 데이터 기입/독출 동작 등을 관리하기 위한 소프트웨어(예컨대, 애플리케이션 프로세서 및 장치 드라이버)가 호스트 메모리(130) 또는 임베디드 메모리(160)에 로딩되고, 코어(120)는 소프트웨어를 실행함에 의해 데이터 기입/독출 동작 등을 관리할 수 있다. 호스트 메모리(130)는 휘발성 메모리 또는 비휘발성 메모리로 구현될 수 있으며, 일 실시예에 따라 호스트 메모리(130)는 DRAM(dynamic random access memory) 및/또는 SRAM(static random access memory) 등의 휘발성 메모리를 포함할 수 있다.At least one
적어도 하나의 코어(120)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)일 수 있다. At least one
본 개시의 예시적인 실시예에 따르면, 적어도 하나의 코어(120)가 복수의 코어들를 포함한다면, 서로 다른 코어는 서로 상이한 소프트웨어를 구동함으로써 작업의 처리 단위인 태스크를 수행할 수 있다. 예를 들어, 제1 코어는 제1 태스크를 수행할 수 있고, 제1 코어와 동종이거나 이종인 제2 코어는 제2 태스크를 수행할 수 있다. 복수의 코어들은 코어마다 전용 큐를 구비할 수 있다. 예를 들어, 제1 코어는 제1 서브미션 큐, 및 제1 컴플리션 큐를, 제2 코어는 제2 서브미션 큐 및 제2 컴플리션 큐를 각각 이용함으로써, 서로 상이한 태스크를 병렬적으로 수행할 수 있다.According to an exemplary embodiment of the present disclosure, if the at least one
예시적인 실시예에 따라, 애플리케이션 프로세서(AP)는 카메라 제어 동작, 디스플레이 제어 동작 및 모뎀 동작 등을 수행할 수 있다. 모뎀(150)이 애플리케이션 프로세서(AP)에 포함됨에 따라, 애플리케이션 프로세서(AP)는 ModAP 으로 지칭될 수 있다.According to an exemplary embodiment, the application processor AP may perform a camera control operation, a display control operation, and a modem operation. As the
호스트 컨트롤러(110)는 전술한 실시예에 따라 스토리지 장치(200)와 커맨드(CMD) 또는 리스폰스(RESP)를 포함하는 패킷(PACKET)을 송수신할 수 있다. 호스트 컨트롤러(110)는 하나 이상의 전송 요청들을 저장하는 레지스터(111)를 포함할 수 있다. The
예시적 실시예에 따라, 코어(120)의 제어에 기반하여 스토리지 장치에 대한 기입 및/또는 독출에 관련된 전송 요청들이 레지스터(111)에 저장될 수 있다. 또한, 코어(120)의 제어에 기반하여 상기 전송 요청들에 대응하는 패킷(PACKET)을 생성하기 위한 각종 정보들이 호스트 메모리(130)에 저장될 수 있으며, 일 예로서 패킷(PACKET)의 종류에 관한 정보 및 어드레스(ADDRESS)를 포함하는 테이블 정보가 호스트 메모리(130)에 저장될 수 있다. 또한, 데이터 기입 요청의 경우, 코어(120)의 제어에 기반하여 기입 데이터가 호스트 메모리(130)의 다수의 데이터 버퍼들에 저장될 수 있다. 호스트 컨트롤러(110)는 내부의 레지스터(111)에 저장된 전송 요청들을 확인하고, 이에 기반하여 스토리지 장치와 인터페이스할 수 있다. According to an exemplary embodiment, transmission requests related to writing and/or reading from the storage device may be stored in the
전술한 실시예에서와 같이, 호스트 컨트롤러(110)는 스토리지 장치(도 1, 200)로부터 리스폰스(RESP)가 포함된 리스폰스 패킷(PACKET_R)을 수신하고, 수신된 패킷(PACKET)으로부터 리스폰스(RESP)를 파싱하며, 파싱된 리스폰스(RESP)에 따라 메모리 동작의 처리 여하를 확인할 수 있다. As in the aforementioned embodiment, the
호스트 컨트롤러 인터페이스(190)는 호스트 장치(100)에서 발행하는 다양한 접근 요청에 대응하는 커맨드(예를 들어, 독출 커맨드, 기입 커맨드 등), 논리적 어드레스, 데이터 등의 데이터의 포맷을 변환하거나 교환되는 명령어의 포맷을 변환함으로써 호스트 장치(100)를 스토리지 장치(200)와 연결할 수 있다. 호스트 컨트롤러 인터페이스(190)에 적용된 프로토콜은 전술된 UFS, eMMC 외에도, USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCIe(P eripheral Component Interconnect express), ATA(Advanced Technology Attachment), PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI)일 수 있다. 그러나, 이에 제한되지 않고 서로 상이한 장치 간 인터페이싱을 지원하는 다양한 표준 규격이 적용될 수 있다.The
본 개시의 예시적인 실시예에 따르면, 호스트 컨트롤러 인터페이스(190)는 호스트 컨트롤러 인터페이스(190)는 SQ 도어벨 레지스터, SQ 중재기, 비트맵 도어벨 라우터, 비트맵 도어벨 엔트리, CQ 라우터, CQ 도어벨 레지스터를 포함할 수 있다. 호스트 컨트롤러 인터페이스(190)가 포함하는 세부 구성에 관하여는 도 5에서 보다 상세히 설명된다.According to an exemplary embodiment of the present disclosure, the
도 3은 도 1에 도시된 스토리지 컨트롤러(210)의 일 구현 예를 나타내는 블록도이다.3 is a block diagram illustrating an example implementation of the
도 1 및 도 3을 참조하면, 스토리지 컨트롤러(210)는 호스트 인터페이스(211), 프로세서로서 중앙 처리 장치(central processing unit; CPU)(212), 및 메모리 인터페이스(216)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 계층(Flash Translation Layer; FTL)(213), 패킷 매니저(214) 및 버퍼 매니저(215)를 더 포함할 수 있다. 스토리지 컨트롤러(210)는 플래시 변환 계층(213)이 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있다. 중앙 처리 장치(212)가 플래시 변환 계층(213)를 실행함에 의해 메모리 코어에 대한 데이터 기입 및 독출 동작이 제어될 수 있다.1 and 3 , the
호스트 인터페이스(211)는 호스트 장치(100)와 패킷(PACKET)을 송수신할 수 있으며, 전술한 실시예에 따라 호스트 인터페이스(211)가 송수신하는 패킷(PACKET)에는 호스트 장치(100) 내의 버퍼 영역에서의 데이터 버퍼의 위치를 나타내는 버퍼 어드레스가 포함될 수 있다. 또한, 메모리 인터페이스(216)는 메모리 코어와 인터페이스함으로써 데이터를 기입하거나 독출하는 동작을 수행할 수 있다. The
패킷 매니저(214)는 호스트 장치(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(PACKET)을 생성하거나, 수신된 패킷(PACKET)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 매니저(215)는 패킷(PACKET)으로부터 파싱된 각종 정보를 버퍼에 저장하는 동작을 관리할 수 있으며, 일 예로서 패킷(PACKET)으로부터 파싱된 커맨드(CMD) 또는 리스폰스(RESP)의 저장 동작을 관리할 수 있다. The
버퍼 매니저(215)는 패킷(PACKET)으로부터 파싱된 기입 데이터를 버퍼에 저장하는 동작을 관리할 수 있으며, 메모리 코어로부터 독출된 데이터를 버퍼에 저장하는 동작을 관리할 수 있다. 일 실시예에 따라, 버퍼 매니저(215)는 스토리지 컨트롤러(210) 내에 구비되는 버퍼 메모리(215)일 수 있다. 일 실시예에 따라, 버퍼 매니저(215)는 스토리지 컨트롤러(210) 외에 구비되는 버퍼를 관리할 수 있다. The
예를 들어, 데이터 기입 동작시, 호스트 장치(100)로부터 수신된 패킷(PACKET)으로부터 기입 커맨드(CMD) 및 이에 대응하는 제1 버퍼 어드레스가 파싱될 수 있고, 제1 버퍼 어드레스는 스토리지 장치(200)의 버퍼에 저장될 수 있다. 스토리지 장치(200)는 상기 기입 커맨드에 대한 응답으로서, 소정 사이즈 단위의 기입 데이터의 전송을 요청하는 리스폰스(RESP)를 포함하는 패킷(PACKET)을 생성할 수 있다. 이 때, 상기 기입 커맨드에 대응하는 제1 버퍼 어드레스가 패킷(PACKET)에 포함될 수 있으며, 또한, 호스트 장치(100)는 패킷(PACKET)에 포함된 리스폰스(RESP) 및 제1 버퍼 어드레스를 참조하여, 제1 버퍼 어드레스가 나타내는 위치의 데이터 버퍼에 저장된 기입 데이터를 스토리지 장치(200)로 전송할 수 있다.For example, during a data write operation, a write command CMD and a first buffer address corresponding thereto may be parsed from a packet PACKET received from the
이와 유사하게, 데이터 독출 동작을 예로 들면, 호스트 장치(100)로부터 수신된 패킷(PACKET)으로부터 독출 커맨드(CMD) 및 이에 대응하는 제2 버퍼 어드레스가 파싱되고, 제2 버퍼 어드레스는 스토리지 장치(200)의 버퍼에 저장될 수 있다. 스토리지 장치(200)는 독출 커맨드(CMD) 에 응답하여 독출된 데이터를 포함하는 패킷(PACKET)을 생성하며, 상기 독출 커맨드에 대응하는 제2 버퍼 어드레스가 리스폰스(RESP)와 함께 패킷(PACKET)에 포함될 수 있다. 또한, 호스트 장치(100)는 패킷(PACKET)에 포함된 리스폰스(RESP) 및 제2 버퍼 어드레스를 참조하여, 제2 버퍼 어드레스가 나타내는 위치의 데이터 버퍼에 독출 데이터를 저장할 수 있다.Similarly, taking the data read operation as an example, the read command CMD and a second buffer address corresponding thereto are parsed from the packet PACKET received from the
도 3에서의 호스트 인터페이스(211), 중앙 처리 장치(212), 플래시 변환 계층(213), 패킷 매니저(214), 버퍼 매니저(215), 및 메모리 인터페이스(216)에 관하여는 도 18a에서 다시 설명된다.The
도 4는 UFS 인터페이스가 적용된 스토리지 시스템(20)의 일 구현 예를 나타내는 블록도이다. 도 1의 스토리지 시스템(10)은 도 4의 스토리지 시스템(20)에 적용될 수 있다.4 is a block diagram illustrating an implementation example of the
도 4를 도 1과 함께 참조하면, 스토리지 시스템(20)의 UFS 호스트와 UFS 스토리지 장치는 UFS 인터페이스에 따른 통신을 수행할 수 있으며, UFS 호스트는 그 구성요소들로서 호스트 메모리(21), 소프트웨어 모듈(23), 및 하드웨어 모듈에 해당하는 UFS 호스트 컨트롤러(25)를 포함할 수 있다. 호스트 메모리(21)는 도 1 및 도 2에서 설명된 호스트 메모리(130)와 유사한 기능을 제공할 수 있으므로, 중복되는 설명은 생략된다. 도 4에서는, UFS 규격을 채택하여 인터페이싱되는 호스트 장치(도 1, 100)를 UFS 호스트로, UFS 규격을 채택하여 인터페이싱되는 스토리지 장치(도 1, 200)를 UFS 디바이스로 약칭한다.Referring to FIG. 4 together with FIG. 1 , the UFS host of the
소프트웨어 모듈(23)은 소프트웨어(예를 들면, 애플리케이션) 및 UFS 호스트 컨트롤러 드라이버를 포함할 수 있다. 소프트웨어는 UFS 호스트에서 실행되는 다양한 애플리케이션들일수 있으며, UFS 호스트 컨트롤러 드라이버는 UFS 호스트에 연결되어 사용되는 주변 장치들의 구동을 관리하기 위한 것으로서, 스토리지 장치에 대한 데이터 기입 및 독출 등의 데이터 관리 동작은 UFS 호스트 컨트롤러 드라이버를 실행함으로써 수행될 수 있다. 애플리케이션 소프트웨어 및 UFS 호스트 컨트롤러 드라이버는 호스트 메모리(21)에 로딩되거나, 또는 UFS 호스트 내의 다른 동작 메모리에 로딩되어 프로세서에 의해 실행될 수 있다.The
UFS 호스트 컨트롤러(25)는 도 2의 호스트 컨트롤러(110)의 일 구현 예일 수 있다. UFS 호스트 컨트롤러(25)는 UFS 호스트 컨트롤러 인터페이스(UFS HCI), UTP 프로토콜 엔진 및 UFS 인터커넥트 레이어(UFS Interconnect Layer(UIC))를 포함할 수 있다. The
UFS 호스트 컨트롤러 인터페이스(UFS HCI)는 UFS 호스트 컨트롤러 드라이버를 통해 생성된 요청을 수신하고 이를 UTP 프로토콜 엔진으로 전달하거나, UTP 프로토콜 엔진으로부터 전달된 데이터 액세스 결과를 UFS 호스트 컨트롤러 드라이버로 제공할 수 있다. The UFS Host Controller Interface (UFS HCI) may receive a request generated through the UFS Host Controller Driver and forward it to the UTP Protocol Engine, or may provide the data access result transmitted from the UTP Protocol Engine to the UFS Host Controller Driver.
UTP 프로토콜 엔진은 상위 계층(또는, 애플리케이션 계층)을 위한 서비스들을 제공할 수 있으며, 일 예로서 패킷을 생성하거나 패킷을 해제하여 그 내부의 정보를 파싱할 수 있다. The UTP protocol engine may provide services for an upper layer (or an application layer), and may parse information therein by generating a packet or releasing a packet as an example.
UFS 인터커넥트 레이어는 UFS 스토리지 장치(27)와 통신할 수 있으며, 일 예로서 UFS 인터커넥트 레이어는 링크 레이어(Link Layer)와 물리 레이어(PHY Layer)를 포함할 수 있다. 링크 레이어(Link Layer)는 MIPI(Mobile Industry Processor Interface)) UniPro일 수 있으며, 물리 레이어(PHY Layer)는 MIPI M-PHY일 수 있다. 또한, UFS 인터페이스에 따라, UFS 호스트는 UFS 스토리지 장치(27)로 기준 클럭(Ref Clock) 및 리셋 신호(Reset) 신호를 제공할 수 있다.The UFS interconnect layer may communicate with the
한편, UFS 스토리지 장치(27)는 스토리지 컨트롤러와 메모리 코어를 포함할 수 있다. 일 실시예에 따라 도 4에서 스토리지 컨트롤러는 UFS 인터커넥트 레이어, UTP 프로토콜 엔진 및 UFS 스토리지 디바이스 인터페이스를 포함할 수 있다. 또한, 메모리 코어는 비휘발성 메모리를 포함하는 코어(NVM Core)일 수 있다.Meanwhile, the
UFS 호스트 컨트롤러(25)와 UFS 스토리지 장치(27)가 통신하는 구조에서, UFS 호스트 컨트롤러 드라이버로부터의 요청에 따른 데이터 송수신은 UFS 호스트 컨트롤러 인터페이스를 통해 수행될 수 있다. 일 예로서, 데이터 기입 동작시, 소프트웨어 모듈(23)에 의해 기입 데이터가 호스트 메모리(21)의 데이터 버퍼(Data Buffer)에 저장되고, UFS 호스트 컨트롤러 인터페이스가 호스트 메모리(21)의 데이터 버퍼(Data Buffer)를 액세스하며, 액세스된 기입 데이터가 UFS 스토리지 장치(27)로 전달될 수 있다. 데이터 송수신 동작을 위한 커맨드(CMD)는 큐에 저장될 수 있다. 예시적인 실시예에서, 원형 큐가 이용될 경우, 커맨드가 저장된 헤드 포인터(HP), 및 테일 포인터(TP)는 호스트 메모리(21)에 저장될 수 있다. 예를 들어, 헤드 포인터(HP) 및 테일 포인터(TP)는 호스트 메모리(21)의 도어벨 레지스터에 저장될 수 있다. In the structure in which the
본 개시의 예시적인 실시예에 따르면, UFS 호스트가 UFS 스토리지 장치(27)로 전송하는 커맨드 패킷(PACKET_C) 및/또는 스토리지 장치(200)가 호스트 장치(100)로 전송하는 리스폰스 패킷(PACKET_R)에는 호스트 메모리(21) 내에서의 데이터 버퍼(Data Buffer)의 위치를 나타내는 버퍼 어드레스가 포함될 수 있다. 상기 버퍼 어드레스는 데이터 버퍼의 위치를 나타내는 물리적 어드레스(Physical Address)에 해당할 수 있다. 일 예로서, 호스트 메모리(21)의 일 영역에는 버퍼 어드레스들이 포함된 테이블 정보(예컨대, Physical Region Description Table(PRDT))가 저장될 수 있으며, UFS 호스트의 UTP 프로토콜 엔진은 상기 PRDT를 통해 버퍼 어드레스를 확인하고, 확인된 버퍼 어드레스를 포함하는 커맨드 패킷(PACKET_C)을 생성할 수 있다. 또한, 스토리지 장치(200)의 UTP 프로토콜 엔진은 스토리지 장치(200) 내부에 저장되어 관리되는 버퍼 어드레스를 포함하는 리스폰스 패킷(PACKET_R)을 생성할 수 있다.According to an exemplary embodiment of the present disclosure, the command packet (PACKET_C) transmitted from the UFS host to the
또한, UFS 호스트 컨트롤러(25)와 UFS 스토리지 장치(27)는 포트-맵 입출력(Port-Mapped I/O) 형태로 연결되어 있으며, 기입 및 독출 동작이 멀티 태스크(Multi Task) 방식으로 처리될 수 있다. 이에 따라, UFS 스토리지 장치(27)는 다수의 패킷들로부터 파싱된 다수의 커맨드들과 이에 대응하는 버퍼 어드레스들을 저장 및 관리할 수 있다. In addition, the
UFS 인터페이스가 적용됨에 따라 다양한 종류의 패킷들이 정의될 수 있으며, 다양한 종류의 패킷들 중 적어도 일부의 패킷들에 대해 본 개시의 실시예가 적용될 수 있다. As the UFS interface is applied, various types of packets may be defined, and embodiments of the present disclosure may be applied to at least some of the various types of packets.
예시적인 실시예에서, UFS 인터페이스에 따른 패킷은 UPIU(UFS Protocol information unit)로 정의될 수 있으며, 그 종류로서 기입 및 독출 요청을 위한 커맨드 UPIU(Command UPIU), 리스폰스 UPIU(Response UPIU), 독출 데이터를 포함하는 Data_In UPIU, 기입 데이터를 포함하는 Data_Out UPIU, 태스크 관리 요청 UPIU(TM Request UPIU) 및 데이터 전송 요청 UPIU(Ready To Transfer(RTT) UPIU) 등의 패킷들이 정의될 수 있다. In an exemplary embodiment, a packet according to the UFS interface may be defined as a UFS Protocol information unit (UPIU), and as its types, a command UPIU (Command UPIU) for write and read requests, a Response UPIU (UPIU), and read data Packets such as Data_In UPIU including write data, Data_Out UPIU including write data, task management request UPIU (TM Request UPIU), and data transfer request UPIU (Ready To Transfer (RTT) UPIU) may be defined.
또한, 본 개시의 예시적인 실시예에 따라, UFS 인터페이스서 정의되는 패킷들 중 적어도 일부의 종류의 패킷에 전술한 버퍼 어드레스가 포함될 수 있다. 예를 들어, 호스트 메모리(21)의 데이터 버퍼의 액세스를 요구로 하는 패킷에 전술한 버퍼 어드레스가 포함될 수 있다. 본 개시의 기술적 사상에 따르면, 호스트 장치(100)와 스토리지 장치(200) 간에 통신되는 패킷 중, 커맨드 패킷(PACKET_C)은 커맨드(CMD), 서브미션 큐 아이디(SQ_ID), 및 컴플리션 큐 아이디(CQ_ID)를 포함할 수 있으며, 리스폰스 패킷(PACKET_R)은 리스폰스(RESP), 서브미션 큐 아이디(SQ_ID), 및 컴플리션 큐 아이디(CQ_ID)를 포함할 수 있다. 각 패킷의 구성에 관하여는 도 14a 및 도 14b를 참조하여 설명된다.Also, according to an exemplary embodiment of the present disclosure, the above-described buffer address may be included in at least some types of packets defined in the UFS interface. For example, the above-described buffer address may be included in a packet requesting access to the data buffer of the
이하, 본 개시의 실시예들에 따른 호스트와 스토리지 장치 사이의 인터페이스의 구체적인 동작 예가 설명된다. 이하의 실시예들에서는 UFS 인터페이스가 채용된 호스트와 스토리지 장치가 예시될 것이나, 전술한 바와 같이 본 개시의 실시예들은 UFS 인터페이스 이외에도 다른 다양한 종류의 인터페이스에 적용될 수 있을 것이다. Hereinafter, specific operation examples of the interface between the host and the storage device according to embodiments of the present disclosure will be described. In the following embodiments, a host and a storage device employing a UFS interface will be exemplified. As described above, the embodiments of the present disclosure may be applied to various types of interfaces other than the UFS interface.
도 5는 본 개시의 예시적 실시예에 따른 스토리지 시스템(10)의 동작을 도시하는 도면이다. 도 1 및 도 2가 함께 참조된다.5 is a diagram illustrating an operation of the
호스트 장치(100)는 복수의 프로세서들을 포함하거나, 하나의 프로세서에 복수의 코어(120)들을 포함할 수 있다. 설명의 편의를 위해 하나 이상의 프로세서들이 복수의 코어(120)들을 포함하는 것으로 가정된다. 또한, 호스트 장치(100) 및 스토리지 장치(200) 간 인터페이싱을 위해, UFS 규격이 적용됨이 가정된다.The
적어도 하나의 코어(120)는 각각 적어도 하나의 서브미션 큐(SQ) 및 적어도 하나의 컴플리션 큐(CQ)에 기초하여 스토리지 장치(200)와 인터페이싱 동작을 수행할 수 있다. 인터페이스 동작은, 요청된 커맨드(CMD)의 입력을 위한 서브미션 큐(SQ)와 해당 커맨드의 처리 결과를 기입하기 위한 컴플리션 큐(CQ)로 구성된 큐 페어 단위로 수행될 수 있다.At least one
본 개시의 예시적인 실시예에 따르면, 적어도 하나의 코어(120)는 서브미션 큐(SQ) 및 컴플리션 큐(CQ)를 이용해 메모리 동작을 처리할 수 있다. 또한, 서브미션 큐(SQ)는 서브미션 큐 헤드 포인터(SHP) 및 서브미션 큐 테일 포인터(STP)에 커맨드(CMD) 또는 리스폰스(RESP)의 처리 주소를 저장할 수 있고, 컴플리션 큐(CQ)는 컴플리션 큐 헤드 포인터(CHP) 및 컴플리션 큐 테일 포인터(CTP)에 커맨드(CMD) 또는 리스폰스(RESP)의 처리 주소를 저장할 수 있다.According to an exemplary embodiment of the present disclosure, at least one
호스트 컨트롤러 인터페이스(190)는 SQ 도어벨 레지스터(191), SQ 중재기(192), 비트맵 도어벨 라우터(193), 비트맵 도어벨 레지스터(194), 엔트리 버퍼(195), CQ 라우터(196), CQ 도어벨 레지스터(197)를 포함할 수 있다.
SQ 도어벨 레지스터(191)는 서브미션 큐(SQ)의 순서 또는 위치를 저장하는 포인터 저장 공간일 수 있다. SQ 도어벨 레지스터(191)는 테일 또는 헤드를 나타내는 포인터를 저장할 수 있다. 예시적인 실시예에 따라, SQ 도어벨 레지스터(191)는 서브미션 큐(SQ) 엔트리 공간의 베이스 주소를 나타내는 레지스터, 및 서브미션 큐(SQ) 엔트리의 크기를 나타내는 레지스터를 포함할 수 있다. 예시적인 실시예에 따르면, SQ 도어벨 레지스터(191)는 서브미션 큐 헤드 포인터(SHP) 및 서브미션 큐 테일 포인터(STP)를 저장할 수 있다.The SQ doorbell register 191 may be a pointer storage space for storing the order or position of the submission queue SQ. The SQ doorbell register 191 may store a pointer indicating a tail or a head. According to an exemplary embodiment, the SQ doorbell register 191 may include a register indicating a base address of a submission queue (SQ) entry space, and a register indicating a size of a submission queue (SQ) entry. According to an exemplary embodiment, the SQ doorbell register 191 may store a submission queue head pointer (SHP) and a submission queue tail pointer (STP).
서브미션 큐(SQ)의 엔트리가 호스트 컨트롤러 인터페이스(190) 상에 저장된 주소(SQ ENTRY ADDR)는 수학식 1과 같이 계산될 수 있다.The address SQ ENTRY ADDR at which the entry of the submission queue SQ is stored on the
[수학식 1][Equation 1]
즉, 서브미션 큐 엔트리 주소(SQ ENTRY ADDR)는, 서브미션 큐 헤드 포인터(SHP)에 서브미션 큐 엔트리 사이즈를 곱한 크기만큼을 서브미션 큐 엔트리 베이스 주소(SQ ENTRY BASE ADDR)에 합산한 위치일 수 있다.That is, the submission queue entry address (SQ ENTRY ADDR) is a position obtained by adding the size of the submission queue head pointer (SHP) multiplied by the submission queue entry size to the submission queue entry base address (SQ ENTRY BASE ADDR). can
SQ 도어벨 레지스터(191)에 저장된 포인터들은 커맨드(CMD)의 입력 또는 데이터의 입출력에 따라 발생하는 도어벨 알림마다 갱신될 수 있다. 본 개시의 예시적인 실시예에 따르면, 코어(120)는 서브미션 큐(SQ)에 커맨드(CMD)를 기입할 수 있다. 커맨드(CMD)가 서브미션 큐(SQ)에 기입된 후, 서브미션 큐 테일 포인터(STP)가 변경될 수 있다. 커맨드(CMD)는 코어(120)에 의해 펫칭됨으로써 순차적으로, 또는 한번에 스토리지 장치(200)로 전송될 수 있다. 예를 들어, 코어(120)는 서브미션 큐(SQ)를 펫칭하고 서브미션 큐 내에 저장된 커맨드(CMD)를 스토리지 장치(200)에 전송할 수 있다. 서브미션 큐(SQ)에 기입된 커맨드(CMD)가 호스트 컨트롤러 인터페이스(190)으로 전송된 후에는 서브미션 큐 헤드 포인터(SHP)가 변경될 수 있다. The pointers stored in the SQ doorbell register 191 may be updated for each doorbell notification generated according to input of a command CMD or input/output of data. According to an exemplary embodiment of the present disclosure, the
SQ 도어벨 레지스터(191)에 저장된 서브미션 큐 헤드 포인터(SHP) 및 서브미션 큐 테일 포인터(STP)에 기초하여, 서브미션 큐에 기입된 커맨드(CMD)는 SQ 중재기(192)로 전송될 수 있다. 서브미션 큐(SQ)는 호스트 메모리(도 1, 130) 상에서 이용될 수 있으므로, 서브미션 큐(SQ)의 헤드 포인터(SHP) 또는 테일 포인터(STP)가 저장된 SQ 도어벨 레지스터(191)로부터 명령 또는 신호를 제공되는 것으로 이해될 수 있다. 본 개시의 예시적인 실시예에 따르면, 코어(120)는 복수일 수 있으므로, 서브미션 큐(SQ)는 복수 개가 존재할 수 있고, SQ 중재기(192)는 복수의 서브미션 큐(SQ)를 수신할 수 있다.Based on the submission queue head pointer (SHP) and the submission queue tail pointer (STP) stored in the
SQ 중재기(192)는 복수의 서브미션 큐(SQ)들 중 어느 하나의 서브미션 큐(SQ)를 기준에 따라 선택함으로써 서브미션 큐(SQ)의 변화에 따른 처리 순서를 중재할 수 있다. 예를 들어, SQ 중재기(192)는 복수의 서브미션 큐(SQ) 간의 처리될 커맨드(CMD)의 순서를 정할 수 있고, 복수의 서브미션 큐(SQ) 각각은 정해진 순서에 따라 선입선출(First In, First Out) 방식으로 원형 대기열에 저장된 명령을 수행할 수 있다. 이외에도, SQ 중재기(192)가 서브미션 큐 중 어느 하나를 선택하는 방식으로서 스케줄링 적용 시점에 따른 비-선점형(Non-preeptive) 스케줄링 또는 선점형(Preemptive) 스케줄링, 스케줄링의 우선순위의 변동 여부에 따른 정적 스케줄링, 및 동적 스케줄링에 이용되는 다양한 알고리즘이 이용될 수 있다. 예를 들어, SQ 중재기(192)는 순차적(또는 사이클릭(cyclic))으로 서브미션 큐를 선택함으로써 서브미션 큐 간 처리 시간이 균일한 라운드 로빈(round robin) 방식, 서브미션 큐 중 비교적 중요한 서브미션 큐에 가중치를 두고 가중치가 큰 순서대로 큐를 처리함으로써 서브미션 큐 간 처리 시간을 비균일적으로 할당하는 가중 라운드 로빈(weighted round robin) 방식, 정적 스케줄링의 일환으로서 서브미션 큐에 고정된 우선 순위를 부여하는 고정 우선순위(fixed priority) 방식 등을 적용할 수 있으나, 전술한 방법에 제한되지 않는다.The
SQ 중재기(192)는 복수의 서브미션 큐(SQ)들의 차이를 비교함으로써 복수의서브미션 큐(SQ)들의 순서를 중재할 수 있다. 본 개시의 예시적인 실시예에 따르면, SQ 중재기(192)는 서브미션 큐(SQ)의 테일과 헤드를 비교할 수 있다. SQ 중재기(192)는 서브미션 큐(SQ) 정보를 획득하기 위해 SQ 도어벨 레지스터(191)에 저장된 SQ 헤드 포인터(SHP), SQ 테일 포인터(STP)를 참조할 수 있다. The
본 개시의 예시적 실시예에 따른 SQ 중재기(192)는 호스트 컨트롤러 인터페이스(190) 내에 존재하는 SQ 도어벨 레지스터(191)에 접근함으로써 적어도 하나의 코어(120)에 의해 처리된 서브미션 큐(SQ)의 헤드와 테일을 참조할 수 있고, 빈 공간이 부족한 서브미션 큐(SQ)부터 처리되도록 중재할 수 있다.The
본 개시의 예시적인 실시예에 따르면, SQ 중재기(192)는 우선 처리가 필요한 플래그가 부착된 서브미션 큐(SQ)부터 처리되도록 서브미션 큐(SQ)들의 순서를 중재할 수 있다.According to an exemplary embodiment of the present disclosure, the
본 개시의 예시적인 실시예에 따르면, SQ 중재기(192)는 복수의 서브미션 큐 중 선택된 서브미션 큐(SQ) 또는, 비교 결과 우선순위인 서브미션 큐(SQ)를 확정할 수 있다. SQ 중재기(192)는 확정된 서브미션 큐(SQ)에 기입된 커맨드(CMD)를 비트맵 도어벨 라우터(193)로 전송할 수 있다.According to an exemplary embodiment of the present disclosure, the
비트맵 도어벨 라우터(193)는 커맨드(CMD)가 엔트리 버퍼(195)에 저장될 공간을 지정(즉, 경로화)할 수 있다. 본 개시의 예시적 실시예에 따르면, 비트맵 도어벨 라우터(193)는 엔트리 버퍼(195)의 점유 공간 및 유휴 공간에 대한 정보를 포함하는 비트맵 도어벨 레지스터(194)을 탐색하고, 유휴 공간에 커맨드(CMD)가 기입될 수 있도록 경로를 지정하거나 어드레스 정보를 제공할 수 있다. 예시적인 실시예에 따라, 비트맵 도어벨 라우터(193)는 SQ 중재기(192)로부터 선택된 명령이 엔트리 버퍼(195)에 저장될 공간을 지정할 수 있다. The
비트맵 도어벨 레지스터(194)는 엔트리 버퍼(195)의 저장 공간의 상태를 나타낼 수 있는 비트 저장 공간일 수 있다. 비트맵 도어벨은 1 비트 데이터 공간의 집합인 비트맵으로 표현되는 데이터 구조다. 비트맵 도어벨 레지스터(194)는 데이터 공간의 점유 여부를 비트 "0"과 비트 "1"로 표현하므로, 비트맵 도어벨 라우터(193)는 비트 "0"을 탐색함으로써 데이터가 저장되지 않은 유휴 공간에 선택된 커맨드(CMD)(또는 동작)를 기입할 수 있다. The
예시적인 실시예에서, 비트맵 도어벨 레지스터(194)의 유휴 공간에 커맨드(CMD) 또는 리스폰스(RESP)가 기입되면, 해당 공간에 대한 비트맵은 비트 "1"로 변경될 수 있다. 예시적인 실시예에서, 비트맵 도어벨 레지스터(194)의 점유 공간에 기입된 커맨드(CMD) 또는 리스폰스(RESP)가 처리되면, 해당 공간에 대한 비트맵은 비트 "0"로 변경될 수 있다.In an exemplary embodiment, when a command (CMD) or response (RESP) is written to the idle space of the
엔트리 버퍼(195)는 스토리지 장치(도 1, 200)와 주고 받을 서브미션 큐(SQ), 컴플리션 큐(CQ) 엔트리를 포함할 수 있다. 엔트리 버퍼(195)는 데이터 점유 여부를 나타내는 데이터 저장 공간 외에, 데이터 전송시에 필요한 기타 정보(UTRD(UTP Transfer Request Descriptor), PRDT, 서브미션 큐 아이디(SQ_ID), 컴플리션 큐 아이디(CQ_ID)) 를 저장하는 버퍼를 더 포함할 수 있다. The
예시적인 실시예에 따르면, 엔트리 버퍼(195)는, 전송되는 커맨드(CMD)가 어떤 서브미션 큐에 기입된 것인지를 나타내는 서브미션 큐 아이디(SQ_ID), 및 전송되는 커맨드(CMD)가 어떤 컴플리션 큐에 관련된 것인지를 나타내는 컴플리션 큐 아이디(CQ_ID)를 스토리지 컨트롤러(도 1, 210)에 제공할 수 있다. 유사하게, 엔트리 버퍼(195)는 제공받는 리스폰스(RESP)가 어떤 서브미션 큐에 관련된 것인지를 나타내는 서브미션 큐 아이디(SQ_ID), 및 전송되는 리스폰스(RESP)가 어떤 컴플리션 큐에 관련된 것인지를 나타내는 컴플리션 큐 아이디(CQ_ID)를 스토리지 컨트롤러(210)로부터 제공받을 수 있다.According to an exemplary embodiment, the
호스트 장치(100)는 엔트리 버퍼(195)를 참조하여, 데이터가 저장된(즉, 비트맵 도어벨 레지스터(194)에 "1"이 저장됨) 커맨드(CMD)를 스토리지 장치(200)에 제공할 수 있다. 스토리지 장치(200)는 커맨드(CMD)에 대해 일정한 동작을 수행하고, 그 결과로서 리스폰스(RESP)를 호스트 장치(100)에 제공할 수 있다. 리스폰스(RESP)는 엔트리 버퍼(195)에 다시 저장될 수 있다. 호스트 장치(100)와 스토리지 장치(200)간은 패킷(PACKET) 단위로 데이터를 통신할 수 있으며, 커맨드(CMD)는 커맨드 패킷(PACKET_C)에, 리스폰스(RESP)는 리스폰스 패킷(PACKET_R)에 각각 포함될 수 있다.The
본 개시의 예시적인 실시예에 따라, 엔트리 버퍼(195)는 복수 개의 서브미션 큐(SQ) 엔트리 및/또는 컴플리션 큐(CQ) 엔트리를 버퍼링할 수 있다. 예를 들어, 엔트리 버퍼(195)는 UTRD, PRDT, 커맨드(CMD), 리스폰스(RESP), 서브미션 큐 아이디(SQ_ID), 컴플리션 큐 아이디(CQ_ID) 등을 버퍼링할 수 있다.According to an exemplary embodiment of the present disclosure, the
CQ 라우터(196)는 엔트리 버퍼(195)에 저장된 리스폰스(RESP)가 처리될 컴플리션 큐(CQ)을 지정(즉, 경로화)할 수 있다. 리스폰스(RESP)는 스토리지 장치(200)로부터 제공된 후, 처리 전까지 엔트리 버퍼(195)에 버퍼링될 수 있다.The
본 개시의 예시적 실시예에 따르면, CQ 라우터(196)는 리스폰스(RESP)가 처리될 수 있는 코어를 탐색할 수 있고, 탐색된 코어에 의해 처리되는 컴플리션 큐(CQ)에 리스폰스(RESP)가 기입되도록 경로화할 수 있다. 예시적인 실시예에 따르면, CQ 라우터(196)가 컴플리션 큐(CQ)에 리스폰스(RESP)를 지정한 결과, CQ 도어벨 레지스터(197)에 컴플리션 큐(CQ)의 헤드 포인터 또는 테일 포인터(예를 들어, CHP, CTP)는 갱신될 수 있다.According to an exemplary embodiment of the present disclosure, the
예시적인 실시예에서, CQ 라우터(196)는 스토리지 장치(200)에 의해 제공된 컴플리션 큐 아이디(CQ_ID)를 참조함으로써, 리스폰스(RESP)가 복수의 코어들 중 어떤 코어에 로딩된 컴플리션 큐에 기입될 것인지를 판단할 수 있다. 예를 들어, CQ 라우터(196)는 제1 코어에 로딩된 제1 컴플리션 큐 아이디(CQ_ID)를 수신함으로써, 리스폰스(RESP)를 제1 컴플리션 큐에 기입할 수 있다. CQ 라우터(196)가 컴플리션 큐를 탐색하는 방식에는 전술한 서브미션 큐 선택 방식과 유사하게, 다양한 선택 알고리즘이 적용될 수 있다.In an exemplary embodiment, the
또한, 본 개시의 예시적인 실시예에 따르면, CQ 라우터(196)는 컴플리션 큐(CQ)가 오버플로우(OVERFLOW)되지 않도록 컴플리션 큐(CQ)와 엔트리 버퍼(195) 간의 데이터 입출력을 제어할 수 있다. 예를 들어, CQ 라우터(196)는 컴플리션 큐(CQ)가 가득 차서 리스폰스(RESP)를 저장할 수 없는 상태인 오버플로우가 되지 않도록, 컴플리션 큐(CQ)와 엔트리 버퍼(195) 간의 데이터 흐름을 제어할 수 있다.In addition, according to an exemplary embodiment of the present disclosure, the
CQ 도어벨 레지스터(197)는 컴플리션 큐(CQ)의 순서 또는 위치를 저장하는 포인터 저장 공간일 수 있다. CQ 도어벨 레지스터(197)는 테일 또는 헤드를 나타내는 포인터를 저장할 수 있다. 예시적인 실시예에 따라, CQ 도어벨 레지스터(197)는 컴플리션 큐(CQ) 엔트리 공간의 베이스 주소를 나타내는 레지스터, 및 컴플리션 큐(CQ) 엔트리의 크기를 나타내는 레지스터를 포함할 수 있다. 예시적인 실시예에 따르면, CQ 도어벨 레지스터(197)는 컴플리션 큐 헤드 포인터(CHP) 및 컴플리션 큐 테일 포인터(CTP)를 저장할 수 있다.The CQ doorbell register 197 may be a pointer storage space for storing the order or position of the completion queue CQ. The CQ doorbell register 197 may store a pointer indicating a tail or a head. According to an exemplary embodiment, the CQ doorbell register 197 may include a register indicating a base address of a completion queue (CQ) entry space, and a register indicating a size of a completion queue (CQ) entry. . According to an exemplary embodiment, the CQ doorbell register 197 may store a completion queue head pointer (CHP) and a completion queue tail pointer (CTP).
컴플리션 큐(CQ)의 엔트리가 호스트 컨트롤러 인터페이스(190) 상에 저장된 주소(CQ ENTRY ADDR)는 수학식 2와 같이 계산될 수 있다.The address (CQ ENTRY ADDR) at which the entry of the completion queue (CQ) is stored on the
[수학식 2][Equation 2]
즉, 컴플리션 큐 엔트리 주소(CQ ENTRY ADDR)는, 컴플리션 큐 헤드 포인터(CHP)에 컴플리션 큐 엔트리 사이즈를 곱한 크기만큼을 컴플리션 큐 엔트리 베이스 주소(CQ ENTRY BASE ADDR)에 합산한 위치일 수 있다.That is, the completion queue entry address (CQ ENTRY ADDR) is equal to the size of the completion queue head pointer (CHP) multiplied by the completion queue entry size to the completion queue entry base address (CQ ENTRY BASE ADDR). It may be a combined location.
CQ 도어벨 레지스터(197)에 저장된 포인터들은 커맨드(CMD)의 입력 또는 데이터의 입출력에 따라 발생하는 도어벨 알림마다 갱신될 수 있다. 본 개시의 예시적인 실시예에 따르면, 코어(120)는 호스트 컨트롤러 인터페이스(190)로부터 수신한 리스폰스(RESP)를 컴플리션 큐(CQ)에 기입할 수 있다. 리스폰스(RESP)가 컴플리션 큐(CQ)에 기입된 후, 컴플리션 큐 테일 포인터(CTP)가 변경될 수 있다. 리스폰스(RESP)는 코어(120)에 의해 펫칭됨으로써 순차적으로, 또는 한번에 처리될 수 있다. 예를 들어, 코어(120)는 컴플리션 큐(CQ)를 펫칭하고 컴플리션 큐 내에 저장된 리스폰스(RESP)에 상응하는 처리 동작을 수행할 수 있다. 컴플리션 큐(CQ)에 기입된 리스폰스(RESP)가 처리된 후에는 컴플리션 큐 헤드 포인터(CHP)가 변경될 수 있다. The pointers stored in the CQ doorbell register 197 may be updated for each doorbell notification generated according to input of a command CMD or input/output of data. According to an exemplary embodiment of the present disclosure, the
SQ 중재기(192), 비트맵 도어벨 라우터(193), CQ 라우터(196)는 로직 회로를 포함하는 하드웨어와 같은 처리 회로로서 구현될 수 있거나, 중재 동작 및/또는 라우팅 동작을 수행하는 소프트웨어를 실행하는 프로세서와 같이 하드웨어와 소프트웨어의 조합으로 구현 될 수 있다. 특히, 처리 회로는 중앙 처리 장치(Central Procesing Unit; CPU), 산술 및 논리 연산, 비트 쉬프트 등을 수행하는 ALU(Arithmetic Logic Unit), DSP(Digital Signal Processor), 마이크로프로세서(microprocessor), ASIC(Application Specific Integrated Circuit) 등으로 구현될 수 있으나, 이에 제한되지 않는다.The
하나의 비트맵 도어벨을 복수의 코어들이 공유하는 경우, 자원 점유 오버헤드가 발생함으로써 시스템 전체의 성능이 저하될 수 있다. 예를 들어, UFS 규격은 복수의 코어들 중 어느 하나의 코어가 비트맵 도어벨에 접근 시, 다른 코어들은 비트맵 도어벨에 액세스할 수 없다. When a single bitmap doorbell is shared by a plurality of cores, resource occupation overhead may occur, thereby degrading the overall system performance. For example, according to the UFS standard, when any one of a plurality of cores accesses the bitmap doorbell, other cores cannot access the bitmap doorbell.
본 개시의 기술적 사상에 따른 스토리지 시스템(도 1, 10)은 다중 큐의 자원 점유를 방지하기 위해 SQ 중재기(192) 및, CQ 라우터(196)를 포함함으로써, 다중 큐 환경에서도 UFS 규격을 채택한 호스트 장치와 스토리지 장치 간의 인터페이싱이 원활히 수행될 수 있다. The storage system ( FIGS. 1 and 10 ) according to the technical idea of the present disclosure includes an
본 개시의 기술적 사상에 따르면, 호스트 컨트롤러 인터페이스(190)에서, 복수의 코어 각각에 적합한 전용 서브미션 큐(SQ) 및 전용 컴플리션 큐(CQ), 및 각각에 대한 큐 도어벨(즉, SQ 도어벨, 및 CQ 도어벨)이 직접 이용될 수 있다. 즉, 본 개시의 기술적 사상에 따르면 UFS에 적용되는 비트맵 도어벨 구조를 그대로 유지하되 SQ 중재기(192) 및 비트맵 도어벨 라우터(193), 및 CQ 라우터(196)를 추가로 이용함으로써 스토리지 시스템(10)의 구조 변경을 최소화할 수 있고, UFS 규격을 채택한 다른 장치들과의 호환성을 유지할 수 있다.According to the spirit of the present disclosure, in the
결국, 본 개시의 기술적 사상에 따른 스토리지 시스템(10)은 호스트 컨트롤러 인터페이스(190)가 스토리지 장치(200)로 직접 커맨드(CMD)를 전송함에 있어 다중 원형 큐(예를 들어, 서브미션 큐(SQ) 및 컴플리션 큐(CQ))를 이용할 수 있으므로, 복수의 코어들 간 공유 자원 점유에 따른 오버헤드를 해결하고, 성능을 극대화할 수 있다. As a result, in the
도 6는 본 개시의 예시적 실시예에 따른 호스트 장치(도 1, 100)의 동작 방법을 도시하는 흐름도이다. 도 6과 함께, 도 1 및 도 5가 참조된다.6 is a flowchart illustrating an operation method of the host device ( FIGS. 1 and 100 ) according to an exemplary embodiment of the present disclosure. In conjunction with FIG. 6 , reference is made to FIGS. 1 and 5 .
단계 S110에서, 호스트 장치(100)는 복수의 서브미션 큐(SQ)들에 기입된 복수의 커맨드들(CMDs)를 중재할 수 있다. 예시적인 실시예에 따르면, 코어는 복수 개일 수 있으며, 하나의 코어는 적어도 하나의 서브미션 큐(SQ) 및 적어도 하나의 컴플리션 큐(CQ)를 이용하여 커맨드(CMD) 및/또는 리스폰스(RESP)를 처리할 수 있다. 예를 들어, SQ 중재기(192)는 SQ 도어벨 레지스터(191)에 저장된 서브미션 큐 엔트리의 헤드 포인터(SHP) 및 테일 포인터(STP)를 참조하여, 커맨드(CMD) 간의 우선 순위를 중재할 수 있다.In operation S110 , the
단계 S120에서, 호스트 장치(100)는 서브미션 큐(SQ) 엔트리를 엔트리 버퍼(195)에 기입할 수 있다. 예시적인 실시예에서, 호스트 장치(100)는 서브미션 큐(SQ) 엔트리 전체가 아닌, 서브미션 큐(SQ)에 포함된 커맨드(CMD)만을 엔트리 버퍼(195)에 저장할 수 있다. In operation S120 , the
단계 S130에서, 호스트 장치(100)는 비트맵 도어벨을 설정할 수 있다. 예시적인 실시예에서, 커맨드(CMD)가 엔트리 버퍼(195)에 저장되고, 비트맵 도어벨의 특정 값이 설정될 수 있다. In operation S130 , the
예를 들어, SQ 중재기(192)는 선택된 어느 하나의 커맨드(CMD)를 비트맵 도어벨 라우터(193)에 전송할 수 있고, 비트맵 도어벨 라우터(193)는 비트맵 도어벨 레지스터(194)의 커맨드(CMD)가 기입될 유휴 공간을 지정함으로써 커맨드(CMD)를 엔트리 버퍼(195)에 저장할 수 있다. 커맨드(CMD)가 엔트리 버퍼(195)에 기입됨에 따라 비트맵 도어벨 레지스터(194)의 엔트리 버퍼에 상응하는 데이터 영역은 비트 "0" 에서 비트 "1"으로 변경될 수 있다.For example, the
단계 S140에서, 호스트 장치(100)는 서브미션 큐 도어벨을 갱신할 수 있다. 예시적인 실시예에 따르면, 호스트 장치(100)는 커맨드(CMD)가 엔트리 버퍼(195)에 기입됨에 따라 SQ 도어벨 레지스터(191) 중, 헤드 포인터(SHP)를 갱신할 수 있다. In step S140 , the
본 개시의 예시적인 실시예에 따르면, 처리 대상인 커맨드(CMD)가 엔트리 버퍼(195)에 기입된 이상, 커맨드(CMD)는 스토리지 장치(도 1, 200)에 전송될 예정이고, 호스트 장치(100)에서 처리되지 않을 예정이다. 따라서, 호스트 장치(100)는 서브미션 큐 헤드 포인터(SHP)를 갱신함으로써 서브미션 큐(SQ)의 공간을 효율화할 수 있다.According to an exemplary embodiment of the present disclosure, as long as the command CMD to be processed is written in the
단계 S150에서, 호스트 장치(100)는 커맨드(CMD)를 전송하고, 리스폰스(RESP)를 수신할 수 있다. 예시적인 실시예에 따르면, 호스트 장치(100)는 커맨드(CMD)를 스토리지 장치(200)로 전송할 수 있다. 스토리지 장치(200)는 커맨드(CMD)에 기초하여 특정한 메모리 동작을 수행하고, 수행 결과에 대한 메타 데이터인 리스폰스(RESP)를 다시 호스트 장치(100)로 제공할 수 있다. 단계 S160에서, 호스트 장치(100)는 수신된 리스폰스(RESP)를 엔트리 버퍼(195)에 저장할 수 있다. 본 개시의 예시적인 실시예에 따라, 엔트리 버퍼(195)는 커맨드(CMD) 및 리스폰스(RESP)를 버퍼링할 수 있다.In operation S150 , the
단계 S170에서, 호스트 장치(100)는 리스폰스(RESP)를 복수의 컴플리션 큐 중 어느 하나의 컴플리션 큐(CQ)에 저장되도록 지정(경로화)할 수 있다. 예를 들어, CQ 라우터(196)는 비트맵 도어벨 레지스터(194)를 참조함으로써, 기입된 복수의 리스폰스(RESP)를 참조하고, 복수의 리스폰스(RESP)들 중 어느 하나의 리스폰스(RESP)를 일정한 기준(예를 들어, 우선 순위)에 따라 선택하고, 리스폰스(RESP)를 CQ 도어벨 레지스터(197)에 저장할 수 있다. In operation S170 , the
단계 S180에서, 호스트 장치(100)는 컴플리션 큐 도어벨을 갱신할 수 있다. 예시적인 실시예에 따르면, CQ 라우터(196)가 컴플리션 큐(CQ)에 리스폰스(RESP)를 지정한 결과, CQ 도어벨 레지스터(197)에 컴플리션 큐(CQ)의 테일 포인터(예를 들어, CTP)는 갱신될 수 있다.In operation S180 , the
본 개시의 예시적인 실시예에 따르면, 호스트 컨트롤러 인터페이스(191)는 복수의 서브미션 큐들(SQs)의 순서를 중재할 수 있다. 호스트 컨트롤러 인터페이스(191)는 우선 순위를 판단하고, 선택된 서브미션 큐 엔트리에 포함된 커맨드를 엔트리 버퍼(195)에 저장할 수 있다. 예를 들어, 제1 서브미션 큐에 저장된 제1 커맨드가 엔트리 버퍼(195)에 저장될 수 있다. 제1 커맨드가 엔트리 버퍼(195)에 저장된 후, 호스트 컨트롤러 인터페이스(191)는 제1 서브미션 큐의 헤드 포인터를 갱신할 수 있다. According to an exemplary embodiment of the present disclosure, the
호스트 컨트롤러 인터페이스(191)는 복수의 서브미션 큐들(SQs) 중에서 다음 순서를 선택할 수 있다. 호스트 컨트롤러 인터페이스(191)는 제2 서브미션 큐에 저장된 제2 커맨드를 엔트리 버퍼(195)에 저장할 수 있다. 제2 커맨드가 엔트리 버퍼(195)에 저장된 후, 호스트 컨트롤러 인터페이스(191)는 제2 서브미션 큐의 헤드 포인터를 갱신할 수 있다. 이는 순차적으로 반복된다. 한편, 엔트리 버퍼(195)에 저장된 제1 커맨드 및 제2 커맨드는 입력된 순서대로 스토리지 장치(200)에 전송될 수 있다.The
도 7은 본 개시의 예시적 실시예에 따라 커맨드(CMD)가 기입되는 스토리지 시스템(10)을 도시하는 블록도이다. 도 5 및 도 6이 도 7과 함께 참조된다.7 is a block diagram illustrating the
스토리지 시스템(10)은 호스트 장치(100) 및 스토리지 장치(200)를 포함할 수 있다. 도 1의 은 호스트 장치(100) 및 스토리지 장치(200)는 각각 도 7의 은 호스트 장치(100) 및 스토리지 장치(200)에 적용될 수 있는 바, 상충되지 않는 범위에서 중복되는 설명은 생략된다.The
호스트 장치(100)는 제1 코어(121) 및 제2 코어(123)를 포함할 수 있다. The
제1 코어(121)는 제1 서브미션 큐(SQ1)에 커맨드(CMD)를 기입할 수 있으며, 제1 서브미션 큐 헤드 포인터(SHP1) 및 제1 서브미션 큐 테일 포인터(STP1)를 참조할 수 있다. 제1 서브미션 큐 헤드 포인터(SHP1) 및 제1 서브미션 큐 테일 포인터(STP1)는 제1 서브미션 큐 도어벨에 포함될 수 있다. 또한, 제1 코어(121)는 제1 컴플리션 큐 헤드 포인터(CHP1) 및 제1 컴플리션 큐 테일 포인터(CTP1)를 참조함으로써 제1 컴플리션 큐(CQ1)에 기입된 리스폰스(RESP)를 처리할 수 있다.The
제2 코어(123)는 제2 서브미션 큐(SQ2)에 커맨드(CMD)를 기입할 수 있으며, 제2 서브미션 큐 헤드 포인터(SHP2) 및 제2 서브미션 큐 테일 포인터(STP2)를 참조할 수 있다. 또한, 제2 코어(123)는 제2 컴플리션 큐(CQ2)의 제2 컴플리션 큐 헤드 포인터(CHP2) 및 제2 컴플리션 큐 테일 포인터(CTP2)를 각각 포함할 수 있다.The
본 개시의 예시적인 실시예에 따라, 호스트 장치(100)는 제1 코어(112)에서 실행된 제1 서브미션 큐(SQ1)를 펫칭(fetching)한 결과, 제1 커맨드(CMD1)를 엔트리 버퍼(195)에 제공할 수 있다. 예를 들어, 비트맵 도어벨 라우터(193)는 비트맵 도어벨 레지스터(135)에 저장된 비트를 참조함으로써 빈 공간을 탐색할 수 있다. 엔트리 버퍼(195)는 제1 커맨드(CMD1)를 버퍼링을 위한 데이터 공간에 기입할 수 있고, 비트맵 도어벨 레지스터(194)의 제1 커맨드(CMD1)가 기입된 공간에 상응하는 비트맵의 값은, 비트 "0" 에서 비트 "1"로 변경될 수 있다. According to an exemplary embodiment of the present disclosure, as a result of fetching the first submission queue SQ1 executed by the first core 112 , the
예시적인 실시예에 따라, 제1 커맨드(CMD1)의 전송과 함께, 제1 서브미션 큐(SQ1), 제2 서브미션 큐(SQ2) 중 어떤 서브미션 큐에 기입되었던 커맨드(CMD)가 전송되었는지를 지시하는 서브미션 큐 아이디(SQ_ID)가 엔트리 버퍼(195)에 저장될 수 있다. 또한, 제1 컴플리션 큐(CQ1), 및 제2 컴플리션 큐(CQ2) 중 컴퓨팅 리스소가 충분하거나, 큐의 데이터 공간이 비어있는 컴플리션 큐(CQ)를 지시하는 컴플리션 큐 아이디(CQ_ID)가 엔트리 버퍼(195)에 전송될 수 있다. 제1 커맨드(CMD1), 서브미션 큐 아이디(SQ_ID), 및 컴플리션 큐 아이디(CQ_ID)는 패킷(PACKET)의 형태로 전송될 수 있다. According to an exemplary embodiment, along with the transmission of the first command CMD1 , the command CMD that has been written in which submission queue among the first submission queue SQ1 and the second submission queue SQ2 is transmitted A submission queue ID (SQ_ID) indicating , may be stored in the
본 개시의 예시적인 실시예에서, 제1 커맨드(CMD1)가 전송된 후, 제1 서브미션 큐(SQ1)의 서브미션 큐 헤드 포인터(SHP1)는 갱신될 수 있다(HP update). 예를 들어, 서브미션 큐 헤드 포인터(SHP1)의 헤드의 값이 1 증가함으로써(++HEAD), 제1 서브미션 큐(SQ1)의 헤드가 지시하는 기입 공간이 변경될 수 있다. 제1 서브미션 큐 헤드 포인터(SHP1)가 1만큼 증가함으로써, 제1 서브미션 큐(SQ1)에 기입되었던 제1 커맨드(CMD1)는 소거될 수 있다. 즉 제1 커맨드(CMD1)는 큐에서 제거될 수 있다(CMD1 dequeue). In an exemplary embodiment of the present disclosure, after the first command CMD1 is transmitted, the submission queue head pointer SHP1 of the first submission queue SQ1 may be updated (HP update). For example, when the value of the head of the submission queue head pointer SHP1 increases by 1 (++HEAD), the writing space indicated by the head of the first submission queue SQ1 may be changed. As the first submission queue head pointer SHP1 increases by 1, the first command CMD1 written in the first submission queue SQ1 may be erased. That is, the first command CMD1 may be removed from the queue (CMD1 dequeue).
본 개시의 예시적인 실시예에 따르면, 처리 대상인 커맨드(CMD)가 엔트리 버퍼(195)에 기입된 이상, 커맨드(CMD)는 호스트 장치(100)에서 처리되지 않을 예정이다. 예를 들어, 제1 커맨드(CMD1)는 제1 서브미션 큐(SQ1)에서 엔트리 버퍼(195)로 저장 공간이 이동함에 따라, 제1 서브미션 큐(SQ1)는 더 이상 제1 커맨드(CMD1)를 저장할 필요가 없다. 기입 공간이 한정적인 원형 큐의 특성상, 불필요한 커맨드는 제거되어야 새로운 커맨드가 기입될 수 있다. 따라서, 제1 커맨드(CMD1)가 엔트리 버퍼(195)에 저장된 후, 제1 서브미션 큐(SQ1)에 기입되었던 제1 커맨드(CMD1)는 기입 공간의 서브미션 큐 헤드 포인터(SHP1)가 갱신됨으로써(즉, 헤드 값이 1 증가함으로써) 큐에서 제거될 수 있다. 따라서, 호스트 장치(100)는 제1 커맨드(CMD1)를 제1 서브미션 큐(SQ1)에서 제거함으로써 입출력을 효율화할 수 있다. According to an exemplary embodiment of the present disclosure, as long as the command CMD to be processed is written in the
호스트 장치(100)는 엔트리 버퍼(195)를 통해 스토리지 장치(200)에 제1 커맨드(CMD1)을 제공할 수 있다. 비트맵 도어벨 레지스터(194)는 제1 커맨드(CMD1)가 전송된 후, 제1 커맨드(CMD1)가 기입되었던 공간에 상응하는 비트맵의 값을, 비트 "1" 에서 비트 "0"으로 변경시킬 수 있다. The
도 8은 본 개시의 예시적 실시예에 따라 리스폰스(RESP)가 기입되는 스토리지 시스템(10)을 도시하는 블록도이다. 도 8는 도 7 에 따른 제1 커맨드(CMD1)이 기입된 후의 동작을 도시하므로, 도 7과 중복되는 설명은 생략된다. 도 5 내지 도 7이 도 8과 함께 참조된다.8 is a block diagram illustrating a
본 개시의 예시적인 실시예에 따라, 스토리지 장치(200)는 제1 커맨드(CMD)를 수행한 결과 제2 리스폰스(RESP2)를 생성하고, 제2 리스폰스(RESP2)를 호스트 장치(100)에 다시 전송할 수 있다.According to an exemplary embodiment of the present disclosure, the
본 개시의 예시적인 실시예에 따르면, 엔트리 버퍼(195)는 리스폰스(RESP)를 저장할 수 있다. 예를 들어, 엔트리 버퍼(195)는 제2 리스폰스(RESP2)를 버퍼링을 위한 데이터 공간에 기입할 수 있고, 비트맵 도어벨 레지스터(194)의 제2 리스폰스(RESP2)가 기입된 공간에 상응하는 비트맵의 값은, 비트 "0" 에서 비트 "1"로 변경될 수 있다.According to an exemplary embodiment of the present disclosure, the
제2 리스폰스(RESP2)의 전송과 함께, 제1 서브미션 큐(SQ1), 제2 서브미션 큐(SQ2) 중 어떤 서브미션 큐와 관련된 커맨드(예를 들어, 제1 커맨드(CMD1))가 처리되었는지를 지시하는 서브미션 큐 아이디(SQ_ID), 및 제1 컴플리션 큐(CQ1), 및 제2 컴플리션 큐(CQ2) 중 어떤 컴플리션 큐와 관련된 커맨드가 전송되었는지를 지시하는 컴플리션 큐 아이디(CQ_ID)가 호스트 장치(100)에 전송될 수 있다. 제2 리스폰스(RESP2), 서브미션 큐 아이디(SQ_ID), 및 컴플리션 큐 아이디(CQ_ID)는 패킷(PACKET)의 형태로 전송될 수 있다.Along with the transmission of the second response RESP2, a command related to any of the first submission queue SQ1 and the second submission queue SQ2 (eg, the first command CMD1) is processed A submission queue ID (SQ_ID) indicating whether or not a completion queue has been transmitted A session queue ID (CQ_ID) may be transmitted to the
예시적인 실시예에서, 리스폰스(RESP)는 스토리지 장치(200)에 의해 제공된 컴플리션 큐 아이디(CQ_ID)에 기초하여, 제1 코어(121) 및 제2 코어(123)들 중 참조된 컴플리션 큐 아이디(CQ_ID)에 해당하는 컴플리션 큐(CQ)에 기입될 수 있다. 예를 들어, 리스폰스(RESP)는 제2 코어(113)에 로딩된 제2 컴플리션 큐(CQ2)를 지시하는 컴플리션 큐 아이디(CQ_ID)에 따라, 제2 컴플리션 큐(CQ2)에 기입될 수 있다. In an exemplary embodiment, the response RESP is based on the completion queue ID CQ_ID provided by the
본 개시의 예시적인 실시예에 따르면, CQ 라우터(196)는 리스폰스(RESP)를 컴플리션 큐(CQ)로 지정(즉, 경로화)할 수 있다. 예시적인 실시예에 따르면, 제2 리스폰스(RESP2)는 호스트 장치(100)가 제2 컴플리션 큐(CQ2)에 접근 가능한지 여부가 결정될 때까지 엔트리 버퍼(195)에서 임시로 저장될 수 있다.According to an exemplary embodiment of the present disclosure, the
예시적인 실시예에서, 제2 리스폰스(RESP2)가 기입된 후, 제2 컴플리션 큐(CQ2)의 제2 컴플리션 큐 테일 포인터(CTP2)는 갱신될 수 있다(CP update). 예를 들어, 제2 컴플리션 큐 테일 포인터(CTP2)의 테일의 값이 1 증가함으로써(++TAIL), 제2 컴플리션 큐(CQ2)의 테일이 지시하는 기입 공간이 변경될 수 있다. 즉, 테일 포인터가 1 증가함으로써, 제2 컴플리션 큐(CQ2)에 제2 리스폰스(RESP2)가 추가로 기입될 수 있다(RESP2 enqueue).In an exemplary embodiment, after the second response RESP2 is written, the second completion queue tail pointer CTP2 of the second completion queue CQ2 may be updated (CP update). For example, when the value of the tail of the second completion queue tail pointer CTP2 increases by 1 (++TAIL), the write space indicated by the tail of the second completion queue CQ2 may be changed. . That is, as the tail pointer increases by 1, the second response RESP2 may be additionally written into the second completion queue CQ2 (RESP2 enqueue).
비트맵 도어벨 레지스터(194)는, 제2 리스폰스(RESP2)가 제2 컴플리션 큐(CQ2)에 기입된 후, 제2 리스폰스(RESP2)가 기입되었던 공간의 상태를 비트 "1" 에서 비트 "0" 으로 변경시킬 수 있다. The
도 9는 본 개시의 예시적 실시예에 따른 커맨드가 원형 큐에 기입되는 과정을 도시한 도면이다. 도 9에서 도시된 원형 큐는 도 1 내지 도 8에서 개시된 서브미션 큐(SQ), 및/또는 컴플리션 큐(CQ)에 적용될 수 있다. 도 1, 및 도 2가 함께 참조된다.9 is a diagram illustrating a process in which a command is written into a circular queue according to an exemplary embodiment of the present disclosure. The circular queue shown in FIG. 9 may be applied to the submission queue SQ and/or the completion queue CQ disclosed in FIGS. 1 to 8 . 1 and 2 are referred to together.
원형 큐는 처음과 끝이 연결된 배열로서, 데이터를 삽입하고 삭제할 수 있는 자료 구조다. 원형 큐의 헤드와 테일의 초기값은 0이며, 헤드의 값과 테일의 값이 같다면 원형 큐는 비어있다고 해석된다. 헤드(HEAD)와 테일(TAIL)의 값이 각각 0인 초기 상태에서, 새로운 데이터(예를 들어, 커맨드)가 기입될 수 있다. 새로운 데이터(예를 들어, 커맨드)는 테일(TAIL)이 지시하는 공간에 기입될 수 있다.A circular queue is an array with a connected beginning and an end, and is a data structure in which data can be inserted and deleted. The initial value of the head and tail of the circular queue is 0, and if the value of the head and the value of the tail are the same, the circular queue is interpreted as empty. In an initial state in which the values of the head HEAD and the tail TAIL are 0, new data (eg, a command) may be written. New data (eg, a command) may be written in a space indicated by the TAIL.
도 9를 참조하면, 원형 큐에 8개의 기입 가능 공간이 있고, 제1 커맨드(CMD1), 제2 커맨드(CMD2) 및 제3 커맨드(CMD3)가 기입되었다고 가정된다.Referring to FIG. 9 , it is assumed that there are 8 writable spaces in the circular queue, and that the first command CMD1 , the second command CMD2 , and the third command CMD3 have been written.
테일(TAIL)이 지시하는 공간에 커맨드가 기입될 수 있고, 1개의 커맨드가 기입될 때마다 포인터의 값은 1씩 증가할 수 있다. 예를 들어, 헤드(HEAD)의 초기값은 0일 수 있고, 제1 커맨드 내지 제3 커맨드(CMD1~CMD3)가 기입된 후에 테일(TAIL)의 값은 3일 수 있다. 즉, 테일(TAIL)은 커맨드가 기입될 공간을 지시하며, 데이터가 기입된 후에는 데이터가 기입된 공간의 바로 다음 공간을 지시하도록 값이 증가할 수 있다. 예시적인 실시예에 따르면, 제1 커맨드(CMD1), 제2 커맨드(CMD2) 및 제3 커맨드(CMD3)가 순차적으로 기입됨에 따라, 테일(TAIL)은 1씩 증가할 수 있고, 제3 커맨드(CMD3)가 기입됨에 따라 테일(TAIL)은 제3 커맨드(CMD3)의 바로 다음 공간을 지시할 수 있다.A command may be written in the space indicated by the TAIL, and each time one command is written, the value of the pointer may increase by one. For example, the initial value of the head HEAD may be 0, and the value of the tail TAIL may be 3 after the first to third commands CMD1 to CMD3 are written. That is, the tail indicates a space in which a command is to be written, and after data is written, the value may increase to indicate a space immediately following the space in which data is written. According to an exemplary embodiment, as the first command CMD1 , the second command CMD2 , and the third command CMD3 are sequentially written, the tail TAIL may increase by 1 and the third command CMD3 As CMD3 is written, the tail TAIL may indicate a space immediately following the third command CMD3 .
예시적인 실시예에서, 원형 큐에 제4 커맨드(CMD4)가 기입될 수 있다(Enqueue CMD4). 헤드(HEAD)는 초기값 0을 유지할 수 있고, 테일(TAIL)은 새로운 커맨드의 기입에 따라 값을 1 증가시킬 수 있다(++TAIL). 따라서, 테일(TAIL)은 제4 커맨드(CMD4)의 바로 다음 공간를 지시할 수 있다.In an exemplary embodiment, the fourth command CMD4 may be written to the circular queue (Enqueue CMD4). The head HEAD may maintain an initial value of 0, and the tail TAIL may increase the value by 1 according to writing of a new command (++TAIL). Accordingly, the tail TAIL may indicate a space immediately following the fourth command CMD4 .
상기와 같이 원형 큐에 커맨드가 순차적으로 기입됨에 따라, 헤드는 동일하되 테일의 값이 1씩 증가하게 된다(++TAIL). 테일의 값+1이 헤드의 값과 같다면, 원형 큐는 가득 찼다고 해석된다. 예시적인 실시예에서, 원형 큐의 데이터 수용 용량인 큐 뎁스(queue depth)가 한정적이기 때문에 테일(TAIL)의 값은 기존의 주소를 재활용하는 랩-어라운드(wrap around) 방식으로 할당될 수 있다. 예를 들어, 원형 큐의 큐 뎁스가 N인 경우, 증가된 테일(TAIL)의 값이 N임에 따라 테일(TAIL)은 다시 주소에 상응하는 값으로 0을 가질 수 있다. 이와 같이 원형 큐는 마지막 주소의 다음 주소는 처음 주소가 되는 특징이 있으므로 한정된 데이터 공간 할당 환경에 유리하며, 구현이 용이하다.As the commands are sequentially written to the circular queue as described above, the head is the same but the value of the tail increases by 1 (++TAIL). If the value of tail + 1 is equal to the value of head, it is interpreted that the circular queue is full. In an exemplary embodiment, since the queue depth, which is the data accommodating capacity of the circular queue, is limited, the value of the TAIL may be allocated in a wrap-around method that reuses an existing address. For example, when the queue depth of the circular queue is N, the tail TAIL may have 0 as a value corresponding to the address again as the value of the increased tail TAIL is N. As such, the circular queue has a characteristic that the next address of the last address becomes the first address, so it is advantageous in a limited data space allocation environment and is easy to implement.
본 개시의 예시적 실시예에 따르면, 도 1 내지 도 8의 서브미션 큐(SQ) 및/또는 컴플리션 큐(CQ)는 원형 큐로 구현될 수 있다. 원형 큐 구조가 이용된다면 단순하게 테일(TAIL)이 지시하는 기입 공간의 주소인 테일 포인터만을 1씩 증가시킴으로써(++TAIL) 서브미션 큐, 및/또는 컴플리션 큐에 커맨드(또는 리스폰스)를 용이하게 기입할 수 있다. 유사하게, 헤드 포인터를 1씩 증가시킴으로써(++HEAD) 서브미션 큐, 및/또는 컴플리션 큐에 기입된 커맨드(또는 리스폰스)를 용이하게 소거할 수 있다. According to an exemplary embodiment of the present disclosure, the submission queue SQ and/or the completion queue CQ of FIGS. 1 to 8 may be implemented as a circular queue. If the circular queue structure is used, a command (or response) is sent to the submission queue and/or the completion queue by simply incrementing the tail pointer, which is the address of the write space indicated by the TAIL, by 1 (++TAIL). It can be written easily. Similarly, by incrementing the head pointer by one (++HEAD), it is possible to easily clear the command (or response) written to the submission queue and/or the completion queue.
도 10은 본 개시의 예시적 실시예에 따른 스토리지 시스템(10)의 동작 방법을 도시하는 흐름도이다. 도 10이 도 1 및 도 5와 함께 참조된다.10 is a flowchart illustrating an operating method of the
단계 S205에서, 코어(120)는 커맨드(CMD)를 발행할 수 있다. 커맨드(CMD)는 서브미션 큐(SQ) 엔트리에 기입될 수 있다. In step S205 , the
단계 S210에서, 코어(120)는 서브미션 큐(SQ)에 발행된 커맨드(CMD)를 기입하고, SQ 도어벨을 갱신할 수 있다. 예를 들어, 코어(120)는 SQ 도어벨의 테일 포인터(STP)를 갱신함으로써, 데이터의 기입에 따른 처리를 수행할 수 있다.In step S210 , the
단계 S215에서, 코어(120)는 서브미션 큐(SQ) 엔트리를 호스트 컨트롤러 인터페이스(190)에 전송할 수 있다. 서브미션 큐(SQ) 자체는 실질적으로 호스트 메모리(도 1, 130)에 저장되며, 코어(120)에 의해 관리될 수 있다. 따라서, 코어(120)는 서브미션 큐(SQ)의 엔트리 정보를 호스트 컨트롤러 인터페이스(190)로 전송할 수 있다.In operation S215 , the
단계 S220에서, 호스트 컨트롤러 인터페이스(190)는 서브미션 큐(SQ) 엔트리를 엔트리 버퍼(195)에 저장할 수 있다. 예시적인 실시예에 따르면, 호스트 컨트롤러 인터페이스(190)는 복수의 서브미션 큐(SQ)들에 기입된 복수의 커맨드들(CMDs)를 중재할 수 있고, SQ 중재기(192)는 SQ 도어벨 레지스터(191)에 저장된 서브미션 큐 엔트리의 헤드 포인터(SHP) 및 테일 포인터(STP)를 참조하여, 커맨드(CMD) 간의 우선 순위를 중재할 수 있다. 중재 결과로서, 호스트 컨트롤러 인터페이스(190)는 서브미션 큐(SQ)에 포함된 커맨드(CMD)를 엔트리 버퍼(195)에 저장할 수 있다. In operation S220 , the
단계 S225에서, 호스트 컨트롤러 인터페이스(190)는 비트맵 도어벨을 설정할 수 있다. 예를 들어, 엔트리 버퍼(195)는 커맨드(CMD)를 버퍼링을 위한 데이터 공간에 기입할 수 있고, 비트맵 도어벨 레지스터(194)의 커맨드(CMD)가 기입된 공간에 상응하는 비트맵의 값은 비트 "0" 에서 비트 "1"로 변경될 수 있다.In step S225 , the
단계 S230에서, 호스트 컨트롤러 인터페이스(190)는 서브미션 큐 도어벨을 갱신할 수 있다. 예시적인 실시예에 따르면, 호스트 컨트롤러 인터페이스(190)는 커맨드(CMD)가 엔트리 버퍼(195)에 기입됨에 따라 SQ 도어벨 레지스터(191) 중 서브미션 큐 헤드 포인터(SHP)를 갱신할 수 있다. In step S230 , the
본 개시의 예시적인 실시예에 따르면, 처리 대상인 커맨드(CMD)가 엔트리 버퍼(195)에 기입되면, 호스트 컨트롤러 인터페이스(190)는 서브미션 큐 헤드 포인터(SHP)를 갱신함으로써 서브미션 큐(SQ)의 공간을 효율화할 수 있다.According to an exemplary embodiment of the present disclosure, when a command (CMD) to be processed is written to the
단계 S235에서, 호스트 컨트롤러 인터페이스(190)는 커맨드(CMD)를 전송하고, 리스폰스(RESP)를 수신할 수 있다. 예시적인 실시예에 따르면, 호스트 컨트롤러 인터페이스(190)는 커맨드(CMD)를 스토리지 장치(200)로 전송할 수 있다. 스토리지 장치(200)는 커맨드(CMD)에 기초하여 특정한 메모리 동작을 수행하고, 수행 결과에 대한 메타 데이터인 리스폰스(RESP)를 다시 호스트 컨트롤러 인터페이스(190)로 제공할 수 있다. In operation S235 , the
단계 S240에서, 호스트 컨트롤러 인터페이스(190)는 수신된 리스폰스(RESP)를 엔트리 버퍼(195)에 저장할 수 있다. 본 개시의 예시적인 실시예에 따라, 엔트리 버퍼(195)는 리스폰스(RESP)의 경로가 설정되기 전까지, 리스폰스(RESP)를 버퍼링할 수 있다.In operation S240 , the
단계 S245에서, 호스트 컨트롤러 인터페이스(190)는 리스폰스(RESP)를 컴플리션 큐(CQ) 엔트리로 전송할 수 있다. 본 개시의 예시적인 실시예에 따르면, CQ 라우터(196)는 리스폰스(RESP)가 복수의 컴플리션 큐 중 어느 하나의 컴플리션 큐(CQ)에 저장되도록 지정(경로화)할 수 있다. 예를 들어, CQ 라우터(196)는 비트맵 도어벨 레지스터(194)를 참조함으로써, 복수의 리스폰스(RESP)들 중 어느 하나의 리스폰스(RESP)를 일정한 기준(예를 들어, 우선 순위)에 따라 선택하고, 리스폰스(RESP)의 포인터를 CQ 도어벨 레지스터(197)에 저장할 수 있다. 그 후, 리스폰스(RESP)는 컴플리션 큐(CQ)에 기입될 수 있다. 컴플리션 큐(CQ) 자체는 실질적으로 호스트 메모리(130)에 저장되며, 호스트 컨트롤러 인터페이스(190)는 컴플리션 큐(CQ)의 엔트리 정보를 코어(120)로 전송할 수 있다.In operation S245 , the
단계 S250에서, 호스트 컨트롤러 인터페이스(190)는 컴플리션 큐 도어벨을 ROD신할 수 있다. 예시적인 실시예에 따르면, 호스트 컨트롤러 인터페이스(190)는 리스폰스(RESP)가 컴플리션 큐(CQ)에 기입됨에 따라 CQ 도어벨 레지스터(197) 중 컴플리션 큐 테일 포인터(CTP)를 갱신할 수 있다.In step S250, the
단계 S255에서, 호스트 컨트롤러 인터페이스(190)는 비트맵 도어벨을 소거할 수 있다. 예시적인 실시예에 따르면, 호스트 컨트롤러 인터페이스(190)는 커맨드(CMD)에 따른 리스폰스(RESP)를 특정 컴플리션 큐(CQ)에 지정하도록 CQ 도어벨 레지스터(197)에 저장한 후, 해당 커맨드(CMD)와 관련된 서브미션 큐(SQ), 및 해당 리스폰스(RESP)와 관련된 컴플리션 큐(CQ)와 관련된 비트맵들을 제거함으로써, 비트맵 도어벨의 유휴 공간을 확보할 수 있다. In step S255, the
예를 들어, 도 7 및 도 8의 과정을 참조하면, 제1 서브미션 큐(SQ1)에 기입되있던 제1 커맨드(CMD1), 서브미션 큐 아이디(SQ_ID), 및 컴플리션 큐 아이디(CQ_ID)는 엔트리 버퍼(195)에 저장되고, 비트맵 도어벨 레지스터(194)의 메모리 영역 상태를 변경시킬 수 있다(비트 "0" → 비트 "1"). 제1 커맨드(CMD1)는 스토리지 장치(200)에 제공될 수 있고, 제1 커맨드(CMD1)에 따른 제2 리스폰스(RESP2)가 서브미션 큐 아이디(SQ_ID), 및 컴플리션 큐 아이디(CQ_ID)와 함께 다시 엔트리 버퍼(195)에 저장될 수 있다. 제2 리스폰스(RESP2)는 제2 컴플리션 큐(CQ2)로 지정되어, CQ 도어벨 레지스터(197)에 저장될 수 있다. 제1 커맨드(CMD1) 및 제2 리스폰스(RESP2) 과정에서 생성되거나 저장된 데이터들(제1 커맨드(CMD1) 및 제2 리스폰스(RESP2), 그리고 엔트리 버퍼(195)에 저장되었던 서브미션 큐 아이디(SQ_ID), 및 컴플리션 큐 아이디(CQ_ID))은 제2 리스폰스(RESP2)가 처리됨에 따라 소거될 수 있다. 결과적으로, 비트맵 도어벨 레지스터(194), 엔트리 버퍼(195)는 초기화될 수 있다.For example, referring to the processes of FIGS. 7 and 8 , the first command CMD1 written in the first submission queue SQ1, the submission queue ID SQ_ID, and the completion queue ID CQ_ID ) is stored in the
단계 S260에서, 컴플리션 큐(CQ) 엔트리는 소비될 수 있다. 예시적인 실시예에 따라, 컴플리션 큐(CQ)는 CQ 도어벨 레지스터(197)의 포인터를 참조함으로써, 리스폰스(RESP)가 저장된 위치에 접근할 수 있다. 예를 들어, 제2 코어(도 8, 123)는 제2 컴플리션 큐 테일 포인터(CTP2)를 참조함으로써 제2 컴플리션 큐(CQ2)에 제2 리스폰스(RESP2)를 기입할 수 있고, 제2 리스폰스(RESP2)는 제2 코어(123)에 의해 처리될 수 있다.In step S260, the completion queue (CQ) entry may be consumed. According to an exemplary embodiment, the completion queue CQ may access a location where the response RESP is stored by referring to the pointer of the
단계 S265에서, 컴플리션 큐(CQ) 도어벨은 갱신될 수 있다. 예시적인 실시예에 따르면, 제2 리스폰스(RESP2)가 제2 코어(123)에 의해 처리된 이후, 제2 컴플리션 큐(CQ2)에는 다시 여유 공간이 발생한다. CQ 도어벨 레지스터(197)는 컴플리션 큐(CQ)의 헤드 포인터(CHP2)를 갱신함으로써, 제2 컴플리션 큐(CQ2)의 입출력 효율을 증가시킬 수 있다.In step S265, the completion queue (CQ) doorbell may be updated. According to an exemplary embodiment, after the second response RESP2 is processed by the
도 11 및 도 12는 호스트 메모리(도 1, 130) 및 호스트 컨트롤러(도 1, 110) 내의 레지스터(111)에 저장되는 각종 정보의 일 예를 나타내는 블록도이다. 도 1 및 도 2가, 도 11 및 도 12와 함께 참조된다.11 and 12 are block diagrams illustrating examples of various types of information stored in the
도 11을 참조하면, 호스트 장치(100)는 호스트 메모리(130) 및 레지스터(111)를 포함하고, 레지스터(111)는 호스트 컨트롤러(110) 내부에 구비되는 구성이고, 호스트 메모리(130)는 호스트 컨트롤러(110)의 외부에 배치될 수 있다. 스토리지 시스템(10)에 대한 데이터 관리를 위하여 JEDEC UFS 표준들에서 정의된 각종 커맨드 및 파라미터들이 호스트 메모리(130) 및 레지스터(111)에 저장될 수 있다. Referring to FIG. 11 , the
호스트 메모리(130)의 디스크립터 영역에는 UTP 전송 요청 디스크립터(UTP Transfer Request Descriptor)가 저장되고, 호스트 메모리(130)의 다른 일 영역에는 UPIU 정보 및 대응하는 PRDT 정보가 저장될 수 있다. 또한, UTP 전송 요청 디스크립터들은 레지스터(111)에 저장된 UTP 전송 요청(UTP Transfer Request)을 통해 호스트 메모리(130)에 저장되거나 호스트 메모리(130)에서 확인될 수 있다. A UTP Transfer Request Descriptor may be stored in a descriptor area of the
또한, 호스트 메모리(130)의 버퍼 영역에 포함되는 다수의 데이터 버퍼들에는 기입 데이터 및 독출 데이터가 저장되고, PRDT 정보는 데이터 버퍼의 물리적 어드레스로서 버퍼 어드레스를 포함할 수 있다. 또한, 일부의 커맨드 UPIU에 대해서는 PRDT 정보가 저장되지 않을 수 있으며, 일 예로서 데이터 버퍼의 액세스에 무관한 커맨드 UPIU에 대해서는 PRDT 정보가 저장되지 않을 수 있다.In addition, write data and read data are stored in a plurality of data buffers included in the buffer area of the
이와 함께, 도 11에서는 JEDEC UFS 표준들에서 정의되는 다른 다양한 정보들이 더 도시된다. 일 예로, UTP 태스크 관리 요청 리스트가 호스트 메모리(130)의 일 영역에 더 저장될 수 있으며, 일 예로 태스크 관리 요청 UPIU 및 태스크 관리 응답 UPIU가 호스트 메모리(130)의 일 영역에 저장될 수 있다. 또한, 상기 태스크 관리 요청 리스트는 레지스터(111)에 저장된 UTP 태스크 관리 요청을 통해 호스트 메모리(130)에 저장될 수 있다. 이외에도, 레지스터(111)에는 JEDEC UFS 표준들에서 정의되는 다른 컴포넌트들이 더 도시되며, 예컨대 호스트 제어기 능력(Host Controller Capabilities), 인터럽트 및 호스트 상태 표시자(Interrupt and host status), UFS 인터커넥트(UIC) 커맨드(UIC Command) 및 벤더 특정 값(Vendor Specific)들이 레지스터(111)에 저장될 수 있다.In addition, in FIG. 11 , other various information defined in the JEDEC UFS standards are further illustrated. As an example, the UTP task management request list may be further stored in one area of the
운영 체제에서 호스트 메모리(130)의 데이터 버퍼(Data Buffer)에 저장된 데이터를 스토리지 장치(도 1, 200)에 저장하기 위해서는, 호스트 메모리(130) 내에 UTP 전송 요청 디스크립터를 생성하고, UTP 전송 요청을 생성함으로써 호스트 컨트롤러 인터페이스(도 2, 190)를 개시시킬 수 있다.In order for the operating system to store data stored in the data buffer of the
호스트 컨트롤러 인터페이스(190)는 UTP 전송 요청 에 해당하는 호스트 메모리(130)의 일 공간으로 액세스할 수 있고, UTP 전송 요청 디스크립터를 읽어 해당하는 커맨드 UPIU를 스토리지 장치(200)로 보낼 수 있다.The
커맨드 UPIU를 전송 받은 스토리지 장치(200)는 전송 받고자 하는 크기 및 Offset 정보를 담고 있는 RTT(Ready To Transfer) UPIU를 호스트 컨트롤러 인터페이스(190)로 전송할 수 있고, 호스트 컨트롤러 인터페이스(190)는 RTT UPIU의 HEADER(전송 정보) 내부의 LUN(Logical Unit Number), 및 TAG(identifier) 정보를 참조하여 해당하는 UTP 전송 요청 디스크립터 위치로 접근해 PRDT 정보를 탐색해 최종적으로 데이터 버퍼의 주소를 알고 데이터 전송을 개시할 수 있다.The
도 12는 일반적인 경우와 본 개시의 실시예에 따라 호스트 메모리에 대한 액세스 빈도를 비교한 블록도이다. 도 12에서는 호스트가 스토리지 장치로부터 전송된 패킷에 따른 동작을 수행하는 예가 도시된다.12 is a block diagram comparing the frequency of access to a host memory according to an embodiment of the present disclosure with a general case. 12 illustrates an example in which the host performs an operation according to a packet transmitted from the storage device.
도 12에서는 일반적인 포맷에 따른 패킷을 처리하는 예가 도시된다. 도 12를 참조하면, 호스트 컨트롤러(도 2, 110) 내의 레지스터(111)에는 하나 이상의 UTP 전송 요청들이 저장되고, 일 예로서 제1 전송 요청(Transfer Request 0)은 데이터 기입 요청에 해당하고 제3 전송 요청(Transfer Request 2)은 데이터 독출 요청에 해당할 수 있다. 호스트 컨트롤러(110)는 제1 전송 요청(Transfer Request 0)에 대응하여 스토리지 장치(도 1, 200)로부터 RTT UPIU를 수신할 수 있다. 또한, 호스트 컨트롤러(110)는 제3 전송 요청(Transfer Request 2)에 대응하여 스토리지 장치(200)로부터 DATA_IN UPIU를 수신할 수 있다.12 shows an example of processing a packet according to a general format. Referring to FIG. 12 , one or more UTP transfer requests are stored in the
스토리지 장치(200)로부터 전송되는 패킷(PACKET)에는 헤더 정보가 저장된 헤더 영역이 포함될 수 있으며, RTT UPIU의 헤더 정보는 데이터 기입 동작을 위해 전송받고자 하는 데이터의 사이즈 및 오프셋(Offset) 정보를 포함할 수 있다. 호스트 컨트롤러(110)는 RTT UPIU의 헤더 정보 내의 적어도 일부의 정보 값을 이용한 처리 동작을 수행할 수 있다. 예컨대, 호스트 컨트롤러(110)는 RTT UPIU의 헤더 정보 내의 LUN(Logical Unit Number) 및 TAG(identifier) 정보를 참조함으로써 대응하는 UTP 전송 요청 디스크립터를 확인하기 위해 호스트 메모리(130)를 액세스한다. 또한, 호스트 컨트롤러는 UTP 전송 요청 디스크립터를 통해 판단된 위치에서 호스트 메모리(130)를 액세스함으로써 PRDT의 정보를 확인한다. 또한, 확인된 PRDT의 정보(예컨대, 버퍼 어드레스)를 통해 데이터 버퍼(Data Buffer)를 액세스하고, 데이터 버퍼에 저장된 데이터를 스토리지 장치(200)로 전송할 수 있다.A packet (PACKET) transmitted from the
한편, DATA_IN UPIU이 수신된 경우, 호스트 컨트롤러(110)는 DATA_IN UPIU의 헤더 정보로부터 대응하는 UTP 전송 요청 디스크립터를 확인하기 위해 호스트 메모리(130)를 액세스하고, 또한 이에 대응하는 PRDT의 정보를 확인하기 위해 호스트 메모리(130)를 액세스할 수 있다. 그리고, DATA_IN UPIU에 포함된 독출 데이터는 확인된 PRDT의 정보에 대응하는 데이터 버퍼(Data Buffer)에 저장될 수 있다.On the other hand, when the DATA_IN UPIU is received, the
도 13은 UFS 인터페이스에 따른 데이터 독출 동작 및 패킷의 일 구현 예를 나타내는 도면이다. 13 is a diagram illustrating an implementation example of a data read operation and a packet according to a UFS interface.
도 13을 참조하면, 데이터 독출 요청을 위한 커맨드 UPIU(CMD UPIU)가 호스트 장치(100)에서 스토리지 장치(200)로 전송되고, 데이터 독출 요청을 위한 CMD UPIU 에 버퍼 어드레스(또는, 데이터 버퍼의 물리적 어드레스(PA))가 포함될 수 있다. 스토리지 장치(200)는 데이터 독출 요청을 위한 커맨드 UPIU에 응답하여 메모리 코어로부터 데이터를 독출하고, 앞서 커맨드 UPIU으로부터 파싱된 물리적 어드레스(PA)와 함께 독출 데이터를 포함하는 DATA_IN UPIU를 호스트로 전송할 수 있다. 또한, 스토리지 장치(200)는 커맨드 UPIU에 대응하는 동작을 완료하였음을 나타내는 리스폰스 UPIU(Response UPIU)를 호스트 장치(100)로 전송할 수 있다. 전술한 실시예들에 따라, 호스트 장치(100)는 DATA_IN UPIU 로부터 파싱된 물리적 어드레스(PA)가 나타내는 위치의 데이터 버퍼(Data Buffer)에 독출 데이터를 저장할 수 있다. 한편, 전술한 커맨드 UPIU 및 DATA_IN UPIU의 패킷 구조는 이하의 도 14a 및 도 14b에 도시된 바와 같이 구현될 수 있다.Referring to FIG. 13 , a command UPIU (CMD UPIU) for a data read request is transmitted from the
도 14a 및 도 14b는 본 개시의 예시적 실시예에 따른 패킷의 구조를 나타내는 도면이다.14A and 14B are diagrams illustrating the structure of a packet according to an exemplary embodiment of the present disclosure.
도 14a 및 도 14b에서는 기존의 헤더 영역에 버퍼 어드레스가 포함되는 예가 도시되며, 도 14a는 커맨드 UPIU, 도 14b는 DATA_IN UPIU의 구조를 나타낸다.14A and 14B show an example in which a buffer address is included in an existing header area. FIG. 14A shows the structure of a command UPIU, and FIG. 14B shows the structure of a DATA_IN UPIU.
도 14a를 참조하면, 커맨드 UPIU의 헤더 영역은 예비 영역(Reserved)을 포함하고, 상기 예비 영역 중 일부에 본 개시의 실시예들에 따른 버퍼 어드레스 및 이에 관련된 정보가 포함될 수 있다. 일 예로서, 호스트 메모리의 버퍼 어드레스(Host Memory Buffer Address)가 예비 영역에 포함됨과 함께, 상기 커맨드 UPIU에 버퍼 어드레스가 포함되었음을 나타내는 정보(CWA)와, 버퍼 어드레스가 저장된 영역의 크기(또는, 버퍼 어드레스 및 관련 정보가 저장된 영역의 크기)를 나타내는 정보(CWA_LENGTH)가 상기 예비 영역에 더 포함될 수 있다. Referring to FIG. 14A , the header area of the command UPIU includes a reserved area, and a part of the reserved area may include a buffer address according to embodiments of the present disclosure and information related thereto. As an example, information CWA indicating that the buffer address is included in the command UPIU, the size of the area (or the buffer Information (CWA_LENGTH) indicating the size of an area in which an address and related information are stored) may be further included in the spare area.
UFS 규격을 채택한 호스트 장치(100)에서 스토리지 장치(200)로 전송되는 커맨드 패킷(PACKET_C)의 구성은, 서브미션 큐 아이디(SQ_ID), 컴플리션 큐 아이디(CQ_ID), 및 리스폰스 크레딧(CR_RESP)을 포함할 수 있다. The configuration of the command packet (PACKET_C) transmitted from the
복수의 서브미션 큐들 중 어떤 서브미션 큐와 관련된 커맨드가 전송되었는지를 지시하는 서브미션 큐 아이디(SQ_ID), 및 복수의 컴플리션 큐들 중 어떤 컴플리션 큐와 관련된 커맨드가 전송되었는지를 지시하는 컴플리션 큐 아이디(CQ_ID)가 호스트 장치(100)에서 스토리지 장치(200)로 전송된다.A submission queue ID (SQ_ID) indicating which submission queue-related command from among the plurality of submission queues is transmitted, and a commutation queue indicating which command related to which of the plurality of completion queues is transmitted The partition queue ID (CQ_ID) is transmitted from the
예시적인 실시예에서, 리저브 커맨드(Reserved CMD)를 이용하여 호스트 장치(100)의 초기화가 수행될 수 있다.In an exemplary embodiment, initialization of the
도 14b를 참조하면, DATA_IN UPIU은 헤더 영역과 데이터 영역을 포함하는 페이로드(Payload) 영역을 포함하고, 헤더 영역은 예비 영역(Reserved)을 포함할 수 있다. 또한, 상기 예비 영역의 적어도 일부에 호스트 메모리(130)의 버퍼 어드레스 및 이에 관련된 정보가 포함될 수 있다. Referring to FIG. 14B , the DATA_IN UPIU may include a payload area including a header area and a data area, and the header area may include a reserved area. Also, at least a part of the spare area may include a buffer address of the
UFS 규격을 채택한 스토리지 장치(200)에서 호스트 장치(100)로 전송되는 리스폰스 패킷(PACKET_R)의 구성은, 서브미션 큐 아이디(SQ_ID), 컴플리션 큐 아이디(CQ_ID), 및 커맨드 크레딧(CR_CMD)을 포함할 수 있다. The configuration of the response packet (PACKET_R) transmitted from the
도 14b에 도시된 예비 영역에 포함되는 정보는 도 14a에 도시된 바와 동일 또는 유사하므로 이에 대한 자세한 설명은 생략된다.Since information included in the spare area shown in FIG. 14B is the same as or similar to that shown in FIG. 14A , a detailed description thereof will be omitted.
도 15는 본 개시의 예시적인 실시예에 따른 스토리지(storage) 장치가 적용된 시스템(1000)을 도시한 도면이다. 15 is a diagram illustrating a
도 15의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 15의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.The
도 15을 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.Referring to FIG. 15 , the
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다. The
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.The
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.The
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다. The
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.The
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. The photographing
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keypad), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.The
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다. The
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.The
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.The
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.The
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다. The
도 16은 본 개시의 예시적인 실시예에 따른 UFS 시스템(2000)에 대해 설명하기 위한 도면이다. 16 is a diagram for explaining a
UFS 시스템(2000)은 JEDEC(Joint Electron Device Engineering Council)에서 발표하는 UFS 표준(standard)을 따르는 시스템으로서, UFS 호스트(2100), UFS 장치(2200) 및 UFS 인터페이스(2300)를 포함할 수 있다. 전술한 도 15의 시스템(1000)에 대한 설명은, 도 16에 대한 이하의 설명과 상충되지 않는 범위 내에서 도 16의 UFS 시스템(2000)에도 적용될 수 있다.The
도 16를 참조하면, UFS 호스트(2100)와 UFS 장치(2200)는 UFS 인터페이스(2300)를 통해 상호 연결될 수 있다. 도 1의 메인 프로세서(1100)가 애플리케이션 프로세서일 경우, UFS 호스트(2100)는 해당 애플리케이션 프로세서의 일부로서 구현될 수 있다. UFS 호스트 컨트롤러(2110) 및 호스트 메모리(2140)는 도 1의 메인 프로세서(1100)의 컨트롤러(1120) 및 메모리(1200a, 1200b)에 각각 대응될 수 있다. UFS 장치(2200)는 도 1의 스토리지 장치(1300a, 1300b)에 대응될 수 있으며, UFS 장치 컨트롤러(2210) 및 비휘발성 메모리(2220)는 도 1의 스토리지 컨트롤러(1310a, 1310b) 및 비휘발성 메모리(1320a, 1320b)에 각각 대응될 수 있다.Referring to FIG. 16 , a
UFS 호스트(2100)는 UFS 호스트 컨트롤러(2110), 애플리케이션(2120), UFS 드라이버(2130), 호스트 메모리(2140) 및 UIC(UFS interconnect) 레이어(2150)를 포함할 수 있다. UFS 장치(2200)는 UFS 장치 컨트롤러(2210), 비휘발성 메모리(2220), 스토리지 인터페이스(2230), 장치 메모리(2240), UIC 레이어(2250) 및 레귤레이터(2260)를 포함할 수 있다. 비휘발성 메모리(2220)는 복수의 메모리 유닛(2221)으로 구성될 수 있으며, 이와 같은 메모리 유닛(2221)은 2D 구조 혹은 3D 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다. UFS 장치 컨트롤러(2210)와 비휘발성 메모리(2220)는 스토리지 인터페이스(2230)를 통해 서로 연결될 수 있다. 스토리지 인터페이스(2230)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.The
애플리케이션(2120)은 UFS 장치(2200)의 기능을 이용하기 위해 UFS 장치(2200)와의 통신을 원하는 프로그램을 의미할 수 있다. 애플리케이션(2120)은 UFS 장치(2200)에 대한 입출력을 위해 입출력 요청(input-output request, IOR)을 UFS 드라이버(2130)로 전송할 수 있다. 입출력 요청(IOR)은 데이터의 독출(read) 요청, 기입(write) 요청 및/또는 소거(discard/erase) 요청 등을 의미할 수 있으나, 반드시 이에 한정되는 것은 아니다.The
UFS 드라이버(2130)는 UFS-HCI(host controller interface)를 통해 UFS 호스트 컨트롤러(2110)를 관리할 수 있다. UFS 드라이버(2130)는 애플리케이션(2120)에 의해 생성된 입출력 요청을 UFS 표준에 의해 정의된 UFS 명령으로 변환하고, 변환된 UFS 명령을 UFS 호스트 컨트롤러(2110)로 전달할 수 있다. 하나의 입출력 요청은 복수의 UFS 명령으로 변환될 수 있다. UFS 명령은 기본적으로 SCSI 표준에 의해 정의된 명령일 수 있지만, UFS 표준 전용 명령일 수도 있다.The
UFS 호스트 컨트롤러(2110)는 UFS 드라이버(2130)에 의해 변환된 UFS 명령을 UIC 레이어(2150)와 UFS 인터페이스(2300)를 통해 UFS 장치(2200)의 UIC 레이어(2250)로 전송할 수 있다. 이 과정에서, UFS 호스트 컨트롤러(2110)의 UFS 호스트 레지스터(2111)는 명령 큐(command queue, CQ)로서의 역할을 수행할 수 있다. The
UFS 호스트(2100) 측의 UIC 레이어(2150)는 MIPI M-PHY(2151)와 MIPI UniPro(2152)를 포함할 수 있으며, UFS 장치(2200) 측의 UIC 레이어(2250) 또한 MIPI M-PHY(2251)와 MIPI UniPro(2252)을 포함할 수 있다. The
UFS 인터페이스(2300)는 기준 클럭(REF_CLK)을 전송하는 라인, UFS 장치(2200)에 대한 하드웨어 리셋 신호(RESET_n)를 전송하는 라인, 차동 입력 신호 쌍(DIN_t와 DIN_c)을 전송하는 한 쌍의 라인 및 차동 출력 신호 쌍(DOUT_t와 DOUT_c)을 전송하는 한 쌍의 라인을 포함할 수 있다.The
UFS 호스트(2100)로부터 UFS 장치(2200)로 제공되는 기준 클럭(REF_CLK)의 주파수 값은 19.2MHz, 26MHz, 38.4MHz 및 52MHz의 네 개의 값 중 하나일 수 있으나, 반드시 이에 한정되지는 않는다. UFS 호스트(2100)는 동작 중에도, 즉 UFS 호스트(2100)와 UFS 장치(2200) 사이에서 데이터 송수신이 수행되는 중에도 기준 클럭(REF_CLK)의 주파수 값을 변경할 수 있다. UFS 장치(2200)는 위상 동기 루프(phase-locked loop, PLL) 등을 이용하여, UFS 호스트(2100)로부터 제공받은 기준 클럭(REF_CLK)으로부터 다양한 주파수의 클럭을 생성할 수 있다. 또한, UFS 호스트(2100)는 기준 클럭(REF_CLK)의 주파수 값을 통해 UFS 호스트(2100)와 UFS 장치(2200) 간의 데이터 레이트(data rate)의 값을 설정할 수도 있다. 즉, 상기 데이터 레이트의 값은 기준 클럭(REF_CLK)의 주파수 값에 의존하여 결정될 수 있다.The frequency value of the reference clock REF_CLK provided from the
UFS 인터페이스(2300)는 복수의 레인들(multiple lanes)을 지원할 수 있으며, 각 레인은 차동(differential) 라인 쌍으로 구현될 수 있다. 예컨대, UFS 인터페이스(2300)는 하나 이상의 수신 레인(receive lane)과 하나 이상의 송신 레인(transmit lane)을 포함할 수 있다. 도 16에서, 차동 입력 신호 쌍(DIN_T와 DIN_C)을 전송하는 한 쌍의 라인은 수신 레인을, 차동 출력 신호 쌍(DOUT_T와 DOUT_C)을 전송하는 한 쌍의 라인은 송신 레인을 각각 구성할 수 있다. 도 16에서는 하나의 송신 레인과 하나의 수신 레인을 도시하였지만, 송신 레인과 수신 레인의 수는 변경될 수 있다.The
수신 레인 및 송신 레인은 직렬 통신(serial communication) 방식으로 데이터를 전송할 수 있으며, 수신 레인과 송신 레인이 분리된 구조에 의해 UFS 호스트(2100)와 UFS 장치(2200) 간의 풀 듀플렉스(full-duplex) 방식의 통신이 가능하다. 즉, UFS 장치(2200)는 수신 레인을 통해 UFS 호스트(2100)로부터 데이터를 수신받는 동안에도, 송신 레인을 통해 UFS 호스트(2100)로 데이터를 송신할 수 있다. 또한, UFS 호스트(2100)로부터 UFS 장치(2200)로의 명령과 같은 제어 데이터와, UFS 호스트(2100)가 UFS 장치(2200)의 비휘발성 메모리(2220)에 저장하고자 하거나 비휘발성 메모리(2220)로부터 독출하고자 하는 사용자 데이터는 동일한 레인을 통해 전송될 수 있다. 이에 따라, UFS 호스트(2100)와 UFS 장치(2200) 간에는 한 쌍의 수신 레인과 한 쌍의 송신 레인 외에 데이터 전송을 위한 별도의 레인이 더 구비될 필요가 없다.The reception lane and the transmission lane may transmit data in a serial communication method, and a full-duplex between the
UFS 장치(2200)의 UFS 장치 컨트롤러(2210)는 UFS 장치(2200)의 동작을 전반적으로 제어할 수 있다. UFS 장치 컨트롤러(2210)는 논리적인 데이터 저장 단위인 LU(logical unit)(2211)를 통해 비휘발성 메모리(2220)를 관리할 수 있다. LU(2211)의 개수는 8개일 수 있으나, 이에 한정되는 것은 아니다. UFS 장치 컨트롤러(2210)는 플래시 변환 계층(flash translation layer, FTL)을 포함할 수 있으며, FTL의 어드레스 매핑(address mapping) 정보를 이용하여 UFS 호스트(2100)로부터 전달된 논리적인 데이터 주소, 예컨대 LBA(logical block address)를 물리적인 데이터 주소로, 예컨대 PBA(physical block address)로 변환할 수 있다. UFS 시스템(2000)에서 사용자 데이터(user data)의 저장을 위한 논리 블록(logical block)은 소정 범위의 크기를 가질 수 있다. 예컨대, 논리 블록의 최소 크기는 4Kbyte로 설정될 수 있다.The
UFS 호스트(2100)로부터의 명령이 UIC 레이어(2250)를 통해 UFS 장치(2200)로 입력되면, UFS 장치 컨트롤러(2210)는 입력된 명령에 따른 동작을 수행하고, 상기 동작이 완료되면 완료 응답을 UFS 호스트(2100)로 전송할 수 있다. When a command from the
일례로서, UFS 호스트(2100)가 UFS 장치(2200)에 사용자 데이터를 저장하고자 할 경우, UFS 호스트(2100)는 데이터 저장 명령을 UFS 장치(2200)로 전송할 수 있다. 사용자 데이터를 전송받을 준비가 되었다(ready-to-transfer)는 응답을 UFS 장치(2200)로부터 수신하면, UFS 호스트(2100)는 사용자 데이터를 UFS 장치(2200)로 전송할 수 있다. UFS 장치 컨트롤러(2210)는 전송받은 사용자 데이터를 장치 메모리(2240) 내에 임시로 저장하고, FTL의 어드레스 매핑 정보에 기초하여 장치 메모리(2240)에 임시로 저장된 사용자 데이터를 비휘발성 메모리(2220)의 선택된 위치에 저장할 수 있다.As an example, when the
또 다른 예로서, UFS 호스트(2100)가 UFS 장치(2200)에 저장된 사용자 데이터를 독출하고자 할 경우, UFS 호스트(2100)는 데이터 독출 명령을 UFS 장치(2200)로 전송할 수 있다. 명령을 수신한 UFS 장치 컨트롤러(2210)는 상기 데이터 독출 명령에 기초하여 비휘발성 메모리(2220)로부터 사용자 데이터를 독출하고, 독출된 사용자 데이터를 장치 메모리(2240) 내에 임시로 저장할 수 있다. 이러한 독출 과정에서, UFS 장치 컨트롤러(2210)는 내장된 ECC(error correction code) 엔진(미도시)을 이용하여, 독출된 사용자 데이터의 에러를 검출하고 정정할 수 있다. 보다 구체적으로, ECC 엔진은 비휘발성 메모리(2220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(2220) 내에 저장될 수 있다. 비휘발성 메모리(2220)로부터의 데이터 독출 시, ECC 엔진은 독출 데이터와 함께 비휘발성 메모리(2220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.As another example, when the
그리고, UFS 장치 컨트롤러(2210)는 장치 메모리(2240) 내에 임시로 저장된 사용자 데이터를 UFS 호스트(2100)로 전송할 수 있다. 아울러, UFS 장치 컨트롤러(2210)는 AES(advanced encryption standard) 엔진(미도시)을 더 포함할 수 있다. AES 엔진은, UFS 장치 컨트롤러(2210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다.In addition, the
UFS 호스트(2100)는 명령 큐로 기능할 수 있는 UFS 호스트 레지스터(2111)에 UFS 장치(2200)로 송신될 명령들을 순서에 따라 저장하고, 상기 순서대로 UFS 장치(2200)에 명령을 송신할 수 있다. 이 때, UFS 호스트(2100)는 이전에 송신된 명령이 아직 UFS 장치(2200)에 의해 처리 중인 경우에도, 즉 이전에 송신된 명령이 UFS 장치(2200)에 의해 처리가 완료되었다는 통지를 받기 전에도 명령 큐에 대기 중인 다음 명령을 UFS 장치(2200)로 송신할 수 있으며, 이에 따라 UFS 장치(2200) 역시 이전에 송신된 명령을 처리하는 중에도 다음 명령을 UFS 호스트(2100)로부터 수신할 수 있다. 이와 같은 명령 큐에 저장될 수 있는 명령의 최대 개수(queue depth)는 예컨대 32개일 수 있다. 또한, 명령 큐는 헤드 포인터(head point)와 테일 포인터(tail pointer)를 통해 큐에 저장된 명령 열의 시작과 끝을 각각 나타내는 원형 큐(circular queue) 타입으로 구현될 수 있다.The
복수의 메모리 유닛(2221) 각각은 메모리 셀 어레이(미도시)와 상기 메모리 셀 어레이의 작동을 제어하는 제어 회로(미도시)를 포함할 수 있다. 상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 셀을 포함하며, 각각의 메모리 셀은 1비트의 정보를 저장하는 셀(single level cell, SLC)일 수도 있지만, MLC(multi level cell), TLC(triple level cell), QLC(quadruple level cell)와 같이 2비트 이상의 정보를 저장하는 셀일 수도 있다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다.Each of the plurality of
UFS 장치(2200)에는 전원 전압으로서 VCC, VCCQ, VCCQ2 등이 입력될 수 있다. VCC는 UFS 장치(2200)를 위한 주 전원 전압으로서, 2.4~3.6V의 값을 가질 수 있다. VCCQ는 낮은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 UFS 장치 컨트롤러(2210)를 위한 것이며. 1.14~1.26V의 값을 가질 수 있다. VCCQ2는 VCC보다는 낮지만 VCCQ보다는 높은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 MIPI M-PHY(2251)와 같은 입출력 인터페이스를 위한 것이며, 1.7~1.95V의 값을 가질 수 있다. 상기 전원 전압들은 레귤레이터(2260)를 거쳐 UFS 장치(2200)의 각 구성 요소들을 위해 공급될 수 있다. 레귤레이터(2260)는 전술한 전원 전압들 중 서로 다른 것에 각각 연결되는 단위 레귤레이터의 집합으로 구현될 수 있다.VCC, VCCQ, VCCQ2, etc. may be input to the
도 17a 내지 도 17c는 본 개시의 예시적인 실시예에 따른 UFS 카드(card)의 폼 팩터(form factor)에 대해 설명하기 위한 도면이다.17A to 17C are diagrams for explaining a form factor of a UFS card according to an exemplary embodiment of the present disclosure.
도 16를 참조하여 설명된 UFS 장치(2200)가 UFS 카드(4000) 형태로 구현된 경우, UFS 카드(4000)의 외형은 도 17a 내지 도 17c에 도시된 바를 따를 수 있다.When the
도 17a는 UFS 카드(4000)의 평면도(top view)를 예시적으로 보여주고 있다. 도 17a를 참조하면, UFS 카드(4000)는 전체적으로 상어(shark) 형상의 디자인을 따르고 있다는 것을 확인할 수 있다. 도 17a와 관련하여, UFS 카드(4000)는 예시적으로 아래의 표 1에 기재된 바와 같은 치수(dimension) 값을 가질 수 있다.17A exemplarily shows a top view of the
항목
Item
도 17b는 UFS 카드(4000)의 측면도(side view)를 예시적으로 보여주고 있다. 도 17b와 관련하여, UFS 카드(4000)는 예시적으로 아래의 표 2에 기재된 바와 같은 치수(dimension) 값을 가질 수 있다. 17B exemplarily shows a side view of the
도 17c는 UFS 카드(4000)의 저면도(bottom view)를 예시적으로 보여주고 있다. 도 17c를 참조하면, UFS 카드(4000)의 저면에는 UFS 슬롯과의 전기적 접촉을 위한 복수 개의 핀(pin)이 형성될 수 있으며, 각 핀의 기능에 대해서는 후술한다. UFS 카드(4000)의 상면과 저면 간의 대칭성에 의거하여, 도 17a 및 표 1을 참조하여 설명된 치수에 관한 정보 중 일부(예컨대, T1 내지 T5 및 T9)는 도 17c에 도시된 바와 같은 UFS 카드(4000)의 저면도에도 적용될 수 있다.UFS 카드(4000)의 저면에는 UFS 호스트와의 전기적 연결을 위해 복수의 핀이형성될 수 있으며, 도 17c에 의하면 핀의 개수는 총 12개일 수 있다. 각 핀은 직사각형 형상을 가질 수 있으며, 핀에 대응되는 신호명(signal name)은 도 17c에 표시된 바와 같다. 각 핀에 대한 개략적인 정보에 대해서는 아래의 표 3을 참조할 수 있으며, 도 16와 관련하여 전술한 설명을 아울러 참조할 수 있다.17C exemplarily shows a bottom view of the
도 18a는 본 개시의 예시적인 실시예에 따른 호스트-스토리지 시스템(10)을 나타내는 블록도이고, 도 18b 내지 도 18e는 도 18a의 구성들의 상세 블록도이다.도 18a를 참조하면, 호스트-스토리지 시스템(10)은 호스트 장치(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리 (NVM)(230)를 포함할 수 있다. 또한, 본 개시의 예시적인 실시예에 따라, 호스트 장치(100)는 호스트 컨트롤러(110) 및 호스트 메모리(130)를 포함할 수 있다. 호스트 메모리(130)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.18A is a block diagram illustrating a host-
스토리지 장치(200)는 호스트 장치(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트 장치(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.The
스토리지 장치(200)의 비휘발성 메모리(230)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.When the
일 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(130)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(130)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(130)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.According to an embodiment, the
호스트 컨트롤러(110)는 호스트 메모리(130)의 버퍼 영역의 데이터(예컨대, 기입 데이터)를 비휘발성 메모리(230)에 저장하거나, 비휘발성 메모리(230)의 데이터(예컨대, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.The
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(216) 및 CPU(central processing unit)(212)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 계층(Flash Translation Layer; FTL)(213), 패킷 매니저(214), 버퍼 메모리(215), ECC(error correction code)(217) 엔진 및 AES(advanced encryption standard) 엔진(218)을 더 포함할 수 있다. 스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL)(214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, 중앙 처리 장치(212)가 플래시 계층을 실행하는 것에 의해 비휘발성 메모리(230)에 대한 데이터 기입 및 독출 동작이 제어될 수 있다.The
호스트 인터페이스(211)는 호스트 장치(100)와 패킷(PACKET)을 송수신할 수 있다. 호스트 장치(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(230)에 기입될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트 장치(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(230)로부터 독출된 데이터 등을 포함할 수 있다. 메모리 인터페이스(216)는 비휘발성 메모리(230)에 기입될 데이터를 비휘발성 메모리(230)로 송신하거나, 비휘발성 메모리(230)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(216)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.The
플래시 변환 계층(213)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트 장치(100)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(230) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(230) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(230) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.The
패킷 매니저(214)는 호스트 장치(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(PACKET)을 생성하거나, 호스트 장치(100)로부터 수신된 패킷(PACKET)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 매니저(215)는 비휘발성 메모리(230)에 기입될 데이터 혹은 비휘발성 메모리(230)로부터 독출될 데이터를 버퍼에 임시로 저장할 수 있다. 버퍼는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다.The
ECC 엔진(217)은 비휘발성 메모리(230)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리(230)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(230) 내에 저장될 수 있다. 비휘발성 메모리(230)로부터의 데이터 독출 시, ECC 엔진(217)은 독출 데이터와 함께 비휘발성 메모리(230)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.The
AES 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.The
도 18b는 도 18a의 ECC 엔진(217)을 보다 자세히 설명하기 위한 도면이다. 도 18b를 참조하면, ECC 엔진(217)은 ECC 인코딩 회로(510)와 ECC 디코딩 회로(520)를 포함할 수 있다. ECC 인코딩 회로(510)는 ECC 제어 신호(ECC_CON)에 응답하여 메모리 셀 어레이(221)의 메모리 셀들에 기입될 기입 데이터(WData[0:63])에 대하여 패리티 비트들(ECCP[0:7])을 생성할 수 있다. 패리티 비트들(ECCP[0:7])은 ECC 셀 어레이(223)에 저장될 수 있다. 실시예에 따라, ECC 인코딩 회로(510)는 ECC 제어 신호(ECC_CON)에 응답하여 메모리 셀 어레이(221)의 불량 셀을 포함하는 메모리 셀들에 기입될 기입 데이터(WData[0:63])에 대하여 패리티 비트들(ECCP[0:7])을 생성할 수 있다.18B is a diagram for explaining the
ECC 디코딩 회로(520)는 ECC 제어 신호(ECC_CON)에 응답하여 메모리 셀 어레이(221)의 메모리 셀들로부터 독출되는 독출 데이터(RData[0:63])와 ECC 셀 어레이(223)에서 독출되는 패리티 비트들(ECCP[0:7])을 이용하여 에러 비트 데이터를 정정하고, 에러 정정된 데이터(Data[0:63])를 출력할 수 있다. 실시예에 따라, ECC 디코딩 회로(520)는 ECC 제어 신호(ECC_CON)에 응답하여 메모리 셀 어레이(221)의 불량 셀을 포함하는 메모리 셀들로부터 독출되는 독출 데이터(RData[0:63])와 ECC 셀 어레이(223)에서 독출되는 패리티 비트들(ECCP[0:7])을 이용하여 에러 비트 데이터를 정정하고, 에러 정정된 데이터(Data[0:63])를 출력할 수 있다.The
도 18c는 도 18b의 ECC 인코딩 회로(510)를 설명하는 도면이다.18C is a diagram for explaining the
도 18c를 참조하면, ECC 인코딩 회로(510)는 ECC 제어 신호(ECC_CON)에 응답하여 64 비트 기입 데이터(WData[0:63])와 베이시스 비트(Basis Bit, B[0:7])를 수신하고, XOR 어레이 연산을 이용하여 패리티 비트들(ECCP[0:7])을 발생하는 패리티 발생기(511)를 포함할 수 있다. 베이시스 비트(B[0:7])는 64 비트 기입 데이터(WData[0:63])에 대한 패리티 비트들(ECCP[0:7])을 발생시키기 위한 비트들로서, 예컨대, b'00000000 비트들로 구성될 수 있다. 베이시스 비트(B[0:7])는 b'00000000 비트들 대신에 다른 특정 비트들을 이용할 수 있다.Referring to FIG. 18C , the
도 18d는 도 18b의 ECC 디코딩 회로(520)를 설명하는 도면이다.18D is a diagram for explaining the
도 18d를 참조하면, ECC 디코딩 회로(520)는 신드롬 발생기(521), 계수 계산기(522), 1-비트 에러 위치 검출기(523), 그리고 에러 정정기(524)를 포함한다. 신드롬 발생기(521)는 ECC 제어 신호(ECC_CON)에 응답하여 64 비트 독출 데이터와 8 비트의 패리티 비트들(ECCP[0:7])을 수신하고 XOR 어레이 연산을 이용하여 신드롬 데이터(S[0:7])를 발생할 수 있다. 계수 계산기(522)는 신드롬 데이터(S[0:7])를 이용하여 오류 위치 방정식의 계수를 산출할 수 있다. 오류 위치 방정식은 에러 비트의 역수를 근으로 하는 방정식이다. 1-비트 에러 위치 검출기(523)는 산출된 오류 위치 방정식을 이용하여 1 비트 에러의 위치를 계산할 수 있다. 에러 정정기(524)는 1-비트 에러 위치 검출기(523)의 검출 결과에 기초하여 1-비트 에러 위치를 결정할 수 있다. 에러 정정기(524)는 결정된 1-비트 에러 위치 정보에 따라 64 비트 독출 데이터(RData[0:63]) 중 에러가 발생한 비트의 로직 값을 반전시켜 에러를 정정하고, 에러 정정된 64 비트 데이터(Data[0:63])를 출력할 수 있다.Referring to FIG. 18D , the
도 18e는 도 18a의 AES 엔진(218)을 보다 자세히 설명하기 위한 도면이다. 18E is a diagram for explaining the
AES 엔진(218)은 AES(advanced encryption standard) 알고리즘을 이용한 데이터의 암호화 및 복호화를 수행할 수 있으며, 암호화 모듈(218a) 및 복호화 모듈(218b)을 포함할 수 있다. 도 18e는 서로 별개의 모듈로 구현된 암호화 모듈(218a)과 복호화 모듈(218b)을 도시하고 있으나, 이와는 달리 암호화와 복호화를 모두 수행할 수 있는 하나의 모듈이 AES 엔진(218) 내에 구현되는 것도 가능하다. 버퍼 메모리(215)는 버퍼 역할을 하는 휘발성 메모리일 수 있지만, 비휘발성 메모리일 수도 있다. The
AES 엔진(218)은 버퍼 메모리(215)로부터 전송된 제1 데이터를 수신할 수 있다. 암호화 모듈(218a)은 버퍼 메모리(215)로부터 전송된 제1 데이터를 암호화 키(encryption key)를 이용하여 암호화함으로써 제2 데이터를 생성할 수 있다. 상기 제2 데이터는 AES 엔진(218)으로부터 버퍼 메모리(215)로 전송되어, 버퍼 메모리(215) 내에 저장될 수 있다.The
또한, AES 엔진(218)은 버퍼 메모리(215)로부터 전송된 제3 데이터를 수신할 수 있다. 제3 데이터는 상기 제1 데이터를 암호화하는 데 이용된 암호화 키와 동일한 암호화 키로 암호화된 데이터일 수 있다. 복호화 모듈(218b)은 버퍼 메모리(215)로부터 전송된 제3 데이터를, 상기 제1 데이터를 암호화하는 데 이용된 암호화 키와 동일한 암호화 키로 복호화하여 제4 데이터를 생성할 수 있다. 상기 제4 데이터는 AES 엔진(218)으로부터 버퍼 메모리(215)로 전송되어, 버퍼 메모리(215) 에 저장될 수 있다.Also, the
도 19는 본 개시의 예시적인 실시예에 따른 메모리 시스템(15)을 나타내는 블록도이다. 19 is a block diagram illustrating a
도 19을 참조하면, 메모리 시스템(15)은 메모리 장치(17) 및 메모리 컨트롤러(16)를 포함할 수 있다. 메모리 시스템(15)은 복수의 채널들(CH1~CHm)을 지원할 수 있고, 메모리 장치(17)와 메모리 컨트롤러(16)는 복수의 채널들(CH1~CHm)을 통해 연결될 수 있다. 예를 들어, 메모리 시스템(15)은 SSD(Solid State Drive)와 같은 스토리지 장치로 구현될 수 있다.Referring to FIG. 19 , the
메모리 장치(17)는 복수의 비휘발성 메모리 장치들(NVM11~NVMmn)을 포함할 수 있다. 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 대응하는 웨이(way)를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예를 들어, 비휘발성 메모리 장치들(NVM11~NVM1n)은 웨이들(W11~W1n)을 통해 제1 채널(CH1)에 연결되고, 비휘발성 메모리 장치들(NVM21~NVM2n)은 웨이들(W21~W2n)을 통해 제2 채널(CH2)에 연결될 수 있다. 예시적인 실시 예에서, 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 메모리 컨트롤러(16)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 칩(chip) 또는 다이(die)로 구현될 수 있으나, 본 개시가 이에 한정되는 것은 아니다.The
메모리 컨트롤러(16)는 복수의 채널들(CH1~CHm)을 통해 메모리 장치(17)와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(16)는 채널들(CH1~CHm)을 통해 메모리 장치(17)로 커맨드들(CMDa~CMDm), 어드레스들(ADDRa~ADDRm), 및 데이터(DATAa~DATAm)를 메모리 장치(17)로 전송하거나, 메모리 장치(17)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.The
메모리 컨트롤러(16)는 각각의 채널을 통해 해당 채널에 연결된 비휘발성 메모리 장치들(NVM11~NVMmn) 중 하나를 선택하고, 선택된 비휘발성 메모리 장치와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(16)는 제1 채널(CH1)에 연결된 비휘발성 메모리 장치들(NVM11~NVM1n) 중 비휘발성 메모리 장치(NVM11)를 선택할 수 있다. 메모리 컨트롤러(16)는 선택된 비휘발성 메모리 장치(NVM11)로 제1 채널(CH1)을 통해 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)를 전송하거나, 선택된 비휘발성 메모리 장치(NVM11)로부터 데이터(DATAa)를 수신할 수 있다.The
메모리 컨트롤러(16)는 서로 다른 채널들을 통해 메모리 장치(17)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(16)는 제1 채널(CH1)을 통해 메모리 장치(17)로 커맨드(CMDa)를 전송하는 동안 제2 채널(CH2)을 통해 메모리 장치(17)로 커맨드(CMDb)를 전송할 수 있다. 예를 들어, 메모리 컨트롤러(16)는 제1 채널(CH1)을 통해 메모리 장치(17)로부터 데이터(DATAa)를 수신하는 동안 제2 채널(CH2)을 통해 메모리 장치(17)로부터 데이터(DATAb)를 수신할 수 있다.The
메모리 컨트롤러(16)는 메모리 장치(17)의 전반적인 동작을 제어할 수 있다. 메모리 컨트롤러(16)는 채널들(CH1~CHm)로 신호를 전송하여 채널들(CH1~CHm)에 연결된 비휘발성 메모리 장치들(NVM11~NVMmn) 각각을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(16)는 제1 채널(CH1)로 커맨드(CMDa) 및 어드레스(ADDRa)를 전송하여 비휘발성 메모리 장치들(NVM11~NVM1n) 중 선택된 하나를 제어할 수 있다.The
비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 메모리 컨트롤러(16)의 제어에 따라 동작할 수 있다. 예를 들어, 비휘발성 메모리 장치(NVM11)는 제1 채널(CH1)로 제공되는 커맨드(CMDa), 어드레스(ADDRa)에 따라, 데이터(DATAa)를 프로그램할 수 있다. 예를 들어, 비휘발성 메모리 장치(NVM21)는 제2 채널(CH2)로 제공되는 커맨드(CMDb) 및 어드레스(ADDRb)에 따라 데이터(DATAb)를 독출하고, 독출된 데이터(DATAb)를 메모리 컨트롤러(16)로 전송할 수 있다.Each of the nonvolatile memory devices NVM11 to NVMmn may operate under the control of the
도 19에는 메모리 장치(17)가 m개의 채널을 통해 메모리 컨트롤러(16)와 통신하고, 메모리 장치(17)가 각각의 채널에 대응하여 n개의 비휘발성 메모리 장치를 포함하는 것으로 도시되나, 채널들의 개수와 하나의 채널에 연결된 비휘발성 메모리 장치의 개수는 다양하게 변경될 수 있다.19 shows that the
도 20은 본 개시의 예시적인 실시예에 따른 메모리 시스템을 나타내는 블록도이다. 20 is a block diagram illustrating a memory system according to an exemplary embodiment of the present disclosure.
도 20을 참조하면, 메모리 시스템은 메모리 장치(300) 및 메모리 컨트롤러(400)를 포함할 수 있다. 도 20의 메모리 시스템에, 도 1의 스토리지 장치(200)가 적용될 수 있다. 메모리 장치(300)는 도 19의 복수의 채널들(CH1~CHm) 중 하나를 기반으로 메모리 컨트롤러(400)와 통신하는 비휘발성 메모리 장치들(NVM11~NVMmn) 중 하나에 대응할 수 있다. 메모리 컨트롤러(400)는 도 19의 메모리 컨트롤러(16)에 대응할 수 있다.Referring to FIG. 20 , the memory system may include a
메모리 장치(300)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(310), 제어 로직 회로(320), 및 메모리 셀 어레이(330)를 포함할 수 있다.The
메모리 인터페이스 회로(310)는 제1 핀(P11)을 통해 메모리 컨트롤러(400)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(400)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우, 메모리 인터페이스 회로(310)는 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(400)와 신호들을 송수신할 수 있다. The
메모리 인터페이스 회로(310)는 제2 내지 제4 핀들(P12~P14)을 통해 메모리 컨트롤러(400)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 기입 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 제7 핀(P17)을 통해 메모리 컨트롤러(400)로부터 데이터 신호(DQ)를 수신하거나, 메모리 컨트롤러(400)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호(DQ)들에 대응하는 복수개의 핀들을 포함할 수 있다.The
메모리 인터페이스 회로(310)는 기입 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(310)는 기입 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.The
예시적인 실시 예에서, 기입 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 기입 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(310)는 기입 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.In an exemplary embodiment, the write enable signal nWE may be toggled between a high level and a low level while maintaining a static state (eg, a high level or a low level). have. For example, the write enable signal nWE may be toggled during a period in which the command CMD or the address ADDR is transmitted. Accordingly, the
메모리 인터페이스 회로(310)는 제5 핀(P15)을 통해 메모리 컨트롤러(400)로부터 독출 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 제6 핀(P16)을 통해 메모리 컨트롤러(400)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 컨트롤러(400)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.The
메모리 장치(300)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(310)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 독출 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 독출 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(310)는 독출 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 메모리 컨트롤러(400)로 전송될 수 있다.In the data output operation of the
메모리 장치(300)의 데이터(DATA) 입력 동작에서, 메모리 컨트롤러(400)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)이 수신되는 경우, 메모리 인터페이스 회로(310)는 메모리 컨트롤러(400)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.In the data input operation of the
메모리 인터페이스 회로(310)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다. 메모리 인터페이스 회로(310)는 레디/비지 출력 신호(nR/B)를 통해 메모리 장치(300)의 상태 정보를 메모리 컨트롤러(400)로 전송할 수 있다. 메모리 장치(300)가 비지 상태인 경우(즉, 메모리 장치(300) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(310)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다. 메모리 장치(300)가 레디 상태인 경우(즉, 메모리 장치(300) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(310)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다. 예를 들어, 메모리 장치(300)가 페이지 독출 명령에 응답하여 메모리 셀 어레이(330)로부터 데이터(DATA)를 독출하는 동안, 메모리 인터페이스 회로(310)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다. 예를 들어, 메모리 장치(300)가 프로그램 명령에 응답하여 메모리 셀 어레이(330)로 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(310)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다.The
제어 로직 회로(320)는 메모리 장치(300)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(320)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 메모리 장치(300)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(320)는 메모리 셀 어레이(330)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(330)로부터 데이터(DATA)를 독출하기 위한 각종 제어 신호들을 생성할 수 있다.The
메모리 셀 어레이(330)는 제어 로직 회로(320)의 제어에 따라 메모리 인터페이스 회로(310)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(330)는 제어 로직 회로(320)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(310)로 출력할 수 있다.The
메모리 셀 어레이(330)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 개시는 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다. 이하에서는, 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 실시 예를 중심으로 본 개시의 실시 예들이 설명될 것이다.The
메모리 컨트롤러(400)는 제1 내지 제8 핀들(P21~P28), 및 컨트롤러 인터페이스 회로(410)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 메모리 장치(300)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다.The
컨트롤러 인터페이스 회로(410)는 제1 핀(P21)을 통해 메모리 장치(300)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 칩 인에이블 신호(nCE)를 통해 선택한 메모리 장치(300)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.The
컨트롤러 인터페이스 회로(410)는 제2 내지 제4 핀들(P22~P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 기입 인에이블 신호(nWE)를 메모리 장치(300)로 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 제7 핀(P27)을 통해 메모리 장치(300)로 데이터 신호(DQ)를 전송하거나, 메모리 장치(300)로부터 데이터 신호(DQ)를 수신할 수 있다.The
컨트롤러 인터페이스 회로(410)는 토글하는 기입 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(300)로 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 메모리 장치(300)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(300)로 전송할 수 있다.The
컨트롤러 인터페이스 회로(410)는 제5 핀(P25)을 통해 메모리 장치(300)로 독출 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 제6 핀(P26)을 통해 메모리 장치(300)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 장치(300)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.The
메모리 장치(300)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스 회로(410)는 토글하는 독출 인에이블 신호(nRE)를 생성하고, 독출 인에이블 신호(nRE)를 메모리 장치(300)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(410)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 독출 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 메모리 장치(300)에서 독출 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스 회로(410)는 메모리 장치(300)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스 회로(410)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.In the data output operation of the
메모리 장치(300)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스 회로(410)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(410)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스 회로(410)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 메모리 장치(300)로 전송할 수 있다.In a data input operation of the
컨트롤러 인터페이스 회로(410)는 제8 핀(P28)을 통해 메모리 장치(300)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스 회로(410)는 레디/비지 출력 신호(nR/B)에 기초하여 메모리 장치(300)의 상태 정보를 판별할 수 있다.The
도 21은 본 개시의 예시적인 실시예에 따른 메모리 장치(300)를 나타내는 블록도이다. 21 is a block diagram illustrating a
도 21를 참조하면, 메모리 장치(300)는 제어 로직 회로(320), 메모리 셀 어레이(330), 페이지 버퍼(340), 전압 생성기(350), 및 로우 디코더(360)를 포함할 수 있다. 도 21에는 도시되지 않았으나, 메모리 장치(300)는 도 21에 도시된 메모리 인터페이스 회로(310)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.Referring to FIG. 21 , the
제어 로직 회로(320)는 메모리 장치(300) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(320)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.The
메모리 셀 어레이(330)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(330)는 비트 라인들(BL)을 통해 페이지 버퍼(340)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(360)에 연결될 수 있다.The
예시적인 실시 예에서, 메모리 셀 어레이(330)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 예시적인 실시 예에서, 메모리 셀 어레이(330)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.In an exemplary embodiment, the
페이지 버퍼(340)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼(340)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼(340)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼(340)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 독출 동작 시, 페이지 버퍼(340)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다. The
전압 생성기(350)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(350)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.The
로우 디코더(360)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(360)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다.The
도 22는 본 개시의 예시적인 실시예에 따른 UFS 장치에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다. 22 is a diagram for explaining a 3D V-NAND structure applicable to a UFS device according to an exemplary embodiment of the present disclosure.
UFS 장치의 스토리지 모듈이 3D V-NAND 타입의 플래시 메모리로 구현될 경우, 스토리지 모듈을 구성하는 복수의 메모리 블록 각각은 도 22에 도시된 바와 같은 등가 회로로 표현될 수 있다.When the storage module of the UFS device is implemented as a 3D V-NAND type flash memory, each of a plurality of memory blocks constituting the storage module may be represented by an equivalent circuit as shown in FIG. 22 .
도 22에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.The memory block BLKi illustrated in FIG. 22 represents a three-dimensional memory block formed on a substrate in a three-dimensional structure. For example, a plurality of memory NAND strings included in the memory block BLKi may be formed in a direction perpendicular to the substrate.
도 22를 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 22에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.Referring to FIG. 22 , the memory block BLKi may include a plurality of memory NAND strings NS11 to NS33 connected between the bit lines BL1 , BL2 , and BL3 and the common source line CSL. Each of the plurality of memory NAND strings NS11 to NS33 may include a string select transistor SST, a plurality of memory cells MC1 , MC2 , ..., MC8 , and a ground select transistor GST. 22 , each of the plurality of memory NAND strings NS11 to NS33 includes eight memory cells MC1 , MC2 , ..., MC8 , but is not limited thereto.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인들(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다. The string select transistor SST may be connected to the corresponding string select lines SSL1 , SSL2 , and SSL3 . The plurality of memory cells MC1 , MC2 , ..., MC8 may be respectively connected to corresponding gate lines GTL1 , GTL2 , ..., GTL8 . The gate lines GTL1, GTL2, ..., GTL8 may correspond to word lines, and some of the gate lines GTL1, GTL2, ..., GTL8 may correspond to dummy word lines. The ground select transistor GST may be connected to the corresponding ground select lines GSL1 , GSL2 , and GSL3 . The string select transistor SST may be connected to the corresponding bit lines BL1 , BL2 , and BL3 , and the ground select transistor GST may be connected to the common source line CSL.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 22에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.Word lines of the same height (eg, WL1 ) may be commonly connected, and the ground selection lines GSL1 , GSL2 , and GSL3 and the string selection lines SSL1 , SSL2 , and SSL3 may be separated from each other. 22 shows that the memory block BLK is connected to eight gate lines GTL1, GTL2, ..., GTL8 and three bit lines BL1, BL2, BL3, but is not necessarily limited thereto. no.
도 23은 본 개시의 예시적인 실시예에 따른 메모리 장치(600)를 나타내는 단면도이다. 도 23의 메모리 장치(600)에는 도 1의 비휘발성 메모리(230)가 적용될 수 있다.23 is a cross-sectional view illustrating a
도 23를 참조하면, 메모리 장치(600)는 C2C(chip to chip) 구조일 수 있다. C2C 구조는 제1 웨이퍼 상에 셀 영역(CELL)을 포함하는 상부 칩을 제작하고, 제1 웨이퍼와 다른 제2 웨이퍼 상에 주변 회로 영역(PERI)을 포함하는 하부 칩을 제작한 후, 상기 상부 칩과 상기 하부 칩을 본딩(bonidng) 방식에 의해 서로 연결하는 것을 의미할 수 있다. 일례로, 상기 본딩 방식은 상부 칩의 최상부 메탈층에 형성된 본딩 메탈과 하부 칩의 최상부 메탈층에 형성된 본딩 메탈을 서로 전기적으로 연결하는 방식을 의미할 수 있다. 예컨대, 상기 본딩 메탈이 구리(Cu)로 형성된 경우, 상기 본딩 방식은 Cu-Cu 본딩 방식일 수 있으며, 상기 본딩 메탈은 알루미늄 혹은 텅스텐으로도 형성될 수 있다.Referring to FIG. 23 , the
메모리 장치(600)의 주변 회로 영역(PERI)과 셀 영역(CELL) 각각은 외부 패드 본딩 영역(PA), 워드라인 본딩 영역(WLBA), 및 비트라인 본딩 영역(BLBA)을 포함할 수 있다. 주변 회로 영역(PERI)은 제1 기판(710), 층간 절연층(715), 제1 기판(710)에 형성되는 복수의 회로 소자들(720a, 720b, 720c), 복수의 회로 소자들(720a, 720b, 720c) 각각과 연결되는 제1 메탈층(730a, 730b, 730c), 제1 메탈층(730a, 730b, 730c) 상에 형성되는 제2 메탈층(740a, 740b, 740c)을 포함할 수 있다. 일 실시예에서, 제1 메탈층(730a, 730b, 730c)은 상대적으로 저항이 높은 텅스텐으로 형성될 수 있고, 제2 메탈층(740a, 740b, 740c)은 상대적으로 저항이 낮은 구리로 형성될 수 있다.Each of the peripheral circuit area PERI and the cell area CELL of the
본 명세서에서는 제1 메탈층(730a, 730b, 730c)과 제2 메탈층(740a, 740b, 740c)만 도시되고 설명되나, 이에 한정되는 것은 아니고, 제2 메탈층(740a, 740b, 740c) 상에 적어도 하나 이상의 메탈층이 더 형성될 수도 있다. 제2 메탈층(740a, 740b, 740c)의 상부에 형성되는 하나 이상의 메탈층 중 적어도 일부는, 제2 메탈층(740a, 740b, 740c)을 형성하는 구리보다 더 낮은 저항을 갖는 알루미늄 등으로 형성될 수 있다. In the present specification, only the
층간 절연층(715)은 복수의 회로 소자들(720a, 720b, 720c), 제1 메탈층(730a, 730b, 730c), 및 제2 메탈층(740a, 740b, 740c)을 커버하도록 제1 기판(710) 상에 배치되며, 실리콘 산화물, 실리콘 질화물 등과 같은 절연 물질을 포함할 수 있다.The interlayer insulating
워드라인 본딩 영역(WLBA)의 제2 메탈층(740b) 상에 하부 본딩 메탈(771b, 772b)이 형성될 수 있다. 워드라인 본딩 영역(WLBA)에서, 주변 회로 영역(PERI)의 하부 본딩 메탈(771b, 772b)은 셀 영역(CELL)의 상부 본딩 메탈(871b, 872b)과 본딩 방식에 의해 서로 전기적으로 연결될 수 있으며, 하부 본딩 메탈(771b, 772b)과 상부 본딩 메탈(871b, 872b)은 알루미늄, 구리, 혹은 텅스텐 등으로 형성될 수 있다. 셀 영역(CELL)의 상부 본딩 메탈(871b, 872b)은 제1 메탈 패드들이라고 지칭될 수 있고, 주변 회로 영역(PERI)의 하부 본딩 메탈(771b, 772b)은 제2 메탈 패드들이라고 지칭할 수 있다.
셀 영역(CELL)은 적어도 하나의 메모리 블록을 제공할 수 있다. 셀 영역(CELL)은 제2 기판(810)과 공통 소스 라인(820)을 포함할 수 있다. 제2 기판(810) 상에는, 제2 기판(810)의 상면에 수직하는 방향(Z축 방향)을 따라 복수의 워드라인들(831-838; 830)이 적층될 수 있다. 워드라인들(830)의 상부 및 하부 각각에는 스트링 선택 라인들과 접지 선택 라인이 배치될 수 있으며, 스트링 선택 라인들과 접지 선택 라인 사이에 복수의 워드라인들(830)이 배치될 수 있다.The cell region CELL may provide at least one memory block. The cell region CELL may include a
비트라인 본딩 영역(BLBA)에서, 채널 구조체(CH)는 제2 기판(810)의 상면에 수직하는 방향으로 연장되어 워드라인들(830), 스트링 선택 라인들, 및 접지 선택 라인을 관통할 수 있다. 채널 구조체(CH)는 데이터 저장층, 채널층, 및 매립 절연층 등을 포함할 수 있으며, 채널층은 제1 메탈층(850c) 및 제2 메탈층(860c)과 전기적으로 연결될 수 있다. 예컨대, 제1 메탈층(850c)은 비트라인 컨택일 수 있고, 제2 메탈층(860c)은 비트라인일 수 있다. 일 실시예에서, 비트라인은 제2 기판(810)의 상면에 평행한 제1 방향(Y축 방향)을 따라 연장될 수 있다. In the bit line bonding area BLBA, the channel structure CH may extend in a direction perpendicular to the top surface of the
도 23에 도시한 일 실시예에서, 채널 구조체(CH)와 비트라인 등이 배치되는 영역이 비트라인 본딩 영역(BLBA)으로 정의될 수 있다. 비트라인은 비트라인 본딩 영역(BLBA)에서 주변 회로 영역(PERI)에서 페이지 버퍼(893)를 제공하는 회로 소자들(720c)과 전기적으로 연결될 수 있다. 일 예로서, 비트라인은 주변 회로 영역(PERI)에서 상부 본딩 메탈(871c, 872c)과 연결되며, 상부 본딩 메탈(871c, 872c)은 페이지 버퍼(893)의 회로 소자들(720c)에 연결되는 하부 본딩 메탈(771c, 772c)과 연결될 수 있다. 23 , an area in which the channel structure CH and the bit line are disposed may be defined as the bit line bonding area BLBA. The bit line may be electrically connected to the
워드라인 본딩 영역(WLBA)에서, 워드라인들(830)은 제2 기판(810)의 상면에 평행한 제2 방향(X축 방향)을 따라 연장될 수 있으며, 복수의 셀 컨택 플러그들(841-847; 840)와 연결될 수 있다. 워드라인들(830)과 셀 컨택 플러그들(840)은, 제2 방향(X축 방향)을 따라 워드라인들(830) 중 적어도 일부가 서로 다른 길이로 연장되어 제공하는 패드들에서 서로 연결될 수 있다. 워드라인들(830)에 연결되는 셀 컨택 플러그들(840)의 상부에는 제1 메탈층(850b)과 제2 메탈층(860b)이 차례로 연결될 수 있다. 셀 컨택 플러그들(840)은 워드라인 본딩 영역(WLBA)에서 셀 영역(CELL)의 상부 본딩 메탈(871b, 872b)과 주변 회로 영역(PERI)의 하부 본딩 메탈(771b, 772b)을 통해 주변 회로 영역(PERI)과 연결될 수 있다. In the word line bonding area WLBA, the word lines 830 may extend in a second direction (X-axis direction) parallel to the top surface of the
셀 컨택 플러그들(840)은 주변 회로 영역(PERI)에서 로우 디코더(894)를 제공하는 회로 소자들(720b)과 전기적으로 연결될 수 있다. 일 실시예에서, 로우 디코더(894)를 제공하는 회로 소자들(720b)의 동작 전압은, 페이지 버퍼(893)를 제공하는 회로 소자들(720c)의 동작 전압과 다를 수 있다. 일례로, 페이지 버퍼(893)를 제공하는 회로 소자들(720c)의 동작 전압이 로우 디코더(894)를 제공하는 회로 소자들(720b)의 동작 전압보다 클 수 있다.The cell contact plugs 840 may be electrically connected to
외부 패드 본딩 영역(PA)에는 공통 소스 라인 컨택 플러그(880)가 배치될 수 있다. 공통 소스 라인 컨택 플러그(880)는 금속, 금속 화합물, 또는 폴리실리콘 등의 도전성 물질로 형성되며, 공통 소스 라인(820)과 전기적으로 연결될 수 있다. 공통 소스 라인 컨택 플러그(880) 상부에는 제1 메탈층(850a)과 제2 메탈층(860a)이 차례로 적층될 수 있다. 일례로, 공통 소스 라인 컨택 플러그(880), 제1 메탈층(850a), 및 제2 메탈층(860a)이 배치되는 영역은 외부 패드 본딩 영역(PA)으로 정의될 수 있다.A common source
한편 외부 패드 본딩 영역(PA)에는 입출력 패드들(705, 805)이 배치될 수 있다. 도 23를 참조하면, 제1 기판(710)의 하부에는 제1 기판(710)의 하면을 덮는 하부 절연막(701) 이 형성될 수 있으며, 하부 절연막(701) 상에 제1 입출력 패드(705)가 형성될 수 있다. 제1 입출력 패드(705)는 제1 입출력 컨택 플러그(703)를 통해 주변 회로 영역(PERI)에 배치되는 복수의 회로 소자들(720a, 720b, 720c) 중 적어도 하나와 연결되며, 하부 절연막(701)에 의해 제1 기판(710)과 분리될 수 있다. 또한, 제1 입출력 컨택 플러그(703)와 제1 기판(710) 사이에는 측면 절연막이 배치되어 제1 입출력 컨택 플러그(703)와 제1 기판(710)을 전기적으로 분리할 수 있다.Meanwhile, input/
도 23를 참조하면, 제2 기판(810)의 상부에는 제2 기판(810)의 상면을 덮는 상부 절연막(801)이 형성될 수 있으며, 상부 절연막(801) 상에 제2 입출력 패드(805)가 배치될 수 있다. 제2 입출력 패드(805)는 제2 입출력 컨택 플러그(803)를 통해 주변 회로 영역(PERI)에 배치되는 복수의 회로 소자들(720a, 720b, 720c) 중 적어도 하나와 연결될 수 있다. Referring to FIG. 23 , an upper insulating
실시예들에 따라, 제2 입출력 컨택 플러그(803)가 배치되는 영역에는 제2 기판(810) 및 공통 소스 라인(820) 등이 배치되지 않을 수 있다. 또한, 제2 입출력 패드(805)는 제3 방향(Z축 방향)에서 워드라인들(830)과 오버랩되지 않을 수 있다. 도 23를 참조하면, 제2 입출력 컨택 플러그(803)는 제2 기판(810)의 상면에 평행한 방향에서 제2 기판(810)과 분리되며, 셀 영역(CELL)의 층간 절연층(815)을 관통하여 제2 입출력 패드(805)에 연결될 수 있다. In some embodiments, the
실시예들에 따라, 제1 입출력 패드(705)와 제2 입출력 패드(805)는 선택적으로 형성될 수 있다. 일례로, 메모리 장치(600)는 제1 기판(710)의 상부에 배치되는 제1 입출력 패드(705)만을 포함하거나, 또는 제2 기판(810)의 상부에 배치되는 제2 입출력 패드(805)만을 포함할 수 있다. 또는, 메모리 장치(600)가 제1 입출력 패드(705)와 제2 입출력 패드(805)를 모두 포함할 수도 있다.In some embodiments, the first input/
셀 영역(CELL)과 주변 회로 영역(PERI) 각각에 포함되는 외부 패드 본딩 영역(PA)과 비트라인 본딩 영역(BLBA) 각각에는 최상부 메탈층의 메탈 패턴이 더미 패턴(dummy pattern)으로 존재하거나, 최상부 메탈층이 비어있을 수 있다.In each of the external pad bonding area PA and the bit line bonding area BLBA included in each of the cell area CELL and the peripheral circuit area PERI, the metal pattern of the uppermost metal layer exists as a dummy pattern, or The uppermost metal layer may be empty.
메모리 장치(600)는 외부 패드 본딩 영역(PA)에서, 셀 영역(CELL)의 최상부 메탈층에 형성된 상부 메탈 패턴(872a)에 대응하여 주변 회로 영역(PERI)의 최상부 메탈층에 셀 영역(CELL)의 상부 메탈 패턴(872a)과 동일한 형태의 하부 메탈 패턴(773a)을 형성할 수 있다. 주변 회로 영역(PERI)의 최상부 메탈층에 형성된 하부 메탈 패턴(773a)은 주변 회로 영역(PERI)에서 별도의 콘택과 연결되지 않을 수 있다. 이와 유사하게, 외부 패드 본딩 영역(PA)에서 주변 회로 영역(PERI)의 최상부 메탈층에 형성된 하부 메탈 패턴에 대응하여 셀 영역(CELL)의 상부 메탈층에 주변 회로 영역(PERI)의 하부 메탈 패턴과 동일한 형태의 상부 메탈 패턴을 형성할 수도 있다. In the external pad bonding area PA, the
워드라인 본딩 영역(WLBA)의 제2 메탈층(740b) 상에는 하부 본딩 메탈(771b, 772b)이 형성될 수 있다. 워드라인 본딩 영역(WLBA)에서, 주변 회로 영역(PERI)의 하부 본딩 메탈(771b, 772b)은 셀 영역(CELL)의 상부 본딩 메탈(871b, 872b)과 본딩 방식에 의해 서로 전기적으로 연결될 수 있다.
또한, 비트라인 본딩 영역(BLBA)에서, 주변 회로 영역(PERI)의 최상부 메탈층에 형성된 하부 메탈 패턴(752)에 대응하여 셀 영역(CELL)의 최상부 메탈층에 주변 회로 영역(PERI)의 하부 메탈 패턴(752)과 동일한 형태의 상부 메탈 패턴(892)을 형성할 수 있다. 예시적인 실시예에서, 셀 영역(CELL)의 최상부 메탈층에 형성된 상부 메탈 패턴(892) 상에는 콘택을 형성하지 않을 수 있다. In addition, in the bit line bonding area BLBA, the lower part of the peripheral circuit area PERI is located on the uppermost metal layer of the cell area CELL corresponding to the
예시적 실시예에서, 셀 영역(CELL) 및 주변 회로 영역(PERI) 중 하나의 최상부 금속층에 형성된 금속 패턴에 대응하여, 셀 영역(CELL) 및 주변 회로 영역(PERI) 중 다른 하나의 최상층 금속층에 상기 형성된 금속 패턴과 동일한 단면 형상을 갖는 강화 금속 패턴이 형성될 수 있다. 강화 금속 패턴에는 콘택이 형성되지 않을 수 있다..In the exemplary embodiment, corresponding to the metal pattern formed on the uppermost metal layer of one of the cell region CELL and the peripheral circuit region PERI, the uppermost metal layer of the other one of the cell region CELL and the peripheral circuit region PERI A reinforced metal pattern having the same cross-sectional shape as the formed metal pattern may be formed. Contacts may not be formed in the reinforced metal pattern.
도 24는 본 개시의 예시적인 실시예에 따른 호스트 스토리지 시스템(도 1, 10)이 적용된 데이터 센터를 나타낸 도면이다.24 is a diagram illustrating a data center to which the host storage system ( FIGS. 1 and 10 ) according to an exemplary embodiment of the present disclosure is applied.
도 24를 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 애플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)을 포함할 수 있다. 애플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 애플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 서로 다를 수 있다.Referring to FIG. 24 , a
애플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 및/또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 애플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 애플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다. 스토리지 서버(3200)에 포함되는 스토리지 장치(3250)의 개수는 실시예에 따라 다양하게 선택될 수 있다. The
애플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200 내지 3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.The
일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.In one embodiment,
이하에서는, 애플리케이션 서버(3100) 및 스토리지 서버(3200)를 중심으로 설명하기로 한다. 애플리케이션 서버(3100)에 대한 설명은 다른 애플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.Hereinafter, the
애플리케이션 서버(3100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200 내지 3200m) 중 하나에 저장할 수 있다. 또한, 애플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200 내지 3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.The
애플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 애플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버들(3200-3200m)에 포함된 메모리들(3220-3220m) 또는 스토리지 장치(3250-3250m)에 액세스할 수 있다. 이로써, 애플리케이션 서버(3100)는 애플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 애플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200-3200m)의 스토리지 장치(3250-3250m)로부터 스토리지 서버들(3200-3200m)의 메모리들(3220-3220m)을 거쳐서, 또는 바로 애플리케이션 서버들(3100-3100n)의 메모리(3120-3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.The
스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251)의 물리적 연결 및 NIC(Network InterConnect)(3240)와 컨트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), 및/또는 CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.Taking the
스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)을 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)와 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다.The
일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP(Digital Signal Processor), 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.In one embodiment, the
스토리지 서버들(3200-3200m) 또는 애플리케이션 서버들(3100-3100n)에서 프로세서는 스토리지 장치(3150-3150n, 3250-3250m) 또는 메모리(3120-3120n, 3220-3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.In the storage servers 3200-3200m or the application servers 3100-3100n, the processor sends a command to the storage devices 3150-3150n and 3250-3250m or the memory 3120-3120n, 3220-3220m to program the data. or lead. In this case, the data may be error-corrected data through an ECC (Error Correction Code) engine. The data is data processed by Data Bus Inversion (DBI) or Data Masking (DM), and may include Cyclic Redundancy Code (CRC) information. The data may be encrypted data for security or privacy.
스토리지 장치(3150-3150n, 3250-3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252-3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252-3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)가 생성될 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.The storage devices 3150-3150n and 3250-3250m may transmit a control signal and a command/address signal to the NAND flash memory devices 3252-3252m in response to a read command received from the processor. Accordingly, when data is read from the NAND flash memory device 3252-3252m, a read enable (RE) signal may be input as a data output control signal to output data to the DQ bus. A data strobe (DQS) may be generated using the RE signal. The command and address signals may be latched in the page buffer according to a rising edge or a falling edge of a write enable (WE) signal.
컨트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(3251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 애플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다. 스토리지 장치(3250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.The
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.Exemplary embodiments have been disclosed in the drawings and specification as described above. Although the embodiments have been described using specific terms in the present specification, these are used only for the purpose of explaining the technical spirit of the present disclosure, and not used to limit the meaning or the scope of the present disclosure described in the claims. Therefore, it will be understood by those skilled in the art that various modifications and equivalent other embodiments are possible therefrom. Accordingly, the true technical protection scope of the present disclosure should be defined by the technical spirit of the appended claims.
Claims (20)
적어도 하나의 큐의 헤드 포인터 및 테일 포인터를 저장하도록 구성된 도어벨 레지스터;
상기 적어도 하나의 큐에 포함된 제1 커맨드 또는 제1 리스폰스를 저장하도록 구성된 엔트리 버퍼;
상기 적어도 하나의 큐의 순서를 중재하도록 구성된 중재기;
순서에 따라 상기 제1 커맨드가 상기 엔트리 버퍼에 저장될 수 있게 경로화하도록 구성된 제1 라우터; 및
상기 제1 리스폰스가 상기 도어벨 레지스터에 저장될 수 있게 경로화하도록 구성된 제2 라우터를 포함하는, 호스트 컨트롤러 인터페이스.A host controller interface configured to provide interfacing between a host device and a storage device, the host controller interface comprising:
a doorbell register configured to store a head pointer and a tail pointer of at least one cue;
an entry buffer configured to store a first command or a first response included in the at least one queue;
an arbiter configured to arbitrate the order of the at least one queue;
a first router configured to route the first command to be stored in the entry buffer in order; and
and a second router configured to route the first response to be stored in the doorbell register.
상기 적어도 하나의 큐는,
복수의 원형 큐인 것을 특징으로 하는 호스트 컨트롤러 인터페이스.According to claim 1,
the at least one queue,
A host controller interface characterized in that it is a plurality of circular queues.
상기 적어도 하나의 큐는,
서브미션 큐 및 컴플리션 큐를 포함하고,
상기 도어벨 레지스터는,
상기 서브미션 큐에 대한 제1 헤드 포인터 및 제1 테일 포인터, 및
상기 컴플리션 큐에 대한 제2 헤드 포인터 및 제2 테일 포인터를 저장하는 것을 특징으로 하는 호스트 컨트롤러 인터페이스.According to claim 1,
the at least one queue,
including a submission queue and a completion queue;
The doorbell register is
a first head pointer and a first tail pointer to the submission queue, and
and storing a second head pointer and a second tail pointer for the completion queue.
상기 제1 헤드 포인터는,
상기 제1 커맨드가 상기 엔트리 버퍼에 저장됨에 따라 갱신되는 것을 특징으로 하는 호스트 컨트롤러 인터페이스.4. The method of claim 3,
The first head pointer is
The host controller interface of claim 1, wherein the first command is updated as it is stored in the entry buffer.
상기 제2 테일 포인터는,
상기 제1 리스폰스가 상기 컴플리션 큐에 저장됨에 따라 갱신되는 것을 특징으로 하는 호스트 컨트롤러 인터페이스. 4. The method of claim 3,
The second tail pointer is
and the first response is updated as the first response is stored in the completion queue.
상기 엔트리 버퍼의 저장 가능 여부를 비트맵을 이용해 나타내도록 구성된 비트맵 도어벨 레지스터를 더 포함하는 호스트 컨트롤러 인터페이스. According to claim 1,
The host controller interface further comprising a bitmap doorbell register configured to indicate whether the entry buffer can be stored using a bitmap.
상기 비트맵 도어벨 레지스터는,
상기 엔트리 버퍼에 상기 제1 커맨드 또는 상기 제1 리스폰스가 저장됨에 기초하여, 상기 제1 커맨드 또는 상기 제1 리스폰스가 저장된 데이터 영역에 상응하는 비트 정보를 비트 0에서 비트 1로 변경하는 것을 특징으로 하는 호스트 컨트롤러 인터페이스. 7. The method of claim 6,
The bitmap doorbell register,
Based on the storage of the first command or the first response in the entry buffer, bit information corresponding to a data area in which the first command or the first response is stored is changed from bit 0 to bit 1. Host controller interface.
상기 호스트 장치는,
제1 서브미션 큐 및 제1 컴플리션 큐를 처리하는 제1 코어, 및
제2 서브미션 큐 및 제2 컴플리션 큐를 처리하는 제2 코어를 포함하고,
상기 중재기는,
상기 제1 서브미션 큐 및 상기 제2 서브미션 큐 중 우선 순위가 높은 큐를 먼저 처리하는 것을 특징으로 하는 호스트 컨트롤러 인터페이스.According to claim 1,
The host device,
a first core for processing the first submission queue and the first completion queue; and
a second core for processing a second submission queue and a second completion queue;
The mediator is
The host controller interface of claim 1, wherein a queue having a higher priority among the first submission queue and the second submission queue is processed first.
상기 우선 순위는,
상기 제1 서브미션 큐 또는 상기 제2 서브미션 큐 중, 우선 처리 플래그의 부착 여부, 먼저 입력되었는지 여부, 빈 공간이 부족한지 여부, 가중치가 높은지 여부, 또는 높은 우선 순위로 미리 결정되었는지 여부에 따라 결정되는 것을 특징으로 하는 호스트 컨트롤러 인터페이스.9. The method of claim 8,
The priority is
In the first submission queue or the second submission queue, according to whether a priority flag is attached, whether it is input first, whether there is insufficient empty space, whether the weight is high, or whether it is predetermined with high priority A host controller interface, characterized in that determined.
상기 스토리지 장치에 커맨드를 전송하는 상기 호스트 장치는,
적어도 하나의 큐를 저장하는 호스트 메모리; 및
상기 적어도 하나의 큐를 처리하도록 구성된 적어도 하나의 코어, 및 상기 호스트 메모리와의 인터페이싱을 제공하도록 구성된 호스트 컨트롤러 인터페이스를 포함하는 호스트 컨트롤러를 포함하고,
상기 스토리지 장치는,
상기 커맨드에 기초하여 메모리 동작을 수행한 결과인 리스폰스를 상기 호스트 장치에 제공하고,
상기 호스트 컨트롤러 인터페이스는,
상기 적어도 하나의 큐에 대한 헤드 포인터 및 테일 포인터를 저장하는 도어벨 레지스터를 포함하는 것을 특징으로 하는 스토리지 시스템.A storage system comprising a host device and a storage device, the storage system comprising:
The host device transmitting a command to the storage device,
a host memory for storing at least one queue; and
a host controller comprising at least one core configured to process the at least one queue, and a host controller interface configured to provide interfacing with the host memory;
The storage device is
providing a response that is a result of performing a memory operation based on the command to the host device;
The host controller interface comprises:
and a doorbell register configured to store a head pointer and a tail pointer for the at least one queue.
상기 적어도 하나의 큐는,
서브미션 큐 및 컴플리션 큐를 포함하고,
상기 도어벨 레지스터는,
상기 서브미션 큐에 대한 제1 헤드 포인터 및 제1 테일 포인터, 및
상기 컴플리션 큐에 대한 제2 헤드 포인터 및 제2 테일 포인터를 저장하는 것을 특징으로 하는 스토리지 시스템.11. The method of claim 10,
the at least one queue,
including a submission queue and a completion queue;
The doorbell register is
a first head pointer and a first tail pointer to the submission queue, and
and storing a second head pointer and a second tail pointer for the completion queue.
상기 제1 헤드 포인터는,
상기 커맨드가 상기 호스트 컨트롤러에 포함된 엔트리 버퍼에 저장됨에 따라 갱신되는 것을 특징으로 하는 스토리지 시스템.12. The method of claim 11,
The first head pointer is
The storage system is updated as the command is stored in an entry buffer included in the host controller.
상기 제2 테일 포인터는,
상기 리스폰스가 상기 컴플리션 큐에 저장됨에 따라 갱신되는 것을 특징으로 하는 스토리지 시스템.12. The method of claim 11,
The second tail pointer is
The storage system of claim 1, wherein the response is updated as the response is stored in the completion queue.
상기 호스트 컨트롤러 인터페이스는,
상기 커맨드 또는 상기 리스폰스를 저장하도록 구성된 엔트리 버퍼;
상기 적어도 하나의 큐의 순서를 중재하도록 구성된 중재기;
순서에 따라 상기 커맨드가 상기 엔트리 버퍼에 저장될 수 있게 경로화하도록 구성된 제1 라우터; 및
상기 리스폰스가 상기 도어벨 레지스터에 저장될 수 있게 경로화하도록 구성된 제2 라우터를 더 포함하는 것을 특징으로 하는 스토리지 시스템.11. The method of claim 10,
The host controller interface comprises:
an entry buffer configured to store the command or the response;
an arbiter configured to arbitrate the order of the at least one queue;
a first router configured to route the commands such that they can be stored in the entry buffer in an orderly manner; and
and a second router configured to route the response to be stored in the doorbell register.
상기 적어도 하나의 코어는,
제1 서브미션 큐 및 제1 컴플리션 큐를 처리하는 제1 코어, 및
제2 서브미션 큐 및 제2 컴플리션 큐를 처리하는 제2 코어를 포함하고,
상기 중재기는,
상기 제1 서브미션 큐 및 상기 제2 서브미션 큐 중 우선 순위가 높은 큐를 먼저 처리하는 것을 특징으로 하는 스토리지 시스템.15. The method of claim 14,
the at least one core,
a first core for processing the first submission queue and the first completion queue; and
a second core for processing a second submission queue and a second completion queue;
The mediator is
The storage system of claim 1 , wherein a queue having a higher priority among the first submission queue and the second submission queue is processed first.
제1 큐에 포함된 제1 커맨드를 포함하는 복수의 커맨드들의 순서를 중재하는 단계;
상기 제1 커맨드를 엔트리 버퍼에 저장하는 단계;
상기 제1 큐의 제1 헤드 포인터를 갱신하는 단계;
제2 커맨드를 상기 엔트리 버퍼에 저장하는 단계;
상기 제2 커맨드를 포함하는 제2 큐의 제2 헤드 포인터를 갱신하는 단계; 및
상기 제1 커맨드 및 상기 제2 커맨드를 순차적으로 상기 스토리지 장치에 제공하는 단계를 포함하는 호스트 컨트롤러 인터페이스의 동작 방법.A method of operating a host controller interface configured to provide interfacing between a host device and a storage device using at least one queue comprising at least one command, the method comprising:
arbitrating an order of a plurality of commands including a first command included in the first queue;
storing the first command in an entry buffer;
updating a first head pointer of the first queue;
storing a second command in the entry buffer;
updating a second head pointer of a second queue including the second command; and
and sequentially providing the first command and the second command to the storage device.
복수의 커맨드들의 순서를 중재하는 단계는,
상기 제1 큐 및 상기 제2 큐 중 우선 순위가 높은 큐를 먼저 처리하는 단계를 포함하는 것을 특징으로 하는 호스트 컨트롤러 인터페이스의 동작 방법.17. The method of claim 16,
Arbitrating the order of the plurality of commands comprises:
and processing a queue having a higher priority among the first queue and the second queue first.
우선 순위가 높은 큐를 먼저 처리하는 단계는,
상기 제1 큐 및 상기 제2 큐 중 우선 처리 플래그의 부착 여부를 판단하는 단계;
상기 제1 큐 및 상기 제2 큐 중 먼저 입력된 큐를 판단하는 단계; 및
상기 제1 큐 및 상기 제2 큐 중 빈 공간이 부족한 큐를 판단하는 단계를 포함하는 것을 특징으로 하는 호스트 컨트롤러 인터페이스의 동작 방법.18. The method of claim 17,
The step of processing the high-priority queue first is,
determining whether a priority flag is attached among the first queue and the second queue;
determining a first input queue among the first queue and the second queue; and
and determining a queue having insufficient empty space among the first queue and the second queue.
우선 순위가 높은 큐를 먼저 처리하는 단계는,
입력된 순서대로 순차적으로 균일한 시간동안 큐를 처리하는 단계를 포함하는 것을 특징으로 하는 호스트 컨트롤러 인터페이스의 동작 방법.18. The method of claim 17,
The step of processing the high-priority queue first is,
and processing the queues for a uniform time sequentially in an input order.
우선 순위가 높은 큐를 먼저 처리하는 단계는,
중요도에 따라 부여된 큐 당 가중치를 확인하는 단계; 및
상기 가중치가 큰 순서대로 큐를 처리하는 단계를 포함하는 것을 특징으로 하는 호스트 컨트롤러 인터페이스의 동작 방법.18. The method of claim 17,
The step of processing the high-priority queue first is,
checking a weight per queue given according to importance; and
and processing the queues in order of increasing the weight.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/321,916 US11561912B2 (en) | 2020-06-01 | 2021-05-17 | Host controller interface using multiple circular queue, and operating method thereof |
EP21175677.0A EP3920036A1 (en) | 2020-06-01 | 2021-05-25 | Host controller interface using multiple circular queue, and operating method thereof |
CN202110598848.9A CN113760789A (en) | 2020-06-01 | 2021-05-31 | Host controller interface using multi-cycle queues and method of operating the same |
US18/064,062 US11914531B2 (en) | 2020-06-01 | 2022-12-09 | Host controller interface using multiple circular queue, and operating method thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20200066076 | 2020-06-01 | ||
KR1020200066076 | 2020-06-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210148852A true KR20210148852A (en) | 2021-12-08 |
Family
ID=78867901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210008898A KR20210148852A (en) | 2020-06-01 | 2021-01-21 | Host controller interface using multiple circular queue, and operating method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20210148852A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230116341A (en) * | 2022-01-28 | 2023-08-04 | 삼성전자주식회사 | Storage device and operating method of storage device |
-
2021
- 2021-01-21 KR KR1020210008898A patent/KR20210148852A/en active Search and Examination
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230116341A (en) * | 2022-01-28 | 2023-08-04 | 삼성전자주식회사 | Storage device and operating method of storage device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3920036A1 (en) | Host controller interface using multiple circular queue, and operating method thereof | |
US10534560B2 (en) | Data storage device and data processing system having the same | |
CN108885584B (en) | Out-of-order read transfers using host memory buffers | |
KR102395190B1 (en) | Storage Device performing interface with host and Operating Method of Host and Storage Device | |
KR20190090635A (en) | Data storage device and operating method thereof | |
US11698855B2 (en) | Method, memory controller and storage device to perform garbage collection based on fragmentation ratio of blocks | |
US11593031B2 (en) | Operating method of host device and storage device using credit | |
US10466938B2 (en) | Non-volatile memory system using a plurality of mapping units and operating method thereof | |
US10416886B2 (en) | Data storage device that reassigns commands assigned to scale-out storage devices and data processing system having the same | |
KR20210148852A (en) | Host controller interface using multiple circular queue, and operating method thereof | |
US20230084601A1 (en) | Memory controller, memory system and operating method of the memory system | |
US20220197510A1 (en) | Storage device for executing processing code and operating method of the storage device | |
US11868270B2 (en) | Storage system and storage device, and operating method thereof | |
US20230153237A1 (en) | Method and device for storing data | |
KR102583244B1 (en) | Storage device and operating method of storage device | |
US20170031633A1 (en) | Method of operating object-oriented data storage device and method of operating system including the same | |
US20230146540A1 (en) | Storage device and an operating method of a storage controller thereof | |
US20220206716A1 (en) | Memory controller, a nonvolatile memory device and a storage device thereof | |
EP4198746A2 (en) | Multi-core processor and storage device | |
US20230195333A1 (en) | Storage device and operation method of electronic system | |
CN115862699A (en) | Storage controller and storage system including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |