KR20200034560A - Storage device and operating method of storage device - Google Patents

Storage device and operating method of storage device Download PDF

Info

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
Application number
KR1020190038028A
Other languages
Korean (ko)
Inventor
김석환
송용길
이철
황주영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US16/529,320 priority Critical patent/US11301331B2/en
Priority to EP19194786.0A priority patent/EP3627328A1/en
Priority to SG10201908377YA priority patent/SG10201908377YA/en
Priority to CN201910890993.7A priority patent/CN110928487A/en
Publication of KR20200034560A publication Critical patent/KR20200034560A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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

The present invention relates to a storage device, which supports committing of an operating system to reduce committing time and have reduced latency. According to an embodiment of the present invention, the storage device comprises: a nonvolatile memory device; a random access memory including a first area and a second area; and a controller that uses the first area of the random access memory as a buffer memory of the nonvolatile memory device, exposes a user area of the nonvolatile memory device to an external host device as a first access area in a block unit, and exposes the second area of the random access memory to the external host device as both a second access area in the block unit and a third access area in a byte unit.

Description

스토리지 장치 및 스토리지 장치의 동작 방법{STORAGE DEVICE AND OPERATING METHOD OF STORAGE DEVICE}Storage device and how to operate the storage device {STORAGE DEVICE AND OPERATING METHOD OF STORAGE DEVICE}

본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 저장 영역의 일부의 블록 단위 액세스 및 메모리 맵 된(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 storage device 100 according to an embodiment of the present invention. Referring to FIG. 1, the storage device 100 includes first and second nonvolatile memory devices 111 and 112, a dynamic random access memory 120, and a controller 130. The storage device 100 may include a solid state drive (SSD).

제1 및 제2 불휘발성 메모리 장치들(111, 112)은 제어기(130)의 제어에 따라 쓰기 동작, 읽기 동작 및 소거 동작을 수행할 수 있다. 제1 및 제2 불휘발성 메모리 장치들(111, 112)은 서로 다른 채널들을 통해 제어기(130)와 통신하고, 서로 독립적으로 동작할 수 있다.The first and second nonvolatile memory devices 111 and 112 may perform a write operation, a read operation, and an erase operation under the control of the controller 130. The first and second nonvolatile memory devices 111 and 112 may communicate with the controller 130 through different channels and operate independently of each other.

제1 및 제2 불휘발성 메모리 장치들(111, 112)의 저장 공간의 일부는 제어기(130)에 의해 외부의 호스트 장치에 노출될 수 있다. 제1 및 제2 불휘발성 메모리 장치들(111, 112)은 플래시 메모리 장치, 상 변화 메모리 장치, 자기 메모리 장치, 저항성 메모리 장치, 강유전체 메모리 장치 등과 같은 다양한 불휘발성 메모리 장치들을 포함할 수 있다.A portion of the storage space of the first and second nonvolatile memory devices 111 and 112 may be exposed to an external host device by the controller 130. The first and second nonvolatile memory devices 111 and 112 may include various nonvolatile memory devices such as a flash memory device, a phase change memory device, a magnetic memory device, a resistive memory device, and a ferroelectric memory device.

동적 랜덤 액세스 메모리(120)는 제어기(130)의 제어에 따라 쓰기 동작 및 읽기 동작을 수행할 수 있다. 동적 랜덤 액세스 메모리(120)의 저장 공간은 제어기(130)에 의해 장치 메모리 영역(121) 및 지속 메모리 영역(122)으로 분할될 수 있다.The dynamic random access memory 120 may perform a write operation and a read operation under the control of the controller 130. The storage space of the dynamic random access memory 120 may be divided into the device memory area 121 and the persistent memory area 122 by the controller 130.

지속 메모리 영역(122)은 제어기(130)에 의해 외부의 호스트 장치에 노출될 수 있다. 예를 들어, 지속 메모리 영역(122)은 메모리 맵 된 영역으로서 외부의 호스트 장치에 노출될 수 있다. 또한, 지속 메모리 영역(122)은 블록 기반 액세스가 허용되는 영역으로서도 외부의 호스트 장치에 노출될 수 있다.The persistent memory area 122 may be exposed to an external host device by the controller 130. For example, the persistent memory area 122 may be exposed to an external host device as a memory mapped area. Also, the persistent memory area 122 may be exposed to an external host device as an area where block-based access is allowed.

장치 메모리 영역(121)은 외부의 호스트 장치에 노출되지 않고, 제어기(130)에 의해 액세스될 수 있다. 장치 메모리 영역(121)은 스토리지 장치(100)를 관리하는 데에 필요한 관리 데이터(또는 메타 데이터) 및 코드를 저장하는 데에 사용될 수 있다. 장치 메모리 영역(121)은 버퍼 메모리 또는 캐시 메모리로 사용될 수 있다.The device memory area 121 is not exposed to an external host device and can be accessed by the controller 130. The device memory area 121 may be used to store management data (or meta data) and codes necessary for managing the storage device 100. The device memory area 121 may be used as a buffer memory or a cache memory.

동적 랜덤 액세스 메모리(120)의 저장 영역들은 장치 메모리 영역(121) 및 지속 메모리 영역(122)의 구체적인 명칭들로 기재된다. 그러나 장치 메모리 영역(121) 및 지속 메모리 영역(122)의 명칭들은 구분을 위한 것으로, 장치 메모리 영역(121) 및 지속 메모리 영역(122)의 기능들 및 특성들은 그 명칭들에 의해 한정되지 않는다. The storage areas of the dynamic random access memory 120 are described with specific names of the device memory area 121 and the persistent memory area 122. However, the names of the device memory area 121 and the persistent memory area 122 are for classification, and functions and characteristics of the device memory area 121 and the persistent memory area 122 are not limited by the names.

제어기(130)는 제1 및 제2 불휘발성 메모리 장치들(111, 112)을 제어하고, 동적 랜덤 액세스 메모리(120)를 제어할 수 있다. 제어기(130)는 외부의 호스트 장치와 통신할 수 있다. 제어기(130)는 인터페이스 블록(131), 장치 정보 블록(132), 제1 제어 블록(133), 제2 제어 블록(134), 버퍼 블록(135), 메모리 제어 블록(136), 제1 관리 블록(137), 제2 관리 블록(138), 그리고 보조 전원 블록(139)을 포함할 수 있다.The controller 130 controls the first and second nonvolatile memory devices 111 and 112 and may control the dynamic random access memory 120. The controller 130 can communicate with an external host device. The controller 130 includes an interface block 131, a device information block 132, a first control block 133, a second control block 134, a buffer block 135, a memory control block 136, and a first management It may include a block 137, a second management block 138, and an auxiliary power block 139.

인터페이스 블록(131), 제1 제어 블록(133), 제2 제어 블록(134), 버퍼 블록(135), 메모리 제어 블록(136), 제1 관리 블록(137), 그리고 제2 관리 블록(138)은 내부 버스를 통해 서로 통신할 수 있다. 인터페이스 블록(131)은 외부의 호스트 장치와 통신할 수 있다.Interface block 131, first control block 133, second control block 134, buffer block 135, memory control block 136, first management block 137, and second management block 138 ) Can communicate with each other via the internal bus. The interface block 131 may communicate with an external host device.

스토리지 장치(100)에 전원이 공급될 때, 인터페이스 블록(131)은 장치 정보 블록(132)으로부터 스토리지 장치(100)의 장치 정보를 수신할 수 있다. 인터페이스 블록(131)은 스토리지 장치(100)의 장치 정보를 외부의 호스트 장치에 제공할 수 있다. 예를 들어, 스토리지 장치(100)의 장치 정보는 제1 및 제2 불휘발성 메모리 장치들(111, 112) 중에서 외부의 호스트 장치에 노출되는 부분의 정보, 그리고 지속 메모리 영역(122)의 정보를 포함할 수 있다. 스토리지 장치(100)의 장치 정보를 제공하는 것은 초기화 동작의 일부로서 수행될 수 있다.When power is supplied to the storage device 100, the interface block 131 may receive device information of the storage device 100 from the device information block 132. The interface block 131 may provide device information of the storage device 100 to an external host device. For example, the device information of the storage device 100 includes information of a portion exposed to an external host device among the first and second nonvolatile memory devices 111 and 112 and information of the persistent memory area 122. It can contain. Providing device information of the storage device 100 may be performed as part of an initialization operation.

초기화 동작이 완료된 후에 통상 동작들이 수행될 수 있다. 예를 들어, 인터페이스 블록(131)은 외부의 호스트 장치로부터 요청을 수신하고, 수신된 요청을 분석(parsing)할 수 있다. 인터페이스 블록(131)은 외부의 호스트 장치에 블록 기반 요청 및 메모리 맵 된(memory mapped) 요청을 허용할 수 있다. 블록 기반 요청은 논리 블록 주소(LBA)(Logical Block Address)을 포함할 수 있다. 블록 기반 요청은 데이터가 기입될 위치 또는 데이터를 읽을 위치를 논리 블록 주소(LBA)를 이용하여 가리킬 수 있다.After the initialization operation is completed, normal operations may be performed. For example, the interface block 131 may receive a request from an external host device and parse the received request. The interface block 131 may allow block-based requests and memory mapped requests to external host devices. The block-based request may include a logical block address (LBA). The block-based request may indicate a location where data is to be written or a location to read data using a logical block address (LBA).

메모리 맵 된 요청은 바이트 단위의 가상 주소(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 interface block 131 may transmit a block-based request to the first control block 133 and a memory-mapped request to the second control block 134.

인터페이스 블록(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 interface block 131 may be based on Peripheral Component Interconnect Express (PCIe) or Non-Volatile Memory Express (NVMe). The interface block 131 may receive a memory mapped request from a memory mapped input and output (memory mapped I / O) of PCIe or NVMe. The interface block 131 may receive a block-based request in a block input / output (Block I / O) mode of PCIe or NVMe.

인터페이스 블록(131)은 외부의 호스트 장치로부터 수신되는 데이터를 메모리 제어 블록(136)을 통해 장치 메모리 영역(121)에 전송할 수 있다. 인터페이스 블록(131)은 장치 메모리 영역(121)으로부터 전달되는 데이터를 외부의 호스트 장치로 출력할 수 있다.The interface block 131 may transmit data received from an external host device to the device memory area 121 through the memory control block 136. The interface block 131 may output data transmitted from the device memory area 121 to an external host device.

장치 정보 블록(132)은 초기화 동작 시에 스토리지 장치(100)의 장치 정보를 인터페이스 블록(131)에 제공하도록 구성된다. 장치 정보 블록(132)은 EEPROM, 플래시 메모리, 상 변화 메모리, 자기 메모리, 강유전체 메모리, 저항성 메모리와 같은 다양한 불휘발성 소자들을 포함할 수 있다.The device information block 132 is configured to provide device information of the storage device 100 to the interface block 131 during an initialization operation. The device information block 132 may include various nonvolatile elements such as EEPROM, flash memory, phase change memory, magnetic memory, ferroelectric memory, and resistive memory.

제1 제어 블록(133)은 인터페이스 블록(131)으로부터 블록 기반 요청을 수신할 수 있다. 제1 제어 블록(133)은 블록 기반 요청이 제1 타입인지 또는 제2 타입인지 판단할 수 있다. 예를 들어, 블록 기반 요청에 포함된 논리 블록 주소(LBA)가 제1 및 제2 불휘발성 메모리 장치들(111, 112) 중 적어도 하나를 가리킬 때, 블록 기반 요청은 제1 타입일 수 있다.The first control block 133 may receive a block-based request from the interface block 131. The first control block 133 may determine whether the block-based request is the first type or the second type. For example, when the logical block address (LBA) included in the block-based request points to at least one of the first and second nonvolatile memory devices 111 and 112, the block-based request may be of the first type.

블록 기반 요청에 포함된 논리 블록 주소(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 persistent memory area 122, the block-based request may be of the second type. When the block-based request is of the first type, the first control block 133 may refer to the first mapping table. When the block-based request is of the second type, the first control block 133 may refer to the second mapping table.

제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 nonvolatile memory devices 111 and 112. The second mapping table may include mapping information between physical addresses PA and logical block addresses LBA of the persistent memory area 122.

제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 device memory area 121 of the dynamic random access memory 120. The first control block 133 may convert the logical block address LBA of the block-based request of the first type into a physical block address PBA by referring to the first mapping table. The first control block 133 may transfer the converted physical block address (PBA) to the first management block 137 or the second management block 138 together with a write command or a read command.

제1 제어 블록(133)은 제2 매핑 테이블을 참조하여 제2 타입의 블록 기반 요청의 논리 블록 주소(LBA)를 지속 메모리 영역(122)의 물리 주소(PA)로 변환할 수 있다. 제1 제어 블록(133)은 변환된 물리 주소(PA)에 기반하여 메모리 제어 블록(136)을 통해 지속 메모리 영역(122)을 액세스할 수 있다.The first control block 133 may convert the logical block address LBA of the block-based request of the second type into the physical address PA of the persistent memory area 122 by referring to the second mapping table. The first control block 133 may access the persistent memory area 122 through the memory control block 136 based on the converted physical address PA.

또한, 제1 제어 블록(133)은 외부의 호스트 장치로부터 인터페이스 블록(131)을 통해 전달되는 데이터가 장치 메모리 영역(121)에 기입되도록, 그리고 장치 메모리 영역(121)에 저장된 데이터가 인터페이스 블록(131)을 통해 외부의 호스트 장치로 출력되도록 직접 메모리 제어(DMA)(Direct Memory Control)를 수행할 수 있다.In addition, the first control block 133 is such that data transmitted from the external host device through the interface block 131 is written to the device memory area 121, and data stored in the device memory area 121 is an interface block ( 131), direct memory control (DMA) may be performed to be output to an external host device.

갑작스러운 전원 오프(SPO)(Sudden Power Off)가 발생할 때에, 스토리지 장치(100)는 보조 전원 블록(139)으로부터 보조 전원을 수신할 수 있다. 보조 전원이 공급되는 동안, 제1 제어 블록(133)은 지속 메모리 영역(122)의 적어도 일부 영역의 데이터를 제1 및 제2 불휘발성 메모리 장치들(111, 112) 중 적어도 하나에 백업할 수 있다.When a sudden power off (SPO) occurs, the storage device 100 may receive auxiliary power from the auxiliary power block 139. While the auxiliary power is supplied, the first control block 133 can back up data of at least a portion of the persistent memory area 122 to at least one of the first and second nonvolatile memory devices 111 and 112. have.

제1 제어 블록(133)은 또한 장치 메모리 영역(121)에 저장된 데이터 중에서 백업이 필요한 데이터(예를 들어, 매핑 테이블과 같은 메타 데이터)를 제1 및 제2 불휘발성 메모리 장치들(111, 112) 중 적어도 하나에 더 백업할 수 있다.The first control block 133 also includes first and second nonvolatile memory devices 111 and 112 that need data to be backed up (eg, metadata such as a mapping table) among data stored in the device memory area 121. ).

전원이 다시 공급될 때, 제1 제어 블록(133)은 백업된 데이터를 지속 메모리 영역(122)에 로드할 수 있다. 또한, 제1 제어 블록(133)은 백업된 데이터 중 장치 메모리 영역(121)에 대응하는 데이터를 장치 메모리 영역(121)에 로드할 수 있다. 보조 전원 블록(139)에 기반한 백업 및 로드를 수행함으로써, 제1 제어 블록(133)은 지속 메모리 영역(122)에 불휘발성(non-volatility)을 제공할 수 있다.When power is supplied again, the first control block 133 may load the backed up data into the persistent memory area 122. In addition, the first control block 133 may load data corresponding to the device memory area 121 among the backed up data into the device memory area 121. By performing backup and load based on the auxiliary power block 139, the first control block 133 may provide non-volatility to the persistent memory area 122.

제2 제어 블록(134)은 인터페이스 블록(131)으로부터 메모리 맵 된 요청을 수신할 수 있다. 제2 제어 블록(134)은 제3 매핑 테이블을 참조할 수 있다. 제3 매핑 테이블은 메모리 맵 된 요청의 가상 주소들(VA) 및 지속 메모리 영역(122)의 물리 주소들(PA) 사이의 매핑 정보를 포함할 수 있다. 제3 매핑 테이블은 동적 랜덤 액세스 메모리(120)의 장치 메모리 영역(121) 또는 지속 메모리 영역(122)에 저장될 수 있다.The second control block 134 may receive a memory mapped request from the interface block 131. The second control block 134 may refer to the third mapping table. The third mapping table may include mapping information between the virtual addresses VA of the memory mapped request and the physical addresses PA of the persistent memory area 122. The third mapping table may be stored in the device memory area 121 or the persistent memory area 122 of the dynamic random access memory 120.

제2 제어 블록(134)은 제3 매핑 테이블을 참조하여 메모리 맵 된 요청의 가상 주소(VA)를 물리 주소(PA)로 변환할 수 있다. 제2 제어 블록(134)은 변환된 물리 주소(PA)에 기반하여 메모리 제어 블록(136)을 통해 지속 메모리 영역(122)을 액세스할 수 있다.The second control block 134 may convert the virtual address VA of the memory-mapped request into a physical address PA by referring to the third mapping table. The second control block 134 may access the persistent memory area 122 through the memory control block 136 based on the converted physical address PA.

버퍼 블록(135)은 제1 제어 블록(133) 또는 제2 제어 블록(134)에 의해 실행되는 코드들, 명령들을 저장하는 데에 사용될 수 있다. 또한, 버퍼 블록(135)은 제1 제어 블록(133) 또는 제2 제어 블록(134)에 의해 사용되는 메타 데이터와 같은 중요 데이터를 저장하는 데에 사용될 수 있다.The buffer block 135 may be used to store codes and instructions executed by the first control block 133 or the second control block 134. Also, the buffer block 135 may be used to store important data, such as metadata used by the first control block 133 or the second control block 134.

메모리 제어 블록(136)은 동적 랜덤 액세스 메모리(120)를 제어하도록 구성될 수 있다. 메모리 제어 블록(136)은 동적 랜덤 액세스 메모리(120)의 명령 체계 및 주소 체계에 따라 동적 랜덤 액세스 메모리(120)에 명령 및 주소를 전송할 수 있다. 메모리 제어 블록(136)은 동적 랜덤 액세스 메모리(120)의 데이터 통신 체계에 따라 동적 랜덤 액세스 메모리(120)와 데이터를 교환할 수 있다.The memory control block 136 can be configured to control the dynamic random access memory 120. The memory control block 136 may transmit commands and addresses to the dynamic random access memory 120 according to the command system and address system of the dynamic random access memory 120. The memory control block 136 may exchange data with the dynamic random access memory 120 according to the data communication scheme of the dynamic random access memory 120.

제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 first management block 137 is configured to control the first nonvolatile memory device 111. The second management block 138 is configured to control the second nonvolatile memory device 112. The first management block 137 and the second management block 138 are the first and second nonvolatile memory devices according to the command system and address system of the first and second nonvolatile memory devices 111 and 112 ( 111, 112). The first management block 137 and the second management block 138 are the first and second nonvolatile memory devices 111, according to the data communication system of the first and second nonvolatile memory devices 111 and 112. 112).

보조 전원 블록(139)은 갑작스러운 전원 오프(SPO)가 발생한 때에 스토리지 장치(100)에 보조 전원을 공급하도록 구성된다. 보조 전원 블록(139)은 외부의 호스트 장치로부터 정상적으로 전원이 공급될 때에 충전될 수 있다. 보조 전원 블록(139)은 탄탈캡(tantal cap) 또는 슈퍼 캡(super cap)을 포함할 수 있다. 보조 전원 블록(139)은 제어기(130)의 내부에 위치한 것으로 도시되어 있으나, 보조 전원 블록(139)은 제어기(130)의 외부에 위치할 수 있다.The auxiliary power block 139 is configured to supply auxiliary power to the storage device 100 when a sudden power off (SPO) occurs. The auxiliary power block 139 may be charged when power is normally supplied from an external host device. The auxiliary power block 139 may include a tantalum cap or a super cap. The auxiliary power block 139 is illustrated as being located inside the controller 130, but the auxiliary power block 139 may be located outside the controller 130.

도 2는 초기화 동작 시에 스토리지 장치(100)가 장치 정보를 외부의 호스트 장치에 제공하는 방법의 예를 보여준다. 도 1 및 도 2를 참조하면, S110 단계에서, 제어기(130)는 제1 및 제2 불휘발성 메모리 장치들(111, 112)의 사용자 영역의 용량을 논리 블록 주소(LBA) 영역으로서 외부의 호스트 장치에 노출할 수 있다.2 shows an example of a method in which the storage device 100 provides device information to an external host device during an initialization operation. 1 and 2, in step S110, the controller 130 uses the capacity of the user area of the first and second nonvolatile memory devices 111 and 112 as a logical block address (LBA) area, as an external host. Device.

논리 블록 주소(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 controller 130 may expose at least a portion of the capacity of the persistent memory area 122 as an addressable area in bytes to an external host device. The addressable area in bytes may be an area that can be incorporated into a memory map by an external host device. The external host device may allocate virtual addresses VA to the capacity exposed in step S120. The external host device may identify the exposed capacity in step S120 using the virtual address VA.

S130 단계에서, 제어기(130)는 지속 메모리 영역(122)의 적어도 일부의 용량을 논리 블록 주소(LBA) 영역으로서 외부의 호스트 장치에 노출할 수 있다. 외부의 호스트 장치는 S130 단계에서 노출된 용량에 대해 논리 블록 주소들(LBA)을 할당할 수 있다. 외부의 호스트 장치는 논리 블록 주소(LBA)를 이용하여 S130 단계에서 노출된 용량을 식별할 수 있다.In step S130, the controller 130 may expose the capacity of at least a portion of the persistent memory area 122 to an external host device as a logical block address (LBA) area. The external host device may allocate logical block addresses (LBA) to the exposed capacity in step S130. The external host device may identify the exposed capacity in step S130 using a logical block address (LBA).

예시적으로, S120 단계 및 S130 단계에서 노출된 지속 메모리 영역(122)의 용량은 용도 제한된(ring-fenced) 영역일 수 있다. 예를 들어, 지속 메모리 영역(122)은 외부의 호스트 장치의 운영 체제에 의해 저널 영역(journal region)으로 사용되도록 구성될 수 있다.For example, the capacity of the persistent memory area 122 exposed in steps S120 and S130 may be a ring-fenced area. For example, the persistent memory area 122 may be configured to be used as a journal region by an operating system of an external host device.

제어기(130)는 지속 메모리 영역(122)에 대한 블록 기반 읽기를 외부의 호스트 장치에 지원하고, 그리고 메모리 맵 된 쓰기를 외부의 호스트 장치에 지원할 수 있다. 제어기(130)는 지속 메모리 영역(122)에 대한 블록 기반 쓰기를 외부의 호스트 장치에 금지하고, 그리고 메모리 맵 된 읽기를 외부의 호스트 장치에 금지할 수 있다.The controller 130 may support block-based reading of the persistent memory area 122 to an external host device, and memory mapped writes to an external host device. The controller 130 may prohibit block-based writing of the persistent memory area 122 to an external host device, and prohibit memory mapped reads from the external host device.

제어기(130)는 동적 랜덤 액세스 메모리(120)의 장치 메모리 영역(121) 및 지속 메모리 영역(122)에 대해 물리 주소(PA)에 기반한 액세스를 수행할 수 있다. 즉, 블록 기반 읽기 및 메모리 맵 된 쓰기를 외부의 호스트 장치에 허용하는 것과 무관하게, 제어기(130)는 장치 메모리 영역(121) 및 지속 메모리 영역(122)을 자유롭게 액세스할 수 있다.The controller 130 may perform access based on the physical address PA to the device memory area 121 and the persistent memory area 122 of the dynamic random access memory 120. That is, regardless of allowing block-based read and memory mapped write to an external host device, the controller 130 can freely access the device memory area 121 and the persistent memory area 122.

도 3은 스토리지 장치(100)의 실제 저장 영역들의 용량들 및 외부의 호스트 장치에 보여지는(visible) 영역들의 용량들을 보여준다. 도 1 및 도 3을 참조하면, 제어기(130)는 불휘발성 메모리 장치들(111, 112)이 용량(20) 중에서 초과 제공 영역의 용량(22)을 제외한 사용자 영역의 용량(21)을 외부의 호스트 장치에 노출할 수 있다.3 shows capacities of actual storage areas of the storage device 100 and capacities of areas visible to an external host device. Referring to FIGS. 1 and 3, the controller 130 is configured such that the non-volatile memory devices 111 and 112 are external to the capacity 21 of the user area excluding the capacity 22 of the excess providing area among the capacity 20. It can be exposed to the host device.

초과 제공 영역의 용량(22)은 제어기(130)가 읽기 리클레임(read reclaim), 마모도 관리(wear leveling), 가비지 컬렉션(garbage collection)과 같은 다양한 배경 동작들을 수행하기 위해 사용될 수 있다. 또한, 초과 제공 영역의 용량(22)은 사용자 영역의 용량(21)에 기입된 데이터의 갱신 데이터를 기입하는 데에 사용될 수 있다. 즉, 초과 제공 영역의 용량(22)은 쓰기-전-소거(erase-before-write) 특정으로 인해 스토리지 장치(100)의 레이턴시가 증가하고 수명이 감소하는 것을 방지하기 위해 사용될 수 있다.The capacity 22 of the excess provision area can be used by the controller 130 to perform various background operations such as read reclaim, wear leveling, and garbage collection. Further, the capacity 22 of the over-provision area can be used to write update data of data written in the capacity 21 of the user area. That is, the capacity 22 of the excess provision area may be used to prevent the latency of the storage device 100 from increasing and the lifespan to decrease due to an erase-before-write specification.

외부의 호스트 장치는 사용자 영역의 용량(21)을 논리 블록 주소(LBA)가 할당되는 영역(31)의 일부로 식별할 수 있다. 외부의 호스트 장치는 사용자 영역의 용량(21)에 논리 블록 주소들(LBA)을 할당하고, 논리 블록 주소들(LBA)을 이용하여 사용자 영역의 용량(21)을 액세스할 수 있다.The external host device may identify the capacity 21 of the user area as part of the area 31 to which the logical block address LBA is allocated. The external host device may allocate logical block addresses LBA to the capacity 21 of the user area, and access the capacity 21 of the user area using the logical block addresses LBA.

제어기(130)는 지속 메모리 영역(122)의 용량(10)을 외부의 호스트 장치에 노출할 수 있다. 예를 들어, 제어기(130)는 지속 메모리 영역(122)의 용량(10)을 블록 기반 액세스 및 메모리 맵 된 액세스가 가능한 용량으로 외부의 호스트 장치에 노출할 수 있다.The controller 130 may expose the capacity 10 of the persistent memory area 122 to an external host device. For example, the controller 130 may expose the capacity 10 of the persistent memory area 122 to an external host device in a capacity capable of block-based access and memory mapped access.

외부의 호스트 장치는 블록 기반 액세스가 허용된 지속 메모리 영역(122)의 용량(10)을 논리 블록 주소(LBA)가 할당되는 영역(31)의 일부인 제1 지속 메모리 영역(PMR)의 용량(11)으로 식별할 수 있다. 외부의 호스트 장치는 제1 지속 메모리 영역(PMR)의 용량(11)에 논리 블록 주소들(LBA)을 할당하고, 논리 블록 주소들(LBA)을 이용하여 제1 지속 메모리 영역(PMR)의 용량(11)을 액세스할 수 있다.The external host device may have the capacity 10 of the persistent memory area 122 to which block-based access is permitted, the capacity of the first persistent memory area (PMR) 11 that is part of the area 31 to which the logical block address LBA is allocated ). The external host device allocates logical block addresses LBA to the capacity 11 of the first persistent memory area PMR, and uses the logical block addresses LBA to store the capacity of the first persistent memory area PMR. (11) can be accessed.

외부의 호스트 장치는 메모리 맵 된 액세스가 허용된 지속 메모리 영역(122)의 용량(10)을 메모리 맵 된 영역(32)인 제2 지속 메모리 영역(PMR)의 용량으로 식별할 수 있다. 외부의 호스트 장치는 제2 지속 메모리 영역(PMR)의 용량(12)에 가상 주소들(VA)을 할당하고, 가상 주소들(VA)을 이용하여 제2 지속 메모리 영역(PMR)의 용량(12)을 액세스할 수 있다.The external host device may identify the capacity 10 of the persistent memory area 122 to which the memory mapped access is permitted as the capacity of the second persistent memory area (PMR), which is the memory mapped area 32. The external host device allocates virtual addresses VA to the capacity 12 of the second persistent memory area PMR, and uses the virtual addresses VA to store the capacity 12 of the second persistent memory area PMR. ).

