WO2013119074A1 - 신뢰성 있는 ssd를 위한 효율적인 raid 기법 - Google Patents

신뢰성 있는 ssd를 위한 효율적인 raid 기법 Download PDF

Info

Publication number
WO2013119074A1
WO2013119074A1 PCT/KR2013/001029 KR2013001029W WO2013119074A1 WO 2013119074 A1 WO2013119074 A1 WO 2013119074A1 KR 2013001029 W KR2013001029 W KR 2013001029W WO 2013119074 A1 WO2013119074 A1 WO 2013119074A1
Authority
WO
WIPO (PCT)
Prior art keywords
page
data
write request
processed
threshold time
Prior art date
Application number
PCT/KR2013/001029
Other languages
English (en)
French (fr)
Inventor
노삼혁
김재호
이종민
최종무
이동희
Original Assignee
Noh Sam Hyuk
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
Priority claimed from KR1020130013954A external-priority patent/KR101445025B1/ko
Application filed by Noh Sam Hyuk filed Critical Noh Sam Hyuk
Priority to US14/377,159 priority Critical patent/US9496051B2/en
Priority to CN201380006059.5A priority patent/CN104471546B/zh
Publication of WO2013119074A1 publication Critical patent/WO2013119074A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Definitions

  • the present invention relates to a method and device for improving the reliability of an SSD device, and more particularly, to a method and device for improving reliability by applying a RAID technique inside the SSD device.
  • Flash memory-based SSDs are widely used storage devices, from notebooks and personal computers to servers and cloud systems because they include a variety of advantages, including low power consumption, high speed, and light weight.
  • the current SSD is pointed out as the biggest problem is the lack of safety, which is due to the fact that the flash memory, a major component of the SSD generates frequent errors and has a limited number of erase times.
  • the SSD writes an error detection and correction code in an OOB (Out Of Band) area of a flash memory and responds to an unexpected error using the error detection and correction code.
  • OOB Out Of Band
  • the error detection and correction codes can detect and correct only a few bit errors occurring in one page I / O, and can not detect or even detect any block or chip level errors. Doing.
  • a control device for managing a plurality of memory channels driven through multi-channel interleaving is provided.
  • control device may include a stripe configuration unit constituting a stripe and a parity generation unit for generating parity data for the configured stripe according to the physical page numbers of pages included in the plurality of memory channels. .
  • control device may perform the multi-channel interleaving to sequentially write clean pages of the plurality of memory channels independently to logical block addresses.
  • the control device when cleaning the data written to the plurality of pages, the control device generates a cleaning block including the plurality of stripes, and cleans the data from the cleaning blocks having the least valid pages among the cleaning blocks.
  • the apparatus may further include a cleaning unit configured to select the target block of the data block to perform the data cleaning.
  • the cleaning unit may copy the target block of data cleaning to at least some blocks of a plurality of chips associated with the multi-channel interleaving, and perform the data cleaning on the target block of data cleaning.
  • control device may further include a determination unit that determines whether the first threshold time has elapsed since the last processed first page write request was processed.
  • the parity generator may generate partial parity data of a first physical page number associated with the first page write request when the first threshold time elapses after the first page write request is processed. can do.
  • the parity generation unit of the control device when the first threshold time has elapsed after the first page write request is processed, and the clean page ratio corresponding to the first page number is greater than or equal to a threshold value, Parity data can be generated.
  • the parity generation unit when the second threshold time greater than the first threshold time elapses after the first page write request is processed, the parity generation unit has a clean page ratio corresponding to the first page number. Even if less than the partial parity data can be generated.
  • control device may control the multi-channel interleaving to write the partial parity data generated in one of the clean pages corresponding to the first physical page number.
  • control apparatus allocates at least some blocks of the plurality of chips associated with the multi-channel interleaving to a partial parity storage region, and writes the partial parity data to the partial parity storage region. Can be controlled.
  • the determination unit and the first page to determine whether a first threshold time has elapsed since the last requested first page write request was processed. If the first threshold time has elapsed after the write request has been processed, a control device including a parity generating unit for generating partial parity data for a first physical page number associated with the first page write request is provided.
  • the parity generation unit of the control device when the first threshold time has elapsed after the first page write request is processed, and the clean page ratio corresponding to the first page number is greater than or equal to a threshold value, Parity data can be generated.
  • the parity generation unit of the control device if a second threshold time greater than the first threshold time elapses after the first page write request is processed, a clean page corresponding to the first page number
  • the partial parity data may be generated even if a ratio is less than the threshold.
  • a control method for managing a plurality of memory channels driven through multi-channel interleaving is provided.
  • control method may include forming a stripe according to physical page numbers of pages included in the plurality of memory channels, and generating parity data for the configured stripe.
  • control method may perform the multi-channel interleaving to sequentially write clean pages of the plurality of memory channels independently to logical block addresses.
  • the control method may further include determining whether a first threshold time has elapsed since the last processed first page write request was processed, and the parity data of the control method.
  • the generating may include generating partial parity data of a first physical page number associated with the first page write request when the first threshold time elapses after the first page write request is processed.
  • the generating of the parity data of the control method may include generating the parity data after the first page write request has been processed and having a clean page ratio corresponding to the first page number being greater than or equal to a threshold.
  • the clean page ratio corresponding to the first page number is determined.
  • the partial parity data may be generated even if it is below a threshold.
  • control method may control the multi-channel interleaving to write the partial parity data generated in one of the clean pages corresponding to the first physical page number.
  • control method allocates at least some blocks of a plurality of chips associated with the multi-channel interleaving to a partial parity storage region, and writes the partial parity data to the partial parity storage region. Can be controlled.
  • the generating of the parity data of the control method may include generating the parity data after the first page write request has been processed and having a clean page ratio corresponding to the first page number being greater than or equal to a threshold.
  • the clean page ratio corresponding to the first page number is determined.
  • the partial parity data may be generated even if it is below a threshold.
  • FIG. 1 is a block diagram of a storage device according to an exemplary embodiment.
  • FIG. 2 is a block diagram of the control device according to an embodiment.
  • FIG. 3 is a diagram illustrating a case where data update occurs in the control apparatus according to an embodiment.
  • FIG. 4 is a diagram illustrating a partial stripe parity pool in which partial parity may be generated in the control apparatus, according to an exemplary embodiment.
  • FIG. 5 is a conceptual diagram illustrating a data cleaning operation performed by the control apparatus according to an embodiment.
  • FIG. 6 is a conceptual diagram illustrating a process of performing data cleaning in the control apparatus according to an embodiment.
  • FIG. 7 is a flowchart illustrating a control method of managing a plurality of memory channels driven through multi-channel interleaving in the control apparatus, according to an exemplary embodiment.
  • FIG. 8 is a flowchart of the control method according to a threshold time according to an embodiment.
  • 9 is a flowchart of the control method that is different from the threshold time and the clean page ratio of the stripe according to one embodiment.
  • FIG. 10 is a flowchart of performing the data cleaning in the control apparatus according to an embodiment.
  • SSD Solid-state drive
  • Most SSDs have a RAID-0 structure that interleaves data so that each flash memory chip operates in parallel for improved performance, and each input / output channel can transmit data simultaneously.
  • RAID has many types of RAID, such as RAID-0, 1, 2, 3, 4, 5, 6, but RAID-5 is most used.
  • the write request received by the SSD device is in the form of a Logical Block Number (LBN).
  • LBN Logical Block Number
  • the LBN is continuous and has a large size, a small write problem of the RAID does not occur, but most write requests are small.
  • the present invention provides a data control apparatus and method capable of solving the above-described problems even if the LBN is not continuous and small in size.
  • the storage device eg, the SSD
  • the storage device may include a control device 100, a host interface 103, and flash memory chips 110 and 120.
  • the host interface of the storage device may provide an interface between the control device controlling the storage device and an external host computer 102.
  • the host interface may be, for example, a communication standard such as Parallel ATA (PATA), Serial ATA (SATA), or Universal Serial Bus (USB).
  • PATA Parallel ATA
  • SATA Serial ATA
  • USB Universal Serial Bus
  • the storage device receives a data access command (eg, read data, write data, etc.) from the host 102 via the host interface.
  • control device of the storage device serves to control communication with the host and respective portions associated with the flash memory.
  • the storage device may include a plurality of flash memory chips 110 and 120 and an input / output channel.
  • Most SSDs may have a structure for interleaving data such that the plurality of flash memory chips operate in parallel to improve performance, and each input / output channel may transmit data at the same time. Details relating to the plurality of flash memory chips are described below in more detail.
  • the control device may manage a plurality of memory channels driven through multi-channel interleaving.
  • control device may include a stripe component 210, a parity generator 220, a cleaner 230, and a determiner 240.
  • the stripe forming unit 210 of the control apparatus may form a stripe according to the physical page numbers of pages included in the plurality of memory channels, and the parity generator 220 may configure the stripe. Parity data for may be generated.
  • control device may perform the multi-channel interleaving to sequentially write clean pages of the plurality of memory channels independently to logical block addresses.
  • the cleaning unit 230 of the control apparatus in the case of data cleaning, the cleaning unit 230 of the control apparatus generates a cleaning block including the plurality of stripes, and cleans the data using the cleaning block having the least valid page among the cleaning blocks. Can be selected as the target block.
  • the cleaning unit 230 may perform the data cleaning on the target block of the selected data cleaning.
  • the cleaning unit 230 may copy the target block of data cleaning to at least some blocks of a plurality of chips associated with the multi-channel interleaving, and perform the data cleaning on the target block of data cleaning. .
  • the determination unit 240 of the control device may determine whether the first threshold time has elapsed since the last processed first page write request was processed.
  • the parity generation unit 220 of the control device may perform partial parity with respect to a first physical page number associated with the first page write request when the first threshold time elapses after the first page write request is processed. Can be generated.
  • the parity generator 220 may determine that a ratio of a clean page corresponding to the first page number is greater than or equal to a threshold after the first threshold time elapses after the first page write request is processed. Partial parity can be generated.
  • the threshold of the ratio of the first threshold time and the clean page may be predefined by a user who uses the control device.
  • the parity generation unit 220 may perform the first page write request after the first page write request is processed, even if a ratio of a clean page corresponding to the first page number is less than the threshold.
  • the partial parity may be generated when a large second threshold time elapses. Since the control device determines that the risk of loss or error of page data is greater than the probability of generating full parity for the stripe, even when the second threshold time elapses, even if the clean page remains a little (less than the threshold value).
  • the partial write may be performed unconditionally after the last write.
  • the parity generator 220 may control the multi-channel interleaving to write the partial parity generated in the clean page to any one of the clean pages corresponding to the first physical page number. have.
  • control device may allocate at least some blocks of a plurality of chips associated with the multi-channel interleaving to a partial parity storage area, and control to write the partial parity data to the partial parity storage area.
  • 3 is a diagram of a case in which the data processing device data update occurs according to one embodiment.
  • control device 100 may control communication with the host and control each part associated with the flash memory.
  • a flash chip controller FCC may control each of the flash memory chips under the control of the control device.
  • FIG. 3 illustrates an interior of a storage device (such as an SSD) that is comprised of five flash memory chips (chip0, chip1, chip2, chip3 and chip4).
  • a physical page number represents a physical page number
  • a physical block number represents a physical block number.
  • the PBN may include the same PPN page in each of the flash memory chips.
  • the stripe is composed of pages of the same PPN of each of the flash memory chips.
  • the stripe may be referred to as a dynamic stripe (DS).
  • the conventional stripe is managed by a stripe map table because the stripe constitutes the stripe based on a logical address, but the stripe (eg, dynamic stripe DS) configured by the control device is physical.
  • the stripe map table is not needed because the stripe is generated based on an address.
  • At least one of the at least one of the at least one Full parity or partial parity may be generated in the stripe.
  • FIG. 3 illustrates an embodiment in which a data update request for data D1 and D2 occurs. Most of the SSD is composed of 10 to 16 or more flash memory chips, but for convenience of description, FIG. 3 illustrates an embodiment of five flash memory chips chip0, chip1, chip2, chip3, and chip4.
  • FIG. 3 user data of D0 to D7 is written to the PPN 0 and the PPN 1 of the flash memory chip. 3 also shows an initial state including parity P0 for the stripe 310 composed of identical pages of PPN 0 and parity P1 for the stripe composed of identical pages of PPN 1. It is shown. As described above, at least one said stripe includes at least one full parity.
  • the controller device may be interleaved and written to the same PPN page of each flash memory chip in the order in which the request occurs for the write request according to the update request.
  • the stripe since the stripe is configured based on a logical address, the updated data had to be written to a blank page (a blank page of an initially written flash memory chip) in the same flash memory chip.
  • a blank page a blank page of an initially written flash memory chip
  • the data update for one user data D1 will be described first.
  • a data update request occurs only for the user data D1 311 in an initial state.
  • the user data of D1 'to be updated is written to the blank page 312 of the same flash memory chip that was initially written, whereas the control device sequentially writes the user data of D1' to be updated to the blank page. Can be controlled to be performed.
  • control apparatus since the control apparatus according to an embodiment may generate a stripe based on a physical address, the updated user data of D1 'is not written to the blank page 312 in the same flash memory chip.
  • control device may control the D1 'to be written on the next page 301 of the user data D7 page by the last write request in the initial state, and the control device may set the user data D1 in the initial state.
  • the written page 311 can be controlled to be an invalid page.
  • the parity generator 220 of the control device may generate the full parity for the stripe when the at least one stripe becomes full due to the write request.
  • the parity generation unit 220 of the control device does not wait until the user data is full in the stripe but is updated immediately (or data written by a write request). You can create partial parity for).
  • the stripe generation unit of the control device is to be updated (to be updated) D1 'to be written to the page 301 based on the physical address
  • the stripe can be configured.
  • the parity generating unit 220 of the control device does not generate the full parity by waiting until the corresponding strip including the updated D1 'is full, and instead of generating the full parity of the page 301 of the updated D1'.
  • the partial parity can be generated immediately on the next page 312.
  • D1 'and D2' to be updated are written to a blank page of the same flash memory chip that was initially written based on a logical address. Therefore, in the prior art, D1 'is written to the PPN 2 page 312 of Chip 1, and D2' is written to the PPN2 page 321 of Chip 2.
  • the stripe forming unit 210 of the control device forms a stripe based on a physical address
  • D1 'and D2' are interleaved and written to the PPN pages of the respective flash memory chips in the order in which the write request occurs. You can do that.
  • the stripe component 210 of the control device may control D1 'to be written to the PPN2 page 301 of chip 0 and D2' to be written to the PPN2 page 312 of chip 1.
  • the page on which the user data D1 and D2 in the initial state is written becomes an invalid page.
  • the parity generation unit 220 of the control apparatus does not wait until the user data is full in the stripe but is updated immediately (or written by a write request). May generate partial parity for the data).
  • the user data of D1 'and D2' which should be updated (updated), respectively, is based on the physical address of the page 301.
  • the stripe including the updated D1 'and D2' does not wait until the stripe is full, and the D1 'is updated on the next page 321 of the page 312 of the last updated D2'.
  • the partial parity for D2 ' may be generated.
  • control device can dynamically form a stripe only for the data on which the write request has occurred, and can generate parity (or full parity) for the stripe, thereby generating parity for the updated data.
  • parity or full parity
  • the number of parity writes can be reduced.
  • the phenomenon in which writing to a specific flash memory chip is concentrated may be eliminated, thereby reducing the problem of shortening the life of the flash memory chip.
  • a data write request for another write request D8 occurs.
  • the D8 data write may be performed on the next blank page of the PPN 2 of the chip 3.
  • a new full parity for the entire stripe corresponding to the last page may be generated.
  • the D8 stored in the write buffer of the SSD since the D8 stored in the write buffer of the SSD is used, a read operation for generating the full parity is not necessary.
  • the parity generated for the write request smaller than the size of the stripe is called the partial parity, thereby ensuring the reliability of the SSD without additional hardware such as NVRAM.
  • the determination unit 240 of the control device may determine whether the partial parity is generated in consideration of the threshold time from the last processed write request.
  • the parity generation unit 220 of the control apparatus requests the update of D1 'and D'2 as shown in FIG. 3 so that D1' and D2 'are written to the PPN2 page of chip 0 and the PPN2 page of chip 1, respectively. If not, it may wait for a first threshold time whether another write request is received without generating the partial parity.
  • the stripe may be configured in the order of the write request, and if the stripe is filled with the another write request, the parity generator 220 may generate the full parity corresponding to the entire stripe immediately without generating the partial parity.
  • the parity generator 220 may request the last write request.
  • the reliability of the storage device (the SSD) can be improved by generating the partial parity immediately on the next page of the page written by the.
  • the determination unit 240 of the control device may determine whether the partial parity is generated in consideration of the ratio of the threshold time and the clean page.
  • the parity generating unit 220 of the control apparatus requests D1 'and D'2 to be updated so that D1' and D2 'are written to the PPN2 page of chip 0 and the PPN2 page of chip 1, respectively. If it does, it may wait for a first threshold time whether another write request is received without generating the partial parity immediately.
  • the stripe may be configured in the order of the write requests.
  • the parity generator 220 may immediately generate the full parity corresponding to the entire stripe without generating the partial parity.
  • the determination unit 240 of the control device It may be determined whether a clean page is sufficiently present in the stripe.
  • the determination unit 240 of the control device still has a spare page in the stripe. Can be determined to exist.
  • the determination unit 240 determines that the ratio of the clean page is less than or equal to a predetermined threshold, it is determined that the spare page does not exist in the corresponding stripe, and the second threshold is larger than the first threshold time. It may be possible to have a wait time for the another write request for a time.
  • the determination unit 240 corresponds to the stripe even if the ratio of the clean page is less than the threshold. It may be determined to generate partial parity.
  • the control device allocates at least some blocks of the plurality of chips associated with the multi-channel interleaving to a partial parity storage area (or the partial stripe parity pool), and assigns the partial to the partial parity storage area.
  • the multi-channel interleaving may be controlled to write parity data.
  • the partial parity may be recorded on the next page 321.
  • D8 occurs, the next page (PPN2 page on chip 3) is written, and the parity for the entire stripe must be written. Record the full parity.
  • control device may write the next write request without writing the full parity for the entire stripe, and separately write the partial parity in the partial parity storage area.
  • P2 should be written because at least one parity must be recorded in at least one stripe, even if consecutive write requests follow D8 and D9 following data updates of D1 'and D2'. Thereafter, when a data write request of D10 is received, the corresponding data is written to page 3 of Chip0, and partial parity PP1 for data write of D10 is stored in the partial parity storage area (or the partial stripe parity pool). Chip 1 (402).
  • D11, D12, D13, and D14 when subsequent write requests D11, D12, D13, and D14 are sequentially received, writes to Chip1, 2, 3, and 4 sequentially from D11, and writes full parity P3 to PPN4 of Chip0. .
  • D11 to D14 are regarded as one full stripe so that full parity P3 can be written.
  • the stripe when the stripe is full, at least one full parity may be recorded in the stripe, and conversely, when the stripe is not full, the partial parity is separately recorded in the partial parity storage area 410. can do.
  • the reason for writing the partial parities 401, 402, and 403 into the partial parity storage area (or the partial stripe parity pool) 410 is because of RAID characteristics, data included in one stripe is distributed to different chips. This is because the data can be recovered by using distributed data when a specific chip error occurs.
  • At least one partial parity or full parity may be maintained for each page number (five in FIGS. 3 to 4) constituting the stripe.
  • data may be recovered from an error occurring in a specific chip while reducing the number of parity maintained for each page constituting the stripe.
  • FIG. 5 is a conceptual diagram illustrating a data cleaning operation performed by a cleaning unit in the control apparatus according to an embodiment.
  • blocks including the stripe should be cleaned at the same time.
  • blocks including the stripe eg, dynamic stripe DS
  • DSG dynamic stripe group
  • a set of blocks having the least valid pages may be selected.
  • the number of valid pages of DSG0 may be five, and the number of valid pages of DSG1 may be nine.
  • the DSG0 since the number of valid pages of the DSG0 is smaller than that of the DSG1, the DSG0 may be a block to be cleaned.
  • FIG. 6 is a conceptual diagram illustrating a data cleaning performed by the cleaning unit 230 in the control apparatus, according to an exemplary embodiment.
  • a DSG having a small number of valid pages is selected to perform the cleaning operation.
  • the cleaning unit stores data D0, D4, and D7 of the valid page of the DSG0 on which the cleaning operation is performed, on 60 pages of the PPN of flash chip memory 0, flash chip memory 1, and flash chip memory 2, respectively. You can copy it.
  • control device may configure the new stripe (eg, dynamic stripe) by generating the full parity P60 for the copied DO, D4, and D7 and writing it to the PPN 60 of the flash memory chip 3.
  • the data of the remaining valid pages D8 and D10 are written to the next stripe, and as described above, the partial parity PP can be generated.
  • all flash memory chips must be cleaned at the same time to secure free space for the stripe.
  • Each of the flash memory chips performs the cleaning in parallel and therefore has a cost similar to cleaning in a single flash memory chip.
  • FIG. 7 is a flowchart of a control method 700 for managing a plurality of memory channels driven through multi-channel interleaving in the control apparatus, according to an embodiment.
  • the control device receives a data update request command for the initial data D1 (710).
  • the stripe may be configured by programming the data D1 ′ to be updated (updated) on the first page (720).
  • the control device may generate parity data for the configured stripe.
  • FIG. 8 is a flowchart of the control method according to a threshold time, according to an exemplary embodiment. In the above-described control method of FIG. 7, it may be determined whether the partial parity is generated in consideration of the threshold time.
  • the control unit 720 configures a stripe.
  • the determination unit 240 of the device may determine whether a first threshold time has elapsed since the last processing of the first page was programmed (810).
  • partial parity data of the first physical page number associated with the first page write request may be generated (820).
  • 9 is a flowchart of the control method that is different from the threshold time and the clean page ratio of the stripe according to one embodiment.
  • the determination unit 240 of the control device may determine whether the first threshold time has elapsed after the first page write request is processed (910).
  • the determination unit 240 of the control device may determine whether the first threshold time has elapsed after the first page write request is processed. If the first threshold time has elapsed after the first page write request is processed, it is determined whether the clean page ratio corresponding to the first page number is greater than or equal to the threshold (920). If the clean page ratio is greater than or equal to a threshold, the partial parity PP may be generated and recorded (940).
  • the first threshold time elapses after the first page write request is processed and the clean page ratio is less than the threshold value, it may be determined whether the second threshold time greater than the first threshold time has elapsed ( 930).
  • the determination unit 240 may determine the ratio of the clean page corresponding to the first page number when the first page write request is processed and a second threshold time greater than the first threshold time elapses.
  • the parity generator 220 may generate the partial parity even if the threshold value is less than the threshold (940).
  • control apparatus may generate a stripe dynamically in the order in which the write request occurs by the stripe, thereby reducing the cost of parity update.
  • allocating the same PPNs of the respective flash memory chips may be the most appropriate method for managing the flash memory. have.
  • the stripe may consist of identical PPN pages of each of the flash memory chips. Since the same PPN page of each of the flash memory chips needs to be reserved as free space in order to form the stripe by the stripe forming unit 210, such a space may be required during the cleaning operation.
  • the cleaning unit 230 of the control device may perform a cleaning operation of the flash memory on a block basis.
  • blocks containing the stripe should be cleaned at the same time.
  • the blocks including the stripe may be a dynamic stripe group (DSG).
  • all the flash memory chips must be cleaned at the same time in order to secure space for the stripe.
  • Each of the flash memory chips performs cleaning in parallel, and thus may incur a cost similar to cleaning on a single chip.
  • the cleaning may be performed in the following order with reference to the flowchart of FIG. 10.
  • a cleaning block including the plurality of stripes may be generated, and a cleaning block having the smallest valid page among the cleaning blocks may be selected as a target block for data cleaning (1010).
  • the apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components.
  • the devices and components described in the embodiments may be, for example, processors, controllers, arithmetic logic units (ALUs), digital signal processors, microcomputers, field programmable arrays (FPAs), It may be implemented using one or more general purpose or special purpose computers, such as a programmable logic unit (PLU), 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.

