[go: up one dir, main page]

WO2014123372A1 - Flash translation layer design framework for provable and accurate error recovery - Google Patents

Flash translation layer design framework for provable and accurate error recovery Download PDF

Info

Publication number
WO2014123372A1
WO2014123372A1 PCT/KR2014/001028 KR2014001028W WO2014123372A1 WO 2014123372 A1 WO2014123372 A1 WO 2014123372A1 KR 2014001028 W KR2014001028 W KR 2014001028W WO 2014123372 A1 WO2014123372 A1 WO 2014123372A1
Authority
WO
WIPO (PCT)
Prior art keywords
processing module
block
log
data
information
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/KR2014/001028
Other languages
French (fr)
Korean (ko)
Inventor
민상렬
남이현
이수관
윤진혁
성윤제
김홍석
최진용
박정수
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SNU R&DB Foundation
Original Assignee
SNU R&DB Foundation
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 SNU R&DB Foundation filed Critical SNU R&DB Foundation
Priority claimed from KR1020140013590A external-priority patent/KR101526110B1/en
Publication of WO2014123372A1 publication Critical patent/WO2014123372A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

Definitions

  • the embodiments below relate to a flash translation layer design framework of flash memory.
  • the flash memory cannot be updated in place, and the basic operations include reading and writing in units of pages and erasing in units of blocks, allowing bad blocks, and limiting lifetime. Therefore, in order to develop a high-performance, high-reliability storage device using flash memory as a storage medium, it is necessary to effectively utilize the advantages of flash memory and overcome the limitations, and the flash translation layer (FTL) mainly plays this role.
  • FTL introduces the concept of mapping between logical sector addresses and flash memory physical addresses to overcome the limitations of flash memory that cannot be updated in place, thereby providing a block storage system capable of in-place updating to a host system.
  • FTL also uses mapping to prevent bad blocks that may occur during operation from being used in the future, or to level out wear that prevents certain physical blocks from being over-erased.
  • a block or page in the flash memory where the operation (program / erase) was executing at the time of a power failure may have an unintended residual effect by the FTL and a power failure occurs while writing a page in the MLC flash memory, the page and its sibling Even data from pages that are successfully written in a relationship can be lost together.
  • the power failure problem is difficult to identify the block in which the power failure occurred during the recovery process, and may also occur due to overlapping power failure during recovery.
  • FTL In order to overcome these power failure recovery problems and provide a reliable storage system, FTL must always consider recoverability during normal operation. The physical abnormality of the memory must be eliminated and the logical consistency of the data must be restored.
  • embodiments present a complete, systematic and accurate verification of power failure recovery, and HIL capable of developing various FTL compositionally.
  • HIL capable of developing various FTL compositionally.
  • the HIL framework provides a log as the building block for the design and implementation of FTL.
  • the log provides a linear address space that can be updated in place for persistent recording of data and acts as a container for dividing the host data and FTL metadata that make up the storage system.
  • FTL developers can design and implement any of a variety of FTLs by combining logs.
  • the power failure recovery technique provided by the HIL framework ensures complete recovery even in the event of a random power failure, taking into account the effects of residual effects, sibling page problems, and overlapping power failures.
  • the HIL framework can formally prove the accuracy of power failures by oriented towards Design for Provability.
  • Each log that makes up the HIL framework is implemented as a separate thread, and each thread creates a series of flash memory compute streams, so that FTL naturally takes full advantage of thread-level parallelism and flash-level parallelism.
  • Each log thread can run independently and in parallel except for a synchronization interface to ensure data coherence and recoverability.
  • a flash translation hierarchy includes a first processing module configured to process data; A second processing module for processing the mapping information of the data; And a third processing module configured to process checkpoint information including information on an uninterpreted block of the first processing module and information on an uninterpreted block of the second processing module, wherein the first processing module includes the first processing module.
  • the error recovery may be performed using the non-interpretation block of the first processing module, and the second processing module may recover the error using the non-interpretation block of the second processing module.
  • the first processing module detects an error page, copies valid pages in an error block including the error page to an uninterpreted block of the first processing module, and when copying is completed,
  • the error block and the non-interpretation block of the first processing module may be logically swapped.
  • the checkpoint information of the first processing module may further include a block write list of the first processing module, and the first processing module may detect the error page using the block write list.
  • the checkpoint information of the first processing module may further include a block write list of the first processing module and a write pointer of the first processing module.
  • the first processing module may further include a write pointer of the first processing module.
  • the error page may be detected by checking whether a page is in error along the block write list of the first processing module from the page to which the instruction is directed.
  • the first processing module may transmit updated checkpoint information to the third processing module due to a logical swap between the error block and the non-interpretation block of the first processing module.
  • the first processing module obtains the mapping information of the data from the page where the data is stored, and converts the mapping information of the data to the second. Can be sent to the processing module.
  • the checkpoint information of the first processing module may further include a block write list of the first processing module, a write pointer of the first processing module, and a reproduction pointer of the first processing module. Acquires mapping information from the page indicated by the reproduction pointer of the first processing module to the page indicated by the write pointer of the first processing module along the block write list of the first processing module, and transmits the mapping information to the second processing module. Can be.
  • the first processing module may store data corresponding to the write command in a cache when receiving a write command, and determine whether data corresponding to the read command exists in the cache when receiving a read command. Can be.
  • the first processing module may store the data and the mapping information of the data in the same page of a flash memory.
  • the first processing module may store the data in a flash memory and then transmit mapping information of the data to the second processing module.
  • the first processing module may store the data in a flash memory in units of pages and, when the data in units of pages is stored, advance the write pointer along the block write list.
  • the first processing module transmits a persistence request signal to the second processing module when the write pointer crosses a block boundary, and the second processing module responds to the persistence request in response to the block corresponding to the persistence request signal.
  • the mapping information may be stored in a flash memory, and the first processing module may advance a reproduction pointer along the block write list when receiving the persistence completion signal from the second processing module.
  • the second processing module detects an error page, copies valid pages in the error block including the error page to an uninterpreted block of the second processing module, and if the copy is completed, the error.
  • Blocks and non-interpreted blocks of the second processing module may be logically swapped.
  • the checkpoint information of the second processing module may further include a block write list of the second processing module, and the second processing module may detect the error page using the block write list.
  • the checkpoint information of the second processing module may further include a block write list of the second processing module and a write pointer of the second processing module.
  • the second processing module may further include a write pointer of the second processing module.
  • the error page may be detected by checking whether a page is in error along the block write list of the second processing module from the page indicating.
  • the second processing module may transmit updated checkpoint information to the third processing module due to a logical swap between the error block and the non-interpretation block of the second processing module.
  • the flash conversion hierarchy further includes an upper processing module for processing upper mapping information of the mapping information, and after recovering an error using an uninterpreted block of the second processing module, the second processing module
  • the upper mapping information of the mapping information may be obtained from a page in which the mapping information is stored, and the upper mapping information of the mapping information may be transmitted to the higher processing module.
  • the checkpoint information of the second processing module may further include a block write list of the second processing module, a write pointer of the second processing module, and a reproduction pointer of the second processing module. Acquires upper mapping information from a page indicated by the reproduction pointer of the second processing module to a page indicated by the write pointer of the second processing module and transmits the upper mapping information to the higher processing module according to the block write list of the second processing module; Can be.
  • the second processing module may store mapping information corresponding to the mapping command in a cache when a mapping command is received, and determine whether mapping information corresponding to the read command exists in the cache when receiving a read command. You can judge.
  • the second processing module may store the mapping information and the upper mapping information of the mapping information in the same page of the flash memory.
  • the flash conversion hierarchy further includes an upper processing module configured to process upper mapping information of the mapping information, and the second processing module stores the mapping information in a flash memory, and then upper mapping information of the mapping information. May be transmitted to the higher processing module.
  • the second processing module may store the mapping information in a flash memory in units of pages, and advance the write pointer along the block write list when the mapping information in units of pages is stored.
  • the flash translation layer structure may further include an upper processing module configured to process upper mapping information of the mapping information, and the second processing module sends a persistence request signal to the higher processing module when the write pointer crosses a block boundary. And the upper processing module stores upper mapping information of a block corresponding to the persistent request signal in a flash memory in response to the persistent request, and when the second processing module receives the persistent completion signal from the higher processing module, A reproduction pointer can be advanced along the block write list.
  • an upper processing module configured to process upper mapping information of the mapping information
  • the second processing module sends a persistence request signal to the higher processing module when the write pointer crosses a block boundary.
  • the upper processing module stores upper mapping information of a block corresponding to the persistent request signal in a flash memory in response to the persistent request, and when the second processing module receives the persistent completion signal from the higher processing module, A reproduction pointer can be advanced along the block write list.
  • the error may include a power error that occurs asynchronously.
  • the processing module included in the flash translation layer may include an interface unit connected to at least one of a host, another processing module, and a flash memory; A cache unit including volatile memory; And a processing unit processing data or information according to a processing module type using the interface unit and the cache unit.
  • the flash translation hierarchy further includes a fourth processing module for processing block state information, wherein the third processing module further includes information on an uninterpreted block of the fourth processing module, and the fourth processing.
  • the module may recover from the error using the non-interpreted block of the fourth processing module.
  • the flash translation hierarchy further includes a fifth processing module that operates as a nonvolatile buffer for another processing module, wherein the third processing module further includes information about an uninterpreted block of the fifth processing module, The fifth processing module may recover an error by using an uninterpreted block of the fifth processing module.
  • a flash memory controller includes a manager configured to manage a synchronous error caused by a flash memory operation; And a first processing module that processes data, a second processing module that processes the mapping information of the data, and information about an uninterpreted block of the first processing module and information about an uninterpreted block of the second processing module. And a flash translation layer unit including a third processing module for processing checkpoint information to be included.
  • the first processing module recovers asynchronous errors using the non-interpretation block of the first processing module
  • the second processing module recovers asynchronous errors using the non-interpretation block of the second processing module.
  • a flash conversion hierarchy includes a D-log for processing data; It includes a plurality of M-logs for hierarchically processing the mapping information of the data.
  • each of the plurality of M-logs stores the information received from the lower log in the flash memory resource allocated to the plurality of M-logs, and when the size of the information received from the lower log is larger than a predetermined size, the flash memory resource. Mapping information of can be transmitted to the upper log.
  • a log whose size of information received from a lower log among the plurality of M-logs is smaller than or equal to a predetermined size may be determined as the highest M-log.
  • the highest M-log may store information received from the lower log in a flash memory resource allocated thereto, and transmit mapping information of the flash memory resource to a C-log that processes checkpoint information.
  • each of the plurality of M-logs are set for individual M-logs, and the characteristics of each of the plurality of M-logs are the mapping unit of each of the plurality of M-logs and the plurality of M-logs.
  • Each of the cache management policy may include at least one.
  • the L-log processing the block state information; And a plurality of LM-logs hierarchically processing the mapping information of the block state information.
  • Each of the plurality of LM-logs stores information received from a lower log in a flash memory resource allocated to the plurality of LM-logs, and when the size of the information received from the lower log is larger than a predetermined size. Mapping information can be sent to the upper log.
  • a log whose size of information received from a lower log among the plurality of LM-logs is smaller than or equal to a predetermined size may be determined as the highest LM-log.
  • the highest LM-log may store information received from the lower log in a flash memory resource allocated thereto, and transmit mapping information of the flash memory resource to a C-log that processes checkpoint information.
  • characteristics of each of the plurality of LM-logs are set for each individual LM-log, and characteristics of each of the plurality of LM-logs are mapping units of each of the plurality of LM-logs and the plurality of LM-logs.
  • Each of the cache management policy may include at least one.
  • a method of designing a flash translation layer includes providing a plurality of building blocks for constructing a flash translation layer.
  • the plurality of building blocks may include a first processing block that processes data; At least one second processing block hierarchically processing the mapping information of the data; And a third processing block for processing checkpoint information including information about an uninterpreted block of the first processing block and information about an uninterpreted block of the at least one second processing block.
  • the block may recover an error using the non-interpretation block of the first processing block, and the at least one second processing block may recover the error using the non-interpretation block of the at least one second processing block.
  • the method of designing the flash translation layer may include receiving a setting related to the design of the flash translation layer; And generating the flash translation layer based on the plurality of building blocks and the setting.
  • the setting may also include a setting related to the number of threads implementing the flash translation layer; A setting related to the number of cores driving the flash translation layer; A setting related to the number of threads processed per core; And a setting related to mapping between the plurality of cores and the plurality of threads.
  • the method of designing a flash translation layer may also include receiving a second setting related to the design of the flash translation layer; And adaptively regenerating the flash translation layer based on the plurality of building blocks and the second configuration.
  • FIG. 1 is a diagram illustrating flash memory fault classification, according to one embodiment
  • FIG. 2 illustrates a storage system architecture according to one embodiment.
  • FIG. 3 illustrates a log interface according to an embodiment.
  • FIG. 4 is a diagram illustrating a flash translation hierarchy structure using log combination, according to an embodiment.
  • FIG. 5 illustrates a hierarchical mapping structure for a storage device providing a logical address space according to an embodiment.
  • FIG. 6 illustrates a host write command process according to an embodiment.
  • mapping data 7 is a diagram illustrating recursive processing of mapping data on a hierarchical structure of mapping according to an embodiment.
  • FIG. 8 illustrates a host read command process according to an embodiment.
  • FIG. 9 is a diagram illustrating a data consistency guarantee method according to an embodiment.
  • FIG. 10 illustrates an asynchronous error according to an embodiment.
  • FIG. 11 illustrates removal of residual effects during a structural repair process, according to one embodiment.
  • FIG. 12 illustrates a structural recovery process from the perspective of a storage system, according to one embodiment.
  • FIG. 13 is a diagram illustrating reproduction of mapping information during a functional recovery process according to one embodiment.
  • 14 is a diagram illustrating cases in which recoverability is broken when there is no synchronization between logs according to an embodiment.
  • FIG. 16 illustrates a functional recovery process from the perspective of a storage system, according to one embodiment.
  • 17 illustrates a step of formal verification according to one embodiment.
  • FIG. 18 illustrates timeliness of a storage device system according to one embodiment.
  • 19 illustrates a guarantee of data consistency, according to one embodiment.
  • a NAND flash memory chip is composed of a plurality of blocks, and a block includes a plurality of pages. Each page is divided into a data area for storing host data and a spare area for storing metadata associated with the host data such as mapping information or ECC information.
  • Flash memory supports three operations: read, program, and erase. In-place update is impossible, so the erase operation must be performed before data can be written. The minimum unit of erase operations is blocks, and the minimum unit of program and read operations is pages.
  • NAND flash memory allows the generation of bad blocks that cannot guarantee normal operation. Bad blocks may occur not only in the initial manufacturing stage but also during operation. In addition, an error may occur in which bits of data of a page which have been recorded in the past are reversed by a disturbance mechanism.
  • a fault of a flash memory may be classified into a synchronous fault caused by an internal factor of the flash memory and an asynchronous fault caused by an external environmental factor.
  • Synchronous error means failure of internal operation of flash memory such as erase / program / read. Erase and program errors are caused by damaged cells for unknown reasons, whether or not the block has reached the end of its life. These errors have a permanent effect on the block. Therefore, blocks with such errors should be properly handled so that they cannot be used again in the system.
  • a read error refers to a bit inversion error caused by a program disturb, a read disturb, or a data retention error. Bit inversion errors have a transient property that returns to the normal page when the page is deleted and reused.
  • the asynchronous error that FTL needs to solve exclusively is an error that can occur at any moment at any time without time correlation with internal operations of flash memory such as erase / program / read. Specifically, it means a power failure. Since the erase / program operation that changes the state of the flash memory page does not guarantee atomic properties, the page can have various states if a power failure occurs during the operation. In particular, even if the data appears to have been successfully written to a page that initially had a power failure during the program, it is very vulnerable to read disturbance and may return non-deterministic incorrect data on every read. Residual effect) page.
  • FIG. 2 shows a flash memory storage architecture consisting of a flash memory controller, a flash memory subsystem composed of a BMS layer, and an FTL implemented with an HIL framework.
  • the flash memory controller can control a plurality of flash memory chips, support flash memory read / write / erase operations, and detect and report an error occurring during the execution of the operation.
  • the BMS layer is responsible for handling all synchronous errors that occur during the execution of flash memory operations.
  • a typical BMS layer reserves extra blocks for exchanging blocks when a write / erase error occurs and includes error control logic such as an ECC encoder / decoder to handle read errors. Therefore, the BMS layer can provide a virtual physical address space in which the flash memory operation error does not occur to the upper layer until all the extra blocks are exhausted or a read error that cannot be corrected by the ECC circuit occurs.
  • FTL is implemented on a flash memory subsystem that uses the HIL framework to show a virtual physical address space that does not cause synchronous flash memory errors.
  • the HIL framework defines an object that implements an address space that can be updated in place using flash memory blocks in the virtual physical address space for each FTL-managed metadata such as host data, mapping data, and block state data. . Users can combine logs to implement various FTLs.
  • the log consists of a flash log consisting of a series of flash memory blocks for writing data persistently internally and a cache implemented with volatile memory for better performance.
  • the log processes metadata such as host data, mapping data, or block state data, and thus may be referred to as a processing module.
  • the logs may be referred to as processing blocks because the various types of logs for designing the FTL are provided as building blocks.
  • the log may be variously implemented in software, hardware, or a combination thereof.
  • Logs require (1) a read / write interface to provide other logs or external host systems with a linear address space that can be updated in place for their managed (meta) data, which is read / write to the flash memory subsystem.
  • the log needs to interface with the flash memory subsystem because it is converted to a request.
  • a log writes data to flash memory, it is necessary to update each of the mapping information for the data, and (4) block state information to recover the space invalidated by the write operation. I need an interface.
  • persistently written data must be guaranteed to be recovered even if a sudden power failure occurs. For this purpose, all logs need an interface to periodically check (5) all information necessary for recovery.
  • the log types include D-type logs that process host data, M-type logs that process mapping information, L-type logs that process block status information, and checkpoint information for power failure recovery. It is divided into C type log to be processed.
  • the type of log may further include a W-type log that operates as a nonvolatile buffer of another log.
  • the type of log is a concept distinct from the M-type log that processes the mapping information of the host data, and may further include an LM-type log that processes the mapping information of the block state information.
  • Type D logs, Type M logs, Type L logs, Type C logs, Type W logs, and Type LM logs are D-log, M-log, L-log, C-log, W-log, and LM-log, respectively. It may be referred to as.
  • the HIL framework integrates and manages the in-place updateable address space managed by all the logs that make up the FTL, and defines it as a pseudo logical address space (PLA). As can be seen in Figure 3, each log occupies a unique area of its own dedicated management in the virtual logical address space.
  • the HIL framework can design and implement any of a variety of FTLs through this combination of different kinds of logs.
  • the concatenation structure of the logs is determined by the hierarchy of mappings and the attributes of the data managed by the logs. 4 shows an example of a connection structure between logs.
  • mapping information is created and the mapping information is managed by the upper mapping log. Therefore, in the HIL framework, a plurality of logs form a constant hierarchy as shown in FIG. 4 through a mapping relationship.
  • the FTL In order to process read / write commands sent from the host computer, the FTL must perform address translation with reference to the mapping information.
  • multiple logs in the mapping hierarchy and the interworking between them Implemented by address translation. Hierarchical expansion of the mapping structure and host read and write processing using the same will be described later.
  • mapping information is generated.
  • the mapping information is smaller than the host data because it is a pointer to the physical address of the flash memory where the host data is stored.
  • the size of the entire mapping information is determined by the size of the host data area, the mapping unit, and the size of the mapping entry. As shown in FIG. 5, when the page size of the flash memory is 4KB and the size of the mapping entry is 4B, the mapping to the 4GB logical address space is performed.
  • the information is 4MB, which is 1/1024 of 4GB.
  • mapping data is written to the flash memory in units of pages and the mapping information occupies 4MB of address space. Therefore, the address space for 4MB of mapping data is recursively divided into units of page size, so that it is separated into separate mapping data. It corresponds to writing to flash memory and mapping data to mapping data occupying 4 KB of space. That is, in FIG. 5, the relationship between the D-type log and the M0 log is the same as that between the M0 log and the M1 log. As mapping data has a smaller address space than mapping data and mapping relationship has a recursive property, mapping data between logs caused by host data write operation is generally the same. Can be formed. As such, embodiments may provide a general hierarchical structure that is unlimited in how many steps hierarchical mapping takes place.
  • the hierarchy of mappings can continue until the top level mapping data is any limited number (e.g., single page).
  • the size of the address space of the M1 log is 4 KB, which is the flash memory page size.
  • the hierarchy of mappings in the M1 log can be terminated.
  • the FTL implemented by the HIL framework keeps only the highest mapping information in volatile memory during operation, so that all the latest mapping information and the location of the data can be found in order along the mapping hierarchy.
  • mapping information does not need to be maintained in the volatile memory, even in a flash memory storage system having a limited size of the volatile memory, it is possible to support a very large (e.g., page mapped FTL) FTL.
  • the FTL checks the location of the highest level mapping information periodically during operation and scans only the checkpoint area when the storage device is restarted to find it quickly. For example, information about where in the flash memory the mapping information processed by the top log (eg, the M1 log) is stored may be stored in the C-type log.
  • FIG. 5 also shows the areas occupied by D-logs, M0-logs, and M1-logs when the HIL maintains a virtual logical address space internally as byte addresses to provide 4GB logical address space to the host system.
  • the D-log provides a logical address space to the host system, and accesses the virtual logical address space implemented by the M0-log.
  • the M0-log provides a virtual logical address space for the D-log and accesses the virtual logical address space managed by the M1-log.
  • read and write commands from the host system begin with the data log and are address-translated from virtual logical addresses and propagate along the hierarchical log. As shown in FIG.
  • the HIL framework can easily build various types of hierarchical mapping structures even if the storage capacity increases or the mapping units of logs change.
  • the FTL provides the host system with a storage interface that can read and write any number of sectors.Like a typical storage device such as an HDD, data coherence and data durability are maintained.
  • a typical storage device such as an HDD
  • data coherence and data durability are maintained.
  • FTL implemented with the HIL framework must naturally accommodate the command queuing features supported by traditional storage interfaces, such as SATA's Native command queuing (NCQ) and SCSI's Tagged command queuing (TCQ).
  • NCQ Native command queuing
  • TCQ SCSI's Tagged command queuing
  • the host write procedure is largely divided into the foreground task of storing host data in the D-type cache and responding to the write completion, and the background task of serially updating the mapping information according to the mapping hierarchy of the log. Lose.
  • Sector-based host write requests for the logical address space are converted by the write thread to page-level operations install_data for the virtual logical address space and forwarded to the D-type log (1).
  • the write thread has only an interface with the D-type log among the logs in the HIL framework. It is executed independently of the log, but is not a log because it does not leave a nonvolatile state.
  • the D-type log stores the data requested by the host in volatile memory (2) and immediately responds to completion with installed_v (3).
  • the write thread receives the Installed_v response for all the page writes constituting one host write request, the write thread can respond to the host system with write_ack for the corresponding host write request. If the host read request arrives in the same logical address space as the write request without writing the data in the volatile buffer after the write thread's completion response, the FTL processes the read request with the latest data in the buffer and stores it. Data consistency must be ensured during device operation.
  • the D-type log writes the data held in the cache to the flash memory at the appropriate time according to the internal buffer management policy (4).
  • the location where the logical page is written corresponds to the mapping information, which is transferred to the upper M0 log by the install_mapping command (5).
  • the install_mapping command received by the M0 log is conceptually the same as the write command that the D log receives from the write thread. Therefore, the M0 log saves the mapping information in volatile memory and immediately responds to the D log with install_v. (6) After this completion response, the M0 log should ensure the consistency of the mapping data to the D-log by returning the most recent mapping data installed when the D log queries the mapping information. This is equivalent to guaranteeing consistency of host data to the host system during the storage device operation as the D log is a data write completion response.
  • mapping data in the M0 log is also essentially the same as the processing of host data in the data log.
  • Writing the mapping data from the M0 log into the flash memory creates a mapping to the mapping data, and then a new install_mapping command for the M1 log address space that can be updated in place must be sent to the M1 log.
  • the chained write request propagated to the address space of the hierarchical log by this same write request processing structure is repeated recursively until the top mapping log is reached.
  • FIG. 7 illustrates a recursive procedure in which a plurality of mapping data delivered from a lower log are collected in a unit mapping log, written on one page, and one mapping information thereof is successively transferred to a higher log.
  • mapping data is smaller than the data pointed to by the mapping information (e.g., 4B vs. 4KB)
  • the page unit operation in the lower log is converted to the request unit operation of the upper log and transferred to the upper log.
  • the cache maintained by each layer logs improves the response speed to write requests between the host and D-logs, and between logs and logs, and increases the efficiency of flash memory write operations.
  • the logs of each layer can be executed in parallel by default, so that data in volatile memory can be written to flash memory independently. Therefore, the FTL implemented by the HIL framework can optimize the performance of the FTL by simultaneously executing the tasks of each log in different threads and simultaneously sending read / write requests to several flash memory chips.
  • FIG. 8 shows a process in which a read request for a logical address space p is processed on a mapping hierarchy having a three-level mapping hierarchy. Since host writes are serially propagated from the writes of the data log to the higher mapping logs, the latest data or mapping information is always propagated from the bottom up. In addition, since each log maintains volatile memory, the most recently updated or referenced data can be maintained in volatile memory. Therefore, in order to maintain data coherence, the FTL implemented by the HIL framework basically operates as a bottom-up query like the write request processing.
  • the read thread first queries the D log and if there is data, the D log can transfer the data in volatile memory to the host system and complete the read processing without reading the data from flash memory. Otherwise, data must be read directly from flash memory and a bottom-up query process begins to obtain the necessary mapping information.
  • the query to the upper log continues until the queried data is in volatile memory. If all of the logs in the mapping hierarchy do not have data queried in volatile memory, the query reaches the top mapping log. Since the HIL framework assumes that all mapping information managed by the top level mapping log is kept in volatile memory, queries against the top level mapping log always succeed.
  • the upper log's data is the mapping information of the lower log, so the read thread is top-down to the lower log with the mapping information from the upper log. requery).
  • the log should always return the queried data by reading the data from flash memory using the mapping information received with the material's command. The process of the top-down material is repeated from the time when the data queried in the bottom-up query process is correctly returned from the volatile memory to the data log.
  • the read thread converts a sector read host request into a page query request to the data log (1).
  • a read thread like a write thread, is distinguished from a log that writes nonvolatile data to flash memory in that it maintains only volatile data structures for the operation of internal functions. Since the D log does not have data corresponding to the queried virtual logical address space pla_d in the volatile cache, when a cache miss response (Query_ack (miss, null)) is sent (2), the read thread gets mapping information for the pla_d address. The new query request is forwarded to the M0 log (3).
  • the query for the upper mapping log has the same interface as the query for the data log.
  • the M0 mapping log reads the cache hit and the query result value (B i , P j ) (mapping information on the logical page pla_d) as a response to the query (Query_ack).
  • the read thread resends the query command with the mapping information obtained from the upper mapping log to the D log (5), and the D log reads data from the received flash memory address and completes the response with the (6,7) read thread. (8).
  • the read thread can finally send the collected data to the host system after receiving a complete response from the data log through this same bottom-up query for all logical pages that make up a host request.
  • the interface between the read thread and the data log, and the read thread and the M0 log is the same for any higher mapping log Mi, so that the bottom-up query can easily extend the scenario of FIG. 8 even when a cache hit occurs in the Mi log. have.
  • read threads interact directly with all mapping logs, including data logs, to improve performance by processing host read requests in parallel as much as possible.
  • the host write command which is a non-blocking request, can immediately respond as soon as data is written to volatile memory, and writing the actual data into flash memory is a late task that can be distributed to multiple flash memory chips to improve performance.
  • the host read command which is a blocking request, can complete the response only after the requested data has been obtained, the performance can be improved by sending the request to as many flash memory chips as possible.
  • the host interface supports command queuing such as NCQ
  • each host read command is distributed among multiple read threads and each read thread independently interacts with the logs, simultaneously making read requests to the flash memory chip. Because they can be sent, the speed of processing host read requests can be greatly improved.
  • the HIL framework is designed to allow the read thread to interact directly with each log.
  • the data that has been written can only be released from the buffer after receiving the installed_v response to the mapping from the parent mapping log.
  • 9 illustrates a problem situation that may occur when data is released from a buffer after completion of writing and before receiving installed_v. If it is not certain that the mapping information for the latest data is reflected in the upper mapping log and the mapping information for the data disappears from the lower log, as shown in the shaded portion of FIG. There may be a point in time that appears to disappear from.
  • the thread that handles the read operation can run concurrently, independent of the log threads associated with the write operation, and if the read thread that executes independently at this point performs the read operation, then the past, rather than the latest version of the data in that logical page It will return the version data of as a result value. This situation must be avoided because it violates the data coherence requirement that the result of a read request to any logical address should return the result of the last successful response to the same logical address. Therefore, all logs must comply with the synchronization rule of releasing information about the logical page from the cache only after receiving the installed_v response as shown in the right side of FIG. 9, and this rule is an important design element that can prove the accuracy of the HIL framework. Design for provability).
  • Power failure recovery techniques built into the HIL framework ensure complete power failure recovery even if a power failure occurs randomly.
  • the effects of the power failure will be described first, and then a power failure technique for remedy this will be described.
  • FIG. 10 shows two effects, a residual effect and a lost update, in the case of a power failure during the execution of an operation for changing the internal state of the flash memory.
  • the residual effect is defined as an effect in which an unintended state remains in the flash memory due to a power failure during a flash memory write or erase operation. Since the flash memory chip does not guarantee the atomicity of the operation, if a power failure occurs during the execution of the write operation as shown in the right side of Fig. 10, 1) no data is written, 2) only a part of the intended data is written, or 3) All may be written. In the case of 1) or 2), the page could not write the intended data, so these pages can be detected and reused by using ECC or the like during the power failure recovery process.
  • the FTL guarantees the persistence of the data in response to the flush cache, etc., but the data cannot be recovered because the mapping information for the data is lost, even if the storage device is recovered in the event of a power failure, the file system or database system You may fall into this unrecoverable state.
  • the FTL when performing an operation that changes the state of the flash memory, the FTL must always consider the possibility of recovery, and the recovery process must be able to heal two effects, a residual effect and a lost update, in a systematic and verifiable manner.
  • the power failure recovery of the HIL framework consists of two phases: structural recovery and functional recovery.
  • Structural repair is the step of atomically removing all residual effects in the storage device.
  • Structural restoration of the HIL framework is a new concept that does not exist in existing known recovery techniques.
  • Functional recovery is the step of restoring consistency between data and metadata. For functional recovery, each log reproduces what would have been done during normal operation if there were no power failures.
  • each log removes residual effects independently of the other logs.
  • a spare block must be prepared to copy the normal data among the blocks that have effected, and 3) randomly overlapping power failures occur until the removal of residual effects is atomically over all logs that make up the HIL framework. We need a way to prevent this.
  • the HIL framework defines a block that the log is using or blocks that will be used in the near future and the order in which they are written. ).
  • the log performs flash memory write operations to blocks in the order specified in the block write list, and writes them in ascending order within the block.
  • the FTL scans only the blocks in the block write list, not the entire flash memory space, in order, so that the log can determine which blocks were being written at the moment of power failure.
  • the determination of whether the residual effect actually occurred uses the ECC and CRC information recorded in the spare area along with the data.
  • the log scans the list of block writes during the recovery process and uses the copy up to the page immediately preceding the page where the CRC error occurred in the crash frontier block.
  • the crash frontier page may or may not be read normally.
  • a successful read means that it is a potential error page that might return incorrect data in the future due to read disturb.
  • the structural recovery of the HIL framework can eliminate this residual effect page by rewriting the valid pages in the power failure block into a new block after identification of the power failure block. This is because if the residual effect page returns a valid value, it will be moved to a new page and written, so that the residual effect will be removed naturally, and if it does not return a valid value, it will be excluded from the copy and successfully excluded from the system.
  • a page copy operation for structural recovery of the HIL framework in the event of another power failure is called a don't care block. Performed on a special block.
  • An uninterpreted block is a block that is specially allocated only for structural recovery, which is maintained for each log with a block write list, and whose contents are not interpreted at all by the system. If a power failure occurs while programming a non-interpreted block during structural recovery, after the system reboots, the block is still in the non-interpreted block and thus does not affect the integrity of the system. An uninterpreted block is erased each time before the valid page copy operation of structural recovery and used in a new state.
  • the FTL constituting the HIL framework can consist of multiple logs, each of which can run in parallel. Therefore, the key to structural recovery is to atomically handle the task of eliminating the residual effects of multiple logs. To this end, structural restoration proceeds with the following procedure.
  • Structured recovery begins with the type C log looking for the most recent checkpoint information in the checkpoint area.
  • the size of the checkpoint area is limited, and since each page storing the checkpoint information includes a timestamp, the checkpoint information can be obtained by scanning the checkpoint area in a short time (1).
  • the checkpoint information includes information necessary for power failure recovery such as a block write list and an uninterpreted block of logs managed by the user and transmits them to the corresponding logs (2).
  • Each log scans the blocks from the write pointer to the block write list using the checkpoint information received (3) Finds the power failure block and the location where the ECC / CRC error occurred in the corresponding page, and removes the pages read normally from the power failure block. Copy to analysis block (4).
  • the log volatically changes the number of uninterpreted blocks and power failure blocks in checkpoint information as shown in the right side of FIG. 12 (5).
  • This volatile HIL meta-information update causes each to have a shadow block that consists entirely of valid pages in the power failure block, with the effect of the residual effect being completely eliminated.
  • the checkpoint information changed by the copying process and the update of the HIL metadata in parallel in each log are retransmitted to the checkpoint log (6).
  • the changed HIL metadata of all logs finally arrives in the C log, a complete shadow-tree is created.
  • the C log collects all the checkpoint information passed to it and writes it to the checkpoint area.
  • this task is completed successfully, all the above-described tasks are atomically replaced.
  • Type C logs explicitly broadcast all logs that the structural recovery has been completed successfully, and each log starts a functional recovery.
  • each log After the structural recovery, each log starts a functional recovery. From the point of view of each log, functional recovery is to reproduce the install_mapping process, which would have been done if there were no power failures, to restore the logical address space of each log to the state prior to the power outage.
  • the object of reproduction is mapping information for data written to the flash memory. Since the page of the flash memory consists of a data area and a spare area for recording meta information, the log writes mapping information to be used in the reproduction process together with the data in the flash memory page as shown in FIG. Since mapping data, which is data and recovery information, are stored together in a flash memory page by a single flash write operation, the log does not need to consider the order in which the data and recovery information are stored, and does not need to manage separate space for recovery information. .
  • the HIL framework makes it easy to maintain recovery information during normal operation, and the reproducing process can be handled easily because the data and mapping information are always on the same page.
  • each log can run independently, but in order to recover from power failure, minimal synchronization is required between logs during normal operation.
  • data must be written to flash memory before mapping to data. If the log is completely independent and the upper log writes the mapping information to the flash memory and the lower log does not write the data to the flash memory as shown in the left first part of FIG. 14, the mapping information is not actually written. Points to data that do not exist will cause problems with the data integrity of the storage device.
  • the log follows the rules that the mapping information passes to the parent log only after the child log has written the data in the hierarchy, thus keeping the flash memory write order constraint between the child log and the parent log.
  • MLC flash memory with sibling page structure does not guarantee the persistence of the data by successfully writing the data on a specific page, but it does not guarantee the persistence of the data contained in the page until all the pages in sibling relationship are used up.
  • the middle figure of FIG. 14 shows a situation in which the data of the first page that has been successfully written is lost due to a power failure that occurred while writing data to the second page in sibling relationship. If the mapping log writes mapping data without considering such a situation, there is a problem that the mapping information is referred to the missing data.
  • the third figure of FIG. 14 shows a problem of mapping and data consistency occurring during power failure recovery.
  • the power failure block is replaced by an uninterpreted block to remove the residual effect during recovery.
  • the mapping data of the valid data written in the power failure block has already been written by the upper mapping log, the mapping information is the current valid block after removing the residual effect.
  • point to data written in refer to nonsense data contained in a block that was valid at the time of a past power failure but became a current non-interpreted block (power failure block before power failure). There is.
  • the HIL framework uses a synchronization command called NV_grant that allows the child log to write the mapping data to flash memory, and an Intalled_NV that tells the parent log that the mapping data has been permanently written to the child log.
  • An interface was introduced. 15 illustrates an overview of operations of NV_grant and Intalled_NV.
  • the NV_grant command for data included in a specific page can be transferred to the upper log only after all the blocks to which the page belongs are written to flash memory and the write operation for the next block in the block write list starts. This condition ensures that (1) it is not lost in case of power failure due to the sibling page structure of MLC chip, and (2) that it is not included in power failure block.
  • the upper log receives the mapping information and keeps it in the cache before receiving the NV_Grant command.
  • the mapping information can be written.
  • the mapping information is not only written to flash memory, but also persisted to Installed_NV in the lower data log.
  • the lower log receiving the Installed_NV message may advance the replay pointer of the block write list with respect to the pages where the mapping information is persisted as shown in (7) of FIG. 15. Pages before the reproducing pointer no longer need to reproduce the update of the mapping information during power failure recovery because both the data and the mapping data for that data are persistent.
  • the reproduction process starts from the reproduction pointer, so that the reproduction time can be reduced compared to the reproduction from the beginning of the block write list. Blocks past the reproduction pointer in the log write list of the log can be truncated from the list since they no longer need to be used at recovery time.
  • the log After the structural recovery is completed, the log starts a functional recovery through a reproduction process. After the residual effect was removed by the structured recovery operation, the state of the log was 1) that all data structures held in volatile memory were lost, and 2) the mapping data for data after the reproduction pointer was written to flash memory from the upper log. It is conceptually identical to the state before the power failure, except that it is unknown. Therefore, the separate mechanism for the reproduction process is minimized and most of the install_mapping processing mechanisms during normal operation are reused.
  • the replay process retransmits the mapping information to the parent log by scanning pages along the block write list, starting at the rewrite pointer. Unlike normal data, which requires writing data and transmitting mapping information, the data is already written.
  • mapping information stored with the data needs to be transmitted in the reproduction process.
  • the mapping information to be transmitted can be obtained from the spare area during the scanning process.
  • the transmitted mapping data may have already been written to the flash memory from the upper mapping log before the power failure, but the updating of the mapping information is idempotent, so if the mapping information is sent in the same order, the result is the same even if the mapping information is updated several times. This guarantees that the mapping data can be written to the flash memory multiple times.
  • mapping information in the top-level mapping log is contained within one physical page, the write and reproduce pointers are in the same position, and the functional recovery of the logical address space of the top-level mapping log is completed by reading the page pointed to by the latest write pointer. do.
  • the logical address space of the restored highest mapping log M1 represents the mapping data of the lower mapping log M0, and in the M0 log, the mapping information from the reproduction pointer to the last page successfully written is reproduced (retransmitted to the upper log).
  • the HIL framework is oriented towards the generality of designing any of a variety of FTLs, it is important to implement the FTL as a specific instance and then verify the accuracy through testing to fully verify the accuracy of the HIL framework itself. It is not a verification. Therefore, the formal verification of the accuracy was taken through the abstracted system model of the HIL framework, and for this purpose, the design for provability was pursued from the system design stage.
  • FIG. 17 shows the steps of the formal verification process of the HIL framework.
  • the assumptions of the system were established, and the next step was the establishment of correctness criteria for clearly what it means for the storage system to operate correctly.
  • I created a formal specification of the HIL framework This process involves abstract modeling of HIL framework behavior, a clear definition of concepts, and a formal representation of key rules.
  • the criteria for accuracy, and the formal specification it was mathematically proved by deductive reasoning that the theorem about the accuracy of the HIL framework is true.
  • Table 1 shows the accuracy criteria for the storage system as the starting point for proof of accuracy.
  • the storage system may be regarded as having a finite number of times of normal operation and power failure recovery until the end of life after initialization.
  • Recency of data has different meanings in normal operation and power failure recovery.
  • the latest data will be the data with the most recent volatile write success response.
  • the power failure of the storage system is completed, the latest data may be the data that was last responded to lasting before the power failure.
  • the subdivided definition of the accuracy criteria in normal operation and power failure recovery in normal operation, “returns the data of the most recent volatile write success response to the read request”, that is, data consistency ( Coherence is guaranteed, and in the event of a power failure recovery, it is “to recover the data that was last responded to lasting before the power failure”, that is, recoverability.
  • the HIL framework proves to satisfy these two attributes (data consistency and recoverability), it is equivalent to demonstrating that the “always” accuracy criterion is satisfied on the time axis in which n pairs of normal operation and power failure recovery repeat.
  • the HIL framework introduces rules that must be followed in log operations to ensure data consistency and recoverability.
  • FIG. 19 when Data (X) in Cache i is recorded in Flash log i , new mapping information Link (X) is generated.
  • the Link (X) is then carried to the Cache i + 1 of the parent log i + 1 through the log between the interface successfully installed on this Link (X) Cache i + 1 according to installed_v rules of the HIL framework previously described Only after it is confirmed can Data (X) be removed from Cache i .
  • By following these rules it is possible to ensure that the connection request for Data (X) is not lost at any point during normal operation for the read request for Data (X). This is the same principle as placing a feature on the other hand after confirming that the target of the next target is held up with an outstretched hand to ensure safety during rock climbing.
  • the flash log does not reproduce all mappings in the log to improve recovery performance, but rather maintains a small sized Redo_set based on the replay pointer.
  • Installed_NV rules of the HIL framework described in Figure 15 this time Link to the conditions under which the Data (X) recorded in the flash log (Flash log i) can be removed from the reproduction set (Redo_set i) to Data (X) ( It is limited after it is confirmed that X) is persistent in the flash log (Flash log i + 1 ) of the upper log.
  • This rule ensures that the connection to Data (X) is not lost in any power failure situation by ensuring that the connection to Data (X) is revived by Log i 's recovery process, is present in the parent log, or either. To ensure.
  • any of a variety of FTLs can be configured through a combination of logs.
  • HIL is a generic framework for FTL design that can cover a variety of mapping units, write buffering or caching policies, and garbage collection policies.
  • the HIL framework according to the embodiments ensures successful recovery in any power failure situation and its accuracy has been verified.
  • HIL has solved the reliability problem of modern flash memory comprehensively and completely.
  • embodiments provide the possibility of performance optimization through the parallelism of threads, which effectively leads to the parallelism of flash memory requests.
  • a plurality of building blocks for configuring a flash translation layer may be provided to a user.
  • the plurality of building blocks may include a first processing block (eg, a D-type log) for processing data and at least one second processing block (eg, an M-type log) for hierarchically processing mapping information of data. ) And a third processing block (eg, a C-type log) for processing checkpoint information for the first processing block and the at least one second processing block.
  • a user interface for constructing a flash translation layer using a plurality of building blocks may be provided to a user. The user can design a desired FTL using a plurality of building blocks.
  • a user interface may be provided to the user that receives settings related to the design of the FTL.
  • the configuration related to the design of the FTL is related to the number of threads implementing the FTL, the configuration related to the number of cores driving the FTL, the configuration related to the number of threads processed per core, and the plurality of cores.
  • configuration related to mapping between the plurality of threads For example, individual logs may be set to be implemented as functions, set to be implemented as a single thread, or set to be implemented as multi-threads. If individual logs are implemented as functions, FTL can be implemented as a single thread. If individual logs are implemented as single thread or multithreaded, FTL can be implemented as multithreaded.
  • thread-core mapping may be set. For example, if the number of cores is two and the FTL is implemented with ten threads, the mapping between the two cores and the ten threads may be set.
  • An FTL may be generated based on a plurality of building blocks used in the design of the FTL and settings related to the design of the FTL.
  • the HIL framework provides an essential synchronization interface to satisfy data consistency and recoverability of data even when multiple threads execute FTL in parallel. For example, individual logs preferentially determine cache hits to satisfy data consistency.
  • the upper log and the lower log exchange NV_grant and Installed_NV to satisfy the recoverability of data.
  • one log can be implemented in multi-threaded execution in parallel with each other.
  • one log may be implemented as a function, where several logs may be combined to create one thread.
  • FTL built on the HIL framework can be leveraged without code changes, from single core environments to multi-core environments.
  • a single thread or a multi-thread may be driven for each core.
  • the HIL framework can be configured in various forms in a multicore / multithreaded environment.
  • the pre-generated FTL may be adaptively regenerated according to the changed setting.
  • a user interface may be provided to the user that changes settings related to the design of the FTL.
  • the FTL may be adaptively regenerated based on the new configuration and the plurality of building blocks used for the previously generated FTL. In other words, even if the setting is changed, such as hardware configuration, the FTL can be adaptively regenerated without changing the code.
  • the embodiments described above may be implemented as hardware components, software components, and / or combinations of hardware components and software components.
  • the devices, methods, and components described in the embodiments may include, for example, processors, controllers, arithmetic logic units (ALUs), digital signal processors, microcomputers, field programmable gates (FPGAs). It may be implemented using one or more general purpose or special purpose computers, such as an array, a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions.
  • the processing device may execute an operating system (OS) and one or more software applications running on the operating system.
  • the processing device may also access, store, manipulate, process, and generate data in response to the execution of the software.
  • OS operating system
  • the processing device may also access, store, manipulate, process, and generate data in response to the execution of the software.
  • processing device includes a plurality of processing elements and / or a plurality of types of processing elements. It can be seen that it may include.
  • the processing device may include a plurality of processors or one processor and one controller.
  • other processing configurations are possible, such as parallel processors.
  • the software may include a computer program, code, instructions, or a combination of one or more of the above, and configure the processing device to operate as desired, or process it independently or collectively. You can command the device.
  • Software and / or data may be any type of machine, component, physical device, virtual equipment, computer storage medium or device in order to be interpreted by or to provide instructions or data to the processing device. Or may be permanently or temporarily embodied in a signal wave to be transmitted.
  • the software may be distributed over networked computer systems so that they may be stored or executed in a distributed manner.
  • Software and data may be stored on one or more computer readable recording media.
  • the method according to the embodiment may be embodied in the form of program instructions that can be executed by various computer means and recorded in a computer readable medium.
  • the computer readable medium may include program instructions, data files, data structures, etc. alone or in combination.
  • the program instructions recorded on the media may be those specially designed and constructed for the purposes of the embodiments, or they may be of the kind well-known and available to those having skill in the computer software arts.
  • Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks.
  • Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.
  • the hardware device described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

