`
`PATENTS
`
`8011-15 CON2
`
`Applicants
`
`Application No.
`
`Confirmation No.
`
`Filed
`
`For
`
`Group Art Unit
`
`Examiner
`
`:
`
`:
`
`:
`
`:
`
`:
`
`:
`
`:
`
`James J. Fallon
`
`Not Yet Assigned
`
`Not Yet Assigned
`
`Herewith
`
`SYSTEMS AND METHODS FOR ACCELERATED
`
`LOADING OF OPERATING SYSTEMS AND
`
`APPLICATION PROGRAMS
`
`Not Yet Assigned
`
`Not Yet Assigned
`
`Hon. Commissioner for Patents
`
`New York, NY 10020
`
`P.O. Box 1450
`
`October 19, 2006
`
`Alexandria, VA 22313—1450
`
`PRELIMINARY AMENDMENT
`
`Sir:
`
`Prior to the examination of this application,
`
`applicants amend the application as follows:
`
`Amendments to the Specification are reflected in the
`
`listing of claims which begins on page 2 of this paper.
`
`Amendments to the Claims are reflected in the listing
`
`of claims which begins on page 3 of this paper.
`
`Remarks/Arguments begin on page 6 of this paper.
`
`Realtime 2016
`
`Page 1 of 76
`
`Realtime 2016
`Page 1 of 76
`
`
`
`Amendments to the Specification
`
`Please replace the paragraph after the title of the
`
`specification and starting on line 4, page 1 of the
`
`specification with the following paragraph showing amendments:
`
`——CROSS REFERENCE TO RELATED APP-Em APPLICATIONS
`
`This application is a continuation of United Stated
`
`patent application No. 09/776,267, filed on February 2, 2001,
`
`
`which is based on a United States provisional application Serial
`
`No. 60/180,114, filed on February 3, 2000, both of which is are
`
`hereby fully incorporated herein by reference.——
`
`Realtime 2016
`
`Page 2 of 76
`
`Realtime 2016
`Page 2 of 76
`
`
`
`Amendments to the Claims
`
`This listing of claims will replace all prior
`
`versions, and listings, of claims in the application.
`
`Listing of the Claims
`
`1—16.
`
`(cancelled)
`
`17.
`
`(new) A method for providing accelerated loading of an
`
`operating system comprising:
`
`maintaining a boot data list, wherein at least a
`
`portion of boot data is associated to said boot data list;
`
`preloading said at least a portion of boot data into a
`
`memory upon initialization of said computer system;
`
`accessing said at least a portion of boot data in a
`
`compressed form from said memory;
`
`decompressing said at least a portion of boot data in
`
`compressed form accessed from said memory at a rate that
`
`increases the effective access rate of said memory; and
`
`utilizing said decompressed at least a portion of boot
`
`data in loading said operating system for said computer system.
`
`18.
`
`(new) The method of claim 17, wherein said at least a
`
`portion of boot data comprises program code associated with an
`
`application program.
`
`Realtime 2016
`
`Page 3 of 76
`
`Realtime 2016
`Page 3 of 76
`
`
`
`19.
`
`(new) The method of claim 17, wherein said preloading
`
`comprises retrieving said at least a portion of boot data from a
`
`memory device and storing said retrieved at least a portion of
`
`boot data into said memory.
`
`20.
`
`(new) The method of claim 17, wherein said preloading
`
`is controlled by a data storage controller.
`
`21.
`
`(new) The method of claim 17, further comprising
`
`updating said boot data list.
`
`22.
`
`(new) The method of claim 17, further comprising
`
`updating said boot data list by associating additional boot data
`
`to said boot data list.
`
`23.
`
`(new) The method of claim 17, further comprising
`
`updating said boot data list by removing the association of
`
`additional boot data from said boot data list.
`
`24.
`
`(new) The method of claim 17, further comprising
`
`receiving a request for additional boot data not previously
`
`associated with said boot data list.
`
`Realtime 2016
`
`Page 4 of 76
`
`Realtime 2016
`Page 4 of 76
`
`
`
`25.
`
`(new) The method of claim 17, further comprising:
`
`receiving a request for additional boot data not
`
`previously associated with said boot data list; and
`
`adding to the list any boot data requested by the
`
`computer system not previously stored in the list.
`
`26.
`
`(new) The method of claim 17, further comprising
`
`removing the association of additional boot data from said boot
`
`data list not requested by said computer system.
`
`27.
`
`(new) The method of claim 17, further comprising
`
`compressing said at least a portion of boot data to provide said
`
`at least a portion of boot data in compressed form.
`
`28.
`
`(new) The method of claim 17, further comprising
`
`compressing said at least a portion of boot data to provide said
`
`at least a portion of boot data in compressed form, wherein said
`
`compressing is performed by a data compression engine.
`
`29.
`
`(new) The method of claim 17, further comprising
`
`compressing said at least a portion of boot data to provide said
`
`at least a portion of boot data in compressed form, wherein said
`
`compressing is performed by a data compression engine and sad
`
`data compression engine performs said decompressing.
`
`Realtime 2016
`
`Page 5 of 76
`
`Realtime 2016
`Page 5 of 76
`
`
`
`REMARKS/ARGUMENTS
`
`Summary of Applicant's Amendments
`
`Applicants have cancelled claims 1—16.
`
`Applicants have added new claims 17—29.
`
`Applicants reserve the right to claim any subject
`
`matter lost by any claim amendment or cancellation at any time
`
`in one or more divisional or continuation applications.
`
`Parent Application No. 09/776,267
`
`Applicants direct the Examiner's attention to the
`
`prosecution history of parent U.S. Application No. O9/776,267
`
`filed on February 2, 2001 and,
`
`for example, all Office Actions
`
`contained therein.
`
`Conclusion
`
`Applicants respectfully submit that this application,
`
`including the pending claims,
`
`is in condition for allowance. An
`
`early and favorable action is respectfully requested.
`
`Respectfully submitted,
`
`/Jeffrey D. Mullen/
`Jeffrey D. Mullen
`
`Registration No. 52,056
`
`Agent for Applicants
`FISH & NEAVE IP GROUP
`
`ROPES & GRAY LLP
`
`Customer Number 1473
`
`1251 Avenue of the Americas
`
`New York, New York 10020—1105
`Tel.
`:
`(212) 596—9000
`
`Fax
`
`:
`
`(212) 596—9090
`
`Realtime 2016
`
`Page 6 of 76
`
`Realtime 2016
`Page 6 of 76
`
`
`
`ABSIRACLQEEHEJIISQLQSHRE
`
`Systems and methods for providing accelerated loading of operating system and
`
`application programs upon system boot or application launch. In one aspect, a method for
`
`providing accelerated loading of an operating system comprises the steps of: maintaining
`
`a list of boot data used for booting a computer system; preloading the boot data upon
`
`initialization of the computer system; and servicing requests for boot data from the
`
`computer system using the preloaded boot data. The boot data may comprise program
`
`code associated with an operating system of the computer system, an application
`
`program, and a combination thereof. In a preferred embodiment, the boot data is
`
`10
`
`15
`
`20
`
`retrieved from a boot device and stored in a cache memory device. In another aspect, the
`
`method for accelerated loading of an operating system comprises updating the list of boot
`
`data during the boot process, wherein updating comprises adding to the list any boot data
`
`requested by the computer system not previously stored in the list and/or removing from
`
`the list any boot data previously stored in the list and not requested by the computer
`
`system. In yet another aspect, the boot data is stored in a compressed format on the boot
`
`device and the preloaded boot data is decompressed prior to transmitting the preloaded
`
`boot data to the requesting system. In another aspect, a method for providing accelerated
`
`launching of an application program comprises the steps of: maintaining a list of
`
`application data associated with an application program; preloading the application data
`
`upon launching the application program; and servicing requests for application data from
`
`a computer system using the preloaded application data.
`
`
`
`8011-15
`
`57
`
`Realtime 2016
`
`Page 7 of 76
`
`Realtime 2016
`Page 7 of 76
`
`
`
`W 1
`
`. A method for providing accelerated loading of an operating system, comprising
`
`the steps of:
`
`maintaining a list of boot data used for booting a computer system;
`
`preloading the boot data upon initialization of the computer system; and
`
`servicing requests for boot data from the computer system using the preloaded
`
`boot data.
`
`2. The method of claim 1, wherein the boot data comprises program code
`
`associated with one of an operating system of the computer system, an application
`
`program, and a combination thereof.
`
`3. The method of claim 1, wherein the step of preloading the boot data comprises
`
`retrieving boot data from a boot device and storing the retrieved data in a cache memory.
`
`4. The method of claim 3, wherein the method steps are performed by a data
`
`storage controller connected to the boot device.
`
`10
`
`15
`
`
`
`
`
`5. The method of claim 1, further comprising the step of updating the list of boot
`
`20
`
`data during the boot process.
`
`6. The method of claim 5, wherein the step of updating comprises adding to the
`
`list any boot data requested by the computer system not previously stored in the list.
`
`8011-15
`
`53
`
`Realtime 2016
`
`Page 8 of 76
`
`Realtime 2016
`Page 8 of 76
`
`
`
`7. The method of claim 5, wherein the step of updating comprises removing from
`
`the list any boot data previously stored in the list and not requested by the computer
`
`system.
`
`8. The method of claim 1, wherein the boot data is compressed and further
`
`comprising the step of decompressing the preloaded boot data.
`
`9. The method of claim 1, wherein the method steps are program instructions that
`
`are tanginy embodied on a program storage device and readable by a machine to execute
`
`10
`
`the method steps.
`
`10. A method for providing accelerated launching of an application program,
`
`comprising the steps of:
`
`maintaining a list of application data associated with an application program;
`
`preloading the application data upon launching the application program; and
`
`servicing requests for application data from a computer system using the
`
`preloaded application data.
`
`11. The method of claim 1, wherein the application data is compressed and
`
`further comprising the step of decompressing the preloaded application data.
`
`15
`
`20
`
`
`
`12. The method of claim 10, wherein the method steps are program instructions
`
`that are tangibly embodied on a program storage device and readable by a machine to
`
`8011-15
`
`54
`
`Realtime 2016.
`
`Page 9 of 76
`
`Realtime 2016
`Page 9 of 76
`
`
`
`
`
`execute the method steps.
`
`13. A boot device controller for providing accelerated loading of an operating
`
`system of a host system, the boot device controller comprising:
`
`a digital signal processor (DSP);
`
`a programmable logic device, wherein the programmable logic device is
`
`programmed by the digital signal processor to (i) instantiate a first interface for
`
`operatively interfacing the boot device controller to a boot device and to (ii) instantiate a
`
`second interface for operatively interfacing the boot device controller to the host system;
`
`10
`
`and
`
`a non-volatile memory device, for storing logic code associated with the DSP, the
`
`first interface and the second interface, wherein the logic code comprises instructions
`
`executable by the DSP for maintaining a list of boot data used for booting the host
`
`system, preloading the boot data upon initialization of the host system, and servicing
`
`15
`
`requests for boot data from the host system using the preloaded boot data.
`
`14. The boot device controller of claim 13, further comprising a cache memory
`
`device for storing the preloaded boot data.
`
`20
`
`15. The boot device controller of claim 13, wherein the logic code in the non-
`
`volatile memory device further comprises program instructions executable by the DSP for
`
`maintaining a list of application data associated with an application program; preloading
`
`the application data upon launching the application program, and servicing requests for
`
`8011-15
`
`55
`
`Realtime 2016
`
`Page 10 of 76
`
`Realtime 2016
`Page 10 of 76
`
`
`
`the application data from the host system using the preloaded application data.
`
`16. The boot device controller of claim 12, wherein the boot data is compressed
`
`and wherein the DSP comprises a data compression engine (DCE) for decompressing the
`
`5
`
`preloaded boot data.
`
`
`
`8011-15
`
`56
`
`Realtime 2016
`
`Page 11 of 76
`
`Realtime 2016
`Page 11 of 76
`
`
`
`mO/EmwkzmDm_m0<ummkz_Mvii
`
`MIO<O
`
`<F<Q
`
`ZO_mwmzn_EOO
`
`mZ_Ozm
`
`wNQDQE m3mmmHDQEOO
`ZO_mZ<&Xmm0225.
`
`Realtime 2016
`
`Page
`
`0
`
`Realtime 2016
`Page 12 of 76
`
`
`
`
`538915amo
`
`mm
`
`(D
`N
`
`Vi / WWW/’30
`
`.(mm
`
`.m68m5:950
`
`$585a:.maom
`
`:83550.0Imfimiom
`
`mamIBoEoEm_:m_o>-coz
`
`(vm
`
`Swag;x2e
`
`mamEESmoi
`
`83mm063
`
`oomtmE.mamEI
`
`mDmZO_mZ<&XmMO2722
`
`NmmDOE
`
`Realtime 2016
`
`Page 13 of 76
`
`Realtime 2016
`Page 13 of 76
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`mDmZO_mZ<&XmKOmmeQ—ZOOZ_<_>_
`
`mo<mmmkz_v55
`
`m0n50
`
`mOmmmoomm
`
`mam.3004
`
`Hmmm
`
`mm
`
`sogAeQ 0160'] elqewaJBOJd
`
`Saab/xmamco_mcqum
`
`mmctmLO
`
`I3
`
`I<5
`
`vm
`
`mm
`
`Iw<._n:_>_omSim
`
`Evmmmm
`
`O:EEO
`
`/mm.mm
`
`3:22w350ng
`
`mime.0Amrommmooi
`
`mMEDOE
`
`£585a:530mw68m5:950
`
`Realtime 2016
`
`Page 14 of 76
`
`Realtime 2016
`Page 14 of 76
`
`
`
`
`
`
`
`
`
`H35¢o:@526R
`
`Lommmooi
`
`mmomtmiVEO—mmm:m.—Notu_x.OmBmEEmaoi__F8,352.is
`
`83mm284
`
`mBmEEEmoi
`
`moSoQBmol.
`
` mNN.835::mammrI!
`
`
`
`350.OImfiuiOmEE
`
`
`
`E0822m_=m_o>-coz
`
`350:0a:526mwEmma65an0
`
`mm
`
`ow
`
`
`
`meZO_mZ<n_Xmm0KMFDQEOOZ_<S_
`
`¢mmDOE
`
`Realtime 2016
`
`Page 15 of 76
`
`Realtime 2016
`Page 15 of 76
`
`
`
`
`
`
`
`
`
`
`dm
`
`wmN\
`
`rNN
`
`O
`
`mwm.w\J
`aW.mNNa
`
`_xmmucm_om.65mgmumcoficqum
`
`1min:20mSEEH3NHm8
`
`m3m4<ooJ
`
`(«mm
`
`H.1
`
`eogAeQ 0160-1 GIQELULUBJBOJd
`
`moomr_|_
`
`mmmDOE
`
`
`
`$52.0a35261wEmmaLmhquoo
`
`0:$50
`
`mm
`
`Realtime 2016
`
`Page 16 of 76
`
`Realtime 2016
`Page 16 of 76
`
`
`
`
`
`
`
`50
`
`ASSERT DSP
`RESET SIGNAL
`
`ENSURE ENOUGH
`DECAY FOR VOLATILE
`LOGIC DEVICE
`INITIALIZATION TO BE
`COMPLETE
`
`
`51
`
`
`
`COPY DSP BOOT LOADER
`FROM NON VOLATILE
`LOGIC DEVICE
`
`LATCH DATA BYTE INTO
`VOLATILE LOGIC DEVICE
`
`DSP BEGINS
`EXECUTION
`
`53
`
`CONFIGURE I/O PORTS
`k FOR VOLATILE LOGIC
`DEVICE PROGRAMMING
`
`
`
`INITIALIZE VOLATILE
`
`LOGIC DEVICE
`
`
`
`
`READ
`\— CONFIGURATION
`DATA
`
`
`
`54
`
`55
`
`55
`
`
`
`
`
`
`
`and
`
`
`
`
`READ IST
`
`CONFIGURATION
`
`DATA BYTE
`
`CLEAN BYTE
`COUNTER
`
`
`
`LOAD 1ST
`CONFIGURATION
`DATA BYTE INTO DSP I/O
`
`
` CHECK BYTE
`COUNT LESS THAN
`
`
`PRESPECIFIED
`
`VALUE?
`
`A
`
`“0* B
`
`YES
`
`DSP READS NEXT DATA 6 /
`
`BYTE OF DEVICE
`PROGRAM DATA
`
`INCREMENT BYTE
`COUNTER
`
`LOAD DATA BYTE
`INTO DSP we
`
`DELAY 20 nsec
`
`4/) 5f
`
`éa
`
`G
`3
`
`/ G l/
`
`A <—*
`
`LATCH INTO
`PROGRAMMABLE LOGIC
`_ DEVICE
`
`FIG. 6a
`
`Realtime 2016
`
`Page 17 of 76
`
`Realtime 2016
`Page 17 of 76
`
`
`
`
`
`
`
` DSP READ LAST DATA
`BYTE & LATCH lNTO
`VOLATILE LOGIC
`DEVICE
`
`
`and
`
`
`
`
`
`
`
`POLL VOLATILE LOGIC
`DEVICE TO ENSURE
`PROGRAMMING
`COMPLETE
`
`
`
`PROGRAMMING
`SUCCESSFUL?
`
`CONTINUE DATA
`STORAGE
`CONTROLLER
`INITIALIZATTON
`
`
`
`
`VES
`
`
`
`FLAG ERROR
`REPEAT
`ENTIRE PROCESS
`
`Q7
`
`FIG. 6b
`
`Realtime 2016
`
`Page 18 of 76
`
`
`
`Realtime 2016
`Page 18 of 76
`
`
`
`NO
`
`Realtime 2016
`
`PW
`
`RECEIVE REQUEST FOR BOOT DATA
`
`RETREVEDBOOTDATAHQALST
`
`RETRIEVE REQUESTED BOOT DATA FROM DISK
`
`RECORDDATABLOCKNUMBERCW
`
`
`
`
`
`
`BOOTPROCESS
`COMPLETE '?
`
`73
`
`YES
`
`74
`
`STORE LIST
`
`FIG. 7a
`
`71
`
`72
`
`
`
`Realtime 2016
`Page 19 of 76
`
`
`
` NO
`
`POWER-UP OR
`SYSTEM RESET?
`
`
`
`
`
`
`YES
`
`RETRIEVE & READ LIST
`
`PREFETCH DATA
`BLOCKS
`
`
`
`SPECIFIED IN LIST
`
`
`COMM ENCE BOOT
`PROCESS
`
`
`
`
`
`RECEIVE READ
`REQUEST FOR
`
`BOOT DATA
`
`
`
`
`
`IS REQUESTED
`BOOT DATA
`
`SI
`SERVICE REQUEST
`
`USING PRELOADED
`
`BOOT DATA
`
`
`PRELOADED
`
`76
`
`77
`
`78
`
`79
`
`
`
`
`
`NO
`
`
`
`UPDATE LIST TO
`UPDATE LIST TO
`EXCLUDE BOOT DATA
`INCLUDE BOOT DATA
`PREVIOUSLY
`
`NOT PREVIOUSLY
`SPECIFIED IN LIST
`
`SPECIFIED IN LIST
`
`
`
`
`
`83
`
`
`
`FIG. 7b
`
`Realtime 2016
`
`Page 20 0f 76
`
`
`IS ANY BOOT
`DATA NOT
`REQUESTED DURING
`OOT PROCESS 7
`
`
`
`
`RETRIEVE
`REQUESTED BOOT
`DATA FROM BOOT
`DEVICE
`
`
`
`82
`
`Realtime 2016
`Page 20 of 76
`
`
`
`START
`
`
`
`RECEIVE REQUEST FOR APPLICATION
`DATA ASSOCIATED
`WITH LAUNCHED APPLICATION
`
`
`
`90
`
`RETRIEVE REQUESTED
`APPLICATION DATA FROM DISC
`
`RETRIEVED APPLICATION DATA IN A LIST
`
`RECORD DATA BLOCK NUMBER OF
`
`
`
`93
`
`
`
`
`
`LAUNCH
`PROCESS
`COMPLETE?
`
`
`\/d3
`
`94
`
`STORE LIST
`
`FIG. 8a
`
`Realtime 2016
`
`Page 21 0f 76
`
`
`
`Realtime 2016
`Page 21 of 76
`
`
`
`APPLICATION
`LAUNCHED?
`
`
`
`
`96
`
`RETRIEVE & READ LIST
`
`
`
`
`
`PREFETCH DATA
`BLOCKS
`SPECIFIED IN LIST
`
`97
`
`
`
`
`
`RECEIVE READ
`REQUESTS FOR
`APPLICATION DATA
`
`103
`
`100
`SERVICE REQUEST
`
`USING PRELOADED
`APPLICATION DATA
`
`
`
`
`
`IS REQUESTED
`APPLICATION DATA
`PRELOADED?
`
`
`
`
`
`UPDATE LIST TO
`
`EXCLUDE
`UPDATE LIST TO
`APPLICATION DATA
`INCLUDE APPLICATIOS,
`pREVIoUSLY
`DATA NOT PREVIOUS
`SPECIFIED IN LIST
` SPECIFIED IN LIST
`
`
`
`
`
`
`
`
`Realtime 2016
`
`Page 22 0f 76
`
`
`
`NO
`
`IS ANY PRELOADED
`BOOT DATA NOT
`REQUESTED DURING
`RETRIEVE
`- PPLICATION LAUNCH”
`REMAINDER OF
`
`APPLICATION DATA
`
`FROM DISC
`
`
`
`
`
`98
`
`
`
`101
`
`102
`
`Realtime 2016
`Page 22 of 76
`
`
`
`.—._-_—-—._.—..—-
`
`8.6nunoucmwaanozoczm
`
`F5—:noUtur—gm
`
`alollrlllalallclnlalllal.I'llallnlnI.Iluloll.I|nlqull~II-Ilollolltl-llua
`
`
`
`coitumaa:owcmnEoo
`
`
`853anco_mmmano2mm5335,55n_on:amxoofi«an.D._Egan
`
`xi525m33
`
`
`ma?Enamsgeoa3:500.330
`.ac:.u=aman:
`
`:Leczooficnm
`
`mmagma
`
`Realtime 2016
`
`Page 23 0f 76
`
`Realtime 2016
`Page 23 of 76
`
`
`
`
`
`
`
`2838.6
`
`3859:0
`
`Bram
`
`EBuoqu
`
`NoEnoqu
`
`3.3.6an==2\3sun
`
`5.3530
`
`co=omzxm
`
`BaaSac.
`
`8:5xuoE
`
`Realtime 2016
`
`Page 24 0f 76
`
`Realtime 2016
`Page 24 of 76
`
`
`
`
`
`
`
`SYSTEMS AND METHODS FOR ACCELERATED LOADING OF
`
`OPERATING SYSTEMS AND APPLICATION PROGRAMS
`
`5
`
`10
`
`W
`
`This application is based on a United States provisional application Serial No.
`
`60/1 80,1 14, filed on February 3, 2000, which is fully incorporated herein by reference.
`
`11].]E.”
`
`BACKGRQIDED
`
`The present invention relates generally to systems and methods for providing
`
`accelerated loading of operating system and application programs upon system boot or
`
`application launch and, more particularly, to data storage controllers employing lossless
`
`and/or lossy data compression and decompression to provide accelerated loading of
`
`operating systems and application programs.
`
`15
`
`2 D
`
`.
`
`I.
`
`E I B l
`
`l
`
`!
`
`Modern computers utilize a hierarchy of memory devices. To achieve maximum
`
`performance levels, modern processors utilize onboard memory and on board cache to
`
`obtain high bandwidth access to both program and data. Limitations in process
`
`technologies currently prohibit placing a sufficient quantity of onboard memory for most
`
`20
`
`25
`
`applications. Thus, in order to offer sufficient memory for the operating system(s),
`
`application programs, and user data, computers often use various forms of popular off-
`
`processor high speed memory including static random access memory (SRAM),
`
`synchronous dynamic random access memory (SDRAM), synchronous burst static ram
`
`(SBSRAM). Due to the prohibitive cost of the high-speed random access memory,
`
`coupled with their power volatility, a third lower level of the hierarchy exists for non-
`
`8011-15
`
`1
`
`Realtime 2016
`
`Page 25 of 76
`
`
`
`Realtime 2016
`Page 25 of 76
`
`
`
`volatile mass storage devices.
`
`Furthermore, mass storage devices offer increased capacity and fairly economical
`
`data storage. Mass storage devices (such as a “hard disk”) typically store the operating
`
`system of a computer system, as well as applications and data and rapid access to such
`
`data is critical to system performance. The data storage and retrieval bandwidth of mass
`
`storage devices, however, is typically much less as compared with the bandwidth of other
`
`elements of a computing system. Indeed, over the last decade, although computer
`
`processor performance has improved by at least a factor of 50, magnetic disk storage
`
`performance has only improved by a factor of 5. Consequently, memory storage devices
`
`10
`
`severely limit the performance of consumer, entertainment, office, workstation, servers,
`
`and mainframe computers for all disk and memory intensive operations.
`
`The ubiquitous Internet combined with new multimedia applications has put
`
`tremendous emphasis on storage volumetric density, storage mass density, storewidth,
`
`and power consumption. Specifically, storage density is limited by the number of bits
`
`that are encoded in a mass storage device per unit volume. Similarly mass density is
`
`defined as storage bits per unit mass. Storewidth is the data rate at which the data may be
`
`accessed. There are various ways of categorizing storewidth in terms, several of the more
`
`prevalent metrics include sustained continuous storewidth, burst storewidth, and random
`
`access storewidth, all typically measured in megabytes/sec. Power consumption is
`
`canonically defined in terms of power consumption per bit and may be specified under a
`
`number of operating modes including active (while data is being accessed and
`
`transmitted) and standby mode. Hence one fairly obvious limitation within the current art
`
`is the need for even more volume, mass, and power efficient data storage.
`
`15
`
`20
`
`8011-15
`
`2
`
`Realtime 2016
`
`Page 26 of 76
`
`
`
`Realtime 2016
`Page 26 of 76
`
`
`
`Magnetic disk mass storage devices currently employed in a variety of home,
`
`business, and scientific computing applications suffer from significant seek-time access
`
`delays along with profound read/write data rate limitations. Currently the fastest available
`
`disk drives support only a sustained output data rate in the tens of megabytes per second
`
`data rate (MB/sec). This is in stark contrast to the modern Personal Computer’s
`
`Peripheral Component Interconnect (PCI) Bus’s low end 32 bit / 33Mhz input/output
`
`capability of 264 MB/sec and the PC's internal local bus capability of 800 MB/sec.
`
`Another problem within the current art is that emergent high performance disk
`
`interface standards such as the Small Computer Systems Interface (SCSI-3), Fibre
`
`10
`
`Channel, AT Attachment UltraDMA/66/ 100, Serial Storage Architecture, and Universal
`
`Serial Bus offer only higher data transfer rates through intermediate data buffering in
`
`random access memory. These interconnect strategies do not address the fundamental
`
`problem that all modern magnetic disk storage devices for the personal computer
`
`marketplace are still limited by the same typical physical media restrictions. In practice,
`
`15
`
`faster disk access data rates are only achieved by the high cost solution of simultaneously
`
`accessing multiple disk drives with a technique known within the art as data striping and
`
`redundant array of independent disks (RAID).
`
`RAID systems often afford the user the benefit of increased data bandwidth for
`
`data storage and retrieval. By simultaneously accessing two or more disk drives, data
`
`20
`
`bandwidth may be increased at a maximum rate that is linear and directly proportional to
`
`the number of disks employed. Thus another problem With modern data storage systems
`
`utilizing RAID systems is that a linear increase in data bandwidth requires a proportional
`
`number of added disk storage devices.
`
`8011-15
`
`3
`
`Realtime 2016
`
`Page 27 of 76
`
`
`
`Realtime 2016
`Page 27 of 76
`
`
`
`Another problem with most modern mass storage devices is their inherent
`
`unreliability. Many modern mass storage devices utilize rotating assemblies and other
`
`types of electromechanical components that possess failure rates one or more orders of
`
`magnitude higher than equivalent solid-state devices. RAID systems employ data
`
`redundancy distributed across multiple disks to enhance data storage and retrieval
`
`reliability. In the simplest case, data may be explicitly repeated on multiple places on a
`
`single disk drive, on multiple places on two or more independent disk drives. More
`
`complex techniques are also employed that support various trade-offs between data
`
`bandwidth and data reliability.
`
`Standard types of RAID systems currently available include RAID Levels 0, 1,
`
`and 5. The configuration selected depends on the goals to be achieved. Specifically data
`
`reliability, data validation, data storage /retrieva1 bandwidth, and cost all play a role in
`
`defining the appropriate RAID data storage solution. RAID level 0 entails pure data
`
`striping across multiple disk drives. This increases data bandwidth at best linearly with
`
`the number of disk drives utilized. Data reliability and validation capability are
`
`decreased. A failure of a single drive results in a complete loss of all data. Thus another
`
`problem with RAID systems is that low cost improved bandwidth requires a significant
`
`decrease in reliability.
`
`RAID Level 1 utilizes disk mirroring where data is duplicated on an independent
`
`disk subsystem. Validation of data amongst the two independent drives is possible if the
`
`data is simultaneously accessed on both disks and subsequently compared. This tends to
`
`decrease data bandwidth from even that of a single comparable disk drive. In systems
`
`that offer hot swap capability, the failed drive is removed and a replacement drive is
`
`8011-15
`
`4
`
`Realtime 2016
`
`Page 28 of 76
`
`
`
`10
`
`15
`
`20
`
`Realtime 2016
`Page 28 of 76
`
`
`
`inserted. The data on the failed drive is then copied in the background while the entire
`
`system continues to operate in a performance degraded but fully operational mode. Once
`
`the data rebuild is complete, normal operation resumes. Hence, another problem with
`
`RAID systems is the high cost of increased reliability and associated decrease in
`
`performance.
`
`RAID Level 5 employs disk data striping and parity error detection to increase
`
`both data bandwidth and reliability simultaneously. A minimum of three disk drives is
`
`required for this technique. In the event of a single disk drive failure, that drive may be
`
`rebuilt from parity and other data encoded on disk remaining disk drives. In systems that
`
`offer hot swap capability, the failed drive is removed and a replacement drive is inserted.
`
`The data on the failed drive is then rebuilt in the background while the entire system
`
`continues to operate in a performance degraded but fillly operational mode. Once the
`
`data rebuild is complete, normal operation resumes.
`
`Thus another problem with redundant modern mass storage devices is the
`
`degradation of data bandwidth when a storage device fails. Additional problems with
`
`bandwidth limitations and reliability similarly occur within the art by all other forms of
`
`sequential, pseudo-random, and random access mass storage devices. These and other
`
`limitations within the current art are addressed by the present invention.
`
`W
`
`The present invention is directed to systems and methods for providing
`
`accelerated loading of operating system and application programs upon system boot or
`
`application launch and, more particularly, to data storage controllers employing lossless
`
`and/or lossy data compression and decompression to provide accelerated loading of
`
`8011-15
`
`5
`
`Realtime 2016
`
`Page 29 of 76
`
`
`
`10
`
`15
`
`20
`
`Realtime 2016
`Page 29 of 76
`
`
`
`operating systems and application programs.
`
`In one aspect of the present invention, a method for providing accelerated loading
`
`of an operating system comprises the steps of: maintaining a list of boot data used for
`
`booting a computer system; preloading the boot data upon initialization of the computer
`
`system; and servicing requests for boot data from the computer system using the
`
`preloaded boot data. The boot data may comprise program code associated with an
`
`operating system of the computer system, an application program, and a combination
`
`thereof. In a preferred embodiment, the boot data is retrieved from a boot device and
`
`stored in a cache memory device.
`
`10
`
`15
`
`20
`
`In another aspect, the method for accelerated loading of an operating system
`
`comprises updating the list of boot data during the boot process. The step of updating
`
`comprises adding to the list any boot data requested by the computer system not
`
`previously stored in the list and/or removing from the list any boot data previously stored
`
`in the list and not requested by the computer system.
`
`In yet another aspect, the boot data is stored in a compressed format on the boot
`
`device and the preloaded boot data is decompressed prior to transmitting the preloaded
`
`boot data to the requesting system.
`
`In another aspect, a method for providing accelerated launching of an application
`
`program comprises the steps of: maintaining a list of application data associated with an
`
`application program; preloading the application data upon launching the application
`
`program; and servicing requests for application data from a computer system using the
`
`preloaded application data.
`
`In yet another aspect, a boot device controller for providing accelerated loading of
`
`8011-15
`
`6
`
`Realtime 2016
`
`Page 30 of 76
`
`
`
`Realtime 2016
`Page 30 of 76
`
`
`
`an operating system of a host system comprises: a digital signal processor (DSP); a
`
`programmable logic device, wherein the programmable logic device is programmed by
`
`the digital signal processor to (i) instantiate a first interface for operatively interfacing the
`
`boot device controller to a boot device and to (ii) instantiate a second interface for
`
`operatively interfacing the boot device controller to the host system; and a non—volatile
`
`memory device, for storing logic code associated with the DSP, the first interface and the
`
`second interface, wherein the logic code comprises instructions executable by the DSP for
`
`maintaining a list of boot data used for booting the host system, preloading the boot data
`
`upon initialization of the host system, and servicing requests for boot data from the host
`
`10
`
`system using the preloaded boot data. The boot device controller further includes a
`
`cache memory device for storing the preloaded boot data.
`
`The present invention is realized due to recent improvements in processing speed,
`
`inclusive of dedicated analog and digital hardware circuits, central processing units, (and
`
`any hybrid combinations thereof), that, coupled with advanced data compression and
`
`decompression algorithms are enabling of ultra high bandwidth data compression and
`
`decompression methods that enable improved data storage and retrieval bandwidth
`
`These and other aspects, features and advantages, of the present invention will
`
`become apparent from the following detailed description of preferred embodiments that
`
`is to be read in connection with the accompanying drawings.
`
`15
`
`20
`
`HEW
`
`Fig. l is a block diagram of a data storage controller according to one embodiment
`
`of the present invention;
`
`8011-15
`
`7
`
`Realtime 2016
`
`Page 31 of 76
`
`
`
`Realtime 2016
`Page 31 of 76
`
`
`
`Fig. 2 is a block diagram of a data storage controller according to another
`
`embodiment of the present invention;
`
`Fig. 3 is a block diagram of a data storage controller according to another
`
`embodiment of the present invention;
`
`Fig. 4 is a block diagram of a data storage controller according to another
`
`embodiment of the present invention;
`
`Fig. 5 is a block diagram of a data storage controller according to another
`
`embodiment of the present invention;
`
`Figs. 6a and 6b comprise a flow diagram of a method for initializing a data
`
`10
`
`storage controller according to one aspect of the present invention;
`
`Figs. 7a and 7b comprise a flow diagram of a method for providing accelerated
`
`loading of an operating system and/or application programs upon system boot, according
`
`to one aspect of the present invention;
`
`Figs. 8a and 8b comprise a flow diagram of a method for providing accelerated
`
`15
`
`loading of application programs according to one aspect of the present invention;
`
`Fig. 9 is a diagram of an exemplary data compression system that may be
`
`employed in a data storage controller according to the present invention; and
`
`Fig. 10 is a diagram of an exemplary data decompression system that may be
`
`employed in a data storage controller according to the present invention.
`
`20
`
`
`
`8011-15
`
`8
`
`Realtime 2016
`
`Page 32 of 76
`
`Realtime 2016
`Page 32 of 76
`
`
`
`WW
`
`In the following description, it is to be understood that system elements having
`
`equivalent or similar functionality are designated with the same reference numerals in the
`
`Figures. It is to be further understood that the present invention may be implemented in
`
`various forms of hardWare, software, firmware, or a combination thereof. Preferably, the
`
`present invention is implemented on a computer platform including hardware such as one
`
`or more central processing units (CPU) or digital signal processors (DSP), a random
`
`access memory (RAM), and input/output (1/0) interface(s). The computer platform may
`
`also include an operating system, microinstruction code, and dedicated processing
`
`hardware utilizing combinatorial logic or finite state machines. The various processes
`
`and functions described herein may be either part of the hardware, microinstruction code
`
`or application programs that are executed via the operating system, or any combination
`
`thereof.
`
`It is to be further understood that, because some of the constituent system
`
`components described herein are preferably implemented as software modules, the actual
`
`system connections