`(12) Patent Application Publication (10) Pub. No.: US 2007/0276994 A1
`(43) Pub. Date:
`Nov. 29, 2007
`Caulkins et al.
`
`US 20070276994A1
`
`(54) METHODS FOR MANAGING DATA WRITES
`AND READS 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,615
`
`(22) Filed:
`
`May 23, 2006
`
`Publication Classification
`
`(51) Int. Cl.
`(2006.01)
`G06F 3/00
`(52) U.S. Cl. ....................................................... 711/113
`(57)
`ABSTRACT
`A method for writing data to a 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, and a controller for controlling data operations to the
`memory includes acts of (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 associated with a write address in Volatile memory, the
`write address referencing the assigned address in Volatile
`memory; 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
`
`403
`
`404
`
`405
`
`400
`-
`
`H-SYS
`
`(e) Drive
`
`Recognize
`
`Controller
`-
`
`Initialize
`
`Drive
`
`
`
`
`
`41
`
`
`
`
`
`
`
`
`Invalidate Old FLBA
`in RAM table; add new
`FLBA to RAM table
`
`
`
`
`
`Update Flash table
`with new RLBA
`
`Host
`Write
`Request
`
`SYS
`READY
`
`
`
`407
`CTL Lookup
`LBA in
`Flash Table
`
`Update RAM
`Table with
`the FLBA entry
`
`Update Flash
`Table with
`RLBA entry
`
`
`
`HPE, Exh. 1023, p. 1
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 1 of 10
`
`US 2007/0276994 A1
`
`in
`
`
`
`102 Solid State Disk
`Volatile Memory
`111a :
`
`Tabl
`A
`CCCSS a CS
`our or us was a so a soo as as a const 107b
`104
`
`"o
`
`LED 2
`
`Host System Storage Controller
`
`Fig. 1
`
`HPE, Exh. 1023, p. 2
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 2 of 10
`
`US 2007/0276994 Al
`
`
`
`£01WanSed
`
`
`
`PTTPEEEEyey2iZy2)
`LOOXTXTXTXTXEXEXTXEXLYLYLX1X1
`
`Seceecmanennnncnnennnennennnneaneewnsnseenceseneeneanenaeneeeeeeeneeneeeeneeneneenneneenesnennenssneenenesessnennessnesees”
`
`PCCize
`
`COCO
`
`ALTEee
`
`CCClaizize
`
`COLEEee
`
`PTiziziz-fFEL
`
`PEtttfziziz
`
`CigEo
`
`
`
`SOULS/PeOY
`
`B10¢
`
`HPE, Exh. 1023, p. 3
`
`HPE, Exh. 1023, p. 3
`
`
`
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 3 of 10
`
`US 2007/0276994 A1
`
`-------------------------------------------
`
`#709
`
`90ç-ºº|2-
`
`
`
`***-----------------------------------------^----- - -------^-------------------------------------------------------*
`
`?
`
`----------------------------^-----?-------~--~~~ ¡ F -----------------------------------------------------------,
`
`g '81-I
`
`as a sess so ... bass is is
`
`is
`
`Jen9 O/I
`
`008
`
`?.
`
`Z09
`
`HPE, Exh. 1023, p. 4
`
`
`
`Patent Application Publication
`
`US 2007/0276994 A1
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`SÅS-H
`
`1008
`
`HPE, Exh. 1023, p. 5
`
`
`
`Patent Application Publication
`
`009
`
`
`
`
`
`
`
`
`
`
`
`
`QueduI0O
`
`909
`
`HPE, Exh. 1023, p. 6
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 6 of 10
`
`US 2007/0276994 A1
`
`009909Z09[09
`
`en?e A XVW 01
`
`9 (81 H.
`
`L09
`
`Queduu00
`
`909
`
`
`
`
`
`
`
`
`
`
`
`
`
`HPE, Exh. 1023, p. 7
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 7 of 10
`
`US 2007/0276994 A1
`
`700
`
`701
`
`702
`
`Advance (SP)
`in RAM table
`
`VALID
`
`INVALID
`
`703
`
`704
`
`
`
`LBA in
`Valid Range?
`
`
`
`
`
`YES
`Select
`Newest
`RLBA
`
`707
`
`708
`
`
`
`Move Data to
`Selected LBA
`
`
`
`Advance (SP)
`to next LBA
`
`Move Data to
`Flash
`
`
`
`
`
`705
`
`706
`
`Fig. 7
`
`HPE, Exh. 1023, p. 8
`
`
`
`Patent Application Publication Nov. 29, 2007 Sheet 8 of 10
`
`US 2007/0276994 A1
`
`/ 800
`
`801
`
`802
`
`Move data
`to Flash
`
`Increment
`Counter
`
`803
`
`
`
`Compare Total
`to Preset if
`Writes
`
`805
`
`
`
`
`
`Isolate Block
`Activate
`Spare Block
`
`
`
`
`
`Increment
`Block Rotation
`Counter
`
`Fig. 8
`
`HPE, Exh. 1023, p. 9
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 9 of 10
`
`US 2007/0276994 A1
`
`006
`
`
`
`
`
`
`
`
`
`
`
`Ss3uppV
`
`pe3YI
`
`9A1903}}
`
`SÅS
`
`XCIV@HRI
`
`906
`
`L06
`
`
`
`606
`
`SÅS
`
`JLOO8||
`
`S06
`
`706
`
`906
`
`Z06
`
`[06
`
`HPE, Exh. 1023, p. 10
`
`
`
`Patent Application Publication
`
`Nov. 29, 2007 Sheet 10 of 10 US 2007/0276994 A1
`
`
`
`
`
`DATA
`
`DATA
`Old DATA
`
`DATA
`
`Old DATA
`
`Old DATA
`
`DATA
`DATA
`DATA
`Old DATA
`DATA
`
`DATA
`
`1000
`
`Flash LBA
`Table
`
`Fig. 10
`
`HPE, Exh. 1023, p. 11
`
`
`
`US 2007/0276994 A1
`
`Nov. 29, 2007
`
`METHODS FOR MANAGING DATA WRITES
`AND READS 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 portable 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. A method is provided for writing data to a 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, and a controller for controlling data
`operations to the memory. The method includes the acts, (a)
`receiving at the controller, write data for writing to an
`assigned address in the non-volatile memory, (b) determin
`ing at the controller if there is existing data associated with
`a write address in the volatile memory, the write address
`referencing the assigned address in the volatile memory, 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 in 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 type of non-volatile storage. In this aspect, in act (b).
`the determination is made by looking for a reference to a
`LBA in volatile memory in the Flash LBA table at the
`assigned LBA entry in the table. In a variation of this aspect,
`in act (c), the predestinated LBA is determined by a pointer
`pointing to the predestinated LBA of data in a RAM LBA
`table held in a reserved portion of the volatile memory and
`the volatile memory is RAM or a variation thereof. In
`another variation of the aspect, in act (c), if previous data
`was found in memory 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. In a preferred 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 of the invention, a
`method is provided for isolating a portion of memory from
`excessive writes on a 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, and
`a controller for controlling data operations to the memory.
`The method includes the acts, (a) writing data to the volatile
`memory of the disk and referencing an address in 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 conditions 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 a variation of 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 storage. Also
`in this aspect, in act (a), the addressing is based on LBAS
`maintained in tables, one representing RAM and one rep
`resenting Flash. In another variation of this aspect, in act (c),
`pointers are used in the table representing RAM space to
`determine when the threshold value has been exceeded, the
`determination based on a predetermined value compared to
`the difference in LBA entry positions referenced by the
`pointers in the table. In one aspect, the method further
`includes an act (e) for repeating act (d) according to the
`conditions until a predetermined minimum threshold value
`of data in volatile memory is realized.
`0012. According to still another aspect of the invention,
`a method is provided for balancing writes over more than
`
`HPE, Exh. 1023, p. 12
`
`
`
`US 2007/0276994 A1
`
`Nov. 29, 2007
`
`one non-volatile memory unit on a 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, and a controller for controlling data operations to the
`memory. The method includes the acts (a) performing a
`write operation to an active unit of the non-volatile memory
`portion of the disk, (b) advancing a counter by one incre
`ment as a result of act (a), (c) repeating acts (a) and (b) in
`sequence until a predetermined total number of write opera
`tions have been performed to the non-volatile memory, (d)
`upon reaching the predetermined value in act (c), activating
`a previously assigned spare unit of non-volatile memory for
`access at a new location in the linear space of 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) in continuing rotation.
`0013. In one aspect, in act (a) the write operation is
`limited to one LBA or a block of LBAs of data written and
`in act (b) the counter is incremented for each LBA of data
`written. Also in one aspect, in act (c) the write counter value
`is compared to a value programmed into the controller
`memory.
`0014. According to still another aspect of the invention,
`a method is provided for protecting data in Volatile memory
`on a 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, and a controller for
`controlling data operations to the memory. The method
`includes the acts (a) providing a power Subsystem integrated
`with the disk, the Subsystem including a sensor for sensing
`power from the host, a battery for powering the disk
`independently from the host, and a Switch for Switching to
`battery power in the event of loss of power from the host, (b)
`sensing loss of power from the host, (c) Switching over to
`battery power as a result of act (b), and (d) notifying the
`controller to move valid data from the volatile memory on
`the disk into the non-volatile memory on the disk.
`0015. In a variation of this aspect, in act (a), the host is
`one of a computing system requiring non-volatile data
`storage. In another variation, in act (d), moving data from
`volatile to non-volatile memory is a default instruction
`resulting from loss of power due to inadvertent power
`interruption and due to planned system shut down.
`0016. In one aspect, the method includes an act (g) 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.
`0017. In still another aspect of the invention, a method is
`provided for reading data from a 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, and a controller for controlling data operations to the
`memory. The method includes the acts (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 representing 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
`0018 FIG. 1 is a block diagram of a high-speed solid
`state non-volatile disk according to an embodiment of the
`present invention.
`0019 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.
`0020 FIG. 3 is a block diagram illustrating a disk con
`troller for managing disk function according to an embodi
`ment of the present invention.
`0021
`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.
`0022 FIG. 5 is a flow chart illustrating acts for managing
`data in RAM according to an embodiment of the present
`invention.
`0023 FIG. 6 is a flow chart illustrating acts for protecting
`against RAM data overflow according to an embodiment of
`the present invention.
`0024 FIG. 7 is a flow chart illustrating acts for optimiz
`ing RAM space according to an embodiment of the present
`invention.
`(0025 FIG. 8 is a flow chart illustrating acts for write
`balancing Flash memory according to an embodiment of the
`present invention.
`0026 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.
`0027 FIG. 10 is a logical memory map 1000 illustrating
`mapping of memory space for RAM and Flash according to
`an embodiment of the present invention.
`
`DETAILED DESCRIPTION
`0028 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
`
`HPE, Exh. 1023, p. 13
`
`
`
`US 2007/0276994 A1
`
`Nov. 29, 2007
`
`interfaces. With the addition of an onboard disk controller
`functionality (described below) the system may be adapted
`to an expansion bus embodiment.
`0029. 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.
`0030) 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.
`0031
`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
`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).
`0032. 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.
`
`0033 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.
`0034) 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.
`0035 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.
`0036 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.
`0037 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
`
`HPE, Exh. 1023, p. 14
`
`
`
`US 2007/0276994 A1
`
`Nov. 29, 2007
`
`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.
`0038. 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.
`0039 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.
`0040. 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
`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.
`0041. 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.
`0042. 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.
`0043. 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.
`0044 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.
`0045. 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.
`0046 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.
`0047 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
`
`HPE, Exh. 1023, p. 15
`
`
`
`US 2007/0276994 A1
`
`Nov. 29, 2007
`
`channel to Flash memory 10