throbber
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`
`USIJ06463509Bl
`
`US 6,463,509 Bl
`(10) Patent N0.:
`(12) United States Patent
`Teoman ct al. Oct. 8, 2002 (45) Date of Patent:
`
`
`
`(54) PRELOADING DATA IN A CACHE MEMORY
`ACCORDING To USER_SPEC[F1E])
`PRELOAD CRITERIA
`
`..
`-. n
`Inventor” 3:5"S::°I{l:::£i:;”
`
`(75)
`
`.
`
`(73) Assignec: Motive Power, Inc., San Mateo, (TA
`(US)
`
`*
`
`_
`) Notrce:
`
`(
`
`‘
`_
`_
`_
`_
`bub‘jectto any dlrsclatmeri, the term of {21?
`931$“! ‘5 “mm c‘ 0': allusmd und“ ‘3
`U'E‘L' 154th) by U (idyb'
`
`(21) APPI-N0-109i233fi56
`.
`7')
`.
`-
`_
`(W mm
`Jan 26’ 1999
`,
`.
`. 7
`(xtlfih IZJ'DII
`(2,1))
`Int: Ll.
`711.1137, 711i118é‘711il41,
`L.) US. Cl.
`711’}15-, 71 1’ 113
`.
`711f118, [37,
`(58) Field of Search
`711.138, 129, 113, 141, 152, 3, 125; 71052;
`713mm; 7145
`
`(56)
`‘
`
`References Cited
`
`'
`
`US. PATENT DOCUMENTS
`9 9
`K
`_
`$193,; Eggs“ ct al
`4;,197? (:D’diclal‘
`Denko
`10,1195“ {(0.1de
`"#1982 Stewart et al.
`.3er Branlingham ct al.
`
`
`251985 DIka El :11-
`[£1987 Dixon et al.
`I??? “a'ford
`(Me I
`@1993 Ho‘tle'
`3
`mg” Kobayashiel aL
`1U1993 walkins [.1 “L
`2f1994 Arintilli el al.
`3r1994 Challa ct al.
`
`3
`
`f
`
`__
`
`2
`{520966 A
`A
`4’295,305 A
`4,342,079 A
`4,435,?75 A
`4,5“),954 A "
`tl,63'i_.024 A ‘"
`Erlzs’Sm A
`i
`gills-689 A
`5;226:168 A
`5,263,142 A
`5,283,457 A
`3291584 A
`
`“U133
`Tl4r’819
`
`3.1994 Nicholson et al.
`5,293,622 A
`5,359,?13 A * 10,11994 Moran cl at.
`5,396,596 A
`3r1905 Hashemi el all.
`5,420,998 A
`SAWS llorning
`5,431,018 A
`7f1995 Kohayashi ct al.
`5,448,?19 A *
`snags Schultzetal.
`(List continued on next page.)
`
`OTHER PUBLICATIONS
`
`T1062
`
`anus
`
`International Search Report in connection with International
`Application NO, PCTEUSOOIOZUG (6 pages),
`“The NO System”, Inside Windows NT Second Edition,
`Microsoft Press, David A. Solomon, pp. v—xiv, 325—393,
`1998.
`
`"Filter Drivers", Windows NT File System Internals A
`Developer’s Guide Rajeev Nagar, O’Rielly 8.: Associates,
`..
`’
`Inc, pp. vtI—x, 615-667, 1997.
`Prim“? Emmfler_0avid Hudspcth
`Aflfsmm ExamflerAhd l;_ vI-Zeng
`(74) Attorney-Agent, or I‘Irrrr—Blakely, Sokolofi', Taylor &
`Zafman LL13
`
`(5?)
`
`‘
`
`ABSTRAC’I
`
`An apparatus and method for caching data in a storage
`device of a computer system. A relatively high-speed,
`intermediateAvolume storage device is operated as a user-
`configurable cachekequests to accessamassstorage device
`such as a disk or tape are intercepted by a device driver that
`compares the access request against a directory of [he
`Lflnlcnls (If
`[his “Slir‘LFIl-Ifigurabll‘z CHChC.
`“1‘: User-
`configurable cache contains the data sought to be accessed,
`the access request
`is carried out
`in the user-configurable
`cache instead of being forwarded to the device driver for the
`target mass storage device. Because the user-cache is imple-
`memcd using memory havng a dramalicauy shoner access
`time than most mechanical mass storage devices, the access
`request is fulfilled much more quickly than if the originally
`intended mass storage device was accessed. Data is pre-
`loaded and responsiver cached in the user-configurable
`cache memory based on user preferences.
`
`26 Claims, 12 Drawing Sheets
`
`'
`
`SYSIE'.‘ MEMO-"l"
`n
`- 30
`
`as
`all
`. 3.-
`] APPS|'
`MOE
`i uscrtcilt
`
`
`-.
`iIJHIvEFre| " 32
`.
`1G
`
`
`
`l
`
`
` lanaeEsstve
`nun
`
`ll‘
`
`' '
`
`armorial
`CC HI 30H 5. F
`
`'
`
`4.
`
`.é
`
`
`
`Famislnv
`iUSlB
`
`+
`.
`‘-
`
`' l_‘
`1‘.st onset
`cartrauttt'tj
`i.
`
`
`
`
`
`*
`NHWQRK
`access other
`l
`243
`r
`[AM-wan '
`NEIWDHK
`
`
`
`Human; r21“ mrwenx
`
`snava
`era'an [
`
`_
`.o '2?
`
`25 ’
`
`.
`
`3-55
`
`1
`
`Apple v. Realtime
`Proceeding No. |PR2016-01365
`APPLE 1020
`
`Apple v. Realtime
`Proceeding No. IPR2016-01365
`APPLE 1020
`
`1
`
`

`

`U.S. PATENT DOCUMENTS
`
`flay ellal-l
`29:32:? i
`ones e a.
`.
`,
`,
`2’1996 McKinley
`5,493,574 A
`$1996 Grynhcrg ct aL
`5,515,525 A
`5l1996 Moran et a].
`5,519,853 A *
`8l1996 Tan clal.
`5,551,000 A
`91,1996 Tuma cl a1.
`$555,402 A
`“1997 Lamzcnhciscr
`5594885 A
`2199? Piazza
`5 6050“ A
`50997 Zancho et al.
`5:633:484 A
`8).,199? Fisherman el al-
`3,6514?“ A
`91199? Fenwick at all
`1673394 A
`102'199? Ranlala e1 3|.
`5,680,570 A
`5,680,573 A * 10,0997 Rubin cl 3].
`
`713E400
`
`'I11f129
`
`‘ cited by examiner
`
`1111997 Williams
`5,692,190 A
`5,694,567 A * 12f1997 Bourckas el al.
`5,094,570 A * 121199? Beardsiey et al.
`-
`1:
`5:33: :13}!
`5331,1319 A
`4’1998 Judmn
`5345’?“ A
`4nqu Mizum
`_’
`’
`‘
`.
`5378,4133 A
`751998 Niel-an ct al.
`SJSLWO A
`TI1998 DeSmone el al.
`$802,566 A "‘
`9f1998 Hagerslcn
`5895'“? A
`4’1999 3°)“ ‘3' a"
`3,913,224”? A *
`6{1999 Maclhnald
`6,003,113 A * 121999 Spear elaL
`
`
`
`US 6,463,509 B1
`Page 2
`
`711;“3
`711,013
`
`711.3137
`-
`MIME.)
`71MB?
`
`
`
`2
`
`

`

`
`
`US. Patent
`
`um28.,m
`
`hS
`
`9]0
`
`mu
`
`US 6,463,509 B1
`
`w.a:
`
`m.mm
`
`3525
`
`$9552
`
`
`
`uwas553$32ama:
`éaamz
`
`mamaxma
`
`mmfiogzoo
`
`xmamamame
`
`
`
`mzoqomijmhzoo
`
`205255
`
`wemam
`
`w
`
`xuqomo
`
`mm
`
`.Wm\
`
`mamq
`
`om,
`
`
`
`>moEmEEmhm>m
`
`
`
` zofizgxma8.11$3258
`
`$9252
`
`aMafia
`
`wwDEmmam
`
`wzfiflaog
`
`:2:
`
`m:
`
`
`
`
`
`mmmk$0352xmoEEz
`
`mm>mmm
`
`
`
`3
`
`
`
`
`
`
`
`

`

