throbber
(19) United States
`(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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket