WO2004010317A1 - Method, system, and program for controlling multiple input/output devices - Google Patents

Method, system, and program for controlling multiple input/output devices Download PDF

Info

Publication number
WO2004010317A1
WO2004010317A1 PCT/US2003/022943 US0322943W WO2004010317A1 WO 2004010317 A1 WO2004010317 A1 WO 2004010317A1 US 0322943 W US0322943 W US 0322943W WO 2004010317 A1 WO2004010317 A1 WO 2004010317A1
Authority
WO
WIPO (PCT)
Prior art keywords
register
devices
local bus
memory
function
Prior art date
Application number
PCT/US2003/022943
Other languages
French (fr)
Inventor
David Smith
Sailesh Bissessur
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Priority to DE60324576T priority Critical patent/DE60324576D1/en
Priority to EP03765943A priority patent/EP1554655B1/en
Priority to AU2003254125A priority patent/AU2003254125A1/en
Publication of WO2004010317A1 publication Critical patent/WO2004010317A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]

Definitions

  • the present invention relates to a system, method, and program for controlling multiple storage devices.
  • a local input/output (I/O) bus is a high-speed input/output (I/O) bus used for coupling peripheral devices, such as storage devices, to a computer system.
  • the Peripheral Component Interconnect (PCI) bus and enhancements to the PCI bus, such as the PCI-X bus, are the commonly used I/O buses.
  • a PCI physical device is a physical device that may be coupled to the PCI bus. Each PCI physical device may incorporate from one to eight separate PCI functions.
  • a PCI function may be a logical device.
  • Each PCI function may include a configuration header that may be configured to control peripheral devices coupled to the PCI bus.
  • the configuration header may include configuration registers, such as base address registers. Six base address registers comprising base address register 0 (BARO), base address register 1 (BAR1), base address register 2 (BAR2), base address register 3 (BAR3), base address register 4 (BAR4), base address register 5 (BAR5) may be present in the configuration header.
  • Each base address register may be 32 bits, i.e., a dword.
  • PCI bus Further details of the PCI bus (i.e., the PCI specification) are described in the publication entitled "PCI Local Bus Specification" by the PCI Special Interest Group (Revision 2.2, Copyright 1992, 1993, 1995, 1998 PCI Special Interest Group) and base address registers are described in Chapter 6 of the PCI specification.
  • a device adapter such as a host bus adapter (HBA) may act as the interface between the PCI PCI-X bus and the storage devices.
  • the interface can control the transfer of data from a computer to a storage device and vice versa.
  • Interfaces for storage disks include the Integrated Drive Electronics (IDE) interface (known also as an Advanced Technology Attachment interface, i.e., ATA, interface) and the Serial ATA (SATA) interface. Further details of SATA are described in the publication entitled “Serial ATA: High Speed Serialized AT attachment" by the Serial ATA Working Group (Revision 1.0, Copyright 2001).
  • Technologies analogous to IDE/ATA such as the ATA packet interface (ATAPI) are available for CD ROM and DVD drives.
  • the bandwidth and processing capabilities of the interface can substantially affect system performance, system configuration, system compatibility, system upgradability, etc.
  • a channel is typically the data pathway over which information flows in the IDE interface.
  • each channel can support at most two devices.
  • the primary channel can supports two IDE storage devices and the secondary channel can support two IDE storage devices.
  • the configuration header of the PCI function may be configured to control four PCI IDE devices attached to the PCI bus.
  • BARO, BARl, BAR2, BAR3 and BAR4 may be configured as I/O BARs.
  • I/O BARO may be the command register block for the primary channel.
  • I/O BARl may be the control register block for the primary channel.
  • 10 B AR2 may be the command register block for the secondary channel.
  • I/O BAR3 may be the control register block for the secondary channel.
  • I/O B AR4 may provide control for bus master registers for both the primary channel and the secondary channel.
  • BAR5 may be device specific, i.e., BAR5 is not part of the PCI IDE specification. Hence, a single PCI function can control at most four IDE storage devices via the two channels. Configuring the BARs as I/O BARs for PCI IDE is described in the publication entitled "PCI IDE Controller Specification" (Revision 1.0, 1994) in pages 1-5.
  • FIG. 1 illustrates a bus architecture for accessing data in storage devices in accordance with certain described embodiments of the invention
  • FIG. 2 illustrates a block diagram for a PCI function for devices in accordance with certain described embodiments of the invention
  • FIG. 3 illustrates a block diagram of a configuration header of a PCI function for point-to-point connectivity in accordance with certain described embodiments of the invention.
  • FIG. 4 illustrates logic for controlling storage devices attached to a local bus in accordance with certain described embodiments of the invention.
  • a PCI device such as a central processing unit (CPU) or an IIO processor, 101 is coupled to a host bus, such as a PCI (or a PCI-X) bus 106.
  • the CPU may be any CPU known in art such as the INTEL * x86 family of microprocessors, the PowerPC processor, etc.
  • the O processor may comprise any FO processor known in the art such as the INTEL ** 80321 or the INTEL ** 80310.
  • Eight storage devices such as storage devices 110...117 are coupled to the PCI bus 106 via a device adapter, such as an Serial ATA (SATA) adapter, 118.
  • the storage devices 110...117 may be any type of storage device known in the art, such as an SATA, ATA, ATAPI, etc., type of storage devices.
  • the device adapter 118 may be any type of device adapter known in the art, such as SATA, ATA, ATAPI, etc., type of storage adapters. While eight storage devices 110...117 are shown, a lesser or greater number of storage devices may be connected to the PCI bus 106 via the device adapter 118.
  • the device adapter 118 couples each of the eight storage devices 110...117 to the PCI bus 106 with their own respective cables in a point-to-point fashion. Thus each of the eight storage devices 110...117 may transfer data simultaneously in a direct access mode.
  • Configuration software 120 can configure the system 100 such that the devices 110...117 can exchange data via the PCI bus 106.
  • the configuration software 120 may be part of a BIOS, be part of a standalone software module, be part of device drivers resident on the system 100, be coupled to the PCI device 101, etc.
  • FIG. 2 illustrates a block diagram indicating a representative number of storage devices controllable by a single PCI function 200 corresponding to the system 100, in accordance with embodiments of the invention.
  • the single PCI function 200 can control the eight storage devices 110...117 in accordance with embodiments of the invention.
  • a lesser or a greater number of devices may be controllable by the single PCI function 200.
  • the PCI function 200 implements a base set of configuration registers 202 defined in chapter 6 of the PCI specification.
  • the configuration registers 202 are part of a configuration space (not shown in FIG. 2) that are associated with the PCI function 200 as per the PCI specification.
  • the embodiments of FIG. 1 and FIG. 2 may allow for more than four devices to be simultaneously coupled to the PCI bus per PCI function. Furthermore because of the point-to-point connectivity of the storage devices 110...117, each of the storage devices 110...117 can transfer data simultaneously.
  • the PCI device 101 may possess the ability to address two distinct address spaces: FO and memory.
  • the PCI device 101 use PCI FO and memory transactions to access PCI FO and memory locations, respectively.
  • a third access type, the configuration access is used to access a device's configuration registers.
  • the configuration registers 202 of the PCI function 200 may be initialized at the reset time of system 100 to configure the PCI function 200 to respond to memory and FO address ranges assigned to the PCI function by the configuration software 120.
  • configuration software such as the configuration software 120
  • the configuration registers 202 illustrated in FIG. 2) defined in Chapter 6 of the PCI specification are implemented in order to facilitate this process.
  • FIG. 3 illustrates a configuration header 300 of the PCI function 200 for point to point connectivity of the storage devices 110...117 to the PCI bus 106, in accordance with certain embodiments of the invention.
  • the two 32-bit base address registers BARO and BARl are together configured as a 64 bit memory base address register (memory BAR indicated by reference numeral 302) starting at address lOhex. In alternative embodiments a different starting address different from lOhex can be used to store the memory BAR 302.
  • the dwords 306, 308, 310, 312, corresponding to the base address registers BAR2, BAR3, B AR4, and B AR5 respectively, may be left unused.
  • the register set of the storage devices 110...117 may be mapped into memory space by the memory BAR 302.
  • the memory BAR 302 may be 64 bits long, and may locate an address in a 2 64 bit memory space, wherein areas of the memory space correspond to regions used to control the storage devices 110...117.
  • the storage devices 110...117 may be controlled by accessing the memory space.
  • the memory BAR 302 implements a "programmable memory decoder" in the PCI function 200.
  • the configuration software 120 can assign a 64-bit memory address within the memory space to the memory BAR 302. Since the memory BAR 302 may be 64 bits long the total amount of addressable memory may be 2 64 bytes, which is large enough to map the register set of the storage devices 110...117. In one embodiment of the invention, the amount of memory space required to control each of the storage devices 110...117 is at most 512 bytes. With 512 bytes per storage device, the number of storage devices, such as storage disks, that may be connected to the PCI bus 106 via the use of the memory BAR 302 is significantly greater than four.
  • the amount of memory space required to control each storage device 110...117 is a greater or lesser number of bytes.
  • the number of bytes required per storage device is guided by the capabilities needed to control each device and is a function of the feature set to be supported for each device.
  • the number of storage devices that can be supported simultaneously in embodiments of the invention for SATA connectivity is very large.
  • FIG. 4 illustrates logic for controlling storage devices attached to the local bus 106 in accordance with described embodiments of the invention. The logic described in FIG.
  • configuration software 120 may be performed by configuration software, such as configuration software 120, where the configuration software 120 is coupled to a system in which storage devices may be connected to a local bus in either a point-to-point scheme such as in system 100 or in a prior art daisy chained scheme, such as in a PCI LDE mode.
  • control proceeds to block 404, where the configuration software 120 determines whether storage devices attached to the system are in PCI IDE mode. If so, control proceeds to block 408 where the configuration software
  • the configuration software 120 determines that storage devices attached to the system are not in PCI IDE mode control proceeds to block 416 where configuration software 120 determines whether the storage devices connected to the PCI bus 106 are in a direct access mode (i.e., the storage devices are connected to the PCI bus in a point-to-point scheme, e.g., in a SATA mode). If so, the configuration software 120 configures (at block 420) the base address registers 302...312 as the memory BAR 302 as described in FIG. 3, and the process stops (at block 412). As a result of configuring the memory base address register 302, more than four devices, such as the storage devices
  • the configuration software 120 determines that the storage devices are not in a direct access mode the process stops (at block 412).
  • PCI IDE mode or in the mode where more than four ATA/SATA type devices can be attached to the PCI bus.
  • the logic of FIG. 4 implements an interface where the single PCI function 200 can control the eight storage devices 110...117.
  • Block 408 implements a configuration to control IDE/ ATA devices using a PCI function, which requires the IDE/ ATA devices be mapped to FO space. This means that up to four LDE/ATA devices (or ATAPI or SATA) can be controlled simultaneously using a single PCI function. Described embodiments further provide a programming interface, utilizing memory space, which allows the control of more than four
  • IDE/ATA/ATAPFS ATA devices using a single PCI function. Being able to use only a single PCI function versus multiple functions, reduces the amount of hardware required.
  • Additional embodiments of the invention enable a switch between a PCI IDE mode in which no more than four devices can be controlled using a single PCI function and a direct address mode in which more than four FO devices can be controlled using a single PCI function.
  • Embodiments 25[] The operations described herein may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof.
  • article of manufacture refers to machine readable instructions or logic implemented in hardware logic (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.) or a machine readable medium (e.g., magnetic storage medium (e.g., hard disk drives, floppy disks,, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non- volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.).
  • hardware logic e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.
  • a machine readable medium e.g., magnetic storage medium (e.g., hard disk
  • Code in the computer readable medium is accessible and executable by a processor.
  • the code in which preferred embodiments are implemented may further be accessible through a transmission media or from a file server over a network.
  • the article of manufacture in which the code is implemented may comprise a transmission media, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc.
  • a transmission media such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc.
  • the storage devices communicate on a bus topology, such as a PCI-X or PCI bus topology.
  • the storage devices may communicate using any communication architecture known in the art.
  • Alternative embodiments may use interfaces other than IDE, ATA, SATA or ATAPI.
  • additional PCI-X or PCI bridges may be used.
  • the storage devices comprised magnetic hard disk drives.
  • the storage devices may comprise any storage device known in the art, such as optical disks, tapes, CDROM drives, DVDs etc.
  • each base address register is 32 bits wide if the base address register is an FO decoder and may be either 32 bits or 64 bits wide if the base address register is a memory decoder. If the host bus 106 is a PCI-X bus, then each base address register is 32 bits wide if the base address register is an FO decoder and 64 bits wide if the base address register is a memory decoder. In alternative embodiments the length of the base address registers may have a different number of bits.
  • FIG. 4 describes specific operations occurring in a particular order. In alternative embodiments, certain of the logic operations may be performed in a different order, modified or removed. Morever, steps may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.

Abstract

Provided are a method, system and article of manufacture for controlling one or more I/O devices coupled to a local bus. A local bus function is associated with the one or more I/O devices. A register corresponding to the local bus function is configured as a memory address. The one or more I/O devices are controlled via the configured register.

Description

METHOD, SYSTEM, AND PROGRAM FOR CONTROLLING MULTIPLE INPUT/OUTPUT DEVICES
BACKGROUND OF THE INVENTION
1. Field of the Invention
1[] The present invention relates to a system, method, and program for controlling multiple storage devices.
2. Description of the Related Art
2[] A local input/output (I/O) bus is a high-speed input/output (I/O) bus used for coupling peripheral devices, such as storage devices, to a computer system. The Peripheral Component Interconnect (PCI) bus and enhancements to the PCI bus, such as the PCI-X bus, are the commonly used I/O buses.
3[] A PCI physical device is a physical device that may be coupled to the PCI bus. Each PCI physical device may incorporate from one to eight separate PCI functions. A PCI function may be a logical device. Each PCI function may include a configuration header that may be configured to control peripheral devices coupled to the PCI bus. The configuration header may include configuration registers, such as base address registers. Six base address registers comprising base address register 0 (BARO), base address register 1 (BAR1), base address register 2 (BAR2), base address register 3 (BAR3), base address register 4 (BAR4), base address register 5 (BAR5) may be present in the configuration header. Each base address register may be 32 bits, i.e., a dword. Further details of the PCI bus (i.e., the PCI specification) are described in the publication entitled "PCI Local Bus Specification" by the PCI Special Interest Group (Revision 2.2, Copyright 1992, 1993, 1995, 1998 PCI Special Interest Group) and base address registers are described in Chapter 6 of the PCI specification.
4[] A device adapter, such as a host bus adapter (HBA), may act as the interface between the PCI PCI-X bus and the storage devices. The interface can control the transfer of data from a computer to a storage device and vice versa. Interfaces for storage disks include the Integrated Drive Electronics (IDE) interface (known also as an Advanced Technology Attachment interface, i.e., ATA, interface) and the Serial ATA (SATA) interface. Further details of SATA are described in the publication entitled "Serial ATA: High Speed Serialized AT attachment" by the Serial ATA Working Group (Revision 1.0, Copyright 2001). Technologies analogous to IDE/ATA such as the ATA packet interface (ATAPI) are available for CD ROM and DVD drives. The bandwidth and processing capabilities of the interface can substantially affect system performance, system configuration, system compatibility, system upgradability, etc.
5[] A channel is typically the data pathway over which information flows in the IDE interface. As per the PCI IDE interface there may be two channels, primary channel and secondary channel, per PCI function. Furthermore, each channel can support at most two devices. For example, the primary channel can supports two IDE storage devices and the secondary channel can support two IDE storage devices. The configuration header of the PCI function may be configured to control four PCI IDE devices attached to the PCI bus. BARO, BARl, BAR2, BAR3 and BAR4 may be configured as I/O BARs. I/O BARO may be the command register block for the primary channel. I/O BARl may be the control register block for the primary channel. 10 B AR2 may be the command register block for the secondary channel. I/O BAR3 may be the control register block for the secondary channel. I/O B AR4 may provide control for bus master registers for both the primary channel and the secondary channel. BAR5 may be device specific, i.e., BAR5 is not part of the PCI IDE specification. Hence, a single PCI function can control at most four IDE storage devices via the two channels. Configuring the BARs as I/O BARs for PCI IDE is described in the publication entitled "PCI IDE Controller Specification" (Revision 1.0, 1994) in pages 1-5.
6[] Although in the prior art PCI IDE/ATA has been used for supporting peripheral devices, there is a need in the art for improved techniques for controlling peripheral devices in a local I/O bus architecture with interfaces such as the SATA.
BRIEF DESCRIPTION OF THE DRAWINGS 7[]
Referring now to the drawings in which like reference numbers represent corresponding parts throughout:
FIG. 1 illustrates a bus architecture for accessing data in storage devices in accordance with certain described embodiments of the invention;
FIG. 2 illustrates a block diagram for a PCI function for devices in accordance with certain described embodiments of the invention; FIG. 3 illustrates a block diagram of a configuration header of a PCI function for point-to-point connectivity in accordance with certain described embodiments of the invention; and
FIG. 4 illustrates logic for controlling storage devices attached to a local bus in accordance with certain described embodiments of the invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 8[] In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several embodiments of the present invention. It is understood that other embodiments may be utilized and structural and operational changes may be made without departing from the scope of the present invention. 9[] Described embodiments of the invention provide techniques to allow a single PCI function to control more than four ATA/ATAPI/SATA devices. Additional embodiments of the invention enable a switch between a PCI IDE mode in which no more than four devices can be controlled using a single PCI function and a direct address mode in which more than four ATAJATAPI/SATA devices can be controlled using a single PCI function. 10[] FIG. 1 illustrates a system 100, including a bus architecture for accessing data in storage devices, such as SATA storage devices, in accordance with embodiments of the invention. A PCI device, such as a central processing unit (CPU) or an IIO processor, 101 is coupled to a host bus, such as a PCI (or a PCI-X) bus 106. The CPU may be any CPU known in art such as the INTEL * x86 family of microprocessors, the PowerPC processor, etc. The O processor may comprise any FO processor known in the art such as the INTEL** 80321 or the INTEL** 80310.
11[] Eight storage devices, such as storage devices 110...117 are coupled to the PCI bus 106 via a device adapter, such as an Serial ATA (SATA) adapter, 118. The storage devices 110...117 may be any type of storage device known in the art, such as an SATA, ATA, ATAPI, etc., type of storage devices. The device adapter 118 may be any type of device adapter known in the art, such as SATA, ATA, ATAPI, etc., type of storage adapters. While eight storage devices 110...117 are shown, a lesser or greater number of storage devices may be connected to the PCI bus 106 via the device adapter 118. 12[] The device adapter 118 couples each of the eight storage devices 110...117 to the PCI bus 106 with their own respective cables in a point-to-point fashion. Thus each of the eight storage devices 110...117 may transfer data simultaneously in a direct access mode. 13[] Configuration software 120 can configure the system 100 such that the devices 110...117 can exchange data via the PCI bus 106. The configuration software 120 may be part of a BIOS, be part of a standalone software module, be part of device drivers resident on the system 100, be coupled to the PCI device 101, etc.
14[] FIG. 2 illustrates a block diagram indicating a representative number of storage devices controllable by a single PCI function 200 corresponding to the system 100, in accordance with embodiments of the invention. In FIG. 2, the single PCI function 200 can control the eight storage devices 110...117 in accordance with embodiments of the invention. In alternative embodiments of the invention a lesser or a greater number of devices may be controllable by the single PCI function 200. The PCI function 200 implements a base set of configuration registers 202 defined in chapter 6 of the PCI specification. The configuration registers 202 are part of a configuration space (not shown in FIG. 2) that are associated with the PCI function 200 as per the PCI specification. The embodiments of FIG. 1 and FIG. 2 may allow for more than four devices to be simultaneously coupled to the PCI bus per PCI function. Furthermore because of the point-to-point connectivity of the storage devices 110...117, each of the storage devices 110...117 can transfer data simultaneously.
15[] The PCI device 101 may possess the ability to address two distinct address spaces: FO and memory. The PCI device 101 use PCI FO and memory transactions to access PCI FO and memory locations, respectively. In addition, a third access type, the configuration access, is used to access a device's configuration registers.The configuration registers 202 of the PCI function 200 may be initialized at the reset time of system 100 to configure the PCI function 200 to respond to memory and FO address ranges assigned to the PCI function by the configuration software 120.
16[] When a system, such as system 100 is reset, configuration software, such as the configuration software 120, scans the various buses in the system 100 to determine what devices exist and what configuration requirements they have. The process is referred to as "scanning the bus" or "walking the bus." The configuration registers 202 (illustrated in FIG. 2) defined in Chapter 6 of the PCI specification are implemented in order to facilitate this process.
17[] FIG. 3 illustrates a configuration header 300 of the PCI function 200 for point to point connectivity of the storage devices 110...117 to the PCI bus 106, in accordance with certain embodiments of the invention. 18[] In FIG. 3, the two 32-bit base address registers BARO and BARl are together configured as a 64 bit memory base address register (memory BAR indicated by reference numeral 302) starting at address lOhex. In alternative embodiments a different starting address different from lOhex can be used to store the memory BAR 302. In FIG. 3, the dwords 306, 308, 310, 312, corresponding to the base address registers BAR2, BAR3, B AR4, and B AR5 respectively, may be left unused. The register set of the storage devices 110...117 may be mapped into memory space by the memory BAR 302. In certain embodiments the memory BAR 302 may be 64 bits long, and may locate an address in a 264 bit memory space, wherein areas of the memory space correspond to regions used to control the storage devices 110...117. The storage devices 110...117 may be controlled by accessing the memory space.
19[] Therefore, the memory BAR 302 implements a "programmable memory decoder" in the PCI function 200. The configuration software 120 can assign a 64-bit memory address within the memory space to the memory BAR 302. Since the memory BAR 302 may be 64 bits long the total amount of addressable memory may be 264 bytes, which is large enough to map the register set of the storage devices 110...117. In one embodiment of the invention, the amount of memory space required to control each of the storage devices 110...117 is at most 512 bytes. With 512 bytes per storage device, the number of storage devices, such as storage disks, that may be connected to the PCI bus 106 via the use of the memory BAR 302 is significantly greater than four. In alternative embodiments, the amount of memory space required to control each storage device 110...117 is a greater or lesser number of bytes. The number of bytes required per storage device is guided by the capabilities needed to control each device and is a function of the feature set to be supported for each device. In view of the large addressable space in the memory BAR 302 and the relatively small number of bytes required per storage device, the number of storage devices that can be supported simultaneously in embodiments of the invention for SATA connectivity is very large. Hence, embodiments of the invention provide configuration mechanisms such that the system 100 is able to convert accesses initiated by a CPU or an FO processor comprising the PCI device 100, with certain predefined addresses into configuration access on the PCI bus 106, where more than four ATA/ATAPFSATA devices are connected to the PCI bus 106. 20[] FIG. 4 illustrates logic for controlling storage devices attached to the local bus 106 in accordance with described embodiments of the invention. The logic described in FIG. 4 may be performed by configuration software, such as configuration software 120, where the configuration software 120 is coupled to a system in which storage devices may be connected to a local bus in either a point-to-point scheme such as in system 100 or in a prior art daisy chained scheme, such as in a PCI LDE mode.
21[] At block 400, the system 300 is reset. Control proceeds to block 404, where the configuration software 120 determines whether storage devices attached to the system are in PCI IDE mode. If so, control proceeds to block 408 where the configuration software
120 configures the base address registers as FO base address registers in a manner known in prior art and the process stops (at block 412).
22[] If at block 404, the configuration software 120 determines that storage devices attached to the system are not in PCI IDE mode control proceeds to block 416 where configuration software 120 determines whether the storage devices connected to the PCI bus 106 are in a direct access mode (i.e., the storage devices are connected to the PCI bus in a point-to-point scheme, e.g., in a SATA mode). If so, the configuration software 120 configures (at block 420) the base address registers 302...312 as the memory BAR 302 as described in FIG. 3, and the process stops (at block 412). As a result of configuring the memory base address register 302, more than four devices, such as the storage devices
110...117, can be attached to the PCI bus 106 in a point-to-point manner. If at block 416, the configuration software 120 determines that the storage devices are not in a direct access mode the process stops (at block 412).
23[] The logic described in FIG. 4 enables the operation of the system 100 in either the
PCI IDE mode or in the mode where more than four ATA/SATA type devices can be attached to the PCI bus. The logic of FIG. 4 implements an interface where the single PCI function 200 can control the eight storage devices 110...117.
24[] Block 408, implements a configuration to control IDE/ ATA devices using a PCI function, which requires the IDE/ ATA devices be mapped to FO space. This means that up to four LDE/ATA devices (or ATAPI or SATA) can be controlled simultaneously using a single PCI function. Described embodiments further provide a programming interface, utilizing memory space, which allows the control of more than four
IDE/ATA/ATAPFS ATA devices using a single PCI function. Being able to use only a single PCI function versus multiple functions, reduces the amount of hardware required.
Additional embodiments of the invention enable a switch between a PCI IDE mode in which no more than four devices can be controlled using a single PCI function and a direct address mode in which more than four FO devices can be controlled using a single PCI function.
Additional Embodiments 25[] The operations described herein may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term "article of manufacture" as used herein refers to machine readable instructions or logic implemented in hardware logic (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.) or a machine readable medium (e.g., magnetic storage medium (e.g., hard disk drives, floppy disks,, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non- volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.). Code in the computer readable medium is accessible and executable by a processor. The code in which preferred embodiments are implemented may further be accessible through a transmission media or from a file server over a network. In such cases, the article of manufacture in which the code is implemented may comprise a transmission media, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present invention, and that the article of manufacture may comprise any information bearing medium known in the art.
26[] In the described embodiments, the storage devices communicate on a bus topology, such as a PCI-X or PCI bus topology. In alternative embodiments, the storage devices may communicate using any communication architecture known in the art. Alternative embodiments may use interfaces other than IDE, ATA, SATA or ATAPI. 27[] In PCI bus embodiments, additional PCI-X or PCI bridges may be used. In certain embodiments, the storage devices comprised magnetic hard disk drives. In alternative embodiments, the storage devices may comprise any storage device known in the art, such as optical disks, tapes, CDROM drives, DVDs etc.
28 [] In the embodiments the length of registers have been illustrated with a certain number of bits. In the embodiments, if the host bus is a PCI bus, then each base address register is 32 bits wide if the base address register is an FO decoder and may be either 32 bits or 64 bits wide if the base address register is a memory decoder. If the host bus 106 is a PCI-X bus, then each base address register is 32 bits wide if the base address register is an FO decoder and 64 bits wide if the base address register is a memory decoder. In alternative embodiments the length of the base address registers may have a different number of bits.
29[] The logic of FIG. 4 describes specific operations occurring in a particular order. In alternative embodiments, certain of the logic operations may be performed in a different order, modified or removed. Morever, steps may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.
30 [] The foregoing description of the preferred embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto. The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
** Intel is a registered trademark of Intel Corporation. PowerPC is a registered trademark of IBM Corporation.

Claims

WHAT IS CLAIMED IS:
1. A method for controlling one or more FO devices coupled to a local bus, comprising: associating a local bus function with the one or more FO devices; configuring a register corresponding to the local bus function as a memory address; and controlling the one or more FO devices via the configured register.
2. The method of claim 1, wherein the memory address is coupled to a memory space, wherein the memory space maps control to the one or more FO devices, and wherein the one or more FO devices are controlled by accessing the memory space.
3. The method of claim 1, wherein the configuring is performed by configuration software coupled to the local bus.
4. The method of claim 1, wherein the register is configured as a memory base address register, and wherein the memory base address register is 32 bits or 64 bits long.
5. The method of claim 1, wherein the configured register functions as a programmable memory decoder.
6. The method of claim 1, wherein the register is stored in a configuration header of the local bus function.
7. The method of claim 1, wherein the local bus is a PCI bus and the local bus function is a PCI function.
8. The method of claim 1, wherein the one or more FO devices are storage devices connected in a point-to-point mechanism to the local bus.
9. The method of claim 8, wherein the point-to-point mechanism is implemented by a serial ATA interface.
10. The method of claim 1, wherein the local bus function is used to control more than four FO devices.
11. The method of claim 1, wherein the one or more FO devices comply with the ATA, ATAPI or SATA interface.
12. A method for controlling one or more FO devices connected to a local bus, comprising: associating a local bus function with the one or more FO devices; if the one or more FO devices are in a first access mode, configuring a register as an FO address; if the one or more FO devices are in a second access mode, configuring the register corresponding to the local bus function as a memory address.
13. The method of claim 12, wherein the first access mode is a PCI IDE mode and the second access mode is a direct access mode.
14. The method of claim 12, wherein the register is stored in a configuration header of the local bus function, and wherein the register is configured as a memory decoder by configuring the register as a memory base address register.
15. The method of claim 12, wherein the register is stored in a configuration header of the local bus function, and wherein the register is configured as a FO decoder by configuring the register as a FO base address register.
16. A system for controlling one or more FO devices coupled to a local bus, comprising: a local bus function associated with the one or more FO devices; and a register corresponding to the local bus function, wherein the register is configured as a memory address, and wherein the one or more FO devices are controlled via the configured register.
17. The system of claim 16, further comprising a host bus adapter, wherein the host bus adapter couples the one or more FO devices to the local bus.
18. The system of claim 16, further comprising: a memory space, wherein' the memory address is coupled to the memory space, wherein the memory space maps control to the one or more FO devices, and wherein the one or more FO devices are controlled by accessing the memory space.
19. The system of claim 16, wherein the register is configured as a memory base address register, and wherein the memory base address register is 32 bits or 64 bits long, and wherein the configured register functions as a programmable memory decoder.
20. The system of claim 16, wherein the local bus is a PCI bus, wherein the local bus function is a PCI function, wherein the PCI function has a configuration header, and wherein the register is stored in the configuration header of the PCI function.
21. The system of claim 16, wherein the local bus function is used to control more than four FO devices.
22. The system of claim 16, wherein the one or more FO devices comply with the ATA, ATAPI or SATA interface.
23. A system comprising: a local bus; one or more FO devices coupled to the local bus; a local bus function associated with the one or more FO devices; and a register corresponding to the local bus function, wherein the register is configured as a memory address, and wherein the one or more FO devices are controlled via the configured register.
24. The system of claim 23, further comprising a host bus adapter, wherein the host bus adapter couples the one or more FO devices to the local bus.
25. The system of claim 23, further comprising: a memory space, wherein the memory address is coupled to the memory space, wherein the memory space maps control to the one or more FO devices, and wherein the one or more FO devices are controlled by accessing the memory space.
26. The system of claim 23, further comprising: configuration software coupled to the local bus, wherein the configuration software configures the register as the memory address.
27. The system of claim 23, wherein the register is configured as a memory base address register, and wherein the memory base address register is 32 bits or 64 bits long, and wherein the configured register functions as a programmable memory decoder.
28. The system of claim 23, wherein the one or more FO devices are storage devices connected in a point-to-point mechanism to the local bus.
29. The system of claim 23, wherein the local bus function is used to control more than four FO devices.
30. A system, comprising: a local bus; one or more FO devices coupled to the local bus; a local bus function associated with the one or more FO devices; and a register corresponding to the local bus function, wherein if the one or more FO devices are in a first access mode the register is configured as an FO address, and wherein if the one or more FO devices are in a second access mode the register is configured as a memory address.
31. The system of claim 30, wherein the local bus function is a PCI function, wherein the first access mode is a PCI IDE mode, and wherein the second access mode is a direct access mode.
32. The system of claim 30, further comprising: a configuration header coupled to the local bus function, wherein the register is stored in the configuration header, and wherein the register is configured as a memory decoder by configuring the register as a memory base address register.
33. The system of claim 30, further comprising: a configuration header coupled to the local bus function, wherein the register is stored in the local bus function, and wherein the register is configured as a FO decoder by configuring the register as a FO base address register.
34. An article of manufacture for controlling one or more FO devices coupled to a local bus, wherein the article of manufacture is capable of causing operations, the operations comprising: associating a local bus function with the one or more FO devices; configuring a register corresponding to the local bus function as a memory address; and controlling the one or more FO devices via the configured register.
35. The article of manufacture of claim 34, wherein the memory address is coupled to a memory space, wherein the memory space maps control to the one or more FO devices, and wherein the one or more FO devices are controlled by accessing the memory space, and wherein the configuring is performed by configuration software coupled to the local bus.
36. The article of manufacture of claim 34, wherein the configured register functions as a programmable memory decoder, wherein the register is configured as a memory base address register, and wherein the memory base address register is 32 bits or 64 bits long.
37. The article of manufacture of claim 34, wherein the local bus is a PCI bus and the local bus function is a PCI function, and wherein the register is stored in a configuration header of the PCI function..
38. The article of manufacture of claim 34, wherein the local bus function is used to control more than four FO devices.
39. The article of manufacture of claim 34, wherein the one or more FO devices comply with the ATA, ATAPI or SATA interface.
40. An article of manufacture for controlling one or more FO devices connected to a local bus, wherein the article of manufacture is capable of causing operations, the operations comprising: associating a local bus function with the one or more FO devices; if the one or more FO devices are in a first access mode, configuring a register as an FO address; and if the one or more FO devices are in a second access mode, configuring the register corresponding to the local bus function as a memory address.
41. The article of manufacture of claim 40, wherein the first access mode is a PCI IDE mode and the second access mode is a direct access mode.
42. The article of manufacture of claim 40, wherein the register is stored in a configuration header of the local bus function, and wherein the register is configured as a memory decoder by configuring the register as a memory base address register.
43. The article of manufacture of claim 40, wherein the register is stored in a configuration header of the local bus function, and wherein the register is configured as a FO decoder by configuring the register as a FO base address register.
PCT/US2003/022943 2002-07-24 2003-07-23 Method, system, and program for controlling multiple input/output devices WO2004010317A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE60324576T DE60324576D1 (en) 2002-07-24 2003-07-23 METHOD, SYSTEM AND PROGRAM FOR CONTROLLING MULTIPLE INPUT / OUTPUT DEVICES
EP03765943A EP1554655B1 (en) 2002-07-24 2003-07-23 Method, system, and program for controlling multiple input/output devices
AU2003254125A AU2003254125A1 (en) 2002-07-24 2003-07-23 Method, system, and program for controlling multiple input/output devices

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/205,664 2002-07-24
US10/205,664 US6931457B2 (en) 2002-07-24 2002-07-24 Method, system, and program for controlling multiple storage devices

Publications (1)

Publication Number Publication Date
WO2004010317A1 true WO2004010317A1 (en) 2004-01-29

Family

ID=30770116

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2003/022943 WO2004010317A1 (en) 2002-07-24 2003-07-23 Method, system, and program for controlling multiple input/output devices

Country Status (8)

Country Link
US (1) US6931457B2 (en)
EP (1) EP1554655B1 (en)
CN (1) CN100426277C (en)
AT (1) ATE413650T1 (en)
AU (1) AU2003254125A1 (en)
DE (1) DE60324576D1 (en)
TW (1) TWI266199B (en)
WO (1) WO2004010317A1 (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807600B2 (en) * 2002-07-24 2004-10-19 Intel Corporation Method, system, and program for memory based data transfer
US20040120353A1 (en) * 2002-09-06 2004-06-24 Ook Kim Method and apparatus for double data rate serial ATA phy interface
US20040081179A1 (en) * 2002-10-23 2004-04-29 Gregorcyk Arthur J. Method and system for selecting between serial storage buses using data signals of the buses
US7000037B2 (en) * 2002-10-24 2006-02-14 Josef Rabinovitz Large array of mass data storage devices connected to a computer by a serial link
US20040083323A1 (en) * 2002-10-24 2004-04-29 Josef Rabinovitz Large array of SATA data device assembly for use in a peripheral storage system
US7107369B2 (en) * 2002-12-19 2006-09-12 Intel Corporation Connecting storage devices to a processor-based device
US7051134B2 (en) * 2003-01-21 2006-05-23 Ali Corporation Daisy chained ATA host controllers in a single PCI device
US20040162926A1 (en) * 2003-02-14 2004-08-19 Itzhak Levy Serial advanced technology attachment interface
US7516272B2 (en) 2003-03-28 2009-04-07 Emc Corporation Midplane-independent implementations of data storage system enclosures
US20060293969A1 (en) * 2005-06-28 2006-12-28 Sean Barger Method and System for Pre-Loading Media Players
TW200743959A (en) * 2006-05-26 2007-12-01 Via Tech Inc Object stacking structure of driver program
US8225019B2 (en) 2008-09-22 2012-07-17 Micron Technology, Inc. SATA mass storage device emulation on a PCIe interface
US9176915B2 (en) * 2009-04-30 2015-11-03 Dell Products L.P. Data storage device carrier system
JP5374268B2 (en) * 2009-07-28 2013-12-25 ラピスセミコンダクタ株式会社 Information processing device
TWI579762B (en) * 2014-05-06 2017-04-21 瑞昱半導體股份有限公司 Solid state drive controlling circuit and related solid state drive device and solid state drive access system
CN105094687B (en) * 2014-05-13 2018-10-26 瑞昱半导体股份有限公司 Solid state disk control circuit and Ssd apparatus access system with solid state disk
KR102255216B1 (en) 2014-11-20 2021-05-24 삼성전자주식회사 Pci device and pci system including the same
US10268611B2 (en) * 2016-02-17 2019-04-23 Honeywell International Inc. Input/output (I/O) binding with automatic international electromechanical commission (IEC) address generation in remote terminal unit (RTU) configuration
US11016692B2 (en) * 2019-09-11 2021-05-25 International Business Machines Corporation Dynamically switching between memory copy and memory mapping to optimize I/O performance

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838932A (en) * 1996-12-23 1998-11-17 Compaq Computer Corporation Transparent PCI to PCI bridge with dynamic memory and I/O map programming
US6233641B1 (en) * 1998-06-08 2001-05-15 International Business Machines Corporation Apparatus and method of PCI routing in a bridge configuration

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5793422A (en) * 1980-11-29 1982-06-10 Omron Tateisi Electronics Co Dma controller
US4535404A (en) 1982-04-29 1985-08-13 Honeywell Information Systems Inc. Method and apparatus for addressing a peripheral interface by mapping into memory address space
CN85101225A (en) * 1985-04-01 1987-01-24 坦德姆计算机有限公司 Reconfiguring automatically of memory plate
US5347636A (en) * 1985-11-08 1994-09-13 Nec Corporation Data processor which efficiently accesses main memory and input/output devices
JP3454294B2 (en) * 1994-06-20 2003-10-06 インターナショナル・ビジネス・マシーンズ・コーポレーション Multiple bus information processing system and bridge circuit
WO1996000940A1 (en) * 1994-06-28 1996-01-11 Intel Corporation Pci to isa interrupt protocol converter and selection mechanism
US5671368A (en) * 1996-02-22 1997-09-23 O2 Micro, Inc. PC card controller circuit to detect exchange of PC cards while in suspend mode
US6023565A (en) * 1996-03-29 2000-02-08 Xilinx, Inc. Method for configuring circuits over a data communications link
US5729760A (en) * 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US5958022A (en) * 1997-03-21 1999-09-28 International Business Machines Corporation System and method for I/O access mode selection
US6148355A (en) * 1997-05-13 2000-11-14 Micron Electronics, Inc. Configuration management method for hot adding and hot replacing devices
US5928338A (en) * 1997-06-20 1999-07-27 Xilinx, Inc. Method for providing temporary registers in a local bus device by reusing configuration bits otherwise unused after system reset
US5922062A (en) * 1997-06-26 1999-07-13 Vlsi Technology, Inc. Combined IDE and SCSI disk controller interface for common hardware reference platforms
US6094699A (en) * 1998-02-13 2000-07-25 Mylex Corporation Apparatus and method for coupling devices to a PCI-to-PCI bridge in an intelligent I/O controller
US6081863A (en) * 1998-03-13 2000-06-27 International Business Machines Corporation Method and system for supporting multiple peripheral component interconnect PCI buses by a single PCI host bridge within a computer system
US6275876B1 (en) 1999-05-21 2001-08-14 International Business Machines Corporation Specifying wrap register for storing memory address to store completion status of instruction to external device
US6499074B1 (en) * 1999-08-23 2002-12-24 Advanced Micro Devices, Inc. Redirecting I/O address holes
US6710620B2 (en) 2001-03-13 2004-03-23 Adc Telecommunications Israel, Ltd. Bus interface for I/O device with memory
US6832278B2 (en) * 2001-03-15 2004-12-14 Microsoft Corporation PCI bar target operation region
GB2373598B (en) * 2001-03-20 2004-12-29 Thales Training & Simulation L Peripheral component interconnect bus memory address decoding
US6665743B2 (en) * 2001-04-18 2003-12-16 International Business Machines Corporation Method, system, and program for initializing a storage space
US6536014B1 (en) * 2001-09-26 2003-03-18 International Business Machines Corporation Reusable configuration tool
US8219736B2 (en) * 2002-02-12 2012-07-10 Ati Technologies Ulc Method and apparatus for a data bridge in a computer system
US6883057B2 (en) * 2002-02-15 2005-04-19 International Business Machines Corporation Method and apparatus embedding PCI-to-PCI bridge functions in PCI devices using PCI configuration header type 0
DE10214701B4 (en) * 2002-04-03 2004-08-05 Advanced Micro Devices, Inc., Sunnyvale ATA and SATA compliant controller component, method of operation and integrated circuit chip
US6807600B2 (en) * 2002-07-24 2004-10-19 Intel Corporation Method, system, and program for memory based data transfer
US6928509B2 (en) * 2002-08-01 2005-08-09 International Business Machines Corporation Method and apparatus for enhancing reliability and scalability of serial storage devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838932A (en) * 1996-12-23 1998-11-17 Compaq Computer Corporation Transparent PCI to PCI bridge with dynamic memory and I/O map programming
US6233641B1 (en) * 1998-06-08 2001-05-15 International Business Machines Corporation Apparatus and method of PCI routing in a bridge configuration

Also Published As

Publication number Publication date
US6931457B2 (en) 2005-08-16
ATE413650T1 (en) 2008-11-15
EP1554655B1 (en) 2008-11-05
TWI266199B (en) 2006-11-11
CN100426277C (en) 2008-10-15
CN1685329A (en) 2005-10-19
US20040019709A1 (en) 2004-01-29
AU2003254125A1 (en) 2004-02-09
DE60324576D1 (en) 2008-12-18
EP1554655A1 (en) 2005-07-20
TW200410073A (en) 2004-06-16

Similar Documents

Publication Publication Date Title
EP1554655B1 (en) Method, system, and program for controlling multiple input/output devices
US9824050B2 (en) Shared PCIe end point system including a PCIe switch and method for initializing the switch
US7028106B2 (en) Remapping routing information entries in an expander
US5724529A (en) Computer system with multiple PC card controllers and a method of controlling I/O transfers in the system
US8495252B2 (en) Implementing PCI-express memory domains for single root virtualized devices
US7343444B2 (en) Reconfigurable memory module and method
US7519761B2 (en) Transparent PCI-based multi-host switch
US6115772A (en) System and method for host expansion and connection adaptability for a SCSI storage array
EP0631241A1 (en) Initializing multiple bus networks
EP1730643A2 (en) Pvdm (packet voice data module) generic bus protocol
EP1532533B1 (en) Method, system, and program for memory based data transfer
US7774575B2 (en) Integrated circuit capable of mapping logical block address data across multiple domains
US5630099A (en) Non-volatile memory array controller capable of controlling memory banks having variable bit widths
GB2289552A (en) Providing discontiguous drive support
US7437503B2 (en) Method and apparatus for handling data transfers
US20050198425A1 (en) Combined optical storage and flash card reader using single ide or sata port and method thereof
JP4359618B2 (en) Configuration register access method, setting method, integrated circuit parts, computer system, product
WO1996017304A1 (en) Bus-to-bus bridge

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2003765943

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 20038226820

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 2003765943

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP