KR20200034560A - Storage device and operating method of storage device - Google Patents
Storage device and operating method of storage device Download PDFInfo
- Publication number
- KR20200034560A KR20200034560A KR1020190038028A KR20190038028A KR20200034560A KR 20200034560 A KR20200034560 A KR 20200034560A KR 1020190038028 A KR1020190038028 A KR 1020190038028A KR 20190038028 A KR20190038028 A KR 20190038028A KR 20200034560 A KR20200034560 A KR 20200034560A
- Authority
- KR
- South Korea
- Prior art keywords
- area
- controller
- segments
- external host
- nonvolatile memory
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 3
- 229910052715 tantalum Inorganic materials 0.000 claims description 2
- GUVRBAGPIYLISA-UHFFFAOYSA-N tantalum atom Chemical compound [Ta] GUVRBAGPIYLISA-UHFFFAOYSA-N 0.000 claims description 2
- 238000011084 recovery Methods 0.000 claims 1
- 230000002085 persistent effect Effects 0.000 description 90
- 238000013507 mapping Methods 0.000 description 26
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 101150080085 SEG1 gene Proteins 0.000 description 5
- 101100421134 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sle1 gene Proteins 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100202858 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SEG2 gene Proteins 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 저장 영역의 일부의 블록 단위 액세스 및 메모리 맵 된(memory mapped) 액세스를 허용하는 스토리지 장치 및 스토리지 장치의 동작 방법에 관한 것이다.The present invention relates to a semiconductor device, and more particularly, to a storage device that allows block-by-block access and memory mapped access of a portion of a storage area and a method of operating the storage device.
운영 체제 또는 응용은 주 메모리 및 보조 스토리지를 이용한다. 주 메모리는 데이터를 임시로 저장하는 데에 사용되고, 보조 스토리지는 데이터를 장기간 불휘발성으로 저장하는 데에 사용될 수 있다. 운영 체제는 파일 시스템에 기반하여 보조 스토리지를 관리할 수 있다. 파일 시스템은 파일의 데이터가 저장된 주소, 파일의 용량 등과 같은 파일에 대한 다양한 정보를 포함할 수 있다.The operating system or application uses main memory and auxiliary storage. The primary memory is used to temporarily store data, and the secondary storage can be used to store the data nonvolatilely for a long time. The operating system can manage auxiliary storage based on the file system. The file system may include various information about the file, such as the address where the data of the file is stored and the capacity of the file.
운영 체제 또는 응용이 보조 스토리지에 저장된 데이터(이하에서, 사용자 데이터)를 수정 또는 갱신할 때, 파일 시스템의 갱신이 발생한다. 사용자 데이터를 수정 또는 갱신할 때마다 파일 시스템을 갱신하는 것은 보조 스토리지에 대한 액세스의 증가를 유발하며, 보조 스토리지의 레이턴시를 증가시킬 수 있다.When an operating system or application modifies or updates data (hereinafter, user data) stored in the auxiliary storage, an update of the file system occurs. Updating the file system whenever user data is modified or updated causes an increase in access to the auxiliary storage, and may increase latency of the auxiliary storage.
이러한 문제를 방지하기 위해, 운영 체제는 사용자 데이터 및 사용자 데이터와 연관된 파일 시스템의 갱신 데이터(이하에서, 메타 데이터)를 주 메모리에 저장할 수 있다. 운영 체제가 구동하는 사용자 데이터 및 파일 시스템과 보조 스토리지에 저장된 사용자 데이터 및 파일 시스템의 동기화가 필요할 때, 운영 체제는 커밋(commit)을 수행할 수 있다.To avoid this problem, the operating system may store user data and update data of the file system associated with the user data (hereinafter, meta data) in main memory. When synchronization of the user data and file system driven by the operating system and the user data and file system stored in the auxiliary storage is required, the operating system may perform a commit.
커밋은 운영 체제가 사용자 데이터를 보조 스토리지의 사용자 영역에 기입하고, 메타 데이터를 보조 스토리지의 저널 영역에 기입하는 것을 포함한다. 커밋이 수행되면, 갑작스러운 전원 오프(SPO)(Sudden Power Off)가 발생한 때에도, 운영 체제는 저널 영역을 참조하여 사용자 데이터 및 파일 시스템을 복구할 수 있다.Commitment includes the operating system writing user data to the user area of the auxiliary storage, and writing metadata to the journal area of the auxiliary storage. When a commit is performed, even when a sudden power off (SPO) occurs, the operating system may recover the user data and file system by referring to the journal area.
운영 체제는 전원 온 시에, 전원 오프 시에, 또는 별도의 시간에 저널 영역의 데이터 및 메타 데이터를 사용자 영역에 반영할 수 있다. 예를 들어, 운영 체제는 저널 영역의 사용자 데이터를 사용자 영역에 복사할 수 있다. 또한, 운영 체제는 저널 영역의 메타 데이터를 사용자 영역에 저장된 파일 시스템의 데이터에 반영할 수 있다.The operating system may reflect data and metadata of the journal area in the user area at power-on, power-off, or at a separate time. For example, the operating system may copy user data from the journal area to the user area. In addition, the operating system may reflect the metadata of the journal area to data of the file system stored in the user area.
상술된 바와 같이, 커밋은 사용자 데이터 및 메타 데이터를 보조 스토리지에 기입하는 동작들을 수반한다. 이러한 동작들은 커밋의 수행 시간을 증가시키고, 보조 스토리지의 레이턴시를 증가시킬 수 있다.As noted above, commits involve operations to write user data and metadata to auxiliary storage. These operations can increase the execution time of the commit and increase the latency of the auxiliary storage.
본 발명의 목적은 운영 체제의 커밋(commit)을 지원하여 커밋의 수행 시간을 줄이고 감소된 레이턴시를 갖는 스토리지 장치 및 스토리지 장치의 동작 방법을 제공하는 데에 있다.An object of the present invention is to provide a storage device having a reduced latency and a method of operating a storage device with reduced latency by supporting a commit of an operating system.
본 발명의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치, 제1 영역 및 제2 영역을 포함하는 랜덤 액세스 메모리, 그리고 랜덤 액세스 메모리의 제1 영역을 불휘발성 메모리 장치의 버퍼 메모리로 사용하고, 불휘발성 메모리 장치의 사용자 영역을 블록 단위의 제1 액세스 영역으로써 외부의 호스트 장치에 노출하고, 그리고 랜덤 액세스 메모리의 제2 영역을 블록 단위의 제2 액세스 영역 및 바이트 단위의 제3 액세스 영역 양자로서 외부의 호스트 장치에 노출하도록 구성되는 제어기를 포함한다.The storage device according to an embodiment of the present invention uses a nonvolatile memory device, a random access memory including the first area and the second area, and a first area of the random access memory as a buffer memory of the nonvolatile memory device, The user area of the volatile memory device is exposed to the external host device as the first access area in the block unit, and the second area of the random access memory is external as both the second access area in the block unit and the third access area in the byte unit. It includes a controller configured to be exposed to the host device.
본 발명의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치, 제1 영역 및 제2 영역을 포함하는 동적 랜덤 액세스 메모리, 그리고 제1 영역을 불휘발성 메모리 장치의 버퍼 메모리로 사용하고, 불휘발성 메모리 장치의 사용자 영역을 블록 단위의 제1 액세스 영역으로써 외부의 호스트 장치에 노출하도록 구성되는 제어기를 포함한다. 제2 영역은 세그먼트들을 포함하고, 제어기는 세그먼트들 중 제1 세그먼트를 선택하고, 그리고 제1 세그먼트를 제외한 나머지 세그먼트들에서 적어도 두 개의 제2 세그먼트들을 선택하고, 선택된 세그먼트들에 대해 불휘발성(non-volatility)을 제공하도록 구성되고, 적어도 두 개의 제2 세그먼트들은 나머지 세그먼트들에서 링 버퍼(ring buffer) 방식으로 동적으로 변경된다.A storage device according to an embodiment of the present invention uses a nonvolatile memory device, a dynamic random access memory including a first area and a second area, and a first area as a buffer memory of a nonvolatile memory device, and a nonvolatile memory device It includes a controller configured to expose the user area of the block as a first access area in a block unit to an external host device. The second area includes segments, the controller selects a first one of the segments, and selects at least two second segments from segments other than the first segment, and is non-volatile to the selected segments. -volatility), and at least two second segments are dynamically changed in a ring buffer manner in the remaining segments.
불휘발성 메모리 장치 및 동적 랜덤 액세스 메모리를 포함하는 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법은, 불휘발성 메모리 장치의 저장 공간의 일부를 사용자 영역으로써 외부의 호스트 장치에 제공하는 단계, 그리고 동적 랜덤 액세스 메모리의 저장 공간의 일부를 바이트 단위의 쓰기 및 블록 단위의 읽기가 허용되는 저널 영역으로써 외부의 호스트 장치에 제공하는 단계를 포함한다. 저널 영역의 저장 공간은 세그먼트들을 포함한다. 저널 영역으로써 상기 외부의 호스트 장치에 제공하는 단계는, 세그먼트들 중 고정된 제1 세그먼트 및 동적으로 변경되는 적어도 두 개의 제2 세그먼트들에 불휘발성(non-volatility)을 제공하는 단계를 포함한다.An operation method of a storage device according to an embodiment of the present invention including a nonvolatile memory device and a dynamic random access memory includes providing a portion of the storage space of the nonvolatile memory device to an external host device as a user area, and dynamic And providing a portion of the storage space of the random access memory to an external host device as a journal area in which writing in bytes and reading in blocks are allowed. The storage space of the journal area includes segments. Providing the external host device as a journal area includes providing non-volatility to a fixed first segment and at least two second segments that are dynamically changed.
본 발명의 실시 예들에 따르면, 스토리지 장치는 블록 단위의 액세스 및 메모리 맵 된 액세스를 허용하는 저장 영역을 제공한다. 해당 저장 영역은 운영 체제의 커밋(commit)을 지원하도록 구성될 수 있다. 따라서, 커밋의 수행 시간 및 레이턴시가 감소된 스토리지 장치 및 스토리지 장치의 동작 방법이 제공된다.According to embodiments of the present invention, a storage device provides a storage area that allows block-by-block access and memory mapped access. The storage area can be configured to support the commit of the operating system. Accordingly, a storage device having reduced execution time and latency of a commit and a method of operating the storage device are provided.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 보여준다.
도 2는 초기화 동작 시에 스토리지 장치가 장치 정보를 외부의 호스트 장치에 제공하는 방법의 예를 보여준다.
도 3은 스토리지 장치의 실제 저장 영역들의 용량들 및 외부의 호스트 장치에 보여지는 영역들의 용량들을 보여준다.
도 4는 스토리지 장치에서 논리 블록 주소 기반의 통상 액세스 요청이 처리되는 예를 보여준다.
도 5는 스토리지 장치에서 메모리 맵 된 입력 및 출력에 기반한 쓰기 요청이 처리되는 예를 보여준다.
도 6은 갑작스러운 전원 오프가 발생한 때에 스토리지 장치가 지속 메모리 영역의 데이터를 백업하는 예를 보여준다.
도 7은 외부의 호스트 장치로부터의 전원 공급이 재개된 때에, 스토리지 장치가 데이터를 지속 메모리 영역에 로드하여 복원하는 예를 보여준다.
도 8은 제어기가 지속 메모리 영역을 관리하는 예를 보여준다.
도 9는 스토리지 장치가 플러시 요청을 처리하는 예를 보여준다.
도 10은 플러시 요청에 의해 지속 메모리 영역이 관리되는 예를 보여준다.
도 11은 제어기가 논리 블록 주소 기반의 읽기 요청을 처리하는 예를 보여준다.
도 12는 컴퓨팅 시스템의 예를 보여준다.
도 13은 프로세서에서 구동되는 제1 응용이 제1 사용자 데이터를 갱신하는 예를 보여준다.
도 14는 제1 사용자 데이터, 제1 메타 데이터, 그리고 제1 비트맵의 예들을 보여준다.
도 15는 도 13에 후속하여 제2 응용이 제2 사용자 데이터를 수정하는 예를 보여준다.
도 16은 도 15에 후속하여 제1 응용 및 제3 응용이 각각 제3 사용자 데이터 및 제4 사용자 데이터를 수정하는 예를 보여준다.
도 17은 도 16에 후속하여 컴퓨팅 시스템에서 커밋이 수행되는 예를 보여준다.
도 18은 도 17에 후속하여 제1 내지 제3 응용들이 제5 내지 제7 사용자 데이터(D5~D7)를 수정하는 예를 보여준다.1 shows a storage device according to an embodiment of the present invention.
2 shows an example of a method in which a storage device provides device information to an external host device during an initialization operation.
3 shows the capacity of actual storage areas of the storage device and the areas shown to the external host device.
4 shows an example in which a normal access request based on a logical block address is processed in a storage device.
5 shows an example in which a write request based on a memory mapped input and output is processed in a storage device.
6 shows an example in which the storage device backs up data in the persistent memory area when a sudden power off occurs.
7 shows an example in which the storage device loads data into the persistent memory area and restores it when power supply from an external host device is resumed.
8 shows an example in which the controller manages the persistent memory area.
9 shows an example in which the storage device processes a flush request.
10 shows an example in which the persistent memory area is managed by the flush request.
11 shows an example in which a controller processes a read request based on a logical block address.
12 shows an example of a computing system.
13 shows an example in which the first application running on the processor updates the first user data.
14 shows examples of the first user data, the first meta data, and the first bitmap.
FIG. 15 shows an example in which the second application modifies the second user data subsequent to FIG. 13.
16 shows an example in which the first application and the third application modify the third user data and the fourth user data, respectively, following FIG. 15.
FIG. 17 shows an example in which commit is performed in the computing system subsequent to FIG. 16.
18 shows an example in which the first to third applications modify the fifth to seventh user data D5 to D7 subsequent to FIG. 17.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present invention will be described clearly and in detail so that a person having ordinary knowledge in the technical field of the present invention can easily implement the present invention.
도 1은 본 발명의 실시 예에 따른 스토리지 장치(100)를 보여준다. 도 1을 참조하면, 스토리지 장치(100)는 제1 및 제2 불휘발성 메모리 장치들(111, 112), 동적 랜덤 액세스 메모리(120), 그리고 제어기(130)를 포함한다. 스토리지 장치(100)는 솔리드 스테이트 드라이브(SSD)를 포함할 수 있다.1 shows a
제1 및 제2 불휘발성 메모리 장치들(111, 112)은 제어기(130)의 제어에 따라 쓰기 동작, 읽기 동작 및 소거 동작을 수행할 수 있다. 제1 및 제2 불휘발성 메모리 장치들(111, 112)은 서로 다른 채널들을 통해 제어기(130)와 통신하고, 서로 독립적으로 동작할 수 있다.The first and second
제1 및 제2 불휘발성 메모리 장치들(111, 112)의 저장 공간의 일부는 제어기(130)에 의해 외부의 호스트 장치에 노출될 수 있다. 제1 및 제2 불휘발성 메모리 장치들(111, 112)은 플래시 메모리 장치, 상 변화 메모리 장치, 자기 메모리 장치, 저항성 메모리 장치, 강유전체 메모리 장치 등과 같은 다양한 불휘발성 메모리 장치들을 포함할 수 있다.A portion of the storage space of the first and second
동적 랜덤 액세스 메모리(120)는 제어기(130)의 제어에 따라 쓰기 동작 및 읽기 동작을 수행할 수 있다. 동적 랜덤 액세스 메모리(120)의 저장 공간은 제어기(130)에 의해 장치 메모리 영역(121) 및 지속 메모리 영역(122)으로 분할될 수 있다.The dynamic
지속 메모리 영역(122)은 제어기(130)에 의해 외부의 호스트 장치에 노출될 수 있다. 예를 들어, 지속 메모리 영역(122)은 메모리 맵 된 영역으로서 외부의 호스트 장치에 노출될 수 있다. 또한, 지속 메모리 영역(122)은 블록 기반 액세스가 허용되는 영역으로서도 외부의 호스트 장치에 노출될 수 있다.The
장치 메모리 영역(121)은 외부의 호스트 장치에 노출되지 않고, 제어기(130)에 의해 액세스될 수 있다. 장치 메모리 영역(121)은 스토리지 장치(100)를 관리하는 데에 필요한 관리 데이터(또는 메타 데이터) 및 코드를 저장하는 데에 사용될 수 있다. 장치 메모리 영역(121)은 버퍼 메모리 또는 캐시 메모리로 사용될 수 있다.The
동적 랜덤 액세스 메모리(120)의 저장 영역들은 장치 메모리 영역(121) 및 지속 메모리 영역(122)의 구체적인 명칭들로 기재된다. 그러나 장치 메모리 영역(121) 및 지속 메모리 영역(122)의 명칭들은 구분을 위한 것으로, 장치 메모리 영역(121) 및 지속 메모리 영역(122)의 기능들 및 특성들은 그 명칭들에 의해 한정되지 않는다. The storage areas of the dynamic
제어기(130)는 제1 및 제2 불휘발성 메모리 장치들(111, 112)을 제어하고, 동적 랜덤 액세스 메모리(120)를 제어할 수 있다. 제어기(130)는 외부의 호스트 장치와 통신할 수 있다. 제어기(130)는 인터페이스 블록(131), 장치 정보 블록(132), 제1 제어 블록(133), 제2 제어 블록(134), 버퍼 블록(135), 메모리 제어 블록(136), 제1 관리 블록(137), 제2 관리 블록(138), 그리고 보조 전원 블록(139)을 포함할 수 있다.The
인터페이스 블록(131), 제1 제어 블록(133), 제2 제어 블록(134), 버퍼 블록(135), 메모리 제어 블록(136), 제1 관리 블록(137), 그리고 제2 관리 블록(138)은 내부 버스를 통해 서로 통신할 수 있다. 인터페이스 블록(131)은 외부의 호스트 장치와 통신할 수 있다.
스토리지 장치(100)에 전원이 공급될 때, 인터페이스 블록(131)은 장치 정보 블록(132)으로부터 스토리지 장치(100)의 장치 정보를 수신할 수 있다. 인터페이스 블록(131)은 스토리지 장치(100)의 장치 정보를 외부의 호스트 장치에 제공할 수 있다. 예를 들어, 스토리지 장치(100)의 장치 정보는 제1 및 제2 불휘발성 메모리 장치들(111, 112) 중에서 외부의 호스트 장치에 노출되는 부분의 정보, 그리고 지속 메모리 영역(122)의 정보를 포함할 수 있다. 스토리지 장치(100)의 장치 정보를 제공하는 것은 초기화 동작의 일부로서 수행될 수 있다.When power is supplied to the
초기화 동작이 완료된 후에 통상 동작들이 수행될 수 있다. 예를 들어, 인터페이스 블록(131)은 외부의 호스트 장치로부터 요청을 수신하고, 수신된 요청을 분석(parsing)할 수 있다. 인터페이스 블록(131)은 외부의 호스트 장치에 블록 기반 요청 및 메모리 맵 된(memory mapped) 요청을 허용할 수 있다. 블록 기반 요청은 논리 블록 주소(LBA)(Logical Block Address)을 포함할 수 있다. 블록 기반 요청은 데이터가 기입될 위치 또는 데이터를 읽을 위치를 논리 블록 주소(LBA)를 이용하여 가리킬 수 있다.After the initialization operation is completed, normal operations may be performed. For example, the
메모리 맵 된 요청은 바이트 단위의 가상 주소(VA)(Virtual Address)를 포함할 수 있다. 메모리 맵 된 요청은 데이터가 기입될 위치 또는 데이터를 읽을 위치를 가상 주소(VA)를 이용하여 가리킬 수 있다. 인터페이스 블록(131)은 블록 기반 요청을 제1 제어 블록(133)에 전달하고, 메모리 맵 된 요청을 제2 제어 블록(134)에 전달할 수 있다.The memory mapped request may include a virtual address (VA) in bytes. The memory-mapped request may indicate where the data is to be written or where to read the data using a virtual address (VA). The
인터페이스 블록(131)은 PCIe(Peripheral Component Interconnect express) 또는 NVMe(Non-Volatile Memory express)에 기반할 수 있다. 인터페이스 블록(131)은 PCIe 또는 NVMe의 메모리 맵 된 입력 및 출력(memory mapped I/O)에서 메모리 맵 된 요청을 수신할 수 있다. 인터페이스 블록(131)은 PCIe 또는 NVMe의 블록 입력 및 출력(Block I/O) 모드에서 블록 기반 요청을 수신할 수 있다.The
인터페이스 블록(131)은 외부의 호스트 장치로부터 수신되는 데이터를 메모리 제어 블록(136)을 통해 장치 메모리 영역(121)에 전송할 수 있다. 인터페이스 블록(131)은 장치 메모리 영역(121)으로부터 전달되는 데이터를 외부의 호스트 장치로 출력할 수 있다.The
장치 정보 블록(132)은 초기화 동작 시에 스토리지 장치(100)의 장치 정보를 인터페이스 블록(131)에 제공하도록 구성된다. 장치 정보 블록(132)은 EEPROM, 플래시 메모리, 상 변화 메모리, 자기 메모리, 강유전체 메모리, 저항성 메모리와 같은 다양한 불휘발성 소자들을 포함할 수 있다.The device information block 132 is configured to provide device information of the
제1 제어 블록(133)은 인터페이스 블록(131)으로부터 블록 기반 요청을 수신할 수 있다. 제1 제어 블록(133)은 블록 기반 요청이 제1 타입인지 또는 제2 타입인지 판단할 수 있다. 예를 들어, 블록 기반 요청에 포함된 논리 블록 주소(LBA)가 제1 및 제2 불휘발성 메모리 장치들(111, 112) 중 적어도 하나를 가리킬 때, 블록 기반 요청은 제1 타입일 수 있다.The
블록 기반 요청에 포함된 논리 블록 주소(LBA)가 지속 메모리 영역(122)을 가리킬 때, 블록 기반 요청은 제2 타입일 수 있다. 블록 기반 요청이 제1 타입일 때, 제1 제어 블록(133)은 제1 매핑 테이블을 참조할 수 있다. 블록 기반 요청이 제2 타입일 때, 제1 제어 블록(133)은 제2 매핑 테이블을 참조할 수 있다.When the logical block address (LBA) included in the block-based request points to the
제1 매핑 테이블은 제1 및 제2 불휘발성 메모리 장치들(111, 112)의 물리 블록 주소들(PBA) 및 논리 블록 주소들(LBA) 사이의 매핑 정보를 포함할 수 있다. 제2 매핑 테이블은 지속 메모리 영역(122)의 물리 주소들(PA) 및 논리 블록 주소들(LBA) 사이의 매핑 정보를 포함할 수 있다.The first mapping table may include mapping information between physical block addresses PBA and logical block addresses LBA of the first and second
제1 매핑 테이블 및 제2 매핑 테이블은 동적 랜덤 액세스 메모리(120)의 장치 메모리 영역(121)에 저장될 수 있다. 제1 제어 블록(133)은 제1 매핑 테이블을 참조하여 제1 타입의 블록 기반 요청의 논리 블록 주소(LBA)를 물리 블록 주소(PBA)로 변환할 수 있다. 제1 제어 블록(133)은 변환된 물리 블록 주소(PBA)를 쓰기 명령 또는 읽기 명령과 함께 제1 관리 블록(137) 또는 제2 관리 블록(138)으로 전달할 수 있다.The first mapping table and the second mapping table may be stored in the
제1 제어 블록(133)은 제2 매핑 테이블을 참조하여 제2 타입의 블록 기반 요청의 논리 블록 주소(LBA)를 지속 메모리 영역(122)의 물리 주소(PA)로 변환할 수 있다. 제1 제어 블록(133)은 변환된 물리 주소(PA)에 기반하여 메모리 제어 블록(136)을 통해 지속 메모리 영역(122)을 액세스할 수 있다.The
또한, 제1 제어 블록(133)은 외부의 호스트 장치로부터 인터페이스 블록(131)을 통해 전달되는 데이터가 장치 메모리 영역(121)에 기입되도록, 그리고 장치 메모리 영역(121)에 저장된 데이터가 인터페이스 블록(131)을 통해 외부의 호스트 장치로 출력되도록 직접 메모리 제어(DMA)(Direct Memory Control)를 수행할 수 있다.In addition, the
갑작스러운 전원 오프(SPO)(Sudden Power Off)가 발생할 때에, 스토리지 장치(100)는 보조 전원 블록(139)으로부터 보조 전원을 수신할 수 있다. 보조 전원이 공급되는 동안, 제1 제어 블록(133)은 지속 메모리 영역(122)의 적어도 일부 영역의 데이터를 제1 및 제2 불휘발성 메모리 장치들(111, 112) 중 적어도 하나에 백업할 수 있다.When a sudden power off (SPO) occurs, the
제1 제어 블록(133)은 또한 장치 메모리 영역(121)에 저장된 데이터 중에서 백업이 필요한 데이터(예를 들어, 매핑 테이블과 같은 메타 데이터)를 제1 및 제2 불휘발성 메모리 장치들(111, 112) 중 적어도 하나에 더 백업할 수 있다.The
전원이 다시 공급될 때, 제1 제어 블록(133)은 백업된 데이터를 지속 메모리 영역(122)에 로드할 수 있다. 또한, 제1 제어 블록(133)은 백업된 데이터 중 장치 메모리 영역(121)에 대응하는 데이터를 장치 메모리 영역(121)에 로드할 수 있다. 보조 전원 블록(139)에 기반한 백업 및 로드를 수행함으로써, 제1 제어 블록(133)은 지속 메모리 영역(122)에 불휘발성(non-volatility)을 제공할 수 있다.When power is supplied again, the
제2 제어 블록(134)은 인터페이스 블록(131)으로부터 메모리 맵 된 요청을 수신할 수 있다. 제2 제어 블록(134)은 제3 매핑 테이블을 참조할 수 있다. 제3 매핑 테이블은 메모리 맵 된 요청의 가상 주소들(VA) 및 지속 메모리 영역(122)의 물리 주소들(PA) 사이의 매핑 정보를 포함할 수 있다. 제3 매핑 테이블은 동적 랜덤 액세스 메모리(120)의 장치 메모리 영역(121) 또는 지속 메모리 영역(122)에 저장될 수 있다.The
제2 제어 블록(134)은 제3 매핑 테이블을 참조하여 메모리 맵 된 요청의 가상 주소(VA)를 물리 주소(PA)로 변환할 수 있다. 제2 제어 블록(134)은 변환된 물리 주소(PA)에 기반하여 메모리 제어 블록(136)을 통해 지속 메모리 영역(122)을 액세스할 수 있다.The
버퍼 블록(135)은 제1 제어 블록(133) 또는 제2 제어 블록(134)에 의해 실행되는 코드들, 명령들을 저장하는 데에 사용될 수 있다. 또한, 버퍼 블록(135)은 제1 제어 블록(133) 또는 제2 제어 블록(134)에 의해 사용되는 메타 데이터와 같은 중요 데이터를 저장하는 데에 사용될 수 있다.The
메모리 제어 블록(136)은 동적 랜덤 액세스 메모리(120)를 제어하도록 구성될 수 있다. 메모리 제어 블록(136)은 동적 랜덤 액세스 메모리(120)의 명령 체계 및 주소 체계에 따라 동적 랜덤 액세스 메모리(120)에 명령 및 주소를 전송할 수 있다. 메모리 제어 블록(136)은 동적 랜덤 액세스 메모리(120)의 데이터 통신 체계에 따라 동적 랜덤 액세스 메모리(120)와 데이터를 교환할 수 있다.The
제1 관리 블록(137)은 제1 불휘발성 메모리 장치(111)를 제어하도록 구성된다. 제2 관리 블록(138)은 제2 불휘발성 메모리 장치(112)를 제어하도록 구성된다. 제1 관리 블록(137) 및 제2 관리 블록(138)은 제1 및 제2 불휘발성 메모리 장치들(111, 112)의 명령 체계 및 주소 체계에 따라 제1 및 제2 불휘발성 메모리 장치들(111, 112)에 명령 및 주소를 전송할 수 있다. 제1 관리 블록(137) 및 제2 관리 블록(138)은 제1 및 제2 불휘발성 메모리 장치들(111, 112)의 데이터 통신 체계에 따라 제1 및 제2 불휘발성 메모리 장치들(111, 112)과 데이터를 교환할 수 있다.The
보조 전원 블록(139)은 갑작스러운 전원 오프(SPO)가 발생한 때에 스토리지 장치(100)에 보조 전원을 공급하도록 구성된다. 보조 전원 블록(139)은 외부의 호스트 장치로부터 정상적으로 전원이 공급될 때에 충전될 수 있다. 보조 전원 블록(139)은 탄탈캡(tantal cap) 또는 슈퍼 캡(super cap)을 포함할 수 있다. 보조 전원 블록(139)은 제어기(130)의 내부에 위치한 것으로 도시되어 있으나, 보조 전원 블록(139)은 제어기(130)의 외부에 위치할 수 있다.The
도 2는 초기화 동작 시에 스토리지 장치(100)가 장치 정보를 외부의 호스트 장치에 제공하는 방법의 예를 보여준다. 도 1 및 도 2를 참조하면, S110 단계에서, 제어기(130)는 제1 및 제2 불휘발성 메모리 장치들(111, 112)의 사용자 영역의 용량을 논리 블록 주소(LBA) 영역으로서 외부의 호스트 장치에 노출할 수 있다.2 shows an example of a method in which the
논리 블록 주소(LBA) 영역은 외부의 호스트 장치가 논리 블록 주소(LBA)에 기반하여 액세스할 수 있는 영역을 가리킨다. 외부의 호스트 장치는 S110 단계에서 노출된 용량에 대해 논리 블록 주소들(LBA)을 할당할 수 있다. 외부의 호스트 장치는 논리 블록 주소(LBA)를 이용하여 S110 단계에서 노출된 용량을 식별할 수 있다.The logical block address (LBA) area refers to an area accessible by an external host device based on the logical block address (LBA). The external host device may allocate logical block addresses (LBA) to the capacity exposed in step S110. The external host device may identify the exposed capacity in step S110 using a logical block address (LBA).
S120 단계에서, 제어기(130)는 지속 메모리 영역(122)의 적어도 일부의 용량을 바이트로 주소 부여가 가능한(byte addressable) 영역으로서 외부의 호스트 장치에 노출할 수 있다. 바이트로 주소 부여가 가능한 영역은 외부의 호스트 장치에 의해 메모리 맵(memory map)에 편입될 수 있는 영역일 수 있다. 외부의 호스트 장치는 S120 단계에서 노출된 용량에 가상 주소들(VA)을 할당할 수 있다. 외부의 호스트 장치는 가상 주소(VA)를 이용하여 S120 단계에서 노출된 용량을 식별할 수 있다.In step S120, the
S130 단계에서, 제어기(130)는 지속 메모리 영역(122)의 적어도 일부의 용량을 논리 블록 주소(LBA) 영역으로서 외부의 호스트 장치에 노출할 수 있다. 외부의 호스트 장치는 S130 단계에서 노출된 용량에 대해 논리 블록 주소들(LBA)을 할당할 수 있다. 외부의 호스트 장치는 논리 블록 주소(LBA)를 이용하여 S130 단계에서 노출된 용량을 식별할 수 있다.In step S130, the
예시적으로, S120 단계 및 S130 단계에서 노출된 지속 메모리 영역(122)의 용량은 용도 제한된(ring-fenced) 영역일 수 있다. 예를 들어, 지속 메모리 영역(122)은 외부의 호스트 장치의 운영 체제에 의해 저널 영역(journal region)으로 사용되도록 구성될 수 있다.For example, the capacity of the
제어기(130)는 지속 메모리 영역(122)에 대한 블록 기반 읽기를 외부의 호스트 장치에 지원하고, 그리고 메모리 맵 된 쓰기를 외부의 호스트 장치에 지원할 수 있다. 제어기(130)는 지속 메모리 영역(122)에 대한 블록 기반 쓰기를 외부의 호스트 장치에 금지하고, 그리고 메모리 맵 된 읽기를 외부의 호스트 장치에 금지할 수 있다.The
제어기(130)는 동적 랜덤 액세스 메모리(120)의 장치 메모리 영역(121) 및 지속 메모리 영역(122)에 대해 물리 주소(PA)에 기반한 액세스를 수행할 수 있다. 즉, 블록 기반 읽기 및 메모리 맵 된 쓰기를 외부의 호스트 장치에 허용하는 것과 무관하게, 제어기(130)는 장치 메모리 영역(121) 및 지속 메모리 영역(122)을 자유롭게 액세스할 수 있다.The
도 3은 스토리지 장치(100)의 실제 저장 영역들의 용량들 및 외부의 호스트 장치에 보여지는(visible) 영역들의 용량들을 보여준다. 도 1 및 도 3을 참조하면, 제어기(130)는 불휘발성 메모리 장치들(111, 112)이 용량(20) 중에서 초과 제공 영역의 용량(22)을 제외한 사용자 영역의 용량(21)을 외부의 호스트 장치에 노출할 수 있다.3 shows capacities of actual storage areas of the
초과 제공 영역의 용량(22)은 제어기(130)가 읽기 리클레임(read reclaim), 마모도 관리(wear leveling), 가비지 컬렉션(garbage collection)과 같은 다양한 배경 동작들을 수행하기 위해 사용될 수 있다. 또한, 초과 제공 영역의 용량(22)은 사용자 영역의 용량(21)에 기입된 데이터의 갱신 데이터를 기입하는 데에 사용될 수 있다. 즉, 초과 제공 영역의 용량(22)은 쓰기-전-소거(erase-before-write) 특정으로 인해 스토리지 장치(100)의 레이턴시가 증가하고 수명이 감소하는 것을 방지하기 위해 사용될 수 있다.The
외부의 호스트 장치는 사용자 영역의 용량(21)을 논리 블록 주소(LBA)가 할당되는 영역(31)의 일부로 식별할 수 있다. 외부의 호스트 장치는 사용자 영역의 용량(21)에 논리 블록 주소들(LBA)을 할당하고, 논리 블록 주소들(LBA)을 이용하여 사용자 영역의 용량(21)을 액세스할 수 있다.The external host device may identify the capacity 21 of the user area as part of the
제어기(130)는 지속 메모리 영역(122)의 용량(10)을 외부의 호스트 장치에 노출할 수 있다. 예를 들어, 제어기(130)는 지속 메모리 영역(122)의 용량(10)을 블록 기반 액세스 및 메모리 맵 된 액세스가 가능한 용량으로 외부의 호스트 장치에 노출할 수 있다.The
외부의 호스트 장치는 블록 기반 액세스가 허용된 지속 메모리 영역(122)의 용량(10)을 논리 블록 주소(LBA)가 할당되는 영역(31)의 일부인 제1 지속 메모리 영역(PMR)의 용량(11)으로 식별할 수 있다. 외부의 호스트 장치는 제1 지속 메모리 영역(PMR)의 용량(11)에 논리 블록 주소들(LBA)을 할당하고, 논리 블록 주소들(LBA)을 이용하여 제1 지속 메모리 영역(PMR)의 용량(11)을 액세스할 수 있다.The external host device may have the
외부의 호스트 장치는 메모리 맵 된 액세스가 허용된 지속 메모리 영역(122)의 용량(10)을 메모리 맵 된 영역(32)인 제2 지속 메모리 영역(PMR)의 용량으로 식별할 수 있다. 외부의 호스트 장치는 제2 지속 메모리 영역(PMR)의 용량(12)에 가상 주소들(VA)을 할당하고, 가상 주소들(VA)을 이용하여 제2 지속 메모리 영역(PMR)의 용량(12)을 액세스할 수 있다.The external host device may identify the
요약하면, 외부의 호스트 장치는 스토리지 장치(100)의 저장 용량들을 논리 블록 주소(LBA)가 할당되는 영역(31) 및 메모리 맵 된 영역(32)으로 식별할 수 있다. 외부의 호스트 장치가 논리 블록 주소(LBA)가 할당되는 영역(31) 중 사용자 영역의 용량(21)을 액세스할 때, 스토리지 장치는 외부의 호스트 장치의 요청에 따라 제1 및 제2 불휘발성 메모리 장치들을 액세스할 수 있다.In summary, the external host device may identify storage capacities of the
외부의 호스트 장치가 논리 블록 주소(LBA)가 할당되는 영역(31) 중 제1 지속 메모리 영역(PMR)의 용량(11)을 액세스(예를 들어, 읽기)할 때, 스토리지 장치는 외부의 호스트 장치의 요청에 따라 지속 메모리 영역(122)을 액세스(예를 들어, 읽기)할 수 있다.When an external host device accesses (eg, reads) the
외부의 호스트 장치가 논리 블록 주소(LBA)가 할당되는 영역(31) 중 제2 지속 메모리 영역(PMR)의 용량(12)을 액세스(예를 들어, 쓰기)할 때, 스토리지 장치는 외부의 호스트 장치의 요청에 따라 지속 메모리 영역(122)을 액세스(예를 들어, 쓰기)할 수 있다.When an external host device accesses (eg, writes) the
제2 지속 메모리 영역(PMR)의 용량(12)은 사용자 데이터 및 파일 시스템의 수정 데이터(예를 들어, 메타 데이터)가 커밋(commit)되는 저널 영역으로 사용될 수 있다. 제1 지속 메모리 영역(PMR)의 용량(11)은 파일 시스템을 복구할 때 또는 저널 영역의 정보를 파일 시스템에 반영할 때 사용자 데이터 및 메타 데이터를 읽는 저널 영역으로 사용될 수 있다.The
도 4는 스토리지 장치(100)에서 논리 블록 주소(LBA) 기반의 통상 액세스 요청이 처리되는 예를 보여준다. 예를 들어, 통상 액세스 요청은 제1 및 제2 불휘발성 메모리 장치들(111, 112)의 논리 블록 주소(LBA)를 포함하는 제1 타입의 액세스 요청일 수 있다.4 shows an example in which a normal access request based on a logical block address (LBA) is processed in the
인터페이스 블록(131)은 액세스 요청을 제1 제어 블록(133)에 전달할 수 있다. 제1 제어 블록(133)은 액세스 요청에 수반하는 동작들을 제어하며, 제1 매핑 테이블을 참조하여 논리 블록 주소(LBA)를 물리 블록 주소(PBA)로 변환할 수 있다. 제1 제어 블록(133)은 액세스 요청을 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로 전달할 수 있다.The
액세스 요청은 장치 메모리 영역(121)을 관여하여(involving) 처리될 수 있다. 예를 들어, 액세스 요청이 쓰기 요청일 때, 외부의 호스트 장치로부터 수신되는 사용자 데이터는 장치 메모리 영역(121)에 버퍼링 된 후에 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 기입될 수 있다. 액세스 요청이 읽기 요청일 때, 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 읽혀진 사용자 데이터는 장치 메모리 영역(121)에 버퍼링 된 후에 외부의 호스트 장치로 출력될 수 있다.The access request may be processed by involving the
도 5는 스토리지 장치(100)에서 메모리 맵 된 입력 및 출력(MMIO)(Memory Mapped Input and Output)에 기반한 쓰기 요청이 처리되는 예를 보여준다. 예를 들어, MMIO에 기반한 액세스 요청은 저널 영역에 대한 쓰기일 수 있다. 도 5를 참조하면, 인터페이스 블록(131)은 MMIO 기반 쓰기 요청을 제2 제어 블록(134)으로 전달할 수 있다.5 shows an example in which a write request based on a memory mapped input and output (MMIO) is processed in the
제2 제어 블록(134)은 MMIO 기반 쓰기 요청에 수반하는 동작들을 제어하며, 제3 매핑 테이블을 참조하여 가상 주소(VA)를 물리 주소(PA)로 변환할 수 있다. 제2 제어 블록(134)은 물리 주소(PA)를 이용하여 메모리 제어 블록(136)을 통해 지속 메모리 영역(122)에 데이터, 예를 들어 메타 데이터를 기입할 수 있다.The
도 6은 갑작스러운 전원 오프(SPO)가 발생한 때에 스토리지 장치(100)가 지속 메모리 영역(122)의 데이터를 백업하는 예를 보여준다. 도 3 및 도 6을 참조하면, 외부의 호스트 장치로부터 공급되는 전원이 차단된 때에, 보조 전원 블록(139)은 스토리지 장치(100)에 보조 전원을 공급할 수 있다.6 illustrates an example in which the
보조 전원이 공급되는 동안, 제1 제어 블록(133)은 지속 메모리 영역(122)에 저장된 데이터를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 백업할 수 있다. 다른 예로서, 제1 제어 블록(133)은 지속 메모리 영역(122) 내의 특정 범위의 주소들을 저장할 수 있다. 보조 전원이 공급되는 동안, 제1 제어 블록(133)은 특정 범위에 저장된 데이터를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 백업할 수 있다.While the auxiliary power is supplied, the
예를 들어, 제1 제어 블록(133)은 지속 메모리 영역(122)에서 데이터가 저장되어 있던 주소들 및 지속 메모리 영역(122)과 연관된 제2 매핑 테이블 또는 제3 매핑 테이블을 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 함께 백업할 수 있다. 제1 제어 블록(133)은 장치 메모리 영역(121)에 저장된 데이터 중 백업이 필요한 데이터(예를 들어, 장치 메모리 영역(121)에 저장된 매핑 테이블과 같은 메타 데이터)를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 함께 백업할 수 있다.For example, the
예를 들어, 지속 메모리 영역(122)으로부터 읽혀진 데이터는 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)의 사용자 영역의 용량(21)의 빈 저장 용량에 기입될 수 있다. 다른 예로서, 지속 메모리 영역(122)으로부터 읽혀진 데이터를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)의 초과 제공 영역의 용량(22)의 빈 저장 용량 기입될 수 있다.For example, data read from the
예를 들어, 지속 메모리 영역(122)으로부터 읽혀진 데이터는 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)의 고정된 저장 공간에 기입될 수 있다. 다른 예로서, 지속 메모리 영역(122)으로부터 읽혀진 데이터가 기입되는 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)의 저장 공간은 달라질 수 있다.For example, data read from the
도 7은 외부의 호스트 장치로부터의 전원 공급이 재개된 때에, 스토리지 장치(100)가 데이터를 지속 메모리 영역(122)에 로드하여 복원하는 예를 보여준다. 도 7을 참조하면, 외부의 호스트 장치로부터 전원이 공급될 때, 제1 제어 블록(133)은 복원이 필요한 데이터가 존재하는지 판단할 수 있다.7 shows an example in which the
예를 들어, 제1 제어 블록(133)은 지속 메모리 영역(122)의 데이터를 백업할 때에 추가되는 플래그 또는 정보를 확인함으로써, 복원이 필요한 데이터가 존재하는지 판단할 수 있다. 다른 예로서, 제1 제어 블록(133)은 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에서 백업을 위해 저장된 저장 용량에 유효한 데이터가 존재하는지 검사함으로써, 복원이 필요한 데이터가 존재하는지 판단할 수 있다.For example, the
복원이 필요한 데이터가 존재하면, 제1 제어 블록(133)은 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 복원이 필요한 데이터를 읽을 수 있다. 제1 제어 블록(133)은 읽혀진 데이터를 지속 메모리 영역(122)에 로드함으로써, 복원을 수행할 수 있다.When data that needs to be restored exists, the
제1 제어 블록(133)은 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 백업된 주소들을 읽고, 읽혀진 주소들에 기반하여 데이터를 지속 메모리 영역(122)에 로드할 수 있다. 또한, 제1 제어 블록(133)은 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 백업된 제2 매핑 테이블 또는 제3 매핑 테이블을 읽고, 읽혀진 제2 매핑 테이블 또는 제3 매핑 테이블을 장치 메모리 영역(121) 또는 지속 메모리 영역(122)에 로드함으로써 복원을 완료할 수 있다.The
예를 들어, 제1 제어 블록(133)은 장치 메모리 영역(121)으로부터 백업된 데이터를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 읽고, 읽혀진 데이터를 장치 메모리 영역(121)에 로드함으로써 복원을 완료할 수 있다.For example, the
도 8은 제어기(130)가 지속 메모리 영역(122)을 관리하는 예를 보여준다. 도 1 및 도 8을 참조하면, 제어기(130)는 지속 메모리 영역(122)을 세그먼트들(SEG1~SEG8)로 분할할 수 있다. 제어기(130)는 제1 내지 제8 세그먼트들(SEG1~SEG8) 중에서 고정된 위치의 세그먼트, 예를 들어 제1 세그먼트(SEG1)를 제1 영역으로 관리할 수 있다.8 shows an example in which the
제어기(130)는 나머지 제2 내지 제8 세그먼트들(SEG2~SEG8)을 제2 영역으로 관리할 수 있다. 갑작스러운 전원 오프(SPO)가 발생한 때에, 제어기(130)는 제1 영역(123)의 제1 세그먼트(SEG1)에 저장된 데이터를 백업하도록 구성될 수 있다. 예를 들어, 제1 세그먼트(SEG1)는 지속 메모리 영역(122)에서 가장 낮은 물리 주소 또는 가장 높은 물리 주소를 가질 수 있다.The
또한, 제어기(130)는 제2 영역(124)의 제2 내지 제8 세그먼트들(SEG2~SEG8) 중에서 선택된 영역(125)의 제3 내지 제5 세그먼트들(SEG3~SEG5)에 저장된 데이터를 더 백업하도록 구성될 수 있다.In addition, the
예를 들어, 제어기(130)는 선택된 영역(125)의 제3 내지 제5 세그먼트들(SEG3~SEG5)의 주소들을 저장할 수 있다. 갑작스러운 전원 오프(SPO)가 발생한 때에, 제어기(130)는 저장된 주소에 기반하여 선택된 영역(125)의 제3 내지 제5 세그먼트들(SEG3~SEG5)의 데이터를 백업할 수 있다.For example, the
예를 들어, 제1 영역(123)의 제1 세그먼트는 저널 영역의 슈퍼 블록(super block)을 저장하도록 구성될 수 있다. 슈퍼 블록은 저널 영역에 데이터가 저장된 위치, 길이 등에 대한 정보를 포함할 수 있다. 슈퍼 블록이 저장되는 위치는 고정되므로, 제어기(130)는 슈퍼 블록이 저장되는 고정된 제1 영역(123)의 데이터를 백업할 수 있다.For example, the first segment of the
제2 영역(124)은 저널 영역의 사용자 데이터 및 메타 데이터를 저장하도록 구성될 수 있다. 제어기(130)는 제2 영역(124)에서 선택된 영역(125)에 대해서만 불휘발성(non-volatility)을 보장할 수 있다. 외부의 호스트 장치가 제2 영역(124)에 기입하는 데이터의 사이즈가 선택된 영역(125)의 용량보다 크면, 데이터의 일부에 대해 불휘발성이 보장되지 않을 수 있다.The
이와 같은 문제를 방지하기 위하여, 본 발명의 실시 예에 따른 스토리지 장치(100)는 플러시 요청을 지원할 수 있다. 외부의 호스트 장치로부터 플러시 요청이 수신되면, 제어기(130)는 외부의 호스트 장치로부터 제2 영역(124)에 기입되는 데이터의 불휘발성을 보장하기 위한 동작을 수행할 수 있다.In order to prevent such a problem, the
도 9는 스토리지 장치(100)가 플러시 요청을 처리하는 예를 보여준다. 도 10은 플러시 요청에 의해 지속 메모리 영역(122)이 관리되는 예를 보여준다. 도 9 및 도 10을 참조하면, 외부의 호스트 장치로부터 플러시 요청이 수신될 수 있다. 플러시 요청에 응답하여, 제1 제어 블록(133)은 지속 메모리 영역(122)으로부터 데이터를 읽을 수 있다.9 shows an example in which the
예를 들어, 선택된 영역(125)의 선두의 제3 세그먼트(SEG3)는 헤드 포인터(head pointer)가 가리키고, 선택된 영역(125)의 말단의 제5 세그먼트(SEG5)는 테일 포인터(tail pointer)가 가리킬 수 있다. 제1 제어 블록(133)은 헤드 포인터가 가리키는 세그먼트, 예를 들어 제3 세그먼트(SEG3)의 데이터를 읽을 수 있다.For example, the third segment (SEG3) at the head of the selected
저널 영역에 기입되는 사용자 데이터는 데이터 및 논리 블록 주소(LBA)를 포함할 수 있다. 제1 제어 블록(133)은 논리 블록 주소(LBA)를 물리 블록 주소(PBA)로 변환할 수 있다. 제1 제어 블록(133)은 물리 블록 주소(PBA)에 기반하여 사용자 데이터를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 기입할 수 있다.User data written in the journal area may include data and logical block addresses (LBAs). The
즉, 플러시 요청에 응답하여, 선택된 영역(125)의 헤드 포인터가 가리키는 제3 세그먼트(SEG3)가 플러시 영역(126)으로 선택되고, 플러시 영역(126)의 데이터는 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로 플러시될 수 있다. 따라서, 제3 세그먼트(SEG3)의 데이터에 대한 불휘발성이 보장된다.That is, in response to the flush request, the third segment (SEG3) indicated by the head pointer of the selected
플러시가 수행된 후에, 제어기(130)는 플러시 영역(126)의 제3 세그먼트(SEG3)를 선택된 영역(125)으로부터 제거할 수 있다. 따라서, 헤드 포인터는 제4 세그먼트(SEG4)를 가리키도록 갱신될 수 있다. 제어기(130)는 선택된 영역(125)의 테일 포인터에 후속하는 제6 세그먼트(SEG6)를 선택된 영역(125)에 포함시킬 수 있다. 따라서, 테일 포인터는 제6 세그먼트(SEG6)를 포함하도록 갱신될 수 있다.After the flush is performed, the
이와 같이, 제어기(130)는 선택된 영역(125)을 제2 영역(124) 내에서 링 버퍼(ring buffer)와 같은 방식으로 할당할 수 있다. 예를 들어, 제어기(130)는 선택된 영역(125)의 적어도 두 개의 세그먼트들 중 가장 낮은 주소를 갖는 세그먼트(또는 헤드 포인터가 가리키는 세그먼트)에 저장된 데이터를 불휘발성 메모리 장치(111 또는 112)에 기입하고, 이후에 가장 낮은 주소를 갖는 세그먼트를 선택 해제할 수 있다.As such, the
제어기(130)는 선택된 영역(125)의 적어도 두 개의 제2 세그먼트들의 주소들 중 가장 높은 주소와 연속하며 가장 높은 주소보다 높은 주소에 대응하는 세그먼트(예를 들어, 테일 포인터가 가리키는 세그먼트)를 선택된 영역(125)으로서 더 선택할 수 있다. 즉, 선택된 영역(125)의 용량이 부족하면, 제어기(130)는 선택된 영역(125)의 선두의 데이터를 플러시하고, 선택된 영역(125)을 이동시킬 수 있다. 따라서, 외부의 호스트 장치에 의해 기입되는 데이터의 불휘발성이 보장된다.The
예를 들어, 플러시 요청에 따른 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로의 쓰기 동작은 높은 우선 순위를 가질 수 있다. 플러시 요청의 쓰기 동작은 다른 쓰기 동작 또는 읽기 동작보다 우선하여 수행될 수 있다. 플러시 요청의 쓰기 동작을 우선 수행함으로써, 제어기(130)는 외부의 호스트 장치의 저널 영역 쓰기의 레이턴시를 줄일 수 있다.For example, a write operation to the first
도 11은 제어기(130)가 논리 블록 주소(LBA) 기반의 읽기 요청을 처리하는 예를 보여준다. 도 3 및 도 11을 참조하면, 논리 블록 주소(LBA)는 논리 블록 주소(LBA)가 할당되는 제1 지속 메모리 영역(PMR)의 용량(11)을 가리킬 수 있다.11 shows an example in which the
제1 제어 블록(133)은 제2 매핑 테이블을 참조하여 논리 블록 주소(LBA)를 물리 주소(PA)로 변환할 수 있다. 제1 제어 블록(133)은 물리 주소(PA)를 이용하여 지속 메모리 영역(122)으로부터 데이터를 읽을 수 있다.The
도 12는 컴퓨팅 시스템(200)의 예를 보여준다. 도 3 및 도 12를 참조하면, 컴퓨팅 시스템(200)은 프로세서(210), 주 메모리(220), 루트 컴플렉스(230), 그리고 스토리지 장치(240)를 포함한다. 프로세서(210)는 운영 체제 및 응용들을 구동할 수 있다. 프로세서(210)는 중앙 처리부(CPU) 또는 응용 프로세서를 포함할 수 있다.12 shows an example of a
주 메모리(220)는 프로세서(210)에 의해 사용되는 시스템 메모리일 수 있다. 주 메모리(220)는 동적 랜덤 액세스 메모리를 포함할 수 있다. 프로세서(210)는 스토리지 장치(240)에 저장된 사용자 데이터 및 파일 시스템과 같은 메타 데이터를 주 메모리(220)에 로드하여 사용할 수 있다.The
루트 컴플렉스(230)는 프로세서(210)가 주변 장치들을 제어하기 위한 수단들을 제공할 수 있다. 스토리지 장치(240)는 루트 컴플렉스(230)에 연결될 수 있다. 스토리지 장치(240)는 도 1 내지 도 11을 참조하여 설명된 스토리지 장치(100)를 포함할 수 있다. 프로세서(210)의 관점에서, 스토리지 장치(240)는 논리 블록 주소(LBA)가 할당되는 사용자 영역(241), 논리 블록 주소(LBA)가 할당되는 제1 지속 메모리 영역(242), 그리고 메모리 맵 된 제2 지속 메모리 영역(243)을 포함하는 것으로 보여질 수 있다.The
도 13은 프로세서(210)에서 구동되는 제1 응용이 제1 사용자 데이터(D1)를 갱신하는 예를 보여준다. 도 12 및 도 13을 참조하면, 프로세서(210)에서 구동되는 제1 응용, 제2 응용 및 제3 응용은 각각 제1 쓰레드(T1), 제2 쓰레드(T2), 그리고 제3 쓰레드(T3)를 실행할 수 있다.13 shows an example in which the first application running on the
제1 응용의 제1 쓰레드(T1)는 스토리지 장치(240)에 저장된 제1 사용자 데이터(D1)를 수정할 수 있다. 이때, 도 5를 참조하여 설명된 바와 같이, 제1 응용은 수정된 제1 사용자 데이터(D1)를 주 메모리(220)에 저장하는 대신, 스토리지 장치(240)의 제1 지속 메모리 영역(242), 즉 저널 영역에 직접 기입할 수 있다.The first thread T1 of the first application may modify the first user data D1 stored in the
예를 들어, 제1 응용은 제1 사용자 데이터를 직접 기입하거나 또는 커널에서 구동되는 저널 드라이버(Journal Driver)가 제1 사용자 데이터(D1)를 기입하도록 호출할 수 있다. 제1 지속 메모리 영역(242)은 메모리 맵 된 영역이다. 따라서, 프로세서(210)에서 구동되는 제1 응용 또는 저널 드라이버가 제1 사용자 데이터(D1)를 제1 지속 메모리 영역(242)에 바이트 단위로 직접 기입할 수 있다.For example, the first application may directly write the first user data or call a journal driver driven in the kernel to write the first user data D1. The first
예를 들어, 제1 사용자 데이터(D1)는 제1 트랜잭션(TX1)의 일부로서 저널 영역인 제1 지속 메모리 영역(242)에 기입될 수 있다. 제1 사용자 데이터(D1)가 수정됨에 따라, 제1 사용자 데이터(D1)와 연관된 파일 시스템이 수정될 수 있다. 저널 드라이버는 파일 시스템의 수정 데이터를 제1 메타 데이터(M1)로서 주 메모리(220)에 저장할 수 있다.For example, the first user data D1 may be written in the first
저널 드라이버는 파일 시스템의 수정들에 대한 정보를 포함하는 제1 비트맵(B1)을 주 메모리(220)에 저장하고 관리할 수 있다. 파일 시스템의 수정을 나타내는 제1 메타 데이터(M1)가 주 메모리(220)에 저장됨에 따라, 저널 드라이버는 제1 메타 데이터(M1)의 위치를 가리키는 정보를 제1 비트맵(B1)에 기록할 수 있다.The journal driver may store and manage the first bitmap B1 including information on modifications of the file system in the
도 14는 제1 사용자 데이터(D1), 제1 메타 데이터(M1), 그리고 제1 비트맵(B1)의 예들을 보여준다. 도 12 및 도 14를 참조하면, 컴퓨팅 시스템(200)이 관리하는 데이터의 단위는 블록(예를 들어, 논리 블록)일 수 있다. 컴퓨팅 시스템(200)은 블록의 단위로 스토리지 장치(240)의 사용자 영역(241)에 대한 쓰기 및 읽기를 수행할 수 있다.14 shows examples of the first user data D1, the first meta data M1, and the first bitmap B1. 12 and 14, a unit of data managed by the
예를 들어, 제1 사용자 데이터(D1)는 네 개의 블록들에 대응할 수 있다. 프로세서(210)의 제1 응용이 제1 사용자 데이터(D1)를 액세스 하고자 할 때, 제1 사용자 데이터(D1)의 네 개의 블록들은 스토리지 장치(240)의 사용자 영역(241)으로부터 주 메모리(220)로 로드될 수 있다.For example, the first user data D1 may correspond to four blocks. When the first application of the
프로세서(210)의 제1 응용은 주 메모리(220)에 로드된 제1 사용자 데이터(D1)를 바이트 단위로 액세스할 수 있다. 예를 들어, 프로세서(210)의 제1 응용은 제1 사용자 데이터(D1)를 바이트 단위로 수정할 수 있다. 프로세서(210)의 제1 응용에 의해 수정된 부분은 제1 사용자 데이터(D1)에서 사선으로 채워진 영역들일 수 있다.The first application of the
프로세서(210)의 제1 응용이 제1 사용자 데이터(D1)를 수정함에 따라, 제1 사용자 데이터(D1)는 저널 영역인 제1 지속 메모리 영역(242)에 기입될 수 있다. 제1 사용자 데이터(D1)가 수정됨에 따라, 제1 사용자 데이터(D1)에 대응하는 파일 시스템(FS) 또한 수정될 수 있다.As the first application of the
예를 들어, 파일 시스템(FS) 또한 블록 단위로 관리될 수 있다. 파일 시스템(FS)의 데이터는 블록 단위로 관리되지만, 블록 내에서 제1 사용자 데이터(D1)에 해당하는 부분은 미소할 수 있다. 파일 시스템(FS)의 블록에서, 수정된 부분들은 사선으로 채워진 영역들로 표시될 수 있다. 파일 시스템(FS)의 블록에서, 수정된 부분들은 네 개의 서브 블록들에 대응할 수 있다.For example, the file system FS may also be managed in block units. Data of the file system FS is managed in units of blocks, but a portion corresponding to the first user data D1 in the block may be minute. In the block of the file system FS, the modified parts may be indicated by diagonally filled areas. In the block of the file system FS, modified parts may correspond to four sub-blocks.
프로세서(210)의 저널 드라이버는 파일 시스템(FS)의 블록 전체를 커밋(commit)을 위해 대기시키는 대신, 파일 시스템(FS)의 블록에서 수정된 네 개의 서브 블록들만을 제1 메타 데이터(M1)로서 커밋을 위해 대기시킬 수 있다. 파일 시스템(FS)의 블록에서 제1 메타 데이터(M1)의 위치들을 가리키는 정보는 제1 비트맵(B1)에 기록될 수 있다.Journal driver of the
예를 들어, 제1 비트맵(B1)은 파일 시스템(FS)의 블록에 속한 수정 단위(예를 들어 바이트 또는 바이트들)의 개수에 해당하는 비트들을 포함할 수 있다. 각 비트는 대응하는 위치의 수정 단위가 수정되었는지 또는 수정되지 않았는지를 가리키는 값으로 설정될 수 있다. 비트들의 값들에 따라, 제1 비트맵(B1)은 파일 시스템(FS)의 블록에서 수정된 부분의 위치들을 나타낼 수 있다.For example, the first bitmap B1 may include bits corresponding to the number of correction units (eg, bytes or bytes) belonging to a block of the file system FS. Each bit may be set to a value indicating whether the correction unit of the corresponding position has been modified or not. Depending on the values of the bits, the first bitmap B1 may indicate locations of the modified portion in the block of the file system FS.
즉, 저널 드라이버는 파일 시스템(FS)의 블록 전체를 커밋을 위해 대기시키는 대신, 파일 시스템(FS)의 블록에서 수정된 부분에 대응하는 제1 메타 데이터(M1) 및 제1 메타 데이터(M1)의 위치들을 가리키는 제1 비트맵(B1)만을 커밋을 위해 대기시킬 수 있다. 따라서, 커밋을 수행할 때에 저널 영역인 제1 지속 메모리 영역(242)에 기입해야 하는 데이터의 양이 감소하고, 커밋의 시간이 감소된다.That is, instead of waiting for the entire block of the file system FS to commit, the journal driver first metadata M1 and first metadata M1 corresponding to the modified portion of the block of the file system FS. Only the first bitmap (B1) indicating the positions of can be queued for commit. Accordingly, the amount of data to be written to the first
또한, 제1 사용자 데이터(D1)에서 수정이 발생한 때에, 제1 사용자 데이터(D1)는 커밋을 위해 대기되는 대신 저널 영역인 제1 지속 메모리 영역(242)에 즉시 기입된다. 따라서, 커밋을 수행할 때에 제1 사용자 데이터(D1)를 기입할 필요가 없어지므로 커밋의 데이터의 양이 감소하고, 커밋의 시간이 감소된다.Further, when a modification occurs in the first user data D1, the first user data D1 is immediately written into the first
도 15는 도 13에 후속하여 제2 응용이 제2 사용자 데이터(D2)를 수정하는 예를 보여준다. 도 12, 도 13 및 도 15를 참조하면, 제2 응용은 제2 사용자 데이터(D2)를 수정할 수 있다. 도 5를 참조하여 설명된 바와 같이, 제2 응용은 수정된 제2 사용자 데이터(D2)를 저널 영역인 제1 지속 메모리 영역(242)에 제1 트랜잭션(TX1)의 일부로서 즉시 기입할 수 있다.15 shows an example in which the second application modifies the second user data D2 subsequent to FIG. 13. 12, 13 and 15, the second application may modify the second user data D2. As described with reference to FIG. 5, the second application can immediately write the modified second user data D2 as part of the first transaction TX1 in the first
제2 사용자 데이터(D2)가 수정됨에 따라, 도 14를 참조하여 설명된 바와 같이, 프로세서(210)의 저널 드라이버는 제2 사용자 데이터(D2)에 대응하는 파일 시스템의 수정 데이터를 제2 메타 데이터(M2)로서 주 메모리(220)에 저장할 수 있다. 또한, 프로세서(210)의 저널 드라이버는 제2 메타 데이터(M2)의 위치들을 제1 비트맵(B1)에 기록할 수 있다.As the second user data D2 is modified, as described with reference to FIG. 14, the journal driver of the
도 16은 도 15에 후속하여 제1 응용 및 제3 응용이 각각 제3 사용자 데이터(D3) 및 제4 사용자 데이터(D4)를 수정하는 예를 보여준다. 도 12, 도 15 및 도 16을 참조하면, 제1 응용은 제3 사용자 데이터(D3)를 수정할 수 있다. 도 5를 참조하여 설명된 바와 같이, 제1 응용은 수정된 제3 사용자 데이터(D3)를 저널 영역인 제1 지속 메모리 영역(242)에 제1 트랜잭션(TX1)의 일부로서 즉시 기입할 수 있다.16 shows an example in which the first application and the third application modify the third user data D3 and the fourth user data D4, respectively, following FIG. 15. 12, 15, and 16, the first application may modify the third user data D3. As described with reference to FIG. 5, the first application can immediately write the modified third user data D3 as part of the first transaction TX1 in the first
제3 사용자 데이터(D3)가 수정됨에 따라, 도 14를 참조하여 설명된 바와 같이, 프로세서(210)의 저널 드라이버는 제3 사용자 데이터(D3)에 대응하는 파일 시스템의 수정 데이터를 제3 메타 데이터(M3)로서 주 메모리(220)에 저장할 수 있다. 또한, 프로세서(210)의 저널 드라이버는 제3 메타 데이터(M3)의 위치들을 제1 비트맵(B1)에 기록할 수 있다.As the third user data D3 is modified, as described with reference to FIG. 14, the journal driver of the
제3 응용은 제4 사용자 데이터(D4)를 수정할 수 있다. 도 5를 참조하여 설명된 바와 같이, 제3 응용은 수정된 제4 사용자 데이터(D4)를 저널 영역인 제1 지속 메모리 영역(242)에 제1 트랜잭션(TX1)의 일부로서 즉시 기입할 수 있다. 제4 사용자 데이터(D4)가 수정됨에 따라, 도 14를 참조하여 설명된 바와 같이, 프로세서(210)의 저널 드라이버는 제4 사용자 데이터(D4)에 대응하는 파일 시스템의 수정 데이터를 제4 메타 데이터(M4)로서 주 메모리(220)에 저장할 수 있다. 또한, 프로세서(210)의 저널 드라이버는 제4 메타 데이터(M4)의 위치들을 제1 비트맵(B1)에 기록할 수 있다.The third application can modify the fourth user data D4. As described with reference to FIG. 5, the third application may immediately write the modified fourth user data D4 as part of the first transaction TX1 in the first
도 17은 도 16에 후속하여 컴퓨팅 시스템(200)에서 커밋이 수행되는 예를 보여준다. 도 12, 도 16 및 도 17을 참조하면, 제1 트랜잭션(TX1)의 데이터의 양이 저널 드라이버에 의해 지정된 문턱에 도달함에 따라, 또는 제1 내지 제3 응용들 중 어느 하나가 동기화를 요청함에 따라, 커밋이 수행될 수 있다. 커밋이 수행되는 동안, 제1 내지 제3 응용들의 사용자 데이터의 수정은 차단될 수 있다.17 shows an example in which the commit is performed in the
도 5를 참조하여 설명된 바와 같이, 프로세서(210)의 저널 드라이버는 주 메모리(220)에 저장된 제1 내지 제4 메타 데이터(M1~M4)를 제1 트랜잭션(TX1)의 일부로서 저널 영역인 제1 지속 메모리 영역(242)에 기입할 수 있다. 또한, 프로세서(210)의 저널 드라이버는 주 메모리(220)에 저장된 제1 비트맵(B1)을 제2 비트맵(B2)으로 제1 트랜잭션(TX1)의 일부로서 저널 영역인 제1 지속 메모리 영역(242)에 기입할 수 있다.As described with reference to FIG. 5, the journal driver of the
프로세서(210)의 저널 드라이버는 커밋이 완료되었음을 알리는 커밋 마크(CM)를 제1 트랜잭션(TX1)의 일부로서 저널 영역인 제1 지속 메모리 영역(242)에 기입할 수 있다. 커밋 마크(CM)가 추가됨에 따라, 제1 트랜잭션(TX1)은 완료될 수 있다. 예시적으로, 커밋이 완료됨에 따라, 제1 비트맵(B1)은 초기화될 수 있다.The journal driver of the
이와 같이, 커밋은 제1 내지 제4 메타 데이터(M1~M4)를 기입하고, 그리고 커밋 마크(CM)를 추가하는 것으로 완료된다. 따라서, 커밋 시에 기입해야 하는 데이터의 양이 감소되고, 커밋의 시간이 감소된다. 따라서, 스토리지 장치(240) 및 컴퓨팅 시스템(200)의 동작 속도가 향상된다.Thus, the commit is completed by writing the first to fourth meta data M1 to M4, and adding the commit mark CM. Therefore, the amount of data to be written at the time of commit is reduced, and the time of commit is reduced. Accordingly, the operation speed of the
도 18은 도 17에 후속하여 제1 내지 제3 응용들이 제5 내지 제7 사용자 데이터(D5~D7)를 수정하는 예를 보여준다. 도 12, 도 17 및 도 18을 참조하면, 도 5를 참조하여 설명된 바와 같이, 제5 내지 제7 사용자 데이터(D5~D7)는 제2 트랜잭션(TX2)의 일부로서 저널 영역인 제1 지속 메모리 영역(242)에 기입될 수 있다. 제5 내지 제7 사용자 데이터(D5~D7)에 각각 대응하는 제5 내지 제7 메타 데이터(M5~M7)는 주 메모리(220)에 저장될 수 있다. 제5 내지 제7 메타 데이터(M5~M7)의 위치들은 제1 비트맵(B1)에 기록될 수 있다.18 shows an example in which the first to third applications modify the fifth to seventh user data D5 to D7 subsequent to FIG. 17. 12, 17, and 18, as described with reference to FIG. 5, the fifth to seventh user data D5 to D7 are first continuations that are journal regions as part of the second transaction TX2. It can be written in the
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(100 또는 240)는 동적 랜덤 액세스 메모리(120)의 저장 용량의 일부를 바이트 단위의 액세스가 가능한 메모리 맵 된 영역(예를 들어, 지속 메모리 영역(122 또는 242))으로서 프로세서(210)에 공개할 수 있다. 따라서, 도 5를 참조하여 설명된 바와 같이, 프로세서(210)의 응용 또는 운영 체제는 수정한 사용자 데이터를 지속 메모리 영역(122 또는 242)에 직접 기입할 수 있다.As described above, the
수정한 사용자 데이터를 직접 기입함으로써, 그리고 파일 시스템의 수정 데이터만을 메타 데이터로서 커밋을 위해 대기시킴으로써, 컴퓨팅 시스템(200)이 커밋을 수행하는 데이터의 양이 감소하고, 그리고 커밋의 시간이 감소한다.By directly writing the modified user data, and waiting for the commit only as the metadata of the file system, the amount of data that the
도 11을 참조하여 설명된 바와 같이, 지속 메모리 영역(122 또는 243)의 데이터가 갑작스러운 전원 오프(SPO) 이후에 복원된 후에, 프로세서(210)의 저널 드라이버는 커밋된 트랜잭션(예를 들어, TX1)을 읽어 파일 시스템을 복원할 수 있다. 또는, 커밋된 트랜잭션(TX1)을 사용자 영역(121 또는 241)에 반영할 때, 프로세서(210)의 저널 드라이버는 지속 메모리 영역(122 또는 243)으로부터 커밋된 트랜잭션(TX1)을 읽을 수 있다.As described with reference to FIG. 11, after data in the
지속 메모리 영역(122 또는 243)에서 수행되는 읽기는 논리 블록 주소(LBA)에 기반하여 수행될 수 있다. PCIe 또는 NVMe의 MMIO 모드 및 블록 단위의 입력 및 출력을 비교할 때, 데이터의 양이 증가할수록 MMIO의 읽기보다 블록 단위의 읽기의 속도가 더 높게 나타난다. 지속 메모리 영역(122)에 대해 MMIO 기반 쓰기를 허용하고 그리고 블록 기반 읽기를 허용함으로써, 커밋된 트랜잭션(TX1)의 읽기 속도가 더 향상될 수 있다.The read performed in the
상술된 바와 같이, 제1, 제2, 제3 등의 용어들을 사용하여 스토리지 장치(100)의 구성 요소들이 설명되었다. 그러나 제1, 제2, 제3 등과 같은 용어들은 구성 요소들을 서로 구별하기 위해 사용되며, 본 발명을 한정하지 않는다. 예를 들어, 제1, 제2, 제3 등과 같은 용어들은 순서 또는 임의의 형태의 수치적 의미를 내포하지 않는다.As described above, the components of the
상술된 실시 예들에서, 블록들을 사용하여 본 발명의 실시 예들에 따른 구성 요소들이 참조되었다. 블록들은 IC (Integrated Circuit), ASIC (Application Specific IC), FPGA (Field Programmable Gate Array), CPLD (Complex Programmable Logic Device) 등과 같은 다양한 하드웨어 장치들, 하드웨어 장치들에서 구동되는 펌웨어, 응용과 같은 소프트웨어, 또는 하드웨어 장치와 소프트웨어가 조합된 형태로 구현될 수 있다. 또한, 블록들은 IC 내의 반도체 소자들로 구성되는 회로들 또는 IP (Intellectual Property)를 포함할 수 있다.In the above-described embodiments, components according to embodiments of the present invention have been referenced using blocks. Blocks include various hardware devices such as integrated circuit (IC), application specific IC (ASIC), field programmable gate array (FPGA), and complex programmable logic device (CPLD), software running on hardware devices, software such as applications, Alternatively, a hardware device and software may be combined. Further, the blocks may include circuits composed of semiconductor elements in an IC or IP (Intellectual Property).
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The above are specific examples for carrying out the present invention. The present invention will include not only the above-described embodiments, but also simple design changes or easily changeable embodiments. In addition, the present invention will also include techniques that can be easily modified and implemented using embodiments. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be determined not only by the claims to be described later but also by the claims and equivalents of the present invention.
100: 스토리지 장치
111, 112: 불휘발성 메모리 장치들
120: 동적 랜덤 액세스 메모리
121: 장치 메모리 영역
122: 지속 메모리 영역
130: 제어기
131: 인터페이스 블록
132: 장치 정보 블록
133: 제1 제어 블록
134: 제2 제어 블록
135: 버퍼 블록
136: 메모리 제어 블록
137: 제1 관리 블록
138: 제2 관리 블록
139: 보조 전원 블록100: storage device
111, 112: non-volatile memory devices
120: dynamic random access memory
121: device memory area
122: persistent memory area
130: controller
131: interface block
132: device information block
133: first control block
134: second control block
135: buffer block
136: memory control block
137: first management block
138: second management block
139: auxiliary power block
Claims (20)
제1 영역 및 제2 영역을 포함하는 랜덤 액세스 메모리; 그리고
상기 랜덤 액세스 메모리의 상기 제1 영역을 상기 불휘발성 메모리 장치의 버퍼 메모리로 사용하고, 상기 불휘발성 메모리 장치의 사용자 영역을 블록 단위의 제1 액세스 영역으로써 외부의 호스트 장치에 노출하고, 그리고 상기 랜덤 액세스 메모리의 상기 제2 영역을 상기 블록 단위의 제2 액세스 영역 및 바이트 단위의 제3 액세스 영역 양자로서 상기 외부의 호스트 장치에 노출하도록 구성되는 제어기를 포함하는 스토리지 장치.A nonvolatile memory device;
A random access memory including a first area and a second area; And
The first area of the random access memory is used as a buffer memory of the nonvolatile memory device, the user area of the nonvolatile memory device is exposed to an external host device as a block-based first access area, and the random area And a controller configured to expose the second area of the access memory to the external host device as both the second access area in the block unit and the third access area in the byte unit.
상기 제어기는 상기 제2 영역에 대한 상기 바이트 단위의 쓰기 및 상기 블록 단위의 읽기를 지원하는 스토리지 장치.According to claim 1,
The controller is a storage device supporting writing of the byte unit and reading of the block unit for the second area.
통상 모드에서, 상기 제어기는 상기 제2 영역에 대한 상기 블록 단위의 상기 읽기를 금지하고, 그리고
복구(recovery) 모드에서, 상기 제어기는 상기 제2 영역에 대한 상기 바이트 단위의 상기 쓰기를 금지하는 스토리지 장치.According to claim 2,
In the normal mode, the controller prohibits the reading of the block unit for the second area, and
In a recovery mode, the controller prohibits the write of the byte unit to the second area.
상기 외부의 호스트 장치로부터 수신되는 요청이 상기 사용자 영역을 가리키는 논리 블록 주소를 포함할 때, 상기 제어기는 상기 요청을 상기 불휘발성 메모리 장치로 전달하고, 그리고
상기 요청이 상기 제2 영역을 가리키는 논리 블록 주소를 포함할 때, 상기 제어기는 상기 요청을 상기 제2 영역으로 전달하는 스토리지 장치.According to claim 1,
When the request received from the external host device includes a logical block address pointing to the user area, the controller forwards the request to the nonvolatile memory device, and
When the request includes a logical block address pointing to the second area, the controller forwards the request to the second area.
상기 외부의 호스트 장치로부터 수신되는 요청이 상기 제2 영역을 가리키는 논리 블록 주소를 포함할 때, 상기 제어기는 상기 논리 블록 주소를 상기 제2 영역의 물리 주소들 중 대응하는 제1 물리 주소로 변환하고, 그리고
상기 요청이 상기 제2 영역을 가리키는 가상 주소를 포함할 때, 상기 제어기는 상기 가상 주소를 상기 제2 영역의 상기 물리 주소들 중 대응하는 제2 물리 주소로 변환하는 스토리지 장치.According to claim 1,
When the request received from the external host device includes a logical block address pointing to the second area, the controller converts the logical block address to a corresponding first physical address among the physical addresses of the second area. , And
When the request includes a virtual address pointing to the second area, the controller converts the virtual address to a corresponding second physical address among the physical addresses in the second area.
상기 외부의 호스트 장치로부터의 전원이 차단된 때에 보조 전원을 공급하도록 구성되는 보조 전원을 더 포함하고,
상기 전원이 차단된 후에 상기 보조 전원이 공급될 때에, 상기 제어기는 상기 제2 영역에 저장된 데이터를 상기 불휘발성 메모리 장치로 백업하도록 더 구성되고, 그리고
상기 외부의 호스트 장치로부터 상기 전원이 다시 공급될 때에, 상기 제어기는 상기 백업된 데이터를 상기 제2 영역에 로드하도록 더 구성되는 스토리지 장치.According to claim 1,
Further comprising an auxiliary power supply configured to supply auxiliary power when the power from the external host device is cut off,
When the auxiliary power is supplied after the power is cut off, the controller is further configured to back up data stored in the second area to the nonvolatile memory device, and
When the power is supplied from the external host device again, the controller is further configured to load the backed-up data into the second area.
상기 보조 전원은 상기 전원이 공급될 때에 충전되는 탄탈캡 또는 슈퍼캡을 포함하는 스토리지 장치.The method of claim 6,
The auxiliary power is a storage device including a tantalum cap or a supercap that is charged when the power is supplied.
상기 불휘발성 메모리 장치는 상기 외부의 호스트 장치에 의해 보여지지 않는 초과 제공 영역을 더 포함하고,
상기 제어기는 상기 제2 영역에 저장된 상기 데이터를 상기 불휘발성 메모리 장치의 상기 사용자 영역 또는 상기 초과 제공 영역의 자유 저장 공간 에 백업하는 스토리지 장치.The method of claim 6,
The nonvolatile memory device further includes an excess providing area not visible by the external host device,
The controller is a storage device that backs up the data stored in the second area to a free storage space in the user area or the excess provision area of the nonvolatile memory device.
상기 제2 영역은 세그먼트들을 포함하고,
상기 제어기에 의해 상기 불휘발성 메모리 장치로 백업되는 상기 제2 영역에 저장된 상기 데이터는 상기 제2 영역의 상기 세그먼트들 중 선택된 세그먼트들에 저장된 데이터인 스토리지 장치.The method of claim 6,
The second region includes segments,
The data stored in the second area backed up by the controller to the nonvolatile memory device is data stored in selected segments among the segments of the second area.
상기 제어기는 상기 세그먼트들 중 가장 낮은 주소 또는 가장 높은 주소의 제1 세그먼트를 고정적으로 선택하고, 그리고
상기 제어기는 상기 제1 세그먼트를 제외한 나머지 세그먼트들 중에서 연속한 주소들을 갖는 적어도 두 개의 제2 세그먼트들을 더 선택하고,
상기 적어도 두 개의 제2 세그먼트들의 주소들은 변경되는 스토리지 장치.The method of claim 9,
The controller fixedly selects the first segment of the lowest or highest address among the segments, and
The controller further selects at least two second segments having consecutive addresses from among segments other than the first segment,
A storage device in which addresses of the at least two second segments are changed.
상기 제어기는 상기 외부의 호스트 장치의 요청에 따라 상기 적어도 두 개의 제2 세그먼트들의 상기 주소들을 변경하는 스토리지 장치.The method of claim 10,
And the controller changes the addresses of the at least two second segments according to the request of the external host device.
상기 요청에 응답하여, 상기 제어기는 상기 적어도 두 개의 제2 세그먼트들 중 가장 낮은 주소를 갖는 세그먼트에 저장된 상기 데이터를 상기 불휘발성 메모리 장치에 기입하고, 이후에 상기 적어도 두 개의 제2 세그먼트들 중 상기 가장 낮은 주소를 갖는 상기 세그먼트를 선택 해제하고, 그리고
상기 적어도 두 개의 제2 세그먼트들의 상기 주소들 중 가장 높은 주소와 연속하며 상기 적어도 두 개의 제2 세그먼트들 중 상기 가장 높은 주소보다 높은 주소에 대응하는 세그먼트를 더 선택하는 스토리지 장치.The method of claim 11,
In response to the request, the controller writes the data stored in the segment with the lowest address of the at least two second segments to the nonvolatile memory device, and then the one of the at least two second segments Deselect the segment with the lowest address, and
The storage device further selects a segment that is continuous with the highest address among the addresses of the at least two second segments and corresponds to an address higher than the highest address of the at least two second segments.
상기 데이터는 논리 블록 주소를 포함하고,
상기 제어기는 상기 데이터의 상기 논리 블록 주소를 상기 불휘발성 메모리 장치의 물리 블록 주소로 변환하고, 그리고 상기 물리 블록 주소에 기반하여 상기 데이터를 상기 불휘발성 메모리 장치에 기입하는 스토리지 장치.The method of claim 12,
The data includes a logical block address,
The controller converts the logical block address of the data into a physical block address of the nonvolatile memory device, and writes the data to the nonvolatile memory device based on the physical block address.
상기 제어기는 링 버퍼(ring buffer) 방식으로 상기 나머지 세그먼트들 중에서 상기 적어도 두 개의 제2 세그먼트들을 선택하는 스토리지 장치.The method of claim 10,
The controller selects the at least two second segments from among the remaining segments in a ring buffer method.
상기 제어기는 상기 제2 영역을 상기 외부의 호스트 장치에 저널 영역으로 제공하는 스토리지 장치.According to claim 1,
The controller provides the second area as a journal area to the external host device.
제1 영역 및 제2 영역을 포함하는 동적 랜덤 액세스 메모리; 그리고
상기 제1 영역을 상기 불휘발성 메모리 장치의 버퍼 메모리로 사용하고, 상기 불휘발성 메모리 장치의 사용자 영역을 블록 단위의 제1 액세스 영역으로써 외부의 호스트 장치에 노출하도록 구성되는 제어기를 포함하고,
상기 제2 영역은 세그먼트들을 포함하고,
상기 제어기는 상기 세그먼트들 중 제1 세그먼트를 선택하고, 그리고 상기 제1 세그먼트를 제외한 나머지 세그먼트들에서 적어도 두 개의 제2 세그먼트들을 선택하고, 상기 선택된 세그먼트들에 대해 불휘발성(non-volatility)을 제공하도록 구성되고,
상기 적어도 두 개의 제2 세그먼트들은 상기 나머지 세그먼트들에서 링 버퍼(ring buffer) 방식으로 동적으로 변경되는 스토리지 장치.A nonvolatile memory device;
A dynamic random access memory including a first area and a second area; And
A controller configured to use the first area as a buffer memory of the nonvolatile memory device, and expose the user area of the nonvolatile memory device to an external host device as a block-based first access area,
The second region includes segments,
The controller selects a first one of the segments, and selects at least two second segments from segments other than the first segment, and provides non-volatility to the selected segments Configured to
The at least two second segments are dynamically changed in a ring buffer manner in the remaining segments.
상기 외부의 호스트 장치로부터의 전원이 차단된 때에 보조 전원을 공급하도록 구성되는 보조 전원을 더 포함하고,
상기 전원이 차단된 후에 상기 보조 전원이 공급될 때에, 상기 제어기는 상기 선택된 세그먼트들에 저장된 데이터를 상기 불휘발성 메모리 장치로 백업하도록 더 구성되고, 그리고
상기 외부의 호스트 장치로부터 상기 전원이 다시 공급될 때에, 상기 제어기는 상기 백업된 데이터를 상기 선택된 세그먼트들에 로드하도록 더 구성되는 스토리지 장치.The method of claim 16,
Further comprising an auxiliary power supply configured to supply auxiliary power when the power from the external host device is cut off,
When the auxiliary power is supplied after the power is cut off, the controller is further configured to back up data stored in the selected segments to the nonvolatile memory device, and
When the power is supplied again from the external host device, the controller is further configured to load the backed-up data into the selected segments.
상기 제어기는 상기 제1 세그먼트를 상기 외부의 호스트 장치의 저널 영역의 슈퍼 블록(super block)의 저장 공간으로 제공하고, 그리고 상기 적어도 두 개의 제2 세그먼트들을 상기 외부의 호스트 장치의 상기 저널 영역의 적어도 하나의 트랜잭션의 저장 공간으로 제공하도록 더 구성되는 스토리지 장치.The method of claim 16,
The controller provides the first segment as a storage space of a super block of the journal area of the external host device, and the at least two second segments of at least the journal area of the external host device. A storage device further configured to serve as a storage space for one transaction.
상기 제어기는 상기 제2 영역을 상기 블록 단위의 제2 액세스 영역 및 바이트 단위의 제3 액세스 영역 양자로써 상기 외부의 호스트 장치에 노출하는 스토리지 장치.The method of claim 16,
The controller exposes the second area to the external host device as both the second access area in the block unit and the third access area in the byte unit.
상기 불휘발성 메모리 장치의 저장 공간의 일부를 사용자 영역으로써 외부의 호스트 장치에 제공하는 단계; 그리고
상기 동적 랜덤 액세스 메모리의 저장 공간의 일부를 바이트 단위의 쓰기 및 블록 단위의 읽기가 허용되는 저널 영역으로써 상기 외부의 호스트 장치에 제공하는 단계를 포함하고,
상기 저널 영역의 저장 공간은 세그먼트들을 포함하고,
상기 저널 영역으로써 상기 외부의 호스트 장치에 제공하는 단계는, 상기 세그먼트들 중 고정된 제1 세그먼트 및 동적으로 변경되는 적어도 두 개의 제2 세그먼트들에 불휘발성(non-volatility)을 제공하는 단계를 포함하는 동작 방법.A method of operating a storage device comprising a non-volatile memory device and a dynamic random access memory:
Providing a portion of the storage space of the nonvolatile memory device as a user area to an external host device; And
And providing a portion of the storage space of the dynamic random access memory to the external host device as a journal area in which writing in bytes and reading in blocks are allowed,
The storage space of the journal area includes segments,
Providing the external host device as the journal area includes providing non-volatility to a fixed first segment of the segments and at least two second segments that are dynamically changed. How it works.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/529,320 US11301331B2 (en) | 2018-09-20 | 2019-08-01 | Storage device and operating method of storage device |
EP19194786.0A EP3627328A1 (en) | 2018-09-20 | 2019-08-30 | Storage device and operating method of storage device |
SG10201908377YA SG10201908377YA (en) | 2018-09-20 | 2019-09-11 | Storage device and operating method of storage device |
CN201910890993.7A CN110928487A (en) | 2018-09-20 | 2019-09-20 | Storage device and operation method of storage device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20180113169 | 2018-09-20 | ||
KR1020180113169 | 2018-09-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200034560A true KR20200034560A (en) | 2020-03-31 |
Family
ID=70002454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190038028A KR20200034560A (en) | 2018-09-20 | 2019-04-01 | Storage device and operating method of storage device |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR20200034560A (en) |
SG (1) | SG10201908377YA (en) |
-
2019
- 2019-04-01 KR KR1020190038028A patent/KR20200034560A/en not_active Application Discontinuation
- 2019-09-11 SG SG10201908377YA patent/SG10201908377YA/en unknown
Also Published As
Publication number | Publication date |
---|---|
SG10201908377YA (en) | 2020-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669444B2 (en) | Computing system and method for controlling storage device | |
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11301331B2 (en) | Storage device and operating method of storage device | |
US9910602B2 (en) | Device and memory system for storing and recovering page table data upon power loss | |
US8489854B1 (en) | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table | |
US10061710B2 (en) | Storage device | |
TWI566097B (en) | Lba bitmap usage | |
US9201784B2 (en) | Semiconductor storage device and method for controlling nonvolatile semiconductor memory | |
US10310984B2 (en) | Storage apparatus and storage control method | |
US11016905B1 (en) | Storage class memory access | |
KR102168193B1 (en) | System and method for integrating overprovisioned memory devices | |
US20150220452A1 (en) | System, Method and Computer-Readable Medium for Dynamically Mapping a Non-Volatile Memory Store | |
TW202230110A (en) | Memory system and method of controlling nonvolatile memory | |
US10713163B2 (en) | Set aware system data and mapping tables | |
US11977773B2 (en) | Validity table for solid state drives | |
US11169918B2 (en) | Data access in data storage device including storage class memory | |
WO2018167890A1 (en) | Computer system and management method | |
KR20200034560A (en) | Storage device and operating method of storage device | |
US11216383B2 (en) | Storage device providing a virtual memory region, electronic system including the same, and method of operating the same | |
US10838855B2 (en) | Storage system and storage control method | |
CN116501655A (en) | Memory controller for deallocating memory blocks and method of operating the same | |
JP2024043063A (en) | Memory system and control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |