WO2017195928A1 - 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스 - Google Patents

플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스 Download PDF

Info

Publication number
WO2017195928A1
WO2017195928A1 PCT/KR2016/006053 KR2016006053W WO2017195928A1 WO 2017195928 A1 WO2017195928 A1 WO 2017195928A1 KR 2016006053 W KR2016006053 W KR 2016006053W WO 2017195928 A1 WO2017195928 A1 WO 2017195928A1
Authority
WO
WIPO (PCT)
Prior art keywords
partition
flash
entity
namespace
entities
Prior art date
Application number
PCT/KR2016/006053
Other languages
English (en)
French (fr)
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 주식회사 맴레이
Publication of WO2017195928A1 publication Critical patent/WO2017195928A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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]

Definitions

  • Flash memory a nonvolatile memory among semiconductor memories, has advantages such as high programming speed, low power consumption, and large data storage. Therefore, storage based on flash memory is widely used as a storage device to replace a hard disk. Flash-based storage devices include solid state drives (SSDs), secure digital (SD) cards, and universal serial bus (USB) flash drives.
  • SSDs solid state drives
  • SD secure digital
  • USB universal serial bus
  • Flash-based storage devices such as SSDs, include a plurality of flash chips (or referred to as "flash memory packages") to provide high capacity.
  • the plurality of flash chips may be connected to a flash memory bus (or channel).
  • the SSD may include a plurality of processors and separate memory to provide high performance.
  • the firmware of the SSD virtualizes a plurality of flash chips and shows them to the host as a storage device that can read / write block by block. Thus, the host can see and use the SSD as a block device.
  • the host Since the host views and uses the SSD as a block device, the host cannot control the physical placement of data stored on the SSD. Also, the host cannot control resources (processor, flash chip, channel, etc.) inside the SSD by data stream. As a result, the host cannot provide differentiated services for each data stream or separate resource usage between different services.
  • One embodiment of the present invention provides a flash-based storage device that can be provided as a plurality of independent block devices and a computing device including the same.
  • a flash-based storage device comprising a plurality of partition entities and a flash controller.
  • the flash controller includes a plurality of flash translation layers respectively corresponding to the plurality of partition entities, each partition entity including a flash memory chip.
  • Each flash translation layer maps a logical address from a host to a physical address of a corresponding partition entity, and the flash controller assigns the plurality of partition entities to a plurality of namespaces according to a first command from the host.
  • Each namespace may be provided as a block device independent of the host.
  • Each namespace may use a flash translation layer corresponding to a partition entity assigned thereto among the plurality of partition entities.
  • It may include a plurality of buses connected in parallel with the flash controller, the flash memory chip is connected to each bus.
  • the plurality of buses may be grouped into the plurality of partition entities.
  • the flash controller may further include a plurality of processors, and each processor may be assigned to at least one partition entity of the plurality of partition entities.
  • Each processor may be assigned to only one partition entity of the plurality of partition entities.
  • the flash controller returns a value including the number of the plurality of partition entities and information on each partition entity to the host in response to a second command from the host, and in response to the return in response to the second command.
  • the first command may be received.
  • the information on each partition entity may include an identifier of a corresponding partition entity and a size of a corresponding partition entity.
  • the first command may include a list of partition entities allocated to a corresponding namespace.
  • the first command may further include a size of a corresponding namespace.
  • the plurality of partition entities includes a first partition entity and a second partition entity
  • the plurality of namespaces include a first namespace including a first partition entity and a second namespace including a second partition entity. It may include.
  • the plurality of partition entities may further include a third partition entity, and the first namespace may further include the third partition entity.
  • the plurality of partition entities includes a first partition entity and a second partition entity
  • the plurality of namespaces includes a first namespace that includes a portion of a first partition entity and another portion of the first partition entity. May include a second namespace.
  • a flash based storage device including a plurality of buses and a flash controller.
  • Each of the buses is connected to a flash memory chip.
  • the flash controller groups the plurality of buses into a plurality of partition entities, and includes a plurality of flash translation layers respectively corresponding to the plurality of partition entities.
  • Each flash translation layer maps a logical address from the host to the physical address of the corresponding partition entity.
  • the flash controller receives from the host a first partition entity identifier assigned to a first namespace and a second partition entity identifier assigned to a second namespace, and is assigned to an identifier of the first partition entity among the plurality of partition entities.
  • the corresponding first partition entity may be managed as the first namespace
  • the second partition entity corresponding to the identifier of the second partition entity may be managed as the second namespace.
  • the first and second namespaces may be recognized as independent block devices.
  • the first partition entity and the second partition entity may be different partition entities.
  • the first partition entity and the second partition entity are the same partition entity, and the flash controller manages a portion of the same partition entity as the first namespace, and another part of the same partition entity as the second namespace. Can be managed with.
  • the flash controller may further receive the size of the first namespace and the size of the second namespace from the host.
  • a part of the same partition entity managed by the first namespace corresponds to the size of the first namespace
  • a part of the same partition entity managed by the second namespace is the size of the second namespace. It can correspond to.
  • the flash controller transmits the number of partition entities and information on each partition entity to the host, and the information on each partition entity may include an identifier of a corresponding partition entity and a size of a corresponding partition entity. Can be.
  • a computing device including a host, the flash-based storage device described above, and an interface connecting the host and the flash-based storage device.
  • the host may divide the flash-based storage into a plurality of block address spaces, and use each block address space as a separate block device.
  • FIG. 1 is a schematic block diagram of a computing device in accordance with one embodiment of the present invention.
  • FIG. 2 is a schematic block diagram of a flash-based storage device according to an embodiment of the present invention.
  • FIG. 3 is a diagram schematically illustrating a flash-based storage device according to an embodiment of the present invention.
  • FIG. 4 is a schematic view of a flash-based storage device according to another embodiment of the present invention.
  • 5, 6, 7, 8, 9, and 10 are diagrams schematically illustrating a flash-based storage device according to various embodiments of the present disclosure.
  • FIG. 11 is a diagram schematically illustrating a procedure for forming a namespace in a flash-based storage device according to an embodiment of the present invention.
  • FIG. 1 is a schematic block diagram of a computing device according to an embodiment of the present invention
  • FIG. 2 is a schematic diagram of the flash-based storage device shown in FIG.
  • a computing device includes a host 100, a flash-based storage device 200, and a storage interface 300.
  • a host 100 includes a host 100, a flash-based storage device 200, and a storage interface 300.
  • a storage interface 300 includes a storage interface 300.
  • 1 is an example of a possible computing device, and may be implemented in other various structures of the computing device according to one embodiment of the invention.
  • the computing device may be any one of various types of computing devices.
  • Various types of computing devices include mobile phones, such as smartphones, tablet computers, laptop computers, desktop computers, multimedia players, and game consoles. (game console), television, various types of internet of things (IoT) devices, and the like.
  • mobile phones such as smartphones, tablet computers, laptop computers, desktop computers, multimedia players, and game consoles. (game console), television, various types of internet of things (IoT) devices, and the like.
  • IoT internet of things
  • the host 100 is connected to the flash-based storage device 200 to process data of the flash-based storage device 200.
  • the host 100 may include a central processing unit (CPU) 110 and a memory 120, and a system bus 130 connecting the CPU 110 and the memory 120. have.
  • the flash-based storage device 200 is a storage device based on flash memory.
  • flash-based storage devices include solid state drives (SSDs), secure digital (SD) cards, and universal serial bus (USB) flash drives.
  • SSDs solid state drives
  • SD secure digital
  • USB universal serial bus
  • One embodiment of the present invention will be described as a flash-based storage device 200 is an example of a flash-based storage device.
  • the SSD 200 includes a plurality of flash memory chips 210, a plurality of flash buses 220, and a flash controller 230.
  • Each flash memory chip 210 may be a flash memory package including a flash memory having a predetermined capacity.
  • the flash memory may include, for example, NAND flash memory or NOR flash memory as nonvolatile memory.
  • the flash memory may be a NAND flash memory.
  • Each bus 220 is connected to a predetermined number of flash memory chips 210 to form a channel.
  • the plurality of buses 220 are connected in parallel to the flash controller 230.
  • bus 220 may include an input / output (I / O) bus for communicating data with flash memory chip 210.
  • the bus 220 may further include a control bus for transmitting addressing commands, control information, and the like to the flash memory chip 210.
  • FIG. 2 for example, eight flash memory chips 210 are connected to one bus 220, and for example, eight channels CH0, CH1, CH2, CH3, CH4, CH5 and CH6 are connected to the SSD 200.
  • CH7 is formed, the number of flash memory chips 210 and the number of channels are not limited thereto.
  • the number of flash memory chips 210 connected to one bus 220 may be different from the number of flash memory chips 210 connected to another bus 220.
  • the flash controller 230 performs an interface between the host 100 and the flash memory chip 210 and manages the host to view and read / write the flash memory chip 210 of the SSD 200 as a block device. do.
  • the controller 230 includes a flash translation layer (FTL).
  • the flash translation layer maps a logical address generated in the file system of the host 110 and a physical address of the flash memory chip 210. Accordingly, the flash translation layer may perform an address translation process for a read / write operation of the flash memory chip 210 based on the logical address received from the file system of the host 110.
  • the SSD 200 may read / write in units of pages and erase in units of blocks. Pages of a predetermined size may be collected to form a block. For example, 256 8KB pages can form one block. Accordingly, the physical address may be an address indicating a page and / or a block, and the logical address may be a sector address used by the host.
  • the flash memory chip 210 may include a plurality of blocks. In another embodiment, a plurality of blocks may be gathered to form a plane. For example, 1024 blocks can form one plane. In this case, the flash memory chip 210 may include a plurality of planes.
  • the flash translation layer may be implemented by firmware of flash controller 230.
  • the firmware may be stored in a memory inside the controller 230.
  • the memory storing the firmware may be, for example, a nonvolatile memory.
  • the Flash translation layer may use a table (hereafter referred to as an "FTL table") for address mapping.
  • FTL table may be stored in a memory inside the controller 230.
  • the memory storing the FTL table may be, for example, nonvolatile memory.
  • the flash controller 230 may include a plurality of processors (not shown) to provide high performance.
  • the processor may be a CPU.
  • the flash controller 230 may further include a memory (not shown) for the operation of the plurality of processors.
  • the memory may be volatile memory.
  • the volatile memory may be dynamic random access memory (DRAM).
  • interface 300 connects the host 100 and the SSD 200.
  • interface 300 may use a block-based storage interface protocol.
  • interface 300 may include a non-volatile memory express (NVMe), a peripheral component interconnect express (PCIe), a small computer system interface (SCSI), a serial attached SCSI (SAS), a serial AT attachment (SATA), or an eMMC ( protocols such as embedded multimediacard) can be used.
  • the host 100 may further include a host bus adapter 140 for connecting the host 100 and the SSD 200.
  • a plurality of channels CH0-CH7 may be bundled into one namespace.
  • the host 100 when the host 100 writes data to the SSD 200, the host may transmit only a logical address, and thus the host 100 may not control which channel to write the data to.
  • the application of the application requiring high bandwidth may be separated. Performance may be degraded.
  • the entire flash memory chip can simply be separated into two or more namespaces, but in this case, the resources such as the processors used by the two namespaces cannot be separated, which can reduce the performance of applications that require high bandwidth. Can be.
  • FIG. 3 is a diagram schematically illustrating a flash based storage device according to an embodiment of the present invention
  • FIG. 4 is a diagram schematically illustrating a flash based storage device according to another embodiment of the present invention.
  • a plurality of channels CH0-CH7 of the SSD 200 are grouped into a plurality of partition entities PART0, PART1, PART2, and PART3.
  • PART0, PART1, PART2, and PART3 eight channels (CH0-CH7) are divided into four partition entities (PART0-PART3), and each partition entity includes two channels, but the number of partition entities and the number of partition entities are shown.
  • the number of channels included is not limited thereto. In some embodiments, the number of channels included in one partition entity may be different from the number of channels included in another partition entity.
  • the flash controller 230 includes flash translation layers FTL0, FTL1, FTL2, and FTL3 corresponding to the partition entity for each partition entity.
  • flash entity tier 0 corresponds to partition entity 0 (PART0)
  • flash entity tier 1 corresponds to partition entity 1 (PART1)
  • partition entity 2 corresponds to Flash conversion layer 2 (FTL2)
  • flash conversion layer 3 corresponds to partition entity 3 (PART3).
  • the flash controller 230 includes a plurality of processors 231 and a buffer memory (not shown) in order to process writing, reading, erasing, etc. in the plurality of flash memory chips 210.
  • a predetermined number of processors 231 of the plurality of processors 231 are pre-assigned to each flash translation layer. In one embodiment, a predetermined number of processors 231 may be independently assigned to each flash translation layer. In other embodiments, some processors 231 may be shared by more than one flash translation layer.
  • each partition entity provides a block address space that is independent of other partition entities by an independent flash translation layer, so that the host 100 uses each block address space as a separate block device. Can be.
  • This independent block address space is called a namespace. That is, one embodiment of the present invention can support a storage virtualization function that can be used as if each namespace is an independent block device.
  • partition entity 0 provides namespace NS0
  • partition entity 1 provides namespace NS1
  • partition entity 2 is namespace NS2.
  • partition entity 3 provides a namespace (NS3). Therefore, when the host 100 designates a namespace to write data among a plurality of namespaces NS0-NS3 and a logical address in the namespace, the namespace is assigned by the flash translation layer assigned to the namespace. It may be mapped to a physical address of a partition entity corresponding to.
  • the host 100 may select a namespace to read or write data, the host 100 may control the physical arrangement of the data.
  • the host 100 since a processor, a channel, and the like are allocated to a flash translation layer corresponding to the namespace, the host 100 may control the use of resources in the SSD 200. Accordingly, by using different resources for each data stream, the host 100 may provide a differentiated service for each data stream or separate resource usage among different services.
  • the host 100 may assign separate queues Q0, Q1, Q2, and Q3 to each namespace. The host 100 may then read data from or write data to the namespace through queues assigned to each namespace. Therefore, the host 100 may write or read data at the same time with different namespaces through separate queues. In other words, there is little interference between namespaces.
  • partition entity corresponds to one namespace, but a combination of two or more partition entities may correspond to one namespace or a plurality of namespaces. It can also correspond to multiple namespaces.
  • FIGS. 5 to 10 illustrate that one partition entity corresponds to one namespace, but a combination of two or more partition entities may correspond to one namespace or a plurality of namespaces. It can also correspond to multiple namespaces.
  • 5, 6, 7, 8, 9, and 10 are diagrams schematically illustrating a flash-based storage device according to various embodiments of the present disclosure.
  • 5 to 10 correspond to some of various examples of creating a namespace, and the namespace may be generated by various combinations of partition entities.
  • host 100 may form a namespace such that one namespace corresponds to more than one partition entity.
  • the host 100 is assigned to a combination of the namespace NS0 and the partition entities 2 and 3 (PART2, PART3) corresponding to the combination of partition entities 0 and 1 (PART0, PART1).
  • a corresponding namespace NS1 can be formed.
  • the host 100 may include a namespace NS0 corresponding to a combination of partition entities 0 and 1 (PART0, PART1) and a namespace (NS0) corresponding to a combination of partition entity 2 (PART2).
  • Namespace NS2 corresponding to the combination of NS1) and partition entity 3 (PART3) may be formed.
  • the host 100 may assign a combination of the namespace NS0 and the partition entity 3 (PART3) corresponding to the combination of the partition entities 0, 1, and 2 (PART0, PART1, and PART2).
  • a corresponding namespace NS1 can be formed.
  • the host 100 may form a combination of partition entities 0, 1, 2, and 3 (PART0, PART1, PART2, and PART3) into one namespace NS0.
  • host 100 may form a namespace so that one partition entity corresponds to more than one namespace. For example, as shown in FIG. 9, the host 100 may divide a combination of partition entities 0 and 1 (PART0, PART1) into two namespaces NS0 and NS1. In addition, the host 100 may form a namespace NS3 corresponding to the combination of the partition entity 2 PART2 and a namespace NS3 corresponding to the combination of the partition entity 3 PART3. As another example, as shown in FIG. 10, the host 100 may divide a combination of partition entities 0, 1, 2, and 3 (PART0, PART1, PART2, and PART3) into two namespaces NS0 and NS1. .
  • the host 100 may form various numbers of namespaces based on the plurality of partition entities PART0-PART3.
  • the flash controller 230 may provide information about a plurality of partition entities to the host 100, and the host 100 may form a namespace based on the plurality of partition entities PART0-PART3.
  • the host 100 may select a partition entry assigned to each namespace, the host 100 may determine that a specific application (for example, an application requiring high bandwidth) is selected. You can provide high performance by assigning many partition entities to your namespace.
  • a specific application for example, an application requiring high bandwidth
  • the host may allocate a namespace consisting of independent partition entities to the real-time application to isolate data communication between the real-time application and the SSD 200 from other applications.
  • a namespace NS2 composed of independent partition entities PART2 may be allocated to a real-time application.
  • QoS quality of service
  • FIG. 11 is a diagram schematically illustrating a procedure for forming a namespace in a flash-based storage device according to an embodiment of the present invention.
  • an identification command is transmitted from the host 100 to the SSD 200.
  • the host 100 may request information of a partition entity, which is an entity that can be used to partition a namespace, by using an identification command, and may receive information of the partition entity.
  • a partition entity which is an entity that can be used to partition a namespace
  • an identification command for returning partition entity information may be defined as a "GetPartitionEntry command.”
  • the identification command may use the "Identify Command” used in the NVMe protocol. In another embodiment, the identification command may use the "ID Command” used in the SATA protocol. In another embodiment, the identification command may use a "GetFeature Command” used in an embedded-ECC & enhanced-efficiency (E2NAND) flash memory.
  • E2NAND embedded-ECC & enhanced-efficiency
  • the return value of the GetPartitionEntry command may include the number of partition entities and information about each partition entity, as shown in Table 1.
  • Information on each partition entity may include an identifier of the entity and the size of the entity.
  • the size of the entity may be calculated by the sum of the capacities of the flash memory chips connected to the channel included in the entity. For example, in the example shown in Figs. 3 to 10, if each flash memory chip provides a capacity of 128 Gb, that is, 16 GB, the size of each partition entity is 256 GB. Therefore, the host 100 may generate a namespace based on the number of partition entities and the size of each partition entity.
  • each partition entity is 256 GB.
  • the command returned by the SSD 200 (for example, a return value of the GetPartitionEntry command) may be generated as shown in Table 2 below.
  • the information about each partition entity may further include bandwidth information.
  • the bandwidth information may include bandwidth in write and bandwidth in read provided by the partition entity. This bandwidth may be the bandwidth under certain predetermined conditions. Therefore, the host 100 may refer to bandwidth when creating a namespace.
  • the information on each partition entity may further include page size information.
  • Page size is the size of the page set in units of read / write in the partition entity.
  • the host 100 generates a namespace by specifying a partition entity based on a value returned by the SSD 200, and provides information about the generated namespace to the SSD 200.
  • a command that provides information about the created namespace can be defined as a "FormatNamespace command”.
  • the FormatNamespace command for each namespace includes the list of partition entities and the size of the namespace, as shown in Table 3.
  • the partition entity list is a list of partition entities assigned to that namespace.
  • the size of the namespace may correspond to the sum of the sizes of partition entities allocated to the namespace. In this case, the namespace uses the entire partition entity assigned to it. In another embodiment, the size of the namespace may be a percentage of the sum of the sizes of partition entities assigned to the namespace. In this case, the namespace uses a part of partition entities assigned to itself, such as namespaces NS0 and NS1 shown in FIG. 9 or namespaces NS0 and NS1 shown in FIG.
  • the flash controller 230 of the SSD 200 divides the size of the specified namespace and assigns it to the assigned partition entities and assigns to these partition entities. You can combine these regions into one namespace. For example, if the host specifies 64 GB as the size of the namespace and allocates two partition entities PART0 and PART1, the flash controller 230 may allocate 64 GB to each partition entity by dividing the 64 GB. .
  • a spanning method may be used when merging the areas allocated to each partition entity.
  • the assigned area of one partition entity can be appended to the assigned area of another partition entity and shown as a namespace.
  • the namespace may be formed by attaching the 32 GB area of the partition entity PART1 to the 32 GB area of the partition entity PART0.
  • the flash controller 230 may convert a command from the host to correspond to the flash translation layer of the corresponding partition entity.
  • the command for logical address 0 from the host is the command [(PART0, 0)] for address 0 of the partition entity (PART0).
  • the command for address corresponding to 32 GB of logical address is the partition entity (PART1). ) Can be converted to the command [(PART1, 0)].
  • the logical address of the host command may then be translated into the physical address of the partition entity through a flash translation layer corresponding to each partition entity.
  • a redundant array of inexpensive / independent disks (RAID) method may be used to combine the areas allocated to each partition entity. That is, the allocated area of each partition entity may be cut into units of the same size (called “stride”), and then the strides of partition entities may be interleaved and pasted to show a namespace.
  • the 32 GB area of each partition entity may be cut into a stride having a size of 64 KB, and then, interleaving the strides formed by the partition entities PART0 and PART1 may form a namespace.
  • the FormatNamespace command may further include information about the size of the stride.
  • the flash controller 230 may convert a command from the host to correspond to the flash translation layer of the corresponding partition entity.
  • the command for logical address 0 from the host is the command [(PART0, 0)] for address 0 of the partition entity (PART0).
  • the command for the address corresponding to 64 KB of logical address is the partition entity (PART1).
  • Command for address 0 of () and the address for address 128KB of logical address can be converted to command [(PART1, 64KB)] of address 0 of partition entity (PART1). .
  • the first stride of the partition entity (PART0) is followed by the first stride of the partition entity (PART1), and the second stride of the partition entity (PART0) is placed after the first stride of the partition entity (PART1).
  • the logical address of the host command may then be translated into the physical address of the partition entity through a flash translation layer corresponding to each partition entity.
  • the FormatNamespace command provides information about how the namespace is formed and additional options if necessary (eg, size of stride). ) May be further included.
  • the FormatNamespace command may further include creation type information, as shown in Table 4.
  • the host 100 When the host 100 generates the namespace as in the prior art (for example, when generating the entire partition entity in one namespace as shown in FIG. 8), the host 100 generates the generation type information in the traditional type. Can be set to (traditional).
  • the host 100 may set generation type information as a partition type. In this case, when the generation type is set to the partition type, the FormatNamespace command may include the partition entity list and the size of the namespace.
  • the host 100 when the size of each partition entity is assumed to be 256 GB, the host 100 generates namespaces NS0, NS1, NS2, and NS3 as shown in FIG. 9.
  • the FormatNamespace command may be transferred to the SSD 200 as shown in Tables 5, 6, 7, and 8 below for the namespaces NS0, NS1, NS2, and NS3.
  • the SSD 200 manages a combination of partition entities as a corresponding namespace based on the information on the namespace generated by the host 100. For example, when the host 100 exchanges data with the namespace NS0, the flash controller 230 of the SSD 200 receives an address based on the flash translation layer of the partition entity allocated to the namespace NS0. Can be mapped.
  • the flash translation layer is mapped according to the namespace generated by the host 100, operations for the namespace and the flash translation layer may be minimized.
  • the flash controller 230 of the SSD 200 uses the data provided by the commands provided in the different namespaces. There is no need to check for conflicts in write / read. This reduces the overhead required to check for conflicts.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

플래시 기반 저장 장치의 플래시 컨트롤러는 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함한다. 각 파티션 엔터티는 플래시 메모리 칩을 포함하고, 각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑한다. 플래시 컨트롤러는 호스트로부터의 명령에 따라 복수의 파티션 엔터티를 복수의 네임스페이스에 할당한다.

Description

[규칙 제26조에 의한 보정 01.08.2016] 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스
아래 기재된 기술은 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스에 관한 것이다.
반도체 메모리 중에서 비휘발성 메모리인 플래시 메모리(flash memory)는 높은 프로그래밍 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 갖는다. 따라서 플래시 메모리를 기반으로 하는 저장 장치(storage)가 하드 디스크를 대체하는 저장 장치로서 광범위하게 사용되고 있다. 플래시 기반 저장 장치로 솔리드 스테이트 드라이브(solid state drive, SSD), SD(secure digital) 카드, USB(universal serial bus) 플래시 드라이브 등이 있다.
SSD와 같은 플래시 기반 저장 장치는 대용량을 제공하기 위해서 복수의 플래시 칩(또는 "플래시 메모리 패키지"라고도 함)을 포함한다. 복수의 플래시 칩은 플래시 메모리 버스(또는 채널)에 연결되어 있을 수 있다. 또한 SSD는 고성능을 제공하기 위해서 복수의 프로세서와 별도의 메모리를 포함할 수 있다. 한편, SSD의 펌웨어(firmware)는 복수의 플래시 칩을 가상화하여 블록 단위로 읽기/쓰기가 가능한 저장 장치로 호스트에 보여준다. 따라서 호스트는 SSD를 하나의 블록 디바이스로 보고 사용할 수 있다.
호스트가 SSD를 하나의 블록 디바이스로 보고 사용하므로, 호스트가 SSD에 저장되는 데이터의 물리적인 배치를 제어할 수 없다. 또한 호스트는 데이터 스트림별로 SSD 내부의 자원(프로세서, 플래시 칩, 채널 등)을 제어할 수 없다. 이에 따라 호스트는 데이터 스트림별로 차별화된 서비스를 제공하거나 서로 다른 서비스 사이에서의 자원 사용을 분리할 수 없다.
본 발명의 한 실시예는 독립된 복수의 블록 디바이스로 제공될 수 있는 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스를 제공한다.
본 발명의 한 실시예에 따르면, 복수의 파티션 엔터티 및 플래시 컨트롤러를 포함하는 플래시 기반 저장 장치가 제공된다. 상기 플래시 컨트롤러는 상기 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함하고, 각 파티션 엔터티는 플래시 메모리 칩을 포함한다. 각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑하고, 상기 플래시 컨트롤러는 상기 호스트로부터의 제1 명령에 따라 상기 복수의 파티션 엔터티를 복수의 네임스페이스에 할당한다.
각 네임스페이스는 상기 호스트에 독립적인 블록 디바이스로 제공될 수 있다.
각 네임스페이스는 상기 복수의 파티션 엔터티 중에서 자신에 할당된 파티션 엔터티에 대응하는 플래시 변환 계층을 사용할 수 있다.
상기 플래시 컨트롤러와 병렬로 연결되는 복수의 버스를 포함하고, 각 버스에 플래시 메모리 칩이 연결되어 있을 수 있다. 이때, 상기 복수의 버스가 상기 복수의 파티션 엔터티로 그룹화되어 있을 수 있다.
상기 플래시 컨트롤러는 복수의 프로세서를 더 포함하고, 각 프로세서는 상기 복수의 파티션 엔터티 중 적어도 하나의 파티션 엔터티에 할당되어 있을 수 있다.
각 프로세서는 상기 복수의 파티션 엔터티 중 하나의 파티션 엔터티에만 할당되어 있을 수 있다.
상기 플래시 컨트롤러는 상기 호스트로부터의 제2 명령에 응답하여서 상기 복수의 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 포함하는 값을 상기 호스트로 반환하고, 상기 제2 명령에 응답한 반환에 따라 상기 제1 명령을 수신할 수 있다.
상기 각 파티션 엔터티에 대한 정보는, 해당하는 파티션 엔터티의 식별자 및 해당하는 파티션 엔터티의 크기를 포함할 수 있다.
상기 제1 명령은 해당하는 네임스페이스에 할당되는 파티션 엔터티의 리스트를 포함할 수 있다.
상기 제1 명령은 해당하는 네임스페이스의 크기를 더 포함할 수 있다.
상기 복수의 파티션 엔터티는 제1 파티션 엔터티와 제2 파티션 엔터티를 포함하고, 상기 복수의 네임스페이스는, 제1 파티션 엔터티를 포함하는 제1 네임스페이스와 제2 파티션 엔터티를 포함하는 제2 네임스페이스를 포함할 수 있다.
상기 복수의 파티션 엔터티는 제3 파티션 엔터티를 더 포함하고, 상기 제1 네임스페이스는 상기 제3 파티션 엔터티를 더 포함할 수 있다.
상기 복수의 파티션 엔터티는 제1 파티션 엔터티와 제2 파티션 엔터티를 포함하고, 상기 복수의 네임스페이스는, 제1 파티션 엔터티의 일부를 포함하는 제1 네임스페이스와 상기 제1 파티션 엔터티의 다른 일부를 포함하는 제2 네임스페이스를 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 복수의 버스와 플래시 컨트롤러를 포함하는 플래시 기반 저장 장치가 제공된다. 상기 복수의 버스는 각각 플래시 메모리 칩이 연결되어 있다. 상기 플래시 컨트롤러는 상기 복수의 버스를 복수의 파티션 엔터티로 그룹화하고, 상기 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함한다. 각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑한다.
상기 플래시 컨트롤러는 상기 호스트로부터 제1 네임스페이스에 할당되는 제1 파티션 엔터티 식별자 및 제2 네임스페이스에 할당되는 제2 파티션 엔터티 식별자를 수신하고, 상기 복수의 파티션 엔터티 중에서 상기 제1 파티션 엔터티의 식별자에 해당하는 제1 파티션 엔터티를 상기 제1 네임스페이스로 관리하고, 상기 제2 파티션 엔터티의 식별자에 해당하는 제2 파티션 엔터티를 상기 제2 네임스페이스로 관리할 수 있다. 이때, 상기 제1 및 제2 네임스페이스는 각각 독립된 블록 디바이스로 인식될 수 있다.
상기 제1 파티션 엔터티와 상기 제2 파티션 엔터티는 서로 다른 파티션 엔터티일 수 있다.
상기 제1 파티션 엔터티와 상기 제2 파티션 엔터티는 동일한 파티션 엔터티이고, 상기 플래시 컨트롤러는 상기 동일한 파티션 엔터티의 일부를 상기 제1 네임스페이스로 관리하고, 상기 동일한 파티션 엔터티의 다른 일부를 상기 제2 네임스페이스로 관리할 수 있다.
상기 플래시 컨트롤러는 상기 제1 네임스페이스의 크기와 상기 제2 네임스페이스의 크기를 상기 호스트로부터 더 수신할 수 있다. 이때, 상기 제1 네임스페이스로 관리되는 상기 동일한 파티션 엔터티의 일부는 상기 제1 네임스페이스의 크기에 대응하고, 상기 제2 네임스페이스로 관리되는 상기 동일한 파티션 엔터티의 일부는 상기 제2 네임스페이스의 크기에 대응할 수 있다.
상기 플래시 컨트롤러는 상기 호스트로 상기 복수의 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 전달하고, 상기 각 파티션 엔터티에 대한 정보는, 해당하는 파티션 엔터티의 식별자 및 해당하는 파티션 엔터티의 크기를 포함할 수 있다.
본 발명의 또 다른 실시예에 따르면, 호스트, 앞에서 설명한 플래시 기반 저장 장치, 그리고 상기 호스트와 상기 플래시 기반 저장 장치를 연결하는 인터페이스를 포함하는 컴퓨팅 디바이스가 제공된다.
본 발명의 한 실시예에 따르면, 호스트는 플래시 기반 저장 장치를 복수의 블록 주소 공간으로 분할하고, 각 블록 주소 공간을 별도의 블록 디바이스로 사용할 수 있다.
도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이다.
도 2는 본 발명의 한 실시예에 따른 플래시 기반 저장 장치의 개략적인 블록도이다.
도 3은 본 발명의 한 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 4은 본 발명의 다른 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 5, 도 6, 도 7, 도 8, 도 9 및 도 10은 본 발명의 다양한 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 11은 본 발명의 한 실시예에 따른 플래시 기반 저장 장치에서 네임스페이스 형성을 위한 절차를 개략적으로 나타내는 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이며, 도 2는 도 1에 도시한 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 1을 참고하면, 본 발명의 한 실시예에 따른 컴퓨팅 디바이스는 호스트(100), 플래시 기반 저장 장치(200) 및 스토리지 인터페이스(300)를 포함한다. 도 1은 가능한 컴퓨팅 디바이스의 한 예이며, 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 다른 다양한 구조로 구현될 수 있다.
어떤 실시예에서 컴퓨팅 디바이스는 다양한 유형의 컴퓨팅 디바이스 중 어느 하나일 수 있다. 다양한 유형의 컴퓨팅 디바이스는 스마트폰(smartphone)과 같은 이동 전화기(mobile phone), 태블릿 컴퓨터(tablet computer), 랩톱 컴퓨터(laptop computer), 데스크톱 컴퓨터(desktop computer), 멀티미디어 플레이어(multimedia player), 게임 콘솔(game console), 텔레비전, 다양한 유형의 사물 인터넷(internet of thing, IoT) 기기 등을 포함할 수 있다.
호스트(100)는 플래시 기반 저장 장치(200)에 연결되어 플래시 기반 저장 장치(200)의 데이터를 처리한다. 어떤 실시예에서 호스트(100)는 중앙 처리 장치(central processing unit, CPU)(110) 및 메모리(120), 그리고 CPU(110)와 메모리(120)를 연결하는 시스템 버스(130)를 포함할 수 있다.
플래시 기반 저장 장치(200)는 플래시 메모리를 기반으로 하는 저장 장치이다. 예를 들면, 플래시 기반 저장 장치로 솔리드 스테이트 드라이브(solid state drive, SSD), SD(secure digital) 카드, USB(universal serial bus) 플래시 드라이브 등이 있다. 앞으로 본 발명의 한 실시예에서는 플래시 기반 저장 장치의 한 예인 SSD를 플래시 기반 저장 장치(200)로 설명한다.
도 2를 참고하면, SSD(200)는 복수의 플래시 메모리 칩(210), 복수의 플래시 버스(220) 및 플래시 컨트롤러(230)를 포함한다.
각 플래시 메모리 칩(210)은 일정 용량을 가지는 플래시 메모리를 포함하는 플래시 메모리 패키지일 수 있다. 플래시 메모리는 예를 들면 비휘발성 메모리로 NAND 플래시 메모리 또는 NOR 플래시 메모리를 포함할 수 있다. 어떤 실시예에서 플래시 메모리는 NAND 플래시 메모리일 수 있다.
각 버스(220)는 소정 개수의 플래시 메모리 칩(210)에 연결되어 채널을 형성한다. 복수의 버스(220)는 플래시 컨트롤러(230)에 병렬로 연결되어 있다. 어떤 실시예에서, 버스(220)는 플래시 메모리 칩(210)과 데이터를 통신하기 위한 입출력(input/output, I/O) 버스를 포함할 수 있다. 또한 버스(220)는 플래시 메모리 칩(210)으로 어드레싱 명령, 제어 정보 등을 전달하기 위한 제어 버스를 더 포함할 수 있다. 도 2에서는 예를 들어 하나의 버스(220)에 여덟 개의 플래시 메모리 칩(210)이 연결되고, SSD(200) 내에 예를 들어 여덟 개의 채널(CH0, CH1, CH2, CH3, CH4, CH5, CH6, CH7)이 형성되는 것으로 도시하였지만, 플래시 메모리 칩(210)의 개수와 채널의 개수는 이에 한정되지 않는다. 또한 어떤 버스(220)에 연결된 플래시 메모리 칩(210)의 개수와 다른 버스(220)에 연결된 플래시 메모리 칩(210)의 개수가 다를 수도 있다.
플래시 컨트롤러(230)는 호스트(100)와 플래시 메모리 칩(210) 사이의 인터페이싱을 수행하며, 호스트가 SSD(200)의 플래시 메모리 칩(210)을 블록 디바이스로 보고 읽기/쓰기를 할 수 있도록 관리한다. 이를 위해 컨트롤러(230)는 플래시 변환 계층(flash translation layer, FTL)을 포함한다. 플래시 변환 계층은 호스트(110)의 파일 시스템에서 생성한 논리 주소(logical address)와 플래시 메모리 칩(210)의 물리 주소(physical address)를 매핑한다. 이에 따라 플래시 변환 계층은 호스트(110)의 파일 시스템으로부터 전달받은 논리 주소를 기초로 플래시 메모리 칩(210)의 읽기/쓰기 동작을 위한 주소 변환 과정을 수행할 수 있다.
어떤 실시예에서, SSD(200)는 페이지 단위로 읽기/쓰기를 수행하고, 블록 단위로 지우기를 수행할 수 있다. 소정 크기의 페이지가 모여 블록을 형성할 수 있다. 예를 들면, 256개의 8KB 페이지가 하나의 블록을 형성할 수 있다. 따라서 물리 주소는 페이지 및/또는 블록을 지시하는 주소일 수 있으며, 논리 주소는 호스트에서 사용하는 섹터 주소일 수 있다. 한 실시예에서 플래시 메모리 칩(210)은 복수의 블록을 포함할 수 있다. 다른 실시예에서 복수의 블록이 모여 플레인(plane)을 형성할 수 있다. 예를 들면, 1024개의 블록이 하나의 플레인을 형성할 수 있다. 이 경우 플래시 메모리 칩(210)은 복수의 플레인을 포함할 수 있다.
어떤 실시예에서 플래시 변환 계층은 플래시 컨트롤러(230)의 펌웨어에 의해 구현될 수 있다. 한 실시예에서 펌웨어는 컨트롤러(230) 내부의 메모리에 저장되어 있을 수 있다. 펌웨어를 저장하고 있는 메모리는 예를 들면 비휘발성 메모리일 수 있다.
어떤 실시예에서 플래시 변환 계층은 주소 매핑을 위해서 테이블(앞으로 "FTL 테이블"이라 함)을 사용할 수 있다. 한 실시예에서 FTL 테이블은 컨트롤러(230) 내부의 메모리에 저장되어 있을 수 있다. FTL 테이블을 저장하고 있는 메모리는 예를 들면 비휘발성 메모리일 수 있다.
플래시 컨트롤러(230)는 고성능을 제공하기 위해서 복수의 프로세서(도시하지 않음)를 포함할 수 있다. 어떤 실시예에서 프로세서는 CPU일 수 있다. 또한 플래시 컨트롤러(230)는 복수의 프로세서의 동작을 위해서 메모리(도시하지 않음)를 더 포함할 수 있다. 어떤 실시예에서 메모리는 휘발성 메모리일 수 있다. 예를 들면 휘발성 메모리는 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM)일 수 있다.
다시 도 1을 참고하면, 인터페이스(300)는 호스트(100)와 SSD(200)를 연결한다. 어떤 실시예에서, 인터페이스(300)는 블록 기반 저장 장치 인터페이스 프로토콜을 사용할 수 있다. 예를 들면, 인터페이스(300)는 NVMe(non-volatile memory express), PCIe(peripheral component interconnect express), SCSI(small computer system interface), SAS(serial attached SCSI), SATA(serial AT attachment) 또는 eMMC(embedded multimediacard) 등의 프로토콜을 사용할 수 있다. 또한 호스트(100)는 호스트(100)와 SSD(200)를 연결하기 위한 호스트 버스 어댑터(host bus adaptor)(140)를 더 포함할 수 있다.
한편, SSD(200)에서 복수의 채널(CH0-CH7)을 하나의 네임스페이스(namespace)로 묶어서 사용할 수 있다. 이 경우 호스트(100)가 데이터를 SSD(200)에 쓰는 경우 호스트는 논리 주소만 전달할 수 있으므로, 호스트(100)는 어떤 채널에 데이터를 쓸지 제어할 수 없다. 또한 호스트(100)에서 두 개 이상의 어플리케이션이 구동되는 경우, SSD(200)에서 높은 대역폭을 필요로 하는 어플리케이션의 데이터 처리와 다른 어플리케이션의 데이터 처리를 분리할 수 없으므로, 높은 대역폭을 필요로 하는 어플리케이션의 성능이 저하될 수 있다. 이와는 달리 전체 플래시 메모리 칩을 단순히 두 개 이상의 네임스페이스로 분리할 수 있지만, 이 경우 두 네임스페이스가 사용하는 프로세서 등의 자원을 분리할 수 없으므로, 마찬가지로 높은 대역폭을 필요로 하는 어플리케이션의 성능이 저하될 수 있다.
다음 본 발명의 한 실시예에 따른 파티셔닝 방법에 대해서 도 3 및 도 4를 참고로 하여 설명한다.
도 3은 본 발명의 한 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이며, 도 4은 본 발명의 다른 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 3을 참고하면, 한 실시예에서는 SSD(200)의 복수의 채널(CH0-CH7)을 복수의 파티션 엔터티(PART0, PART1, PART2, PART3)로 그룹화한다. 도 3에서는 예를 들어 여덟 개의 채널(CH0-CH7)을 4개의 파티션 엔터티(PART0-PART3)로 나누고, 각 파티션 엔터티가 두 개의 채널을 포함하는 것으로 도시하였지만, 파티션 엔터티의 개수와 각 파티션 엔터티에 포함되는 채널의 개수는 이에 한정되지 않는다. 어떤 실시예에서, 어떤 파티션 엔터티에 포함되는 채널의 개수와 다른 파티션 엔터티에 포함되는 채널의 개수는 다를 수도 있다.
플래시 컨트롤러(230)는 파티션 엔터티별로 해당 파티션 엔터티에 대응하는 플래시 변환 계층(FTL0, FTL1, FTL2, FTL3)을 포함한다. 도 3에 도시한 예에서는 파티션 엔터티 0(PART0)에 플래시 변환 계층 0(FTL0)이 대응하고, 파티션 엔터티 1(PART1)에 플래시 변환 계층 1(FTL1)이 대응하고, 파티션 엔터티 2(PART2)에 플래시 변환 계층 2(FTL2)가 대응하고, 파티션 엔터티 3(PART3)에 플래시 변환 계층 3(FTL3)이 대응한다.
또한 플래시 컨트롤러(230)는 복수의 플래시 메모리 칩(210)에서의 쓰기, 읽기, 지우기 등을 처리하기 위해서 복수의 프로세서(231)와 버퍼 메모리(도시하지 않음)를 포함한다. 각 플래시 변환 계층에는 복수의 프로세서(231) 중 소정 개수의 프로세서(231)가 미리 할당되어 있다. 한 실시예에서, 각 플래시 변환 계층에 소정 개수의 프로세서(231)가 독립적으로 할당되어 있을 수 있다. 다른 실시예에서, 일부 프로세서(231)가 둘 이상의 플래시 변환 계층에 의해서 공유될 수도 있다.
도 3에 도시한 것처럼, 각 파티션 엔터티는 독립된 플래시 변환 계층에 의해 다른 파티션 엔터티와 독립된 블록 주소 공간(block address space)을 제공하므로, 호스트(100)는 각 블록 주소 공간을 별도의 블록 디바이스로 사용할 수 있다. 이러한 독립된 블록 주소 공간을 네임스페이스(namespace)라 한다. 즉, 본 발명의 한 실시예에서는 각각의 네임스페이스가 독립적인 블록 디바이스인 것처럼 사용할 수 있는 스토리지 가상화 기능을 지원할 수 있다.
도 3에 도시한 예에서는 파티션 엔터티 0(PART0)이 네임스페이스(NS0)를 제공하고, 파티션 엔터티 1(PART1)이 네임스페이스(NS1)를 제공하고, 파티션 엔터티 2(PART2)가 네임스페이스(NS2)를 제공하고, 파티션 엔터티 3(PART3)이 네임스페이스(NS3)를 제공하는 것으로 도시하였다. 따라서 호스트(100)는 복수의 네임스페이스(NS0-NS3) 중 데이터를 쓸 네임스페이스와 해당 네임스페이스에서의 논리 주소를 지정하면, 논리 주소가 해당 네임스페이스에 할당된 플래시 변환 계층에 의해 해당 네임스페이스에 대응하는 파티션 엔터티의 물리 주소로 매핑될 수 있다.
이와 같이 호스트(100)는 데이터를 읽거나 쓸 네임스페이스를 선택할 수 있으므로, 데이터의 물리적 배치를 제어할 수 있다. 또한 네임스페이스에 대응하는 플래시 변환 계층에 프로세서, 채널 등이 할당되어 있으므로, 호스트(100)는 SSD(200) 내부의 자원의 사용을 제어할 수 있다. 이에 따라 호스트(100)는 데이터 스트림별로 서로 다른 자원을 사용함으로써, 데이터 스트림별로 차별화된 서비스를 제공하거나, 서로 다른 서비스 사이에서의 자원 사용을 분리할 수 있다.
어떤 실시예에서, 도 4에 도시한 것처럼 호스트(100)는 각 네임스페이스에 별도의 큐(Q0, Q1, Q2, Q3)를 할당할 수 있다. 그러면 호스트(100)는 각 네임스페이스에 할당된 큐를 통해서 해당 네임스페이스로부터 데이터를 읽거나 해당 네임스페이스에 데이터를 쓸 수 있다. 따라서 호스트(100)는 별도의 큐를 통해 서로 다른 네임스페이스와 동시에 데이터를 쓰거나 데이터를 읽는 작업을 수행할 수 있다. 즉, 네임스페이스 사이의 간섭이 거의 발생하지 않는다.
도 3 및 도 4의 예에서는 하나의 파티션 엔터티가 하나의 네임스페이스에 대응하는 것으로 설명하였지만, 둘 이상의 파티션 엔터티의 조합이 하나의 네임스페이스 또는 복수의 네임스페이스에 대응할 수도 있으며, 하나의 파티션 엔터티가 복수의 네임스페이스에 대응할 수도 있다. 아래에서는 이러한 실시예에 대해서 도 5 내지 도 10을 참고로 하여 설명한다.
도 5, 도 6, 도 7, 도 8, 도 9 및 도 10은 본 발명의 다양한 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다. 도 5 내지 도 10은 네임스페이스를 생성하는 다양한 예 중에서 일부에 해당하며, 파티션 엔터티의 다양한 조합으로 네임스페이스를 생성할 수 있다.
어떤 실시예에서, 호스트(100)는 하나의 네임스페이스가 둘 이상의 파티션 엔터티에 대응하도록 네임스페이스를 형성할 수 있다. 예를 들면, 도 5에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0 및 1(PART0, PART1)의 조합에 대응하는 네임스페이스(NS0) 및 파티션 엔터티 2 및 3(PART2, PART3)의 조합에 대응하는 네임스페이스(NS1)를 형성할 수 있다. 다른 예로, 도 6에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0 및 1(PART0, PART1)의 조합에 대응하는 네임스페이스(NS0), 파티션 엔터티 2(PART2)의 조합에 대응하는 네임스페이스(NS1) 및 파티션 엔터티 3(PART3)의 조합에 대응하는 네임스페이스(NS2)를 형성할 수 있다. 또 다른 예로, 도 7에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0, 1 및 2(PART0, PART1, PART2)의 조합에 대응하는 네임스페이스(NS0)와 파티션 엔터티 3(PART3)의 조합에 대응하는 네임스페이스(NS1)를 형성할 수 있다. 또 다른 예로, 도 8에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0, 1, 2 및 3(PART0, PART1, PART2, PART3)의 조합을 하나의 네임스페이스(NS0)로 형성할 수 있다.
다른 실시예에서, 호스트(100)는 하나의 파티션 엔터티가 둘 이상의 네임스페이스에 대응하도록 네임스페이스를 형성할 수 있다. 예를 들면, 도 9에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0과 1(PART0, PART1)의 조합을 두 개의 네임스페이스(NS0, NS1)로 분할할 수 있다. 또한 호스트(100)는 파티션 엔터티 2(PART2)의 조합에 대응하는 네임스페이스(NS2)와 파티션 엔터티 3(PART3)의 조합에 대응하는 네임스페이스(NS3)를 형성할 수 있다. 다른 예로, 도 10에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0, 1, 2 및 3(PART0, PART1, PART2, PART3)의 조합을 두 개의 네임스페이스(NS0, NS1)로 분할할 수 있다.
이와 같이, 본 발명의 한 실시예에 따르면, 호스트(100)는 복수의 파티션 엔터티(PART0-PART3)에 기초하여서 다양한 개수의 네임스페이스를 형성할 수 있다. 이를 위해 플래시 컨트롤러(230)는 호스트(100)로 복수의 파티션 엔터티에 대한 정보를 제공하고, 호스트(100)는 복수의 파티션 엔터티(PART0-PART3)을 기초로 네임스페이스를 형성할 수 있다.
이와 같이 본 발명의 한 실시예에 따르면, 호스트(100)에서 각 네임스페이스에 할당되는 파티션 엔터리를 선택할 수 있으므로, 호스트(100)는 특정 어플리케이션(예를 들면 높은 대역폭을 필요로 하는 어플리케이션)이 사용하는 네임스페이스에 많은 파티션 엔터티를 할당하여서 높은 성능을 제공할 수 있다.
또한 호스트는 실시간 어플리케이션에 독립된 파티션 엔터티로 이루어지는 네임스페이스를 할당하여서, 실시간 어플리케이션과 SSD(200) 사이의 데이터 통신을 다른 어플리케이션으로부터 격리시킬 수 있다. 예를 들면, 도 9에 도시한 예에서 실시간 어플리케이션에 독립된 파티션 엔터티(PART2)로 이루어지는 네임스페이스(NS2)를 할당할 수 있다.
이와 같이, 본 발명의 한 실시예에 따르면 어플리케이션에 따른 높은 성능을 보장할 수 있으므로, 서비스 품질(quality of service, QoS) 서비스를 제공할 수 있다.
다음 네임스페이스 형성을 위해서 호스트(100)와 SSD(200) 사이에서 교환하는 정보에 대해서 도 11 및 표 1 내지 표 8을 참고로 하여 설명한다.
도 11은 본 발명의 한 실시예에 따른 플래시 기반 저장 장치에서 네임스페이스 형성을 위한 절차를 개략적으로 나타내는 도면이다.
도 11을 참고하면, 먼저 호스트(100)에서 SSD(200)로 식별 명령을 전달한다. 호스트(100)는 식별 명령으로 네임스페이스의 분할에 사용할 수 있는 엔터티인 파티션 엔터티의 정보를 요청하고, 파티션 엔터티의 정보를 반환받을 수 있다. 예를 들면, 파티션 엔터티의 정보를 반환받기 위한 식별 명령을 "GetPartitionEntry 명령"이라 정의할 수 있다.
어떤 실시예에서 식별 명령으로 NVMe 프로토콜에서 사용하는 "Identify Command"를 사용할 수 있다. 다른 실시예에서 식별 명령으로 SATA 프로토콜에서 사용하는 "ID Command"를 사용할 수 있다. 또 다른 실시예에서 식별 명령으로 E2NAND (embedded-ECC & enhanced-efficiency) 플래시 메모리에서 사용하는 "GetFeature Command"를 사용할 수 있다.
GetPartitionEntry 명령의 반환 값은 표 1에 나타낸 것처럼 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 포함할 수 있다. 각 파티션 엔터티에 대한 정보는 해당 엔터티의 식별자 및 해당 엔터티의 크기를 포함할 수 있다. 엔터티의 크기는 해당 엔터티에 포함되는 채널에 연결된 플래시 메모리 칩들의 용량의 총합에 의해서 계산될 수 있다. 예를 들면 도 3 내지 도 10에 도시한 예에서 각 플래시 메모리 칩이 128Gb, 즉 16GB의 용량을 제공한다면, 각 파티션 엔터티의 크기는 256GB가 된다. 따라서 호스트(100)는 파티션 엔터티의 개수와 각 파티션 엔터티의 크기에 기초해서 네임스페이스를 생성할 수 있다.
Bytes 필드 이름 설명
[3:0] NUM_OF_PART_ENTRY 파티션 엔터티의 개수
[7:4] PART0_ID 파티션 엔터티 0의 식별자
[11:8] PART0_SIZE 파티션 엔터티 0의 크기(MB 단위)
[15:12] PART1_ID 파티션 엔터티 1의 식별자
[19:16] PART1_SIZE 파티션 엔터티 1의 크기(MB 단위)
... ... ...
[(8N-1):(8N-4)] PART(N-1)_ID 파티션 엔터티 (N-1)의 식별자
[(8N+3):8N] PART(N-1)_SIZE 파티션 엔터티 (N-1)의 크기(MB 단위)
표 1에서는 각 파티션 엔터티의 식별자로 4 바이트를, 각 파티션 엔터티의 크기로 4 바이트를 사용하는 것으로 가정하였지만, 식별자와 크기에 다른 크기의 바이트를 할당할 수도 있다. 또한 표 1에서는 바이트의 크기를 MB(megabyte) 단위로 표시하였지만, 다른 단위를 사용할 수 있다.
도 3 내지 도 10의 예에서 각 파티션 엔터티의 크기가 256GB라 가정하면, SSD(200)가 반환하는 명령(예를 들면 GetPartitionEntry 명령의 반환 값)은 아래의 표 2와 같이 생성될 수 있다.
Bytes 필드 이름
[3:0] NUM_OF_PART_ENTRY 4
[7:4] PART0_ID 0
[11:8] PART0_SIZE 256*1024
[15:12] PART1_ID 1
[19:16] PART1_SIZE 256*1024
[23:20] PART2_ID 2
[27:24] PART2_SIZE 256*1024
[31:28] PART3_ID 3
[35:32] PART3_SIZE 256*1024
어떤 실시예에서 각 파티션 엔터티에 대한 정보는 대역폭 정보를 더 포함할 수 있다. 대역폭 정보는 해당 파티션 엔터티에서 제공하는 쓰기(write)에서의 대역폭과 읽기(read)에서의 대역폭을 포함할 수 있다. 이러한 대역폭은 미리 약속된 특정 조건에서의 대역폭일 수 있다. 따라서 호스트(100)는 네임스페이스를 생성할 때 대역폭을 참고할 수 있다.
어떤 실시예에서 각 파티션 엔터티에 대한 정보는 페이지 크기 정보를 더 포함할 수 있다. 페이지 크기는 해당 파티션 엔터티에서 읽기/쓰기를 수행하는 단위로 설정된 페이지의 크기이다.
호스트(100)는 SSD(200)가 반환하는 값을 기초로 파티션 엔터티를 특정하여서 네임스페이스를 생성하고, 생성한 네임스페이스에 대한 정보를 SSD(200)로 제공한다. 예를 들면 생성한 네임스페이스에 대한 정보를 제공하는 명령을 "FormatNamespace 명령"이라 정의할 수 있다.
각 네임스페이스에 대한 FormatNamespace 명령은 표 3에 나타낸 것처럼 파티션 엔터티 리스트 및 네임스페이스의 크기를 포함한다. 파티션 엔터티 리스트는 해당 네임스페이스에 할당된 파티션 엔터티의 리스트이다. 한 실시예에서 네임스페이스의 크기는 해당 네임스페이스에 할당된 파티션 엔터티의 크기의 총합에 해당할 수 있다. 이 경우, 네임스페이스는 자신에 할당된 파티션 엔터티 전체를 사용한다. 다른 실시예에서 네임스페이스의 크기는 해당 네임스페이스에 할당된 파티션 엔터티의 크기의 총합의 일정 비율일 수 있다. 이 경우, 네임 스페이스는 도 9에 도시한 네임스페이스(NS0, NS1) 또는 도 10에 도시한 네임스페이스(NS0, NS1)처럼 자신에 할당된 파티션 엔터티의 일부를 사용한다.
Bytes 필드 이름 설명
[7:0] SIZE 네임스페이스의 크기 (MB 단위)
[11:8] NUM_OF_PART_ENTRY 할당된 파티션 엔터티의 개수
[15:12] ENTRY0_ID 할당된 0번째 파티션 엔터티의 식별자
[19:16] ENTRY1_ID 할당된 1번째 파티션 엔터티의 식별자
... ... ...
[(4M+15):(4M+12)] ENTRY(M-1)_ID 할당된 (M-1)번째 파티션 엔터티의 식별자
어떤 실시예에서, 호스트가 FormatNamespace 명령으로 네임스페이스의 크기를 지정하면, SSD(200)의 플래시 컨트롤러(230)는 지정된 네임스페이스의 크기를 분할하여서 할당된 파티션 엔터티에 할당하고, 이들 파티션 엔터티에 할당된 영역을 합쳐서 하나의 네임스페이스로 보여줄 수 있다. 예를 들면, 호스트가 네임스페이스의 크기를 64GB를 지정하고, 두 개의 파티션 엔터티(PART0, PART1)를 할당하는 경우, 플래시 컨트롤러(230)는 64GB를 분할하여서 32GB를 각 파티션 엔터티에 할당할 수 있다.
한 실시예에서, 각 파티션 엔터티에 할당된 영역을 합칠 때 스패닝(spanning) 방법을 사용할 수 있다. 즉, 하나의 파티션 엔터티의 할당된 영역 다음에 다른 파티션 엔터티의 할당된 영역을 붙여서 네임스페이스로 보여줄 수 있다. 앞서 설명한 예에서는, 파티션 엔터티(PART0)의 32GB 영역 다음에 파티션 엔터티(PART1)의 32GB 영역을 붙여서 네임스페이스를 형성할 수 있다.
이와 같이 네임스페이스가 형성될 때, 플래시 컨트롤러(230)는 호스트로부터의 명령을 해당하는 파티션 엔터티의 플래시 변환 계층에 대응하도록 변환할 수 있다. 예를 들면, 호스트로부터의 논리 주소 0번지에 대한 명령은 파티션 엔터티(PART0)의 0번지에 대한 명령[(PART0, 0)]으로, 논리 주소 32GB에 해당하는 번지에 대한 명령은 파티션 엔터티(PART1)의 0번지에 대한 명령[(PART1, 0)]으로 변환할 수 있다. 그러면 각 파티션 엔터티에 대응하는 플래시 변환 계층을 통해 호스트 명령의 논리 주소가 파티션 엔터티의 물리 주소로 변환될 수 있다.
다른 실시예에서, 각 파티션 엔터티에 할당된 영역을 합칠 때 RAID (redundant array of inexpensive/independent disks) 방법을 사용할 수 있다. 즉, 각 파티션 엔터티의 할당된 영역을 동일한 크기의 단위["스트라이드(stride)"라 불림]로 자른 후, 파티션 엔터티들의 스트라이드들을 인터리빙(interleaving)해서 붙여서 네임스페이스를 보여줄 수 있다. 앞서 설명한 예에서는, 각 파티션 엔터티의 32GB 영역을 64KB 크기의 스트라이드로 자른 후, 파티션 엔터티(PART0, PART1)에 의해 형성되는 스트라이드들을 인터리빙해서 네임스페이스를 형성할 수 있다. 이 경우, FormatNamespace 명령은 스트라이드의 크기에 대한 정보를 더 포함할 수 있다.
이와 같이 네임스페이스가 형성될 때, 플래시 컨트롤러(230)는 호스트로부터의 명령을 해당하는 파티션 엔터티의 플래시 변환 계층에 대응하도록 변환할 수 있다. 예를 들면, 호스트로부터의 논리 주소 0번지에 대한 명령은 파티션 엔터티(PART0)의 0번지에 대한 명령[(PART0, 0)]으로, 논리 주소 64KB에 해당하는 번지에 대한 명령은 파티션 엔터티(PART1)의 0번지에 대한 명령[(PART1, 0)]으로, 논리 주소 128KB에 해당하는 번지에 대한 명령은 파티션 엔터티(PART1)의 0번지에 대한 명령[(PART1, 64KB)]으로 변환할 수 있다. 이 경우, 인터리빙 시에 파티션 엔터티(PART0)의 첫 번째 스트라이드 다음에 파티션 엔터티(PART1)의 첫 번째 스트라이드가 붙고, 파티션 엔터티(PART1)의 첫 번째 스트라이드 다음에 파티션 엔터티(PART0)의 두 번째 스트라이드가 붙는 것으로 가정하였다. 그러면 각 파티션 엔터티에 대응하는 플래시 변환 계층을 통해 호스트 명령의 논리 주소가 파티션 엔터티의 물리 주소로 변환될 수 있다.
어떤 실시예에서, 네임스페이스를 형성하는 방법으로 스패닝 방법, RAID 방법과 같은 다양한 방법을 사용할 수 있는 경우, FormatNamespace 명령은 네임스페이스 형성 방법에 대한 정보와 필요한 경우 추가적인 옵션(예를 들면, 스트라이드의 크기)을 더 포함할 수 있다.
어떤 실시예에서, FormatNamespace 명령은 표 4에 나타낸 것처럼 생성 타입(creation type) 정보를 더 포함할 수 있다. 호스트(100)가 네임스페이스를 종래 기술처럼 생성하는 경우(예를 들면, 도 8에 도시한 것처럼 전체 파티션 엔터티를 하나의 네임스페이스로 생성하는 경우), 호스트(100)는 생성 타입 정보를 전통 타입(traditional)으로 설정할 수 있다. 이와는 달리, 호스트(100)가 일부 파티션 엔터티로 네임스페이스를 생성하는 경우(예를 들면, 도 3, 도 5, 도 6, 도 7, 도 9 및 도 10에 도시한 것처럼 전체 파티션 엔터티를 복수의 네임스페이스로 분할하는 경우), 호스트(100)는 생성 타입 정보를 파티션 타입(partition)으로 설정할 수 있다. 이 경우, 생성 타입이 파티션 타입으로 설정된 경우에, FormatNamespace 명령은 파티션 엔터티 리스트 및 네임스페이스의 크기를 포함할 수 있다.
Bytes 필드 이름 설명
[0:0] Creation_Type traditional 또는 partition을 지시
[7:1] SIZE 네임스페이스의 크기 (MB 단위)
[11:8] NUM_OF_PART_ENTRY 할당된 파티션 엔터티의 개수
[15:12] ENTRY0_ID 할당된 0번째 파티션 엔터티의 식별자
[19:16] ENTRY1_ID 할당된 1번째 파티션 엔터티의 식별자
... ... ...
[(4M+15):(4M+12)] ENTRY(M-1)_ID 할당된 (M-1)번째 파티션 엔터티의 식별자
예를 들면, 도 3 내지 도 10에 도시한 예에서 각 파티션 엔터티의 크기를 256GB로 가정하는 경우, 호스트(100)가 도 9에 도시한 것처럼 네임스페이스(NS0, NS1, NS2, NS3)를 생성하는 경우 네임스페이스(NS0, NS1, NS2, NS3)에 대해서 아래 표 5, 표 6, 표 7 및 표 8과 같이 FormatNamespace 명령을 SSD(200)로 전달할 수 있다.
Bytes 필드 이름
[0:0] Creation_Type 1
[7:1] SIZE 64*1024
[11:8] NUM_OF_PART_ENTRY 2
[15:12] ENTRY0_ID PART0
[19:16] ENTRY1_ID PART1
Bytes 필드 이름
[0:0] Creation_Type 1
[7:1] SIZE 192*1024
[11:8] NUM_OF_PART_ENTRY 2
[15:12] ENTRY0_ID PART0
[19:16] ENTRY1_ID PART1
Bytes 필드 이름
[0:0] Creation_Type 1
[7:1] SIZE 256*1024
[11:8] NUM_OF_PART_ENTRY 1
[15:12] ENTRY0_ID PART2
Bytes 필드 이름
[0:0] Creation_Type 1
[7:1] SIZE 256*1024
[11:8] NUM_OF_PART_ENTRY 1
[15:12] ENTRY0_ID PART3
따라서 SSD(200)는 호스트(100)에서 생성한 네임스페이스에 대한 정보를 기초로 파티션 엔터티의 조합을 해당하는 네임스페이스로 관리한다. 예를 들면 호스트(100)가 네임스페이스(NS0)과 데이터를 주고받는 경우, SSD(200)의 플래시 컨트롤러(230)는 네임스페이스(NS0)에 할당된 파티션 엔터티의 플래시 변환 계층을 기초로 주소를 매핑할 수 있다.
이와 같이, 본 발명의 한 실시예에 따르면 호스트(100)에서 생성한 네임스페이스에 따라 플래시 변환 계층이 매핑되므로, 네임스페이스와 플래시 변환 계층을 위한 연산을 최소화할 수 있다. 또한 서로 다른 네임스페이스에 제공되는 명령에 의해서는 동일한 위치에 데이터가 써지거나 동일한 위치에서 데이터가 읽히지 않으므로, SSD(200)의 플래시 컨트롤러(230)는 서로 다른 네임스페이스로 제공되는 명령에 의해 데이터의 쓰기/읽기에서 충돌이 발생하는지 확인할 필요가 없다. 이에 따라 충돌을 확인하기 위해서 필요한 오버헤드를 줄일 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 복수의 파티션 엔터티, 그리고
    상기 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함하는 플래시 컨트롤러를 포함하며,
    각 파티션 엔터티는 플래시 메모리 칩을 포함하며,
    각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑하고,
    상기 플래시 컨트롤러는 상기 호스트로부터의 제1 명령에 따라 상기 복수의 파티션 엔터티를 복수의 네임스페이스에 할당하는
    플래시 기반 저장 장치.
  2. 제1항에서,
    각 네임스페이스는 상기 호스트에 독립적인 블록 디바이스로 제공되는 플래시 기반 저장 장치.
  3. 제1항에서,
    각 네임스페이스는 상기 복수의 파티션 엔터티 중에서 자신에 할당된 파티션 엔터티에 대응하는 플래시 변환 계층을 사용하는 플래시 기반 저장 장치.
  4. 제1항에서,
    상기 플래시 컨트롤러와 병렬로 연결되는 복수의 버스를 포함하고, 각 버스에 플래시 메모리 칩이 연결되어 있으며,
    상기 복수의 버스가 상기 복수의 파티션 엔터티로 그룹화되어 있는
    플래시 기반 저장 장치.
  5. 제4항에서,
    상기 플래시 컨트롤러는 복수의 프로세서를 더 포함하며,
    각 프로세서는 상기 복수의 파티션 엔터티 중 적어도 하나의 파티션 엔터티에 할당되어 있는 플래시 기반 저장 장치.
  6. 제5항에서,
    각 프로세서는 상기 복수의 파티션 엔터티 중 하나의 파티션 엔터티에만 할당되어 있는 플래시 기반 저장 장치.
  7. 제5항에서,
    상기 플래시 컨트롤러는 상기 호스트로부터의 제2 명령에 응답하여서 상기 복수의 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 포함하는 값을 상기 호스트로 반환하고, 상기 제2 명령에 응답한 반환에 따라 상기 제1 명령을 수신하는
    플래시 기반 저장 장치.
  8. 제7항에서,
    상기 각 파티션 엔터티에 대한 정보는, 해당하는 파티션 엔터티의 식별자 및 해당하는 파티션 엔터티의 크기를 포함하는 플래시 기반 저장 장치.
  9. 제7항에서,
    상기 제1 명령은 해당하는 네임스페이스에 할당되는 파티션 엔터티의 리스트를 포함하는 플래시 기반 저장 장치.
  10. 제9항에서,
    상기 제1 명령은 해당하는 네임스페이스의 크기를 더 포함하는 플래시 기반 저장 장치.
  11. 제1항에서,
    상기 복수의 파티션 엔터티는 제1 파티션 엔터티와 제2 파티션 엔터티를 포함하며,
    상기 복수의 네임스페이스는, 제1 파티션 엔터티를 포함하는 제1 네임스페이스와 제2 파티션 엔터티를 포함하는 제2 네임스페이스를 포함하는
    플래시 기반 저장 장치.
  12. 제11항에서,
    상기 복수의 파티션 엔터티는 제3 파티션 엔터티를 더 포함하며,
    상기 제1 네임스페이스는 상기 제3 파티션 엔터티를 더 포함하는
    플래시 기반 저장 장치.
  13. 제1항에서,
    상기 복수의 파티션 엔터티는 제1 파티션 엔터티와 제2 파티션 엔터티를 포함하며,
    상기 복수의 네임스페이스는, 제1 파티션 엔터티의 일부를 포함하는 제1 네임스페이스와 상기 제1 파티션 엔터티의 다른 일부를 포함하는 제2 네임스페이스를 포함하는
    플래시 기반 저장 장치.
  14. 각각 플래시 메모리 칩이 연결되어 있는 복수의 버스,
    상기 복수의 버스를 복수의 파티션 엔터티로 그룹화하고, 상기 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함하는 플래시 컨트롤러를 포함하며,
    각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑하는
    플래시 기반 저장 장치.
  15. 제14항에서,
    상기 플래시 컨트롤러는 상기 호스트로부터 제1 네임스페이스에 할당되는 제1 파티션 엔터티 식별자 및 제2 네임스페이스에 할당되는 제2 파티션 엔터티 식별자를 수신하고,
    상기 복수의 파티션 엔터티 중에서 상기 제1 파티션 엔터티의 식별자에 해당하는 제1 파티션 엔터티를 상기 제1 네임스페이스로 관리하고, 상기 제2 파티션 엔터티의 식별자에 해당하는 제2 파티션 엔터티를 상기 제2 네임스페이스로 관리하며,
    상기 제1 및 제2 네임스페이스는 각각 독립된 블록 디바이스로 인식되는
    플래시 기반 저장 장치.
  16. 제15항에서,
    상기 제1 파티션 엔터티와 상기 제2 파티션 엔터티는 서로 다른 파티션 엔터티인 플래시 기반 저장 장치.
  17. 제15항에서,
    상기 제1 파티션 엔터티와 상기 제2 파티션 엔터티는 동일한 파티션 엔터티이고,
    상기 플래시 컨트롤러는 상기 동일한 파티션 엔터티의 일부를 상기 제1 네임스페이스로 관리하고, 상기 동일한 파티션 엔터티의 다른 일부를 상기 제2 네임스페이스로 관리하는 플래시 기반 저장 장치.
  18. 제17항에서,
    상기 플래시 컨트롤러는 상기 제1 네임스페이스의 크기와 상기 제2 네임스페이스의 크기를 상기 호스트로부터 더 수신하며,
    상기 제1 네임스페이스로 관리되는 상기 동일한 파티션 엔터티의 일부는 상기 제1 네임스페이스의 크기에 대응하고,
    상기 제2 네임스페이스로 관리되는 상기 동일한 파티션 엔터티의 일부는 상기 제2 네임스페이스의 크기에 대응하는
    플래시 기반 저장 장치.
  19. 제15항에서,
    상기 플래시 컨트롤러는 상기 호스트로 상기 복수의 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 전달하며,
    상기 각 파티션 엔터티에 대한 정보는, 해당하는 파티션 엔터티의 식별자 및 해당하는 파티션 엔터티의 크기를 포함하는 플래시 기반 저장 장치.
  20. 호스트,
    제1항 내지 제19항 중 어느 한 항에 따른 플래시 기반 저장 장치, 그리고
    상기 호스트와 상기 플래시 기반 저장 장치를 연결하는 인터페이스
    를 포함하는 컴퓨팅 디바이스.