A flash translation layer design framework of a flash memory is disclosed. A flash translation layer structure, according to one embodiment, comprises: a first log for processing data; a second log for processing mapping information; and a third log for processing checkpoint information, wherein the first and second logs can recover errors by using the checkpoint information.

Description

증명 가능하고 정확한 오류 복구를 위한 플래시 변환 계층 설계 프레임워크 Flash translation layer design framework for verifiable and accurate error recovery

아래 실시예들은 플래시 메모리의 플래시 변환 계층 설계 프레임워크에 관한 것이다.The embodiments below relate to a flash translation layer design framework of flash memory.

플래시메모리는 HDD와 달리 제자리 갱신이 불가능하고, 페이지 단위의 읽기 및 쓰기, 블록 단위의 지우기를 기본 동작으로 하며, 배드 블록을 허용하고, 수명이 제한되는 등의 제약이 있다. 따라서 플래시메모리를 저장 매체로 한 고성능, 고신뢰성 저장 장치를 개발하기 위해서는 플래시메모리의 장점을 효과적으로 활용하고 제약사항들을 극복할 수 있는 방안이 필요하며, 플래시 변환 계층(FTL)이 주로 이러한 역할을 담당해왔다. FTL은 제자리 갱신이 불가능한 플래시메모리의 제약사항을 극복하기 위해 논리 섹터 주소와 플래시메모리 물리 주소 간의 매핑(mapping)의 개념을 도입하여, 호스트 시스템에게 제자리 갱신이 가능한 블록 저장 장치 시스템을 제공한다. 또한 FTL은 매핑을 활용하여 동작 중 발생 가능한 배드 블록을 향후 사용되지 않도록 조치하거나, 특정한 물리 블록이 과도하게 지워지는 것을 방지하는 마모도 평준화의 기능을 수행한다. Unlike the HDD, the flash memory cannot be updated in place, and the basic operations include reading and writing in units of pages and erasing in units of blocks, allowing bad blocks, and limiting lifetime. Therefore, in order to develop a high-performance, high-reliability storage device using flash memory as a storage medium, it is necessary to effectively utilize the advantages of flash memory and overcome the limitations, and the flash translation layer (FTL) mainly plays this role. Have been. FTL introduces the concept of mapping between logical sector addresses and flash memory physical addresses to overcome the limitations of flash memory that cannot be updated in place, thereby providing a block storage system capable of in-place updating to a host system. FTL also uses mapping to prevent bad blocks that may occur during operation from being used in the future, or to level out wear that prevents certain physical blocks from being over-erased.

최근 플래시메모리의 공정이 미세화되면서 점점 신뢰성 특성이 악화되고 있으므로 플래시 저장 시스템의 신뢰성 보장을 위한 FTL의 역할과 기능이 점점 더 커지고 있는 추세이다. 특히 최근에는 정상적으로 써진 데이터가 일정 시간 후 변형되는 비트 반전 오류의 가능성이 점점 증가하고, 블록 당 허용된 지우기/쓰기 횟수는 점점 줄어들고 있다. 더욱이 전원 오류(crash)에 관련되어 과거에는 나타나지 않았던 오류 상황들이 새롭게 발견되면서 플래시메모리 저장장치의 신뢰성을 위협하는 중요한 문제들로 부각되고 있다. Recently, as the process of flash memory is miniaturized, reliability characteristics are deteriorated. Therefore, the role and function of FTL for ensuring the reliability of flash storage systems are increasing. In particular, the possibility of bit inversion error in which normally written data is deformed after a certain time is increasing, and the number of erase / writes allowed per block is gradually decreasing. In addition, newly discovered error situations related to power failures are emerging as important issues that threaten the reliability of flash memory storage devices.

전원 오류 발생 당시 연산(프로그램/지우기)이 실행 중이던 플래시메모리의 블록 또는 페이지에는 FTL이 의도하지 않은 잔여 효과가 남을 수 있고 MLC 플래시메모리의 어떤 페이지를 쓰는 도중 전원 오류가 발생하면, 해당 페이지와 형제 관계를 이루며 이미 성공적으로 써진 페이지의 데이터 조차 함께 손실될 수 있다. 또한 전원 오류 문제는 복구 과정에서 전원 오류가 발생한 블록을 식별하기 어렵고 복구 중 전원 오류가 중첩되어 발생할 수도 있다. 이러한 전원 오류 복구 문제의 어려움들을 극복하고 신뢰성 높은 저장 장치 시스템을 제공하기 위해서 FTL은 정상 동작 중 항상 복구 가능성(recoverability)을 고려해야 하며, 전원 오류 복구 과정에서는 이러한 모든 상황을 고려하여 전원 오류로 인한 플래시메모리의 물리적 비정상 상태를 제거하고 데이터의 논리적 일관성을 회복해야 한다. If a block or page in the flash memory where the operation (program / erase) was executing at the time of a power failure may have an unintended residual effect by the FTL and a power failure occurs while writing a page in the MLC flash memory, the page and its sibling Even data from pages that are successfully written in a relationship can be lost together. In addition, the power failure problem is difficult to identify the block in which the power failure occurred during the recovery process, and may also occur due to overlapping power failure during recovery. In order to overcome these power failure recovery problems and provide a reliable storage system, FTL must always consider recoverability during normal operation. The physical abnormality of the memory must be eliminated and the logical consistency of the data must be restored.

기존의 불완전하고 FTL 종속적인 전원 오류 복구 방식의 한계를 극복하기 위해, 실시예들은 완전하고 체계적이며 정확성 검증이 가능한 전원 오류 복구 기법을 제시하고, 다양한 FTL을 구성적으로(compositional) 개발할 수 있는 HIL(Hierarchically Interacting a set of Logs) 프레임워크를 제안한다. In order to overcome the limitations of existing incomplete and FTL dependent power failure recovery methods, embodiments present a complete, systematic and accurate verification of power failure recovery, and HIL capable of developing various FTL compositionally. We propose a (Hierarchically Interacting a set of Logs) framework.

HIL프레임워크는 FTL의 설계 및 구현의 기본 구축 단위(building block)로서 로그(Log)를 제공한다. 로그는 데이터의 영속적 기록을 위해 제자리 갱신이 가능한 선형 주소 공간을 제공하며 저장 장치 시스템을 구성하는 호스트 데이터 및 FTL 메타데이터를 나누어 담는 용기(Container)의 역할을 수행한다. FTL 개발자는 로그들을 조합하여 임의의 다양한 FTL들을 설계하고 구현할 수 있다. The HIL framework provides a log as the building block for the design and implementation of FTL. The log provides a linear address space that can be updated in place for persistent recording of data and acts as a container for dividing the host data and FTL metadata that make up the storage system. FTL developers can design and implement any of a variety of FTLs by combining logs.

HIL 프레임워크가 제공하는 전원 오류 복구 기법은 잔여 효과, 형제 페이지 문제, 중첩된 전원 오류 등의 문제를 모두 고려하여 임의로 전원 오류가 발생하는 상황에서도 완벽한 복구를 보장한다. HIL프레임워크는 증명 가능성을 위한 설계(Design for Provability)를 지향함으로써, 전원 오류의 정확성을 정형적으로 증명할 수 있다. The power failure recovery technique provided by the HIL framework ensures complete recovery even in the event of a random power failure, taking into account the effects of residual effects, sibling page problems, and overlapping power failures. The HIL framework can formally prove the accuracy of power failures by oriented towards Design for Provability.

HIL 프레임워크를 구성하는 각각의 로그는 독립된 쓰레드로 구현되고, 각 쓰레드는 일련의 플래시메모리 연산 스트림들을 생성하므로 FTL은 자연스럽게 최대한의 쓰레드 수준 병렬성과 플래시 수준 병렬성을 이용할 수 있다. 각각의 로그 쓰레드는 데이터 일관성(data coherence)과 복구 가능성(recoverability)을 지키기 위한 동기화 인터페이스를 제외하고는 서로 독립적이고 병렬적으로 수행될 수 있다Each log that makes up the HIL framework is implemented as a separate thread, and each thread creates a series of flash memory compute streams, so that FTL naturally takes full advantage of thread-level parallelism and flash-level parallelism. Each log thread can run independently and in parallel except for a synchronization interface to ensure data coherence and recoverability.

