System and method for supporting access to multiple I/O hub nodes in a host bridge
First Claim
Patent Images
1. An input/output system comprising:
- a host bridge connected by a bus to I/O adapters;
a plurality of input/output hub nodes;
means for subdividing address space for said bus among said plurality of input/output hub nodes;
a translation table containing a plurality of translation table entries at each of a plurality of said hub nodes;
a translation table entry in said translation table containing a hub ID field for determining which of said hub nodes is to receive a data transfer from said host bridge;
means for routing of data from an I/O device to one hub node using said hub ID field from said translation table entry while accessing said translation table entry at another hub node using said means for subdividing address space;
a plurality of registers containing a hub ID field and a system memory address field;
an address associated with said bus originating from said I/O adapter;
means responsive to said means for subdividing address space for selecting one of said plurality of registers;
means responsive to said hub ID field from said selected register for determining which hub node to use for accessing said translation table entry; and
means for combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said hub node.
2 Assignments
0 Petitions
Accused Products
Abstract
Dynamic routing of data to multiple processor complexes. PCI address space is subdivided among a plurality of processor complexes. Translation table entries at each processor complex determine which processor complex is to receive a DMA transfer, thereby enabling routing of DMA data to one I/O hub node while accessing translation table entries at another I/O hub node. Further, interrupt requests may be dynamically routed to multiple processor complexes.
-
Citations
32 Claims
-
1. An input/output system comprising:
-
a host bridge connected by a bus to I/O adapters;
a plurality of input/output hub nodes;
means for subdividing address space for said bus among said plurality of input/output hub nodes;
a translation table containing a plurality of translation table entries at each of a plurality of said hub nodes;
a translation table entry in said translation table containing a hub ID field for determining which of said hub nodes is to receive a data transfer from said host bridge;
means for routing of data from an I/O device to one hub node using said hub ID field from said translation table entry while accessing said translation table entry at another hub node using said means for subdividing address space;
a plurality of registers containing a hub ID field and a system memory address field;
an address associated with said bus originating from said I/O adapter;
means responsive to said means for subdividing address space for selecting one of said plurality of registers;
means responsive to said hub ID field from said selected register for determining which hub node to use for accessing said translation table entry; and
means for combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said hub node. - View Dependent Claims (2, 3)
-
-
4. A method for operating an input/output system including a host bridge and a bus connecting said host bridge to a plurality of input/output hub nodes, comprising the steps of:
-
operating a translation table containing a plurality of translation table entries at each of a plurality of said hub nodes;
subdividing address space for said bus among said plurality of input/output hub nodes for determining which said hub node and corresponding translation table to use to translate an address;
providing a translation table entry in said translation table for determining which of said hub nodes is to receive a data transfer;
routing data from said host bridge to one hub node responsive to said translation table entry while accessing translation table entries at another hub node responsive to said subdivided address space;
providing a plurality of resisters containing a hub ID field and a system memory address field;
receiving an address associated with said bus originating from said I/O adapter;
responsive to said subdividing address space, selecting one of said plurality of registers;
determining responsive to said hub ID field from said selected register which hub node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said hub node.
-
-
5. An I/O method, comprising:
-
providing at each of a plurality of processor complexes a translation table containing a plurality of translation table entries;
operating a host bridge to fetch and cache said translation table entries containing hub identifiers and receive input/output data transfer requests;
connecting said host bridge over a bus to said plurality of processor complexes;
subdividing address space for said bus among said plurality of processor complexes for determining which hub node and corresponding translation table will be used to translate a requested address;
said host bridge fetching translation table entries from said complex selected responsive to said subdivided address space;
providing a plurality of registers containing a hub ID field and a system memory address field;
receiving an address associated with said bus originating from an I/O adapter;
responsive to said subdividing address space, selecting one of said plurality of registers;
determining responsive to said hub ID field from said selected register which hub node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said hub node.
-
-
6. A coherency system, comprising:
-
a plurality of processor complexes, each complex having a translation table containing a plurality of translation table entries;
a plurality of host bridges for fetching and caching said translation table entries and receiving input/output data transfer requests;
a plurality of translation table caches associated with said host bridges;
at least one DMA read module associated with said host bridge;
a plurality of DMA read data sources, at least one said source associated with each said complex;
a coherency protocol for assuring coherency for cached translation table entries and DMA read data originating from at least two of said complexes, with translation data fetched from one said complex used to transfer data with another said complex;
a plurality of resisters containing a hub ID field and a system memory address field;
an address originating from an I/O adapter;
means for subdividing address space for said bus;
means responsive to said means for subdividing address space for selecting one of said plurality of registers;
means responsive to said hub ID field from said selected register for determining which complex to use for accessing said translation table entry; and
means for combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry within said address space.
-
-
7. An I/O system, comprising:
-
a PCI memory address space;
a system memory address space;
a host bridge node for translating addresses from said PCI memory address space to said system memory address space including a plurality of registers containing a hub ID field and a system memory address field;
an address originating from an I/O adapter;
means for subdividing address space for said bus;
means responsive to said means for subdividing address space for selecting one of said plurality of registers;
means responsive to said hub ID field from said selected register for determining which complex to use for accessing said translation table entry; and
means for combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry within said address space said host bridge node further for fetching translation table entries from a first processor complex node to determine a location in said system memory address space to which a direct memory address operation will be directed to transfer data to a second processor complex node;
said host bridge node, said first processor complex node and said second processor complex node interconnected by a packet-based connection protocol; and
means for responding to a failure of said second processor complex node by dynamically reconfiguring access to said first processor complex node due to a failure. - View Dependent Claims (8)
-
-
9. An I/O method for transferring packets with respect to PCI memory address space and system memory address space including a plurality of nodes interconnected by a packet-based connection protocol, comprising the steps of:
-
operating a host bridge node to translate addresses from said PCI memory address space to said system memory address space, including;
providing a translation table containing a plurality of translation table entries at each of a plurality of said nodes;
providing a plurality of registers containing a hub ID field and an associated system memory address field;
receiving an address associated with said PCI memory address space originating from an I/O adapter;
subdividing said PCI memory address space, and responsive to said subdividing, selecting one of said plurality of registers;
determining responsive to said hub ID field from said selected register which hub node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said hub node;
fetching translation table entries from a first processor complex node for determining a location in said system memory space to which a direct memory address operation will be directed to transfer data to a second processor complex node; and
responsive to a failure of said second processor complex node, dynamically reconfiguring access to said first processor complex node.
-
-
10. A high availability I/O system, comprising:
-
a plurality of input/output nodes;
a host bridge including an input/output adapter with connections to at least one PCI bus;
a communication link connecting said host bridge to said plurality of input/output nodes;
said host bridge including a plurality of TCE address registers, each said register associated with a PCI address range on each of said PCI busses and including node ID information; and
means for responding to said node ID information for fetching TCE table entries for associating PCI address range with a system memory address from system memory at any of a plurality of said input/output nodes, including an address associated with said PCI bus originating from said input/output adapter;
a plurality of registers containing a hub ID field and a system memory address field;
means for subdividing address space for said PCI bus among said plurality of input/output nodes;
means responsive to said means for subdividing address space for selecting one of said plurality of registers;
a translation table containing a plurality of translation table entries at each said input/output node;
means responsive to said hub ID field from said selected register for determining which input/output node to use for accessing said translation table entry; and
means for combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said input/output node. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A method for operating an I/O system including a plurality of I/O nodes, a host, a host bridge connected to said host, and a communication link connecting said host bridge to said plurality of I/O nodes, comprising the steps of:
-
associating each of a plurality of address registers containing node identifier indicia at said host bridge with an address range; and
responsive to said node ID information, fetching a TCE table entry, said TCE table entry associating a PCI address with a system memory address at any of a plurality of said I/O nodes;
said associating and fetching steps including subdividing said address range among said plurality of I/O nodes;
providing a translation table containing a plurality of translation table entries at each of a plurality of said I/O nodes;
providing a plurality of registers containing a hub ID field and an associated system memory address field;
receiving an address associated with said address range originating from an I/O adapter;
responsive to said subdividing, selecting one of said plurality of registers;
determining responsive to said hub ID field from said selected register which I/O node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said I/O node.
-
-
27. A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for operating an input/output system including a plurality of input/output hubs connected to a bus, said method steps comprising:
-
subdividing address space for said bus among said plurality of input/output hub nodes for determining which hub node and corresponding translation table will be used to translate a requested address;
operating a translation table containing a plurality of translation table entries at each of a plurality of said hub nodes for determining which of said hub nodes is to receive a data transfer;
routing data to one hub node using said translation table entries from said translation table while accessing said translation table entries at another hub node using said subdivided address space for determining location of said translation table entries;
providing a plurality of registers containing a hub ID field and an associated system memory address field;
receiving an address associated with said address range originating from an input/output adapter;
responsive to said subdividing selecting one of said plurality of registers;
determining responsive to said hub ID field from said selected register which input/output hub node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said input/output hub node.
-
-
28. A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for operating an I/O system, said method steps comprising:
-
providing at each of a plurality of processor complex nodes a translation table containing a plurality of translation table entries;
providing a host bridge node connected to said plurality of processor complex nodes over a bus for fetching and caching said translation table entries containing hub identifiers and receiving input/output data transfer requests;
subdividing address space for said bus for determining which hub node and corresponding translation table to use to translate a requested address;
said host bridge fetching said translation table entries from said complex node selected responsive to said subdivided address space by providing a plurality of registers containing a hub ID field and a system memory address field;
receiving an address associated with said bus originating from an I/O adapter;
responsive to said subdividing address space, selecting one of said plurality of registers;
determining responsive to said hub ID field from said selected register which hub node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said hub node.
-
-
29. A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for operating an interrupt system, said method steps comprising;
-
interconnecting a plurality of processor complex nodes and host bridge nodes;
interconnecting an I/O device through an I/O adapter to a host bridge nodes;
setting hub node identifier fields identifying said hub node to send interrupt packets;
setting pointer fields, said pointer fields pointing to said hub node identifier fields and being identifiable with different interrupt levels; and
said setting steps including providing a plurality of registers containing a hub ID field and a system memory address field;
receiving an address associated with said bus originating from said I/O adapter;
subdividing address space, and responsive to said subdividing address space selecting one of said plurality of registers;
providing at each of said plurality of processor complex nodes a translation table containing a plurality of translation table entries;
determining responsive to said hub ID field from a selected register which hub node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said hub node;
routing interrupts from said host bridge node responsive to said pointer fields selectable by interrupt level and said hub node identifier fields selectable by said pointer fields to dynamically determine routing of interrupts from said I/O device to a dynamically selected one of said plurality of processor complex nodes.
-
-
30. A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for transferring packets with respect to PCI memory address space and system memory address space including a plurality of nodes, said method steps comprising:
-
operating a host bridge node to translate addresses from said PCI memory address space to said system memory address space, including;
providing a translation table containing a plurality of translation table entries at each of a plurality of said nodes;
providing a plurality of registers containing a hub ID field and an associated system memory address field;
receiving an address associated with said PCI memory address space originating from an I/O adapter;
subdividing said PCI memory address space, and responsive to said subdividing, selecting one of said plurality of registers;
determining responsive to said hub ID field from said selected register which hub node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said hub node;
fetching translation table entries from a first processor complex node for determining a location in said system memory space to which a direct memory address operation will be directed to transfer data to a second processor complex node;
interconnecting said host bridge node, said first processor complex node and said second processor complex node by a packet-based connection protocol; and
responsive to a failure of said second processor complex node dynamically reconfiguring access to said first processor complex node.
-
-
31. A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for operating an I/O system including a plurality of I/O nodes, a host, a host bridge connected to said host, and a communication link connecting said host bridge to said plurality of I/O nodes, said method steps comprising:
-
associating each of a plurality of address registers at said host bridge with an address range; and
responsive to node ID information, fetching a TCE table entry, said TCE table entry associating a PCI address with a system memory address at any of a plurality of said I/O nodes;
said associating and fetching steps including subdividing said address range among said plurality of I/O nodes;
providing a translation table containing a plurality of translation table entries at each of a plurality of said I/O nodes;
providing a plurality of registers containing a hub ID field and an associated system memory address field;
receiving an address associated with said address range originating from an I/O adapter;
responsive to said subdividing, selecting one of said plurality of registers;
determining responsive to said hub ID field from said selected register which I/O node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said I/O node.
-
-
32. A computer program product or computer program element for operating a computer according to the steps of:
-
providing at each of a plurality of processor complexes a translation table containing a plurality of translation table entries;
providing a host bridge connected to said plurality of processor complexes by a bus for fetching and caching said translation table entries containing hub identifiers and receiving input/output data transfer requests;
subdividing address space for said bus among said plurality of processor complexes for determining which hub node and corresponding translation table to use to translate a requested address;
said host bridge fetching said translation table entries from said complex selected responsive to said subdivided address space by providing a plurality of registers containing a hub ID field and a system memory address field;
receiving an address associated with said bus originating from an I/O adapter;
responsive to said subdividing address space, selecting one of said plurality of registers;
determining responsive to said hub ID field from said selected register which hub node to use for accessing said translation table entry; and
combining said system memory address field from said selected register with a portion of said address for determining a system memory address of said translation table entry in said hub node.
-
Specification