요약하면, 외부의 호스트 장치는 스토리지 장치(100)의 저장 용량들을 논리 블록 주소(LBA)가 할당되는 영역(31) 및 메모리 맵 된 영역(32)으로 식별할 수 있다. 외부의 호스트 장치가 논리 블록 주소(LBA)가 할당되는 영역(31) 중 사용자 영역의 용량(21)을 액세스할 때, 스토리지 장치는 외부의 호스트 장치의 요청에 따라 제1 및 제2 불휘발성 메모리 장치들을 액세스할 수 있다.In summary, the external host device may identify storage capacities of the storage device 100 as an area 31 to which a logical block address LBA is allocated and a memory mapped area 32. When an external host device accesses the capacity 21 of the user area in the area 31 to which the logical block address (LBA) is allocated, the storage device may first and second nonvolatile memory according to the request of the external host device. Devices can be accessed.

외부의 호스트 장치가 논리 블록 주소(LBA)가 할당되는 영역(31) 중 제1 지속 메모리 영역(PMR)의 용량(11)을 액세스(예를 들어, 읽기)할 때, 스토리지 장치는 외부의 호스트 장치의 요청에 따라 지속 메모리 영역(122)을 액세스(예를 들어, 읽기)할 수 있다.When an external host device accesses (eg, reads) the capacity 11 of the first persistent memory area (PMR) of the area 31 to which the logical block address (LBA) is allocated, the storage device is an external host. The persistent memory area 122 may be accessed (eg, read) at the request of the device.

외부의 호스트 장치가 논리 블록 주소(LBA)가 할당되는 영역(31) 중 제2 지속 메모리 영역(PMR)의 용량(12)을 액세스(예를 들어, 쓰기)할 때, 스토리지 장치는 외부의 호스트 장치의 요청에 따라 지속 메모리 영역(122)을 액세스(예를 들어, 쓰기)할 수 있다.When an external host device accesses (eg, writes) the capacity 12 of the second persistent memory area (PMR) of the area 31 to which the logical block address (LBA) is allocated, the storage device is an external host. The persistent memory area 122 may be accessed (eg, written) at the device's request.

제2 지속 메모리 영역(PMR)의 용량(12)은 사용자 데이터 및 파일 시스템의 수정 데이터(예를 들어, 메타 데이터)가 커밋(commit)되는 저널 영역으로 사용될 수 있다. 제1 지속 메모리 영역(PMR)의 용량(11)은 파일 시스템을 복구할 때 또는 저널 영역의 정보를 파일 시스템에 반영할 때 사용자 데이터 및 메타 데이터를 읽는 저널 영역으로 사용될 수 있다.The capacity 12 of the second persistent memory area PMR may be used as a journal area in which user data and modification data (eg, meta data) of the file system are committed. The capacity 11 of the first persistent memory area PMR may be used as a journal area for reading user data and metadata when restoring the file system or when reflecting information in the journal area to the file system.

도 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 storage device 100. For example, the normal access request may be a first type of access request including the logical block address (LBA) of the first and second nonvolatile memory devices 111 and 112.

인터페이스 블록(131)은 액세스 요청을 제1 제어 블록(133)에 전달할 수 있다. 제1 제어 블록(133)은 액세스 요청에 수반하는 동작들을 제어하며, 제1 매핑 테이블을 참조하여 논리 블록 주소(LBA)를 물리 블록 주소(PBA)로 변환할 수 있다. 제1 제어 블록(133)은 액세스 요청을 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로 전달할 수 있다.The interface block 131 may transmit an access request to the first control block 133. The first control block 133 controls operations accompanying an access request, and may convert the logical block address LBA into a physical block address PBA by referring to the first mapping table. The first control block 133 may transfer the access request to the first nonvolatile memory device 111 or the second nonvolatile memory device 112.

액세스 요청은 장치 메모리 영역(121)을 관여하여(involving) 처리될 수 있다. 예를 들어, 액세스 요청이 쓰기 요청일 때, 외부의 호스트 장치로부터 수신되는 사용자 데이터는 장치 메모리 영역(121)에 버퍼링 된 후에 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 기입될 수 있다. 액세스 요청이 읽기 요청일 때, 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 읽혀진 사용자 데이터는 장치 메모리 영역(121)에 버퍼링 된 후에 외부의 호스트 장치로 출력될 수 있다.The access request may be processed by involving the device memory area 121. For example, when the access request is a write request, the user data received from the external host device is buffered in the device memory area 121 and then the first nonvolatile memory device 111 or the second nonvolatile memory device 112 ). When the access request is a read request, user data read from the first nonvolatile memory device 111 or the second nonvolatile memory device 112 may be output to an external host device after being buffered in the device memory area 121. have.

도 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 storage device 100. For example, an access request based on MMIO may be a write to the journal area. Referring to FIG. 5, the interface block 131 may transmit an MMIO-based write request to the second control block 134.

제2 제어 블록(134)은 MMIO 기반 쓰기 요청에 수반하는 동작들을 제어하며, 제3 매핑 테이블을 참조하여 가상 주소(VA)를 물리 주소(PA)로 변환할 수 있다. 제2 제어 블록(134)은 물리 주소(PA)를 이용하여 메모리 제어 블록(136)을 통해 지속 메모리 영역(122)에 데이터, 예를 들어 메타 데이터를 기입할 수 있다.The second control block 134 controls operations accompanying the MMIO-based write request, and may convert the virtual address VA into a physical address PA by referring to the third mapping table. The second control block 134 may write data, for example, metadata, to the persistent memory area 122 through the memory control block 136 using the physical address PA.

도 6은 갑작스러운 전원 오프(SPO)가 발생한 때에 스토리지 장치(100)가 지속 메모리 영역(122)의 데이터를 백업하는 예를 보여준다. 도 3 및 도 6을 참조하면, 외부의 호스트 장치로부터 공급되는 전원이 차단된 때에, 보조 전원 블록(139)은 스토리지 장치(100)에 보조 전원을 공급할 수 있다.6 illustrates an example in which the storage device 100 backs up data in the persistent memory area 122 when a sudden power off (SPO) occurs. 3 and 6, when power supplied from an external host device is cut off, the auxiliary power block 139 may supply auxiliary power to the storage device 100.

보조 전원이 공급되는 동안, 제1 제어 블록(133)은 지속 메모리 영역(122)에 저장된 데이터를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 백업할 수 있다. 다른 예로서, 제1 제어 블록(133)은 지속 메모리 영역(122) 내의 특정 범위의 주소들을 저장할 수 있다. 보조 전원이 공급되는 동안, 제1 제어 블록(133)은 특정 범위에 저장된 데이터를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 백업할 수 있다.While the auxiliary power is supplied, the first control block 133 may back up data stored in the persistent memory area 122 to the first nonvolatile memory device 111 or the second nonvolatile memory device 112. As another example, the first control block 133 may store a specific range of addresses in the persistent memory area 122. While the auxiliary power is supplied, the first control block 133 may back up data stored in a specific range to the first nonvolatile memory device 111 or the second nonvolatile memory device 112.

예를 들어, 제1 제어 블록(133)은 지속 메모리 영역(122)에서 데이터가 저장되어 있던 주소들 및 지속 메모리 영역(122)과 연관된 제2 매핑 테이블 또는 제3 매핑 테이블을 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 함께 백업할 수 있다. 제1 제어 블록(133)은 장치 메모리 영역(121)에 저장된 데이터 중 백업이 필요한 데이터(예를 들어, 장치 메모리 영역(121)에 저장된 매핑 테이블과 같은 메타 데이터)를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에 함께 백업할 수 있다.For example, the first control block 133 may include addresses in which data is stored in the persistent memory area 122 and a second mapping table or a third mapping table associated with the persistent memory area 122 in the first nonvolatile memory. The device 111 or the second nonvolatile memory device 112 can be backed up together. The first control block 133 is a first nonvolatile memory device (e.g., meta data such as a mapping table stored in the device memory area 121) that needs to be backed up among data stored in the device memory area 121 ( 111) or the second nonvolatile memory device 112 together.

예를 들어, 지속 메모리 영역(122)으로부터 읽혀진 데이터는 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)의 사용자 영역의 용량(21)의 빈 저장 용량에 기입될 수 있다. 다른 예로서, 지속 메모리 영역(122)으로부터 읽혀진 데이터를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)의 초과 제공 영역의 용량(22)의 빈 저장 용량 기입될 수 있다.For example, data read from the persistent memory area 122 may be written to the empty storage capacity of the capacity 21 of the user area of the first nonvolatile memory device 111 or the second nonvolatile memory device 112. . As another example, the data read from the persistent memory area 122 may be written to the empty storage capacity of the capacity 22 of the excess providing area of the first nonvolatile memory device 111 or the second nonvolatile memory device 112. .

예를 들어, 지속 메모리 영역(122)으로부터 읽혀진 데이터는 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)의 고정된 저장 공간에 기입될 수 있다. 다른 예로서, 지속 메모리 영역(122)으로부터 읽혀진 데이터가 기입되는 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)의 저장 공간은 달라질 수 있다.For example, data read from the persistent memory area 122 may be written to a fixed storage space of the first nonvolatile memory device 111 or the second nonvolatile memory device 112. As another example, the storage space of the first nonvolatile memory device 111 or the second nonvolatile memory device 112 to which data read from the persistent memory area 122 is written may vary.

도 7은 외부의 호스트 장치로부터의 전원 공급이 재개된 때에, 스토리지 장치(100)가 데이터를 지속 메모리 영역(122)에 로드하여 복원하는 예를 보여준다. 도 7을 참조하면, 외부의 호스트 장치로부터 전원이 공급될 때, 제1 제어 블록(133)은 복원이 필요한 데이터가 존재하는지 판단할 수 있다.7 shows an example in which the storage device 100 loads data into the persistent memory area 122 and restores it when power supply from an external host device is resumed. Referring to FIG. 7, when power is supplied from an external host device, the first control block 133 may determine whether there is data requiring restoration.

예를 들어, 제1 제어 블록(133)은 지속 메모리 영역(122)의 데이터를 백업할 때에 추가되는 플래그 또는 정보를 확인함으로써, 복원이 필요한 데이터가 존재하는지 판단할 수 있다. 다른 예로서, 제1 제어 블록(133)은 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)에서 백업을 위해 저장된 저장 용량에 유효한 데이터가 존재하는지 검사함으로써, 복원이 필요한 데이터가 존재하는지 판단할 수 있다.For example, the first control block 133 may determine whether there is data that needs to be restored by checking flags or information added when backing up the data in the persistent memory area 122. As another example, the first control block 133 needs to be restored by checking whether there is valid data in the storage capacity stored for backup in the first nonvolatile memory device 111 or the second nonvolatile memory device 112. You can determine if data exists.

복원이 필요한 데이터가 존재하면, 제1 제어 블록(133)은 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 복원이 필요한 데이터를 읽을 수 있다. 제1 제어 블록(133)은 읽혀진 데이터를 지속 메모리 영역(122)에 로드함으로써, 복원을 수행할 수 있다.When data that needs to be restored exists, the first control block 133 can read data that needs to be restored from the first nonvolatile memory device 111 or the second nonvolatile memory device 112. The first control block 133 may perform restoration by loading the read data into the persistent memory area 122.

제1 제어 블록(133)은 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 백업된 주소들을 읽고, 읽혀진 주소들에 기반하여 데이터를 지속 메모리 영역(122)에 로드할 수 있다. 또한, 제1 제어 블록(133)은 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 백업된 제2 매핑 테이블 또는 제3 매핑 테이블을 읽고, 읽혀진 제2 매핑 테이블 또는 제3 매핑 테이블을 장치 메모리 영역(121) 또는 지속 메모리 영역(122)에 로드함으로써 복원을 완료할 수 있다.The first control block 133 reads the addresses backed up from the first nonvolatile memory device 111 or the second nonvolatile memory device 112 and loads data into the persistent memory area 122 based on the read addresses. can do. Also, the first control block 133 reads the second mapping table or the third mapping table backed up from the first nonvolatile memory device 111 or the second nonvolatile memory device 112, and reads the second mapping table or Restoration may be completed by loading the third mapping table into the device memory area 121 or the persistent memory area 122.

예를 들어, 제1 제어 블록(133)은 장치 메모리 영역(121)으로부터 백업된 데이터를 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로부터 읽고, 읽혀진 데이터를 장치 메모리 영역(121)에 로드함으로써 복원을 완료할 수 있다.For example, the first control block 133 reads data backed up from the device memory area 121 from the first nonvolatile memory device 111 or the second nonvolatile memory device 112 and reads the read data from the device memory Restoration can be completed by loading in the region 121.

도 8은 제어기(130)가 지속 메모리 영역(122)을 관리하는 예를 보여준다. 도 1 및 도 8을 참조하면, 제어기(130)는 지속 메모리 영역(122)을 세그먼트들(SEG1~SEG8)로 분할할 수 있다. 제어기(130)는 제1 내지 제8 세그먼트들(SEG1~SEG8) 중에서 고정된 위치의 세그먼트, 예를 들어 제1 세그먼트(SEG1)를 제1 영역으로 관리할 수 있다.8 shows an example in which the controller 130 manages the persistent memory area 122. 1 and 8, the controller 130 may divide the persistent memory area 122 into segments SEG1 to SEG8. The controller 130 may manage a segment at a fixed position among the first to eighth segments SEG1 to SEG8, for example, the first segment SEG1 as a first area.

제어기(130)는 나머지 제2 내지 제8 세그먼트들(SEG2~SEG8)을 제2 영역으로 관리할 수 있다. 갑작스러운 전원 오프(SPO)가 발생한 때에, 제어기(130)는 제1 영역(123)의 제1 세그먼트(SEG1)에 저장된 데이터를 백업하도록 구성될 수 있다. 예를 들어, 제1 세그먼트(SEG1)는 지속 메모리 영역(122)에서 가장 낮은 물리 주소 또는 가장 높은 물리 주소를 가질 수 있다.The controller 130 may manage the remaining second to eighth segments Seg2 to Seg8 as the second area. When a sudden power off (SPO) occurs, the controller 130 may be configured to back up data stored in the first segment SEG1 of the first area 123. For example, the first segment SEG1 may have the lowest physical address or the highest physical address in the persistent memory area 122.

또한, 제어기(130)는 제2 영역(124)의 제2 내지 제8 세그먼트들(SEG2~SEG8) 중에서 선택된 영역(125)의 제3 내지 제5 세그먼트들(SEG3~SEG5)에 저장된 데이터를 더 백업하도록 구성될 수 있다.In addition, the controller 130 further adds data stored in the third to fifth segments SEG3 to SEG5 of the selected region 125 among the second to eighth segments SEG2 to SEG8 in the second region 124. It can be configured to back up.

예를 들어, 제어기(130)는 선택된 영역(125)의 제3 내지 제5 세그먼트들(SEG3~SEG5)의 주소들을 저장할 수 있다. 갑작스러운 전원 오프(SPO)가 발생한 때에, 제어기(130)는 저장된 주소에 기반하여 선택된 영역(125)의 제3 내지 제5 세그먼트들(SEG3~SEG5)의 데이터를 백업할 수 있다.For example, the controller 130 may store addresses of the third to fifth segments SEG3 to SEG5 of the selected area 125. When a sudden power off (SPO) occurs, the controller 130 may back up data of the third to fifth segments SEG3 to SEG5 of the selected area 125 based on the stored address.

예를 들어, 제1 영역(123)의 제1 세그먼트는 저널 영역의 슈퍼 블록(super block)을 저장하도록 구성될 수 있다. 슈퍼 블록은 저널 영역에 데이터가 저장된 위치, 길이 등에 대한 정보를 포함할 수 있다. 슈퍼 블록이 저장되는 위치는 고정되므로, 제어기(130)는 슈퍼 블록이 저장되는 고정된 제1 영역(123)의 데이터를 백업할 수 있다.For example, the first segment of the first area 123 may be configured to store a super block of the journal area. The super block may include information about a location, length, etc. in which data is stored in the journal area. Since the location where the super block is stored is fixed, the controller 130 can back up the data of the fixed first region 123 where the super block is stored.

제2 영역(124)은 저널 영역의 사용자 데이터 및 메타 데이터를 저장하도록 구성될 수 있다. 제어기(130)는 제2 영역(124)에서 선택된 영역(125)에 대해서만 불휘발성(non-volatility)을 보장할 수 있다. 외부의 호스트 장치가 제2 영역(124)에 기입하는 데이터의 사이즈가 선택된 영역(125)의 용량보다 크면, 데이터의 일부에 대해 불휘발성이 보장되지 않을 수 있다.The second area 124 may be configured to store user data and metadata in the journal area. The controller 130 can ensure non-volatility only for the region 125 selected in the second region 124. When the size of the data written by the external host device to the second area 124 is larger than the capacity of the selected area 125, non-volatility may not be guaranteed for a part of the data.

이와 같은 문제를 방지하기 위하여, 본 발명의 실시 예에 따른 스토리지 장치(100)는 플러시 요청을 지원할 수 있다. 외부의 호스트 장치로부터 플러시 요청이 수신되면, 제어기(130)는 외부의 호스트 장치로부터 제2 영역(124)에 기입되는 데이터의 불휘발성을 보장하기 위한 동작을 수행할 수 있다.In order to prevent such a problem, the storage device 100 according to an embodiment of the present invention may support a flush request. When a flush request is received from an external host device, the controller 130 may perform an operation to ensure non-volatile data being written to the second area 124 from the external host device.

도 9는 스토리지 장치(100)가 플러시 요청을 처리하는 예를 보여준다. 도 10은 플러시 요청에 의해 지속 메모리 영역(122)이 관리되는 예를 보여준다. 도 9 및 도 10을 참조하면, 외부의 호스트 장치로부터 플러시 요청이 수신될 수 있다. 플러시 요청에 응답하여, 제1 제어 블록(133)은 지속 메모리 영역(122)으로부터 데이터를 읽을 수 있다.9 shows an example in which the storage device 100 processes a flush request. 10 shows an example in which the persistent memory area 122 is managed by the flush request. 9 and 10, a flush request may be received from an external host device. In response to the flush request, the first control block 133 can read data from the persistent memory area 122.