일 측에 따른 플래시 변환 계층 구조는 데이터를 처리하는 제1 처리 모듈; 상기 데이터의 매핑 정보를 처리하는 제2 처리 모듈; 및 상기 제1 처리 모듈의 무해석 블록에 대한 정보와 상기 제2 처리 모듈의 무해석 블록에 대한 정보를 포함하는 체크포인트 정보를 처리하는 제3 처리 모듈를 포함하고, 상기 제1 처리 모듈은 상기 제1 처리 모듈의 무해석 블록을 이용하여 오류를 복구하고, 상기 제2 처리 모듈은 상기 제2 처리 모듈의 무해석 블록을 이용하여 오류를 복구할 수 있다.According to one or more exemplary embodiments, a flash translation hierarchy includes a first processing module configured to process data; A second processing module for processing the mapping information of the data; And a third processing module configured to process checkpoint information including information on an uninterpreted block of the first processing module and information on an uninterpreted block of the second processing module, wherein the first processing module includes the first processing module. The error recovery may be performed using the non-interpretation block of the first processing module, and the second processing module may recover the error using the non-interpretation block of the second processing module.

이 때, 오류 복구를 위하여, 상기 제1 처리 모듈은 오류 페이지를 검출하고, 상기 오류 페이지를 포함하는 오류 블록 내 유효한 페이지들을 상기 제1 처리 모듈의 무해석 블록에 복사하며, 복사가 완료되면 상기 오류 블록과 상기 제1 처리 모듈의 무해석 블록을 논리적으로 스왑할 수 있다.At this time, for error recovery, the first processing module detects an error page, copies valid pages in an error block including the error page to an uninterpreted block of the first processing module, and when copying is completed, The error block and the non-interpretation block of the first processing module may be logically swapped.

또한, 상기 제1 처리 모듈의 체크포인트 정보는 상기 제1 처리 모듈의 블록 쓰기 리스트를 더 포함하고, 상기 제1 처리 모듈은 상기 블록 쓰기 리스트를 이용하여 상기 오류 페이지를 검출할 수 있다.The checkpoint information of the first processing module may further include a block write list of the first processing module, and the first processing module may detect the error page using the block write list.

또한, 상기 제1 처리 모듈의 체크포인트 정보는 상기 제1 처리 모듈의 블록 쓰기 리스트 및 상기 제1 처리 모듈의 쓰기 포인터를 더 포함하고, 상기 제1 처리 모듈은 상기 제1 처리 모듈의 쓰기 포인터가 지시하는 페이지부터 상기 제1 처리 모듈의 블록 쓰기 리스트를 따라 페이지의 오류 여부를 검사함으로써 상기 오류 페이지를 검출할 수 있다.The checkpoint information of the first processing module may further include a block write list of the first processing module and a write pointer of the first processing module. The first processing module may further include a write pointer of the first processing module. The error page may be detected by checking whether a page is in error along the block write list of the first processing module from the page to which the instruction is directed.

또한, 상기 제1 처리 모듈은 상기 오류 블록과 상기 제1 처리 모듈의 무해석 블록의 논리적 스왑으로 인하여 갱신된 체크포인트 정보를 상기 제3 처리 모듈로 전송할 수 있다.In addition, the first processing module may transmit updated checkpoint information to the third processing module due to a logical swap between the error block and the non-interpretation block of the first processing module.

또한, 상기 제1 처리 모듈의 무해석 블록을 이용하여 오류를 복구한 뒤, 상기 제1 처리 모듈은 상기 데이터가 저장된 페이지로부터 상기 데이터의 매핑 정보를 획득하고, 상기 데이터의 매핑 정보를 상기 제2 처리 모듈로 전송할 수 있다.In addition, after recovering an error using the non-interpreted block of the first processing module, the first processing module obtains the mapping information of the data from the page where the data is stored, and converts the mapping information of the data to the second. Can be sent to the processing module.

또한, 상기 제1 처리 모듈의 체크포인트 정보는 상기 제1 처리 모듈의 블록 쓰기 리스트, 상기 제1 처리 모듈의 쓰기 포인터, 및 상기 제1 처리 모듈의 재현 포인터를 더 포함하고, 상기 제1 처리 모듈은 상기 제1 처리 모듈의 블록 쓰기 리스트를 따라 상기 제1 처리 모듈의 재현 포인터가 지시하는 페이지부터 상기 제1 처리 모듈의 쓰기 포인터가 지시하는 페이지까지 매핑 정보를 획득하여 상기 제2 처리 모듈로 전송할 수 있다.The checkpoint information of the first processing module may further include a block write list of the first processing module, a write pointer of the first processing module, and a reproduction pointer of the first processing module. Acquires mapping information from the page indicated by the reproduction pointer of the first processing module to the page indicated by the write pointer of the first processing module along the block write list of the first processing module, and transmits the mapping information to the second processing module. Can be.

또한, 상기 제1 처리 모듈은 쓰기 명령을 수신하는 경우 상기 쓰기 명령에 대응하는 데이터를 캐시에 저장하고, 읽기 명령을 수신하는 경우 상기 읽기 명령에 대응하는 데이터가 상기 캐시에 존재하는지 여부를 판단할 수 있다.The first processing module may store data corresponding to the write command in a cache when receiving a write command, and determine whether data corresponding to the read command exists in the cache when receiving a read command. Can be.

또한, 상기 제1 처리 모듈은 상기 데이터 및 상기 데이터의 매핑 정보를 플래시 메모리의 동일한 페이지에 저장할 수 있다. 또한, 상기 제1 처리 모듈은 상기 데이터를 플래시 메모리에 저장한 뒤, 상기 데이터의 매핑 정보를 상기 제2 처리 모듈로 전송할 수 있다.The first processing module may store the data and the mapping information of the data in the same page of a flash memory. The first processing module may store the data in a flash memory and then transmit mapping information of the data to the second processing module.

또한, 상기 제1 처리 모듈은 상기 데이터를 페이지 단위로 플래시 메모리에 저장하고, 페이지 단위의 데이터가 저장되면 블록 쓰기 리스트를 따라 쓰기 포인터를 전진시킬 수 있다.The first processing module may store the data in a flash memory in units of pages and, when the data in units of pages is stored, advance the write pointer along the block write list.

또한, 상기 제1 처리 모듈은 상기 쓰기 포인터가 블록 경계를 지나는 경우 상기 제2 처리 모듈로 영속화 요청 신호를 전송하고, 상기 제2 처리 모듈은 상기 영속화 요청에 반응하여 상기 영속화 요청 신호에 대응하는 블록의 매핑 정보를 플래시 메모리에 저장하며, 상기 제1 처리 모듈은 상기 제2 처리 모듈로부터 영속화 완료 신호를 수신하면 상기 블록 쓰기 리스트를 따라 재현 포인터를 전진시킬 수 있다.The first processing module transmits a persistence request signal to the second processing module when the write pointer crosses a block boundary, and the second processing module responds to the persistence request in response to the block corresponding to the persistence request signal. The mapping information may be stored in a flash memory, and the first processing module may advance a reproduction pointer along the block write list when receiving the persistence completion signal from the second processing module.

또한, 오류 복구를 위하여, 상기 제2 처리 모듈은 오류 페이지를 검출하고, 상기 오류 페이지를 포함하는 오류 블록 내 유효한 페이지들을 상기 제2 처리 모듈의 무해석 블록에 복사하며, 복사가 완료되면 상기 오류 블록과 상기 제2 처리 모듈의 무해석 블록을 논리적으로 스왑할 수 있다.In addition, for error recovery, the second processing module detects an error page, copies valid pages in the error block including the error page to an uninterpreted block of the second processing module, and if the copy is completed, the error. Blocks and non-interpreted blocks of the second processing module may be logically swapped.

또한, 상기 제2 처리 모듈의 체크포인트 정보는 상기 제2 처리 모듈의 블록 쓰기 리스트를 더 포함하고, 상기 제2 처리 모듈은 상기 블록 쓰기 리스트를 이용하여 상기 오류 페이지를 검출할 수 있다.The checkpoint information of the second processing module may further include a block write list of the second processing module, and the second processing module may detect the error page using the block write list.

또한, 상기 제2 처리 모듈의 체크포인트 정보는 상기 제2 처리 모듈의 블록 쓰기 리스트 및 상기 제2 처리 모듈의 쓰기 포인터를 더 포함하고, 상기 제2 처리 모듈은 상기 제2 처리 모듈의 쓰기 포인터가 지시하는 페이지부터 상기 제2 처리 모듈의 블록 쓰기 리스트를 따라 페이지의 오류 여부를 검사함으로써 상기 오류 페이지를 검출할 수 있다.The checkpoint information of the second processing module may further include a block write list of the second processing module and a write pointer of the second processing module. The second processing module may further include a write pointer of the second processing module. The error page may be detected by checking whether a page is in error along the block write list of the second processing module from the page indicating.

또한, 상기 제2 처리 모듈은 상기 오류 블록과 상기 제2 처리 모듈의 무해석 블록의 논리적 스왑으로 인하여 갱신된 체크포인트 정보를 상기 제3 처리 모듈로 전송할 수 있다.In addition, the second processing module may transmit updated checkpoint information to the third processing module due to a logical swap between the error block and the non-interpretation block of the second processing module.

또한, 상기 플래시 변환 계층 구조는 상기 매핑 정보의 상위 매핑 정보를 처리하는 상위 처리 모듈을 더 포함하고, 상기 제2 처리 모듈의 무해석 블록을 이용하여 오류를 복구한 뒤, 상기 제2 처리 모듈은 상기 매핑 정보가 저장된 페이지로부터 상기 매핑 정보의 상위 매핑 정보를 획득하고, 상기 매핑 정보의 상위 매핑 정보를 상기 상위 처리 모듈로 전송할 수 있다.The flash conversion hierarchy further includes an upper processing module for processing upper mapping information of the mapping information, and after recovering an error using an uninterpreted block of the second processing module, the second processing module The upper mapping information of the mapping information may be obtained from a page in which the mapping information is stored, and the upper mapping information of the mapping information may be transmitted to the higher processing module.

또한, 상기 제2 처리 모듈의 체크포인트 정보는 상기 제2 처리 모듈의 블록 쓰기 리스트, 상기 제2 처리 모듈의 쓰기 포인터, 및 상기 제2 처리 모듈의 재현 포인터를 더 포함하고, 상기 제2 처리 모듈은 상기 제2 처리 모듈의 블록 쓰기 리스트를 따라 상기 제2 처리 모듈의 재현 포인터가 지시하는 페이지부터 상기 제2 처리 모듈의 쓰기 포인터가 지시하는 페이지까지 상위 매핑 정보를 획득하여 상기 상위 처리 모듈로 전송할 수 있다.The checkpoint information of the second processing module may further include a block write list of the second processing module, a write pointer of the second processing module, and a reproduction pointer of the second processing module. Acquires upper mapping information from a page indicated by the reproduction pointer of the second processing module to a page indicated by the write pointer of the second processing module and transmits the upper mapping information to the higher processing module according to the block write list of the second processing module; Can be.

또한, 상기 제2 처리 모듈은 매핑 명령을 수신하는 경우 상기 매핑 명령에 대응하는 매핑 정보를 캐시에 저장하고, 읽기 명령을 수신하는 경우 상기 읽기 명령에 대응하는 매핑 정보가 상기 캐시에 존재하는지 여부를 판단할 수 있다.The second processing module may store mapping information corresponding to the mapping command in a cache when a mapping command is received, and determine whether mapping information corresponding to the read command exists in the cache when receiving a read command. You can judge.

또한, 상기 제2 처리 모듈은 상기 매핑 정보 및 상기 매핑 정보의 상위 매핑 정보를 플래시 메모리의 동일한 페이지에 저장할 수 있다.The second processing module may store the mapping information and the upper mapping information of the mapping information in the same page of the flash memory.

또한, 상기 플래시 변환 계층 구조는 상기 매핑 정보의 상위 매핑 정보를 처리하는 상위 처리 모듈을 더 포함하고, 상기 제2 처리 모듈은 상기 매핑 정보를 플래시 메모리에 저장한 뒤, 상기 매핑 정보의 상위 매핑 정보를 상기 상위 처리 모듈로 전송할 수 있다.The flash conversion hierarchy further includes an upper processing module configured to process upper mapping information of the mapping information, and the second processing module stores the mapping information in a flash memory, and then upper mapping information of the mapping information. May be transmitted to the higher processing module.

또한, 상기 제2 처리 모듈은 상기 매핑 정보를 페이지 단위로 플래시 메모리에 저장하고, 페이지 단위의 매핑 정보가 저장되면 블록 쓰기 리스트를 따라 쓰기 포인터를 전진시킬 수 있다.The second processing module may store the mapping information in a flash memory in units of pages, and advance the write pointer along the block write list when the mapping information in units of pages is stored.

또한, 상기 플래시 변환 계층 구조는 상기 매핑 정보의 상위 매핑 정보를 처리하는 상위 처리 모듈을 더 포함하고, 상기 제2 처리 모듈은 상기 쓰기 포인터가 블록 경계를 지나는 경우 상기 상위 처리 모듈로 영속화 요청 신호를 전송하고, 상기 상위 처리 모듈은 상기 영속화 요청에 반응하여 상기 영속화 요청 신호에 대응하는 블록의 상위 매핑 정보를 플래시 메모리에 저장하며, 상기 제2 처리 모듈은 상기 상위 처리 모듈로부터 영속화 완료 신호를 수신하면 상기 블록 쓰기 리스트를 따라 재현 포인터를 전진시킬 수 있다.The flash translation layer structure may further include an upper processing module configured to process upper mapping information of the mapping information, and the second processing module sends a persistence request signal to the higher processing module when the write pointer crosses a block boundary. And the upper processing module stores upper mapping information of a block corresponding to the persistent request signal in a flash memory in response to the persistent request, and when the second processing module receives the persistent completion signal from the higher processing module, A reproduction pointer can be advanced along the block write list.

또한, 상기 오류는 비동기적으로 발생되는 전원 오류를 포함할 수 있다.In addition, the error may include a power error that occurs asynchronously.

또한, 상기 플래시 변환 계층에 포함되는 처리 모듈은 호스트, 다른 처리 모듈, 및 플래시 메모리 중 적어도 하나와 연결되는 인터페이스부; 휘발성 메모리를 포함하는 캐시부; 및 상기 인터페이스부와 상기 캐시부를 이용하여 처리 모듈 유형에 따른 데이터 또는 정보를 처리하는 처리부를 포함할 수 있다.The processing module included in the flash translation layer may include an interface unit connected to at least one of a host, another processing module, and a flash memory; A cache unit including volatile memory; And a processing unit processing data or information according to a processing module type using the interface unit and the cache unit.

또한, 상기 플래시 변환 계층 구조는 블록 상태 정보를 처리하는 제4 처리 모듈을 더 포함하고, 상기 제3 처리 모듈은 상기 제4 처리 모듈의 무해석 블록에 대한 정보를 더 포함하며, 상기 제4 처리 모듈은 상기 제4 처리 모듈의 무해석 블록을 이용하여 오류를 복구할 수 있다.The flash translation hierarchy further includes a fourth processing module for processing block state information, wherein the third processing module further includes information on an uninterpreted block of the fourth processing module, and the fourth processing. The module may recover from the error using the non-interpreted block of the fourth processing module.

또한, 플래시 변환 계층 구조는 다른 처리 모듈을 위한 비휘발성 버퍼로 동작하는 제5 처리 모듈을 더 포함하고, 상기 제3 처리 모듈은 상기 제5 처리 모듈의 무해석 블록에 대한 정보를 더 포함하며, 상기 제5 처리 모듈은 상기 제5 처리 모듈의 무해석 블록을 이용하여 오류를 복구할 수 있다.Further, the flash translation hierarchy further includes a fifth processing module that operates as a nonvolatile buffer for another processing module, wherein the third processing module further includes information about an uninterpreted block of the fifth processing module, The fifth processing module may recover an error by using an uninterpreted block of the fifth processing module.

다른 일 측에 따른 플래시 메모리 컨트롤러는 플래시 메모리 연산에 의해 발생되는 동기적 오류를 관리하는 관리부; 및 데이터를 처리하는 제1 처리 모듈, 상기 데이터의 매핑 정보를 처리하는 제2 처리 모듈, 및 상기 제1 처리 모듈의 무해석 블록에 대한 정보와 상기 제2 처리 모듈의 무해석 블록에 대한 정보를 포함하는 체크포인트 정보를 처리하는 제3 처리 모듈을 포함하는 플래시 변환 계층부를 포함한다. 여기서, 상기 제1 처리 모듈은 상기 제1 처리 모듈의 무해석 블록을 이용하여 비동기적 오류를 복구하고, 상기 제2 처리 모듈은 상기 제2 처리 모듈의 무해석 블록을 이용하여 비동기적 오류를 복구할 수 있다.According to another aspect of the present invention, a flash memory controller includes a manager configured to manage a synchronous error caused by a flash memory operation; And a first processing module that processes data, a second processing module that processes the mapping information of the data, and information about an uninterpreted block of the first processing module and information about an uninterpreted block of the second processing module. And a flash translation layer unit including a third processing module for processing checkpoint information to be included. Here, the first processing module recovers asynchronous errors using the non-interpretation block of the first processing module, and the second processing module recovers asynchronous errors using the non-interpretation block of the second processing module. can do.

다른 일 측에 따른 플래시 변환 계층 구조는 데이터를 처리하는 D-로그; 상기 데이터의 매핑 정보를 계층적으로 처리하는 복수의 M-로그들을 포함한다.According to another aspect, a flash conversion hierarchy includes a D-log for processing data; It includes a plurality of M-logs for hierarchically processing the mapping information of the data.

이 때, 상기 복수의 M-로그들 각각은 하위 로그로부터 수신되는 정보를 자신에게 할당된 플래시 메모리 자원에 저장하고, 상기 하위 로그로부터 수신되는 정보의 크기가 미리 정해진 크기보다 큰 경우 상기 플래시 메모리 자원의 매핑 정보를 상위 로그로 전송할 수 있다.In this case, each of the plurality of M-logs stores the information received from the lower log in the flash memory resource allocated to the plurality of M-logs, and when the size of the information received from the lower log is larger than a predetermined size, the flash memory resource. Mapping information of can be transmitted to the upper log.

또한, 상기 복수의 M-로그들 중 하위 로그로부터 수신되는 정보의 크기가 미리 정해진 크기 이하인 로그가 최상위 M-로그로 결정될 수 있다.In addition, a log whose size of information received from a lower log among the plurality of M-logs is smaller than or equal to a predetermined size may be determined as the highest M-log.

또한, 상기 최상위 M-로그는 상기 하위 로그로부터 수신되는 정보를 자신에게 할당된 플래시 메모리 자원에 저장하고, 상기 플래시 메모리 자원의 매핑 정보를 체크포인트 정보를 처리하는 C-로그로 전송할 수 있다.In addition, the highest M-log may store information received from the lower log in a flash memory resource allocated thereto, and transmit mapping information of the flash memory resource to a C-log that processes checkpoint information.

또한, 상기 복수의 M-로그들 각각의 특성은 개별 M-로그 별로 설정되고, 상기 복수의 M-로그들 각각의 특성은 상기 복수의 M-로그들 각각의 매핑 단위 및 상기 복수의 M-로그들 각각의 캐시 관리 정책 중 적어도 하나를 포함할 수 있다.In addition, the characteristics of each of the plurality of M-logs are set for individual M-logs, and the characteristics of each of the plurality of M-logs are the mapping unit of each of the plurality of M-logs and the plurality of M-logs. Each of the cache management policy may include at least one.

또한, 블록 상태 정보를 처리하는 L-로그; 및 상기 블록 상태 정보의 매핑 정보를 계층적으로 처리하는 복수의 LM-로그들을 더 포함할 수 있다.In addition, the L-log processing the block state information; And a plurality of LM-logs hierarchically processing the mapping information of the block state information.

또한, 상기 복수의 LM-로그들 각각은 하위 로그로부터 수신되는 정보를 자신에게 할당된 플래시 메모리 자원에 저장하고, 상기 하위 로그로부터 수신되는 정보의 크기가 미리 정해진 크기보다 큰 경우 상기 플래시 메모리 자원의 매핑 정보를 상위 로그로 전송할 수 있다.Each of the plurality of LM-logs stores information received from a lower log in a flash memory resource allocated to the plurality of LM-logs, and when the size of the information received from the lower log is larger than a predetermined size. Mapping information can be sent to the upper log.

또한, 상기 복수의 LM-로그들 중 하위 로그로부터 수신되는 정보의 크기가 미리 정해진 크기 이하인 로그가 최상위 LM-로그로 결정될 수 있다.In addition, a log whose size of information received from a lower log among the plurality of LM-logs is smaller than or equal to a predetermined size may be determined as the highest LM-log.

또한, 상기 최상위 LM-로그는 상기 하위 로그로부터 수신되는 정보를 자신에게 할당된 플래시 메모리 자원에 저장하고, 상기 플래시 메모리 자원의 매핑 정보를 체크포인트 정보를 처리하는 C-로그로 전송할 수 있다.In addition, the highest LM-log may store information received from the lower log in a flash memory resource allocated thereto, and transmit mapping information of the flash memory resource to a C-log that processes checkpoint information.

또한, 상기 복수의 LM-로그들 각각의 특성은 개별 LM-로그 별로 설정되고, 상기 복수의 LM-로그들 각각의 특성은 상기 복수의 LM-로그들 각각의 매핑 단위 및 상기 복수의 LM-로그들 각각의 캐시 관리 정책 중 적어도 하나를 포함할 수 있다.In addition, characteristics of each of the plurality of LM-logs are set for each individual LM-log, and characteristics of each of the plurality of LM-logs are mapping units of each of the plurality of LM-logs and the plurality of LM-logs. Each of the cache management policy may include at least one.

또 다른 일 측에 따른 플래시 변환 계층을 설계하는 방법은 플래시 변환 계층을 구성하기 위한 복수의 빌딩 블록들을 제공하는 단계를 포함한다. 여기서, 상기 복수의 빌딩 블록들은 데이터를 처리하는 제1 처리 블록; 상기 데이터의 매핑 정보를 계층적으로 처리하는 적어도 하나의 제2 처리 블록; 및 상기 제1 처리 블록의 무해석 블록에 대한 정보와 상기 적어도 하나의 제2 처리 블록의 무해석 블록에 대한 정보를 포함하는 체크포인트 정보를 처리하는 제3 처리 블록을 포함하며, 상기 제1 처리 블록은 상기 제1 처리 블록의 무해석 블록을 이용하여 오류를 복구하고, 상기 적어도 하나의 제2 처리 블록은 상기 적어도 하나의 제2 처리 블록의 무해석 블록을 이용하여 오류를 복구할 수 있다.According to another aspect, a method of designing a flash translation layer includes providing a plurality of building blocks for constructing a flash translation layer. The plurality of building blocks may include a first processing block that processes data; At least one second processing block hierarchically processing the mapping information of the data; And a third processing block for processing checkpoint information including information about an uninterpreted block of the first processing block and information about an uninterpreted block of the at least one second processing block. The block may recover an error using the non-interpretation block of the first processing block, and the at least one second processing block may recover the error using the non-interpretation block of the at least one second processing block.

이 때, 상기 플래시 변환 계층을 설계하는 방법은 상기 플래시 변환 계층의 설계와 관련된 설정을 수신하는 단계; 및 상기 복수의 빌딩 블록들 및 상기 설정에 기초하여 상기 플래시 변환 계층을 생성하는 단계를 더 포함할 수 있다.In this case, the method of designing the flash translation layer may include receiving a setting related to the design of the flash translation layer; And generating the flash translation layer based on the plurality of building blocks and the setting.

또한, 상기 설정은 상기 플래시 변환 계층을 구현하는 쓰레드(thread)의 수와 관련된 설정; 상기 플래시 변환 계층을 구동하는 코어(core)의 수와 관련된 설정; 상기 코어 당 처리되는 쓰레드의 수와 관련된 설정; 및 복수의 코어들과 복수의 쓰레드들 사이의 매핑과 관련된 설정 중 적어도 하나를 포함할 수 있다.The setting may also include a setting related to the number of threads implementing the flash translation layer; A setting related to the number of cores driving the flash translation layer; A setting related to the number of threads processed per core; And a setting related to mapping between the plurality of cores and the plurality of threads.

또한, 상기 플래시 변환 계층을 설계하는 방법은 상기 플래시 변환 계층의 설계와 관련된 제2 설정을 수신하는 단계; 및 상기 복수의 빌딩 블록들 및 상기 제2 설정에 기초하여 상기 플래시 변환 계층을 적응적으로 재생성하는 단계를 더 포함할 수 있다.The method of designing a flash translation layer may also include receiving a second setting related to the design of the flash translation layer; And adaptively regenerating the flash translation layer based on the plurality of building blocks and the second configuration.

도 1은 일 실시예에 따른 플래시 메모리 폴트 분류를 설명하는 도면.1 is a diagram illustrating flash memory fault classification, according to one embodiment;

도 2는 일 실시예에 따른 저장 장치 시스템 아키텍처를 설명하는 도면.2 illustrates a storage system architecture according to one embodiment.

도 3은 일 실시예에 따른 로그 인터페이스를 설명하는 도면.3 illustrates a log interface according to an embodiment.

도 4는 일 실시예에 따른 로그 조합을 통한 플래시 변환 계층 구조를 설명하는 도면.4 is a diagram illustrating a flash translation hierarchy structure using log combination, according to an embodiment.

도 5는 일 실시예에 따른 논리 주소 공간을 제공하는 저장 장치에 대한 계층적 매핑 구조를 설명하는 도면.FIG. 5 illustrates a hierarchical mapping structure for a storage device providing a logical address space according to an embodiment. FIG.

도 6은 일 실시예에 따른 호스트 쓰기 명령 처리를 설명하는 도면.6 illustrates a host write command process according to an embodiment.

도 7은 일 실시예에 따른 매핑의 계층 구조 상에서 매핑 데이터의 재귀적인 처리를 설명하는 도면.7 is a diagram illustrating recursive processing of mapping data on a hierarchical structure of mapping according to an embodiment.

도 8은 일 실시예에 따른 호스트 읽기 명령 처리를 설명하는 도면.8 illustrates a host read command process according to an embodiment.

도 9는 일 실시예에 따른 데이터 일관성 보장 방법을 설명하는 도면.9 is a diagram illustrating a data consistency guarantee method according to an embodiment.

도 10은 일 실시예에 따른 비동기적 오류를 설명하는 도면.10 illustrates an asynchronous error according to an embodiment.

도 11은 일 실시예에 따른 구조적 복구 과정 중 잔여 효과의 제거를 설명하는 도면.11 illustrates removal of residual effects during a structural repair process, according to one embodiment.

도 12는 일 실시예에 따른 저장 장치 시스템 관점에서의 구조적 복구 과정을 설명하는 도면.12 illustrates a structural recovery process from the perspective of a storage system, according to one embodiment.

도 13은 일 실시예에 따른 기능적 복구 과정 중 매핑 정보의 재현을 설명하는 도면.13 is a diagram illustrating reproduction of mapping information during a functional recovery process according to one embodiment.

도 14는 일 실시예에 따른 로그들 사이의 동기화가 없는 경우 복구 가능성이 파괴되는 사례들을 설명하는 도면.14 is a diagram illustrating cases in which recoverability is broken when there is no synchronization between logs according to an embodiment.

도 15는 일 실시예에 따른 복구 가능성을 보장하는 인터페이스를 설명하는 도면.15 illustrates an interface to guarantee recoverability according to an embodiment.

