throbber
IN THE UNITED STATES PATENT AND TRADEMARK OFFICE
`
`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

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