`
`
`US. Patent
`
`Oct. 8, 2002
`
`Sheet 2 0f 12
`
`US 6,463,509 B1
`
`RETURN DATA
`RE READ}
`
`UO REOUEST
`40
`
`T
`
`’A T
`r 8 ES
`
`A
`|
`L“— __J
`
`N
`
`
`V SYSTEM MEMORY
`
`
`{08 CACHE}
`
`
`
`ACCESS
`TIME
`
`USER CACHE
`
`'
`SMALLEST
`
`g
`
`VOLUME
`
`ACCESS
`
`MASS STORAGE
`
`{DISK TAPE. SEMICONDUCTOR)
`
`
`
`SLOWEST
`
`LARGEST
`
`L___________._
`
`
`
`4
`
`

`

`US. Patent
`
`Oct. 8, 2002
`
`1B905.,3
`
`M86.EEO;352mmE
`
`mxo<o
`
`Emmacmm
`
`55%
`
`JnEm:mafiam.s_mm.w:Hm%_m:5$235£88.15
`
`o:
`
`am?)559QSmmygA_522%9.$32;
`a.;i
`
`o:
`
`mxoéEm:\mozoigdna
`
`HmmDONm
`
`ow
`
`
`
`5
`
`
`
`
`
`
`

`

`US. Patent
`
`Oct. 8, 2002
`
`Sheet 4 of 12
`
`1B905,36A,6SU
`
`_,_
`
`am.
`
`
`
`
`
`5..
`
`.mum:.
`
`we
`
`92fig
`
`boom
`
`mmqggm:
`
`aim
`
`03am
`
`
`
`EBEQQ.
`
`
`
`man.
`
`$53_$33.:F;
`
`hmwgcmm
`
`mm
`
`Egg:
`
`EEEE“
`
`>Eso¢a
`
`
`
`mumflommmgommm3Eton..35$
`
`
`
`
`EOE0mmdama524%3mgmamaamg5355
`|..853mi
`
`gamma3%«53fie
`
`
`.Emam. mm:”aa_.EjOEZSétgmamam325:5?52%5335..
`
`
`IIaI“V
`
`
`
`NWSE.AIJ
`
`
`
`6
`
`
`
`
`

`

`
`
`US. Patent
`
`Oct. 8, 2002
`
`Sheet 5 of 12
`
`US 6,463,509 B1
`
`md:
`
`wroqomum:
`
`ammamm
`
`mmmmimmmo
`
`
`
`awardgame
`
`amwe
`
`Amquzfia9:
`
`Immmmamaze..._mpmmzowm
`Emhm>mm3:0:1/A2mmmoomm
`
`
`
`zofiqojaafi
`
`4:“.Fmmmuomm
`
`m;
`
`mmwmooma
`
`zo_._.qo:n_1¢_
`
`.263
`
`m0
`
`Ebémm
`
`mmfla
`
`mw<mo+m
`
`elm
`
`32mmxmmo
`
`mlq
`
`
`
`H.556Emma
`
`mlm
`
`mofimfigm
`
`wrmmmmuo<
`
`m.m¢umwm2
`
`amcquzqg
`
`zoz¢uzlmqv
`
`Ammmoomm
`
`mmmum:
`
`$0535;
`
`
`
`7
`
`
`
`
`
`
`
`
`
`
`

`

`
`
`tnetaPQMU
`
`Oct. 8, 2002
`
`Sheet 6 of 12
`
`US 6,463,509 B1
`
`w:
`
`EEl
`
`mafiaEmmm<§
`
`mm>mmmmoEm:
`
`moSma
`
`
`
`mmmxoqommamm
`
`mm
`
`amino3.
`
`at!
`
`
`
`
`
`mmSmEhE35m.thmmgmnmtq
`
`/mop
`
`
`
`
`Guzmmfimmfir:BEBEmmmouq.fia
`
`w.0:
`
`mm;me
`
`bomwmo
`
`
`
`8
`
`
`
`
`
`
`
`
`
`

`

`US. Patent
`
`Oct. 8, 2002
`
`Sheet 7 of 12
`
`US 6,463,509 B1
`
`U0 REQUESTS 40
`
`w‘—‘—|
`
`U0 MANAGER {L3
`
`114
`
`ACCESS TABLE 114
`
`— -——-J
`
`(DEVICEDRIVER)
`g
`
`
`
`
`FILE SYSTEM
`DRIVER
`9.6
`
`
`
`
`
`.TFHANDLEISWIé-TIC --
`'—
`OBSERVER
`
`
`fl
`
`J
`
`USER CACHE
`
`2.5
`
`'
`
`
`
`
`USER CACHE
`DRIVER
`E
`
`
`DiSK DRIVER
`
`47
`
`
`
`
`MASS
`STORAGE
`
`
`L
`
`FIG. 7
`
`9
`
`

`

`US. Patent
`
`Oct. 8, 2002
`
`Sheet 8 of 12
`
`US 6,463,509 B1
`
`—___..—-.-————..._._—..._
`
`User Cache Properties
`
`General
`
`Automatic
`
`
`
`
`
`
`
`
`
`
`
`
`Motive Power
`
`
`
`
`
`
`
`
`
`
`
`
`
`Registration:
`Deniz Teornan
`Motive Power
`
`1451-16J7-98?9-1955
`
`System:
`User Cache memory size 512MB
`
`User Cache Hardware Version: MPSOO
`User Cache Software Version 1.41
`
`System Physical RAM: 128MB
`BIOS Version: 4.51 PG
`
`
`|
`OK
`
`Cancel
`
`| willy-jig)?!
`
`FIG. 8
`
`10
`
`10
`
`