도 16은 일 실시예에 따른 저장 장치 시스템 관점에서의 기능적 복구 과정을 설명하는 도면.16 illustrates a functional recovery process from the perspective of a storage system, according to one embodiment.

도 17은 일 실시예에 따른 정형적 검증의 단계를 설명하는 도면.17 illustrates a step of formal verification according to one embodiment.

도 18은 일 실시예에 따른 저장 장치 시스템의 시간성을 설명하는 도면.18 illustrates timeliness of a storage device system according to one embodiment.

도 19는 일 실시예에 따른 데이터 일관성의 보장을 설명하는 도면.19 illustrates a guarantee of data consistency, according to one embodiment.

도 20은 일 실시예에 따른 회복 가능성의 보장을 설명하는 도면.20 illustrates a guarantee of recoverability according to one embodiment.

일 실시예에 따른 플래시메모리 폴트의 분류Classification of flash memory faults according to one embodiment

NAND 플래시메모리 칩은 다수 개의 블록(block)으로 구성되며 블록은 다수 개의 페이지(page)를 포함한다. 각 페이지는 호스트 데이터를 저장하기 위한 데이터(data) 영역과 매핑 정보나 ECC 정보와 같이 호스트 데이터와 연관된 메타데이터를 저장하기 위한 예비(spare)영역으로 구분된다. 플래시메모리는 읽기(read), 프로그램(program), 지우기(erase)의 세 가지 연산을 지원하며 제자리 갱신이 불가능하기 때문에 데이터를 쓰기 전에 반드시 지우기 연산이 선행되어야 한다. 지우기 연산의 최소 단위는 블록이며, 프로그램과 읽기 연산의 최소 단위는 페이지이다. 신뢰성의 관점에서 NAND플래시메모리는 정상적인 동작을 보장할 수 없는 배드 블록의 발생을 허용하는데, 초기 제조 단계에서뿐만 아니라 동작 중에도 배드 블록이 발생하는 것이 가능하다. 그리고 교란 메커니즘(Disturbance)에 의해 과거에 기록되었던 페이지의 데이터의 비트가 반전되는 오류가 발생하는 것도 가능하다. A NAND flash memory chip is composed of a plurality of blocks, and a block includes a plurality of pages. Each page is divided into a data area for storing host data and a spare area for storing metadata associated with the host data such as mapping information or ECC information. Flash memory supports three operations: read, program, and erase. In-place update is impossible, so the erase operation must be performed before data can be written. The minimum unit of erase operations is blocks, and the minimum unit of program and read operations is pages. In terms of reliability, NAND flash memory allows the generation of bad blocks that cannot guarantee normal operation. Bad blocks may occur not only in the initial manufacturing stage but also during operation. In addition, an error may occur in which bits of data of a page which have been recorded in the past are reversed by a disturbance mechanism.

도 1을 참조하면, 플래시메모리의 오류는 첫 번째로 플래시메모리의 내부적 요인으로 발생하는 동기적인 오류(Synchronous fault)와 외부의 환경적 요소로 인해 발생하는 비동기적인 오류(Asynchronous fault)로 분류할 수 있다. 동기적인 오류는 지우기/프로그램/읽기 등의 플래시메모리 내부 연산의 실패를 의미한다. 지우기와 프로그램 오류는 블록의 수명이 다했거나 이와 상관없이 셀이 알 수 없는 이유로 손상되어 발생되는데, 이러한 오류는 그 효과가 해당 블록에 대해서 영구적인(permanent) 특성을 가진다. 따라서 이러한 오류가 발생한 블록들은 시스템에서 다시 사용되지 않도록 적절히 처리되어야 한다. 반면 읽기 오류는 프로그램 교란, 읽기 교란, 데이터 유지 오류 등의 원인으로 발생하는 비트 반전 오류를 의미한다. 비트 반전 오류는 해당 페이지를 지우고 다시 사용할 경우 다시 정상적인 페이지로 돌아오는 일시적인(transient) 속성을 가진다. 이와 같은 플래시메모리 연산에 동기적인 오류는 플래시메모리 연산의 결과로 발생하므로, FTL과 독립된 하부 계층 (배드 블록 관리 모듈, 에러 정정 모듈)에서 전담하여 해결하는 것이 가능하며, 이러한 계층적 접근법은 FTL에게 동기적인 오류가 전혀 발생하지 않는 플래시메모리의 환영(illusion)을 제공할 수 있다. 실시예들은 이와 같은 계층적인 접근법을 채택하여 FTL은 비동기적인 전원 오류만을 전담하여 처리함을 가정한다. 이것은 전원 오류 복구 알고리즘의 복잡도를 크게 줄임으로써 어떠한 전원 오류상황에서도 정확한 복구에 대한 증명을 가능하도록 하는 중요한 가정이다. Referring to FIG. 1, a fault of a flash memory may be classified into a synchronous fault caused by an internal factor of the flash memory and an asynchronous fault caused by an external environmental factor. have. Synchronous error means failure of internal operation of flash memory such as erase / program / read. Erase and program errors are caused by damaged cells for unknown reasons, whether or not the block has reached the end of its life. These errors have a permanent effect on the block. Therefore, blocks with such errors should be properly handled so that they cannot be used again in the system. On the other hand, a read error refers to a bit inversion error caused by a program disturb, a read disturb, or a data retention error. Bit inversion errors have a transient property that returns to the normal page when the page is deleted and reused. Since the synchronous error in the flash memory operation occurs as a result of the flash memory operation, it is possible to solve the problem exclusively in the lower layer (Bad Block Management Module, Error Correction Module) independent of the FTL. It can provide the illusion of flash memory with no synchronous error. Embodiments adopt this hierarchical approach and assume that the FTL handles only asynchronous power failures. This is an important assumption that enables the proof of correct recovery in any power failure situation by greatly reducing the complexity of the power failure recovery algorithm.

FTL이 전담하여 해결해야 하는 비 동기적인 오류는 지우기/프로그램/읽기 등의 플래시메모리 내부 연산과 시간적 연관성 없이 언제 어느 순간에도 발생할 수 있는 오류로, 구체적으로는 전원 오류를 의미한다. 플래시메모리 페이지의 상태를 변경 시키는 지우기/프로그램 연산은 원자적(Atomic) 속성을 보장하기 않기 때문에 연산이 진행되는 도중 전원 오류가 발생할 경우, 해당 페이지는 다양한 상태를 가질 수 있게 된다. 특히 프로그램 도중 전원 오류가 발생했던 페이지에 데이터가 처음에는 성공적으로 기록된 것처럼 보일지라도 읽기 교란에 매우 취약해져 읽기 시마다 비결정적(Non-deterministic)으로 잘못된 데이터를 반환할 수 있는데 이러한 페이지를 잔여 효과(Residual effect) 페이지라고 부른다. 이러한 잔여 효과 페이지가 담고 있는 데이터는 언제 어느 순간의 시스템 에러의 요소로 돌변할 수 있는 잠재성을 가지고 있으므로 잔여 효과 페이지들을 전원 오류 복구 과정에서 성공적으로 식별하고 제거하지 않으면 시스템의 일관성에 치명적인 결과를 초래할 수 있게 된다. 문제 상황을 더욱 어렵게 하는 것은 MLC 타입의 플래시메모리 칩에서의 형제 페이지 (Sibling-page) 문제인데, 이는 이미 과거에 성공적으로 기록되었던 FTL의 메타 데이터 (혹은 호스트 데이터)가 미래에 형제 페이지(Sibling-page)가 프로그램 되는 도중 전원 오류가 발생하면 언제든지 손실될 수 있기 때문이다. 이것은 FTL의 관점에서 더 이상 어떤 물리 페이지의 프로그램의 성공적인 완료가 해당 페이지에 기록된 데이터의 영속성을 보장하지 않음을 뜻한다. The asynchronous error that FTL needs to solve exclusively is an error that can occur at any moment at any time without time correlation with internal operations of flash memory such as erase / program / read. Specifically, it means a power failure. Since the erase / program operation that changes the state of the flash memory page does not guarantee atomic properties, the page can have various states if a power failure occurs during the operation. In particular, even if the data appears to have been successfully written to a page that initially had a power failure during the program, it is very vulnerable to read disturbance and may return non-deterministic incorrect data on every read. Residual effect) page. The data contained in these residual effect pages has the potential to turn into an element of system error at any moment, so if the residual effect pages are not successfully identified and removed during the power failure recovery process, the system's consistency can be fatal. It can be brought about. To make the problem situation even more difficult is the sibling-page problem in flash memory chips of the MLC type, in which the metadata (or host data) of the FTL, which has already been successfully written in the past, may be sibling pages in the future. If a power failure occurs while the page is being programmed, it can be lost at any time. This means that from the FTL point of view, the successful completion of a program on a physical page no longer guarantees the persistence of the data written to that page.

일 실시예에 따른 파일 변환 계층 설계 프레임워크File translation layer design framework according to one embodiment

도 2는 실시예들에서 가정한 플래시메모리 제어기와 BMS계층으로 구성된 플래시메모리 서브시스템과 HIL 프레임워크로 구현된 FTL로 이루어진 플래시메모리 저장 장치 아키텍처를 보여준다. 플래시메모리 제어기는 다수 개의 플래시메모리 칩들을 제어할 수 있으며 플래시메모리 읽기/쓰기/지우기 연산을 지원하고, 연산 실행 도중 발생한 오류를 검출하고 이를 보고할 수 있다고 가정한다. 또한 BMS 계층은 플래시메모리 연산 실행 도중 발생한 모든 동기적 오류를 전담하여 처리하는 것을 가정한다. 이를 위해 전형적인 BMS계층은 쓰기/지우기 오류가 발생했을 때 블록을 교환하기 위한 여분의 블록들을 확보하며 읽기 오류를 처리하기 위해 ECC 부호기/복호기와 같은 에러 제어 로직을 포함한다고 가정한다. 따라서 BMS 계층은 여분의 블록이 모두 소진되거나 ECC회로가 정정할 수 없는 읽기 오류가 발생하기 전까지는 플래시메모리 연산 오류가 발생하지 않는 가상의 물리 주소 공간을 상위 계층에 제공할 수 있다.FIG. 2 shows a flash memory storage architecture consisting of a flash memory controller, a flash memory subsystem composed of a BMS layer, and an FTL implemented with an HIL framework. It is assumed that the flash memory controller can control a plurality of flash memory chips, support flash memory read / write / erase operations, and detect and report an error occurring during the execution of the operation. It is also assumed that the BMS layer is responsible for handling all synchronous errors that occur during the execution of flash memory operations. To this end, it is assumed that a typical BMS layer reserves extra blocks for exchanging blocks when a write / erase error occurs and includes error control logic such as an ECC encoder / decoder to handle read errors. Therefore, the BMS layer can provide a virtual physical address space in which the flash memory operation error does not occur to the upper layer until all the extra blocks are exhausted or a read error that cannot be corrected by the ECC circuit occurs.

FTL은 HIL 프레임워크를 이용하여 동기적인 플래시메모리 오류가 발생하지 않는 가상의 물리 주소 공간을 보여주는 플래시메모리 서브시스템 상에 구현된다. HIL 프레임워크에서는 호스트 데이터나 매핑 데이터 및 블록 상태 데이터와 같은 FTL이 관리하는 메타 데이터 각각에 대해서 가상 물리 주소 공간 상의 플래시메모리 블록들을 이용하여 제자리 갱신이 가능한 주소 공간을 구현하는 객체를 로그라 정의한다. 사용자들은 로그들을 조합하여 다양한 FTL을 구현할 수 있다. 로그는 내부적으로 데이터를 영속적으로 쓰기 위해 일련의 플래시메모리 블록들로 구성된 플래시 로그와 성능 향상을 위해 휘발성 메모리로 구현되는 캐시로 구성된다. FTL is implemented on a flash memory subsystem that uses the HIL framework to show a virtual physical address space that does not cause synchronous flash memory errors. The HIL framework defines an object that implements an address space that can be updated in place using flash memory blocks in the virtual physical address space for each FTL-managed metadata such as host data, mapping data, and block state data. . Users can combine logs to implement various FTLs. The log consists of a flash log consisting of a series of flash memory blocks for writing data persistently internally and a cache implemented with volatile memory for better performance.

로그는 호스트 데이터, 매핑 데이터, 또는 블록 상태 데이터 등 메타 데이터를 처리하므로, 처리 모듈이라고 지칭될 수 있다. HIL 프레임워크에서는 FTL을 설계하기 위한 다양한 유형의 로그들이 빌딩 블록으로 제공되므로, 로그는 처리 블록이라고 지칭될 수 있다. 로그는 소프트웨어, 하드웨어, 또는 이들의 조합으로 다양하게 구현될 수 있다.The log processes metadata such as host data, mapping data, or block state data, and thus may be referred to as a processing module. In the HIL framework, the logs may be referred to as processing blocks because the various types of logs for designing the FTL are provided as building blocks. The log may be variously implemented in software, hardware, or a combination thereof.

도 3은 일반적인 로그의 인터페이스를 보여 준다. 로그는 자신이 관리하는 (메타) 데이터에 대해 제자리 갱신이 가능한 선형 주소 공간을 다른 로그 또는 외부 호스트 시스템에게 제공하기 위한 (1)읽기/쓰기 인터페이스가 필요하며 이는 플래시메모리 서브시스템으로의 읽기/쓰기 요청으로 변환되기 때문에 로그는 (2)플래시메모리 서브시스템과의 인터페이스가 필요하다. 로그가 플래시메모리에 데이터를 쓰면 필수적으로 데이터에 대한 (3)매핑 정보를 갱신해야 하고, 해당 쓰기 연산에 의해 무효화된 공간을 회수하기 위해 (4)블록 상태 정보를 갱신해야 하기 때문에 각각을 이를 위한 인터페이스가 필요하다. 또한 영속적으로 써진 데이터는 갑작스러운 전원 중단 오류가 발생하더라도 복구되는 것을 보장해야 하며 이를 위해 모든 로그는 복구에 필요한 모든 정보를 주기적으로 (5)체크 포인트 하기 위한 인터페이스가 필요하다.3 shows the interface of a typical log. Logs require (1) a read / write interface to provide other logs or external host systems with a linear address space that can be updated in place for their managed (meta) data, which is read / write to the flash memory subsystem. The log needs to interface with the flash memory subsystem because it is converted to a request. When a log writes data to flash memory, it is necessary to update each of the mapping information for the data, and (4) block state information to recover the space invalidated by the write operation. I need an interface. In addition, persistently written data must be guaranteed to be recovered even if a sudden power failure occurs. For this purpose, all logs need an interface to periodically check (5) all information necessary for recovery.

FTL이 관리하는 데이터의 종류에 따라 로그의 종류는 호스트 데이터를 처리하는 D형 로그, 매핑 정보를 처리하는 M형 로그, 블록 상태 정보를 처리하는 L형 로그, 전원 오류 복구를 위한 체크포인트 정보를 처리하는 C형 로그로 구분된다. 경우에 따라서 로그의 종류는 다른 로그의 비휘발성 버퍼로 동작하는 W형 로그를 더 포함할 수 있다. 또한, 로그의 종류는 호스트 데이터의 매핑 정보를 처리하는 M형 로그와 구분되는 개념으로, 블록 상태 정보의 매핑 정보를 처리하는 LM형 로그를 더 포함할 수 있다. D형 로그, M형 로그, L형 로그, C형 로그, W형 로그, 및 LM형 로그는 각각 D-로그, M-로그, L-로그, C-로그, W-로그, 및 LM-로그로 지칭될 수 있다.Depending on the type of data managed by the FTL, the log types include D-type logs that process host data, M-type logs that process mapping information, L-type logs that process block status information, and checkpoint information for power failure recovery. It is divided into C type log to be processed. In some cases, the type of log may further include a W-type log that operates as a nonvolatile buffer of another log. In addition, the type of log is a concept distinct from the M-type log that processes the mapping information of the host data, and may further include an LM-type log that processes the mapping information of the block state information. Type D logs, Type M logs, Type L logs, Type C logs, Type W logs, and Type LM logs are D-log, M-log, L-log, C-log, W-log, and LM-log, respectively. It may be referred to as.

로그의 종류에 따라 인터페이스와 동작이 조금씩 다르지만 모든 로그는 공통적으로 자신에게 할당된 자원을 이용하여 자신이 관리하는 데이터에 대해 제자리 갱신이 가능한 선형 주소 공간을 다른 로그 또는 호스트 시스템에게 제공한다는 점에서 공통적이다. HIL 프레임워크는 FTL을 구성하는 모든 로그들이 관리하는 제자리 갱신이 가능한 주소 공간을 통합하여 관리하며 이를 가상 논리 주소 공간(Pseudo Logical Address: PLA)이라고 정의한다. 도 3에서 볼 수 있는 바와 같이 각각의 로그는 가상 논리 주소 공간 상에서 자신이 전담하여 관리하는 고유한 영역을 차지한다. Although the interface and behavior vary slightly depending on the type of log, all logs have a common address in that they provide a linear address space to other logs or host systems that can update their own managed data using resources allocated to them. to be. The HIL framework integrates and manages the in-place updateable address space managed by all the logs that make up the FTL, and defines it as a pseudo logical address space (PLA). As can be seen in Figure 3, each log occupies a unique area of its own dedicated management in the virtual logical address space.

HIL프레임워크는 이와 같은 다양한 종류의 로그의 조합을 통해 임의의 다양한 FTL을 설계하고 구현할 수 있다. 로그들의 연결 구조는 매핑의 계층 구조와 로그가 관리하는 데이터의 속성에 의해 결정된다. 도 4는 로그들 사이의 연결 구조의 예를 보여준다. 로그가 플래시메모리에 데이터를 쓰면 매핑 정보가 생성되고 해당 매핑 정보는 상위 매핑 로그에 의해 관리된다. 따라서 HIL 프레임워크에서 다수 개의 로그들은 매핑 관계를 통해 도 4와 같은 일정한 계층 구조를 형성한다. 호스트 컴퓨터로부터 전달된 읽기/쓰기 명령을 처리하기 위해서 FTL은 매핑 정보를 참조하여 주소변환을 수행해야 하며, HIL 프레임워크에서는 매핑 계층 구조 상에 있는 다수 개의 로그들과 그들 사이의 상호 연동에 의한 다단계의 주소 변환으로 구현된다. 매핑 구조의 계층적인 확장과 이를 이용한 호스트 읽기 및 쓰기 처리에 대해서는 후술한다. The HIL framework can design and implement any of a variety of FTLs through this combination of different kinds of logs. The concatenation structure of the logs is determined by the hierarchy of mappings and the attributes of the data managed by the logs. 4 shows an example of a connection structure between logs. When the log writes data to flash memory, mapping information is created and the mapping information is managed by the upper mapping log. Therefore, in the HIL framework, a plurality of logs form a constant hierarchy as shown in FIG. 4 through a mapping relationship. In order to process read / write commands sent from the host computer, the FTL must perform address translation with reference to the mapping information. In the HIL framework, multiple logs in the mapping hierarchy and the interworking between them Implemented by address translation. Hierarchical expansion of the mapping structure and host read and write processing using the same will be described later.

로그가 데이터를 쓰면 또한 물리적인 블록의 상태 정보를 갱신해야 하며 HIL 프레임워크에서는 L형 로그가 모든 로그들이 전달하는 블록 상태 정보에 대한 갱신을 전담하는 것을 가정한다. 이러한 관계는 모든 로그들이 L형 로그로 블록 상태 정보를 전달하는 연결선으로 표현된다. C형 로그는 전원 오류 복구를 위한 정보를 기록하는 로그로 모든 로그들은 자신 만의 체크 포인트 정보를 가지며 체크 포인트 정보의 양은 일반적으로 작기 때문에 모든 로그들의 체크 포인트 정보들을 하나의 체크 포인트 로그에서 관리하는 것을 가정하였다. 이하, 설명의 편의를 위하여 D형 로그, M형 로그, 및 C형 로그로 구성되는 FTL을 가정하고 실시예들을 설명한다. 다만, 가비지 콜렉션(garbage collection)을 위하여 블록 또는 페이지의 유효성(liveness) 또는 무효성(invalidation)을 관리하는 L형 로그 및 하이브리드 매핑 FTL을 위하여 다른 로그의 비휘발성 버퍼로 동작하는 W형 로그에도 후술하는 사항들이 그대로 적용될 수 있다.When a log writes data, it also needs to update the state information of the physical block, and the HIL framework assumes that the L-type log is responsible for updating the block state information that all logs carry. This relationship is represented by a connection line where all logs carry block status information to the L-shaped log. Type C logs record information for power failure recovery. Since all logs have their own checkpoint information and the amount of checkpoint information is generally small, managing the checkpoint information of all logs in one checkpoint log Assumed Hereinafter, for convenience of description, the embodiments will be described assuming an FTL composed of a D-type log, an M-type log, and a C-type log. However, the L-type log that manages the liveness or invalidation of a block or page for garbage collection, and the W-type log that operates as a nonvolatile buffer of another log for hybrid mapping FTL will be described later. The same may apply.

I. 계층적 매핑 구조 I. Hierarchical Mapping Structure

로그가 플래시메모리에 데이터를 쓰면 매핑 정보가 생성된다. 매핑 정보는 호스트 데이터가 저장된 플래시메모리의 물리 주소에 대한 포인터이기 때문에 호스트 데이터에 비해 크기가 작다. 전체 매핑 정보의 크기는 호스트 데이터 영역의 크기, 매핑 단위 및 매핑 엔트리의 크기에 의해 결정되는데 도 5와 같이 플래시메모리의 페이지 크기가 4KB이고 매핑 엔트리의 크기가 4B인 경우 4GB 논리 주소 공간에 대한 매핑 정보는 4GB의 1/1024인 4MB이다. 매핑 데이터를 호스트 데이터와 동일한 관점에서 바라보면 매핑 데이터 역시 호스트 데이터와 같이 선형 주소 공간을 가진다. 따라서 앞서 4GB사용자 주소공간이 페이지 단위로 플래시메모리에 써지고 이에 대한 매핑 정보가 4MB의 주소 공간을 차지하는 것은, 4MB의 매핑 데이터에 대한 주소 공간이 재귀적으로 페이지 크기 단위로 분할되어 별도의 매핑 데이터로 플래시메모리에 써지고 매핑 데이터에 대한 매핑 데이터가 4KB의 공간을 차지하는 것에 동일하게 대응된다. 즉 도 5에서 D형 로그와 M0로그의 관계는 M0로그와 M1로그의 관계와 동일하다. 이처럼 매핑 데이터는 매핑 데이터와 연관된 데이터에 비해 주소 공간의 크기가 작고, 매핑 관계는 재귀적인 속성을 가지기 때문에 가장 일반적으로는 호스트 데이터 쓰기 작업에 의해 유발되는 로그들 사이의 매핑 관계가 일정한 계층 구조를 형성할 수 있다. 이로 인하여, 실시예들은 계층적 매핑이 몇 단계에 걸쳐 일어나는지 여부에 제한이 없는 일반적인(general) 계층 구조를 제공할 수 있다.When the log writes data to flash memory, mapping information is generated. The mapping information is smaller than the host data because it is a pointer to the physical address of the flash memory where the host data is stored. The size of the entire mapping information is determined by the size of the host data area, the mapping unit, and the size of the mapping entry. As shown in FIG. 5, when the page size of the flash memory is 4KB and the size of the mapping entry is 4B, the mapping to the 4GB logical address space is performed. The information is 4MB, which is 1/1024 of 4GB. When the mapping data is viewed from the same point of view as the host data, the mapping data also has a linear address space like the host data. Therefore, the 4GB user address space is written to the flash memory in units of pages and the mapping information occupies 4MB of address space. Therefore, the address space for 4MB of mapping data is recursively divided into units of page size, so that it is separated into separate mapping data. It corresponds to writing to flash memory and mapping data to mapping data occupying 4 KB of space. That is, in FIG. 5, the relationship between the D-type log and the M0 log is the same as that between the M0 log and the M1 log. As mapping data has a smaller address space than mapping data and mapping relationship has a recursive property, mapping data between logs caused by host data write operation is generally the same. Can be formed. As such, embodiments may provide a general hierarchical structure that is unlimited in how many steps hierarchical mapping takes place.

HIL 프레임워크에서 매핑의 계층 구조는 최상위 매핑 데이터가 임의의 제한된 개수 (e.g., 단일 페이지)가 될 때까지 계속될 수 있다. 도 5의 예에서 M0 로그의 주소 공간의 크기는 4MB이므로, M1로그의 주소 공간의 크기는 플래시메모리 페이지 크기인 4KB이다. 따라서 M1로그에서 매핑의 계층 구조는 종결될 수 있다. HIL 프레임워크로 구현된 FTL은 동작 중 최상위 매핑 정보만을 휘발성 메모리에 유지하면 매핑의 계층 구조를 따라 모든 최신의 매핑 정보들과 데이터의 위치를 차례로 찾을 수 있다. 따라서 전체 매핑 정보를 휘발성 메모리에 유지할 필요가 없기 때문에 제한된 크기의 휘발성 메모리를 가진 플래시메모리 저장 장치 시스템에서도 매핑 정보의 크기가 매우 큰 (e.g., page mapped FTL) FTL을 지원할 수 있다. FTL은 동작 중 최상위 매핑 정보의 위치는 주기적으로 체크포인트하고 저장 장치 재 시작 시에 체크포인트 영역만을 스캔하여 신속하게 찾을 수 있다. 예를 들어, 최상위 로그(예를 들어, M1 로그)에 의해 처리되는 매핑 정보가 플래시메모리의 어느 위치에 저장되어 있는지에 대한 정보는 C형 로그에 저장될 수 있다.In the HIL framework, the hierarchy of mappings can continue until the top level mapping data is any limited number (e.g., single page). In the example of FIG. 5, since the address space of the M0 log is 4 MB, the size of the address space of the M1 log is 4 KB, which is the flash memory page size. Thus, the hierarchy of mappings in the M1 log can be terminated. The FTL implemented by the HIL framework keeps only the highest mapping information in volatile memory during operation, so that all the latest mapping information and the location of the data can be found in order along the mapping hierarchy. Therefore, since the entire mapping information does not need to be maintained in the volatile memory, even in a flash memory storage system having a limited size of the volatile memory, it is possible to support a very large (e.g., page mapped FTL) FTL. The FTL checks the location of the highest level mapping information periodically during operation and scans only the checkpoint area when the storage device is restarted to find it quickly. For example, information about where in the flash memory the mapping information processed by the top log (eg, the M1 log) is stored may be stored in the C-type log.