PCT/KR2016/006053 2016-05-13 2016-06-08 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스 WO2017195928A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2016-0059097 2016-05-13
KR1020160059097A KR20170128012A (ko) 2016-05-13 2016-05-13 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스

Publications (1)

Publication Number Publication Date
WO2017195928A1 true WO2017195928A1 (ko) 2017-11-16

Family

ID=60267936

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/006053 WO2017195928A1 (ko) 2016-05-13 2016-06-08 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스

Country Status (2)

Country Link
KR (1) KR20170128012A (ko)
WO (1) WO2017195928A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783425A (zh) * 2019-11-05 2021-05-11 西部数据技术公司 将耐久性组应用于分区命名空间
US11294827B2 (en) 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
CN114647376A (zh) * 2020-12-17 2022-06-21 美光科技公司 关联数据类型与流标识符以映射至顺序写入存储器装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102602990B1 (ko) 2018-06-27 2023-11-17 에스케이하이닉스 주식회사 전원 공급 장치 및 이를 포함하는 전자 장치
US20230393906A1 (en) * 2022-06-06 2023-12-07 Samsung Electronics Co., Ltd. Method and system for accelerating application performance in solid state drive

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US20140281040A1 (en) * 2013-03-13 2014-09-18 Futurewei Technologies, Inc. Namespace Access Control in NVM Express PCIe NVM with SR-IOV
US20150058539A1 (en) * 2013-08-22 2015-02-26 CNEXLABS, Inc. Method and Apparatus for Restoring Flash Translation Layer (FTL) in Non-Volatile Storage device
US20150227316A1 (en) * 2014-02-07 2015-08-13 Coho Data, Inc. Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices
US20160041762A1 (en) * 2014-08-08 2016-02-11 Kabushiki Kaisha Toshiba Memory system, host device and information processing system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US20140281040A1 (en) * 2013-03-13 2014-09-18 Futurewei Technologies, Inc. Namespace Access Control in NVM Express PCIe NVM with SR-IOV
US20150058539A1 (en) * 2013-08-22 2015-02-26 CNEXLABS, Inc. Method and Apparatus for Restoring Flash Translation Layer (FTL) in Non-Volatile Storage device
US20150227316A1 (en) * 2014-02-07 2015-08-13 Coho Data, Inc. Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices
US20160041762A1 (en) * 2014-08-08 2016-02-11 Kabushiki Kaisha Toshiba Memory system, host device and information processing system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294827B2 (en) 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
CN112783425A (zh) * 2019-11-05 2021-05-11 西部数据技术公司 将耐久性组应用于分区命名空间
US11726679B2 (en) 2019-11-05 2023-08-15 Western Digital Technologies, Inc. Applying endurance groups to zoned namespaces
CN114647376A (zh) * 2020-12-17 2022-06-21 美光科技公司 关联数据类型与流标识符以映射至顺序写入存储器装置
US12105974B2 (en) 2020-12-17 2024-10-01 Micron Technology, Inc. Associating data types with stream identifiers for mapping onto sequentially-written memory devices