예를 들어, 선택된 영역(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 area 125 is indicated by a head pointer, and the fifth segment (SEG5) at the end of the selected area 125 has a tail pointer. Can point. The first control block 133 may read data of the segment indicated by the head pointer, for example, the third segment (SEG3).

저널 영역에 기입되는 사용자 데이터는 데이터 및 논리 블록 주소(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 first control block 133 may convert the logical block address LBA into a physical block address PBA. The first control block 133 may write user data to the first nonvolatile memory device 111 or the second nonvolatile memory device 112 based on the physical block address PBA.

즉, 플러시 요청에 응답하여, 선택된 영역(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 area 125 is selected as the flush area 126, and the data of the flush area 126 is the first nonvolatile memory device 111 ) Or the second nonvolatile memory device 112. Therefore, non-volatile data for the third segment SEG3 is guaranteed.

플러시가 수행된 후에, 제어기(130)는 플러시 영역(126)의 제3 세그먼트(SEG3)를 선택된 영역(125)으로부터 제거할 수 있다. 따라서, 헤드 포인터는 제4 세그먼트(SEG4)를 가리키도록 갱신될 수 있다. 제어기(130)는 선택된 영역(125)의 테일 포인터에 후속하는 제6 세그먼트(SEG6)를 선택된 영역(125)에 포함시킬 수 있다. 따라서, 테일 포인터는 제6 세그먼트(SEG6)를 포함하도록 갱신될 수 있다.After the flush is performed, the controller 130 may remove the third segment SEG3 of the flush region 126 from the selected region 125. Accordingly, the head pointer can be updated to point to the fourth segment SEG4. The controller 130 may include the sixth segment SEG6 following the tail pointer of the selected area 125 in the selected area 125. Accordingly, the tail pointer can be updated to include the sixth segment (SEG6).

이와 같이, 제어기(130)는 선택된 영역(125)을 제2 영역(124) 내에서 링 버퍼(ring buffer)와 같은 방식으로 할당할 수 있다. 예를 들어, 제어기(130)는 선택된 영역(125)의 적어도 두 개의 세그먼트들 중 가장 낮은 주소를 갖는 세그먼트(또는 헤드 포인터가 가리키는 세그먼트)에 저장된 데이터를 불휘발성 메모리 장치(111 또는 112)에 기입하고, 이후에 가장 낮은 주소를 갖는 세그먼트를 선택 해제할 수 있다.As such, the controller 130 may allocate the selected area 125 in the second area 124 in the same way as a ring buffer. For example, the controller 130 writes data stored in the segment having the lowest address (or the segment indicated by the head pointer) among at least two segments of the selected area 125 to the nonvolatile memory device 111 or 112. Then, the segment with the lowest address can be deselected.

제어기(130)는 선택된 영역(125)의 적어도 두 개의 제2 세그먼트들의 주소들 중 가장 높은 주소와 연속하며 가장 높은 주소보다 높은 주소에 대응하는 세그먼트(예를 들어, 테일 포인터가 가리키는 세그먼트)를 선택된 영역(125)으로서 더 선택할 수 있다. 즉, 선택된 영역(125)의 용량이 부족하면, 제어기(130)는 선택된 영역(125)의 선두의 데이터를 플러시하고, 선택된 영역(125)을 이동시킬 수 있다. 따라서, 외부의 호스트 장치에 의해 기입되는 데이터의 불휘발성이 보장된다.The controller 130 selects a segment (eg, a segment pointed to by a tail pointer) corresponding to an address that is higher than the highest address among the addresses of at least two second segments of the selected area 125 and the highest address. It can be further selected as the region 125. That is, when the capacity of the selected area 125 is insufficient, the controller 130 may flush data at the head of the selected area 125 and move the selected area 125. Thus, non-volatile data is written by an external host device.

예를 들어, 플러시 요청에 따른 제1 불휘발성 메모리 장치(111) 또는 제2 불휘발성 메모리 장치(112)로의 쓰기 동작은 높은 우선 순위를 가질 수 있다. 플러시 요청의 쓰기 동작은 다른 쓰기 동작 또는 읽기 동작보다 우선하여 수행될 수 있다. 플러시 요청의 쓰기 동작을 우선 수행함으로써, 제어기(130)는 외부의 호스트 장치의 저널 영역 쓰기의 레이턴시를 줄일 수 있다.For example, a write operation to the first nonvolatile memory device 111 or the second nonvolatile memory device 112 according to the flush request may have a high priority. The write operation of the flush request may be performed in preference to other write operations or read operations. By first performing the write operation of the flush request, the controller 130 can reduce the latency of writing the journal area of the external host device.

도 11은 제어기(130)가 논리 블록 주소(LBA) 기반의 읽기 요청을 처리하는 예를 보여준다. 도 3 및 도 11을 참조하면, 논리 블록 주소(LBA)는 논리 블록 주소(LBA)가 할당되는 제1 지속 메모리 영역(PMR)의 용량(11)을 가리킬 수 있다.11 shows an example in which the controller 130 processes a read request based on a logical block address (LBA). 3 and 11, the logical block address LBA may indicate the capacity 11 of the first persistent memory area PMR to which the logical block address LBA is allocated.

제1 제어 블록(133)은 제2 매핑 테이블을 참조하여 논리 블록 주소(LBA)를 물리 주소(PA)로 변환할 수 있다. 제1 제어 블록(133)은 물리 주소(PA)를 이용하여 지속 메모리 영역(122)으로부터 데이터를 읽을 수 있다.The first control block 133 may convert the logical block address LBA into a physical address PA by referring to the second mapping table. The first control block 133 may read data from the persistent memory area 122 using the physical address PA.

도 12는 컴퓨팅 시스템(200)의 예를 보여준다. 도 3 및 도 12를 참조하면, 컴퓨팅 시스템(200)은 프로세서(210), 주 메모리(220), 루트 컴플렉스(230), 그리고 스토리지 장치(240)를 포함한다. 프로세서(210)는 운영 체제 및 응용들을 구동할 수 있다. 프로세서(210)는 중앙 처리부(CPU) 또는 응용 프로세서를 포함할 수 있다.12 shows an example of a computing system 200. 3 and 12, the computing system 200 includes a processor 210, a main memory 220, a root complex 230, and a storage device 240. The processor 210 may drive operating systems and applications. The processor 210 may include a central processing unit (CPU) or an application processor.

주 메모리(220)는 프로세서(210)에 의해 사용되는 시스템 메모리일 수 있다. 주 메모리(220)는 동적 랜덤 액세스 메모리를 포함할 수 있다. 프로세서(210)는 스토리지 장치(240)에 저장된 사용자 데이터 및 파일 시스템과 같은 메타 데이터를 주 메모리(220)에 로드하여 사용할 수 있다.The main memory 220 may be system memory used by the processor 210. The main memory 220 may include dynamic random access memory. The processor 210 may load and use user data stored in the storage device 240 and meta data such as a file system in the main memory 220.

루트 컴플렉스(230)는 프로세서(210)가 주변 장치들을 제어하기 위한 수단들을 제공할 수 있다. 스토리지 장치(240)는 루트 컴플렉스(230)에 연결될 수 있다. 스토리지 장치(240)는 도 1 내지 도 11을 참조하여 설명된 스토리지 장치(100)를 포함할 수 있다. 프로세서(210)의 관점에서, 스토리지 장치(240)는 논리 블록 주소(LBA)가 할당되는 사용자 영역(241), 논리 블록 주소(LBA)가 할당되는 제1 지속 메모리 영역(242), 그리고 메모리 맵 된 제2 지속 메모리 영역(243)을 포함하는 것으로 보여질 수 있다.The root complex 230 may provide means for the processor 210 to control peripheral devices. The storage device 240 may be connected to the root complex 230. The storage device 240 may include the storage device 100 described with reference to FIGS. 1 to 11. From the perspective of the processor 210, the storage device 240 includes a user area 241 to which a logical block address (LBA) is allocated, a first persistent memory area 242 to which a logical block address (LBA) is allocated, and a memory map. It can be seen as including the second persistent memory area 243.

도 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 processor 210 updates the first user data D1. 12 and 13, the first application, the second application, and the third application driven by the processor 210 are a first thread (T1), a second thread (T2), and a third thread (T3), respectively. You can run

제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 storage device 240. At this time, as described with reference to FIG. 5, instead of storing the modified first user data D1 in the main memory 220, the first application first persistent memory area 242 of the storage device 240 That is, you can write directly in the journal area.

예를 들어, 제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 persistent memory area 242 is a memory mapped area. Accordingly, the first application or journal driver driven by the processor 210 may directly write the first user data D1 in units of bytes to the first persistent memory area 242.

예를 들어, 제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 persistent memory area 242 which is a journal area as part of the first transaction TX1. As the first user data D1 is modified, the file system associated with the first user data D1 may be modified. The journal driver may store the modified data of the file system in the main memory 220 as the first meta data M1.

저널 드라이버는 파일 시스템의 수정들에 대한 정보를 포함하는 제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 main memory 220. As the first meta data M1 indicating the modification of the file system is stored in the main memory 220, the journal driver writes information indicating the location of the first meta data M1 to the first bitmap B1. You can.

도 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 computing system 200 may be a block (eg, a logical block). The computing system 200 may write and read the user area 241 of the storage device 240 in units of blocks.

예를 들어, 제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 processor 210 wants to access the first user data D1, the four blocks of the first user data D1 are the main memory 220 from the user area 241 of the storage device 240. ).

프로세서(210)의 제1 응용은 주 메모리(220)에 로드된 제1 사용자 데이터(D1)를 바이트 단위로 액세스할 수 있다. 예를 들어, 프로세서(210)의 제1 응용은 제1 사용자 데이터(D1)를 바이트 단위로 수정할 수 있다. 프로세서(210)의 제1 응용에 의해 수정된 부분은 제1 사용자 데이터(D1)에서 사선으로 채워진 영역들일 수 있다.The first application of the processor 210 may access the first user data D1 loaded in the main memory 220 in units of bytes. For example, the first application of the processor 210 may modify the first user data D1 in units of bytes. A portion modified by the first application of the processor 210 may be areas filled with diagonal lines in the first user data D1.

프로세서(210)의 제1 응용이 제1 사용자 데이터(D1)를 수정함에 따라, 제1 사용자 데이터(D1)는 저널 영역인 제1 지속 메모리 영역(242)에 기입될 수 있다. 제1 사용자 데이터(D1)가 수정됨에 따라, 제1 사용자 데이터(D1)에 대응하는 파일 시스템(FS) 또한 수정될 수 있다.As the first application of the processor 210 modifies the first user data D1, the first user data D1 may be written in the first persistent memory area 242, which is a journal area. As the first user data D1 is modified, the file system FS corresponding to the first user data D1 may also be modified.

예를 들어, 파일 시스템(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 processor 210, instead of waiting for the entire block of the file system (FS) to commit (commit), the first meta data (M1) only four sub-blocks modified in the block of the file system (FS) As it can be queued for a commit. Information indicating the positions of the first meta data M1 in the block of the file system FS may be recorded in the first bitmap B1.

예를 들어, 제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 persistent memory area 242 that is the journal area when performing the commit is reduced, and the time of the commit is reduced.

또한, 제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 persistent memory area 242, which is a journal area, instead of waiting for a commit. Therefore, since it is not necessary to write the first user data D1 when performing the commit, the amount of data of the commit is reduced, and the time of the commit is reduced.

도 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 persistent memory area 242 which is the journal area. .

제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 processor 210 may modify the file system's correction data corresponding to the second user data D2 as second meta data. It can be stored in the main memory 220 as (M2). In addition, the journal driver of the processor 210 may record the positions of the second meta data M2 in the first bitmap B1.

도 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 persistent memory area 242 as a journal area. .

제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 processor 210 converts the modification data of the file system corresponding to the third user data D3 to third meta data. It can be stored in the main memory 220 as (M3). In addition, the journal driver of the processor 210 may record the positions of the third meta data M3 in the first bitmap B1.

제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 persistent memory area 242 as a journal area. . As the fourth user data D4 is corrected, as described with reference to FIG. 14, the journal driver of the processor 210 may modify the file system correction data corresponding to the fourth user data D4 as fourth metadata. It can be stored in the main memory 220 as (M4). In addition, the journal driver of the processor 210 may record the positions of the fourth meta data M4 in the first bitmap B1.

도 17은 도 16에 후속하여 컴퓨팅 시스템(200)에서 커밋이 수행되는 예를 보여준다. 도 12, 도 16 및 도 17을 참조하면, 제1 트랜잭션(TX1)의 데이터의 양이 저널 드라이버에 의해 지정된 문턱에 도달함에 따라, 또는 제1 내지 제3 응용들 중 어느 하나가 동기화를 요청함에 따라, 커밋이 수행될 수 있다. 커밋이 수행되는 동안, 제1 내지 제3 응용들의 사용자 데이터의 수정은 차단될 수 있다.17 shows an example in which the commit is performed in the computing system 200 subsequent to FIG. 16. 12, 16, and 17, as the amount of data of the first transaction TX1 reaches a threshold specified by the journal driver, or any one of the first to third applications requests synchronization Accordingly, a commit can be performed. While the commit is being performed, modification of the user data of the first to third applications may be blocked.

도 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 processor 210 uses the first to fourth meta data M1 to M4 stored in the main memory 220 as a part of the first transaction TX1. It is possible to write to the first persistent memory area 242. In addition, the journal driver of the processor 210 converts the first bitmap B1 stored in the main memory 220 into a second bitmap B2 as part of the first transaction TX1, and is the first persistent memory area that is a journal area. (242).

프로세서(210)의 저널 드라이버는 커밋이 완료되었음을 알리는 커밋 마크(CM)를 제1 트랜잭션(TX1)의 일부로서 저널 영역인 제1 지속 메모리 영역(242)에 기입할 수 있다. 커밋 마크(CM)가 추가됨에 따라, 제1 트랜잭션(TX1)은 완료될 수 있다. 예시적으로, 커밋이 완료됨에 따라, 제1 비트맵(B1)은 초기화될 수 있다.The journal driver of the processor 210 may write a commit mark CM indicating that the commit is completed in the first persistent memory area 242 which is a journal area as part of the first transaction TX1. As the commit mark CM is added, the first transaction TX1 may be completed. For example, as the commit is completed, the first bitmap B1 may be initialized.

이와 같이, 커밋은 제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 storage device 240 and the computing system 200 is improved.

도 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 memory area 242. The fifth to seventh metadata M5 to M7 respectively corresponding to the fifth to seventh user data D5 to D7 may be stored in the main memory 220. The positions of the fifth to seventh metadata M5 to M7 may be recorded in the first bitmap B1.

상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(100 또는 240)는 동적 랜덤 액세스 메모리(120)의 저장 용량의 일부를 바이트 단위의 액세스가 가능한 메모리 맵 된 영역(예를 들어, 지속 메모리 영역(122 또는 242))으로서 프로세서(210)에 공개할 수 있다. 따라서, 도 5를 참조하여 설명된 바와 같이, 프로세서(210)의 응용 또는 운영 체제는 수정한 사용자 데이터를 지속 메모리 영역(122 또는 242)에 직접 기입할 수 있다.As described above, the storage device 100 or 240 according to an embodiment of the present invention is a memory-mapped area (eg, persistent memory) capable of accessing a portion of the storage capacity of the dynamic random access memory 120 in bytes. Region 122 or 242) to the processor 210. Accordingly, as described with reference to FIG. 5, the application or operating system of the processor 210 may directly write the modified user data to the persistent memory area 122 or 242.

수정한 사용자 데이터를 직접 기입함으로써, 그리고 파일 시스템의 수정 데이터만을 메타 데이터로서 커밋을 위해 대기시킴으로써, 컴퓨팅 시스템(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 computing system 200 performs the commit is reduced, and the time of the commit is reduced.

도 11을 참조하여 설명된 바와 같이, 지속 메모리 영역(122 또는 243)의 데이터가 갑작스러운 전원 오프(SPO) 이후에 복원된 후에, 프로세서(210)의 저널 드라이버는 커밋된 트랜잭션(예를 들어, TX1)을 읽어 파일 시스템을 복원할 수 있다. 또는, 커밋된 트랜잭션(TX1)을 사용자 영역(121 또는 241)에 반영할 때, 프로세서(210)의 저널 드라이버는 지속 메모리 영역(122 또는 243)으로부터 커밋된 트랜잭션(TX1)을 읽을 수 있다.As described with reference to FIG. 11, after data in the persistent memory area 122 or 243 has been restored after a sudden power off (SPO), the journal driver of the processor 210 may perform a committed transaction (eg, TX1) to restore the file system. Alternatively, when the committed transaction TX1 is reflected in the user area 121 or 241, the journal driver of the processor 210 may read the committed transaction TX1 from the persistent memory area 122 or 243.

지속 메모리 영역(122 또는 243)에서 수행되는 읽기는 논리 블록 주소(LBA)에 기반하여 수행될 수 있다. PCIe 또는 NVMe의 MMIO 모드 및 블록 단위의 입력 및 출력을 비교할 때, 데이터의 양이 증가할수록 MMIO의 읽기보다 블록 단위의 읽기의 속도가 더 높게 나타난다. 지속 메모리 영역(122)에 대해 MMIO 기반 쓰기를 허용하고 그리고 블록 기반 읽기를 허용함으로써, 커밋된 트랜잭션(TX1)의 읽기 속도가 더 향상될 수 있다.The read performed in the persistent memory area 122 or 243 may be performed based on a logical block address (LBA). When comparing the input and output of the MMIO mode and block unit of PCIe or NVMe, the read speed of block unit is higher than that of MMIO as the amount of data increases. By allowing MMIO-based writes to the persistent memory area 122 and allowing block-based reads, the read speed of the committed transaction TX1 can be further improved.

상술된 바와 같이, 제1, 제2, 제3 등의 용어들을 사용하여 스토리지 장치(100)의 구성 요소들이 설명되었다. 그러나 제1, 제2, 제3 등과 같은 용어들은 구성 요소들을 서로 구별하기 위해 사용되며, 본 발명을 한정하지 않는다. 예를 들어, 제1, 제2, 제3 등과 같은 용어들은 순서 또는 임의의 형태의 수치적 의미를 내포하지 않는다.As described above, the components of the storage device 100 have been described using terms such as first, second, and third. However, terms such as first, second, and third are used to distinguish components from each other, and do not limit the present invention. For example, terms such as first, second, third, etc., do not imply numerical meaning in any order or in any form.

상술된 실시 예들에서, 블록들을 사용하여 본 발명의 실시 예들에 따른 구성 요소들이 참조되었다. 블록들은 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.
제1항에 있어서,
상기 제어기는 상기 제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항에 있어서,
통상 모드에서, 상기 제어기는 상기 제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.
제1항에 있어서,
상기 외부의 호스트 장치로부터 수신되는 요청이 상기 사용자 영역을 가리키는 논리 블록 주소를 포함할 때, 상기 제어기는 상기 요청을 상기 불휘발성 메모리 장치로 전달하고, 그리고
상기 요청이 상기 제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.
제1항에 있어서,
상기 외부의 호스트 장치로부터 수신되는 요청이 상기 제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.
제1항에 있어서,
상기 외부의 호스트 장치로부터의 전원이 차단된 때에 보조 전원을 공급하도록 구성되는 보조 전원을 더 포함하고,
상기 전원이 차단된 후에 상기 보조 전원이 공급될 때에, 상기 제어기는 상기 제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.
제6항에 있어서,
상기 보조 전원은 상기 전원이 공급될 때에 충전되는 탄탈캡 또는 슈퍼캡을 포함하는 스토리지 장치.
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.
제6항에 있어서,
상기 불휘발성 메모리 장치는 상기 외부의 호스트 장치에 의해 보여지지 않는 초과 제공 영역을 더 포함하고,
상기 제어기는 상기 제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.
제6항에 있어서,
상기 제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.
제9항에 있어서,
상기 제어기는 상기 세그먼트들 중 가장 낮은 주소 또는 가장 높은 주소의 제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.
제10항에 있어서,
상기 제어기는 상기 외부의 호스트 장치의 요청에 따라 상기 적어도 두 개의 제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.
제11항에 있어서,
상기 요청에 응답하여, 상기 제어기는 상기 적어도 두 개의 제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.
제12항에 있어서,
상기 데이터는 논리 블록 주소를 포함하고,
상기 제어기는 상기 데이터의 상기 논리 블록 주소를 상기 불휘발성 메모리 장치의 물리 블록 주소로 변환하고, 그리고 상기 물리 블록 주소에 기반하여 상기 데이터를 상기 불휘발성 메모리 장치에 기입하는 스토리지 장치.
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.
제10항에 있어서,
상기 제어기는 링 버퍼(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.
제1항에 있어서,
상기 제어기는 상기 제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.
제16항에 있어서,
상기 외부의 호스트 장치로부터의 전원이 차단된 때에 보조 전원을 공급하도록 구성되는 보조 전원을 더 포함하고,
상기 전원이 차단된 후에 상기 보조 전원이 공급될 때에, 상기 제어기는 상기 선택된 세그먼트들에 저장된 데이터를 상기 불휘발성 메모리 장치로 백업하도록 더 구성되고, 그리고
상기 외부의 호스트 장치로부터 상기 전원이 다시 공급될 때에, 상기 제어기는 상기 백업된 데이터를 상기 선택된 세그먼트들에 로드하도록 더 구성되는 스토리지 장치.
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.
제16항에 있어서,
상기 제어기는 상기 제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.
제16항에 있어서,
상기 제어기는 상기 제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.
KR1020190038028A 2018-09-20 2019-04-01 Storage device and operating method of storage device KR20200034560A (en)

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)

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