도 5는 또한 4GB 논리 주소 공간을 호스트 시스템에 제공하기 위해 HIL이 내부적으로 바이트 주소로 가상 논리 주소 공간을 유지하는 경우에 D-로그, M0-로그, M1-로그가 차지하는 영역을 보여 준다. D-로그는 호스트 시스템에 논리 주소 공간을 제공하며, 이를 위해 M0-로그가 구현하는 가상 논리 주소 공간에 접근한다. 마찬가지로 M0-로그는 D-로그에 가상 논리 주소 공간을 제공하고, 이를 구현하기 위해 M1-로그가 관리하는 가상 논리 주소 공간에 접근한다. 이와 같이 호스트 시스템의 읽기 및 쓰기 명령은 데이터 로그에서부터 시작되어 가상 논리 주소에서 주소 변환하며 계층적 로그를 따라 연쇄적으로 전파된다. 도 5에서 볼 수 있는 바와 같이 매핑 관계에서 로그의 상위와 하위 인터페이스는 동일하기 때문에 매핑의 계층 구조 상에 있는 로그들은 쉽게 상호 연결이 가능하다. 따라서 HIL 프레임워크는 저장 장치의 용량이 증가하거나 로그의 매핑 단위가 달라지더라도 다양한 형태의 계층적 매핑 구조를 쉽게 구축할 수 있다. 5 also shows the areas occupied by D-logs, M0-logs, and M1-logs when the HIL maintains a virtual logical address space internally as byte addresses to provide 4GB logical address space to the host system. The D-log provides a logical address space to the host system, and accesses the virtual logical address space implemented by the M0-log. Similarly, the M0-log provides a virtual logical address space for the D-log and accesses the virtual logical address space managed by the M1-log. As such, read and write commands from the host system begin with the data log and are address-translated from virtual logical addresses and propagate along the hierarchical log. As shown in FIG. 5, since the upper and lower interfaces of the logs are identical in the mapping relationship, the logs in the mapping hierarchy can be easily interconnected. Therefore, the HIL framework can easily build various types of hierarchical mapping structures even if the storage capacity increases or the mapping units of logs change.

II. 호스트 쓰기 및 읽기 동작 II. Host Write and Read Behavior

HIL 프레임워크로 구현된 FTL은 호스트 시스템에게 임의의 개수의 섹터를 읽고 쓸 수 있는 저장 장치 인터페이스를 제공하며 HDD와 같은 일반적인 저장 장치와 마찬가지로 데이터의 논리적 일관성(data coherence)와 데이터의 영속성(durability)에 대한 요구 사항을 만족시켜야 한다. 또한 HIL 프레임워크로 구현된 FTL은 SATA의 Native command queuing (NCQ)이나 SCSI의 Tagged command queuing (TCQ)과 같이 전형적인 저장 장치 인터페이스에서 지원하는 명령 큐잉 기능을 자연스럽게 수용할 수 있어야 한다.Implemented in the HIL framework, the FTL provides the host system with a storage interface that can read and write any number of sectors.Like a typical storage device such as an HDD, data coherence and data durability are maintained. The requirements for In addition, FTL implemented with the HIL framework must naturally accommodate the command queuing features supported by traditional storage interfaces, such as SATA's Native command queuing (NCQ) and SCSI's Tagged command queuing (TCQ).

1. Host 쓰기1. Write Host

도 6은 3단계 매핑 계층 구조 상에서 호스트 쓰기 요청이 처리되는 과정을 보여준다. 호스트 쓰기 절차는 크게 호스트 데이터를 D형 로그의 캐시에 저장한 후 쓰기 완료 응답하는 전반부(foreground) 작업과, 로그의 매핑 계층 구조를 따라 매핑 정보를 연쇄적으로 갱신하는 후반부(background) 작업으로 나누어진다. 6 shows a process of processing a host write request in a three-level mapping hierarchy. The host write procedure is largely divided into the foreground task of storing host data in the D-type cache and responding to the write completion, and the background task of serially updating the mapping information according to the mapping hierarchy of the log. Lose.

논리 주소 공간에 대한 섹터 단위의 호스트 쓰기 요청은 쓰기 쓰레드에 의해 가상 논리 주소 공간에 대한 페이지 단위 연산 install_data로 변환되어 D형 로그로 전달된다(1). 쓰기 쓰레드는 HIL 프레임워크 내의 로그들 중 D형 로그와의 인터페이스만 가지며, 로그와 마찬가지로 독립적으로 실행되지만 비휘발적인 상태를 남기지 않기 때문에 로그가 아니다. D형 로그는 호스트가 쓰기 요청한 데이터를 휘발성 메모리에 저장하고(2) 곧바로 installed_v로 완료 응답한다(3). 쓰기 쓰레드는 하나의 호스트 쓰기 요청을 구성하는 모든 페이지 쓰기에 대한 Installed_v응답을 받으면, 호스트 시스템에게 해당 호스트 쓰기 요청에 대하여 write_ack으로 쓰기 완료 응답할 수 있다. 쓰기 쓰레드의 완료 응답 이후 휘발성 버퍼에 있는 데이터를 플래시메모리에 쓰지 않은 상태에서 쓰기 요청된 데이터와 동일한 논리 주소 공간에 대해 호스트 읽기 요청이 도착하면 FTL은 버퍼에 있는 최신 데이터로 읽기 요청을 처리하여 저장 장치 동작 중 데이터 일관성을 보장해야 한다. Sector-based host write requests for the logical address space are converted by the write thread to page-level operations install_data for the virtual logical address space and forwarded to the D-type log (1). The write thread has only an interface with the D-type log among the logs in the HIL framework. It is executed independently of the log, but is not a log because it does not leave a nonvolatile state. The D-type log stores the data requested by the host in volatile memory (2) and immediately responds to completion with installed_v (3). When the write thread receives the Installed_v response for all the page writes constituting one host write request, the write thread can respond to the host system with write_ack for the corresponding host write request. If the host read request arrives in the same logical address space as the write request without writing the data in the volatile buffer after the write thread's completion response, the FTL processes the read request with the latest data in the buffer and stores it. Data consistency must be ensured during device operation.

호스트 시스템으로부터 데이터의 영속성을 강제하는 별도의 명령이나 설정이 없다면, D형 로그는 내부 버퍼 관리 정책에 따라 캐시에 보관된 데이터들을 적절한 시점에 플래시메모리에 쓴다(4). 논리 페이지를 쓴 위치가 매핑 정보에 해당되며 이 매핑 정보는 install_mapping명령에 의해 상위 M0로그로 전달된다(5). M0로그가 받는 install_mapping 명령은 D로그가 쓰기 쓰레드로부터 받는 쓰기 명령과 개념상 동일하기 때문에 M0 로그는 매핑 정보를 휘발성 메모리에 저장한 후 곧바로 D로그에 install_v로 완료응답 한다. (6) 이 완료응답 이후 M0 로그는 D로그가 매핑 정보를 질의하면 install된 가장 최신 매핑 데이터를 반환해 줌으로써 D-로그에게 매핑 데이터의 일관성을 보장해야 한다. 이는 D로그가 데이터 쓰기 완료 응답으로 저장 장치 동작 중 호스트 시스템에게 호스트 데이터에 대한 일관성을 보장하는 것과 동일하다. Unless there is a separate command or setting that enforces data persistence from the host system, the D-type log writes the data held in the cache to the flash memory at the appropriate time according to the internal buffer management policy (4). The location where the logical page is written corresponds to the mapping information, which is transferred to the upper M0 log by the install_mapping command (5). The install_mapping command received by the M0 log is conceptually the same as the write command that the D log receives from the write thread. Therefore, the M0 log saves the mapping information in volatile memory and immediately responds to the D log with install_v. (6) After this completion response, the M0 log should ensure the consistency of the mapping data to the D-log by returning the most recent mapping data installed when the D log queries the mapping information. This is equivalent to guaranteeing consistency of host data to the host system during the storage device operation as the D log is a data write completion response.

M0로그 내의 매핑 데이터의 처리 방법도 데이터 로그에서의 호스트 데이터 처리와 본질적으로 동일하다. M0로그에서 매핑 데이터를 플래시메모리에 쓰면 매핑 데이터에 대한 매핑이 생성되고, 연이어 제자리 갱신이 가능한 M1로그 주소 공간에 대한 새로운 install_mapping 명령이 M1로그로 전송되어야 한다. 이러한 동일한 쓰기 요청의 처리구조에 의해 계층적 로그의 주소 공간으로 전파되는 연쇄적인 쓰기 요청은 최상위 매핑 로그에 도달할 때까지 재귀적으로 반복된다. 도 7은 단위 매핑 로그에서 하위 로그에서 전달된 다수 개의 매핑 데이터들이 모여, 한 페이지에 써지고, 연이어 이에 대한 하나의 매핑 정보가 상위로그로 전달되는 재귀적인 절차를 보여준다. 또한 매핑 데이터는 매핑 정보가 포인트 하는 데이터보다 크기가 작기 때문에 (e.g., 4B vs. 4KB) 하위 로그에서의 페이지 단위 연산은 상위 로그의 요청 단위 연산으로 변환되어 상위 로그로 전달된다. The processing method of mapping data in the M0 log is also essentially the same as the processing of host data in the data log. Writing the mapping data from the M0 log into the flash memory creates a mapping to the mapping data, and then a new install_mapping command for the M1 log address space that can be updated in place must be sent to the M1 log. The chained write request propagated to the address space of the hierarchical log by this same write request processing structure is repeated recursively until the top mapping log is reached. FIG. 7 illustrates a recursive procedure in which a plurality of mapping data delivered from a lower log are collected in a unit mapping log, written on one page, and one mapping information thereof is successively transferred to a higher log. In addition, since mapping data is smaller than the data pointed to by the mapping information (e.g., 4B vs. 4KB), the page unit operation in the lower log is converted to the request unit operation of the upper log and transferred to the upper log.

각 계층의 로그가 유지하는 캐시는 호스트와 D-로그 사이 및 로그와 로그 사이의 쓰기 요청에 대한 응답 속도 개선과 플래시메모리 쓰기 연산의 효율성을 높이는 역할을 수행한다. 또한 각 계층의 로그는 기본적으로 병렬 실행이 가능하기 때문에 독자적으로 휘발성 메모리 내의 데이터를 플래시메모리에 쓰는 작업을 수행할 수 있다. 따라서 HIL 프레임워크로 구현된 FTL은 각각의 로그들의 작업을 서로 다른 쓰레드로 동시다발적으로 수행하여 여러 개의 플래시메모리 칩으로 동시에 읽기/쓰기 요청을 보냄으로써 FTL의 성능을 최적화할 수 있다. The cache maintained by each layer logs improves the response speed to write requests between the host and D-logs, and between logs and logs, and increases the efficiency of flash memory write operations. In addition, the logs of each layer can be executed in parallel by default, so that data in volatile memory can be written to flash memory independently. Therefore, the FTL implemented by the HIL framework can optimize the performance of the FTL by simultaneously executing the tasks of each log in different threads and simultaneously sending read / write requests to several flash memory chips.

2. Host 읽기2. Read Host

도 8은 3단계 매핑 계층 구조를 가진 매핑 계층 구조 상에서 논리 주소 공간 p에 대한 읽기 요청이 처리되는 과정을 보여준다. 호스트 쓰기 작업은 데이터 로그의 쓰기 작업으로부터 시작되어 상위 매핑 로그로 연쇄적으로 전파되므로, 최신의 데이터나 매핑 정보도 항상 상향식(bottom-up)으로 전파된다. 또한 각 로그들은 휘발성 메모리를 유지하고 있으므로 가장 최근에 갱신되거나 참조된 데이터는 휘발성 메모리에 유지될 수 있다. 따라서 HIL 프레임워크로 구현된 FTL이 데이터 일관성(data coherence)을 지키기 위해서 읽기 연산도 쓰기 요청 처리 과정과 마찬가지로 기본적으로 상향식 질의(bottom-up query) 방식으로 동작한다. 8 shows a process in which a read request for a logical address space p is processed on a mapping hierarchy having a three-level mapping hierarchy. Since host writes are serially propagated from the writes of the data log to the higher mapping logs, the latest data or mapping information is always propagated from the bottom up. In addition, since each log maintains volatile memory, the most recently updated or referenced data can be maintained in volatile memory. Therefore, in order to maintain data coherence, the FTL implemented by the HIL framework basically operates as a bottom-up query like the write request processing.

읽기 쓰레드는 가장 먼저 D로그에 질의하고 데이터가 있으면 D 로그는 플래시메모리로부터 데이터를 읽어올 필요 없이 휘발성 메모리 내의 데이터를 호스트 시스템으로 전송하고 읽기 처리를 완료할 수 있다. 그렇지 않으면 데이터를 플래시메모리로부터 직접 읽어와야 하며 이에 필요한 매핑 정보를 얻기 위한 상향식 질의 과정이 시작된다. 상위 로그로의 질의는 질의한 데이터가 휘발성 메모리에 있을 때까지 계속된다. 매핑의 계층 구조에 있는 모든 로그들에서 질의한 데이터가 휘발성 메모리에 없으면 질의는 최상위 매핑 로그에 도달한다. HIL 프레임워크에서는 최상위 매핑 로그가 관리하는 모든 매핑 정보는 휘발성 메모리에 유지하는 것을 가정하기 때문에 최상위 매핑 로그에 대한 질의는 항상 성공한다. 하위 로그의 휘발성 메모리에는 질의된 데이터가 없으나 상위 로그에는 있는 경우, 상위 로그의 데이터는 하위 로그의 매핑 정보이므로 읽기 쓰레드는 상위 로그로부터 전달받은 매핑 정보와 함께 하위 로그로 하향식 재질의(top-down requery)한다. 로그는 재질의 명령과 함께 전달받은 매핑 정보를 이용해 데이터를 플래시메모리에서 읽어 질의한 데이터를 항상 반환해야 한다. 이러한 하향식 재질의 과정은 상향식 질의 과정에서 질의된 데이터가 휘발성 메모리에서 올바로 반환된 시점부터 시작하여 데이터 로그에 이르기까지 반복적으로 이루어진다. The read thread first queries the D log and if there is data, the D log can transfer the data in volatile memory to the host system and complete the read processing without reading the data from flash memory. Otherwise, data must be read directly from flash memory and a bottom-up query process begins to obtain the necessary mapping information. The query to the upper log continues until the queried data is in volatile memory. If all of the logs in the mapping hierarchy do not have data queried in volatile memory, the query reaches the top mapping log. Since the HIL framework assumes that all mapping information managed by the top level mapping log is kept in volatile memory, queries against the top level mapping log always succeed. If there is no queried data in the lower log's volatile memory but in the upper log, the upper log's data is the mapping information of the lower log, so the read thread is top-down to the lower log with the mapping information from the upper log. requery). The log should always return the queried data by reading the data from flash memory using the mapping information received with the material's command. The process of the top-down material is repeated from the time when the data queried in the bottom-up query process is correctly returned from the volatile memory to the data log.

도 8의 오른쪽은 D로그에 질의한 데이터가 없고 M0로그에 질의한 데이터가 있는 예를 통해 상향식 질의와 하향식 재질의 과정을 설명한다. 먼저 읽기 쓰레드는 섹터 단위의 호스트 읽기 요청을 페이지 단위의 질의 요청으로 바꾸어 데이터 로그로 전달한다(1). 읽기 쓰레드는 쓰기 쓰레드와 마찬가지로 내부 기능의 동작을 위해 휘발성의 자료구조만을 유지한다는 점에서, 비휘발성 데이터를 플래시메모리에 기록하는 로그와 구별된다. D 로그는 질의된 가상 논리 주소 공간 pla_d에 대응되는 데이터를 휘발성 캐시 내에 가지고 있지 않기 때문에 캐시 미스 응답(Query_ack(miss, null))을 보내면(2), 읽기 쓰레드는 pla_d 주소에 대한 매핑 정보를 얻기 위해 새로운 질의 요청을 M0 로그로 전달한다(3). 이 때, 상위 매핑 로그에 대한 질의는 데이터 로그에 대한 질의와 동일한 인터페이스를 가진다. 도 8의 시나리오대로 M0로그에서 캐시히트가 나면 M0 매핑 로그는 질의에 대한 응답(Query_ack)으로 캐시 히트와 질의의 결과 값 (Bi, Pj)(논리 페이지 pla_d 에 대한 매핑 정보)를 함께 읽기 쓰레드로 돌려준다 (4). 이 후 읽기 쓰레드는 상위 매핑 로그로부터 얻어온 매핑 정보와 함께 질의 명령을 D로그로 재전송하고 (5), D로그는 전달받은 플래시메모리 주소로부터 데이터를 읽어와 (6,7) 읽기 쓰레드로 완료 응답한다(8). 읽기 쓰레드는 하나의 호스트 요청을 구성하는 모든 논리 페이지들에 대해서 이와 동일한 상향식 질의를 통해서 마지막으로 데이터 로그로부터 완료응답을 받은 후에, 최종적으로 호스트 시스템에게 수집된 데이터들을 전송할 수 있다. 읽기 쓰레드와 데이터 로그, 읽기 쓰레드와 M0로그 사이의 인터페이스는 임의의 상위 매핑 로그 Mi에 대해서도 동일하므로, 상향식 질의를 통해 캐시 히트가 Mi로그에서 발생하는 경우에 대해서도 도 8의 시나리오를 손쉽게 확장할 수 있다.8 illustrates a process of a bottom-up query and a top-down material through an example in which there is no data queried in the D log and data queried in the M0 log. First, the read thread converts a sector read host request into a page query request to the data log (1). A read thread, like a write thread, is distinguished from a log that writes nonvolatile data to flash memory in that it maintains only volatile data structures for the operation of internal functions. Since the D log does not have data corresponding to the queried virtual logical address space pla_d in the volatile cache, when a cache miss response (Query_ack (miss, null)) is sent (2), the read thread gets mapping information for the pla_d address. The new query request is forwarded to the M0 log (3). At this time, the query for the upper mapping log has the same interface as the query for the data log. As shown in the scenario of FIG. 8, when the cache hit occurs in the M0 log, the M0 mapping log reads the cache hit and the query result value (B i , P j ) (mapping information on the logical page pla_d) as a response to the query (Query_ack). Return to thread (4). After that, the read thread resends the query command with the mapping information obtained from the upper mapping log to the D log (5), and the D log reads data from the received flash memory address and completes the response with the (6,7) read thread. (8). The read thread can finally send the collected data to the host system after receiving a complete response from the data log through this same bottom-up query for all logical pages that make up a host request. The interface between the read thread and the data log, and the read thread and the M0 log is the same for any higher mapping log Mi, so that the bottom-up query can easily extend the scenario of FIG. 8 even when a cache hit occurs in the Mi log. have.

읽기 쓰레드는 쓰기 쓰레드와 달리 데이터 로그를 비롯한 모든 매핑 로그들과 직접적으로 연결되어 상호작용하는데, 이것은 호스트 읽기 요청을 최대한 병렬적으로 처리하여 성능을 향상시키기 위해서이다. Non-blocking 요청인 호스트 쓰기 명령은 데이터를 휘발성 메모리에 쓰자마자 곧바로 응답할 수 있고, 실제 데이터를 플래시메모리로 적는 작업은 후반부 작업으로 여러 개의 플래시메모리 칩으로 분산 처리하여 성능을 높일 수 있다. 하지만 Blocking 요청인 호스트 읽기 명령은 요청된 반드시 데이터를 얻어온 후에야 완료 응답할 수 있으므로, 가능한 많은 플래시메모리 칩으로 요청을 동시에 보낼 수 있어야 성능을 높일 수 있다. 특히 호스트 인터페이스가 NCQ와 같은 명령 큐잉을 지원하는 경우, 각각의 호스트 읽기 명령들은 여러 개의 읽기 쓰레드로 분산하여 할당하고 각각의 읽기 쓰레드는 독립적으로 로그들과 상호작용하면서 플래시메모리 칩으로 동시에 읽기 요청을 보낼 수 있기 때문에, 호스트 읽기 요청의 처리 속도가 크게 향상 될 수 있다. HIL프레임워크는 이러한 확장을 염두에 두어, 읽기 쓰레드가 각 로그들과 직접적으로 상호작용하도록 설계되었다. Unlike write threads, read threads interact directly with all mapping logs, including data logs, to improve performance by processing host read requests in parallel as much as possible. The host write command, which is a non-blocking request, can immediately respond as soon as data is written to volatile memory, and writing the actual data into flash memory is a late task that can be distributed to multiple flash memory chips to improve performance. However, since the host read command, which is a blocking request, can complete the response only after the requested data has been obtained, the performance can be improved by sending the request to as many flash memory chips as possible. In particular, if the host interface supports command queuing such as NCQ, each host read command is distributed among multiple read threads and each read thread independently interacts with the logs, simultaneously making read requests to the flash memory chip. Because they can be sent, the speed of processing host read requests can be greatly improved. With this extension in mind, the HIL framework is designed to allow the read thread to interact directly with each log.

호스트 쓰기 작업과 읽기 작업 사이의 데이터 일관성을 보장하기 위해 쓰기 완료된 데이터는 상위 매핑 로그로부터 매핑에 대한 installed_v응답을 받은 이후에만 버퍼로부터 해제될 수 있다. 도 9는 쓰기 완료 이후, installed_v받기 전 데이터를 버퍼로부터 해제한 경우에 발생할 수 있는 문제 상황을 보여 준다. 만일 어떠한 최신 데이터에 대한 매핑 정보가 상위 매핑 로그에 반영된 것이 확실하지 않은 시점에 데이터와 데이터에 대한 매핑 정보가 하위 로그에서 사라지면 도 9의 음영 부분과 같이 최신 데이터 혹은 데이터에 대한 매핑 정보 모두가 시스템으로부터 사라진 것처럼 보이는 특정 시점이 존재할 수 있게 된다. 읽기 작업을 처리하는 쓰레드가 쓰기 작업에 연관된 로그 쓰레드들과 무관하게 동시적으로 수행될 수 있으며 바로 이 시점에 독립적으로 수행되는 읽기 쓰레드가 읽기 작업을 수행한다면 해당 논리 페이지의 최신 버전 데이터가 아닌 과거의 버전 데이터를 결과 값으로 반환하게 될 것이다. 이러한 상황은 어떠한 논리 주소에 대한 읽기 요청의 결과가 동일한 논리 주소에 대해 가장 마지막으로 완료응답을 받은 쓰기의 결과 값을 반환해야 한다는 데이터 일관성(data coherence) 요구 조건을 위배하므로, 반드시 피해야만 한다. 따라서 모든 로그는 도 9의 오른쪽과 같이 installed_v응답을 받은 후에만 해당 논리 페이지에 대한 정보를 캐시로부터 해제한다는 동기화 규칙을 지켜야 하며, 이러한 규칙은 HIL프레임워크의 정확성을 증명가능 하도록 하는 중요한 설계 요소(Design for provability) 중의 하나이다.To ensure data consistency between host write and read operations, the data that has been written can only be released from the buffer after receiving the installed_v response to the mapping from the parent mapping log. 9 illustrates a problem situation that may occur when data is released from a buffer after completion of writing and before receiving installed_v. If it is not certain that the mapping information for the latest data is reflected in the upper mapping log and the mapping information for the data disappears from the lower log, as shown in the shaded portion of FIG. There may be a point in time that appears to disappear from. The thread that handles the read operation can run concurrently, independent of the log threads associated with the write operation, and if the read thread that executes independently at this point performs the read operation, then the past, rather than the latest version of the data in that logical page It will return the version data of as a result value. This situation must be avoided because it violates the data coherence requirement that the result of a read request to any logical address should return the result of the last successful response to the same logical address. Therefore, all logs must comply with the synchronization rule of releasing information about the logical page from the cache only after receiving the installed_v response as shown in the right side of FIG. 9, and this rule is an important design element that can prove the accuracy of the HIL framework. Design for provability).

일 실시예에 따른 비동기적 오류 복구Asynchronous error recovery according to one embodiment

HIL 프레임워크에 내장된 전원 오류 복구 기법은 임의로 전원 오류가 발생하더라도 완벽한 전원 오류 복구를 보장한다. 이하, 전원 오류의 효과를 먼저 설명하고 이후 이를 치유하는 전원 오류 기법에 대해 설명한다. Power failure recovery techniques built into the HIL framework ensure complete power failure recovery even if a power failure occurs randomly. Hereinafter, the effects of the power failure will be described first, and then a power failure technique for remedy this will be described.

도 10은 플래시메모리 내부 상태를 바꾸는 연산 실행 도중 전원 오류가 발생한 경우의 두 가지 효과인 잔여 효과와 잃어버린 갱신을 보여준다. 잔여 효과는 플래시메모리 쓰기나 지우기 연산 실행 도중 전원 오류에 의해 플래시메모리에 의도하지 않은 상태가 남는 효과로 정의한다. 플래시메모리 칩은 연산의 원자성을 보장하지 못하기 때문에 도 10의 오른쪽과 같이 쓰기 연산 실행 도중 전원 오류가 발생하면 1)전혀 써지지 않은 상태, 2)의도한 데이터 중 일부만 써진 상태, 또는 3)모두 써진 상태일 수 있다. 1) 또는 2)인 경우의 페이지는 의도된 데이터를 쓰지 못했기 때문에 이러한 페이지는 전원 오류 복구과정에서 ECC등의 방법으로 검출하여 사용하지 않거나 지워서 재사용할 수 있다. 하지만 3)상태는 플래시 칩이 보장하는 쓰기 연산이 원자적으로 끝나지 않은 상황이기 때문에 설사 해당 데이터가 ECC 에러가 없다고 하더라도 해당 데이터를 완벽하게 신뢰할 수 없다. 왜냐하면 쓰기 도중에 전원 오류가 발생한 페이지는 읽기 교란에 취약하여 초기에는 정상 데이터를 반환하더라도 동작 중 계속된 읽기 작업에 대해 잘못된 데이터를 반환할 가능성이 크기 때문이다. 잔여 효과가 발생한 페이지나 블록들을 적절히 처리하지 않았을 때 발생하는 오류의 효과는 잠재적이고 예측 불가능하다. 또한 전원 오류가 반복됨에 따라 이러한 잠재적 오류 페이지들은 누적적으로 증가할 수 있다. 잔여 효과가 발생한 페이지에 포함된 데이터가 매핑 정보와 같은 시스템의 메타 정보를 담고 있을 경우, FTL이 이를 적절히 처리하지 않으면 일시적으로 해당 정보가 제대로 읽힐 수 있지만 일정 시간이 지난 후 의도하지 않게 해당 정보를 손실하여 저장 장치의 일관성이 심각하게 손상될 수 있다. FIG. 10 shows two effects, a residual effect and a lost update, in the case of a power failure during the execution of an operation for changing the internal state of the flash memory. The residual effect is defined as an effect in which an unintended state remains in the flash memory due to a power failure during a flash memory write or erase operation. Since the flash memory chip does not guarantee the atomicity of the operation, if a power failure occurs during the execution of the write operation as shown in the right side of Fig. 10, 1) no data is written, 2) only a part of the intended data is written, or 3) All may be written. In the case of 1) or 2), the page could not write the intended data, so these pages can be detected and reused by using ECC or the like during the power failure recovery process. However, since 3) the write operation guaranteed by the flash chip is not atomically terminated, even if the data does not have an ECC error, the data cannot be completely trusted. This is because pages that have a power failure during writing are vulnerable to read disturbances, so even if they initially return normal data, they are likely to return incorrect data for subsequent read operations during operation. The effects of errors occurring when the pages or blocks with residual effects are not handled properly are potential and unpredictable. Also, as power failures repeat, these potential error pages can accumulate cumulatively. If the data contained in the page with residual effects contains meta information from the system, such as mapping information, the information may be read temporarily temporarily if the FTL does not handle it properly, but the information is unintentionally deleted after a certain period of time. Can cause serious damage to the consistency of the storage device.