Also Published As

Publication number Publication date
KR20170128012A (ko) 2017-11-22

Similar Documents

Publication Publication Date Title
JP6765321B2 (ja) メモリシステムおよび制御方法
WO2017195928A1 (ko) 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스
JP6765322B2 (ja) メモリシステムおよび制御方法
JP6709180B2 (ja) メモリシステムおよび制御方法
US10564872B2 (en) System and method for dynamic allocation to a host of memory device controller memory resources
US8321639B2 (en) Command tracking for direct access block storage devices
KR102471219B1 (ko) NVMe 기반의 데이터 판독 방법, 장치, 및 시스템
WO2021008197A1 (zh) 资源分配方法、存储设备和存储系统
KR20030060071A (ko) 메모리의 일부의 할당을 관리하기 위한 방법 및 시스템
CN117149049A (zh) 内存访问热度统计方法、相关装置及设备
CN110554833A (zh) 存储设备中并行处理io命令
CN113485643A (zh) 用于数据存取的方法及数据写入的控制器
JP7342163B2 (ja) メモリシステム
JPWO2021218038A5 (ko)
US20230315292A1 (en) Semiconductor storage device
WO2018041258A1 (zh) 去分配命令处理的方法与存储设备
WO2011105708A2 (ko) 솔리드 스테이트 디스크 및 이를 포함하는 사용자 시스템
Xiong et al. High-performance radar data recorder architecture based on NVMe P2P transaction and PCIe switch network
US20200278825A1 (en) Multi-core audio processor with flexible memory allocation
CN113031849A (zh) 直接内存存取单元及控制部件
JP7132291B2 (ja) メモリシステムおよび制御方法
WO2024061344A1 (zh) 数据迁移方法、装置、芯片以及计算机可读存储介质
CN111209045A (zh) 提供命令处理一致性的方法与存储设备
US20050044300A1 (en) Apparatus with dual writing function, and storage control apparatus
WO2017126924A1 (ko) 이종 시스템에서의 데이터 분배 기법

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16901763

Country of ref document: EP

Kind code of ref document: A1

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 15.03.2019)

122 Ep: pct application non-entry in european phase

Ref document number: 16901763

Country of ref document: EP

Kind code of ref document: A1