`

`US. Patent
`
`Oct. 8, 2002
`
`Sheet 9 of 12
`
`US 6,463,509 B1
`
`| User Qaehe Properttesnd_—M
`
`Dia rjostios
`
`Initialization
`
`E User Cache enabled
`
`Cl Encryption enabled
`
`
`
`Optimization ———___.-____
`
`Write Behavior:
`
`0 Write Through (all writes immediately passed on)
`
`(5) Write Back (writes deterred)
`
`Cl Only use as a cache, no data Locking
`
`
`
`
`
`
`
`
`I
`0K 1 Cancel
`
`
`
`El Use as a boot device
`
`E:
`-_H_J
`
`
`
`|
`
`
`
`
`FIG. 9
`
`11
`
`11
`
`

`

`US. Patent
`
`Oct. 8, 2002
`
`Sheet 100112
`
`US 6,463,509 B1
`
`._=___=__.fl==
`[User Cache Properties M”
`
`
`
`a:
`
`In the background:
`
`El Always allow sufficient array capacity for system page file
`D Neuerpreload afile biggerthan
`75 MB
`Qhange...
`I
`
`U Preload all files within a launched application's folder
`
`U Preload allfiles in afolder it 5
`
`have already been accessed
`
`files
`
`Qhange...
`
`l:':‘
`
`E] Match files by extension and preload after 3
`matching files have been accessed
`
`|
`
`l
`
`Chan
`
`_
`
`ge...
`
`i
`
`
` Automatic Operation
`
`Preloading
`El Preload the system folder always
`(default checked if volume boot enabled)
`El Preload lull files, not just segments
`
`UK
`
`I
`
`I
`
`Cancel
`
`I I
`
`Epply
`
`l
`
`35
`
`FIG.1O
`
`12
`
`12
`
`

`

`US. Patent
`
`Oct. 8, 2002
`
`Sheet 11 0f 12
`
`US 6,463,509 B1
`
`Choose specific files to preload and look into array:
`
`El D Cforogram F‘IIesWetscapemetscape.exe
`E] D CnProgram FilesWdobeWhotoshop\pshop.exe
`e]
`1] D:\WorkingDlrectoryWideosWrstBinhdaymov
`D C:\Russetl's Files\Docs\Business Planwrd
`D D:wideo Benchmark\Disk Test\speed.exe
`C] C:\Program Filesmmocm
`E! E“,
`
`13.3MB
`52.8MB
`300KB
`5.3%
`38.4MB
`25.9MB
`
`
`
`D Cz'xProgram Files\Winw0rd\* .doc
`
`TOMB
`
`
`
`
`[User Cache Properties____
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`LL Data Type
`
`
`
`Total:
`
`128MB
`
`Data Exciudec!
`Data LOCKBU
`
`Add
`
`127
`
`FIG. 11
`
`13
`
`13
`
`

`