잃어버린 갱신은 예컨대 호스트 쓰기 요청과 같은 하나의 외부 명령을 처리하기 위해서 FTL이 일련의 내부 작업들을 수행하는 도중에 아직 작업 전체가 끝나지 않은 상태에서 전원 오류가 발생하여 FTL의 자료 구조들 사이의 일관성이 파괴되는 상황을 의미한다. 전원 오류가 발생하는 시점이나 FTL의 구현에 따라 일관성이 파괴되는 유형은 다양하다. 기본적으로 데이터는 플래시메모리에 써졌지만 데이터에 대한 매핑 정보는 써지지 않았거나 도 10과 같이 매핑 정보를 쓰던 도중 전원 오류가 발생하면 휘발성 메모리 등에 유지되던 매핑 정보가 사라지므로 별도의 대비가 없었다면 전원 오류 복구 과정에서 써진 데이터에 대한 매핑 정보의 복구가 불가능하다. 또한 FTL이 호스트 시스템에게 flush cache등에 대한 응답으로 데이터의 영속성을 보장했음에도 불구하고 해당 데이터에 대한 매핑 정보를 잃어버려 데이터를 복구할 수 없다면 설사 전원 오류 상황에서 저장 장치가 복구되더라도 파일시스템이나 데이터베이스 시스템이 복구 불능 상태에 빠질 수도 있다. 더욱이 만일 매핑 정보를 먼저 플래시메모리에 쓰고 데이터를 아직 쓰지 않은 상황에서 전원 오류가 발생하면 매핑 정보가 잘못된 데이터를 포인트 하게 되어 저장 장치가 데이터의 무결성(data integrity)을 보장하지 못할 수 있다. 따라서 FTL이 플래시메모리의 상태를 바꾸는 연산을 수행할 때는 복구 가능성을 항상 고려해야 하며, 복구 과정에서는 잔여 효과와 잃어버린 갱신이라는 2가지 효과를 체계적이고 증명 가능한 방식으로 치유할 수 있어야 한다. Lost updates result in power failures while the FTL is still in the middle of a series of internal operations to handle a single external command, such as a host write request, resulting in a loss of consistency between the data structures in the FTL. It means the situation. There are many types of coherence that can be destroyed depending on when a power failure occurs or the implementation of the FTL. Basically, the data is written to the flash memory, but the mapping information for the data is not written or if the power failure occurs while writing the mapping information as shown in FIG. 10, the mapping information maintained in the volatile memory disappears. It is not possible to recover the mapping information for the data written during the recovery process. In addition, if the FTL guarantees the persistence of the data in response to the flush cache, etc., but the data cannot be recovered because the mapping information for the data is lost, even if the storage device is recovered in the event of a power failure, the file system or database system You may fall into this unrecoverable state. Furthermore, if a power failure occurs when the mapping information is first written to the flash memory and the data has not been written yet, the mapping information may point to incorrect data, and thus the storage device may not guarantee data integrity. Therefore, when performing an operation that changes the state of the flash memory, the FTL must always consider the possibility of recovery, and the recovery process must be able to heal two effects, a residual effect and a lost update, in a systematic and verifiable manner.

HIL프레임워크의 전원 오류 복구는 구조적 복구(structural recovery)와 기능적 복구(functional recovery)의 두 단계 작업으로 이루어진다. 구조적 복구는 저장 장치 내의 모든 잔여효과를 원자적으로 제거하는 단계다. HIL 프레임워크의 구조적 복구는 기존의 알려진 복구기법들에는 존재하지 않는 새로운 개념이다. 기능적 복구는 데이터와 메타데이터 사이의 일관성을 복구하는 단계이다. 기능적 복구를 위해 각 로그에서는 전원 오류가 나지 않았더라면 정상 동작 중 이루어졌어야 할 작업을 재현한다. The power failure recovery of the HIL framework consists of two phases: structural recovery and functional recovery. Structural repair is the step of atomically removing all residual effects in the storage device. Structural restoration of the HIL framework is a new concept that does not exist in existing known recovery techniques. Functional recovery is the step of restoring consistency between data and metadata. For functional recovery, each log reproduces what would have been done during normal operation if there were no power failures.

I. 구조적 복구 I. Structural Recovery

구조적 복구에서 각 로그는 다른 로그에 독립적으로 잔여 효과를 제거한다. 잔여 효과를 제거하기 위해서는 1) 전원 오류가 발생할 당시에 플래시메모리의 상태를 바꾸는 연산이 처리될 수 있는 블록들을 한정하고, 해당 블록들에서 전원 오류가 발생한 블록 및 페이지를 확정할 수 있어야 하며 2) 잔여 효과가 발생한 블록 중 정상 데이터를 복사할 예비 블록이 준비되어야 하고, 3) 잔여 효과에 대한 제거가 HIL 프레임워크를 구성하는 전체 로그들에 대해 원자적으로 끝날 때까지 임의로 중첩적인 전원 오류가 발생하더라도 이를 막을 수 있는 방법이 필요하며, 4) 마지막으로 전원 오류가 발생한 블록을 찾는 시간을 줄이는 방법이 필요하다. In structured recovery, each log removes residual effects independently of the other logs. In order to remove the residual effect, 1) it should be able to define the blocks that can handle the operation that changes the state of the flash memory at the time of power failure, and determine the block and page in which the power failure has occurred. A spare block must be prepared to copy the normal data among the blocks that have effected, and 3) randomly overlapping power failures occur until the removal of residual effects is atomically over all logs that make up the HIL framework. We need a way to prevent this. 4) Finally, we need a way to reduce the time to find the block that caused the power failure.

잔여 효과가 발생한 플래시메모리의 블록 또는 페이지를 crash frontier라고 할 때 HIL 프레임워크는 로그가 사용중인 블록 또는 가까운 미래에 사용하게 될 블록들과 해당 블록들을 쓰는 순서를 규정한 블록 쓰기 리스트(program future list)를 정의한다. 정상 동작 시 로그는 블록 쓰기 리스트에 지정된 순서대로 블록에 플래시메모리 쓰기 연산을 수행하고 블록 내에서는 페이지 번호 순서대로(ascending order)로 쓴다. 복구 과정에서 FTL은 전체 플래시메모리 공간이 아니라 블록 쓰기 리스트에 포함된 블록들만을 순서대로 스캔하여 로그가 전원 오류가 발생하던 순간에 어떤 블록을 쓰고 있었는지를 결정적으로 알 수 있다. 잔여효과가 실제로 발생했는지 여부에 대한 판단은 데이터와 함께 예비 영역에 기록된 ECC 및 CRC 정보를 이용한다. 로그는 복구 과정에서 블록 쓰기 리스트를 스캔하면서 전원 오류 블록 (crash frontier block)내에서 CRC 에러가 발생한 페이지의 바로 직전 페이지까지를 복사 대상으로 삼는다. When a block or page of flash memory that has a residual effect is called crash frontier, the HIL framework defines a block that the log is using or blocks that will be used in the near future and the order in which they are written. ). In normal operation, the log performs flash memory write operations to blocks in the order specified in the block write list, and writes them in ascending order within the block. During the recovery process, the FTL scans only the blocks in the block write list, not the entire flash memory space, in order, so that the log can determine which blocks were being written at the moment of power failure. The determination of whether the residual effect actually occurred uses the ECC and CRC information recorded in the spare area along with the data. The log scans the list of block writes during the recovery process and uses the copy up to the page immediately preceding the page where the CRC error occurred in the crash frontier block.

복구 과정에서 전원 오류 페이지(crash frontier page)는 정상적으로 읽힐 수도 있고, 그렇지 않을 수도 있다. 정상적으로 읽힌 경우는 향후에 읽기 교란에 의해 잘못된 데이터를 반환하게 될지도 모르는 잠재적인 오류 페이지임을 뜻한다. HIL프레임워크의 구조적 복구는 전원 오류 블록의 식별 이후, 전원 오류 블록 안의 유효한 페이지들을 새로운 블록에 옮겨 적음으로써 이러한 잔여효과 페이지를 제거할 수 있다. 잔여효과 페이지가 유효한 값을 반환하는 경우라면 새로운 페이지에 옮겨서 기록됨으로써, 잔여효과가 자연적으로 제거될 것이고, 유효한 값을 반환하지 않는 경우라면 복사 대상에서 제외됨으로써 시스템으로부터 성공적으로 배제될 것이기 때문이다. During recovery, the crash frontier page may or may not be read normally. A successful read means that it is a potential error page that might return incorrect data in the future due to read disturb. The structural recovery of the HIL framework can eliminate this residual effect page by rewriting the valid pages in the power failure block into a new block after identification of the power failure block. This is because if the residual effect page returns a valid value, it will be moved to a new page and written, so that the residual effect will be removed naturally, and if it does not return a valid value, it will be excluded from the copy and successfully excluded from the system.

로그 상에서 잔여효과 페이지를 제거하기 위한 유효 페이지 복사 작업 도중, 전원 오류가 또다시 발생하는 경우를 대비하여 HIL프레임워크의 구조적 복구를 위한 페이지 복사 작업은 무해석 블록(don’t care block)이라고 불리는 특별한 블록에 수행된다. 무해석 블록은 블록 쓰기 리스트와 함께 각 로그 별로 유지되는, 구조적 복구 작업만을 위해 특별하게 할당된 블록으로 시스템에 의해서 내용이 전혀 해석되지 않는 블록이다. 구조적 복구 과정에서 무해석 블록에 프로그램을 하던 도중 전원 오류가 발생하더라도 시스템의 재부팅 후, 해당 블록은 여전히 무해석 블록에 머물러 있으므로 시스템의 무결성에 어떠한 영향도 미치지 않는다. 무해석 블록은 구조적 복구의 유효 페이지 복사 작업 이전에 매번 지워진 후 새로운 상태로 사용된다. 무해석 블록에 모든 데이터 쓰기 작업이 끝나고, 무해석 블록이 블록 쓰기 리스트 상의 전원 오류 블록과 용도 변경이 확정되는 순간, 구조적 복구가 완료된다. 즉, 구조적 복구 도중 또 다시 전원 오류가 발생한다고 해도, 모든 쓰기 명령은 무해석 블록에 수행되었기 때문에 다음 번의 복구 시에는 아무 것도 일어나지 않은 것처럼 최초의 복구 시작 시점으로 되돌아 갈 수 있다. 전원 오류 블록을 빨리 찾기 위해 각각의 쓰기 포인터를 유지할 수 있다. 로그는 블록 쓰기 리스트상에서 지정된 순서에 따라 쓰기 작업을 수행하고 쓰기가 끝나면 쓰기 포인터를 전진시킨다. 쓰기 포인터 이전의 페이지들은 영속화된 것이 보장되므로, 전원 오류 복구 시에 스캔할 필요가 없다. 따라서 블록 쓰기 리스트의 시작점부터 스캔하는 경우에 비해 스캔 시간을 줄일 수 있다. 도 11은 잔여 효과를 제거하기 위한 로그의 핵심 자료 구조와 메커니즘을 요약한다. During a valid page copy operation to remove residual effect pages from the log, a page copy operation for structural recovery of the HIL framework in the event of another power failure is called a don't care block. Performed on a special block. An uninterpreted block is a block that is specially allocated only for structural recovery, which is maintained for each log with a block write list, and whose contents are not interpreted at all by the system. If a power failure occurs while programming a non-interpreted block during structural recovery, after the system reboots, the block is still in the non-interpreted block and thus does not affect the integrity of the system. An uninterpreted block is erased each time before the valid page copy operation of structural recovery and used in a new state. After all data writing to the uninterpreted block is completed, the structural recovery is completed as soon as the uninterpreted block is confirmed with the power failure block on the block write list and the change of use. In other words, even if a power failure occurs again during structural recovery, all write commands are executed on the uninterpreted block, allowing you to return to the beginning of the initial recovery as if nothing happened at the next recovery. Each write pointer can be held to quickly find a power failure block. The log performs write operations in the order specified on the block write list and advances the write pointer after writing. Pages before the write pointer are guaranteed to be persistent, so there is no need to scan during power failure recovery. Therefore, scanning time can be shortened compared to scanning from the beginning of the block write list. 11 summarizes the key data structures and mechanisms of logs for removing residual effects.

도 12는 저장 장치 수준에서의 구조적 복구 과정을 보여준다. HIL 프레임워크를 구성하는 FTL은 다수 개의 로그들로 구성될 수 있으며, 각 로그는 병렬적으로 동작할 수 있다. 따라서 구조적 복구의 핵심은 다수 개의 로그들에서 발생한 잔여 효과들을 제거하는 작업을 원자적으로 처리하는 것이다. 이를 위해 구조적 복구는 다음과 같은 절차로 진행된다. 12 shows a structural recovery process at the storage level. The FTL constituting the HIL framework can consist of multiple logs, each of which can run in parallel. Therefore, the key to structural recovery is to atomically handle the task of eliminating the residual effects of multiple logs. To this end, structural restoration proceeds with the following procedure.

구조적 복구는 C형 로그가 체크포인트 영역에서 가장 최신의 체크포인트 정보를 찾는 것으로 시작된다. 체크포인트 영역의 크기는 제한되며, 체크포인트 정보를 저장하는 페이지마다 타임스탬프를 포함하고 있으므로 체크포인트 영역을 빠른 시간에 스캔하여 체크포인트 정보를 얻을 수 있다(1). 체크포인트 정보에는 자신이 관리하는 로그들의 블록 쓰기 리스트와 무해석 블록등과 같은 전원 오류 복구에 필요한 정보가 포함되며 이를 해당 로그들로 전송한다(2). 각 로그는 전달받은 체크 포인트 정보를 이용하여 쓰기 포인터부터 블록 쓰기 리스트 상의 블록들을 스캔하며(3) 전원 오류 블록과 해당 페이지에서 ECC/CRC 오류가 발생한 위치를 찾고 전원 오류 블록에서 정상적으로 읽힌 페이지들을 무해석 블록에 복사한다(4).Structured recovery begins with the type C log looking for the most recent checkpoint information in the checkpoint area. The size of the checkpoint area is limited, and since each page storing the checkpoint information includes a timestamp, the checkpoint information can be obtained by scanning the checkpoint area in a short time (1). The checkpoint information includes information necessary for power failure recovery such as a block write list and an uninterpreted block of logs managed by the user and transmits them to the corresponding logs (2). Each log scans the blocks from the write pointer to the block write list using the checkpoint information received (3) Finds the power failure block and the location where the ECC / CRC error occurred in the corresponding page, and removes the pages read normally from the power failure block. Copy to analysis block (4).

복사가 끝나면 도 12의 오른쪽과 같이 로그는 체크포인트 정보에서 무해석 블록과 전원 오류 블록의 번호를 휘발적으로 바꾼다(5). 이러한 휘발적 HIL 메타 정보 갱신에 의해 각각은 잔여 효과의 효과가 완전히 제거되고 전원 오류 블록내의 유효한 페이지들만으로 이루어진 shadow 블록을 가지게 된다. 각각의 로그에서 병렬적으로 이루어진 복사 과정 및 HIL 메타데이터의 갱신에 의한 바뀐 체크포인트 정보들은 체크포인트 로그로 재전송한다(6). 모든 로그들의 바뀐 HIL 메타데이터가 최종적으로 C형 로그에 도착하면 완전한 shadow-tree가 만들어진다. C형 로그는 최종적으로 전달된 체크 포인트 정보를 모두 모아 체크포인트 영역에 쓰며 이 작업이 성공적으로 완료되면 앞서 설명한 모든 작업이 원자적으로 교체된다. (7) C형 로그는 구조적 복구가 성공적으로 마무리 되었다는 사실을 모든 로그들에 명시적으로 알리고(broadcast) 각각의 로그는 기능적 복구를 시작한다.After copying, the log volatically changes the number of uninterpreted blocks and power failure blocks in checkpoint information as shown in the right side of FIG. 12 (5). This volatile HIL meta-information update causes each to have a shadow block that consists entirely of valid pages in the power failure block, with the effect of the residual effect being completely eliminated. The checkpoint information changed by the copying process and the update of the HIL metadata in parallel in each log are retransmitted to the checkpoint log (6). When the changed HIL metadata of all logs finally arrives in the C log, a complete shadow-tree is created. The C log collects all the checkpoint information passed to it and writes it to the checkpoint area. When this task is completed successfully, all the above-described tasks are atomically replaced. (7) Type C logs explicitly broadcast all logs that the structural recovery has been completed successfully, and each log starts a functional recovery.

전체 구조적 복구 과정을 통틀어 플래시메모리의 상태를 바꾸는 모든 지우기 및 쓰기 연산은 C형 로그에서 마지막 한 페이지를 쓰는 동작을 제외하고는 모두 무해석 블록에서만 이루어지고 나머지 모든 작업들은 휘발성 메모리에서만 이루어 진다. 따라서 구조적 복구 중 임의의 순간에 다시 전원 오류가 발생하더라도 저장 장치의 논리적 상태에는 아무런 변경이 없으므로 전원 오류 복구를 시작할 당시의 상태로 되돌아간다. 전체 구조적 복구 과정은 각각의 로그에서 수행된 복잡한 잔여 효과 제거 작업들이 모여 C형 로그에 체크포인트 정보를 씀으로써 원자적으로 완료된다. All erase and write operations that change the state of flash memory throughout the entire structural recovery process are done in uninterpreted blocks, except for the last one page in the C-type log, and all other operations are in volatile memory. Thus, if a power failure occurs again at any moment during structural recovery, there is no change in the logical state of the storage device, so it returns to the state when power failure recovery started. The entire structural recovery process is completed atomically by gathering the complex residual effect removal operations performed on each log and writing checkpoint information to the C-type log.

II. 기능적 복구 II. Functional recovery

구조적 복구 작업이 끝나면 각 로그들은 기능적 복구를 시작한다. 각 로그의 관점에서 기능적 복구는 전원 오류가 발생하지 않았더라면 진행되었을 install_mapping 과정을 재현하여 각 로그의 논리적 주소 공간을 전원 중단 이전의 최신 상태로 복원하는 것이다. After the structural recovery, each log starts a functional recovery. From the point of view of each log, functional recovery is to reproduce the install_mapping process, which would have been done if there were no power failures, to restore the logical address space of each log to the state prior to the power outage.

전원 오류가 발생하면 FTL이 휘발성 메모리에 유지하던 모든 정보가 사라지므로, 재현이 가능하기 위해서 로그는 정상 동작할 때 1)플래시메모리에 데이터를 쓸 때마다 복구 과정에서 해당 데이터의 논리적 상태를 복구하는데 필요한 정보를 비휘발적으로 유지해야 하고, 2)복구가 불가능한 상황을 미연에 방지하기 위해 로그들이 플래시메모리에 쓰는 동작을 동기화 해야 한다. 또한 재현 과정에서는 3)잔여 효과 제거 후의 상태와 전원 오류가 발생하기 전의 상태 사이의 차이점을 고려하여 재현 과정이 처리되어야 하고, 4) 재현의 시간을 줄이기 위한 방법이 필요하다When a power failure occurs, all the information that FTL kept in volatile memory disappears. Therefore, in order to be able to reproduce, when the log operates normally 1) Whenever data is written to the flash memory, the logical state of the data is restored during the recovery process. The necessary information must be kept nonvolatile, and 2) the logs must be synchronized to the flash memory to prevent unrecoverable situations. Also, in the reproduction process, the reproduction process should be processed considering the difference between 3) the state after removing the residual effect and the state before the power failure occurs, and 4) a method for reducing the reproduction time is needed.

재현의 대상은 플래시메모리에 써진 데이터에 대한 매핑 정보이다. 플래시메모리의 페이지는 데이터 영역과 메타정보 등을 기록할 수 있는 예비 영역으로 구성되므로 로그는 재현 과정에서 사용될 매핑 정보를 도 13과 같이 데이터와 함께 플래시메모리 페이지에 쓴다. 데이터와 복구 정보인 매핑 데이터가 한 번의 플래시 쓰기 연산에 의해 플래시메모리 페이지 내에 함께 저장되기 때문에 로그는 데이터와 복구 정보의 저장 순서를 고려할 필요가 없으며 복구 정보를 위한 별도의 공간을 관리할 필요도 없다. HIL 프레임워크에서는 일반 동작 중 복구 정보를 쉽게 유지할 수 있으며, 데이터와 매핑 정보가 항상 같은 페이지에 있는 것이 보장되기 때문에 재현 과정도 쉽게 처리될 수 있다. The object of reproduction is mapping information for data written to the flash memory. Since the page of the flash memory consists of a data area and a spare area for recording meta information, the log writes mapping information to be used in the reproduction process together with the data in the flash memory page as shown in FIG. Since mapping data, which is data and recovery information, are stored together in a flash memory page by a single flash write operation, the log does not need to consider the order in which the data and recovery information are stored, and does not need to manage separate space for recovery information. . The HIL framework makes it easy to maintain recovery information during normal operation, and the reproducing process can be handled easily because the data and mapping information are always on the same page.

각 로그는 원칙적으로 독립적인 실행이 가능하지만 전원 오류 복구가 가능하기 위해서는 일반 동작 시 로그 들 사이에서는 최소한의 동기화가 필요하다. 가장 기본적으로 데이터가 데이터에 대한 매핑 보다 먼저 플래시메모리에 써져야 한다. 만일 도 14의 왼쪽 첫 번째와 같이 로그가 완전히 독립적으로 동작하여 상위 로그가 매핑 정보를 플래시메모리에 쓰고 하위 로그가 플래시메모리에 데이터를 쓰지 않은 상황에서 전원 오류가 발생하면 해당 매핑 정보는 실제 써지지 않은 데이터를 포인트 하므로, 저장 장치의 데이터 무결성에 문제가 발생한다. 로그는 계층 구조상에서 하위 로그가 데이터를 쓴 다음에야 상위 로그로 매핑 정보가 전달하는 규칙을 따르므로 하위 로그와 상위 로그 사이의 플래시메모리 쓰기 순서 제약을 지킨다. In principle, each log can run independently, but in order to recover from power failure, minimal synchronization is required between logs during normal operation. Basically, data must be written to flash memory before mapping to data. If the log is completely independent and the upper log writes the mapping information to the flash memory and the lower log does not write the data to the flash memory as shown in the left first part of FIG. 14, the mapping information is not actually written. Points to data that do not exist will cause problems with the data integrity of the storage device. The log follows the rules that the mapping information passes to the parent log only after the child log has written the data in the hierarchy, thus keeping the flash memory write order constraint between the child log and the parent log.

형제 페이지 구조를 가진 MLC 플래시메모리는 특정 페이지에 데이터를 성공적으로 썼다고 해서 해당 데이터의 영속성이 반드시 보장되는 것이 아니고, 형제 관계에 있는 모든 페이지들이 다 써져야 비로소 해당 페이지에 포함된 데이터의 영속성가 보장된다. 도 14의 가운데 그림은 형제 관계에 있는 두 번째 페이지에 데이터를 쓰는 도중 발생한 전원 오류에 의해 이미 성공적으로 써진 첫 번째 페이지의 데이터가 손실되는 상황을 보여준다. 이러한 상황을 고려하지 않고 매핑 로그가 매핑 데이터를 쓰는 경우는, 매핑 정보가 손실된 데이터를 참조하게 되는 문제가 있다.MLC flash memory with sibling page structure does not guarantee the persistence of the data by successfully writing the data on a specific page, but it does not guarantee the persistence of the data contained in the page until all the pages in sibling relationship are used up. . The middle figure of FIG. 14 shows a situation in which the data of the first page that has been successfully written is lost due to a power failure that occurred while writing data to the second page in sibling relationship. If the mapping log writes mapping data without considering such a situation, there is a problem that the mapping information is referred to the missing data.

마지막으로 도 14의 세 번째 그림은 전원 오류 복구 과정에서 발생하는 매핑과 데이터의 일관성 문제를 보여준다. 복구 과정에서 잔여 효과를 제거하기 위해 전원 오류 블록은 무해석 블록과 교체되는데 전원 오류 블록에 써진 유효한 데이터의 매핑 데이터가 상위 매핑 로그에 의해서 이미 써졌다면 해당 매핑 정보는 잔여 효과 제거 후 현재의 유효한 블록(전원 오류 발생 전의 무해석 블록)에 쓰여진 데이터를 포인트 하는 것이 아니라, 과거 전원 오류 발생 당시에 유효했으나 현재 무해석 블록으로 바뀐 블록(전원 오류 발생 전의 전원 오류 블록)에 포함된 무의미한 데이터를 참조하는 문제가 있다. Finally, the third figure of FIG. 14 shows a problem of mapping and data consistency occurring during power failure recovery. The power failure block is replaced by an uninterpreted block to remove the residual effect during recovery. If the mapping data of the valid data written in the power failure block has already been written by the upper mapping log, the mapping information is the current valid block after removing the residual effect. Rather than point to data written in (uninterpreted block before power failure), refer to nonsense data contained in a block that was valid at the time of a past power failure but became a current non-interpreted block (power failure block before power failure). There is.

이러한 문제를 해결하기 위해 HIL 프레임워크에서는 하위 로그가 상위 로그에게 매핑 데이터를 플래시메모리에 써도 되는지 여부를 승인하는 NV_grant라는 동기화 명령과 상위 로그가 하위 로그로 매핑 데이터가 영속적으로 써졌음을 알려주는 Intalled_NV 인터페이스를 도입하였다. 도 15는 NV_grant와 Intalled_NV의 동작의 개요를 설명한다. 특정 페이지에 포함된 데이터에 대한 NV_grant 명령은 해당 페이지가 속한 블록들이 모두 플래시메모리에 써지고, 블록 쓰기 리스트 상의 다음 블록에 대한 쓰기 연산이 시작되고 난 이후에야 상위 로그로 전송할 수 있다. 이러한 조건을 지키면 (1) MLC 칩의 형제 페이지 구조로 인해 전원 오류 시 손실되지 않음을 보장받으며 동시에, (2) 전원 오류 블록에 포함되지 않게 됨을 보장받을 수 있다. 상위 로그는 NV_Grant 명령을 받기 전에는 매핑 정보를 받아서 캐시에서만 유지하다가, 하위 로그로부터 NV_grant를 받으면 매핑 정보를 쓸 수 있게 된다. 매핑 정보가 플래시메모리에 써졌을 뿐만 아니라 영속화되면 하위 데이터 로그에 Installed_NV로 응답한다. Installed_NV 메시지를 받은 하위 로그는 도 15의 (7)에서처럼 매핑 정보가 영속화된 페이지들에 대해서 블록 쓰기 리스트의 재현 포인터(replay pointer)를 전진시킬 수 있다. 재현 포인터 이전의 페이지들은 데이터와 해당 데이터에 대한 매핑 데이터가 모두 영속화되었기 때문에 더 이상 전원 오류 복구 과정에서 매핑 정보의 업데이트를 재현할 필요가 없어진다. 전원 오류 복구 시에는 재현 포인터부터 시작하여 재현 과정을 거치면 되기 때문에 블록 쓰기 리스트의 처음부터 재현 하는 경우에 비해 재현 시간을 줄일 수 있다. 로그의 블록 쓰기 리스트에서 재현 포인터가 지나간 블록들은 더 이상 복구 시에 사용될 필요가 없으므로 리스트에서 제거(truncation)될 수 있다. To solve this problem, the HIL framework uses a synchronization command called NV_grant that allows the child log to write the mapping data to flash memory, and an Intalled_NV that tells the parent log that the mapping data has been permanently written to the child log. An interface was introduced. 15 illustrates an overview of operations of NV_grant and Intalled_NV. The NV_grant command for data included in a specific page can be transferred to the upper log only after all the blocks to which the page belongs are written to flash memory and the write operation for the next block in the block write list starts. This condition ensures that (1) it is not lost in case of power failure due to the sibling page structure of MLC chip, and (2) that it is not included in power failure block. The upper log receives the mapping information and keeps it in the cache before receiving the NV_Grant command. When the NV_grant is received from the lower log, the mapping information can be written. The mapping information is not only written to flash memory, but also persisted to Installed_NV in the lower data log. The lower log receiving the Installed_NV message may advance the replay pointer of the block write list with respect to the pages where the mapping information is persisted as shown in (7) of FIG. 15. Pages before the reproducing pointer no longer need to reproduce the update of the mapping information during power failure recovery because both the data and the mapping data for that data are persistent. When recovering from a power failure, the reproduction process starts from the reproduction pointer, so that the reproduction time can be reduced compared to the reproduction from the beginning of the block write list. Blocks past the reproduction pointer in the log write list of the log can be truncated from the list since they no longer need to be used at recovery time.

