`Shapiro et al.
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 6,574,588 B1
`Jun. 3, 2003
`
`US006574588B1
`
`(54) SOLID-STATE MEMORY DEVICE THAT
`EMULATES A KNOWN STORAGE DEVICE
`
`(75) Inventors: Daniel Shapiro, Redmond, WA (US); Raymond D- PedriZetti>ISSaquah>WA
`
`(Us)
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`(Us)
`
`5,717,903 A * 2/1998 Bonola ...................... .. 703/24
`5,751,975 A * 5/1998 Gillespie et al.
`710/126
`
`5,784,581 A * 7/1998 Hannah . . . . . . . . . .
`*
`
`. . . .. 710/110
`
`2 * 5,915,106 A * 6/1999 Aid.......... légng
`
`
`5,946,469 A * 8/1999 Chidester
`
`5,953,516 A * 9/1999 Bonola . . . . . . . .
`
`5,958,020 A * 9/1999 Evoy etal
`5,991,777 A * 11/1999 Momoh et al
`6,006,029 A * 12/1999 Bianchi et al.
`*
`
`
`
`""" :11. 703/23
`345/157
`
`. . . . .. 703/22
`
`710/3
`707/205
`703/21
`
`( * ) Notice:
`
`
`
`Subject to any disclaimer, the term of this Pawnt 1S @Xtended 0r adlusted under 35
`
`
`
`2 * 6,064,566 A * 5/2000 Agata et al. . . . . .
`
`. . . .. 361/685
`
`U.S.C~ 154(b) by0 clays~
`
`(21) AppL NO‘, 09/159,522
`
`(22) Filed:
`
`Sep. 23, 1998
`
`. . . . .. 710/38
`6,073,188 A * 6/2000 Fleming . . . . . .
`6,073,205 A * 6/2000 Thomson .................. .. 711/100
`6,223,267 B1 * 4/2001 Hodges et al. ............ .. 707/205
`
`OTHER PUBLICATIONS
`
`52 U S C]
`(
`)
`'
`'
`'
`
`(51) Int. c1.7 ....................... .. G06F 9/455; G06F 13/00;
`G06F 9/00; G06F 3/00; G06F 13/12
`703/24_ 703/25_ 709/321_
`709/3’27_ 71mg 710/10f
`710/1’3_ 710/14f 710/63_ ’710/72f 710/73f
`’
`’
`’
`’ 710W‘;
`
`$321031lialsff’nlgtg?Encyclopedia °fC°mPmerSCienCe>
`H
`1 1°“ ’
`’ “Fag?
`Texas Instruments, Inc., Serial ROM Data Format for IEEE
`1394, Open HCI Implementations, Application Report,”
`IEEE 1394 Con?guration ROM, Texas Instruments, Inc.,
`1998, pp. 1—10.
`
`(58) Field of Search ............................ .. 703/23, 24, 25;
`710/8’ 9’ 10’ 11’7B29’
`252763’
`
`* Cited by eXarniner
`Primary Examiner—Todd Ingberg
`
`(56)
`
`References Cited
`
`’
`
`’
`
`’
`
`U.S. PATENT DOCUMENTS
`4,787,026 A * 11/1988 Barnes et a1_ ________________ __ 711/6
`4,984,149 A * 1/1991 Iwashita et a1_ __
`711/4
`5,131,089 A * 7/1992 Cole .......... ..
`703/24
`703/24
`5,291,584 A * 3/1994 Challa et al- .
`53717885 A : 12/1994 Letwm """" "
`707/205
`5’446’855 A
`8/1995 Dang et a1‘
`"" " 711/1
`5 454098 A * 9/1995 Pisello et al. ..
`703/24
`5:457:784 A * 1O/1995 Wells et aL
`7O3/24
`5,459,850 A * 10/1995 Clay er a1, _ _ _ _ _
`_ _ _ __ 703/24
`5,465,364 A * 11/1995 Lathrop et al.
`703/20
`2,473,765 2 i 1%;
`giblzlons etlal- ~~
`’491’816
`on y. et a ' """"""" "
`5’499’378 A : 3/1996 MCNelH’ Jr' et al'
`5,546,585 A
`8/1996 Soga ......................... .. 710/16
`5,548,783 A * 8/1996 Jones et al.
`710/16
`5,694,583 A * 12/1997 Williams et al. ............ .. 703/24
`
`Assistant Examiner—W. Thomson
`(74) Attorney, Agent, or Firm—Banner & Witcoff, Ltd.
`57
`ABSTRACT
`(
`)
`The present invention is directed to a'peripheral device that
`mtegrally provides a program relatmg to the peripheral
`device, and may be connected to a computer system. The
`peripheral device includes a peripheral function subsystem
`for providing a peripheral device functionality. The periph
`eral device further includes a solid-state memor device
`.
`.
`.
`.
`stormg a program relating to the peripheral dev1ce~m ~a
`format used by disk drives. When the peripheral device is
`connected to a computer system, the program stored in the
`solid-state memory device is immediately available, and can
`be read by the computer system as though it Was stored on
`a disk drive connected to the com uter s stem.
`P
`Y
`
`25 Claims, 4 Drawing Sheets
`
`ADDITIONALPERIPHERAL /m
`
`?t
`
`SUBSYSIEM
`
`MEMORY DEVICE
`
`fzzo
`
`KNOWN STORAGE
`DEVICE EMULATION
`SUBSVSTEM
`
`W
`
`m
`
`303
`
`3H4
`
`OF PERIPHERAL FUNCTION
`SUBSYSTEM
`
`SEARCHALLDRIVESFOR
`DRIVER FOR PERIPHERAL
`FUNCTION SUBSVSTEM
`
`LOAD DRIVER FOR
`
`PESIPHERAI. FUNCTlIIION
`
`MEMORY DEVICE AND
`INSTALL
`
`ACCESS PERIPHERAL
`FUNCTION SUBSVSTEM
`USING INSTALLED DRIVER
`
`1
`
`EX 1021
`IPR of Pat. No. 6,892,304
`
`
`
`U.S. Patent
`
`Jun. 3, 2003
`
`Sheet 1 0f 4
`
`US 6,574,588 B1
`
`COMPUTER SYSTEM
`
`100
`/
`
`CPU
`
`/-110
`
`MEMORY
`
`/ 12°
`
`OPERATING SYSTEM /'-130
`HARD DRIVE /-131
`DRIVER
`
`FLOPPY DRIVE /'132
`DRIVER
`
`CD-ROM DRIVE DRIVER
`
`/-121
`
`140
`HARD DRIVE /
`
`150
`/
`
`FLOPPY DRIVE
`
`CD-ROM DRIVE
`
`/160
`
`422
`APPLICATION PROGRAM /
`
`110
`/
`
`DATA
`
`UTILITY PROGRAM
`
`ADDITIONAL
`-I23 \V PERIPHERAL
`/
`180
`sERIAL
`CONNECTION
`
`/-124
`
`2
`
`
`
`U.S. Patent
`
`Jun. 3, 2003
`
`Sheet 2 0f 4
`
`US 6,574,588 B1
`
`ADDITIONAL PERIPHERAL
`
`fun
`
`PERIPHERAL
`FUNCTION
`SUBSYSTEM
`
`/210
`
`MEMORY DEVICE
`
`KNOWN STORAGE
`DEVICE EMULATION
`SUBSYSTEM
`
`/230
`
`FIG. 2
`
`3
`
`
`
`U.S. Patent
`
`Jun. 3, 2003
`
`Sheet 3 0f 4
`
`US 6,574,588 B1
`
`I
`
`BEGIN
`
`I
`
`II
`
`ENUMERATE SERIAL BUS
`
`II
`RECEIVE REPORT OF
`MEMORY DEVICE AS TYPE
`HARD DRIVE
`
`II
`RECEIVE CORRECT REPORT
`OF PERIPHERAL FUNCTION
`SUBSYSTEM
`
`/305
`
`V
`SEARCH ALL DRIVES FOR
`DRIVER FOR PERIPHERAL
`FUNCTION SUBSYSTEM
`
`v
`LOAD DRIVER FOR
`PERIPHERAL FUNCTION
`SUBSYSTEM FROM
`MEMORY DEVICE AND
`INSTALL
`
`IV
`ACCESS PERIPHERAL
`FUNCTION SUBSYSTEM
`USING INSTALLED DRIVER
`
`II
`
`END
`
`FIG. 3
`
`4
`
`
`
`U.S. Patent
`
`Jun. 3, 2003
`
`Sheet 4 0f 4
`
`US 6,574,588 B1
`
`ADDITIONAL PERIPHERAL
`
`f1”
`
`22o
`MEMORY DEVICE /
`
`KNOWN STORAGE
`DEVICE EMULATION /230
`SUBSYSTEM
`
`FIG. 4
`
`5
`
`
`
`US 6,574,588 B1
`
`1
`SOLID-STATE MEMORY DEVICE THAT
`EMULATES A KNOWN STORAGE DEVICE
`
`TECHNICAL FIELD
`
`The present invention is directed to the ?eld of computer
`peripherals, and more particularly, to the ?eld of storage
`devices.
`
`BACKGROUND OF THE INVENTION
`
`10
`
`A peripheral device (“peripheral”) is a device that is
`connected to and controlled by a computer system. Periph
`erals include such devices as a disk drive, printer, modem,
`optical scanner, or joystick. Peripherals may be connected to
`a computer system via various types of connections, includ
`ing a PCI bus, a parallel connection, or a serial connection.
`Modern serial connections include Universal Serial Bus
`(“USB”) and 1394 connections. Modem serial connections
`generally permit several peripheral devices to be attached to
`a computer system via the same serial connection. For
`instance, a printer, a scanner, and a joystick could all be
`connected to a computer system via a single USB connec
`tion.
`Computer systems generally include a program called an
`operating system that, among other things, manages com
`munications betWeen the computer system and its peripher
`als. In order to communicate With a particular peripheral, an
`operating system generally requires an additional computer
`program called a “driver.” The driver for a particular periph
`eral generally knoWs the capabilities of the peripheral and
`the command set for the peripheral. While modem operating
`systems generally include drivers for common devices, such
`as hard disk drives, there are many peripherals for Which
`operating systems do not include drivers. In particular,
`operating systems seldom provide drivers for peripherals
`that Were not available When the operating system Was
`released. In order to use such a peripheral in conjunction
`With a computer system, the operating system on that
`computer system must install a driver for the peripheral.
`Providing such a driver can be a signi?cant inconvenience
`for the user attempting to use the peripheral. For eXample,
`the user may be required to locate a ?oppy disk or CD that
`contains the driver, or to doWnload the driver from the
`Internet. Based on the foregoing, a neW peripheral that did
`not require the provision of a separate driver Would have
`signi?cant utility.
`In addition to their drivers, some peripherals also operate
`in conjunction With other programs. For eXample, optical
`scanners often operate in conjunction With an application
`program for creating in the computer system digital repre
`sentations of documents that are scanned by the scanner.
`Similarly, sequential access tape drives often operate in
`conjunction With ?le backup utilities that copy the contents
`of a hard disk drive to a sequential tape cartridge. A neW
`peripheral that did not require the separate provision of these
`additional programs Would also have signi?cant utility.
`Entertainment, or “game” softWare titles are available for
`many general-purpose computer systems. Such entertain
`ment titles are usually distributed on CD-ROM. While some
`entertainment titles are small and can be completely loaded
`into memory from CD-ROM quickly, modem entertainment
`titles continue to groW larger and larger, containing large
`quantities of executable program code, as Well as large
`quantities of data, such as digitiZed sounds, images, and
`video clips. Because of the relatively loW data transfer rate
`of CD-ROM drives, these modem entertainment titles
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`2
`appear to load and execute sloWly, Which often produces
`signi?cant user dissatisfaction. Based on the foregoing, a
`neW, faster medium for distributing entertainment titles for
`general-purpose computer systems Would have signi?cant
`utility.
`Further, entertainment titles and other softWare titles
`frequently contain some portions that must be loaded from
`the medium quickly, and other portions that may be loaded
`from the media more sloWly. For eXample, an entertainment
`title may have eXecutable code that must be loaded quickly,
`as Well as a video sequence that may be loaded more sloWly
`as the video sequence plays. Unfortunately, because soft
`Ware titles are typically shipped on media of a single type,
`developers must choose either to ship the entire softWare
`title on a medium having a loW transfer rate and create user
`dissatisfaction during the loading of the portions that must
`be loaded from the medium quickly, or to ship the entire
`softWare title on a medium having a high transfer rate and
`drive up the cost of manufacturing the softWare product.
`Based on foregoing, a neW, speed heterogeneous medium for
`distributing softWare titles Would have signi?cant utility.
`SUMMARY OF THE INVENTION
`The present invention is directed to a solid-state read-only
`memory device that may be connected to a computer system
`via a serial connection, such as a Universal Serial Bus or
`1394 connection, and that does not require a special driver.
`When it is initialiZed as part of initialiZing the devices on the
`serial connection during the operating system’s boot
`process, the memory device inaccurately identi?es itself as
`a storage device of a type knoWn to the operating system,
`such as a hard drive. The contents of the memory device can
`then be read using portions of the operating system designed
`and provided for reading from storage devices of the iden
`ti?ed type.
`Such a memory device has several useful applications.
`First, it can be used alone as a fast form of storage, having
`both a small latency time and a large transfer rate. Such use
`is Well-suited to video game cartridges, such as those used
`With popular video game console systems. Second, the
`memory device can be incorporated in another device. For
`eXample, such a memory device containing a driving video
`game may be incorporated in a steering Wheel game con
`troller. As a further eXample, such a memory device can be
`incorporated in a peripheral device, such as a printer or a
`scanner. Such a memory device may contain a driver for the
`peripheral device. When the serial connection is initialiZed,
`the memory device inaccurately identi?es itself as a hard
`drive, and the peripheral device correctly identi?es itself by
`its peripheral device type. If the correct driver for the
`identi?ed device type is not already available computer
`system, the computer system searches all available storage
`devices, including the memory device of the invention,
`Where it ?nds the correct driver for the peripheral device.
`The computer system can then install this driver, and pro
`ceed to use the neW peripheral device Without requiring the
`correct driver to be provided manually. Instead of the driver
`or in addition to the driver, the memory device may contain
`additional programs, such as application programs that
`utiliZe the peripheral device. By integrating the memory
`device into the additional device, it can be guaranteed that
`the data stored in the memory device is alWays available in
`conjunction With the additional device. Finally, the solid
`state memory device may be combined With a storage device
`having different characteristics, such as a CD-ROM drive
`With media. Such a combination may be used With applica
`tions that have different retrieval performance requirements
`
`6
`
`
`
`US 6,574,588 B1
`
`3
`for different portions of their data. As an example, a game
`may include executable code, Which must be loaded quickly,
`and video data, Which can be loaded more sloWly. In
`accordance With such requirements, the executable code
`could be stored in the faster solid-state memory device,
`While the video data could be stored on the cheaper
`CD-ROM.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a high-level block diagram of the general
`purpose computer system to Which the solid-state memory
`device is preferably connected.
`FIG. 2 is a block diagram shoWing the functional com
`ponents for the additional peripheral shoWn in FIG. 1 for the
`embodiment providing the memory device in conjunction
`With another peripheral.
`FIG. 3 is a How diagram that shoWs the steps preferably
`performed by the operating system in order to utiliZe an
`additional peripheral that includes a peripheral function
`subsystem and an associated driver.
`FIG. 4 is a block diagram shoWing the functional com
`ponents of the additional peripheral shoWn in FIG. 1 for the
`serial ROM embodiment.
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`The present invention is directed to a solid-state read-only
`memory device that may be connected to a computer system
`via a serial connection, such as a Universal Serial Bus or
`1394 connection, and that does not require a special driver.
`When it is initialiZed as part of initialiZing the devices on the
`serial connection during the operating system’s boot
`process, the memory device inaccurately identi?es itself as
`a storage device of a type knoWn to the operating system,
`such as a hard drive. The contents of the memory device can
`then be read using portions of the operating system designed
`and provided for reading from storage devices of the iden
`ti?ed type.
`Such a memory device has several useful applications.
`First, it can be used alone as a fast form of storage, having
`both a small latency time and a large transfer rate. Such use
`is Well-suited to video game cartridges, such as those used
`With popular video game console systems. Second, the
`memory device can be incorporated in another device. For
`example, such a memory device containing a driving video
`game may be incorporated in a steering Wheel game con
`troller. As a further example, such a memory device can be
`incorporated in a peripheral device, such as a printer or a
`scanner. Such a memory device may contain a driver for the
`peripheral device. When the serial connection is initialiZed,
`the memory device inaccurately identi?es itself as a hard
`drive, and the peripheral device correctly identi?es itself by
`its peripheral device type. If the correct driver for the
`identi?ed device type is not already available computer
`system, the computer system searches all available storage
`devices, including the memory device of the invention,
`Where it ?nds the correct driver for the peripheral device.
`The computer system can then install this driver, and pro
`ceed to use the neW peripheral device Without requiring the
`correct driver to be provided manually. Instead of the driver
`or in addition to the driver, the memory device may contain
`additional programs, such as application programs that
`utiliZe the peripheral device. By integrating the memory
`device into the additional device, it can be guaranteed that
`the data stored in the memory device is alWays available in
`conjunction With the additional device. Finally, the solid
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`4
`state memory device may be combined With a storage device
`having different characteristics, such as a CD-ROM drive
`With media. Such a combination may be used With applica
`tions that have different retrieval performance requirements
`for different portions of their data. As an example, a game
`may include executable code, Which must be loaded quickly,
`and video data, Which can be loaded more sloWly. In
`accordance With such requirements, the executable code
`could be stored in the faster solid-state memory device,
`While the video data could be stored on the cheaper
`CD-ROM.
`FIG. 1 is a high-level block diagram of the general
`purpose computer system to Which the solid-state memory
`device is preferably connected. The computer system 100, or
`“data processing system,” contains a central processing unit
`(CPU) 110 and a computer memory (memory) 120. The
`computer system 100 is further connected to input/output
`devices, including a storage device 140, such as a hard disk
`drive; a ?oppy drive 150; a CD-ROM drive 160; and an
`additional peripheral device 170 containing the solid-state
`memory device, and optionally a related traditional periph
`eral device. The additional peripheral 170 is preferably
`connected to the computer system 100 by a serial connection
`180, and may share this serial connection With other periph
`eral devices (not shoWn). The memory 130 preferably con
`tains an operating system 130, such as Microsoft® Win
`doWs® 98. The operating system 130, in turn, includes a
`driver 131 for hard drives, and a driver 132 for ?oppy drives,
`Which enable the operating system to access hard drives and
`?oppy drives Without installing additional drivers. The
`memory 120 further preferably contains a driver 121 for
`CD-ROM drives, an application program 122, data 123
`corresponding to the application program, and a utility
`program 124. The memory 120 may also contain additional
`data not shoWn. While the solid-state memory device is
`preferably connected to a computer system con?gured as
`described above, those skilled in the art Will recogniZe that
`it may also be connected to computer systems having
`different con?gurations.
`FIG. 2 is a block diagram shoWing the functional com
`ponents for the additional peripheral shoWn in FIG. 1 for the
`embodiment providing the memory device in conjunction
`With another peripheral. In several embodiments, these
`functional components are all provided in the same case or
`package, such that they are generally inseparable. In these
`embodiments, the functional components generally remain
`in this case or package. The additional peripheral 170
`preferably includes a peripheral function subsystem 210, a
`memory device 220, and a knoWn storage device emulation
`subsystem 230. The peripheral function subsystem is the
`portion of the additional peripheral that provides typical
`peripheral functionality. For example, it may be a CD-ROM
`drive that reads CD-ROMs, a printer that prints documents,
`an optical scanner that reads documents, a modem that
`connects the computer system to another computer system
`via phone lines, a joystick or other game controller that a
`user may use to provide input to an entertainment softWare
`title, a DVD RAM drive that may used to read or Write
`DVDs, etc. The foregoing list is merely illustrative, as the
`peripheral function subsystem can perform the function of
`any traditional peripheral device, Whether noW knoWn or
`later developed.
`A persistent memory device 220 contains data relating to
`the peripheral function subsystem. For example, the memory
`device may contain a driver for the peripheral function
`subsystem. The memory device may further contain any
`other program or programs relating to the peripheral func
`
`7
`
`
`
`US 6,574,588 B1
`
`5
`tion subsystem, such as application or utility programs
`executed in connection With the peripheral function sub
`system. For example, the memory device may contain a
`document scanning application executed in conjunction With
`an optical scanner peripheral function subsystem. As another
`example, the memory device may contain a ?le backup
`utility program executed in conjunction With a sequential
`tape drive. As a further example, the memory device may
`include an entertainment softWare title that uses a game
`controller peripheral function subsystem to provide input for
`the entertainment title. To better facilitate the command
`translation function of the knoWn storage device emulation
`subsystem 230, the driver and other ?les stored in the
`memory device 220 are preferably stored in a manner that is
`similar, if not identical, to the format in Which they Would
`be stored on a hard drive.
`The knoWn storage device emulation subsystem 230
`contains logic that misrepresents the memory device 220 as
`a hard disk drive, or as a device of another type knoWn to the
`operating system. Because the operating system understands
`the memory device 220 to be a hard disk drive, or a device
`of another type knoWn to it, the operating system is not
`prompted to search for and install a driver for the memory
`device—rather it registers the memory device as a hard drive
`or other knoWn device in its drive letter table, and expects
`that it may access the memory device by issuing commands
`Within the command set for a hard drive or other knoWn
`device. If, on the other hand, the knoWn device emulation
`system did not misrepresent the identity of the memory
`device, the operating system Would have to obtain and install
`a special driver in order to read from the memory device.
`When the operating system subsequently receives com
`mands from the hard drive command set, they are inter
`cepted by the knoWn storage device emulation subsystem,
`Which translates them for execution by the memory device.
`Because the memory device is preferably read-only, the
`principal hard drive commands to Which it must respond
`under the control of the knoWn storage device emulation
`subsystem are commands for reading data. These are
`detailed, for example, in the Small Computer System
`Interface-2 (“SCSI-2”) proposed standard, Which is avail
`able from the International Standards OrganiZation under
`Reference No. 9316-1. It Will be appreciated by those skilled
`in the art, hoWever, that any standard for communication
`betWeen a computer system and a hard drive or other device
`knoWn to the operating system may be used to derive the
`hard drive command set to Which the knoWn storage device
`emulation subsystem should respond appropriately. In the
`example of the SCSI-2 standard, the memory device must
`respond to commands to read from the hard drive, such as
`READ(6) (operation code 08h) and READ(10) (operation
`code 28h). In response to these read commands, the memory
`device must locate in the memory device the speci?ed data
`and return it to the operating system. The memory device
`must also respond appropriately to other commands de?ned
`by the standard for hard drives. For instance, in response to
`commands to format the hard drive (e.g., FORMAT UNIT
`(operation code 3Ah)), or to Write to the hard drive (e.g.,
`WRITE(6) (operation code 0Ah)), WRITE(10) (operation
`code 2Ah), WRITE AND VERIFY (operation code 2Eh),
`WRITE BUFFER (operation code 3Bh), WRITE LONG
`(operation code 3Fh), WRITE SAME (operation code 41h),
`the memory device must return an error message to the effect
`that these commands cannot be performed by the memory
`device. The memory device similarly responds to other
`commands de?ned for the hard drive as is appropriate. All
`of these responses are preferably handled by the knoWn
`storage device emulation subsystem 230.
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`6
`The memory device 220 is preferably a solid-state silicon
`read-only memory device, but may be implemented using
`other technologies as prevailing device price and perfor
`mance conditions militate. The knoWn storage device emu
`lation subsystem 230 is preferably an application speci?c
`integrated circuit, a programmable logic array, or a micro
`controller or microprocessor coupled With a control ROM.
`Alternative technologies may be substituted as prevailing
`device price and performance conditions militate.
`In one embodiment, the memory device 220 and the
`knoWn storage device emulation subsystem 230 are com
`bined in a device such as an application speci?c integrated
`circuit, a programmable logical array, or a microcontroller or
`a microprocessor coupled With a controller/data ROM.
`FIG. 3 is a How diagram that shoWs the steps preferably
`performed by the operating system in order to utiliZe an
`additional peripheral that includes a peripheral function
`subsystem and an associated driver. While these steps are
`preferably performed during the operating system’s startup
`process, they may also or instead be performed at a later
`time. In step 301, the operating system enumerates the serial
`bus. That is, the operating system requests a report of the
`identities of all the devices connected to the serial bus. While
`such enumeration reporting is Well knoWn to those skilled in
`the art, details of this process may be found, for example, in
`the Universal Serial Bus speci?cation, Revision 1.0, Jan. 15,
`1996, presently available at http://WWW.teleport.com/~USB.
`In response to the enumeration request of step 301, the
`operating system receives a report of the memory device
`220. The report inaccurately indicates that the memory
`device is of the hard drive device type. Alternatively, the
`operating system may receive a report that indicates that the
`memory device is of another device type that can be
`accessed by the operating system Without an additional
`driver, or is “knoWn” to the operating system.
`In step 303, also in response to the enumeration request of
`step 301, the operating system receives a correct report of
`the identity of the peripheral function subsystem. That is,
`Where the peripheral function subsystem is an optical
`scanner, the report received in step 303 indicates that the
`peripheral function subsystem is an optical scanner. In step
`304, because a driver must be found and installed for the
`peripheral function subsystem to make the peripheral func
`tion subsystem usable, the operating system searches all
`available drives for a driver for the peripheral function
`subsystem. This list preferably includes drives such as a
`CD-ROM drive, a ?oppy drive, and hard drives including
`the memory device 220. In step 305, the operating system
`?nds the driver stored in the memory device, loads this
`driver from the memory device, and installs it. FolloWing
`this installation process, the operating system can commu
`nicate With the peripheral function subsystem using the
`driver. For example, in step 306, the operating system
`accesses the peripheral function subsystem using the
`installed driver. These steps then conclude. Thus, the inven
`tion provides a neW peripheral (the peripheral function
`subsystem) that does not require the provision of a separate
`driver.
`In additional embodiments of the invention, rather than
`containing a driver, the memory device 220 contains other
`programs relating to the peripheral function subsystem, such
`as application or utility programs. These programs can be
`loaded from the memory device 220 in a similar manner and
`executed on the CPU 110. Thus, the invention provides a
`peripheral device that integrally provides a program relating
`to the peripheral device.
`The present invention also provides a serial ROM addi
`tional peripheral. This embodiment can be used to store any
`
`8
`
`
`
`US 6,574,588 B1
`
`7
`program that bene?ts from quick retrieval, such as a game
`program. FIG. 4 is a block diagram showing the functional
`components of the additional peripheral shoWn in FIG. 1 for
`the serial ROM embodiment. In this embodiment, the addi
`tional peripheral 170 contains only the memory device 220
`and the knoWn storage device emulation subsystem 230. The
`memory device 220 and the knoWn storage device emulation
`subsystem 230 function together as described above in
`conjunction With FIG. 2, alloWing the operating system to
`quickly retrieve programs stored in the memory device using
`commands in the hard drive command set. These tWo
`functional components may be implemented and combined
`in the manners discussed above in conjunction With FIG. 2.
`In a further embodiment, the invention provides a speed
`heterogeneous storage device. In this embodiment, the solid
`state memory device 220 constitutes a fast storage medium,
`While the peripheral function subsystem 210 constitutes a
`sloWer, loWer cost storage medium, such as a CD-ROM
`drive containing a permanently-installed CD-ROM. Those
`skilled in the art Will appreciate that different medium may
`be readily substituted for the solid-state memory device as
`the fast storage medium and/or the CD-ROM drive as the
`sloWer, loWer-cost storage medium. In this embodiment,
`transfer speed-sensitive data, such as executable code for an
`entertainment title, is stored in the memory device 220.
`Transfer speed-insensitive data, such as playable or stream
`ing multimedia ?les (e.g., video clips) are preferably stored
`in the peripheral function subsystem 210, thereby reducing
`the amount of more expensive solid-state memory required
`in the additional peripheral 170.
`While this invention has been shoWn and described With
`reference to preferred embodiments, it Will be understood by
`those skilled in the art that various changes or modi?cations
`in form and detail may be made Without departing from the
`scope of the invention. For example, instead of comprising
`a traditional peripheral device, the peripheral function sub
`system may comprise devices of other types, such as con
`ventional computer electronics devices, like televisions and
`cellular telephones.
`We claim:
`1. Aperipheral device that provides its oWn driver and that
`is connectable to a computer system, comprising:
`a ?rst subsystem for providing a peripheral device func
`tionality other than a functionality of a storage device;
`a persistent memory device containing a driver that, When
`installed by the computer system, enables the computer
`system to interact With the peripheral device to utiliZe
`peripheral device functionality provided by the ?rst
`subsystem; and
`a second subsystem, different from said ?rst subsystem,
`that emulates a storage device of a type usable by the
`computer system Without further modi?cation and
`enables the computer system to install the driver con
`tained by the persistent memory device to utiliZe
`peripheral device functionality provided by the ?rst
`subsystem.
`2. The peripheral device of claim 1 Wherein the ?rst
`subsystem includes an input device that provides function
`ality for inputting data into the computer system.
`3. The peripheral device of claim 2 Wherein the ?rst
`subsystem includes a joystick.
`4. The peripheral device of claim 2 Wherein the ?rst
`subsystem includes a digital video disk drive.
`5. The peripheral device of claim 1 Wherein the ?rst
`subsystem includes an output device that provides function
`ality for outputting data from the computer system.
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`8
`6. The peripheral device of claim 5 Wherein the ?rst
`subsystem includes a printer.
`7. The peripheral device of claim 1 Wherein the ?rst
`subsystem includes and input/output device that provides
`functionality for inputting data into and outputting data from
`the computer system.
`8. The peripheral device of claim 7 Wherein the ?rst
`subsystem includes a removable cartridge drive.
`9. The peripheral device of claim 7 Wherein the ?rst
`subsystem includes a modem.
`10. The peripheral device of claim 1 Wherein the ?rst
`subsystem includes a consumer electronics device.
`11. The peripheral device of claim 10 Wherein the ?rst
`subsystem comprises a television.
`12. The peripheral device of claim 1 Wherein both the
`persistent memory device and the second subsystem are
`provided in a single application-speci?c integrated circuit.
`13. The peripheral device of claim 1 Wherein the persis
`tent memory device is provided in a solid state read-only
`memory device, and Wherein the second subsystem is pro
`vided in an application speci?c integrated circuit connected
`to the solid state read-only memory device.
`14. A peripheral device that provides its oWn driver and
`that is connectable to a computer system, comprising:
`a ?rst subsystem for providing a ?rst functionali