`US. Patent
`
`Oct. 8, 2002
`
`Sheet 12 0f 12
`
`US 6,463,509 B1
`
`
`
`
`| User Cagexfieyefiignmfl _
`
`E’]
`
`
`
`
`
`D Generate report of present array contents
`
`C] Test array memory
`
`
`
`
`
`
`
`
`
`
`
`[j Flush array new
`[1 Archive user cache data to disk:
`
`
`
`14
`
`14
`
`

`

`
`
`l
`PRI“:IJ()AI)IN(; DATA IN A CACHE MEMORY
`ACCORDING TO USER-SPECIFIED
`PRELOAI) CRITERIA
`FIELD OF THE INVENTION
`
`The present invention relates to the field of data storage in
`computer systems, and more particularly to a user-
`configurable cache memory implemented in a high-speed
`storage.
`
`BACKGROUND OF THE INVENTION
`
`10
`
`15
`
`3o
`
`40
`
`Many modern computer systems use inputt’output (IIO)
`buffering to speed access to data stored in mass storage
`media such as disk or tape drives. The idea behind IKO
`buffering is to store frequently accessed data from mass
`storage in a relatively small memory that can be accessed
`more quickly than the mass storage itself. ’l‘wo common
`types of U0 buffering are operating system (05) cache and
`self-thlIered mass storage. In an OS cache, the operating
`system reserves a portion of system memory to buffer data
`obtained from mass storage. The OS responds to mass
`storage access requests by determining whether the data
`sought to be accessed is buffered in the reserved portion of
`system memory and, if so, performing the requested access
`in system memory without accessing mass storage.
`OS cache has a number of disadvantages. First, because
`the system memory used for data bulIering is usually “
`volatile, the OS cache contents are lost when the computer
`system is powered down. Consequently, the OS cache must
`be reloaded each time the computer system is booted.
`Among other things, this makes the OS cache unsuitable to
`source boot files during system startup. Another disadvan—
`tage of OS cache is that the amount of system memory
`reserved for data buffering in the OS cache usually is limited
`because system memory is needed for other purposes, such
`as providing space for user applications. In some cases, the
`amount of system memory reserved data buffering may be ~
`dynamically reduced in response to requests to provide
`system memory for other purposes. Yet another disadvan-
`tage of OS cache is that the algorithm used to control what
`data is stored and what data is overwritten in the data bulTer
`usually does not support user-preferences to cache certain
`types or grouris of files.
`In a self-buffered mass storage, the mass storage hardware
`includes a relatively small butler memory that is used to hold
`the contents of recently accessed regions of the mass storage
`media. When an access request (e.g., a read or write request)
`is received in the mass storage, control circuitry for the mass
`storage first determines whether the access hits the contents
`of the buffer memory. If so, the access occurs in the buffer
`memory, potentially saving the time required to access the
`mass storage media itself. Unfortunately, self-buffered mass
`storage sulfch from many of the same disadvantages as 05
`cache. Specifically, the contents of the bulIer memory are
`usually lost on power down, and the algorithm used to
`control what data is stored in the data buffer typically does
`not support user-preferences. Another disadvantage of self-
`l)ulTered mass storage is that, because the buffer memory is
`used only for accesses to the associated mass storage, data
`from other "0 sources are not buffered. For example, the
`butter memory of a self—buficrcd mass storage device typi—
`cally cannot be used to butler data from other non-buffered
`mass storage devices in the computer system or data from
`mass storage devices outside the computer system such as
`network servers.
`
`50
`
`55
`
`so
`
`SUMMARY 01-” THE INVENTION
`
`65
`
`A method and apparatus for storing data in a cache
`memory of a computer system. User input is received that
`
`15
`
`using memory having a dramatically shorter access time
`
`US 6,463,509 B]
`
`2
`requests data to be stored in the cache memory. If the data
`is not already stored in the cache memory,
`the data is
`retrieved from a mass storage coupled to the computer
`system and stored in the cache memory.
`Other features and advantages of the invention will be
`apparent from the accompanying drawings and from the
`detailed description that follows below.
`
`BRIEF DESCRiFI'ION OF THE DRAWINGS
`
`invention is illustrated by way of example
`The present
`and not
`limitation in the figures of the accompanying
`drawings in which like references indicate similar elements
`and in which:
`
`FIG. 1 isa block diagram of a computer system according
`to one embodiment;
`FIG. 2 illustrates a memory hierarchy in a computer
`system that
`includes a user cache 25 according to one
`embodiment;
`FIG. 3 illustrates the flow of an IEO request according to
`one embodiment;
`FIG. 4 is a block diagram of the user-cache according to
`one embodiment;
`FIG. 5 illustrates the processing of IIO requests according
`to one embodiment;
`FIG. 6 illustrates file and driver objects that are used, in
`at least one embodiment, to determine the sequence in which
`device drivers are called to service an HO request;
`FIG. 7 illustrates the manner in which the HO request
`propagates down a chain of device drivers according to one
`embodiment;
`FIG. 8 is an exemplary user interface generated by the
`user cache manager to inform the user of general informa-
`tion related to the user cache and the system in which the
`user cache is installed;
`FIG. 9 is an exemplary user interface generated by the
`user cache manager to enable the user to turn on and
`configure the basic operation of the user cache;
`FIG. ll] is an exemplary user interface generated by the
`user cache manager to permit the user to configure memory
`management and preloading policies for the user cache;
`FIG. 11 is an exemplary user interface generated by the
`user cache manager to allow the user to specify commanded
`preloads; and
`FIG. 12 is an exemplary user interface generated by the
`user cache manager to permit the user to generate a report of
`the user cache contents, test the memory in the user cache,
`flush the user cache or transfer the contents of the user cache
`to a mass storage such as a tape backup.
`
`DETAJ LED DESCRIPTION
`
`intermediate—volume storage
`A relatively high—speed,
`device is operated as a user-configurable cache memory
`(“user cache”) to provide 110 bulIering. ln one embodiment,
`the user cache is implemented using random access memory
`(RAM) arranged on a hardware module that is coupled to an
`expansion bus in a computer system. Requests to access a
`mass storage device such as a disk or
`tape drive are
`intercepted by a device driver that compares the access
`request against a directory of the contents of the user-cache.
`If the user—cache contains the data sought to be accessed, the
`access request
`is carried out
`in the user-cache instead of
`being forwarded to the device driver for the target mass
`storage device. Because the user-cache is implemented
`
`15
`
`

