`(12) Patent Application Publication (10) Pub. No.: US 2007/0276996 A1
`Caulkins et al.
`(43) Pub. Date:
`Nov. 29, 2007
`
`US 20070276996A1
`
`(54) SOFTWARE PROGRAM FOR MANAGING
`AND PROTECTING DATA WRITTEN TO A
`HYBRD SOLD-STATE DISK DRIVE
`
`(76) Inventors:
`
`Jason Caulkins, Redding, CA
`(US); Michael Richard Beyer,
`Redding, CA (US)
`
`Correspondence Address:
`CENTRAL COAST PATENT AGENCY, INC
`3 HANGAR WAY SUITED
`WATSONVILLE, CA 95076
`
`(21) Appl. No.:
`
`11/439,620
`
`(22) Filed:
`
`May 23, 2006
`
`Publication Classification
`
`(51) Int. Cl
`(2006.01)
`Goris/00
`(52) U.S. Cl. ....................................................... 711/113
`(57)
`ABSTRACT
`A machine-readable medium is provided having stored
`thereon a set of instructions that cause a controller of
`Solid-state disk having a first portion of Solid-state memory
`of a volatile nature and a second portion of Solid-state
`memory of a non-volatile nature to perform a method
`including (a) receiving at the controller, write data for
`writing to an assigned address in non-volatile memory, (b)
`determining at the controller if there is existing data asso
`ciated with a write address in volatile memory, the write
`address referencing the assigned address, and (c) upon
`finding data in volatile memory held for the assigned write
`address or not at act (b), writing the data into the volatile
`memory at a predestinated write address in Volatile memory.
`
`401
`
`402
`
`H-SYS
`Boot
`
`Recognize
`Drive
`
`
`
`405
`
`400
`-
`
`Controller
`Initialize
`Drive
`
`SYS
`READY
`
`
`
`CTL Lookup
`LBA in
`Flash Table
`
`408
`
`409
`
`411
`
`
`
`
`
`YES
`Invalidate Old FLBA
`in RAM table; add new - f
`FLBA to RAM table
`
`Data In
`RAM?
`
`NO Update RAM
`Table with
`the FLBA entry
`
`410
`
`Update Flash
`Table with
`RLBA entry
`
`Update Flash table
`with new RLBA
`
`
`
`
`
`
`
`HPE, Exh. 1022, p. 1
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 1 of 10
`
`US 2007/0276996 A1
`
`
`
`LED 2
`112-
`107b
`ACCESS DSS Controller
`N- 104
`
`Host System Storage Controller
`
`Fig. 1
`
`HPE, Exh. 1022, p. 2
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 2 of 10
`
`US 2007/0276996 A1
`
`
`
`
`
`DDILLLLLL IZIZIZI_I_I_I_I ||? DDDDDDDDDDDDDDD:
`
`EZTETTI,II,II,II,II,II,III| | | | | | | | | | | | | | | |
`
`TTTTTTTTTTILLLLËHHHHHHHHHHHHHHf
`
`
`
`
`
`|||||Z|ZEZ|| || || || || |_|_|_| ||T. DITTILLLLLLLLLLE,
`
`~----------------------------------------------------------????-------------------------------------^--l-^------------90Z
`
`é. | ? || || was
`
`Z0 I
`
`
`
`
`
`
`
`HPE, Exh. 1022, p. 3
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 3 of 10
`
`US 2007/0276996 A1
`
`-- - - - - - - - -- a------------------- see ---------
`
`•
`
`æ::
`
`• • • • • • • • • • • • • • • • • • • • • • • • • •
`
`909
`
`as as a
`
`a
`
`-
`
`-
`
`-
`
`-
`
`- as
`
`
`
`
`
`
`
`0 I I
`
`= = = = = = = = = = = = = = = = = = = = = = = • • • • • •*
`
`*
`
`X
`
`sess
`
`Z09)
`
`HPE, Exh. 1022, p. 4
`
`
`
`Patent Application Publication
`
`US 2007/0276996 A1
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`100g
`
`SÅS-H
`
`HPE, Exh. 1022, p. 5
`
`
`
`Patent Application Publication
`
`009
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`HPE, Exh. 1022, p. 6
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 6 of 10
`
`US 2007/0276996 A1
`
`p330XCH
`
`ÖXVVN
`
`9 (81)
`
`O
`Z.
`
`L09
`
`M g
`
`QueduoO
`
`909
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`009909Z09| 09
`
`HPE, Exh. 1022, p. 7
`
`
`
`Patent Application Publication Nov. 29, 2007 Sheet 7 of 10
`
`US 2007/0276996 A1
`
`700
`
`-
`
`Advance (SP)
`in RAM table
`
`701
`
`702
`
`VALID
`
`NO
`
`707
`
`704
`
`
`
`
`
`LBA in
`Valid Range?
`
`
`
`
`
`
`
`YES
`Select
`Newest
`RLBA
`
`
`
`Move Data to
`Selected LBA
`
`703
`
`Advance (SP)
`to next LBA
`
`705
`
`Move Data to
`Flash
`
`
`
`Fig. 7
`
`HPE, Exh. 1022, p. 8
`
`
`
`Patent Application Publication Nov. 29, 2007 Sheet 8 of 10
`
`US 2007/0276996 A1
`
`/ 800
`
`801
`
`802
`
`
`
`Move data
`to Flash
`
`Increment
`Counter
`
`803
`
`
`
`Compare Total
`to Preset #
`Writes
`
`805
`
`
`
`
`
`
`
`Isolate Block
`Activate
`Spare Block
`
`Increment
`Block Rotation
`Counter
`
`Fig. 8
`
`HPE, Exh. 1022, p. 9
`
`
`
`Patent Application Publication
`
`US 2007/0276996 A1
`
`006
`
`
`
`HPE, Exh. 1022, p. 10
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 10 of 10
`
`US 2007/0276996 A1
`
`
`
`SP FLBA-91
`FLBA-4
`
`FLBA-32
`FLBA-2
`
`1000
`
`
`
`DATA
`
`DATA
`Old DATA
`
`DATA
`
`Old DATA
`
`Old DATA
`
`DATA
`DATA
`DATA
`Old DATA
`DATA
`
`DATA
`
`Flash LBA
`Table
`
`FLBA
`
`1006
`
`Flash
`Space
`
`Fig. 10
`
`HPE, Exh. 1022, p. 11
`
`
`
`US 2007/0276996 A1
`
`Nov. 29, 2007
`
`SOFTWARE PROGRAM FOR MANAGING
`AND PROTECTING DATA WRITTEN TO A
`HYBRD SOLD-STATE DISK DRIVE
`
`CROSS-REFERENCE TO RELATED
`APPLICATIONS
`
`0001 NA
`
`BACKGROUND OF THE INVENTION
`0002 1. Field of the Invention
`0003. The present invention is in the field of computer
`data storage devices and pertains particularly to a system
`including methods and apparatus for high-speed data storage
`and access from a computing device.
`0004 2. Discussion of the State of the Art
`0005. In the field of data storage, non-volatile mechanical
`disk drives have long been relied upon for non-volatile short
`and long-term data storage. More recently, Solid-state non
`Volatile memory has been implemented for data storage
`needs, especially in Small potable electronic computing
`devices such as cellular telephones, video cameras and the
`like. Volatile memory is a solid-state memory typically only
`used as a high-speed temporary memory Such as random
`access memory (RAM) of which there are many variations
`known. Common versions of RAM include Dynamic Ran
`dom. Access Memory (DRAM) and Static Random Access
`Memory (SRAM). Flash memory is a solid-state high-speed
`data storage Solution used primarily in handheld devices or
`Universal Serial Bus (USB) peripheral devices. Flash
`memory provides a non-volatile memory for storing data
`with update speeds approaching that of RAM read and
`writes access. However, erasing and rewriting to flash
`memory is comparatively much slower than RAM as entire
`flash blocks or cells must be erased at one time.
`0006 Flash memory has practical uses in cell phones,
`Video cameras, plug-in cards and USB memory devices for
`portable laptop computers and the like. Disadvantages of
`using flash as permanent storage in robust systems include
`the fact that a number of writes performed on the memory
`defines the life or Mean Time before Failure (MTBF) of a
`flash memory chip. Another disadvantage is that access to
`data, while random for reads and writes is still slower than
`RAM.
`0007. It has occurred to the inventor that there is a need
`for faster data management speeds in the computing industry
`in general and in particular in the area of robust servers and
`other business machines. Further, it is desired to provide a
`pure solid-state disk drive that may be implemented as a
`normal hard drive package that is recognized and read by a
`host system as a single non-volatile storage disk, which is
`Swappable with existing mechanical hard disk drives used in
`many computing systems including desktop computers, data
`servers, and in mass storage systems using multiple disks
`stacked in custom or standard array. A system and method
`for implementing the same would provide much greater data
`storage and access speeds for computing systems in general.
`
`SUMMARY OF THE INVENTION
`0008 According to an embodiment of the present inven
`tion, a machine-readable medium is provided having stored
`thereon a set of instructions that cause a controller of
`Solid-state disk having a first portion of Solid-state memory
`of a volatile nature and a second portion of Solid-state
`
`memory of a non-volatile nature to perform a method
`including (a) receiving at the controller, write data for
`writing to an assigned address in the non-volatile memory,
`(b) determining at the controller if there is existing data
`associated with a write address in the volatile memory, the
`write address referencing the assigned address, and (c) upon
`finding data in the Volatile memory held for the assigned
`write address or not at act (b), writing the data into the
`volatile memory at a predestinated write address of the
`Volatile memory.
`0009. In one aspect, in act (a), the write address is a
`logical block address (LBA) tabled in a Flash LBA table
`held in a reserved portion of the volatile memory and the
`non-volatile memory is one of a NAND Flash memory or
`another form of non-volatile memory. In this aspect, in act
`(b), the determination is made by looking for a reference to
`a LBA of volatile memory in the Flash LBA table at the
`assigned LBA entry in the table. In this aspect in act (c), the
`predestinated write address is determined by a pointer
`pointing to the predestinated LBA enumerated in a RAM
`LBA table held in a reserved portion of the volatile memory
`and the volatile memory is RAM or a variation thereof. Also
`in this aspect, in act (c), if previous data was found for the
`assigned Flash LBA, then the RAM LBA entry in the Ram
`LBA table associated to the previous data written is updated
`to invalidate the previous data prior to write to Flash. In one
`aspect in act (c), the data written is held in the Volatile
`memory until one or more trigger events cause the data to be
`moved into the non-volatile memory.
`0010. According to another aspect, the machine-readable
`medium has stored thereon a further set of instructions that
`cause the controller to perform a method including, (a)
`writing data to the volatile memory of the disk and refer
`encing an address of the non-volatile memory to the address
`of the data in the volatile memory, (b) filling a portion of the
`Volatile memory by repeating act (a) until a predetermined
`full threshold value of data in the volatile memory is
`exceeded, (c) upon exceeding the threshold value of act (b).
`locating the oldest data written in the volatile memory and
`determining the validity state of that data, and (d) writing the
`oldest data into the non-volatile memory only if the condi
`tions exist that the data is valid and that no other useable
`address in the volatile memory can be found to accept the
`valid data.
`0011. In this aspect, in act (a), the volatile memory is
`RAM or a variation thereof and the non-volatile memory is
`a type of Flash or other non-volatile memory. Also in this
`aspect, in act (a), the addressing is based on LBAS main
`tained in tables, one representing RAM and one representing
`Flash. In a variation of this aspect, in act (c), pointers are
`used in the table representing RAM space to determine at a
`given point in time when the threshold value has been
`exceeded, the determination based on a difference in LBA
`entry positions.
`0012. According to a variation of the just described
`embodiment, the machine-readable medium further includes
`an act (e) for repeating act (d) of the further set of instruc
`tions according to the conditions only until a predetermined
`minimum threshold value of data in the volatile memory is
`realized.
`0013. In still another embodiment, the machine-readable
`medium has stored thereon a further set of instructions that
`cause the controller to perform a method including, (a)
`performing a write operation to an active unit of one or more
`
`HPE, Exh. 1022, p. 12
`
`
`
`US 2007/0276996 A1
`
`Nov. 29, 2007
`
`than one unit of the non-volatile memory portion of the disk,
`(b) advancing a counter by one increment as a result of act
`(a), (c) repeating acts (a) and (b) in sequence until a
`predetermined total number of write operations have been
`performed to the active portion of the non-volatile memory,
`(d) upon reaching the predetermined value in act (c), acti
`Vating a previously assigned spare unit of non-volatile
`memory for access at a new location in the linear space of
`the non-volatile memory and designating an active unit as
`the spare unit, (e) resetting the counter to 0 writes, and (f)
`repeating acts (a) through (e).
`0014. In this embodiment, in act (a) of the just described
`set of instructions, the write operation is limited to one LBA
`or a cluster of LBAs of data written and in act (b) the counter
`is incremented for each LBA or a cluster of LBAs of data
`written. Also in this aspect, in act (c) the counter number is
`compared to a value programmed into the controller
`memory.
`0015. In one aspect yet a further act (g) is added to the
`just-described set of instructions for incrementing another
`counter stored in a portion of non-volatile memory reserved
`on the controller, the counter tracking the number of unit
`rotations which have taken place during the life of the
`device, the act carried out once for every act (e) carried out.
`0016. In yet another embodiment, the machine-readable
`medium has stored thereon a further set of instructions that
`cause the controller to perform a method including (a)
`accessing a table held in the volatile memory to look up a
`read address marking the beginning of a requested read
`operation, (b) determining if data exists in the non-volatile
`memory or in the volatile memory for the requested read
`address, (c) upon confirming a memory location represent
`ing or associated to the target address, accessing the memory
`currently holding the data and reading the data, and (d)
`repeating acts (a) through (c) for each address for which a
`read operation is requested.
`
`BRIEF DESCRIPTION OF THE DRAWING
`FIGURES
`0017 FIG. 1 is a block diagram of a high-speed solid
`state non-volatile disk according to an embodiment of the
`present invention.
`0018 FIG. 2 is a block diagram illustrating use of volatile
`and non-volatile memory in combination for storing and
`accessing data on a disk analogous to the disk of FIG. 1
`according to an embodiment of the present invention.
`0019 FIG. 3 is a block diagram illustrating a disk con
`troller for managing disk function according to an embodi
`ment of the present invention.
`0020 FIG. 4 is a flow chart illustrating acts for managing
`writes to a combination RAM and Flash disk according to an
`embodiment of the present invention.
`0021
`FIG. 5 is a flow chart illustrating acts for managing
`data in RAM according to an embodiment of the present
`invention.
`0022 FIG. 6 is a flow chart illustrating acts for protecting
`against RAM data overflow according to an embodiment of
`the present invention.
`0023 FIG. 7 is a flow chart illustrating acts for optimiz
`ing RAM space according to an embodiment of the present
`invention.
`0024 FIG. 8 is a flow chart illustrating acts for write
`balancing Flash memory according to an embodiment of the
`present invention.
`
`0025 FIG. 9 is a process flow chart illustrating acts for
`reading data from a solid-state non-volatile disk according to
`an embodiment of the present invention.
`0026 FIG. 10 is a logical memory map illustrating map
`ping of memory space for RAM and Flash according to an
`embodiment of the present invention.
`
`DETAILED DESCRIPTION
`0027 FIG. 1 is a block diagram of a hybrid solid-state
`storage device 100 according to an embodiment of the
`present invention. Device 100 is adapted as a solid-state
`storage disk drive that may be recognized by any standard
`operating system as a standard data storage disk. Device 100
`includes a host interface 108, which may be a Small Com
`puter System Interface (SCSI) or one of many known
`variations thereof. Known variations include SCSI 1, 2, and
`3, Wide SCSI, Fast SCSI, Ultra SCSI, Fast Wide SCSI, Ultra
`Wide SCSI, and so on. It may be assumed in this embodi
`ment and throughout this specification that disk 100 is
`adapted for SCSI input/output from the host system exem
`plary of one embodiment. However this should not be
`construed as a limitation as disk 100, with slight modifica
`tions, may readily be adapted to be recognized using a
`Integrated Drive Electronics/Advanced Technology Attach
`ment (IDE/ATA) interface, an Enhanced Small Device Inter
`face (ESDI), a Serial Advanced Technology Attachment,
`(SATA), or a Parallel Advanced Technology Attachment
`(PATA) interface. Disk 100 may also be adapted to work
`with enterprise Fibre Channel data storage networks and
`serial attached SCSI (SAS) networks. In this particular
`embodiment, disk 100 may be thought of as a SCSI "hot
`Swappable' drive using the appropriate form factor and
`interfaces. With the addition of an onboard disk controller
`functionality (described below) the system may be adapted
`to an expansion bus embodiment.
`0028. In one embodiment, disk 100 is packaged accord
`ing to standard dimensions for disk drives conforming
`substantially to a 4 inch by 1 inch by 5 and 34 inch form
`factor or other standard form factors. Disk 100, in this
`exemplary embodiment, reports to a host system storage
`controller illustrated herein as host system storage controller
`108 as a SCSI low voltage differential (LVD) U320 disk. In
`this exemplary embodiment, interface 108 is a standard
`SCSI SCA 80-pin connector, however one with skill in the
`art will recognize that other connectors might be used
`depending on SCSI version.
`(0029. Disk 100 includes a volatile memory 102. Memory
`102 may, in one embodiment, be a version of RAM known
`as synchronous dynamic RAM or SDRAM. In this embodi
`ment SDRAM 102 may include an enhancement known as
`double data rate (DDR) which transfers data both on the
`rising and falling edge of the computer processing unit
`(CPU) clock unit. Other types of RAM are known in the art
`and are available to the inventor and might be provided to
`disk 100 without departing from the spirit and scope of the
`present invention. Volatile memory 102 may hold up to 8
`gigabytes (GB) or more of data including an extra GB
`reserved for error correcting code (ECC) data. One with skill
`in the art will recognize that volatile memory 102 may be
`more than or less than 8 GB without departing from the spirit
`and scope of the present invention.
`0030) Disk 100 includes at least one non-volatile memory
`103a and may include additional non-volatile memories
`such as a non-volatile memory 103b illustrated herein as an
`
`HPE, Exh. 1022, p. 13
`
`
`
`US 2007/0276996 A1
`
`Nov. 29, 2007
`
`alternate memory block, which may be accessed in place of
`or in addition to block 103a. In one embodiment, memory
`103a is Flash memory. In this embodiment, memory 103b is
`also Flash memory. Flash memory blocks 103a and 103b
`may be one of or a combination of NOR Flash or NAND
`Flash without departing from the spirit and scope of the
`present invention. In one preferred embodiment, NAND
`Flash is used because of a higher density of data storage
`capacity. However, the use of NAND or NOR Flash should
`not be construed as a limitation as future implementations of
`non-volatile memory may also be contemplated and applied
`without departing from the spirit and scope of the present
`invention. One example is Magnetoresistive Random Access
`Memory (MRAM), which is currently being developed.
`Another example is Ferroelectric Random Access Memory
`(FRAM). Still another example of non-volatile RAM
`(NVRAM) is Nano Random Access Memory (NRAM).
`0031. In one embodiment, non-volatile memory 103a is
`provided as a plug-in memory card, Sometimes referred to in
`this specification as a daughter card. As such, memory 103b
`may be thought of as an optional daughter card. There may
`be more than two non-volatile memories plugged into disk
`100 without departing from the spirit and scope of the
`present invention. For purpose of discussion only, the inven
`tor provides up to 3 Flash cards or daughter cards that may
`be shipped with disk 100, each card written to in isolation
`from the other cards according to a unique “write balancing
`technique that will be described later in this specification. In
`a preferred implementation a minimum of 8 GB of non
`volatile memory is provided, but up to 128 GB of non
`Volatile memory may be conveniently provided on a single
`disk 100 within the standard form factor boundaries.
`0032. Disk 100 has an onboard power supply or sub
`system 105 provided thereto and adapted in one embodi
`ment, to receive direct current (DC) power from the host
`system. This is illustrated herein by a logical arrow labeled
`“Host DC” from controller 109 to power supply 105. Disk
`100 also includes an onboard chargeable power source 106.
`Power source 106 may be a rechargeable cell or battery or
`a bank of those arrayed and adapted to provide backup
`power to disk 100 in the event that power from a connected
`host system is interrupted. Power supply 105 has connection
`to power source 106 via at least a signal port if not a logical
`bus structure labeled herein, data. Power source 106 auto
`matically detects whenever there is an interruption or lack of
`power coming in from the host and thereafter provides the
`power needed to protect against loss of RAM data and to
`provide component power for ongoing tasks being per
`formed on the disk at the time of primary power loss,
`including the task of moving data from RAM into Flash. It
`is important to note herein that disk 100 may be provided as
`a hot swappable storage disk.
`0033 Disk 100 has an onboard controller 104 provided
`thereto and adapted to perform all of the onboard tasks
`related to data management and protection of data written to
`disk 100 by one or more host systems. It is noted herein that
`disk 100 may be adapted in one embodiment as a shared data
`storage disk drive. Controller 104, among other tasks, is
`adapted primarily to manage data writes and reads incoming
`from a host to both volatile memory 102 and to non-volatile
`memory 103a. Controller 104 is provided in an electronics
`board form factor that includes an onboard controller chip
`(CTL. Chip) 112. CTL chip 112 may be a field program
`mable gate array (FPGA) or it may be an application specific
`
`integrated circuit (ASIC). In this embodiment, an FPGA is
`the preferred implementation because of its programmable
`nature.
`0034 Controller 104 has logical data bus connection to
`memory blocks 102 and 103a and 103b in this example and
`logical bus communication (SCSI) through interface 108 to
`a host system controller 109 of a host system. The bus
`structures are logically illustrated herein as block arrows
`labeled “Data'. In this exemplary implementation, CTL chip
`112 is a FPGA and has firmware (FW) 110 provided thereto
`and adapted as “controller intelligence' for managing RAM
`cache and for determining which memory type to read and
`write from. FW 110 is a compilation of instruction sets that
`cause the machine (controller) to perform tasks of writing to
`RAM, reading from RAM, moving data from RAM to flash,
`writing directly to flash, and reading from flash. FW 112 also
`contains special instructions for managing RAM cache
`according to certain pre-specified conditions, which may
`exist at any given point in time during the operation of disk
`1OO.
`0035 Disk 100 has one or more visual indicators illus
`trated herein as 107a and 107b that are connected to CTL
`chip 112 via signal lines and that are visible from the outside
`of disk 100. In one embodiment, visual indicators 107a and
`107 b are light emitting diodes (LEDs). LED 107a may
`indicate on/off status of disk 100. LED 107b may indicate
`read/write status of controller 104.
`0036 Controller 104 makes use of one or more tables to
`facilitate management of data and data tasks with regard to
`data being stored in and written to or read from volatile and
`non-volatile memories 102 and 103a respectively. In this
`regard, some portion of volatile memory 102 may be
`reserved within block 102 to contain one or more software
`tables. In one embodiment, Local Block Address (LBA)
`access tables 111a are provided to reside in a reserved
`portion of volatile memory 102. Tables 111a may include
`one table for containing LBAS used for writing data to or
`reading data from volatile memory 102 and one table for
`containing LBAS used for writing data to and reading data
`from non-volatile memory 103a and/or any other connected
`cards such as 103b.
`0037. In another embodiment, the LBA table or tables
`may be provided as local tables 111b accessible to CTL chip
`112 onboard controller 104 using one or more additional
`RAM chips mounted to the controller board and bussed to
`CTL chip 112. In still another embodiment, a predetermined
`amount of non-volatile memory may also be reserved for
`storing a flash LBA table. In this case, reserved non-volatile
`flash may be provided locally to controller 104 or reserved
`on each useable flash daughter card installed in disk 100.
`0038 Controller 104 has a unique relationship with vola
`tile memory 102 and non-volatile memories 103a and 103b
`in that it attempts to utilize volatile memory 102 as much as
`is possible for data writing and data reading while isolating
`non-volatile memory from data writes as much as is pos
`sible. Controller 104 accomplishes memory management
`and access using LBA access tables and updates those tables
`with the most current data storage sates recorded. More
`detail regarding LBA tables and the purposes of those tables
`will be provided later in this specification.
`0039. In general, controller 109 views disk 100 has a
`single SCSI non-volatile disk drive. Write and read requests
`coming in from host controller 109 are carried out by
`onboard controller 104 according to unique data manage
`
`HPE, Exh. 1022, p. 14
`
`
`
`US 2007/0276996 A1
`
`Nov. 29, 2007
`
`ment methods that consider available volatile and non
`volatile memory on disk 100 as a hybrid of RAM and Flash
`for Smart data caching and data access from cache or Flash
`and for permanent data storage to non-volatile memory at
`appropriate but, optimally, infrequent times.
`0040. Non-volatile memory blocks 103a and 103b (alter
`nate block) are provided in one embodiment, in the form of
`multiple high-density Flash chips strategically mounted to a
`plug-in daughter card and connected in parallel for data
`communication with controller 104. In one embodiment,
`there is a 256-bit data path created for Flash communication,
`however 128-bit or 64-bit data paths may be used in some
`embodiments. Volatile memory, in one example, SDRAM
`DDR-2 is, in a preferred embodiment, provided up to a
`storage capacity that rivals the non-volatile data storage
`capacity of the drive. A unique write-balancing technique is
`provided for reducing wear to flash memory caused by
`writing to flash. Write balancing involves designating at
`least one flash unit as a spare unit then rotating that unit into
`service after a number of writes to flash have occurred and
`designating a next spare unit for the next rotation. More
`detail on flash write balancing will be provided later in this
`specification.
`0041. A host reading and writing to disk 100 sees LBAs
`as LBAS of memory in a single (non-volatile) memory disk.
`However, controller 104 distinguishes between RAM (vola
`tile) LBAs and corresponding Flash (non-volatile) LBAs
`when writing and reading data on behalf of the host system.
`Tables 111a or 111b local to controller 104 may include a
`Flash table and a RAM table viewable only by the local
`controller (104). Each LBA representing a unit of volatile
`memory corresponds to and is cross-referenceable in at least
`one table to a LBA representing a like unit of non-volatile
`memory.
`0042. The LBA access table for volatile memory incor
`porates a sliding start point and end point that together define
`a valid range of useable volatile memory. When data is
`moved from volatile to non-volatile memory, the start point
`for that moved data referencing an LBA where the data is
`stored is incremented up in the table to the next LBA in the
`table. Likewise, the end point is incremented to a next LBA
`entry every time data is written to volatile memory. The use
`of both volatile and non-volatile storage in the hybrid
`Solid-state storage disk of the present invention is mitigated
`by controller 104 such that data writes to the non-volatile
`memory are minimized as much as is possible, the bulk of
`which occur only at power down of the host system at which
`time all valid data stored in volatile memory is moved into
`non-volatile memory. Additionally, rotating between desig
`nated blocks of non-volatile memory based on total writes to
`that memory further enhances the MTBF of the non-volatile
`memory portion of the disk. More about management of
`volatile and non-volatile memory of disk 100 is discussed in
`enabling detail further below.
`0043 FIG. 2 is a block diagram 200 illustrating use of
`Volatile memory and non-volatile memory in combination as
`a single hybrid non-volatile memory for storing and access
`ing data on a disk analogous to the disk of FIG. 1 according
`to an embodiment of the present invention. Diagram 200 is
`logically represented herein and should be considered exem
`plary of one possible embodiment for managing two or more
`memories of mixed type as a single non-volatile memory
`Space.
`
`0044) For the purpose of illustration memory 102, which
`in this example, is SDRAM is logically divided into units of
`memory 201a. In one embodiment, units 201a each hold 512
`bytes of data although any Suitable unit of measure may be
`used. Each cluster 201a is represented in a RAM table
`illustrated herein as a RAM table 205 stored in a reserved
`portion of SDRAM 207. As discussed above, the reserved
`portion of RAM may be partitioned from SDRAM 102 or it
`may be separate RAM chips mounted to the controller board
`and accessible to the controller chip.
`0045. Non-volatile memory 103, in this case, Flash
`memory, is also logically divided into memory units 201b.
`Units 201b may be 512 bytes large or of some other block
`size than units 201a without departing from the spirit and
`scope of the present invention. Each unit 201b in Flash
`memory may be represented by a LBA that is stored in a
`Flash table illustrated herein as Flash table 206 stored, in this
`case, in reserved SDRAM 207. It is noted herein that in one
`embodiment, Flash table 206 may instead be stored in a
`reserved portion of Flash memory without departing from
`the spirit and scope of the present invention. In the latter
`case, a reserved portion of Flash memory may be partitioned
`from active Flash blocks, or may be provided as a set of
`Flash chips mounted onboard controller 104 described fur
`ther above.
`0046 Controller 104 described further above is logically
`represented in this example by FPGA 202, which includes
`FW 110 described above with respect to FIG. 1. In this case
`FPGA 202 and loaded FW provides all of the controller
`function. FPGA 202 has a data channel (HOST) to a host
`controller of a host system. FPGA 202 also has a data
`channel to reserved SDRAM 207. FPGA 202 has a data
`channel to Flash memory 103 through a read/write interface
`204 and a data channel to SDRAM 102 through a read/write
`interface 203. One with skill in the art will understand that
`the functions described above may be distributed over more
`than one chip or to a combination of chips and a microcon
`trollers without departing from the spirit and scope of the
`present invention.
`0047 Firmware loaded onto FPGA 202 includes an ECC
`utility, logic for managing data stored on the hybrid solid
`state disk, and a cache compacting algorithm for further
`optimizing isolation of Flash memory 103 from writes
`during normal operation. FPGA 202 contains at least three
`programmable values that are predetermined and are used in
`conjunction with management of RAM LBA table 205.
`These values are a RAM minimum (RAM MIN) value (a):
`a (RAM FULL) value (b); and a RAM maximum (RAM
`MAX) value (c) (optional). The just described values are
`used by FW loaded on FPGA 202 to manage the current
`capacity of SDRAM 102 during operation.
`0048 RAM LBA table 205 lists all of the logical LBAs
`representing units 201a in SDRAM 102. Each LBA appears
`sequentially from LBA-1 to LBA-N. FPGA 202 utilizes at
`least three LBA pointers when consulting RAM LBA table
`205 for determining at least one SDRAM memory range
`logically in the table that will hold valid data and at least one
`buffer Zone where data should not be written except as a last
`resort. For example, table 205 has a RAM start pointer
`(RAMSP) and a RAM end pointer (RAM EP). RAM (SP)
`points to the current beginning LBA of a defined range of
`LBAs, the current end of which is pointed to by the RAM
`(EP). It is important to note herein that this range is flexible
`in that it never equals the total SDRAM memory space in
`
`HPE, Exh. 1022, p. 15
`
`
`
`US 2007/0276996 A1
`
`Nov. 29, 2007
`
`units and that it expands accordingly with writes of new data
`into SDRAM and retracts ac