Abstract

멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 장치가 제공된다. 상기 장치는 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 스트라이프 구성부 및 상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 패리티 생성부를 포함한다.

Description

신뢰성 있는 SSD를 위한 효율적인 RAID 기법
본 발명은 SSD 장치의 신뢰성을 향상시키는 방법 및 장치에 연관되며, 보다 특정하게는 SSD 장치 내부에 RAID 기법을 적용하여 신뢰성을 향상시키는 방법 및 장치에 연관된다.
플래시 메모리 기반 SSD는 저전력 소모, 높은 속도, 가벼운 무게 등 다양한 장점을 포함하기 때문에 노트북과 개인용 컴퓨터에서부터 서버와 클라우드 시스템으로까지 널리 사용되는 저장장치이다.
그러나, 현재의 SSD는 안전성이 떨어진다는 점이 가장 큰 문제점으로 지적되고 있으며, 이로 인해 상기 SSD의 주요 컴포넌트인 플래시 메모리가 빈번한 에러를 발생시키며 한정된 소거 횟수를 갖는다는 사실에서 기인한다.
최근에는, 한 셀에 두 개 이상의 비트를 저장하는 MLC(Multi Level Cell) 또는 TLC(Triple Level Cell) 플래시 메모리가 시장에서 널리 채택되면서 좀더 심각한 문제로 인식되고 있는 실정이다. 통상적으로 상기 SSD는 플래시 메모리의 OOB(Out Of Band)영역에 에러 검출 및 정정 코드를 적어놓고, 이를 이용하여 예기치 않은 에러에 대응한다. 그러나, 에러 검출 및 정정 코드로는 한 개의 페이지 입출력에서 발생하는 몇 개의 비트 에러에 대해서만 검출 및 정정이 가능하며, 블록이나 칩 레벨의 에러에는 어떠한 대응도, 심지어는 검출도 할 수 없다는 문제점을 포함하고 있다.
또한, 상기 SSD 장치의 신뢰성을 향상 시키기 위하여 RAID 기법을 SSD 내부에 적용하는 종래의 방법이 있으나, RAID 기법의 전통적인 문제점인 작은 쓰기의 문제로 인해 플래시 메모리의 성능 저하와 수명을 감소시키는 문제점이 있다.
따라서, RAID 기법에서 상기 작은 쓰기 문제를 해결하고, 신뢰성 있는 SSD 장치를 설계할 필요가 있다.
일측에 따르면, 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 장치가 제공된다.
일실시예에 따르면, 상기 제어 장치는 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 스트라이프 구성부 및 상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 패리티 생성부를 포함할 수 있다.
일실시예에 따르면, 상기 제어 장치는 복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행할 수 있다.
일실시예에 따르면, 상기 제어 장치는 상기 복수 개의 페이지에 쓰여진 데이터의 클리닝의 경우, 상기 복수의 스트라이프를 포함하는 클리닝 블록을 생성하고, 상기 클리닝 블록 중 유효 페이지가 가장 적은 클리닝 블록을 상기 데이터 클리닝의 대상 블록으로 선택하여 상기 데이터 클리닝을 수행하는 클리닝부를 더 포함할 수 있다.
일실시예에 따르면, 상기 클리닝부는 상기 데이터 클리닝의 대상 블록을 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록으로 복사하고, 상기 데이터 클리닝의 대상 블록에 대해 상기 데이터 클리닝을 수행할 수 있다.
일실시예에 따르면, 상기 제어 장치는 마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 판단부를 더 포함할 수 있다.
일실시예에 따르면, 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 장치는 상기 제1 물리적 페이지 넘버에 대응하는 클린 페이지 중 어느 하나의 클린 페이지에 생성된 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
일실시예에 따르면, 상기 제어 장치는 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
다른 일측에 따르면, 멀티 채널 인터리빙을 통해 페이지 데이터 쓰기가 처리되는 경우, 마지막으로 요청된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 판단부 및 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 패리티 생성부를 포함하는 제어 장치가 제공된다.
일실시예에 따르면, 상기 제어 장치의 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성할 수 있다.
또 다른 일측에 따르면, 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 방법이 제공된다.
일실시예에 따르면, 상기 제어 방법은 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 단계 및 상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 제어 방법은 복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행할 수 있다.
일실시예에 따르면, 상기 제어 방법은 마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 단계를 더 포함할 수 있고, 상기 제어 방법의 상기 패리티 데이터를 생성하는 단계는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 방법의 상기 패리티 데이터를 생성하는 단계는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하고, 및 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 방법은 상기 제1 물리적 페이지 넘버에 대응하는 클린 페이지 중 어느 하나의 클린 페이지에 생성된 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
일실시예에 따르면, 상기 제어 방법은 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
또 다른 일측에 따르면, 멀티 채널 인터리빙을 통해 페이지 데이터 쓰기가 처리되는 경우, 마지막으로 요청된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 단계 및 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 단계를 포함하는 제어 방법이 제공된다.
일실시예에 따르면, 상기 제어 방법의 상기 패리티 데이터를 생성하는 단계는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하고, 및 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성할 수 있다.
도 1은 일실시예에 따른, 저장 장치의 구성도이다.
도 2는 일실시예에 따른, 상기 제어 장치의 블록도이다.
도 3은 일실시예에 따른, 상기 제어 장치에서 데이터 갱신이 발생하는 경우를 설명하는 도면이다.
도 4는 일실시예에 따른, 상기 제어 장치에서 부분 패리티가 생성될 수 있는 부분 스트라이프 패리티 풀을 설명하는 도면이다.
도 5는 일실시예에 따른, 상기 제어 장치에서 데이터 클리닝 수행 전을 설명하는 개념도이다.
도 6은 일실시예에 따른, 상기 제어 장치에서 상기 데이터 클리닝 수행 후를 설명하는 개념도이다.
도 7은 일실시예에 따른, 상기 제어 장치에서 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 방법의 흐름도이다.
도 8은 일실시예에 따른, 임계 시간에 따른 상기 제어 방법의 흐름도이다.
도 9은 일실시예에 따른, 상기 임계 시간 및 스트라이프의 클린 페이지 비율에 다른 상기 제어 방법의 흐름도이다.
도 10은 일실시예에 따른, 상기 제어 장치에서 상기 데이터 클리닝을 수행하는 흐름도이다.
이하에서, 일부 실시예들을, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 관례, 새로운 기술의 출현 등에 따라 달라질 수 있다.
또한 특정한 경우는 이해를 돕거나 및/또는 설명의 편의를 위해 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세한 그 의미를 기재할 것이다. 따라서 아래 설명에서 사용되는 용어는 단순한 용어의 명칭이 아닌 그 용어가 가지는 의미와 명세서 전반에 걸친 내용을 토대로 이해되어야 한다.
SSD(Solid-State Drive)는 다수의 플래시 메모리 칩과 입출력 채널 등으로 구성된다. 대부분의 SSD는 성능 향상을 위하여 각 플래시 메모리 칩이 병렬적으로 동작 하도록 데이터를 인터리빙 하는 RAID-0 구조를 취하며, 각 입출력 채널도 동시에 데이터를 전송할 수 있도록 한다. 상기 RAID는 종류별로 RAID-0, 1, 2, 3, 4, 5, 6 등 많이 존재하지만 RAID-5가 가장 많이 사용되고 있다.
상기 RAID-5를 상기 SSD에 도입하는 경우, HDD에서와는 다르게 플래시 메모리에서는 데이터가 제자리 갱신이 되지 않으므로 항상 다른 공간에 쓰기를 해야 하므로 빈번한 데이터 갱신은 많은 수의 패리티 쓰기를 수반하여 플래시 메모리의 클리닝 비용 증가와 수명을 단축시키는 결과를 초래한다. 또한, 데이터 갱신 과정 동안 패리티가 있는 칩은 다른 칩에 비하여 더욱 빈번한 쓰기가 많이 발생하므로 패리티를 포함하는 칩은 다른 칩에 비해 수명이 감소된다.
종래에서, 상기 SSD 장치가 수신하는 쓰기 요청은 LBN(Logical Block Number) 형태이며, 상기 LBN이 연속적이고 큰 크기로 이루어지는 경우 상기 RAID의 작은 쓰기 문제는 발생하지 않지만 대부분의 쓰기 요청이 작은 크기이다.
그러므로, 본 발명에서는 상기 LBN이 연속적이지 않고 작은 크기라도 앞서 기술된 문제를 해결할 수 있는 데이터 제어 장치 및 방법이 제공된다. 또한 추가적으로 부분 스트라이프 패리티(Partial Stripe Parity)(또는, 부분 패리티)를 생성함으로써 상기 저장 장치(이를 테면, 상기 SSD와 같은)의 신뢰성을 향상시킬 수 있다.
도 1은 일실시예에 따른, 저장 장치(101)의 구성도이다. 상기 저장 장치는 제어 장치(100), 호스트 인터페이스(103) 및 플래시 메모리 칩(110, 120)을 포함할 수 있다.
일실시예에 따르면, 상기 저장 장치의 상기 호스트 인터페이스는 상기 저장 장치를 제어하는 상기 제어 장치와 외부의 호스트 컴퓨터(102) 사이에서 인터페이스를 제공할 수 있다. 상기 호스트 인터페이스는 이를 테면, PATA(Parallel ATA), SATA(Serial ATA), 또는 USB(Universal Serial Bus) 등의 통신 규격일 수 있다. 따라서, 상기 저장 장치는 상기 호스트 인터페이스를 통해 호스트(102)로부터 데이터 액세스(data access) 명령(이를 테면, 데이터 읽기, 데이터 쓰기 등)을 수신한다.
일실시예에 따르면, 상기 저장 장치의 상기 제어 장치는 상기 호스트와의 통신 및 상기 플래시 메모리에 연관되는 각 부분을 제어하는 역할을 한다. 또한, 상기 저장 장치는 복수의 플래시 메모리 칩(110, 120)과 입출력 채널 등으로 구성될 수 있다.
대부분의 SSD는 성능 향상을 위하여 상기 복수의 플래시 메모리 칩이 각각 병렬적으로 동작 하도록 데이터를 인터리빙 하는 구조를 취할 수 있으며, 각 입출력 채널도 동시에 데이터를 전송할 수 있다. 상기 복수의 플래시 메모리 칩에 연관되는 내용은 아래에서 더 상세히 후술된다.
도 2는 일실시예에 따른, 상기 제어 장치(100)의 블록도이다. 상기 제어 장치는 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리할 수 있다.
또한, 상기 제어 장치는 스트라이프 구성부(210), 패리티 생성부(220), 클리닝부(230) 및 판단부(240)를 포함할 수 있다.
일실시예에 따른 상기 제어 장치의 상기 스트라이프 구성부(210)는 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성할 수 있으며, 상기 패리티 생성부(220)는 상기 구성된 스트라이프에 대한 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 장치는 복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행할 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 클리닝부(230)는 데이터 클리닝의 경우, 상기 복수의 스트라이프를 포함하는 클리닝 블록을 생성하고, 상기 클리닝 블록 중 유효 페이지가 가장 적은 클리닝 블록을 상기 데이터 클리닝의 대상 블록으로 선택할 수 있다. 또한, 상기 클리닝부(230)는 상기 선택된 데이터 클리닝의 대상 블록에 대해 상기 데이터 클리닝을 수행할 수 있다.
게다가, 상기 클리닝부(230)는 상기 데이터 클리닝의 대상 블록을 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록으로 복사하고, 상기 데이터 클리닝의 대상 블록에 대해 상기 데이터 클리닝을 수행할 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 판단부(240)는 마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단할 수 있다.
또한, 상기 제어 장치의 상기 패리티 생성부(220)는 상기 제1 페이지 쓰기 요청이 처리된 후에 상기 제1 임계시간이 경과하면 상기 제1 페이지 쓰기 요청에 연관되는 제1 물리적 페이지 넘버에 대한 부분 패리티를 생성할 수 있다.
일실시예에 따른 상기 패리티 생성부(220)는 상기 제1 페이지 쓰기 요청이 처리된 후 상기 제1 임계시간이 경과한 후, 상기 제1 페이지 넘버에 대응하는 클린 페이지의 비율이 임계치 이상이면 상기 부분 패리티를 생성할 수 있다. 여기서, 상기 제1 임계시간 및 상기 클린 페이지의 비율의 임계치는 상기 제어 장치를 사용하는 사용자에 의해 미리 정의될 수 있다.
일실시예에 따른 상기 패리티 생성부(220)는 상기 제1 페이지 쓰기 요청이 처리된 후에 상기 제1 페이지 넘버에 대응하는 클린 페이지(clean page)의 비율이 상기 임계치 미만이더라도 상기 제1 임계시간보다 큰 제2 임계시간이 경과하면 상기 부분 패리티를 생성할 수 있다. 상기 제어 장치는 상기 스트라이프에 대한 풀 패리티를 생성하게 될 확률보다 페이지 데이터의 소실 또는 오류의 위험이 크다고 판단하기 때문에, 상기 제2 임계시간이 경과하는 경우 상기 클린 페이지가 조금 남아 있더라도(상기 임계치 미만이더라도) 상기 마지막 쓰기 이후에 무조건 상기 부분 패리티의 쓰기를 수행할 수 있다.
일실시예에 따르면, 상기 패리티 생성부(220)는 상기 제1 물리적 페이지 넘버에 대응하는 상기 클린 페이지 중 어느 하나에 상기 클린 페이지에 생성된 상기 부분 패리티를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
일실시예에 따르면, 상기 제어 장치는 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당할 수 있으며, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 제어할 수 있다. 상기 부분 패리티 저장 영역에 대한 내용은 아래에서 도면과 함께 더 상세히 후술된다.
도 3은 일실시예에 따른, 상기 데이터 처리 장치 데이터 갱신이 발생하는 경우의 도면이다.
일실시예에 따르면, 상기 제어 장치(100)는 상기 호스트와의 통신을 제어하고 및 상기 플래시 메모리에 연관되는 각 부분을 제어할 수 있다. 도 3에서 플래시 칩 컨트롤러(FCC: Flash Chip Controller)는 상기 제어 장치의 제어 하에 각각의 상기 플래시 메모리 칩을 제어할 수 있다.
일실시예에 따른 도 3에서는 5개의 플래시 메모리 칩(chip0, chip1, chip2, chip3 및 chip4)으로 구성되는 저장 장치(이를 테면, SSD와 같은) 내부를 도시한다. 여기서 PPN(Physical Page Number)은 물리적인 페이지 번호를 나타내고, PBN(Physical Block Number)은 물리적인 블록 번호를 나타낸다. 상기 PBN은 상기 각각의 플래시 메모리 칩에서 동일한 PPN 페이지를 포함할 수 있다.
일실시예에 따르면, Dx(x=0, 1, 2, 3 …)는 사용자의 데이터의 LBA(Logical Block Address)를 나타내고, Px(x=0, 1, 2, 3 …)는 스트라이프(310)에 대한 패리티를 나타낸다.
일실시예에 따른 상기 스트라이프는 상기 각각의 플래시 메모리 칩의 동일한 상기 PPN의 페이지들로 구성되며, 이를 테면, 상기 스트라이프는 동적 스트라이프(DS: Dynamic Stripe)라고 불릴 수 있다. 종래의 스트라이프는 논리적인 주소를 기반으로 상기 스트라이프를 구성하기 때문에 스트라이프 맵 테이블(Stripe map table)에 의해 관리되었으나, 상기 제어 장치에 의해 구성되는 상기 스트라이프(이를 테면, 동적 스트라이프(DS))는 물리적인 주소를 기반으로 상기 스트라이프를 생성하기 때문에 상기 스트라이프 맵 테이블을 필요로 하지 않는다.
일실시예에 따르면, 상기 스트라이프에 상기 데이터 쓰기가 수행되는 경우, 상기 스트라이프의 상기 PPN 페이지가 상기 데이터로 인해 다 채워지기 전에 상기 SSD의 신뢰성 향상과 데이터 복구를 위해 상기 스트라이프에 대한 적어도 하나의 상기 풀 패리티 또는 상기 부분 패리티가 상기 스트라이프에 생성될 수 있다.
일실시예에 따른 도 3은 데이터 D1 및 D2에 대한 데이터 갱신 요청이 발생하는 경우의 실시예를 도시한다. 대부분의 상기 SSD는 10~16개 이상 복수의 플래시 메모리 칩으로 구성되지만 설명의 편의상 도 3에서는 5개의 플래시 메모리 칩(chip0, chip1, chip2, chip3 및 chip4)으로 구성되는 실시예를 도시한다.
일실시예에 따르면, 도 3에서는 D0~D7의 사용자 데이터가 상기 플래시 메모리 칩의 상기 PPN 0 및 PPN 1에 쓰여져 있다. 또한, 도 3은 상기 PPN 0의 동일한 페이지들로 구성되는 상기 스트라이프(310)에 대한 패리티(P0)와 상기 PPN 1의 동일한 페이지들로 구성되는 상기 스트라이프에 대한 패리티(P1)를 포함하는 초기 상태를 도시하고 있다. 앞서 기술된 바와 같이, 적어도 하나의 상기 스트라이프에는 적어도 하나의 풀 패리티를 포함한다.
일실시예에 따르면, 상기 초기 상태에서 D1 및 D2의 사용자 데이터가 갱신된다고 가정한다. 상기 데이터 D1 및 D2의 갱신 요청으로 인해 업데이트되어야 하는 D1' 및 D2'의 쓰기 요청이 발생하게 된다. 상기 컨트롤러 장치는 상기 갱신 요청에 따른 상기 쓰기 요청에 대해 상기 요청이 발생한 순서대로 각각의 플래시 메모리 칩의 동일한 상기 PPN 페이지에 인터리빙되어 쓰여질 수 있다.
종래에서는 논리적인 주소를 기준으로 상기 스트라이프를 구성하기 때문에, 상기 갱신 되는 데이터가 동일한 플래시 메모리 칩 내의 빈 페이지(초기에 쓰여진 플래시 메모리 칩의 빈 페이지)에 쓰여야만 했다. 설명의 편의를 위해 하나의 상기 사용자 데이터 D1에 대한 데이터 갱신을 먼저 설명한다.
일실시예에 따르면, 초기 상태에서의 상기 사용자 데이터 D1(311)에 대해서만 데이터 갱신 요청이 발생한다고 가정한다. 종래에서는 업데이트되어야 하는 D1'의 사용자 데이터는 초기에 쓰여진 동일한 플래시 메모리 칩의 빈 페이지(312)에 쓰여지는 반면에, 상기 제어 장치는 상기 업데이트되어야 하는 D1'의 사용자 데이터를 빈 페이지에 순차대로 쓰기가 수행되도록 제어할 수 있다.
다시 말하면, 일실시예에 따른 상기 제어 장치는 물리적인 주소를 기준으로 스트라이프를 생성할 수 있기 때문에, 상기 업데이트되는 D1'의 사용자 데이터를 동일한 플래시 메모리 칩 내의 빈 페이지(312)에 쓰여지지 않는다.
일실시예에 따른 상기 제어 장치는 초기 상태에서 마지막 쓰기 요청에 의한 사용자 데이터 D7 페이지의 다음 페이지(301)에 상기 D1'이 쓰여지도록 제어할 수 있고, 상기 제어 장치는 초기 상태의 사용자 데이터 D1이 쓰여진 페이지(311)를 무효 페이지가 되도록 제어할 수 있다.
일반적으로 상기 제어 장치의 상기 패리티 생성부(220)는 상기 쓰기 요청으로 인해 적어도 하나의 스트라이프가 가득 차게 되면 상기 스트라이프에 대한 상기 풀 패리티를 생성할 수 있다.
그러나, 상기 제어 장치의 패리티 생성부(220)는 상기 스트라이프의 일부에서만 데이터 갱신이 이루어지는 경우 상기 스트라이프에 상기 사용자 데이터가 가득 찰 때까지 대기하지 않고 곧바로 갱신되는 데이터(또는 쓰기 요청에 의해 쓰여지는 데이터)에 대한 부분 패리티(Partial Parity)를 생성할 수 있다.
이를 테면, 초기 데이터 D1에 대한 데이터 갱신되는 실시예의 경우에서, 상기 제어 장치의 상기 스트라이프 생성부는 상기 업데이트되어야 하는(갱신되어야 하는) D1'은 물리적인 주소를 기준으로 페이지(301)에 쓰여지도록 하여 상기 스트라이프를 구성할 수 있다. 또한, 상기 제어 장치의 상기 패리티 생성부(220)는 상기 갱신된 D1'을 포함하는 해당 스트라이프가 가득 찰 때까지 대기하여 상기 풀 패리티를 생성하지 않고, 상기 갱신된 D1'의 페이지(301)의 다음 페이지(312)에 곧바로 상기 부분 패리티를 생성할 수 있다.
다른 일실시예에 따르면, 도 3과 같은 초기 상태에서 D1, D2 순서로 데이터가 갱신된다고 가정한다. 종래의 기술에 따르면, 업데이트되어야 하는 D1', D2'은 논리적인 주소를 기준으로 초기에 쓰여진 동일한 플래시 메모리 칩의 빈 페이지에 쓰기가 수행된다. 따라서, 종래 기술에서는 D1'은 칩1의 PPN 2 페이지(312)에 쓰여지며, D2'는 칩2의 PPN2 페이지(321)에 쓰여진다.
그러나, 상기 제어 장치의 상기 스트라이프 구성부(210)는 물리적인 주소를 기준으로 스트라이프를 구성하기 때문에, D1', D2'을 쓰기 요청이 발생한 순서대로 각각의 플래시 메모리 칩의 PPN 페이지에 인터리빙 되어 쓰여질 수 있도록 할 수 있다. 따라서, 상기 제어 장치의 상기 스트라이프 구성부(210)는 D1'이 칩0의 PPN2 페이지(301)에 쓰여지도록 제어하고, D2'는 칩1의 PPN2 페이지(312)에 쓰여지도록 제어할 수 있다. 또한, 상기 갱신되는 데이터의 쓰기가 이루어지면, 초기 상태의 사용자 데이터 D1, D2가 쓰여진 페이지는 무효 페이지가 된다.
위에서 기술된 바와 같이, 상기 쓰기 요청으로 인해 하나의 스트라이프가 가득 차게 되면 상기 스트라이프에 대한 풀 패리티를 생성할 수 있다. 그러나, 상기 제어 장치의 상기 패리티 생성부(220)는 상기 스트라이프의 일부에서만 데이터 갱신이 이루어지는 경우, 상기 스트라이프에 상기 사용자 데이터가 가득 찰 때까지 대기하지 않고 곧바로 갱신되는 데이터(또는 쓰기 요청에 의해 쓰여지는 데이터)에 대한 부분 패리티를 생성할 수 있다.
이를 테면, 앞서 기술된 바와 같이 초기 데이터 D1, D2에 대한 데이터 갱신이 발생하는 경우, 상기 업데이트되어야 하는(갱신되어야 하는) D1', D2'의 사용자 데이터는 물리적인 주소를 기준으로 각각 페이지(301) 및 페이지(312)에 쓰여질 수 있다. 또한, 상기 갱신된 D1', D2'을 포함하는 해당 스트라이프는 상기 해당 스트라이프가 가득 찰 때까지 대기하지 않고, 마지막으로 갱신된 D2'의 페이지(312)의 다음 페이지(321)에 업데이트된 D1', D2'에 대한 상기 부분 패리티가 생성될 수 있다.
그러므로, 상기 제어 장치는 상기 쓰기 요청이 발생한 데이터에 대해서만 동적으로 스트라이프를 구성할 수 있으며, 상기 스트라이프에 대한 패리티(또는, 풀 패리티)를 생성할 수 있기 때문에, 상기 갱신되는 데이터에 대한 패리티 생성을 위해 초기 상태에 쓰여진 데이터에 대한 별도의 읽기 연산이 필요하지 않고 상기 패리티 쓰기 횟수도 감소할 수 있다. 또한, 특정 플래시 메모리 칩에 대한 쓰기가 집중되는 현상도 제거되어 상기 플래시 메모리 칩의 수명을 단축시키는 문제도 완화될 수 있다.
또 다른 일실시예에 따르면, 위와 같이 D1', D'2의 갱신이 이루어지고 상기 갱신된 데이터에 대응하는 상기 부분 패리티가 생성된 후, 또 다른 쓰기 요청인 D8에 대한 데이터 쓰기 요청이 발생하는 경우 다음의 빈 페이지인 칩3의 PPN 2의 페이지에 상기 D8 데이터 쓰기가 수행될 수 있다. 또한, 마지막 페이지(칩4의 PPN 2 페이지)에 해당되는 전체 스트라이프에 대한 새로운 상기 풀 패리티를 생성할 수 있다.
이 시점에서는 상기 SSD의 쓰기 버퍼에 보관하고 있는 상기 D8를 이용하므로 상기 풀 패리티 생성을 위한 읽기 연산이 필요하지 않다. 이와 같이 상기 스트라이프의 크기보다 작은 쓰기 요청에 대하여 생성한 패리티를 상기 부분 패리티라고 부르며, 이를 통해 NVRAM과 같은 추가적인 하드웨어 없이 상기 SSD의 신뢰성을 보장할 수 있다.
또 다른 일실시예에 따르면, 상기 제어 장치의 판단부(240)는 마지막으로 처리된 쓰기 요청으로부터의 임계시간을 고려하여 부분 패리티의 생성 유무를 판단할 수 있다. 상기 제어 장치의 상기 패리티 생성부(220)는 도 3과 같이 D1', D'2의 갱신이 요청되어 상기 칩0의 PPN2 페이지와 상기 칩1의 PPN2 페이지에 각각 D1', D2'가 쓰여지게 되는 경우 바로 상기 부분 패리티를 생성하지 않고 또 다른 쓰기 요청이 수신되는 지를 제1 임계 시간 동안 대기할 수 있다.
만약, 상기 제1 임계 시간 내에 상기 또 다른 쓰기 요청이 수신되는 경우에는 상기 쓰기 요청의 순서대로 상기 스트라이프를 구성할 수 있으며, 상기 또 다른 쓰기 요청으로 상기 스트라이프가 다 채워지는 경우, 상기 패리티 생성부(220)는 상기 부분 패리티의 생성 없이 곧바로 전체 스트라이프에 대응하는 상기 풀 패리티를 생성할 수 있다.
반대로, 상기 제1 임계 시간 내에 상기 또 다른 쓰기 요청이 수신되지 않은 경우(해당 스트라이프도 다 채워지지 않고 더 이상의 또 다른 쓰기 요청이 수신되지 않은 경우), 상기 패리티 생성부(220)는 마지막 쓰기 요청에 의해 쓰여진 페이지의 다음 페이지에 곧바로 상기 부분 패리티를 생성함으로써 상기 저장 장치(상기 SSD)의 신뢰도를 향상 시킬 수 있다.
또 다른 일실시예에 따르면, 상기 제어 장치의 판단부(240)는 상기 임계시간과 상기 클린 페이지의 비율을 고려하여 부분 패리티의 생성의 유무를 판단할 수 있다.
위에서 기술된 바와 같이 상기 제어 장치의 상기 패리티 생성부(220)는 D1', D'2의 갱신이 요청되어 상기 칩0의 PPN2 페이지와 상기 칩1의 PPN2 페이지에 각각 D1', D2'가 쓰여지게 되는 경우 곧바로 상기 부분 패리티를 생성하지 않고, 또 다른 쓰기 요청이 수신되는 지를 제1 임계 시간 동안 대기할 수 있다.
만약, 상기 제1 임계 시간 내에 상기 또 다른 쓰기 요청이 수신되는 경우 상기 쓰기 요청의 순서대로 상기 스트라이프를 구성할 수 있다. 또한, 상기 또 다른 쓰기 요청으로 상기 스트라이프가 다 채워지는 경우 상기 패리티 생성부(220)는 상기 부분 패리티의 생성 없이 곧바로 전체 스트라이프에 대응하는 상기 풀 패리티를 생성할 수 있다.
반대로, 상기 제1 임계 시간 내에 상기 또 다른 쓰기 요청이 수신되지 않은 경우(해당 스트라이프도 다 채워지지 않고 더 이상의 또 다른 쓰기 요청이 수신되지 않은 경우), 상기 제어 장치의 상기 판단부(240)는 상기 스트라이프 내에 클린 페이지(Clean page)가 충분히 존재하는지를 판단할 수 있다.
이를 테면, 상기 제어 장치의 상기 판단부(240)는 상기 쓰기 요청에 의해 데이터가 쓰여져야 하는 해당 스트라이프에서 상기 클린 페이지의 비율이 미리 정의된 임계치 이상이라고 판단되는 경우에는 아직 상기 해당 스트라이프에 여유 페이지가 존재하는 것으로 판단할 수 있다.
또한, 상기 판단부(240)가 상기 클린 페이지의 비율이 미리 정의된 임계치 이하이라고 판단되는 경우에는 상기 해당 스트라이프에 상기 여유 페이지가 존재하지 않는 것으로 판단하여, 상기 제1 임계시간보다 큰 제2 임계시간 동안 상기 또 다른 쓰기 요청을 위한 대기 시간을 갖도록 할 수 있다.
일실시예에 따르면, 상기 판단부(240)는 상기 제2 임계시간의 경과에도 불구하고, 상기 또 다른 쓰기 요청이 수신되지 않으면, 상기 클린 페이지의 비율이 상기 임계치 미만이더라도 상기 스트라이프에 해당하는 상기 부분 패리티를 생성하도록 판단할 수 있다.
도 4는 일실시예에 따른, 상기 제어 장치에서 부분 패리티가 생성될 수 있는 부분 스트라이프 패리티 풀(Partial Stripe Parity Pool)을 설명하는 도면이다. 상기 제어 장치는 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역(또는, 상기 부분 스트라이프 패리티 풀(Partial Stripe Parity Pool))으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
앞에서 언급한 도 3의 경우, D1'과 D2'을 물리적인 주소를 기반으로 상기 페이지(301과 312)에 쓰기 동작을 수행한 후에, (경우에 따라 임계시간 및 클린 페이지의 비율을 고려하여) 상기 부분 패리티를 그 다음 페이지(321)에 기록할 수 있다. 그 후에, 또 다른 쓰기 요청인 D8의 쓰기 요청이 발생하면 그 다음 페이지(칩3의 PPN2 페이지)에 쓰기를 수행하고, 전체 스트라이프에 대한 패리티를 반드시 기록해야 하므로 마지막 페이지(칩4의 PPN2)에 상기 풀 패리티를 기록한다.
그러나, 도 4를 참조하면, 상기 제어 장치는 전체 스트라이프에 대한 풀 패리티를 기록하지 않고 다음의 쓰기 요청에 대한 쓰기를 수행하고 상기 부분 패리티 저장 영역에 상기 부분 패리티를 따로 기록할 수 있다.
만약, D1' 및 D2'의 데이터 갱신에 이어 D8과 D9에 이어서 연속적인 쓰기 요청이 온다고 하더라도, 적어도 하나의 스트라이프에서 적어도 하나의 패리티를 반드시 기록해야 하기 때문에, P2를 기록해야만 한다. 이 후에, D10의 데이터 쓰기 요청이 수신되면, 해당 데이터를 Chip0의 페이지 3에 쓰기를 수행하고, D10의 데이터 쓰기에 대한 부분 패리티(PP1)는 상기 부분 패리티 저장 영역(또는, 상기 부분 스트라이프 패리티 풀)의 칩 1(402)에 기록될 수 있다.
일실시예에 따르면, 그 후에 연속적인 쓰기 요청 D11, D12, D13, D14가 순차적으로 오는 경우, D11부터 순서대로 Chip1, 2, 3, 4에 쓰고 풀 패리티 P3을 Chip0의 PPN4에 기록할 수 있다. 일실시예에 따르면, D11 ~ D14가 하나의 풀 스트라이프로 간주되어 풀 패리티 P3이 쓰여질 수 있다.
일실시예에 따르면, 해당 스트라이프가 가득 차는 경우 상기 스트라이프에 적어도 하나의 풀 패리티를 기록할 수 있고, 반대로 해당 스트라이프가 가득 차지 않는 경우에는 상기 부분 패리티 저장 영역(410)에 상기 부분 패리티를 따로 기록할 수 있다. 이와 같이, 상기 부분 패리티(401, 402 및 403)를 상기 부분 패리티 저장 영역(또는 상기 부분 스트라이프 패리티 풀)(410)에 기록하는 이유는 RAID 특성상 하나의 스트라이프에 포함되는 데이터를 각각 다른 칩에 분산시킴으로써 특정 칩의 오류 발생시 분산된 데이터를 이용하여 복구할 수 있기 때문이다.
일실시예에 따르면, 상기 부분 패리티 또는 상기 풀 패리티는 상기 스트라이프를 구성하는 페이지 개수(도 3 내지 도 4에서는 5개) 마다 반드시 1개 이상 유지될 수 있다.
일실시예에 따른, 상기 패리티 저장 영역을 이용함으로써 상기 스트라이프를 구성하는 페이지 마다 유지되는 패리티 개수를 감소시키면서 특정 칩에서 발생하는 오류로부터 데이터를 복구할 수 있다.
도 5는 일실시예에 따른, 상기 제어 장치에서 클리닝 부에 의한 데이터 클리닝의 수행 전을 설명하는 개념도이다.
일실시예에 따른 상기 플래시 메모리 칩의 클리닝 연산은 블록 단위로 수행되기 때문에 여유 공간 생성 시, 상기 스트라이프가 포함되는 블록들이 동시에 클리닝 되어야 한다. 도 5 및 도 6에서 도시한 바와 같이 상기 스트라이프(이를 테면, 동적 스트라이프(DS))가 포함되는 블록들을 동적 스트라이프 그룹(DSG: Dynamic Stripe Group)이라고 한다.
일실시예에 따르면, 상기 클리닝의 대상이 되는 블록을 선택할 경우, 유효 페이지가 가장 적은 블록의 집합이 선택될 수 있다. 이를 테면, 도 5의 경우에서는 DSG0의 유효 페이지의 개수는 5 개가 되며, DSG1의 유효 페이지 개수는 9개가 될 수 있다.
따라서, 상기 DSG1에 비해 상기 DSG0의 유효 페이지의 개수가 적기 때문에 상기 DSG0이 클리닝 수행의 대상이 되는 블록이 될 수 있다.
도 6은 일실시예에 따른, 상기 제어 장치에서 상기 클리닝부(230)에 의한 상기 데이터 클리닝 수행 후를 설명하는 개념도이다. 앞서 설명된 도 5에서, 상기 유효 페이지의 수가 적은 DSG를 선택하여 상기 클리닝 연산을 수행한다.
일실시예에 따르면, 상기 클리닝 부는 상기 클리닝 연산이 수행되는 상기 DSG0의 유효 페이지의 데이터 D0, D4, D7을 각각 플래시 칩 메모리 0, 플래시 칩 메모리 1 및 플래시 칩 메모리 2의 상기 PPN의 60 페이지에 복사할 수 있다.
또한, 상기 제어 장치는 상기 복사되는 D0, D4, D7에 대한 상기 풀 패리티 P60를 생성하여 플래시 메모리 칩 3의 PPN 60에 기록함으로써 새로운 상기 스트라이프(이를 테면, 동적 스트라이프)를 구성할 수 있다. 그리고, 나머지 유효 페이지의 데이터인 D8과 D10은 그 다음의 스트라이프에 쓰여지고, 위에서 언급한 바와 같이 상기 부분 패리티(PP)를 생성할 수 있다.
일실시예에 따르면, 모든 플래시 메모리 칩들이 동시에 클리닝이 수행되어야만 이와 같은 상기 스트라이프를 위해 여유 공간을 확보할 수 있다. 상기 각각의 플래시 메모리 칩들은 병렬적으로 상기 클리닝을 수행하므로 단일 플래시 메모리 칩에서의 클리닝과 비슷한 비용을 갖는다.
또한, 상기 데이터의 일관성을 보장하기 위해 상기 클리닝 시 다음과 같은 순서를 지켜야 한다. 1) 상기 클리닝 대상 블록들의 모든 유효 페이지를 여유 페이지로 복사한다. 2) 1)번을 수행하는 동안 상기 스트라이프를 동적으로 구성하여 패리티 쓰기도 완료한다. 3) 상기 클리닝 대상 블록들을 소거한다.
이와 같은 순서를 지켜야 하는 이유는 2)번의 상기 패리티 쓰기 도중에 오류가 발생하더라도 상기 클리닝 대상 블록들의 기존 데이터를 이용하여 복구할 수 있기 때문이다.
도 7은 일실시예에 따른, 상기 제어 장치에서 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 방법(700)의 흐름도이다.
일실시예에 따른 상기 제어 장치는 상기 초기 데이터(D1)에 대한 데이터 갱신 요청 명령을 수신한다(710). 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 상기 갱신되어야 하는(업데이트되어야 하는) 데이터(D1')을 제1 페이지에 프로그램하여 스트라이프를 구성할 수 있다(720). 또한, 상기 제어 장치는 상기 구성된 스트라이프에 대한 패리티 데이터를 생성할 수 있다.
도 8은 일실시예에 따른, 임계시간에 따른 상기 제어 방법의 흐름도이다. 앞서 설명된 도 7의 제어 방법에서 상기 임계시간을 고려하여 상기 부분 패리티의 생성 유무를 판단할 수 있다.
도 7에서 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 상기 갱신되어야 하는(업데이트되어야 하는) 데이터(D1')을 제1 페이지에 프로그램하여 스트라이프를 구성(720)한 후에, 상기 제어 장치의 판단부(240)는 마지막으로 처리된 상기 제1 페이지의 프로그램된 이후 제1 임계시간이 경과하였는지의 여부를 판단할 수 있다(810).
만약, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성할 수 있다(820).
도 9은 일실시예에 따른, 상기 임계 시간 및 스트라이프의 클린 페이지 비율에 다른 상기 제어 방법의 흐름도이다.
일실시예에 따르면, 상기 제어 장치의 판단부(240)는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하였는 지의 여부를 판단할 수 있다 (910).
일실시예에 따른 상기 제어 장치의 상기 판단부(240)는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하였는 지의 여부를 판단할 수 있다. 만약 상기 제1 페이지 쓰기 요청이 처리된 후 상기 제1 임계 시간이 경과하였다면, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인지의 여부를 판단하게 된다(920). 여기서, 상기 클린 페이지 비율이 임계치 이상인 경우에는 상기 부분 패리티(PP)를 생성하여 기록할 수 있다(940).
만약 상기 제1 페이지 쓰기 요청이 처리된 후 상기 제1 임계 시간이 경과하고, 상기 클린 페이지 비율이 임계치 미만인 경우에는 상기 제1 임계시간 보다 큰 상기 제2 임계시간의 경과 여부를 판단할 수 있다(930).
일실시예에 따르면, 상기 판단부(240)는 상기 제1 페이지 쓰기 요청이 처리되고 상기 제1 임계시간보다 큰 제2 임계시간이 경과하면 상기 제1 페이지 넘버에 대응하는 상기 클린 페이지의 비율이 상기 임계치 미만이더라도 상기 패리티 생성부(220)가 상기 부분 패리티를 생성하도록 할 수 있다(940).
도 10은 일실시예에 따른, 상기 데이터 처리 장치에서 상기 데이터 클리닝을 수행하는 흐름도이다. 일실시예에 따른, 상기 제어 장치는 상기 스트라이프에 의해 상기 쓰기 요청이 발생한 순서대로 동적으로 스트라이프를 생성할 수 있음으로써 패리티 갱신의 비용을 줄일 수 있다.
일실시예에 따르면, 이와 같은 상기 쓰기 요청의 순서로 상기 각각의 플래시 메모리 칩에 인터리빙 하기 위해서는 상기 각각의 플래시 메모리 칩의 동일한 PPN 순으로 할당하는 것이 상기 플래시 메모리를 관리하기에 가장 적절한 방법일 수 있다.
따라서, 상기 제어 장치에서 상기 스트라이프는 상기 각각의 플래시 메모리 칩의 동일한 PPN 페이지들로 구성될 수 있다. 상기 스트라이프 구성부(210)에 의해 상기 스트라이프를 구성하기 위해 상기 각각의 플래시 메모리 칩의 동일한 PPN 페이지가 여유 공간으로 확보되어야 하기 때문에, 상기 클리닝 연산 시 이와 같은 공간이 요구될 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 클리닝부(230)는 상기 플래시 메모리의 클리닝 연산을 블록 단위로 수행할 수 있다. 또한, 상기 스트라이프를 위한 여유 공간을 생성할 경우, 상기 스트라이프가 포함되는 블록들이 동시에 클리닝 되어야 한다. 앞에서 언급한 바와 같이, 상기 스트라이프가 포함되는 블록들은 동적 스트라이프 그룹(DSG: Dynamic Stripe Group)일 수 있다.
일실시예에 따른, 상기 스트라이프를 위한 공간을 확보하기 위해 모든 플래시 메모리 칩들이 동시에 클리닝 수행이 되어해야 한다. 상기 각각의 플래시 메모리 칩들은 병렬적으로 클리닝을 수행하므로 단일 칩에서의 클리닝과 비슷한 비용을 수반할 수 있다.
그리고, 데이터의 일관성을 보장하기 위해서는 상기 데이터의 클리닝을 수행할 경우 도 10의 흐름도를 참조하여, 다음의 순서로 클리닝이 수행될 수 있다.
일실시예에 따르면, 상기 복수의 스트라이프를 포함하는 클리닝 블록을 생성하고 상기 클리닝 블록 중 유효 페이지가 가장 적은 클리닝 블록을 상기 데이터 클리닝의 대상 블록으로 선택할 수 있다(1010).
우선, 상기 데이터 클리닝의 대상 블록들의 모든 유효 페이지를 여유 페이지로 복사하고(1020), 이와 동시에 상기 스트라이프를 동적으로 구성하고 패리티 쓰기를 완료한다(1030). 이후에, 클리닝 대상 블록들을 소거할 수 있다(1040).
위와 같은 순서를 지켜야 하는 이유는, 상기 패리티 쓰기 도중 오류가 발생하더라도 상기 클리닝 대상 블록들의 기존 데이터를 이용하여 복구할 수 있기 때문이다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 장치에 있어서,
    상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 스트라이프 구성부; 및
    상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 패리티 생성부
    를 포함하는 제어 장치.
  2. 제1항에 있어서,
    복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행하는 제어 장치.
  3. 제1항에 있어서,
    상기 복수 개의 페이지에 쓰여진 데이터의 클리닝의 경우, 상기 복수의 스트라이프를 포함하는 클리닝 블록을 생성하고, 상기 클리닝 블록 중 유효 페이지가 가장 적은 클리닝 블록을 상기 데이터 클리닝의 대상 블록으로 선택하여 상기 데이터 클리닝을 수행하는 클리닝부
    를 더 포함하고,
    상기 클리닝부는, 상기 데이터 클리닝의 대상 블록을 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록으로 복사하고, 상기 데이터 클리닝의 대상 블록에 대해 상기 데이터 클리닝을 수행하는 제어 장치.
  4. 제1항에 있어서,
    마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 판단부
    를 더 포함하고,
    상기 패리티 생성부는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 제어 장치.
  5. 제4항에 있어서,
    상기 패리티 생성부는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하는 제어 장치.
  6. 제5항에 있어서,
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성하는 제어 장치.
  7. 제4항에 있어서,
    상기 제1 물리적 페이지 넘버에 대응하는 클린 페이지 중 어느 하나의 클린 페이지에 생성된 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어하는 제어 장치.
  8. 제4항에 있어서,
    상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어하는 제어 장치.
  9. 멀티 채널 인터리빙을 통해 페이지 데이터 쓰기가 처리되는 경우, 마지막으로 요청된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 판단부; 및
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 패리티 생성부
    를 포함하는 제어 장치.
  10. 제9항에 있어서,
    상기 패리티 생성부는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하는 제어 장치.
  11. 제10항에 있어서,
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성하는 제어 장치.
  12. 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 방법에 있어서,
    상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 단계; 및
    상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 단계
    를 포함하는 제어 방법.
  13. 제12항에 있어서,
    복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행하는 제어 방법.
  14. 제12항에 있어서,
    마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 단계
    를 더 포함하고,
    상기 패리티 데이터를 생성하는 단계는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 제어 방법.
  15. 제14항에 있어서,
    상기 패리티 데이터를 생성하는 단계는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하고, 및
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성하는 제어 방법.
  16. 제14항에 있어서,
    상기 제1 물리적 페이지 넘버에 대응하는 클린 페이지 중 어느 하나의 클린 페이지에 생성된 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어하는 제어 방법.
  17. 제14항에 있어서,
    상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어하는 제어 방법.
  18. 멀티 채널 인터리빙을 통해 페이지 데이터 쓰기가 처리되는 경우, 마지막으로 요청된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 단계; 및
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 단계
    를 포함하는 제어 방법.
  19. 제18항에 있어서,
    상기 패리티 데이터를 생성하는 단계는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하고, 및
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성하는 제어 방법.
  20. 제12항 내지 제19항 중 어느 한 항의 제어 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
PCT/KR2013/001029 2012-02-09 2013-02-08 신뢰성 있는 ssd를 위한 효율적인 raid 기법 WO2013119074A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/377,159 US9496051B2 (en) 2012-02-09 2013-02-08 Efficient raid technique for reliable SSD
CN201380006059.5A CN104471546B (zh) 2012-02-09 2013-02-08 用于提高固态硬盘可靠性的有效的磁盘冗余阵列技法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2012-0013076 2012-02-09
KR20120013076 2012-02-09
KR10-2013-0013954 2013-02-07
KR1020130013954A KR101445025B1 (ko) 2012-02-09 2013-02-07 신뢰성 있는 ssd를 위한 효율적인 raid 기법

Publications (1)

Publication Number Publication Date
WO2013119074A1 true WO2013119074A1 (ko) 2013-08-15

Family

ID=48947778

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2013/001029 WO2013119074A1 (ko) 2012-02-09 2013-02-08 신뢰성 있는 ssd를 위한 효율적인 raid 기법

Country Status (1)

Country Link
WO (1) WO2013119074A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016029524A1 (zh) * 2014-08-28 2016-03-03 北京兆易创新科技股份有限公司 一种用于闪存的网络存储设备及其处理方法
WO2016200764A1 (en) * 2015-06-10 2016-12-15 Micron Technology, Inc. Stripe mapping in memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6467022B1 (en) * 1998-04-16 2002-10-15 International Business Machines Corporation Extending adapter memory with solid state disks in JBOD and RAID environments
US20080250270A1 (en) * 2007-03-29 2008-10-09 Bennett Jon C R Memory management system and method
US7934055B2 (en) * 2006-12-06 2011-04-26 Fusion-io, Inc Apparatus, system, and method for a shared, front-end, distributed RAID
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6467022B1 (en) * 1998-04-16 2002-10-15 International Business Machines Corporation Extending adapter memory with solid state disks in JBOD and RAID environments
US7934055B2 (en) * 2006-12-06 2011-04-26 Fusion-io, Inc Apparatus, system, and method for a shared, front-end, distributed RAID
US20080250270A1 (en) * 2007-03-29 2008-10-09 Bennett Jon C R Memory management system and method
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IM, SOO JUN ET AL.: "Flash-Aware RAID Techniques for Dependable and High-Performance Flash Memory SSD.", IEEE TRANSACTIONS ON COMPUTERS, vol. 60, no. 1, January 2011 (2011-01-01), pages 80 - 92, XP055080145 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016029524A1 (zh) * 2014-08-28 2016-03-03 北京兆易创新科技股份有限公司 一种用于闪存的网络存储设备及其处理方法
WO2016200764A1 (en) * 2015-06-10 2016-12-15 Micron Technology, Inc. Stripe mapping in memory
US9766837B2 (en) 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
US10339005B2 (en) 2015-06-10 2019-07-02 Micron Technology, Inc. Stripe mapping in memory
US11042441B2 (en) 2015-06-10 2021-06-22 Micron Technology, Inc. Stripe mapping in memory

Similar Documents

Publication Publication Date Title
KR101445025B1 (ko) 신뢰성 있는 ssd를 위한 효율적인 raid 기법
US10162533B2 (en) Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US7831764B2 (en) Storage system having plural flash memory drives and method for controlling data storage
WO2014011011A1 (ko) 솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
US9684591B2 (en) Storage system and storage apparatus
TWI397815B (zh) 記憶體系統
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
US7373477B2 (en) Fragmentation executing method and storage device
US20160004642A1 (en) Storage device and method for controlling storage device
US10310764B2 (en) Semiconductor memory device and storage apparatus comprising semiconductor memory device
GB2513377A (en) Controlling data storage in an array of storage devices
US9891989B2 (en) Storage apparatus, storage system, and storage apparatus control method for updating stored data stored in nonvolatile memory
JP2008009635A (ja) ストレージシステム及びそのデータ保護方法
TW201303587A (zh) 用於在快閃記憶體介質控制器中處理儲存在快閃記憶體記憶體的頁中的中繼資料的方法、裝置及快閃記憶體記憶體系統
US20140026013A1 (en) Storage control apparatus and error correction method
WO2013176376A1 (ko) 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
JP5063152B2 (ja) 代替ページのプールを使用してdma書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラム
US20180157414A1 (en) Storage device and control method of the same
US20120221809A1 (en) Storage apparatus and data processing method of the same
US9542284B2 (en) Buffered automated flash controller connected directly to processor memory bus
WO2013119074A1 (ko) 신뢰성 있는 ssd를 위한 효율적인 raid 기법
US20130024616A1 (en) Storage System and Its Logical Unit Management Method
US9851907B2 (en) Control device, storage system, and method of controlling a plurality of storage devices
US9940034B2 (en) Reducing read access latency by straddling pages across non-volatile memory channels
JP5910596B2 (ja) ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム

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: 13746801

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 14377159

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13746801

Country of ref document: EP

Kind code of ref document: A1