`

`
`
`5
`
`It)
`
`15
`
`3o
`
`3
`the
`than most electro-mechanical mass storage devices,
`access request
`is fulfilled much more quickly than if the
`originally intended mass storage device was accessed.
`In one embodiment,
`the user-cache is non-volatile and
`large enough to hold several hundred megabytes worth of
`data. Consequently, by configuring the user-cache to store
`program code and configuration information used for com-
`puter system startup, the user—cache may be used as a boot
`source to provide much faster system boot up than can be
`achieved by booting out of mass storage media such as disk
`or tape.
`In another embodiment, an application program called a
`uSer cache manager is executed to receive u5er preferences
`as to what data to store and not to store in the user cache. For
`example, a user may specify to cache the contents of a folder
`or directory (c.g., the system directory that includes much of
`the operating system and system configuration files), files
`having a particular file type identifier (e.g., files with a given
`filename extension), files having particular file names, files
`accessed by a particular user and so forth. Further, unlike
`Self-buffered mass storage, the user cache is not limited to
`caching information from a particular mass storage device.
`The user cache may be used to cache data from any storage
`device in the computer system or even to cache remotely
`located data, such as a web page identified by a user~
`specified specified uniform resource locator (URL) or files H
`or directories located on a server computer. A user may also
`specify particular files, directories, URLs or other file iden-
`tification criteria indicating files that are to be excluded from
`the user cache. Further, in at least one embodiment, the user
`is prompted to indicate whether files selected for caching are
`to be “locked down” in the user cache. Files that are locked
`down in the user cache are not flushed (i.e., overwritten or
`otherwise expelled) from the user cache if the user cache
`becomes full. In this way, files sttch as system startup files
`may be locked down in the cache to ensure their availability
`during system startup. These and other intended advantages
`of the present
`invention are described below in various
`embodiments.
`Overview of a System That Includes User Cache
`FIG.
`1 is a block diagram of a computer system 10
`according to one embodiment. The computer system
`includes a processing unit 12, a system memory 16 and an
`expansion bus 18. all
`interconnected by a memory
`controllertexpansion bus bridge device 14. The expansion
`bus 18 supports connection of a number of 120 devices
`including a self-buffered disk drive controller 20 and its
`associated disk drive 26, a non-buffered disk drive controller
`22 and its associated disk drive 28, a network access device
`24 such as a modem or locaWide area network communi-
`cations card and a user cache 25. Other IIO devices maybe
`coupled to the expansion bus according to user needs. As
`shown in FIG. 1, the network access device 24 is used to
`couple the computer system 10 to a local or wide area
`network 27 which may support number of devices, including
`one or more network servers 29A, 298.
`According to one embodiment,
`the user cache 25 is a
`non-volatile storage array that is used to cache data from
`mass storage devices, such as the local disk drives 26, 28 or
`disk drives on network servers 29A, 29B. Preferably, the
`user cache 25 is constructed using random access memory
`components that have access times several orders of mag-
`nitude shorter than the mass storage devices that source the
`cached data. Consequently, by redirecting requests to access
`a mass storage device to instead access the user cache 25, the
`overall time required to complete the requested access can
`be dramatically reduced. The implementation and operation
`of the user cache 25 is discussed in detail below.
`
`35
`
`4!)
`
`45
`
`50
`
`60
`
`65
`
`16
`
`US 6,463,509 B1
`
`4
`Still referring to FIG. I, the processing unit 12 includes
`one or more processors that fetch program code from system
`memory 16 and execute the code to operate on data and to
`read and write data to the system memory 16 and to the HO
`devices on the expansion bus 18. Although not shown, the
`computer system also includes input devices to receive
`user—input (cg, keyboard and mouse) and a display device
`for presenting a user interface.
`The program code in the system memory 16 includes
`operating system (OS) program code 30, application pro-
`gram code 34 and device driver program code 32. The
`application program code 34 is executed by the processing
`unit 12 to implement application processes which, in turn,
`invoke operating system services to display user-interfaces,
`operate on user-input and access user-specified data. Ser-
`vices provided by the operating system 30 include memory
`management services, HO management services, process
`and thread management services and so forth. The operating
`system 30 also supports.
`independently installable device
`drivers 32. Each of the device drivers 32 is a program code
`entity that includes a prescribed set of routines that adhere
`to a specification defined by the operating system 30 and that
`can be invoked to process the various stages of an input:t
`output request. Thus, the device drivers 32 provide a well
`defined, relatively simple set of services to the operating
`system 30 to permit the operating system 30 to interact with
`a broad range of hardware devices without having to include
`device specific program code in the operating system 30. For
`example, when an application process invokes an operating
`System service to perform Ii‘O to a device attached to the
`expansion bus 18, the operating system 30 invokes a stan—
`dard routine within the appropriate device driver 32 to carry
`out the requested Ir'O.
`Overview of a Memory Hierarchy
`FIG. 2 illustrates a memory hierarchy in a computer
`system that
`includes a user cache 25 according to an
`embodiment ofthc present invention.Asindicated in FIG. 2,
`the user cache 25 preferably has an intermediate storage
`volume and access time relative to the system memory 16
`and the mass storage 46, but this is not required. Also,
`because the computer system may be a network of
`computers, the mass storage 46 need not be in the same
`machine as the system memory 16 and the user cache 25. For
`example, the mass storage 46 may be a disk drive on a
`network server that is accessible via a local or wide area
`network (LAN or WAN) or that can be accessed via the
`Internet using any number of transfer protocols including
`file transfer protocol (I'TP), hyper-text
`transfer protocol
`(MIT?) and so forth.
`When an 110 request 40 to access the mass storage 46 is
`issued (e.g., a file read or write request issued in the course
`of executing an application program), the Ir‘O request 40 is
`first applied to the OS cache maintained in system memory
`16. If the 110 request 40 hits the OS cache (i.e., the data
`sought to be accessed is cached in the OS cache), the access
`is performed in the OS cache. [1' the “0 request 40 is a read
`request,
`the data is returned to the requester. If the 110
`request 40 does not hit the OS cache, the 110 request 40 is
`redirected from the mass storage 46 to the user cache 25 by
`software mechanisms described below. If the IKO request 40
`hits the user cache 25, the access is performed in the user
`cache 25 without having to access the mass storage 46,
`thereby substantially reducing the overall access time. Also,
`because the user cache 25 is significantly larger than the OS
`cache and supports data preloading (discussed below), much
`higher hit rates can be achieved in the user cache than in the
`
`OS cache. Consequently, significantly fewer ItO accesses to
`
`16
`
`

`

`
`
`5
`the mass storage device need to be performed than in prior
`art systems that rely solely on the OS cache for 1,30 bu lIer-
`ing. Also, unlike storage buffers in self-buffered mass stor-
`age devices, the user cache is not limited to caching data for
`a particular mass storage device. Instead the user cache can
`be used to cache [KO data from a variety of sources,
`including data from remote storage devices such as network
`servers and web servers.
`
`Still referring to FIG. 2, if the [£0 request 40 is a read
`request and the read request hits the user cache 25, data is
`returned to the requestor from the user cache 25. If space
`permits,
`the returned data may also be stored in the OS
`cache. If the read request misses the user cache 25, the data
`is returned from the mass storage 46 and conditionally
`stored in the user cache 25. The conditions used to determine
`whether to store data obtained from mass storage 46 in the
`user cache 25 are described below. Data returned from the
`mass storage 46 may also be stored in the OS cache.
`Overview of a Method
`
`10
`
`15
`
`FIG. 3 illustrates the flow of an IlO request according to -
`one embodiment. I-Ierein, the expression “HO request” refers
`to a request to read from or write to an address that does not
`resolve to system memory. Initially, an application process
`41 generates an [(0 request 40 to read or write a file 15
`stored on a mass storage device 46. A service in the n
`operating system called an IlO manager 43 receives the IiO
`request 40 and identifies a device driver 47 associated with
`the request based on a logical
`identifier included in the
`request 40. For example, a request to read data from file
`"C:\myfiles\data.txt“ indicates that the file data.txt is to be
`read from logical disk drive C and is organized under
`subdirectory “mytlles.” Ordinarily, the lit) manager 43 will
`pass the NO request to the device driver 47 for the mass
`storage device 46 as shown by dashed arrow 44.
`in the
`embodiment of FIG. 3, however, a device driver called a
`user cache driver 45 has been inserted into the device driver
`hierarchy above the device driver 47 to intercept the U0
`request before it reaches the device driver 47. The user cache
`driver 45 inspects a directory 51 of the user cache contents
`to determine whether the data sought to be accessed (i.e., file
`15] is in the user cache 25. If the tile 15 is in the user cache,
`the user cache driver redirects the “0 request to access the
`user cache 25 instead of forwarding the IIO request to the
`device driver 4?. Otherwise, the user cache driver forwards
`the [£0 request to the device driver 47 which in turn accesses
`the file 15 in mass storage 46.
`In one embodiment, the directory 51 is maintained in the
`user cache 25 to prevent loss of the directory 51 at power
`down. At power up, the directory 51 is copied from the user
`cache 25 to a shadow directory in system memory. The user
`cache driver 45 accesses the shadow directory instead of the
`directory 5] to more quickly determine whether to redirect
`HO requests to the user cache 25.
`In an alternate
`embodiment, the shadow directory is not maintained and the
`directory 51 in the user cache is used to determine whether
`to redirect HO requests. Although more time is required to
`make the redirect determination without
`the shadow
`
`an
`
`35
`
`4!)
`
`45
`
`50
`
`.
`
`directory, the programming effort required to ensure coher-
`ency between the shadow directory and the directory 51 in
`the user cache is saved.
`It should be noted that the user cache 25 is not simply used
`to implement a hierarchical storage system in which data is
`either stored in the user cache or alternatively in the mass
`storage 46 (c.g., in a typical hierarchical storage system, data
`may be swapped between a relatively fast and a relatively
`slow mass storage according to system needs). Instead, the
`user cache is operated to cache data from the mass storage.
`
`60
`
`65
`
`17
`
`US 6,463,509 B1
`
`6
`That is, a copy of the data stored in the mass storage 46 is
`stored in the user cache along with a directory entry indi-
`cating the address of the corresponding data in mass storage.
`Also, unless otherwise made clear from context, the term
`data isused broadly herein to refer to both program code and
`operand data.
`User Cache Hardware
`ll [(1. 4 is a block diagram of the user-cache 25 according
`to one embodiment. The user-cache 25 includes bus inter-
`face circuitry 61, a DRAM controller 63 and a plurality of
`rows (1 through N} of DRAM components 68A—68C,
`69A—69C, "NA—70C. Each of the DRAM components
`includes an address and control input (NC), a data path
`interface (D) and a power input (PWR). The data path
`interface of each DRAM component within a given row is
`coupled to the bus interface circuitry 61 via a respective
`portion of a datapath 73. The address and control inputs of
`the DRAM components within a given row are coupled to a
`common address path and a common control path from the
`DRAM controller 63. The address path and control path for
`each DRAM row are depicted for simplicity in FIG. 4 as a
`single path ADDRICTL 75A, 753, 75C. In one embodiment,
`the address path is a multiplexed address path in which a row
`and column address components of a complete address are
`transferred to the DRAM components in separate transfers.
`The control path to each row of DRAM components pro-
`vides a set of signals that
`indicate, for example, when to
`strobe a row or column address into a row of DRAM
`
`components, when to activate or preeharge an addressed row
`of memory cells within a row of DRAM components, and
`whether to read or write a column ot‘data within an activated
`row of memory cells. Commands to enter reduced prJWer
`state and to perform refresh operations are also delivered via
`the control path.
`According to one embodiment, older generation DRAM
`components, such as synchronous DRAM (SDRAM) com~
`ponents are used in the user cache 25 to implement a
`relatively large storage array at relatively low cost. For
`example, a 2.56 megabyte (MB) user cache may be imple-
`mented at relatively low cost using eight 32 MB SDRAM
`components. User caches having larger or smaller storage
`capacity may be implemented using even older generation
`DRAM components (e.g., extended data out (EDO) DRAM,
`fast page mode (FI’M) DRAM), or by using SDRAM
`components having different total storage and bit slice sizes.
`It will usually be unnecessary to resort
`to faster, more
`expensive types of memory, because even older generation
`DRAM components such as SDRAM are capable of deliv-
`ering and receiving data at rates that exceed the bandwidth
`of most expansion buses. Nonetheless, higher performance
`memory components including, but not limited to, Rambus
`DRAM, SyncLink DRAM or later developed memory types
`may be used to implement
`the user cache (Rambus is a
`trademark of Rambus Corporation}. Also,
`in alternate
`embodiments, memory components other than DRAM may
`be used, including, but not limited to, ferro-rnagnetic RAM
`(FRAM), electrically erasable programmable read only
`memory (EEPROM,
`including Flash EEPROM}, static
`RAM and holographic memory. Generally, any type of solid
`state memory or other memory that provides a speed advan—
`tage over electromechanical or other mass storage devices
`may be used without departing from the scope of the present
`invention.
`In one embodiment, the user cache 25 includes a power
`Source selector 6‘? that selects between a battery 65 and
`system power to power the DRAM array. In many modem
`
`computer systems. a reduced level of system power, called
`
`17
`
`

`

`
`
`US 6,463,509 B1
`
`It)
`
`15
`
`-
`
`3o
`
`35
`
`4t)
`
`45
`
`50
`
`7
`"trickle power," is available so long as the computer system
`is connected to line power. In such systems, trickle power
`can be titted to power the user cache even when the computer
`system is turned off. When system power is lost entirely, the
`power source selector detects the power loss and switches to
`the battery 65 to maintain power to the DRAM array.
`Preferably the battery 65 is recharged when system power is
`applied so that, if and when complete system power loss
`occurs,
`the battery 65 will be fully charged to provide
`auxiliary power.
`In one embodiment, the power source selector 67 distinn
`guishes between fill] system power and trickle power and
`asserts a sleep signal 81 to the DRAM controller 63 when—
`ever the user cache is being powered by trickle power or
`battery power. The DRAM controller 63 responds to the
`sleep signal 81 by issuing control signals to place the DRAM
`components of the user cache 25 in reduced power state. In
`the reduced power state, DRAM refresh operations are
`continued either under control of the DRAM controller 63 or
`by logic on board the DRAM components themselves. Other
`logic elemean within the user-cache 25, including the bus
`interface circuitry 61 and portions of the DRAM controller
`that operate on access requests from the bus interface
`circuitry are shut down to save power. Unused rows of the
`DRAM array may be shut down to save power.
`In one embodiment, the expansion bus 18 of FIG. 1 is a
`peripheral component interconnect (PCI) bus and the bus
`interface circuitry 61 of the user cache 25 is a PCI bus
`interfaCe for sending and receiv

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