로그는 구조적 복구 작업이 끝나면 재현 과정을 통해 기능적 복구를 시작한다. 구조적 복구 작업에 의해 잔여 효과가 제거되고 난 후 로그의 상태는 1)휘발성 메모리에 유지되던 모든 자료 구조가 사라졌고, 따라서 2) 재현 포인터 이후의 데이터에 대한 매핑 데이터가 상위 로그에서 플래시메모리에 써졌는지 여부를 알 수 없다는 점을 제외하면 전원 오류가 발생하기 전의 상태와 개념적으로 동일하다. 따라서 재현 과정을 위한 별도의 메커니즘은 최소화하고, 일반 동작 때의 install_mapping 처리 메커니즘을 대부분 재사용한다. 재현 과정에서는 재현 포인터에서 시작하여 블록 쓰기 리스트를 따라 페이지들을 스캔하면서 매핑 정보를 상위 로그로 재전송한다. 일반 동작 시에는 데이터를 쓰고 매핑 정보를 전송해야 하는 것과 달리 데이터는 이미 써져 있으므로 재현 과정에서는 데이터와 함께 저장된 매핑 정보만을 전송하면 된다. 전송할 매핑 정보는 스캔 과정에서 예비 영역에서 얻을 수 있다. 전송되는 매핑 데이터는 이미 전원 오류 전에 상위 매핑 로그에서 플래시메모리에 썼을 수 있지만 매핑 정보의 갱신은 멱등(idempotent)이므로 매핑 정보를 전송하는 순서만 동일하다면 매핑 정보가 여러 번 갱신되더라도 그 결과는 동일한 것이 보장되어 매핑 데이터를 플래시메모리에 여러 번 쓰더라도 무방하다. After the structural recovery is completed, the log starts a functional recovery through a reproduction process. After the residual effect was removed by the structured recovery operation, the state of the log was 1) that all data structures held in volatile memory were lost, and 2) the mapping data for data after the reproduction pointer was written to flash memory from the upper log. It is conceptually identical to the state before the power failure, except that it is unknown. Therefore, the separate mechanism for the reproduction process is minimized and most of the install_mapping processing mechanisms during normal operation are reused. The replay process retransmits the mapping information to the parent log by scanning pages along the block write list, starting at the rewrite pointer. Unlike normal data, which requires writing data and transmitting mapping information, the data is already written. Therefore, only the mapping information stored with the data needs to be transmitted in the reproduction process. The mapping information to be transmitted can be obtained from the spare area during the scanning process. The transmitted mapping data may have already been written to the flash memory from the upper mapping log before the power failure, but the updating of the mapping information is idempotent, so if the mapping information is sent in the same order, the result is the same even if the mapping information is updated several times. This guarantees that the mapping data can be written to the flash memory multiple times.

도 16은 3단계 매핑의 계층 구조를 가진 저장 장치 시스템에서 기능적 복구가 이루어지는 과정을 보여준다. HIL 프레임워크의 계층적 로그 구성에서 기능적 복구는 최상위 로그에서부터 완료되어 하위로그로부터의 매핑 정보 갱신 요청을 수신할 준비가 된다. 최상위 매핑 로그에서의 매핑 정보가 하나의 물리적 페이지 안에 담긴 경우, 쓰기 포인터와 재현 포인터의 위치는 동일하며, 최신의 쓰기 포인터가 가리키는 페이지를 읽음으로써 최상위 매핑 로그의 논리 주소 공간에 대한 기능적 복구가 완료된다. 복구된 최상위 매핑 로그 M1의 논리 주소 공간은 하위의 매핑 로그 M0의 매핑 데이터를 표현하며, M0로그에서는 재현 포인터로부터 성공적으로 쓰여진 마지막 페이지까지의 매핑 정보를 재현(상위 로그로 재전송)함으로써, 자신의 논리 주소 공간에 대한 기능적 복구를 마친다. 이와 같은 하향식의 연쇄적인 기능적 복구는 마지막으로 데이터로그에 도착할 때까지 계속된다. 마지막으로 데이터로그에서 기능적 복구가 완료됨으로써, 최종적으로 호스트 데이터에 대한 논리 주소 공간이 전원 중단 이전의 최신의 상태로 복원된다.16 illustrates a process of functional recovery in a storage system having a hierarchical structure of three levels of mapping. In the hierarchical log configuration of the HIL framework, functional recovery is completed from the top log and ready to receive mapping information update requests from the sublog. If the mapping information in the top-level mapping log is contained within one physical page, the write and reproduce pointers are in the same position, and the functional recovery of the logical address space of the top-level mapping log is completed by reading the page pointed to by the latest write pointer. do. The logical address space of the restored highest mapping log M1 represents the mapping data of the lower mapping log M0, and in the M0 log, the mapping information from the reproduction pointer to the last page successfully written is reproduced (retransmitted to the upper log). Complete a functional recovery of the logical address space. This top-down, chained functional recovery continues until the final datalog is reached. Finally, the functional recovery in the datalog is completed, and finally the logical address space for the host data is restored to the state prior to the power outage.

일 실시예에 따른 파일 변환 계층 설계 프레임워크의 정확성 검증Verify the accuracy of the file translation layer design framework according to one embodiment

HIL프레임워크는 임의의 다양한 FTL을 설계할 수 있는 일반성(generality)을 지향하므로, 어떤 특정 인스턴스(instance)로서의 FTL을 구현한 후 테스트를 통하여 정확성을 검증하는 것은 HIL프레임워크 자체의 정확성을 완전하게 검증 하는 것이 아니다. 따라서 HIL프레임워크의 추상화된 시스템 모델을 통하여 그 정확성을 정형적으로 검증(formal verification)하는 방법을 취하였으며, 이를 위하여 시스템 설계 단계에서부터 증명 가능한 설계(design for provability)를 지향하였다. Since the HIL framework is oriented towards the generality of designing any of a variety of FTLs, it is important to implement the FTL as a specific instance and then verify the accuracy through testing to fully verify the accuracy of the HIL framework itself. It is not a verification. Therefore, the formal verification of the accuracy was taken through the abstracted system model of the HIL framework, and for this purpose, the design for provability was pursued from the system design stage.

도 17은 HIL프레임워크의 정형 검증 과정의 단계를 보여준다. 가장 먼저, 시스템의 가정을 정립하였고, 그 다음의 단계로 저장 장치 시스템이 정확하게 동작한다는 것이 명확하게 어떤 의미인지에 관한 정확성의 기준(correctness criteria)을 수립하였다. 다음으로 HIL프레임워크의 정형적 명세(formal specification)를 작성하였다. 이 과정은 HIL프레임워크 동작의 추상적인 모델 정립과 개념들의 명확한 정의, 그리고 핵심 규칙들의 정형적 표현을 포함한다. 마지막으로, 위의 단계들을 통해 정립된 시스템의 가정, 정확성의 기준, 그리고 정형 명세에 기반하여 HIL프레임워크의 정확성에 관한 정리(theorem)가 참임을 연역적 추론을 통하여 수학적으로 증명하였다.17 shows the steps of the formal verification process of the HIL framework. First, the assumptions of the system were established, and the next step was the establishment of correctness criteria for clearly what it means for the storage system to operate correctly. Next, I created a formal specification of the HIL framework. This process involves abstract modeling of HIL framework behavior, a clear definition of concepts, and a formal representation of key rules. Finally, based on the assumptions of the system established through the above steps, the criteria for accuracy, and the formal specification, it was mathematically proved by deductive reasoning that the theorem about the accuracy of the HIL framework is true.

정확성 증명의 출발점이 되는 저장 장치 시스템의 정확성 기준은 표 1과 같다.Table 1 shows the accuracy criteria for the storage system as the starting point for proof of accuracy.

Figure PCTKR2014001028-appb-I000001
Figure PCTKR2014001028-appb-I000001

위의 정확성 기준에서 보다 명확하게 정의해야만 하는 것은 ‘가장 최신의’라는 데이터 최선성의 개념과, ‘항상’이라는 시간성의 개념이다. 먼저 저장 장위의 정확성 기준에서 보다 명확하게 정의해야만 하는 것은 ‘가장 최신의’라는 데이터 최선성의 개념과, ‘항상’이라는 시간성의 개념이다. 먼저 저장 장치 시스템의 시간성의 관점에서 본다면, 저장 장치 시스템은 도 18과 같이 초기화 이후 수명이 종료될 때까지 정상 동작과 전원 오류 복구의 쌍이 유한한 횟수로 반복되는 것으로 볼 수 있다. More clearly defined in the above accuracy criterion is the concept of data optimism, the most recent, and the concept of time, always. First of all, it is necessary to define more clearly in the accuracy criteria of the storage device, the concept of data bestness of 'the most recent' and the concept of time of 'always'. First, in view of the timeliness of the storage system, as shown in FIG. 18, the storage system may be regarded as having a finite number of times of normal operation and power failure recovery until the end of life after initialization.

데이터의 최신성(recency)은 정상 동작 시와 전원 오류 복구 시에 각각 다른 의미를 지니게 된다. 먼저 저장 시스템이 정상 동작 중일 때 최신의 데이터란 가장 최근에 휘발적 쓰기 성공 응답을 한 데이터가 될 것이다. 그리고 저장 시스템의 전원 오류가 복구 완료된 시점에서 최신의 데이터란 전원 중단 이전에 가장 마지막으로 영속화 완료 응답한 데이터일 것이다. 이에 따라 정상 동작 시와 전원 오류 복구 시의 정확성 기준을 다시 세분화 하여 정의하면, 정상 동작 시에는 “읽기 요청에 대해 가장 최근에 휘발적 쓰기 성공 응답한 데이터를 돌려주는 것”, 즉 데이터의 일관성(coherence)을 보장하는 것이며, 전원 오류 복구 시에는 “전원 중단 이전에 가장 마지막으로 영속화 완료 응답한 데이터를 성공적으로 복구하는 것”, 즉 회복 가능성(recoverability)을 보장하는 것이다. 따라서 HIL프레임워크가 이 두 가지 속성(데이터 일관성과 회복 가능성)을 만족함을 증명 한다면 이것은 n번의 정상 동작과 전원 오류 복구의 쌍이 반복되는 시간 축 상에서 ‘항상’ 정확성 기준이 만족됨을 증명하는 것과 같다. Recency of data has different meanings in normal operation and power failure recovery. First, when the storage system is operating normally, the latest data will be the data with the most recent volatile write success response. When the power failure of the storage system is completed, the latest data may be the data that was last responded to lasting before the power failure. Thus, the subdivided definition of the accuracy criteria in normal operation and power failure recovery, in normal operation, “returns the data of the most recent volatile write success response to the read request”, that is, data consistency ( Coherence is guaranteed, and in the event of a power failure recovery, it is “to recover the data that was last responded to lasting before the power failure”, that is, recoverability. Thus, if the HIL framework proves to satisfy these two attributes (data consistency and recoverability), it is equivalent to demonstrating that the “always” accuracy criterion is satisfied on the time axis in which n pairs of normal operation and power failure recovery repeat.

HIL프레임워크는 데이터 일관성과 회복가능성을 보장하기 위해 로그 동작에서 지켜야만 하는 규칙들을 도입하였다. 먼저 데이터 일관성의 보장을 위해 도입한 시스템 규칙과 증명에서 핵심적으로 사용된 추론의 내용을 소개하도록 한다. 도 19에서 Cachei안의 Data(X)가 Flash logi에 기록되면 이에 대한 새로운 매핑 정보 Link(X)가 생성된다. 이 Link(X)는 로그 간 인터페이스를 통해 상위 로그 i+1의 Cachei+1로 전달되는데, 앞서 설명된 HIL프레임워크의 installed_v규칙에 따르면 이 Link(X)가 Cachei+1에 성공적으로 설치가 된 것이 확인된 후에야 Data(X)를 Cachei에서 제거할 수 있다. 이와 같은 규칙을 지키면 Data(X)에 대한 읽기 요청에 대하여, 정상 동작 중 어떠한 임의의 시점에서도 Data(X)에 대한 연결 정보를 잃지 않음을 보장할 수 있다. 이것은 마치 암벽 등반 시 안전(Safety) 보장을 위하여 다음 목표의 지형물을 위로 뻗은 손으로 잡은 것을 확인한 후에야 다른 손에 잡고 있던 지형 물을 놓는 것과 같은 원리라고 할 수 있다.The HIL framework introduces rules that must be followed in log operations to ensure data consistency and recoverability. First, we introduce the contents of the reasoning used in the system rules and proofs introduced to ensure data consistency. In FIG. 19, when Data (X) in Cache i is recorded in Flash log i , new mapping information Link (X) is generated. The Link (X) is then carried to the Cache i + 1 of the parent log i + 1 through the log between the interface successfully installed on this Link (X) Cache i + 1 according to installed_v rules of the HIL framework previously described Only after it is confirmed can Data (X) be removed from Cache i . By following these rules, it is possible to ensure that the connection request for Data (X) is not lost at any point during normal operation for the read request for Data (X). This is the same principle as placing a feature on the other hand after confirming that the target of the next target is held up with an outstretched hand to ensure safety during rock climbing.

다음으로, 회복가능성의 보장을 위해 HIL프레임워크에서 도입한 규칙을 도 20을 통해 설명하도록 한다. HIL프레임워크에서 플래시 로그는 복구 성능의 향상을 위해 로그의 모든 매핑을 재현하지 않고 재현 포인터를 기준점으로 작은 크기의 재현 집합(Redo_set)을 유지한다. 이 때 도 15에서 설명된 HIL프레임워크의 Installed_NV 규칙은 플래시 로그(Flash logi)에 기록된 Data(X)가 재현집합(Redo_seti)에서 제거될 수 있는 조건을 Data(X)에 대한 Link(X)가 상위 로그의 플래시 로그(Flash logi+1)에 영속화된 것이 확인된 이후로 한정한다. 이 규칙은 Data(X)에 대한 연결정보가 Logi의 복구 과정에 의해 되살아나거나, 상위 로그에 존재하거나 둘 중의 하나를 보장함으로써 어떠한 전원 오류 상황에서도 Data(X)에 대한 연결정보를 잃어버리지 않음을 보장한다.Next, the rules introduced in the HIL framework to ensure recoverability will be described with reference to FIG. 20. In the HIL framework, the flash log does not reproduce all mappings in the log to improve recovery performance, but rather maintains a small sized Redo_set based on the replay pointer. Installed_NV rules of the HIL framework described in Figure 15, this time Link to the conditions under which the Data (X) recorded in the flash log (Flash log i) can be removed from the reproduction set (Redo_set i) to Data (X) ( It is limited after it is confirmed that X) is persistent in the flash log (Flash log i + 1 ) of the upper log. This rule ensures that the connection to Data (X) is not lost in any power failure situation by ensuring that the connection to Data (X) is revived by Log i 's recovery process, is present in the parent log, or either. To ensure.

실시예들에 따르면, 로그들의 조합을 통해 임의의 다양한 FTL을 구성할 수 있다. HIL은 매핑의 단위, 쓰기 버퍼링이나 캐싱 정책, 쓰레기 수거 정책 등의 다양성을 포괄 할 수 있는 FTL설계의 일반적인 프레임워크이다. 또한, 실시예들에 따른 HIL프레임워크는 어떠한 전원 오류 상황에서도 성공적으로 복구됨을 보장하며 이에 대한 정확성이 검증되었다. HIL은 최신 플래시 메모리의 신뢰성 문제를 포괄적이고 완전하게 해결하였다. 또한, 실시예들은 쓰레드의 병렬성을 통해 성능 최적화의 가능성을 제공하며 이는 플래시 메모리 요청들의 병렬성으로 효과적으로 연결된다.According to embodiments, any of a variety of FTLs can be configured through a combination of logs. HIL is a generic framework for FTL design that can cover a variety of mapping units, write buffering or caching policies, and garbage collection policies. In addition, the HIL framework according to the embodiments ensures successful recovery in any power failure situation and its accuracy has been verified. HIL has solved the reliability problem of modern flash memory comprehensively and completely. In addition, embodiments provide the possibility of performance optimization through the parallelism of threads, which effectively leads to the parallelism of flash memory requests.

일 실시예에 따른 플래시 변환 계층의 설계Design of a Flash Translation Layer According to an Embodiment

일 실시예에 따른 FTL 설계 기법에 따르면, 플래시 변환 계층을 구성하기 위한 복수의 빌딩 블록들이 사용자에게 제공될 수 있다. 여기서, 복수의 빌딩 블록들은 데이터를 처리하는 제1 처리 블록(예를 들어, D형 로그), 데이터의 매핑 정보를 계층적으로 처리하는 적어도 하나의 제2 처리 블록(예를 들어, M형 로그) 및 제1 처리 블록 및 적어도 하나의 제2 처리 블록을 위한 체크포인트 정보를 처리하는 제3 처리 블록(예를 들어, C형 로그) 등을 포함할 수 있다. 예를 들어, 복수의 빌딩 블록들을 이용하여 플래시 변환 계층을 구성하는 사용자 인터페이스가 사용자에게 제공될 수 있다. 사용자는 복수의 빌딩 블록들을 이용하여 원하는 FTL을 설계할 수 있다.According to an FTL design technique according to an embodiment, a plurality of building blocks for configuring a flash translation layer may be provided to a user. The plurality of building blocks may include a first processing block (eg, a D-type log) for processing data and at least one second processing block (eg, an M-type log) for hierarchically processing mapping information of data. ) And a third processing block (eg, a C-type log) for processing checkpoint information for the first processing block and the at least one second processing block. For example, a user interface for constructing a flash translation layer using a plurality of building blocks may be provided to a user. The user can design a desired FTL using a plurality of building blocks.

또한, FTL의 설계와 관련된 설정을 수신하는 사용자 인터페이스가 사용자에게 제공될 수 있다. 여기서, FTL의 설계와 관련된 설정은 FTL을 구현하는 쓰레드의 수와 관련된 설정, FTL을 구동하는 코어(core)의 수와 관련된 설정, 코어 당 처리되는 쓰레드의 수와 관련된 설정, 및 복수의 코어들과 복수의 쓰레드들 사이의 매핑과 관련된 설정 등을 포함할 수 있다. 예를 들어, 개별 로그는 펑션(function)으로 구현되도록 설정되거나, 단일 쓰레드(single thread)로 구현되도록 설정되거나, 멀티 쓰레드(multi thread)로 구현되도록 설정될 수 있다. 개별 로그가 펑션으로 구현되는 경우 FTL은 단일 쓰레드로 구현될 수 있고, 개별 로그가 단일 쓰레드 또는 멀티 쓰레드로 구현되는 경우 FTL은 멀티 쓰레드로 구현될 수 있다.In addition, a user interface may be provided to the user that receives settings related to the design of the FTL. Here, the configuration related to the design of the FTL is related to the number of threads implementing the FTL, the configuration related to the number of cores driving the FTL, the configuration related to the number of threads processed per core, and the plurality of cores. And configuration related to mapping between the plurality of threads. For example, individual logs may be set to be implemented as functions, set to be implemented as a single thread, or set to be implemented as multi-threads. If individual logs are implemented as functions, FTL can be implemented as a single thread. If individual logs are implemented as single thread or multithreaded, FTL can be implemented as multithreaded.

FTL이 멀티 쓰레드로 구현되고, FTL이 멀티 코어에 의하여 구동되도록 설정되는 경우, 쓰레드-코어 매핑이 설정될 수 있다. 예를 들어, 코어의 개수가 2개이고, FTL이 10개의 쓰레드들로 구현되는 경우, 2개의 코어들과 10개의 쓰레드들 사이의 매핑이 설정될 수 있다.When the FTL is implemented as multi-threaded and the FTL is set to be driven by multi-cores, thread-core mapping may be set. For example, if the number of cores is two and the FTL is implemented with ten threads, the mapping between the two cores and the ten threads may be set.

FTL의 설계에 이용되는 복수의 빌딩 블록들 및 FTL의 설계와 관련된 설정에 기초하여 FTL이 생성될 수 있다. 이 때, HIL 프레임워크에서는 FTL을 여러 쓰레드(thread)가 병렬 실행하는 경우에도 데이터 일관성과 데이터의 복구 가능성을 만족시키기 위한 필수적인 동기화 인터페이스를 제공한다. 예를 들어, 개별 로그는 데이터 일관성을 만족하기 위하여 캐시 히트를 우선적으로 판단한다. 또한, 상위 로그와 하위 로그는 데이터의 복구 가능성을 만족하기 위하여 NV_grant 및 Installed_NV를 주고 받는다.An FTL may be generated based on a plurality of building blocks used in the design of the FTL and settings related to the design of the FTL. At this time, the HIL framework provides an essential synchronization interface to satisfy data consistency and recoverability of data even when multiple threads execute FTL in parallel. For example, individual logs preferentially determine cache hits to satisfy data consistency. In addition, the upper log and the lower log exchange NV_grant and Installed_NV to satisfy the recoverability of data.

이로 인하여, 하나의 로그는 서로 병렬적으로 실행되는 멀티 쓰레드로 구현될 수 있다. 또는, 하나의 로그는 펑션으로 구현됨으로써 여러 로그가 합쳐져 하나의 쓰레드가 생성될 수도 있다. 따라서, HIL 프레임워크로 만들어진 FTL은 단일 코어 환경에서부터 다중 코어 환경에 이르기까지 코드 변경 없이 활용될 수 있다. 나아가, 각각의 경우에서 각 코어 별로 단일 쓰레드 내지 멀티 쓰레드가 구동되도록 다양하게 구성될 수 있다. 이처럼 HIL 프레임워크은 다중 코어/다중 쓰레드 환경에서 다양한 형태로 구성될 수 있다.Because of this, one log can be implemented in multi-threaded execution in parallel with each other. Alternatively, one log may be implemented as a function, where several logs may be combined to create one thread. Thus, FTL built on the HIL framework can be leveraged without code changes, from single core environments to multi-core environments. Furthermore, in each case, a single thread or a multi-thread may be driven for each core. As such, the HIL framework can be configured in various forms in a multicore / multithreaded environment.

또한, 일 실시예에 따른 FTL 설계 기법에 따르면, 기 생성된 FTL은 변경된 설정에 따라 적응적으로 재생성될 수 있다. 예를 들어, FTL의 설계와 관련된 설정을 변경하는 사용자 인터페이스가 사용자에게 제공될 수 있다. 이 경우, 기 생성된 FTL에 사용된 복수의 빌딩 블록들 및 새로운 설정에 기초하여 FTL이 적응적으로 재생성될 수 있다. 다시 말해, 하드웨어 구성 등 설정이 변경되더라도 코드 변경 없이 FTL이 적응적으로 재생성될 수 있다.In addition, according to the FTL design technique according to an embodiment, the pre-generated FTL may be adaptively regenerated according to the changed setting. For example, a user interface may be provided to the user that changes settings related to the design of the FTL. In this case, the FTL may be adaptively regenerated based on the new configuration and the plurality of building blocks used for the previously generated FTL. In other words, even if the setting is changed, such as hardware configuration, the FTL can be adaptively regenerated without changing the code.

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented as hardware components, software components, and / or combinations of hardware components and software components. For example, the devices, methods, and components described in the embodiments may include, for example, processors, controllers, arithmetic logic units (ALUs), digital signal processors, microcomputers, field programmable gates (FPGAs). It may be implemented using one or more general purpose or special purpose computers, such as an array, a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to the execution of the software. For convenience of explanation, one processing device may be described as being used, but one of ordinary skill in the art will appreciate that the processing device includes a plurality of processing elements and / or a plurality of types of processing elements. It can be seen that it may include. For example, the processing device may include a plurality of processors or one processor and one controller. In addition, other processing configurations are possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the above, and configure the processing device to operate as desired, or process it independently or collectively. You can command the device. Software and / or data may be any type of machine, component, physical device, virtual equipment, computer storage medium or device in order to be interpreted by or to provide instructions or data to the processing device. Or may be permanently or temporarily embodied in a signal wave to be transmitted. The software may be distributed over networked computer systems so that they may be stored or executed in a distributed manner. Software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be embodied in the form of program instructions that can be executed by various computer means and recorded in a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the media may be those specially designed and constructed for the purposes of the embodiments, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Although the embodiments have been described by the limited embodiments and the drawings as described above, various modifications and variations are possible to those skilled in the art from the above description. For example, the described techniques may be performed in a different order than the described method, and / or components of the described systems, structures, devices, circuits, etc. may be combined or combined in a different form than the described method, or other components. Or even if replaced or substituted by equivalents, an appropriate result can be achieved. Therefore, other implementations, other embodiments, and equivalents to the claims are within the scope of the claims that follow.

Claims (42)

데이터를 처리하는 제1 처리 모듈;A first processing module for processing data; 상기 데이터의 매핑 정보를 처리하는 제2 처리 모듈; 및A second processing module for processing the mapping information of the data; And 상기 제1 처리 모듈의 무해석 블록에 대한 정보와 상기 제2 처리 모듈의 무해석 블록에 대한 정보를 포함하는 체크포인트 정보를 처리하는 제3 처리 모듈A third processing module for processing checkpoint information including information on an uninterpreted block of the first processing module and information on an uninterpreted block of the second processing module 를 포함하고,Including, 상기 제1 처리 모듈은 상기 제1 처리 모듈의 무해석 블록을 이용하여 오류를 복구하고, 상기 제2 처리 모듈은 상기 제2 처리 모듈의 무해석 블록을 이용하여 오류를 복구하는, 플래시 변환 계층 구조.The first processing module recovers an error using an uninterpreted block of the first processing module, and the second processing module recovers an error using an uninterpreted block of the second processing module. . 제1항에 있어서,The method of claim 1, 오류 복구를 위하여,To recover from the error, 상기 제1 처리 모듈은 오류 페이지를 검출하고, 상기 오류 페이지를 포함하는 오류 블록 내 유효한 페이지들을 상기 제1 처리 모듈의 무해석 블록에 복사하며, 복사가 완료되면 상기 오류 블록과 상기 제1 처리 모듈의 무해석 블록을 논리적으로 스왑하는, 플래시 변환 계층 구조.The first processing module detects an error page, copies valid pages in the error block including the error page to an uninterpreted block of the first processing module, and when copying is completed, the error block and the first processing module. Flash translation hierarchy for logically swapping uninterpreted blocks. 제2항에 있어서,The method of claim 2, 상기 제1 처리 모듈의 체크포인트 정보는 상기 제1 처리 모듈의 블록 쓰기 리스트를 더 포함하고, 상기 제1 처리 모듈은 상기 블록 쓰기 리스트를 이용하여 상기 오류 페이지를 검출하는, 플래시 변환 계층 구조.And the checkpoint information of the first processing module further includes a block write list of the first processing module, wherein the first processing module detects the error page using the block write list. 제2항에 있어서,The method of claim 2, 상기 제1 처리 모듈의 체크포인트 정보는 상기 제1 처리 모듈의 블록 쓰기 리스트 및 상기 제1 처리 모듈의 쓰기 포인터를 더 포함하고, 상기 제1 처리 모듈은 상기 제1 처리 모듈의 쓰기 포인터가 지시하는 페이지부터 상기 제1 처리 모듈의 블록 쓰기 리스트를 따라 페이지의 오류 여부를 검사함으로써 상기 오류 페이지를 검출하는, 플래시 변환 계층 구조.The checkpoint information of the first processing module further includes a block write list of the first processing module and a write pointer of the first processing module, wherein the first processing module is indicated by a write pointer of the first processing module. And detecting the error page from the page along the block write list of the first processing module by checking whether the page is in error. 제2항에 있어서,The method of claim 2, 상기 제1 처리 모듈은 상기 오류 블록과 상기 제1 처리 모듈의 무해석 블록의 논리적 스왑으로 인하여 갱신된 체크포인트 정보를 상기 제3 처리 모듈로 전송하는, 플래시 변환 계층 구조.And the first processing module transmits updated checkpoint information to the third processing module due to logical swapping of the error block and the uninterpreted block of the first processing module. 제1항에 있어서,The method of claim 1, 상기 제1 처리 모듈의 무해석 블록을 이용하여 오류를 복구한 뒤,After recovering the error using the non-interpreted block of the first processing module, 상기 제1 처리 모듈은 상기 데이터가 저장된 페이지로부터 상기 데이터의 매핑 정보를 획득하고, 상기 데이터의 매핑 정보를 상기 제2 처리 모듈로 전송하는, 플래시 변환 계층 구조.And the first processing module obtains the mapping information of the data from the page in which the data is stored, and transmits the mapping information of the data to the second processing module. 제6항에 있어서,The method of claim 6, 상기 제1 처리 모듈의 체크포인트 정보는 상기 제1 처리 모듈의 블록 쓰기 리스트, 상기 제1 처리 모듈의 쓰기 포인터, 및 상기 제1 처리 모듈의 재현 포인터를 더 포함하고,The checkpoint information of the first processing module further includes a block write list of the first processing module, a write pointer of the first processing module, and a reproduction pointer of the first processing module, 상기 제1 처리 모듈은 상기 제1 처리 모듈의 블록 쓰기 리스트를 따라 상기 제1 처리 모듈의 재현 포인터가 지시하는 페이지부터 구조적 복구 후 정상적으로 써진 마지막 페이지까지 매핑 정보를 획득하여 상기 제2 처리 모듈로 전송하는, 플래시 변환 계층 구조.The first processing module acquires the mapping information from the page indicated by the reproduction pointer of the first processing module to the last page normally written after structural recovery according to the block write list of the first processing module and transmits the mapping information to the second processing module. Flash conversion hierarchy. 제1항에 있어서,The method of claim 1, 상기 제1 처리 모듈은 쓰기 명령을 수신하는 경우 상기 쓰기 명령에 대응하는 데이터를 캐시에 저장하고, 읽기 명령을 수신하는 경우 상기 읽기 명령에 대응하는 데이터가 상기 캐시에 존재하는지 여부를 판단하는, 플래시 변환 계층 구조.The first processing module stores data corresponding to the write command in a cache when receiving a write command, and determines whether data corresponding to the read command exists in the cache when receiving a read command. Transform hierarchy. 제1항에 있어서,The method of claim 1, 상기 제1 처리 모듈은 상기 데이터 및 상기 데이터의 매핑 정보를 플래시 메모리의 동일한 페이지에 저장하는, 플래시 변환 계층 구조.And the first processing module stores the data and mapping information of the data in the same page of a flash memory. 제1항에 있어서,The method of claim 1, 상기 제1 처리 모듈은 상기 데이터를 플래시 메모리에 저장한 뒤, 상기 데이터의 매핑 정보를 상기 제2 처리 모듈로 전송하는, 플래시 변환 계층 구조.And the first processing module stores the data in a flash memory and transmits mapping information of the data to the second processing module. 제1항에 있어서,The method of claim 1, 상기 제1 처리 모듈은 상기 데이터를 페이지 단위로 플래시 메모리에 저장하고, 페이지 단위의 데이터가 저장되면 블록 쓰기 리스트를 따라 쓰기 포인터를 전진시키는, 플래시 변환 계층 구조.And the first processing module stores the data in a flash memory in units of pages and advances a write pointer along a block write list when data in units of pages is stored. 제11항에 있어서,The method of claim 11, 상기 제1 처리 모듈은 상기 쓰기 포인터가 블록 경계를 지나는 경우 상기 제2 처리 모듈로 영속화 요청 신호를 전송하고, 상기 제2 처리 모듈은 상기 영속화 요청에 반응하여 상기 영속화 요청 신호에 대응하는 블록의 매핑 정보를 플래시 메모리에 저장하며, 상기 제1 처리 모듈은 상기 제2 처리 모듈로부터 영속화 완료 신호를 수신하면 상기 블록 쓰기 리스트를 따라 재현 포인터를 전진시키는, 플래시 변환 계층 구조.The first processing module transmits a persistence request signal to the second processing module when the write pointer crosses a block boundary, and the second processing module maps a block corresponding to the persistence request signal in response to the persistence request. Storing information in a flash memory, wherein the first processing module advances a reproduction pointer along the block write list upon receiving a persistence complete signal from the second processing module. 제1항에 있어서,The method of claim 1, 오류 복구를 위하여,To recover from the error, 상기 제2 처리 모듈은 오류 페이지를 검출하고, 상기 오류 페이지를 포함하는 오류 블록 내 유효한 페이지들을 상기 제2 처리 모듈의 무해석 블록에 복사하며, 복사가 완료되면 상기 오류 블록과 상기 제2 처리 모듈의 무해석 블록을 논리적으로 스왑하는, 플래시 변환 계층 구조.The second processing module detects an error page, copies valid pages in the error block including the error page to an uninterpreted block of the second processing module, and when the copy is completed, the error block and the second processing module. Flash translation hierarchy for logically swapping uninterpreted blocks. 제13항에 있어서,The method of claim 13, 상기 제2 처리 모듈의 체크포인트 정보는 상기 제2 처리 모듈의 블록 쓰기 리스트를 더 포함하고, 상기 제2 처리 모듈은 상기 블록 쓰기 리스트를 이용하여 상기 오류 페이지를 검출하는, 플래시 변환 계층 구조.And the checkpoint information of the second processing module further includes a block write list of the second processing module, wherein the second processing module detects the error page using the block write list. 제13항에 있어서,The method of claim 13, 상기 제2 처리 모듈의 체크포인트 정보는 상기 제2 처리 모듈의 블록 쓰기 리스트 및 상기 제2 처리 모듈의 쓰기 포인터를 더 포함하고, 상기 제2 처리 모듈은 상기 제2 처리 모듈의 쓰기 포인터가 지시하는 페이지부터 상기 제2 처리 모듈의 블록 쓰기 리스트를 따라 페이지의 오류 여부를 검사함으로써 상기 오류 페이지를 검출하는, 플래시 변환 계층 구조.The checkpoint information of the second processing module further includes a block write list of the second processing module and a write pointer of the second processing module, wherein the second processing module is indicated by a write pointer of the second processing module. And detecting the error page from the page along the block write list of the second processing module by checking whether the page is in error. 제13항에 있어서,The method of claim 13, 상기 제2 처리 모듈은 상기 오류 블록과 상기 제2 처리 모듈의 무해석 블록의 논리적 스왑으로 인하여 갱신된 체크포인트 정보를 상기 제3 처리 모듈로 전송하는, 플래시 변환 계층 구조.And the second processing module transmits updated checkpoint information to the third processing module due to logical swapping of the error block and the uninterpreted block of the second processing module. 제1항에 있어서,The method of claim 1, 상기 매핑 정보의 상위 매핑 정보를 처리하는 상위 처리 모듈Upper processing module for processing higher mapping information of the mapping information 를 더 포함하고,More, 상기 제2 처리 모듈의 무해석 블록을 이용하여 오류를 복구한 뒤,After recovering the error using the non-interpreted block of the second processing module, 상기 제2 처리 모듈은 상기 매핑 정보가 저장된 페이지로부터 상기 매핑 정보의 상위 매핑 정보를 획득하고, 상기 매핑 정보의 상위 매핑 정보를 상기 상위 처리 모듈로 전송하는, 플래시 변환 계층 구조.And the second processing module obtains higher mapping information of the mapping information from a page in which the mapping information is stored, and transmits higher mapping information of the mapping information to the higher processing module. 제17항에 있어서,The method of claim 17, 상기 제2 처리 모듈의 체크포인트 정보는 상기 제2 처리 모듈의 블록 쓰기 리스트, 상기 제2 처리 모듈의 쓰기 포인터, 및 상기 제2 처리 모듈의 재현 포인터를 더 포함하고,The checkpoint information of the second processing module further includes a block write list of the second processing module, a write pointer of the second processing module, and a reproduction pointer of the second processing module, 상기 제2 처리 모듈은 상기 제2 처리 모듈의 블록 쓰기 리스트를 따라 상기 제2 처리 모듈의 재현 포인터가 지시하는 페이지부터 구조적 복구 후 정상적으로 써진 마지막 페이지까지 상위 매핑 정보를 획득하여 상기 상위 처리 모듈로 전송하는, 플래시 변환 계층 구조.The second processing module acquires upper mapping information from the page indicated by the reproduction pointer of the second processing module to the last page normally written after structural recovery according to the block write list of the second processing module and transmits the upper mapping information to the higher processing module. Flash conversion hierarchy. 제1항에 있어서,The method of claim 1, 상기 제2 처리 모듈은 매핑 명령을 수신하는 경우 상기 매핑 명령에 대응하는 매핑 정보를 캐시에 저장하고, 읽기 명령을 수신하는 경우 상기 읽기 명령에 대응하는 매핑 정보가 상기 캐시에 존재하는지 여부를 판단하는, 플래시 변환 계층 구조.The second processing module stores mapping information corresponding to the mapping command in a cache when receiving a mapping command, and determines whether mapping information corresponding to the read command exists in the cache when receiving a read command. Flash conversion hierarchy. 제1항에 있어서,The method of claim 1, 상기 제2 처리 모듈은 상기 매핑 정보 및 상기 매핑 정보의 상위 매핑 정보를 플래시 메모리의 동일한 페이지에 저장하는, 플래시 변환 계층 구조.And the second processing module stores the mapping information and higher mapping information of the mapping information in the same page of a flash memory. 제1항에 있어서,The method of claim 1, 상기 매핑 정보의 상위 매핑 정보를 처리하는 상위 처리 모듈Upper processing module for processing higher mapping information of the mapping information 를 더 포함하고,More, 상기 제2 처리 모듈은 상기 매핑 정보를 플래시 메모리에 저장한 뒤, 상기 매핑 정보의 상위 매핑 정보를 상기 상위 처리 모듈로 전송하는, 플래시 변환 계층 구조.And the second processing module stores the mapping information in a flash memory and transmits higher mapping information of the mapping information to the higher processing module. 제1항에 있어서,The method of claim 1, 상기 제2 처리 모듈은 상기 매핑 정보를 페이지 단위로 플래시 메모리에 저장하고, 페이지 단위의 매핑 정보가 저장되면 블록 쓰기 리스트를 따라 쓰기 포인터를 전진시키는, 플래시 변환 계층 구조.And the second processing module stores the mapping information in a flash memory on a page basis, and advances a write pointer along a block write list when the mapping information on a page basis is stored. 제22항에 있어서,The method of claim 22, 상기 매핑 정보의 상위 매핑 정보를 처리하는 상위 처리 모듈Upper processing module for processing higher mapping information of the mapping information 를 더 포함하고,More, 상기 제2 처리 모듈은 상기 쓰기 포인터가 블록 경계를 지나는 경우 상기 상위 처리 모듈로 영속화 요청 신호를 전송하고, 상기 상위 처리 모듈은 상기 영속화 요청에 반응하여 상기 영속화 요청 신호에 대응하는 블록의 상위 매핑 정보를 플래시 메모리에 저장하며, 상기 제2 처리 모듈은 상기 상위 처리 모듈로부터 영속화 완료 신호를 수신하면 상기 블록 쓰기 리스트를 따라 재현 포인터를 전진시키는, 플래시 변환 계층 구조.The second processing module transmits a persistence request signal to the higher processing module when the write pointer crosses a block boundary, and the upper processing module transmits higher mapping information of a block corresponding to the persistence request signal in response to the persistence request. Store the data in a flash memory, and wherein the second processing module advances a reproduction pointer along the block write list when receiving the persistence completion signal from the upper processing module. 제1항에 있어서,The method of claim 1, 상기 오류는 비동기적으로 발생되는 전원 오류를 포함하는, 플래시 변환 계층 구조.The error includes a power failure occurring asynchronously. 제1항에 있어서,The method of claim 1, 상기 플래시 변환 계층에 포함되는 처리 모듈은The processing module included in the flash translation layer 호스트, 다른 처리 모듈, 및 플래시 메모리 중 적어도 하나와 연결되는 인터페이스부;An interface unit connected to at least one of a host, another processing module, and a flash memory; 휘발성 메모리를 포함하는 캐시부; 및A cache unit including volatile memory; And 상기 인터페이스부와 상기 캐시부를 이용하여 처리 모듈의 유형에 따른 데이터 또는 정보를 처리하는 처리부A processing unit for processing data or information according to the type of processing module using the interface unit and the cache unit 를 포함하는, 플래시 변환 계층 구조.Including, flash conversion hierarchy. 제1항에 있어서,The method of claim 1, 블록 상태 정보를 처리하는 제4 처리 모듈A fourth processing module for processing block state information 를 더 포함하고,More, 상기 제3 처리 모듈은 상기 제4 처리 모듈의 무해석 블록에 대한 정보를 더 포함하며, 상기 제4 처리 모듈은 상기 제4 처리 모듈의 무해석 블록을 이용하여 오류를 복구하는, 플래시 변환 계층 구조.The third processing module further includes information on the uninterpreted block of the fourth processing module, wherein the fourth processing module recovers an error using the non-interpreted block of the fourth processing module. . 제1항에 있어서,The method of claim 1, 다른 처리 모듈을 위한 비휘발성 버퍼로 동작하는 제5 처리 모듈Fifth processing module acting as a nonvolatile buffer for another processing module 를 더 포함하고,More, 상기 제3 처리 모듈은 상기 제5 처리 모듈의 무해석 블록에 대한 정보를 더 포함하며, 상기 제5 처리 모듈은 상기 제5 처리 모듈의 무해석 블록을 이용하여 오류를 복구하는, 플래시 변환 계층 구조.The third processing module further includes information on the uninterpreted block of the fifth processing module, wherein the fifth processing module recovers an error using the non-interpreted block of the fifth processing module. . 데이터를 처리하는 D-로그;A D-log for processing data; 상기 데이터의 매핑 정보를 계층적으로 처리하는 복수의 M-로그들A plurality of M-logs hierarchically processing the mapping information of the data 을 포함하는, 플래시 변환 계층 구조.Including, flash conversion hierarchy. 제28항에 있어서,The method of claim 28, 상기 복수의 M-로그들 각각은Each of the plurality of M-logs is 하위 로그로부터 수신되는 정보를 자신에게 할당된 플래시 메모리 자원에 저장하고,Save the information received from the sub-log to the flash memory resource allocated to it, 상기 하위 로그로부터 수신되는 정보의 크기가 미리 정해진 크기보다 큰 경우 상기 플래시 메모리 자원의 매핑 정보를 상위 로그로 전송하는, 플래시 변환 계층 구조.And transmitting mapping information of the flash memory resource to an upper log when a size of information received from the lower log is larger than a predetermined size. 제28항에 있어서,The method of claim 28, 상기 복수의 M-로그들 중 하위 로그로부터 수신되는 정보의 크기가 미리 정해진 크기 이하인 로그가 최상위 M-로그로 결정되는, 플래시 변환 계층 구조.And a log having a size less than or equal to a predetermined size of information received from a lower log among the plurality of M-logs is determined as the highest M-log. 제30항에 있어서,The method of claim 30, 상기 최상위 M-로그는The top M-log is 상기 하위 로그로부터 수신되는 정보를 자신에게 할당된 플래시 메모리 자원에 저장하고,Store the information received from the lower log in a flash memory resource allocated to it; 상기 플래시 메모리 자원의 매핑 정보를 체크포인트 정보를 처리하는 C-로그로 전송하는, 플래시 변환 계층 구조.And transmitting mapping information of the flash memory resource to a C-log that processes checkpoint information. 제28항에 있어서,The method of claim 28, 상기 복수의 M-로그들 각각의 특성은 개별 M-로그 별로 설정되고,The characteristics of each of the plurality of M-logs are set for individual M-logs, 상기 복수의 M-로그들 각각의 특성은 상기 복수의 M-로그들 각각의 매핑 단위 및 상기 복수의 M-로그들 각각의 캐시 관리 정책 중 적어도 하나를 포함하는, 플래시 변환 계층 구조.The characteristic of each of the plurality of M-logs comprises at least one of a mapping unit of each of the plurality of M-logs and a cache management policy of each of the plurality of M-logs. 제28항에 있어서,The method of claim 28, 블록 상태 정보를 처리하는 L-로그; 및An L-log for processing block state information; And 상기 블록 상태 정보의 매핑 정보를 계층적으로 처리하는 복수의 LM-로그들A plurality of LM-logs hierarchically processing mapping information of the block state information; 을 더 포함하는, 플래시 변환 계층 구조.The flash conversion hierarchy further comprising. 제33항에 있어서,The method of claim 33, wherein 상기 복수의 LM-로그들 각각은Each of the plurality of LM-logs is 하위 로그로부터 수신되는 정보를 자신에게 할당된 플래시 메모리 자원에 저장하고,Save the information received from the sub-log to the flash memory resource allocated to it, 상기 하위 로그로부터 수신되는 정보의 크기가 미리 정해진 크기보다 큰 경우 상기 플래시 메모리 자원의 매핑 정보를 상위 로그로 전송하는, 플래시 변환 계층 구조.And transmitting mapping information of the flash memory resource to an upper log when a size of information received from the lower log is larger than a predetermined size. 제33항에 있어서,The method of claim 33, wherein 상기 복수의 LM-로그들 중 하위 로그로부터 수신되는 정보의 크기가 미리 정해진 크기 이하인 로그가 최상위 LM-로그로 결정되는, 플래시 변환 계층 구조.And a log having a size less than or equal to a predetermined size of information received from a lower log among the plurality of LM-logs is determined as the highest LM-log. 제35항에 있어서,36. The method of claim 35 wherein 상기 최상위 LM-로그는The highest LM-log is 상기 하위 로그로부터 수신되는 정보를 자신에게 할당된 플래시 메모리 자원에 저장하고,Store the information received from the lower log in a flash memory resource allocated to it; 상기 플래시 메모리 자원의 매핑 정보를 체크포인트 정보를 처리하는 C-로그로 전송하는, 플래시 변환 계층 구조.And transmitting mapping information of the flash memory resource to a C-log that processes checkpoint information. 제33항에 있어서,The method of claim 33, wherein 상기 복수의 LM-로그들 각각의 특성은 개별 LM-로그 별로 설정되고,The characteristics of each of the plurality of LM-logs are set for each individual LM-log, 상기 복수의 LM-로그들 각각의 특성은 상기 복수의 LM-로그들 각각의 매핑 단위 및 상기 복수의 LM-로그들 각각의 캐시 관리 정책 중 적어도 하나를 포함하는, 플래시 변환 계층 구조.The characteristic of each of the plurality of LM-logs comprises at least one of a mapping unit of each of the plurality of LM-logs and a cache management policy of each of the plurality of LM-logs. 플래시 변환 계층을 구성하기 위한 복수의 빌딩 블록들을 제공하는 단계Providing a plurality of building blocks for constructing a flash translation layer 를 포함하고,Including, 상기 복수의 빌딩 블록들은The plurality of building blocks 데이터를 처리하는 제1 처리 블록;A first processing block for processing data; 상기 데이터의 매핑 정보를 계층적으로 처리하는 적어도 하나의 제2 처리 블록; 및At least one second processing block hierarchically processing the mapping information of the data; And 상기 제1 처리 블록 및 상기 적어도 하나의 제2 처리 블록을 위한 체크포인트 정보를 처리하는 제3 처리 블록A third processing block for processing checkpoint information for the first processing block and the at least one second processing block; 을 포함하며, 상기 복수의 빌딩 블록들은 데이터 일관성 및 데이터 복구 가능성을 만족시키는 동기화 인터페이스를 제공하는, 플래시 변환 계층을 설계하는 방법.Wherein the plurality of building blocks provide a synchronization interface that satisfies data consistency and data recoverability. 제38항에 있어서,The method of claim 38, 상기 플래시 변환 계층의 설계와 관련된 설정을 수신하는 단계; 및Receiving a setting related to the design of the flash translation layer; And 상기 복수의 빌딩 블록들 및 상기 설정에 기초하여 상기 플래시 변환 계층을 생성하는 단계Generating the flash translation layer based on the plurality of building blocks and the configuration 를 더 포함하는, 플래시 변환 계층을 설계하는 방법.Further comprising a method of designing a flash translation layer. 제39항에 있어서,The method of claim 39, 상기 설정은The above settings 상기 플래시 변환 계층을 구현하는 쓰레드(thread)의 수와 관련된 설정;A setting associated with the number of threads implementing the flash translation layer; 상기 플래시 변환 계층을 구동하는 코어(core)의 수와 관련된 설정;A setting related to the number of cores driving the flash translation layer; 상기 코어 당 처리되는 쓰레드의 수와 관련된 설정; 및A setting related to the number of threads processed per core; And 복수의 코어들과 복수의 쓰레드들 사이의 매핑과 관련된 설정Configuration related to mapping between multiple cores and multiple threads 중 적어도 하나를 포함하는, 플래시 변환 계층을 설계하는 방법.And at least one of: a flash translation layer. 제39항에 있어서,The method of claim 39, 상기 플래시 변환 계층의 설계와 관련된 제2 설정을 수신하는 단계; 및Receiving a second setting related to the design of the flash translation layer; And 상기 복수의 빌딩 블록들 및 상기 제2 설정에 기초하여 상기 플래시 변환 계층을 적응적으로 재생성하는 단계Adaptively regenerating the flash translation layer based on the plurality of building blocks and the second configuration 를 더 포함하는, 플래시 변환 계층을 설계하는 방법.Further comprising a method of designing a flash translation layer. 제38항 내지 제41항 중 어느 하나의 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.A computer-readable recording medium having recorded thereon a program for executing the method of any one of claims 38-41.
PCT/KR2014/001028 2013-02-07 2014-02-06 Flash translation layer design framework for provable and accurate error recovery Ceased WO2014123372A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20130013659 2013-02-07
KR10-2013-0013659 2013-02-07
KR10-2014-0013590 2014-02-06
KR1020140013590A KR101526110B1 (en) 2013-02-07 2014-02-06 Flash transition layor design framework for provably correct crash recovery

Publications (1)

Publication Number Publication Date
WO2014123372A1 true WO2014123372A1 (en) 2014-08-14

Family

ID=51299917

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2014/001028 Ceased WO2014123372A1 (en) 2013-02-07 2014-02-06 Flash translation layer design framework for provable and accurate error recovery

Country Status (1)

Country Link
WO (1) WO2014123372A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109643275A (en) * 2016-08-06 2019-04-16 瓦雷科技股份有限公司 The abrasion equilibrium device and method of storage level memory
US11100011B2 (en) 2018-12-13 2021-08-24 Sony Semiconductor Israel Ltd. Flash translation layer with hierarchical security
EP3964965A1 (en) 2020-09-07 2022-03-09 Mellanox Technologies, Ltd. Secure flash controller
DE102024111563A1 (en) 2023-05-01 2024-11-07 Mellanox Technologies Ltd. SECURE FLASH CONTROLLER
US12260007B2 (en) 2020-09-07 2025-03-25 Mellanox Technologies, Ltd Secure flash controller

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060179212A1 (en) * 2005-02-07 2006-08-10 Kim Jin-Hyuk Flash memory control devices that support multiple memory mapping schemes and methods of operating same
US20080098195A1 (en) * 2006-10-19 2008-04-24 Cheon Won-Moon Memory system including flash memory and mapping table management method
US20090089610A1 (en) * 2007-09-27 2009-04-02 Microsoft Corporation Rapid crash recovery for flash storage
WO2012008731A2 (en) * 2010-07-12 2012-01-19 (주)이더블유비엠코리아 Device and method for managing flash memory using block unit mapping

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060179212A1 (en) * 2005-02-07 2006-08-10 Kim Jin-Hyuk Flash memory control devices that support multiple memory mapping schemes and methods of operating same
US20080098195A1 (en) * 2006-10-19 2008-04-24 Cheon Won-Moon Memory system including flash memory and mapping table management method
US20090089610A1 (en) * 2007-09-27 2009-04-02 Microsoft Corporation Rapid crash recovery for flash storage
WO2012008731A2 (en) * 2010-07-12 2012-01-19 (주)이더블유비엠코리아 Device and method for managing flash memory using block unit mapping

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YOON, JI HYEOK: "X-BMS: A Provably-Correct Bad Block Management Scheme for Flash Memory Based Storage Systems", SEOUL NATIONAL UNIVERSITY DOCTORAL THESIS, COMPUTER ENGINEERING, February 2011 (2011-02-01) *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109643275A (en) * 2016-08-06 2019-04-16 瓦雷科技股份有限公司 The abrasion equilibrium device and method of storage level memory
CN109643275B (en) * 2016-08-06 2023-06-20 瓦雷科技股份有限公司 Wear leveling apparatus and method for storage class memory
US11100011B2 (en) 2018-12-13 2021-08-24 Sony Semiconductor Israel Ltd. Flash translation layer with hierarchical security
EP3964965A1 (en) 2020-09-07 2022-03-09 Mellanox Technologies, Ltd. Secure flash controller
US11681635B2 (en) 2020-09-07 2023-06-20 Mellanox Technologies, Ltd. Secure flash controller
US12260007B2 (en) 2020-09-07 2025-03-25 Mellanox Technologies, Ltd Secure flash controller
DE102024111563A1 (en) 2023-05-01 2024-11-07 Mellanox Technologies Ltd. SECURE FLASH CONTROLLER

Similar Documents

Publication Publication Date Title
US10649853B2 (en) Tracking modifications to a virtual machine image that occur during backup of the virtual machine
US9032157B2 (en) Virtual machine failover
US7899800B2 (en) Systems and methods for providing nonlinear journaling
US7822932B2 (en) Systems and methods for providing nonlinear journaling
US7676691B2 (en) Systems and methods for providing nonlinear journaling
US7752402B2 (en) Systems and methods for allowing incremental journaling
US9047221B2 (en) Virtual machines failover
US9519502B2 (en) Virtual machine backup
US10339009B2 (en) System for flagging data modification during a virtual machine backup
US11200122B2 (en) Barrierless snapshots
WO2014123372A1 (en) Flash translation layer design framework for provable and accurate error recovery
KR20250008521A (en) Save checkpoint
CN111240840A (en) Consistent update method of non-volatile memory data based on one-to-many page mapping
KR101526110B1 (en) Flash transition layor design framework for provably correct crash recovery
US20210232421A1 (en) Implementing erasure coding with persistent memory

Legal Events

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

Ref document number: 14748958

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14748958

Country of ref document: EP

Kind code of ref document: A1