DE69731917T2 - Data flow in a bus bridge - Google Patents

Data flow in a bus bridge Download PDF

Info

Publication number
DE69731917T2
DE69731917T2 DE69731917T DE69731917T DE69731917T2 DE 69731917 T2 DE69731917 T2 DE 69731917T2 DE 69731917 T DE69731917 T DE 69731917T DE 69731917 T DE69731917 T DE 69731917T DE 69731917 T2 DE69731917 T2 DE 69731917T2
Authority
DE
Germany
Prior art keywords
data
signal
transaction
bus
pci
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
DE69731917T
Other languages
German (de)
Other versions
DE69731917D1 (en
Inventor
Alan L. Tomball Goodrum
John M. Cypress Maclaren
Christopher J. Houston Pettey
Paul R. Cypress Culley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
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 Compaq Computer Corp filed Critical Compaq Computer Corp
Application granted granted Critical
Publication of DE69731917D1 publication Critical patent/DE69731917D1/en
Publication of DE69731917T2 publication Critical patent/DE69731917T2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4054Coupling between buses using bus bridges where the bridge performs a synchronising function where the function is bus cycle extension, e.g. to meet the timing requirements of the target bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)

Description

Die Erfindung bezieht sich auf einen Datenstrom in einem Computersystem.The The invention relates to a data stream in a computer system.

Computersysteme umfassen allgemein einen oder mehrere Peripheral Computer Interface (PCI) Busse, die ein spezielles Kommunikationsprotokoll zwischen peripheren Komponenten, wie beispielsweise Videosteuereinheiten und Netzwerk-Schnittstellen-Karten, und dem Hauptspeicher des Computersystems bereitstellen. Wenn ein Systemspeicher und periphere Komponenten (PCI-Vorrichtungen) auf unterschiedlichen Bussen vorhanden sind, ist eine Brücke erforderlich, um den Fluss von Daten-Transaktionen zwischen den zwei Bussen zu verwalten. Die PCI-Bus-Architektur ist durch PCI Local Bus Specification Revision 2.1 („PCI Spec 2.1"), veröffentlicht im Juni 1995, von der PCI Special Interest Group, Portland, Oregon, definiert, die hier unter Bezugnahme darauf eingeschlossen wird. Eine PCI-zu-PCI-Brücken-Architektur ist durch die PCI-zu-PCI-Bridge-Architectur Specification, Revision 1.0 („PCI Bridge Spec 1.0"), veröffentlicht im April 1994, durch die PCI Special Interests Group definiert.computer systems generally include one or more peripheral computer interfaces (PCI) buses that have a special communication protocol between peripheral components, such as video control units and network interface cards, and the main memory of the computer system. When a System memory and peripheral components (PCI devices) different buses are available, a bridge is required, to the flow of data transactions between the two buses too manage. The PCI bus architecture is by PCI Local Bus Specification Revision 2.1 ("PCI Spec 2.1 "), published in June 1995, by the PCI Special Interest Group, Portland, Ore., which is incorporated herein by reference. A PCI-to-PCI bridge architecture is through the PCI-to-PCI bridge architecture Specification, Revision 1.0 ("PCI Bridge Spec 1.0 "), released in April 1994, defined by the PCI Special Interests Group.

Unter den PCI Spec 2.1 und den PCI Bridge Spec 1.0 Architekturen unterstützen die PCI-Brücken zwei Typen von Transaktionen: gepostete Transaktionen (einschließlich aller Speicher-Schreib-Zyklen), die auf dem initiierenden Bus abschließen, bevor sie auf dem Target-Bus abschließen, und verzögerte Transaktionen (einschließlich aller Speicher-Lese-Anforderungen und aller I/O- und Konfigurationen-Lese-Schreib-Anforderungen), die auf dem Target-Bus abschließen, bevor sie auf dem initiierenden Bus abschließen. Eine PCI-Vorrichtung, die eine verzögerte Transaktion initiiert, muss die Kontrolle des lokalen PCI-Busses aufgeben und auf die Target-Vorrichtung warten, um die angeforderten Daten (in dem Fall einer verzögerten Lese-Anforderung) oder eine Abschluss-Nachricht (in dem Fall einer verzögerten Schreib-Anforderung) zurückzuführen. Wenn einmal die angeforderten Informationen angekommen sind, muss die anfordernde Vorrichtung warten, bis sie wiederum die Steuerung bzw. Kontrolle des PCI-Busses in dem normalen Ablauf der Operationen erhält, bevor sie die Informationen von der PCI-Brücke aufsuchen kann.Under The PCI Spec 2.1 and the PCI Bridge Spec 1.0 architectures support the PCI bridges two types of transactions: posted transactions (including all Memory write cycles) that complete on the initiating bus before finish them on the target bus, and delayed Transactions (including all memory read requests and all I / O and configuration read-write requests), complete on the target bus, before they complete on the initiating bus. A PCI device, the one delayed Transaction initiated must have control of the local PCI bus give up and wait for the target device to get the requested one Data (in the case of a delayed Read request) or a completion message (in the case of a delayed Write request). If Once the requested information has arrived, the requesting device until they turn the control or Control of the PCI bus in the normal course of operations gets before she can get the information from the PCI bridge.

Das Dokument WO-A-95/32475 beschreibt ein Computersystem, wie es in dem Oberbegriff des Anspruchs 1 spezifiziert ist.The Document WO-A-95/32475 describes a computer system as described in US Pat the preamble of claim 1 is specified.

Gemäß einem Aspekt betrifft die Erfindung ein Computersystem, wie es in Anspruch 1 angegeben ist.According to one Aspect The invention relates to a computer system as claimed 1 is indicated.

Ein anderer Aspekt der Erfindung ist ein Verfahren, wie es in Anspruch 12 definiert ist.One Another aspect of the invention is a method as claimed in 12 is defined.

Weitere Ausführungsformen der Erfindung sind in den jeweiligen abhängigen Ansprüchen definiert.Further embodiments of the invention are defined in the respective dependent claims.

Ausführungsformen der Erfindung können eines oder mehrere der nachfolgenden Merkmale umfassen. Das Computersystem kann einen Bus-Arbitrierer umfassen, der der anfordernden Vorrichtung eine höhere Bus-Arbitrierungs-Priorität dann zuordnet, wenn die Datenspeichervorrichtung beginnt, die angeforderten Daten zu der Brücke bereitzustellen. Die anfordernde Vorrichtung kann die höhere Priorität beibehalten, bis die Datenspeichervorrichtung aufhört, Daten zu der Brücke zuzuführen. Wenn die Datenspeichervorrichtung beginnt, die angeforderten Daten zu der Brückenvorrichtung zuzuführen, kann die Brückenvorrichtung eine Transaktion beenden, die initiiert ist, nachdem die anfordernde Vorrichtung eine Kontrolle über den Bus aufgibt. Nachdem die Transaktion beendet ist, kann der anfordernden Vorrichtung eine höhere Bus-Arbitrierungs-Priorität zugeordnet werden. Die verzögerte Anforderung von der anfordernden Vorrichtung kann eine Speicher-Lese-Mehrfach-Anforderung sein. Der zweite Daten-Bus kann ein PCI-Bus sein.embodiments of the invention include one or more of the following features. The computer system may include a bus arbitrator, the requesting device a higher one Bus arbitration priority then, when the data storage device starts, allocates the requested data to the bridge provide. The requesting device can maintain the higher priority until the data storage device ceases to supply data to the bridge. If the data storage device begins to supply the requested data the bridge device supply, can the bridge device Stop a transaction that is initiated after the requesting one Device control over gives up the bus. After the transaction is completed, the requesting one Device a higher Bus arbitration priority be assigned. The delayed Request from the requesting device may be a memory read multiple request be. The second data bus may be a PCI bus.

Vorteile der Erfindung können einen oder mehrere der folgenden Punkte umfassen. Ein „Strom" bzw. eine „Folge" von Daten kann zwischen einer initiierenden Vorrichtung und einer Target-Vorrichtung eingerichtet werden. Eine solche Datenfolge kann die Gesamteffektivität des Computersystems erhöhen. Eine Bildung von Datenfolgen kann den Umfang der Zeit, für die eine anfordernde Vorrichtung auf die angeforderten Informationen warten muss, verringern und kann die Bus-Latenzzeit durch Beseitigen des Erfordernisses, mehr als eine Daten-Anforderung auszugeben, verringern. Das Computersystem kann ein Daten-Streaming durch Zuordnen einer höheren Bus-Arbitierungs-Priorität zu einer anfordernden Vorrichtung, die Abschluss-Informationen, die in die Brücke eintreten, besitzt, „unterstützen". Das Computersystem kann auch ein Streaming durch Beenden einer momentanen Bus-Transaktion, wenn Abschluss-Daten für eine andere, anfordernde Vorrichtung damit beginnen, in die Brücke einzutreten, unterstützen.advantages of the invention include one or more of the following items. A "stream" or a "sequence" of data may be between an initiating device and a target device. Such a sequence of data may increase the overall effectiveness of the computer system. A Forming data sequences can reduce the amount of time for which one requesting device to wait for the requested information must reduce, and can reduce the bus latency by eliminating the Reduce the requirement to issue more than one data request. The computer system may stream data by associating a higher Bus Arbitierungs priority to a requesting device, the completion information, the in the bridge enter, own, "support." The computer system can also stream by ending a current bus transaction, if completion dates for another, requesting device to begin to enter the bridge, support.

Andere Vorteile und Merkmale werden aus der nachfolgenden Beschreibung und aus den Zeichnungen ersichtlich werden, in denen:Other Advantages and features will become apparent from the description below and become apparent from the drawings, in which:

1 zeigt ein Blockdiagramm eines Computersystems. 1 shows a block diagram of a computer system.

2 zeigt ein Blockdiagramm eines Erweiterungskastens des Computersystems der 1. 2 shows a block diagram of an expansion box of the computer system of 1 ,

3 zeigt ein Blockdiagramm der Brücken-Chips in dem Computersystem. 3 shows a block diagram of the bridge chips in the computer system.

4 zeigt ein Blockdiagramm eines Warteschlangen-Blocks in jedem der Brücken-Chips. 4 shows a block diagram of a queue block in each of the bridge chips.

5 zeigt ein Blockdiagramm des Takt-Routing-Schemas in den Brücken-Chips. 5 shows a block diagram of the clock routing scheme in the bridge chips.

6 zeigt ein Blockdiagramm eines Taktgenerators in jedem der Brücken-Chips. 6 shows a block diagram of a clock generator in each of the bridge chips.

7 zeigt ein Blockdiagramm einer Master-Kabel-Schnittstelle in jedem der Brücken-Chips zum Übertragen von Daten über ein Kabel, das die Brücken-Chips verbindet. 7 Figure 12 shows a block diagram of a master cable interface in each of the bridge chips for transferring data over a cable connecting the bridge chips.

8 zeigt ein Zeitabstimmungsdiagramm von Signalen in der Master-Kabel-Schnittstelle. 8th shows a timing diagram of signals in the master cable interface.

9 zeigt ein Blockdiagramm einer Slave-Kabel-Schnittstelle in jedem der Brücken-Chips zum Aufnehmen von Daten, übertragen über das Kabel. 9 Figure 12 shows a block diagram of a slave cable interface in each of the bridge chips for receiving data transmitted over the cable.

10 zeigt ein Blockdiagramm von Logik-Erzeugungs-Eingangs- und Ausgangs-Hinweiszeigern für die empfangene Logik in der Slave-Kabel-Schnittstelle. 10 Figure 12 shows a block diagram of logic generation input and output pointers for the received logic in the slave cable interface.

11 zeigt ein Zeitabstimmungsdiagramm von Signalen in der Slave-Kabel-Schnittstelle. 11 shows a timing diagram of signals in the slave cable interface.

12 zeigt ein Zeitabstimmungsdiagramm der Eingangs- und Ausgangs-Hinweiszeiger und deren Beziehung zu den aufgenommenen Kabeldaten. 12 shows a timing diagram of the input and output pointers and their relationship to the recorded cable data.

13 zeigt ein Blockdiagramm der Plazierung von Flip-Flop's und Eingangs- und Ausgangsanschlußflächen in jedem der Brücken-Chips. 13 Figure 12 shows a block diagram of the placement of flip-flops and input and output pads in each of the bridge chips.

14 zeigt eine Tabelle der Informationen, geführt durch das Kabel. 14 shows a table of information, guided by the cable.

15A zeigt eine Tabelle, die den Typ von Informationen darstellt, geführt durch die Kabelsignale, die Einzel-Adressenzyklus-Transaktionen zugeordnet sind. 15A Figure 14 shows a table representing the type of information carried by the cable signals associated with single-address-cycle transactions.

15B zeigt eine Tabelle, die den Typ von Informationen darstellt, geführt durch die Kabelsignale, zugeordnet zu Dual-Adressen-Zyklus-Transaktionen. 15B Figure 14 shows a table representing the type of information carried by the cable signals associated with dual address cycle transactions.

16 zeigt eine Tabelle von Parametern, zugeordnet zu dem Kabel. 16 shows a table of parameters associated with the cable.

17 zeigt ein Logikdiagramm einer Fehlererfassungs- und Korrekturschaltung. 17 shows a logic diagram of an error detection and correction circuit.

18 zeigt eine Parität-Prüf-Matrix zum Erzeugen von Prüf-Bits in der Fehlererfassungs- und Korrekturschaltung. 18 shows a parity check matrix for generating check bits in the error detection and correction circuit.

19 zeigt eine Syndrom-Tabelle zum Erzeugen von Fix-Bits in der Fehlererfassungs- und Korrekturschaltung. 19 shows a syndrome table for generating fix bits in the error detection and correction circuit.

20A zeigt ein Zustand-Diagramm, das ein Round-Robin Arbitrierungs-Schema darstellt. 20A shows a state diagram illustrating a round-robin arbitration scheme.

20B zeigt ein Zustandsdiagramm, dass ein Zwei-Niveau-Entscheidungs-Schema darstellt. 20B shows a state diagram illustrating a two-level decision scheme.

21 zeigt ein logisches Diagramm einer Entscheidungseinrichtung in jedem der Brücken-Chips. 21 shows a logic diagram of a decision device in each of the bridge chips.

22 zeigt ein Zustandsdiagramm einer Erteilungs-Zustand-Maschine in einer Entscheidungseinrichtung. 22 Fig. 10 shows a state diagram of a grant state machine in a decision device.

23 zeigt ein Zustandsdiagramm eines Level eins einer Entscheidungs-Zustand-Maschine in der Entscheidungseinrichtung. 23 shows a state diagram of a level one of a decision state machine in the decision means.

24 zeigt eine Tabelle, die eine Erzeugung von neuen Erteilungs-Signalen basierend auf dem momentanen Master darstellt. 24 Fig. 12 shows a table illustrating a generation of new grant signals based on the current master.

25 zeigt ein Blockdiagramm einer Logik zum Erzeugen von Masken-Bits und Master-Indikations-Bits mit Multi-Threading-Fähigkeit. 25 Figure 12 shows a block diagram of logic for generating mask bits and master indication bits with multi-threading capability.

26A zeigt ein logisches Diagramm von Schaltungen zum Erzeugen der maskierten Bits. 26A shows a logic diagram of circuits for generating the masked bits.

26B zeigt ein Blockdiagramm eines Computersystems mit Mehrfach-Schichten von Bussen. 26B shows a block diagram of a computer system with multiple layers of buses.

27A zeigt eine Seitenansicht einer Erweiterungskarte, eingesetzt in einen Schlitz. 27A shows a side view of an expansion card, inserted into a slot.

27BC zeigen schematische Diagramme einer Hebel-Schaltung. 27B - C show schematic diagrams of a lever circuit.

2831 zeigen schematische Diagramme einer Schaltung des Erweiterungskastens. 28 - 31 show schematic diagrams of a circuit of the expansion box.

32A zeigt ein Zustandsdiagramm von der Schaltung des Erweiterungskastens. 32A shows a state diagram of the circuit of the expansion box.

32B zeigt Wellenformen für die Schaltung des Erweiterungskastens. 32B shows waveforms for the circuit of the expansion box.

33A zeigt ein schematisches Diagramm einer Schaltung des Erweiterungskastens. 33A shows a schematic diagram of a circuit of the expansion box.

33B zeigt Wellenformen für die Schaltung des Erweiterungskastens. 33B shows waveforms for the circuit of the expansion box.

33CH zeigen ein Zustandsdiagramm von der Schaltung des Erweiterungskastens. 33C - H show a state diagram of the circuit of the expansion box.

34 zeigt ein schematisches Diagramm einer Schaltung des Erweiterungskastens. 34 shows a schematic diagram of a circuit of the expansion box.

35A zeigt ein Zustandsdiagramm von der Schaltung des Erweiterungskastens. 35A shows a state diagram of the circuit of the expansion box.

35B zeigt Wellenformen von der Schaltung des Erweiterungskastens. 35B shows waveforms from the circuit of the expansion box.

36 zeigt ein schematisches Diagramm einer Schaltung des Erweiterungskastens. 36 shows a schematic diagram of a circuit of the expansion box.

37 zeigt ein Flußdiagramm eines nicht-maskierbaren Unterbrecher-Handler's, aufgerufen in Abhängigkeit einer Erfassung eines Bus-Hängend-Zustands in dem Computer-System. 37 FIG. 12 shows a flow chart of a non-maskable interrupt handler called in response to detection of a bus hang state in the computer system.

38 zeigt ein Fluß-Diagramm eine BIOS-Programms, das durch ein Computersystem-Durchsichts-Ereignis aufgerufen wird. 38 Figure 12 shows a flowchart of a BIOS program being invoked by a computer system lookup event.

39 zeigt ein Fluß-Diagramm eines BIOS-Isolier-Programms, aufgerufen auf einen Bus-Hängend-Zustand oder das Computer-Durchsichts-Ereignis hin. 39 FIG. 12 shows a flow diagram of a BIOS isolation program invoked on a bus hang state or the computer lookup event. FIG.

40 zeigt ein Blockdiagramm eines Bus-Watcher's in jedem der Brücken-Chips. 40 shows a block diagram of a bus watcher in each of the bridge chips.

41 zeigt ein Zustandsdiagramm einer Logik in dem Bus-Watcher zum Zurückführen des Busses zu einem Leerlaufzustand. 41 Figure 12 shows a state diagram of logic in the bus watcher for returning the bus to an idle state.

42 zeigt ein logisches Diagramm von Status-Signalen in dem Bus-Watcher. 42 shows a logic diagram of status signals in the bus watcher.

43 zeigt ein logisches Diagramm von Bus-Historie-FIFOs und Bus-Zustand-Vektor-FIFOs in der Fehler-Isolations-Schaltung. 43 shows a logic diagram of bus history FIFOs and bus state vector FIFOs in the error isolation circuit.

44 zeigt ein logisches Diagramm einer Schaltung zum Erzeugen von Bereitschafts-Signalen zum Anzeigen, wenn die Bus-Historie- und Zustand-Vektor-Informationen verfügbar sind. 44 Fig. 10 shows a logic diagram of a circuit for generating ready signals for display when the bus history and state vector information is available.

45 zeigt ein Flußdiagramm eines Programms zum Zuordnen einer Bus-Zahl zu einem eingeschalteten oder leeren Schlitz. 45 Fig. 12 is a flow chart of a program for allocating a bus number to a powered-on or empty slot.

46 zeigt ein Flußdiagramm eines Programms zum Zuordnen von Speicherraum für das Computersystem. 46 Fig. 10 shows a flow chart of a program for allocating memory space for the computer tersystem.

47 zeigt ein Flußdiagramm eines Programms zum Zuordnen eines I/O-Raums für das Computersystem. 47 shows a flowchart of a program for allocating an I / O space for the computer system.

48 zeigt ein Flußdiagramm eines Programms zum Handhaben einer neu eingeschalteten Karte. 48 shows a flowchart of a program for handling a newly activated card.

49 zeigt ein Blockdiagramm eines Konfigurationsraums für eine PCI-Brückenschaltung. 49 shows a block diagram of a configuration space for a PCI bridge circuit.

50A zeigt ein Blockdiagramm eines Computersystems. 50A shows a block diagram of a computer system.

50B zeigt einen Bus-Zahl-Zuordnungs-Baum. 50B shows a bus number assignment tree.

51 zeigt ein Blockdiagramm, das Konfigurations-Transaktionen vom Typ 0 und Typ 1 darstellt. 51 shows a block diagram illustrating type 0 and type 1 configuration transactions.

52 zeigt eine Tabelle, die eine Auflistung einer Adresse von einem primären Bus zu einem sekundären Bus aufweist. 52 Figure 14 shows a table having a listing of an address from a primary bus to a secondary bus.

53A und 53B zeigen ein logisches Diagramm einer Schaltung zum Handhaben von Konfigurations-Zyklen vom Typ 0 und Typ 1. 53A and 53B show a logic diagram of a circuit for handling type 0 and type 1 configuration cycles.

54A zeigt ein Blockdiagramm einer Schaltung zum Speichern von Informationen, um eine Berechnung von Bus-Funktions-Parametern zu ermöglichen. 54A shows a block diagram of a circuit for storing information to allow calculation of bus function parameters.

54B zeigt ein Blockdiagramm von Vorabruf-Zählern. 54B shows a block diagram of prefetch counters.

55 zeigt ein Blockdiagramm eines Computersystems. 55 shows a block diagram of a computer system.

56 zeigt ein Blockdiagramm eines PCI-Entscheidungs-Schemas. 56 shows a block diagram of a PCI decision scheme.

57 zeigt ein schematisches Diagramm eines Puffer-Entleerungs-Logik-Blocks. 57 shows a schematic diagram of a buffer-emptying logic block.

58 zeigt ein schematisches Diagramm eines Kabel-Decodierers. 58 shows a schematic diagram of a cable decoder.

5962 zeigen schematische Diagramme einer geposteten Speicher-Schreib-Warteschlange, umfassend eine Steuerlogik. 59 - 62 12 show schematic diagrams of a posted memory write queue including control logic.

6365 zeigen schematische Diagramme einer verzögerten Anforderungs-Warteschlange, umfassend eine Steuerlogik. 63 - 65 show schematic diagrams of a delayed request queue, comprising a control logic.

6669b zeigen schematische Diagramme einer verzögerten Abschluss-Warteschlange, umfassend eine Steuerlogik. 66 - 69b show schematic diagrams of a delayed completion queue, comprising a control logic.

7074 zeigen schematische Diagramme und eine Tabelle einer Master-Zyklus-Entscheidungseinrichtung. 70 - 74 show schematic diagrams and a table of a master cycle decision device.

7587 zeigen schematische und Zustand-Übergangs-Diagramme einer Warteschlange-Block-zu-PCI-Bus-Schnittstelle. 75 - 87 show schematic and state transition diagrams of a queue block-to-PCI bus interface.

88 zeigt ein schematisches Blockdiagramm, das Bus-Vorrichtungen darstellt, verbunden mit einem Expansions-Bus. 88 Figure 12 is a schematic block diagram illustrating bus devices connected to an expansion bus.

89 zeigt ein schematisches Blockdiagramm, dass eine Schaltung darstellt, um Unterbrechungs-Anforderungen weiterzuführen. 89 Figure 12 is a schematic block diagram illustrating a circuit to continue interrupt requests.

90 zeigt ein schematisches Diagramm einer Vorrichtungs-Auswahl-Logik. 90 shows a schematic diagram of a device selection logic.

9194 zeigen schematische Blockdiagramme von Registern. 91 - 94 show schematic block diagrams of registers.

95 zeigt eine grafische Darstellung, die Wellenformen für das Computersystem darstellt. 95 shows a graphical representation representing waveforms for the computer system.

96 zeigt ein schematisches Diagramm der im Multiplex-Betrieb arbeitenden Schaltung. 96 shows a schematic diagram of the multiplex operating circuit.

97AD zeigen schematische Diagramme des Unterbrechungs-Aufnahme-Blocks. 97A - D show schematic diagrams of the interruption recording block.

98 zeigt ein schematisches Diagramm des Unterbrechungs-Ausgabe-Blocks. 98 shows a schematic diagram of the interrupt output block.

99 zeigt ein Diagramm, das die Zeitmultiplexverarbeitung von Unterbrechungs-Anforderungs-Signalen darstellt. 99 shows a diagram illustrating the time division processing of interrupt request signals.

100 zeigt ein Diagramm, das eine Unterbrechungs-Anforderungs-Auflistung darstellt. 100 shows a diagram illustrating an interrupt request listing.

101 zeigt ein schematisches Blockdiagramm, dass Bus-Vorrichtungen darstellt, verbunden mit einem Erweiterungsbus. 101 Figure 12 shows a schematic block diagram illustrating bus devices connected to an expansion bus.

ÜBERSICHTOVERVIEW

In der folgenden Beschreibung geben alle Signal-Mnemoniken, gefolgt durch ein „#", „_" oder „!", oder diesen vorausgehend, invertierte, logische Zustände an.In The following description will give all signal mnemonics followed by a "#", "_" or "!", or preceding it, inverted, logical states at.

Wie in 1 dargestellt ist, umfasst ein Computersystem 10 einen primären PCI-Bus 24, der mit einem Brücken-Chip 26a und einem Brücken-Chip 26b verbunden ist, wobei beide davon von einem gemeinsamen Design 26 sind. Der Brücken-Chip 26a ist mit einem Brücken-Chip 48a über ein Kabel 31 verbunden und der Brücken-Chip 26b ist mit dem Brücken-Chip 48b über ein Kabel 28 verbunden. Die Brücken-Chips 48a und 48b sind von einem gemeinsamen Design 48, was gemeinsam zu dem Design 26 ist, mit der Ausnahme, das das Design 26 ein eingangsseitiger Mode ist und das Design 48 ein ausgangsseitiger Mode ist.As in 1 includes a computer system 10 a primary PCI bus 24 that with a bridge chip 26a and a bridge chip 26b both of which are of a common design 26 are. The bridge chip 26a is with a bridge chip 48a over a cable 31 connected and the bridge chip 26b is with the bridge chip 48b over a cable 28 connected. The bridge chips 48a and 48b are of a common design 48 What's common to the design 26 is, with the exception of the design 26 an input-side fashion is and the design 48 is an output-side mode.

Der PCI-Bus 24 ist mit einem lokalen Bus 22 über eine System-Steuereinheit/Host-Brücken-Schaltung 28 schnittstellenmäßig verbunden. Die Systemsteuereinheit/Host-Brücken-Schaltung 18 steuert auch einen Zugriff zu einem Systemspeicher 20, der auch mit dem lokalen Bus 22 zusammen mit der CPU 14 und einem Level-2-(L2)-Cachespeicher 16 verbunden ist.The PCI bus 24 is with a local bus 22 via a system controller / host bridge circuit 28 interfaced. The system controller / host bridge circuit 18 also controls access to system memory 20 also with the local bus 22 together with the CPU 14 and a level 2 (L2) cache 16 connected is.

Eine PCI Extended Industry Standard Architecture (EISA) Brücke 15 verbindet schnittstellenmäßig den PCI-Bus 24 mit einem ISA-Bus 17. Sowohl eine Tastenfeld-Steuereinheit 21 als auch ein Read Only Memory (ROM) 23 sind mit dem ISA-Bus 17 verbunden. Ein nicht-flüchtiger Random Access Speicher (NVRAM) 70, verbunden mit dem ISA-Bus 17, speichert Informationen, die das Computersystem übernehmen sollte, wenn es abgeschaltet wird. Ein automatischer Server-Zurückgewinnungs-Zeitgeber 72 überwacht das Computersystem hinsichtlich einer Inaktivität. Falls sich das System verriegelt, wird der ASR-Zeitgeber 72 nach ungefähr 10 Minuten ablaufen. Ein Tastenfeld 19 wird durch die Tastenfeld-Steuereinheit 21 hinsichtlich einer Erfassung von niedergedrückten Tasten überwacht.A PCI Extended Industry Standard Architecture (EISA) bridge 15 interfaces the PCI bus 24 with an ISA bus 17 , Both a keypad control unit 21 as well as a read only memory (ROM) 23 are with the ISA bus 17 connected. A non-volatile random access memory (NVRAM) 70 , connected to the ISA bus 17 , stores information that the computer system should inherit when it is turned off. An automatic server recovery timer 72 monitors the computer system for inactivity. If the system locks, the ASR timer becomes 72 after about 10 minutes. A keypad 19 is through the keypad control unit 21 monitored for detection of depressed keys.

Wie 2 zeigt, bildet der Brücken-Chip 48a eine Schnittstelle zu einem PCI-Bus 32a und der Brücken-Chip 48b bildet eine Schnittstelle zu einem PCI-Bus 32b. Die PCI-Busse 32a und 32b sind an zwei Expansionskästen 30a und 30b, mit einem gemeinsamen Design 30, angeordnet, und jeder Expansionskasten 30 besitzt sechs Hot-Plug-Schlitze bzw. Steckplätze 36 (36af), die dazu geeignet sind, herkömmliche Erweiterungskarten 807 aufzunehmen (27A). Ein Schlitz 34 an dem Expansionskasten nimmt eine Karte 46 auf, die den Brücken-Chip 26 besitzt. Jeder Hot-Plug-Schlitz 36 besitzt zugeordnet eine Umschalt-Schaltung 41 zum Verbinden und Trennen des Schlitzes 36 mit und von dem PCI-Bus 32. Sechs mechanische Hebel 802 werden dazu verwendet, selektiv die Karten 807 an entsprechenden Schlitzen zu sichern (wenn sie geschlossen oder verriegelt sind), wie weiterhin in der EP-A-0 811 903, mit dem Titel „Securing a Card in an Electronic Device", angemeldet an demselben Datum wie diese Anmeldung und hier unter Bezugnahme darauf eingeschlossen, beschrieben ist. Jeder Erweiterungskasten 30 umfasst Register 52 und 82 zum Überwachen der Hebel 802 und von Status-Signalen des Erweiterungskastens 30 und ein Register 80 zum Kontrollieren einer Verbindung und einer Trennung von Schlitzen 36 und von dem PCI-Bus 32.As 2 shows forms the bridge chip 48a an interface to a PCI bus 32a and the bridge chip 48b forms an interface to a PCI bus 32b , The PCI buses 32a and 32b are at two expansion boxes 30a and 30b , with a common design 30 , arranged, and each expansion box 30 has six hot-plug slots or slots 36 ( 36a - f ), which are suitable for conventional expansion cards 807 to record ( 27A ). A slot 34 at the expansion box takes a card 46 on that the bridge chip 26 has. Every hot-plug slot 36 own assigned a switching circuit 41 for connecting and disconnecting the slot 36 with and from the PCI bus 32 , Six mechanical levers 802 are used to selectively change the cards 807 at corresponding slots (when closed or locked) as further described in EP-A-0 811 903 entitled "Securing a Card in an Electronic Device" filed on the same date as this application and herewith reference it is described in. Each expansion box 30 includes registers 52 and 82 to monitor the levers 802 and status signals from the expansion box 30 and a register 80 for controlling a connection and a separation of slots 36 and from the PCI bus 32 ,

Wie 3 zeigt, ist der Brücken-Chip so ausgelegt, um in Paaren 26 und 48 verwendet zu werden, um eine PCI-PCI-Brücke zwischen dem primären PCI-Bus 24 und dem sekundären PCI-Bus 32 zu bilden. Das Programmiermodel ist dasjenige von zwei hierarchischen Brücken. Zu der Systemsoftware hin erscheint das Kabel 28 als ein PCI-Bus, der exakt eine Vorrichtung enthält, und zwar den ausgangsseitigen Brücken-Chip 48. Dies vereinfacht stark die Konfiguration der 2-Chip-PCI-PCI-Brücke, die den primären und sekundären Bus miteinander verbindet. Der Brücken-Chip 26, der näher zu der CPU 14 hin liegt, verbindet den primären PCI-Bus 24 mit dem Kabel 28. Die zweite PCI-PCI-Brücke 48 ist in dem Erweiterungskasten 30 vorhanden und verbindet das Kabel 28 mit dem sekundären Bus 32. Ein Mode-Stift-Upstream-Chip bestimmt, ob der Brücken-Chip in dem ausgangsseitigen Mode oder dem eingangsseitigen Mode arbeitet. Einige Nicht-Brücken-Funktionen, wie beispielsweise ein Bus-Monitor 106 und eine Hot-Plug-Logik in einem SIO 50, werden nur in dem Erweiterungskasten 30 verwendet und sind nicht in dem einlaufseitigen Mode-Chip 26 funktional.As 3 shows, the bridge chip is designed to be in pairs 26 and 48 to be used to connect a PCI-PCI bridge between the primary PCI bus 24 and the secondary PCI bus 32 to build. The programming model is that of two hierarchical bridges. The cable appears to the system software 28 as a PCI bus containing exactly one device, the output side bridge chip 48 , This greatly simplifies the configuration of the 2-chip PCI-PCI bridge connecting the primary and secondary buses. The bridge chip 26 that is closer to the CPU 14 lies down, connects the primary PCI bus 24 with the cable 28 , The second PCI-PCI bridge 48 is in the expansion box 30 present and connect the cable 28 with the secondary bus 32 , A mode pin upstream chip determines whether the bridge chip is operating in the output side mode or the input side mode. Some non-bridge features, such as a bus monitor 106 and a hot-plug logic in an SIO 50 , only in the expansion box 30 used and are not in the inlet side fashion chip 26 functional.

Ein Taktgenerator 102 in dem Brücken-Chip 26 erzeugt Takte basierend auf dem Takt PCI CLK1 auf dem primären PCI-Bus 24, wobei einer der erzeugten Takte über das Kabel 28 zu einem Taktgenerator 122 in dem ausgangsseitigen Brücken-Chip 48 vorgesehen wird. Der Taktgenerator 122 erzeugt die PCI-Takte in dem Erweiterungskasten 30 bei derselben Frequenz des primären PCI-Busses 24 und steuert ihn an, was dazu führt, dass beide Brücken-Chips 26 und 48 unter derselben Frequenz laufen. Der ausgangsseitige Brücken-Chip 48 läuft dem eingangsseitigen Brücken-Chip 24 in der Phase mit der Verzögerung des Kabels 28 hinterher. Eine asymetrische Grenze in dem eingangseitigen Brücken-Chip 26 an dem Punkt, wo Daten von dem Kabel 28 abgegriffen werden, ermöglicht, dass sich die Phasenverzögerung bei irgendeinem Wert befindet (und deshalb soll das Kabel von irgendeiner Länge sein), wobei das einzige Erfordernis dasjenige ist, dass die Frequenz der zwei Brücken-Chips dieselbe ist.A clock generator 102 in the bridge chip 26 generates clocks based on the PCI CLK1 clock on the primary PCI bus 24 where one of the generated clocks is over the cable 28 to a clock generator 122 in the output side bridge chip 48 is provided. The clock generator 122 generates the PCI clocks in the expansion box 30 at the same frequency of the primary PCI bus 24 and controls it, resulting in both bridge chips 26 and 48 run at the same frequency. The output side bridge chip 48 runs the input side bridge chip 24 in phase with the delay of the cable 28 after. An asymmetric boundary in the input-side bridge chip 26 at the point where data from the cable 28 allows the phase delay to be at some value (and therefore the cable should be of any length), the only requirement being that the frequency of the two bridge chips be the same.

Die Kern-Logik jedes Brücken-Chips ist der Brücken-Logik-Block (100 oder 120), der einen PCI-Master (101 oder 123) zum Arbeiten als ein Master auf dem jeweiligen PCI-Bus, ein PCI-Target oder eine -Slave (103 oder 121) zum Arbeiten als eine Slave-Vorrichtung auf dem jeweiligen PCI-Bus, Konfigurations-Register (105 oder 125), die die Konfigurations-Informationen des entsprechenden Brücken-Chips enthalten, und einen Warteschlangen-Block (107 oder 127), der verschiedene Warteschlangen enthält, in denen Daten, zugeordnet zu Transaktionen zwischen dem primären PCI-Bus und dem sekundären PCI-Bus 32, in die Warteschlange gestellt und gemanagt werden, aufweist. Die Daten, übertragen zwischen dem eingangsseitigen Brücken-Chip 26 und dem ausgangs seitigen Brücken-Chip 48, werden durch Kabelschnittstellen 104 und 130 in den Brücken-Chips 26 und 48 jeweils gepuffert.The core logic of each bridge chip is the bridge logic block ( 100 or 120 ), which has a PCI master ( 101 or 123 ) for working as a master on the respective PCI bus, a PCI target or a slave ( 103 or 121 ) to work as a slave device on the respective PCI bus, configuration register ( 105 or 125 ), which contain the configuration information of the corresponding bridge chip, and a queue block ( 107 or 127 ), which contains various queues in which data associated with transactions between the primary PCI bus and the secondary PCI bus 32 to be queued and managed. The data transmitted between the input side bridge chip 26 and the output side bridge chip 48 , are through cable interfaces 104 and 130 in the bridge chips 26 and 48 each buffered.

Eine Unterbrechungs-Programm-Logik ist auch in jedem Brücken-Chip enthalten. Dabei sind 8 Unterbrechungen, 6 von den Sekundär-Bus-Schlitzen, 1 von einer SIO-Schaltung 50 und 1 von dem ausgangsseitigen Brücken-Chip 48, vorhanden. In dem ausgangsseitigen Chip 48 werden die Unterbrechungen durch einen Unterbrechungs-Aufnahme-Block 132 aufgenommen und entlang des Kabels 28 als eine serielle Datenfolge in sequenziellen Zeit-Stücken geschickt. In dem ausgangsseitigen Brücken-Chip 26 werden die Unterbrechungen durch einen Unterbrechungs-Ausgangs-Block 114 empfangen, der die Unterbrechungen zu einer Unterbrechungs-Steuereinheit weiterleitet.Interrupt program logic is also included in each bridge chip. There are 8 interrupts, 6 from the secondary bus slots, 1 from an SIO circuit 50 and 1 from the output side bridge chip 48 , available. In the output side chip 48 the interrupts are interrupted by an interruption recording block 132 picked up and along the cable 28 sent as a serial data sequence in sequential time pieces. In the output side bridge chip 26 the interrupts are interrupted by an interrupt output block 114 receive, which forwards the interruptions to an interrupt control unit.

Die SIO-Schaltung 50 liefert Steuersignale zum Beleuchten von LED's, zum Steuern eines Reset und für ein selektives Verbinden der Schlitze 36 mit dem Bus 32. Sie umfasst auch eine Logik zum Lesen des Eingriffs-Status der Hebel 802 und des Status-Zustands der Karten 807 in jedem Schlitz 36.The SIO circuit 50 provides control signals for illuminating LEDs, for controlling a reset and for selectively connecting the slots 36 by bus 32 , It also includes logic for reading the engagement status of the levers 802 and the status of the cards 807 in every slot 36 ,

Die Brücken-Schaltung 26 umfasst einen Support für Unterbrechungen in dem Erweiterungskasten 30, und, wenn sie in dem Host-System mit der anwendereigenen Schnittstelle zu einer Mehrfachkanal-Unterbrechungs-Steuereinheit installiert ist, schickt sie die Status-Zustände jeder Unterbrechung in einer seriellen Datenfolge. Die Brückenschaltung 26 kann auch so konfiguriert sein, um standardmäßige PCI-INTA, INTB, INTC und INTD Signale anzusteuern, falls sie in einem Standard-Schlitz in dem Host-System installiert ist.The bridge circuit 26 includes support for interruptions in the expansion box 30 and, when installed in the host system with the user interface to a multi-channel interrupt controller, sends the status states of each interrupt in a serial data stream. The bridge circuit 26 can also be configured to drive standard PCI INTA, INTB, INTC, and INTD signals if installed in a standard slot in the host system.

Jeder Brücken-Chip umfasst auch einen PCI-Arbitrierer (116 oder 124) zum Steuern eines Zugriffs auf bis zu sieben Bus-Master. Da die eingangsseitige Brücke 26 in einem Schlitz installiert ist, wird der PCI-Arbitrierer 116 in dem eingangsseitigen Brücken-Chip 26 gesperrt. Jeder Brücken-Chip umfasst auch eine I2C-Steuereinheit (108 oder 126) für eine Kommunikation mit Vorrichtungen, wie beispielsweise EEPROMs, Temperatursensoren, usw., einen JTAG-Master (110 oder 128) zum Durchführen von Test-Zyklen, einen Bus-Monitor (106 oder 127) zum Messen einer Bus-Benutzung und einer Effektivität und der Effektivität des Vorabruf-Algorithmus des Brücken-Chips, und einen Bus-Beobachter (Bus-Watcher) (119 oder 129) zum Speichern einer Bus-Historie und von Status-Vektor-Informationen und zum Informieren der CPU 14 über einen Bus-Hängend-Zustand. Bestimmte Blöcke werden in jedem Brücken-Chip gesperrt, wenn sie nicht ver wendet werden. In dem eingangsseitigen Brücken-Chip 26 werden Bus-Watcher 119, der SIO 118, der PCI-Arbitrierer 116 und der Bus-Monitor 106 gesperrt. Zusätzlich werden der die Unterbrechung aufnehmende Block 112 in dem eingangsseitigen Chip 126 und der Unterbrechungs-Ausgangs-Block 134 in dem ausgangsseitigen Chip 48 gesperrt.Each bridge chip also includes a PCI arbitrator ( 116 or 124 ) for controlling access to up to seven bus masters. As the input side bridge 26 Installed in a slot becomes the PCI arbitrator 116 in the input side bridge chip 26 blocked. Each bridge chip also includes an I 2 C control unit ( 108 or 126 ) for communication with devices such as EEPROMs, temperature sensors, etc., a JTAG master ( 110 or 128 ) for performing test cycles, a bus monitor ( 106 or 127 ) for measuring bus utilization and effectiveness and the effectiveness of the prefetch algorithm of the bridge chip, and a bus observer (Bus-Watcher) ( 119 or 129 ) for storing a bus history and status vector information and for informing the CPU 14 over a bus-hanging state. Certain blocks are locked in each bridge chip when not in use. In the input side bridge chip 26 become bus watchers 119 , the SIO 118 , the PCI arbitrator 116 and the bus monitor 106 blocked. In addition, the block receiving the break becomes 112 in the input side chip 126 and the interrupt output block 134 in the output side chip 48 blocked.

ÜBERSICHT DES WARTESCHLANGEN-BLOCKSOVERVIEW THE QUEEN BLOCK

Wie 4 zeigt, managen die Warteschlangen-Blöcke 107 und 127 Transaktionen, die zwischen dem primären PCI-Bus 24 (in dem eingangsseitigen Chip) oder dem sekundären PCI-Bus 32 (in dem ausgangsseitigen Chip) und der Kabel-Schnittstelle 130 fließen (Von hier an wird auf den ausgangsseitigen Brücken-Chip unter der Annahme Bezug genommen, dass der eingangsseitige Chip identisch arbeitet, ohne dass dies ansonsten angegeben ist). Der Warteschlangen-Block 127 umfasst einen Kabel-Decodierer 146, der von der Kabel-Schnittstelle 130 Transaktionen aufnimmt, die auf dem sekundären PCI-Bus 32 abgeschlossen werden. Nach einem Decodieren einer Transaktion platziert der Decodierer 146 die Transaktionen, zusammen mit allen Informationen, umfasst in der Transaktion, in eine von drei Warteschlangen 140, 142 und 144. Jede Warteschlange enthält verschiedene Transaktions-Puffer, wobei jeder davon eine einzelne Transaktion speichert, und ist deshalb in der Lage, verschiedene Transaktionen simultan zu handhaben.As 4 shows, manage the queue blocks 107 and 127 Transactions between the primary PCI bus 24 (in the input side chip) or the secondary PCI bus 32 (in the output side chip) and the cable interface 130 flow (From here, reference is made to the output side bridge chip assuming that the input side chip operates identically without otherwise indicating). The queue block 127 includes a cable decoder 146 that by the cable interface 130 Transactions on the secondary PCI bus 32 be completed. After decoding a transaction, the decoder places 146 the transactions, along with all the information, are in the transaction, in one of three queues 140 . 142 and 144 , Each queue contains various transaction buffers, each of which stores a single transaction, and is therefore able to handle various transactions simultaneously.

Die erste Warteschlange, eine gepostete Speicher-Schreib-Warteschlange (PMBQ) 140, speichert gepostete Speicher-Schreib-Zyklen, ausgegeben durch die CPU, auf dem primären Bus zusammen mit allen Informationen, die erforderlich sind, um jeden Zyklus auf dem sekundären Bus 32 auszuführen. Die PMWQ 140 besitzt vier Transaktions-Puffer, wobei jeder davon eine gepostete Speicher-Schreib-Transaktion hält, die bis zu 8 Cache-Linien (256 Bytes) an Daten enthält. Unter bestimmten Umständen kann eine gepostete Speicher-Schreib-Transaktion, die mehr als acht Cache-Linien bzw. -Zeilen an Daten besitzt, in einen oder mehrere darauffolgende Puffer überlaufen, wie dies nachfolgend beschrieben ist.The first queue, a posted memory write queue (PMBQ) 140 , stores posted memory write cycles issued by the CPU on the primary bus along with all the information required to cycle on the secondary bus 32 perform. The PMWQ 140 has four transaction buffers, each of which holds a posted memory write transaction containing up to 8 cache lines (256 bytes) of data. In certain circumstances, a posted memory write transaction having more than eight cache lines of data may overflow into one or more subsequent buffers, as described below.

Die zweite Warteschlange, eine verzögerte Anforderungs-Warteschlange (Delayed Request Queue – 142), speichert verzögerte Anforderungs-Transaktionen (d. h. verzögerte Lese-Anforderungen (Delayed Read Requests – DRR), wie beispielsweise ein Speicher-Lesen (Memory Read – MR), eine Speicher-Lese-Linie (Memory Read Line – MRL), und Speicher-Lese-Mehrfach-(Memory Read Multiple – MRM)-Anforderungen; und in dem ausgangsseitigen Chip, Eingangs/Ausgangs-(I/O)-Lese-Schreib-Vorgänge und Konfigura tionen (config-Lese/Schreib-Vorgänge), ausgegeben durch die CPU auf dem primären Bus, zusammen mit allen Informationen, erforderlich dazu, jede Transaktion auf dem sekundären Bus 32 auszuführen. Die DRQ 142 besitzt drei Transaktions-Puffer, wobei jeder davon in der Lage ist, ein Doppelwort, oder „dword", an Daten für verzögerte Schreibvorgänge zu halten.The second queue, a delayed request queue (delayed request queue). 142 ) stores delayed request transactions (ie, Delayed Read Requests - DRR), such as a memory read (MR), a memory read line (MRL), and memory Memory Read Multiple (MRM) requests, and in the output side chip, input / output (I / O) read write operations and configurations (config read / write operations) are output through the CPU on the primary bus, along with all the information required to do any transaction on the secondary bus 32 perform. The DRQ 142 has three transaction buffers, each of which is capable of holding a doubleword, or "dword", of data for delayed writes.

Die dritte Warteschlange, eine verzögerte Abschluss-Warteschlange (Delayed Completion Queue (DCQ) 144, speichert verzögerte Abschluss-Informationen, geliefert durch den eingangsseitigen Chip, in Abhängigkeit von verzögerten Anforderungs-Transaktionen, erzeugt auf dem sekundären Bus 32. Für eine verzögerte Lese-Anforderung enthalten die entsprechenden Abschluss-Informationen die Lese-Daten, angefordert durch die initiierende Vorrichtung, und den Lese-Status (d. h. eine Indikation darüber, ob ein Paritäts-Fehler auf dem Target-Abort aufgetreten ist). Die verzögerten Abschluss-Informationen, zurückgeführt für eine verzögerte Schreib-Transaktion, sind dieselben wie diejenigen, zurückgeführt für eine verzögerte Lese-Anforderung, mit der Ausnahme, dass keine Daten für verzögerte Schreibvorgänge zurückgeführt sind. Da I/O- und config-Lese-Schreibvorgänge nur auf dem ausgangsseitigen Bus auftreten, wird nur die eingangsseitige DCQ verzögerte Abschluss-Informationen entsprechend zu einer von diesen Transaktionen enthalten. Die DCQ 144 besitzt acht Abschluss-Puffer, wobei jeder davon bis zu acht Cache-Linien bzw. Zeilen an Abschluss-Informationen für eine einzelne, verzögerte Anforderung halten kann. Zusätzlich zu den Abschluss-Informationen enthält jeder Abschluss-Puffer auch eine Kopie der verzögerten Anforderung, die die Informationen erzeugte. Für verzögerte Lese-Transaktionen kann eine Daten-„Folge" zwischen dem primären Bus 24 und dem sekundären Bus 32 eingerichtet werden, wenn die anfordernde Vorrichtung damit beginnt, die angeforderten Daten aufzusuchen, bevor die Target-Vorrichtung damit stoppt, sie zu der DCQ 144 zu liefern. Unter bestimmten Umständen wird die DCQ 144 automatisch zusätzliche Daten erneut aufsuchen, oder „vorababrufen" („prefetch"), wenn eine anfordernde Vorrichtung alle die angeforderten Daten von dem entsprechenden Puffer in der DCQ 144 aufsucht. Sowohl ein Streaming als auch ein automatisches Vorababrufen (prefetching) werden in weiterem Detail nachfolgend diskutiert.The third queue, a Delayed Completion Queue (DCQ) 144 , stores delayed completion information provided by the input side chip in response to delayed request transactions generated on the secondary bus 32 , For a delayed read request, the corresponding completion information includes the read data requested by the initiating device and the read status (ie, an indication of whether a parity error has occurred on the target abort). The delayed completion information returned for a delayed write transaction is the same as that returned for a delayed read request, with the exception that no data for delayed writes is returned. Since I / O and config read writes occur only on the output side bus, only the input side DCQ will contain delayed completion information corresponding to one of these transactions. The DCQ 144 has eight completion buffers, each of which can hold up to eight cache lines of completion information for a single, delayed request. In addition to the completion information, each completion buffer also contains a copy of the deferred request that generated the information. For delayed read transactions, there may be a data "sequence" between the primary bus 24 and the secondary bus 32 when the requesting device begins to look up the requested data before the target device stops it to the DCQ 144 to deliver. Under certain circumstances, the DCQ 144 retry additional data or "prefetch" if a requesting device retrieves all the requested data from the corresponding buffer in the DCQ 144 visits. Both streaming and automatic prefetching are discussed in more detail below.

Eine Warteschlangen-zu-PCI-Schnittstelle (Queue-to-PCI Interface – QPIF) 148 verwaltet Transaktionen, die von den Warteschlangen 140, 142 und 144 zu dem PCI-Bus 32 und von dem PCI-Bus 32 zu der DCQ 144 und zu dem eingangsseitigen Chip über die Kabel-Schnittstelle 130 fließen. Die QPIF 148 tritt in einen „Master" Mode ein, um gepostete Speicher-Schreib- und verzögerte Anforderungs-Transaktionen von der PMWQ 140 und der DRQ 142 auf dem sekundären Bus laufen zu lassen. Für sowohl gepostete Speicher-Schreib- als auch verzögerte Lese-Transaktionen kann die QPIF 148 eine Transaktion „unterstützen", die weniger als eine Cache-Zeile an Daten einsetzt (d. h. eine Speicher-Schreib-(Memory Write – MW) oder eine Speicher-Lese-(Memory Read – MR)Transaktion), gegenüber einersolchen, die eine oder mehrere Cache-Zeilen (d. h. eine Speicher-Schreib- und Ungültigkeits-(MWI)-Transaktion oder eine Speicher-Lese-Zeile (MRL) oder eine Speicher-Lese-Mehrfach-(MRM)Transaktion erfordert, falls bestimmte Zustände erfüllt werden. Die QPIF 148 kann auch eine Lese-Transaktion, die eine Einzel-Cache-Zeile von Daten einsetzt (d. h. eine MRL Transaktion), in eine von mehreren Cache-Zeilen an Daten (d. h. eine MRM-Transaktion) umwandeln. Die QPIF 148 kann auch eine MRL- oder MRM-Transaktion „korrigieren", die in der Mitte einer Cache-Zeile beginnt, und zwar durch Lesen der gesamten Cache-Zeile und dann aussondern des nicht angeforderten Teils der Daten. Eine Transaktion-Unterstützung und eine Lese-Korrektur, wobei beide davon in weiterem Detail nachfolgend beschrieben sind, verbessern eine Systemeffektivität durch Verringern der Zeit, die dazu erforderlich ist, Daten von einer Speichervorrichtung aufzusuchen.Queue-to-PCI interface (Queue-to-PCI Interface - QPIF) 148 Manages transactions by the queues 140 . 142 and 144 to the PCI bus 32 and from the PCI bus 32 to the DCQ 144 and to the input side chip via the cable interface 130 flow. The QPIF 148 enters a "master" mode to posted memory write and delayed request transactions from the PMWQ 140 and the DRQ 142 to run on the secondary bus. For both posted memory write and delayed read transactions, the QPIF 148 "support" a transaction that employs less than one cache line of data (ie, a memory write (MW) or a memory read (MR) transaction) versus one that has one or more multiple cache lines len (ie a memory write and invalidate (MWI) transaction or memory read line (MRL) or memory read multiple (MRM) transaction, if certain conditions are met.) The QPIF 148 For example, a read transaction that employs a single cache line of data (ie, an MRL transaction) may also convert to one of multiple cache lines of data (ie, an MRM transaction). The QPIF 148 may also "correct" an MRL or MRM transaction starting in the middle of a cache line by reading the entire cache line and then discarding the unsolicited portion of the data. Correction, both of which are described in more detail below, improve system efficiency by reducing the time required to retrieve data from a storage device.

Die QPIF 148 gibt einen „Slave" Code ein, um Daten von der DCQ 144 zu einer anfordernden PCI-Vorrichtung zu liefern oder Transaktionen von dem PCI-Bus 32 zu der DCQ 144 und zu dem eingangsseitigen Chip über das Kabel zu schicken. Wenn die QPIF 148 eine gepostete Schreib-Transaktion von dem Bus 32 empfängt, führt sie die Transaktion weiter zu dem eingangsseitigen Chip, falls eine entsprechende Eine einer Gruppe von Transaktionszählern 159 anzeigt, dass die PMWQ in dem anderen Brücken-Chip nicht voll ist, wie dies nachfolgend diskutiert ist. Wenn die QPIF 148 eine verzögerte Anforderung aufnimmt, führt sie zuerst die Anforderung zu der DCQ 144 weiter, um zu bestimmen, ob die Transaktion bereits in der DCQ platziert worden ist, und, falls dies der Fall ist, ob die entsprechenden, verzögerten Abschluss-Informationen zu der DCQ 144 zurückgeführt worden sind. Falls die verzögerten Abschluss-Informationen in der DCQ vorhanden sind, werden die Informationen zu der anfordernden Vorrichtung geführt und die Transaktion wird beendet. Falls die Anforderung bereits in eine Warteschlange gestellt ist, allerdings die Verzögerungs-Abschirmungs-Informationen nicht zurückgeführt worden sind, wird die anfordernde Vorrichtung erneut versucht und die Transaktion wird auf dem PCI-Bus 32 beendet. Falls die Transaktion noch nicht in die Warteschlange gestellt ist, reserviert die DCQ 144 einen Abschluss-Puffer für die Transaktion und die QPIF 148 führt die Transaktion zu dem eingangsseitigen Chip über die Kabel-Schnittstelle 130 weiter, solange wie der entsprechende Transaktionszähler 149 anzeigt, dass der andere Brückenchip nicht voll ist.The QPIF 148 enters a "slave" code to get data from the DCQ 144 to a requesting PCI device or transactions from the PCI bus 32 to the DCQ 144 and send to the input side chip over the cable. If the QPIF 148 a posted write transaction from the bus 32 if it receives, it will pass the transaction on to the upstream chip, if any one of a group of transaction counters 159 indicates that the PMWQ in the other bridge chip is not full, as discussed below. If the QPIF 148 When a delayed request is received, it first makes the request to the DCQ 144 to determine if the transaction has already been placed in the DCQ and, if so, the corresponding delayed completion information to the DCQ 144 have been attributed. If the delayed completion information is present in the DCQ, the information is passed to the requesting device and the transaction is terminated. If the request has already been queued, but the delay shield information has not been returned, then the requesting device is retried and the transaction becomes on the PCI bus 32 completed. If the transaction is not yet queued, the DCQ reserves 144 a completion buffer for the transaction and the QPIF 148 performs the transaction to the input side chip via the cable interface 130 continue as long as the corresponding transaction counter 149 indicates that the other bridge chip is not full.

Falls die DCQ 144 bestimmt, dass einer deren Pufferdaten enthält, vorgesehen für eine anfordernde Vorrichtung, allerdings unterschiedlich als die Daten, die in der momentanen Transaktion angefordert sind, kann der Puffer geleert werden, um zu verhindern, dass der anfordernde Master überholte Daten empfängt. Der Puffer wird dann geleert, wenn er Prefetch-Daten enthält, (d. h. Daten, die in dem Puffer verbleiben, nachdem die anfordernde Vorrichtung einige der Daten aufgesucht hat, oder Daten, die nicht spezifisch durch die Vorrichtung angefordert wurden), allerdings wird er nicht gelöscht, wenn er Abschluss-Daten enthält (d. h. spezifisch angefordert durch eine Vorrichtung, die bis jetzt noch nicht zurückgekehrt ist, um sie zu empfangen). Falls der Puffer-Abschluss-Daten enthält und die anfordernde Vorrichtung eine Anforderung ausgegeben hat, die nicht den Puffer „trifft" („hit"), versieht die DCQ 144 die Vorrichtung mit einem Zeichen als eine „Multi-Threaded" Vorrichtung (d. h. eine solche, die in der Lage ist, mehr als eine Transaktion zu einem Zeitpunkt beizubehalten), und ordnet einen anderen Abschluss-Puffer der neuen Anforderung zu. Die Puffer-Lösch- und Mehrfach-Puffer-Zuordnungs-Schemen werden in weiterem Detail nachfolgend beschrieben.If the DCQ 144 determines that one of them contains buffer data intended for a requesting device, but different than the data requested in the current transaction, the buffer may be flushed to prevent the requesting master from receiving outdated data. The buffer is emptied if it contains prefetch data (ie, data remaining in the buffer after the requesting device has visited some of the data, or data not specifically requested by the device), but it does not deleted if it contains completion data (ie specifically requested by a device that has not yet returned to receive it). If the buffer contains completion data and the requesting device has issued a request that does not "hit" the buffer, the DCQ provides 144 the device with a character as a "multi-threaded" device (ie, one capable of maintaining more than one transaction at a time) and assigns another completion buffer to the new request and multiple buffer allocation schemes will be described in further detail below.

Ein Master-Zyklus-Arbitrierer (MCA) 150 in dem Warteschlangen-Block 127 hält Standard-Reihenfolgen-Einschränkungen zwischen geposteten Speicher-Schreib-, verzögerten Anforderungs- und verzögerten Abschluss-Transaktionen bei, wie dies in der PCI Bridge Architecture Specification, Version 2.1, angegeben ist. Diese Einschränkungen erfordern, dass Bus-Zyklen eine starke Schreib-Reihenfolge beibehalten und dass Entblockungen (Deadlocks) nicht auftreten. Deshalb bestimmt der MCA 150 die Reihenfolge, in der gepostete Speicher-Schreib-Transaktionen in der PMWQ 140 und verzögerte Anforderungs-Transaktionen in der DRQ 142 auf dem PCI-Bus 32 laufen. Der MCA 150 steuert auch die Verfügbarkeit von verzögerten Abschluss-Informationen, gespeichert in der DCQ 144. Um eine Übereinstimmung mit diesen Regeln sicherzustellen, gibt der ausgangsseitige MCA 150 jedem geposteten Speicher-Schreib-Zyklus eine Gelegenheit, früher ausge gebene, verzögerte Anforderungs-Zyklen im Bypass zu passieren, während sowohl der eingangsseitige als auch der ausgangsseitige MCA 150 nicht zulassen, dass verzögerte Anforderungs- und verzögerte Abschluss-Zyklen früher ausgegebene, gepostete Speicher-Schreib-Zyklen im Bypass passieren. Eine Transaktions-Reihenfolge durch den MCA 150 wird in weiterem Detail nachfolgend beschrieben.A Master Cycle Arbitrator (MCA) 150 in the queue block 127 maintains standard order constraints between posted memory write, delayed request, and delayed completion transactions, as specified in the PCI Bridge Architecture Specification, Version 2.1. These restrictions require that bus cycles maintain a strong write order and that deadlocks do not occur. That's why the MCA determines 150 the order in which posted memory write transactions in the PMWQ 140 and delayed request transactions in the DRQ 142 on the PCI bus 32 to run. The MCA 150 Also controls the availability of delayed completion information stored in the DCQ 144 , To ensure compliance with these rules, the output MCA gives 150 For each posted memory write cycle, there is an opportunity to bypass previously issued delayed request cycles while both the input and output MCA 150 Do not allow delayed request and delayed completion cycles to bypass previously issued posted memory write cycles. A transaction order by the MCA 150 will be described in more detail below.

Die Transaktions-Zähler 159 in dem ausgangsseitigem Warteschlangen-Block 127 behalten eine Zählung der Zahl von Transaktionen, in dem eingangsseitigen Brücken-Chip in die Warteschlange gestellt, bei. Ein Zähler 160 für ein gepostetes Speicher-Schreiben (Posted Memory Write – PMW) zeigt die Zahl von PMW-Transaktionen, gehalten in der eingangsseitigen, geposteten Speicher-Schreib-Warteschlange, an. Der PMW-Zähler 160 wird zu jedem Zeitpunkt erhöht, zu dem eine PMW-Transaktion zu der Kabel-Schnittstelle 130 geschickt wird. Der Zähler 160 wird zu jedem Zeitpunkt erniedrigt, zu dem die QPIF 148 ein Signal von dem Kabel-Decodierer 146 aufnimmt, anzeigend, dass ein PMW-Zyklus auf dem eingangsseitigen PCI-Bus 24 abgeschlossen worden ist. Wenn die eingangseitige PMWQ die maximale Zahl (vier) der PMW Transaktionen in die Warteschlange gestellt hat, gibt der PMW-Zähler 160 ein PMW-Voll-Signal (tc_pmw_full) aus, und teilt der QPIF 148 mit, zusätzliche PMW-Zyklen von dem PCI-Bus 32 erneut zu versuchen. In ähnlicher Weise zählt ein Zähler 161 für eine verzögerte Anforderung (Delayed Request – DR) die Zahl von DR-Transaktionen, gehalten in der eingangsseitigen, verzögerten Anforderungs-Warteschlange. Wenn die DRQ die maximale Zahl (drei) von DR-Transaktionen hält, stellt der DR-Zähler 161 ein DR-Voll-Signal (tc_dr_full) auf, das anzeigt, dass die QPIF 148 alle darauffolgenden DR-Transaktionen von dem PCI-Bus 32 erneut versuchen muss. Ein Zähler 162 für einen verzögerten Abschluss (Delayed Completion – DC), zählt die Zahl von verzögerten Abschlüssen, die in dem eingangsseitigen Master-Zyklus-Arbitrierer in die Warteschlange gestellt sind. Wenn der MCA die maximale Zahl (vier) von verzögerten Abschlüssen hält, stellt der DC-Zähler 162 ein DC-Voll-Signal (tc_dc_full) auf, das verhindert, dass die ausgangsseitige QPIF 148 verzögerte Anforderungs-Transaktionen auf dem sekundären PCI-Bus 32 laufen lässt. Sobald der Voll-Zustand verschwindet, können Informationen über den verzögerten Abschluss zu der ausgangsseitigen DCQ geschickt werden.The transaction counter 159 in the output-side queue block 127 keep a count of the number of transactions queued in the upstream bridge chip. A counter 160 for posted memory write (PMW) indicates the number of PMW transactions held in the input side posted memory write queue. The PMW counter 160 is incremented at any time when a PMW transaction to the cable interface 130 is sent. The counter 160 is lowered at any time, to which the QPIF 148 a signal from the cable decoder 146 recording, indicating that a PMW cycle on the input side PCI bus 24 has been completed. If the input side PMWQ has queued the maximum number (four) of PMW transactions, the PMW counter returns 160 a PMW full signal (tc_pmw_full) and shares the QPIF 148 with, additional PMW cycles from the PCI bus 32 to try again. Similarly counts a counter 161 for a Delayed Request (DR), the number of DR transactions held in the input side delayed request queue. If the DRQ holds the maximum number (three) of DR transactions, the DR counter represents 161 a DR full signal (tc_dr_full) indicating that the QPIF 148 all subsequent DR transactions from the PCI bus 32 have to try again. A counter 162 Delayed completion (DC) counts the number of delayed completions queued in the upstream Master Cycle Arbitrator. If the MCA holds the maximum number (four) of delayed completions, the DC counter will stop 162 a DC full signal (tc_dc_full), which prevents the output side QPIF 148 delayed request transactions on the secondary PCI bus 32 to run. Once the full state disappears, information about the delayed completion may be sent to the output DCQ.

Ein PCI-Schnittstellen-Block 152 ist zwischen dem PCI-Bus 32 und dem Warteschlangen-Block 127 vorhanden. Die PCI-Schnittstelle 152 umfasst einen Master-Block 123 und einen Slave-(Target)-Block 121. Der Slave-Block 121 ermöglicht PCI-Vorrichtungen auf dem Bus 32, auf interne Register von Brücken-Chips (z. B. Target-Speicher-Bereichs-Register 155 und Konfigurations-Register) zuzugreifen, um Abschluss-Informationen zu beanspruchen, die in der DCQ 144 gespeichert sind, und um auch Transaktionen zu initiieren, die durch die QPIF 148 und die Kabel-Schnittstelle 130 zu dem primären Bus geführt werden. Der Slave-Block 121 steuert die Verfügbarkeit des PCI-Busses 32 zu den PCI-Vorrichtungen auf dem Bus 32 durch Erkennen, wann jede Vorrichtung auf deren REQ#-Zeile zugreift und die REQ#-Signale zu den PCI-Arbitrierer 124 weiterführt. Wenn der PCI-Arbitrierer 124 eine anfordernde Vorrichtung auswählt, um eine Steuerung des Busses zu empfangen, erteilt der Slave-Block 121 den Bus zu der Vorrichtung durch Aufstellen der GNT# Leitung der Vorrichtung. Sobald der Bus 32 zu der anfordernden Vorrichtung erteilt ist und die Vorrichtung deren FRAME# Signal aufstellt, das den Beginn einer Transaktion anzeigt, verriegelt der Slave-Block 121 die Transaktions-Informationen (z. B. Adresse, Befehl, Daten, Byte-Freigaben, Parität, usw.) in ein Slave-Verriegelungsregister 156. Der Warteschlangen-Block 127 ist dann in der Lage, die Transaktions-Informationen von dem verriegelnden Register 156 aufzusuchen und sie zu der DCQ 144 und/oder der Kabel-Schnittstelle 130 zu liefern.A PCI interface block 152 is between the PCI bus 32 and the queue block 127 available. The PCI interface 152 includes a master block 123 and a slave (target) block 121 , The slave block 121 enables PCI devices on the bus 32 , on internal registers of bridge chips (eg target memory area registers 155 and configuration registers) to claim completion information contained in the DCQ 144 and also to initiate transactions made by the QPIF 148 and the cable interface 130 be led to the primary bus. The slave block 121 Controls the availability of the PCI bus 32 to the PCI devices on the bus 32 by detecting when each device accesses its REQ # line and the REQ # signals to the PCI arbitrators 124 continues. If the PCI arbitrator 124 selects a requesting device to receive control of the bus, issues the slave block 121 the bus to the device by setting up the GNT # line of the device. Once the bus 32 to the requesting device and the device sets up its FRAME # signal indicating the beginning of a transaction, the slave block locks 121 the transaction information (eg, address, command, data, byte enables, parity, etc.) in a slave lock register 156 , The queue block 127 then is able to get the transaction information from the locking register 156 to visit them and to the DCQ 144 and / or the cable interface 130 to deliver.

Transaktionen, unterstützt durch den PCI-Slave-Block 121, sind in der folgenden Tabelle dargestellt.Transactions supported by the PCI slave block 121 , are shown in the following table.

Figure 00170001
PCI-Schnittstellen-Slave-Transaktionen
Figure 00170001
PCI interface slave transactions

Der Master-Block 123 der PCI-Schnittstelle 152 lässt nur einen Zyklus laufen, initiiert durch den Warteschlangen-Block 127 (d. h. Transaktionen, gehalten in der PMWQ 140 und der DRQ 142). Der Warteschlangen-Block 127 fordert von dem PCI-Bus durch Senden eines Anforderungs-Signals (q2p_req) zu dem PCI-Master 123 an, der dann bestimmt, ob ein entsprechendes Anforderungs-Signal (b1req_) zu dem PCI-Arbitrierer 124 aufgestellt ist. Der Master-Block 123 stellt b1req_ auf, falls der Warteschlangen-Block 127 nicht einen verriegelten Zyklus läuft und der PCI-Bus 32 nicht durch eine PCI-Vorrichtung verriegelt ist. Wenn der PCI-Arbitrierer 124 den Warteschlangen-Block 127 auswählt, schickt der Master-Block 123 ein Bestätigungs-Signal (p2q_ack), um den Warteschlangen-Block 127 wissen zu lassen, das er eine Kontrolle des Busses 32 inne hat. Falls der PCI-Arbitrierer 124 keine offenen Anforderungen von anderen Vorrichtungen auf dem Bus 32 vorliegen hat, schickt der Master-Block 123 automatisch das p2q_ack Erteilungs-Signal zu dem Warteschlangen-Block 127, sogar dann, wenn der Warteschlangen-Block 127 nicht das q2p_req Signal aufgestellt hat. Sobald wie der Warteschlangen-Block 127 eine Arbitrierung erhält (d. h. der Arbitrierer 124 stellt das b1gnt_ Signal auf) und sein q2p_frame Signal aufstellt, um den Beginn einer Transaktion anzuzeigen, verriegelt der PCI-Master 123 Informationen über abgehende Transaktionen (d. h. Adresse, Befehl, Daten, Byte-Freigaben, Parität, usw.) in ein Master-Verriegelungs-Register 158 in der PCI-Schnittstelle 152. Die Transaktions-Informationen werden dann verwendet, um die Transaktion auf dem PCI-Bus 32 abzuschließen.The master block 123 the PCI interface 152 leaves only one cycle initiated by the queue block 127 (ie transactions held in the PMWQ 140 and the DRQ 142 ). The queue block 127 requests from the PCI bus by sending a request signal (q2p_req) to the PCI master 123 which then determines if a corresponding request signal (b1req_) to the PCI arbiter 124 is set up. The master block 123 sets b1req_ if the queue block 127 not a locked cycle is running and the PCI bus 32 not locked by a PCI device. If the PCI arbitrator 124 the queue block 127 selects, sends the master block 123 an acknowledgment signal (p2q_ack) to the queue block 127 to let him know that he has a control of the bus 32 holds. If the PCI arbitrator 124 no open requests from other devices on the bus 32 present, sends the master block 123 automatically the p2q_ack grant signal to the queue block 127 even if the queue block 127 did not set up the q2p_req signal. Once like the queue block 127 receives an arbitration (ie the arbitrator 124 sets the b1gnt_ signal) and sets up its q2p_frame signal to indicate the beginning of a transaction locks the PCI master 123 Outgoing transaction information (ie, address, command, data, byte enables, parity, etc.) into a master lock register 158 in the PCI interface 152 , The transaction information is then used to transact the transaction on the PCI bus 32 complete.

Transaktionen, unterstützt durch den Master-Block 123, sind in der folgenden Tabelle dargestellt.Transactions, supported by the master block 123 , are shown in the following table.

Figure 00180001
PCI-Schnittstellen-Master-Transaktionen
Figure 00180001
PCI interface master transactions

Allgemein arbeitet der Master-Block 123 als ein Standard-PCI-Master. Allerdings wird, im Gegensatz zu Standard-PCI-Brücken, der Master-Block nicht eine MRL, MRM oder MWI Transaktion beenden, bis eine Cache-Zeilen-Grenze erreicht ist, gerade nach dem der Master-Latenz-Zeitgeber (Master Latency Timer – MLT) abläuft. Auch stellt der Master-Block 123 nicht „Initiator Ready" (IRDY) Warte-Zustände auf. Der Master-Block 123 läuft einen verriegelten Zyklus auf dem PCI-Bus 32, falls der Warteschlangen-Block 127 sein „Verriegelungs" Signal (q2p_lock) aufstellt und seine Verriegelung auf dem Bus 32 freigibt, wenn der Warteschlangen-Block 127 sein „Entriegelungs" Signal (q2p_unlock) aufstellt.Generally, the master block works 123 as a standard PCI master. However, unlike standard PCI bridges, the master block will not terminate an MRL, MRM, or MWI transaction until a cache line limit is reached, just after the master latency timer. MLT) expires. Also, the master block represents 123 not "Initiator Ready" (IRDY) wait states on The master block 123 runs a locked cycle on the PCI bus 32 if the queue block 127 set its "lock" signal (q2p_lock) and its lock on the bus 32 releases when the queue block 127 set its "unlock" signal (q2p_unlock).

Wie auch 57 zeigt, enthält die PCI-Schnittstelle 152 eine Puffer-Entleerungs-Logik 154, die bestimmt, wann einer oder alle der DCQ Abschluss-Puffer durch den Warteschlangen-Block 127 geleert werden sollten. Die PCI-Slave 121 erzeugt zwei Signale, die durch den Warteschlangen-Block 127 verwendet werden, um die Abschluss-Puffer zu leeren: ein Flush-Signal (p2q_flush), das anzeigt, wann ein Puffer geleert werden sollte, und ein Schlitz- bzw. Steckplatzauswahl-Signal (p2q_slot[2:0]), das anzeigt, welche PCI-Vorrichtung (d. h. welcher Einsteckplatz an dem PCI-Bus) hinsichtlich seiner Daten geleert werden sollte. Die folgende Tabelle stellt die Beziehung zwischen p2q_slot[2:0], und der PCI-Schlitz-Zahl dar.As well as 57 shows contains the PCI interface 152 a buffer evacuation logic 154 that determines when one or all of the DCQ completion buffers pass through the queue block 127 should be emptied. The PCI slave 121 generates two signals through the queue block 127 used to flush the completion buffers: a flush signal (p2q_flush) indicating when a buffer should be flushed and a slot selection signal (p2q_slot [2: 0]) indicating which PCI device (ie, which slot on the PCI bus) should be emptied of its data. The following table shows the relationship between p2q_slot [2: 0] and the PCI slot number.

Figure 00190001
Erzeugung von p2q_slot[2:0]
Figure 00190001
Generation of p2q_slot [2: 0]

Wenn p2q_flush aufgestellt ist, wird der Warteschlangen-Block 127 entweder alle Abschluss-Puffer in der DCQ 144 entleeren, falls p2q_slot[2:0] gleich zu „000" ist, oder den entsprechenden Einen der acht Abschluss-Puffer, falls p2q_slot[2:0] irgendeinen anderen Wert hat. Der Warteschlangen-Block 127 behält ein Protokoll davon bei, welche Ab schluss-Puffer, falls welche vorhanden sind, jedem PCI-Steckplatz zu irgendeinem gegebenen Zeitpunkt entsprechen.When p2q_flush is set up, the queue block becomes 127 either all completion buffers in the DCQ 144 empty if p2q_slot [2: 0] is equal to "000", or the corresponding one of the eight completion buffers if p2q_slot [2: 0] has any other value The queue block 127 maintains a record of which termination buffers, if any, correspond to each PCI slot at any given time.

Das p2q_flush Signal wird an der ansteigenden Flanke des ersten PCI-Takt-(CLK)-Zyklus aufgestellt, nachdem ein config Schreib-(WR-CFG)-Zyklus auftritt, oder nachdem ein I/O-Schreib-(iowr)-Zyklus auftritt, oder ein Speicher-Schreib-(memwr)-Zyklus ein ausgangsseitiges Target (hit_tmem) während eines Befehl-Prüf-Zustands (cmd_chk_st) trifft Gates 2014, 2016, 2018 und 2020 und ein Flip-Flop 2022 sind so angeordnet, um p2q_flush auf diese Art und Weise zu erzeugen.The p2q_flush signal is asserted on the rising edge of the first PCI clock (CLK) cycle after a config write (WR-CFG) cycle occurs or after an I / O write (iowr) cycle occurs , or a memory write (memwr) cycle an output-side target (hit_tmem) during an instruction check state (cmd_chk_st) encounters gates 2014 . 2016 . 2018 and 2020 and a flip-flop 2022 are arranged to generate p2q_flush in this way.

In dem eingangsseitigen Brücken-Chip (d. h. wenn das Upstream_chip_i Signal aufgestellt ist) besitzt p2q_slot[2:0] immer einen Wert von „001", da die CPU der einzige Master auf dem primären PCI-Bus ist. In dem ausgangsseitigen Chip hängt der Wert von p2q_slot davon ab, ob der Zyklus, der zu einem Flush-Zustand (Flush Condition) führt, ein Zyklus von dem sekundären Bus 32 zu dem Warteschlangen-Block 127 ist (d. h. falls p2q_qcyc aufgestellt ist). Falls das p2q_qcyc Signal aufgestellt ist, nimmt p2q_slot[2:0] den Wert des reg_slot[2:0] Signals an, erzeugt durch die PCI-Slave 121. Das reg_slot[2:0] Signal zeigt an, welcher der sieben Vorrichtungen auf dem sekundären PCI-Bus 32 eine Kontrolle des Busses 32 erteilt worden ist. Die PCI-Slave 121 erzeugt das reg_slot[2:0] Signal durch Verriegeln des Werts der GNT# Leitung für jeden der sieben Schlitze bzw. Steckplätze auf dem Bus 32, um ein verriegeltes Erteilungs-Signal mit sieben Bits (latched_gnt_[7:1]; die achte Erteilungs-Leitung, die zu dem Warteschlangen-Block gehört, wird ignoriert) zu bilden, und durch Codieren von latched_gnt[7:1] entsprechend einer Durchsichtstabelle 2006, die nachfolgend angegeben ist.In the input side bridge chip (ie, when the upstream_chip_i signal is asserted), p2q_slot [2: 0] always has a value of "001" because the CPU is the only master on the primary PCI bus Value of p2q_slot on whether the cycle leading to a flush condition is one cycle from the secondary bus 32 to the queue block 127 is (ie if p2q_qcyc is set up). If the p2q_qcyc signal is asserted, p2q_slot [2: 0] takes the value of the reg_slot [2: 0] signal generated by the PCI slave 121 , The reg_slot [2: 0] signal indicates which of the seven devices on the secondary PCI bus 32 a control of the bus 32 has been granted. The PCI slave 121 generates the reg_slot [2: 0] signal by locking the value of the GNT # line for each of the seven slots on the bus 32 to form a latched grant signal of seven bits (latched_gnt_ [7: 1], the eighth grant line associated with the queue block is ignored) and by encoding latched_gnt [7: 1] according to one lookup table 2006 , which is indicated below.

Figure 00210001
Erzeugung von req_slot[2:0]
Figure 00210001
Generation of req_slot [2: 0]

Falls der Zyklus, der zu dem Entleeren führt, nicht ein Sekundär-PCI-zu-Warteschlangen-Block-Zyklus ist, muss er eine I/O-Lesung oder eine config-Lesung zu dem Sollspeicherbereich von einem der Steckschlitze an dem sekundären Bus 32 sein. Wenn der Zyklus eine I/O-Lesung oder eine config-Lesung ist (d. h. !iowr AND !wr_cfg), nimmt p2q_slot[2:0] den Wert des PCI-Schlitzes an, dessen Speicherbereich getroffen worden ist (mrange_slot[2:0]). Ansonsten ist der Zyklus ein I/O-Schreiben oder ein config-Schreiben und p2q_slot[2:0] wird gleich zu „000", so dass alle Abschluss-Puffer geleert werden. Gates 2008 und 2010 und Multiplexer 2002 und 2004 sind so angeordnet, um p2q_flush[2:0] auf diese Art und Weise zu erzeugen.If the cycle leading to the flush is not a secondary PCI-to-queue block cycle, it must do an I / O read or a config read to the target memory area of one of the plug-in slots on the secondary bus 32 be. If the cycle is an I / O read or a config read (ie! Iowr AND! Wr_cfg), p2q_slot [2: 0] assumes the value of the PCI slot whose memory area has been hit (mrange_slot [2: 0 ]). Otherwise, the cycle is an I / O write or a config write, and p2q_slot [2: 0] becomes equal to "000", so all completion buffers are flushed 2008 and 2010 and multiplexers 2002 and 2004 are arranged to generate p2q_flush [2: 0] in this way.

KABEL-DECODIERERCABLE DECODER

Wie 58 zeigt, empfängt der Kabel-Decodierer 146 Transaktionen von der Kabel-Schnittstelle und wählt die geeignete Warteschlange so aus, um jede Transaktion zu empfangen. Wenn sich der Kabeldecodierer in der Daten-Phase befindet (d. h. wenn data_phase oder next_data_phase vorliegt, wird ein asynchrones Signal, das den Wert von data_phase einstellt, an dem nächsten CLK-Zyklus aufgestellt ist), sieht der Kabel-Decodierer 146 an dem Befehl-Code (cd_cmd[3:0]), geschickt über das Kabel, nach, um zu bestimmen, welche Warteschlange die Transaktion empfangen sollte. Wie in der Tabelle nachfolgend dargestellt ist, ist, wenn cd_cmd[3:0] einen Wert von „1001" hat, die Transaktion ein verzögerter Abschluss, so dass der Kabel-Decodierer ein cd_dcq_select Signal aufstellt, das der dcq mitteilt, die Transaktion zu beanspruchen. Wenn die drei LSB des Befehl-Code-Signals (cd_cmd[2:0]) „111" sind, ist die Transaktion ein gepostetes Speicher-Schreiben, so dass der Kabel-Decodierer ein cd_pmwq_select Signal erzeugt, um die pmwq über die ankommende Transaktion zu warnen. Wenn die Transaktion weder ein gepostetes Speicher-Schreiben noch ein verzögerter Abschluss ist und der Befehl-Code nicht ein Streaming-Signal darstellt, stellt der Kabel-Decodierer ein cd_drq_select Signal auf, das der DRQ mitteilt, die Transaktion zu beanspruchen. Gates 2024, 2026, 2028 und 2030 sind so konfiguriert, um die cd_dcq_select, cd_pmwq_select, und cd_drg_select Signale auf diese Art und Weise zu erzeugen.As 58 shows, the cable decoder receives 146 Transactions from the cable interface and selects the appropriate queue to receive each transaction. If the cable decoder is in the data phase (ie, if data_phase or next_data_phase is present, an asynchronous signal setting the value of data_phase is asserted on the next CLK cycle), the cable decoder sees 146 to the command code (cd_cmd [3: 0]), sent over the cable, to determine which queue the transaction should receive. As shown in the table below, if cd_cmd [3: 0] has a value of "1001", the transaction is a delayed completion so that the cable decoder issues a cd_dcq_select signal telling the dcq to commit the transaction If the three LSBs of the command code signal (cd_cmd [2: 0]) are "111", the transaction is a posted memory write so that the cable decoder generates a cd_pmwq_select signal to send the pmwq over the to warn the incoming transaction. If the transaction is neither a posted memory write nor a delayed completion and the command code is not a streaming signal, the cable decoder asserts a cd_drq_select signal telling the DRQ to claim the transaction. Gates 2024 . 2026 . 2028 and 2030 are configured to generate the cd_dcq_select, cd_pmwq_select, and cd_drg_select signals in this way.

Die nachfolgende Tabelle stellt die Befehl-Code mit vier Bits, zugeordnet zu jedem Typ einer Transaktion, dar.The The following table represents the command code with four bits, assigned to every type of transaction.

Figure 00220001
Transaktions-Befehl-Code
Figure 00220001
Transaction command code

Wenn der ausgangsseitige Brücken-Chip eine Datenfolge zwischen dem primären Bus und einem sekundären Bus-Master eingerichtet hat, empfängt der eingangsseitige Kabel-Decodierer einen Befehl-Code von „1000". Dieser Code stellt ein Streaming-Signal dar, erzeugt durch den ausgangsseitigen Chip, um den eingangsseitigen Chip zu informie ren, dass eine Datenfolge eingerichtet worden ist. Wenn der Kabeldecodierer diesen Befehl-Code empfängt, stellt er ein cd_stream Signal auf, das der QPIF in der eingangsseitigen Vorrichtung mitteilt, die Transaktion fortzuführen. Der Kabel-Decodierer erzeugt auch ein cd_stream_next data Signal, das den eingangsseitigen Chip instruiert, einen anderen Teil von Daten zu dem sekundären Bus zu liefern. Das cd_stream-next_data Signal wird dann aufgestellt, wenn ein cd_stream Signal aufgestellt ist, wobei sich die Transaktion in der Daten-Phase befindet (d. h. data_phase ist aufgestellt), und ein next_data Signal ist von dem eingangsseitigen Chip über die Kabel-Schnittstelle empfangen worden (das next_data Signal erscheint auf einer der Leitungen des c2q_buff[3:0] Signals, das, wenn keine Datenfolge auftritt, dem Warteschlangen-Block mitteilt, welcher ausgangsseitige DCQ-Puffer der momentanen Transaktion zugeordnet ist). Das cd_stream_next_data Signal wird zurückgenommen, wenn entweder das cd_stream Signal zurückgenommen ist oder wenn eine neue Anforderung von der Kabel-Schnittstelle empfangen ist (d. h. c2q_new_req ist aufgestellt). Gates 2032 und 2034 sind so konfiguriert, um die cd_stream und die cd_stream_next_data Signale auf diese Art und Weise zu erzeugen.When the output-side bridge chip has established a data sequence between the primary bus and a secondary bus master, the input-side cable decoder receives a command code of "1000." This code represents a streaming signal generated by the output-side chip When the cable decoder receives this command code, it sets up a cd_stream signal, which tells the QPIF in the upstream device to continue the transaction The cable decoder generates Also, a cd_stream_next data signal instructing the input side chip to supply a different piece of data to the secondary bus The cd_stream-next_data signal is asserted when a cd_stream signal is asserted, with the transaction in the data phase (ie, data_phase is asserted), and a next_data signal is from the input side chip via the Kab The next_data signal has been received (the next_data signal appears on one of the lines of the c2q_buff [3: 0] signal which, if no data sequence occurs, informs the queue block which output side DCQ buffer is allocated to the current transaction). The cd_stream_next_data signal is deasserted when either the cd_stream signal is deasserted or when a new request is received from the cable interface (ie c2q_new_req is asserted). Gates 2032 and 2034 are configured to generate the cd_stream and cd_stream_next_data signals in this way.

GESPEICHERTE-SCHREIB-WARTESCHLANGESAVED WRITE QUEUE

Wie 59 zeigt, ist die gepostete Speicher-Schreib-Warteschlange (PMWQ) 140 ein Speicherelement, das alle die Befehl-Informationen enthält, die benötigt werden, um gepostete Schreib-Transaktionen auf dem Target-Bus auszuführen. Die PMWQ umfasst einen Zeichen- bzw. Tag-Speicher-Bereich 2036, der Informationen hält, die jede Transaktion identifizieren, einen Daten-RAM 2038, der die Schreib-Daten hält, die jeder Transaktion in der PMWQ zugeordnet sind, und verschiedene Steuerblöcke, um den Fluß von Transaktionen in die PMWQ hinein und von dieser heraus zu verwalten. Für jede Transaktion in der PMWQ behält der Zeichen-Speicher 2036 Informationen bei, wie beispielsweise über die Adresse, zu der geschrieben werden soll, den PCI-Befehl-Code (MW oder MWI), ein Adressen-Paritäts-Bit, und „einen verriegelten Zyklus" und einen „Dual-Adressen-Zyklus" Indikations-Bits, wie in der folgenden Tabelle dargestellt ist. Der Zeichenspeicher 2036 speichert auch einen Hinweiszeiger zu der Daten-RAM-Stelle der Daten entsprechend zu jeder der Transaktionen in der PMWQ.As 59 shows is the posted memory write queue (PMWQ) 140 a storage element containing all the command information needed to execute posted write transactions on the target bus. The PMWQ includes a tag storage area 2036 holding information identifying each transaction, a data RAM 2038 which holds the write data associated with each transaction in the PMWQ and various control blocks to manage the flow of transactions into and out of the PMWQ. For each transaction in the PMWQ, the character store retains 2036 Information such as the address to write to, the PCI command code (MW or MWI), an address parity bit, and "a locked cycle" and a "dual address cycle" indication -Bits, as shown in the following table. The character memory 2036 also stores a pointer to the data RAM location of the data corresponding to each of the transactions in the PMWQ.

Figure 00240001
Inhalte von PMWQ
Figure 00240001
Contents of PMWQ

Da die PCI Spec. 2.1 fordert, dass gepostete Speicher-Schreib-Transaktionen in der Reihenfolge ausgeführt werden, in der sie empfangen werden, ist der Zeichen- bzw. Tag-Speicher 2036 eine zirkulare FIFO-Vorrichtung. Die PMWQ, und deshalb der Zeichen-Speicher 2036, können bis zu vier gepostete Speicher-Schreib-Transaktionen simultan handhaben.Since the PCI Spec. 2.1 requires that posted memory write transactions be executed in the order in which they are received is the tag memory 2036 a circular FIFO device. The PMWQ, and therefore the character memory 2036 , can handle up to four posted memory write transactions simultaneously.

Der Daten-RAM 2038, umfasst vier Daten-Puffer 2042, 2044, 2046 und 2048, einen für jede Transaktion in der PMWQ. Jeder Puffer kann bis zu acht Cache-Zeilen, oder 256 Bytes, an Daten (acht Worte pro Cache-Zeile) speichern. Für jede Cache-Zeile in einem Puffer speichert der Puffer acht Daten-Paritäts-Bits 2040 (eins pro dword) und zweiunddreißig Freigabe-Bits 2050 (eines pro Byte).The data RAM 2038 , includes four data buffers 2042 . 2044 . 2046 and 2048 , one for each transaction in the PMWQ. Each buffer can store up to eight cache lines, or 256 bytes, of data (eight words per cache line). For each cache line in a buffer, the buffer stores eight data parity bits 2040 (one per dword) and thirty-two enable bits 2050 (one per byte).

Ein Kabel-Schnittstellen-Block 2060 empfängt jede Transaktion und die entsprechenden Daten von dem Kabel-Codierer und platziert die Transaktion in dem Zeichen-Speicher 2036. Ein Warteschlangen-Schnittstellen-Block 2053 empfängt die Daten von dem Kabel-Schnittstellen-Block 2060 und platziert sie in der geeigneten Stelle in dem Daten-RAM 2038. Die Warteschlangen-Schnittstelle 2053 empfängt auch Daten von dem Daten-RAM 2038 und liefert sie zu der QPIF, wenn die QPIF die entsprechende Transaktion auf dem PCI-Bus laufen lässt. Ein Eingangs-Hinweis-Zeiger Logik-Block 2054 erzeugt vier Eingangs-Hinweis-Zeiger, einen für jeden Puffer, die der Warteschlangen-Schnittstelle 2053 mitteilen, wo das nächste Wort von Daten zu platzieren ist. Ein Gültigkeits-(Ausgangs)-Hinweiszeiger-Block 2056 erzeugt vier Ausgangs-Hinweiszeiger, einen für jeden Puffer, die die Position des nächsten Worts, das herangezogen werden soll, anzeigen.A cable interface block 2060 receives each transaction and the corresponding data from the cable encoder and places the transaction in the character memory 2036 , A queue interface block 2053 receives the data from the cable interface block 2060 and place them in the appropriate location in the data RAM 2038 , The queue interface 2053 also receives data from the data RAM 2038 and deliver them to the QPIF when the QPIF runs the corresponding transaction on the PCI bus. An input pointer pointer logic block 2054 generates four input pointers, one for each buffer, of the queue interface 2053 tell where the next word of data is to be placed. A validity (exit) pointer block 2056 generates four output pointers, one for each buffer, indicating the position of the next word to be used.

Wie 60 zeigt, hält ein Gültigkeits-Flag-Logik-Block 2052 ein Acht-Bit-Gültigkeits-Zeilen-Register 2062 für jeden der vier Puffer in dem Daten-RAM 2038 aufrecht. Das Gültigkeits-Zeilen-Register 2062 zeigt an, welche der acht Cache-Zeilen in jedem Puffer gültige Daten enthält. Wenn das letzte Wort in einer Cache-Zeile mit Daten gefüllt worden ist (d. h. valid_pointer[2:0] entspricht „111" und cd_next-data wird aufgestellt, was anzeigt, dass das Wort gefüllt worden ist), wird das entsprechende Bit in einem Acht-Bit-Kabel-Gültigkeits-Signal (d. h. q0_cable_valid[7:0], q1_cable_valid[7:0], usw.) eingestellt. Das Bit, das eingestellt werden soll, wird durch die drei signifikantesten Bits des Gültigkeits-Hinweiszeigers (valid_pointer[5:3]) bestimmt, die anzeigen, dass die Cache-Zeile gefüllt ist. Das entsprechende Bit in dem Kabel-Gültigkeits-Signal wird auch eingestellt, wenn ein Einsteckplatz-Gültigkeitssignal (validate_slot) von dem Kabel-Decodierer an dem Ende einer Transaktion empfangen ist. Das Kabel-Gültigkeits-Signal wird in das Gültigkeits-Zeilen-Register 2062 entsprechend dem ausgewählten Daten-Puffer an der ansteigenden Flanke des ersten PCI-Takt-Zyklus (CLK) verriegelt, nachdem das letzte Wort gefüllt ist, oder das valid_slot Signal empfangen ist. Ansonsten hält das Gültigkeits-Zeilen-Register seinen momentanen Wert bei. Die Bits in dem Gültigkeits-Zeilen-Register 2062 werden dann gelöscht, wenn die entsprechenden Bits eines Acht-Bit-Ungültigkeits-Signals (d. h. q0_invalid[7:0], q1_invalid[7:0], usw.) aufgestellt sind.As 60 shows holds a validity flag logic block 2052 an eight-bit validity line register 2062 for each of the four buffers in the data RAM 2038 upright. The validity line register 2062 indicates which of the eight cache lines in each buffer contains valid data. If the last word in a cache line has been filled with data (ie valid_pointer [2: 0] corresponds to "111" and cd_next-data is asserted, indicating that the word has been filled), the corresponding bit in a Eight-bit cable validity signal (ie, q0_cable_valid [7: 0], q1_cable_valid [7: 0], etc.) The bit to be set is indicated by the three most significant bits of the validity pointer (valid_pointer [5: 3]) indicating that the cache line is filled in. The corresponding bit in the cable validity signal is also set when a slot validate signal (validate_slot) is received from the cable decoder at the end of a cable valid signal The cable validity signal is placed in the validity line register 2062 latched according to the selected data buffer on the rising edge of the first PCI clock cycle (CLK) after the last word is filled or the valid_slot signal is received. Otherwise the validity line register will keep its current value. The bits in the validity line register 2062 are cleared when the appropriate bits of an eight-bit invalid signal (ie, q0_invalid [7: 0], q1_invalid [7: 0], etc.) are asserted.

Der Gültigkeits-Flag-Logik-Block 2052 erzeugt ein pmwq_valid[3:0] Signal, das anzeigt, welcher, falls irgendeiner vorhanden ist, der vier Daten-Puffer mindestens eine gültige Zeile an Daten enthält. Der Gültigkeits-Block 2052 erzeugt auch ein pmwq_valid_lines[7:0] Signal, das anzeigt, welche der acht Cache-Zeilen eines ausgewählten Daten-Puffers gültig sind. Ein Warteschlangen-Auswahl-Signal von dem QPIF (p2pif_queue_select[1:0]) wird dazu verwendet, auszuwählen, welches gültige Zeilen-Register 2062 eines Daten-Puffers verwendet wird, um das pmwq_valid_lines[7:0] Signal zu erzeugen. Wenn der Warteschlangen-Block eine Steuerung des Busses erhält, um einen geposteten Speicher-Schreib-Zyklus laufen zu lassen, und zwar von einem ausge wählten Daten-Puffer, überträgt der Warteschlangen-Block alle Daten in jeder Zeile, deren entsprechendes Bit in dem pewg_valid_lines[7:0] Signal eingestellt ist. Gates 2064, 2066, 2068, 2070 und 2072 und ein Flip-Flop 2074 sind so angeordnet, um die Werte in dem Gültigkeits-Zeilen-Register 2062 für den ersten Daten-Puffer (q0_valid[7:0]) einzustellen. Eine ähnliche Schaltung bestimmt die Inhalte der Gültigkeits-Register für die anderen drei Daten-Puffer. Ein Multiplexer 2076 wählt den Wert des pmwg_valid_lines[7:0] Signals aus.The validity flag logic block 2052 generates a pmwq_valid [3: 0] signal indicating which, if any, contains the four data buffers at least one valid row of data. The valid keits block 2052 also generates a pmwq_valid_lines [7: 0] signal indicating which of the eight cache lines of a selected data buffer are valid. A queuing select signal from the QPIF (p2pif_queue_select [1: 0]) is used to select which valid line register 2062 a data buffer is used to generate the pmwq_valid_lines [7: 0] signal. When the queue block is given control of the bus to run a posted memory write cycle from a selected data buffer, the queue block transfers all the data in each row, its corresponding bit in the pewg_valid_lines [7: 0] signal is set. Gates 2064 . 2066 . 2068 . 2070 and 2072 and a flip-flop 2074 are arranged to hold the values in the validity line register 2062 for the first data buffer (q0_valid [7: 0]). A similar circuit determines the contents of the validity registers for the other three data buffers. A multiplexer 2076 selects the value of the pmwg_valid_lines [7: 0] signal.

Wie nun 61 zeigt, hält ein Voll-Zeilen-Logik-Block 2058 ein Acht-Bit-Voll-Zeilen-Register 2078 für jeden der vier Daten-Puffer aufrecht. Die Inhalte jedes Voll-Zeilen-Registers 2078 zeigen an, welche der acht Cache-Zeilen in dem entsprechenden Daten-Puffer voll sind. Die Bits in jedem Voll-Zeilen-Register 2078 werden durch ein asynchrones next_full_line_bit Signal, erzeugt durch die Voll-Zeilen-Zustand-Maschine 2080, was nachfolgend beschrieben ist, eingestellt. Wenn ein Warteschlangen-Auswahl-Signal von der QPIF (select_nex_queue[3:1]) einen der Daten-Puffer auswählt und das next_full_line_bit Signal aufgestellt ist, wird das Bit in dem Voll-Zeilen-Register 2078 entsprechend zu der Cache-Zeile, angezeigt durch die drei signifikantesten Bits, des Gültigkeits-Hinweiszeigers (valid_pointer[5:3]) eingestellt. Ein 3 × 8 Decodierer 2082 wandelt den Drei-Bit-Gültigkeits-Hinweiszeiger in ein Acht-Bit-Signal um, das bestimmt, welches Bit einzustellen ist. Ein Acht-Bit-Voll-Zeilen-Signal (q0_full_line) wird für jeden Daten-Puffer von den Inhalten des entsprechenden Voll-Zeilen-Registers 2078 erzeugt. Das Voll-Zeilen-Signal zeigt an, welche Zeilen in dem entsprechenden Daten-Puffer voll sind. Der Voll-Zeilen-Logik-Block 2058 erzeugt auch ein pmwg_full_line[7:0] Signal, das anzeigt, welche Cache-Zeilen eines ausgewählten Daten-Puffers voll sind. Der Multiplexer 2084 und das q2pif_queue_select[1:0] Signal werden dazu verwendet, das pmwg_full_line[7:0] Signal zu erzeugen.Like now 61 shows holds a full-line logic block 2058 an eight-bit full-line register 2078 upright for each of the four data buffers. The contents of each full-line register 2078 indicate which of the eight cache lines in the corresponding data buffer are full. The bits in each full-line register 2078 are generated by an asynchronous next_full_line_bit signal, generated by the full-line state machine 2080 , which is described below, set. When a queue select signal from the QPIF (select_nex_queue [3: 1]) selects one of the data buffers and the next_full_line_bit signal asserted, the bit in the full line register becomes 2078 corresponding to the cache line indicated by the three most significant bits of the validity pointer (valid_pointer [5: 3]). A 3x8 decoder 2082 converts the three-bit validity pointer into an eight-bit signal that determines which bit to set. An eight-bit full-line signal (q0_full_line) is for each data buffer of the contents of the corresponding full-line register 2078 generated. The full-line signal indicates which lines in the corresponding data buffer are full. The full-line logic block 2058 also generates a pmwg_full_line [7: 0] signal indicating which cache lines of a selected data buffer are full. The multiplexer 2084 and the q2pif_queue_select [1: 0] signal are used to generate the pmwg_full_line [7: 0] signal.

Wie auch 62 zeigt, wird die Voll-Zeilen-Zustand-Maschine 2080 in einen IDLE Zustand 2086 bei einem Reset platziert. In dem IDLE Zustand 2086 wird das next_full_line_bit auf Null gesetzt. Wenn eine Transaktion in die PMWQ platziert wird, tritt die Transaktion in zwei Phasen auf, eine Adressen-Phase und eine Daten-Phase. Wenn die Daten-Phase beginnt (d. h. ein clock_second_phase Signal wird aufgestellt) und der Gültigkeits-Hinweiszeiger zu dem ersten Wort in der Cache-Zeile hinweist (valid_pointer[2:0] = „000"), geht die Zustand-Maschine 2080 zu einem DATA Zustand 2088 über. In dem Datenzustand wird das next_full_line_bit Signal nur dann aufgestellt, wenn der Gültigkeits-Hinweiszeiger auf das letzte Wort in der Cache-Zeile hinweist (valid_pointer[2:0] = "111"), wird das cd_next_data Signal durch den Kabel-Decodierer aufgestellt (anzeigend, dass das letzte Wort mit Daten gefüllt wurde), und das Byte-Freigabe-Signal von dem Kabel-Decodierer (cd_byte_en[3:0]) gleicht „0000". Die Zustand-Maschine geht auch zurück zu dem IDLE Zustand 2086, wenn diese Zustände auftreten. Falls diese Zustände nicht auftreten, bevor die Transaktion endet (d. h. cd_complete wird aufgestellt), bleibt das next_full_line_bit Signal nicht aufgestellt und die Zustand-Maschine 2080 geht zurück zu dem IDLE Zustand 2086. Die Zustand-Maschine 2080 geht auch zu dem IDLE Zustand 2086 ohne Aufstellen des next_full_line_bit Signals über, wenn das cd_byte_en[3:0] Signal einen Wert, einen anderen als „0000", annimmt.As well as 62 shows, the full-line state machine 2080 in an IDLE state 2086 placed on a reset. In the IDLE state 2086 the next_full_line_bit is set to zero. When a transaction is placed in the PMWQ, the transaction occurs in two phases, an address phase and a data phase. When the data phase starts (ie, a clock_second_phase signal is asserted) and the valid flag pointer points to the first word in the cache line (valid_pointer [2: 0] = "000"), the state machine goes 2080 to a DATA state 2088 above. In the data state, the next_full_line_bit signal is asserted only if the validity pointer points to the last word in the cache line (valid_pointer [2: 0] = "111"), the cd_next_data signal is asserted by the cable decoder ( indicating that the last word has been filled with data) and the byte enable signal from the cable decoder (cd_byte_en [3: 0]) equals "0000." The state machine also goes back to the IDLE state 2086 when these conditions occur. If these conditions do not occur before the transaction ends (ie, cd_complete is asserted), the next_full_line_bit signal is not asserted and the state machine remains 2080 goes back to the IDLE state 2086 , The state machine 2080 also goes to the IDLE state 2086 without asserting the next_full_line_bit signal if the cd_byte_en [3: 0] signal assumes a value other than "0000".

Wie wiederum 59 und auch 63 zeigen, muss die PMWQ normalerweise eine Transaktion von dem Kabel-Decodierer beenden, wenn der Daten-Puffer, der die entsprechenden Daten aufnimmt, voll ist. Allerdings lässt, wenn der Kabel-Decodierer fortfährt, Daten zu verschicken, nachdem der Puffer voll ist, ein Überlauf-Logik-Block 2090 zu, dass die Daten in den nächsten, leeren Puffer überlaufen. Der Überlauf-Logik-Block 2090 führt ein Überlauf-Register 2092, das anzeigt, welche, falls irgendwelche vorhanden sind, der vier Daten-Puffer als Überlauf-Puffer verwendet werden. Die Inhalte des Überlauf-Registers 2092 werden dazu verwendet, ein Vier-Bit-Überlauf-Signal (pmwq_overflow[3:0]) zu erzeugen. Wenn sich die Transaktion in der Daten-Phase befindet (d. h. data_phase ist aufgestellt), erreicht der Gültigkeits-Hinweiszeiger das letzte Wort eines Daten-Puffers (d. h. valid_pointer[5:0] = „111111"), der Kabel-Decodierer zeigt an, dass mehr Daten ankommen (d. h. cd_next_data wird aufgestellt), und der Kabel-Decodierer hat nicht angezeigt, dass die Transaktion abgeschlossen ist (d. h. cd_complete ist nicht aufgestellt), das select_next_queue[3:0] Signal, das auf den am kürzesten vorher gefüllten Daten-Puffer hinweist, wird dazu verwendet, das Überlauf-Register-Bit entsprechend dem nächsten Daten-Puffer einzustellen. Falls die Bedingungen nicht erfüllt sind, wird das Überlauf-Bit gelöscht. Gates 2094 und 2095 werden in Verbindung mit dem select_next_queue[3:0] Signal verwendet, um die geeigneten Überlauf-Register-Bits einzustellen und zu löschen, wenn diese Zustände erfüllt sind.Like again 59 and also 63 The PMWQ must normally complete a transaction from the cable decoder when the data buffer holding the corresponding data is full. However, if the cable decoder continues to send data after the buffer is full, it leaves an overflow logic block 2090 to make the data overflow into the next empty buffer. The overflow logic block 2090 carries an overflow register 2092 indicating which, if any, of the four data buffers are used as the overflow buffer. The contents of the overflow register 2092 are used to generate a four-bit overflow signal (pmwq_overflow [3: 0]). When the transaction is in the data phase (ie, data_phase is asserted), the valid flag pointer reaches the last word of a data buffer (ie, valid_pointer [5: 0] = "111111"), the cable decoder indicates that more data arrives (ie cd_next_data is set up) and the cable decoder has not indicated that the transaction is complete (ie cd_complete is not up), the select_next_queue [3: 0] signal that is on the most recently filled data Buffer is used to set the overflow register bit corresponding to the next data buffer, if the conditions are not met, the overflow bit is cleared 2094 and 2095 are used in conjunction with the select_next_queue [3: 0] signal to set and clear the appropriate overflow register bits when these conditions are met.

Eine einzelne Transaktion kann fortführen, um in zusätzliche Puffer überzulaufen, bis der letzte, nicht benutzte Puffer voll ist. Falls mehr als ein Puffer als ein Überlauf-Puffer verwendet wird, werden Mehrfach-Überlauf-Register-Bits eingestellt. Aufeinanderfolgende, eingestellte Bits in dem Überlauf-Register zeigen an, dass eine einzelne Transaktion in mehr als einen Puffer übergelaufen ist. Die Überlauf-Bits werden entweder eingestellt oder gelöscht, wenn die gepostete Schreib-Transaktion in die PMWQ hinein platziert ist. Auch kann, falls die QPIF beginnt, die PMW-Transaktion auf dem Target-Bus laufen zu lassen und den originalen Puffer zu entleeren, während sich die Daten noch dabei befinden, in die PMWQ einzutreten, wobei der Original-Puffer wieder verwendet werden, um die Überlauf-Transaktion fortzuführen. Der Überlauf kann fortführen, bis alle verfügbaren Puffer voll sind.A single transaction may continue to overflow into additional buffers until the last one used buffer is full. If more than one buffer is used as an overflow buffer, multiple overflow register bits are set. Successive set bits in the overflow register indicate that a single transaction has overflowed into more than one buffer. The overflow bits are either set or cleared when the posted write transaction is placed in the PMWQ. Also, if the QPIF starts running the PMW transaction on the target bus and flushing the original buffer while the data is still entering the PMWQ, the original buffer can be reused to continue the overflow transaction. The overflow can continue until all available buffers are full.

WARTESCHLANGE FÜR VERZÖGERTE ANFORDERUNGQUEUE FOR DELAYED REQUIREMENT

Wie 64 zeigt, speichert die DRQ 142 alle die Informationen, die dazu benötigt werden, eine verzögerte Lese-Anforderung-(Delayed Read Request – DRR) und eine verzögerte Schreib-Anforderung-(Delayed Write Request – DRW) Transaktionen auf dem Target-Bus abzuschließen. Die DRQ umfasst einen Warteschlangenspeicher 2100, der Informationen hält, wie beispielsweise die Adresse, die davon gelesen oder dazu geschrieben werden soll, den PCI-Befehl-Code, Byte-Freigaben, Adressen- und Daten-Paritäts-Bits, Indikations-Bits über einen „verriegelten Zyklus" und einen „Dual-Adressen-Zyklus", und die Puffer-Zahl des Puffers für den verzögerten Abschluss, reserviert in dem initiierenden Brücken-Chip für die Abschluss-Informationen. Der Warteschlangen-Speicher 2100 hält auch bis zu zweiunddreißig Bits (ein Wort) an Daten, die zu dem Target-Bus in einem verzögerten Schreib-Zyklus geschrieben werden sollen. Da verzögerte Schreib-Zyklen niemals mehr als ein Wort an Daten einsetzen, wird kein Daten-RAM in der DRQ benötigt. Die DRQ, und deshalb der Warteschlangen-Speicher 2100, ist in der Lage, bis zu drei verzögerte Anforderungs-Transaktionen auf einmal zu halten. Ein Kabel-Schnittstellen-Block 2102 beansprucht verzögerte Anforderungs-Transaktionen von dem Kabel-Decodierer und platziert sie in den Warteschlangen-Speicher 2100. Die folgende Tabelle zeigt die Informationen, die in dem DRQ-Warteschlangen-Speicher beibehalten werden.As 64 shows, stores the DRQ 142 all the information needed to complete a Delayed Read Request (DRR) and a Delayed Write Request (DRW) transactions on the target bus. The DRQ includes a queue memory 2100 which holds information such as the address to be read from or written to, the PCI command code, byte enables, address and data parity bits, indication bits over a "locked cycle", and a "Dual address cycle", and the buffer number of the delayed completion buffer reserved in the initiating bridge chip for the completion information. The queue memory 2100 Also holds up to thirty-two bits (one word) of data to be written to the target bus in a delayed write cycle. Since delayed write cycles never use more than one word of data, no data RAM is needed in the DRQ. The DRQ, and therefore the queue memory 2100 , is able to hold up to three delayed request transactions at once. A cable interface block 2102 claims delayed request transactions from the cable decoder and places them in the queue memory 2100 , The following table shows the information that is retained in the DRQ queue store.

Figure 00290001
Inhalte von DRQ
Figure 00290001
Contents of DRQ

Wie auch 65 zeigt, bestimmt ein Gültigkeits-Flag-Logik-Block 2104, wann die DRQ alle die Informationen empfangen hat, die dazu notwendig sind, die Transaktionen in dem Warteschlangen-Speicher 2100 laufen zu lassen. Wenn einer der DRQ-Schlitze durch ein entsprechendes Schlitz-Auswahl-Signal ausgewählt ist (d. h. select_zero für den ersten Schlitz, select_one für den zweiten Schlitz und select_two für den dritten Schlitz) und der Schlitz durch ein validate_slot Signal für gültig erklärt ist, anzeigend, dass der Kabel-Decodierer ein Zuführen der Transaktion zu der DRQ abgeschlossen hat, wird ein Gültigkeits-Signal entsprechend zu dem Schlitz (d. h. q0_valid, q1_valid oder q2_valid) an der ansteigenden Flanke des nächsten PCI-Takt-(CLK)-Zyklus aufgestellt. Falls ein Schlitz nicht ausgewählt ist und durch ein valid_slot Signal für gültig erklärt ist, wird das Gültigkeits-Signal für den Schlitz bzw. den Einsteckplatz wieder zurückgenommen, falls die QPIF den Schlitz ausgewählt hat, durch Aufstellen eines DRQ-Auswahl-Signals (q2pif_drq_select) und durch Identifizieren des Schlitzes bzw. des Einsteckplatzes (q2pif_queue_select = Schlitz-Zahl), allerdings die Transaktion durch Aufstellen eines Zy klus-Aussonderungs-Signals (q2pif_abort_cycle) ausgesondert hat. Das Gültigkeits-Signal wird auch zurückgenommen, falls die DRQ die Transaktion durch Aufstellen eines Zyklus-Abschluss-Signals (z. B. q0_cycle_complete) beendet, während die QPIF auf mehr Daten wartet (d. h. q2pif_next_data ist aufgestellt). Allerdings wird das Zyklus-Abschluss-Signal ignoriert, falls die QPIF momentan Daten zu dem anderen Brücken-Chip (d. h. q2pif_streaming ist aufgestellt) als Datenfolge überträgt. Ansonsten hält, falls das Gültigkeits-Signal des Schlitzes nicht spezifisch aufgestellt oder an einem Takt-Zyklus zurückgenommen ist, er seinen momentanen Wert bei. Der Gültigkeits-Flag-Logik-Block 2104 erzeugt auch ein DRQ Gültigkeits-Signal (drq_valid[3:0]), das anzeigt, welcher, falls irgendeiner vorhanden ist, der drei DRQ-Schlitze eine gültige Transaktion enthält, und zwar durch Kombinieren der Gültigkeits-Signale für jeden individuellen Schlitz (d. h. drq_valid = {0, q2_valid, q1_valid, q0_valid}). Gates 2106, 2108, 2110, 2112 und 2114, Multiplexer 2116 und 2118 und ein Flip-Flop 2120 sind so angeordnet, um die Schlitz-Gültigkeits-Signale und die DRQ-Gültigkeits-Signale auf diese Art und Weise zu erzeugen.As well as 65 indicates, determines a validity flag logic block 2104 when the DRQ has received all the information necessary to do the transactions in the queue memory 2100 to run. If one of the DRQ slots is selected by a corresponding slot select signal (ie select_zero for the first slot, select_one for the second slot and select_two for the third slot) and the slot is validated by a validate_slot signal, indicating That the cable decoder has completed delivering the transaction to the DRQ, a validation signal corresponding to the slot (ie, q0_valid, q1_valid, or q2_valid) is asserted on the rising edge of the next PCI clock (CLK) cycle. If a slot is not selected and given a valid_slot signal for gül If the QPIF has selected the slot, the validity signal for the slot or the slot is canceled again, by setting up a DRQ select signal (q2pif_drq_select) and identifying the slot or slot (q2pif_queue_select = Slot number), but discarded the transaction by asserting a cyclic segregation signal (q2pif_abort_cycle). The validity signal is also deasserted if the DRQ completes the transaction by asserting a cycle completion signal (eg, q0_cycle_complete) while the QPIF is waiting for more data (ie, q2pif_next_data is asserted). However, the cycle completion signal is ignored if the QPIF is currently transferring data to the other bridge chip (ie, q2pif_streaming is established) as a data stream. Otherwise, if the slot validity signal is not specifically asserted or retired on a clock cycle, it will maintain its current value. The validity flag logic block 2104 also generates a DRQ validity signal (drq_valid [3: 0]) indicating which, if any, of the three DRQ slots contains a valid transaction by combining the validity signals for each individual slot (ie drq_valid = {0, q2_valid, q1_valid, q0_valid}). Gates 2106 . 2108 . 2110 . 2112 and 2114 , Multiplexer 2116 and 2118 and a flip-flop 2120 are arranged to generate the slot validity signals and the DRQ validity signals in this manner.

Die DRQ umfasst auch Hinweiszeiger-Logik-Blöcke, die Hinweiszeiger zu den Speicher-Stellen beibehalten, von denen Daten während verzögerter Lese-Anforderungs-Transaktionen gelesen werden sollen. Wenn die Adresse, an der die verzögerten Lese-Transaktionen beginnen wird, in den Warteschlangen-Speicher 2100 eingeladen ist, erzeugt ein Gültigkeits-Hinweiszeiger-Logik-Block 2122 einen Sechs-Bit-Gültigkeits-Hinweiszeiger, der anzeigt, wo die Transaktion enden wird. Falls die Transaktion ein einzelnes Wort umfasst (z. B. ein Speicher-Lesen), stellt die Gültigkeits-Hinweiszeiger-Logik 2122 den gültigen Hinweiszeiger gleich zu der Adresse, eingeladen in den Warteschlangen-Speicher 2100 hinein, auf. Für eine Speicher-Lese-Zeilen-Transaktion gibt die Gültigkeits-Hinweiszeiger-Logik 2122 dem gültigen Hinweiszeiger einen Wert von „000111", was anzeigt, dass der letzte, gültige Teil der Daten ein acht dwords (d. h. eine Cache-Zeile) über den Startpunkt hinaus ist. Für eine Speicher-Lese-Mehrfach-Transaktion wird der gültige Hinweiszeiger auf „111111" gesetzt, was anzeigt, dass der letzte, gültige Teil an Daten vierundsechzig dwords (d. h. acht Cache-Zeilen) über den Startpunkt ist. Die Gültigkeits-Hinweiszeiger-Logik 2122 behält einen gültigen Hinweiszeiger für jeden Schlitz in der DRQ (valid_pointer_0[5:0], valid_pointer_1[5:0] und valid_pointer_2[5:0]) bei. Die Stelle des gültigen Hinweiszeigers wird durch die DRQ dann ignoriert, wenn sie ein Streaming- Signal von der QPIF (q2pif_streaming) empfängt, wie dies in weiterem Detail nachfolgend beschrieben ist.The DRQ also includes pointer logic blocks that maintain pointers to the memory locations from which to read data during delayed read request transactions. When the address at which the delayed read transactions begin will be in the queue memory 2100 loaded generates a validity pointer logic block 2122 a six-bit validity pointer indicating where the transaction will end. If the transaction includes a single word (eg, a memory read), the valid flag pointer logic represents 2122 the valid pointer equal to the address loaded in the queue memory 2100 into, up. For a memory read row transaction, the validation pointer pointer logic 2122 the valid pointer indicates a value of "000111", indicating that the last valid portion of the data is an eight dwords (ie, a cache line) beyond the starting point, for a memory read multiple transaction the valid pointer will be set to "111111", indicating that the last valid portion of data is sixty four dwords (ie, eight cache lines) above the starting point. The validity pointer logic 2122 retains a valid pointer for each slot in the DRQ (valid_pointer_0 [5: 0], valid_pointer_1 [5: 0], and valid_pointer_2 [5: 0]). The location of the valid pointer is ignored by the DRQ when it receives a streaming signal from the QPIF (q2pif_streaming), as described in more detail below.

Ein Ausgangs-Hinweiszeiger-Logik-Block 2124 behält drei Ausgangs-Hinweiszeiger (output_pointer_0[5:0], output_pointe_1[5:0] und output_pointer_2[5:0]), einen für jeden Schlitz in der DRQ, bei, die das nächste Wort an Daten anzeigen, das von dem Speicher gelesen werden soll, und zugeführt zu dem anderen Brücken-Chip. Der Hinweiszeiger wird dann erhöht, wenn die QPIF anzeigt, dass sie bereit ist, den nächsten Teil an Daten zu lesen (d. h. sie stellt das q2pif_next_data Signal auf), einmal für jede Wort-Lesung. Mit Ausnahme in Streaming-Situationen, wird eine Transaktion beendet (abgeschlossen), wenn der Ausgangs-Hinweiszeiger den gültigen Hinweiszeiger erreicht. Wenn eine Transaktion endet, bevor alle Daten gelesen sind (d. h. bevor der Ausgangs-Hinweiszeiger den Eingangs-Hinweiszeiger erreicht), wird die QPIF an der Stelle, angezeigt durch den Ausgangs-Hinweiszeiger, aufnehmen, wenn die Transaktion wieder beginnt. Wenn der Ausgangs-Hinweiszeiger erhöht wird, allerdings die Ausgangs-Hinweiszeiger-Logik 2124 ein Stepback-Signal (q2pif_step_back) empfängt, was anzeigt, dass die Transaktion an dem PCI-Bus beendet wurde, bevor die QPIF in der Lage war, den letzten Teil von Daten zu lesen, erniedrigt die Ausgangs-Hinweiszeiger-Logik 2124 den Zähler einmal, so dass der letzte, nicht gelesene Teil der Daten gelesen werden kann, wenn die Transaktion wieder beginnt. Ein Warteschlangen-Schnittstellen-Block 2126 liefert Transaktions-Informationen und den gültigen und Ausgangs-Hinweiszeiger zu der QPIF.An output pointer logic block 2124 keeps three output pointers (output_pointer_0 [5: 0], output_pointe_1 [5: 0] and output_pointer_2 [5: 0]), one for each slot in the DRQ, indicating the next word of data from memory should be read and fed to the other bridge chip. The pointer is incremented when the QPIF indicates that it is ready to read the next piece of data (ie, it sets the q2pif_next_data signal) once for each word read. Except in streaming situations, a transaction is terminated (completed) when the output pointer reaches the valid pointer. If a transaction ends before all data is read (ie, before the output pointer reaches the input pointer), the QPIF will pick up at the location indicated by the output pointer when the transaction starts again. When the output pointer is incremented, but the output pointer logic 2124 a stepback signal (q2pif_step_back), indicating that the transaction on the PCI bus has ended before the QPIF was able to read the last part of data, lowers the output pointer logic 2124 the counter once so that the last unread part of the data can be read when the transaction starts again. A queue interface block 2126 provides transaction information and the valid and output pointers to the QPIF.

WARTESCHLANGE FÜR VERZÖGERTEN ABSCHLUSSQUEUE FOR DELAYED FINISH

Wie 66 zeigt, speichert die DCQ 144 verzögerte Abschluss-Nachrichten, die die Antwort des Target-Busses auf jede verzögerte Anforderung, ausgegeben zu dem initiierenden Bus hin, enthalten. Verzögerte Abschluss-Nachrichten entsprechend zu verzögerten Lese-Anforderungen umfassen die angeforderten Daten, während verzögerte Abschluss-Nachrichten, entsprechend zu verzögerten Schreib-Anforderungen, keine Daten umfassen. Ein Kabel-Schnittstellen-Block 2130 beansprucht verzögerte Abschluss-Nachrichten von dem Kabel-Decodierer und liefert die verzögerten Abschluss-Informationen zu einem Tag-Speicher 2132. Die DCQ, und deshalb der Tag-Speicher 2132, ist dazu geeignet, bis zu acht verzögerte Abschluss-Nachrichten auf einmal zu speichern. Der Tag-Speicher 2132 speichert Informationen, wie beispielsweise den PCI-Befehl und die Adresse, enthalten in der originalen Anforderung, zu der verzögerten Abschluss-Nachricht führend, Byte-Freigabe-Bits, Adressen- und Daten-Paritäts-Bits und Bits für einen „verriegelten Zyklus" und einen „Dual-Adressen-Zyklus". Für verzögerte Schreib-Transaktionen, die immer nur ein einzelnes Wort an Daten einsetzen, speichert der Tag-Speicher 2132 eine Kopie der geschriebenen Daten. Jeder der acht Schlitze bzw. Steckplätze in dem Tag-Speicher 2132 umfasst einen implizierten Hinweiszeiger zu einem von acht entsprechenden Daten-Puffern in einem DCQ-Daten-RAM 2134. Für verzögerte Lese-Transaktionen werden die zurückgeführten Daten in einem entsprechenden Daten-Puffer 2135ah in dem Daten-RAM 2134 gespeichert. Die folgende Tabelle stellt die Informationen dar, gespeichert in dem Tag-Speicher 2132 für jede Transaktion, gehalten in der DCQ.As 66 shows, stores the DCQ 144 delayed completion messages containing the response of the target bus to each delayed request issued to the initiating bus. Delayed completion messages corresponding to delayed read requests include the requested data, while delayed completion messages corresponding to delayed write requests do not include data. A cable interface block 2130 claims delayed completion messages from the cable decoder and provides the delayed completion information to a tag memory 2132 , The DCQ, and therefore the tag store 2132 , is capable of storing up to eight delayed completion messages at once. The tag store 2132 stores information such as the PCI command and the address contained in the original request, leading to the delayed completion message, byte enable bits, address and data parity bits, and "locked cycle" bits and bits a "you al address cycle. "Tag memory is stored for delayed write transactions that use only a single word of data at a time 2132 a copy of the written data. Each of the eight slots in the tag store 2132 includes an implied pointer to one of eight corresponding data buffers in a DCQ data RAM 2134 , For delayed read transactions, the returned data will be in a corresponding data buffer 2135a - H in the data RAM 2134 saved. The following table represents the information stored in the tag store 2132 for every transaction held in the DCQ.

Figure 00320001
Inhalte von DCQ
Figure 00320001
Contents of DCQ

Jeder der acht Daten-Puffer in dem DCQ-Daten-RAM 2134 kann bis zu acht Cache-Zeilen (256 Bytes) an verzögerten Abschlussdaten speichern. Deshalb sind die Puffer groß genug, um alle Abschlussdaten für sogar die größten, verzögerten Anforderungs-Transaktionen (Speicher-Lese-Mehrfach-Transaktion) zu speichern. Allerdings kann die Kapazität jedes Daten-Puffers auf vier Cache-Zeilen durch Einstellen eines Konfigurations- Bits (cfg2q_eight_line_) in den Konfigurations-Registern des Brücken-Chips reduziert werden. Jeder Daten-Puffer kann durch Daten gefüllt werden, vorgesehen in einer einzelnen, verzögerten Abschluss-Transaktion, oder falls nicht alle angeforderten Daten in einer einzelnen, verzögerten Abschluss-Transaktion zurückgeführt werden, durch mehrfache, verzögerte Abschluss-Transaktionen. Allerdings kann jeder Daten-Puffer Daten entsprechend zu nur einer originalen, verzögerten Anforderung enthalten, ungeachtet davon, wieviele verzögerte Abschluss-Transaktionen es benötigt, die angeforderten Daten zu liefern.Each of the eight data buffers in the DCQ data RAM 2134 can store up to eight cache lines (256 bytes) of delayed completion data. Therefore, the buffers are large enough to store all of the completion data for even the largest delayed request transactions (memory read multiple transaction). However, the capacity of each data buffer can be reduced to four cache lines by setting a configuration bit (cfg2q_eight_line_) in the bridge chip's configuration registers. Each data buffer may be filled by data provided in a single, delayed completion transaction or, if not all requested data is returned in a single, delayed completion transaction, by multiple, delayed completion transactions. However, each data buffer may contain data corresponding to only one original, delayed request, regardless of how many delayed completion transactions it will take to deliver the requested data.

Ein Warteschlangen-Schnittstellen-Block 2136 steuert den Fluss von Abschluss-Daten von der DCQ-Kabel-Schnittstelle 2130 in den Daten-RAM 2134 hinein und aus dem Daten-RAM 2134 zu der QPIF heraus. Drei Logik-Blöcke erzeugen Hinweiszeiger, die die Eingabe und die Ausgabe von Daten, gespeichert in den acht Daten-Puffern, leiten. Der erste Block, ein Eingangs-Hinweiszeiger-Logik-Block 2138, behält einen Sechs-Bit-Eingangs-Hinweiszeiger für jeden der acht Daten-Puffer bei (in_pointer_0[5:0], in_pointer_1[5:0], usw.). Jeder Eingangs-Hinweiszeiger weist auf die Stelle in dem entsprechenden Daten-Puffer hin, um das nächste Wort an Daten zu platzieren. Der zweite Block, ein Ausgangs-Hinweiszeiger-Logik-Block 2140, behält einen Sechs-Bit-Ausgangs-Hinweiszeiger für jeden der acht Puffer bei (out_pointer_0[5:0], out_pointer_1[5:0], usw.). Jeder Ausgangs-Hinweiszeiger weist auf die Stelle des Worts von Daten unmittelbar dem Wort, das als letztes von der QPIF entfernt ist, hin. Der Ausgangs-Hinweiszeiger für einen ausgewählten Daten-Puffer wird dann erhöht, wenn die QPIF anzeigt, dass sie für den nächsten Teil von Daten bereit ist (d. h. wenn q2pif_next_data aufgestellt ist). Falls der Ausgangs-Hinweiszeiger erhöht wird, allerdings der letzte Teil von Daten nicht die anfordernde Vorrichtung erreicht, da die Transaktion durch eine Vorrichtung, eine andere als die QPIF, beendet wurde, stellt die QPIF ein Rückschritt-Signal (q2pif_step_back) auf, das bewirkt, dass der Ausgangs-Hinweiszeiger-Logik-Block 2140 den Ausgangs-Hinweiszeiger um ein Wort erniedrigt.A queue interface block 2136 controls the flow of completion data from the DCQ cable interface 2130 in the data RAM 2134 in and out of the data RAM 2134 out to the QPIF. Three logic blocks generate pointers that direct the input and output of data stored in the eight data buffers. The first block, an input pointer logic block 2138 , maintains a six-bit input pointer for each of the eight data buffers (in_pointer_0 [5: 0], in_pointer_1 [5: 0], etc.). Each input pointer points to the location in the corresponding data buffer to place the next word of data. The second block, an output pointer logic block 2140 , maintains a six-bit output pointer for each of the eight buffers (out_pointer_0 [5: 0], out_pointer_1 [5: 0], etc.). Each output pointer points to the location of the word of data immediately adjacent to the word last removed from the QPIF. The output pointer for a selected data buffer is incremented when the QPIF indicates that it is ready for the next portion of data (ie, when q2pif_next_data is asserted). If the output pointer is incremented, but the last piece of data does not reach the requesting device, since the transaction was terminated by a device other than the QPIF, the QPIF sets a back-step signal (q2pif_step_back) which causes in that the output pointer logic block 2140 lowers the output pointer by one word.

Der dritte Hinweiszeiger-Block, ein gültiger Hinweiszeiger-Logik-Block 2142, behält für jeden der Acht-Daten-Puffer einen Sechs-Bit-Gültigkeits-Hinweiszeiger bei (valid_pointer_0[0:5], valid_pointer_1[5:0], usw.), der das nächste Wort an Daten in dem entsprechenden Daten-Puffer anzeigt, der zu der QPIF verfügbar ist. Da die PCI Spec. 2.1 erfordert, dass Lese-Abschluss-Daten nicht vor einer früher initiierten, geposteten Speicher-Schreib-Transaktion zurückgeführt werden, können verzögerte Abschluss-Daten, platziert in die DCQ hinein, während ein gepostetes Speicher-Schreiben in dem PMWQ anhängig ist, nicht zu der anfordernden Vorrichtung verfügbar gemacht werden, bis das gepostete Speicher-Schreiben auf dem PCI-Bus abgeschlossen ist und von der PMWQ entfernt ist. Deshalb muss, solange wie irgendwelche früher in die Warteschlange gestellten, geposteten Speicher-Schreib-Transaktionen in der PMWQ verbleiben, der gültige Hinweiszeiger bei seiner momentanen Position verbleiben. Dann kann, wenn alle früher in die Warteschlange gestellten, geposteten Speicher-Schreib-Vorgänge von der PMWQ entfernt worden sind, der gültige Hinweiszeiger zu derselben Position wie diejenige in dem Hinweiszeiger bewegt werden. Wenn die PMWQ leer ist, sind alle verzögerten Abschluss-Daten gültig (d. h. zu der anfordernden Vorrichtung hin verfügbar), sobald wie sie in der DCQ gespeichert sind.The third pointer block, a valid pointer logic block 2142 For each of the eight-data buffers, a six-bit validity pointer (valid_pointer_0 [0: 5], valid_pointer_1 [5: 0], etc.) maintains the next word of data in the corresponding data buffer that is available to the QPIF is. Since the PCI Spec. 2.1 requires that read completion data not be returned prior to a previously initiated posted memory write transaction, delayed completion data placed into the DCQ while a posted memory write is pending in the PMWQ may not the requesting device until the posted memory write on the PCI bus is completed and removed from the PMWQ. Therefore, as long as any previously queued, posted memory write transactions remain in the PMWQ, the valid pointer must remain in its current location. Then, when all previously queued posted memory writes have been removed from the PMWQ, the valid pointer can be moved to the same location as that in the pointer. If the PMWQ is empty, all delayed completion data is valid (ie, available to the requesting device) as soon as they are stored in the DCQ.

Wie auch die 67A und 67B zeigen, muss der Gültigkeits-Hinweiszeiger-Logik-Block 2142 den Master-Zyklus-Arbitrierer (Master Cycle Arbiter – MCA) fragen, um alle verzögerten Abschluss-Transaktionen für gültig zu erklären, die in die verzögerte Abschluss-Warteschlange eintreten, während ein gepostetes Speicher-Schreiben in der PMWQ anhängig ist. Allerdings kann, da der MCA nicht mehr als vier verzögerte Abschluss-Transaktionen auf einmal in die Warteschlange stellen kann, wie dies nachfolgend diskutiert ist, der Gültigkeits-Hinweiszeiger-Logik-Block 2142 eine Gültigkeit von nicht mehr als vier verzögerten Abschluss-Daten-Puffern auf einmal anfordern. Der Gültigkeits-Hinweiszeiger-Logik-Block 2142 muss auch eine Protokollierung beibehalten, welche vier verzögerten Abschluss-Transaktionen in dem MCA zu irgendeinem gegebenen Zeitpunkt in die Warteschlange gestellt sind. Um dies so vorzunehmen, behält der Gültigkeits-Hinweiszeiger-Logik-Block 2142 zwei Vier-Schlitz-Register bei: ein DCQ-Puffer-Zahl-Register 2144 und ein Gültigkeits-Anforderungs-Register 2146. Das Puffer-Zahl-Register 2144 behält die Drei-Bit-DCQ-Puffer-Zahl bei, wie dies durch das DCQ-Puffer-Zahl-Signal (cd_dcq_buff_num[2:0]) bestimmt ist, geliefert durch den Kabel-Decodierer, und zwar von jeder verzögerten Abschluss-Transaktion, in dem MCA in die Warteschlange gestellt. Das Gültigkeits-Anforderungs-Register 2146 behält ein Transaktions-Gültigkeits-Anforderungs-Bit für jeden der DCQ-Puffer bei, deren Zahlen in den vier Schlitzen bzw. Einsteckplätzen 2148ad des Puffer-Zahl-Registers 2144 gespeichert sind. Das Anforderungs-Bit in jedem Schlitz 2150ad des Gültigkeits-Anforderungs-Registers 2146 wird aufgestellt, falls eine entsprechende, verzögerte Abschluss-Transaktion in dem MCA in die Warteschlange ge stellt ist. Die Werte der Bits in den vier Gültigkeits-Anforderungs-Schlitzen 2150ad werden zusammen mit dem MCA als ein Vier-Bit-Gültigkeits-Anforderungs-Signal (dcq_valid[3:0]) vorgesehen.Like the 67A and 67B must show the validity pointer logic block 2142 ask the Master Cycle Arbiter (MCA) to validate any delayed completion transactions that enter the delayed completion queue while a posted memory write is pending in the PMWQ. However, since the MCA can not queuce more than four delayed completion transactions at a time, as discussed below, the validity pointer logic block may 2142 Request a validity of no more than four delayed completion data buffers at once. The validity pointer logic block 2142 Also, logging must be maintained which four delayed completion transactions in the MCA are queued at any given time. To do so, the validity pointer logic block remains 2142 two four-slot registers at: a DCQ buffer number register 2144 and a validity request register 2146 , The buffer number register 2144 maintains the three-bit DCQ buffer number as determined by the DCQ buffer number signal (cd_dcq_buff_num [2: 0]) supplied by the cable decoder from each delayed completion transaction in which MCA queued. The validity request register 2146 retains a transaction valid request bit for each of the DCQ buffers, their numbers in the four slots 2148a - d of the buffer number register 2144 are stored. The request bit in each slot 2150a - d of the validity request register 2146 is established if a corresponding delayed completion transaction is queued in the MCA. The values of the bits in the four validity request slots 2150a - d are provided together with the MCA as a four-bit validity request signal (dcq_valid [3: 0]).

Wenn eine verzögerte Abschluss-Transaktion in dem MCA in die Warteschlange gestellt werden soll, wird seine entsprechende DCQ-Puffer-Zahl in einen der Puffer-Zahl-Schlitze bzw. -Einsteckplätze 2148ad durch das cd_dcq_buff_num[2:0] Signal eingeladen. Der Schlitz 2148ad, der beladen werden soll, wird durch ein Zwei-Bit-Auswahl-Signal (next_valid_select[1:0]) ausgewählt. Der Wert des Auswahl-Signals hängt von dem Wert des dcq_valid[3:0] Signals, erzeugt durch das Gültigkeits-Anforderungs-Register 2146 und die Durchsichts-Tabelle 2152, ab, wobei die Inhalte davon in der Tabelle nachfolgend gezeigt sind. Der Schlitz wird dann beladen bzw. belegt, wenn er durch next_valid_select[1:0] ausgewählt ist, wenn der Kabel-Decodierer die DCQ ausgewählt hat und die Transaktion abgeschlossen hat (d. h. cd_dcq_select und cd_complete werden aufgestellt), und wenn mindestens eine gepostete Speicher-Schreib-Transaktion in der PMWQ anhängig ist (d. h. pmwq_no_pmw ist nicht aufgestellt). Gates 2154, 2156, 2158, 2160 und 2162 und ein 2 × 4 Decodierer 2164 sind so angeordnet, um das Puffer-Zahl-Register 2144 auf diese Art und Weise zu laden. In ähnlicher Weise wird das entsprechende Bit in dem Gültigkeits-Anforderungs-Register 2146 durch den Ausgang von Gates 2154, 2156, 2158, 2160 und 2162 und den 2 × 4 Decodierer 2164 eingestellt.When a delayed completion transaction is to be queued in the MCA, its corresponding DCQ buffer number becomes one of the buffer number slots 2148a - d Invited by the cd_dcq_buff_num [2: 0] signal. The slot 2148a - d which is to be loaded is selected by a two-bit selection signal (next_valid_select [1: 0]). The value of the select signal depends on the value of the dcq_valid [3: 0] signal generated by the validity request register 2146 and the review table 2152 , the contents of which are shown in the table below. The slot is then loaded if it is selected by next_valid_select [1: 0], if the cable decoder has selected the DCQ and completed the transaction (ie cd_dcq_select and cd_complete are set up), and if at least one posted memory Write transaction in which PMWQ is pending (ie pmwq_no_pmw is not set up). Gates 2154 . 2156 . 2158 . 2160 and 2162 and a 2x4 decoder 2164 are arranged to the buffer number register 2144 to load in this way. Similarly, the corresponding bit in the validity request register 2146 through the exit of Gates 2154 . 2156 . 2158 . 2160 and 2162 and the 2 × 4 decoder 2164 set.

Figure 00350001
Puffer-Zahl-Register-Schlitz-Auswahl
Figure 00350001
Buffer number register slot selection

Auf das dcq_valid[3:0] Signal hin gibt der MCA ein Vier-Bit-DCQ-Lauf-Signal (mca_run_dcq[3:0]) aus, das anzeigt, welcher der DCQ-Puffer, auf den durch das Puffer-Zahl-Register hingewiesen ist, seinen Gültigkeits-Hinweiszeiger aktualisiert haben kann. Das mca_run_dcq[3:0] Signal wird zu einem Gültigkeits-Hinweiszeiger-Aktualisierungs- Logik-Block 2166 geliefert, und zwar zusammen mit dem pmwg_no_pmw Signal und den In-Hinweiszeigern für jeden der acht Daten-Puffer. Falls eine gepostete Speicher-Schreib-Transaktion in der PMWQ verbleibt, nachdem der MCA eines der mca_run_dcq[3:0] Bits aufstellt (was dann auftreten wird, wenn eine gepostete Speicher-Schreib-Transaktion in die Warteschlange gestellt wurde, nachdem die verzögerte Abschluss-Transaktion in die Warteschlange gestellt wurde, allerdings bevor der MCA das entsprechende mca_run_dcq Bit aufgestellt hat), wird der entsprechende Gültigkeits-Hinweiszeiger aktualisiert, solange wie keine anderen, verzögerten Abschluss-Transaktionen entsprechend zu demselben DCQ-Puffer noch in dem MCA in die Warteschlange gestellt sind. Falls eine verzögerte Abschluss-Transaktion für denselben DCQ-Puffer noch in der MCA in die Warteschlange gestellt ist, kann der Gültigkeits-Hinweiszeiger nur aktualisiert werden, wenn das mca_run_dcq Bit entsprechend dieser Transaktion aufgestellt ist. Andererseits werden, sobald das pmwq_no_pmw Signal weggenommen ist, alle Gültigkeits-Hinweiszeiger aktualisiert, um die entsprechenden In-Hinweiszeiger anzupassen, ungeachtet davon, ob verzögerte Abschlüsse noch in der Warteschlange in dem MCA gestellt sind. Wenn ein mca_run_dcq Bit aufgestellt ist, wird das entsprechende Bit in dem Gültigkeits-Anforderungs-Register 2146 gelöscht. Gates 2168, 2170, 2172, 2174 und 2176 sind so angeordnet, um die Gültigkeits-Anforderungs-Register-Bits auf diese Art und Weise zu löschen. Wie wiederum 66 zeigt, bestimmt ein Hit-Logik-Block 2180, wenn eine verzögerte Anforderungs-Transaktion von einer anfordernden Vorrichtung auf dem PCI-Bus eine der verzögerten Abschluss-Nachrichten in der DCQ „getroffen" hat. Entsprechend zu der PCI Spec 2.1 müssen die folgenden Attribute identisch für einen verzögerten Abschluss sein, um zu einer Anforderung angepasst zu werden: Adresse, PCI Befehl, Byte-Freigaben, Adressen- und Daten-Parität (falls eine Schreib-Anforderung vorliegt), REQ64# (falls eine 64-Bit-Daten-Transaktion vorliegt), und LOCK# (falls unterstützt wird). Falls eine Anforderung durch die PCI-Slave verriegelt ist, sucht die QPIF die Anforderungs-Informationen auf, schickt sie zu der DCQ und stellt ein Prüf-Zyklus-Signal auf (q2pif_check_cyc), das die DCQ-Hit-Logik 2180 instruiert, die Anforderungs-Informationen zu den verzögerten Abschluss-Nachrichten, gespeichert in dem DCQ-Tag-Speicher 2132, zu vergleichen. Die Hit-Logik 2180 empfängt das 64 Bit-Adressen-Signal (q2pif_addr[63:2]), das Vier-Bit-PCI-Befehls-Signal (q2pif_cmd[3:0]), die vier Freigabe-Bits (q2pif_byte_en[3:0]), das Dual-Adressen-Zyklus-Bit (q2pif_dac), (das dem PCI REQ64# Signal entspricht), das Verriegelungs-Bit (q2pif_lock) von der QPIF, und, falls die Anforderung eine Schreib-Anforderung ist, die Daten, die geschrieben werden sollen (q2pif_data[31:0]). Obwohl es nicht durch die PCI Spec 2.1 erforderlich ist, liefert die QPIF auch die Schlitz-Zahl (q2pif_slot[2:0]) der anfordernden Vorrichtung, um das Puffer-Entleerungs-Programm für den Warteschlangen-Block fortzuführen, wie dies nachfolgend beschrieben ist. Die Hit-Logik 2180 vergleicht dann jedes dieser Signale mit verzögerten Abschluss-Informationen, gespeichert in den acht DCQ-Puffern. Falls alle Signale die Informationen irgendwelcher der verzögerten Abschluss-Nachrichten anpassen, identifiziert die Hit-Logik 2180 den Puffer, der die Anpassungs-Abschluss-Nachricht enthält, durch Aufstellen eines entsprechenden Bits in einem Acht-Bit-Hit-Signal (dcq_hit[7:0]). Wenn ein Treffer bzw. Hit auftritt, sucht die QPIF die Abschluss-Nachricht auf und liefert sie zu der anfordernden Vorrichtung. und, falls die Anforderung eine Lese-Anforderung ist, beginnt sie ein Entfernen der zurückgeführten Daten von dem entsprechenden Daten-Puffer in dem Daten-RAM 2134. Falls die angeforderten Informationen nicht die Abschluss-Informationen irgendeiner der verzögerten Abschluss-Nachrichten in der DCQ anpassen, ist die Anforderung in Bezug auf die DCQ „fehlgeschlagen" („missed"), und wird in dem nächsten, verfügbaren DCQ-Puffer gespeichert und über das Kabel zu dem anderen Brücken-Chip durch die QPIF weitergeführt. Eine PCI-Vorrichtung, die eine Anforderung initiiert, die die DCQ verfehlt hat, kann deren REQ# Leitung maskiert haben, bis deren Abschluss-Nachricht zurückgeführt ist, wie dies in weiterem Detail nachfolgend beschrieben ist.On the dcq_valid [3: 0] signal, the MCA outputs a four-bit DCQ run signal (mca_run_dcq [3: 0]) which indicates which of the DCQ buffers is to be pointed to by the buffer count. Register is indicated, its validity may have updated. The mca_run_dcq [3: 0] signal becomes a valid flag pointer updating logic block 2166 delivered, along with the pmwg_no_pmw signal and the pointers for each of the eight data buffers. If a posted memory write transaction remains in the PMWQ after the MCA sets up one of the mca_run_dcq [3: 0] bits (which will occur when a posted memory write transaction has been queued after the delayed completion Transaction has been queued, but before the MCA has set up the corresponding mca_run_dcq bit), the corresponding validity pointer is updated as long as no other delayed completion transactions corresponding to the same DCQ buffer are still queued in the MCA are placed. If a delayed completion transaction for the same DCQ buffer is still queued in the MCA, the validity pointer can only be updated if the mca_run_dcq bit is asserted according to that transaction. On the other hand, once the pmwq_no_pmw signal is deasserted, all validity pointers are updated to match the corresponding in pointers, regardless of whether delayed terminations are still queued in the MCA. If a mca_run_dcq bit is asserted, the corresponding bit in the validity request register becomes 2146 deleted. Gates 2168 . 2170 . 2172 . 2174 and 2176 are arranged to clear the validity request register bits in this manner. Like again 66 indicates, determines a hit logic block 2180 When a delayed request transaction from a requesting device on the PCI bus has "hit" one of the delayed completion messages in the DCQ According to PCI Spec 2.1, the following attributes must be identical for a delayed completion to one Requirement to be adapted: address, PCI command, byte enables, address and data parity (if there is a write request), REQ64 # (if there is a 64-bit data transaction), and LOCK # (if supported) If a request is latched by the PCI slave, the QPIF looks up the request information, sends it to the DCQ, and sets up a check cycle signal (q2pif_check_cyc) containing the DCQ hit logic 2180 instructs the request information about the delayed completion messages stored in the DCQ tag store 2132 , to compare. The hit logic 2180 receives the 64-bit address signal (q2pif_addr [63: 2]), the four-bit PCI command signal (q2pif_cmd [3: 0]), the four enable bits (q2pif_byte_en [3: 0]), the dual address cycle bit (q2pif_dac) (corresponding to the PCI REQ64 # signal), the lock bit (q2pif_lock) from the QPIF, and if the request is a write request, the data being written should (q2pif_data [31: 0]). Although not required by the PCI Spec 2.1, the QPIF also provides the slot number (q2pif_slot [2: 0]) of the requesting device to continue the buffer block deflator program, as described below , The hit logic 2180 then compares each of these signals with delayed completion information stored in the eight DCQ buffers. If all the signals match the information of any of the delayed completion messages, the hit logic identifies 2180 the buffer containing the customization completion message by placing a corresponding bit in an eight-bit hit signal (dcq_hit [7: 0]). When a hit occurs, the QPIF looks up the completion message and delivers it to the requesting device. and, if the request is a read request, it starts removing the returned data from the corresponding data buffer in the data RAM 2134 , If the requested information does not match the completion information of any of the delayed completion messages in the DCQ, the request is "missed" with respect to the DCQ, and is stored in the next available DCQ buffer and transferred over the cable continues to the other bridge chip through the QPIF. A PCI device that initiates a request that missed the DCQ may have its REQ # line masked until its completion message is returned, as described in further detail below.

Die Hit-Logik 2180 verbindet sich auch schnittstellenmäßig mit einem Multi-Threaded-Master-Erfassungs-Block 2182, um zu erfassen, welche PCI-Schlitze bzw. -Steckplätze, falls welche vorhanden sind, Multi-Threaded Vorrichtungen enthalten. Multi-Threaded Vorrichtungen sind in der Lage, mehr als eine, verzögerte Transaktion zu einem Zeitpunkt beizubehalten, und müssen dehalb speziell behandelt werden. Wenn ein Multi-Threaded-Master erfasst ist, wird ein entsprechendes Bit in den Konfigurations-Registern eingestellt, um anzuzeigen, dass die Vorrichtung in der Lage ist, mehrere, offenstehende, verzögerte Transaktionen zu unterstützen, und deshalb sollte deren REQ# Zeile nicht maskiert werden. Eine Multi-Threaded-Master-Erfassung wird in weiterem Detail nachfolgend diskutiert.The hit logic 2180 also interfaces with a multi-threaded master capture block 2182 to capture which PCI slots, if any, contain multi-threaded devices. Multi-threaded devices are capable of maintaining more than one delayed transaction at a time, and must therefore be handled specifically. When a multi-threaded master is detected, a corresponding bit is set in the configuration registers to indicate that the device is capable of supporting multiple, outstanding, delayed transactions, and therefore its REQ # line should not be masked become. A multi-threaded master acquisition will be discussed in more detail below.

Eine andere Funktion der DCQ ist diejenige, zu bestimmen, wenn eine Gelegenheit existiert, um eine Datenfolge von Lese-Daten zwischen dem primären und dem sekundären PCI-Bus erzeugen. Eine Streaming-Gelegenheit existiert dann, wenn verzögerte Abschluss-Daten in die DCQ durch den Kabel-Decodierer platziert werden, während sie noch auf dem Target-Bus durch die Target-Vorrichtung platziert sind. Falls die PCI-Vorrichtung, die die Transaktion initiierte, wieder deren Anforderung liefert, während die Target-Vorrichtung noch Daten auf dem PCI-Bus platziert, wird eine Lese-Datenfolge eingerichtet. Da ein Lese-Streaming eine effiziente Art und Weise ist, um Daten zwischen dem primären und dem sekundären PCI-Bus zu übertragen, gibt der PCI-Brücken-Chip nicht nur eint höhere Priorität in den Bus-Arbitrierungs-Prozess zu einer Vorrichtung, deren Abschluss-Daten ankommen, sondern wird auch versuchen, eine Nicht-Streaming-Transaktion zu beenden, um die Möglichkeit zu verbessern, dass eine Datenfolge eingerichtet werden wird. Allerdings ist es, während in der Theorie ein Streaming während irgendeines Lese-Zyklus auftreten kann, in der Praxis wahrscheinlich, dass dies nur während Transaktionen auftritt, die eine große Menge an Daten umfassen (d. h. Speicher-Lese-Mehrfach-Transaktionen). Deshalb wird der Warteschlangen-Block versuchen, Transaktionen zugunsten von potentiellen Streaming-Gelegenheiten nur dann zu beenden, wenn eine potentielle Streaming-Transaktion eine Speicher-Lese-Mehrfach-Transaktion ist.Another function of the DCQ is to determine if there is an opportunity to generate a data string of read data between the primary and secondary PCI buses. A streaming opportunity exists when delayed completion data is placed in the DCQ by the cable decoder while still placed on the target bus by the target device. If the PCI device that initiated the transaction returns its request while the target device is still placing data on the PCI bus, a read data string is established. As a reading streaming is an efficient way to transfer data between the primary and the secondary PCI bus, the PCI bridge chip not only gives higher priority in the bus arbitration process to a device whose termination data arrives, but will also try to terminate a non-streaming transaction to improve the possibility that a sequence of data will be established. However, while in theory streaming may occur during any read cycle, in practice it is likely that this only occurs during transactions involving a large amount of data (ie, memory read multiple transactions). Therefore, the queue block will attempt to terminate transactions in favor of potential streaming opportunities only if a potential streaming transaction is a memory read multiple transaction.

Wie auch 68 zeigt, bestimmt ein Stream- bzw. Datenfolge-Logik-Block 2184 in der DCQ, ob eine Streaming-Gelegenheit existiert, und, falls dies der Fall ist, erzeugt er die Signale, erforderlich dazu, die Datenfolge zu unterstützen. Der Datenfolge-Logik-Block 2184 erzeugt die Signale, erforderlich dazu, eine momentane Transaktion zugunsten einer potentiellen Datenfolge zu unterbrechen. Wenn der Kabel-Decodierer eine verzögerte Abschluss-Transaktion in der DCQ platziert, verwendet die Datenfolge-Logik 2184 das DCQ-Puffer-Zahl-Signal, geliefert durch den Kabel-Decodierer (cd_dcq_buff_num), um den PCI-Befehl-Code, gespeichert in dem entsprechenden DCQ-Puffer (q0_cmd[3:0], q1_cmd[3:1] usw.), aufzusuchen. Falls der Befehl-Code eine Speicher-Lese-Mehrfach-Anforderung (d. h. „1100") darstellt, stellt die Datenfolge-Logik 2184 ein Unterbrechungs-Für-Datenfolge-Signal (dcq_disconnect_for_stream) auf, das die QPIF und die PCI-Schnittstelle instruiert, die momentane Transaktion aufgrund einer potentiellen Streaming-Gelegenheit zu beenden. Ein Multiplexer 2186 und ein Komparator 2188 sind so angeordnet, um das dcq_disconnect_for_stream Signal zu erzeugen. Dann liefert, solange wie der Kabel-Decodierer fortfährt, die Abschluss-Daten zu der DCQ zu liefern (d. h. das cd_dcq_select Signal verbleibt aufgestellt) und keine geposteten Speicher-Schreibvorgänge in der PMWQ erscheinen (d. h. pmwq_no_pmw verbleibt aufgestellt), liefert die Datenfolge-Logik 2184 ein Streaming-Request-Signal (q2a_stream) direkt zu dem PCI-Arbitrierer. Die Datenfolge-Logik 2184 liefert auch die Schlitz- bzw. Einsteckplatz-Zahl der potentiellen Streaming-Vorrichtung (q2a_stream_master[2:0]) zu dem PCI-Arbitrierer unter Verwendung des cd_dcq_buff_num[2:0] Signals, um die PCI-Schlitz-Zahl, gespeichert in dem ausgewählten DCQ-Puffer (q0_master[2:0] für DCQ-Puffer-Null 2135a, q1_master[2:0] für DCQ-Puffer-Eins 2135b, usw.), auszuwählen. Der PCI-Arbitrierer hebt dann die Bus-Arbitrierungs-Priorität der potentiellen Streaming-Vorrichtung an, wie dies in weiterem Detail nachfolgend diskutiert ist. Falls dem potentiellen Streaming-Master nicht der Bus erteilt wird, bevor die Streaming-Gelegenheit verschwindet, wird deren Priorität zu Normal zurückgeführt. Da der eingangsseitige Bus nur eine Master-Vorrichtung (die CPU) besitzt, wird dieses Merkmal in dem eingangsseitigen Chip gesperrt. Das Gate 2190 und der Multiplexer 2192 sind so angeordnet, um die q2a_stream und q2a_stream_master Signale zu erzeugen.As well as 68 indicates, determines a stream logic block 2184 in the DCQ, if there is a streaming opportunity and, if so, it generates the signals needed to support the data sequence. The data sequence logic block 2184 generates the signals required to interrupt a current transaction in favor of a potential data sequence. When the cable decoder places a delayed completion transaction in the DCQ, the data string logic uses 2184 the DCQ buffer number signal supplied by the cable decoder (cd_dcq_buff_num) to the PCI command code stored in the corresponding DCQ buffer (q0_cmd [3: 0], q1_cmd [3: 1], etc.). ). If the instruction code represents a memory read multiple request (ie, "1100"), the data string logic sets 2184 an interrupt-for-data-sequence signal (dcq_disconnect_for_stream) instructing the QPIF and the PCI interface to terminate the current transaction due to a potential streaming opportunity. A multiplexer 2186 and a comparator 2188 are arranged to generate the dcq_disconnect_for_stream signal. Then, as long as the cable decoder continues to provide the completion data to the DCQ (ie the cd_dcq_select signal remains set up) and no posted memory writes appear in the PMWQ (ie, pmwq_no_pmw remains stalled), provides the data sequence logic 2184 a streaming request signal (q2a_stream) directly to the PCI arbiter. The data sequence logic 2184 also supplies the slot number of the potential streaming device (q2a_stream_master [2: 0]) to the PCI arbiter using the cd_dcq_buff_num [2: 0] signal to obtain the PCI slot number stored in the selected DCQ buffer (q0_master [2: 0] for DCQ buffer zero 2135a , q1_master [2: 0] for DCQ buffer one 2135b , etc.). The PCI arbiter then raises the bus arbitration priority of the potential streaming device, as discussed in further detail below. If the potential streaming master is not granted the bus before the streaming opportunity disappears, its priority is returned to normal. Since the input side bus has only one master device (the CPU), this feature is disabled in the input side chip. The gate 2190 and the multiplexer 2192 are arranged to generate the q2a_stream and q2a_stream_master signals.

Wenn eine anfordernde Vorrichtung eine verzögerte Abschluss-Nachricht, gespeichert in der DCQ, trifft, wird das entsprechende Bit eines Acht-Bit-Hit-Signals (hit[7:0]) aufgestellt. Das hit[7:0] Signal zeigt an, welcher der acht DCQ-Puffer durch die momentane Anforderung getroffen ist. Wenn dies auftritt, verriegelt, falls der entsprechende DCQ-Puffer Daten enthält (d. h. dcq_no_data wird nicht aufgestellt), die Datenfolge-Logik 2118 den Wert des Hit-Signals für die Dauer der Transaktion (d. h. solange, wie q2pif_cyc_complete aufgestellt ist). Die verriegelte Version des Hit-Signals bildet ein „verzögertes" Hit-Signal (dly_hit[7:0]). Wenn entweder das Hit-Signal oder das verzögerte Hit-Signal anzeigt, dass ein DCQ-Puffer getroffen worden ist, liefert ein Drei-Bit-DCQ-Datenfolge-Puffer-Signal (dcq_stream_buff[2:0]) die Puffer-Zahl des getroffenen bzw. Hit-DCQ-Puffers. Dann stellt, falls der Kabel-Decodierer verzögerte Abschluss-Daten in den Puffer platziert, während sich der Zyklus, der den Puffer traf, in Arbeit befindet (d. h. cd_dcq_select wird aufgestellt und cd_dcq_buff_num[2:0] entspricht dcq_stream_buff[2:0]), der Datenfolge-Logik-Block 2180 ein Datenfolge-Verbindungs-Signal auf (dcq_stream_connect), das der QPIF mitteilt, dass eine Datenfolge eingerichtet worden ist. Die QPIF informiert dann den Brücken-Chip auf dem Target-Bus, dass eine Datenfolge eingerichtet worden ist. Falls bestimmte Bedingungen erfüllt sind, wird die Target-QPIF fortfahren im Datenfluss zu arbeiten, bis sie mitteilt, zu stoppen, durch Initiieren von QPIF, wie dies in weiterem Detail nachfolgend diskutiert ist. Gates 2194 und 2196, Multiplexer 2198 und 2200 und ein Flip-Flop 2202 sind so angeordnet, um das verzögerte Hit-Signal zu erzeugen. Gates 2204, 2206 und 2208 und ein Codierer 2210 sind so angeordnet, wie dies dargestellt ist, um die dcq_stream_connect und dcq_stream_buff[2:0] Signale zu erzeugen.When a requesting device encounters a delayed completion message stored in the DCQ, the corresponding bit of an eight-bit hit signal (hit [7: 0]) is asserted. The hit [7: 0] signal indicates which of the eight DCQ buffers is hit by the current request. When this occurs, if the corresponding DCQ buffer contains data (ie, dcq_no_data is not asserted), the data string logic locks 2118 the value of the hit signal for the duration of the transaction (that is, as long as q2pif_cyc_complete is set up). The latched version of the hit signal forms a "delayed" hit signal (dly_hit [7: 0]). If either the hit signal or the delayed hit signal indicates that a DCQ buffer has been hit, a three will result Bit-DCQ-string-buffer-signal (dcq_stream_buff [2: 0]), the buffer number of hit DCQ buffer, then, if the cable decoder places delayed completion data in the buffer, while the cycle that hit the buffer is in progress (ie, cd_dcq_select is asserted and cd_dcq_buff_num [2: 0] corresponds to dcq_stream_buff [2: 0]), the data sequence logic block 2180 a data stream connection signal (dcq_stream_connect), which notifies the QPIF that a data string has been established. The QPIF then informs the bridge chip on the target bus that a data string has been established. If certain conditions are met, the target QPIF will continue to work in the data flow until it notifies to stop by initiating QPIF, as discussed in further detail below. Gates 2194 and 2196 , Multiplexer 2198 and 2200 and a flip-flop 2202 are arranged to produce the delayed hit signal. Gates 2204 . 2206 and 2208 and an encoder 2210 are arranged as shown to produce the dcq_stream_connect and dcq_stream_buff [2: 0] signals.

Wie wiederum 66 zeigt, wird die DCQ, unter bestimmten Umständen, automatisch Daten von dem Target-Bus zu Lasten eines PCI-Masters bei der Antizipierung automatisch vorab Abrufen, dass der Master zurückkommen wird und die Daten anfordern wird. Ein Prefetch-Logik-Block 2212 in der DCQ stellt Daten vorab ein, wenn der lesende Master alle die Daten in seinem DCQ-Puffer verbraucht und die Prefetch-Logik 2212 erwartet, dass die anfordernde Vorrichtung mit einer sequenziellen Lese-Anforderung zurückkehren wird (d. h. eine Anforderung, die Daten aufnimmt, angeordnet an der nächsten, sequenziellen Stelle in dem Speicher). Da einige Vorrichtungen, wie beispielsweise Multi-Threaded-Master, routinemäßig alle die Daten lesen, angefordert in einer Transaktion, und dann mit einer unterschiedlichen, nicht-sequenziellen Anforderung zurückkehren, umfasst die Prefetch-Logik 2212 eine Vorhersageschaltung, die die Prefetch-Fähigkeiten für jede Vorrichtung auf dem PCI-Bus sperrt, bis die Vorrichtung eine Tendenz dahingehend gezeigt hat, sequenzielle Lese-Anforderungen auszugeben. Sobald sie eine Vorrichtung, die vorab eingestellte Daten empfangen hat, mit einer nicht-sequenziellen Lese-Anforderung zurückkehrt, wird die Voraussage-Schaltung die Prefetching-Funktion für diesen Master sperren.Like again 66 In some circumstances, the DCQ will automatically automatically pre-fetch data from the target bus at the expense of a PCI master in anticipation that the master will come back and request the data. A prefetch logic block 2212 in the DCQ, pre-sets data when the read master consumes all the data in its DCQ buffer and the prefetch logic 2212 expects the requesting device to return with a sequential read request (ie a request that receives data located at the next, sequential location in the memory). Because some devices, such as multi-threaded masters, routinely read all of the data requested in a transaction, and then return with a different non-sequential request, prefetching logic is included 2212 a prediction circuit that blocks the prefetching capabilities for each device on the PCI bus until the device has shown a tendency to issue sequential read requests. Once it returns a device that has received pre-set data with a non-sequential read request, the prediction circuit will disable the prefetching function for that master.

Unter Bezugnahme auch auf die 69a und 69b umfasst der Prefetch-Logik-Block 2212 ein Prefetch-Vorhersage-Register 2214, wobei der Ausgang davon ein Acht-Bit-Prefetch-Freigabe-Signal (prefetch_set[7:0]) ist, das beurteilt, ob die Prefetch-Funktion für jede der Vorrichtungen auf dem PCI-Bus verfügbar ist. Alle Bits in dem Prefetch-Freigabe-Signal werden bei einem Reset (RST) gelöscht und wenn die QPIF ein allgemeines Löschen aller der DCQ-Register fordert (d. h. general_flush wird aufgestellt und q2pif_slot[2:0] entspricht „000"). Das general_flush Signal wird in weiterem Detail nachfolgend diskutiert. Gates 2216 und 2218 erzeugen das Signal, das die prefetch_set Bits wiedereinstellt.With reference also to the 69a and 69b includes the prefetch logic block 2212 a prefetch prediction register 2214 , the output of which is an eight-bit prefetch enable signal (prefetch_set [7: 0]) which judges whether the prefetching function is available for each of the devices on the PCI bus. All bits in the prefetch enable signal are cleared upon reset (RST) and when the QPIF requests a general clear of all of the DCQ registers (ie, general_flush is set up and q2pif_slot [2: 0] equals "000".) The general_flush Signal will be discussed in more detail below: Gates 2216 and 2218 generate the signal that resets the prefetch_set bits.

Ein individuelles Bit in dem Prefetch-Freigabe-Signal wird dann eingestellt, wenn der entsprechende PCI-Schlitz bzw. PCI-Einsteckplatz durch das q2pif_slot Signal ausgewählt ist und die folgenden Zustände auftreten: die anfordernde Vorrichtung trifft einen verzögerten Abschluss-Puffer in der DCQ (d. h. eines der Bits in den cycle_hit[7:0] Signal wird aufgestellt), die momentane Transaktion ist eine Speicher-Lese-Zeile oder ein Speicher-Lese-Mehrfach-Zyklus (d. h. q2pif_cmd[3:0] entspricht „1100" oder „11110"), die QPIF hat angezeigt, dass der Zyklus vollständig ist, (d. h. q2pif_cyc_complete wird aufgestellt) und das letzte Wort von Daten wurde von dem DCQ-Puffer herangezogen (d. h. last_word ist aufgestellt). Gates 2220, 2222, 2224 und 2228ah und ein Decodierer 2226 sind so angeordnet, um die Vorhersage-Bits auf diese Art und Weise einzustellen. Das last_word Signal wird durch die Prefetch-Logik 2212 aufgestellt, wenn die anfordernde Vorrichtung versucht, hinter dem Ende des DCQ-Puffers zu lesen. Dies tritt dann auf, wenn der Out-Pointer (Out-Hinweiszeiger) und der In-Pointer (In-Hinweizeiger) gleich sind, was anzeigt, dass das Ende des DCQ-Puffers erreicht worden ist (d. h. für einen Vier-Cache-Zeilen-Puffer, out_pointer_x[4:0] entspricht valid_pointer_x[4:0] oder, für einen Acht-Cache-Zeilen-Puffer, out_pointer_x[5:0] entspricht valid_pointer_x[5:0]), und wenn die anfordernde Vorrichtung versucht, einen anderen Teil von Daten zu lesen (d. h. q2pif_next_data ist aufgestellt). Gates 2230, 2232 und 2234 sind so angeordnet, um das last_word Signal zu erzeugen.An individual bit in the prefetch enable signal is set when the corresponding PCI slot is selected by the q2pif_slot signal and the following conditions occur: the requesting device encounters a delayed completion buffer in the DCQ (FIG. ie one of the bits in the cycle_hit [7: 0] signal is asserted), the current transaction is a memory read line or a memory read multiple cycle (ie q2pif_cmd [3: 0] corresponds to "1100" or " 11110 "), the QPIF has indicated that the cycle is complete (ie q2pif_cyc_complete is set up) and the last word of data was taken from the DCQ buffer (ie last_word is asserted). Gates 2220 . 2222 . 2224 and 2228a - H and a decoder 2226 are arranged to set the prediction bits in this manner. The last_word signal is passed through the prefetch logic 2212 when the requesting device attempts to read past the end of the DCQ buffer. This occurs when the out pointer and the in pointer are equal, indicating that the end of the DCQ buffer has been reached (ie for a four-cache line) Buffer, out_pointer_x [4: 0] equals valid_pointer_x [4: 0] or, for an eight-cache line buffer, out_pointer_x [5: 0] equals valid_pointer_x [5: 0]), and when the requesting device attempts to read another part of data (ie q2pif_next_data is set up). Gates 2230 . 2232 and 2234 are arranged to generate the last_word signal.

Ein individuelles Bit in dem Prefetch-Freigabe-Signal wird dann gelöscht, wenn der entsprechende PCI-Schlitz ausgewählt ist und entweder ein PCI-Lösch-Zustand auftritt (p2q_flush wird aufgestellt), die QPIF mitteilt der DCQ, den Gültigkeits-Hinweiszeiger des Puffers zurückzusetzen (q2p_step_back ist aufgestellt), oder die anfordernde Vorrichtung eine Transaktion initiiert, die alle der DCQ-Puffer verfehlt (q2pif_check_cyc wird aufgestellt und dcq_hit wird nicht aufgestellt). Gates 2236, 2238 und 2240ah und ein Decodierer 2226 sind so angeordnet, um die Vorhersage-Freigabe-Bits in dieser Art und Weise zu löschen.An individual bit in the prefetch enable signal is cleared when the corresponding PCI slot is selected and either a PCI clear state occurs (p2q_flush is asserted), the QPIF tells the DCQ to reset the validity pointer of the buffer (q2p_step_back is asserted) or the requesting device initiates a transaction that misses all of the DCQ buffers (q2pif_check_cyc is asserted and dcq_hit is not set up). Gates 2236 . 2238 and 2240a - H and a decoder 2226 are arranged to clear the prediction enable bits in this manner.

Wenn die Prefetch-Funktion für eine Vorrichtung auf dem PCI-Bus freigegeben ist, kann die Prefetch-Logik 2212 zwei Typen von Prefetch-Signalen für die Vorrichtung erzeugen: ein Prefetch-Zeilen-Signal (dcq_prefetch_line) und ein Prefetch-Mehrfach-Signal (dcq_prefetch_mul). Das Prefetch-Leitungs-Signal wird dann erzeugt, wenn der momentane PCI-Befehl von der anfordernden Vorrichtung ein Speicher-Lese-Leitungs-Zeilen-Signal ist, und das Prefetch-Mehrfach-Signal wird dann erzeugt, wenn der momentane PCI-Befehl ein Speicher-Lese-Mehrfach-Signal ist. In jedem Fall wird das entsprechende Prefetch-Signal erzeugt, wenn die folgenden Zustände auftreten: das prefetch_set Bit für den anfordernden PCI-Schlitz wird eingestellt; ein entsprechendes Prefetch-Freigabe-Bit in den Konfigurations-Registern wird eingestellt (cfg2q_auto_prefetch_enable); die DRQ in dem eingangsseitigen Chip ist nicht voll (!tc_dc_full); der DCQ-Puffer hat Raum für die entsprechende Menge an Prefetch-Daten (_!dcq_no_prefetch_room); der momentane Zyklus trifft den DCQ-Puffer; und der anfordernde Master hat versucht, hinter das Ende des DCQ-Puffers zu lesen (last_word und q2pif_cyc_complete). Gates 2242, 2244, 2246, 2248, 2250, und 2252, ein Decodierer 2254 und Multiplexer 2256 und 2258 sind so angeordnet, um die Prefetch-Signale auf diese Art und Weise zu erzeugen.If the prefetch function is enabled for a device on the PCI bus, the prefetch logic may be used 2212 generate two types of prefetch signals for the device: a prefetch line signal (dcq_prefetch_line) and a prefetch multiple signal (dcq_prefetch_mul). The prefetch line signal is generated when the current PCI command from the requesting device is a memory read line command signal, and the prefetch multiple signal is then generated when the current PCI command arrives Memory read multiple signal. In either case, the appropriate prefetch signal is generated when the following conditions occur: the prefetch_set bit for the requesting PCI slot is set; a corresponding prefetch enable bit in the configuration registers is set (cfg2q_auto_prefetch_enable); the DRQ in the input chip is not full (! tc_dc_full); the DCQ buffer has room for the corresponding amount of prefetch data (_! dcq_no_prefetch_room); the current cycle hits the DCQ buffer; and the requesting master has tried to read past the end of the DCQ buffer (last_word and q2pif_cyc_complete). Gates 2242 . 2244 . 2246 . 2248 . 2250 , and 2252 , a decoder 2254 and multiplexers 2256 and 2258 are arranged to generate the prefetch signals in this manner.

Wenn die Prefetch-Logik 2212 ein Prefetch-Signal erzeugt, erzeugt sie ein entsprechendes Prefetch-Adressen-Signal (dcq_prefetch_addr[63:2]) durch Verknüpfen der oberen siebenundfünfzig Bits der Adresse, gespeichert in dem entsprechenden DCQ-Puffer (q0_addr[63:7] für Puffer Null, q1_addr[63:7] für Puffer Eins, usw.) mit den unteren fünf Bits des Ausgangs-Hinweiszeigers des Puffers (out_pinter_0[4:0], usw.). Ein Dual-Adressen-Zyklus Signal (dcq_prefetch_dac) zeigt an, ob die Prefetch-Transaktion ein Dual- oder Einzel-Adressen-Zyklus ist. Das dcq_prefetch_cycle Signal nimmt den Wert des Dual-Adressen-Bits, gespeichert in dem DCQ-Puffer (q0_dac, q1_dac, usw.), an. Für sowohl die Prefetch-Adressen- und Dual-Adressen-Zyklus-Signale wird der geeignete Wert von einem Multiplexer 2260 oder 2262 ausgegeben und durch das Drei-Bit-DCQ-Puffer-Zahl-Signal ausgewählt, anzeigend, welcher DCQ-Puffer durch die momentane Anforderung getroffen wurde.If the prefetch logic 2212 generating a prefetch signal, it generates a corresponding prefetch address signal (dcq_prefetch_addr [63: 2]) by concatenating the upper fifty-seven bits of the address stored in the corresponding DCQ buffer (q0_addr [63: 7] for buffer zero, q1_addr [63: 7] for buffer one, etc.) with the lower five bits of the output pointer of the buffer (out_pinter_0 [4: 0], etc.). A dual address cycle signal (dcq_prefetch_dac) indicates whether the prefetch transaction is a dual or single address cycle. The dcq_prefetch_cycle signal takes the value of the dual address bits stored in the DCQ buffer (q0_dac, q1_dac, etc.). For both the prefetch address and dual address cycle signals, the appropriate value is from a multiplexer 2260 or 2262 and selected by the three-bit DCQ buffer number signal, indicating which DCQ buffer was hit by the current request.

Wiederum unter Bezugnahme auf 66, besitzt jeder DCQ-Daten-Puffer verschiedene mögliche Zustände, wobei jeder davon durch einen Puffer-Zustand-Logik-Block 2264 in der DCQ bestimmt wird. Das Folgende sind die möglichen Puffer-Zustände.

  • 1. Leer (Empty). Verfügbar für eine Zuordnung. Ein Puffer ist leer (empty) nach einem Laden bzw. Hochfahren und nachdem er geleert ist.
  • 2. Complete. Der Puffer enthält Abschluss-Informationen für einen verzögerten Abschluss von einer realen, verzögerten Anforderung von einer Vorrichtung auf dem PCI-Bus (d. h. keine Prefetch-Anforderung). Die PCI-Vorrichtung hat noch nicht wieder verbunden und Daten von dem Puffer genommen. Die verzögerte Abschluss-Transaktion ist abgeschlossen.
  • 3. Prefetch. Der Puffer enthält Abschluss-Daten für eine Prefetch-Anforderung oder angeforderte Daten, die in dem Puffer belassen wurden, nachdem der anfordernde Master von dem Puffer getrennt ist. Alle Abschluss-Daten sind von dem Target angekommen.
  • 4. PartComplete. Der Puffer ist für Abschluss-Informationen für eine reale, verzögerte Anforderung reserviert und kann diese enthalten (d. h. keine Prefetch-Anforderung). Der Master hat noch nicht wieder verbunden und Daten von dem Puffer genommen, und nicht alle Abschluss-Informationen sind von dem Target angekommen.
  • 5. PartPrefetch. Der Puffer ist für Abschluss-Informationen für eine Prefetch-Anforderung reserviert oder enthält sie, oder der Puffer enthält angeforderte Daten, die in dem Puffer verblieben, nachdem der anfordernde Master von dem Puffer getrennt ist. Nicht alle Abschluss-Informationen sind von dem Target angekommen.
  • 6. Discard. Der Puffer wurde gelöscht, während er in dem PartPrefetch-Zustand war, allerdings sind die letzten Abschluss-Daten bis jetzt noch nicht von dem Target angekommen. Der Puffer wird in den Discard-Zustand versetzt, um zu verhindern, dass er verwendet wird, bis die Transaktion auf dem Target-Bus abgeschlossen ist und die letzten Daten ankommen.
Again with reference to 66 , each DCQ data buffer has various possible states, each of which is represented by a buffer state logic block 2264 determined in the DCQ. The following are the possible buffer states.
  • 1. Empty. Available for an assignment. A buffer is empty after a load and after it has been emptied.
  • 2. Complete. The buffer contains completion information for a delayed completion of a real, delayed request from a device on the PCI bus (ie, no prefetch request). The PCI device has not reconnected yet and has taken data from the buffer. The delayed closing transaction has been completed.
  • 3. Prefetch. The buffer contains completion data for a prefetch request or requested data left in the buffer after the requesting master is disconnected from the buffer. All completion data has arrived from the target.
  • 4. PartComplete. The buffer is reserved for completion information for a real, delayed request and may contain it (ie, no prefetch request). The master has not yet reconnected and taken data from the buffer, and not all completion information has arrived from the target.
  • 5. PartPrefetch. The buffer is reserved for or contains completion information for a prefetch request, or the buffer contains requested data remaining in the buffer after the requesting master is disconnected from the buffer. Not all completion information has arrived from the target.
  • 6. Discard. The buffer was cleared while in the PartPrefetch state, but the final completion data has not yet arrived from the target. The buffer is placed in the discard state to prevent it from being used until the transaction on the target bus is completed and the last data arrives.

Wenn die QPIF einen DCQ-Puffer für eine verzögerte Anforderungs-Transaktion anfordert, ordnet die Puffer-Zustand-Logik 2264 die Puffer in der folgenden Reihenfolge zu. Falls kein Puffer in dem Empty-Zustand oder dem Prefetch-Zustand vorliegt, muss der anfordernde Master erneut versucht werden.When the QPIF requests a DCQ buffer for a delayed request transaction, the buffer state logic maps 2264 add the buffers in the following order. If there is no buffer in the empty or prefetch state, the requesting master must be retried.

Figure 00440001
DCQ-Puffer-Zuordnung
Figure 00440001
DCQ buffer allocation

Wenn eine Vorrichtung auf dem PCI-Bus eine verzögerte Lese-Anforderung initiiert und ein DCQ-Abschluss-Puffer daneben eingestellt ist, ändert die Puffer-Zustand-Logik 2264 den Zustand des Puffers zu PartComplete. Falls die DCQ eine Prefetch-Lesung initiiert, wird der Puffer-Zustand zu PartPrefetch geändert. Wenn der letzte Teil von Abschluss-Daten ankommt, wird der Zustand des Puffers von PartComplete oder PartPrefetch zu Complete oder Prefetch jeweils hin geändert. Wenn die anfordernde Vorrichtung wieder eine neu versuchte Lese-Anforderung zuführt und den Puffer trifft, werden irgendwelche gültigen Abschluss-Daten zu dem Master hin gegeben, falls sich der Puffer in dem Complete, Prefetch, PartComplete oder PartPrefetch-Zustand befindet.When a device on the PCI bus initiates a delayed read request and a DCQ completion buffer is set next to it, the buffer state logic changes 2264 the state of the buffer to PartComplete. If the DCQ initiates a prefetch read, the buffer state changes to PartPrefetch. When the last part of completion data arrives, the state of the buffer changes from PartComplete or PartPrefetch to Complete or Prefetch respectively. If the requesting device again provides a retry read request and hits the buffer, any valid completion data is given to the master if the buffer is in the Complete, Prefetch, PartComplete or PartPrefetch state.

Wenn der Master nicht alle die Daten vor einer Unterbrechung nimmt, wird der Zustand des Puffers zu Prefetch oder PartPrefetch hin geändert, um anzuzeigen, dass nicht beanspruchte Daten dahingehend angesehen werden, dass sie Prefetch-Daten sind. Falls der Master den letzten Teil von Daten heranzieht, wenn sich der Puffer in dem Complete oder Prefetch-Zustand befindet, wird der Zustand des Puffers zu Empty hin geändert.If the master does not take all the data before an interruption will the state of the buffer changed to Prefetch or PartPrefetch to indicate that unclaimed data is viewed as such be that they are prefetch data. If the master is the last Part of data when the buffer in the Complete or prefetch state, the state of the buffer becomes too high Empty changed.

Falls ein Lösch-Signal empfangen wird, während sich ein Puffer in dem Prefetch-Zustand befindet, werden die Prefetch-Daten in dem Puffer ausgesondert und der Puffer-Zustand wird zu Empty hin geändert. Falls ein Lösch-Ereignis auftritt, während sich der Puffer in dem PartPrefetch-Zustand befindet und Abschluss-Daten noch ankommen, wird der Puffer zu dem Discard-Zustand geändert, bis alle Prefetch-Daten ankommen. Wenn die Transaktion abgeschlossen ist, werden die Prefetch-Daten ausgesondert und der Puffer-Zustand wird zu Empty hin geändert. Falls sich der Puffer in dem Complete oder Part-Complete-Zustand befindet, wenn ein Lösch-Signal empfangen wird, werden die Abschluss-Daten in dem Puffer belassen und der Puffer-Zustand verbleibt ungeändert. Falls das Lösch-Signal auftritt, da die entsprechende PCI-Vorrichtung eine neue Anforderung ausgegeben hat, d. h. eine Anforderung, die nicht momentan in die Warteschlange gestellt ist, und die alle die Abschluss-Puffer „verfehlt"), wie dies nachfolgend diskutiert worden ist ordnet die DCQ einen neuen Puffer für die Transaktion zu, wie dies vorstehend diskutiert ist. Deshalb kann eine PCI-Vorrichtung mehr als einen Abschluss-Puffer zugeordnet haben. Mehrfach-Puffer können zu einer PCI-Vorrichtung zugeordnet werden, wenn die Vorrichtung einen Puffer besitzt, der Abschluss-Daten enthält oder erwartet (d. h. der Puffer befindet sich in dem Complete oder PartComplete-Zustand) und die Vorrichtung eine neue Anforderung ausgibt. Da Multi-Threaded-Vorrichtungen die einzigen Vorrichtungen sind, die mehrere Transaktionen auf einmal beibehalten können, können nur Multi-Threaded-Vorrichtungen Mehrfach-Abschluss-Puffer gleichzeitig reserviert haben.If a clear signal is received while a buffer is in the prefetch state, the prefetch data in the buffer is discarded and the buffer state is changed to Empty. If a clear event occurs while the buffer is in the PartPrefetch state and completion data is still arriving, the buffer is changed to the discard state until all prefetch data arrives. When the transaction is completed, the prefetch data is discarded and the buffer state is changed to Empty. If the buffer is in the complete or part-complete state, when a clear signal is received, the completion data is left in the buffer and the buffer state remains unchanged. If the clear signal occurs because the corresponding PCI device has issued a new request, ie, a request that is not currently queued, and all of which "miss" the completion buffer), as discussed below As discussed above, the DCQ allocates a new buffer for the transaction Therefore, a PCI device may have more than one terminating buffer allocated to it when the device has a buffer that contains or expects completion data (ie, the buffer is in the Complete or PartComplete state) and the device issues a new request. Because multi-threaded devices are the only devices that can maintain multiple transactions at once, only multi-threaded devices can have multiple-completion buffers reserved at the same time.

MASTER-ZYKLUS-ARBITRIERERMASTER CYCLE ARBITER

Der Master-Zyklus-Arbitrierer (Master Cycle Arbiter – MCA) bestimmt die Ausführungs-Reihenfolge von geposteten Speicher-Schreib- und verzögerten Anforderungs-Transaktionen, während die Reihenfolgen-Einschränkungen zwischen geposteten Speicher-Schreib-, verzögerten Anforderungs- und verzögerten Abschluss-Zyklen beibehalten werden, angegeben in PCI Spec. 2.1. Entsprechend der PCI Spec 2.1 muss der MCA garantieren, dass ausgeführte Zyklen eine starke Schreib-Reihenfolge beibehalten und dass keine Deadlocks auftreten. Um sicherzustellen, dass keine Deadlocks auftreten werden, muss geposteten Speicher-Schreib-Zyklen ermöglicht werden, früher in die Warteschlage gestellte, verzögerte Anforderungs-Zyklen zu passieren, und die geforderten Reihenfolgen-Einschränkungen beizubehalten, wobei verzögerten Anforderungs-Zyklen und verzögerten Abschluss-Zyklen niemals erlaubt werden muss, früher in die Warteschlange gestellte, gepostete Speicher-Schreib-Zyklen zu passieren.Of the Master Cycle Arbiter (MCA) determines the execution order of posted memory write and delayed request transactions while the Order constraints between posted memory write, delayed request and delayed completion cycles retained in PCI Spec. 2.1. According to the PCI Spec 2.1 must guarantee the MCA that executed cycles maintain a strong write order and that no deadlocks occur. To make sure that no deadlocks will occur, posted memory write cycles must be enabled earlier in the Queue asked, delayed To pass requirement cycles, and the required order constraints to be maintained, being delayed Request cycles and delayed Completion cycles must never be allowed to queued earlier, to pass posted memory write cycles.

Unter Bezugnahme wiederum auf 70 verwendet der MCA zwei Transaktions-Warteschlangen, eine Transaktions-Lauf-Warteschlange (Transaction Run Queue – TRQ) oder (Transaktions-Ausführungs-Warteschlangen) 2270 und eine Transaktions-Reihenfolge-Warteschlange (Transaction Order Queue – TOQ) 2272, um Zyklen, in die PMWQ, die DRQ und die DCQ warteschlangenmäßig gestellt, zu verwalten. Ein MCA-Steuerblock 2274 nimmt Transaktionen von der PMWQ, DRQ und DCQ in der Form von Vier-Bit-Gültigkeits-Anforderungs-Signalen (pmwq_valid[3:0], drq_valid[3:0] und dcq_valid[3:0]) auf und gibt Lauf-Befehle in der Form von Vier-Bit-Lauf-Signalen (mca_run_pmwq[3:0], mca_run_drq_[3:0] und mca_run_dcq_[3:0]) aus. Die Transaktionen werden in die TRQ 2270 und die TOQ 2272 durch einen TRQ-Steuerblock 2276 und einen TOQ-Steuerblock 2278 jeweils hinein- und herausbewegt.Referring again to 70 the MCA uses two transaction queues, a transaction run queue (TRQ) or (transaction execution queues) 2270 and a Transaction Order Queue (TOQ) 2272 to manage cycles queued to the PMWQ, the DRQ, and the DCQ. An MCA control block 2274 picks up transactions from the PMWQ, DRQ and DCQ in the form of four-bit valid request signals (pmwq_valid [3: 0], drq_valid [3: 0] and dcq_valid [3: 0]) and issues run instructions in the form of four-bit-run signals (mca_run_pmwq [3: 0], mca_run_drq_ [3: 0] and mca_run_dcq_ [3: 0]). The transactions are in the TRQ 2270 and the TOQ 2272 through a TRQ control block 2276 and a TOQ control block 2278 each moved in and out.

Unter Bezugnahme auch auf 71 ist die TRQ 2270 die Warteschlange, von der der MCA die Transaktions-Ausführungs-Reihenfolge bestimmt. Transaktionen in der TRQ 2270 können in irgendeiner Reihenfolge ausgeführt werden, ohne die Transaktions-Reihenfolge-Regeln zu verletzten, allerdings kann, wenn einmal ein geposteter Speicher-Schreib-Zyklus in der TRQ 2270 platziert ist, kein anderer Zyklus in die TRQ 2270 platziert werden, bis das gepostete Speicher-Schreiben entfernt ist. Transaktionen in der TRQ 270 werden in zirkularer Reihenfolge versucht und sind allgemein in der Reihenfolge, in der sie empfangen wurden, abgeschlossen. Allerdings kann, falls eine Transaktion in der TRQ 2270 auf dem PCI-Bus versucht wird, der MCA die nächste Transaktion in der TRQ 2270 auswählen, die auf dem PCI-Bus versucht werden soll. Da verzögerte Abschluss-Transaktionen Slave-Zyklen, im Gegensatz zu Master-Zyklen, sind, werden sie niemals in der TRQ 2270 platziert. Weiterhin werden, da verzögerte Abschluss-Informationen zu der anfordernden Vorrichtung verfügbar gemacht werden können, sobald sie in die DCQ eintreten, falls keine geposteten Speicher-Schreib-Zyklen in der PMWQ anhängig sind, verzögerte Abschluss-Transaktionen in der TOQ 2272 nur dann platziert, wenn ein geposteter Speicher-Schreib-Zyklus in der TRQ 2270 anhängig ist, wie dies in weiterem Detail nachfolgend diskutiert ist.With reference also to 71 is the TRQ 2270 the queue from which the MCA determines the transaction execution order. Transactions in the TRQ 2270 can be executed in any order without violating the transaction order rules, however, once a posted memory write cycle in the TRQ 2270 is placed, no other cycle in the TRQ 2270 be placed until the posted memory write is removed. Transactions in the TRQ 270 are attempted in a circular order and are generally completed in the order in which they were received. However, if a transaction in the TRQ 2270 on the PCI bus, the MCA tries the next transaction in the TRQ 2270 which should be attempted on the PCI bus. Since deferred completion transactions are slave cycles, as opposed to master cycles, they never become in the TRQ 2270 placed. Furthermore, since delayed completion information can be made available to the requesting device as soon as it enters the DCQ, if no posted memory write cycles are pending in the PMWQ, delayed completion transactions in the TOQ will be delayed 2272 placed only when a posted memory write cycle in the TRQ 2270 is pending, as discussed in more detail below.

Die TRQ 2270 ist eine zirkulare Warteschlange, die bis zu vier Transaktionen auf einmal hält. Da die MCA immer in der Lage sein muss, mindestens eine gepostete Speicher-Schreib-Transaktion laufen zu lassen, um die erforderlichen Reihenfolgen-Beschränkungen zu wahren, kann die TRQ 2270 niemals mehr als drei verzögerte Anforderungs-Transaktionen auf einmal halten. Weiterhin kann die TRQ nur eine gepostete Schreib-Transaktion zu einem Zeitpunkt halten, da gepostete Schreibvorgänge nicht durch irgendeine später initiierte Transaktion, umfassend andere gepostete Schreibvorgänge, hindurchgeführt werden können. Jeder Schlitz 2280ad in der TRQ 2270 enthält drei Bits an Informationen: ein Ein-Bit-Zyklus-Typ-Indikator 2282 („1" gleich für gepostete Speicher-Schreib-Transaktionen und „0" gleich für verzögerte Anforderungs-Transaktionen), und einen Zwei-Bit-Gültigkeits-Hinweiszeiger 2284, wobei die vier möglichen Werte davon identifizieren, welche der Puffer in der PMWQ oder der DRQ die in die Warteschlangen gestellten Transaktionen belegen. Die TRQ 2270 umfasst auch einen Eingabe/Ausgabe-Freigabe-Block 2286, der bestimmt, wann eine Transaktion in die TRQ 2270 hinein oder aus dieser heraus bewegt werden kann, einen Eingangs-Logik-Block 2288, der die Platzierung einer Transaktion in die TRQ 2270 hinein steuert, und einen Ausgangs-Logik-Block 2290, der eine Entfernung einer Transaktion von der TRQ 2270 steuert. Diese Logik-Blöcke enthalten eine standardmäßige Warteschlangen-Management-Schaltung.The TRQ 2270 is a circular queue that holds up to four transactions at once. Since the MCA must always be able to run at least one posted memory write transaction to maintain the required order constraints, the TRQ 2270 never hold more than three delayed request transactions at once. Furthermore, the TRQ can only hold one posted write transaction at a time because posted writes can not be passed through any later initiated transaction involving other posted writes. Every slot 2280a - d in the TRQ 2270 contains three bits of information: a one-bit cycle type indicator 2282 ("1" equal for posted memory write transactions and "0" equal for delayed request transactions), and a two bit validity pointer 2284 The four possible values of which identify which of the buffers in the PMWQ or the DRQ occupy the queued transactions. The TRQ 2270 also includes an input / output enable block 2286 That determines when a transaction enters the TRQ 2270 into or out of it, an input logic block 2288 who is placing a transaction in the TRQ 2270 into it, and an output logic block 2290 , which is a removal of a transaction from the TRQ 2270 controls. These logic blocks contain a standard queue management circuit.

Ein zirkularer Eingangs-Hinweiszeiger 2292 wählt den nächsten, verfügbaren Schlitz bzw. Einsteckplatz zur Platzierung einer ankommenden Transaktion aus. Der Eingangs-Hinweiszeiger ist zirkular, um so umfangreich wie möglich eine historische Reihenfolge der ankommenden Transaktionen beizubehalten.A circular input pointer 2292 selects the next available slot to place an incoming transaction. The input pointer is circular to maintain as much historical order as possible of the incoming transactions.

Ein zirkularer Ausgangs-Hinweiszeiger 2294 arbitriert zwischen den Transaktionen in der TRQ 2270 und bestimmt deren Reihenfolge einer Ausführung. Der Ausgangs-Hinweiszeiger 2294 beginnt immer mit dem oberen Schlitz 2286a in der TRQ 2270 beim Startup und schreitet zirkular durch die TRQ 2270 hindurch. Der Ausgangs-Hinweiszeiger 2294 kann konfiguriert sein, um in entweder einem infiniten Retry- oder einem Null-Retry-Mode zu arbeiten, durch Einstellen oder Löschen, jeweils, eines infiniten Retry-Bits in den Konfigurations-Registern (cfg2q_infretry). In einem infiniten Retry-Mode verbleibt der Ausgangs-Hinweiszeiger 2294 auf einer Transaktion, bis die Transaktion erfolgreich auf dem PCI-Bus läuft. In einem Null-Retry-Mode wird der Ausgangs-Hinweiszeiger 2294 zu jedem Zeitpunkt erhöht, zu dem eine Transaktion auf dem Bus versucht wird (d. h. q2pif_cyc_complete war dem vorherigen PCI-Takt-Zyklus aufgestellt), ungeachtet davon, ob die Transaktion erfolgreich abschließt oder erneut versucht wird. Da die PCI Spec 2.1 vorschreibt, dass gepostete Speicher-Schreib-Transaktionen dahingehend zugelassen werden, im Bypass an verzögerten Anforderungs-Transaktionen vorbeizuführen, muss der Ausgangs-Hinweiszeiger 2294 in mindestens einem der Brücken-Chips so konfiguriert werden, um in einem Null-Retry-Mode zu arbeiten. Hierbei ist der ausgangsseitige Chip immer so konfiguriert, um in einem Null-Retry-Mode zu arbeiten. Alternativ kann der Ausgangs-Hinweiszeiger so konfiguriert sein, um in einem finiten Retry-Mode zu arbeiten, indem jede Transaktion auf dem PCI-Bus eine vorbestimmte Anzahl (z. B. drei) von Malen versucht werden kann, bevor sich der Ausgangs-Hinweiszeiger erhöht. Sowohl der eingangsseitige als auch der ausgangsseitige Chip können so konfiguriert sein, um in einem finiten Retry-Mode zu arbeiten, mit einem Verletzen der Reihenfolgen-Beschränkungen der PCI Spec 2.1. In jedem Fall versucht der Ausgangs-Hinweiszeiger, die historische Reihenfolge von Transaktionen, gespeichert in der TRQ 2270, beizubehalten, was sich nur dann erhöht, wenn eine Transaktion nicht erfolgreich auf dem Target-PCI-Bus abgeschlossen werden kann.A circular output pointer 2294 arbitrates between the transactions in the TRQ 2270 and determines their order of execution. The output pointer 2294 always starts with the top slot 2286a in the TRQ 2270 at startup and progressing circularly through the TRQ 2270 therethrough. The output pointer 2294 may be configured to operate in either an infinite retry or zero retry mode by setting or clearing, respectively, an infinite retry bit in the configuration registers (cfg2q_infretry). In an infinite retry mode, the output pointer remains 2294 on a transaction until the transaction successfully runs on the PCI bus. In a zero retry mode, the output pointer becomes 2294 at any time a transaction is attempted on the bus (ie, q2pif_cyc_complete was asserted on the previous PCI clock cycle), regardless of whether the transaction succeeds or is retried. Since PCI Spec 2.1 requires that posted memory write transactions be allowed to bypass delayed request transactions, the output pointer must 2294 in at least one of the bridge chips to be configured to operate in a zero retry mode. Here, the output side chip is always configured to operate in a zero retry mode. Alternatively, the output pointer may be configured to operate in a finite retry mode by allowing each transaction on the PCI bus to be retried a predetermined number (e.g., three) times before the output pointer elevated. Both the upstream and the downstream chip can be configured to operate in a finite retry mode, violating the PCI Spec. 2.1 ordering constraints. In any case, the output pointer will try the historical order of transactions stored in the TRQ 2270 , which only increases if a transaction can not be completed successfully on the target PCI bus.

Wenn ein geposteter Speicher-Schreib- oder verzögerter Anforderungs-Zyklus aus der TOQ 2272 ausgesondert ist (new_toq_cycle wird aufgestellt), wie dies nachfolgend diskutiert ist, oder wenn die TOQ 2272 nicht freigegeben ist (!toq_enabled) und ein neuer Zyklus durch die MCA empfangen wird (new_valid_set), werden das Zyklus-Typ-Bit und die Gültigkeits-Bits für den neuen Zyklus in den nächsten, leeren Schlitz in die TRQ eingeladen. Falls der Zyklus von der TOQ 2272 kommt, werden die gültigen Bits und das Zyklus-Typ-Bit durch die TOQ als gültig geliefert und Zyklus-Typ-Signale (toq_valid[1:0] und toq_cyctype[0]) jeweils. Ansonsten werden die neuen Zyklus-Informationen durch die MCA als gültige und Zyklus-Typ-Signale (d_valido[1:0] und d_cyctype[0]) geliefert. Gates 2296 und 2298 und Multiplexer 2300 und 2302 sind angeordnet, um die Auswahl von Zyklen zu steuern, die in die TRQ 2270 hineingeladen werden sollen. Wenn ein Zyklus erfolgreich auf dem PCI-Bus läuft, wird der Zyklus von der Transaktions-Reihenfolge-Warteschlange entfernt und sein Zyklus-Typ-Bit und Gültigkeits-Bits werden zu dem MCA-Steuer-Block 2274 als TRQ-Zyklus-Typ und Gültigkeits-Signale (trq_cyctype[0]) und trq_valido[1:0]) jeweils geliefert.If a posted memory write or delayed request cycle is from the TOQ 2272 is discarded (new_toq_cycle is set up), as discussed below, or if the TOQ 2272 is not enabled (! toq_enabled) and a new cycle is received by the MCA (new_valid_set), the cycle type bit and the validity bits for the new cycle are loaded into the next empty slot in the TRQ. If the cycle from the TOQ 2272 comes, the valid bits and the cycle type bit are supplied by the TOQ as valid and cycle type signals (toq_valid [1: 0] and toq_cyctype [0]) respectively. Otherwise, the new cycle information is provided by the MCA as valid and cycle type signals (d_valido [1: 0] and d_cyctype [0]). Gates 2296 and 2298 and multiplexers 2300 and 2302 are arranged to control the selection of cycles in the TRQ 2270 to be loaded. When a cycle successfully runs on the PCI bus, the cycle is removed from the transaction order queue and its cycle type bit and validity bits become the MCA control block 2274 as TRQ cycle type and validity signals (trq_cyctype [0]) and trq_valido [1: 0]), respectively.

Der TRQ-Steuer-Block 2276 erzeugt ein trq_pmw Signal, das anzeigt, wenn eine gepostete Speicher-Schreib-Transaktion in die TRQ 2270 warteschlangenmäßig gestellt wird. Wenn dieses Signal aufgestellt ist, müssen darauffolgend ausgegebene, verzögerte Anforderungs- und verzögerte Abschluss-Transaktionen in die TOQ 2272 in die Warteschlange gestellt werden, wie dies nachfolgend diskutiert ist. Das trq_pmw Signal wird dann aufgestellt, wenn der MCA-Steuer-Block 2274 die TRQ 2270 instruiert hat, einen neuen, geposteten Speicher-Schreib-Zyklus (trq_slot_valid_set entspricht nicht „0000" und d_trq_cyctype entspricht „1") in die Warteschlange zu stellen, oder, alternativ, wenn irgendeiner der TRQ-Schlitze 2280ad einen Zyklus (trq_slot_valid[3:0] entspricht nicht „0000"), ist mindestens einer der Zyklen ein geposteter Speicher-Schreib-Zyklus (trq_cyctype entspricht „1") und der gepostete Speicher-Schreib-Zyklus ist nicht von dem entsprechenden Schlitz 2280ad gelöscht worden (!trq_slot_valid_rst[3:0]). Gates 2304, 2306, 2308, 2310, und 2312 sind so angeordnet, um das trq_pmw Signal in dieser Art und Weise zu erzeugen.The TRQ control block 2276 generates a trq_pmw signal indicating when a posted memory write transaction is in the TRQ 2270 queued. When this signal is asserted, subsequently issued, delayed request and delayed completion transactions must be entered into the TOQ 2272 be queued, as discussed below. The trq_pmw signal is then asserted when the MCA control block 2274 the TRQ 2270 has been instructed to queue a new posted memory write cycle (trq_slot_valid_set does not correspond to "0000" and d_trq_cyctype corresponds to "1"), or alternatively, if any of the TRQ slots 2280a - d one cycle (trq_slot_valid [3: 0] does not correspond to "0000"), at least one of the cycles is a posted memory write cycle (trq_cyctype corresponds to "1") and the posted memory write cycle is not from the corresponding slot 2280a - d deleted (! trq_slot_valid_rst [3: 0]). Gates 2304 . 2306 . 2308 . 2310 , and 2312 are arranged to generate the trq_pmw signal in this manner.

Wie nun die 72 zeigt, ist die TOQ 2272 eine First-In-First-Out (FIFO) Warteschlange, die die historische Reihenfolge von Transaktionen enthält, empfangen durch die Brücke, nachdem eine gepostete Speicher-Schreib-Transaktion in der TRQ 2270 platziert ist. Da alle Transaktionen auf früher ausgegebene, gepostete Speicher-Schreibvorgänge warten müssen, damit diese laufen, werden alle Transaktionen, umfassend gepostete Speicher-Schreib-, verzögerte Anforderungs- und verzögerte Abschluss-Transaktionen, in der TOQ 2270 platziert, wenn ein gepostetes Speicher-Schreiben in die TRQ 2270 warteschlangenmäßig gestellt ist. Transaktionen in der TOQ 2272 müssen in der TOQ 2272 verbleiben, bis die gepostete Speicher-Schreib-Transaktion von der TRQ 2270 entfernt ist.Like now the 72 shows is the TOQ 2272 a first-in-first-out (FIFO) queue containing the historical order of transactions received by the bridge after a posted memory write transaction in the TRQ 2270 is placed. Because all transactions must wait for previously issued, posted memory writes to run, all transactions involving posted memory write, delayed request, and delayed completion transactions in the TOQ 2270 placed when posting a memory write to the TRQ 2270 Queue is set. Transactions in the TOQ 2272 need in the TOQ 2272 remain until the posted memory write transaction from the TRQ 2270 is removed.

Die TOQ 2270, die acht Schlitze 2314ah hat, kann bis zu drei gepostete Speicher-Schreib-Transaktionen (die vierte wird in der TRQ 2270 gespeichert werden), drei verzögerte Anforderungs-Transaktionen und vier verzögerte Abschluss-Transaktionen halten. Jeder der Schlitze 2314ah in der TOQ 2272 enthält zwei Zyklus-Typ-Bits 2316, die die entsprechende Transaktion („01" ist ein gepostetes Speicher-Schreiben, „00" ist eine verzögerte Anforderung, und „1x" ist ein verzögerter Abschluss) identifizieren, und zwei Gültigkeits-Bits 2318, die identifizieren, welcher der Puffer in der PMWQ, DRQ und DCQ die entsprechende Transaktion belegt. Die TOQ 2272 umfasst auch Standard-Eingabe- und Ausgabe-Logik-Blöcke 2320 und 2322, die die Bewegung von Transaktionen in die TOQ 2272 hinein und aus dieser heraus steuern.The TOQ 2270 , the eight slots 2314a - H has up to three posted memory write transactions (the fourth being in the TRQ 2270 stored), three delayed request transactions, and four delayed completion transactions. Each of the slots 2314a - H in the TOQ 2272 contains two cycle type bits 2316 identifying the corresponding transaction ("01" is a posted memory write, "00" is a delayed request, and "1x" is a delayed completion), and two validity bits 2318 that identify which of the buffers in the PMWQ, DRQ, and DCQ occupy the corresponding transaction. The TOQ 2272 also includes standard input and output logic blocks 2320 and 2322 that the movement of transactions into the TOQ 2272 in and out of this.

Die Positionen, an denen Transaktionen in die TOQ 2272 hinein platziert und von dieser entfernt werden, werden durch einen Drei-Bit-Eingangs-Zähler 2326 (inputr[2:0]) und einen Drei-Bit-Ausgangszähler 2324 (outputr[2:0]) jeweils bestimmt. Beide Zähler beginnen an dem ersten Schlitz 2314a in der TOQ 2272 und erhöhen sich durch die Warteschlange hindurch, wenn Transaktionen in die Warteschlange eingegeben und von dieser entfernt werden. Der Eingangs-Zähler 2326 erhöht sich an der ansteigenden Flanke jedes PCI-Takt-Zyklus, wo die TOQ 2272 freigegeben wird (toq_enabled wird aufgestellt), und der MCA-Steuer-Block 2274 liefert einen neuen Zyklus zu der TOQ 2272 (new_valid_set wird aufgestellt). Die Gültigkeits-Bits und die Zyklus-Typ-Bits für jeden neuen Zyklus werden durch den MCA als gültig und die Zyklus-Typ-Signale (d_valido[1:0] und d_cyctype[1:0]) geliefert. Der Ausgangs-Zähler 2324 erhöht sich an der ansteigenden Flanke jedes PCI-Takt-Zyklus, an dem der MCA-Steuerblock 2274 die TOQ 2272 instruiert, zu dem nächsten Zyklus (next_toq_cycle wird aufgestellt) zu gehen, und die TOQ 2272 ist nicht leer: d. h. inputr[2:0] entspricht nicht outputr[2:0]). Zyklen, die in der TOQ 2272 existieren, werden durch die TOQ-Gültigkeits- und cycletype Signale (toq_valido[1:0] und toq_cyctypeo[1:0]) dargestellt. Gates 2328 und 2330 und ein Komparator 2332 sind so angeordnet, um geeignet den Eingangs-Hinweiszeiger 2326 und den Ausgangs-Hinweiszeiger 2324 zu takten.The positions involving transactions in the TOQ 2272 are placed in and removed from this by a three-bit input counter 2326 (inputr [2: 0]) and a three-bit output counter 2324 (outputr [2: 0]) each determined. Both counters begin at the first slot 2314a in the TOQ 2272 and increment through the queue as transactions are queued and removed. The input counter 2326 increases at the rising edge of each PCI clock cycle where the TOQ 2272 is released (toq_enabled is set up), and the MCA control block 2274 returns a new cycle to the TOQ 2272 (new_valid_set is set up). The validity bits and the cycle type bits for each new cycle are provided by the MCA as valid and the cycle type signals (d_valido [1: 0] and d_cyctype [1: 0]). The output counter 2324 increases at the rising edge of each PCI clock cycle at which the MCA control block 2274 the TOQ 2272 instructed to go to the next cycle (next_toq_cycle will be set up) and the TOQ 2272 is not empty: ie inputr [2: 0] does not match outputr [2: 0]). Cycles in the TOQ 2272 exist are represented by the TOQ validity and cycletype signals (toq_valido [1: 0] and toq_cyctypeo [1: 0]). Gates 2328 and 2330 and a comparator 2332 are arranged to suit the input pointer 2326 and the output pointer 2324 to clock.

Wenn eine verzögerte Anforderungs-Transaktion oder eine gepostete Speicher-Schreib-Transaktion aus der TOQ 2272 ausgesondert ist, wird die Transaktion in die TRQ 2270 platziert, um auf eine Arbitrierung zu warten. Da allerdings verzögerte Abschluss-Transaktionen Target-Transaktionen sind und keine Master-Transaktionen, werden verzögerte Abschlüsse nicht in die TRQ 2270 platziert. Anstelle davon werden verzögerte Abschlüsse einfach aus der TRQ 2272 ausgesondert und dazu verwendet, die entsprechenden Daten in den DCQ-Daten-Puffern für gültig zu erklären. Allerdings müssen, solange wie eine gepostete Speicher-Schreib-Transaktion in der TRQ 2270 warteschlangenmäßig hineingestellt ist, alle verzögerten Abschlüsse in die TOQ 2272 platziert werden, sogar dann, wenn zwei oder mehr verzögerte Abschlüsse derselben, verzögerten Anforderung entsprechen, und deshalb denselben, verzögerten Abschluss-Puffer, wie dies vorstehend beschrieben ist.If a delayed request transaction or a posted memory write transaction from the TOQ 2272 is singled out, the transaction is in the TRQ 2270 placed to wait for arbitration. However, because delayed deal transactions are target transactions rather than master transactions, delayed deals are not included in the TRQ 2270 placed. Instead, delayed trades simply get out of the TRQ 2272 Screened out and used to validate the corresponding data in the DCQ data buffers. However, as long as a posted memory write transaction must be in the TRQ 2270 queued, all delayed terminations into the TOQ 2272 even if two or more delayed terminations thereof correspond to the delayed request, and therefore the same delayed completion buffer as described above.

Wie die 73A bis 73D zeigen, steuert der MCA-Steuerblock 2274 den Fluss von Transaktionen über den MCA. Wie vorstehend diskutiert ist, wird die PMWQ, DRQ und DCQ Anforderungs-Gültigkeit von Transaktionen in den Warteschlangen durch Vorsehen von Vier-Bit-Gültigkeits-Signalen pmwq_valid[3:0], drq_valid[3:0] und dcq_valid[3:0] jeweils, zu dem MCA, gehalten. Unter diesen Signalen kann sich nur ein Bit während jedes Takt-Impulses ändern, da nur eine einzelne, neue Transaktion in den Warteschlangen-Block bei jedem Taktimpuls platziert werden kann. Deshalb identifiziert der MCA-Steuer-Block neue Gültigkeits-Anforderungen durch Überwachen der sich ändernden Bits in den pmwq_valid, drq_valid und dcq_valid Signalen. Um dies zu vorzunehmen, verriegelt der MCA-Steuer-Block jedes Signal und invertiert es an der ansteigenden Flanke jedes PCI-Takts, um ein verzögertes, invertiertes Signal zu erzeugen, und vergleicht das verzögerte, invertierte Signal mit dem momentanen Signal (d. h. dem Signal an dem nächsten Taktimpuls). Da nur ein neu geändertes Bit denselben Wert wie sein verzögertes und invertiertes Gegenstück haben wird, ist der MCA-Steuer-Block in der Lage, zu erfassen, welches Bit geändert ist. Unter Verwendung von Flip-Flops 2340, 2342 und 2344 und Gates 2346, 2348 und 2350, erzeugt die MCA-Steuereinheit new_pmwq_valid[3:0], new_drq_valid[3:0] und new_dcq_valid[3:0] Signale, die, bei jedem Taktimpuls, zusammen identifizieren, ob die DMWQ, DRQ oder DCQ, falls irgendeine vorhanden ist, irgendeine neue Transaktion für eine Validitierung lieferte und welcher Puffer in der entsprechenden Warteschlange die neue Transaktion enthält. Wie auch 74 zeigt, verwendet der MCA-Steuer-Block eine Durchsichts-Tabelle 2352, um die zwölf Bits der new_pmwq_valid, new_drq_valid und new_dcq_valid Signale in die Zwei-Bit d_valid[1:0] und d_cyctype[1:0] Signale, geliefert zu der TRQ und der TOQ, wie dies vorstehend diskutiert ist, umzuwandeln.As the 73A to 73D show, the MCA control block controls 2274 the flow of transactions through the MCA. As discussed above, the PMWQ, DRQ and DCQ request validity of transactions in the queues by providing four-bit validity signals pmwq_valid [3: 0], drq_valid [3: 0] and dcq_valid [3: 0] each to the MCA. Among these signals, only one bit can change during each clock pulse since only a single, new transaction can be placed in the queue block at each clock pulse. Therefore, the MCA control block identifies new validity requests by monitoring the changing bits in the pmwq_valid, drq_valid, and dcq_valid signals. To do this, the MCA control block latches each signal and inverts it on the rising edge of each PCI clock to produce a delayed, inverted signal and compares the delayed inverted signal to the current signal (ie the signal at the next clock pulse). Since only a newly changed bit will have the same value as its delayed and inverted counterpart, the MCA control block is able to detect which bit has changed. Using flip-flops 2340 . 2342 and 2344 and gates 2346 . 2348 and 2350 , the MCA controller generates new_pmwq_valid [3: 0], new_drq_valid [3: 0] and new_dcq_valid [3: 0] signals that together identify, at each clock pulse, whether the DMWQ, DRQ or DCQ, if any, provided any new transaction for validation and which buffer in the corresponding queue contains the new transaction. As well as 74 shows, the MCA control block uses a look-up table 2352 to convert the twelve bits of the new_pmwq_valid, new_drq_valid, and new_dcq_valid signals to the two bit d_valid [1: 0] and d_cyctype [1: 0] signals supplied to the TRQ and the TOQ, as discussed above.

Die MCA-Steuereinheit gibt die TOQ durch Verriegeln des toq_enabled Signals auf einen Wert von „1" frei, wenn entweder das trq_pmw aufgestellt ist, was anzeigt, dass ein geposteter Speicher-Schreib-Zyklus in der TRQ in die Warteschlange gestellt ist, oder wenn das toq_enable Signal bereits aufgestellt ist und die TOQ nicht leer ist (!toq_empty). Gates 2354 und 2356 und ein Flip-Flop 2358 sind so angeordnet, um toq_enabled auf diese Art und Weise zu erzeugen.The MCA controller releases the TOQ by latching the toq_enabled signal to a value of "1" when either the trq_pmw is asserted, indicating that a posted memory write cycle is queued in the TRQ, or if the toq_enable signal is already set up and the TOQ is not empty (! toq_empty). Gates 2354 and 2356 and a flip-flop 2358 are arranged to generate toq_enabled in this way.

Der MCA-Steuerblock stellt das new_toq_cycle Signal auf, das die TRQ instruiert, den Zyklus in die Warteschlange zu stellen, der von der TOP ausgesondert ist, wenn dort nicht ein geposteter Speicher-Schreib-Zyklus in TRQ während des vorherigen Takt-Zyklus (!s1_trq_pmw) vorhanden war, wenn die TOQ nicht leer ist (!toq_empty), und wenn der Zyklus, der von der TOQ ausgesondert werden soll, nicht eine verzögerte Abschluss-Transaktion ist (!(toq_cyctypeo[1] = „DC")). Die MCA-Steuereinheit verwendet ein Gate 2360, um das new_toq_cycle Signal zu erzeugen.The MCA control block sets the new_toq_cycle signal instructing the TRQ to queue the cycle discarded from the TOP if there is not a posted memory write cycle in TRQ during the previous clock cycle (! s1_trq_pmw) was present if the TOQ is not empty (! toq_empty) and if the cycle to be discarded by the TOQ is not a delayed completion transaction (! (toq_cyctypeo [1] = "DC")). The MCA control unit uses a gate 2360 to generate the new_toq_cycle signal.

Das next_toq_cycle Signal, das verwendet wird, um den TOQ-Ausgangs-Zähler auf den nächsten Zyklus in der TOQ zu erhöhen, wird aufgestellt, wenn die TOQ nicht leer ist (!toq_empty) und entweder wenn keine geposteten Speicher-Schreib-Zyklen momentan in der TRQ in die Warteschlange gestellt sind (!trq_pmw) und der nächste Zyklus in der TOQ ein verzögerter Abschluss ist (toq_cyctype[1] = „DC"), oder wenn der nächste TOQ-Zyklus ein gepostetes Speicher-Schreiben oder eine verzögerte Anforderungs-Transaktion ist (!(toq_cyctype[1] = „DC")) und dabei keine geposteten Speicher-Schreib-Transaktionen während des vorherigen Taktzyklus vorhanden waren (!s1_trq_pmw). Der Steuerblock verwendet Gates 2362, 2364, 2366 und 2368, um das next_toq_cycle Signal zu erzeugen.The next_toq_cycle signal, which is used to increment the TOQ output counter to the next cycle in the TOQ, is asserted when the TOQ is not empty (! Toq_empty) and either when no posted memory write cycles are currently in the TRQ are queued (! trq_pmw) and the next cycle in the TOQ is a delayed completion (toq_cyctype [1] = "DC"), or if the next TOQ cycle is a posted memory write or a delayed request Transaction is (! (Toq_cyctype [1] = "DC")) and there were no posted memory write transactions during the previous clock cycle (! S1_trq_pmw). The control block uses gates 2362 . 2364 . 2366 and 2368 to generate the next_toq_cycle signal.

Die MCA-Steuereinheit erzeugt das mca_run_dcq[3:0] Signal, um anzuzeigen, dass eine verzögerte Abschluss-Transaktion von der TOQ ausgesondert worden ist. Wenn die TRQ keine geposteten Speicher-Schreib-Zyklen enthält (!trq_pmw), ist die TOQ nicht leer (!toq_empty), und der TOQ-Zyklus ist ein verzögerter Abschluss (toq_cyctype[1] = „DC"), das mca_run_dcq[3:0] Signal nimmt den Wert des decodierten toq_valido[1:0] Signals an, was vorstehend diskutiert ist. Ansonsten ist das mca_run_dcq[3:0] Signal gleich „0000". Das Gate 2370, der Decodierer 2372 und der Multiplexer 2374 sind so angeordnet, um mca_run_dcq[3:0] auf diese Art und Weise zu erzeugen.The MCA controller generates the mca_run_dcq [3: 0] signal to indicate that a delayed completion transaction has been discarded by the TOQ. If the TRQ does not contain posted memory write cycles (! Trq_pmw), the TOQ is not empty (! Toq_empty), and the TOQ cycle is a delayed completion (toq_cyctype [1] = "DC") that mca_run_dcq [3 : 0] Signal takes on the value of the decoded toq_valido [1: 0] signal discussed above, otherwise the mca_run_dcq [3: 0] signal is equal to "0000". The gate 2370 , the decoder 2372 and the multiplexer 2374 are arranged to generate mca_run_dcq [3: 0] in this way.

Der MCA-Steuer-Block erzeugt new_mca_run_dr[3:0] und new_mca_run_pmw[3:0] Signale, um anzuzeigen, dass er eine neue, verzögerte Anforderungs-Transaktion und eine gepostete Speicher-Transaktion jeweils hat, die in die Warteschlange gestellt werden sollen. Das new_mca_run_dr[3:0] Signal nimmt den Wert von dem 2 × 4 decodierten d_valido[1:0] Signal an, was vorstehend diskutiert ist, wenn der neue Zyklus ein verzögerter Anforderungs-Zyklus ist (d_cyctype[0] = „DR"). Ansonsten werden alle Bits des new_mca_run_dr[3:0] Signals auf Null gesetzt. Ähnlich nimmt das new_mca_run_pmw[3:0] Signal den Wert des 2 × 4 decodierten d_valido[1:0] Signals an, wenn der neue Zyklus eine gepostete Speicher-Schreib-Transaktion ist, und wird ansonsten auf „0000" eingestellt. Decodierer 2376 und 2380 und Multiplexer 2378 und 2382 sind so angeordnet, um die new_mca_run_dr und die new_mca_run_pmw Signale auf diese Art und Weise zu erzeugen.The MCA control block generates new_mca_run_dr [3: 0] and new_mca_run_pmw [3: 0] signals to indicate that it has a new, delayed request transaction and a posted memory transaction, respectively, to be queued , The new_mca_run_dr [3: 0] signal takes the value of the 2 × 4 decoded d_valido [1: 0] signal, discussed above, when the new cycle is a delayed request cycle (d_cyctype [0] = "DR" Otherwise, all bits of the new_mca_run_dr [3: 0] signal are set to 0. Similarly, the new_mca_run_pmw [3: 0] signal assumes the value of the 2 × 4 decoded d_valido [1: 0] signal when the new cycle is a posted one Memory write transaction is, and is otherwise set to "0000". decoder 2376 and 2380 and multiplexers 2378 and 2382 are arranged to generate the new_mca_run_dr and the new_mca_run_pmw signals in this way.

Die MCA-Steuereinheit erzeugt toq_mca_run_dr[3:0] und toq_mca_run_pmw[3:0] Signale, um anzuzeigen, wenn eine neue, verzögerte Anforderungs-Transaktion oder eine gepostete Speicher-Schreib-Transaktion, jeweils, von der TOQ ausgesondert wurde. Das toq_mca_run_dr[3:0] Signal nimmt den Wert des 2 × 4 decodierten toq_valido[1:0] Signals an, wenn ein verzögerter Anforderungs-Zyklus von der TOQ ausgesondert ist, und einen Wert von „0000" ansonsten. In ähnlicher Weise nimmt das toq_mca_run_pmw[3:0] Signal den Wert des 2 × 4 decodierten toq_valido[1:0] Signals an, wenn ein geposteter Speicher-Schreib-Zyklus von der TOQ ausgesondert ist, und einen Wert von „0000" ansonsten. Decodierer 2384 und 2388 und Multiplexer 2386 und 2390 werden verwendet, um die toq_mca_run_dr und toq_mca_run_pmw Signale auf diese Art und Weise zu erzeugen.The MCA controller generates toq_mca_run_dr [3: 0] and toq_mca_run_pmw [3: 0] signals to indicate when a new delayed request transaction or a posted memory write transaction, respectively, has been discarded by the TOQ. The toq_mca_run_dr [3: 0] signal takes the value of the 2 × 4 decoded toq_valido [1: 0] signal when a delayed request cycle is discarded from the TOQ and a value of "0000" otherwise the toq_mca_run_pmw [3: 0] signal indicates the value of the 2 × 4 decoded toq_valido [1: 0] signal when a posted memory write cycle is discarded from the TOQ and a value of "0000" otherwise. decoder 2384 and 2388 and multiplexers 2386 and 2390 are used to generate the toq_mca_run_dr and toq_mca_run_pmw signals in this way.

Die MCA-Steuereinheit erzeugt die trq_mca_run_dr[3:0] und trq_mca_run_pmw[3:0] Signale, um anzuzeigen, wenn eine neue, verzögerte Anforderungs-Transaktion oder eine gepostete Speicher-Schreib-Transaktion jeweils die Arbitrierung in der TRQ erlangt hat, und bereit ist, auf dem PCI-Bus zu laufen. Das trq_mca_run_dr[3:0] Signal nimmt den Wert des 2 × 4 decodierten trq_valido[1:0] Signals an, wenn ein verzögerter Anforderungs-Zyklus die Arbitrierung erlangt hat und die TRQ nicht leer ist. Das trq_mca_run_dr[3:0] nimmt einen Wert von „0000" ansonsten an. In ähnlicher Weise nimmt das trq_mca_run_pmw[3:0] Signal den Wert des 2 × 4 decodierten trq_valido[1:0] Signals an, wenn ein geposteter Speicher-Schreib-Zyklus die Arbitrierung erlangt hat und die TRQ nicht leer ist. Das trq_mca_run_pmw[3:0] Signal wird auf einen Wert von „0000" ansonsten eingestellt. Die Gates 2392 und 2398, die Decodierer 2394 und 2400 und die Multiplexer 2396 und 2402 werden dazu verwendet, die trq_mca_run_dr und trq_mca_run_pmw Signale in dieser Art und Weise zu erzeugen.The MCA controller generates the trq_mca_run_dr [3: 0] and trq_mca_run_pmw [3: 0] signals to indicate when a new, delayed request transaction or a posted memory write transaction has each achieved arbitration in the TRQ, and ready to run on the PCI bus. The trq_mca_run_dr [3: 0] signal takes the value of the 2 × 4 decoded trq_valido [1: 0] signal when a delayed request cycle has been arbitrated and the TRQ is not empty. The trq_mca_run_dr [3: 0] otherwise assumes a value of "0000." Similarly, the trq_mca_run_pmw [3: 0] signal takes the value of the 2 × 4 decoded trq_valido [1: 0] signal when a posted memory Write cycle has reached arbitration and the TRQ is not empty The trq_mca_run_pmw [3: 0] signal is set to a value of "0000" otherwise. The gates 2392 and 2398 , the decoder 2394 and 2400 and the multiplexers 2396 and 2402 are used to generate the trq_mca_run_dr and trq_mca_run_pmw signals in this manner.

Wenn die TRQ leer ist, kann der MCA eine Anforderung ausgeben, um die nächste Transaktion in der TOQ laufen zu lassen, während die Transaktion in die TRQ platziert wird. Wenn sowohl die TRQ als auch die TOQ leer sind, können Transaktionen damit beginnen, zu laufen, sogar bevor sie in die TRQ warteschlangenmäßig gestellt sind. Deshalb umfasst der MCA-Steuer-Block eine Logik, die bestimmt, wenn die new_mca_run oder die toq_mca_run Signale asynchron verwendet werden können, um anzuzeigen, dass eine Transaktion auf dem PCI-Bus versucht werden kann. Durch Umwandeln der new_mca_run oder der der toq_mca_run Signale in asynchrone Laufsignale, sichert die MCA-Steuereinheit einen PCI-Takt-Warte-Zustand. Wenn das new_valid_set Signal durch den MCA-Steuerblock aufgestellt ist und die TOQ nicht freigegeben ist (!toq_enabled), nehmen die async_mca_run_dr[3:0] und async_mca_run_pmw[3:0] Signale die Werte der new_mca_run_dr[3:0] und new_mca_run_pmw[3:0] Signale jeweils an. Ansonsten nehmen die asynchronen Laufsignale die Werte von toq_mca_run_dr[3:0] und toq_mca_run_pmw[3:0] Signale an. Die MCA-Steuereinheit verwendet das Gate 2404 und die Multiplexer 2406 und 2408 dazu, die asynchronen Laufsignale zu erzeugen.If the TRQ is empty, the MCA may issue a request to run the next transaction in the TOQ while placing the transaction in the TRQ. If both the TRQ and the TOQ are empty, transactions can begin to run even before they queue into the TRQ are moderately made. Therefore, the MCA control block includes logic that determines if the new_mca_run or toq_mca_run signals can be used asynchronously to indicate that a transaction on the PCI bus can be attempted. By converting the new_mca_run or toq_mca_run signals into asynchronous run signals, the MCA controller saves a PCI clock wait state. If the new_valid_set signal is asserted by the MCA control block and the TOQ is not enabled (! Toq_enabled), the async_mca_run_dr [3: 0] and async_mca_run_pmw [3: 0] signals take the values of new_mca_run_dr [3: 0] and new_mca_run_pmw [ 3: 0] signals on each. Otherwise, the asynchronous run signals assume the values of toq_mca_run_dr [3: 0] and toq_mca_run_pmw [3: 0] signals. The MCA control unit uses the gate 2404 and the multiplexers 2406 and 2408 to generate the asynchronous run signals.

Wenn ein PCI-Bus-Master eine Transaktion abgeschlossen hat (s1_q2pif_cyc_complete ist aufgestellt), ist die TRQ nicht leer (!trq_empty) und ist für einen Betrieb in dem Null-Retry-Mode konfiguriert (!cfg2q_infretry), und irgendeine neue Transaktion ist von der TOQ ausgesondert worden (new_toq_cycle) oder die TOQ ist nicht freigegeben (!toq_enabled) und die MCA hat einen neuen Zyklus empfangen, der für gültig erklärt wird (new_valid_set), die MCA kann nicht einen Zyklus auswählen, um auf dem PCI-Bus zu laufen, so dass sowohl das mca_run_dr[3:0] als auch das mca_run_pmw[3:0] Signal auf „0000" gesetzt werden. Ansonsten nehmen, falls die TRQ leer ist (trq_empty) und entweder eine neue Transaktion von der TOQ ausgesondert ist (new_toq_cycle) oder die TOQ nicht freigegeben ist (!toq_enabled) und die MCA einen neuen Zyklus empfangen hat, der für gültig erklärt wird (new_valid_set), dann die mca_run_dr[3:0] und mca_run_pmw[3:0] Signale den Wert der asynchronen Lauf-Signale async_mca_run_dr[3:0] und async_mca_run_pmw[3:0], jeweils, an. Ansonsten nimmt das mca_run_dr[3:0] Signal den Wert des trq_mca_run_dr[3:0] Signals an und das mca_run_pmw[3:0] Signal nimmt den Wert des trq_run_pmw[3:0] Signals an, mit AND mit dem Gültigkeits-Anforderungs-Signal von der PMWQ verknüpft (pmwq_valid[3:0]). Gates 2410, 2412, 2414, 2416 und 2418 und Multiplexer 2420, 2422, 2424 und 2426 sind so angeordnet, um die MCA-Lauf-Signale auf diese Art und Weise zu erzeugen.If a PCI bus master has completed a transaction (s1_q2pif_cyc_complete is asserted), the TRQ is not empty (! Trq_empty) and is configured to operate in the zero retry mode (! Cfg2q_infretry), and any new transaction is from the TOQ has been discarded (new_toq_cycle) or the TOQ is not enabled (! toq_enabled) and the MCA has received a new cycle that is validated (new_valid_set), the MCA can not select one cycle to access on the PCI bus so that both the mca_run_dr [3: 0] and the mca_run_pmw [3: 0] signals are set to "0000." Otherwise, if the TRQ is empty (trq_empty) and either a new transaction is discarded by the TOQ (new_toq_cycle) or the TOQ is not enabled (! toq_enabled) and the MCA has received a new cycle that is declared valid (new_valid_set), then the mca_run_dr [3: 0] and mca_run_pmw [3: 0] signals the value of the asynchronous run signals async_mca_ run_dr [3: 0] and async_mca_run_pmw [3: 0], respectively. Otherwise, the mca_run_dr [3: 0] signal takes the value of the trq_mca_run_dr [3: 0] signal and the mca_run_pmw [3: 0] signal takes the value of the trq_run_pmw [3: 0] signal, with AND with the validity request Signal from the PMWQ linked (pmwq_valid [3: 0]). Gates 2410 . 2412 . 2414 . 2416 and 2418 and multiplexers 2420 . 2422 . 2424 and 2426 are arranged to generate the MCA run signals in this manner.

DIE WARTESCHLANGEN-BLOCK-ZU-PCI-SCHNITTSTELLE (QPIF)THE QUEUE BLOCK-TO-PCI INTERFACE (QPIF)

Wie wiederum die 4 und 75 zeigen, leitet die QPIF 148 den Fluss von Transaktionen zwischen dem Warteschlangen-Block 127 und dem PCI-Bus 32. Die QPIF 148 liefert auch Transaktionen, initiiert auf dem PCI-Bus 32, zu der Kabel-Schnittstelle 130. Die QPIF 148 arbeitet in zwei Moden: einem Master-Mode und einem Slave-Mode. In dem Master-Mode hat die QPIF 148 eine Kontrolle über den PCI-Bus und führt deshalb Transaktionen, vorgesehen für Target-Vorrichtungen auf dem Bus, aus. Eine Master-Zustand-Maschine 2500 in der QPIF 148 sucht Transaktionen von der PMWQ und DRQ auf und führt sie auf dem PCI-Bus aus, wenn sich die QPIF in dem Master-Mode befindet. In dem Slave-Mode empfängt die QPIF 148 Transaktionen, initiiert durch eine Vorrichtung auf dem PCI-Bus, und liefert entweder die angeforderten Informationen zu der initiierenden Vorrichtung (falls die Informationen verfügbar sind) oder sucht die initiierende Vorrichtung erneut auf (falls die Transaktion eine verzögerte Anforderung ist) und führt die Transaktion weiter zu dem eingangsseitigen Chip. Die Transaktion wird auch aufgesucht, wenn der entsprechende eine der Transaktions-Zähler 159 anzeigt, dass der andere Brücken-Chip voll ist, wie dies vorstehend diskutiert ist. Eine Slave-Zustand-Maschine 2502 empfängt eine ankommende Transaktion von dem PCI-Bus und prüft dann die DCQ nach einer entsprechenden Abschluss-Nachricht und/oder führt die Transaktion zu einem Kabel-Nachrichten-Generator 2504 weiter, der wiederum die Transaktion über das Kabel zu dem eingangsseitigen Brücken-Chip weiterführt.How the turn 4 and 75 show, heads the QPIF 148 the flow of transactions between the queue block 127 and the PCI bus 32 , The QPIF 148 also provides transactions initiated on the PCI bus 32 , to the cable interface 130 , The QPIF 148 works in two modes: a master mode and a slave mode. In the master mode, the QPIF 148 Control over the PCI bus and therefore carries out transactions intended for target devices on the bus. A master state machine 2500 in the QPIF 148 searches for transactions from the PMWQ and DRQ and executes them on the PCI bus when the QPIF is in master mode. In the slave mode, the QPIF receives 148 Transactions initiated by a device on the PCI bus and either provide the requested information to the initiating device (if the information is available), or retrieve the initiating device (if the transaction is a deferred request) and continue the transaction to the input side chip. The transaction is also visited if the corresponding one of the transaction counters 159 indicates that the other bridge chip is full, as discussed above. A slave state machine 2502 receives an incoming transaction from the PCI bus and then checks the DCQ for a corresponding completion message and / or routes the transaction to a cable message generator 2504 which in turn continues the transaction over the cable to the input bridge chip.

Unter Bezugnahme auch auf die 76A und 76B umfasst die QPIF eine Adressen- und Daten-Verriegelungs-Logik 2506, die die ankommenden Adressen-Phasen- und Daten-Phasen-Informationen, zugeordnet zu jeder Transaktion, initiiert durch eine Vorrichtung auf dem PCI-Bus, verriegelt. Die QPIF-Slave-Zustand-Maschine 2502 kontrolliert die Betriebsweise der Adressen- und Daten-Verriegelungs-Logik 2506. Wenn eine neue Transaktion, initiiert auf dem PCI-Bus, für die QPIF vorgesehen ist, stellt die Slave-Zustand-Maschine 2502 ein Adressen-Phasen-Verriegelungs-Signal (reg_latch_first_request) auf, das anzeigt, dass die Adressen-Phasen-Informationen von dem PCI-Bus verriegelt werden sollten. An der nächsten, abfallenden Flanke des PCI-Takt-Signals bewirkt die Aufstellung des reg_latch_first_request Signals, dass ein verzögertes Adressen-Phasen-Verriegelungs-Signal (dly_reg_latch_first_request) aufgestellt werden soll. Wenn sowohl das originale als auch das verzögerte Adressen-Phasen-Verriegelungs-Signal aufgestellt sind, erzeugt die Verriegelungs-Logik 2506 ein erstes Verriegelungs-Signal (latch1). Ein Flip-Flop 2508 und ein Gate 2510 sind so angeordnet, um das erste, verriegelnde Signal auf diese Art und Weise zu erzeugen.With reference also to the 76A and 76B The QPIF includes address and data latch logic 2506 which latches the incoming address phase and data phase information associated with each transaction initiated by a device on the PCI bus. The QPIF slave state machine 2502 Controls the operation of the address and data latch logic 2506 , When a new transaction, initiated on the PCI bus, is scheduled for the QPIF, it represents the slave state machine 2502 an address phase lock signal (reg_latch_first_request) indicating that the address phase information should be latched by the PCI bus. On the next falling edge of the PCI clock signal, the establishment of the reg_latch_first_request signal causes a delayed address phase lock signal (dly_reg_latch_first_request) to be asserted. When both the original and delayed address phase lock signals are asserted, the lock logic generates 2506 a first latch signal (latch1). A flip-flop 2508 and a gate 2510 are arranged to generate the first locking signal in this manner.

Die Verriegelungs-Logik 2506 lädt die Adressen-Phasen-Informationen von dem PCI-Bus (über die PCI-Schnittstelle) in drei Adressen-Phasen-Register ein, wenn das erste Verriegelungs-Signal aufgestellt ist. Das erste Register ist ein dreißig-Bit-Adressen-Register 2512, das die Start-Adresse der momentanen Transaktion anzeigt. Wenn das erste Verriegelungs-Signal aufgestellt ist, wird das Adressen-Signal von der PCI-Schnittstelle (p2q_ad[31:2]) in das Adressen-Register 2512 eingeladen. Das Adressen-Register 2512 gibt das Adressensignal aus, verwendet durch die QPIF (q2pif_addr[31:2]). Das zweite Register ist ein Vier-Bit-Befehls-Register 2514, das den PCI-Befehl-Code von dem PCI-Bus empfängt (p2q_cmd[3:0]), und das QPIF-Befehls-Signal ausgibt (q2pif_cmd[3:0]). Das dritte Register ist ein Drei-Bit-Schlitz-Auswahl-Register 2516, das das p2q_slot[2:0] Signal empfängt, das anzeigt, welche PCI-Vorrichtung der momentane Bus-Master ist, und gibt das QPIF-Schlitz-Auswahl-Signal aus (q2pif_slot[2:0]).The locking logic 2506 loads the address phase information from the PCI bus (via the PCI interface) into three address phase registers when the first lock signal is asserted. The first register is a thirty-bit address register 2512 indicating the start address of the current transaction. When the first lock signal is asserted, the address signal from the PCI interface (p2q_ad [31: 2]) becomes the address register 2512 invited. The address register 2512 outputs the address signal used by the QPIF (q2pif_addr [31: 2]). The second register is a four-bit command register 2514 which receives the PCI command code from the PCI bus (p2q_cmd [3: 0]) and outputs the QPIF command signal (q2pif_cmd [3: 0]). The third register is a three-bit slot select register 2516 receiving the p2q_slot [2: 0] signal indicating which PCI device is the current bus master and outputting the QPIF slot select signal (q2pif_slot [2: 0]).

Wenn die Adressen-Phase der PCI-Transaktion endet, stellt die Slave-Zustand-Maschine 2502 ein Daten-Phasen-Verriegelungs-Signal auf (reg_latch_second_request), das anzeigt, dass die Daten-Phasen-Informationen von dem PCI-Bus verriegelt werden sollten. An der nächsten, abfallenden Flanke des PCI-Takt-Signals bewirkt das aufgestellte reg_latch_first_request Signal, dass ein verzögertes Daten-Phasen-Verriegelungs-Signal (dly_reg_latch_second_request) aufgestellt wird. Wenn sowohl das originale als auch das verzögerte Daten-Phasen-Verriegelungs-Signal aufgestellt sind, erzeugt die Verriegelungs-Logik 2506 ein zweites Verriegelungs-Signal (latch2). Ein Flip-Flop 2518 und ein Gate 2520 sind so angeordnet, um das zweite Verriegelungs-Signal auf diese Art und Weise zu erzeugen.When the address phase of the PCI transaction ends, the slave state machine stops 2502 a data phase lock signal (reg_latch_second_request) indicating that the data phase information should be latched by the PCI bus. On the next falling edge of the PCI clock signal, the established reg_latch_first_request signal causes a delayed data phase lock signal (dly_reg_latch_second_request) to be asserted. When both the original and delayed data phase lock signals are asserted, the lock logic is generated 2506 a second latch signal (latch2). A flip-flop 2518 and a gate 2520 are arranged to generate the second latch signal in this manner.

Die Verriegelungs-Logik 2506 lädt dann die Daten-Phasen-Informationen von dem PCI-Bus (über die PCI-Schnittstelle) in drei Daten-Phasen-Register, wenn das zweite Verriegelungs-Signal aufgestellt ist. Das erste Daten-Phasen-Register ist ein Zweiunddreißig-Bit-Daten-Register 2522, das die Daten empfängt, die der momentanen Transaktion zugeordnet sind, und zwar auf den PCI-Adressen/Daten-Leitungen (p2q_ad[31:0]), und gibt das QPIF-Daten-Signal aus (q2pif_data[31:0]). Das zweite Daten-Phasen-Register ist ein Vier-Bit-Freigabe-Register 2524, das Freigabe-Bits von dem PCI-Bus empfängt (p2q_cbe[3:0]), und das QPIF-Byte-Freigabe-Signal ausgibt (qq2pif_byte_en[3:0]). Das dritte Register ist ein Drei-Bit-Verriegelungs-Register 2526, das das PCI-Verriegelungs-Signal empfängt (p2q_lock), das anzeigt, dass die momentane Transaktion als eine verriegelte Transaktion laufen sollte, und das QPIF-Verriegelungs-Signal ausgibt (q2pif_lock).The locking logic 2506 then loads the data phase information from the PCI bus (via the PCI interface) into three data phase registers when the second lock signal is asserted. The first data phase register is a thirty-two bit data register 2522 which receives the data associated with the current transaction on the PCI address / data lines (p2q_ad [31: 0]) and outputs the QPIF data signal (q2pif_data [31: 0]) , The second data phase register is a four-bit enable register 2524 which receives enable bits from the PCI bus (p2q_cbe [3: 0]) and outputs the QPIF byte enable signal (qq2pif_byte_en [3: 0]). The third register is a three-bit latch register 2526 receiving the PCI lock signal (p2q_lock) indicating that the current transaction should run as a locked transaction and issuing the QPIF lock signal (q2pif_lock).

Wie wiederum die 75 und auch die 77 zeigen, umfasst das QPIF einen „Verriegelungs"-Logik-Block 2528, der den „Verriegelungs"-Zustand des QPIF kontrolliert. Die QPIF besitzt drei Verriegelungs-Zustände: einen nicht verriegelten Zustand 2530 (lock_state[1:0] = „00"), der anzeigt, dass keine verriegelten Transaktionen in der DCQ anhängig sind; einen verriegelten Zustand 2532 (lock_state[1:0] = „01"), der anzeigt, dass eine verriegelte Transaktion in der DCQ empfangen worden ist oder sich im Abschluss auf dem PCI-Bus befindet; und einen unlocked-but-retry Zustand 2534 (lock_state[1:0] = „10"), der anzeigt, dass die Verriegelung entfernt worden ist, allerdings eine gepostete Speicher-Schreib-Transaktion, die in dem anderen Brücken-Chip anhängig ist, laufen muss, bevor die nächste Transaktion angenommen werden kann.How the turn 75 and also the 77 show, the QPIF comprises a "lock" logic block 2528 controlling the "lock" state of the QPIF The QPIF has three lock states: an unlocked state 2530 (lock_state [1: 0] = "00") indicating that no locked transactions are pending in the DCQ; a locked state 2532 (lock_state [1: 0] = "01") indicating that a locked transaction has been received in the DCQ or is in completion on the PCI bus, and an unlocked-but-retry state 2534 (lock_state [1: 0] = "10") indicating that the lock has been removed, but a posted memory write transaction pending in the other bridge chip must be in progress before the next transaction is accepted can be.

Bei einem Power-up bzw. Einschalten und einem Reset tritt die Verriegelungs-Logik 2528 in den nicht verriegelten Zustand 2530 ein und wartet auf eine verriegelte Transaktion, um in die DCQ einzutreten (angezeigt durch die Aufstellung des dcq_locked Signals). Bei dem ersten Takt-Impuls, nachdem das dcq_locked Signal aufgestellt ist, tritt die Verriegelungs-Logik in den verriegelten Zustand 2532 ein, der die QPIF-Slave-Zustand-Maschine 2502 dazu bringt, alle Transaktions-Anforderungen von dem PCI-Bus erneut zu versuchen. Die PCI-Schnittstelle stellt auch ein Verriegelungs-Signal (p2q_lock) auf, das anzeigt, dass sie den PCI-Bus für die Transaktion verriegelt hat. Nachdem die Verriegelungs-Transaktion abgeschlossen ist und die anfordernde Vorrichtung die verriegelten Abschluss-Daten von der DCQ aufgesucht hat, wird das dcq_locked Signal weggenommen. Bei dem ersten Taktimpuls, nachdem das dcq_locked weggenommen ist, während das p2q_lock Signal noch aufgestellt ist, falls keine geposteten Speicher-Schreib-Vorgänge in dem anderen Brücken-Chip anhängig sind (d. h. das pmw_empty Signal wird durch den Kabel-Decodierer aufgestellt), kehrt die Verriegelungs-Logik 2528 zu dem nicht verriegelten Zustand 2530 zurück und die Slave-Zustand-Maschine 2502 ist wieder in der Lage, Transaktions-Anforderungen zu akzeptieren. Allerdings tritt, falls das pwm_empty Signal nicht bei dem ersten Taktimpuls aufgestellt ist, nachdem das dcq_lock Signal weggenommen ist, die Verriegelungs-Logik 2528 in den unlocked-but-retry Zustand 2534 ein, der die Slave-Zustand-Maschine 2502 dazu bringt, alle Transaktionen erneut zu versuchen, bis der gepostete Speicher-Schreib-Zyklus auf dem anderen PCI-Bus abgeschlossen ist.During a power-up or a reset and a reset occurs the interlock logic 2528 in the unlocked state 2530 and waits for a locked transaction to enter the DCQ (indicated by the placement of the dcq_locked signal). At the first clock pulse, after the dcq_locked signal is asserted, the latch logic enters the locked state 2532 one, which is the QPIF slave state machine 2502 to retry all transaction requests from the PCI bus. The PCI interface also sets a lock signal (p2q_lock) indicating that it has latched the PCI bus for the transaction. After the lock transaction is completed and the requesting device has retrieved the locked completion data from the DCQ, the dcq_locked signal is removed. At the first clock pulse, after the dcq_locked is removed while the p2q_lock signal is still asserted, if no posted memory writes are pending in the other bridge chip (ie, the pmw_empty signal is asserted by the cable decoder), it will turn the lock logic 2528 to the unlocked state 2530 back and the slave state machine 2502 is again able to accept transaction requests. However, if the pwm_empty signal is not asserted at the first clock pulse after the dcq_lock signal is removed, the latch logic occurs 2528 in the unlocked-but-retry state 2534 one, the slave state machine 2502 causes it to retry all transactions until the posted memory write cycle on the other PCI bus is completed.

Nachdem der gepostete Speicher-Schreib-Zyklus abgeschlossen ist, wird das pmw_empty Signal aufgestellt, und die Verriegelungs-Logik 2528 kehrt zu dem nicht verriegelten Zustand 2530 zurück.After the posted memory write cycle is completed, the pmw_empty signal is asserted, and the latch logic 2528 returns to the unlocked state 2530 back.

Wie wiederum die 75 und auch die 78 zeigen, umfasst die QPIF eine Puffer-Flush-Logik 2536, die bestimmt, wann die die DCQ Daten von einem oder allen deren Daten-Puffer entleeren sollte. Wie vorstehend diskutiert ist, erzeugt die PCI-Schnittstelle in dem ausgangsseitigen Chip ein p2q_flush Signal, wenn der eingangsseitige Chip ein I/O oder config Schreiben oder ein Speicher-Schreiben ausgibt, das das Soll-Speicher-Bereichs-Register (Target Memory Range Register – TMRR) einer ausgangsseitigen Vorrichtung trifft. Die QPIF-Puffer-Flush-Logik 2536 stellt ein QPIF-Flush-Signal auf (general_flush), das den entsprechenden Daten-Puffer oder alle Daten-Puffer entleert (in Abhängigkeit von dem Wert des p2q_slot Signals, wie dies vorstehend diskutiert ist), wenn das p2q_flush Signal empfangen ist. Ansonsten stellt die Puffer-Flush-Logik 2536 das allgemeine Flush-Signal nur dann auf, wenn eine Vorrichtung auf dem sekundären Bus eine verzögerte Anforderung ausgibt, die alle der DCQ-Puffer verfehlt, wenn durch die DCQ-Steuer-Logik geprüft ist (d. h. !dcq_hit und q2pif_check_cyc sind aufgestellt). In jedem Fall wird das general_flush Signal dazu verwendet, nur Puffer zu entleeren, die sich in dem „prefetch" Zustand befinden, wie dies vorstehend diskutiert ist. Deshalb werden Prefetch-Daten in der DCQ gehalten, bis die PCI-Schnittstelle ein Entleeren verlangt oder bis die entsprechende PCI-Vorrichtung eine nicht-sequenzielle Anforderung ausgibt (d. h. verfehlt die DCQ). Gates 2538 und 2540 sind so angeordnet, um das general_flush Signal auf diese Art und Weise zu erzeugen.How the turn 75 and also the 78 show, the QPIF comprises a buffer flush logic 2536 that determines when the DCQ should dump data from one or all of its data buffers. As discussed above, the PCI interface in the output side chip generates a p2q_flush signal when the input side chip issues an I / O or config write or a memory write that is the target memory range register TMRR) of an output-side device. The QPIF buffer flush logic 2536 sets a QPIF flush signal (general_flush) which dumps the corresponding data buffer or all data buffers (depending on the value of the p2q_slot signal, as discussed above) when the p2q_flush signal is received. Otherwise, the buffer flush logic 2536 the general flush signal only when a device on the secondary bus issues a delayed request that misses all of the DCQ buffers when checked by the DCQ control logic (ie! dcq_hit and q2pif_check_cyc are asserted). In either case, the general_flush signal is used to empty only buffers that are in the "prefetch" state, as discussed above Therefore, prefetch data is held in the DCQ until the PCI interface requires a flush or until the corresponding PCI device issues a non-sequential request (ie, misses the DCQ) 2538 and 2540 are arranged to generate the general_flush signal in this way.

Wenn eine Multi-Threaded-Vorrichtung mehr als einen Abschluss-Puffer zugeordnet besitzt, wobei mindestens einer davon Prefetch-Daten enthält, verbleiben die Prefetch-Daten in dem entsprechenden Puffer so lange, wie die Vorrichtung nicht eine Anforderung ausgibt, die alle die DCQ-Puffer verfehlt. Sobald die Vorrichtung eine neue Anforderung ausgibt, werden alle deren Prefetch-Puffer entleert. Alternativ könnte ein Prefetch-Puffer, zugeordnet einer Multi-Threaded-Vorrichtung, entleert werden, sobald die Vorrichtung eine Anforderung ausgibt, die einen anderen DCQ-Puffer trifft.If a multi-threaded device more than a completion buffer at least one of which has prefetch data contains remain the prefetch data in the appropriate buffer as long as the device is not Issue a request that misses all the DCQ buffers. As soon as the device issues a new request, all of them Prefetch buffer emptied. Alternatively, a prefetch buffer could be allocated a multi-threaded device, be emptied as soon as the device Issue a request that hits another DCQ buffer.

Wie wiederum 75 zeigt, umfasst die QPIF einen Lese-Befehl-Logik-Block 2542, der Lese-Befehle von der PCI-Schnittstelle und Prefetch-Befehle von der DCQ empfängt und ein abgehendes Nachrichten-Befehl-Signal (message_cmd) zu dem Kabel zuführt. In Nicht-Streaming-Situationen kann der abgehende Nachrichten-Befehl derselbe wie der Befehl sein, der von dem PCI-Bus oder der DCQ empfangen ist, oder die Lese-Befehl-Logik 2542 kann den Befehl in einen solchen umwandeln, der eine größere Menge an Daten einsetzt. Da Transaktionen, ausgeführt dword-by-dword, länger benötigen, um auf dem Host-Bus abzuschließen, als Transaktionen, die eine gesamte Cache-Zeile von Daten einsetzen, und da einzelne Cache-Zeilen-Transaktionen länger benötigen, um auf dem Host-Bus abzuschließen, als Mehrfach-Cache-Zeilen-Transaktionen, unterstützt die Lese-Befehl-Logik oft „kleinere" Befehle zu „größeren" solchen, um die Zahl von Takt-Zyklen, verbraucht durch die Transaktion, zu reduzieren („read promotion"). Zum Beispiel ist, wenn eine Vorrichtung auf dem sekundären PCI-Bus einen Speicher-Lese-Befehl ausgibt und dann nach jedem dword von Daten in einer Cache-Zeile fragt, die Lese-Befehl-Logik 2542 in der Lage, die Host-Latenzzeit durch Unterstützen des PCI-Befehls zu einer Speicher-Lese-Zeile zu reduzieren, was ermöglicht, dass der eingangsseitige Chip die gesamte Cache-Zeile an Daten auf einmal liest anstelle davon, jedes dword individuell zu lesen.Like again 75 shows, the QPIF comprises a read command logic block 2542 which receives read commands from the PCI interface and prefetches commands from the DCQ and supplies an outbound message command signal (message_cmd) to the cable. In non-streaming situations, the outbound message command may be the same as the command received from the PCI bus or the DCQ, or the read command logic 2542 can turn the command into one that uses a larger amount of data. Because transactions, executed dword-by-dword, take longer to complete on the host bus than transactions that use an entire cache line of data, and because individual cache line transactions take longer to complete on the host bus. Bus to complete, as multiple cache line transactions, the read command logic often supports "smaller" commands to "larger" ones to reduce the number of clock cycles consumed by the transaction ("read promotion"). For example, if a device on the secondary PCI bus issues a memory read command and then polls for each dword of data in a cache line, the read command logic is 2542 being able to reduce the host latency by supporting the PCI command to a memory read line, which allows the input side chip to read the entire cache line of data at once instead of individually reading each dword.

Wie auch 79 zeigt, erzeugt, wenn die DCQ anzeigt, dass eine Lese-Datenfolge eingerichtet worden ist (d. h. dcq_stream_connect ist aufgestellt), wie dies vorstehend diskutiert ist, die Lese-Befehl-Logik 2542 einen Nachrichten-Befehl von „1000", was den eingangsseitigen Chip darüber informiert, dass eine Datenfolge auftritt. Wenn keine Datenfolge eingerichtet worden ist, muss die Lese-Befehl-Logik 2542 entscheiden, ob ein Speicher-Lese-, ein Speicher-Lese-Zeilen- oder ein Speicher-Lese-Mehrfach-Befehl zu verschicken ist. Falls der Befehl, empfangen von dem PCI-Bus, ein Speicher-Lese-(MR)-Befehl ist (q2p_CMD[2:0] entspricht „0110") und das entsprechende Speicher-Lese-zu-Speicher-Lese-Zeilen-Unterstützungs-Bit (cfg2q_mr2mr1) in den Konfigurations-Registern eingestellt ist, erzeugt die Lese-Befehl-Logik 2542 einen Speicher-Lese-Zeilen-Befehl („1110"). Andererseits erzeugt, falls der PCI-Befehl ein Speicher-Lese-Befehl ist, und das entsprechende Speicher-Lese-zu-Speicher-Lese-Mehrfach-Bit (cfg2q_mr2mrm) eingestellt ist, oder falls der Befehl ein Speicher-Lese-Zeilen-Befehl (q2pif_cmd[3:0] gleich zu „1110") von dem PCI-Bus ist oder ein Prefetch-Zeilen-Befehl (dcq_prefetch_linie ist aufgestellt) von der DCQ ist und das entsprechende Speicher-Lese-Zeilen-zu-Speicher-Mehrfach-Bit (cfg2q_mrl2mrm) eingestellt ist, oder falls der Befehl ein Prefetch-Mehrfach-Befehl (dcq_prefetch_mu1) von der DCQ ist, die Lese-Befehl-Logik 2542 einen Speicher- Lese-Mehrfach-Befehl (d. h. message_cmd entspricht „1100"). Falls der Befehl ein Prefetch-Zeilen-Befehl ist und das entsprechende Speicher-Lese-Zeilen-zu-Speicher-Lese-Mehrfach-Bit nicht eingestellt ist, erzeugt die Lese-Befehl-Logik 2542 einen MRL-Befehl („1110"). Ansonsten gibt die Lese-Befehl-Logik 2542 den empfangenen PCI-Befehl (q2pif_cmd[2:0]) als das Nachrichten-Befehl-Signal aus. Gates 2544, 2546, 2548, 2550, 2552, 2554, 2556 und 2558 und Multiplexer 2560, 2562 und 2564 sind so angeordnet, um das message_cmd Signal auf diese Art und Weise zu erzeugen.As well as 79 If the DCQ indicates that a read data string has been established (ie, dcq_stream_connect is asserted), then, as discussed above, the read command logic generates 2542 a message command of "1000" informing the input side chip that a sequence of data is occurring If no sequence of data has been established, the read command logic must 2542 decide whether to send a memory read, a memory read line or a memory read multiple command. If the command received from the PCI bus is a memory read (MR) command (q2p_CMD [2: 0] corresponds to "0110") and the corresponding memory read-to-memory read line support Bit (cfg2q_mr2mr1) is set in the configuration registers, generates the read command logic 2542 On the other hand, if the PCI instruction is a memory read instruction, and the corresponding memory read-to-memory read multiple bit (cfg2q_mr2mrm) is set, a memory read line instruction ("1110") is set or if the instruction is a memory read line instruction (q2pif_cmd [3: 0] equal to "1110") from the PCI bus or a prefetch line instruction (dcq_prefetch_line is asserted) from the DCQ and the corresponding memory read row to memory multiple bit (cfg2q_mrl2mrm) is set, or if the instruction is a prefetch multiple instruction (dcq_prefetch_mu1) from the DCQ, the read instruction logic 2542 a memory read multiple command (ie message_cmd corresponds to "1100"). If the command is a prefetch line command and the corresponding memory read line to memory read multiple bit is not set, it will generate the read command logic 2542 an MRL command ("1110"). Otherwise, the read command logic gives 2542 the received PCI command (q2pif_cmd [2: 0]) as the message command signal. Gates 2544 . 2546 . 2548 . 2550 . 2552 . 2554 . 2556 and 2558 and multiplexers 2560 . 2562 and 2564 are arranged to generate the message_cmd signal in this way.

Wie wiederum 75 zeigt, erzeugt, wenn die QPIF im Master-Mode arbeitet und eine Steuerung über den Bus empfangen hat, um eine Transaktion, gespeichert in der PMWQ, laufen zu lassen, ein Schreib-Befehl-Logik-Block 2566 den Befehl-Code, der auf dem PCI-Bus ausgeführt wird. Um Transaktions-Zeit zu reduzieren, wie dies vorstehend diskutiert ist, kann eine Schreib-Befehl-Logik Speicher-Schreib-(MW)-Befehle umwandeln, was Daten-Übertragungen ein dword zu einem Zeitpunkt in Speicher-Schreib- und Ungültigkeits-Befehle (MWI) hinein einsetzt, was Übertragungen von mindestens einer gesamten Cache-Zeile an Daten einsetzt. Der Schreib-Befehl-Logik-Block 2566 kann einen Befehl-Midstream umwandeln, wenn z. B. die Transaktion als ein Speicher-Schreiben in der Mitte einer Cache-Zeile beginnt und Daten enthält, die die nächste Cache-Zeilen-Grenze kreuzt und alle acht dwords an Daten in der nächsten Cache-Zeile umfasst. In dieser Situation beendet die Schreib-Befehl-Logik 2566 die Speicher-Schreib-Transaktion, wenn sie die erste Cache-Zeilen-Grenze erreicht, und initiiert ein Speicher-Schreiben und erklärt eine Transaktion für ungültig, um nächste, volle Cache-Zeilen an Daten zu übertragen. Die Schreib-Befehl-Logik 2566 kann auch einen MWI-Transaktions-Midstream zugunsten einer MW-Transaktion beenden, falls weniger als eine Cache-Zeile an Daten zu dem Target-Bus hin geschrieben werden soll, nachdem eine Cache-Zeilen-Grenze gekreuzt wird.Like again 75 2, when the QPIF is operating in master mode and has received control over the bus, to generate a transaction stored in the PMWQ Write command logic block 2566 the command code that runs on the PCI bus. To reduce transaction time, as discussed above, write-to-command logic may convert memory-write (MW) instructions, which translates data transmissions one dword at a time into memory-write and invalidate instructions (FIGS. MWI), which uses transfers of at least one entire cache line of data. The Write Command Logic Block 2566 can convert a command midstream, if e.g. For example, the transaction begins as a memory write in the middle of a cache line and contains data that crosses the next cache line boundary and includes all eight dwords of data in the next cache line. In this situation, the write command logic terminates 2566 the memory write transaction when it reaches the first cache line boundary and initiates a memory write and invalidates a transaction to transfer next full cache lines of data. The write command logic 2566 may also terminate an MWI transaction midstream in favor of a MW transaction if less than one cache line of data is to be written to the target bus after a cache line boundary is crossed.

Wie wiederum 75 und auch 80 zeigen, hält die Slave-Zustand-Maschine 2502 auch zwei Zähler aufrecht, die anzeigen, wenn eine gepostete Schreib-Transaktion, initiiert auf dem PCI-Bus, beendet werden sollte. Ein 4K Seiten-Grenzen-Zähler (Page Boundary Counter) 2594 erzeugt ein Seiten-Zähl-Signal (page_count_reg[11:2]), das anzeigt, wenn Daten, übertragen von dem PCI-Bus, eine 4K Seiten-Grenze erreichen. Da ein einzelner Speicher-Zugriff nicht erlaubt ist, um eine 4K Seiten-Grenze zu überqueren, muss die gepostete Schreib-Transaktion auf dem initiierenden Bus beendet werden, wenn eine Grenze erreicht ist. Der 4K Seiten-Grenzen-Zähler 2594 wird mit dem dritten bis zwölften Bit der Transaktions-Adresse (q2pif_addr[11:2]) geladen, wenn die Zustand-Maschine ein load_write_counter Signal aufstellt (die Umstände, die eine Aufstellung von diesem Signal mit sich bringen, werden in weiterem Detail nachfolgend diskutiert). Der Zähler 2594 erhöht sich dann um eins an der ansteigenden Flanke jedes Takt-Impulses, nachdem das load_write_counter Signal weggenommen ist. Der Zähler 2594 wird nicht bei Takt-Impulsen erhöht, während denen die intiierende Vorrichtung einen Initiator-Warte-Zustand eingesetzt hat (d. h. p2q_irdy aufgestellt). Der Ausgang von Gate 2592 bestimmt, wann dem Zähler erlaubt wird, sich zu erhöhen. Wenn alle Bits in dem page_count_reg[11:2] Signal hoch sind, ist eine 4K Seiten-Grenze erreicht worden und die Slave-Zustand-Maschine muss die gepostete Schreib-Transaktion beenden und erneut die initiierende Vorrichtung versuchen.Like again 75 and also 80 show, holding the slave state machine 2502 also maintains two counters indicating when a posted write transaction initiated on the PCI bus should be terminated. A 4K page limit counter (Page Boundary Counter) 2594 generates a page count signal (page_count_reg [11: 2]) which indicates when data transferred from the PCI bus reaches a 4K page boundary. Since a single memory access is not allowed to cross a 4K page boundary, the posted write transaction on the initiating bus must be terminated when a limit is reached. The 4K page limit counter 2594 is loaded with the third to twelfth bits of the transaction address (q2pif_addr [11: 2]) when the state machine asserts a load_write_counter signal (the circumstances involving a listing of this signal will be discussed in further detail below ). The counter 2594 then increases by one on the rising edge of each clock pulse after the load_write_counter signal is removed. The counter 2594 is not increased at clock pulses during which the initiating device has initiated an initiator wait state (ie, p2q_irdy set up). The output of gate 2592 determines when the counter is allowed to increase. If all the bits in the page_count_reg [11: 2] signal are high, a 4K page boundary has been reached and the slave state machine must terminate the posted write transaction and retry the initiating device.

Ein dword Zähler 2598 erzeugt ein pmw_counter[5:0] Signal, das die Zahl von dwords, geschrieben von dem initiierenden Bus, während einer geposteten Schreib-Transaktion anzeigt. Das pmw_counter[5:0] Signal wird dann verwendet, um anzuzeigen, wann ein Überlauf aufgetreten ist oder wann die letzte Zeile der Transaktion erreicht worden ist, wie dies nachfolgend diskutiert ist. Wenn die Slave-Zustand-Maschine 2503 das load_write_counter Signal aufstellt, werden die dritten bis fünften Bits des Adressen-Signals (q2pif_addr[4:2]) in die unteren drei Bits des Zählers 2598 eingeladen, während die oberen drei Bits auf Null gesetzt werden. Dieses Adressen-Offset zeigt an, an welchem dword in einer Cache-Zeile eine gepostete Schreib-Transaktion gestartet wurde. Der Zähler 2598 erhöht sich dann um eins an der ansteigenden Flanke jedes Takt-Impulses, nachdem das load_write_counter Signal weggenommen ist. Der Zähler 2598 wird nicht bei Takt-Impulsen erhöht, während denen die initiierende Vorrichtung einen Initiator-Warte-Zustand eingesetzt hat (d. h. p2q_irdy ist aufgestellt). Der Ausgang des Gates 2596 bestimmt, wann dem Zähler erlaubt wird, sich zu erhöhen. Wenn alle Bits in dem pmw_counter[5L0] Signal hoch sind, hat das gepostete Schreiben das Ende der achten Cache-Zeile erreicht.A dword counter 2598 generates a pmw_counter [5: 0] signal indicating the number of dwords written by the initiating bus during a posted write transaction. The pmw_counter [5: 0] signal is then used to indicate when an overflow has occurred or when the last line of the transaction has been reached, as discussed below. When the slave state machine 2503 When the load_write_counter signal is asserted, the third to fifth bits of the address signal (q2pif_addr [4: 2]) become the lower three bits of the counter 2598 while the upper three bits are set to zero. This address offset indicates at which dword in a cache line a posted write transaction was started. The counter 2598 then increases by one on the rising edge of each clock pulse after the load_write_counter signal is removed. The counter 2598 is not incremented at clock pulses during which the initiating device has initiated an initiator wait state (ie, p2q_irdy is asserted). The exit of the gate 2596 determines when the counter is allowed to increase. If all the bits in the pmw_counter [5L0] signal are high, the posted write has reached the end of the eighth cache line.

Wie wiederum die 81A bis 81C zeigen, erzeugt der Schreib-Befehl-Logik-Block 2566 ein Vier-Bit-Schreib-Befehl-Signal (write_cmd[3:0]), das den Befehl-Code der geposteten Schreib-Transaktion anzeigt, die auf dem PCI-Bus ausgeführt werden soll. Falls der Befehl-Code, gespeichert in der PMWQ, einen Speicher-Schreib- und Ungültigkeits-Befehl darstellt (pmwq_cmd[3] = „1"), erzeugt die Schreib-Befehl-Logik 2566 einen Schreib-Befehl-Code von „1111". Falls der PMWQ-Befehl-Code einen Speicher-Schreib-Befehl darstellt, verriegelt sich die Schreib-Befehl-Logik 2566 an dem Speicher-Schreib-zu-Speicher-Schreib- und Ungültigkeits-Konfigurations-Bit (cfg2q_mw2mwi) entsprechend dem Target-PCI-Schlitz. Falls das cfg2q_mw2mwi Bit nicht eingestellt ist, erzeugt die Schreib-Befehl-Logik 2566 einen Speicher-Schreib-Befehl („0111"). Falls das Konfigurations-Bit eingestellt ist, erzeugt die Schreib-Befehl-Logik 2566 einen MWI-Befehl, falls die nächste Zeile in dem PMWQ-Daten-Puffer voll ist (pmwg_full_line ist aufgestellt), und erzeugt einen MW-Befehl ansonsten. Die Multiplexer 2568 und 2570 sind so angeordnet, um das write_cmd Signal auf diese Art und Weise zu erzeugen.How the turn 81A to 81C show, the write command logic block generates 2566 a four-bit write command signal (write_cmd [3: 0]) indicating the instruction code of the posted write transaction to be executed on the PCI bus. If the command code stored in the PMWQ represents a memory write and invalidate command (pmwq_cmd [3] = "1"), the write command logic generates 2566 a write command code of "1111." If the PMWQ command code represents a memory write command, the write command logic locks 2566 to the memory write to memory write and invalidate configuration bit (cfg2q_mw2mwi) corresponding to the target PCI slot. If the cfg2q_mw2mwi bit is not set, the write command logic generates 2566 a store write command ("0111"). If the configuration bit is set, the write command logic generates 2566 an MWI instruction if the next row in the PMWQ data buffer is full (pmwg_full_line is asserted) and otherwise generates a MW instruction. The multiplexers 2568 and 2570 are arranged to generate the write_cmd signal in this manner.

Wenn die QPIF eine Transaktion auf dem PCI-Bus ausführt und eine Cache-Zeilen-Grenze erreicht hat, kann die Schreib-Befehl-Logik 2566 ein new_write_cmd Signal aufstellen, das anzeigt, dass die momentane Transaktion zugunsten eines neuen Schreib-Befehls beendet werden muss. Falls die Transaktion die letzte Cache-Zeile in dem PMWQ-Daten-Puffer erreicht hat (d. h. pmwq_pointer[5:3] entspricht „111"), wird das new_write Befehl-Signal aufgestellt, um anzuzeigen, dass die Transaktion beendet werden sollte, falls der nächste PMWQ-Puffer nicht ein Überlauf-Puffer ist, gültige Daten enthaltend, falls das entsprechende cfg2q_mw2mwi Bit nicht eingestellt ist, oder falls die full line Bits entsprechend zu der momentanen Cache-Zeile und der nächsten Cache-Zeile unterschiedlich sind (d. h. pmwq_full_line[7] entspricht nicht pmwq_next_full_line). Falls die Transaktion nicht das Ende des PMWQ-Puffers erreicht hat, wird das new_write_cmd Signal aufgestellt, entweder falls die nächste Zeile in dem PMWQ-Puffer nicht gültige Daten enhält (!pmwq_valid_lines[x + 1]), oder falls das cdfg2q_mw2mwi Bit eingestellt ist und die Voll-Zeilen-Bits für die momentane Zeile und die nächste Zeile unterschiedlich sind (d. h. pmwq_full_line[x] entspricht nicht pmwq_full_line[x + 1]). Gates 2572, 2474, 2576, 2578 und 2580 und ein Multiplexer 2582 sind so angeordnet, um das new_write Befehl-Signal auf diese Art und Weise zu erzeugen.When the QPIF executes a transaction on the PCI bus and has reached a cache line limit, the write command logic may 2566 Set up a new_write_cmd signal indicating that the current transaction must be terminated in favor of a new write command. If the transaction is the last has reached the cache line in the PMWQ data buffer (ie, pmwq_pointer [5: 3] corresponds to "111"), the new_write command signal is asserted to indicate that the transaction should be terminated if the next PMWQ transaction is completed. Buffer is not an overflow buffer containing valid data if the corresponding cfg2q_mw2mwi bit is not set, or if the full line bits corresponding to the current cache line and the next cache line are different (ie, pmwq_full_line [7] does not match pmwq_next_full_line). If the transaction has not reached the end of the PMWQ buffer, the new_write_cmd signal is asserted, either if the next line in the PMWQ buffer contains invalid data (! pmwq_valid_lines [x + 1]), or if the cdfg2q_mw2mwi Bit is set and the full-row bits are different for the current row and the next row (ie, pmwq_full_line [x] does not correspond to pmwq_full_line [x + 1]). Gates 2572 . 2474 . 2576 . 2578 and 2580 and a multiplexer 2582 are arranged to generate the new_write command signal in this manner.

Nachdem das new_write_cmd Signal aufgestellt ist, wird die Transaktion nicht beendet, bis der Schreib-Befehl-Logik-Block 2566 ein synchrones, neues Schreib-Befehl-Signal aufstellt (held_new_write_cmd). Das held_new_write_cmd Signal wird an dem ersten Taktimpuls aufgestellt, nachdem das new_write_cmd Signal aufgestellt ist und das end_of_line Signal aufgestellt ist, was anzeigt, dass das Ende der Cache-Zeile erreicht worden ist, so lange wie die PCI-Schnittstelle nicht die Transaktion beendet hat (d. h. p2q_start_pulse ist aufgestellt). Der held_new_write Befehl wird bei einem Reset und bei dem ersten Takt-Impuls weggenommen, nachdem die new_write_cmd, end_of-line und p2q_start_pulse Signale weggenommen sind und die QPIF die Transaktion beendet (d. h. das asynchrone early_cyc_complete Signal ist aufgestellt). Ansonsten behält das held_new_write_cmd Signal seinen momentanen Wert. Gates 2584 und 2586, ein Invertierer 2588 und ein Flip-Flop 2590 sind so angeordnet, um das held_new_write_cmd Signal auf diese Art und Weise zu erzeugen.After the new_write_cmd signal is asserted, the transaction is not terminated until the Write Command Logic Block 2566 sets up a synchronous new write command signal (held_new_write_cmd). The held_new_write_cmd signal is asserted on the first clock pulse after the new_write_cmd signal is asserted and the end_of_line signal is asserted, indicating that the end of the cache line has been reached as long as the PCI interface has not completed the transaction ( ie p2q_start_pulse is set up). The held_new_write command is deasserted on a reset and on the first clock pulse after the new_write_cmd, end_of-line, and p2q_start_pulse signals are cleared and the QPIF terminates the transaction (ie, the asynchronous early_cyc_complete signal is asserted). Otherwise, the held_new_write_cmd signal retains its current value. Gates 2584 and 2586 , an inverter 2588 and a flip-flop 2590 are arranged to generate the held_new_write_cmd signal in this manner.

Wie wiederum 75 und auch 82A zeigen, umfasst die QPIF einen Überlauf-Logik-Block 2600, der der Master-Zustand-Maschine 2500 ermöglicht, Überlauf-Daten zu verwalten, falls irgendwelche vorhanden sind, wenn eine gepostete Schreib-Transaktion auf dem Target-Bus ausgeführt wird. Wenn die QPIF ein Transaktions-Lauf-Signal (mca_run_pmw oder mca_run_dr, wie vorstehend diskutiert ist) von dem MCA empfängt, erzeugt die Überlauf-Logik 2600 ein Zwei-Bit-Initial-Warteschlangen-Auswahl-Signal (start_queu_select[2:0]), was anzeigt, welcher der Puffer in der PMWQ oder der DRQ ausgewählt werden sollte, um die momentane Transaktion laufen zu lassen. Die folgende Tabelle stellt dar, wie das start_queue_select Signal erzeugt wird.Like again 75 and also 82A show, the QPIF comprises an overflow logic block 2600 who is the master state machine 2500 allows to manage overflow data, if any, when a posted write transaction is executed on the target bus. When the QPIF receives a transaction run signal (mca_run_pmw or mca_run_dr as discussed above) from the MCA, the overflow logic generates 2600 a two-bit initial queue select signal (start_queu_select [2: 0]), which indicates which of the buffers in the PMWQ or DRQ should be selected to run the current transaction. The following table shows how the start_queue_select signal is generated.

Figure 00630001
Erzeugung eines start_queue_select Signals
Figure 00630001
Generation of a start_queue_select signal

Wenn die QPIF eine gepostete Schreib-Transaktion auf dem Target-Bus ausführt, wird ein Zwei-Bit-QPIF-Warteschlangen-Auswahl-Signal (q2pif_queue_select[1:0]) verwendet, um den geeigneten Puffer in der PMWQ auszuwählen. Wenn die Transaktion initiiert wird, stellt die Master-Zustand-Maschine 2500 ein Warteschlangen-Auswahl-Signal auf (initial_queue_select), das bewirkt, dass das q2pif_queue_select Signal den Wert des anfänglichen Warteschlangen-Auswahl-Signals annimmt (start_queue_select). Zu demselben Zeitpunkt wird ein Warteschlangen-Auswahl-Zähler 2602 mit dem Wert des start_queue_select Signals geladen. Nachdem das initial_queue_select Signal weggenommen ist, nimmt das q2pif_queue_select Signal den Wert des count_queue_select Signals an, erzeugt durch den Zähler 2602. Wenn die gepostete Speicher-Schreib-Transaktion in den nächsten PMWQ-Puffer überläuft, stellt die Master-Zustand-Maschine 2500 ein Erhöhungs-Warteschlangen-Auswahl-Signal (inc_queue_select) auf, das bewirkt, dass sich der Zähler 2602 um Eins erhöht. Als Folge wird das q2pif_select_signal erhöht und der nächste Puffer in der PMWQ wird ausgewählt, um die Transaktion fortzuführen. Ein Mulitplexer 2604 bestimmt den Wert des q2pif_queue_select Signals.When the QPIF performs a posted write transaction on the target bus, a two-bit QPIF queue selection signal (q2pif_queue_select [1: 0]) is used to select the appropriate buffer in the PMWQ. When the transaction is initiated, the master state machine stops 2500 an initial_queue_select, which causes the q2pif_queue_select signal to take on the value of the initial queue select signal (start_queue_select). At the same time, a queue selection counter 2602 loaded with the value of the start_queue_select signal. After the initial_queue_select signal is removed, the q2pif_queue_select signal takes on the value of the count_queue_select signal generated by the counter 2602 , When the posted memory write transaction overflows into the next PMWQ buffer, the master state machine stops 2500 an increase queue selection signal (inc_queue_select), which causes the counter 2602 increased by one. As a result, the q2pif_select_signal is incremented and the next buffer in the PMWQ is selected to continue the transaction. A multiplexer 2604 determines the value of the q2pif_queue_select signal.

Wie auch 82B zeigt, stellt die Überlauf-Logik 2600 ein overflow_next_queue Signal auf, wenn die Master-Zustand-Maschine 2500 fortführen sollte, Informationen von dem nächsten PMWQ-Puffer während einer geposteten Speicher-Schreib-Transaktion zu sammeln. Unter Verwendung des q2pif_queue_select[1:0] Signals um zu bestimmen, welche PMWQ momentan ausgewählt ist, stellt die Überlauf-Logik 2600 das overflow_next_queue Signal auf, wenn das gültige Bit (pmwq_valid) und ein Überlauf-Bit (pwq_overflow) entsprechend zu dem nächsten PMWQ-Puffer eingestellt sind. Die pmwq_valid und die pmwq_overflow Zeichen werden nachfolgend diskutiert. Gates 2606, 2608, 2610 und 2612 und ein Multiplexer 2614 sind so angeordnet, um das overflow_next_queue Signal auf diese Art und Weise zu erzeugen.As well as 82B shows, sets the overflow logic 2600 an overflow_next_queue signal on when the master state machine 2500 should continue to gather information from the next PMWQ buffer during a posted memory write transaction. Using the q2pif_queue_select [1: 0] signal to determine which PMWQ is currently selected sets the overflow logic 2600 the overflow_next_queue signal if the valid bit (pmwq_valid) and an overflow bit (pwq_overflow) are set according to the next PMWQ buffer. The pmwq_valid and the pmwq_overflow characters are discussed below. Gates 2606 . 2608 . 2610 and 2612 and a multiplexer 2614 are arranged to generate the overflow_next_queue signal in this manner.

Wie wiederum 75 zeigt, umfasst die QPIF einen Lese-Ausrichtungs-Logik-Block 2616, der der QPIF ermöglicht, fehlausgerichtete Speicher-Lese-Zeilen- und Speicher-Lese-Mehrfach-Transaktionen zu korrigieren. Eine Lese-Zeilen Korrektur tritt dann auf, wenn die QPIF, während sie in dem Master-Mode arbeitet, eine MRL- oder MRM-Transaktion empfängt, die in der Mitte einer Cache-Zeile beginnt. Um Transaktions-Zeit zu reduzieren, beginnt die QPIF die Lese-Transaktion an der Cache-Zeilen-Grenze und ignoriert die nicht angeforderten dwords anstelle eines individuellen Lesens nur der angeforderten dwords von Daten.Like again 75 shows, the QPIF comprises a read alignment logic block 2616 that allows the QPIF to correct misaligned memory read line and memory read multiple transactions. A read-line correction occurs when the QPIF, while operating in the master mode, receives a MRL or MRM transaction that begins in the middle of a cache line. To reduce transaction time, the QPIF starts the read transaction at the cache line limit and ignores the unsolicited dwords instead of individually reading only the requested dwords of data.

Unter Bezugnahme auch auf 83 aktiviert die Lese-Ausrichtungs-Logik 2616 das Lese-Ausrichtungs-Merkmal durch Aufstellen eines align_read Signals. Dieses Signal wird dann aufgestellt, wenn der Befehl, gespeichert in dem entsprechenden DRQ-Puffer, ein Speicher-Lese-Zeilen oder ein Speicher-Lese-Mehrfach-Befehl ist (d. h. drq_cmd[3:0] entspricht „1110" oder „1100" jeweils), und wenn das Lese-Ausrichtungs-Konfigurations-Bit (cfg2q_read_align) entsprechend zu der Target-PCI-Vorrichtung eingestellt ist. Gates 2618 und 2620 sind so angeordnet, um das align_read Signal auf diese Art und Weise zu erzeugen.With reference also to 83 activates the read alignment logic 2616 the read alignment feature by setting up an align_read signal. This signal is asserted when the instruction stored in the corresponding DRQ buffer is a memory read line or a memory read multiple instruction (ie drq_cmd [3: 0] corresponds to "1110" or "1100"). each), and when the read alignment configuration bit (cfg2q_read_align) is set corresponding to the target PCI device. Gates 2618 and 2620 are arranged to generate the align_read signal in this manner.

Wie wiederum die 84A bis 84C zeigen, umfasst die Lese-Ausrichtungs-Logik 2616 einen Lese-Ausrichtungs-Abwärts-Zähler 2622, der die dwords von jeder Cache-Zeilen-Grenze zählt und anzeigt, wenn die Master-Zustand-Maschine 2500 das erste, angeforderte dword erreicht. Der Zähler 2622 umfasst eine Zustand-Maschine 2624, die die Betriebsweise des Zählers 2622 steuert.How the turn 84A to 84C include the read alignment logic 2616 a read alignment down counter 2622 which counts the dwords from each cache line boundary and displays if the master state machine 2500 reached the first, requested dword. The counter 2622 includes a state machine 2624 indicating the operation of the meter 2622 controls.

Bei einem Reset tritt der Zähler 2622 in einen IDLE_CNT Zustand 2626 ein, in dem keine Zählung auftritt. Wenn der MCA die QPIF dahingehend instruiert, eine verzögerte Anforderungs-Transaktion auf dem PCI-Bus laufen zu lassen (d. h. wenn irgendwelche Bits in dem mca_run_dr[3:0] aufgestellt sind), stellt die QPIF ein verzögertes Anforderungs-Lauf-Signal auf (any_drq_run), was anzeigt, dass sie versucht, eine verzögerte Anforderungs-Transaktion laufen zu lassen. Während sich der Zähler in dem IDLE_CNT Zustand 2622 befindet, wird sein Drei-Bit-Ausgangs-Signal (throw_cnt[2:1]) mit dem dword offset der Transaktion-Adresse (drq_addr[4:2]) geladen, wenn das any_run_drq Signal aufgestellt ist und die QPIF die Steuerung des PCI-Busses erhält (d. h. p2q_ack wird aufgestellt). Das Gate 2623 erzeugt das Lade-Freigabe-Signal. Dann tritt, an der ansteigenden Flanke des nächsten PCI-Takt-Zyklus, der Zähler 2622 in den COUNT Zustand 2628 ein. Falls die Transaktion an einer Cache-Zeilen-Grenze beginnt, gleicht das dword offset „000" und keine Zählung wird benötig. Wenn eine Lese-Ausrichtung aktiviert wird, beginnt die Master-Zustand-Maschine 2500 jede MRL- und MRM-Transaktion an der Cache-Zeilen-Grenze, ungeachtet der tatsächlichen Start-Adresse.When a reset occurs, the counter 2622 in an IDLE_CNT state 2626 one in which no count occurs. If the MCA instructs the QPIF to run a delayed request transaction on the PCI bus (ie, if any bits are placed in the mca_run_dr [3: 0]), the QPIF will issue a delayed request run signal ( any_drq_run), indicating that it is attempting to run a delayed request transaction. While the counter is in the IDLE_CNT state 2622 its three-bit output signal (throw_cnt [2: 1]) is loaded with the dword offset of the transaction address (drq_addr [4: 2]) when the any_run_drq signal is asserted and the QPIF is controlling the PCI Bus gets (ie p2q_ack is set up). The gate 2623 generates the charge enable signal. Then, at the rising edge of the next PCI clock cycle, the counter occurs 2622 in the COUNT state 2628 one. If the transaction starts at a cache line limit, the dword offset equals "000" and no count is needed. When a read alignment is activated, the master state machine starts 2500 any MRL and MRM transaction at the cache line boundary, regardless of the actual start address.

Während sich der Zähler 2622 in dem COUNT Zustand 2628 befindet, verringert er sich um Eins bei jedem Takt-Impuls, solange wie das p2q_ack Signal aufgestellt ist, throw_cnt nicht Null erreicht hat, sich die Transaktion in der Daten-Phase befindet (d. h. das asynchrone Signal eary_data_phase ist aufgestellt) und die Target-Vorrichtung nicht einen Target-Ready-Warte-Zustand (!p2q_trdy) ausgegeben hat. Das Gate 2625 bestimmt, wann der Zähler erniedrigt wird. Falls die PCI-Schnittstelle den Bus von der QPIF wegnimmt (p2q_ack wird weggenommen) oder falls die Daten-Phase endet (early_data_phase wird weggenommen), beendet der Zähler 2622 ein Erniedrigen und tritt erneut in den IDLE_CNT Normalzustand 2626 ein. Falls das throw_cnt Signal „000" erreicht, während das p2q_ack Signal noch aufgestellt ist, stoppt der Zähler 2622 ein Zählen und tritt in den DONE Zustand 2630 ein. Ansonsten verbleibt der Zähler in dem COUNT Zustand 2628.While the counter 2622 in the COUNT state 2628 It decreases by one on each clock pulse as long as the p2q_ack signal is asserted, throw_cnt has not reached zero, the transaction is in the data phase (ie the asynchronous signal eary_data_phase is asserted) and the target device did not issue a target ready wait state (! p2q_trdy). The gate 2625 determines when the counter is lowered. If the PCI interface removes the bus from the QPIF (p2q_ack is removed) or if the data phase ends (early_data_phase is removed), the counter ends 2622 a decrease and reenter the IDLE_CNT normal state 2626 one. If the throw_cnt signal reaches "000" while the p2q_ack signal is still established, the counter stops 2622 a count and enters the DONE state 2630 one. Otherwise, the counter remains in the COUNT state 2628 ,

Wenn der Zähler „000" erreicht, stellt die Lese-Ausrichtungs-Logik 2616 ein read_data_start Signal auf, das die Master-Zustand-Maschine 2500 instruiert, ein Lesen von Daten von der Target-Vorrichtung zu beginnen. Ein Komparator 2632 erzeugt das read_data_start Signal. Nachdem das read_data_start Signal aufgestellt ist, verbleibt der Zähler 2622 in dem DONE Zustand 2630 bis die Daten-Phase endet (early_data_phase wird weggenommen).When the counter reaches "000", the read alignment logic sets 2616 a read_data_start signal is issued to the master state machine 2500 instructed to begin reading data from the target device. A comparator 2632 generates the read_data_start signal. After the read_data_start signal on is set, the counter remains 2622 in the DONE state 2630 until the data phase ends (early_data_phase is removed).

Wie 85 zeigt, steuert die Master-Zustand-Maschine die Betriebsweise der QPIF, wenn die QPIF in dem Master-Mode arbeitet. In dem Master-Mode führt die QPIF gepostete Schreib-Transaktionen und verzögerte Anforderungs-Transaktionen auf dem PCI-Bus aus. Die folgende Tabelle stellt die Ereignisse dar, die Zustand-Übergänge in der Master-Zustand-Maschine bewirken.As 85 shows, the master state machine controls the operation of the QPIF when the QPIF is operating in the master mode. In the master mode, the QPIF executes posted write transactions and delayed request transactions on the PCI bus. The following table shows the events that cause state transitions in the master state machine.

Figure 00670001
Master-Zustand-Transaktionen
Figure 00670001
Master state transactions

Bei einem Reset tritt die Master-Zustand-Maschine in einen IDLE Zustand 2700 ein, in dem die QPIF auf Instruktionen wartet, um eine Transaktion auf dem PCI-Bus laufen zu lassen. Wenn die QPIF ein Lauf-Signal von dem MCA empfängt (any_run wird aufgestellt, wenn irgendein Bit in dem mca_run_pmw Signal oder dem mca_run_dr Signal aufgestellt ist), ist das Kabel nicht belegt, eine Nachricht weiterleitend (!cable_busy), und die PCI-Schnittstelle versucht nicht, die vorherige Transaktion zu beenden (!p2q_master_dphase), die Master-Zustand-Maschine versucht, die Transaktion auf dem PCI-Bus laufen zu lassen. Falls die Transaktion eine verzögerte Anforderungs-Transaktion ist (any_run_drq ist aufgestellt) und der andere Chip keinen Raum für einen verzögerten Abschluss hat (tc_dc_full ist aufgestellt), ist die Master-Zustand-Maschine nicht in der Lage, die Anforderung laufen zu lassen, und führt den MCA zu der nächsten Transaktion weiter. Ansonsten beginnt, falls die PCI-Schnittstelle die QPIF Steuerung des Busses (p2q_ack ist aufgestellt) gegeben hat, die Master-Zustand-Maschine damit, die Transaktion auf dem PCI-Bus auszuführen. In dem IDLE Zustand 2700 liefert der Master die Adressen-Phasen-Informationen, die vorstehend diskutiert sind, zu dem PCI-Bus. Falls die Transaktion, die laufen soll, ein Dual-Adressen-Zyklus ist (q2pif_dac_flag ist aufgestellt), tritt die Master-Zustand-Maschine in einen MASTER_DAC Zustand 2702 ein, in dem die zweite Hälfte der Adressen-Informationen geliefert wird. Falls die Transaktion nicht ein Dual-Adressen-Zyklus ist und eine verzögerte Anforderungs-Transaktion ist (any_run_drq ist aufgestellt), dann tritt die Master-Zustand-Maschine in einen RDATA1 Lese-Zustand 2704 ein, indem die Master-Zustand-Maschine die Datenphase der verzögerten Anforderungs-Transaktion beginnt. Falls die Transaktion nicht ein Dual-Adressen-Zyklus ist und nicht eine verzögerte Anforderung ist, ist sie eine gepostete Speicher-Schreib-Transaktion, so dass die Master-Zustand-Maschine in einen WDATA1 Schreib-Zustand 2706 eintritt, indem die Master-Zustand-Maschine in die Datenphase der geposteten Speicher-Schreib-Transaktion eintritt.Upon a reset, the master state machine enters an IDLE state 2700 in which the QPIF waits for instructions to run a transaction on the PCI bus. If the QPIF is a run-Si gnal from the MCA (any_run is asserted if any bit in the mca_run_pmw signal or the mca_run_dr signal is asserted), the cable is not busy, forwarding a message (! cable_busy), and the PCI interface is not attempting the previous transaction To finish (! p2q_master_dphase), the master state machine is trying to run the transaction on the PCI bus. If the transaction is a delayed request transaction (any_run_drq is asserted) and the other chip has no space for a delayed completion (tc_dc_full is asserted), the master state machine will be unable to run the request, and Forwards the MCA to the next transaction. Otherwise, if the PCI interface has given the QPIF control of the bus (p2q_ack is set up), the master state machine will begin executing the transaction on the PCI bus. In the IDLE state 2700 The master provides the address phase information discussed above to the PCI bus. If the transaction to be run is a dual address cycle (q2pif_dac_flag is asserted), the master state machine enters a MASTER_DAC state 2702 in which the second half of the address information is delivered. If the transaction is not a dual-address cycle and is a delayed request transaction (any_run_drq is asserted), then the master state machine enters an RDATA1 read state 2704 in that the master state machine begins the data phase of the delayed request transaction. If the transaction is not a dual address cycle and is not a deferred request, it is a posted memory write transaction, so the master state machine enters a WDATA1 write state 2706 occurs by the master state machine entering the data phase of the posted memory write transaction.

In dem MASTER_DAC Zustand 2704 = 2 liefert die Master-Zustand-Maschine die zweite Hälfte der Adressen-Phasen-Informationen. Dann tritt, falls das p2q_ack Signal noch aufgestellt ist und die Transaktion eine verzögerte Anforderung ist, die Master-Zustand-Maschine in den RDATA1 Zustand 2704 ein, wenn sie das Start-Signal (p2q_start_pulse) von der PCI-Schnittstelle empfängt. Falls die Transaktion nicht eine verzögerte Anforderung ist, tritt die Master-Zustand-Maschine in den WDATA1 Zustand 2706 ein, wenn sie den PCI-Start-Impuls empfängt. Die Master-Zustand-Maschine initiiert auch eine verzögerte Abschluss-Nachricht auf dem Kabel, wenn der PCI-Start-Impuls empfangen ist, durch Aufstellen eines Asynchron-Abschluss-Nachrichten-Signals (early_master_send_message). Falls das p2q_ack Signal durch die PCI-Schnittstelle weggenommen worden ist, kehrt die Master-Zustand-Maschine zu dem IDLE Zustand 2700 zurück und wartet darauf, erneut die Transaktion zu versuchen.In the MASTER_DAC state 2704 = 2, the master state machine supplies the second half of the address phase information. Then, if the p2q_ack signal is still asserted and the transaction is a deferred request, the master state machine enters the RDATA1 state 2704 when it receives the start signal (p2q_start_pulse) from the PCI interface. If the transaction is not a deferred request, the master state machine enters the WDATA1 state 2706 when it receives the PCI start pulse. The master state machine also initiates a delayed completion message on the cable when the PCI start pulse is received by establishing an asynchronous completion message signal (early_master_send_message). If the p2q_ack signal has been removed by the PCI interface, the master state machine returns to the IDLE state 2700 back and waiting to try the transaction again.

Der RDATA1 Zustand 2704 ist der Anfangs-Zustand für verzögerte Lese- und verzögerte Schreib-Anforderungen. In diesem Zustand wartet die Master-Zustand-Maschine auf den PCI-Start-Impuls, und zwar vor Eintreten in eine RBURST Burst-Daten-Phase 2708. Wenn die Zustand-Maschine zuerst in den RDATA1 Zustand 2704 eintritt, initiiert sie eine Abschluss-Nachricht auf dem Kabel, falls dies nicht schon bereits in dem MASTER_DAC Zustand 2702 vorgenommen ist. Dann beendet, falls das p2q_ack durch die PCI-Schnittstelle weggenommen ist, die Master-Zustand-Maschine die Transaktion, führt den MCA zu der nächsten Transaktion weiter, und tritt erneut in den IDLE Zustand 2700 ein. Ansonsten präpariert, wenn der PCI-Start-Puls erscheint, sich die Master-Zustand-Maschine so, um in den RBURST Zustand 2708 einzutreten. Falls die QPIF das Ende der Transaktion anzeigt (queue_cyc_complete) oder falls die Transaktion eine 4K Seiten-Grenze erreicht hat (read_page_disconnect ist aufgestellt, da alle Bits in dem drq_addr[11:2] Signal hoch sind), entfernt die Master-Zustand-Maschine das frame_signal von der QPIF und zeigt an, dass der nächste Teil an Daten der letzte Teil ist (asynchrones Signal early_last_master data ist aufgestellt), bevor in den RBURST Zustand 2708 eingetreten wird. Die Master-Zustand-Maschine stellt auch ein asynchrones early_master_lastline Signal auf, das anzeigt, dass die letzte Zeile von Daten erreicht worden ist, falls das read_page_disconnect_lastline Signal aufgestellt ist oder falls das DRQ-Last-Zeilen-Signal (drq_lastline) aufgestellt ist und die QPIF nicht ein Streaming-Signal von dem anderen Brücken-Chip empfangen hat (cd_stream oder stream_match sind nicht aufgestellt oder cfq2q_stream_disable ist nicht eingestellt). Falls der PCI-Start-Impuls nicht aufgestellt ist, verbleibt die Master-Zustand-Maschine in dem RDATA1 Zustand 2704, bis die QPIF die Transaktion beendet oder eine 4K Seiten-Grenze erreicht ist, was die Zustand-Maschine zu dem IDLE Zustand 2700 zurückführen wird, oder bis der PCI-Start-Impuls erscheint, was die Zustand-Maschine dazu bringt, in den RBURST Zustand 2708 einzutreten.The RDATA1 state 2704 is the initial state for delayed read and delayed write requests. In this state, the master state machine waits for the PCI start pulse before entering an RBURST burst data phase 2708 , When the state machine first enters the RDATA1 state 2704 If so, it initiates a completion message on the cable, if not already in the MASTER_DAC state 2702 is made. Then, if the p2q_ack is taken away by the PCI interface, the master state machine completes the transaction, advances the MCA to the next transaction, and reenters the IDLE state 2700 one. Otherwise, when the PCI startup pulse appears, the master state machine prepares to enter the RBURST state 2708 enter. If the QPIF indicates the end of the transaction (queue_cyc_complete) or if the transaction has reached a 4K page boundary (read_page_disconnect is asserted because all bits in the drq_addr [11: 2] signal are high), the master state machine clears the frame_signal from the QPIF, indicating that the next part of data is the last part (asynchronous signal early_last_master data is asserted), before entering the RBURST state 2708 is entered. The master state machine also asserts an asynchronous early_master_lastline signal indicating that the last row of data has been reached, if the read_page_disconnect_lastline signal is asserted or if the DRQ load line signal (drq_lastline) is asserted and the QPIF has not received a streaming signal from the other bridge chip (cd_stream or stream_match are not set up or cfq2q_stream_disable is not set). If the PCI start pulse is not established, the master state machine remains in the RDATA1 state 2704 until the QPIF completes the transaction or a 4K page boundary is reached, causing the state machine to go to the IDLE state 2700 or until the PCI start pulse appears, causing the state machine to enter the RBURST state 2708 enter.

In dem RBURST Zustand 2708 führt die Master-Zustand-Maschine burstmäßig Daten zu dem PCI-Bus. Falls eine Abschluss-Nachricht bis jetzt noch nicht initiiert worden ist, initiiert die Master-Zustand-Maschine eine Abschluss-Nachricht unter Eintreten in den RBURST Zustand 2708. Dann beendet, falls das p2q_ack Signal weggenommen ist, oder falls die QPIF Transaktion erneut durch die PCI-Schnittstelle versucht wird (p2q_retry ist aufgestellt), oder falls die PCI-Schnittstelle die Transaktion aussondert (p2q_target_abort ist aufgestellt), beendet die Master-Zustand-Maschine die Transaktion auf dem PCI-Bus, sondert die Abschluss-Nachricht auf dem Kabel aus und kehrt zu dem IDLE Zustand zurück. Wenn das p2q_ack Signal weggenommen ist, fährt der Master-Zyklus-Arbitrierer fort, die momentane Transaktion auszuwählen. Wenn allerdings die Transaktion erneut aufgesucht oder ausgesondert ist, führt die Master-Zustand-Maschine den MCA zu der nächsten Transaktion weiter.In the RBURST state 2708 The master state machine bursts data to the PCI bus. If a completion message has not yet been initiated, the master state machine initiates a completion message entering the RBURST state 2708 , Then, if the p2q_ack signal is removed, or if the QPIF transaction is again attempted by the PCI interface (p2q_retry is asserted), or if the PCI interface discards the transaction (p2q_target_abort is asserted), then the master state terminates. Machine the transaction on the PCI bus, discard the completion message on the cable and return to the IDLE state. If the p2q_ack signal is gone is taken, the master cycle arbitrator continues to select the current transaction. However, if the transaction is retrieved or discarded, the master state machine continues the MCA to the next transaction.

Während das p2q_ack Signal noch aufgestellt ist und die QPIF-Transaktion nicht erneut versucht oder ausgesondert wird, beendet die Master-Zustand-Maschine niemals die Transaktion und kehrt zu dem IDLE Zustand 2700 zurück, falls eine 4K Seiten-Grenze erreicht ist und die PCI-Schnittstelle anzeigt, dass die Target-Vorrichtung aufgehört hat, Daten aufzunehmen (p2q_trdy ist nicht länger aufgestellt). Falls die Target-Vorrichtung den letzten Teil von Daten nimmt, verbleibt die Zustand-Maschine in dem RBURST Zustand 2708.While the p2q_ack signal is still asserted and the QPIF transaction is not retried or discarded, the master state machine never quits the transaction and returns to the IDLE state 2700 back if a 4K page boundary is reached and the PCI interface indicates that the target device has stopped recording data (p2q_trdy is no longer mounted). If the target device takes the last part of data, the state machine remains in the RBURST state 2708 ,

Falls die QPIF das queue_cyc_complete Signal aufstellt, was anzeigt, dass die Transaktion abgeschlossen ist, wird der Master allgemein die Transaktion beenden und zu dem IDLE Zustand 2700 zurückkehren, falls das p2q_trdy Signal weggenommen ist oder in dem RBURST Zustand 2708 verbleibt, bis das letzte dword an Daten übertragen wird, falls das p2q_trdy Signal aufgestellt verbleibt. Falls sich allerdings die Transaktion in der Daten-Phase befindet und sich nicht in der letzten Daten-Phase befindet (p2q_master_dphase und !p2q_last_dphase) und eine Datenfolge mit dem anderen Brücken-Chip eingerichtet worden ist (cd_stream und stream_match und !cfg2q_stream_disable), wird die Master-Zustand-Maschine in der RBURST-Phase indefinit verbleiben. Wenn sich die QPIF in einem Streaming-Vorgang befindet, stellt die Master-Zustand-Maschine ein Streaming-Signal auf (q2pif_streaming), das die QPIF dazu bringt, fortzufahren, Daten zu der anfordernden Vorrichtung auf dem anderen PCI-Bus zu liefern, bis die Vorrichtung die Transaktion beendet.If the QPIF asserts the queue_cyc_complete signal, indicating that the transaction is complete, the master will generally terminate the transaction and return to the IDLE state 2700 return if the p2q_trdy signal is removed or in the RBURST state 2708 remains until the last dword is transferred to data if the p2q_trdy signal remains asserted. However, if the transaction is in the data phase and is not in the last data phase (p2q_master_dphase and! P2q_last_dphase) and a data string has been established with the other bridge chip (cd_stream and stream_match and! Cfg2q_stream_disable), the Master state machine indefinitely in the RBURST phase. When the QPIF is in a streaming operation, the master state machine sets up a streaming signal (q2pif_streaming) that causes the QPIF to continue to supply data to the requesting device on the other PCI bus until the device ends the transaction.

Falls das p2q_ack Signal aufgestellt verbleibt und weder das p2q_retry, das p2q_target_abort oder das queue_cyc_complete Signal aufgestellt ist, sieht die Master-Zustand-Maschine bei dem p2q_trdy Signal nach. Falls das Signal nicht aufgestellt ist, was anzeigt, dass die Target-Vorrichtung den letzten Teil von Daten genommen oder geliefert hat, stellt die Master-Zustand-Maschine deren nächstes Daten-Signal auf (early_next_data), das anzeigt, dass die QPIF bereit ist, einen anderen Teil von Daten zu übertragen. Das nächste Daten-Signal wird nur dann aufgestellt, falls die Transaktion nicht eine korrekte Lesung ist (align_read ist nicht aufgestellt) oder falls die Transaktion eine korrekte Lesung ist und das read_data_start Signal aufgestellt worden ist. Falls das p2q_trdy Signal aufgestellt ist, was anzeigt, dass das Target nicht die letzte Daten-Übertragung durchgeführt hat, verbleibt die Zustand-Maschine in dem RBURST Zustand 2708.If the p2q_ack signal remains set up and neither the p2q_retry, p2q_target_abort, or queue_cyc_complete signal is asserted, the master state machine looks for the p2q_trdy signal. If the signal is not asserted, indicating that the target device has taken or delivered the last piece of data, the master state machine sets its next data signal (early_next_data) indicating that the QPIF is ready to transfer another part of data. The next data signal is asserted only if the transaction is not a correct read (align_read is not set up) or if the transaction is a correct read and the read_data_start signal has been asserted. If the p2q_trdy signal is asserted, indicating that the target has not performed the last data transfer, the state machine remains in the RBURST state 2708 ,

In dem WDATA1 Zustand 2706 beginnt die Master-Zustand-Maschine die Daten-Phase einer geposteten Speicher-Schreib-Transaktion. Falls das p2q_ack Signal weggenommen ist oder die p2q_retry oder das p2q_target_abort Signal aufgestellt ist, während sich die Master-Zustand-Maschine in diesem Zustand befindet, wird die Transaktion auf dem PCI-Bus beendet und die Zustand-Maschine kehrt zu dem IDLE Zustand 2700 zurück. Wenn das p2q_ack Signal weggenommen ist, verbleibt der MCA bei dem momentanen Zyklus; ansonsten führt die Master-Zustand-Maschine die MCA schrittmäßig zu der nächsten Transaktion weiter.In the WDATA1 state 2706 The master state machine begins the data phase of a posted memory write transaction. If the p2q_ack signal is removed or the p2q_retry or p2q_target_abort signal is asserted while the master state machine is in this state, the transaction on the PCI bus is terminated and the state machine returns to the IDLE state 2700 back. When the p2q_ack signal is removed, the MCA remains at the current cycle; otherwise, the master state machine progressively advances the MCA to the next transaction.

Falls das p2q_ack Signal aufgestellt verbleibt und die Transaktion weder erneut aufgesucht noch ausgesondert wird, muss die Master-Zustand-Maschine bestimmen, ob der Schreibvorgang ein einzelnes dword oder mehr als ein dword einsetzt. Falls in dem WDATA1 Zustand das queue_cyc_complete Signal aufgestellt ist, wird das neue Halte-Schreib-Befehl-Signal aufgestellt, die end_of_line und new_write_cmd Signale werden aufgestellt, oder die Transaktion hat das letzte dword von Daten erreicht, die Transaktion setzt ein einzelnes dword ein. In dieser Situation endet die Transaktion und die Zustand-Maschine kehrt zu dem IDLE Zustand 2700 nur dann zurück, wenn das Target den letzten Teil von Daten nahm (!p2q_trdy). Ansonsten verbleibt die Zustand-Maschine in dem WDATA2 Zustand 2710. Falls die Transaktion mehr als ein dword von Daten einsetzt, tritt die Master-Zustand-Maschine in einen WDATA2-Burst-Daten-Phasen-Zustand 2710 ein. Unmittelbar vor einem Eintreten in den WDATA2 Zustand setzt die Master-Zustand- Maschine einen q2p_irdy Warte-Zustand ein, falls das overflow_next_queue Signal aufgestellt worden ist.If the p2q_ack signal remains asserted and the transaction is neither retrieved nor discarded, the master state machine must determine whether the write is using a single dword or more than one dword. If the queue_cyc_complete signal is asserted in the WDATA1 state, the new hold-write command signal is asserted, the end_of_line and new_write_cmd signals are asserted, or the transaction has reached the last dword of data, the transaction inserts a single dword. In this situation, the transaction ends and the state machine returns to the IDLE state 2700 only back if the target took the last part of data (! p2q_trdy). Otherwise, the state machine remains in the WDATA2 state 2710 , If the transaction uses more than one dword of data, the master state machine enters a WDATA2 burst data phase state 2710 one. Immediately before entering the WDATA2 state, the master state machine enters a q2p_irdy wait state if the overflow_next_queue signal has been asserted.

In dem WDATA2 Zustand 2710 leitet die Master-Zustand-Maschine die Daten burstmäßig zu dem PCI-Bus weiter. Falls das p2q_ack Signal weggenommen ist oder die Transaktion durch die PCI-Schnittstelle ausgesondert ist, wird die Transaktion in der QPIF beendet und die Master-Zustand-Maschine tritt erneut in den IDLE Zustand 2710 ein. Falls die Transaktion erneut durch die PCI-Schnittstelle versucht wird, allerdings die PCI-Schnittstelle die Daten nahm, die geliefert sind (!p2q_trdy), tritt die Master-Zustand-Maschine erneut in den IDLE Zustand 2700 ein. Ansonsten tritt die Zustand-Maschine in einen WRETRY-Stepback-Zustand 2712 ein, der die PMWQ außerhalb des Hinweiszeigers zurück zu dem vorherigen Teil von Daten durch Erzeugen des Rückschreit-Signals, das vorstehend diskutiert ist, führt. Von dem WRETRY Zustand 2712 tritt die Zustand-Maschine immer wieder in den IDLE Zustand 2700 ein.In the WDATA2 state 2710 The master state machine forwards the data bursty to the PCI bus. If the p2q_ack signal is taken away or the transaction is discarded by the PCI interface, the transaction in the QPIF is terminated and the master state machine reenters the IDLE state 2710 one. If the transaction is again attempted by the PCI interface, but the PCI interface took the data that has been delivered (! P2q_trdy), the master state machine again enters the IDLE state 2700 one. Otherwise, the state machine enters a WRETRY stepback state 2712 one leading the PMWQ out of the pointer back to the previous part of data by generating the return signal discussed above. From the WRETRY state 2712 the state machine repeatedly enters the IDLE state 2700 one.

Falls das p2q_ack Signal aufgestellt verbleibt und die Transaktion weder erneut versucht noch ausgesondert ist, bestimmt die Master-Zustand-Maschine, ob die Transaktion abgeschlossen ist. Falls die QPIF das Ende der Transaktion anzeigt (queue_cyc_complete ist aufgestellt) oder das Ende einer Cache-Zeile erreicht ist und ein neuer Schreib-Befehl benötigt wird (end_of_line und new_write_command sind aufgestellt), tritt die Zustand-Maschine in einen WSHORT_BURST Zustand 2714 ein, wenn entweder der letzte Teil der Daten genommen wurde (!p2q_trdy) oder der PCI-Start-Impuls empfangen ist. In jedem Fall müssen nur zwei dwords an Daten zu dem PCI-Bus hingeschrieben werden. Ansonsten verbleibt die Zustand-Maschine in dem WDATA2 Zustand 2710. Wenn die Zustand-Maschine in den WSHORT_BURST Zustand 2714 eintritt, verbleibt das QPIF frame_signal aufgestellt, falls die Transaktion in die nächste Warteschlange überlaufen kann, und ein neuer Schreib-Befehl wird nicht benötigt.If the p2q_ack signal remains asserted and the transaction is neither retried nor discarded, the master state machine determines whether the transaction is complete. If the QPIF indicates the end of the transaction (queue_cyc_complete is asserted) or the end of a cache line is reached and a new write command is needed (end_of_line and new_write_command are asserted), the state machine enters a WSHORT_BURST state 2714 if either the last part of the data was taken (! p2q_trdy) or the PCI start pulse is received. In any case, only two dwords of data have to be written to the PCI bus. Otherwise, the state machine remains in the WDATA2 state 2710 , When the state machine enters the WSHORT_BURST state 2714 occurs, the QPIF frame_signal remains asserted if the transaction may overflow into the next queue, and a new write command is not needed.

In dem WSHORT_BURST Zustand 2714 präpariert sich die Master-Zustand-Maschine, um die abschließenden zwei dwords Daten zu dem PCI-Bus zu schreiben. Falls das p2q_ack Signal weggenommen ist oder der Zyklus erneut versucht wird oder durch die PCI-Schnittstelle ausgesondert wird, beendet die Zustand-Maschine die Transaktion und kehrt zu dem IDLE Zustand 2700 zurück. Wenn das PCI-Kenntnis-Signal verschwindet oder der Zyklus ausgesondert wird, stellt die Master-Zustand-Maschine das Stepback-Signal auf, um anzuzeigen, dass der PMWQ-Out-Pointer zurück zu dem vorherigen dword schrittmäßig geführt werden sollte. Wenn die Transaktion erneut durch die PCI-Schnittstelle versucht wird, wird der Out-Pointer zurück nur dann schrittmäßig geführt, falls die Target-Vorrichtung nicht den letzten Teil an Daten nahm (p2q_trdy ist aufgestellt). Wenn die Transaktion nicht beendet ist und sie in den nächsten PMWQ-Puffer überlaufen kann (overflow_next_cueue ist aufgestellt) und ein neuer Schreib-Befehl nicht benötigt wird, behält die Master-Zustand-Maschine das QPIF-Frame-Signal, das aufgestellt ist, bei, und tritt dann in einen WCOMPLETE Zustand 2716 ein, falls die Target-Vorrichtung den letzten Teil an Daten genommen hat oder in dem WSHORT_BURST Zustand 2714 hat, oder verbleibt ansonsten in dem WSHORT-BURST Zustand 2714. Falls die Transaktion nicht in die nächste Warteschlange überlaufen kann oder ein neuer Schreib-Befehl benötigt wird, nimmt die Zustand-Maschine das Frame-Signal weg, um das Ende der QPIF-Transaktion anzuzeigen, und tritt dann in den WCOMPLETE Zustand 2716 ein, falls der letzte Teil von Daten durch die Target-Vorrichtung genommen wurde, oder verbleibt in dem WSHORT_BURST Zustand 2714 ansonsten.In the WSHORT_BURST state 2714 The master state machine prepares to write the final two dwords data to the PCI bus. If the p2q_ack signal is removed or the cycle is retried or discarded by the PCI interface, the state machine ends the transaction and returns to the IDLE state 2700 back. When the PCI aware signal disappears or the cycle is discarded, the master state machine sets the stepback signal to indicate that the PMWQ out pointer should be stepped back to the previous dword. If the transaction is again attempted by the PCI interface, the out pointer will only be paced backwards if the target device did not take the last part of data (p2q_trdy is set up). If the transaction is not completed and it can overflow into the next PMWQ buffer (overflow_next_cueue is asserted) and a new write command is not needed, the master state machine retains the QPIF frame signal that is asserted , and then enters a WCOMPLETE state 2716 if the target device took the last part of data or in the WSHORT_BURST state 2714 has, or otherwise remains in the WSHORT-BURST state 2714 , If the transaction can not overflow into the next queue or a new write command is needed, the state machine removes the frame signal to indicate the end of the QPIF transaction and then enters the WCOMPLETE state 2716 if the last part of data has been taken by the target device or remains in the WSHORT_BURST state 2714 otherwise.

In dem WCOMPLETE Zustand 2716 beendet die Master-Zustand-Maschine die gepostete Speicher-Schreib-Transaktion. Die Zustand-Maschine tritt in den IDLE Zustand 2700 ein, wenn die Transaktion erneut versucht oder durch die PCI-Schnittstelle ausgesondert ist. Falls die Transaktion erneut versucht wird, wird der PMWQ-Out-Pointer nur dann erhöht, falls die Target-Vorrichtung den letzten Teil an Daten nahm. Falls die Transaktion in die nächste Warteschlange überlaufen kann, wird ein neuer Schreib-Befehl nicht benötigt, und die Transaktion befindet sich nicht in der letzten Daten-Phase, die Master-Zustand-Maschine erhöht den Warteschlangen-Auswahl-Zähler und kehrt zu dem WDATA1 Zustand 2706 zurück, um die Transaktion von der Überlauf-Warteschlange fortzuführen, solange wie die Target-Vorrichtung den letzen Teil an Daten nahm. Falls die Target-Vorrichtung nicht den letzten Teil an Daten nahm, verbleibt die Master-Zustand-Maschine in dem WCOMPLETE Zustand 2716.In the WCOMPLETE state 2716 the master state machine terminates the posted memory write transaction. The state machine enters the IDLE state 2700 when the transaction is retried or discarded by the PCI interface. If the transaction is retried, the PMWQ Out pointer is incremented only if the target device took the last part of data. If the transaction can overflow to the next queue, a new write command is not needed, and the transaction is not in the last data phase, the master state machine increments the queue selection counter and returns to WDATA1 Status 2706 to continue the transaction from the overflow queue as long as the target device took the last part of data. If the target device did not take the last part of data, the master state machine remains in the WCOMPLETE state 2716 ,

Falls die Transaktion nicht in den nächsten PMWQ-Puffer überlaufen wird, beendet die Master-Zustand-Maschine die Transaktion und kehrt zu dem IDLE Zustand 2700 zurück, falls das Target den letzten Teil an Daten nahm. Ansonsten verbleibt die Zustand-Maschine in dem WCOMPLETE Zustand 2716, bis eines der beendenden Ereignisse, diskutiert vorstehend, auftritt.If the transaction does not overflow into the next PMWQ buffer, the master state machine terminates the transaction and returns to the IDLE state 2700 back if the target took the last part of data. Otherwise, the state machine remains in the WCOMPLETE state 2716 until one of the terminating events discussed above occurs.

Wie die 86 zeigt, steuert die Slave-Zustand-Maschine die Operation der QPIF, wenn die QPIF in dem Slave-Mode arbeitet. In dem Slave-Mode empfängt die QPIF gepostete Schreib-Transaktionen und verzögerte Anforderungs-Transaktionen von Vorrichtungen auf dem PCI-Bus und führt die Transaktionen weiter zu dem Target-Bus über das Kabel. Die folgende Tabelle stellt die Ereignisse dar, die Zustand-Übergänge in der Slave-Zustand-Maschine verursachen.As the 86 shows, the slave state machine controls the operation of the QPIF when the QPIF is operating in the slave mode. In the slave mode, the QPIF receives posted write transactions and delayed request transactions from devices on the PCI bus and routes the transactions on to the target bus via the cable. The following table shows the events that cause state transitions in the slave state machine.

Figure 00740001
Slave-Zustand-Übergänge
Figure 00740001
Slave state transitions

Bei einem Reset tritt die Slave-Zustand-Maschine in einen IDLE Zustand 2720 ein, in dem die QPIF auf eine Transaktion wartet, die initiiert werden sollte, und zwar durch eine Vorrichtung auf dem PCI-Bus. Falls eine Transaktion, initiiert auf dem Bus, nicht die QPIF als Ziel trifft (q2p_qcyc ist nicht aufgestellt), fährt die Slave-Zustand-Maschine in dem IDLE Zustand 2720 fort. Wenn eine Transaktion auf dem PCI-Bus nicht die QPIF als Ziel trifft, tritt die Slave-Zustand-Maschine in einen SLAVE_DAC-Dual-Adressen-Zyklus-Zustand 2722 ein, falls das p2q_dac_flag aufgestellt ist und ein Adressen-Paritäts-Fehler nicht aufgetreten ist (p2q_perr_ ist niedrig). Falls die Transaktion nicht ein Dual-Adressen-Zyklus ist und eine gepostete Speicher-Schreib-Anforderung ist, und falls ein Paritäts-Fehler nicht in der Adressen-Phase aufgetreten ist, lädt die Slave-Zustand-Maschine die Schreib-Zähler (d. h. stellt load_write_counter auf) und bestimmt, ob sie die Transaktion akzeptieren kann. Falls die PMWQ in dem anderen Brücken-Chip voll ist (tc_dc_full ist durch den DC-Transaktions-Zähler aufgestellt) oder die DCQ verriegelt ist (dcq_locked ist aufgestellt) oder sich die QPIF-Verriegelungs-Logik in dem unlocked-but-retry Zustand befindet (lock_state[1] entspricht „1"), dann beendet die Slave-Zustand-Maschine die Transaktion durch Aufstellen eines asynchronen Retry-Signals (early_retry), das zu der PCI-Schnittstelle als q2pif_retry zugeführt wird, und verbleibt in dem IDLE Zustand 2720. Falls die QPIF die Transaktion annehmen kann, initiiert die Slave-Zustand-Maschine die gepostete Speicher-Schreib-Nachricht auf dem Kabel und tritt in einen PMW1 Zustand 2724 ein, in dem die Transaktion weiter zu dem Kabel geführt wird.Upon a reset, the slave state machine enters an IDLE state 2720 in which the QPIF is waiting for a transaction to be initiated by a device on the PCI bus. If a transaction initiated on the bus does not hit the QPIF as a destination (q2p_qcyc is not set up), the slave state machine goes into the IDLE state 2720 continued. If a transaction on the PCI bus does not hit the QPIF as a destination, the slave state machine enters a SLAVE_DAC dual address cycle state 2722 if the p2q_dac_flag is set up and an address parity error has not occurred (p2q_lock_ is low). If the transaction is not a dual-address cycle and is a posted memory write request, and if a parity error has not occurred in the address phase, the slave state machine loads the write counters (ie load_write_counter) and determines if it can accept the transaction. If the PMWQ in the other bridge chip is full (tc_dc_full is asserted by the DC transaction counter) or the DCQ is latched (dcq_locked is asserted) or the QPIF latch logic is in the unlocked-but-retry state (lock_state [1] equals "1"), then the slave state machine completes the transaction by asserting an asynchronous retry signal (early_retry), which is supplied to the PCI interface as q2pif_retry, and remains in the IDLE state 2720 , If the QPIF can accept the transaction, the slave state machine initiates the posted memory write message on the cable and enters a PMW1 state 2724 one in which the transaction continues to the cable.

Falls die Transaktion nicht ein Dual-Adressen-Zyklus oder eine gepostete Speicher-Schreib-Anforderung ist, lädt die Slave-Zustand-Maschine den dword Zähler (stellt load_write_counter auf), und, falls nicht ein Paritäts-Fehler aufgetreten ist, analysiert sie die verzögerte Anforderungs-Transaktion. Falls die Transaktion eine MRL- oder eine MRM-Transaktion ist und die QPIF-Verriegelungs-Logik sich nicht in dem unlocked-but-retry Zustand befindet, stellt die Slave-Zustand-Maschine das QPIF-Prüf-Zyklus-Signal (q2pif_check_cyc) auf, was die DCQ instruiert, die verriegelte Anforderung zu den verzögerten Abschluss-Nachrichten in den DCQ-Puffern zu vergleichen. Falls die Anforderung einen DCQ-Puffer trifft, der nicht leer ist (dcq_hit und !dcq_no_data), tritt die Slave-Zustand-Maschine in einen STEP_AHEAD Zustand 2726 ein, in dem die QPIF beginnt, die angeforderten Informationen zu dem PCI-Bus zuzuführen. Falls die MRL- oder MRM-Anforderung alle die DCQ-Daten-Puffer verfehlt (!dcq_hit), ist die DCQ nicht voll (!dcq_full), die verzögerte Anforderungs-Warteschlange in dem anderen Brücken-Chip ist nicht voll (!tc_dr_full) und die DCQ und QPIF sind nicht verriegelt (!dcq_locked und !lock_state[1]) stellt die Slave-Zustand-Maschine das q2pif_retry Signal auf, führt die Anforderung weiter zu dem Kabel, und verbleibt in dem IDLE Zustand 2720. Falls die Anforderung die DCQ verfehlt und die Anforderung nicht entlang des Kabels geschickt werden kann, versucht die QPIF einfach erneut die anfordernde Vorrichtung und verbleibt in dem IDLE Zustand 2720.If the transaction is not a dual address cycle or a posted memory write request If no, the slave state machine loads the dword counter (sets load_write_counter) and, if a parity error has not occurred, parses the delayed request transaction. If the transaction is a MRL or an MRM transaction and the QPIF lock logic is not in the unlocked-but-retry state, the slave state machine sets the QPIF verify cycle signal (q2pif_check_cyc) What the DCQ instructs to compare the locked request to the delayed completion messages in the DCQ buffers. If the request encounters a DCQ buffer that is not empty (dcq_hit and! Dcq_no_data), the slave state machine enters a STEP_AHEAD state 2726 in which the QPIF begins to supply the requested information to the PCI bus. If the MRL or MRM request misses all the DCQ data buffers (! Dcq_hit), the DCQ is not full (! Dcq_full), the delayed request queue in the other bridge chip is not full (! Tc_dr_full) and the DCQ and QPIF are not latched (! dcq_locked and! lock_state [1]), the slave state machine sets the q2pif_retry signal, passes the request on to the cable, and remains in the IDLE state 2720 , If the request misses the DCQ and the request can not be sent along the cable, the QPIF simply retries the requesting device and remains in the IDLE state 2720 ,

Falls die verzögerte Anforderung nicht eine MRL- oder MRM-Transaktion ist, wird ein zweiter Takt-Zyklus benötigt, um die Anforderung zu prüfen, da die Daten- oder Byte-Freigaben mit den Inhalten der DCQ-Puffer verglichen werden müssen, so dass die Slave-Zustand-Maschine in einen SECOND_CHECK Zustand 2728 eintritt. Falls ein Paritäts-Fehler auftritt oder falls sich die Verriegelungs-Logik in dem unlocked-but-retry Zustand befindet, versucht die Zustand-Maschine erneut die anfordernde Vorrichtung und verbleibt in dem IDLE Zustand 2720.If the deferred request is not an MRL or MRM transaction, a second clock cycle is needed to verify the request, since the data or byte enables must be compared with the contents of the DCQ buffers so that the Slave state machine in a SECOND_CHECK state 2728 entry. If a parity error occurs or if the lock logic is in the unlocked-but-retry state, the state machine again attempts the requesting device and remains in the IDLE state 2720 ,

In dem SLAVE_DAC Zustand 2722 empfängt die Slave-Zustand-Maschine die zweite Hälfte der Adressen-Phasen-Informationen. Falls die anfordernde Vorrichtung nicht target-mäßig die QPIF getroffen hat, ignoriert die Slave-Zustand-Maschine die Transaktion und verbleibt in dem IDLE Zustand 2720. Wenn die QPIF die Target-Vorrichtung ist, sind die Zustand-Übergangs-Ereignisse dieselben wie solche in dem IDLE Zustand 2720. Genauergesagt lädt, falls die Transaktion eine gepostete Speicher-Schreib-Anforderung ist und ein Paritäts-Fehler nicht aufgetreten ist, die Slave-Zustand-Maschine die Schreib-Zähler und bestimmt, ob sie die Transaktion annehmen kann. Falls die PMWQ in dem anderen Brücken-Chip voll ist (tc_pmw_full ist aufgestellt), wird die DCQ verriegelt, oder die QPIF-Verriegelungs-Logik befindet sich in dem unlocked-but-retry Zustand, die Slave-Zustand-Maschine versucht erneut die anfordernde Vorrichtung und kehrt zu dem IDLE Zustand 2720 zurück. Falls die QPIF die Transaktion annehmen kann, initiiert die Slave-Zustand-Maschine die gepostete Speicher-Schreib-Nachricht auf dem Kabel und tritt in den PMW1 Zustand 2724 ein.In the SLAVE_DAC state 2722 The slave state machine receives the second half of the address phase information. If the requesting device did not target the QPIF, the slave state machine ignores the transaction and remains in the IDLE state 2720 , If the QPIF is the target device, the state transition events are the same as those in the IDLE state 2720 , More specifically, if the transaction is a posted memory write request and a parity error has not occurred, the slave state machine loads the write counters and determines whether it can accept the transaction. If the PMWQ in the other bridge chip is full (tc_pmw_full is asserted), the DCQ is latched or the QPIF latch logic is in the unlocked-but-retry state, the slave state machine retries the requesting one Device and returns to the IDLE state 2720 back. If the QPIF can accept the transaction, the slave state machine initiates the posted memory write message on the cable and enters the PMW1 state 2724 one.

Falls die Transaktion nicht eine gepostete Speicher-Schreib-Anforderung ist, lädt die Slave-Zustand-Maschine den dword Zähler, und, falls kein Paritäts-Fehler aufgetreten ist, analysiert sie die verzögerte Anforderungs-Transaktion. Falls die Transaktion eine MRL- oder MRM-Transaktion ist und sich die QPIF-Verriegelungs-Logik nicht in dem un locked-but-retry Zustand befindet, stellt die Slave-Zustand-Maschine das QPIF-Prüf-Zyklus-Signal auf. Falls die Anforderung einen DCQ-Puffer trifft, der nicht leer ist, tritt die Slave-Zustand-Maschine in den STEP_ADHEAD Zustand 2726 ein. Falls die MRL- oder MRM-Anforderung alle die DCQ-Daten-Puffer verfehlt, ist die DCQ nicht voll, die verzögerte Anforderungs-Warteschlange in dem anderen Brücken-Chip ist nicht voll (tc_dr_full ist nicht aufgestellt) und die DCQ und die QPIF sind nicht verriegelt, stellt die Slave-Zustand-Maschine stellt das q2pif_retry Signal auf, führt die Anforderung weiter entlang des Kabels und kehrt zu dem IDLE Zustand 2720 zurück. Falls die Anforderung die DCQ verfehlt und die Anforderung nicht entlang des Kabels geschickt werden kann, versucht die QPIF einfach erneut die anfordernde Vorrichtung und kehrt zu dem IDLE Zustand 2720 zurück.If the transaction is not a posted memory write request, the slave state machine loads the dword counter and, if no parity error has occurred, analyzes the delayed request transaction. If the transaction is a MRL or MRM transaction and the QPIF lock logic is not in the unlocked-but-retry state, the slave state machine sets the QPIF check cycle signal. If the request encounters a DCQ buffer that is not empty, the slave state machine enters the STEP_ADHEAD state 2726 one. If the MRL or MRM request misses all the DCQ data buffers, the DCQ is not full, the delayed request queue in the other bridge chip is not full (tc_dr_full is not set up) and the DCQ and QPIF are not locked, the slave state machine sets the q2pif_retry signal, continues the request along the cable, and returns to the IDLE state 2720 back. If the request misses the DCQ and the request can not be sent along the cable, the QPIF simply retries the requesting device and returns to the IDLE state 2720 back.

Falls die verzögerte Anforderung nicht eine MRL- oder MRM-Transaktion ist, wird ein zweiter Takt-Zyklus benötigt, um die Anforderung zu prüfen, da die Daten- oder Byte-Freigaben mit den Inhalten der DCQ-Puffer verglichen werden müssen, so dass die Slave-Zustand-Maschine in den SECOND_CHECK Zustand 2728 eintritt. Falls ein Parität-Fehler auftritt oder falls sich die Verriegelungs-Logik in dem unlocked-but-retry Zustand befindet, versucht die Zustand-Maschine erneut die anfordernde Vorrichtung und kehrt zu dem IDLE Zustand 2720 zurück.If the deferred request is not an MRL or MRM transaction, a second clock cycle is needed to verify the request, since the data or byte enables must be compared with the contents of the DCQ buffers so that the Slave state machine in the SECOND_CHECK state 2728 entry. If a parity error occurs or if the lock logic is in the unlocked-but-retry state, the state machine again tries the requesting device and returns to the IDLE state 2720 back.

In dem PMW1 Zustand 2724 führt die Slave-Zustand-Maschine eine gepostete Speicher-Schreib-Transaktion über das Kabel zu der Target-Vorrichtung weiter. Wenn die Zustand-Maschine zuerst in den PMW1 Zustand 2724 eintritt, nimmt sie das load_write_counter Signal weg. Falls der dword Zähler anzeigt, dass die gepostete Speicher-Schreib-Transaktion die letzte Cache-Zeile ist (pmw_counter[5:3] entspricht „111") und die PMWQ in der anderen Brücke voll ist (tc_pmw_full) und das Schreib-Überlauf-Merkmal gesperrt ist (!cfg2q_write_overflow), oder falls das write_page_disconnect Signal aufgestellt ist, da die Transaktion eine 4K Seiten-Grenze erreicht hat, oder falls die DCQ das dcq_disconnect_for_stream Signal aufgestellt hat und das Schreib-Unterbrechungs-Merkmal nicht gesperrt ist (!cfg2q_wr_discnt_disable), stellt die Slave-Zustand-Maschine das slave_lastline Signal auf, das anzeigt, dass die momentane Cache-Zeile die letzte sein wird, die übertragen werden soll. Die Slave-Zustand-Maschine verbleibt dann in dem PMW1 Zustand 2724, bis das p2q_qcyc Signal weggenommen ist, was anzeigt, dass die Transaktion auf dem PCI-Bus abgeschlossen wurde. Nach Verlassen des PMW1 Zustands 2724, tritt die Slave-Zustand-Maschine wieder in den IDLE Zustand 2720 ein.In the PMW1 state 2724 the slave state machine passes a posted memory write transaction over the cable to the target device. When the state machine first enters the PMW1 state 2724 it takes away the load_write_counter signal. If the dword counter indicates that the posted memory write transaction is the last cache line (pmw_counter [5: 3] equals "111") and the PMWQ in the other bridge is full (tc_pmw_full) and the write overflow Feature is locked (! Cfg2q_write_overflow), or if the write_page_disconnect signal is asserted because the trans action has reached a 4K page boundary, or if the DCQ has asserted the dcq_disconnect_for_stream signal and the write interrupt feature is not disabled (! cfg2q_wr_discnt_disable), the slave state machine will assert the slave_lastline signal indicating that the current cache line will be the last one to be transferred. The slave state machine then remains in the PMW1 state 2724 until the p2q_qcyc signal is removed, indicating that the transaction was completed on the PCI bus. After leaving the PMW1 state 2724 , the slave state machine returns to the IDLE state 2720 one.

In dem SECOND_CHECK Zustand 2728 hat die Slave-Zustand-Maschine die DCQ die zweite Phase der Anforderungs-Informationen zu den verzögerten Abschluss-Informationen in den DCQ-Puffern vergleichen lassen. Falls die Transaktion nicht eine vezögerte Schreib-Anforderung ist (!io_write und !config_write) oder dabei ein Paritäts-Fehler vorhanden ist (!p2q_perr) und falls die DCQ nicht verriegelt ist und das dwr_check_ok Signal aufgestellt ist, stellt die Slave-Zustand-Maschine das q2pif_check_cyc auf. Das dwr_check_ok Signal wird entweder dann aufgestellt, wenn die Transaktion nicht eine verzögerte Schreib-Anforderung ist oder wenn sie eine verzögerte Schreib-Anforderung ist und ein p2q_irdy Warte Zustand nicht eingesetzt worden ist. Falls die Anforderung einen der DCQ-Puffer trifft und der Puffer nicht leer ist, tritt die Slave-Zustand-Maschine in den STEP_AHEAD Zustand 2726 ein. Falls die Anforderung alle der DCQ-Puffer verfehlt, allerdings die QPIF die Nachricht entlang des Kabels schicken kann, versucht die Slave-Zustand-Maschine die anfordernde Vorrichtung erneut, führt die Transaktion entlang des Kabels weiter und tritt erneut in den IDLE Zustand 2720 ein. Ansonsten wird, falls die Anforderung alle der DCQ-Puffer verfehlte, und die QPIF nicht die Transaktion entlang des Kabels schicken konnte, oder falls ein Paritäts-Fehler an einer verzögerten Schreib-Anforderung auftritt, die Zustand-Maschine erneut die anfordernde Vorrichtung versuchen und wieder in den IDLE Zustand 2720 eintreten.In the SECOND_CHECK state 2728 the slave state machine has had the DCQ compare the second phase of the request information to the delayed completion information in the DCQ buffers. If the transaction is not a deferred write request (! Io_write and! Config_write) or there is a parity error (! P2q_lock) and if the dcr is not latched and the dwr_check_ok signal is asserted, the slave state machine will the q2pif_check_cyc on. The dwr_check_ok signal is asserted either when the transaction is not a delayed write request or when it is a delayed write request and a p2q_irdy wait state has not been set. If the request hits one of the DCQ buffers and the buffer is not empty, the slave state machine enters the STEP_AHEAD state 2726 one. If the request misses all of the DCQ buffers, but the QPIF can send the message along the cable, the slave state machine retries the requesting device, continues the transaction along the cable, and reenters the IDLE state 2720 one. Otherwise, if the request missed all of the DCQ buffers and the QPIF could not send the transaction along the cable, or if a parity error occurs on a delayed write request, the state machine will retry and retry the requesting device in the IDLE state 2720 enter.

In dem STEP_AHEAD Zustand 2726 erhöht die Slave-Zustand-Maschine den DCQ-Ausgangs-Hinweiszeiger zu dem nächsten dword. Dieser Zustand ist notwendig, unmittelbar nachdem ein DCQ-Puffer getroffen wird, da die PCI-Schnittstelle das erste dword von Daten ohne Zugreifen auf das !p2q_trdy Signal verriegelt. Von dem STEP_AHEAD Zustand 2726 tritt die Zustands_Maschine in einen HIT_DCQ Zustand 2730 ein, in dem Daten von dem geeigneten DCQ-Puffer zu der anfordernden Vorrichtung geliefert werden, falls das letzte dword von Daten nicht genommen worden ist. Ansonsten tritt die Zustand-Maschine in einen HIT_DCQ_FINAL Zustand 2732 ein, in dem die anfordernde Vorrichtung erneut versucht wird, da der DCQ-Puffer keine weiteren Daten enthält.In the STEP_AHEAD state 2726 the slave state machine increments the DCQ output pointer to the next dword. This condition is necessary immediately after a DCQ buffer is hit because the PCI interface latches the first dword of data without accessing the! P2q_trdy signal. From the STEP_AHEAD state 2726 the state_machine enters a HIT_DCQ state 2730 in which data is supplied from the appropriate DCQ buffer to the requesting device if the last dword of data has not been taken. Otherwise, the state machine enters a HIT_DCQ_FINAL state 2732 in which the requesting device is retried because the DCQ buffer contains no further data.

Von dem HIT_DCQ Zustand 2730 beendet, wenn die verzögerte Anforderungs-Transaktion auf dem PCI-Bus endet, bevor sie in der QPIF endet (d. h. p2q_qcyc wird weggenommen), die Zustand-Maschine die Transaktion in der QPIF und stellt das Step back-Signal auf, das anzeigt, dass der DCQ Out-Pointer verringert werden sollte, da der letzte Teil von Daten nicht durch die anfordernde Vorrichtung genommen wurde. Die Zustand-Maschine tritt dann erneut in den IDLE Zustand 2720 ein. Falls der DCQ-Puffer „Out-Of-Data" läuft, während die anfordernde Vorrichtung fortfährt, ihn anzufordern (dcq_no_data und !p2q_irdy), oder falls der pmw_counter anzeigt, dass das letzte dword erreicht worden ist und das read_disconnect_for_stream Signal aufgestellt worden ist, versucht die Slave-Zustand-Maschine erneut die anfordernde Vorrichtung und tritt in den HIT_DCQ_FINAL Zustand 2732 ein. Falls die Transaktion endet, um eine Datenfolge einzurichten, wird das Stepback-Signal aufgestellt und der Ausgangs-Hinweiszeiger des geeigneten DCQ-Puffers wird erniedrigt. In irgendeiner anderen Situation fährt die Slave-Zustand-Maschine fort, Daten in dem HIT_DCQ_FINAL Zustand 2732 vorzusehen.From the HIT_DCQ state 2730 when the delayed request transaction ends on the PCI bus before it ends in the QPIF (ie, p2q_qcyc is removed), the state machine ends the transaction in the QPIF and sets the step back signal indicating that the DCQ out pointer should be decreased since the last piece of data was not taken by the requesting device. The state machine then enters the IDLE state again 2720 one. If the out-of-data DCQ buffer is running while the requesting device continues to request it (dcq_no_data and! P2q_irdy), or if the pmw_counter indicates that the last dword has been reached and the read_disconnect_for_stream signal has been asserted, the slave state machine again tries the requesting device and enters the HIT_DCQ_FINAL state 2732 one. If the transaction ends to establish a data sequence, the stepback signal is asserted and the output pointer of the appropriate DCQ buffer is decremented. In any other situation, the slave state machine continues to drive data in the HIT_DCQ_FINAL state 2732 provided.

In dem HIT_DCQ_FINAL Zustand 2732 besitzt die Slave-Zustand-Maschine ein dword an Daten übrig, um sie zu übertragen. Falls der PCI-Bus die Transaktion beendet, bevor die anfordernde Vorrichtung den letzten Teil von Daten nimmt (d. h. p2q_qcyc wird weggenommen), stellt die Slave-Zustand-Maschine das Stepback-Signal auf und kehrt zu dem IDLE Zustand 2720 zurück. Falls das p2q_qcyc Signal aufgestellt verbleibt und die anfordernde Vorrichtung nicht einen Initiator-Warte-Zustand aufgestellt hat (!p2q_irdy), wird die anfordernde Vorrichtung erneut versucht, da der letzte Teil an Daten genommen worden ist. Die Zustand-Maschine tritt dann erneut in den IDLE Zustand 2720 ein. Ansonsten verbleibt die Slave-Zustand-Maschine in dem HIT_DCQ_FINAL Zustand 2732.In the HIT_DCQ_FINAL state 2732 the slave state machine has a dword of data left to transfer it. If the PCI bus completes the transaction before the requesting device takes the last portion of data (ie, p2q_qcyc is removed), the slave state machine resets the stepback signal and returns to the IDLE state 2720 back. If the p2q_qcyc signal remains stalled and the requesting device has not set an initiator wait state (! P2q_irdy), the requesting device is retried because the last piece of data has been taken. The state machine then enters the IDLE state again 2720 one. Otherwise, the slave state machine remains in the HIT_DCQ_FINAL state 2732 ,

Wie die 87 zeigt, ist der Kabel-Nachrichten-Generator eine Zustand-Maschine, die Kabel-Nachrichten von Transaktions-Informationen erzeugt, erhalten von der Master- und der Slave-Zustand-Maschine. Zusätzlich zu einem IDLE Zustand 2740 umfasst der Nachrichten-Generator auch einen Dual-Adressen-Zyklus-(CABLE_DAC)Zustand 2742, einen Master-Daten-Phasen-(MASTER_DPHASE)Zustand 2744 und einen Slave-Daten-Phasen-(SLAVE_DPHASE)Zustand 2746. Die folgende Tabelle stellt die Ereignisse dar, die Zustand-Übergänge in dem Kabel-Nachrichten-Generator zu erzeugen.As the 87 1, the cable message generator is a state machine that generates cable messages of transaction information obtained from the master and slave state machines. In addition to an IDLE state 2740 The message generator also includes a dual address cycle (CABLE_DAC) state 2742 , a master data phase (MASTER_DPHASE) state 2744 and a slave data phase (SLAVE_DPHASE) state 2746 , The following table represents the events that Zu to create state transitions in the cable message generator.

Figure 00800001
Kabel-Nachrichten-Generator-Zustand-Übergänge
Figure 00800001
Cable message generator state transitions

Bei einem Reset tritt der Kabel-Nachrichten-Generator in den IDLE Zustand 2740 ein, in dem er auf Transaktions-Informationen wartet, damit sie von der Master- oder Slave-Zustand-Maschine ankommen. Von dem IDLE Zustand 2740 entspricht, falls der Kabel-Nachrichten-Generator ein Prefetch-Mehrfach-Signal (dcq_prefetch_mul) oder ein Prefetch-Leitungs-Signal (dcq_prefetch_line) empfängt, das Kabel-Adressen-Signal (early_cad[31:2]) dem Prefetch-Adressen-Signal (dcq_prefetch_addr[31:2]). Ansonsten nimmt das early_cad[31:2] Signal den Wert des QPIF-Adressen-Signals (q2pif_addr[31:2]) an. Wenn die Kabel-Nachricht durch die Master-Zustand-Maschine initiiert wird, ist die Nachricht eine verzögerte Abschluss-Nachricht, so dass der Befehl-Code (early_ccbe[3:0]) „1001" entspricht. Wenn die Kabel-Nachricht durch die Slave-Zustand-Maschine initiiert wird, nimmt der Befehl-Code den Wert des message_cmd[3:0] Signals an, wie dies vorstehend diskutiert ist.Upon a reset, the cable news generator enters the IDLE state 2740 one in which it waits for transaction information to arrive from the master or slave state machine. From the IDLE state 2740 If the cable message generator receives a prefetch multiple signal (dcq_prefetch_mul) or a prefetch line signal (dcq_prefetch_line), the cable address signal (early_cad [31: 2]) corresponds to the prefetch address signal (dcq_prefetch_addr [31: 2]). Otherwise, the early_cad [31: 2] signal will take on the value of the QPIF address signal (q2pif_addr [31: 2]). When the cable message is initiated by the master state machine, the message is a delayed completion message such that the command code (early_ccbe [3: 0]) corresponds to "1001." If the cable message is terminated by the Slave state machine is initiated, the command code assumes the value of the message_cmd [3: 0] signal as discussed above.

Falls das send_message Signal aufgestellt ist, anzeigend, dass entweder die Master-Zustand-Maschine oder die Slave-Zustand-Maschine eine Nachricht initiiert hat, und die entsprechende Transaktion nicht ein Dual-Adressen-Zyklus ist, oder falls der Kabel-Nachrichten-Generator eine Prefetch-Anforderung empfängt, die nicht ein Dual-Adressen-Zyklus ist, oder falls der Kabel-Nachrichten-Generator ein Datenfolgen-Verbindungs-Signal empfängt und keine verzögerten Anforderungen von der CPU in der ausgangsseitigen DRQ anhängig sind, stellt der Kabel-Nachrichten-Generator ein sent_pmw Signal auf, das anzeigt, dass eine gepostete Speicher-Schreib-Anforderung von dem PCI-Bus entlang des Kabels geschickt werden wird. Das sent_pmw Signal wird nicht aufgestellt, falls eine Datenfolge durch die DCQ eingerichtet worden ist. Der Kabel-Nachrichten-Generator stellt ein sent_dr Signal auf, wenn eine Lese-Anforderung oder eine verzögerte Schreib-Anforderung von der Slave-Zustand-Maschine empfangen ist oder ein Prefetch-Signal emfpangen ist, und wenn eine Datenfolge nicht durch die DCQ eingerichtet worden ist.If the send_message signal is set up, indicating that either the master state machine or the slave state machine one Message has initiated, and the corresponding transaction is not is a dual address cycle, or if the cable message generator receives a prefetch request that not a dual-address cycle or if the cable news generator receives a data stream connection signal and no delay Requests from the CPU are pending in the output DRQ, the cable message generator sets a sent_pmw signal indicating a posted memory write request from the PCI bus will be sent along the cable. The sent_pmw Signal is not asserted if a stream of data passes through the DCQ has been set up. The cable news generator puts a sent_dr signal when a read request or a delayed write request from the Slave state machine is received or receive a prefetch signal is, and if a sequence of data has not been established by the DCQ is.

Falls die DCQ eine Datenfolge eingerichtet hat (dcq_stream_connect ist aufgestellt), nimmt die Pufferzahl für das Kabel-Signal (early_cbuff[2:0]) den Wert des DCQ-Datenfolge-Puffers an (dcq_stream_buff[2:0]), der Kabel-Befehl-Code (early_ccbe[3:0]) wird gleich zu „1000" eingestellt, und der Kabel-Nachrichten-Generator tritt in den SLAVE_DPHASE Zustand 2746 ein. Ansonsten nimmt, falls sich die QPIF in dem Slave-Mode befindet und der Kabel-Nachrichten-Generator entweder ein Prefetch-Mehrfach- oder ein Prefetch-Leitungs-Signal empfängt, das Kabel-Puffer-Signal den Wert der DCQ-Puffer-Zahl an (dcq_buff[2:0]) und der Kabel-Nachrichten-Generator tritt in den SLAVE_DPHASE Zustand 2746 ein. Ansonsten arbeitet die QPIF in dem Master-Mode und der Kabel-Nachrichten-Generator tritt in den MASTER_DPHASE Zustand 2744 ein.If the DCQ has established a data stream (dcq_stream_connect is asserted), the buffer count for the cable signal (early_cbuff [2: 0]) assumes the value of the DCQ stream buffer (dcq_stream_buff [2: 0]), the cable Command code (early_ccbe [3: 0]) is set equal to "1000", and the cable message generator enters the SLAVE_DPHASE state 2746 one. Otherwise, if the QPIF is in slave mode and the cable message generator receives either a prefetch multiple or a prefetch line signal, the cable buffer signal takes the value of the DCQ buffer number (dcq_buff [2: 0]) and the cable message generator enters the SLAVE_DPHASE state 2746 one. Otherwise, the QPIF operates in master mode and the cable message generator enters the MASTER_DPHASE state 2744 one.

Wenn der Kabel-Nachrichten-Generator das send_message Signal und eine Transaktion, die ein Dual-Adressen-Zyklus ist, empfängt, oder wenn er eine Prefetch-Anforderung empfängt, die ein Dual-Adressen-Zyklus ist, tritt der Nachrichten-Generator in den CABLE_DAC Zustand 2742 ein. Für ein Prefetch-Signal wird das Kabel-Adressen-Signal gleich zu den oberen zweiunddreißig Bits des dcq_prefetch_addr[63:0] Signals eingestellt; ansonsten entspricht die Kabel-Adresse den oberen zweiunddreißig Bits des q2pif_addr[63:0] Signals. Auch entspricht, falls der Kabel-Nachrichten-Generator die Transaktion von der Slave-Zustand-Maschine empfängt, die Kabel-Puffer-Zahl der DCQ- Puffer-Zahl; ansonsten entspricht die Kabel-Puffer-Zahl der DRQ-Puffer-Zahl (keine Abschluss-Nachrichten werden für gepostete Speicher-Schreib-Transaktionen erzeugt).If the cable message generator receives the send_message signal and a transaction that is a dual address cycle, or if it receives a prefetch request that is a dual address cycle, the message generator enters CABLE_DAC state 2742 one. For a prefetch signal, the cable address signal is set equal to the upper thirty-two bits of the dcq_prefetch_addr [63: 0] signal; otherwise, the cable address corresponds to the upper thirty-two bits of the q2pif_addr [63: 0] signal. Also, if the cable message generator receives the transaction from the slave state machine, the cable buffer number corresponds to the DCQ buffer number; otherwise, the cable buffer number equals the DRQ buffer number (no completion messages are generated for posted memory write transactions).

In dem CABLE_DAC Zustand 2742 erzeugt der Kabel-Nachrichten-Decodierer die zweite Hälfte der Adressen-Phasen-Informationen. Wie in dem IDLE Zustand 2740 nimmt das Kabel-Adressen-Signal den Wert der Prefetch-Adresse an, wenn die empfangene Transaktion eine Prefetch-Leitungs- oder Prefetch-Mehrfach-Anforderung ist, und nimmt den Wert von q2pif_addr[31:2] ansonsten an. Das sent_pmw Signal wird dann aufgestellt, wenn der Nachrichten-Generator eine gepostete Speicher-Schreib-Transaktion von der Slave-Zustand-Maschine empfängt, und das sent_dr Signal wird dann aufgestellt, wenn sie eine Prefetch-Anforderung oder eine verzögerte Anforderung von der Slave-Zustand-Maschine empfängt. Falls eine Prefetch-Anforderung oder eine Anforderung von der Slave-Zustand-Maschine empfangen wird, tritt der Kabel-Nachrichten-Generator in den SLAVE_DPHASE Zustand 2746 ein. Ansonsten tritt der Nachrichten-Generator in den MASTER_DPHASE Zustand 2744 ein.In the CABLE_DAC state 2742 The cable message decoder generates the second half of the address phase information. As in the IDLE state 2740 the cable address signal assumes the value of the prefetch address if the received transaction is a prefetch line or prefetch multiple request, and otherwise assumes the value of q2pif_addr [31: 2]. The sent_pmw signal is asserted when the message generator receives a posted memory write transaction from the slave state machine, and the sent_dr signal is asserted if it receives a prefetch request or a delayed request from the slave device. State Machine receives. If a prefetch request or request is received from the slave state machine, the cable message generator enters the SLAVE_DPHASE state 2746 one. Otherwise, the message generator enters the MASTER_DPHASE state 2744 one.

In dem MASTER_DPHASE Zustand 2744 versucht der Kabel-Nachrichten-Generator, eine verzögerte Abschluss-Nachricht entlang des Kabels zu schicken. Allerdings muss, falls die PCI-Schnittstelle den Bus zu einer Vorrichtung auf dem PCI-Bus erteilt, bevor die QPIF eine Kontrolle des Busses erhält, der Kabel-Nachrichten-Generator den MASTER_DPHASE Zustand 2744 verlassen, um die neu empfangene Nachricht zu schicken. Deshalb wird, falls das send_message Signal aufgestellt ist, während sich der Nachrichten-Generator in dem MASTER_DPHASE Zustand 2744 befindet, das q2c_new_req Signal aufgestellt, um den Start einer neuen Nachricht anzuzeigen. Falls das q2pif_dac_flag aufgestellt ist, ist die neue Transaktion ein Dual-Adressen-Zyklus und der Kabel-Nachrichten-Generator tritt in den CABLE_DAC Zustand 2742 ein. Ansonsten tritt der Nachrichten-Generator in den SLAVE_DPHASE Zustand 2746 ein.In the MASTER_DPHASE state 2744 The cable message generator attempts to send a delayed completion message along the cable. However, if the PCI interface issues the bus to a device on the PCI bus before the QPIF gets control of the bus, the cable message generator must have the MASTER_DPHASE state 2744 leave to send the newly received message. Therefore, if the send_message signal is asserted, while the message generator is in the MASTER_DPHASE state 2744 placed the q2c_new_req signal to indicate the start of a new message. If the q2pif_dac_flag is asserted, the new transaction is a dual address cycle and the cable message generator enters the CABLE_DAC state 2742 one. Otherwise, the message generator enters the SLAVE_DPHASE state 2746 one.

Falls das send_message Signal nicht aufgestellt ist, schickt der Kabel-Nachrichten-Generator eine verzögerte Abschluss-Nachricht von der Master-Zustand-Maschine aus. Wenn die Master-Zustand-Maschine die letzte Daten-Übertragung mit dem PCI-Bus abgeschlossen hat und die Target-Vorrichtung die Übertragung bestätigt hat (!p2q_trdy), oder wenn der Master die Transaktion auf dem Kabel ausgesondert hat, stellt der Kabel-Nachrichten-Generator ein sent_dc Signal auf, das anzeigt, dass die verzögerte Abschluss-Nachricht entlang des Kabels geschickt worden ist, und tritt erneut in den IDLE Zustand 2740 ein. Ansonsten verbleibt der Nachrichten-Generator in dem MASTER_DPHASE Zustand 2744 und fährt fort, die verzögerte Abschluss-Nachricht zu erzeugen.If the send_message signal is not established, the cable message generator will send a delayed completion message from the master state machine. If the master state machine has completed the last data transfer with the PCI bus and the target device has acknowledged the transfer (! P2q_trdy), or if the master has discarded the transaction on the cable, the cable messages Generator sends a sent_dc signal indicating that the delayed completion message has been sent along the cable and reenters the IDLE state 2740 one. Otherwise, the message generator remains in the MASTER_DPHASE state 2744 and continues to generate the delayed completion message.

Von dem SLAVE_DPHASE Zustand 2746 sind, solange wie eine Datenfolge mit dem eingangsseitigen Chip eingerichtet wird, keine verzögerten Anforderungen von der CPU in der ausgangsseitigen DRQ anhängig, und die anfordernde Vorrichtung fährt fort, Daten zu der QPIF zu schicken (q2p_qcyc ist aufgestellt), der Kabel-Nachrichten-Generator verbleibt in dem SLAVE_DPHASE Zustand 2746 und fährt fort, die Transaktion von der anfordernden Vorrichtung weiterzuführen. Ansonsten führt, falls der Kabel-Nachrichten-Generator eine verzögerte Anforderung oder eine Prefetch-Anforderung empfängt, der Kabel-Nachrichten-Generator die Anforderung weiter, und, in dem Fall einer verzögerten Schreib-Anforderung, das eine dword an Daten zu der eingangsseitigen Vorrichtung weiter, und tritt dann in den IDLE Zustand 2740 ein. Ansonsten hat der Kabel-Nachrichten-Generator eine gepostete Speicher-Schreib-Anforderung empfangen. In dieser Situation verbleibt der Kabel-Nachrichten-Generator in dem SLAVE_DPHASE Zustand 2746 und fährt fort, die geposteten Speicher-Schreib-Informationen entlang des Kabels weiterzuführen, bis das early_last_slave_data Signal aufgestellt ist, was anzeigt, dass der letzte Teil an Daten durch die Slave-Zustand-Maschine geschickt worden ist. Der Nachrichten-Generator beendet dann die Kabel-Transaktion und tritt erneut in den IDLE Zustand 2740 ein.From the SLAVE_DPHASE state 2746 For example, as long as a data string is established with the upstream chip, no delayed requests from the CPU in the downstream DRQ are pending, and the requesting device continues to send data to the QPIF (q2p_qcyc is asserted), the cable news generator remains in the SLAVE_DPHASE state 2746 and continues to continue the transaction from the requesting device. Otherwise, if the cable message generator receives a delayed request or prefetch request, the cable message generator will pass the request, and in the case of a delayed write request, the dword of data to the input side device Next, and then enters the IDLE state 2740 one. Otherwise, the cable message generator has received a posted memory write request. In this situation, the cable message generator remains in the SLAVE_DPHASE state 2746 and continues to continue the posted memory write information along the cable until the early_last_slave_data signal is asserted is, which indicates that the last piece of data has been sent by the slave state machine. The message generator then terminates the cable transaction and reenters the IDLE state 2740 one.

KABEL-SCHNITTSTELLECABLE INTERFACE

Um die gültige Übertragung von Daten zwischen den zwei Brücken-Chips sicherzustellen, müssen Daten, geschickt über das Kabel 28, geeignet zu den Takten von den Takt-Generatoren 102 und 122 synchronisiert werden. Der ausgangsseitige Takt-Generator 122 legt seine Takte basierend auf einem eingangsseitigen Takt (der wiederum auf dem PCI-Bus-Takt PCICLK1 basiert) fest, übertragen entlang des Kabels 28 mit den Daten. Als Folge werden eingangsseitige Daten, übertragen zur Ausgangsseite hin, zu den Takten synchronisiert, erzeugt in dem ausgangsseitigen Brücken-Chip 48. Allerdings ist die Phasen-Verzögerung, zugeordnet zu dem Kabel 28, zwischen den Haupt-Takten, erzeugt in dem eingangsseitigen Chip 26, und die Daten, übertragen zurück eingangsseitig von dem ausgangsseitigen Chip 48, unbekannt. Die Länge des Kabels 28 reicht von 10 bis zu 100 Fuß (falls eine geeignet Schnittstellen-Technologie verwendet wird). Die emp fangende Logik in der eingangsseitigen Kabel-Schnittstelle 104 ist effektiv eine asynchrone Grenze in Bezug auf den eingangsseitigen Takt. Demzufolge muss die empfangende Logik die eingangsseitigen-zu-ausgangsseitigen Daten zu dem Takt von dem eingangsseitigen Takt-Generator 102 erneut synchronisieren.To ensure the valid transfer of data between the two bridge chips, data must be sent through the cable 28 , suitable for the clocks of the clock generators 102 and 122 be synchronized. The output side clock generator 122 sets its clocks based on an input clock (which in turn is based on the PCI bus clock PCICLK1) transmitted along the cable 28 with the data. As a result, input side data transferred to the output side are synchronized to the clocks generated in the output side bridge chip 48 , However, the phase delay is associated with the cable 28 , between the main clocks, generated in the input side chip 26 , and the data, transmitted back on the input side of the output side chip 48 , unknown. The length of the cable 28 ranges from 10 to 100 feet (if a suitable interface technology is used). The receiving logic in the input-side cable interface 104 is effectively an asynchronous limit with respect to the input clock. Consequently, the receiving logic has to input-side to output-side data to the clock from the input-side clock generator 102 resynchronize.

In 5 nun ist das Takt-Verteilungs-Schema in dem 2-Chip in der 2-Chip-PCI-PCI-Brücke dargestellt. Transaktionen, die nach vorne zwischen den Brücken-Chips 46 und 48 geführt werden, werden zu mehrfachen, zeit-multiplexierten Nachrichten codiert. Das Format der Nachrichten ist ähnlich zu dem PCI-Transaktions-Format (mit der Ausnahme eines Zeit-Multiplexing) und umfasst eine Adresse und eine oder mehrere Daten-Phasen und modifizierte Handshake-Signale zusätzlich zu den Signalen, die hinzugefügt sind, um eine Puffer-Zahl und spezielle Brücken-Funktions-Befehle anzuzeigen. Jede Kabel-Schnittstelle 104 oder 130 umfasst eine Master-Kabel-Schnittstelle (192 oder 194) und eine Slave-Kabel-Schnittstelle (196 oder 198). Die Master-Kabel-Schnittstelle 192 oder 194 überträgt Nachrichten weiter zu dem Kabel 28 und die Slave-Kabel-Schnittstelle 196 oder 198 empfängt Nachrichten von dem Kabel 28.In 5 now the clock distribution scheme is shown in the 2-chip in the 2-chip PCI-PCI bridge. Transactions moving forward between the bridge chips 46 and 48 are encoded into multiple, time-multiplexed messages. The format of the messages is similar to the PCI transaction format (with the exception of time multiplexing) and includes an address and one or more data phases and modified handshake signals in addition to the signals added to a buffer Number and special bridge function commands. Every cable interface 104 or 130 includes a master cable interface ( 192 or 194 ) and a slave cable interface ( 196 or 198 ). The master cable interface 192 or 194 transfers messages to the cable 28 and the slave cable interface 196 or 198 receives messages from the cable 28 ,

Der Takt-Generator 102 oder 122 in jedem Brücken-Chip umfasst zwei sich auf dem Chip befindliche PLLs für eine Takt-Erzeugung. Eine PLL 184 in dem eingangsseitigen Brücken-Chip 26 verriegelt sich auf dem Primär-PCI-Bus-Eingangs-Takt PCICLK1. In dem ausgangsseitigen Brücken-Chip 48 verriegelt sich die PLL 180 auf einem ankommenden Takt PCICLK2 von einem Takt-Puffer 181.The clock generator 102 or 122 in each bridge chip comprises two on-chip PLLs for clock generation. A PLL 184 in the input side bridge chip 26 locks on the primary PCI bus input clock PCICLK1. In the output side bridge chip 48 the PLL locks 180 on an incoming clock PCICLK2 from a clock buffer 181 ,

In der nachfolgenden Beschreibung bezieht sich ein „1X Takt" auf einen Takt, der dieselbe Frequenz wie der Takt PCICLK1 besitzt, während sich ein „3X Takt" auf einen Takt bezieht, der dreimal die Frequenz des Takts PCICLK1 besitzt. Ein 1X Takt PCLK, erzeugt durch die PLL 184 oder 180 (in dem Brücken-Chip 26 oder 48 jeweils), wird für die PCI-Bus-Schnittstellen-Logik 188 oder 190 für den Brücken-Chip verwendet, und der 3X Takt PCLK3 wird dazu verwendet, die Kabel-Nachrichten-Erzeugungs-Logik in der Master-Kabel-Schnittstelle 192 oder 194 laufen zu lassen. Die andere PLL 186 oder 182 wird dazu verwendet, sich auf einen Kabel-Eingangs-Takt CABLE_CLK1 (von Eingangsseite) oder einen CABLE_CLK2 (von Ausgangsseite) zu verriegeln, und um einen 1X Takt CCLK und einen 3X Takt CCLK3 zu erzeugen, um ankommende Kabel-Daten zu erfassen. Die Taktausgänge der PLL 186 und 182 werden zu der Slave-Kabel-Schnittstelle 196 und 198 jeweils weitergeführt.In the following description, a "1X clock" refers to a clock having the same frequency as the clock PCICLK1, while a "3X clock" refers to a clock having three times the frequency of the clock PCICLK1. A 1X clock PCLK generated by the PLL 184 or 180 (in the bridge chip 26 or 48 respectively), is for the PCI bus interface logic 188 or 190 is used for the bridge chip, and the 3X clock PCLK3 is used to provide the cable message generation logic in the master cable interface 192 or 194 to run. The other PLL 186 or 182 is used to lock on a cable input clock CABLE_CLK1 (from the input side) or a CABLE_CLK2 (from the output side) and to generate a 1X clock CCLK and a 3X clock CCLK3 to detect incoming cable data. The clock outputs of the PLL 186 and 182 become the slave cable interface 196 and 198 each continued.

Die PLLs sind in dem Layout so angeordnet, um die 1X und 3X Takte so nahe wie möglich auszubalancieren, um die Verschiebung dazwischen zu minimieren.The PLLs are arranged in the layout so as to keep the 1X and 3X bars close as possible balance to minimize the shift therebetween.

Die PLL 184 oder 180 erzeugt ein Phasen-Indikator-Signal PCLKPHI1, das der Master-Kabel-Schnittstelle 192 oder 194 anzeigt, wenn die erste Phase von Daten zu dem Kabel 28 vorhanden sein sollte. Auf der Eingangsseite ist das Signal PCLKPHI1 auf dem PCI-Takt PCICLK1 basierend; auf der Ausgangsseite ist das Signal PCLKPHI1 auf dem PCI-Takt PCICLK2 basierend. Die PLL 186 oder 182 erzeugt ein Phasen-Indikator-Signal CCLKPHI1, basierend auf dem Kabel-Takt CABLE_CLK1 oder CABLE_CLK2, um zu der Slave-Kabel-Schnittstelle 196 oder 198 anzuzeigen, wenn die erste Phase von Daten entlang des Kabels 28 angekommen ist. Der PCI-Takt PCICLK2 für den sekundären PCI-Bus 32 wird außerhalb eines 1X Takts BUFCLK der PLL 182 in dem ausgangsseitigen Brücken-Chip 48 erzeugt. Der Takt BUFCLK steuert den Takt-Puffer 181 über einen Treiber 179 an. Der Puffer 181 gibt ein separates Taktsignal für jeden der sechs Schlitze auf dem sekundären PCI-Bus 32 ebenso wie den Takt PCICLK2 aus, was zurück zu dem Bus-Eingangs-Takt zu dem ausgangsseitigen Brücken-Chip 48 geführt wird. Indem der Takt PCLK auf dem Takt PCICLK2 von dem Takt-Puffer 181 basierend ist, werden die Takt-Schemen der eingangsseitigen und ausgangsseitigen Chips so gestaltet, um ähnlicher zu erscheinen, da beide auf dem externen Bus-Takt basierend sind.The PLL 184 or 180 generates a phase indicator signal PCLKPHI1, which is the master cable interface 192 or 194 indicates when the first phase of data to the cable 28 should be present. On the input side, the signal PCLKPHI1 is based on the PCI clock PCICLK1; on the output side, the signal PCLKPHI1 is based on the PCI clock PCICLK2. The PLL 186 or 182 generates a phase indicator signal CCLKPHI1 based on the cable clock CABLE_CLK1 or CABLE_CLK2 to the slave cable interface 196 or 198 display when the first phase of data along the cable 28 has arrived. The PCI clock PCICLK2 for the secondary PCI bus 32 is outside of a 1X clock BUFCLK the PLL 182 in the output side bridge chip 48 generated. The clock BUFCLK controls the clock buffer 181 via a driver 179 at. The buffer 181 gives a separate clock signal to each of the six slots on the secondary PCI bus 32 as well as the clock PCICLK2, which goes back to the bus input clock to the output side bridge chip 48 to be led. By clock PCLK on clock PCICLK2 from the clock buffer 181 is based, the clock schemes of the input side and output side chips are made to appear more similar because both are based on the external bus clock.

Der Kabel-Takt CABLE_CLK1 ist ein 33% Taktzyklus. Die PLL 182 wandelt erst den 33% Taktzyklus zu einem 50% Taktzyklus zur Ausgabe als BUFCLK um.The cable clock CABLE_CLK1 is a 33% clock cycle. The PLL 182 first converts the 33% clock cycle to a 50% clock cycle to output as BUFCLK.

Die PCI-Spezifikation, Version 2.1, fordert, dass der PCI-Bus-Takt die folgenden Erfordernisse erfüllen muss: Takt-Zyklus-Zeit größer als oder gleich zu 30 ns; Takt-Hoch-Zeit größer als 11 ns; Takt-Niedrig-Zeit größer als oder gleich zu 11 ns und Taktanstiegsrate zwischen 1 und 4 ns.The PCI Specification, Version 2.1, requires that the PCI bus clock be the must meet the following requirements: Clock cycle time greater than or equal to 30 ns; Clock high time greater than 11 ns; Clock-low-time greater than or equal to 11 ns and clock rate between 1 and 4 ns.

Wenn das Computersystem hochgefahren wird, wird der eingangsseitige Chip zuletzt hochgefahren, die eingangsseitige PLL 184 schickt den Takt CABLE_CLK1 (über die Master-Schnittstelle 122) nach unten entlang des Kabels 28, das dann durch die ausgangsseitige PLL 182 und PLL 180 verriegelt wird. Die ausgangsseitige PLL 180 schickt dann den Takt CABLE_CLK2 zurück eingangsseitig, um durch die PLL 186 verriegelt zu werden. Das System ist nicht vollständig betriebsfähig, bis alle vier PLLs eine Verriegelung erhalten haben.When the computer system is started up, the input-side chip is started up last, the input-side PLL 184 sends the clock CABLE_CLK1 (via the master interface 122 ) down along the cable 28 which then passes through the output PLL 182 and PLL 180 is locked. The output PLL 180 then sends the clock CABLE_CLK2 back on the input side, through the PLL 186 to be locked. The system is not fully operational until all four PLLs have been locked.

Falls der eingangsseitige Brücken-Chip 26 hochfährt und der ausgangsseitige Brücken-Chip 48 noch nicht eingeschaltet ist, verhält sich der eingangsseitige Brücken-Chip 26 als eine PCI-PCI-Brücke, wobei nichts mit dem ausgangsseitigen Bus (das Kabel 28) verbunden ist. Als Folge nimmt der eingangsseitige Brücken-Chip 26 nicht irgendwelche Zyklen an, bis der ausgangsseitige Brücken-Chip 48 hochgefahren bzw. eingeschaltet ist und die ausgangsseitige PLL 186 eine „Verriegelung" von dem Kabel-Takt CABLE_CLK2 erhalten hat.If the input side bridge chip 26 starts up and the output side bridge chip 48 not yet switched on, behaves the input side bridge chip 26 as a PCI-PCI bridge, with nothing to the output side bus (the cable 28 ) connected is. As a result, the input side bridge chip decreases 26 do not do any cycles until the output side bridge chip 48 is powered up or turned on and the output side PLL 186 has received a "lock" from the cable clock CABLE_CLK2.

Der eingangsseitige Brücken-Chip 26 floatiert alle seiner PCI-Ausgangs-Puffer und Zustand-Maschinen asynchron mit einem Aufstellen des PCI-Reset-Signals PCIRST1_ auf dem primären Bus 24. Während eines Resets kann die PLL 184 versuchen, eine Verriegelung auf dem PCI-Bus-Takt PCICLK1 zu erhalten. Da die PCI Spezifikation garantiert, dass das Signal PCIRST1_ aktiv für mindestens 100 μs verbleiben wird, nachdem der PCI-Bus-Takt stabil wird, hat die PLL 184 ungefähr 100 μs, um eine Verriegelung zu erhalten.The input side bridge chip 26 Floats all of its PCI output buffers and state machines asynchronously with setting up the PCI reset signal PCIRST1_ on the primary bus 24 , During a reset, the PLL 184 try to get a lock on the PCI bus clock PCICLK1. Since the PCI specification guarantees that the signal PCIRST1_ will remain active for at least 100 μs after the PCI bus clock becomes stable, the PLL has 184 about 100 μs to get a lock.

Der ausgangsseitige Brücken-Chip 48 setzt alle internen Zustand-Maschinen beim Erfassen des Signals PCIRST1_ für den primären Bus zurück. Daraufhin stellt der ausgangsseitige Brücken-Chip ein Schlitz-spezifisches Reset zu jedem Schlitz auf dem sekundären PCI-Bus 32 ebenso wie ein Reset-Signal PCIRST2_ für einen sekundären PCI Bus auf.The output side bridge chip 48 resets all internal state machines upon detection of the PCIRST1_ signal for the primary bus. The output side bridge chip then places a slot-specific reset to each slot on the secondary PCI bus 32 as well as a reset signal PCIRST2_ for a secondary PCI bus.

Wie 6 zeigt, umfasst jede PLL einen spannungs-gesteuerten Oszillator (VCO) 200, der einen Ausgang 201 (den 3X Takt) zwischen 75 Mhz (für einen 25-Mhz PCI-Bus) und 100 Mhz (für einen 33-Mhz PCI-Bus) erzeugt. Der VCO 200 empfängt einen Referenz-Takt 197, der der PCI-Bus-Takt ist. Jede PLL besitzt eine Verriegelungs-Erfassungs-Schaltung 205, die durch ein Verriegelungs-Indikations-Bit anzeigt, dass die PLL-Phase auf deren Referenz genau genug verriegelt ist, um deren vorgesehene Funktion durchzuführen.As 6 shows, each PLL comprises a voltage-controlled oscillator (VCO) 200 who has an exit 201 (the 3X clock) between 75Mhz (for a 25Mhz PCI bus) and 100Mhz (for a 33Mhz PCI bus). The VCO 200 receives a reference clock 197 which is the PCI bus clock. Each PLL has a latch detection circuit 205 indicating by a lock indication bit that the PLL phase is locked to its reference accurately enough to perform its intended function.

Die Verriegelungs-Anzeige-Bits werden zu einem Status-Register in dem Konfigu rations-Raum 105 oder 125 jedes Brücken-Chips geschrieben. Auf der Ausgangsseite wird ein power-good/lock-Status-Bit zu dem eingangsseitigen Brücken-Chip 26 übertragen, um anzuzeigen, dass die Hauptelemente des ausgangsseitigen Brücken-Chips 48 stabil sind (Energie ist stabil) und die ausgangsseitigen PLLs verriegelt sind (Verriegelungs-Anzeige-Bits der zwei PLLs sind aktiv). Das Verriegelungs-Anzeige-Bit wird auch tormäßig mit den EDC-Status-Bits gesteuert, so dass EDC-Fehler nicht als solche berichtet werden, bis die PLLs verriegelt sind. Demzufolge kann das Brücken-Chip-Paar zu einem fehlerfreien-Kommunikations-Zustand ohne eine Software-Intervention gelangen. Das Verriegelungs-Anzeige-Bit liefert auch bestimmte, diagnostische Informationen, die zwischen einem PLL-Verriegelungs-Fehler und anderen Daten-Fehlern unterscheiden können. Die Takt-Erzeugungs-Schaltung umfasst eine Vier-Zustand-Maschine 202, um einen durch 3 geteilten Takt (1X Takt) des VCO Ausgangs 201 zu erzeugen. Der 1X Takt wird zurück zu der PLL an dem Eingang 203 geführt.The lock indication bits become a status register in the configuration space 105 or 125 written every bridge chips. On the output side, a power-good / lock status bit becomes the input-side bridge chip 26 transmitted to indicate that the main elements of the output side bridge chips 48 are stable (energy is stable) and the output side PLLs are locked (lock indication bits of the two PLLs are active). The lock-indicating bit is also gate-controlled with the EDC status bits so that EDC errors are not reported as such until the PLLs are locked. As a result, the bridge-chip pair may arrive at an error-free communication state without software intervention. The lock-indicating bit also provides certain diagnostic information that can distinguish between a PLL lock error and other data errors. The clock generating circuit includes a four-state machine 202 to divide by 3 divided clock (1X clock) of the VCO output 201 to create. The 1X clock will go back to the PLL on the input 203 guided.

Daten werden entlang des Kabels 28 unter einer 3X Takt (PCLK3) Rate in drei Zeit-multiplexierten Phasen geführt, um eine 1X Takt Nachrichten-Übertragungs-Rate zu erzeugen. Wie 7 zeigt, umfasst die Schaltung in der Master-Kabel-Schnittstelle 192 oder 194 zum Zerlegen und Übertragen der Kabel-Nachricht ein Register 204, das die abgehende Nachricht unter einer lokalen PCLK-Grenze abtastet. Das Flip-Flop 208 liefert eine zusätzliche Zone für eine Halte-Zeit in der dritten Phase der übertragenden Nachricht durch Halten dieser Phase für eine zusätzliche Hälfte eines PCLK. Da das Ausgangs-Register 212 mit dem 3X Takt PCLK3 getaktet ist, verringert dies das Erfordernis für eine enge Kontrolle in Bezug auf den Versatz zwischen den 1X und 3X Takten. Von dem Phasen-Indikations-Signal PCLKPHI1 erzeugt ein Satz von drei Flips-Flops 210 aufeinanderfolgende PHI1, PHI2 und PHI3 Signale, die Phasen 1, 2 und 3 jeweils darstellen, was wiederum einen 60:20 Multiplexer 206 steuert. Die drei Phasen von Daten (LMUXMSG[19:0], LMUXMSG[39:20], {LMUXMSG[51:40], EDC[7:0]}) werden aufeinanderfolgend in das Register 212 multiplexiert und über das Kabel 28 angesteuert. Die dritte Phase an Daten umfasst Fehler-Korrektur-Bits EDC[7:0], erzeugt durch einen ECC-Generator 206 (17), von den Ausgangs-Bits LMUXMSG[51:0] des Registers 204. Das Flip-Flop 214, getaktet durch PCLK3, empfängt das PHI1 Signal und taktet es als den Kabel-Takt CABLE_CLK1 oder CABLE_CLK2 heraus.Data gets along the cable 28 under a 3X clock (PCLK3) rate in three time-multiplexed phases to produce a 1X clock message transmission rate. As 7 shows, the circuit includes in the master cable interface 192 or 194 for disassembling and transmitting the cable message a register 204 that scans the outgoing message under a local PCLK boundary. The flip-flop 208 provides an additional zone for a hold time in the third phase of the transmitted message by holding this phase for an additional half of a PCLK. Because the output register 212 With the 3X clock PCLK3 clocked, this reduces the need for tight control over the offset between the 1X and 3X clocks. From the phase indication signal PCLKPHI1 generates a set of three flip flops 210 consecutive PHI1, PHI2 and PHI3 signals, the phases 1 . 2 and 3 each representing what in turn is a 60:20 multiplexer 206 controls. The three phases of data (LMUXMSG [19: 0], LMUXMSG [39:20], {LMUXMSG [51:40], EDC [7: 0]}) are successively entered into the register 212 multiplexed and over the cable 28 driven. The third phase of data includes error correction bits EDC [7: 0] generated by an ECC generator 206 ( 17 ), from the output bits LMUXMSG [51: 0] of the register 204 , The flip-flop 214 clocked by PCLK3 receives the PHI1 signal and clocks it out as the cable clock CABLE_CLK1 or CABLE_CLK2.

Da die Master-Kabel-Schnittstelle 192 oder 194 eine 1X-zu-3X Kommunikations-Schnittstelle ist, wird eine EIN-3X-Takt-Latenz hervorgerufen, die zu einer einzelnen 3X Takt-Phasen-Verschiebung der übertragenden Kabel-Nachricht von dem PCI-Bus-Takt führt, wie dies in 8 dargestellt ist. In der Periode T0 wird eine Nachricht A dem Eingang des Registers 204 präsentiert und der erste Phasen-Takt-Indikator PCLKPHI1 wird auf hoch gesetzt. Das Signal PHI1 wird auf hoch von einem vorherigen Zyklus gesetzt. In der Periode P1 wird der Kabel-Takt CABLE_CLK1 oder CABLE_CLK2 auf hoch in Abhän gigkeit des Signals PHI1, das zu hoch übergeht, angesteuert. Der PCLKPHI1 Impuls bewirkt, dass das Signal PHI2 auf hoch in der Periode T1 gepulst wird. Als nächstes wird, in der Periode T2, das Signal PHI3 in Abhängigkeit des Signals PHI2 gepulst. In der Periode T3 wird das Signal PHI1 auf hoch in Abhängigkeit des Signals PHI3, das hoch ist, gepulst. Eine Nachricht A wird auch in das Register 204 an der ansteigenden Flanke des Takts PCLK in der Periode T3 eingeladen. Als nächstes bewirkt, in der Periode T4, das Signal PHI1, dass der Multiplexer 206 die ersten Phasen-Daten A1 zum Einladen in das Registor 212 auswählt. Als nächstes werden, in der Periode T5, die zweiten Phasen-Daten A2 ausgewählt und in das Register 212 eingeladen. Dann werden, in der Periode T6, die dritten Phasen-Daten A3 in das Register 212 eingeladen. Dieser Prozess wird für die Nachrichten B, C, D und E in den darauffolgenden Takt-Perioden wiederholt.Because the master cable interface 192 or 194 is a 1X-to-3X communication interface, an ON-3X clock latency is caused resulting in a single 3X clock phase shift of the transmitting cable message from the PCI bus clock, as shown in FIG 8th is shown. In the period T0, a message A becomes the input of the register 204 and the first phase clock indicator PCLKPHI1 is set high. The signal PHI1 is set high from a previous cycle. In the period P1, the cable clock CABLE_CLK1 or CABLE_CLK2 is driven high depending on the signal PHI1, which goes too high. The PCLKPHI1 pulse causes the signal PHI2 to be pulsed high in the period T1. Next, in the period T2, the signal PHI3 is pulsed in response to the signal PHI2. In the period T3, the signal PHI1 is pulsed high in response to the signal PHI3 which is high. A message A is also in the register 204 at the rising edge of the clock PCLK in the period T3. Next, in the period T4, the signal PHI1 causes the multiplexer 206 the first phase data A1 for loading into the registor 212 selects. Next, in the period T5, the second phase data A2 is selected and entered into the register 212 invited. Then, in the period T6, the third phase data A3 becomes the register 212 invited. This process is repeated for the messages B, C, D and E in the following cycle periods.

Wie in 8 dargestellt ist, besitzt der Kabel-Takt CABLE_CLK einen 33% Taktzyklus. Alternativ kann der Kabel-Takt CABLE_CLK so ausgelegt werden, um einen durchschnittlichen Taktzyklus von 50% zu haben, was, zum Beispiel, durch Abschicken des Kabel-Taktes als 33% hoch – 66% niedrig – 66% hoch – 33% niedrig vorgenommen werden kann. In dem man einen durchschnittlichen 50% Taktzyklus hat, könnte dies zu besseren Durchgangscharakteristika in dem Kabel 28 führen.As in 8th is shown, the cable clock CABLE_CLK has a 33% clock cycle. Alternatively, the cable clock CABLE_CLK may be designed to have an average clock cycle of 50%, which, for example, is done by sending the cable clock as 33% high - 66% low - 66% high - 33% low can. By having an average 50% clock cycle this could result in better pass characteristics in the cable 28 to lead.

Wie 9 zeigt, stellt ein Slave-Kabel-Schnittstellen-First-in-First-out-Puffer (FIFO) 216 ankommenden Daten von dem Kabel 28 zusammen und überträgt die zusammengestellten Daten zu den Warteschlangen und den PCI Zustand-Maschinen in dem empfangenden Brücken-Chip. Der FIFO 216 ist 4 Eintritte tief, wobei jeder Eintritt in der Lage ist, eine vollständige Kabel-Nachricht zu halten. Die Tiefe des FIFO 216 ermäglicht, dass Kabel-Daten zu dem Takt des lokalen Brücken-Chips ohne Verlieren irgendeiner effektiven Bandbreite in der Kabel-Schnittstelle synchronisiert werden können. Zusätzlich ist, auf der Eingangsseite, der FIFO 216 eine asynchrone Grenze für die Kabel-Daten, die von dem ausgangsseitigen Brücken-Chip 48 ankommen. Der FIFO 216 stellt sicher, dass die Kabel-Daten geeignet in Bezug auf PCLK synchronisiert sind, bevor sie zu dem Rest des Chips ausgegeben werden.As 9 shows a slave cable interface first in first out buffer (FIFO) 216 incoming data from the cable 28 and transfers the aggregated data to the queues and PCI state machines in the receiving bridge chip. The FIFO 216 is 4 entries deep, with each entry being able to hold a full cable message. The depth of the FIFO 216 allows cable data to be synchronized to the clock of the local bridge chip without losing any effective bandwidth in the cable interface. In addition, on the input side, the FIFO 216 an asynchronous boundary for the cable data coming from the output side bridge chip 48 Arrive. The FIFO 216 ensures that the cable data is properly synchronized with PCLK before being output to the rest of the chip.

Die Eintritte des FIFO 216 werden durch einen Eingangs-Hinweiszeiger INPTR[1:0] von einem Eingangs-Hinweiszeiger-Zähler 226 ausgewählt, der durch das Signal CCLK3 getaktet wird, gelöscht wird, wenn ein Signal EN_INCENT niedrig ist, und durch den Phasen-Indikator CCLKPHI1 freigegeben wird. Die negative Flanke des 3X Takts CCLK3 von der PLL 186 oder 182 wird dazu verwendet, ankommende Daten von dem Kabel 28 zu verriegeln, zuerst in ein 20-Bit Register 218 hinein und dann in ein Register 220 hinein, falls ein Phasen-Ein-Indikations-Signal PHI1_DLY aufgestellt ist, oder in ein Register 222 hinein, falls ein Phasen-2-Indikationssignal PHI2_DLY aufgestellt ist. Die Phase-1-Daten, die Phase-2-Daten und die Phase-3-Daten von den Registern 220, 222 und 218 jeweils werden in den ausgewählten Eingang des FIFO 216 an der negativen Flanke von CCLK3 ausgewählt, wenn das Phasen-3-Indikations-Signal PHI3_DLY aufgestellt ist. Die vier Setze von Ausgängen von dem FIFO 216 werden durch einen 240:60 Multiplexer 228 empfangen, der durch einen Ausgangs-Hinweiszeiger OUTPTR[1:0] von einem Ausgangs-Hinweiszeiger-Zähler 224, getaktet durch PCLK und gelöscht dann, wenn ein Signal EN_OUTCNT niedrig ist, ausgewählt wird.The entries of the FIFO 216 are indicated by an input pointer INPTR [1: 0] from an input pointer pointer 226 selected, which is clocked by the signal CCLK3, is cleared when a signal EN_INCENT is low, and is enabled by the phase indicator CCLKPHI1. The negative edge of the 3X clock CCLK3 from the PLL 186 or 182 is used to receive incoming data from the cable 28 to lock first in a 20-bit register 218 into and then into a register 220 in, if a phase-in indication signal PHI1_DLY is established, or into a register 222 if a phase 2 indication signal PHI2_DLY is set up. The Phase 1 data, the Phase 2 data and the Phase 3 data from the registers 220 . 222 and 218 each will be in the selected input of the FIFO 216 is selected on the negative edge of CCLK3 when the PHI3_DLY phase 3 indication signal is asserted. The four sets of outputs from the FIFO 216 be through a 240: 60 multiplexer 228 received by an output pointer OUTPTR [1: 0] from an output pointer pointer 224 clocked by PCLK and cleared when a signal EN_OUTCNT is low is selected.

Wie die 10 zeigt, laufen die Eingangs-Hinweiszeiger- und Ausgangs-Hinweiszeiger-Zähler 226 und 224 kontinuierlich durch den FIFO 216, was Daten füllt und leert. Die Zähler 226 und 224 sind in einer solchen Art und Weise versetzt, um gültige Daten in einer Stelle zu garantieren, bevor sie ausgelesen werden. Die Initialisierung der Hinweiszeiger ist unterschiedlich für einen eingangsseitigen Brücken-Chip 26 gegenüber einem ausgangsseitigen Brücken-Chip 48, aufgrund von Synchronisierungsunsicherheiten.As the 10 2, the input pointer and output pointer pointers are running 226 and 224 continuously through the FIFO 216 what fills and empties data. The counters 226 and 224 are offset in such a way as to guarantee valid data in a location before being read out. The initialization of the pointers is different for an input side bridge chip 26 opposite an output side bridge chip 48 , due to synchronization uncertainties.

Flip-Flops 236 und 238 synchronisieren das Reset-Signal C_CRESET, das synchron zu den Takten in dem Brücken-Chip ist, zu der CLK-Takt-Grenze. Das Signal EN_INCNT wird durch das Flip-Flop 238 erzeugt. Der Eingangs-Hinweiszeiger wird an der ansteigenden Flanke des Takts CCLK3 erhöht, wenn das erste Phasen-Indikations-Signal CCLKPHI1 und das Signal EN_INCNT vorliegen. Der Ausgangs-Hinweiszeiger wird dann an einer späteren, lokalen PCLK-Takt-Grenze PCLK gestartet, wenn garantiert werden kann, dass die Daten in dem FIFO 216 gültig sein werden. Der eingangsseitige und der ausgangsseitige Brücken-Chip müssen das Starten des Ausgangs-Hinweiszeigers unterschiedlich handhaben, da die Phasen-Beziehung des Kabel-Taktes zu dem lokalen Takt nicht für den eingangsseitigen Brücken-Chip 26 bekannt ist, sondern für den ausgangsseitigen Brücken-Chip 48 bekannt ist.Flip-flops 236 and 238 synchronize the reset signal C_CRESET, which is synchronous with the clocks in the bridge chip, to the CLK clock limit. The EN_INCNT signal is passed through the flip-flop 238 generated. The input pointer is incremented on the rising edge of the clock CCLK3 when the first pha sen indication signal CCLKPHI1 and the signal EN_INCNT present. The output pointer is then started on a later, local PCLK clock boundary PCLK, if it can be guaranteed that the data in the FIFO 216 will be valid. The input side and output side bridge chips must handle starting the output pointer differently, since the phase relationship of the cable clock to the local clock is not for the input side bridge chip 26 is known, but for the output side bridge chip 48 is known.

In dem ausgangsseitigen Brücken-Chip 48 ist die Phasen-Beziehung zwischen dem ankommenden Kabel-Takt CABLE_CLK1 und dem sekundären PCI-Bus-Takt PCICLK2 bekannt, da der PCI-Takt PCICLK2 von dem Kabeltakt erzeugt wird. Als Folge existiert keine Synchronisations-Strafe für den Ausgangs-Hinweiszeiger OUTPTR[1:0] in dem ausgangsseitigen Brücken-Chip 48, und der Ausgangs-Hinweiszeiger kann den Eingangs-Hinweiszeiger INPTR[1:0] so nahe wie möglich nachführen. Ein Flip-Flop 230, das an der negativen Flanke des Takts PCLK getaktet wird, wird dazu verwendet, irgendwelche Taktverschiebungsprobleme zwischen dem Takt CCLK, erzeugt durch die PLL 182, und dem Takt PCLK, erzeugt durch die PLL 180, zu vermeiden. Obwohl diese zwei Takte identische Frequenzen haben und in Phase miteinander sein sollten, ist dabei eine unbekannte Verschiebung zwischen den zwei Takten vorhanden, da sie von zwei unterschiedlichen PLLs erzeugt werden. Auf der Ausgangsseite ist das Signal EN_OUTCNT das Signal EN_INCNT, verriegelt auf der negativen Flanke des Signals PCLK durch das Flip-Flop 230. Ein Multiplexer 234 wählt den Ausgang des Flip-Flops 230 aus, da das Signal UPSTREAM_CHIP niedrig ist.In the output side bridge chip 48 For example, the phase relationship between the incoming cable clock CABLE_CLK1 and the secondary PCI bus clock PCICLK2 is known because the PCI clock PCICLK2 is generated by the cable clock. As a result, there is no synchronization penalty for the output pointer OUTPTR [1: 0] in the output side bridge chip 48 , and the output pointer may track the input pointer INPTR [1: 0] as close as possible. A flip-flop 230 , which is clocked on the negative edge of the clock PCLK, is used to cause any timing shift problems between the clock CCLK generated by the PLL 182 , and the clock PCLK generated by the PLL 180 , to avoid. Although these two clocks have identical frequencies and should be in phase with each other, there is an unknown shift between the two clocks since they are generated by two different PLLs. On the output side, the signal EN_OUTCNT is the signal EN_INCNT latched on the negative edge of the signal PCLK by the flip-flop 230 , A multiplexer 234 selects the output of the flip-flop 230 because the signal UPSTREAM_CHIP is low.

In dem eingangsseitigen Brücken-Chip 26 wird die Kabel-Schnittstelle bzw. das Kabel-Interface als vollständig asynchron behandelt. Die Phasen-Unsicherheit erfolgt aufgrund der unbekannten Phasenverschiebung des Kabels 28 selbst. Das Auslegen in Bezug auf diese Unsicherheit führt zu einer vollständigen Freiheit in Bezug auf die Länge des Kabels 28. Dasjenige, was bekannt ist, ist das, dass die Takte in den eingangsseitigen- und ausgangsseitigen Brücken-Chips dieselbe Frequenz haben, da sie beide deren Ursprung in dem eingangsseitigen PCI-Bus-Takt PCICLK1 haben. In dem eingangsseitigen Brücken-Chip 26 ist das Signal EN_OUTCNT das Signal EN_INCNT verriegelt auf der postiven Flanke des Takts PCLK durch ein Flip-Flop 232. Der Multiplexer 234 wählt den Ausgang des Flip-Flops 232 aus, da das Signal UPSTREAM_CHIP hoch ist. Das Flip-Flop 232 garantiert, dass gerade für das „Lineup" im schlechtesten Fall des Kabel-Taktes CABLE_CLK2 und des lokalen PCI-Taktes PCLK (eine vollständige PCLK Periode-Phasen-Verschiebung) gültige Daten in dem FIFO 216 vorhanden sind, bevor die Daten zu dem Rest des Chips übertragen werden.In the input side bridge chip 26 the cable interface or the cable interface is treated as completely asynchronous. The phase uncertainty is due to the unknown phase shift of the cable 28 itself. Exposing to this uncertainty leads to complete freedom in terms of the length of the cable 28 , The one thing that is known is that the clocks in the input side and output side bridge chips have the same frequency, since both have their origin in the input side PCI bus clock PCICLK1. In the input side bridge chip 26 the signal EN_OUTCNT is the signal EN_INCNT latched on the positive edge of the clock PCLK by a flip-flop 232 , The multiplexer 234 selects the output of the flip-flop 232 because the signal UPSTREAM_CHIP is high. The flip-flop 232 ensures that just for the "worst case" line clock of the cable clock CABLE_CLK2 and the local PCI clock PCLK (a complete PCLK period-phase shift) valid data in the FIFO 216 are present before the data is transferred to the rest of the chip.

Wie 11 zeigt, werden die Kabel-Daten durch die Slave-Kabel-Schnittstelle 196 oder 198 als Drei-Phasen-, in der Zeit multiplexierte, Signale A1, A2 und A3; B1, B2 und B3; C1, C2 und C3; usw., empfangen. Eine vorherige Transaktion wird in den Perioden T0, T1 und T2 abgeschlossen. Beginnend in der Periode T3 werden die ersten Phasen-Daten A1 dem Register 218 präsentiert und der erste Phasen-Indikator CCLKPHI1 wird auf hoch gepulst. An der abfallenden Flanke von CCLK3 in der Periode T3 werden die Daten A1 in das Register 218 eingeladen und das Indikations-Signal PHI_DLY der lokalen Phase 1 wird auf hoch gepulst. In der Periode T4 werden, an der abfallenden Flanke des Takts, die Daten A1 der Phase 1 in das Register 220 eingeladen, die Daten A2 der Phase 2 werden in das Register 218 eingeladen und das Indikations-Signals PHI2_DLY der Phase 2 wird auf hoch gepulst. In der Periode T5 werden, an der abfallenden Flanke von CCLK3, die Daten der Phase 2 in das Register 222 eingeladen, die Daten A3 der Phase 3 werden in das Register 218 eingeladen und das Indikations-Signal PHI3_DLY der Phase wird auf hoch gepulst. In der Periode T6 werden die Inhalte der Register 220, 222 und 218 in den ausgewählten Eingang des FIFO 216 an der folgenden Flanke CCLK3 eingeladen. Auch werden in der Periode T6 die Daten B1 dem Register 218 zusammen mit dem Indikations-Signal CCLKPHI1 präsentiert. Nachrichten B und C werden in das FIFO 216 in derselben Art und Weise wie eine Nachricht A in darauffolgenden Perioden eingeladen.As 11 shows, the cable data is through the slave cable interface 196 or 198 as three-phase, time-multiplexed, signals A1, A2 and A3; B1, B2 and B3; C1, C2 and C3; etc., received. A previous transaction is completed in periods T0, T1 and T2. Beginning in the period T3, the first phase data A1 becomes the register 218 presented and the first phase indicator CCLKPHI1 is pulsed to high. On the falling edge of CCLK3 in the period T3, the data A1 becomes the register 218 and the indication signal PHI_DLY of the local phase 1 is pulsed to high. In the period T4, on the falling edge of the clock, the data of phase 1 is A1 in the register 220 invited, the data A2 phase 2 will be in the register 218 and the PHI2_DLY indication signal of phase 2 is pulsed high. In period T5, on the falling edge of CCLK3, the phase 2 data is written to the register 222 Invited, the data A3 phase 3 will be in the register 218 and the indication signal PHI3_DLY of the phase is pulsed to high. In the period T6, the contents of the registers 220 . 222 and 218 into the selected input of the FIFO 216 invited to the next flank CCLK3. Also, in the period T6, the data B1 becomes the register 218 presented together with the indication signal CCLKPHI1. Messages B and C are in the FIFO 216 in the same way as a message A is invited in subsequent periods.

Wie 12 zeigt, beginnt der Eingangs-Hinweiszeiger INPTR[1:0] bei dem Wert 0 in der Periode T0 an der ansteigenden Flanke des Takts CCLK3. Auch wird, in einer Periode T0, eine Nachricht A in das FIFO0 an der abfallenden Flanke des Takts CCLK3 eingeladen. In dem ausgangsseitigen Brücken-Chip 48 wird der Ausgangs-Hinweiszeiger OUTPTR[1:0] auf den Wert 0 an der nächsten, ansteigenden Flanke des Takts PCLK in der Periode T3 erhöht. Auch wird, in der Periode T3, der Eingangs-Hinweiszeiger INPTR[1:0] auf den Wert 1 an der ansteigenden Flanke des Takts CCLK3 erhöht, und die Nachricht B wird in den FIFO1 an der abfallenden Flanke von CCLK3 eingeladen. Kabel-Daten werden demzufolge in FIFO0, FIFO1, FIFO2 und FIFO3 in einer zirkularen Weise eingeladen.As 12 2, the input pointer INPTR [1: 0] starts at the value 0 in the period T0 on the rising edge of the clock CCLK3. Also, in a period T0, a message A is loaded into the FIFO0 on the falling edge of the clock CCLK3. In the output side bridge chip 48 the output pointer OUTPTR [1: 0] is raised to the value 0 on the next rising edge of the clock PCLK in the period T3. Also, in the period T3, the input pointer INPTR [1: 0] is incremented to the value 1 on the rising edge of the clock CCLK3, and the message B is loaded into the FIFO1 on the falling edge of CCLK3. Cable data is thus loaded into FIFO0, FIFO1, FIFO2 and FIFO3 in a circular fashion.

Auf der Ausgangsseite wird, falls der Eingangs-Hinweiszeiger INPTR[1:0] in der Zeitperiode T0 den Wert 0 hat, der Ausgangs-Hinweiszeiger OUTPTR[1:0] auf den Wert 0 in der Periode T6 erhöht, zwei PCLK Perioden nach dem Eingangs-Hinweiszeiger INPTR[1:0]. Die zwei PCLK Perioden-Verzögerungen in dem ausgangsseitigen Brücken-Chip 26 ermöglicht, dass die Phasenverschiebung in dem Kabel 28 irgendein Wert ist, was den Vorteil hat, dass die Kabellänge nicht von einem spezifischen, festgelegten Wert sein muss.On the output side, if the input pointer INPTR [1: 0] in the time period T0 is 0, the output pointer OUTPTR [1: 0] is increased to 0 in the period T6, two PCLK periods after Input pointer INPTR [1: 0]. The two PCLK period delays in the output side bridge chip 26 allows the phase shift in the cable 28 any value is, which has the advantage that the cable length does not have to be of a specific, fixed value.

Wie 13 zeigt, werden die Eingangs- und Ausgangs-Flips-Flops an der Kabel-Schnittstelle kundenseitig durch den Hersteller der Chips platziert, um die Verschiebung zwischen den Kabeldaten und dem Takt, der dadurch hindurchgeführt wird, zu minimieren. Die Menge an Draht zwischen jedem Flip-Flop und der I/O wird als so konsistent wie möglich zwischen allen Kabel-Schnittstellen-Signalen beibehalten.As 13 For example, the input and output flip flops at the cable interface are placed by the manufacturer of the chips to minimize the displacement between the cable data and the clock passed therethrough. The amount of wire between each flip-flop and the I / O is kept as consistent as possible between all the cable interface signals.

KABEL-NACHRICHTCABLE MESSAGE

Sechzig Bits an Kabel-Daten bilden eine Nachricht. Die 60 Bits werden auf 20 Kabel-Zeilen multiplexiert und werden alle 10 ns über das Kabel 28 übertragen. Die Tabelle in 14 stellt die Bits dar und die Phase jedes Bits ist zugeordnet. Die ersten drei Spalten stellen das eingangsseitige-zu-ausgangsseitige Daten-Format dar, und die letzten drei Spalten stellen das ausgangsseitig-zu-eingangsseitig Daten-Übertragungs-Format dar. Das Folgende ist eine Beschreibung der Signale.Sixty bits of cable data form a message. The 60 bits are multiplexed on 20 cable lines and are transmitted every 10 ns over the cable 28 transfer. The table in 14 represents the bits and the phase of each bit is assigned. The first three columns represent the input-to-output data format, and the last three columns represent the output-to-input data transmission format. The following is a description of the signals.

EDC[7:0]: Die Signale sind die acht Syndrom-Bits, verwendet dazu, Fehler zu erfassen und zu korrigieren, die beim Übertragen von Daten über das Kabel 28 vorgefunden werden.EDC [7: 0]: The signals are the eight syndrome bits, used to detect and correct errors that occur when transmitting data over the cable 28 be found.

CAD[31:0]: Die Signale sind die 32 Adressen- oder Daten-Bits.CAD [31: 0]: The signals are the 32 address or data bits.

CFRAME_: Das Signal wird dazu verwendet, den Beginn und das Ende einer Kabel-Transaktion zu signalisieren, ähnlich zu dem PCI FRAME_ Signal.CFRAME_: The signal is used to start and end a cable transaction to signal, similar to the PCI FRAME_ signal.

CCBE[3:0]: Die vier Bits bilden Byte-Freigaben in einigen PCI-Takt-Phasen und entweder einen PCI-Befehl oder einen Nachrichten-Code in anderen PCI-Takt-Phasen.CCBE [3: 0]: The four bits form byte enables in some PCI clock phases and either a PCI command or a message code in others PCI clock phases.

CBUFF[3:0]: In der Adressen-Phase zeigen die Signale eine Puffer-Zahl zum Initialisieren der verzögerten Abschluss-Warteschlange (DCQ) des Brücken-Chips, 148, an, um einen eingangsseitigen und ausgangsseitigen, verzögerten Lese-Abschluss (Delayed Read Completion – DRC) und eine verzögerte Lese-Anforderung (Delayed Read Request – DRR) Transaktionen festzulegen. Nach der Adressen-Phase enthalten die Signale das Paritäts-Bit, eine Paritäts-Fehler-Indikation und das Daten-Bereitschafts-Signal.CBUFF [3: 0]: In the address phase, the signals indicate a buffer number for initializing the delayed completion queue (DCQ) of the bridge chip, 148 to specify an input-side and output-side delayed read completion (DRC) and a delayed read request (DRR) transactions. After the address phase, the signals include the parity bit, a parity error indication, and the data ready signal.

COMPLETION REMOVED: Das Bit wird dazu verwendet, zu signalisieren, dass ein verzögerter Abschluss von der Transaktions-Reihenfolge-Warteschlange (Transaction Ordereing Queue – TOC) auf der anderen Seite des Kabels 28 entfernt worden ist.COMPLETION REMOVED: The bit is used to signal that a delayed completion from the Transaction Ordering Queue (TOC) on the other side of the cable 28 has been removed.

PMW ACKNOWLEDGE: Das Bit wird dazu verwendet, zu signalisieren, dass ein gepostetes Speicher-Schreiben (PMW) auf der anderen Seite abgeschlossen worden ist und von der Transaktions-Lauf-Warteschlange (Transaction Run Queue – TRQ) entfernt worden ist.PMW ACKNOWLEDGE: The bit is used to signal that completed a posted memory write (PMW) on the other side has been received from the Transaction Run Queue (Transaction Run Queue - TRQ) has been removed.

LOCK_: Das Bit wird zum Ausgang (allerdings nicht zum Eingang) hin übertragen, um verriegelte Zyklen zu identifizieren.LOCK_: The bit is transferred to the output (but not to the input), to identify locked cycles.

SERR_: Das Bit wird dazu verwendet, eine SERR_ Indikation zur Eingangsseite hin zu übertragen, wird allerdings nicht zur Ausgangsseite hin übertragen.SERR_: The bit is used to provide a SERR_ indication to the input side to transfer but not transmitted to the output side.

INTSYNC und INTDATA: Die Bits führen die acht Unterbrechungen von der Ausgangsseite zu der Eingangsseite in einem seriell multiplexierten Format. Das Signal INTSYNC ist das Synchronisations-Signal, das den Start f0 der Unterbrechungs-Sequenz anzeigt, und das Signal INTDATA ist das serielle Daten-Bit. Die Signale INTSYNC und INTDATA werden auf separaten Leitungen (Lines) über das Kabel 28 geführt.INTSYNC and INTDATA: The bits carry the eight interrupts from the output side to the input side in a serial multiplexed format. The signal INTSYNC is the synchronization signal indicating the start f0 of the interrupt sequence, and the signal INTDATA is the serial data bit. The signals INTSYNC and INTDATA are on separate lines (lines) via the cable 28 guided.

RESET SECONDARY BUS: Das Bit wird dann aufgestellt, wenn die CPU 14 zu dem sekundären Reset-Bit in einem Brücken-Steuer-Register in dem eingangsseitigen Brücken-Chip 26 schreibt. Es bewirkt, dass sich der ausgangsseitige Brücken-Chip 48 auf einen Power-Up Zustand zurücksetzt. Die Reset Signale für die Schlitze werden auch aufgestellt. Das Signal RESET für den sekundären Bus wird auf einer separaten Leitung über das Kabel 28 weitergeführt.RESET SECONDARY BUS: The bit is set up when the CPU 14 to the secondary reset bit in a bridge control register in the input side bridge chip 26 writes. It causes the output side bridge chip 48 reset to a power-up state. The reset signals for the slots are also set up. The signal RESET for the secondary bus is on a separate line via the cable 28 continued.

Da die Adresse und die Daten in jeder PCI Transaktion über dieselben Leitungen multiplexiert werden, umfasst jede PCI-Transaktion eine Adressen-Phase und mindestens eine Daten-Phase (mehr als eine für Burst-Transaktion). Die PCI-Spezifikation unterstützt auch Einzel-Adressen-Transaktionen (ein 32-Bit Adressieren) und Dual-Adressen-Transaktionen (ein 64-Bit Adressieren).Since the address and data in each PCI transaction are multiplexed over the same lines, each PCI transaction includes an address phase and at least one data phase (more than one for Burst transaction). The PCI specification also supports single-address transactions (one 32-bit addressing) and dual-address transactions (one 64-bit addressing).

In 15A stellt eine Tabelle dar, welche Informationen an jedem Bereich des Busses während Adressen und Daten-Phasen der Einzel-Adressen-Transaktionen erscheinen. Für eine Einzel-Adressen-Transaktion ist die erste Phase die Adressen-Phase und die zweite und die darauffolgenden Phasen sind Daten-Phasen. In der Adressen-Phase einer verzögerten Lese/Schreib-Anforderungs-Transaktion zeigen die Signale CBUFF[3:0] die DCQ-Puffer-Zahl zum Initialisieren des Brücken-Chips DCQ 148 an, um eingangsseitige und ausgangsseitige DRC- und DRR-Transaktionen festzulegen. Nach der Adressen-Phase enthält das Signal CBUFF[3:0] das Paritäts-Bit. Die Signale CCBE[3:0]_ enthalten den PCI-Befehl in der Adressen-Phase und die Byte-Freigabe-Bits in den Daten-Phasen.In 15A Fig. 12 illustrates a table of what information appears on each area of the bus during addresses and data phases of the single-address transactions. For a single-address transaction, the first phase is the address phase and the second and subsequent phases are data phases. In the address phase of a delayed read / write request transaction, signals CBUFF [3: 0] indicate the DCQ buffer number to initialize the bridge chip DCQ 148 to specify input and output DRC and DRR transactions. After the address phase, the signal CBUFF [3: 0] contains the parity bit. The signals CCBE [3: 0] _ contain the PCI command in the address phase and the byte enable bits in the data phases.

Für gepostete Speicher-Schreib-Transaktionen sind die Signale CBUFF[3:0] „nicht sicher" in der Adressen-Phase und enthalten die Data-Ready-Indikation, die Parität-Fehler-Indikation und ein Parität-Bit in den Daten-Phasen.For posted Memory write transactions are not the signals CBUFF [3: 0] " safe "in the address phase and contain the data-ready indication, the parity-error indication and a parity bit in the data phases.

In einer verzögerten Lese/Schreib-Abschluss-Transaktion enthalten die Signale CBUFF[3:0] die DCQ-Puffer-Zahlen in der Adressen-Phase und die End-Completion-Indikation, eine Daten-Ready-Indikation, eine Parität-Fehler-Indikation und ein Parität-Bit in den Daten-Phasen. Die Signale CCBE[3:0]_ enthalten einen Code, der eine DRC-Transaktion in der Adressenphase und die Status-Bits der DRC-Transaktion in den Daten-Phasen darstellen. Verzögerte Abschluss-Transaktionen führen den Status des Bestimmungs-Busses für jede Daten-Phase zurück. Das Daten-Parität-Bit wird auf CCBE[3]_ übertragen. Andere Status-Zustände werden auf den CCBE[2:0]_BUS codiert, wobei ein binärer Wert 000 einen normalen Abschluss anzeigt und ein binärer Wert 001 einen Target-Aussonderungs-Zustand anzeigt. Die Adressen/Daten-Bits CAD[31:0] sind „nicht sicher" in der Adressen-Phase und enthalten Daten während der Daten-Phasen.In a delayed one Read / Write Completion Transaction Contains CBUFF Signals [3: 0] the DCQ buffer numbers in the address phase and the end completion indication, one Data Ready Indication, a Parity Error Indication and a Parity bit in the data phases. The signals CCBE [3: 0] _ contain a code the one DRC transaction in the address phase and the status bits of the DRC transaction in the data phases represent. delayed Close transactions lead return the status of the destination bus for each data phase. The Data parity bit is transferred to CCBE [3] _. Other status states will be coded to the CCBE [2: 0] _BUS, where a binary value 000 is a normal one Showing completion and a binary Value 001 indicates a target rejection condition. The addresses / data bits CAD [31: 0] are not safe "in the address phase and contain data during the data phases.

In der Datenfolge-Verbindungs-Transaktion enthalten die Signale CBUFF[3:0] eine Puffer-Zahl in der Adressen-Phase und das Signal CBUFF[2] enthält die Daten-Ready-Indikation in den Daten-Phasen. Die Signale CCBE[3:0] enthalten einen Code, der eine Datenfolge-Verbindungs-Transaktion in der Adressen-Phase darstellt, und sind nicht in den Daten-Phasen „sicher". Die Adressen-Daten-Bits CAD[31:0] werden nicht während einer Datenfolge-Verbindungs-Transaktion verwendet.In the data sequence connection transaction contain the signals CBUFF [3: 0] a buffer number in the address phase and the signal CBUFF [2] contains the data-ready indication in the Data phases. The signals CCBE [3: 0] contain a code which is a Represents data sequence connection transaction in the address phase, and are not "safe" in the data phases. The Address Data Bits CAD [31: 0] will not be during a data sequence connection transaction used.

Die Tabelle in 15B stellt das Codieren der Signale für Dual-Adressen-Transaktionen dar. In verzögerten Lese/Schreib-Anforderungs-Transaktionen enthalten die Signale CBUFF[3:0] eine Puffer-Zahl in der ersten und der zweiten Adressen-Phase und das Signal CBUFF[0] enthält das Paritäts-Bit in der Daten-Phase. Die Signale CCBE[3:0]_ enthalten einen Code, der einen Dual-Adressen-Zyklus in der ersten Adressen-Phase darstellt, den PCI-Befehl in der zweiten Phase und die Byte-Freigabe-Bits in der Daten-Phase. Die Signale CAD[31:0] enthalten die signifikantesten Adressen-Bits in der ersten Adressen-Phase, die am wenigsten signifikanten Adressen-Bits in der zweiten Adressen-Phase und die Daten-Bits in der Daten-Phase. In einer geposteten Dual-Adressen-Speicher-Schreib-Transaktion sind die Signale CBUFF[3:0] „nicht sicher" in den ersten zwei Adressen-Phasen, allerdings enthalten die Signale CBUFF[1:0] das Paritäts-Fehler-Indikations-Bit und das Paritäts-Bit in den Daten-Phasen. Die Signale CCBE[3:0]_ enthalten einen Code, der einen Dual-Adressen-Zyklus in der ersten Adressen-Phase darstellt, die PCI-Befehl-Bits in der zweiten Adressen-Phase und die Byte-Freigabe-Bits in den Daten-Phasen. Die Signale CAD[31:0] enthalten die signifikantesten Adressen-Bits in der ersten Adressen-Phase, die verbleibenden Adressen-Bits in der zweiten Adressen-Phase und die Daten-Bits in den Daten-Phasen.The table in 15B illustrates the encoding of the signals for dual address transactions. In delayed read / write request transactions, the signals CBUFF [3: 0] include a buffer number in the first and second address phases and the signal CBUFF [0 ] contains the parity bit in the data phase. The signals CCBE [3: 0] _ include a code representing a dual address cycle in the first address phase, the PCI command in the second phase, and the byte enable bits in the data phase. The signals CAD [31: 0] contain the most significant address bits in the first address phase, the least significant address bits in the second address phase, and the data bits in the data phase. In a posted dual-address memory write transaction, the signals CBUFF [3: 0] are "not safe" in the first two address phases, but the signals CBUFF [1: 0] contain the parity error indication. Bits and the parity bit in the data phases The signals CCBE [3: 0] _ contain a code representing a dual address cycle in the first address phase, the PCI command bits in the second address The signals CAD [31: 0] contain the most significant address bits in the first address phase, the remaining address bits in the second address phase, and the data Bits in the data phases.

Dabei sind drei mögliche Zustände für die Daten-Übertragung vorhanden: nicht-letzte (not-last), letzte einer Kabel-Übertragung (last-of-cable-transfer) und letzte von (last-of) Anforderung. Der nicht-letzte Zustand wird durch Aufstellen des Bits CBUFF[2] angezeigt, während FRAME_ aktiv ist, was anzeigt, dass ein anderes Wort von Daten vorhanden ist. Der last-of-cable Übertragungs-Zustand wird durch Aufstellen des Bits CBUFF[2] angezeigt, während das Signal CFRAME_ inaktiv ist. Der last-of-request Zustand wird durch Aufstellen der Bits CBUFF[3] und CBUFF[2] angezeigt, während das Signal CFRAME_ inaktiv ist.there are three possible conditions for the Data transmission available: not last (not-last), last of a cable transmission (last-of-cable-transfer) and last of (last-of) request. The non-last state becomes by setting the CBUFF [2] bit while FRAME_ is active, what indicates that there is another word of data. The last-of-cable transmission state is displayed by setting the CBUFF [2] bit while the Signal CFRAME_ is inactive. The last-of-request condition is through Setting up the CBUFF [3] and CBUFF [2] bits while the Signal CFRAME_ is inactive.

Die folgenden vier IEEE 1149.1 Boundary-Scan (JTAG) Signale sind in dem Kabel 48 umfasst, um eine JTAG-Test-Kette zu bewirken: TCK (der Test-Takt), TDI (Test-Daten-Eingang), TDO (Test-Daten-Ausgang) und TMS (Test-Mode-Auswahl). Das optimale TRST_ wird nicht entlang des Kabels übertragen, allerdings kann TRST_ aus „power-good" erzeugt werden.The following four IEEE 1149.1 Boundary-Scan (JTAG) signals are in the cable 48 to effect a JTAG test chain: TCK (the test clock), TDI (test data input), TDO (test data output), and TMS (test mode selection). The optimal TRST_ is not transmitted along the cable, but TRST_ can be generated from "power-good".

Die JTAG Signale werden von dem System-PCI-Verbinder über den eingangsseitigen Brücken-Chip 26, umfassend JTAG Master 110, entlang des Kabels 28 zu dem ausgangsseitigen Brücken-Chip 28 zu dem JTAG Master 128 übertragen, was die JTAG Signale zu jedem der sechs PCI-Schlitze auf dem sekundären PCI-Bus 32 verteilt. Der Rückführpfad reicht von dem JTAG Master 128 bis zum Kabel 28 zurück zu dem eingangsseitigen Brücken-Chip 26 und dann zu dem PCI-Schlitz auf dem primären PCI-Bus 24. Die Signale TDO, TCK und TMS sind ausgangsseitige Bound-Signale. Das Signal TDI ist ein eingangsseitiges Bound-Signal.The JTAG signals are sent from the system PCI connector via the input side bridge chip 26 , including JTAG Master 110 , along the cable 28 to the output side bridge chip 28 to the JTAG Master 128 Transfer what the JTAG signals to each of the six PCI slots on the secondary PCI bus 32 distributed. The return path is from the JTAG Master 128 to the cable 28 back to the input side bridge chip 26 and then to the PCI slot on the primary PCI bus 24 , The signals TDO, TCK and TMS are output side bound signals. The signal TDI is an input-side bound signal.

Ein Typ eines Kabels 28, das verwendet werden kann, ist ein zylindrisches 50-Paar abgeschirmtes Kabel, ausgelegt dazu, einen High Performance Parallel Interface (HIPPI) Standard zu unterstützen. Ein zweiter Typ eines Kabels ist ein abgeschirmtes fünf-Paar Band-Kabel. Die Vorteile des ersten sind Standardisierung, Robustheit und zuverlässige, gleichförmige Herstellung. Die Vorteile des zweiten sind größere, mechanische Flexibilität, automatisches Verbinden mit dem Verbinder bei der Montage und möglicherweise geringere Kosten.A type of cable 28 which can be used is a cylindrical 50 pair shielded cable designed to support a high performance parallel interface (HIPPI) standard. A second type of cable is a shielded five-pair ribbon cable. The advantages of the first are standardization, robustness and reliable, uniform manufacturing. The advantages of the second are greater mechanical flexibility, automatic connection to the connector during assembly and possibly lower costs.

Die Tabelle der 16 stellt einige der HIPPI Kabel-Spezifikationen dar. Die Erdungs-Abschirmung besteht aus einem umwickelten Aluminium-Band und führt nur mini mal DC-Ströme aufgrund der unterschiedlichen Art der Puffer, die verwendet werden sollen. Das Verfahren eines Signalisierens ist tatsächlich differenziell, was verschiedene Nachteile liefert, wobei die differenziellen Puffer verwendet werden, um Signale über das Kabel 28 zu verschicken und zu empfangen. Zunächst ist das einzige, differenzielle Verfahren weniger kostspielig als Faseroptiken für diese kurze Distanz und weniger komplex, um sich schnittstellenmäßig zu verbinden, als andere, serielle Verfahren. Ein differenzielles Signalisieren liefert eine wesentliche Rausch-Immunität für einen üblichen Mode und einen Betriebsbereich für einen üblichen Mode, ist in ASICs verfügbar und schneller als TTL. Wenn Twisted Pair und eine Abschirmung verwendet werden, minimiert dies die elektromagnetische Strahlung. Wenn niedrige Spannungsschwingungen verwendet werden, minimiert es eine Energieabnahme.The table of 16 represents some of the HIPPI cable specifications. The grounding shield is made from a wrapped aluminum tape and carries only mini DC currents due to the different type of buffers that are to be used. The method of signaling is actually differential, which provides several disadvantages, with the differential buffers being used to send signals over the cable 28 to send and receive. First, the only differential method is less expensive than fiber optics for this short distance and less complex to interface than other serial methods. Differential signaling provides substantial noise immunity for a common mode and operating range for a common mode, is available in ASICs and faster than TTL. Using twisted pair and shielding minimizes electromagnetic radiation. When low voltage oscillations are used, it minimizes energy loss.

Die signalisierenden Pegel, die als ein Target ausgewählt werden, sind in dem IEEE Draft Standard für Low-Voltage Differential Signals (LVDS) für Scaleable Coherent Interface (SCI), Draft 1.10 (5. Mai 1995) beschrieben.The signaling levels selected as a target are in the IEEE Draft Standard for Low-Voltage Differential Signal (LVDS) for Scaleable Coherent Interface (SCI), Draft 1.10 (May 5, 1995).

Der Kabel-Verbinder ist ein AMP-Metall-Mantel-Verbinder mit 100 Stiften, mit zwei Reihen von Stiften. Die Reihen sind 100 mils voneinander beabstandet und die Stifte sind bei 50 mil zentriert. Die Metallhülle liefert eine EMI-Abschirmung und gibt Verbindungen mit dem Massepfad von der Kabelabschirmung zu dem Leiterplattenverbinder. Der passende, rechtwinklige Leiterplattenverbinder passt nur zu einem PCI-Träger. Der Verbinder ist so, dass er einen Stab besitzt, der zwischen den zwei Reihen und Stiften verläuft, um elektrostatische Entladungen von Signalstiften abzuleiten, wenn der Verbinder getrennt wird. Ein Paar Flügelschrauben, befestigt an dem Kabelverbinder, wird die passenden Verbinder sichern.Of the Cable Connector is an AMP metal-shell connector with 100 pins, with two rows of pins. The rows are 100 mils apart spaced and the pins are centered at 50 mils. The metal shell provides a EMI shield and gives connections to the ground path of the Cable shield to the PCB connector. The right, right-angled one PCB connector fits only to a PCI carrier. The connector is like this, that he owns a staff, between the two rows and pens runs, to dissipate electrostatic discharges from signal pins when the connector is disconnected. A pair of thumbscrews attached to The cable connector will secure the proper connector.

FEHLER-ERFASSUNG UND -KORREKTURERROR DETECTION AND CORRECTION

Ein Fehlererfassungs- und Korrektur-(EDC)-Verfahren wird an jedem Brücken-Chip ausgeführt, um eine Kommunilkation über das Kabel 28 zu schützen. Da die Daten in drei 20-Bit-Gruppen zeit-multiplexiert werden, um über 20 Paare von Drähten verschickt zu werden, ist jedes Triplet von „angrenzenden" Bits (d. h. Bits, die demselben Draht in dem Kabel 28 zugeordnet sind) so angeordnet, um auf einem einzelnen Draht-Paar übertragen zu werden. Das EDC-Verfahren kann Einzel-Bit-Fehler und Mehrfach-Bit-Fehler korrigieren, die in derselben Bit-Position in jeder der drei zeit-multiplexierten Phasen auftreten. Die Multi-Bit-Fehler sind typischerweise einem Hardware-Fehler zugeordnet, z. B. einem gebrochenen oder defekten Draht oder einem fehlerhaften Stift an den Brücken-Chips 26, 48.An error detection and correction (EDC) method is performed on each bridge chip to provide communication through the cable 28 to protect. Because the data is time-multiplexed into three 20-bit groups to be sent over 20 pairs of wires, each triplet is of "contiguous" bits (ie, bits that are the same wire in the cable 28 are assigned) so as to be transmitted on a single wire pair. The EDC method can correct single-bit errors and multiple-bit errors occurring in the same bit position in each of the three time-multiplexed phases. The multi-bit errors are typically associated with a hardware fault, e.g. As a broken or defective wire or a faulty pin on the bridge chips 26 . 48 ,

Zwanzig Draht-Paare des Kabels 28 werden für eine ausgangsseitige Kommunikation verwendet und 20 weitere für eine eingangsseitige Kommunikation. Für die verbleibenden 10 Paare in dem 50-Paar-HIPPI-Kabel 28 (das solche Informationen, wie die Takt-Signale CABLE_CLK1 und CABLE_CLK2, Reset-Signale und das Power Good/PLL-Lock Signal durchlässt), wird eine Fehler-Erfassung und -Korrektur nicht durchgeführt.Twenty wire pairs of cable 28 are used for output-side communication and 20 others for input-side communication. For the remaining 10 pairs in the 50 pair HIPPI cable 28 (which passes such information as the clock signals CABLE_CLK1 and CABLE_CLK2, reset signals and the power good / PLL lock signal), error detection and correction is not performed.

Das Folgende sind die Hintergrundannahmen für den EDC-Algorithmus. Die meisten Fehler sind Einzel-Bit-Fehler. Die Wahrscheinlichkeit, zufällige Mehrfach-Bit-Fehler in derselben Transaktion zu haben, ist extrem weit weg, da das Kabel 28 nicht für eine Interferenz von internen oder externen Quellen anfällig ist. Fehler, verursacht durch einen defekten Draht, können bewirken, dass ein einzelnes Bit oder eine Gruppe von Bits auf diesem Draht übertragen wird. Wenn ein Hardware-Fehler auftritt, ist der logische Zustand des entsprechenden, differenziellen Puffers ein Einzel-Gültigkeits-Logik Zustand.The following are the background assumptions for the EDC algorithm. Most errors are single-bit errors. The likelihood of having random multi-bit errors in the same transaction is extremely far-fetched because of the cable 28 is not prone to interference from internal or external sources. Errors caused by a defective wire can cause a single bit or group of bits to be transmitted on that wire. When a hardware failure occurs, the logical state of the corresponding differential buffer is a single-validity logic state.

Wie 17 zeigt, werden die Ausgangs-Signale FIFOOUT[59:0] von dem Multiplexer 228 in der Slave-Kabel-Schnittstelle 196 oder 198 zu dem Eingang eines Prüf-Bit-Generators 350 zugeführt, der Prüf-Bits CHKBIT[7:0] erzeugt. Die Prüf-Bits werden entsprechend der Parität-Prüf-Matrix, dargestellt in 18, erzeugt, in der die erste Reihe zu CHKBIT[0] entspricht, die zweite Reihe zu CHKBIT[1] entspricht, usw.. Die Bits über eine Reihe entsprechen Daten-Bits FIFOOUT[0:59].As 17 shows, the output signals FIFOOUT [59: 0] from the multiplexer 228 in the slave cable interface 196 or 198 to the input of a test bit generator 350 supplied, the check bits CHKBIT [7: 0] generated. The check bits are parsed according to the parity check matrix shown in 18 , in which the first row corresponds to CHKBIT [0], the second row corresponds to CHKBIT [1], etc. The bits above a row correspond to data bits FIFOOUT [0:59].

Die Prüf-Bits werden durch ein Exklusiv-ODER aller der Daten-Bits FIFOOUT[X] (X ist gleich zu 0–59) erzeugt, die einen Wert von „1" in der Parität-Prüf-Matrix haben. Demzufolge ist das Prüf-Bit CHKBIT[0] ein Exklusiv-ODER von Daten-Bits FIFOOUT[7], FIFOOUT[8], FIFOOUT[9], FIFOOUT[12], FIFOOUT[13], FIFOOUT[16], FIFOOUT[22], FIFOOUT[23], FIFOOUT[24], FIFOOUT[26], FIFOOUT[32], FIFOOUT[33], FIFOOUT[34], FIFOOUT[35], FIFOOUT[38], FIFOOUT[39], FIFOOUT[45], FIFOOUT[46], FIFOOUT[48], FIFOOUT[49], FIFOOUT[51] und FIFOOUT[52]. Ähnlich ist das Prüf-Bit CHKBIT[1] ein Exklusiv-ODER von Bits 0, 1, 4, 5, 9, 10, 12, 14, 15, 16, 23, 27, 35, 37, 38, 40, 43, 46, 47, 48, 50 und 53. Prüf-Bits CHKBIT[2:7] werden in einer ähnlichen Art und Weise entsprechend der Parität-Prüf-Matrix von 18 erzeugt. Die Parität-Prüf-Matrix ist auf den 20 Unterkanälen oder Drähten pro zeit-multiplexierter Phase, und einer Wahrscheinlichkeit, dass mehrere Fehler in den akkumulierten Daten einem fehlerhaften Unterkanal oder Draht zuzuschreiben sind, der dieselbe Daten-Position in jeder zeit-multiplexierten Phase beeinflusst, basierend.The check bits are generated by an exclusive OR of all of the data bits FIFOOUT [X] (X equals 0-59) having a value of "1" in the parity check matrix Bit CHKBIT [0] is an exclusive OR of data bits FIFOOUT [7], FIFOOUT [8], FIFOOUT [9], FIFOOUT [12], FIFOOUT [13], FIFOOUT [16], FIFOOUT [22], FIFOOUT [23], FIFOOUT [24], FIFOOUT [26], FIFOOUT [32], FIFOOUT [33], FIFOOUT [34], FIFOOUT [35], FIFOOUT [38], FIFOOUT [39], FIFOOUT [45], FIFOOUT [46], FIFOOUT [48], FIFOOUT [49], FIFOOUT [51] and FIFOOUT [52] Similarly, the check bit CHKBIT [1] is an exclusive OR of bits 0, 1, 4, 5, 9, 10, 12, 14, 15, 16, 23, 27, 35, 37, 38, 40, 43, 46, 47, 48, 50 and 53. Check bits CHKBIT [2: 7] are processed in a similar manner according to the parity check matrix of 18 generated. The parity check matrix is on the 20 subchannels or wires per time-multiplexed phase, and a probability that multiple errors in the accumulated data are attributable to a faulty subchannel or wire affecting the same data position in each time-multiplexed phase , based.

In der Master-Kabel-Schnittstelle 192 oder 194 werden die Prüf-Bits CHKBIT[7:0] als Fehlererfassungs- und Korrektur-Bits EDC[7:0] zusammen mit anderen Kabel-Daten geliefert, um einer Fehler-Korrektur-Logik in der Slave-Kabel-Schnittstelle 196 oder 198 zu ermöglichen, Daten-Fehler zu erfassen und zu korrigieren.In the master cable interface 192 or 194 the check bits CHKBIT [7: 0] are supplied as error detection and correction bits EDC [7: 0] together with other cable data to error correction logic in the slave cable interface 196 or 198 to enable data errors to be detected and corrected.

Die Prüf-Bits CHKBIT[7:0] werden zu einem Fix-Bit-Generator 352 zugeführt, der Fix-Bits FIXBIT[59:0] entsprechend der Syndrom-Tabelle, dargestellt in 19, erzeugt. Die Prüf-Bits CHKBIT[7:0] besitzen 256 (28) mögliche Werte. Die Syndrom-Tabelle in 19 enthält 256 mögliche Positionen. Jede der 256 Positionen in der Syndrom-Tabelle enthält zwei Eintritte, wobei der erste Eintritt der hexadezimale Wert der Prüf-Bits CHKBIT[7:0] ist und der zweite Eintritt den Kabel-Daten-Status anzeigt, der dieser Position zugeordnet ist. Demzufolge zeigt, zum Beispiel, ein hexadezimaler Wert von 00 einen Nicht-Fehler-Zustand an, ein hexadezimaler Wert von 01 zeigt einen Fehler in einem Daten-Bit 52 an, ein hexadezimaler Wert von 02 zeigt einen Fehler in dem Daten-Bit 53 an, ein hexadezimaler Wert von 03 zeigt einen nicht-korrigierbaren Fehler (UNCER) an, usw..The check bits CHKBIT [7: 0] become a fix-bit generator 352 fed, the fix bits FIXBIT [59: 0] according to the syndrome table, presented in 19 , generated. The check bits CHKBIT [7: 0] have 256 (2 8 ) possible values. The syndrome table in 19 contains 256 possible positions. Each of the 256 positions in the syndrome table contains two entries, the first entry being the hexadecimal value of the check bits CHKBIT [7: 0] and the second entry indicating the cable data status associated with that position. Accordingly, for example, a hex value of 00 indicates a non-error state, a hex value of 01 indicates an error in a data bit 52, a hex value of 02 indicates an error in the data bit 53 , a hexadecimal value of 03 indicates an uncorrectable error (UNCER), and so on.

Die EDC-Logik ist dazu geeignet, bis zu drei fehlerhafte Bits zu erfassen, so lange wie diese Daten-Bits benachbart zueinander sind, d. h. demselben Draht zugeordnet sind. Demzufolge sind, zum Beispiel, falls die Prüf-Bits CHKBIT[7:0] einen hexadezimalen Wert 3D enthalten, dann die Daten-Bits 3, 23 und 43 fehlerhaft. Das Kabel 28 führt Kabel-Daten CABLE_DATA[19:0]. Demzufolge sind die Daten-Bits FIFOOUT[3], FIFOOUT[23] und FIFOOUT[43] der vierten Position der Kabel-Daten zugeordnet, d. h. CABLE_DATA[3]. Das EDC-Verfahren kann auch Zwei-Bit-Fehler korrigieren, die demselben Kabel-Draht zugeordnet sind. Demzufolge zeigt, zum Beispiel, ein hexadezimaler Prüf-Bit-Wert von OF Fehler in Daten-Bits FIFOOUT[4] und FIFOOUT[24] an, beide dem CABLE_DATA[4] zugeordnet.The EDC logic is capable of detecting up to three erroneous bits as long as these data bits are adjacent to one another, ie, associated with the same wire. Thus, for example, if the check bits CHKBIT [7: 0] contain a hexadecimal value 3D, then the data bits 3, 23 and 43 are erroneous. The cable 28 carries cable data CABLE_DATA [19: 0]. Accordingly, the data bits FIFOOUT [3], FIFOOUT [23] and FIFOOUT [43] are associated with the fourth position of the cable data, ie, CABLE_DATA [3]. The EDC method can also correct two-bit errors associated with the same cable wire. Thus, for example, a hexadecimal check bit value of OF indicates errors in data bits FIFOOUT [4] and FIFOOUT [24], both associated with CABLE_DATA [4].

Der Fix-Bit-Generator 352 erzeugt auch Signale NCERR (nicht-korrigierbarer Fehler) und CRERR (korrigierbarer Fehler). Falls kein Fehler durch die Prüf-Bits angezeigt wird, dann sind die Signale CRERR (korrigierbarer Fehler) und NCERR (nicht-korrigierbarer Fehler) beide auf niedrig zurückgenommen. In diesen Positionen in der Syndrom-Tabelle, die den nicht-korrigierbaren Zustand UNCER enthält, wird das Signal NCERR auf hoch gesetzt und das Signal CRERR wird auf niedrig zurückgenommen. An sonsten wird dort, wo ein korrigierbarer Daten-Fehler angezeigt wird, das Signal NCERR auf niedrig zurückgenommen und die Signale CRERR werden auf hoch zurückgesetzt.The fix bit generator 352 also generates signals NCERR (non-correctable error) and CRERR (correctable error). If no error is indicated by the check bits, then the signals CRERR (Correctable Error) and NCERR (Non-Correctable Error) are both set low. In these positions in the syndrome table containing the uncorrectable state UNCER, the signal NCERR is set high and the signal CRERR is reset to low. Otherwise, where a correctable data error is indicated, the NCERR signal is pulled low and the CRERR signals are reset to high.

Die unteren 52 Bits der Fix-Bits FIXBIT[51:0] werden zu einem Eingang von 52 Exklusiv-ODER-Gates 354 zugeführt, deren anderer Eingang eines von jedem der unteren 52 Bits der FIFO-Daten FIFOOUT[51:0] empfängt. Die oberen 8 FIFO-Bits FIFOOUT[59:52], zugeordnet zu der Fehler-Erfassung und den Korrektur-Bits EDC[7:0], werden dazu verwendet, die Prüf-Bits und die Syndrom-Bits zu erzeugen, werden allerdings nicht einer Fehlerkorrektur unterworfen. Die Exklusiv-ODER-Gates 354 führen eine Bit-weise Exklusiv-ODER-Operation der festgelegten Bits FIXBIT[51:0] und der Daten-Bits FIFOOUT[51:0] aus. Falls die Daten-Signale FIFOOUT[51:0] korrigierbare, fehlerhafte Daten-Bits enthalten, werden diese Daten-Bits durch die Exklusiv-ODER-Operation „geflipped". Die Exklusiv-ODER-Gates 354 liefern die korrigierten Daten CORRMSG[51:0] zu dem 1-Eingang eines Multiplexers 360. Der 0-Eingang des Multiplexers 360 nimmt die Daten-Bits FIFOOUT[51:0] auf und der Multiplexer 360 wird durch ein Konfigurations-Signal CFG2C_ENABLE_ECC ausgewählt. Der Ausgang des Multiplexers 360 erzeugt Signale MUXMSGI[51:0]. Falls die System-Software eine Fehler-Erfassung und eine Korrektur durch Einstellen des Signals CFG2C_ENABLE_ECC auf hoch freigibt, dann wählt der Multiplexer 360 die korrigierten Daten CORRMSG[51:0] für eine Ausgabe aus. Ansonsten werden, falls die Fehler-Erfassung und -Korrektur gesperrt ist, die Daten-Bits FIFOOUT[51:0] verwendet.The lower 52 bits of the fixed bits FIXBIT [51: 0] become an input of 52 exclusive-OR gates 354 whose other input receives one of each of the lower 52 bits of the FIFO data FIFOOUT [51: 0]. The upper 8 FIFO bits FIFOOUT [59:52] associated with the error detection and correction bits EDC [7: 0] are used to generate the check bits and the syndrome bits, but do not subject to error correction. The exclusive OR gates 354 execute a bitwise exclusive OR operation of the fixed bits FIXBIT [51: 0] and the data bits FIFOOUT [51: 0]. If the data signals FIFOOUT [51: 0] contain correctable erroneous data bits, these data bits are "flopped" by the exclusive-OR operation, the Exclusive OR gates 354 provide the corrected data CORRMSG [51: 0] to the 1 input of a multiplexer 360 , The 0 input of the multiplexer 360 takes the data bits FIFOOUT [51: 0] and the multiplexer 360 is through a configuration signal CFG2C_ENABLE_ECC selected. The output of the multiplexer 360 generates signals MUXMSGI [51: 0]. If the system software releases error detection and correction by setting signal CFG2C_ENABLE_ECC high, then the multiplexer selects 360 the corrected data CORRMSG [51: 0] for an output. Otherwise, if the error detection and correction is disabled, the data bits FIFOOUT [51: 0] are used.

Die nicht-korrigierbaren und die korrigierbaren Fehler-Indikatioren NCERR und CRERR werden zu Eingängen von UND-Gates 356 und 358 jeweils geliefert. Die UND-Gates 356 und 358 werden durch das Signal CFG2C_ENABLE_ECC freigegeben. Die Ausgänge der UND-Gates 356 und 358 erzeugen Signale C_NLERR und C_CRERR jeweils. Die Signale C_NLERR und C_CRERR können nur dann aufgestellt werden, wenn eine Fehler-Erfassung und eine Korrektur freigegeben ist. Wenn ein Fehler erfasst ist, werden die festgelegten Bits (Fix-Bits) verriegelt und für diagnostische Zwecke verwendet.The uncorrectable and correctable error indicators NCERR and CRERR become AND gate inputs 356 and 358 each delivered. The AND gates 356 and 358 are enabled by the signal CFG2C_ENABLE_ECC. The outputs of the AND gates 356 and 358 generate signals C_NLERR and C_CRERR, respectively. The signals C_NLERR and C_CRERR can only be set if an error detection and a correction are enabled. If an error is detected, the fixed bits are locked and used for diagnostic purposes.

Falls ein korrigierbarer Fehler angezeigt wird (das Signal C_CRERR ist hoch), dann wird eine Unterbrechung zu dem Unterbrechungs-Empfangs-Block 132 hin erzeugt, weitergeführt zu dem Unterbrechungs-Ausgangs-Block 114, und dann zu der System-Unterbrechungs-Steuereinheit übertragen, und dann zu der CPU 14, um einen Unterbrechungs-Händler aufzurufen. Die nicht-korrigierbaren Fehler, angezeigt durch das Signal C_NCERR, werden bewirken, dass der System-Fehler SERR_ aufgestellt wird, was wiederum bewirkt, dass die System-Unterbrechungs-Steuereinheit (nicht dargestellt) die nicht-maskierbare Unterbrechung (Non-Maskable Interrupt – NMI) zu der CPU 14 hin aufstellt. In dem ausgangsseitigen Brücken-Chip 48 werden nicht-korrigierbare Fehler bewirken, dass das Power-Good/PLL-Lock-Indikations-Bit weiter zu dem Kabel 28 geschickt wird, um vernachlässigt zu werden, so dass der eingangsseitige Brücken-Chip 26 keine Zyklen zur Ausgangsseite hin schickt.If a correctable error is indicated (the signal C_CRERR is high), then an interrupt is made to the interrupt receive block 132 towards the interrupt output block 114 , and then transferred to the system interrupt controller, and then to the CPU 14 to call an interruption trader. The uncorrectable errors, indicated by the signal C_NCERR, will cause the system error SERR_ to be asserted, which in turn causes the system interrupt controller (not shown) to assert the non-maskable interrupt (non-maskable interrupt). NMI) to the CPU 14 sets up. In the output side bridge chip 48 uncorrectable errors will cause the Power-Good / PLL-Lock indication bit to continue to the cable 28 is sent to be neglected, so the input side bridge chip 26 no cycles sent to the exit side.

Um zufällige Unterbrechungen während und nach einem Power-up-Vorgang zu verhindern, wird eine Fehlererfassung und -korrektur an sowohl dem eingangsseitigen als auch dem ausgangsseitigen Brücken-Chip während eines Power-up-Vorgangs gesperrt, bis sich die eingangsseitge PLL 186 und die ausgangsseitige PLL 182 auf den Takt CABLE_CLK1 oder CABLE_CLK2 verriegelt haben.To prevent random interrupts during and after a power-up, fault detection and correction on both the input and output bridge chips is disabled during a power up operation until the input side PLL 186 and the output PLL 182 locked to the clock CABLE_CLK1 or CABLE_CLK2.

Eine System-Mangament-Software, die auf die Unterbrechung für korrigierbare Fehler anspricht, bestimmt die Ursache durch Lesen der verriegelten Fix-Bits. Falls ein Hardware-Fehler bestimmt wird (z. B. Mehrfach-Daten-Fehler-Bits, zugeordnet demselben Kabel-Draht), dann kann die System-Management-Software den Benutzer auf den Zustand hinweisen, um den Hardware-Fehler zu beseitigen. Die System-Management-Software spricht auf SERR_ an, verursacht durch einen nicht-korrigierbaren Fehler, unter Abschalten des Systems oder unter Durchführen von anderen Funktionen, die durch den Benutzer programmiert sind.A System mangament software pointing to the interruption for correctable Fault responds, determines the cause by reading the locked Fix bits. If a hardware failure is determined (eg multiple data error bits, assigned the same cable wire), then the system management software can Alert user to the condition to eliminate the hardware error. The system management software responds to SERR_ caused by an uncorrectable Error, turn off the system, or perform other functions programmed by the user.

SEKUNDÄR-BUS-ARBITRIERERSECONDARY BUS ARBITER

Wie die 3 zeigt, umfasst jeder Brücken-Chip einen PCI-Arbitrierer 116 oder 124. Da der eingangsseitige Brücken-Chip 26 normalerweise in einem Schlitz installiert ist, wird der PCI-Arbitrierer 116 gesperrt. Der PCI-Arbitrierer 124 unterstützt 8 Master: 7 allgemeine PCI-Master (REQ[7:1]_, GNT[7:1]_), umfassend die sechs PCI-Schlitze und die Hot-Plug-Steuereinheit in der SIO 50, und den Brücken-Chip selbst (BLREQ_, BLGNT_). Die Signale BLREQ_ und BLGNT_ werden von und zu dem PCI-Master-Block 123 geführt. Der Brücken-Chip stellt das Signal BLREQ_ auf, falls eine Transaktion von der CPU 14, zielmäßig vorgesehen für den sekundären PCI-Bus 32, durch den eingangsseitigen und ausgangsseitigen Brücken-Chip 26 und 48 empfangen ist. Die Anforderungs- und Erteilungs-Leitungen REQ[1]_ und GNT[1]_ für die SIO 50 werden intern in den ausgangsseitigen Brücken-Chip 48 weitergeleitet. Der PCI-Arbitrierer 124 setzt eine PCICLK2 Verzöge rung zwischen einer Negation eines GNT_ Signals für einen Master und das Aufstellen eines GNT_ Signals für einen anderen Master ein.As the 3 shows, each bridge chip includes a PCI arbitrator 116 or 124 , As the input side bridge chip 26 normally installed in a slot becomes the PCI arbitrator 116 blocked. The PCI arbitrator 124 supports 8 master: 7 general PCI master (REQ [7: 1] _, GNT [7: 1] _), comprising the six PCI slots and the hot-plug control unit in the SIO 50 , and the bridge chip itself (BLREQ_, BLGNT_). The signals BLREQ_ and BLGNT_ are from and to the PCI master block 123 guided. The bridge chip asserts the signal BLREQ_ if a transaction from the CPU 14 , intended for the secondary PCI bus 32 , through the input side and output side bridge chip 26 and 48 is received. The request and grant lines REQ [1] _ and GNT [1] _ for the SIO 50 be internal to the output side bridge chip 48 forwarded. The PCI arbitrator 124 sets a PCICLK2 delay between negating a GNT_ signal for one master and establishing a GNT_ signal for another master.

In dem ausgangsseitigen Brücken-Chip 48 wird der PCI-Arbitrierer 124 freigegeben oder gesperrt, und zwar basierend auf dem abgetasteten Wert von REQ[7]_ an der ansteigenden Flanke des Signals PCIRST2_. Falls der Brücken-Chip 48 REQ[7]_ niedrig auf PCIRST2_ abtastet, wird er den PCI-Arbitrierer 124 sperren. Falls der PCI-Arbitirierer 124 gesperrt ist, dann wird ein externer Arbitrierer (nicht dargestellt) verwendet, und die Hot-Plug-Anforderung wird auf dem REQ[1]_ Stift angesteuert und die Hot-Plug-Erteilung wird auf dem GNT[1]_ Stift eingegeben. Die Brücken-PCI-Bus-Anforderung ist auf dem REQ[2]_ Stift angesteuert und deren Erteilung wird auf dem GNT[2]_ Stift eingegeben. Falls der Brücken-Chip 48 REQ[7]_ auf hoch auf PCIRST2_ abtastet, wird er den PCI-Arbitrierer 124 freigeben.In the output side bridge chip 48 becomes the PCI arbitrator 124 enabled or disabled based on the sampled value of REQ [7] _ at the rising edge of the PCIRST2_ signal. If the bridge chip 48 REQ [7] _ low samples on PCIRST2_, it becomes the PCI arbiter 124 lock. If the PCI arbiter 124 is locked, then an external arbitrator (not shown) is used and the hot-plug request is triggered on the REQ [1] pin and the hot-plug grant is entered on the GNT [1] pin. The bridge PCI bus request is driven on the REQ [2] pin and its issuance is entered on the GNT [2] pin. If the bridge chip 48 REQ [7] _ scans high on PCIRST2_, it becomes the PCI arbiter 124 release.

Der PCI-Arbitrierer 124 negiert ein GNT_ Signal des Masters, entweder um einen Initiator mit höherer Priorität zu bedienen, oder auf das REQ_ Signal des Masters hin, das negiert werden soll. Wenn einmal sein GNT_ Signal negiert ist, hält der momentane Bus-Master den Besitz über den Bus bei, bis der Bus zu seinem Leerlauf zurückkehrt.The PCI arbitrator 124 negates a GNT_ signal of the master, either by an initiator with higher Priority or to the REQ_ signal of the master to be negated. Once its GNT_ signal is negated, the current bus master holds ownership over the bus until the bus returns to idle.

Falls keine PCI-Agenten momentan den Bus verwenden oder anfordern, nimmt der PCI-Arbitrierer 124 eines von zwei Dingen in Abhängigkeit von dem Wert eines PARKMSTRSEL Konfigurations-Registers in dem Konfigurations-Raum 125 vor. Falls das Register den Wert von 0 enthält, verwendet der PCI-Arbitrierer 124 den letzten, aktiven Master, um auf dem Bus 32 zu parken; falls er den Wert 1 enthält, dann wird der Bus an dem Brücken-Chip 48 geparkt.If no PCI agents are currently using or requesting the bus, the PCI arbitrator takes 124 one of two things depending on the value of a PARKMSTRSEL configuration register in the configuration space 125 in front. If the register contains the value of 0, the PCI arbitrator uses 124 the last active master to get on the bus 32 to park; if it contains the value 1, then the bus on the bridge chip 48 parked.

Der PCI-Arbitrierer 124 umfasst einen PCI-Minimal-Erteilungs-Zeitgeber 304 (21), der die minimale, aktive Zeit aller der GNT_ Signale steuert. Der Fehler-Wert für den Zeitgeber 304 ist der hexadezimale Wert 0000, der anzeigt, dass dort kein minimales Erteilungszeit-Erfordernis vorhanden ist. Der Zeitgeber 304 kann mit einem Wert von 1 bis 255 programmiert sein, um anzuzeigen, dass die Zahl von PCICLK2 Taktperioden der GNT_ Leitung aktiv ist. Alternativ kann der individuelle, Minimum-Erteilungs-Zeitgeber jedem PCI-Master auf dem sekundären Bus 32 zugeordnet sein, um eine größere Flexibilität zu erzielen. Die Minimum-Erteilungs-Zeit ist nur dann anwendbar, wenn der momentane Master sein REQ_ Signal aufstellt. Wenn einmal das REQ_ Signal weggenommen ist, kann das GNT_ Signal ungeachtet des minimalen Erteilungs-Zeitwerts erteilt werden.The PCI arbitrator 124 includes a PCI minimum grant timer 304 ( 21 ) that controls the minimum active time of all the GNT_ signals. The error value for the timer 304 is the hexadecimal value 0000 indicating that there is no minimum grant time requirement. The timer 304 can be programmed with a value from 1 to 255 to indicate that the number of PCICLK2 clock periods of the GNT_ line is active. Alternatively, the individual minimum grant timer may be any PCI master on the secondary bus 32 be assigned for greater flexibility. The minimum grant time is only applicable when the current master asserts its REQ_ signal. Once the REQ_ signal is removed, the GNT_ signal may be issued regardless of the minimum grant time value.

Wie 20A zeigt, führt, in einem normalen Betrieb, der PCI-Arbitrierer 124 ein Round-Robin-Prioritäts-Schema (Arbitrierungs-Schema auf dem zweiten Niveau) aus. Die acht Master in dem Round-Robin-Schema umfassen Vorrichtungen, die mit den sechs Schlitzen bzw. Einsteckplätzen des Erweiterungskastens 30, dem SIO 50 und einer geposteten Speicher-Schreib-(PMW)-Anforderung von dem eingangsseitigen Brücken-Chip 26 verbunden sind. Alle Master auf dem PCI-Bus 32 in diesem Schema besitzen dieselbe Priorität wie der Brücken-Chip 48. Nachdem der Master den sekundären PCI-Bus 32 erteilt hat und der Master das FRAME_ Signal aufgestellt hat, wird der Bus erneut arbitriert und der momentane Master wird an die Unterseite des Round-Robin-Stapels gesetzt. Falls der Master diese Anforderung negiert oder der Minimum-Erteilungs-Zeitgeber 304 abläuft, wird der PCI-Bus 32 dem Master mit der nächsten, höchsten Priorität erteilt. Verriegelte Zyklen werden nicht in irgendeiner Weise unterschiedlich durch den PCI-Arbitrierer 124 behandelt.As 20A shows, in normal operation, the PCI arbitrator 124 a round robin priority scheme (second level arbitration scheme). The eight masters in the round-robin scheme include devices connected to the six slots of the expansion box 30 , the SIO 50 and a posted memory write (PMW) request from the upstream bridge chip 26 are connected. All master on the PCI bus 32 in this scheme have the same priority as the bridge chip 48 , After the master the secondary PCI bus 32 and the master has issued the FRAME_ signal, the bus is again arbitrated and the current master is placed at the bottom of the round robin stack. If the master negates this request or the minimum grant timer 304 expires, the PCI bus 32 the master with the next highest priority. Locked cycles will not be different in any way by the PCI arbiter 124 treated.

Auf bestimmte Ereignisse hin wird das Arbitrierungs-Schema so modifiziert, um eine System-Funktion zu optimieren. Die Ereignisse umfassen: 1) eine eingangsseitig-zu-ausgangsseitig verzögerte Lese- oder verzögerte Schreib-Anforderung ist anhängig, 2) eine ausgangsseitig-zu-eingangsseitig verzögerte Lese-Anforderung ist anhängig, ohne dass eine Lese-Abschluss-Indikation geliefert wird, und 3) eine Streaming-Möglichkeit existiert, während der Brücken-Chip 26 der momentane Master auf dem eingangsseitigen Bus 24 ist.In response to certain events, the arbitration scheme is modified to optimize a system function. The events include: 1) an input-to-output delayed read or delayed write request is pending, 2) an output-to-input delayed read request is pending without providing a read complete indication, and 3) a streaming possibility exists while the bridge chip 26 the current master on the input side bus 24 is.

Wenn eine verzögerte Anforderung erfasst ist, wird der Brücken-Chip 48 der nächste Master, der dem sekundären PCI-Bus 32 erteilt werden soll. Wenn einmal dem Brücken-Chip 48 der Bus 32 erteilt ist, behält er einen Besitz über den Bus 32 bei, bis er alle offenstehenden, verzögerten Anforderungen abschließt oder einer seiner Zyklen erneut versucht wird. Falls der Brücken-Chip 48 erneut versucht wird, wird ein Zwei-Level-Arbitrierungs-Schema durch den Arbitrierer 124 ausgeführt. Eine primäre Ursache dafür, dass der Brücken-Chip-Lese-Zyklus erneut versucht wird, ist diejenige, dass die Target-Vorrichtung eine Brücke mit einem geposteten Schreib-Puffer ist, der gelöscht werden muß. In diesem Fall ist die optimale Operation diejenige, den Bus 32 zu dem erneut versuchenden Target zu erteilen, um ihm zu ermöglichen, seinen geposteten Schreib-Puffer zu entleeren, so dass er die Brücken-Chip-Lese-Anforderung annehmen kann.When a delayed request is detected, the bridge chip becomes 48 the next master, the secondary PCI bus 32 to be granted. If ever the bridge chip 48 the bus 32 is granted, he retains ownership of the bus 32 until it completes any pending, deferred requests or retries one of its cycles. If the bridge chip 48 retry is a two-level arbitration scheme by the arbitrator 124 executed. A primary cause for the bridge chip read cycle being retried is that the target device is a bridge to a posted write buffer that needs to be cleared. In this case, the optimal operation is the bus 32 to grant to the retrying target to allow it to empty its posted write buffer so that it can accept the bridge chip read request.

Wie 20B zeigt, umfasst ein Zwei-Level-Arbitrierungs-Protokoll ein Arbitrierungs-Schema auf dem ersten Level, das ein Round-Robin-Schema ist, und zwar unter drei möglichen Mastern: die verzögerte Anforderung von der CPU 14, eine Anforderung von dem erneut versuchenden Master und ein Master, der durch das Arbitrierungs-Schema auf dem zweiten Level ausgewählt ist. Jeder dieser drei Master in dem Arbitrierungs-Schema unter dem ersten Level wird jedem dritten Arbitrierungs-Schlitz erteilt. Für Speicher-Zyklen kann der Schlitz, der dem erneut versuchenden Target zugeordnet ist, von den Target-Speicher-Bereich-Konfigurations-Registern in dem Konfigurations-Raum 125 des Brücken-Chips 48 bestimmt werden, der den Speicherbereich speichert, der jeder PCI-Vorrichtung zugeordnet ist. Falls der erneut versuchende Master nicht bestimmt werden kann (wie in dem Fall einer I/O-Lesung), oder falls der erneut versuchende Master nicht den sekundären Bus 32 anfordert, dann würde das Arbitrierungs-Schema auf dem ersten Level zwischen dem Brücken-Chip 48 und einem Level-Two-Master vorliegen.As 20B 2, a two-level arbitration protocol includes a first-level arbitration scheme, which is a round-robin scheme, among three possible masters: the delayed request from the CPU 14 , a request from the retry master, and a master selected by the second level arbitration scheme. Each of these three masters in the arbitration scheme under the first level is issued to each third arbitration slot. For memory cycles, the slot associated with the retry target may be from the target memory area configuration registers in the configuration space 125 of the bridge chip 48 which stores the memory area associated with each PCI device. If the retrying master can not be determined (as in the case of I / O reading), or if the master trying again does not have the secondary bus 32 requesting, then the arbitration scheme would be at the first level between the bridge chip 48 and a Level Two Master.

Der erneut versuchende Master wird nicht von der Level-Zwei-Arbitrierung maskiert. Demzufolge ist es für ihn möglich, zwei Back-to-Back-Arbitrierungs-Gewinne zu haben, falls er der nächste Master in dem Level-Two-Arbitrierungs-Schema ist.The re-trying master is not masked by the level two arbitration. As a result, is it is possible for him to have two back-to-back arbitration wins if he is the next master in the level two arbitration scheme.

Zum Beispiel würde, falls eine Eingangs-zu-Ausgangs-Lesung erneut versucht wird und der Master C (der erneut versuchende Master) den Bus 32 ebenso wie einen Master B und einen Master E anfordert, die Reihenfolge der Bus-Erteilungen wie folgt in einer absteigenden Reihenfolge sein: der Brücken-Chip 48, der erneut versuchende Master (Master C), der Master C, der Brücken-Chip 48, der erneut versuchende Master C, der Master E, der Brücken-Chip 48, usw., bis der Brücken-Chip 48 in der Lage ist, seine Transaktion abzuschließen, und der PCI-Arbitrierer 152 zurück zu seinem Level-Two-Arbitrierungs-Schema für einen normalen Betrieb kehrt.For example, if an input-to-output read is retried and the master C (the retrying master) attempts the bus 32 as well as requesting a master B and a master E, the order of the bus schedules will be in a descending order as follows: the bridge chip 48 , the Master again trying (Master C), the Master C, the bridge chip 48 , the Master Master C, the Master E, the bridge chip 48 , etc., until the bridge chip 48 is able to complete its transaction, and the PCI arbitrator 152 back to its level two arbitration scheme for normal operation.

Falls, als ein anderes Beispiel, die Brücken-Chip-Lesung erneut versucht wird und die einzigen anderen die anfordernden Master Master A und Master D sind (d. h. der erneut versuchende Master fordert nicht den Bus an, oder er könnte nicht identifiziert werden, da er auf einen I/O-Raum gerade zugreift), ist die Reihenfolge der Bus-Erteilungen wie folgt: der Brücken-Chip 48, der Master A, der Brücken-Chip 48, der Master D, usw..If, as another example, the bridge chip read is retried and the only others the requesting masters are master A and master D (ie, the retry master does not request the bus or it could not be identified as it does is accessing an I / O space), the order of the bus grants is as follows: the bridge chip 48 , the master A, the bridge chip 48 , the master D, etc ..

Das Zwei-Level-Arbitrierungs-Schema gibt verzögerten Anforderungen von der CPU 14 die höchste Priorität. Obwohl dieses Arbitrierungs-Verfahren stark die CPU 14 favorisiert, wird jeder anfordernden Vorrichtung auf dem Bus 32 schließlich der PCI-Bus 32 erteilt. Indem dies so vorgenommen wird, ist dabei eine geringere Chance vorhanden, dass die anderen, sekundären Bus-Master vernachlässigt werden würden, wenn eine PCI-Brücken-Chip-Anforderung erneut versucht wird.The two-level arbitration scheme gives delayed requests from the CPU 14 the highest priority. Although this arbitration method is strong the CPU 14 favors every requesting device on the bus 32 finally the PCI bus 32 granted. By doing so, there is less chance that the other, secondary bus masters would be neglected if a PCI bridge chip request is retried.

Unter Bezugnahme auf 21 umfasst der PCI-Arbitrierer 124 eine L2 Zustand-Maschine 302, um das Level-Two-Round-Robin-Arbitrierungs-Schema auszuführen. Die L2 Zustand-Maschine 302 empfängt Signale RR_MAST[2:0], die den momentanen Round-Robin-Master anzeigen. Die L2 Zustand-Maschine 302 empfängt auch Anforderungs-Signale RR_REQ[7:0], entsprechend zu den 8 möglichen Mastern des sekundären PCI-Busses 32. Basierend auf dem momentanen Master und dem Zustand der Anforderungs-Signale, erzeugt die L2 Zustand-Maschine 302 einen Wert, der den nächsten Round-Robin-Master darstellt. Der Ausgang der L2 Zustand-Maschine 302 wird zu dem 0-Eingang eines 6:3 Multiplexers 306 geliefert, dessen 1-Eingang Signale Q2A_STRMAST[2:0] empfängt. Der Auswahl- bzw. Select-Eingang des Multiplexers 306 empfängt ein Signal STREAM_REQ, das auf hoch durch ein UND-Gate 308 gesetzt wird, wenn eine Streaming-Gelegenheit existiert (Q2A_STREAM ist hoch), der Streaming-Master auf dem sekundären PCI-Bus 32 seine Anforderungs-Zeile (MY_REQ[Q2A_STRMAST[2:0]] ist hoch) und eine verzögerte Anforderung nicht anhängig ist (BAL_DEL_REQ ist niedrig).With reference to 21 includes the PCI arbitrator 124 an L2 state machine 302 to execute the level two round robin arbitration scheme. The L2 State Machine 302 receives signals RR_MAST [2: 0] indicating the current round robin master. The L2 State Machine 302 also receives request signals RR_REQ [7: 0] corresponding to the 8 possible masters of the secondary PCI bus 32 , Based on the current master and the status of the request signals, the L2 generates state machine 302 a value representing the next round robin master. The output of the L2 state machine 302 becomes the 0 input of a 6: 3 multiplexer 306 whose 1-input signals receive Q2A_STRMAST [2: 0]. The selection or select input of the multiplexer 306 receives a STREAM_REQ signal high on an AND gate 308 is set, if a streaming opportunity exists (Q2A_STREAM is high), the streaming master on the secondary PCI bus 32 its request line (MY_REQ [Q2A_STRMAST [2: 0]] is high) and a delayed request is not pending (BAL_DEL_REQ is low).

Der Ausgang des Multiplexers 306 steuert Signale N_RR_MAST[2:0] an, die den nächsten Round-Robin-Master in dem Level-Two-Arbitrierungs-Schema darstellen. Die Signale N_RR_MAST[2:0] werden durch eine L1 Zustand-Maschine 300 empfangen, die auch die folgenden Signale empfängt: ein Signal RTRYMAST_REQ (das die Anforderung des erneut versuchenden Bus-Masters darstellt); ein Signal MIN_GRANT (das dann aufgestellt wird, wenn der Minimal-Erteilungs-Zeitgeber 304 zeitmäßig abläuft); das verzögerte Anforderungs-Signal BAL_DEL_REQ; das Datenfolge-Anforderungs-Signal STREAM_REQ; ein Signal CURMAST_REQ (das anzeigt, dass der momentane Master ein Aufstellen seines Anforderungs-Signals beibehält); ein Signal ANY_SLOT_REQ (das auf hoch gestellt wird, falls irgendeines der Anforderungs-Signale REQ[7:0]_ auf hoch, allerdings nicht die Brücken-Chip-Anforderung BLREQ_ umfassend, aufgestellt ist); und Signale L1STATE[1:0] (die den momentanen Zustand der L1 Zustand-Maschine 300 darstellt). Die L1 Zustand-Maschine 300 wählt eine von drei möglichen L1-Mastern aus, umfassend den erneut versuchenden Master (RTRYMAST_REQ), die verzögerte Anforderung von dem Brücken-Chip 48 (BAL_DEL_REQ) und den Level-Two-Master (ANY_SLOT_REQ).The output of the multiplexer 306 drives signals N_RR_MAST [2: 0] representing the next round robin master in the level two arbitration scheme. The signals N_RR_MAST [2: 0] are passed through an L1 state machine 300 which also receives the following signals: a signal RTRYMAST_REQ (representing the request of the retrying bus master); a signal MIN_GRANT (which is asserted when the minimum grant timer 304 timely); the delayed request signal BAL_DEL_REQ; the data sequence request signal STREAM_REQ; a CURMAST_REQ signal (indicating that the current master is maintaining its request signal asserted); a signal ANY_SLOT_REQ (asserted high if any of the request signals REQ [7: 0] _ is high but not including the bridge chip request BLREQ_); and signals L1STATE [1: 0] (representing the current state of the L1 state machine 300 group). The L1 state machine 300 selects one of three possible L1 masters, including the retrying master (RTRYMAST_REQ), the delayed request from the bridge chip 48 (BAL_DEL_REQ) and the level two master (ANY_SLOT_REQ).

Das Anforderungs-Signal des erneut versuchenden Master RTRYMAST_REQ wird durch ein UND-Gate 312 erzeugt, das das Signal BAL_DEL_REQ, das Signal MY_REQ[RTRY_MAT[2:0]] (das anzeigt, ob der erneut versuchende Master seine Anforderung aufstellt) und den Ausgang eines ODER-Gates 310 empfängt. Die Eingänge des ODER-Gates 310 nehmen die Signale RTRY_MAST[2:0] auf. Demzufolge ist, falls ein erneut versuchender Master identifiziert worden ist (RTRY_MAST[2:0] ist Nicht-Null), eine verzögerte Anforderung vorhanden ist (BAL_DEL_REQ ist hoch) und ein erneut versuchender Master seine Anforderung aufgestellt hat, dann das Signal RTRYMAST_REQ aufgestellt.The request signal of the retrying master RTRYMAST_REQ is passed through an AND gate 312 which generates the signal BAL_DEL_REQ, the signal MY_REQ [RTRY_MAT [2: 0]] (indicating whether the retrying master makes its request) and the output of an OR gate 310 receives. The inputs of the OR gate 310 pick up the signals RTRY_MAST [2: 0]. Thus, if a retry master has been identified (RTRY_MAST [2: 0] is non-zero), a deferred request exists (BAL_DEL_REQ is high), and a retry master has asserted its request, then the signal RTRYMAST_REQ is asserted.

Die L1 Zustand-Maschine 300 erzeugt Signale N_L1STATE[2:0] (die den nächsten Zustand der L1 Zustand-Maschine 300 darstellen), ebenso wie Signale N_CURMAST[2:0] (die den nächtsen Master gemäß dem Level-Two-Arbitrierungs-Schema darstellen). Die L1 Zustand-Maschine 300 erzeugt auch ein Signal OPEN_WINDOW, das anzeigt, wenn ein erneut arbitrierendes Fenster für eine Erteilungs-Zustand-Maschine 306 existiert, um Master auf dem sekundären PCI-Bus 32 zu ändern. Ein Signal ADV_RR_MAST, geliefert durch die L1 Zustand-Maschine 300, zeigt zu der Erteilungs-Zustand-Maschine 306 hin an, wenn der Wert der Signale N_RR_MAST[2:0] in die Signale RR_MAST[2:0] zu laden sind, um den nächsten Level-Two-Round-Robin-Master weiterzuführen.The L1 state machine 300 generates signals N_L1STATE [2: 0] (representing the next state of the L1 state machine 300 as well as signals N_CURMAST [2: 0] (representing the next master according to the Represent level two arbitration scheme). The L1 state machine 300 also generates an OPEN_WINDOW signal indicating when a re-arbitrating window for a grant state machine 306 exists to master on the secondary PCI bus 32 to change. A signal ADV_RR_MAST, supplied by the L1 state machine 300 , points to the grant state machine 306 when the value of the signals N_RR_MAST [2: 0] are to be loaded into the signals RR_MAST [2: 0] to continue the next level two round robin master.

Die Erteilungs-Zustand-Maschine 306 gibt Erteilungs-Signale GNT[7:0] ebenso wie ein Signal CHANGING_GNT aus, um anzuzeigen, dass die Inhaberschaft des Busses 32 geändert wird. Die Erteilungs-Signale GNT[7:1]_ werden von den GNT[7:1] Signalen invertiert, und das Erteilungs-Signal BLGNT_ wird von dem GNT[0] Signal invertiert. Die Erteilungs-Zustand-Maschine 306 erzeugt auch Signale L1STATE[1:0] und Signale RR_MAST[2:0].The Grant State Machine 306 Issues GNT [7: 0] as well as a CHANGING_GNT signal to indicate ownership of the bus 32 will be changed. The grant signals GNT [7: 1] _ are inverted by the GNT [7: 1] signals, and the grant signal BLGNT_ is inverted by the GNT [0] signal. The Grant State Machine 306 also generates signals L1STATE [1: 0] and signals RR_MAST [2: 0].

Der Minimum-Erteilungs-Zeitgeber 304 wird durch das Signal PCLK getaktet und erzeugt das Signal MIN_GRANT. Der Minimum-Erteilungs-Zeitgeber 304 empfängt auch das Signal CHANGING_GNT und NEW_FRAME (anzeigend, dass ein neues FRAME_Signal aufgestellt worden ist). Der Anfangs-Wert des Minimum-Erteilungs-Zeitgebers 304 wird als ein Wert geladen {CFG2A_MINGNT[3:0], 0000}, wobei die Signale CFG2A_MINGNT[3:0] gespeicherte Konfigurations-Bits in dem Konfigurations-Raum 125 sind, die den Anfangs-Wert des Minimum-Erteilungs-Zeitgebers 304 definieren. Der Minimum-Erteilungs-Zeitgeber 304 wird erneut geladen, nachdem er herunter auf Null gezählt hat, und das Signal CHANGING_GNT wird auf hoch gesetzt. Nachdem der Minimum-Erteilungs-Zeitgeber 304 mit einem neuen Wert geladen ist, beginnt er sich zu erniedrigen, wenn das Signal NEW_FRAME auf hoch gesetzt ist und das Signal CHANGING_GNT auf niedrig durch die Erteilungs-Zustand-Maschine 306 zurückgenommen ist, was anzeigt, dass eine neue Transaktion auf dem PCI-Bus 32 begonnen hat.The minimum grant timer 304 is clocked by the signal PCLK and generates the signal MIN_GRANT. The minimum grant timer 304 also receives the CHANGING_GNT and NEW_FRAME signals (indicating that a new FRAME_ signal has been established). The initial value of the minimum grant timer 304 is loaded as a value {CFG2A_MINGNT [3: 0], 0000}, with the signals CFG2A_MINGNT [3: 0] stored configuration bits in the configuration space 125 are the initial value of the minimum grant timer 304 define. The minimum grant timer 304 is reloaded after counting down to zero, and the CHANGING_GNT signal is set high. After the minimum grant timer 304 is loaded with a new value, it starts to degrade when the signal NEW_FRAME is set high and the signal CHANGING_GNT is set low by the grant state machine 306 is withdrawn, indicating that a new transaction on the PCI bus 32 has begun.

Signale MY_REQ[7:1] werden durch ein NOR-Gate 314 erzeugt, dessen Eingänge die Anforderungs-Signale REQ[7:1]_ und Maskierungs-Signale Q2AMASKREQ[7:1] empfangen. Ein Aufstellen des Maskierungs-Bits Q2AMASKREQ[X], X = 1–7, maskiert die Anforderung REQ[X]_ des entsprechenden Masters, was verhindert, dass der PCI-Arbitrierer 124 auf das Anforderungs-Signal anspricht. Ein Signal MY_REQ[0] wird durch einen Invertierer 316 angesteuert, der die Brücken-Anforderung BLREQ empfängt.Signals MY_REQ [7: 1] are passed through a NOR gate 314 whose inputs receive the request signals REQ [7: 1] _ and masking signals Q2AMASKREQ [7: 1]. Setting the mask bit Q2AMASKREQ [X], X = 1-7, masks the request REQ [X] _ of the corresponding master, which prevents the PCI arbitrator 124 respond to the request signal. A signal MY_REQ [0] is given by an inverter 316 which receives the bridge request BLREQ.

Wie 22 zeigt, umfasst die Erteilungs-Zustand-Maschine 306 vier Zustände: PARK, GNT, IDLE4GNT und IDLE4PARK. Beim Aufstellen eines RESET-Signals (erzeugt von dem PCI-Reset-Signal PCIRST2_), tritt die Erteilungs-Zustand-Maschine 306 in einen Zustand PARK ein, wo sie verbleibt, während ein Signal ANY_REQ weggenommen wird. Das Signal ANY_REQ wird auf hoch gesetzt, falls irgendeine der Anforderungs-Zeilen zu dem PCI-Arbitrierer 124 aufgestellt ist. In dem PARK Zustand wird die PCI-PCI-Brücke 48 als der Inhaber des PCI-Busses 32 geparkt, wenn eine andere Anforderung nicht vorhanden ist.As 22 Fig. 1 includes the grant state machine 306 four states: PARK, GNT, IDLE4GNT and IDLE4PARK. Upon asserting a RESET signal (generated by the PCI reset signal PCIRST2_), the grant state machine enters 306 in a state PARK, where it remains while a signal ANY_REQ is removed. The ANY_REQ signal is set high if any of the request lines to the PCI arbiter 124 is set up. The PARK state becomes the PCI-PCI bridge 48 as the owner of the PCI bus 32 parked if another requirement does not exist.

Falls das Signal ANY_REQ aufgestellt ist, geht die Erteilungs-Zustand-Maschine 306 von dem Zustand PARK zu dem Zustand IDLE4GNT über, und das Signal CHANGING_GNT wird auf hoch gesetzt, um anzuzeigen, dass der PCI-Arbitrierer 124 Master ändert. Die Erteilungs-Signale GNT[7:0] werden alle auf Null'en gelöscht, und die Signale CURMAST[2:0] werden mit dem Wert des nächsten Master N_CURMAST[2:0] aktualisiert. Zusätzlich werden die Round-Robin-Master-Signale RR_MAST[2:0] mit dem nächsten Round-Robin-Master-Wert N_RR_MAST[2:0] aktualisiert, wenn das Signal ADV_RR_MAST durch die L1 300 aufgestellt ist. Das Signal ADV_RR_MAST zeigt, wenn es hoch ist, an, dass der nächste L1-Master einer der L2 Master ist.If the signal ANY_REQ is asserted, the grant state machine goes 306 from state PARK to state IDLE4GNT, and signal CHANGING_GNT is set high to indicate that the PCI arbitrator 124 Master changes. The grant signals GNT [7: 0] are all cleared to zero, and the signals CURMAST [2: 0] are updated with the value of the next master N_CURMAST [2: 0]. In addition, the round robin master signals RR_MAST [2: 0] are updated with the next round robin master value N_RR_MAST [2: 0] when the signal ADV_RR_MAST is cleared by the L1 300 is set up. The signal ADV_RR_MAST indicates, if high, that the next L1 master is one of the L2 masters.

Von einem Zustand IDLE4GNT geht die Erteilungs-Zustand-Maschine 306 als nächstes zu dem GNT Zustand über, und die Signale GNT[7:0] werden auf den Zustand von neuen Erteilungs-Signalen NEWGNT[7:0] eingestellt und das Signal CHANGING_GNT werden auf niedrig gesetzt. Die Signale NEWGNT[7:0] sind auf dem Zustand der momentanen Master-Signale CURMAST[2:0] basierend, wie dies in 24 dargestellt ist.From a state IDLE4GNT passes the grant state machine 306 next to the GNT state, and the signals GNT [7: 0] are set to the state of new grant signals NEWGNT [7: 0] and the signal CHANGING_GNT are set to low. The signals NEWGNT [7: 0] are based on the state of the current master signals CURMAST [2: 0], as shown in FIG 24 is shown.

Von dem Zustand GNT sind drei Übergänge möglich. Die Erteilungs-Zustand-Maschine 306 kehrt zu dem PARK Zustand zurück, falls ein Arbitrierungs-Fenster offen ist (OPEN_WINDOW ist hoch), keine Anforderung anhängig ist (ANY_REQ ist niedrig), der PCI-Bus 32 leer ist (BUS_IDLE ist hoch) und der nächste Master der momentane Master ist (d. h. der momentane Master ist der parkende Master). Bei dem Übergang zurück von dem GNT Zustand zu dem PARK Zustand werden die Signale L1STATE[1:0] mit den Signalen N_L1STATE[1:0] aktualisiert. Allerdings wird, falls keine Anforderungen anhängig sind und der Bus leer ist, aber der momentane Master nicht der parkende Master ist (d. h. die Signale N_CURMAST[2:0] sind nicht gleich zu dem Wert der Signale CURMAST[2:0]), ein Leerlauf-Zustand benötigt und die Erteilungs-Zustand-Maschine 306 geht von dem GNT Zustand zu dem IDLE4PARK Zustand über. Die L1 Zustand-Werte L1STATE[1:0] werden aktualisiert. Von dem IDLE4PARK Zustand geht die Erteilungs-Zustand-Maschine 306 zu dem PARK Zustand über, die Erteilungs-Signale GNT[7:0] gleich zu den neuen Erteilungs-Signalen NEWGNT[7:0] einstellend, um den PCI-Bus 32 dem neuen Master zu erteilen. Das Signal CHANGING_GNT wird auch auf niedrig gesetzt.From state GNT three transitions are possible. The Grant State Machine 306 returns to the PARK state if an arbitration window is open (OPEN_WINDOW is high), no request is pending (ANY_REQ is low), the PCI bus 32 is empty (BUS_IDLE is high) and the next master is the current master (ie the current master is the parked master). In the transition back from the GNT state to the PARK state, the signals L1STATE [1: 0] are updated with the signals N_L1STATE [1: 0]. However, if no requests are pending and the bus is empty, but the current master is not the parked master (ie the signals N_CURMAST [2: 0] are not equal to the value of the signals CURMAST [2: 0]), an idle state is needed and the grant state machine 306 goes from the GNT state to the IDLE4PARK state. The L1 state values L1STATE [1: 0] are updated. From the IDLE4PARK state goes the grant state machine 306 to the PARK state, setting the grant signals GNT [7: 0] equal to the new grant signals NEWGNT [7: 0] to the PCI bus 32 to grant the new master. The CHANGING_GNT signal is also set low.

Falls sich das Arbitrierungs-Fenster öffnet (OPEN_WINDOW ist hoch) und der nächste Master nicht der momentane Master ist (die Signale N_CURMAST[2:0] sind nicht gleich zu den Signalen CURMAST[2:0]), dann geht die Erteilungs-Zustand-Maschine 306 zu dem Leerlauf Zustand IDLE4GNT über, um Bus-Master-Erteilungen zu ändern. Bei dem Übergang wird das Signal CHANGING_GNT hoch gesetzt, die Signale GNT[7:0] werden alle auf Null'en gelöscht, die Signale CURMAST[2:0] werden mit dem nächsten Master-Wert N_CURMAST[2:0] aktualisiert, und die L1 Zustand-Signale L1STATE[1:0] werden mit dem nächsten Zustand-Wert N_L1STATE[1:0] aktualisiert. Zusätzlich werden die Round-Robin-Master-Signale RR_MAST[2:0] mit dem nächsten Round-Robin-Master RR_MAST[2:0] aktualisiert, falls das Signal ADV_RR_MAST auf hoch gesetzt ist. Die Erteilungs-Signale GNT[7:0] werden dann auf den Wert NEWGNT[7:0] bei dem Übergang von dem IDLE4GNT Zustand zu dem GNT Zustand gesetzt.If the arbitration window opens (OPEN_WINDOW is high) and the next master is not the current master (the N_CURMAST [2: 0] signals are not equal to the CURMAST [2: 0] signals), then the grant state goes -Machine 306 to idle state IDLE4GNT over to change bus master grants. During the transition, the signal CHANGING_GNT is set high, the signals GNT [7: 0] are all cleared to zeros, the signals CURMAST [2: 0] are updated with the next master value N_CURMAST [2: 0], and the L1 state signals L1STATE [1: 0] are updated with the next state value N_L1STATE [1: 0]. In addition, the round robin master signals RR_MAST [2: 0] are updated with the next round robin master RR_MAST [2: 0] if the signal ADV_RR_MAST is set high. The grant signals GNT [7: 0] are then set to the value NEWGNT [7: 0] at the transition from the IDLE4GNT state to the GNT state.

Wie 23 zeigt, startet die L1 Zustand-Maschine 300 (21) in eine, Zustand RR unter Aufstellen des RESET-Signals, wo die Zustand-Maschine 300 verbleibt, während ein verzögertes Anforderungs-Signal BAL_DEL_REQ auf niedrig gesetzt wird (anzeigend, dass dort keine verzögerte Anforderung anhängig ist). In dem RR Zustand wird das Signal ADV_RR_MAST auf hoch gesetzt, um der Erteilungs-Zustand-Maschine 300 zu ermöglichen, den Round-Robin-Master zu aktualisieren (d. h. Einstellen von Signalen RR_MAST[2:0] gleich zu dem Wert N_RR_MAST[2:0]). Der RR Zustand ist der Round-Robin Zustand, in dem das Level-Two-Arbitrierungs-Schema verwendet wird. In dem RR Zustand werden die nächsten Master-Signale N_CURMAST[2:0] gleich zu dem nächsten Round-Robin-Master N_RR_MAST[2:0] gesetzt, und das Signal OPEN_WINDOW wird auf hoch gesetzt, falls die Datenfolge-Anforderungs-Gelegenheit existiert (STREAM_REQ ist hoch), oder der Minimum-Erteilungs-Zeitgeber 304 abgelaufen ist (MIN_GRANT ist hoch), oder der momentane Master seine Anforderung aufgestellt hat (CURMAST_REQ geht auf niedrig). Wenn hoch aufgestellt ist, ermöglicht das Signal OPEN_WINDOW, dass eine neue Arbitrierung stattfindet.As 23 shows, the L1 state machine starts 300 ( 21 ) into one, state RR setting up the RESET signal, where the state machine 300 remains while a delayed request signal BAL_DEL_REQ is set low (indicating that there is no pending request pending). In the RR state, the signal ADV_RR_MAST is set high to the grant state machine 300 to allow the round-robin master to be updated (ie, setting signals RR_MAST [2: 0] equal to the value N_RR_MAST [2: 0]). The RR state is the round robin state in which the level two arbitration scheme is used. In the RR state, the next master signals N_CURMAST [2: 0] are set equal to the next round robin master N_RR_MAST [2: 0], and the signal OPEN_WINDOW is set high if the data string request occasion exists (STREAM_REQ is high), or the minimum grant timer 304 has expired (MIN_GRANT is high) or the current master has made his request (CURMAST_REQ goes low). When high up, the OPEN_WINDOW signal allows a new arbitration to take place.

Falls eine verzögerte Anforderung erfasst wird (BAL_DEL_REQ geht zu hoch über), geht die L1 Zustand-Maschine 300 von dem RR Zustand zu dem BAL Zustand über, den nächsten Master Zustand N_CURMAST[2:0] als den Brücken-Chip 48 einstellend und das Signal ADV_RR_MAST wegnehmend, um die Level-Two-Round-Robin-Arbitrierung zu sperren. In dem BAL Zustand wird das Signal OPEN_WINDOW auf hoch gesetzt, falls die verzögerte Anforderung weggenommen ist (BAL_DEL_REQ geht zu niedrig über), oder die verzögerte Anforderung erneut versucht worden ist (BAL_RETRIED geht zu hoch über). Falls das Signal BAL_DEL_REQ auf niedrig gesetzt ist oder falls die verzögerte Anforderung BAL_DEL_REQ auf hoch gesetzt ist, allerdings die Anforderung des erneut versuchenden Masters auf niedrig gesetzt wird (RTRYMAST_REQ ist niedrig) und die Schlitz-Anforderung ANY_SLOT_REQ auf hoch gesetzt wird, dann geht die L1 Zustand-Maschine 300 zurück zu dem RR Zustand. Bei dem Übergang wird das Signal ADV_RR_MAST auf hoch gesetzt und die nächsten Master-Signale N_CURMAST[2:0] werden gleich zu dem nächsten Round-Robin-Master N_RR_MAST[2:0] gesetzt. Falls das Signal BAL_DEL_REQ weggenommen ist, zeigt dies an, dass der Arbitrierer 124 zurück zu dem Level-Two-Round-Robin-Schema kehren sollte. Falls das Signal der verzögerten Anforderung aufgestellt ist, allerdings die Anforderung des erneut versuchenden Masters weggenommen wird, dann ist das Level-One-Arbitrierungs-Schema zwischen den Schlitzen auf dem PCI-Bus 32 und dem Brücken-Chip 48.If a delayed request is detected (BAL_DEL_REQ goes too high), the L1 state machine goes 300 from the RR state to the BAL state, the next master state N_CURMAST [2: 0] as the bridge chip 48 adjusting and taking away the signal ADV_RR_MAST to disable the level two round robin arbitration. In the BAL state, the OPEN_WINDOW signal is set high if the deferred request is cleared (BAL_DEL_REQ goes low), or the deferred request has been retried (BAL_RETRIED goes high). If the BAL_DEL_REQ signal is low, or if the delayed request BAL_DEL_REQ is set high, but the request of the retrying master is set low (RTRYMAST_REQ is low) and the slot request ANY_SLOT_REQ is set high, then the L1 goes state machine 300 back to the RR state. At the transition, the signal ADV_RR_MAST is set high and the next master signals N_CURMAST [2: 0] are set equal to the next round robin master N_RR_MAST [2: 0]. If the signal BAL_DEL_REQ is removed, this indicates that the arbitrator 124 should return to the level two round robin scheme. If the delayed request signal is asserted, but the request of the retrying master is removed, then the level one arbitration scheme is between the slots on the PCI bus 32 and the bridge chip 48 ,

Falls sowohl die verzögerte Anforderung BAL_DEL_REQ als auch die Anforderung des erneut versuchenden Masters RTRYMAST_REQ aufgestellt sind, dann geht die L1 Zustand-Maschine 300 von dem Zustand BAL zu dem Zustand RETRY_MAST über, und der erneut versuchende Master wird als der nächste Master eingestellt (N_CURMAST[2:0] wird gleich zu RTRY_MAST[2:0]) eingestellt. Das Signal ADV_RR_MAST wird auf niedrig beibehalten. In dem RETRY_MAST Zustand ist, falls keiner der PCI-Schlitz-Master eine Anforderung aufstellt (ANY_SLOT_REQ ist niedrig), dann das Level-One-Arbitrierungs-Schema zwischen dem erneut versuchenden Master und dem Brücken-Chip 48, und die L1 Zustand-Maschine 300 geht zurück zu dem BAL Zustand. Der Brücken-Chip 48 wird als der nächste Master eingestellt (N_CURMAST[2:0] ist gleich zu dem Zustand BAL-BOA), und das Signal ADV_RR_MAST wird auf niedrig beibehalten. Allerdings geht die L1 Zustand-Maschine 300 von dem RETRY_MAST Zustand zu dem RR Zustand über, falls irgendeiner der Schlitz-Master eine Anforderung aufstellt (ANY_SLOT_REQ ist hoch). Bei dem Übergang wird das Signal ADV_RR_MAST auf hoch gesetzt, und der nächste Round-Robin-Master wird als der nächste Master eingestellt (N_CURMAST[2:0] wird gleich zu N_RR_MAST[2:0] eingestellt).If both the delayed request BAL_DEL_REQ and the request of the retrying master RTRYMAST_REQ are set up, then the L1 state machine goes 300 from the state BAL to the state RETRY_MAST, and the retrying master is set as the next master (N_CURMAST [2: 0] is set equal to RTRY_MAST [2: 0]). The signal ADV_RR_MAST is kept low. In the RETRY_MAST state, if none of the PCI slot masters make a request (ANY_SLOT_REQ is low), then the level one arbitration scheme is between the retrying master and the bridge chip 48 , and the L1 state machine 300 goes back to the BAL state. The bridge chip 48 is set as the next master (N_CURMAST [2: 0] is equal to the state BAL-BOA), and the signal ADV_RR_MAST is kept low. However, the L1 state machine goes 300 from the RETRY_MAST state to the RR state if any of the slot master makes a request (ANY_SLOT_REQ is high). During the transition, the signal ADV_RR_MAST is set high, and the next round robin master is set as the next master (N_CURMAST [2: 0] is set equal to N_RR_MAST [2: 0]).

Um von dem Vorteil der Streaming-Fähigkeiten des Brücken-Chips Gebrauch zu machen, wenn Daten für eine DRC damit beginnen, von dem Kabel 28 anzukommen, wird der Master, zugeordnet zu dieser DRC, die Vorrichtung mit der höchsten Priorität (unter der Annahme, dass deren REQ_ aufgestellt ist). Dies ermöglicht dem Master, die Daten-Folge, von dem Kabel 28 ankommend, aufzunehmen, während das Auswahl-Fenster dort für ein Streaming vorhanden ist. Falls der Brücken-Chip 48 nicht den Master verbinden kann, bevor die DRC-Warteschlange aufgefüllt ist, dann wird sich der eingangsseitige Brücken-Chip 24 trennen, und nur ein Teil der Daten würde zu dem anfordernden Master hindurchgeführt werden, was erfordert, dass der Master eine andere Lese-Anforderung auf den eingangsseitigen Bus 24 abgibt. Der Streaming-Master behält die höchste Priorität bei, so lange wie DRC-Daten fortfahren, von dem Kabel 28 anzukommen. Falls der Master eine unterschiedliche Zyklus-Adresse wiederholt, wird dies erneut versucht werden, allerdings wird er den Besitz über den sekundären PCI-Bus 32 beibehalten, bis seine Anforderung weggeht oder die Gelegenheit für ein Streaming vorüber ist.To take advantage of the bridging chip's streaming capabilities when data for a DRC starts from the cable 28 To arrive, the master assigned to this DRC becomes the highest priority device (assuming its REQ_ is established). This allows the master, the data sequence, of the cable 28 incoming, while the selection window is there for streaming. If the bridge chip 48 can not connect the master before the DRC queue is filled, then the input side bridge chip 24 and only a portion of the data would be passed to the requesting master, requiring that the master request another read on the input bus 24 emits. The streaming master keeps the highest priority from the cable as long as DRC data continues 28 to arrive. If the master repeats a different cycle address, this will be retried, but it will be owned by the secondary PCI bus 32 until his request goes away or the opportunity for streaming is over.

ERNEUT VERSUCHENDE ANFORDERUNGEN UND MULTI-THREADED MASTERTRYING AGAIN REQUIREMENTS AND MULTI-THREADED MASTER

Da jeder Brücken-Chip eine Vorrichtung mit verzögerter Transaktion ist, falls eine Vorrichtung auf dem ausgangsseitigen Bus 32 eine Lese-Anforderung abgibt, bestimmt für ein eingangsseitiges Target, wird der ausgangsseitige Brücken-Chip 48 eine Wiederversuch-Transaktion (beschrieben in der PCI Spezifikation) auf dem sekundären Bus 32 ausgeben und die Anforderung weiter zu dem Kabel 28 führen. Die Wiederversuch-Transaktion bewirkt, dass der anfordernde Master die Steuerung von dem PCI-Bus 32 aufgibt und seine REQ_ Zeile wegnimmt. Nach Wegnehmen seiner REQ_ Zeile wird der erneut versuchende Master wieder eine Anforderung für denselben Zyklus zu einer späteren Zeit aufstellen, was dazu führt, dass seine GNT_ aufgestellt wird (falls seine REQ_ Zeile nicht maskiert ist) und der Bus-Master erneut versucht, bis die Lese-Abschluss-Indikation in dem ausgangsseitigen Brücken-Chip 48 aufgestellt ist.Since each bridge chip is a delayed transaction device, if a device is on the output side bus 32 Issue a read request, destined for an input-side target, becomes the output-side bridge chip 48 a retry transaction (described in the PCI specification) on the secondary bus 32 spend and the request continues to the cable 28 to lead. The retry transaction causes the requesting master to control the PCI bus 32 give up and take away his REQ_ line. After removing its REQ_ line, the retrying master will again assert a request for the same cycle at a later time, causing its GNT_ to be asserted (if its REQ_ line is unmasked) and the bus master to retry until the Read completion indication in the output side bridge chip 48 is set up.

Wie die 25 zeigt, wird, um die unnötige Bearbeitung von Wiederversuch-Anforderungen zu vermeiden, die REQ_ Zeile einen sekundären Bus-Master, er eine erneut versuchte, verzögerte Lese- oder Schreib-Anforderung ausgibt, durch Aufstellen des geeigneten einen der Signale Q2A_MASK_REQ[7:1] (Anforderung von dem Brücken-Chip 48, die erneut versucht sind, werden nicht maskiert), maskiert, bis der verzögerte Abschluss zurückführt. Auf diese Art und Weise wird anderen, anfordernden Mastern eine Priorität gegeben, um deren Anforderungen hineinzubringen. Sobald die ersten Informationen, zugeordnet dem verzögerten Abschluss, zurückgeführt werden, wird die REQ_ Zeile des entsprechenden Masters von der Maskierung befreit und der erneut versuchende Master ist in der Lage, in eine Arbitrierung erneut einzutreten.As the 25 In order to avoid unnecessarily handling re-try requests, the REQ_ line will issue a secondary bus master with a retry to issue a delayed read or write request by asserting the appropriate one of the signals Q2A_MASK_REQ [7: 1 ] (Request from the bridge chip 48 that are tried again are not masked), masked until the delayed completion returns. In this way, other requesting masters are given priority to bring their requests in. Once the first information associated with the delayed completion is returned, the REQ_ line of the corresponding master is freed from masking and the retrying master is able to reenter arbitration.

Allerdings existiert ein spezieller Fall für Multi-Threaded-(oder Multi-Headed)Master auf dem ausgangsseitigen Bus 32 (26B), die in der Lage sind, eine erste Anforderung aufzustellen, erneut versucht zu werden und zurückzukommen mit einer unterschiedlichen Anforderung. Eine solche Multi-Threaded-Bus-Vorrichtung ist eine PCI-PCI-Brücke 323, die den sekundären PCI-Bus 32 und einen untergeordneten PCI-Bus 325 verbindet. Der Bus 325 ist mit Netzwerk-Schnittstellen-Karten (Network Interface Cards – NICs) 327A und 327B verbunden, die mit zwei unterschiedlichen Netzwerken verbunden sind. Demzufolge kann, falls die Anforderung von der NIC 327A für den primären PCI-Bus 32 erneut durch den Brücken-Chip 48 versucht wird, die NIC 327B eine unterschiedliche Anforderung erzeugen. In diesem Fall werden die REQ_ Zeilen der Multi-Threaded-Master nicht maskiert, wie dies durch das Signal CFG2Q_MULTI_MASTER[X], das auf hoch gesetzt wird, angezeigt ist.However, a special case exists for multi-threaded (or multi-headed) masters on the output side bus 32 ( 26B ) who are able to make a first request to be retried and come back with a different request. One such multi-threaded bus device is a PCI-PCI bridge 323 that the secondary PCI bus 32 and a subordinate PCI bus 325 combines. The bus 325 is available with Network Interface Cards (NICs) 327A and 327B connected to two different networks. Consequently, if the request from the NIC 327A for the primary PCI bus 32 again through the bridge chip 48 trying to get the NIC 327B create a different requirement. In this case, the REQ_ lines of the multi-threaded master are not masked as indicated by the signal CFG2Q_MULTI_MASTER [X] being set high.

Ein Status-Register 326 bestimmt, ob ein Schlitz ein einzelner oder ein Multi-Threaded ist. Bei einem Reset wird das Register 326 gelöscht, um anzunehmen, dass jede sekundäre Bus-Vorrichtung Einzel-Threaded ist. Der Schlitz wird dann überwacht, um zu bestimmen, ob er einen unterschiedlichen Zyklus anfordert, während ein anderer Zyklus von demselben Master anhängig ist. Falls ein Multi-Threaded-Verhalten in einem Master beobachtet wird, dann wird ein solcher durch Einstellen des entsprechenden Bits CFG2Q_MULTI_MASTER[X] auf hoch markiert.A status register 326 determines if a slot is single or multi-threaded. When reset, the register becomes 326 cleared to assume that each secondary bus device is single threaded. The slot is then monitored to determine if it is requesting a different cycle while another cycle is pending from the same master. If a multi-threaded behavior is observed in a master, then one is marked high by setting the corresponding bit CFG2Q_MULTI_MASTER [X].

Der Eingang des Status-Registers 326 wird mit dem Ausgang eines 14:7 Multiplexers 328 verbunden, dessen 0-Eingang mit dem Ausgang eines 14:7 Multiplexers 330 verbunden ist, dessen 1-Eingang mit Adressen-Bits P2Q_AD[22:16] verbunden ist. Ein Auswahl-Signal CFGWR_MM wählt die 0- und 1-Eingänge des Multiplexers 328 aus. Wenn hoch aufgestellt ist, bewirkt das Signal CFGWR_MM ein Konfigurations-Schreiben des Status-Registers 326 von den Daten-Bits P2Q_AD[22:16], was eine Software-Steuerung der Bits in dem Register 326 ermöglicht. Der 1-Eingang des Multiplexers 330 nimmt Multi-Master-Signale MULTI_MASTER[7:1] auf, der 0-Eingang empfängt den Ausgang des Registers 326 und der Multiplexer 330 wird durch ein Signal MULTI_SEL ausgewählt. Das Signal MULTI_SEL wird durch ein UND-Gate 338 erzeugt, dessen erster Eingang ein Signal Q2PIF_CHECK_CYC aufnimmt (gesetzt auf hoch, um anzuzeigen, dass die momentanen Transaktions-Informationen gegenüber von Informationen geprüft werden sollten, die in dem Warteschlangen-Block 127 gespeichert sind, und zwar hinsichtlich einer Anpassung, wie beispielsweise während einer verzögerten Speicher-Lese- oder Schreib-Anforderung von einer Bus-Vorrichtung auf dem sekundären PCI-Bus 32), und der andere Eingang nimmt den invertierten Zustand des Signals DCQ_HIT auf (was anzeigt, dass die momentenen Adressen-Informationen nicht die Adressen-Informationen anpassen, die einer anhängigen Anforderung des anfordernden Master in der DCQ 148 zugeordnet sind). Demzufolge wird, falls ein fehlerhafter Vergleich auftrat, der Wert der Signale CFG2Q_MULTI_MASTER[7:1] aktualisiert.The input of the status register 326 comes with the output of a 14: 7 multiplexer 328 whose 0 input is connected to the output of a 14: 7 multiplexer 330 whose 1-input is connected to address bits P2Q_AD [22:16]. A selection signal CFGWR_MM selects the 0 and 1 inputs of the multiplexer 328 out. When high, the signal CFGWR_MM causes a configuration write of the status register 326 from the data bits P2Q_AD [22:16], which provides software control of the bits in the register 326 allows. The 1 input of the multiplexer 330 takes multi-master signals MULTI_MASTER [7: 1] on, the 0 input receives the output of the register 326 and the multiplexer 330 is selected by a signal MULTI_SEL. The signal MULTI_SEL is passed through an AND gate 338 whose first input receives signal Q2PIF_CHECK_CYC (set high to indicate that the current transaction information should be checked against information contained in the queue block 127 in terms of adaptation, such as during a delayed memory read or write request from a bus device on the secondary PCI bus 32 ), and the other input receives the inverted state of the DCQ_HIT signal (indicating that the current address information does not match the address information corresponding to a pending request from the requesting master in the DCQ) 148 assigned). As a result, if an erroneous comparison occurred, the value of the signals CFG2Q_MULTI_MASTER [7: 1] is updated.

Ein Bit MULTI_MASTER[X] wird auf hoch gesetzt, falls der Master X eine anhängige Anforderung hat, die erneut versucht worden ist, und der Master X darauffolgend zu rück zu einer unterschiedlichen Anforderung kommt. Dies wird durch Vergleichen der Transaktions-Informationen (z. B. Adresse, Byte-Freigaben, Daten für ein Schreiben) der anhängigen Anforderung mit der Adresse der neuen Anforderung geprüft. Ein fehlgeschlagener Vergleich zeigt an, dass der Master im Multi-Threaded-Betrieb ist. Wenn einmal ein Multi-Master-Konfigurations-Bit CFG2Q_MULTI_MASTER[X] (X = 1–7) auf hoch gesetzt ist, wird das Bit auf hoch beibehalten.One Bit MULTI_MASTER [X] is set high if the master X is a pending Request that has been retried and the master X subsequently to back comes to a different request. This is done by comparing the transaction information (eg address, byte shares, data for a Letter) of the pending Requested request with the address of the new request. One Failed comparison indicates that the master is in multi-threaded operation is. If once a multi-master configuration bit CFG2Q_MULTI_MASTER [X] (X = 1-7) is set high, the bit is kept high.

Die Signale MULTI_MASTER[7:1] werden durch einen Decodierer 336 erzeugt. Der Decodierer 336 nimmt Signale Q2PIF_SLOT[2:0] (Schlitz-Zahl für die momentane, verzögerte Anforderung von einem Master), Q[7:0]_MASTER[2:0] (der Master, zugeordnet zu jedem der acht Puffer in der DCQ 148), Q[7:0]_COMPLETE (der Abschluss-Status jeder der acht Warteschlangen), und Q[7:0]_PART_COMPLETE (der Teil-Abschluss-Status jedes der Puffer in der verzögerten Abschluss-Warteschlange) auf. Zum Beispiel zeigt dann, falls das Signal Q0_MASTER[2:0] den Wert 4 enthält, dies an, dass der DCQ-Puffer 0 die Transations-Informationen einer verzögerten Anforderung von der Bus-Vorrichtung in dem Schlitz 4 speichert. Das Signal QY_COMPLETE, Y = 0–7, zeigt an, falls „hoch" aufgestellt ist, ob der DCQ-Puffer Y alle die Daten empfangen hat, die der verzögerten Anforderungs-Transaktion zugeordnet sind. Das Signal QY_PART_COMPLETE, Y = 0–7, zeigt an, falls hoch aufgestellt ist, dass der DCQ-Puffer Y als der DCQ-Puffer für eine verzögerte Transaktion von einem der Master zugeordnet worden ist, allerdings alle die Daten, die der verzögerten Transaktion zugeordnet sind, noch nicht empfangen worden sind.The MULTI_MASTER [7: 1] signals are passed through a decoder 336 generated. The decoder 336 takes signals Q2PIF_SLOT [2: 0] (slot number for the current, delayed request from a master), Q [7: 0] _MASTER [2: 0] (the master assigned to each of the eight buffers in the DCQ 148 ), Q [7: 0] _COMPLETE (the completion status of each of the eight queues), and Q [7: 0] _PART_COMPLETE (the partial completion status of each of the buffers in the deferred completion queue). For example, if the signal Q0_MASTER [2: 0] contains the value 4, it indicates that the DCQ buffer 0 is the transition information of a delayed request from the bus device in the slot 4 stores. The signal QY_COMPLETE, Y = 0-7, indicates if "high" is asserted that the DCQ buffer Y has received all the data associated with the delayed request transaction The signal QY_PART_COMPLETE, Y = 0-7 , if high, indicates that the DCQ buffer Y has been allocated as the DCQ delayed transaction buffer by one of the masters, but all the data associated with the delayed transaction has not yet been received.

Falls die momentane Schlitz-Zahl Q2PIF_SLOT[2:0] gleich zu dem Wert irgendeines der acht Warteschlangen-Master-Indikations-Signale Q[7:0]_MASTER[2:0] ist, und sich der entsprechende DCQ-Puffer in dem Abschluss- oder Teil-Abschluss-Zustand befindet, dann wird das entsprechende eine der Bits MULTI_MASTER[7:1] auf hoch gesetzt, falls das Signal DCQ_HIT niedrig ist, und das Signal Q2PIF_CHECK_CYC[2:0] hoch ist. Demzufolge wird, zum Beispiel, falls das Signal Q2PIF_SLOT[2:0] den Wert 2 enthält, was anzeigt, dass die Vorrichtung im Schlitz 2 der momante Master der verzögerten Anforderung ist, und der DCQ-Puffer 5 eine anhängige Anforderung für den Schlitz-2-Master speichert (Q5_MASTER[2:0] = 5), und irgendeines der Signale Q5_COMPLETE oder Q5_PART_COMPLETE hoch ist, und falls das Signal Q2PIF_CHECK_CYC hoch ist und das Signal DCQ_HIT niedrig ist, dann das Bit MULTI_MASTER[2] auf hoch gesetzt, um so anzuzeigen, dass die Schlitz-2-Vorrichtung ein Multi-Threaded-Master ist.If the current slot number Q2PIF_SLOT [2: 0] is equal to the value of any of the eight queue master indication signals Q [7: 0] _MASTER [2: 0], and the corresponding DCQ buffer is in the terminator or partial completion state, then the corresponding one of the MULTI_MASTER [7: 1] bits is set high if the signal DCQ_HIT is low and the signal Q2PIF_CHECK_CYC [2: 0] is high. As a result, for example, if the signal Q2PIF_SLOT [2: 0] contains the value 2, indicating that the device is in slot 2 the master is the delayed request, and the DCQ buffer 5 a pending request for the slot 2 -Master stores (Q5_MASTER [2: 0] = 5), and any of the signals Q5_COMPLETE or Q5_PART_COMPLETE is high, and if the signal Q2PIF_CHECK_CYC is high and the signal DCQ_HIT is low, then the bit MULTI_MASTER [2] is set high to indicate that the slot 2 device is a multi-threaded master.

Ein Maskierungs-Anforderungs-Erzeugungs-Block 332 erzeugt Signale Q2A_MASK_REQ[X] (X = 1–7) in Abhängigkeit von Signalen Q[7:0]_MASTER[2:0], Q[7:0]_STATE[3:0], (was den Zustand von verzögerten Abschluss-Warteschlangen 0–7 anzeigt), SLOT_WITH_DATA[7:0] (was anzeigt, ob ein verzögerter Abschluss Qs 0–7 gültige Daten enthält), CFG2Q_MULTI_MASTER[X] (X = 1–7), CFG2Q_ALWAYS_MASK und CFG2Q_NEVER_MASK.A mask request generation block 332 generates signals Q2A_MASK_REQ [X] (X = 1-7) in response to signals Q [7: 0] _MASTER [2: 0], Q [7: 0] _STATE [3: 0], (indicating the state of delayed completion Queues 0-7), SLOT_WITH_DATA [7: 0] (indicating whether a delayed completion contains Qs 0-7 valid data), CFG2Q_MULTI_MASTER [X] (X = 1-7), CFG2Q_ALWAYS_MASK, and CFG2Q_NEVER_MASK.

Wie 26A zeigt, umfasst der Masken-Anforderungs-Erzeugungs-Block 332 einen 2:1 Multiplexer 320 zum Erzeugen des Signals Q2A_MASK_REQ[X] (X = 1–7). Der 1-Eingang des Multiplexers 320 ist mit dem Ausgang eines ODER-Gates 322 verbunden und der 0-Eingang ist auf niedrig gesetzt. Der Auswahl-Eingang des Multiplexers 320 wird durch ein Signal MASK_MUXSEL angesteuert. Ein Eingang des ODER-Gates 322 ist mit dem Ausgang eines NOR-Gates 324 verbunden, der ein Signal CFG2Q_MULTI_MASTER[X] aufnimmt (anzeigend einen Multi-Threaded-Master), und der andere Eingang empfängt ein Signal CFG2Q_NEVER_MASK (ein Konfigurations-Bit, das anzeigt, dass die Anforderungs-Zeile nicht maskiert werden sollte, falls ein Multi-Threaded-Master erfasst ist). Der andere Eingang des ODER-Gates 322 empfängt ein Signal CFG2Q_ALWAYS_MASK, das ein Konfigurations-Bit ist, das anzeigt, dass das entsprechende Masken-Bit Q2A_MASK_REQ[X] immer maskiert werden sollte, falls das Signal MUXSEL auf hoch gesetzt ist. Das Signal MASK_MUXSEL wird auf hoch gesetzt, falls die Anforderung von dem sekundären Bus-Master nicht zu Daten vorliegt, die bereits in dem Warteschlangen-Block 127 existieren, d. h. die Anforderung muss zu dem primären PCI-Bus 24 übertragen werden. Demzufolge wird, zu jedem Zeitpunkt, zu dem eine Anforderung von einer Vorrichtung auf dem sekundären PCI-Bus 32 eingangsseitig zu dem primären PCI-Bus 24 übertragen wird, eine Prüfung in Bezug auf Bits CFG2Q_MULTI_MASTER[7:1] durchgeführt werden, um zu bestimmen, ob ein Multi-Threaded-Master erfasst worden ist.As 26A The mask request generation block comprises 332 a 2: 1 multiplexer 320 for generating the signal Q2A_MASK_REQ [X] (X = 1-7). The 1 input of the multiplexer 320 is with the output of an OR gate 322 connected and the 0 input is set to low. The selection input of the multiplexer 320 is controlled by a signal MASK_MUXSEL. An input of the OR gate 322 is at the output of a NOR gate 324 which receives a signal CFG2Q_MULTI_MASTER [X] (indicating a multi-threaded master), and the other input receives a signal CFG2Q_NEVER_MASK (a configuration bit indicating that the request line should not be masked if a multi -Hreaded master is detected). The other input of the OR gate 322 receives a signal CFG2Q_ALWAYS_MASK which is a configuration bit indicating that the corresponding mask bit Q2A_MASK_REQ [X] should always be masked if the signal MUXSEL is set high. The signal MASK_MUXSEL is set high if the request from the secondary bus master does not Data already exists in the queue block 127 exist, ie the request must be to the primary PCI bus 24 be transmitted. As a result, at any time, a request from a device on the secondary PCI bus becomes 32 on the input side to the primary PCI bus 24 a check is made for bits CFG2Q_MULTI_MASTER [7: 1] to determine if a multi-threaded master has been detected.

Die Maskierung von Anforderungen kann durch Einstellen der geeigneten Bits in den Konfigurations-Registern 125 übergangen werden. Die verfügbaren Moden umfassen: 1) normaler Mode, in dem die Anforderungs-Maskierung freigegeben ist, mit der Ausnahme, falls ein Multi-Threaded-Master (CFG2Q_NEVER_MASK = 0, CFG2Q_ALWAYS_MASK = 0), 2) immer ein Maskierungs-Mode, in dem Anforderungen von erneut versuchenden Mastern maskiert werden, gerade wenn Multi-Threaded (CFG2Q_ALWAYS_MASK = 1) vorliegt, und 3) niemals Maskierungs-Mode, in dem die Anforderungen niemals maskiert sind (CFG2Q_NEVER_MASK = 1, CFG2Q_ALWAYS_MASKED = 0).The masking of requests can be done by setting the appropriate bits in the configuration registers 125 to be ignored. The available modes include: 1) normal mode in which request masking is enabled, except in the case of a multi-threaded master (CFG2Q_NEVER_MASK = 0, CFG2Q_ALWAYS_MASK = 0), 2) always a masking mode in which Requests of retrying masters are masked even if multi-threaded (CFG2Q_ALWAYS_MASK = 1), and 3) never masking mode in which the requests are never masked (CFG2Q_NEVER_MASK = 1, CFG2Q_ALWAYS_MASKED = 0).

ERWEITERUNGS-KARTEN-EINSETZEN UND ENTFERNEN VON VERBINDUNGS-EXPANSIONS-KARTENEXPANSION CARD INSERTION AND REMOVAL OF CONNECTION EXPANSION CARDS

Wie in den 1 und 27A dargestellt ist, besitzen die zwei Expansionskästen 30a und 30b, von einem gemeinsamen Design 30, jeweils die sechs Hot-Plug-Schlitze 36 (36af), in denen die herkömmlichen Erweiterungskarten 807 eingesetzt und entfernt werden können (Hot-Plugged), während das Computersystem 10 hochgefahren bzw. eingeschaltet verbleibt. Die sechs mechanischen Hebel 802 werden dazu verwendet, selektiv die Expansionskarten 807 zu sichern (wenn geschlossen, oder verriegelt, ist), die in die entsprechenden Hot-Plug-Schlitze 36 eingesetzt werden. Zu Zwecken eines Entfernens oder eines Einsetzens der Expansionskarten 807 in einen der Schlitze 36 muss der entsprechende Hebel 802 geöffnet werden, oder entriegelt werden, und so lange wie der Hebel 802 geöffnet ist, verbleibt der entsprechende Schlitz 36 abgeschaltet.As in the 1 and 27A have the two expansion boxes 30a and 30b , by a common design 30 , each of the six hot-plug slots 36 ( 36a - f ), in which the conventional expansion cards 807 can be inserted and removed (hot-plugged) while the computer system 10 remains powered up or remains on. The six mechanical levers 802 are used to selectively expand the expansion cards 807 To secure (if closed, or locked, is) in the appropriate hot-plug slots 36 be used. For purposes of removing or inserting the expansion cards 807 in one of the slots 36 must be the appropriate lever 802 be opened or unlocked, and as long as the lever 802 is open, the corresponding slot remains 36 off.

Wenn der Hebel 802, der die Expansionskarte 807 an seinem Schlitz 36 sichert, geöffnet ist, erfasst das Computersystem 10 dieses Auftreten und fährt die Karte 802 herunter (und den entsprechenden Schlitz 36), bevor die Karte 807 von deren Schlitz bzw. Einsteckplatz 36 entfernt werden kann. Schlitze bzw. Einsteckplätze 36, die heruntergefahren sind, ähnlich anderen Schlitzen 36, die keine Karten 807 halten, verbleiben heruntergefahren bzw. abgeschaltet, bis eine Software des Computersystems 10 selektiv die Schlitze bzw. Einsteckplätze 36 hochfährt.When the lever 802 who is the expansion card 807 at his slot 36 secures, opens, captures the computer system 10 this appearance and drives the map 802 down (and the corresponding slot 36 ) before the card 807 from their slot or slot 36 can be removed. Slots or slots 36 that are shut down, similar to other slots 36 that do not have cards 807 hold, remain shut down or shut down until software of the computer system 10 selectively the slots or slots 36 boots up.

Die Karte 46, eingesetzt in den Kartenschlitz 34, besitzt den Brücken-Chip 48, der den Sicherungs-Status (offen oder geschlossen) der Hebel 802 überwacht und irgendeine Karte 807 (und einen entsprechenden Schlitz 36) herunterfährt, der nicht durch seinen Hebel 802 gesichert ist. Eine Software des Computersystems 10 kann auch selektiv irgendeinen der Schlitze 36 herunterfahren.The map 46 , inserted in the card slot 34 , owns the bridge chip 48 that the fuse status (open or closed) of the lever 802 supervised and any card 807 (and a corresponding slot 36 ), which is not shut down by its lever 802 is secured. A software of the computer system 10 can also selectively use any of the slots 36 shut down.

Die Karten 807 werden durch eine Hochfahrsequenz hochgefahren und durch eine Herunterfahrsequenz heruntergefahren. In der Hochfahrsequenz (the power up sequence) wird Energie zuerst zu der Karte 807 zugeführt, die hochgefahren werden soll, und danach wird ein PCI-Takt-Signal (von dem PCI-Bus 32) zu der Karte 807 geliefert, die hochgefahren wird. Verbleibende PCI-Bus-Signal-Leitungen der Karte 807 werden dann mit entspre chenden Leitungen des PCI-Busses 32 verbunden. Zuletzt wird das Reset-Signal für die Karte 807, die hochgefahren wird, weggenommen, was die Karte 807 außerhalb eines Reset-Zustands bringt.The cards 807 are powered up by a startup sequence and shut down by a shutdown sequence. In the power up sequence, energy first becomes the card 807 which is to be powered up, and thereafter a PCI clock signal (from the PCI bus 32 ) to the map 807 delivered, which is raised. Remaining PCI bus signal lines of the card 807 are then with corre sponding lines of the PCI bus 32 connected. Last is the reset signal for the card 807 , which is raised, taken away what the card 807 outside a reset state.

Die Hochfahrsequenz ermöglicht der Schaltung der Karte 807, dass sie hochgefahren wird, um vollständig funktional mit dem PCI-Takt-Signal zu werden, bevor die verbleibenden PCI-Bus-Signale geliefert werden. Wenn das Taktsignal und die verbleibenden PCI-Bus-Signale mit der Karte 807 verbunden werden und bevor die Karte 807 zurückgesetzt wird, besitzt der Brücken-Chip 48 eine Kontrolle des PCI-Busses 32. Da der Brücken-Chip 48 eine Kontrolle über den PCI-Bus 32 während dieser Zeiten besitzt, stören potentielle Defekte auf dem PCI-Bus 32 von der Power-up-Sequenz nicht die Operationen der Karten 807, die hochgefahren sind.The boot sequence allows the circuit of the card 807 in that it powers up to become fully functional with the PCI clock signal before delivering the remaining PCI bus signals. When the clock signal and the remaining PCI bus signals with the card 807 be connected and before the card 807 is reset, owns the bridge chip 48 a control of the PCI bus 32 , Because the bridge chip 48 a control over the PCI bus 32 During these times, potential failures interfere with the PCI bus 32 from the power-up sequence not the operations of the cards 807 that started up.

In der Herunterfahr- bzw. Power-Down-Sequenz wird die Karte 807, die heruntergefahren werden soll, zuerst zurückgesetzt. Als nächstes werden die PCI-Bus-Signale, ohne das PCI-Takt-Signal, von der Karte 807 entfernt. Der Brücken-Chip 48 unterbricht darauffolgend das PCI-Takt-Signal von der Karte 807, bevor Energie von der Karte 807 entfernt wird. Die Herunterfahr- bzw. Power-Down-Sequenz minimiert die Propagation von falschen Signalen von der Karte 807, die heruntergefahren werden soll, zu dem Bus 32, da die Schaltung auf der Karte 807 deren vollständige Funktion beibehält, bis die PCI-Bus-Signal-Leitungen entfernt sind.In the shutdown or power-down sequence, the card becomes 807 to be shut down, reset first. Next, the PCI bus signals, without the PCI clock signal, from the card 807 away. The bridge chip 48 Subsequently, it interrupts the PCI clock signal from the card 807 before energy from the card 807 Will get removed. The power-down sequence minimizes the propagation of false signals from the card 807 to be shut down to the bus 32 because the circuit is on the card 807 maintains its full function until the PCI bus signal lines are removed.

Wenn das PCI-Taktsignal und die verbleibenden PCI-Bus-Signale unterbrochen werden, und wenn die Karte 807 zurückgesetzt bzw. in einen Reset-Zustand versetzt wird, besitzt der Brücken-Chip 48 eine Kontrolle des PCI-Busses 32. Da der Brücken-Chip 48 eine Kontrolle über den PCI-Bus 32 während dieser Zeitpunkte besitzt, stören potentielle Defekte auf dem PCI-Bus 32 von der Power-Down- bzw. Herunterfahr-Sequenz nicht die Operationen der Karten 807, die sie hochgefahren haben.When the PCI clock signal and the remaining PCI bus signals are interrupted, and if the card 807 reset or put into a reset state, has the bridge chip 48 a checkpoint of the PCI bus 32 , Because the bridge chip 48 a control over the PCI bus 32 during these times, potential defects interfere with the PCI bus 32 from the power-down or shutdown sequence not the operations of the cards 807 they started up.

Der Brücken-Chip 48 umfasst die Seriell-Eingangs/Ausgangs-(SIO)-Schaltung 50, die die Hochfahr- und Herunterfahr-Sequenzen der Schlitze bzw. Einsteckplätze 36 über vierundzwanzig Steuersignale POUT[39:16] steuert. Die Steuersignale POUT[39:16] sind ein Untersatz von vierzig Ausgangs-Steuersignalen POUT[39:0], erzeugt durch die SIO-Schaltung 50. Die Steuersignale POUT[39:16] sind verriegelte Versionen von Schlitz-Bus-Freigabe-Signalen BUSEN#[5:0], Schlitz-Energie-Freigabe-Signalen PWREN[5:0], Schlitz-Takt-Freigabe-Signalen CLKEN#[5:0] und Schlitz-Reset-Signalen RST#[5:0], alle internen Signale der SIO-Schaltung 50, wie weiter nachfolgend beschrieben ist. Die Steuersignale POUT[39:0] und deren Beziehung zu den Signalen BUSEN#[5:0], PWREN[5:0], CLKEN#[5:0] und RST#[5:0] sind in der nachfolgenden Tabelle beschrieben:The bridge chip 48 includes the serial input / output (SIO) circuit 50 showing the startup and shutdown sequences of the slots or slots 36 controls over twenty-four control signals POUT [39:16]. The control signals POUT [39:16] are a subset of forty output control signals POUT [39: 0] generated by the SIO circuit 50 , The control signals POUT [39:16] are latched versions of slot bus enable signals BUSEN # [5: 0], slot power enable signals PWREN [5: 0], slot clock enable signals CLKEN # [5: 0] and slot reset signals RST # [5: 0], all internal signals of the SIO circuit 50 as further described below. The control signals POUT [39: 0] and their relation to the signals BUSEN # [5: 0], PWREN [5: 0], CLKEN # [5: 0] and RST # [5: 0] are described in the following table :

PARALLEL-AUSGANGS-STEUER-SIGNALE (POUT[39:01])

Figure 01160001
PARALLEL OUTPUT CONTROL SIGNALS (POUT [39:01])
Figure 01160001

Wie in den 2 und 28 dargestellt ist, besitzt jeder Hot-Plug-Schlitz 36 die zugeordnete Umschalt-Schaltung 41 zum Verbinden und Trennen des Schlitzes 36 mit und von dem PCI-Bus 32. Die Umschalt-Schaltung 41 für jeden Schlitz 36 empfängt vier der Steuersignale POUT[39:16]. Als ein Beispiel wird, für den Schlitz 36a, wenn das Steuersignal POUT[28] aufgestellt ist, oder niedrig ist, der Schlitz 36a mit den Bus-Signal-Leitungen des PCI-Busses 32 durch eine Umschalt-Schaltung 47 verbunden. Wenn das Steuersignal POUT[28] weggenommen ist, oder hoch ist, wird der Schlitz 36a von den Bus-Signal-Leitungen des PCI-Busses 32 getrennt.As in the 2 and 28 is shown, each has a hot-plug slot 36 the associated switching circuit 41 for connecting and disconnecting the slot 36 with and from the PCI bus 32 , The switching circuit 41 for every slot 36 receives four of the control signals POUT [39:16]. As an example, for the slot 36a when the control signal POUT [28] is established, or low, the slot 36a with the bus signal lines of the PCI bus 32 through a switching circuit 47 connected. When the control signal POUT [28] is taken off, or is high, the slot becomes 36a from the bus signal lines of the PCI bus 32 separated.

Wenn das Steuersignal POUT[22] aufgestellt ist, oder niedrig ist, wird der Schlitz 36a mit einem PCI-Takt-Signal CLK über eine Umschalt-Schaltung 43 verbunden. Wenn das Steuersignal POUT[22] weggenommen ist, oder hoch ist, wird der Schlitz 36a von dem Taktsignal CLK getrennt.When the control signal POUT [22] is asserted, or is low, the slot becomes 36a with a PCI clock signal CLK via a switching circuit 43 connected. When the control signal POUT [22] is taken off, or is high, the slot becomes 36a separated from the clock signal CLK.

Wenn das Steuersignal POUT[34] aufgestellt ist, oder hoch ist, wird der Schlitz 36a mit einem Karten-Spannungs-Versorgungs-Pegel Vss über eine Umschalt-Schaltung 45 verbunden. Wenn das Steuersignal POUT[34] weggenommen ist, oder niedrig ist, wird der Schlitz 36a von dem Karten-Spannungs-Versorgungs-Pegel Vss getrennt.When the control signal POUT [34] is asserted, or is high, the slot becomes 36a with a card voltage supply level V ss via a switching circuit 45 connected. When the control signal POUT [34] is taken out, or is low, the slot becomes 36a separated from the card voltage supply level V ss .

Wenn das Steuersignal POUT[16] aufgestellt ist oder niedrig ist, wird der Schlitz 36a zurückgesetzt, und wenn das Steuersignal POUT[16] weggenommen ist, oder hoch ist, gelangt der Schlitz 36a aus seinem Reset-Zustand.When the control signal POUT [16] is set up or is low, the slot becomes 36a reset, and when the control signal POUT [16] is removed, or is high, the slot passes 36a from its reset state.

Wie in 2 zu sehen ist, kann die SIO-Schaltung 50 selektiv bis zu einhundertachtundzwanzig (sechzehn Bytes) von verriegelten Status-Signalen STATUS[127:0], geliefert durch den Erweiterungskasten 30, übetwachen. Die Status-Signale STATUS[127:0] bilden einen „Snapshot" von ausgewählten Zuständen des Erweiterungskastens 30. Die Status-Signale STATUS[127:0] umfassen sechs Status-Signale STATUS[5:0], die den Sicherungs-Status (geöffnet oder geschlossen) jedes der Hebel 802 anzeigen. Die SIO-Schaltung 50 überwacht die Status-Signale STATUS[31:0] hinsichtlich Änderungen in deren logischen Spannungspegeln. Die SIO-Schaltung 50 verschiebt seriell die Status-Signale STATUS[127:32] in die SIO-Schaltung 50 hinein, wenn durch die CPU 14 angewiesen ist, dies so vorzunehmen.As in 2 can be seen, the SIO circuit 50 selectively up to one hundred twenty-eight (sixteen bytes) of latched status signals STATUS [127: 0] supplied by the expansion box 30 , keep the watch over. The status signals STATUS [127: 0] form a "snapshot" of selected states of the expansion box 30 , The status signals STATUS [127: 0] include six status signals STATUS [5: 0] indicating the fuse status (open or closed) of each of the levers 802 Show. The SIO circuit 50 monitors status signals STATUS [31: 0] for changes in their logic voltage levels. The SIO circuit 50 shifts the status signals STATUS [127: 32] serially into the SIO circuit 50 into it when through the CPU 14 instructed to do so.

Die SIO-Schaltung 50 empfängt seriell die Status-Signale STATUS[127:0], das am wenigsten signifikanteste Signal zuerst, und zwar über ein serielles Daten-Signal NEW_CSID. Das Daten-Signal NEW_CSID wird durch den seriellen Ausgang des paral lelen Eingangs-Verschieberegisters 82 mit zweiunddreißig Bits, angeordnet auf einer Leiterplatte des Erweiterungskastens 30, zusammen mit den Schlitzen bzw. Einsteckplätzen 36, geliefert.The SIO circuit 50 serially receives the status signals STATUS [127: 0], the least significant signal first, via a serial data signal NEW_CSID. The data signal NEW_CSID is passed through the serial output of the parallel input shift register 82 with thirty-two bits, arranged on a circuit board of the expansion box 30 , along with the slots or slots 36 , delivered.

Das Register 82 empfängt, über dessen parallele Eingänge, vierundzwanzig Parallel-Status-Signale PIN[23:0], vier zugeordnet zu jedem der Hot-Plug-Schlitze 36, die in den zweiunddreißig am wenigsten signifikanten Status-Signalen STATUS[31:0] umfasst sind. Wenn sich der Status, angezeigt durch eines oder mehrere der Status-Signale STATUS[31:0], ändert (der logische Spannungs-Pegel ändert sich), erzeugt der Brücken-Chip 48 eine Unterbrechungs-Anforderung zu der CPU 14 durch Aufstellen, oder Ansteuern auf niedrig, eines seriellen Unterbrechungs-Anforderungs-Signals SI_INTR#, das über einen Unterbrechungs-Empfangs-Block 132 empfangen wird. Die Status-Signale PIN[23:0] umfassen zwei PCI-Karten-Präsenz-Signale (PRSNT1# und PRSNT2#), zugeordnet zu jedem Schlitz 36.The registry 82 receives, via its parallel inputs, twenty-four parallel status signals PIN [23: 0], four assigned to each of the hot-plug slots 36 which are included in the thirty-two least significant status signals STATUS [31: 0]. When the status indicated by one or more of the status signals STATUS [31: 0] changes (the logic voltage level changes), the bridge chip generates 48 an interrupt request to the CPU 14 by setting, or driving low, a serial interrupt request signal SI_INTR #, via an interrupt receive block 132 Will be received. The status signals PIN [23: 0] include two PCI card presence signals (PRSNT1 # and PRSNT2 #) associated with each slot 36 ,

Sechs Status-Signale PIN[5:0], entsprechend zu deren verriegelten Versionen, Status-Signale STATUS[5:0], zeigen den Sicherungs- oder Eingriffs-Status (offen oder geschlossen) jedes der Hebel 802 an. Sechs Gleit-Schalter 805 (27A27C) werden durch die Bewegung deren entsprechender Hebel 802 betätigt und werden dazu verwendet, elektrisch den Sicherungs-Status des entsprechenden Hebels 802 anzuzeigen. Jeder Schalter 805 besitzt ein erstes Terminal, verbunden mit Masse, und ein zweites Terminal, das das entsprechende eine der Status-Signale PIN[5:0] zuführt. Das zweite Terminal ist mit einem Versorgungs-Spannungs-Pegel VDD über einen von sechs Widerständen 801 verbunden.Six status signals PIN [5: 0] corresponding to their locked versions, status signals STATUS [5: 0], indicate the locking or engagement status (open or closed) of each of the levers 802 at. Six sliding switches 805 ( 27A - 27C ) are the movement of their corresponding lever 802 and are used to electrically lock the fuse status of the corresponding lever 802 display. Every switch 805 has a first terminal connected to ground, and a second terminal which supplies the corresponding one of the status signals PIN [5: 0]. The second terminal is at a supply voltage level V DD via one of six resistors 801 connected.

Falls sich einer der Hebel 802 öffnet und die Karte 807, gesichert durch den Hebel 802, entsichert wird, wird das entsprechende eine der Status-Signale PIN[5:0] aufgestellt, oder auf hoch angesteuert. Als ein Beispiel wird, für den Schlitz 36a, das Status-Signal PIN[0] weggenommen oder auf niedrig angesteuert, wenn der entsprechende Hebel 802 geschlossen ist. Wenn der Hebel 802 für den Schlitz 36a geöffnet ist, wird das Status-Signal PIN[0] aufgestellt, oder auf hoch angesteuert.If one of the levers 802 opens and the card 807 , secured by the lever 802 is unlocked, the corresponding one of the status signals PIN [5: 0] is set, or driven high. As an example, for the slot 36a , the status signal PIN [0] taken away or driven low when the corresponding lever 802 closed is. When the lever 802 for the slot 36a is open, the status signal PIN [0] is set up or driven high.

Das Register 82 empfängt auch eine serielle Datenfolge von verriegelten Status-Signalen STATUS[127:32], die keine Unterbrechungen verursachen, wenn sich der logische Spannungs-Pegel eines der Signale STATUS[127:32] ändert. Die Status-Signale STATUS[127:32] werden durch das Verschiebe-Register 52 mit sechzehn Bits, angeord net auf der Leiterplatte des Expansionskastens 30, mit den Schlitzen 36, gebildet. Das Verschiebe-Register 52 empfängt Status-Signale an seinen parallelen Eingängen und verriegelt die Status-Signale STATUS[127:32], wenn durch die SIO-Schaltung 50 instruiert ist, dies so vorzunehmen. Das Verschiebe-Register 52 serialisiert die Status-Signale STATUS[127:32] und liefert die Signale STATUS[127:32] zu dem seriellen Eingang des Registers 82 über ein serielles Daten-Signal CSID_I.The registry 82 Also receives a serial data string of latched status signals STA TUS [127: 32], which will not interrupt when the logic voltage level of one of the STATUS [127: 32] signals changes. The status signals STATUS [127: 32] are indicated by the shift register 52 with sixteen bits, arranged on the circuit board of the expansion box 30 , with the slots 36 , educated. The move register 52 receives status signals at its parallel inputs and latches the status signals STATUS [127:32] when through the SIO circuit 50 is instructed to do so. The move register 52 serializes the status signals STATUS [127: 32] and supplies the signals STATUS [127: 32] to the serial input of the register 82 via a serial data signal CSID_I.

Wenn durch die SIO-Schaltung 50 instruiert ist, verriegelt das Register 82 Status-Signale PIN[23:0], bildet die Status-Signale STATUS[31:0], liefert die Status-Signale STATUS[31:0] und liefert ein Byte oder mehr der Status-Signale STATUS[127:32] (wenn dies durch die CPU 14 angefordert ist), in einem am wenigsten signifikanten Signal einer ersten Art, zu der SIO-Schaltung 50, und zwar über das serielle Daten-Signal NEW_CSID. Die Status-Signale STATUS[127:0] werden durch die nachfolgende Tabelle beschrieben:If through the SIO circuit 50 instructed locks the register 82 Status signals PIN [23: 0], forms the status signals STATUS [31: 0], provides the status signals STATUS [31: 0] and supplies one byte or more of the status signals STATUS [127: 32] ( if so by the CPU 14 is requested), in a least significant signal of a first kind, to the SIO circuit 50 , via the serial data signal NEW_CSID. The status signals STATUS [127: 0] are described by the following table:

STATUS[127:0]

Figure 01190001
STATUS [127: 0]
Figure 01190001

Figure 01200001
Figure 01200001

Wie in den 2 und 30 dargestellt ist, verriegelt, wenn eine SIO-Schaltung 50 ein Register-Lade-Signal CSIL_O_ aufstellt, oder auf niedrig ansteuert, das Schiebe-Register 52 die Status-Signale STATUS[127:32] und das Schiebe-Register 82 verriegelt die Status-Signale STATUS[31:0]. Wenn die SIO-Schaltung 50 das Signal CSIL_O_ wegnimmt, oder auf hoch ansteuert, verschieben beide Register 52 und 82 seriell deren Daten zu der SIO-Schaltung 50 an der positiven Flanke des Taktsignals CSIC_O, geliefert durch die SIO-Schaltung 50. Das Taktsignal CSIC_O wird zu der und auf einem Viertel der Frequenz des PCI-Taktsignals CLK synchronisiert.As in the 2 and 30 is shown locked when an SIO circuit 50 sets up a register load signal CSIL_O_ or low, the shift register 52 the status signals STATUS [127: 32] and the shift register 82 locks the status signals STATUS [31: 0]. If the SIO circuit 50 the signal CSIL_O_ takes away, or on high, both registers move 52 and 82 serial their data to the SIO circuit 50 on the positive edge of the clock signal CSIC_O, supplied by the SIO circuit 50 , The clock signal CSIC_O is synchronized to and at a quarter of the frequency of the PCI clock signal CLK.

Wie in 29 dargestellt ist, verwendet, zu Zwecken einer Überwachung, oder für ein Abtasten, der Status-Signale STATUS[31:0], die SIO-Schaltung 50 ein 32-Bit- Unterbrechungs-Register 800, dessen Bit-Positionen den Signalen STATUS[31:0] entsprechen. Die SIO-Schaltung 50 aktualisiert die Bits des Unterbrechungs-Registers 800, um die entsprechenden Status-Signale STATUS[31:0] anzugleichen, die entprellt (debounced) worden sind, wie weiter nachfolgend beschrieben ist. Zwei Status-Signale STATUS[7:6] werden für zusätzliche Hot-Plug-Schlitze 36 reserviert, und das siebte und achte, signifikanteste Bit des Unterbrechungs-Registers 800 werden auch für die zusätzlichen Schlitze 36 reserviert. Das Unterbrechungs-Register 800 ist ein Teil eines Register-Logik-Blocks 808 der SIO-Schaltung 50, die mit dem PCI-Bus 32 gekoppelt ist.As in 29 For purposes of monitoring, or for sampling, the status signals STATUS [31: 0], the SIO circuit is used 50 a 32-bit interrupt register 800 whose bit positions correspond to the signals STATUS [31: 0]. The SIO circuit 50 updates the bits of the interrupt register 800 to equalize the corresponding status signals STATUS [31: 0] that have been debounced, as further described below. Two status signals STATUS [7: 6] are for additional hot-plug slots 36 reserved, and the seventh and eighth, most significant bit of the interrupt register 800 also be for the extra slots 36 reserved. The interrupt register 800 is a part of a register logic block 808 the SIO circuit 50 that with the PCI bus 32 is coupled.

Eine serielle Abtast-Eingangs-Logik 804 der SIO-Schaltung 50 tastet sequenziell, oder überwacht, die Status-Signale STATUS[31:0], das am wenigsten signifikante Signal zuerst, hinsichtlich Änderungen, wie dies durch Übergänge in deren logischen Spannungs-Pegeln angezeigt ist. Falls sich der Status von einem oder mehr der Status-Signale STATUS[5:0], zugeordnet den Hebeln 802, ändert, tritt die Seriell-Abtast-Eingangs-Logik 804 in einen langsamen Abtast-Mode ein, so dass die Status-Signale STATUS[5:0] zweiunddreißigmal innerhalb eines vorbestimmten Entprell- bzw. Debounce-Zeit-Intervalls abgetastet werden. Falls sich eines oder mehrere der Status-Signale STATUS[5:0] ändert, aktualisiert die serielle Abtast-Eingangs-Logik 804 das Unterbrechungsregister 800 (und stellt das serielle Unterbrechungs-Signal SI_INTR# auf), falls das geänderte Status-Signal STATUS[5:0] auf demselben, logischen Spannungsniveau für zumindest ein vorbestimmtes Entprell-Zeit-Intervall verbleibt. Die Seriell-Abtast-Eingangs-Logik 804 ist mit programmierbaren Zeitgebern 806 gekoppelt, die das Ende des Entprell-Verzögerungs-Intervalls erzeugen und anzeigen, initiiert durch die Seriell-Abtast-Logik 804. Unter Fordern des Status, stabil für die Entprell-Zeit zu bleiben, minimiert das Intervall das unbeabsichtigte Power-Down von einem der Hot-Plug-Schlitze 36 aufgrund eines falschen Werts (d. h. eines „Defekts"), angezeigt durch eines der Status-Signale STATUS[5:0]. Wenn alle der Status-Signale STATUS[5:0] auf demselben, logischen Spannungspegel für mindestens das Entprell-Zeit-Intervall verbleiben, dann schreitet die Seriell-Abtast-Eingangs-Logik 804 fort, um noch einmal erneut alle zweiunddreißig Status-Signale STATUS[31:0] in dem schnelleren Abtast-Mode abzutasten.A serial scan input logic 804 the SIO circuit 50 sequentially, or monitors, the status signals STATUS [31: 0], the least significant signal first, for changes as indicated by transitions in their logical voltage levels. If the status of one or more of the status signals STATUS [5: 0], associated with the levers 802 , changes, the serial scan input logic occurs 804 in a slow scan mode, so that the status signals STATUS [5: 0] are sampled thirty-two times within a predetermined debounce time interval. If one or more of the status signals STATUS [5: 0] changes, the serial scan input logic updates 804 the interruption register 800 (and asserts the serial interrupt signal SI_INTR #) if the changed status signal STATUS [5: 0] remains at the same logic voltage level for at least a predetermined debounce time interval. The serial scan input logic 804 is with programmable timers 806 which generate and indicate the end of the debounce delay interval initiated by the serial scan logic 804 , Demanding the status to remain stable for debounce time minimizes the unintentional power-down of one of the hot-plug slots 36 due to an incorrect value (ie, a "defect") indicated by one of the status signals STATUS [5: 0]. If all of the status signals STATUS [5: 0] are at the same logic voltage level for at least the debounce time. Interval remain, then the serial scan input logic proceeds 804 to once again sample all thirty-two status signals STATUS [31: 0] in the faster scan mode.

Falls die Seriell-Abtast-Eingangs-Logik 804 eine Änderung in einem der Status-Signale STATUS[31:6] erfasst, instruiert die Seriell-Abtast-Eingangs-Logik 804 die Zeitgeber 806, ein anderes Debounce- bzw. Entprell-Verzögerungs-Intervall zu messen, stellt darauf das Seriell-Unterbrechungs-Signal SI_INTR# auf, aktualisiert das Unterbrechungs-Register 800 mit den Signalen STATUS[31:6], die sich geändert haben, und ignoriert weitere Änderungen in den Status-Signalen STATUS[31:6], bis das Entprell-Zeit-Intervall abläuft. Nach Ablaufen des Entprell-Zeit-Intervalls schreitet die Seriell-Abtast-Eingangs-Logik 804 fort, um Änderungen in den zweiunddreißig Status-Signalen STATUS[31:0] zu erkennen.If the serial scan input logic 804 detects a change in any of the status signals STATUS [31: 6], instructs the serial scan input logic 804 the timers 806 to measure another debounce delay interval, thereon sets up the serial interrupt signal SI_INTR #, updates the interrupt register 800 with the signals STATUS [31: 6] that have changed, and ignores further changes in the status signals STATUS [31: 6] until the debounce time interval expires. Upon expiration of the debounce time interval, the serial scan input logic proceeds 804 to detect changes in the thirty-two status signals STATUS [31: 0].

Wenn das Seriell-Unterbrechungs-Signal SI_INTR# aufgestellt ist, liest die CPU 14 darauffolgend das Unterbrechungs-Register 800, bestimmt, welche (es können mehr als eins sein) Status-Signale STATUS[3:0] die Unterbrechung verursachten, und nimmt das Seriell-Unterbrechungs-Signal SI_INTR# durch Schreiben einer „1" zu dem Bit oder den Bits des Unterbrechungs-Registers 800, die sich geändert haben, weg.When the serial interrupt signal SI_INTR # is asserted, the CPU reads 14 subsequently the interrupt register 800 , determines which (it may be more than one) status signals STATUS [3: 0] caused the interrupt, and takes the serial interrupt signal SI_INTR # by writing a "1" to the bit or bits of the interrupt register 800 who have changed away.

Die CPU 14 kann selektiv Unterbrechungs-Anforderungen, verursacht durch die Status-Signale STATUS[31:0], durch Schreiben einer „1" zu einem entsprechenden Bit eines Unterbrechungs-Maskierungs-Registers 810 mit zweiunddreißig Bits maskieren. Die CPU 14 kann auch selektiv irgendein Byte der Status-Signale STATUS[47:0] durch Schreiben einer Byte-Zahl des ausgewählten Bytes zu einem Seriell-Eingangs-Byte-Register 812 lesen. Die SIO-Schaltung 50 überträgt dann das erwünschte Byte in ein Seriell-Daten-Register 815 hinein.The CPU 14 selectively selects interrupt requests caused by the status signals STATUS [31: 0] by writing a "1" to a corresponding bit of an interrupt mask register 810 with thirty-two bits mask. The CPU 14 Also, selectively, any byte of the status signals STATUS [47: 0] may be selectively written by writing a byte number of the selected byte to a serial input byte register 812 read. The SIO circuit 50 then transmits the desired byte to a serial data register 815 into it.

Zum Beispiel schreibt, um das dreißigste Byte (Byte-Zahl zwei) der Status-Signale STATUS[23:16] zu lesen, die CPU 14 eine „2" in das Seriell-Eingangs-Byte-Register 812. Die Seriell-Abtast-Eingangs-Logik 804 verschiebt dann seriell Byte zwei der Status-Signale STATUS[23:16] in das Seriell-Daten-Register 815 hinein. Ein Busy-Status-Bit BS des Seriell-Eingangs-Byte-Registers 812 ist gleich zu „1", wenn die CPU 14 zu Anfang die erwünschte Byte-Zahl zu dem Seriell-Eingangs-Byte-Register 812 schreibt. Das Bit BS wird durch die SIO-Schaltung 50 gelöscht, nachdem das angeforderte Byte in das Seriell-Daten-Register 815 hinein verschoben worden ist.For example, to read the thirtieth byte (byte number two) of the status signals STATUS [23:16], the CPU writes 14 a "2" into the serial input byte register 812 , The serial scan input logic 804 then serially shifts byte two of the status signals STATUS [23:16] into the serial data register 815 into it. A busy status bit BS of the serial input byte register 812 is equal to "1" when the CPU 14 initially the desired byte count to the serial input byte register 812 writes. The bit BS is passed through the SIO circuit 50 deleted after the requested byte in the serial data register 815 has been moved into.

Die CPU 14 kann einen der Schlitze 36 durch Schreiben einer „1" zu einem entsprechenden Bit eines Schlitz-Freigabe-Registers 817 hochfahren und den Schlitz 36 durch Schreiben einer „0" zu diesem Bit sperren. Weiterhin kann die CPU 14 einen der Schlitze 36 durch Schreiben einer „1" zu einem entsprechenden Bit eines Schlitz-Reset-Registers 819 zurücksetzen. Die Inhalte der Schlitz-Freigabe- 817 und der Schlitz-Reset- 819 Register sind durch Signale SLOT_EN[5:0] und SLOT_RST_[5:0] jeweils dargestellt.The CPU 14 can one of the slots 36 by writing a "1" to a corresponding bit of a slot enable register 817 boot up and the slot 36 by writing a "0" to this bit 14 one of the slots 36 by writing a "1" to a corresponding bit of a slot reset register 819 reset to default. The contents of the slot release 817 and the slot reset 819 Registers are represented by signals SLOT_EN [5: 0] and SLOT_RST_ [5: 0], respectively.

Um die Anforderung zu initiieren, angezeigt durch das Schlitz-Freigabe- 817 und Reset- 819 Register, zu initiieren, schreibt die CPU 14 eine „1" zu einem SO-Bit eines Steuer-Registers 814. Nachdem das SO-Bit aufgestellt ist (was ein GO_UPDATE Signal aufstellt, oder auf hoch ansteuert), initiiert die SIO-Schaltung 50 die erforderlichen Power-down- und/oder Power-up-Sequenzen und steuert sie.To initiate the request, indicated by the slot release 817 and reset 819 Register, initiate, writes the CPU 14 a "1" to an SO bit of a control register 814 , After the SO bit is asserted (which asserts a GO_UPDATE signal or goes high), the SIO circuit initiates 50 the required power-down and / or power-up sequences and controls them.

Die Seriell-Abtast-Eingangs-Logik 804 ist mit einer EIN/AUS-Steuer-Logik 820 verbunden, die die Power-up- und Power-down-Sequenzen steuert. Die EIN/AUS-Steuer-Logik 820 liefert die Signale BUSEN#[5:0], CLKEN#[5:0], RST#[5:0] und PWREN[5:0] zu einer Seriell-Ausgangs-Logik 824.The serial scan input logic 804 is with ON / OFF control logic 820 connected, which controls the power-up and power-down sequences. The ON / OFF control logic 820 provides the signals BUSEN # [5: 0], CLKEN # [5: 0], RST # [5: 0] and PWREN [5: 0] to a serial output logic 824 ,

Jede Power-up- und Power-down-Sequenz umfasst vier Verschiebe-Phasen, während denen ein anderer Schritt der Power-down- oder Power-up-Sequenz durchgeführt wird. Während jeder Verschiebe-Phase instruiert die EIN/AUS-Steuer-Logik 820 die Seriell-Ausgangs-Logik 824, die Steuer-Signale BUSEN#[5:0], CLKEN#[5:0], RST#[5:0] und PWREN[5:0] zu kombinieren; diese Signale zu verriegeln; und liefert seriell diese Signale (über ein serielles Daten-Signal CSOD_O) zu dem seriellen Eingang eines Ausgangs-Verschiebe-Registers 80. An dem Ende jeder Verschiebe-Phase instruiert die EIN/AUS-Steuer-Logik 820 das Verschiebe-Register 80, die Steuersignale POUT[35:12] zu aktualisieren.Each power-up and power-down sequence includes four shift phases during which another step of the power-down or power-up sequence is performed. During each shift phase, the ON / OFF control logic instructs 820 the serial output logic 824 to combine the control signals BUSEN # [5: 0], CLKEN # [5: 0], RST # [5: 0] and PWREN [5: 0]; to lock these signals; and serially supplies these signals (via a serial data signal CSOD_O) to the serial input of an output shift register 80 , At the end of each shift phase, the ON / OFF control logic instructs 820 the shift re gister 80 to update the control signals POUT [35:12].

Die EIN/AUS-Steuer-Logik 820 wird auch schnittstellenmäßig mit der Register-Logik 808 und einer Steuer-Logik 822 für eine Licht emittierende Diode (Light Emitting Diode – LED) verbunden. Die LED-Steuer-Logik 122 steuert den Ein/Aus-Status der sechs LEDs 54, die visuell anzeigen, ob die entsprechenden Hebel 802 verriegelt sind oder entriegelt sind. Die LEDs 54 können so programmiert werden, um dann zu blinken, wenn sie eingeschaltet sind, und zwar über LED-Steuerregister (nicht dargestellt) der Register-Logik 808.The ON / OFF control logic 820 also interfaces with the register logic 808 and a control logic 822 connected to a light emitting diode (LED). The LED control logic 122 controls the on / off status of the six LEDs 54 that visually indicate if the appropriate levers 802 are locked or unlocked. The LEDs 54 may be programmed to flash when they are powered up via register control logic LED control registers (not shown) 808 ,

Wie in 31A dargestellt ist, umfasst die Seriell-Abtast-Eingangs-Logik 804 eine Abtast-Zustand-Maschine 840, die das Abtasten der Status-Signale STATUS[31:0] hinsichtlich Änderungen steuert und das Verschieben eines ausgewählten Bytes der Status-Signale STATUS[47:0] in das Seriell-Eingangs-Byte-Register 815 hinein steuert.As in 31A includes the serial scan input logic 804 a scan state machine 840 controlling the sampling of the status signals STATUS [31: 0] for changes and shifting a selected byte of the status signals STATUS [47: 0] into the serial input byte register 815 into it.

Die Abtast-Zustand-Maschine 840 wird an der negativen Flanke eines Takt-Signals DIV2CLK getaktet, das zu einem PCI-Taktsignal CLK synchronisiert ist, und von einer Hälfte der Frequenz des PCI-Taktsignals CLK ist. Die Last- und Taktsignale, CSIL_O_ und CSIC_O, jeweils, werden durch die Abtast-Zustand-Maschine 840 geliefert. Das Taktsignal wird, wenn es freigegeben wird, zu dem Taktsignal CSIC_O synchronisiert.The scan state machine 840 is clocked on the negative edge of a clock signal DIV2CLK, which is synchronized to a PCI clock signal CLK, and is one-half the frequency of the PCI clock signal CLK. The load and clock signals, CSIL_O_ and CSIC_O, respectively, are passed through the scan state machine 840 delivered. The clock signal, when enabled, is synchronized to the clock signal CSIC_O.

Ein Bit/Byte-Zähler 841 zeigt, über ein Zweiunddreißig-Bit-Signal BIT_ACTIVE[31:0] an, welches Bit der Status-Signale STATUS[3:0] momentan durch das Seriell-Daten-Signal NEW_CSID repräsentiert wird. Das aufgestellte Bit des Signals BIT_ACTIVE[31:0] besitzt dieselbe Bit-Position wie das Status-Signal STATUS[31:0], dargestellt durch das Daten-Signal NEW_CSID.One bit / byte counter 841 indicates, via a thirty-two-bit signal BIT_ACTIVE [31: 0], which bit of the status signals STATUS [3: 0] is currently represented by the serial data signal NEW_CSID. The established bit of the signal BIT_ACTIVE [31: 0] has the same bit position as the status signal STATUS [31: 0], represented by the data signal NEW_CSID.

Der Zähler 841 liefert auch ein Drei-Bit-Signal BIT[2:0], das darstellt, welches Bit des momentanen Bytes der Status-Signale STATUS[31:0] momentan durch die Abtast-Zustand-Maschine 840 abgetastet wird. Der Zähler 841 wird an der negativen Flanke eines Signals SHIFT_ENABLE getaktet. Die Ausgänge des Zählers 841 werden zurückgesetzt, oder gelöscht, wenn der Ausgang eines UND-Gates 842, verbunden mit dem Lösch-Eingang des Zählers 840, negiert wird.The counter 841 also supplies a three-bit signal BIT [2: 0] which represents which bit of the current byte of the status signals STATUS [31: 0] is currently being sampled by the scan state machine 840 is scanned. The counter 841 is clocked on the negative edge of a signal SHIFT_ENABLE. The outputs of the counter 841 are reset, or cleared when the output of an AND gate 842 , connected to the clear input of the counter 840 , is negated.

Die Abtast-Zustand-Maschine 840 liefert ein Signal SCAN_IN_IDLE, das, wenn es aufgestellt wird, oder auf hoch gesetzt wird, anzeigt, dass sich die Abtast-Zustand-Maschine 840 in einem IDLE Zustand befindet, und momentan nicht irgendeines der Status-Signale STATUS[127:0] abtastet. Das Signal SCAN_IN_IDLE wird ansonsten weggenommen.The scan state machine 840 provides a signal SCAN_IN_IDLE which, when asserted or asserted high, indicates that the scan state machine 840 is in an IDLE state and is not currently sampling any of the status signals STATUS [127: 0]. The signal SCAN_IN_IDLE is otherwise removed.

Das Signal SCAN_IN_IDLE wird zu einem Eingang des UND_Gates 842 geliefert. Der andere Eingang des UND-Gates 842 ist mit dem Ausgang eines ODER-Gates 843 verbunden. Ein Eingang des ODER-Gates 843 empfängt ein invertiertes HOLD_OFF Signal, und der andere Eingang des ODER-Gates 843 empfängt ein Signal GETTING_BYTE.The signal SCAN_IN_IDLE becomes an input of the AND_gate 842 delivered. The other input of the AND gate 842 is with the output of an OR gate 843 connected. An input of the OR gate 843 receives an inverted HOLD_OFF signal, and the other input of the OR gate 843 receives a signal GETTING_BYTE.

Das Signal HOLD_OFF zeigt, wenn es aufgestellt ist, oder auf hoch angesteuert ist, an, dass eine Änderung in dem einen der Status-Signale STATUS[5:0] erfasst worden ist, und die Seriell-Abtast-Logik 804 in den Langsam-Abtast-Mode eingetreten ist. In diesem Langsam-Abtast-Mode bzw. Slow-Scan-Mode wartet die Seriell-Abtast-Eingangs-Logik 804 auf ein vorbestimmtes Langsam-Abtast-Intervall, bevor die Status-Signale STATUS[31:0] erneut weitergeführt werden. Die Seriell-Abtast-Eingangs-Logik 804 zählt die Zahl von Malen, für die die Seriell-Abtast-Signale STATUS[5:0] während des Langsam-Abtast-Modes abgetastet werden, und verwendet diese Zählung, um zu bestimmen, wenn eines von dem Status-Signal STATUS[5:0] unverändert für das Entprell-Verzögerungs-Intervall verblieb, wie weiterhin nachfolgend beschrieben werden wird.The signal HOLD_OFF, when asserted or driven high, indicates that a change has been detected in the one of the status signals STATUS [5: 0] and the serial scan logic 804 has entered the slow-scan mode. In this slow scan mode, the serial scan input logic waits 804 to a predetermined slow-scan interval before the status signals STATUS [31: 0] are resumed. The serial scan input logic 804 counts the number of times that the serial scan signals STATUS [5: 0] are sampled during the slow scan mode, and uses that count to determine when one of the status signals STATUS [5: 0] remained unchanged for the debounce delay interval, as will be further described below.

Deshalb werden, wenn sich die Abtast-Zustand-Maschine 840 in dem IDLE Zustand befindet und entweder das HOLD_OFF Signal weggenommen ist oder sich die Abtast-Zustand-Maschine 840 beim Lesen eines ausgewählten Bytes (ausgewählt durch die CPU 14) der Status-Signale STATUS[47:0] befindet, alle Ausgänge des Zählers 841 gelöscht oder gleich zu Null gesetzt.Therefore, when the scan state machine 840 is in the IDLE state and either the HOLD_OFF signal is removed or the scan state machine 840 reading a selected byte (selected by the CPU 14 ) of the status signals STATUS [47: 0], all outputs of the counter 841 deleted or immediately set to zero.

Das Signal SHIFT_ENABLE wird durch den Ausgang eines UND-Gates 844 geliefert. Ein Eingang des UND-Gates 844 nimmt das Takt-Signal CSIC_O auf. Ein anderer Eingang des UND-Gates 844 nimmt ein Signal DIV2CLK# auf. Das Signal DIV2CLK# wird aufgestellt, oder auf niedrig angesteuert, an der negativen Flanke des Signals CLKDIV4. Der dritte Eingang des UND-Gates 844 empfängt ein Signal SCAN_IN_PROGRESS, das, wenn es aufgestellt wird, oder auf hoch angesteuert ist, anzeigt, dass die Abtast-Zustand-Maschine 840 momentan die Status-Signale STATUS[127:0] abtastet, und das Signal SCAN_IN_PROGRESS wird ansonsten weggenommen.The SHIFT_ENABLE signal is passed through the output of an AND gate 844 delivered. An input of the AND gate 844 picks up the clock signal CSIC_O. Another input of the AND gate 844 picks up a signal DIV2CLK #. Signal DIV2CLK # is asserted, or driven low, on the negative edge of signal CLKDIV4. The third input of the AND gate 844 receives a signal SCAN_IN_PROGRESS which, when asserted or driven high, indicates that the scan state machine 840 momentarily the status signals STATUS [127: 0] is scanning, and the signal SCAN_IN_PROGRESS is otherwise removed.

Deshalb wird, wenn die Abtast-Zustand-Maschine 840 nicht die Status-Signale STATUS[127:0] verschiebt, der Zähler 841 gesperrt. Weiterhin wird, wenn freigegeben ist, der Zähler 841 an der negativen Flanke des Taktsignals DIV2CLK getaktet.Therefore, when the scan state machine 840 does not move the status signals STATUS [127: 0], the counter 841 blocked. Furthermore, when enabled, the counter becomes 841 clocked on the negative edge of the clock signal DIV2CLK.

Das Unterbrechungs-Register 800 empfängt Eingangs-Signale D_INTR_REG[31:0] an deren entsprechenden zweiunddreißig Eingängen. Die Last-Freigabe-Eingänge des Unterbrechungs-Registers 800 nehmen entsprechende Last-Freigabe-Signale UPDATE_IRQ[31:0] auf. Das Unterbrechungs-Register 800 wird an der positiven Flanke des PCI-Taktsignals CLK getaktet.The interrupt register 800 receives input signals D_INTR_REG [31: 0] at their corresponding thirty-two inputs. The load enable inputs of the interrupt register 800 pick up appropriate load enable signals UPDATE_IRQ [31: 0]. The interrupt register 800 is clocked on the positive edge of the PCI clock signal CLK.

Für die Zwecke, ein Protokoll über die Status-Signale STATUS[5:0] nach jeder Abtastung beizubehalten, liefert ein Mehrfach-Bit, D-Typ-Flip-Flop 836 Status-Signale SCAN_SW[5:0]. Der Lösch-Eingang des Flip-Flops 836 nimmt das Reset-Signal RST auf, und das Flip-Flop 836 wird an der positiven Flanke des Taktsignals CLK getaktet. Der Eingang des Flip-Flops 836 ist mit dem Ausgang eines Mehrfach-Bit-ODER-Gates 850 verbunden, das einen Eingang mit dem Ausgang eines Multi-Bit-UND-Gates 846 verbunden und einen Eingang mit dem Ausgang eines Multi-Bit-UND-Gates 847 verbunden besitzt. Ein Eingang des UND-Gates 846 nimmt sechs Bit-Freigabe-Signale BIT_ENABLE[5:0] auf (nachfolgend beschrieben) und der andere Eingang des UND-Gates 846 nimmt das Seri ell-Daten-Signal NEW_CSID auf. Ein Eingang des UND-Gates 847 nimmt invertierte Bit-Freigabe-Signale BIT_ENABLE[5:0] auf, und der andere Eingang des UND-Gates 847 nimmt die Signale SCAN_SW[5:0] auf.For purposes of keeping a log of status signals STATUS [5: 0] after each scan, provides a multi-bit, D-type flip-flop 836 Status signals SCAN_SW [5: 0]. The clear input of the flip-flop 836 picks up the reset signal RST, and the flip-flop 836 is clocked on the positive edge of the clock signal CLK. The entrance of the flip-flops 836 is at the output of a multi-bit OR gate 850 connected to an input to the output of a multi-bit AND gate 846 and an input to the output of a multi-bit AND gate 847 has connected. An input of the AND gate 846 picks up six bit enable signals BIT_ENABLE [5: 0] (described below) and the other input of the AND gate 846 picks up the serial data signal NEW_CSID. An input of the AND gate 847 receives inverted bit enable signals BIT_ENABLE [5: 0], and the other input of the AND gate 847 picks up the signals SCAN_SW [5: 0].

Nur eines der Bit-Freigabe-Signale BIT_ENABLE[5:0] wird zu einem Zeitpunkt aufgestellt (wenn die Abtast-Zustand-Maschine 840 abtastet), und das aufgestellte Bit zeigt an, welches eine der entsprechenden Status-Signale STATUS[31:0] durch das Signal NEW_CSID dargestellt wird. Demzufolge werden, wenn die Abtast-Zustand-Maschine 840 abtastet, und zwar an jeder positiven Flanke des Taktsignals CLK, die Signale SCAN_SW[5:0] aktualisiert.Only one of the bit enable signals BIT_ENABLE [5: 0] is asserted at a time (when the scan state machine 840 sampling), and the established bit indicates which one of the corresponding status signals STATUS [31: 0] is represented by the signal NEW_CSID. Consequently, when the scan state machine 840 samples, on each positive edge of the clock signal CLK, the signals SCAN_SW [5: 0] updated.

Die Bit-Freigabe-Signale BIT_ENABLE[31:0] werden durch den Ausgang eines Mehrfach-Bit-Multiplexers 832 geliefert, der die Bits BIT_ACTIVE[31:0] an seinem einen Eingang empfängt. Der Null-Eingang des Multiplexers 832 empfängt ein Zweiunddreißig-Bit-Signal, das für eine logische Null indikativ ist. Der Auswahl-Eingang des Multiplexers 832 empfängt das Signal SHIFT_ENABLE.The bit enable signals BIT_ENABLE [31: 0] are passed through the output of a multi-bit multiplexer 832 which receives the bits BIT_ACTIVE [31: 0] at its one input. The zero input of the multiplexer 832 receives a thirty-two bit signal indicative of a logical zero. The selection input of the multiplexer 832 receives the signal SHIFT_ENABLE.

Zu Zwecken einer Erfassung einer Änderung in den Status-Signalen STATUS[5:0], liefert ein Multi-Bit-, Exklusiv-Oder-(XOR)-Gate 848 Umschalt-Änderungs-Signale SW_CHG[5:0]. Wenn eines der Signale SW_CHG[5:0] aufgestellt ist oder hoch ist, änderte sich die logische Spannung des entsprechenden Status-Signals STATUS[5:0] während aufeinanderfolgender Abtastungen. Ein Eingang des XOR-Gates 848 ist mit dem Eingang des Flip-Flops 836 verbunden, und der andere Eingang des XOR-Gates 848 empfängt die Signale SCAN_SW[5:0].For purposes of detecting a change in the status signals STATUS [5: 0], provides a multi-bit, exclusive-OR (XOR) gate 848 Shift change signals SW_CHG [5: 0]. When one of the signals SW_CHG [5: 0] is asserted or high, the logic voltage of the corresponding status signal STATUS [5: 0] changed during successive scans. An input of the XOR gate 848 is with the input of the flip-flop 836 connected, and the other input of the XOR gate 848 receives the signals SCAN_SW [5: 0].

Wie in 31D dargestellt ist, besitzt, zu Zwecken eines Anzeigens, wenn der logische Spannungs-Pegel eines ausgewählten Status-Signals STATUS[5:0] bei einem logischen Spannungs-Pegel für mindestens die Dauer des Debounce-Verzögerungs-Intervalls verblieben war, die Abtast-Eingangs-Logik 804 sechs Signale LSWITCH[5:0]. Der nicht-invertierende Eingang eines Flip-Flops 900 vom D-Typ liefert das Signal LSWITCH[5] an seinem nicht-invertierenden Ausgang. Das Signal LSWITCH[5] wird aufgestellt oder auf hoch angesteuert, um den vorstehend beschriebenen Zustand anzuzeigen, und wird ansonsten weggenommen. Das Flip-Flop 900 wird an der positiven Flanke des Taktsignals CLK getaktet, und der Lösch-Eingang des Flip-Flops 900 nimmt das RST-Signal auf.As in 31D For purposes of indication, when the logic voltage level of a selected status signal STATUS [5: 0] has remained at a logic voltage level for at least the duration of the debounce delay interval, it has the scan input -Logic 804 six signals LSWITCH [5: 0]. The non-inverting input of a flip-flop 900 the D-type signal is provided by LSWITCH [5] at its non-inverting output. The signal LSWITCH [5] is asserted or driven high to indicate the condition described above, and is otherwise removed. The flip-flop 900 is clocked on the positive edge of the clock signal CLK, and the clear input of the flip-flop 900 picks up the RST signal.

Der Eingang des Flip-Flops 900 ist mit dem Ausgang eines Multiplexers 902 verbunden, der ein D_LSWITCH[5] Signal liefert. Der Auswahl-Eingang des Multiplexers 902 ist mit dem Ausgang eines UND-Gates 903 verbunden, der ein MAX5 Signal und ein SCAN_END Signal aufnimmt. Das SCAN_END Signal zeigt, wenn es aufgestellt ist, an, dass die Abtast-Zustand-Maschine 840 deren momentane Abtastung abgeschlossen hat. Fünf Signale (MAX5, MAX4, MAX3, MAX2, MAX1 und MAX0) zeigen an, ob das entsprechende Status-Signal STATUS[5], STATUS[4], STATUS[3], STATUS[2], STATUS[1] oder STATUS[0], jeweils, auf demselben, logischen Spannungs-Niveau für mindestens die Dauer des Debounce-Zeit-Intervalls verblieben ist. Der Null-Eingang des Multiplexers 902 empfängt das Signal LSWITCH[5], und der eine Eingang des Multiplexers 902 empfängt das Signal SCAN_SW[5]. Das Signal SCAN_END wird durch den Ausgang eines UND-Gates 851 geliefert (31B). Das UND-Gate 851 empfängt ein Signal STOP SCAN und ein Signal SCAN_DONE. Das Signal STOP_SCAN wird aufgestellt, oder auf hoch angesteuert, wenn Zustände zum Beenden des Abtastens durch die Abtast-Zustand-Maschine 840 vorhanden sind, wie weiter nachfolgend beschrieben ist. Das Signal SCAN_END ist eine gepulste Version (für einen Zyklus des CLK-Signals) des Signals STOP_SCAN. Die Signale LSWITCH[4]–LSWITCH[0] und D_LSWITCH[4]–D_LSWITCH[0] werden in einer ähnlichen Weise aus den jeweiligen SCAN_SW[4]–SCAN_SW[0] Signalen und den jeweiligen Signalen MAX4–MAX0 erzeugt.The entrance of the flip-flops 900 is with the output of a multiplexer 902 which provides a D_LSWITCH [5] signal. The selection input of the multiplexer 902 is connected to the output of an AND gate 903 connected receiving a MAX5 signal and a SCAN_END signal. The SCAN_END signal, when asserted, indicates that the scan state machine 840 whose current scan has completed. Five signals (MAX5, MAX4, MAX3, MAX2, MAX1 and MAX0) indicate whether the corresponding status signal is STATUS [5], STATUS [4], STATUS [3], STATUS [2], STATUS [1] or STATUS [0], respectively, remains at the same logical voltage level for at least the duration of the debounce time interval. The zero input of the multiplexer 902 receives the signal LSWITCH [5], and the one input of the multiplexer 902 receives the signal SCAN_SW [5]. The signal SCAN_END is passed through the output of an AND gate 851 delivered ( 31B ). The AND gate 851 receives a signal STOP SCAN and a signal SCAN_DONE. The STOP_SCAN signal is asserted or driven high when conditions for stopping sampling by the scan state machine 840 are present, as described further below. The signal SCAN_END is a pulsed version (for one cycle of the CLK signal) of the signal STOP_SCAN. The signals LSWITCH [4] -LSWITCH [0] and D_LSWITCH [4] -D_LSWITCH [0] are generated in a similar manner from the respective SCAN_SW [4] -SCAN_SW [0] signals and the respective signals MAX4-MAX0.

Zu Zwecken einer Aktualisierung wird der logische Spannungspegel der Status-Signale STATUS[31:6] als diese Signale eingetastet, ein Multi-Bit-D-Typ-Flip-Flop 905 (31D) liefert sechsundzwanzig Signale SCAN_NSW[31:6]. Eines der Signale SCAN_NSW[31:6] wird aufgestellt, oder auf hoch angesteuert, um diesen Zustand anzuzeigen, und wird ansonsten weggenommen. Das Flip-Flop 905 wird an der positiven Flanke des Taktsignals CLK getaktet und der Löscheingang des Flip-Flops 905 nimmt das RST-Signal auf.For update purposes, the logic voltage level of the status signals STATUS [31: 6] is keyed in as these signals, a multi-bit D-type flip-flop 905 ( 31D ) provides twenty-six signals SCAN_NSW [31: 6]. One of the signals SCAN_NSW [31: 6] is asserted, or driven high to indicate this condition, and is otherwise removed. The flip-flop 905 is clocked on the positive edge of the clock signal CLK and the clear input of the flip-flop 905 picks up the RST signal.

Der Eingang des Flip-Flops 905 ist mit dem Ausgang eines Multi-Bit-Multiplexers 906 verbunden. Der Auswahl-Eingang des Multiplexers 906 nimmt ein invertiertes CHECK_SWITCH_ONLY Signal auf. Das CHECK_SWITCH_ONLY Signal wird aufgestellt, oder auf hoch angesteuert, wenn die Abtast-Zustand-Maschine 850 nur die Status-Signale STATUS[5:0] oder die Status-Signale STATUS[127:32] abtastet (d. h. Änderungen in den Signalen STATUS[31:6] ignorieren), und sie ansonsten wegnimmt. Der Null-Eingang des Multiplexers 906 empfängt die Signale SCAN NSW[31:6], und der eine Eingang des Multiplexers 906 ist mit dem Ausgang eines Multi-Bit-ODER-Gates 907 verbun den. Ein Eingang des ODER-Gates 907 ist mit dem Ausgang eines Multi-Bit-UND-Gates 908 verbunden, und der andere Eingang des ODER-Gates 907 ist mit dem Ausgang eines Multi-Bit-UND-Gates 872 verbunden.The entrance of the flip-flops 905 is with the output of a multi-bit multiplexer 906 connected. The selection input of the multiplexer 906 picks up an inverted CHECK_SWITCH_ONLY signal. The CHECK_SWITCH_ONLY signal is asserted or driven high when the scan state machine 850 only samples the status signals STATUS [5: 0] or the status signals STATUS [127: 32] (ie ignores changes in the signals STATUS [31: 6]) and otherwise removes them. The zero input of the multiplexer 906 receives the signals SCAN NSW [31: 6], and the one input of the multiplexer 906 is at the output of a multi-bit OR gate 907 connected. An input of the OR gate 907 is connected to the output of a multi-bit AND gate 908 connected, and the other input of the OR gate 907 is connected to the output of a multi-bit AND gate 872 connected.

Ein Eingang des UND-Gates 908 empfängt die Signale BIT_ENABLE[31:6]. Der andere Eingang des UND-Gates 908 ist mit dem Ausgang eines Multi-Bit-Multiplexers 909 verbunden. Falls das NEW_CSID Signal aufgestellt ist, oder hoch ist, liefert der Multiplexer 909 ein Signal mit sechsundzwanzig Bits gleich zu „h3FFFFFF". Ansonsten liefert der Multiplexer ein Signal mit sechsundzwanzig Bits gleich zu „0". Ein Eingang des UND-Gates 872 ist mit dem invertierten Ausgang des UND-Gates 908 verbunden und der andere Eingang des UND-Gates 872 nimmt die Signale SCAN_NSW[31:6] auf.An input of the AND gate 908 receives the signals BIT_ENABLE [31: 6]. The other input of the AND gate 908 is with the output of a multi-bit multiplexer 909 connected. If the NEW_CSID signal is asserted, or high, the multiplexer will deliver 909 Otherwise, the multiplexer will supply a signal of twenty-six bits equal to "0". An input of the AND gate 872 is with the inverted output of the AND gate 908 connected and the other input of the AND gate 872 picks up the signals SCAN_NSW [31: 6].

Zu Zwecken eines Speicherns des logischen Spannungs-Pegels der Status-Signale STATUS[31:6] nach jeder Abtastung liefert ein Multi-Bit-D-Typ-Flip-Flop 871 sechsundzwanzig Signale LNON_SW[31:6]. Eines der Signale LNON_SW[31:6] wird aufgestellt, oder auf hoch gesetzt, um diesen Zustand anzuzeigen, und wird ansonsten weggenommen. Das Flip-Flop 871 wird auf der positiven Flanke des Taktsignals CLK getaktet, und der Lösch-Eingang des Flip-Flops 871 empfängt das RST-Signal.For purposes of storing the logic voltage level of the status signals STATUS [31: 6] after each scan provides a multi-bit D-type flip-flop 871 twenty-six signals LNON_SW [31: 6]. One of the signals LNON_SW [31: 6] is asserted, or set high to indicate this condition, and is otherwise removed. The flip-flop 871 is clocked on the positive edge of the clock signal CLK, and the clear input of the flip-flop 871 receives the RST signal.

Der Eingang des Flip-Flops 871 ist mit dem Ausgang eines Multi-Bit-Multiplexers 870 verbunden, der die Signale D_LNON_SW[31:6] liefert. Der Auswahl-Eingang des Multiplexers 870 empfängt das Signal SCAN_END. Der Null-Eingang des Multiplexers 870 empfängt die Signale LNON_SW[31:6], und der eine Eingang des Multiplexers 807 empfängt die Signale SCAN_NSW[31:6].The entrance of the flip-flops 871 is with the output of a multi-bit multiplexer 870 which supplies the signals D_LNON_SW [31: 6]. The selection input of the multiplexer 870 receives the signal SCAN_END. The zero input of the multiplexer 870 receives the signals LNON_SW [31: 6], and the one input of the multiplexer 807 receives the signals SCAN_NSW [31: 6].

Wie in 31B dargestellt ist, umfasst, zu Zwecken eines Erzeugens der MAX0, MAX1, MAX2, MAX3, MAX4 und MAX5 Signale, die Seriell-Eingangs-Logik 804 sechs Zähler 831af, jeweils, von einem gemeinsamen Design 831. Jeder Zähler 831 wird initialisiert (auf einen vorbestimmten Zähl-Wert), wenn ein UND-Gate 892 seinen Ausgang aufstellt, oder auf hoch ansteuert. Für den Zähler 831a empfängt das UND-Gate 892 das Signal BIT_ENCABLE[0], das Signal SW_CHG[0] und ein invertiertes Signal QUICK_FILTER. Das Signal QUICK_FILTER kann, wenn es aufgestellt ist, oder hoch ist, dazu verwendet werden, das Debounce-Zeit-Intervall zu umgehen. Das QUICK_FILTER Signal wird normalerweise weggenommen oder auf niedrig gesetzt. Der Takt-Eingang des Zählers 831 ist mit dem Ausgang eines UND-Gates 893 verbunden. Für den Zähler 831a empfängt das UND-Gate 893 das BIT_ENABLE[0] Signal, das invertierte SW_CHG[0] Si gnal, das invertierte GETTING_BYTE Signal und das invertierte MAX0 Signal. Deshalb wird, für den Zähler 831a, wenn sich einmal die logische Spannung des Status-Signals STATUS[0] ändert, zu jedem Zeitpunkt, zu dem die Seriell-Abtast-Logik 804 das Status-Signal STATUS[0] abtastet, der Zähler 831a erhöht. Wenn der Zähler 831a seinen maximalen Wert erreicht, wird das Signal MAX0 aufgestellt, was anzeigt, dass das Debounce-Zeit-Intervall abgelaufen ist. Falls sich die logische Spannung des Status-Signals STATUS[0] während der Zählung ändert, wird der Zähler 831a reinitialisiert, und die Zählung beginnt erneut. Die anderen Zähler 831bf arbeiten in einer ähnlich Weise in Bezug auf deren entsprechende Status-Signale STATUS[5:1].As in 31B for purposes of generating the MAX0, MAX1, MAX2, MAX3, MAX4 and MAX5 signals, the serial input logic 804 six counters 831a - f , respectively, of a common design 831 , Every counter 831 is initialized (to a predetermined count value) when an AND gate 892 setting up its output, or heading for high. For the meter 831a receives the AND gate 892 the signal BIT_ENCABLE [0], the signal SW_CHG [0] and an inverted signal QUICK_FILTER. The signal QUICK_FILTER, if set up or high, can be used to bypass the debounce time interval. The QUICK_FILTER signal is normally removed or set low. The clock input of the counter 831 is connected to the output of an AND gate 893 connected. For the meter 831a receives the AND gate 893 the BIT_ENABLE [0] signal, the inverted SW_CHG [0] signal, the inverted GETTING_BYTE signal, and the inverted MAX0 signal. Therefore, for the counter 831a once the logic voltage of the status signal STATUS [0] changes, at any time when the serial scan logic changes 804 the status signal STATUS [0] is sampling, the counter 831a elevated. When the counter 831a reaches its maximum value, the signal MAX0 is asserted, indicating that the debounce time interval has expired. If the logic voltage of the status signal STATUS [0] changes during counting, the counter becomes 831a reinitialized, and counting starts again. The other counters 831b - f operate in a similar manner with respect to their corresponding status signals STATUS [5: 1].

Das HOLD_OFF Signal instruiert, wenn es aufgestellt ist, einen der Zeitgeber 806, ein vorbestimmtes Langsam-Abtast-Intervall zu messen, das die serielle Abtast-Zustand-Maschine 840 in den Langsam-Abtast-Mode versetzt. Wenn der Zeitgeber 806 eine Messung dieses Verzögerungs-Intervalls abschließt, stellt der Zeitgeber 806 ein FTR_TIMEOUT Signal auf, oder steuert es auf hoch an, das ansonsten weggenommen wird, oder negiert wird. Das Produkt dieses Langsam-Abtast-Intervalls und der Zahl von Zählungen für den Zähler 831, um seinen maximalen Wert zu erreichen, ist gleich zu dem Debounce-Zeit-Intervall (8 ms).The HOLD_OFF signal instructs one of the timers when it is set up 806 to measure a predetermined slow-scan interval comprising the serial scan state machine 840 placed in the slow-scan mode. If the timer 806 completes a measurement of this delay interval sets the timer 806 an FTR_TIMEOUT signal, or drives it high, which is otherwise removed, or negated. The product of this slow sample interval and the number of counts for the counter 831 to reach its maximum value is equal to the debounce time interval (8 ms).

Das HOLD_OFF Signal wird durch den Ausgang eines JK-Flip-Flops 885 geliefert. Das Flip-Flop 885 wird an der positiven Flanke des CLK Signals getaktet, und der Lösch-Eingang des Flip-Flops 885 empfängt das RST-Signal. Der J-Eingang ist mit dem Ausgang eines UND-Gates 883 verbunden und der K-Eingang ist mit dem Ausgang eines UND-Gates 884 verbunden. Ein Eingang des UND-Gates 884 ist mit dem Ausgang eines Flip-Flops 896 vom JK-Typ verbunden, und der andere Eingang des UND-Gates 893 empfängt das SCAN_END Signal. Ein Eingang des UND-Gates 884 ist mit dem invertierten Ausgang des UND-Gates 883 verbunden, ein Eingang des UND-Gates 884 empfängt das FTR_TIMEOUT Signal, und ein anderer Eingang des UND-Gates 884 empfängt ein SCAN_IN_IDLE Signal, das aufgestellt wird, wenn sich die Abtast-Zustand-Maschine 840 in deren IDLE Zustand befindet, wie dies weiter nachfolgend beschrieben ist.The HOLD_OFF signal is through the output of a JK flip-flop 885 delivered. The flip-flop 885 is clocked on the positive edge of the CLK signal, and the clear input of the flip-flop 885 receives the RST signal. The J input is connected to the output of an AND gate 883 connected and the K input is connected to the output of an AND gate 884 connected. An input of the AND gate 884 is with the output of a flip-flop 896 connected by the JK-type, and the other input of the AND-gate 893 receives the SCAN_END signal. An input of the AND gate 884 is with the inverted output of the AND gate 883 connected, an input of the AND gate 884 receives the FTR_TIMEOUT signal, and another input of the AND gate 884 receives a SCAN_IN_IDLE signal which is asserted when the scan state machine 840 in its IDLE state, as described further below.

Das Flip-Flop 895 wird an der positiven Flanke des CLK Signals getaktet und der Lösch-Eingang des Flip-Flops 895 empfängt das RST-Signal. Der J-Eingang ist mit dem Ausgang eines NAND-Gates 894 verbunden, der die MAX0, MAX1, MAX2, MAX3, MAX4 und MAX5 Signale aufnimmt. Der K-Eingang ist mit dem Ausgang eines UND-Gates 826 verbunden, der mit dem invertierten J-Eingang des Flip-Flops 895 verbunden ist, und empfängt ein invertiertes SCAN_IN_PROGRESS Signal, das dann aufgestellt wird, wenn die Abtast-Zustand-Maschine 840 die Status-Signale STATUS[31:0] abtastet.The flip-flop 895 is clocked on the positive edge of the CLK signal and the clear input of the flip-flop 895 receives the RST signal. The J input is at the output of a NAND gate 894 which receives the MAX0, MAX1, MAX2, MAX3, MAX4 and MAX5 signals. The K input is connected to the output of an AND gate 826 connected to the inverted J input of the flip-flop 895 and receives an inverted SCAN_IN_PROGRESS signal which is asserted when the scan state machine 840 the status signals STATUS [31: 0] is scanned.

Zu Zwecken einer Erzeugung des CHECK_SWITCH_ONLY Signals umfasst die Seriell-Abtast-Eingangs-Logik 804 ein Flip-Flop 864 vom JK-Typ, das das CHECK_SWITCH_ONLY Signal an dem nicht-invertierendem Ausgang liefert, und wird an der positiven Flanke des CLK-Signals getaktet. Der Lösch-Eingang des Flip-Flops 864 empfängt das RST-Signal, und der J-Eingang des Flip-Flops 864 empfängt ein DEBOUNCE Signal, das, wenn es aufgestellt, oder auf hoch angesteuert, ist, anzeigt, dass sich einer des logischen Spannungs-Pegels eines oder mehrere der Status-Signale STATUS[31:6] geändert hat. Der K-Eingang des Flip-Flops 864 ist mit dem Ausgang eines UND-Gates 865 verbunden. Ein Eingang des UND-Gates 865 nimmt das invertierte DEBOUNCE Signal auf und ein Eingang des UND-Gates 865 nimmt das SCAN_IN_IDLE Signal auf.For purposes of generating the CHECK_SWITCH_ONLY signal, the serial scan input logic includes 804 a flip-flop 864 of JK type providing the CHECK_SWITCH_ONLY signal at the non-inverting output, and is clocked on the positive edge of the CLK signal. The clear input of the flip-flop 864 receives the RST signal, and the J input of the flip-flop 864 receives a DEBOUNCE signal which, when asserted or driven high, indicates that one of the logic voltage levels has changed one or more of the status signals STATUS [31: 6]. The K input of the flip-flop 864 is connected to the output of an AND gate 865 connected. An input of the AND gate 865 picks up the inverted DEBOUNCE signal and an input of the AND gate 865 picks up the SCAN_IN_IDLE signal.

Wie in 31C dargestellt ist, wird das Debounce-Signal DEBOUNCE durch den nicht-invertierenden Ausgang eines Flip-Flops 860 vom JK-Typ geliefert. Das Flip-Flop 860 wird durch die positive Flanke des Taktsignals CLK getaktet, und der Lösch-Eingang des Flip-Flops 860 empfängt das Reset-Signal RST. Der J-Eingang des Flip-Flops 860 empfängt ein Signal CHANGE_ON_INPUT. Das Signal CHANGE_ON_INPUT wird aufgestellt, oder auf hoch angesteuert, wenn eine Änderung in einem der Status-Signale STATUS[31:6] an dem Ende einer Abtastung durch die Seriell-Eingangs-Logik 804 erfasst wird, und wird ansonsten weggenommen. Der K-Eingang ist mit dem Ausgang eines UND-Gates 861 verbunden, das ein DB_TIMEOUT Signal an einem seiner Eingänge aufnimmt. Der andere Eingang des UND-Gates 861 nimmt das invertierte CHANGE_ON_INPUT Signal auf. Das DB_TIMEOUT Signal wird durch die Zeitgeber 106 für einen Zyklus des CLK-Signals aufgestellt, wenn die Debounce-Zeit-Verzögerung (initiiert durch das Aufstellen des DEBOUNCE Signals) abgelaufen ist. Das Aufstellen des DB_TIMEOUT Signals negiert das DEBOUNCE Signal an der nächsten, positiven Flanke des CLK-Signals.As in 31C is shown, the debounce signal DEBOUNCE by the non-inverting output of a flip-flop 860 supplied by the JK-type. The flip-flop 860 is clocked by the positive edge of the clock signal CLK, and the clear input of the flip-flop 860 receives the reset signal RST. The J input of the flip-flop 860 receives a CHANGE_ON_INPUT signal. The signal CHANGE_ON_INPUT is asserted or driven high when a change in one of the status signals STATUS [31: 6] at the end of a scan by the serial input logic 804 is captured, and is otherwise taken away. The K input is connected to the output of an AND gate 861 connected, which receives a DB_TIMEOUT signal at one of its inputs. The other input of the AND gate 861 picks up the inverted CHANGE_ON_INPUT signal. The DB_TIMEOUT signal is given by the timers 106 is asserted for one cycle of the CLK signal when the debounce time delay (initiated by the DEBOUNCE signal being asserted) has expired. Setting up the DB_TIMEOUT signal negates the DEBOUNCE signal on the next positive edge of the CLK signal.

Das CHANGE_ON_INPUT Signal wird durch den nicht-invertierenden Ausgang eines Flip-Flops 866 vom JK-Typ geliefert, das an der positiven Flanke des CLK-Signals getaktet wird. Der Lösch-Eingang des Flip-Flops empfängt das RST-Signal. Der J-Eingang des Flip-Flops 866 ist mit dem Ausgang eines UND-Gates 869 verbunden, das das SCAN_END Signal aufnimmt, und der andere Eingang des UND-Gates 869 ist mit dem Ausgang eines ODER-Gates 867 verbunden. Das ODER-Gate 867 verknüpft logisch ODER-mäßig alle eines Satzes von NSW_CHG[31:6] Signalen. Die Bit-Positionen der Signale NSW_CHG[31:6] entsprechen den Bit-Positionen der Status-Signale STATUS[31:6] und zeigen an, durch deren Aufstellen, ob sich das entsprechende Status-Signal STATUS[31:6] nach der letzten Abtastung geändert hat. Das UND-Gate 869 nimmt weiterhin das SCAN_END Signal auf. Der K-Eingang des Flip-Flops 866 ist mit dem Ausgang eines UND-Gates 868 verbunden, der das invertierte SCAN_IN_PROGRESS Signal und den invertierten Ausgang des UND-Gates 869 aufnimmt. Die Signale NSW_CHG[31:6] werden durch den Ausgang eines Multi-Bit-XOR-Gates 862 geliefert, das die Signale D_LNON_SW[31:6] und LNON_SW[31:6] aufnimmt.The CHANGE_ON_INPUT signal is through the non-inverting output of a flip-flop 866 of the JK type clocked on the positive edge of the CLK signal. The clear input of the flip-flop receives the RST signal. The J input of the flip-flop 866 is connected to the output of an AND gate 869 connected, which receives the SCAN_END signal, and the other input of the AND gate 869 is with the output of an OR gate 867 connected. The OR gate 867 logically ORs all of a set of NSW_CHG [31: 6] signals. The bit positions of the signals NSW_CHG [31: 6] correspond to the bit positions of the status signals STATUS [31: 6] and indicate, by setting them up, whether the corresponding status signal STATUS [31: 6] is after the last scan has changed. The AND gate 869 continues to receive the SCAN_END signal. The K input of the flip-flop 866 is connected to the output of an AND gate 868 connected, the inverted SCAN_IN_PROGRESS signal and the inverted output of the AND gate 869 receives. The signals NSW_CHG [31: 6] are passed through the output of a multi-bit XOR gate 862 which receives the signals D_LNON_SW [31: 6] and LNON_SW [31: 6].

Der nicht-invertierende Ausgang eines Multi-Bit-D-Typ-Flip-Flops 912 liefert Bits SI_DATA[7:0] für das Seriell-Daten-Register 815. Der Lösch-Eingang des Flip-Flops 912 empfängt das Signal RST und das Flip-Flop 912 wird an der positiven Flanke des CLK-Signals getaktet. Der Signal-Eingang des Flip-Flops 912 ist mit dem Ausgang eines Multi-Bit-Multiplexers 916 verbunden. Der Auswahl-Eingang des Multiplexers 916 ist mit dem Ausgang eines UND-Gates 914 verbunden, und der Null-Eingang des Multiplexers 916 nimmt die Bits SI_DATA[7:0] auf. Das UND-Gate 914 nimmt die Signale GETTING_BYTE und SHIFT_ENABLE auf. Demzufolge werden, wenn die Seriell-Abtast-Logik 804 nicht ein angefordertes Byte der Status-Signale STATUS[47:0] verschiebt, die Werte der Bits SI_DATA[7:0] bewahrt.The non-inverting output of a multi-bit D-type flip-flop 912 returns bits SI_DATA [7: 0] for the serial data register 815 , The clear input of the flip-flop 912 receives the signal RST and the flip-flop 912 is clocked on the positive edge of the CLK signal. The signal input of the flip-flop 912 is with the output of a multi-bit multiplexer 916 connected. The selection input of the multiplexer 916 is connected to the output of an AND gate 914 connected, and the zero input of the multiplexer 916 takes the bits SI_DATA [7: 0]. The AND gate 914 picks up the signals GETTING_BYTE and SHIFT_ENABLE. As a result, when the serial scan logic 804 does not shift a requested byte of status signals STATUS [47: 0], which preserves the values of bits SI_DATA [7: 0].

Der eine Eingang des Multiplexers 916 ist mit dem Ausgang eines Multi-Bit-Multiplexers 910 verbunden. Der eine Eingang des Multiplexers 910 ist mit dem Ausgang eines Multi-Bit-ODER-Gates 911 verbunden, und der Null-Eingang des Multiplexers ist mit dem Ausgang eines Multi-Bit-UND-Gates 915 verbunden. Der Auswahl-Eingang des Multiplexers 910 empfängt das Signal NEW_CSID.The one input of the multiplexer 916 is with the output of a multi-bit multiplexer 910 connected. The one input of the multiplexer 910 is at the output of a multi-bit OR gate 911 connected, and the zero input of the multiplexer is connected to the output of a multi-bit AND gate 915 connected. The selection input of the multiplexer 910 receives the signal NEW_CSID.

Ein Eingang des UND-Gates 915 empfängt die Bits SI_DATA[7:0], und ein invertierender Eingang des UND-Gates 915 ist mit dem Ausgang eines 3 × 8 Decodierers 913 verbunden. Der Decodierer 913 empfängt das Signal BIT[2:0]. Ein Eingang des ODER-Gates 911 empfängt die Bits SI_DATA[7:0], und der andere Eingang des ODER-Gates 911 empfängt den Ausgang des Decodierers 913.An input of the AND gate 915 receives the bits SI_DATA [7: 0], and an inverting input of the AND gate 915 is with the output of a 3 × 8 decoder 913 connected. The decoder 913 receives the signal BIT [2: 0]. An input of the OR gate 911 receives the bits SI_DATA [7: 0], and the other input of the OR gate 911 receives the output of the decoder 913 ,

Die Seriell-Eingangs-Logik 804 liefert fünf Signale RST_SWITCH[5:0] (entsprechend den Bit-Positionenen der Status-Signale STATUS[5:0]) zu der EIN/AUS-Steuer-Logik 820, was, durch deren Aufstellen, anzeigt, ob der entsprechende Schlitz 36af heruntergefahren werden sollte. Die EIN/AUS-Steuer-Logik 820 zeigt an, wenn der Schlitz 36 (angezeigt durch die RST_SWIITCH[5:0] Signale) durch das darauffolgende Einstellen eines von fünf Signalen CLR_SWITCH[5:0] heruntergefahren worden ist, deren Bit-Positionen den Signalen RST_SWITCH[5:0] entsprechen. Nach Empfangen der Anzeige, dass der Schlitz bzw. Einsteckplatz 36 heruntergefahren worden ist, nimmt die serielle Logik 804 dann das entsprechende RST_SWITCH[5:0] Signal zurück.The serial input logic 804 supplies five signals RST_SWITCH [5: 0] (corresponding to the bit positions of the status signals STATUS [5: 0]) to the ON / OFF control logic 820 , which, by setting it up, indicates whether the corresponding slot 36a - f should be shut down. The ON / OFF control logic 820 indicates if the slot 36 (indicated by the RST_SWIITCH [5: 0] signals) has been shut down by the subsequent setting of one of five signals CLR_SWITCH [5: 0] whose bit positions correspond to the signals RST_SWITCH [5: 0]. Upon receiving the indication that the slot or slot 36 has shut down, takes the serial logic 804 then the corresponding RST_SWITCH [5: 0] signal back.

Die Signale RST_SWITCH[5:0] werden durch den nicht-invertierenden Ausgang eines Multi-Bit-Flip-Flops 891 vom D-Typ (31B) geliefert. Der Lösch-Eingang des Flip-Flops 891 empfängt das Reset-Signal RST und das Flip-Flop 891 wird an der positiven Flanke des Taktsignals CLK getaktet. Der Eingang des Flip-Flops 891 ist mit dem Ausgang eines Multi-Bit-ODER-Gates 857 verbunden, der einen Eingang mit dem Ausgang eines Multi-Bit-UND-Gates 859 verbunden besitzt und einen Eingang mit dem Ausgang eines Multi-Bit-UND-Gates 855 verbunden besitzt. Ein Eingang des UND-Gates 859 ist mit dem Ausgang eines Multiplexers 853 verbunden, und der andere Eingang des UND-Gates 859 empfängt verriegelte Schlitz-Freigabe-Signale LSLOT_EN[5:0], die anzeigen, durch deren Aufstellen, ob der entsprechende Schlitz bzw. Einsteckplatz 36af hochgefahren ist. Ein Eingang des UND-Gates 855 nimmt die Signale CLR_SWITCH[5:0] auf. Ein anderer Eingang des UND-Gates 855 nimmt die Signale RST_SWITCH[5:0] auf. Ein anderer Eingang des UND-Gates 855 ist mit dem invertierten Ausgang des Multiplexers 853 verbunden.The signals RST_SWITCH [5: 0] are passed through the non-inverting output of a multi-bit flip-flop 891 D type ( 31B ) delivered. The clear input of the flip-flop 891 receives the reset signal RST and the flip-flop 891 is clocked on the positive edge of the clock signal CLK. The entrance of the flip-flops 891 is at the output of a multi-bit OR gate 857 connected to an input to the output of a multi-bit AND gate 859 has an input and the output of a multi-bit AND gate 855 has connected. An input of the AND gate 859 is with the output of a multiplexer 853 connected, and the other input of the AND gate 859 receives locked slot enable signals LSLOT_EN [5: 0], which indicate, by setting it up, whether the corresponding slot 36a - f has started up. An input of the AND gate 855 picks up the signals CLR_SWITCH [5: 0]. Another input of the AND gate 855 picks up the signals RST_SWITCH [5: 0]. Another input of the AND gate 855 is with the inverted output of the multiplexer 853 connected.

Der Null-Eingang des Multiplexers 853 empfängt ein Sechs-Bit-Signal, das für Null indikativ ist. Der eine Eingang des Multiplexers 853 ist mit dem Ausgang eines Multi-Bit-UND-Gates 849 verbunden. Ein Eingang des UND-Gates 849 empfängt die Signale D_LSWITCH[5:0], und der andere Eingang des UND-Gates 849 empfängt die invertierten Signale L_SWITCH[5:0]. Der Auswahl-Eingang des Multiplexers 853 empfängt das SCAN_END Signal.The zero input of the multiplexer 853 receives a six-bit signal that is indicative of zero. The one input of the multiplexer 853 is connected to the output of a multi-bit AND gate 849 connected. An input of the AND gate 849 receives the signals D_LSWITCH [5: 0], and the other input of the AND gate 849 receives the inverted signals L_SWITCH [5: 0]. The selection input of the multiplexer 853 receives the SCAN_END signal.

Zu Zwecken einer Erzeugung des SI_INTR# Signals umfasst die Seriell-Abtast-Logik 804 ein Flip-Flop 882 vom D-Typ, das das Seriell-Unterbrechungs-Signal SI_INTR# an seinem invertierenden Ausgang liefert. Das Flip-Flop 882 wird an der positiven Flanke des CLK-Signals getaktet, und der Löscheingang des Flip-Flops 882 empfängt das RST-Signal. Der Eingang des Flip-Flops 882 ist mit dem Ausgang eines ODER-Gates 881 verbunden, der zweiunddreißig anhängige Unterbrechungs-Signale PENDING_IRQ[31:0] aufnimmt, die, durch deren Aufstellen, oder Ansteuern auf hoch, anzeigen, ob eine Unterbrechung für das entsprechende eine der Status-Signale STATUS[31:0] anhängig ist. Die Signale PENDING_IRQ[31:0] werden ansonsten weggenommen.For purposes of generating the SI_INTR # signal, the serial scan logic includes 804 a flip-flop 882 of the D type which supplies the serial interrupt signal SI_INTR # at its inverting output. The flip-flop 882 is clocked on the positive edge of the CLK signal, and the clear input of the flip-flop 882 receives the RST signal. The entrance of the flip-flops 882 is with the output of an OR gate 881 which receives thirty-two pending interrupt signals PENDING_IRQ [31: 0] which, by asserting or driving high, indicate whether an interrupt is pending for the corresponding one of the status signals STATUS [31: 0]. The signals PENDING_IRQ [31: 0] are otherwise removed.

Wie in 31E dargestellt ist, liefert ein Multi-Bit-Flip-Flop 979 vom D-Typ die Signale PENDING_IRQ[31:0] an seinem nicht-invertierenden Ausgang. Das Flip-Flop 979 wird an der positiven Flanke des Signals CLK getaktet und empfängt das Signal RST an seinem Lösch-Eingang. Der Eingang des Flip-Flops 979 ist mit dem Ausgang eines Multi-Bit-UND-Gates 981 verbunden, das invertierte Unterbrechungs-Maskierungs-Signale INTR_MASK[31:0] an einem Eingang aufnimmt. Die Signale INTR_MASK[31:0] sind für ein entsprechendes Bit des Unterbrechungs-Masken-Registers 810 indikativ. Der andere Eingang des UND-Gates 981 ist mit dem Ausgang eines Multi-Bit-ODER-Gates 835 verbunden. Ein Eingang des ODER-Gates 835 ist mit dem Ausgang eines Multi-Bit-UND-Gates 862 verbunden und der andere Eingang des ODER-Gates 835 ist mit dem Ausgang eines Multi-Bit-UND-Gates 834 verbunden.As in 31E is shown, provides a multi-bit flip-flop 979 D-type signals PENDING_IRQ [31: 0] at its non-inverting output. The flip-flop 979 is clocked on the positive edge of the signal CLK and receives the signal RST at its clear input. The entrance of the flip-flops 979 is connected to the output of a multi-bit AND gate 981 which receives inverted interrupt masking signals INTR_MASK [31: 0] at an input. The signals INTR_MASK [31: 0] are for a corresponding bit of the interrupt mask register 810 indicative. The other input of the AND gate 981 is at the output of a multi-bit OR gate 835 connected. An input of the OR gate 835 is connected to the output of a multi-bit AND gate 862 connected and the other input of the OR gate 835 is connected to the output of a multi-bit AND gate 834 connected.

Das UND-Gate 862 nimmt invertierte PENDING_IRQ[31:0] Signale auf und signalisiert SET_IRQ[31:0]. Die Signale SET_PIRQ[31:0] werden aufgestellt, um anzuzeigen, dass eine Unterbrechungs-Anforderung für das entsprechende eine der Status-Signale STATUS[31:0] erzeugt werden sollte. Deshalb werden die Signale PENDING_IRQ[31:0] mit den Signalen SET_PIRQ[31:0] aktualisiert, falls sie nicht durch die Signale INTR_MASK[31:0] maskiert sind.The AND gate 862 picks inverted PENDING_IRQ [31: 0] signals and signals SET_IRQ [31: 0]. The signals SET_PIRQ [31: 0] are asserted to indicate that an interrupt request should be generated for the corresponding one of the status signals STATUS [31: 0]. Therefore, the signals PENDING_IRQ [31: 0] are updated with the signals SET_PIRQ [31: 0] if they are not masked by the signals INTR_MASK [31: 0].

Das UND-Gate 834 empfängt die Signale PENDING_IRQ[31:0], invertierte Signale SET_PIRQ[31:0] und invertierte WR_INTR_REG[31:0] Signale. Die Signale WR_INTR_REG[31:0] zeigen die Schreib-Daten an, geliefert durch die CPU 14, und zwar zu dem Unterbrechungs-Register 800 hin. Die CPU löscht eine Unterbrechung durch Schreiben einer „1" zu dem entsprechenden Bit des Unterbrechungs-Registers 800. Deshalb wird, falls dies auftritt, und keine neuen Unterbrechungs-Anforderungen für das entsprechende eine der Status-Signale STATUS[31:0] angezeigt werden, das entsprechende eine der Signale PENDING_IRQ[31:0] gelöscht.The AND gate 834 receives the signals PENDING_IRQ [31: 0], inverted signals SET_PIRQ [31: 0] and inverted WR_INTR_REG [31: 0] signals. The signals WR_INTR_REG [31: 0] indicate the write data supplied by the CPU 14 to the interrupt register 800 out. The CPU clears an interrupt by writing a "1" to the corresponding bit of the interrupt register 800 , Therefore, if this occurs and no new interrupt requests for the corresponding one of the status signals STATUS [31: 0] are displayed, the corresponding one of the signals PENDING_IRQ [31: 0] is cleared.

Die Signale SET_PIRQ[31:0] werden durch den Ausgang eines Multi-Bit-UND-Gates 839 geliefert. Ein Eingang des UND-Gates 839 empfängt die Signale UPDATE_IRQ[31:0]. Der andere Eingang des UND-Gates 839 ist mit dem Ausgang eines Multi-Bit-XOR-Gates 837 verbunden. Ein Eingang des XOR-Gates 837 empfängt die Signale D_INTR_REG[31:0], der andere Eingang des XOR-Gates 837 empfängt die Signale INTR_REG[31:0]. Deshalb wird, wenn die Bits des Unterbrechungs-Registers 800 von einem logischen Zustand zu einem anderen übergehen, eine Unterbrechungs-Anforderung erzeugt.The signals SET_PIRQ [31: 0] are passed through the output of a multi-bit AND gate 839 delivered. An input of the AND gate 839 receives the signals UPDATE_IRQ [31: 0]. The other input of the AND gate 839 is with the output of a multi-bit XOR gate 837 connected. An input of the XOR gate 837 receives the signals D_INTR_REG [31: 0], the other input of the XOR gate 837 receives the signals INTR_REG [31: 0]. Therefore, if the bits of the interrupt register 800 transition from one logical state to another, generates an interrupt request.

Zu Zwecken einer Aktualisierung der Bits des Unterbrechungs-Registers 800 werden die Signale UPDATE_IRQ[31:0] zu den entsprechenden Last-Eingängen des Registers 800 geliefert. Wenn eines der Signale UPATE_IRQ[31:0] aufgestellt ist, oder auf hoch angesteuert ist, wird das entsprechende Bit mit dem entsprechenden einen der Signale D_INTR_REG[31:0] geladen.For purposes of updating the bits of the interrupt register 800 the signals UPDATE_IRQ [31: 0] become the corresponding load inputs of the register 800 delivered. If one of the UPATE_IRQ [31: 0] signals is asserted or driven high, the corresponding bit is loaded with the corresponding one of the D_INTR_REG [31: 0] signals.

Die Signale UPDATE_IRQ[31:0] werden durch den Ausgang eines Multi-Bit-ODER-Gates 971 geliefert. Ein Eingang des ODER-Gates 971 ist mit dem Ausgang eines Multi-Bit-UND-Gates 973 verbunden. Ein Eingang des UND-Gates 973 ist mit dem Ausgang eines Multi-Bit-Multiplexers 977 verbunden, und der andere Eingang des UND-Gates 973 nimmt invertierte PENDING_IRQ[31:0] Signale auf. Der Auswahl-Eingang des Multiplexers 977 empfängt das Signal SCAN_END, der eine Eingang des Multiplexers 977 empfängt ein Zweiunddreißig-Bit-Signal, indikativ für „hFFFFFFFF", und der Null-Eingang des Multiplexers 977 empfängt ein Zweiunddreißig-Bit-Signal, indikativ für „0". Deshalb ermöglichen, an dem Ende einer Abtastung, die Signale UPDATE_IRQ[31:0], dass die Bits des Unterbrechungs-Registers 800 aktualisiert werden, die den aufgestellten PENDING_IRQ[31:0] Signalen entsprechen.The UPDATE_IRQ [31: 0] signals are passed through the output of a multi-bit OR gate 971 delivered. An input of the OR gate 971 is connected to the output of a multi-bit AND gate 973 connected. An input of the AND gate 973 is with the output of a multi-bit multiplexer 977 connected, and the other input of the AND gate 973 picks up inverted PENDING_IRQ [31: 0] signals. The selection input of the multiplexer 977 receives the signal SCAN_END, which is an input of the multiplexer 977 receives a thirty-two bit signal indicative of "hFFFFFFFF" and the zero input of the multiplexer 977 receives a thirty-two bit signal, indicative of "0." Therefore, at the end of a scan, UPDATE_IRQ [31: 0] signals enable the bits of the interrupt register 800 which correspond to the established PENDING_IRQ [31: 0] signals.

Ein anderer Eingang des ODER-Gates 971 ist mit dem Ausgang eines Multi-Bit-UND-Gates 975 verbunden. Ein Eingang des UND-Gates 975 empfängt die invertierten INTR_MASK[31:0] Signale, ein anderer Eingang des UND-Gates 975 empfängt die Signale PENDING_IRQ[31:0], und der andere Eingang des UND-Gates 975 empfängt die Signale WR_INTR_REG[31:0]. Deshalb kann die CPU 14 selektive Bits der Signale PENDING_IRQ[31:0] löschen.Another input of the OR gate 971 is connected to the output of a multi-bit AND gate 975 connected. An input of the AND gate 975 receives the inverted INTR_MASK [31: 0] signals, another input of the AND gate 975 receives the signals PENDING_IRQ [31: 0], and the other input of the AND gate 975 receives the signals WR_INTR_REG [31: 0]. That's why the CPU can 14 delete selective bits of the signals PENDING_IRQ [31: 0].

Die Signale D_INTR_REG[5:0] werden durch den Ausgang eines Multi-Bit-Multiplexers 830 geliefert. Wenn das SCAN_END Signal aufgestellt ist, sind die Signale D_INTR_REG[5:0] gleich zu den Signalen D_LSWITCH[5:0]. Wenn das SCAN_END Signal weggenommen ist, sind die Signale D_INTR_REG[5:0] gleich zu den Signalen LSWITCH[5:0].The signals D_INTR_REG [5: 0] are passed through the output of a multi-bit multiplexer 830 delivered. When the SCAN_END signal is asserted, the signals D_INTR_REG [5: 0] are equal to the signals D_LSWITCH [5: 0]. When the SCAN_END signal is removed, the signals D_INTR_REG [5: 0] are equal to the signals LSWITCH [5: 0].

Die Signale D_INTR_REG[31:6] werden durch den Ausgang eines Multi-Bit-Multiplexers 845 geliefert. Wenn das SCAN_END Signal aufgestellt ist, sind die Signale D_INTR_REG[31:6] gleich zu den Signalen D_LNON_SW[31:6]. Wenn das SCAN_END Signal weggenommen ist, sind die Signale D_INTR_REG[5:0] gleich zu den Signalen LNON_SW[31:6]. Das Unterbrechungs-Register 800 nimmt neue Werte nur dann auf, wenn das Signal SCAN_END aufgestellt ist.The signals D_INTR_REG [31: 6] are passed through the output of a multi-bit multiplexer 845 delivered. When the SCAN_END signal is asserted, the signals D_INTR_REG [31: 6] are equal to the signals D_LNON_SW [31: 6]. When the SCAN_END signal is removed, the signals D_INTR_REG [5: 0] are equal to the signals LNON_SW [31: 6]. The interrupt register 800 picks up new values only if the signal SCAN_END is set up.

Wie in den 32AB dargestellt ist, tritt die Abtast-Zustand-Maschine 840 in einen IDLE Zustand nach dem Aufstellen des RESET-Signals RST ein. Wenn sie sich nicht in dem IDLE Zustand befindet, toggelt die Abtast-Zustand-Maschine 840 die Zustände des Seriell-Eingangs-Taktsignals CSIC_O, um das Schiebe-Register 82 zu takten. Weiterhin stellt, wenn sie sich nicht in einem ersten Lade-Zustand LD1 befindet, die Abtast-Zustand-Maschine 840 das Lade-Signal CSIL_O_ auf oder steuert es auf hoch an, um die Register 82 und 52 freizugeben, um seriell die Status-Signale STATUS[127:0] zu der SIO-Schaltung 50 zu verschieben. In dem IDLE Zustand setzt die Abtast-Zustand-Maschine 840 das Signal SCAN_DONE gleich zu Null.As in the 32A - B is shown, the scan state machine enters 840 in an IDLE state after setting the RESET signal RST. If it is not in the IDLE state, the scan state machine toggles 840 the states of the serial input clock CSIC_O to the shift register 82 to clock. Further, when not in a first loading state LD1, the scanning state machine 840 the load signal CSIL_O_ on or drives it high to the registers 82 and 52 to serially assert the status signals STATUS [127: 0] to the SIO circuit 50 to move. In the IDLE state, the scan state machine resets 840 the signal SCAN_DONE equal to zero.

Die Abtast-Zustand-Maschine 840 geht von dem IDLE Zustand zu dem Zustand LD1 über, wenn entweder das Signal GETTING_BYTE aufgestellt ist oder das Signal HOLD_OFF weggenommen ist. Ansonsten verbleibt die Abtast-Zustand-Maschine 840 in dem IDLE Zustand. In dem LD1 Zustand stellt die Abtast-Zustand-Maschine 840 das Lade-Signal CSIL_O_ auf oder steuert es auf niedrig an, das die Register 82 und 52 freigibt, um zu verriegeln und damit zu beginnen, die Status-Signale STATUS[127:0] aufzunehmen.The scan state machine 840 goes from the IDLE state to state LD1 when either the GETTING_BYTE signal is asserted or the HOLD_OFF signal is deasserted. Otherwise, the scan state machine remains 840 in the IDLE state. In the LD1 state, the scan state machine 840 the load signal CSIL_O_ on or drives it low, the registers 82 and 52 enables to lock and begin recording STATUS [127: 0] status signals.

Die Abtast-Zustand-Maschine 840 geht von dem LD1 Zustand zu einem Lade-Zwei-Zustand LD2 über. In dem LD2 Zustand wird das Lade-Signal CSIL_O_ aufgestellt beibehalten, was den Registern 82 und 52 ermöglicht, seriell die Status-Signale STATUS[127:0] zu verschieben.The scan state machine 840 goes from the LD1 state to a charge two state LD2. In the LD2 state, the load signal CSIL_O_ is maintained asserted, giving the registers 82 and 52 allows the status signals STATUS [127: 0] to be shifted serially.

Die Abtast-Zustand-Maschine 840 geht darauffolgend zu einem Abtast-Zustand SCAN über. In dem SCAN Zustand tastet die Seriell-Abtast-Eingangs-Logik 804 die Status-Signale STATUS[127:0] an jeder negativen Flanke des Takt-Signals DIV2CLK ab. Wenn das Signal STOP_SCAN aufgestellt ist, geht die Abtast-Zustand-Maschine 840 zurück zu dem IDLE Zustand. Das STOP_SCAN Signal wird aufgestellt, wenn entweder das erwünschte Byte der Status-Signale STATUS[127:0] in das Seriell-Daten-Register 815 hinein verschoben worden ist; die Hebel-Status-Signale STATUS[5:0] eingetastet worden sind und das Seriell-Unterbrechungs-Signal SI_INTR# aufgestellt worden ist; oder alle Status-Signale STATUS[31:0] hinein verschoben worden sind. In dem SCAN Zustand wird das SCAN_DONE Signal gleich zu dem STOP_SCAN Signal gesetzt.The scan state machine 840 subsequently goes to a scan state SCAN. In the SCAN state, the serial scan input logic is sampling 804 the status signals STATUS [127: 0] on each negative edge of the clock signal DIV2CLK. When the STOP_SCAN signal is asserted, the scan state machine goes 840 back to the IDLE state. The STOP_SCAN signal is asserted when either the desired byte of the status signals STATUS [127: 0] into the serial data register 815 has been moved into it; the lever status signals STATUS [5: 0] have been keyed in and the serial interrupt signal SI_INTR # has been asserted; or all status signals STATUS [31: 0] have been shifted into it. In the SCAN state, the SCAN_DONE signal is set equal to the STOP_SCAN signal.

Wie in 33A dargestellt ist, umfasst die EIN/AUS-Steuer-Logik 820 eine EIN/AUS-Zustand-Maschine 998, die die RST_SWITCH[5:0] Signale, SLOT_EN[5:0] und SLOT_RST_[5:0] empfängt. Basierend auf den Zuständen, angezeigt durch diese Signale, zeigt die EIN/AUS-Zustand-Maschine 998 die geeigneten Hochfahr- und Herunterfahr-Sequenzen an und steuert sie. Die EIN/AUS-Zustand-Maschine 998 liefert Steuersignale zu der Steuer-Logik 999.As in 33A includes the ON / OFF control logic 820 an ON / OFF state machine 998 that receives the RST_SWITCH [5: 0] signals, SLOT_EN [5: 0], and SLOT_RST_ [5: 0]. Based on the states indicated by these signals, the ON / OFF state machine indicates 998 the appropriate start-up and shutdown sequences and controls them. The ON / OFF state machine 998 provides control signals to the control logic 999 ,

Die EIN/AUS-Zustand-Maschine 998 liefert ein Seriell-Ausgangs-Aktualisierungs-Signal SO_UPDATE zu der Seriell-Ausgangs-Logik 824. Wenn das Signal SO_UPDATE aufgestellt ist, oder auf hoch angesteuert ist, beginnt die Seriell-Ausgangs-Logik 824 die Verschiebe-Phase und verschiebt Seriell-Steuer-Daten, über das Signal CSOD_O, zu dem Register 80. Die Seriell-Ausgangs-Logik 824 zeigt einen Abschluss der Verschiebe-Phase durch Aufstellen eines Signals SO_UPDATE_DONE an, das durch die EIN/AUS-Zustand-Maschine 998 empfangen wird. Die EIN/AUS-Zustand-Maschine 998 aktualisiert darauffolgend die Steuersignale POUT[39:0] durch Negieren, oder Takten, des Verriegelungs-Signals CSOLC_O, das durch das Register 80 empfangen wird.The ON / OFF state machine 998 supplies a serial output update signal SO_UPDATE to the serial output logic 824 , When the SO_UPDATE signal is asserted or driven high, the serial output logic begins 824 the shift phase and shifts serial control data to the register via the signal CSOD_O 80 , The serial output logic 824 indicates completion of the shift phase by asserting a signal SO_UPDATE_DONE by the ON / OFF state machine 998 Will be received. The ON / OFF state machine 998 subsequently updates the control signals POUT [39: 0] by negating, or clocking, the latch signal CSOLC_O passing through the register 80 Will be received.

Die Steuer-Logik 999 liefert die Signale PWREN[5:0], CLKEN#[5:0], BUSEN#[5:0] und RST#[5:0] zu der Seriell-Ausgangs-Logik 824. Die Steuer-Logik 999 liefert auch ein PCI-Bus-Anforderungs-Signal CAYREQ# zu dem und empfängt ein PCI-Bus-Erteilungs-Signal CAYGNT# von dem Arbitrierer 124. Die EIN/AUS-Steuer-Logik 820 stellt das Signal CAYREQ# auf, oder steuert es auf niedrig an, um den PCI-Bus 32 anzufordern, wenn der Arbitrierer 124 das Signal CAYGNT# aufstellt, oder auf niedrig ansteuert, hat der Arbitrierer 124 eine Steuerung über den PCI-Bus 32 zu der EIN/AUS-Steuer-Logik 820 erteilt.The control logic 999 supplies the signals PWREN [5: 0], CLKEN # [5: 0], BUSEN # [5: 0] and RST # [5: 0] to the serial output logic 824 , The control logic 999 also supplies a PCI bus request signal CAYREQ # to and receives a PCI bus grant signal CAYGNT # from the arbitrator 124 , The ON / OFF control logic 820 sets the CAYREQ # signal or drives it low to the PCI bus 32 to request if the arbitrator 124 the signal CAYGNT # sets up or drives low, the arbitrator has 124 a controller via the PCI bus 32 to the ON / OFF control logic 820 granted.

Wie in den 33BG dargestellt ist, tritt die EIN/AUS-Zustand-Maschine 998 in einen Idle-Zustand IDLE unter Aufstellen des Reset-Signals RST ein. Falls kein Leerlauf vorliegt, steuert die EIN/AUS-Zustand-Maschine 998 eine von drei Sequenzen: die Power- down-Sequenz, die Power-on-Sequenz oder die eine Durchgangs-Sequenz, verwendet dazu, die Steuer-Signale POUT[39:0] zu aktualisieren, wie dies durch das Schlitz-Freigabe- 817 und das LED-Steuer-(nicht dargestellt)Register angezeigt ist. Die EIN/AUS-Zustand-Maschine 998 stellt das Lade-Signal CSOLC_O für einen Zyklus des Taktsignals CLK des Registers 80 auf, oder steuert es auf hoch, bis die EIN/AUS-Zustand-Maschine 998 bestimmt, dass die Steuer-Signale POUT[39:0] aktualisiert werden müssen. Wenn die Steuer-Signale POUT[39:0] aktualisiert sind, negiert die EIN/AUS-Zustand-Maschine 998 das Signal CSOLC_O, was die Steuer-Signale POUT[39:0] aktualisiert.As in the 33B - G is shown, the ON / OFF state machine enters 998 in an idle state IDLE by setting the reset signal RST on. If there is no idle, the ON / OFF state machine controls 998 one of three sequences: the power down sequence, the power on sequence, or the one pass sequence uses to update the control signals POUT [39: 0] as indicated by the slot enable signal. 817 and the LED control (not shown) register is displayed. The ON / OFF state machine 998 sets the load signal CSOLC_O for one cycle of the clock signal CLK of the register 80 on, or control it up, until the ON / OFF state machine 998 determines that the control signals POUT [39: 0] must be updated. When the control signals POUT [39: 0] are updated, the ON / OFF state machine negates 998 the signal CSOLC_O, which updates the control signals POUT [39: 0].

Die EIN/AUS-Zustand-Maschine 998 beginnt die Power-down-Sequenz, wenn entweder die Software ein energiemäßiges Herunterfahren bzw. Power-down mindestens eines der Schlitze bzw. Einsteckplätze 36 anfordert, wie dies durch das Wegnehmen der Signale SLOT_EN[5:0] angezeigt ist; oder die Seriell-Abtast-Eingangs-Logik 804 bestimmt, dass mindestens einer der Schlitze bzw. Einsteckplätze 36af der Power-down-Sequenz unterworfen werden sollte, wie dies durch das Aufstellen der Signale RST_SWITCH[5:0] angezeigt ist. Um die Power-down-Sequenz zu beginnen, stellt die EIN/AUS-Zustand-Maschine 998 das SO_UPDATE Signal auf, um eine Verschiebe-Phase und Übergänge von dem IDLE Zustand zu einem RSTON Zustand zu beginnen.The ON / OFF state machine 998 The power-down sequence will begin when either the software shuts down or powers down at least one of the slots or slots 36 requests, as indicated by the removal of the signals SLOT_EN [5: 0]; or the serial scan input logic 804 determines that at least one of the slots or slots 36a - f should be subjected to the power-down sequence as indicated by setting up the RST_SWITCH [5: 0] signals. To start the power-down sequence, set the ON / OFF state machine 998 the SO_UPDATE signal to begin a shift phase and transitions from the IDLE state to an RSTON state.

Während des RSTON Zustands negiert die Steuer-Logik 999 die Reset-Signale RST#[5:0] für die Schlitze 36, die energiemäßig heruntergefahren werden sollen, und die Seriell-Ausgangs-Logik 824 verschiebt seriell die Reset-Signale RST#[5:0] zu dem Ausgangs-Register 80. Die EIN/AUS-Zustand-Maschine 998 negiert auch das Signal SO_UPDATE. Wenn einmal alle vierzig Steuer-Signale durch die Seriell-Ausgangs-Logik 824 zu dem Register 80 verschoben sind, wie dies durch das Aufstellen des Signals SO_UPDATE_DONE angezeigt ist, geht die EIN/AUS-Zustand-Maschine 998 von dem RSTON Zustand zu einem OFF_ARB1 Zustand über.During the RSTON state, the control logic negates 999 the reset signals RST # [5: 0] for the slots 36 which are to be powered down and the serial output logic 824 serially shifts the reset signals RST # [5: 0] to the output register 80 , The ON / OFF state machine 998 also negates the signal SO_UPDATE. Once every forty control signals through the serial output logic 824 to the register 80 are shifted, as indicated by the setting of the signal SO_UPDATE_DONE, the ON / OFF state machine goes 998 from the RSTON state to an OFF_ARB1 state.

In dem OFF_ARB1 Zustand fordert die EIN/AUS-Zustand-Maschine 998 eine Steuerung über den sekundären PCI-Bus 32 durch Aufstellen des Anforderungs-Signals CAYREQ# an. Die EIN/AUS-Zustand-Maschine 998 geht dann zu einem OFF_WGNT1 Zustand über, wo sie auf die Erteilung des sekundären PCI-Busses 32 wartet. Wenn der Arbitrierer 124 eine Steuerung über den Bus 32 erteilt, wie dies durch das Aufstellen des CAYREQ# Signals angezeigt ist, negiert die EIN/AUS-Zustand-Maschine 998 das Signal CSOLC_O für einen Zyklus des Signals CLK; um die Steuer-Signale POUT[39:0] zu aktualisieren, und geht zu einem OFF_LCLK1 Zustand über.In the OFF_ARB1 state, the ON / OFF state machine is requesting 998 a controller over the secondary PCI bus 32 by asserting the request signal CAYREQ #. The ON / OFF state machine 998 then goes to an OFF_WGNT1 state, where it waits for the grant of the secondary PCI bus 32 waiting. If the arbitrator 124 a control over the bus 32 as indicated by the assertion of the CAYREQ # signal negates the ON / OFF state machine 998 the signal CSOLC_O for one cycle of the signal CLK; to update the control signals POUT [39: 0], and goes to an OFF_LCLK1 state.

In dem OFF_LCLK1 Zustand stellt die EIN/AUS-Zustand-Maschine 998 das Signal SO_UPDATE auf, um so eine andere Verschiebe-Phase zu beginnen. Die EIN/AUS-Zustand-Maschine 998 geht von dem OFF_LCLK1 Zustand zu einem Bus-off-Zustand BUSOFF über. Während des BUSOFF Zustands nimmt die Steuer-Logik 999 die BUS-Freigabe-Signale BUSEN#[5:0] für die Schlitze 36 weg oder steuert sie auf hoch an, die energießmäßig heruntergefahren werden sollen, und die Seriell-Ausgangs-Logik 824 verschiebt seriell die Bus-Freigabe-Signale BUSEN#[5:0] zu dem Ausgangs-Register 80. Die EIN/AUS-Zustand-Maschine 998 negiert auch das Signal SO_UPDATE. Wenn einmal alle vierzig Steuer-Signale durch die Seriell-Ausgangs-Logik 824 verschoben sind, wie dies durch das Aufstellen des Signals SO_UPDATE_DONE angezeigt ist, geht die EIN/AUS-Zustand-Maschine 998 von dem BUSOFF Zustand zu einem OFF_ARB2 Zustand über, wo die Zustand-Maschine 998 wieder erneut eine Kontrolle des sekundären PCI-Busses 32 anfordert. Die Zustand-Maschine 998 geht dann zu einem OFF_WGNT2 Zustand über, wo sie auf die Erteilung des PCI-Busses 32 wartet. Wenn einmal die Erteilung empfangen ist, geht die Zustand-Maschine 998 zu einem OFF_LCLK2 Zustand über, wo die Steuer-Signale POUT[39:0] durch Negieren des Signals CSOLC_O für einen Zyklus des Signals CLK aktualisiert werden. Die Zustand-Maschine 998 geht dann zu einem Takt-Off-Zustand CLKOFF über.In the OFF_LCLK1 state, the ON / OFF state machine 998 signal SO_UPDATE to start another shift phase. The ON / OFF state machine 998 goes from the OFF_LCLK1 state to a bus-off state BUSOFF. During the BUSOFF state, the control logic is decreasing 999 the BUS enable signals BUSEN # [5: 0] for the slots 36 away or steers them to high, which should be shut down energetically, and the serial output logic 824 serially shifts the bus enable signals BUSEN # [5: 0] to the output register 80 , The ON / OFF state machine 998 also negates the signal SO_UPDATE. Once every forty control signals through the serial output logic 824 are shifted, as indicated by the setting of the signal SO_UPDATE_DONE, the ON / OFF state machine goes 998 from the BUSOFF state to an OFF_ARB2 state via where the state machine 998 again a check of the secondary PCI bus 32 requests. The state machine 998 then goes to an OFF_WGNT2 state where it waits for the grant of the PCI bus 32 waiting. Once the grant is received, the state machine goes 998 to an OFF_LCLK2 state where the control signals POUT [39: 0] are updated by negating the signal CSOLC_O for one cycle of the signal CLK. The state machine 998 then goes to a clock-off state CLKOFF.

Während des CLKOFF Zustands nimmt die Steuer-Logik 999 die Takt-Freigabe-Signale CLKEN#[5:0] für die Schlitze 36 weg, oder steuert sie auf hoch an, die energiemäßig heruntergefahren werden sollen. Die Bus-Freigabe-Signale BUSEN#[5:0] ändern sich nicht, und die Seriell-Ausgangs-Logik 824 verschiebt seriell die Takt-Freigabe-Signale CLKEN#[5:0] zu dem Ausgangs-Register 80. Die EIN/AUS-Zustand-Maschine 998 negiert auch das Signal SO_UPDATE. Wenn einmal alle vierzig Steuer-Signale durch die Seriell-Ausgangs-Logik 824 verschoben sind, wie dies durch das Aufstellen des Signals SO_UPDATE_DONE angezeigt ist, geht die EIN/AUS-Zustand-Maschine 998 von dem CLKOFF-Zustand zu einem OFF_ARB3 Zustand über, wo die Zustand-Maschine 998 erneut eine Steuerung bzw. Kontrolle über den PCI-Bus 32 anfordert. Die Zustand-Maschine 998 geht dann zu einem OFF_WGNT3 Zustand über, wo sie auf die Erteilung des PCI-Busses 32 wartet. Wenn einmal die Erteilung empfangen ist, geht die Zustand-Maschine 998 zu einem OFF_LCLK3 Zustand über, wo die Steuersignale POUT[39:0] durch Negieren des Signals CSOLC_O für einen Zyklus des Signals CLK aktualisiert werden. Die Zustand-Maschine 998 geht dann zu einem Power-Off-Zustand PWROFF über.During the CLKOFF state the control logic is decreasing 999 the clock enable signals CLKEN # [5: 0] for the slots 36 away, or steers you to high, which should be shut down by energy. The bus enable signals BUSEN # [5: 0] do not change, and the serial output logic 824 serially shifts the clock enable signals CLKEN # [5: 0] to the output register 80 , The ON / OFF state machine 998 also negates the signal SO_UPDATE. Once every forty control signals through the serial output logic 824 are shifted, as indicated by the setting of the signal SO_UPDATE_DONE, the ON / OFF state machine goes 998 from the CLKOFF state to an OFF_ARB3 state via where the state machine 998 again control over the PCI bus 32 requests. The state machine 998 then goes to an OFF_WGNT3 state where it waits for the grant of the PCI bus 32 waiting. Once the grant is received, the state machine goes 998 to an OFF_LCLK3 state where the control signals POUT [39: 0] are updated by negating the signal CSOLC_O for one cycle of the signal CLK. The state machine 998 then goes to a power off state PWROFF.

Während des PWROFF Zustands nimmt die Steuer-Logik 999 die Energie-Freigabe-Signale PWREN[5:0] für die Schlitze 36 weg oder setzt sie auf niedrig, die energiemäßig heruntergefahren werden sollen. Die Signale REST#[5:0], BUSEN#[5:0] und CLKEN#[5:0] ändern sich nicht, und die Seriell-Ausgangs-Logik 824 verschiebt seriell die Energie-Freigabe-Signale PWREN[5:0] zu dem Ausgangs-Register 80. Die EIN/AUS-Zustand-Maschine 998 negiert auch das Signal SO_UPDATE. Wenn einmal alle vierzig Steuersignale durch die Seriell-Ausgangs-Logik 824 verschoben sind, wie dies durch das Aufstellen des Signals SO_UPDATE_DONE angezeigt ist, geht die EIN/AUS-Zustand-Maschine 998 von dem PWROFF Zustand zu einem OFF_LCLK4 Zustand über, wo die Signale POUT[39:0] durch Negieren des Signals CSOLC_O für einen Zyklus des Signals CLK aktuallisiert werden. Die Zustand-Maschine 998 geht dann zu dem IDLE Zustand über, der die Power-Down-Sequenz abschließt.During the PWROFF state, the control logic is decreasing 999 the power enable signals PWREN [5: 0] for the slots 36 away or set them low, which should be shut down by energy. The signals REST # [5: 0], BUSEN # [5: 0] and CLKEN # [5: 0] do not change, and the serial output logic 824 serially shifts the power enable signals PWREN [5: 0] to the output register 80 , The ON / OFF state machine 998 also negates the signal SO_UPDATE. Once every forty control signals through the serial output logic 824 are shifted, as indicated by the setting of the signal SO_UPDATE_DONE, the ON / OFF state machine goes 998 from the PWROFF state to an OFF_LCLK4 state, where the signals POUT [39: 0] are updated by negating the signal CSOLC_O for one cycle of the signal CLK. The state machine 998 then goes to the IDLE state which completes the power-down sequence.

Falls eine Power-Down-Sequenz nicht erforderlich ist, dann bestimmt die EIN/AUS-Zustand-Maschine 998, ob die Power-Up-Sequenz erforderlich ist. Falls entweder die Software mindestens angefordert hat, dass mindestens einer der Schlitze 36 energiemäßig hochgefahren werden soll, oder ein Hochfahren des Erweiterungskastens 30 anhängig ist, dann geht die EIN/AUS-Zustand-Maschine 998 von dem IDLE Zustand zu einem Power-On-PWRON Zustand über, um die Power-On-Sequenz zu beginnen. Um die Power-On-Sequenz zu beginnen, stellt die EIN/AUS-Zustand-Maschine 998 das SO_UPDATE Signal auf, um eine Verschiebe-Phase zu beginnen, und geht von dem IDLE Zustand zu einem Power-On-Zustand PWRON über.If a power-down sequence is not required, then the ON / OFF state machine determines 998 whether the power-up sequence is required. If either the software has at least requested that at least one of the slots 36 energized to be raised, or booting the expansion box 30 is pending, then goes the ON / OFF state machine 998 from the IDLE state to a power-on PWRON state to begin the power-on sequence. To the power-on sequence To start, set the ON / OFF state machine 998 the SO_UPDATE signal to start a shift phase, and transitions from the IDLE state to a power-on state PWRON.

Während des PWRON Zustands stellt die Steuer-Logik 999 die Power-Freigabe-Signale PWREN[5:0] für die Schlitze 36 auf, die energiemäßig hochgefahren werden sollen, und die Seriell-Ausgangs-Logik 824 verschiebt seriell die Power-Freigabe-Signale PWREN[5:0] zu dem Ausgangs-Register 80. Die EIN/AUS-Zustand-Maschine 998 negiert, auch das Signal SO_UPDATE. Wenn einmal alle vierzig Steuersignale durch die Seriell-Ausgangs-Logik 824 verschoben sind, wie dies durch das Aufstellen des Signals SO_UPDATE_DONE angezeigt ist, geht die EIN/AUS-Zustand-Maschine 998 von dem PWRON-Zustand zu einem Initialisierungs-Zustand LDCNT1 eines Zeitgebers 806 über und negiert das Lade-Signal CSOLC_O, um die Steuersignale POUT[39:0] zu aktualisieren.During the PWRON state, the control logic sets 999 the power enable signals PWREN [5: 0] for the slots 36 which are to be powered up and the serial output logic 824 serially shifts the power enable signals PWREN [5: 0] to the output register 80 , The ON / OFF state machine 998 negates, also the signal SO_UPDATE. Once every forty control signals through the serial output logic 824 are shifted, as indicated by the setting of the signal SO_UPDATE_DONE, the ON / OFF state machine goes 998 from the PWRON state to an initialization state LDCNT1 of a timer 806 Over and negates the load signal CSOLC_O to update the control signals POUT [39: 0].

In dem LDCNT1 Zustand initialisiert die EIN/AUS-Zustand-Maschine 998 die Zeitgeber 806 so, dass die Zeitgeber 806 eine Indikation liefern, wenn ein vorbestimmtes Stabilisierungs-Verzögerungs-Intervall abgelaufen ist. Das Stabilisierungs-Verzögerungs-Intervall ermöglicht eine ausreichende Zeit für die Karte 807, die energiemäßig hochgefahren werden soll, um sich zu stabilisieren, wenn einmal der Spannungspegel Vss zu der Karte 807 zugeführt ist. In dem LDCNT1 Zustand stellt die EIN/AUS-Zustand-Maschine 998 auch das Signal CSOLC_O auf. Die EIN/AUS-Zustand-Maschine 820 geht von dem LDCNT1 Zustand zu einem CLKON Zustand über.In the LDCNT1 state, the ON / OFF state machine initializes 998 the timers 806 so that the timers 806 provide an indication when a predetermined stabilization delay interval has expired. The stabilization delay interval allows sufficient time for the card 807 which is to be powered up to stabilize, once the voltage level V ss to the card 807 is supplied. In the LDCNT1 state, the ON / OFF state machine 998 also the signal CSOLC_O on. The ON / OFF state machine 820 goes from the LDCNT1 state to a CLKON state.

Während des CLKON Zustands stellt die Steuerlogik 999 die Taktfreigabesignale CLKEN#[5:0] für die Schlitze bzw. Einsteckplätze 36 auf oder steuert sie auf niedrig an, die energiemäßig hochgefahren werden sollen. Die PWREN[5:0] Signale verbleiben unverändert, und die Seriell-Ausgangs-Logik 824 verschiebt seriell die Taktfreigabesignale CLKEN#[5:0] zu dem Ausgangs-Register 80. Die EIN/AUS-Zustand-Maschine 998 negiert auch das Signal SO_UPDATE. Wenn einmal das Stabilisierungs-Verzögerungs-Intervall abgelaufen ist, geht die EIN/AUS-Zustand-Maschine 998 von dem CLKOFF Zustand zu einem ON_ARB1 Zustand über.During the CLKON state, the control logic sets 999 the clock enable signals CLKEN # [5: 0] for the slots or slots 36 on or low on, which are to be powered up by energy. The PWREN [5: 0] signals remain unchanged, and the serial output logic 824 serially shifts the clock enable signals CLKEN # [5: 0] to the output register 80 , The ON / OFF state machine 998 also negates the signal SO_UPDATE. Once the stabilization delay interval has elapsed, the ON / OFF state machine goes off 998 from the CLKOFF state to an ON_ARB1 state.

In dem ON_ARB1 Zustand fordert die EIN/AUS-Zustand-Maschine 998 eine Steuerung bzw. Kontrolle über den sekundären PCI-Bus 82 durch Aufstellen des Anforderungs-Signals CAYREQ# an. Die EIN/AUS-Zustand-Maschine 998 geht dann zu einem ON_WGNT1 Zustand über, wo sie auf die Erteilung des sekundären PCI-Busses 32 wartet. Wenn einmal die Kontrolle bzw. Steuerung des Busses 32 erteilt ist, wie dies durch das Aufstellen des CAYGNT Signals angezeigt ist, negiert die EIN/AUS-Zustand-Maschine 998 das Signal CSOLC_0, um die Steuer-Signale POUT[39:0] zu aktualisieren, und geht zu einem ON_LCLK1 Zustand über, wo die Signale POUT[39:0] aktualisiert werden.In the ON_ARB1 state, the ON / OFF state machine is requesting 998 control over the secondary PCI bus 82 by asserting the request signal CAYREQ #. The ON / OFF state machine 998 then goes to an ON_WGNT1 state where it waits for the grant of the secondary PCI bus 32 waiting. If once the control or control of the bus 32 is issued, as indicated by the setting up of the CAYGNT signal, negates the ON / OFF state machine 998 the signal CSOLC_0 to update the control signals POUT [39: 0], and goes to an ON_LCLK1 state where the signals POUT [39: 0] are updated.

Die EIN/AUS-Zustand-Maschine 998 geht von dem ON_LCLK1 Zustand zu einem LDCNT2 Zustand über, wo die Zeitgeber 806 so initialisiert werden, dass die Zeitgeber 806 eine Indikation liefern, wenn ein anderes, vorbestimmtes Stabilisierungs-Verzögerungs-Intervall abgelaufen ist. Dieses Verzögerungsintervall wird dazu verwendet, dem Takt-Signal an der Karte 807 zu ermöglichen, energiemäßig hochgefahren zu werden, um sich zu stabilisieren, bevor die Power-Up-Sequenz fortfährt. Die EIN/AUS- Zustand-Maschine 998 geht von dem LDCNT2 Zustand zu einem Bus-Ein-Zustand BUSON über.The ON / OFF state machine 998 goes from the ON_LCLK1 state to an LDCNT2 state where the timers 806 be initialized so that the timers 806 provide an indication when another, predetermined stabilization delay interval has expired. This delay interval is used to match the clock signal on the card 807 to be powered up to stabilize before the power-up sequence continues. The ON / OFF state machine 998 goes from the LDCNT2 state to a bus on state BUSON.

Während des BUSON Zustands stellt die Steuerlogik 999 die Bus-Freigabe-Signale BUSEN#[5:0] für die Schlitze 36 auf, oder steuert sie auf niedrig an, die energiemäßig heruntergefahren werden sollen. Die Signale CLKEN#[5:0] und PWREN[5:0] verbleiben unverändert, und die Seriell-Ausgangs-Logik 824 verschiebt seriell die Bus-Freigabe-Signale BUSEN#[5:0] zu dem Ausgangsregister 80. Die EIN/AUS-Zustand-Maschine 998 negiert auch das Signal SO_UPDATE. Wenn einmal das Stabilisierungs-Verzögerungs-Intervall abgelaufen ist, geht die EIN/AUS-Zustand-Maschine 998 von dem BUSON Zustand zu einem ON_ARB2 Zustand über, wo die Zustand-Maschine 998 erneut wieder eine Kontrolle des PCI-Busses 32 anfordert. Die Zustand-Maschine 998 geht dann zu einem ON_WGTN2 Zustand über, wo sie auf die Erteilung des Busses 32 wartet. Wenn einmal die Erteilung empfangen ist, geht die Zustand-Maschine 998 zu einem ON_CLK2 Zustand über, wo die Signale POUT[39:0] durch Negieren des Signals CSOLC_O für einen Zyklus des Signals CLK aktualisiert werden. Die Zustand-Maschine 998 geht dann zu einem Reset-Off-Zustand RSTOFF über.During the BUSON state, the control logic sets 999 the bus enable signals BUSEN # [5: 0] for the slots 36 on or low on, which should be shut down by energy. The signals CLKEN # [5: 0] and PWREN [5: 0] remain unchanged, and the serial output logic 824 serially shifts the bus enable signals BUSEN # [5: 0] to the output register 80 , The ON / OFF state machine 998 also negates the signal SO_UPDATE. Once the stabilization delay interval has elapsed, the ON / OFF state machine goes off 998 from the BUSON state to an ON_ARB2 state via where the state machine 998 again a check of the PCI bus 32 requests. The state machine 998 then goes to an ON_WGTN2 state, where it is on issuing the bus 32 waiting. Once the grant is received, the state machine goes 998 to an ON_CLK2 state where the signals POUT [39: 0] are updated by negating the signal CSOLC_O for one cycle of the signal CLK. The state machine 998 then goes to a reset-off state RSTOFF over.

Während des RESTOFF Zustands stellt die Steuerlogik 999 die Reset-Signale RST#[5:0] für die Schlitze 36 auf, oder negiert sie, die energiemäßig hochgefahren werden sollen, und zwar in Abhängigkeit von deren jeweiligen SLOT_RST_[5:0] Signalen. Die Signale CLKEN#[5:0], PWREN[5:0] und BUSEN#[5:0] verbleiben unverändert, und die Seriell-Ausgangs-Logik 824 verschiebt seriell die Reset-Signale RST#[5:0] zu dem Ausgangsregister 80. Die EIN/AUS-Zustand-Maschine 998 negiert auch das Signal SO_UPDATE. Wenn einmal alle vierzig Steuersignale durch die Seriell-Ausgangs-Logik 824 verschoben sind, wie dies durch das Aufstellen des Signals SO_UPDATE_DONE angezeigt ist, geht die EIN/AUS-Zustand-Maschine 998 von dem RSTON Zustand zu einem ON_ARB3 Zustand über, wo die Zustand-Maschine 998 erneut wieder eine Kontrolle des Busses 32 anfordert. Die Zustand-Maschine 998 geht dann zu einem ON_WGTN3 Zustand über, wo sie auf die Erteilung des Busses 32 wartet. Wenn einmal die Erteilung empfangen ist, geht die Zustand-Maschine 998 zu einem ON_CLK3 Zustand über, wo die Signale POUT[39:0] durch Negieren des Signals CSOLC_O für einen Zyklus des Signals CLK aktualisiert werden. Die Zustand-Maschine 998 geht dann zurück zu dem IDLE Zustand.During the RESTOFF state, the control logic sets 999 the reset signals RST # [5: 0] for the slots 36 on or negates them, which are to be powered up, depending on their respective SLOT_RST_ [5: 0] signals. The signals CLKEN # [5: 0], PWREN [5: 0] and BUSEN # [5: 0] remain unchanged, and the serial output logic 824 serially shifts the reset signals RST # [5: 0] to the output register 80 , The ON / OFF state machine 998 also negates the signal SO_UPDATE. Once every forty control signals through the serial output logic 824 are moved, as by putting up of the signal SO_UPDATE_DONE is indicated, the ON / OFF state machine goes 998 from the RSTON state to an ON_ARB3 state over where the state machine 998 again a check of the bus 32 requests. The state machine 998 then goes to an ON_WGTN3 state, where it is on issuing the bus 32 waiting. Once the grant is received, the state machine goes 998 to an ON_CLK3 state where the signals POUT [39: 0] are updated by negating the signal CSOLC_O for one cycle of the signal CLK. The state machine 998 then go back to the IDLE state.

Falls weder die Power-Up-Sequenz noch die Power-Down-Sequenz erforderlich ist, dann bestimmt die EIN/AUS-Zustand-Maschine 998, ob eine Ein-Durchgang-Sequenz benötigt wird, um ausgewählte solche der Signale POUT[39:0] zu aktualisieren. Falls die GO_UPDATE Signal aufgestellt ist und falls sich irgendwelche Bits des Schlitz-Freigabe-Registers 817 oder des Schlitz-Reset-Registers 918 ändern, dann geht die EIN/AUS Zustand-Maschine 998 zu einem ONEPASS Zustand über und stellt das SO_UPDATE Signal auf.If neither the power-up sequence nor the power-down sequence is required, then the ON / OFF state machine determines 998 whether a one-pass sequence is needed to update selected ones of the signals POUT [39: 0]. If the GO_UPDATE signal is asserted and if any bits of the slot enable register 817 or the slot reset register 918 change, then go the ON / OFF state machine 998 to an ONEPASS state and sets the SO_UPDATE signal.

Die EIN/AUS Zustand-Maschine 998 verbleibt in dem ONEPASS Zustand, bis die vierzig Steuer-Signale zu dem Register 80 verschoben worden sind. Die EIN/AUS-Zustand-Maschine 998 geht dann zu einem OP_ARB Zustand über, wo die Zustand-Maschine 998 eine Kontrolle des PCI-Busses 32 durch Aufstellen des Signals CAYREQ# anfordert. Die Zustand-Maschine 998 geht dann zu einem OP_WGNT Zustand über, wo sie auf die Erteilung des Busses 32 wartet. Wenn einmal die Erteilung empfangen ist, geht die Zustand-Maschine 998 zu einem OP_LCLK Zustand über, wo die Signale POUT[39:0] durch Negieren des Signals CSOLC_O für einen Zyklus des Signals CLK aktualisiert werden. Die Zustand-Maschine 998 geht dann zurück zu dem IDLE Zustand.The ON / OFF state machine 998 remains in the ONEPASS state until the forty control signals to the register 80 have been moved. The ON / OFF state machine 998 then goes to an OP_ARB state where the state machine 998 a control of the PCI bus 32 by requesting the signal CAYREQ #. The state machine 998 then goes to an OP_WGNT state, where it is on issuing the bus 32 waiting. Once the grant is received, the state machine goes 998 to an OP_LCLK state where the signals POUT [39: 0] are updated by negating the signal CSOLC_O for one cycle of the signal CLK. The state machine 998 then go back to the IDLE state.

Wie in 34 dargestellt ist, umfasst die Seriell-Ausgangs-Logik 824 einen Verschiebe-Ausgangs-Bit-Zähler 921, der ein Sechs-Bit-Zähler-Ausgangs-Signal BIT_CNTR[5:0] liefert, das das Steuer-Signal protokolliert, aus der Seriell-Ausgangs-Logik 824 über das Signal CSOD_O heraus verschoben. Wenn das Signal BIT_CNTR[5:0] gleich zu einer Zahl mit sechs Ziffern gleich zu „39" ist, dann wird ein Signal MAX_CNT aufgestellt. Das Signal MAX_CNT wird zu dem Eingang eines UND-Gates 922 geliefert. Das UND-Gate 922 empfängt weiterhin ein Signal SHIFT4, das aufgestellt wird, wenn die Ausgangs-Verschiebe-Zustand-Maschine 920 in der SHIFT4 Zustand eintritt, der weiter nachfolgend beschrieben wird. Der Ausgang des UND-Gates 922 liefert das Signal SO_UPDATE_DONE.As in 34 includes the serial output logic 824 a shift output bit counter 921 which provides a six bit counter output signal BIT_CNTR [5: 0] which logs the control signal from the serial output logic 824 shifted out via the signal CSOD_O. If the signal BIT_CNTR [5: 0] is equal to "39" equal to a six digit number, then a MAX_CNT signal is asserted, and the MAX_CNT signal becomes the input of an AND gate 922 delivered. The AND gate 922 also receives a signal SHIFT4 which is asserted when the output shift state machine 920 in the SHIFT4 state, which is described further below. The output of the AND gate 922 supplies the signal SO_UPDATE_DONE.

Die Ausgangs-Verschiebe-Zustand-Maschine 920 liefert ein Erhöhungs-Zähler-Signal INC_CNTR zu dem Bit-Zähler 921. Wenn das INC_CNTR-Signal aufgestellt ist, erhöht der Bit-Zähler 921 den Wert, dargestellt durch das Signal BIT_CNTR[5:0]. Wenn ein Lade-Zähler-Signal LOAD_CNTR aufgestellt ist oder wenn das RST-Signal aufgestellt ist, dann löscht der Ausgang eines ODER-Gates 925, verbunden mit einem Lösch-Eingang des Bit-Zählers 921, das Signal BIT_CNTR[5:0].The output shift state machine 920 provides an increment counter signal INC_CNTR to the bit counter 921 , When the INC_CNTR signal is asserted, the bit counter increases 921 the value represented by the signal BIT_CNTR [5: 0]. When a load counter signal LOAD_CNTR is asserted or when the RST signal is asserted, the output of an OR gate clears 925 , connected to a clear input of the bit counter 921 , the signal BIT_CNTR [5: 0].

Das Signal BIT_CNTR[5:0] wird zu dem Auswahl-Eingang eines Multi-Bit-Multiplexers 924 geliefert, der das Signal CSOD_O liefert. Der nullte bis elfte Eingang des Multiplexers 924 empfangen die LED-Steuer-Signale LEDS[11:0]. Der zwölfte bis fünfzehnte Eingang des Multiplexers 924 empfangen Ausgangs-Signale GPOA[3:0] für allgemeine Zwecke. Der sechszehnte bis einundzwanzigste Eingang empfangen die Reset-Signale RST#[5:0]. Der zweiundzwanzigste bis siebenundzwanzigste Eingang empfangen die Takt-Freigabe-Signale CLKEN#[5:0]. Der achtundzwanzigste bis dreiunddreißigste Eingang empfangen die Bus-Freigabe-Signale BUSEN[5:0]. Der vierunddreißigste bis neununddreißigste Eingang empfangen die Energie-Freigabe-Signale PWREN[5:0].The signal BIT_CNTR [5: 0] becomes the select input of a multi-bit multiplexer 924 supplied, which provides the signal CSOD_O. The zeroth to eleventh input of the multiplexer 924 receive the LED control signals LEDS [11: 0]. The twelfth to fifteenth input of the multiplexer 924 receive output signals GPOA [3: 0] for general purpose. The sixteenth to twenty-first inputs receive the reset signals RST # [5: 0]. The twenty-second to twenty-seventh inputs receive the clock enable signals CLKEN # [5: 0]. The twenty-eighth to thirty-third inputs receive the bus enable signals BUSEN [5: 0]. The thirty-fourth to thirty-ninth inputs receive the power enable signals PWREN [5: 0].

Wie in den 35AB dargestellt ist, tritt die Ausgangs-Verschiebe-Zustand-Maschine 920 in einen IDLE Zustand ein, wenn das Signal RST aufgestellt ist. Falls das Signal SO_UPDATE aufgestellt ist, dann geht die Ausgangs-Verschiebe-Zustand-Maschine 920 von dem IDLE Zustand zu einem SHIFT1 Zustand über.As in the 35A - B is shown, the output shift state machine enters 920 in an IDLE state when the RST signal is asserted. If the SO_UPDATE signal is asserted, then the output shift state machine goes 920 from the IDLE state to a SHIFT1 state.

Da die Ausgangs-Verschiebe-Zustand-Maschine 920 an der positiven Flanke des PCI-Takt-Signals CLK getaktet wird, geht die Ausgangs-Verschiebe-Zustand-Maschine 920 über einen SHIFT1 Zustand, einen SHIFT2 Zustand, einen SHIFT3 Zustand und einen SHIFT4 Zustand hindurch, um das Takt-Signal CSOSC_O zu erzeugen, das ein viertel der Frequenz des Takt-Signals CLK ist. Während des SHIFT1- und SHIFT2-Zustands wird das Takt-Signal CSOSC_O negiert und auf niedrig gesetzt, und während des SHIFT3 und SHIFT4 Zustands wird das Taktsignal CSOSC_O aufgestellt oder auf hoch gesetzt. Wenn die momentane Verschiebe-Phase abgeschlossen ist, wie dies durch das Aufstellen des Signals MAXCNT angezeigt ist, kehrt die Verschiebe-Zustand-Maschine 920 zu dem IDLE Zustand zurück und das Takt-Signal CSOSC_O wird, bis zu dem Beginn der nächsten Verschiebe-Phase, aufgestellt.Since the output shift state machine 920 is clocked on the positive edge of the PCI clock signal CLK, the output shift state machine goes 920 via a SHIFT1 state, a SHIFT2 state, a SHIFT3 state, and a SHIFT4 state to produce the clock signal CSOSC_O that is one quarter of the frequency of the clock signal CLK. During the SHIFT1 and SHIFT2 states, the clock signal CSOSC_O is negated and set low, and during the SHIFT3 and SHIFT4 states, the clock signal CSOSC_O is asserted or set high. When the current shift phase is completed, as indicated by the assertion of the MAXCNT signal, the shift state machine returns 920 to the IDLE state and the clock signal CSOSC_O is asserted until the beginning of the next shift phase.

Wie in 36 dargestellt ist, wird ein Signal HANG_PEND durch den Lösch-Eingang des Registers 80 empfangen. Das Aufstellen, oder Ansteuern auf hoch, des HANG_PEND Signals asynchron löscht die geeigneten Ausgangs-Steuer-Signale POUT[39:0], um alle Schlitze 36 energiemäßig herunterzufahren, wenn sich der PCI-Bus 32 in einem verriegelten Zustand befindet, wie dies weiter nachfolgend beschrieben ist.As in 36 is shown, a signal HANG_PEND by the clear input of the register 80 receive. Setting up, or driving high, of the HANG_PEND signal asynchronously clears the appropriate output control signals POUT [39: 0] to all slots 36 shut down energetically when the PCI bus 32 is in a locked state, as further described below.

FEHLER-ISOLATIONFAULT ISOLATION

Der Bus-Beobachter bzw. Watcher 129 kann einen fehlerhaften bzw. hängenden Zustand auf dem sekundären PCI-Bus 32 erfassen. Falls ein hängender Zustand erfasst wird, stellt der Bus-Beobachter 129 ein Bus-Hängend-Anhängigkeits-Bit ein, das bewirkt, dass die SIO 50 die Schlitze bzw. Einsteckplätze auf dem sekundären PCI-Bus 32 energiemäßig herunterfährt, und eine nicht-maskierbare Unterbrechung (Non-Mascable Interrupt – NMI) wird zu der CPU 14 übertragen. Die CPU 14 spricht auf die NMI durch aufrufen eines NMI-Programms an, um den Schlitz (die Schlitze), die den hängenden Zustand verursachen, zu isolieren. Wenn einmal der defekte Schlitz bzw. die defekten Schlitzen identifiziert sind, werden sie gesperrt oder energiemäßig abgeschaltet.The bus observer or watcher 129 may be a faulty or hanging state on the secondary PCI bus 32 to capture. If a hanging condition is detected, the bus observer issues 129 a Bus Hanging Pending bit which causes the SIO 50 the slots or slots on the secondary PCI bus 32 power down, and a Non-Maskable Interrupt (NMI) becomes the CPU 14 transfer. The CPU 14 Reaches the NMI by invoking an NMI program to isolate the slot (s) causing the hanging state. Once the defective slot (s) are identified, they are disabled or turned off by the power.

Für Software-Diagnostik-Zwecke umfasst der Bus-Beobachter 129 in dem ausgangsseitigen Brücken-Chip 48 einen Bus-Historie-FIFO und einen Bus-Vektor-FIFO. Wenn der sekundäre PCI-Bus 32 geeignet funktioniert, werden die Bus-Historie-Informationen, die eine Adressen-Gruppe (umfassend die PCI-Adresse, die PCI-Befehls-Signale, die PCI-Master-Zahl und das Adressen-Paritäts-Bit) und eine Daten-Gruppe (umfassend die PCI-Daten, die Byte-Freigabe-Signale C/BE[3:0]_, ein Paritäts-Fehler-Signal PERR_, das Daten-Paritäts-Bit, ein Burst-Zyklus-Indikations-Bit und ein Daten-Gültigkeits-Zeichen) durch den Bus-Beobachter 129 bei jeder Transaktion aufgezeichnet. Wenn das PCI-Signal FRAME_ auf dem sekundären PCI-Bus 32 aufgestellt ist, um eine Bus-Transaktion zu starten, werden die Adressen-Gruppe und jede darauffolgende Daten-Gruppe in dem Bus-Hinstorie-FIFO gespeichert. Wenn die Transaktion eine Burst-Transaktion ist, dann wird das Burst-Zyklus-Indikations-Bit auf aktiv in der zweiten Daten-Phase gesetzt. Nach der ersten Datenphase wird das Adressen-Feld in der Adressen-Gruppe, zugeordnet der darauffolgenden Datengruppe in der Burst-Transaktion, um vier erhöht, und die neue Adressen-Gruppe und die Datengruppe werden in der nächsten Stelle des Bus-Hinstorie-FIFO gespeichert. Falls Daten nicht übertragen werden, da ein Zustand eines erneuten Versuchs oder ein Zustand einer Unterbrechung ohne Daten vorliegt, wird das Gültigkeits-Daten-Indikations-Bit auf niedrig gesetzt.For software diagnostic purposes, the bus observer includes 129 in the output side bridge chip 48 a bus history FIFO and a bus vector FIFO. If the secondary PCI bus 32 works properly, the bus history information, which is an address group (comprising the PCI address, the PCI command signals, the PCI master number and the address parity bit) and a data group ( comprising the PCI data, the byte enable signals C / BE [3: 0] _, a parity error signal PERR_, the data parity bit, a burst cycle indication bit, and a data validity Sign) by the bus watcher 129 recorded at every transaction. If the PCI signal is FRAME_ on the secondary PCI bus 32 is set up to start a bus transaction, the address group and each subsequent data group are stored in the Bus Hinstorie FIFO. If the transaction is a burst transaction, then the burst cycle indication bit is set active in the second data phase. After the first data phase, the address field in the address group associated with the subsequent data group in the burst transaction is incremented by four, and the new address group and data group are stored in the next location of the bus random FIFO , If data is not transmitted because there is a retry state or a no-interrupt state, the validity data indication bit is set low.

Sowohl die Adressen-Gruppe als auch die Daten-Gruppe fließen durch eine 2-Stufen-Pipeline, um Zeit für die Daten-Gruppe zuzulassen, um das Daten-Paritäts-Bit und das Daten-Paritäts-Fehler-Bit zu sammeln, und den Aufzeichnungsvorgang zu stoppen, wenn ein Daten-Paritäts-Fehler auftritt, bevor die nächste Adressen-Gruppe gespeichert wird. Falls der Bus in der Mitte einer Schreib-Daten-Phasen hängt, werden die Daten gespeichert, und ein Bus-Hängend-Status-Bit wird in einem Bus-Hängen-Indikations-Register 482 (42), zugänglich über einen Kofigurations-Raum, eingestellt. Falls der Bus in der Mitte einer Lese-Daten-Phase hängt, werden die Daten als nicht gültig markiert, und das Bus-Hängend-Bit wird eingestellt.Both the address group and the data group flow through a 2-stage pipeline to allow time for the data group to collect the data parity bit and the data parity error bit, and the Stop recording if a data parity error occurs before the next address group is saved. If the bus hangs in the middle of a write data phase, the data is stored and a bus hanging status bit is placed in a bus hang indication register 482 ( 42 ), accessible via a Kofigurations room, set. If the bus hangs in the middle of a read data phase, the data is marked invalid and the bus hanging bit is set.

Bus-Zustands-Vektoren werden in dem Bus-Vektor-FIFO zusammengestellt und gespeichert, umfassend die folgenden PCI-Steuer-Signale: Schlitz-Anforderungs-Signale REQ[7:0]_; Schlitz-Erteilungs-Signale GNT[7:0]_; das FRAME_ Signal; das PCI-Vorrichtungs-Auswahl-Signal DEVSEL_; das PCI-Initiator-Bereitschafts-Signal IRDY_; das PCI-Target-Bereitschafts-Signal TRDY_; das Stopp_ Signal; das PCI-Paritäts-Fehler-Signal PERR_; das PCI-System-Fehler-Signal SERR_; und das LOCK_ Signal. An jedem PCI-Takt, in dem sich der Bus-Zustands-Vector ändert, d. h. irgendeines der aufgelisteter; Signale ändert einen Zustand, wird der neue Vector in den Bus-Vektor-FIFO hineingespeichert.Bus state vectors are compiled and stored in the bus vector FIFO, comprising the following PCI control signals: slot request signals REQ [7: 0] _; Slot grant signals GNT [7: 0] _; the FRAME_ signal; the PCI device selection signal DEVSEL_; the PCI initiator ready signal IRDY_; the PCI target ready signal TRDY_; the stop_ signal; the PCI parity error signal PERR_; the PCI system error signal SERR_; and the LOCK_ signal. At every PCI clock, in which the Bus State Vector changes, d. H. any of the listed ones; Signals changes a state, the new Vector cached in the Bus Vector FIFO.

Der Bus-Beobachter 129 umfasst einen Watch-Dog-Zeitgeber 454 (40), um zu bestimmen, ob sich der sekundäre Bus 32 verriegelt hat. Falls der Watch-Dog-Zeitgeber 554 abläuft, dann hat der Bus 32 gehangen. Das folgende sind Beispiele von Bus-Hängend-Zuständen, die durch den Watch-Dog-Zeitgeber 454 erfasst werden können: Das FRAME_ Signal wird auf hoch oder niedrig gesetzt; das Signal TRDY_ wird nicht in Abhängigkeit von IRDY_ aufgestellt; der PCI-Arbitrierer 124 erteilt nicht den Bus zu irgendeinem Master; und ein Master, der den Bus 32 anfordert, behält bei, es zu versuchen.The bus watcher 129 includes a watchdog timer 454 ( 40 ) to determine if the secondary bus 32 has locked. If the watchdog timer 554 expires, then the bus has 32 hung. The following are examples of bus hanging states that are triggered by the watchdog timer 454 can be detected: the FRAME_ signal is set high or low; the signal TRDY_ is not established in response to IRDY_; the PCI arbitrator 124 do not give the bus to any master; and a master who drives the bus 32 request, keep trying.

Wenn der Watch-Dog-Zeitgeber 454 abläuft, wird das Bus-Hängend-Anhängigkeits-Bit auf aktiv in dem Bus-Hängend-Indikations-Register 482 gesetzt. Wenn das Bus-Hängend-Anhängigkeits-Bit auf aktiv gesetzt ist, gibt es den Bus-Beobachter 129 frei. Als nächstes werden die Schlitz-Freigabe-Bits in der SIO 50 gelöscht, was bewirkt, dass die Schlitze energiemäßig heruntergefahren werden. Die SIO 50 stellt dann das System-Fehler-Signal SERR_ auf.If the watchdog timer 454 expires, the Bus Hanging Pending bit becomes active in the Bus Hanging Indication Register 482 set. If the Bus Hanging Pending bit is set active, there is the Bus Watcher 129 free. Next, the slot enable bits in the SIO 50 cleared, which causes the slots to be shut down by energy. The SIO 50 then sets the system error signal SERR_.

Um die Ursache eines Bus-Hängend-Zustands zu isolieren, bewirkt das System-Fehler-Signal SERR_, dass die Unterbrechungs-Logik in dem System die NMI zu der CPU 14 ausgibt. Wie 37 zeigt, bestimmt der NMI-Handler zuerst, 400, ob das Bus-Hängend-Anhängigkeits-Bit eingestellt ist, durch Lesen des Bus-Hängend-Indikations-Registers 482. Falls dies der Fall ist, ruft der NMI-Handler, 401, einen BIOS-Isolations-Handler zum Isolieren des defekten Schlitzes bzw. Einsteckplatzes oder der defekten Schlitze auf. Ansonsten werden andere NMI-Prozeduren aufgerufen, 402.To isolate the cause of a bus hanging condition, the system error signal SERR_ causes the interrupt logic in the system to move the NMI to the CPU 14 outputs. As 37 shows, the NMI handler first determines 400 Whether the Bus Hanging Pending bit is set by reading the Hanging Bus Indication Register 482 , If so, the NMI handler calls, 401 , a BIOS isolation handler for isolating the defective slot or slots. Otherwise, other NMI procedures are called, 402 ,

Als ein Fehler-Sicherheits-Mechanismus umfasst das Computersystem auch den Automatik-Server-Wiederherstellungs-(Automatic Server Recovery – ASR)Zeitgeber 72, der gelöscht wird, wenn bestimmte Software-Programme durch das Betriebssystem ausgeführt werden. Falls der ASR-Zeitgeber abläuft (z. B. nach 10 Minuten), zeigt dies an, dass sich das Betriebssystem verriegelt hat. Der sekundäre PCI-Bus 32, der hängt, kann die Ursache der System-Verriegelung sein, wobei in einem solchen Fall der NMI niemals zu der CPU 14 gehen kann. Falls der ASR-Zeitgeber abläuft, dann tritt ein ASR-erzeugtes Reboot auf. Der ASR-Zeitgeber stellt auch sicher, dass, falls sich der BIOS-Isolations-Handler in der Mitte einer Isolation eines Fehler-Schlitzes auf dem PCI-Bus 32 befindet, und das Computer-System hängt, um ein ASR-Reboot zu verursachen, das Isolations-Programm dort weiterfahren kann, wo es unmittelbar vor dem ASR-Time-Out-Ereignis gelassen wurde.As an error-security mechanism, the computer system also includes the automatic server recovery (ASR) timer 72 which is cleared when certain software programs are executed by the operating system. If the ASR timer expires (for example, after 10 minutes), it indicates that the operating system has locked. The secondary PCI bus 32 Hanging can be the cause of the system lock, in which case the NMI never goes to the CPU 14 can go. If the ASR timer expires, then an ASR-generated reboot occurs. The ASR timer also ensures that if the BIOS isolation handler is in the middle of isolation of an error slot on the PCI bus 32 In order to cause an ASR reboot, the isolation program may hang and the computer system hangs on where it was left just before the ASR time-out event.

Wie 38 zeigt, wird ein BIOS ASR Handler in Abhängkeit eines ASR-Reboot Zustands aufgerufen. Der ASR-Handler prüft zuerst, 444, um zu bestimmen, ob eine Isolations-In-Progress-Ereignis-Variable (EV) aktive Informationen enthält, die anzeigen, dass der Isolations-Prozess vor dem ASR-Time-Out-Ereignis im Fortschreiten war. Das Isolations-In-Progress-EV wird in einem nicht-flüchtigen Speicher (NVRAM) 70 gespeichert und umfasst Header-Informationen, die auf aktiv gesetzt werden, um anzuzeigen, dass der Isolations-Prozess gestartet wurde. Das Isolations-In-Progress-EV wird auch mit dem momentanen Zustand des Isolations-Prozesses aktualisiert, umfassend die Schlitze bzw. Einsteckplätze, die geprüft worden sind, die Schlitze, die defekt sind, und die Schlitze, die freigegeben worden sind.As 38 indicates a BIOS ASR handler is called in response to an ASR reboot state. The ASR handler first checks 444 to determine if an isolation in progress event variable (EV) contains active information indicating that the isolation process was in progress prior to the ASR time out event. Isolation-In-Progress-EV is stored in non-volatile memory (NVRAM) 70 and includes header information that is set to active to indicate that the isolation process has started. The isolation-in-progress EV is also updated with the current state of the isolation process, including the slots that have been tested, the slots that are broken, and the slots that have been released.

Falls der Isolations-Prozess im Fortschreiten war, gibt der BIOS-ASR-Handler wieder alle Schlitze frei, 448, mit Ausnahme solcher, die unmittelbar vor dem ASR-Ereignis freigegeben wurden, was aus dem Isolations-In-Progress-EV bestimmt wird. Die freigegebenen Schlitze vor dem ASR-Reboot waren wahrscheinlich die Ursache der ASR-Durchsicht. Als Folge werden diese Schlitze gesperrt (d. h. energiemäßig heruntergefahren). Als nächstes werden die Zahlen der gesperrten Schlitze als Fehler-Status-Informationen protokolliert, 450, gespeichert in dem NVRAM, und das Isolations-In-Progress-EV wird gelöscht. Der BIOS-ASR-Handler prüft dann, 452, um zu bestimmen, ob das Bus-Hängend-Anhängigkeits-Bit eingestellt ist. Falls dies der Fall ist, wird das Bus- Hängend-Anhängigkeits-Bit gelöscht (unter Durchführen eines I/O-Zyklus auf dem sekundären PCI-Bus 32), um den Bus-Beobachter 129 wieder freizugeben.If the isolation process was in progress, the BIOS ASR handler releases all slots again, 448 with the exception of those released immediately prior to the ASR event, which is determined from the isolation in progress EV. The released slots prior to the ASR reboot were probably the cause of the ASR review. As a result, these slots are disabled (ie powered down). Next, the numbers of locked slots are logged as error status information, 450 stored in the NVRAM and the isolation in progress EV is cleared. The BIOS ASR handler then checks 452 to determine if the Bus Hanging Pending bit is set. If so, the Bus Hanging Pending bit is cleared (performing an I / O cycle on the secondary PCI bus 32 ) to the bus watcher 129 release again.

Falls das Isolations-In-Progress-EV nicht in den aktiven Zustand eingestellt ist, 444, anzeigend, dass der Isolations-Prozess nicht lief, als das ASR-Ereignis auftrat, prüft das Programm, 446, um zu bestimmen, ob das Bus-Hängend-Anhängigkeits-Bit eingestellt ist. Falls nicht, dann wird der BIOS-ASR-Handler vorgenommen. Falls das Bus-Hängend-Anhängigkeits-Bit eingestellt ist, 446, was anzeigt, dass ein Bus-Hängend-Zustand aufgetreten ist, und zwar vor dem ASR-Ereignis, ruft der BIOS-ASR-Handler den BIOS-Isolations-Handler auf, um den Fehler-Schlitz oder Schlitze zu isolieren.If the isolation in progress EV is not set to the active state, 444 Indicating that the isolation process was not running when the ASR event occurred, the program checks 446 to determine if the Bus Hanging Pending bit is set. If not, then the BIOS ASR handler is made. If the Bus Hanging Pending bit is set, 446 indicating that a bus-hang condition has occurred prior to the ASR event, the BIOS ASR handler calls the BIOS isolation handler to isolate the error slot or slots.

Wie 39 zeigt, protokolliert der Isoaltions-Handler zuerst, 408, zu dem Fehler-Status-Informations-Bereich des NVRAM die Bus-Historie- und Bus-Zustand-Vektor-Informationen, gespeichert in den Historie- und Vektor-FIFOs, in dem Bus-Monitor 127. Die Bus-Historie- und Bus-Zustand-Vektor-FIFOs werden gelesen und deren Inhalte werden zu dem NVRAM übertragen. Als nächstes werden die Header-Informationen der Isolation-In-Progress-Ereignis-Variable eingestellt, 410, um anzeigen, dass sich der Isoaltions-Prozess beim Fortschreiten befindet. Das Bus-Hängend-Anhängigkeits-Bit wird gelöscht (durch Schreiben zu einer vorbestimmten Konfigurations-Adresse), um den Bus-Watcher bzw. -Beobachter 129 wieder freizugeben. Als nächstes gibt das Isolations-Programm den zuerst belegten Schlitz bzw. Einsteckplatz (d. h. ein Schlitz, mit dem eine PCI-Vorrichtung verbunden ist) wieder frei (d. h. fährt es energiemäßig hoch), 412, und liest und schreibt von dem PCI-Konfigurations-Raum der Vorrichtung. Ein Schlitz wird durch Schreiben zu dem Schlitz-Freigabe-Register 817 (29) wieder freigegeben. Als nächstes bestimmt das Programm 414, ob das Bus-Hängend-Anhängigkeits-Bit auf aktiv gesetzt ist, was anzeigt, dass die Vorrichtung, verbunden mit dem Schlitz, verursachte, dass der Bus hängt, während davon gelesen wurde. Falls dies nicht der Fall ist, bestimmt das Programm, 416, ob alle belegten Schlitze geprüft worden sind. Falls dies nicht der Fall ist, wird der erste, belegte Schlitz, gesperrt, 418, und das Isolation-In-Progress-EV wird aktualisiert, 420, um anzuzeigen, dass der erste, belegte Schlitz erneut durch den BIOS-Isolations-Handler versucht worden ist. Falls das Programm bestimmt, 414, dass das Bus-Hängend-Anhängigkeits-Bit auf aktiv gesetzt ist, wird der Schlitz als ausgefallen angezeigt (z. B. durch Einstellen auf aktiv eines Ausfall-Zeichens für diesen Schlitz), und zwar in dem Ausfall-Status-Informations-Bereich des NVRAM. Als nächstes wird die Schleife, die aus den Schritten 412, 414, 416, 418 und 420 besteht, durchgeführt, bis alle belegten Schlitze geprüft worden sind.As 39 shows, the isoaltion handler first logs 408 to the error status information area of the NVRAM, the bus history and bus state vector information stored in the history and vector FIFOs in the bus monitor 127 , The bus history and bus state vector FIFOs are read and their contents are transferred to the NVRAM. Next, the header information of the isolation-in-progress event variable is set, 410 to indicate that the isoaltion process is progressing. The bus hanging pending bit is cleared (by writing to a predetermined configuration address) to the bus watcher 129 release again. Next, the isolation program releases the first occupied slot (ie, a slot to which a PCI device is connected) (ie, powers it up), 412 , and reads and writes from the PCI configuration space of the device. A slot is written to the slot enable register 817 ( 29 ) released again. Next, the program determines 414 Whether the Bus Hanging Pending bit is set active, indicating that the device connected to the slot caused the bus to hang while reading from it. If this is not the case, the program determines 416 whether all occupied slots have been checked. If this is not the case, the first, occupied slot, locked, 418 , and the isolation-in-progress EV is updated, 420 to indicate that the first occupied slot has been retried by the BIOS isolation handler. If the program certainly, 414 in that the Bus Hanging Pending bit is set active, the slot is indicated as failed (eg, by setting active to a Failure Flag for that slot) in the Failure Status Information Area of the NVRAM. Next, the loop that comes out of the steps 412 . 414 . 416 . 418 and 420 completed until all occupied slots have been tested.

Falls alle belegten Schlitze geprüft worden sind, 416, nimmt das Programm eine Prüfung vor, 424, um zu bestimmen, ob irgendein Schlitz als ausgefallen in dem Ausfall-Status-Informations-Bereich des NVRAM angezeigt ist. Falls dies der Fall ist, gibt das Programm 398 erneut nur die nicht ausgefallenen Schlitze frei, 426. Dann wird das Isolation-In-Progress-EV gelöscht, 428, und das BIOS-Isolations-Programm wird abgeschlossen.If all occupied slots have been checked, 416 , the program will carry out an examination 424 to determine if any slot is indicated as failed in the failure status information area of the NVRAM. If this is the case, the program returns 398 again only the non-failed slots free, 426 , Then the isolation in progress EV is cleared, 428 and the BIOS isolation program will complete.

Falls keiner der Schlitze als ausgefallen angezeigt ist, 424, dann zeigt dies an, dass der Bus-Hängend-Zustand nicht durch einen einzelnen Schlitz verursacht worden ist, sondern kann durch mehr als eine Vorrichtung, die zu diesem selben Zeitpunkt aktiv sind, verursacht sein. Um dies zu bestätigen, sperrt der BIOS-Isolations-Handler zuerst alle Schlitze (d. h. fährt sie energiemäßig herunter), 430, und aktualisiert das Isolation-In-Progress-EV mit diesen Informationen. Als nächstes löscht der BIOS-Isolations-Handler 431 eine Zähl-Variable N auf 0 und stellt eine Zähl-Variable I auf den Wert von N ein. Die Zähl-Variable N stellt die Zählung der belegten Schlitze dar.If none of the slots are indicated as failed, 424 , then this indicates that the bus hanging state has not been caused by a single slot but may be caused by more than one device active at that same time. To confirm this, the BIOS isolation handler first locks all slots (ie shuts them down by power), 430 , and updates the isolation-in-progress EV with this information. Next, the BIOS Isolation Handler clears 431 a count variable N to 0 and sets a count variable I to the value of N. The count variable N represents the count of occupied slots.

Der BIOS-Isolations-Handler gibt wieder den belegten Schlitz I (der zu Anfang Schlitz N ist) frei (d. h. fährt ihn energiemäßig hoch), 432, und liest und schreibt zu diesem PCI-Konfigurations-Raum. Der Handler prüft dann, 438, um zu bestimmen, ob das Bus-Hängend-Anhängigkeits-Bit eingestellt ist. Falls dies nicht der Fall ist, verringert der Handler 433 die variable I und prüft, 434, ob die Variable I größer als oder gleich zu null ist. Falls dies der Fall ist, aktualisiert der Handler 435 das Isolations-In-Progress-EV und gibt wieder den nächsten, belegten Schlitz I frei, 432, und liest und schreibt mit diesem. Der Handler prüft dann, 438, ob das Bus-Hängend-Anhängigkeits-Bit für diesen nächsten Schlitz eingestellt ist. Auf diese Art und Weise werden, für jeden Schlitz N, der freigegeben werden soll, die vorher freigegebenen Schlitze auch energiemäßig, einer zu einem Zeitpunkt, hochgefahren, um zu bestimmen, ob eine Kombination von Schlitzen den Fehler verursacht.The BIOS isolation handler again releases the occupied slot I (which is initially slot N) (ie, energizes it up), 432 , and reads and writes to this PCI configuration space. The handler then checks 438 to determine if the Bus Hanging Pending bit is set. If this is not the case, the handler decreases 433 the variable I and checks 434 whether the variable I is greater than or equal to zero. If so, the handler updates 435 the isolation-in-progress EV and release the next, occupied slot I again, 432 , and reads and writes with this. The handler then checks 438 Whether the Bus Hanging pending bit is set for this next slot. In this way, for each slot N to be released, the previously enabled slots are also powered up, one at a time, to determine whether a combination of slots is causing the error.

Falls die Variable I dahingehend bestimmt ist, 434, dass sie geringer als Null ist, dann prüft der Handler 436, um zu bestimmen, ob alle belegten Schlitze freigegeben worden sind. Falls dies nicht der Fall ist, wird die Variable N erhöht, 437, das Isolation-In- Progress-EV wird aktualsiert, 439, und die Variable I wird wieder eingestellt, 441, und zwar gleich zu dem Wert von N.If variable I is determined to 434 that it is less than zero, then checks the handler 436 to determine if all occupied slots have been released. If this is not the case, the variable N is increased, 437 , the isolation-in-progress EV is updated, 439 , and the variable I is reset, 441 , equal to the value of N.

Falls das Bus-Hängend-Anhängigkeits-Bit auf aktiv gesetzt ist, 438, dann werden potentiell zwei Schlitze gesperrt, 440: Schlitz N (der der Schlitz ist, der momentan freigegeben ist), und Schlitz I (der der Schlitz ist, von dem momentan gelesen und zu dem momentan geschrieben wird). Falls die Werte von I und N dieselben sind, dann wird nur Schlitz N gesperrt.If the Bus Hanging Pending bit is set active, 438 , then potentially two slots are blocked, 440 Slot N (which is the slot currently enabled) and slot I (which is the slot from which is currently being read and to which is currently being written). If the values of I and N are the same, then only slot N is disabled.

Falls der Handler bestimmt, 436, dass alle belegten Schlitze freigegeben worden sind (und ein Fehler nicht identifiziert werden konnte), dann lockt der Handler den NVRAM seine Unfähigkeit ein, 442, um den Fehler zu isolieren. Als nächstes löscht der Handler 428 das Isolation-In-Progress-EV.If the handler determines 436 that all occupied slots have been freed (and an error could not be identified), then the handler lures the NVRAM to its inability to 442 to isolate the error. Next, the handler clears 428 the isolation-in-progress EV.

Wie 40 zeigt, liefert der Watch-Dog-Zeitgeber 454 Ausgangs-Signale WD_TMR_OUT[17:0] (Zeitgeber-Zähl-Wert), HANG_PEND (Bus-Hängend-Zustand ist vorhanden), EN_CAP (die Software einer Erfassung der Bus-Vektor-Historie-Information ist freigegeben), TIME_OUT (der Watch-Dog-Zeitgeber 454 ist abgelaufen), ein Signal HANG_RCOVR_EN (eingestellt auf Hoch durch die Software, um die Hang-Recovery-Logik in dem Bus-Watcher 129 und in dem SIO 50 freizugeben), und ein Signal CAP_ILLEG_PROT (um einen illegalen Zyklus auf dem PCI-Bus 32 anzuzeigen).As 40 shows, provides the watchdog timer 454 Output signals WD_TMR_OUT [17: 0] (timer count value), HANG_PEND (bus suspended state is present), EN_CAP (the bus vector history information detection software is enabled), TIME_OUT (the watch -Dog timer 454 has expired), a signal HANG_RCOVR_EN (set high by the software to the hang recovery logic in the bus watcher 129 and in the SIO 50 release), and a signal CAP_ILLEG_PROT (to an illegal cycle on the PCI bus 32 display).

Das Signal HANG_PEND wird zu der SIO 50 geliefert, um die Sekundär-Bus-Schlitze zu schließen. Die Eingangs-Signale zu dem Watch-Dog-Zeitgeber 454 umfassen einige der PCI-Bus-Signale, ein Signal WRT_EN_CAP_1 (gepulst auf Hoch durch die Software, um erneut die Erfassung der Bus-Historie- und Bus-Vektor-Informationen durch den Fehler-Isolations-Block 129 freizugeben), und ein Energie-Good-Indikator-Signal SYNC_POWEROK (was anzeigt, dass Energie zu dem Computer-System stabil ist).The signal HANG_PEND becomes the SIO 50 delivered to close the secondary bus slots. The input signals to the watchdog timer 454 For example, some of the PCI bus signals include a signal WRT_EN_CAP_1 (pulsed high by the software to again detect the bus history and bus vector information through the error isolation block 129 release) and an energy good indicator signal SYNC_POWEROK (indicating that power to the computer system is stable).

Eine Bus-Hängend-Zurückgewinnungs-Zustand-Maschine 456 empfängt die Signale HANG_PEND, TIME_OUT und HANG_RCOVR_EN von dem Watch-Dog-Zeitgeber 454. Die Zurückgewinnungs-Zustand-Maschine 456 empfängt auch einige der PCI-Signale. Die Ausgangs-Signale von der Bus-Hängend-Zurückgewinnungs-Zustand-Maschine 456 umfassen ein Vorrichtungs-Auswahl-Signal DEVSEL_O zum Ansteuern des PCI-Signal DEVSEL_, ein Signal STOP_O zum Ansteuern des PCI-Signal STOP_, ein Signal SERR_EN, das ein Aufstellen des System-Fehler-Signals SERR_ freigibt, ein Signal BR_M_ABORT (was anzeigt, dass sich der Bus-Watcher 129 mit einem Master-Abort wieder hergestellt hat) ein Signal BR_T_ABORT, das anzeigt dass sich der Bus-Watcher 129 mit einem Target-Abort wieder hergestellt hat), und ein Signal RCOVR_ACTIVE (zum Anzeigen, wenn die Bus-Hängend-Zurückgewinnungs-Zustand-Maschine 456 aktiv ist). Die Bus-Hängend-Zurückgewinnungs-Zustand-Maschine 456 stellt sicher, dass der sekundäre PCI-Bus 32 zurück zu dem Leerlauf- bzw. IDLE Zustand gebracht wird, um der Software zu ermöglichen, den Fehler-Schlitz bzw. -Einsteckplatz zu isolieren. Wenn der Hang-Zustand erfasst ist, fährt die ISO 50 die sekundären Bus-Schlitze herunter, was automatisch den Bus 32 in den Leerlauf-Zustand versetzten würde, falls einer der Schlitz-Vorrichtungen der Bus-Master war, wenn der Hang-Zustand auftrat. Allerdings würde dann, wenn eine der Schlitz-Vorrichtungen das Target war (und der Brücken-Chip 48 der Master war), wenn das Bus-Hangen auftrat, dann der Brücken-Chip 48 an dem Bus verbleiben. Um den Brücken-Chip aus dem Bus herauszunehmen, erzwingt die Zurückgewinnungs-Zustand-Maschine 456 einen Zyklus für einen erneuten Versuch auf dem PCI-Bus 32 durch Aufstellen des Signals STOP.A Bus Hanging Recovery Condition Machine 456 receives the signals HANG_PEND, TIME_OUT and HANG_RCOVR_EN from the watchdog timer 454 , The Recovery State Machine 456 also receives some of the PCI signals. The output signals from the Bus Hanging To recovery state machine 456 comprise a device select signal DEVSEL_O for driving the PCI signal DEVSEL_, a signal STOP_O for driving the PCI signal STOP_, a signal SERR_EN enabling a setting of the system error signal SERR_, a signal BR_M_ABORT (indicating that is the bus watcher 129 with a master abort has restored) a signal BR_T_ABORT indicating that the bus watcher 129 with a target abort), and a signal RCOVR_ACTIVE (to indicate when the Bus Hanging Recovery State Machine 456 is active). The Bus Hanging Recovery State Machine 456 Make sure the secondary PCI bus 32 is returned to the idle state to allow the software to isolate the error slot. When the hang state is detected, the ISO moves 50 the secondary bus slots down, which automatically disconnects the bus 32 in the idle state if one of the slot devices was the bus master when the hang state occurred. However, if one of the slot devices was the target (and the bridge chip 48 the master was), if the bus hang occurred, then the bridge chip 48 remain on the bus. To take the bridge chip out of the bus, the recovery state machine is forced 456 one cycle for a retry on the PCI bus 32 by setting up the signal STOP.

Ein Bus-Historie-Erfassungs-Block 458 überwacht den PCI-Bus 32 hinsichtlich Transaktionen und liefert die Bus-Historie-Informationen (umfassend die Adresse und die Daten) weiter zu Ausgangs-Signalen BUS_HIST_DATA3[31:0] (die Bus-Historie-Adresse), BUS_HIST_DATA2[31:0] (die Bus-Historie-Daten) und BUS_HIST_DATA1[15:0] (Paritäts-Fehler-Signal !PERR_, Paritäts-Bit-PAR, Gültigkeits-Daten-Bit VALID_DAT, Adressen-Paritäts-Bit ADDRPAR, Burst-Indikator BURST, Master-Zahl MASTER[2:0], Byte-Freigabe-Bits CBE[3:0]_, und Befehl-Bits CMD[3:0]). Der Bus-Historie-Erfassungs-Block 458 stellt ein Signal HIS_RDY auf, wenn Daten auf den BUS_HIST_DATA Signalen verfügbar sind, was der Fall an dem Ende jeder Daten-Phase in einer normalen Transaktion ist, oder falls die Transaktion mit einer Master-Aussonderung, einem erneuten Versuch, beendet wird, und zwar während des Aufstellens des Time-Out-Signals TIME_OUT.A bus history capture block 458 monitors the PCI bus 32 in terms of transactions, and supplies the bus history information (including the address and the data) to output signals BUS_HIST_DATA3 [31: 0] (the bus history address), BUS_HIST_DATA2 [31: 0] (the bus history). Data) and BUS_HIST_DATA1 [15: 0] (parity error signal! PERR_, parity bit PAR, validity data bit VALID_DAT, address parity bit ADDRPAR, burst indicator BURST, master number MASTER [2: 0], byte enable bits CBE [3: 0] _, and command bits CMD [3: 0]). The Bus History Collection Block 458 asserts a HIS_RDY signal if data is available on the BUS_HIST_DATA signals, which is the case at the end of each data phase in a normal transaction, or if the transaction is terminated with a master retirement, a retry during the setup of the time-out signal TIME_OUT.

Ein Bus-Vektor-Erfassungs-Block 460 erfasst die Zustände von bestimmten PCI-Steuersignalen, wenn irgendeines dieser Steuersignale seinen Zustand ändert. Der Vektor wird erfasst und als Signal BUS_VECT_DATA[20:0] ausgegeben, die die Anforderungs-Signale !REQ[7:0]_, Erteilungs-Signale !GNT[7:0]_, ein Time-Out-Signal TIME_OUT, ein Verriegelungs-Signal LOCK_, ein System-Fehler-Signal SERR_, ein Paritäts-Fehler-Signal PERR_, ein Stop-Signal STOP_, ein Target-Ready-Signal TRDY_, ein Initiator-Ready-Signal IRDY_, ein Vorrichtungs-Auswahl-Signal DEVSEL_ und ein Frame-Signal FRAME_ enthalten. Der Bus-Vektor-Erfassungs-Block 460 stellt ein Signal VECT_RDY auf, falls sich irgendein Bus-Vektor BUS_VECT_DATA[24:0] geändert hat oder der Watch-Dog-Zeitgeber 454 abgelaufen ist (TIME_OUT ist hoch).A bus vector detection block 460 detects the states of certain PCI control signals when any of these control signals changes state. The vector is detected and output as the signal BUS_VECT_DATA [20: 0], which inputs the request signals! REQ [7: 0] _, grant signals! GNT [7: 0] _, a time-out signal TIME_OUT Interlock signal LOCK_, a system error signal SERR_, a parity error signal PERR_, a stop signal STOP_, a target ready signal TRDY_, an initiator ready signal IRDY_, a device selection signal DEVSEL_ and a frame signal FRAME_ included. The Bus Vector Detection Block 460 sets a signal VECT_RDY if any bus vector BUS_VECT_DATA [24: 0] has changed or the watchdog timer 454 has expired (TIME_OUT is high).

Die Bus-Historie- und Bus-Vektor-Signale werden den Eingängen eines Bus-Watcher FIFOs präsentiert, das einen 2-Deep-Bus-Historie-FIFO und einen 4-Deep-Vektor-Historie-FIFO umfasst. Die Ausgänge der Bus-Historie-FIFOs werden als Signale BUS_HIST_REG1[31:0], BUS_HIST_REG2[31:0] und BUS_HIST_REG3[31:0] präsentiert. Die Ausgänge des Vektor-Historie-FIFOs werden als Signale BUS_VECT_REG[3:0] präsentiert. Die System-Software liest die Ausgänge des Bus-Historie-FIFO durch Erzeugen eines I/O-Lese-Zyklus, der bewirkt, dass ein Signal BUS_HIST_RD1 aufgestellt wird, und liest die Ausgänge des Vektors FIFO durch Erzeugen eines I/O-Lese-Zyklus, der bewirkt, dass ein Signal BUS_VECT_RD aufgestellt wird.The Bus history and bus vector signals are the inputs of a Bus-Watcher FIFOs presents, this includes a 2 deep bus history FIFO and a 4 deep vector history FIFO includes. The exits the bus history FIFOs are output as signals BUS_HIST_REG1 [31: 0], BUS_HIST_REG2 [31: 0] and BUS_HIST_REG3 [31: 0]. The exits of the vector history FIFO are presented as signals BUS_VECT_REG [3: 0]. The system software reads the outputs of the bus history FIFO Generating an I / O read cycle which causes a signal BUS_HIST_RD1 is set up, and reads the outputs of the vector FIFO Generating an I / O read cycle that causes a signal BUS_VECT_RD to be asserted becomes.

Wie 41 zeigt, beginnt die Zurückgewinnungs-Zustand-Maschine 456 in einem Zustand IDLE, wenn das Signal SYNC_POWEROK auf niedrig gesetzt wird, was anzeigt, dass Energie bis jetzt noch stabil ist. Die Zustand-Maschine verbleibt in einem Zustand IDLE, während das Signal HANG_PEND niedrig ist. In dem Zustand IDLE werden Signale BR_M_ABORT, BR_T_ABORT und RCOVR_ACTIVE auf niedrig gesetzt. Das Signal RCOVR_ACTIVE ist aktiv hoch in den anderen Zuständen WAIT, ABORT und PEND_OFF. Falls das Signal SET_HANG_PEND auf hoch gestellt ist, geht die Zustand-Maschine zu einem Zustand WAIT über. Bei dem Übergang wird das Signal DEVSEL_O gleich zu dem invertierten Zustand des Vorrichtungs-Auswahl-Signals DEVSEL_ gesetzt. Dies stellt sicher, dass dann, wenn das Vorrichtungs-Auswahl-Signal DEVSEL_ durch ein Target vor dem Bus-Hängend-Zustand aufgestellt wird, die Zurückgewinnungs-Zustand-Maschine 456 das Signal DEVSEL_ aufgestellt beibehält. In dem Zustand WAIT wird das Signal DEVSEL_O gleich zu dem Zustand des Signals DEV_SEL_WAS gesetzt, was auf hoch gesetzt wird, falls das Signal DEVSEL_ durch ein Target aufgestellt ist, bevor die Zustand-Maschine zu dem WAIT Zustand übergeht.As 41 shows, the recovery state machine starts 456 in a state IDLE when the signal SYNC_POWEROK is set low, indicating that energy is still stable until now. The state machine remains in an IDLE state while the HANG_PEND signal is low. In state IDLE, signals BR_M_ABORT, BR_T_ABORT and RCOVR_ACTIVE are set low. The signal RCOVR_ACTIVE is active high in the other states WAIT, ABORT and PEND_OFF. If the SET_HANG_PEND signal is set high, the state machine transitions to a WAIT state. In the transition, the signal DEVSEL_O is set equal to the inverted state of the device select signal DEVSEL_. This ensures that when the device select signal DEVSEL_ is asserted by a target before the bus hang state, the recovery state machine 456 maintains the signal DEVSEL_ situated. In state WAIT, signal DEVSEL_O is set equal to the state of signal DEV_SEL_WAS, which is set high if signal DEVSEL_ is asserted by a target before the state machine transitions to the WAIT state.

Von dem Zustand WAIT geht die Bus-Hängend-Zurückgewinnungs-Zustand-Maschine 456 zu dem PEND_OFF Zustand über, falls ein Signal PCI_IDLE aufgestellt ist, was anzeigt, dass der PCI-Bus 32 zu einem Leerlauf übergegangen ist (d. h. Signale FRAME_ und IRDY_ sind beide auf hoch gesetzt). Bei dem Übergang wird das Signal BR_M_ABORT auf hoch gesetzt, um anzuzeigen, dass eine der Schlitz-Vorrichtungen der Master vor dem Hang-Zustand war, und die Schlitz-Vorrichtung wird energiemäßig heruntergefahren, verursacht dadurch, dass der PCI-Bus zu einem Leerlauf übergeht. Ein Signal SERR_EN wird auch auf hoch gesetzt, um ein Aufstellen des System-Fehler-Signals SERR_ freizugeben oder falls INTA_ freigegeben ist.From state WAIT goes the Bus Hanging Recovery State Machine 456 to the PEND_OFF state if a signal PCI_IDLE is asserted, indicating that the PCI bus 32 to a Idle has passed (ie signals FRAME_ and IRDY_ are both high). At the transition, the signal BR_M_ABORT is set high to indicate that one of the slot devices was the master before the hang state, and the slot device is powered down due to the PCI bus going to an idle state , A signal SERR_EN is also asserted high to enable assertion of the system error signal SERR_ or if INTA_ is enabled.

Falls eine Schlitz-Vorrichtung ein Target war, und zwar vor dem Bus-Hängend-Zustand, dann wird der Bus-Master auf dem PCI-Bus 32 verbleiben. Um den Bus-Master aus dem PCI-Bus 32 herauszubringen, gibt die Bus-Hängend-Zurückgewinnungs-Zustand-Maschine 456 einen erneuten Versuch auf dem PCI-Bus 32 heraus. Ein Zähler 457 zählt eine vorbestimmte Zahl von PCLK-Perioden (z. B. 15 PCLK-Perioden), nachdem das Signal HANG_PEND auf hoch gesetzt ist. Die 15 PCLK-Perioden stellen eine ausreichende Anstiegszeit auf FRAME_ und IRDY_ sicher, um den Signalen Zeit zu geben, zurück zu deren Leerlauf-Zuständen zu gehen. Wenn 15 PCLK-Perioden abgelaufen sind, stellt der Zähler 457 das Signal TIME_OUT15 auf. Falls das Signal TIME_OUT15 auf hoch gesetzt ist, und das Signal PCI_IDLE niedrig verbleibt, dann geht die Zustand-Maschine von einem Zustand WAIT zu einem Zustand ABORT über. Bei dem Übergang wird das Signal STOP_O auf hoch gesetzt, um das PCI STOP_ Signal auf aktiv anzusteuern, um den Bus-Master erneut zu versuchen. Die Zustand-Maschine verbleibt in einem Zustand ABORT, während der Bus-Master das Signal FRAME_ auf niedrig aufgestellt beibehält. In dem Zustand ABORT wird das Signal STOP_O auf hoch beibehalten. Wenn einmal der Bus-Master das FRAME_ Signal in Abhängigkeit des Wiederversuch-Zustands zurücknimmt, geht die Zustand-Maschine von einem Zustand ABORT zu einem Zustand PEND_OFF über. Bei dem Übergang wird das Signal BR_T_ABORT auf hoch gesetzt, um anzuzeigen, dass das Target-Abort bzw. die Ziel-Aussonderung notwendig war, und zwar nach dem Bus-Hängend-Zustand, um den Bus 32 in den Leerlauf-Zustand zu platzieren. Das Signal SERR_EN wird auch auf hoch gesetzt, um ein Aufstellen des Signals SERR_ zu ermöglichen, oder falls INTA_ freigegeben ist. Die Zustand-Maschine verbleibt in dem Zustand PEND_OFF, bis das Signal WRT_EN_CAP_1 auf hoch gesetzt worden ist, wobei es zu diesem Zeitpunkt zurück zu dem Zustand IDLE übergeht.If a slot device was a target before the bus hanging state, then the bus master will be on the PCI bus 32 remain. To get the bus master out of the PCI bus 32 Issue the Bus Hanging Recovery State Machine 456 a retry on the PCI bus 32 out. A counter 457 counts a predetermined number of PCLK periods (eg, 15 PCLK periods) after the HANG_PEND signal is asserted high. The 15 PCLK periods ensure sufficient rise time on FRAME_ and IRDY_ to give the signals time to go back to their idle states. If 15 PCLK periods have expired, the counter represents 457 the signal TIME_OUT15 on. If the signal TIME_OUT15 is set high and the signal PCI_IDLE remains low, then the state machine transitions from a state WAIT to a state ABORT. During the transition, the signal STOP_O is set high in order to activate the PCI STOP_ signal to active in order to retry the bus master. The state machine remains in an ABORT state while the bus master keeps the FRAME_ signal low. In the ABORT state, the STOP_O signal is kept high. Once the bus master retires the FRAME_ signal in response to the retry state, the state machine transitions from an ABORT state to a PEND_OFF state. At the transition, the signal BR_T_ABORT is set high to indicate that the target abort was necessary after the bus hang state to the bus 32 to place in the idle state. The SERR_EN signal is also asserted high to enable assertion of the SERR_ signal or if INTA_ is enabled. The state machine remains in state PEND_OFF until the signal WRT_EN_CAP_1 has been asserted high, at which time it goes back to state IDLE.

Die System-Software kann den Wert von BR_M_ABORT und BR_T_ABORT Signalen lesen, um zu bestimmen, ob die. Schlitz-Vorrichtung, eingeschlossen in dem Bus-Hängend-Zustand, eine Master-Vorrichtung oder eine Slave-Vorrichtung war.The System software can detect the value of BR_M_ABORT and BR_T_ABORT signals read to determine if the. Slot Device, included in the bus-hanging state, was a master device or a slave device.

Wie 42 zeigt, umfasst der Watch-Dog-Zeitgeber 454 einen 18-Bit-LSFR-Zähler 464, der durch das Signal PCLK getaktet wird. Der Zähler 464 wird dann freigegeben, wenn der Ausgang eines UND-Gates 467 auf hoch gesetzt ist, was dann auftritt, wenn ein neuer Master eine Anforderung (ANY_REQ ist hoch) ausgibt, der Bus-Zyklus gestartet ist (Signale FRAME_ und TRDY_ sind beide aufgestellt), das Freigabe-Erfassungs-Signal EN_CAP aufgestellt ist, und das Signal TIME_OUT niedrig ist. Ein ODER-Gate 466 empfängt das Signal ANY_REQ und die invertierten Zustände von Signalen FRAME_ und IRDY_. Das UND-Gate 467 empfängt den Ausgang fo des ODER-Gates 466, das Signal EN_CAP und den invertierten Zustand des Signals TIME_OUT. Der Ausgang des Zählers steuert Signale WD_TMR_OUT[17:0] und wird gelöscht, wenn ein Time-Out-Zustand erfasst ist (TIME_OUT ist hoch), eine Datenübertragung stattgefunden hat (beide Signale IRDY_ und TRDY_ sind auf niedrig gesetzt), oder alle Ausgangs-Bits des Zählers 464 hoch sind (was ein illegaler Zustand ist). Der Lösch-Zustand wird durch ein ODER-Gate 470 angezeigt, das das Signal TIME_OUT empfängt, das bit-weise AND (UND) der Signale WD_TMR_OUT[17:0] und den Ausgang eines UND-Gates 472. Die Eingänge des UND-Gates 472 nehmen den invertierten Zustand des Signals IRDY_ und den invertierten Zustand des Signals TRDY_ auf.As 42 shows includes the watchdog timer 454 an 18-bit LSFR counter 464 which is clocked by the signal PCLK. The counter 464 is released when the output of an AND gate 467 is set high, which occurs when a new master issues a request (ANY_REQ is high), the bus cycle is started (signals FRAME_ and TRDY_ are both asserted), the enable detect signal EN_CAP is asserted, and Signal TIME_OUT is low. An OR gate 466 receives the signal ANY_REQ and the inverted states of signals FRAME_ and IRDY_. The AND gate 467 receives the output fo of the OR gate 466 , the signal EN_CAP and the inverted state of the signal TIME_OUT. The output of the counter controls signals WD_TMR_OUT [17: 0] and is cleared when a time-out condition is detected (TIME_OUT is high), a data transfer has occurred (both signals IRDY_ and TRDY_ are set low), or all output -Bits of the counter 464 are high (which is an illegal state). The clear state is through an OR gate 470 which receives the signal TIME_OUT, the bitwise AND (AND) of the signals WD_TMR_OUT [17: 0] and the output of an AND gate 472 , The inputs of the AND gate 472 pick up the inverted state of the signal IRDY_ and the inverted state of the signal TRDY_.

Das Signal TIME_OUT wird auf hoch durch einen Time-Out-Detektor 474 gesetzt, wenn die Zeitgeber-Signale WD_TMR_OUT[17:0] zu dem binären Wert 1000000000000000. Das Signal TIME_OUT wird zu einem Eingang eines ODER-Gates 476 geliefert, dessen Ausgang mit dem Eingang eines UND-Gates 478 verbunden ist. Der andere Eingang des UND-Gates 478 nimmt den invertierten Zustand eines Signals WRT_EN_CAP_1 auf (gesteuert durch eine Software, um erneut die Bus-Historie und Bus-Vektor-Erfassung zu ermöglichen), und sein Ausgang wird mit dem D_Eingang eines Flip-Flops 488 vom D-Typ verbunden. Das Flip-Flop 488 wird durch das Signal PCLK getaktet und steuert ein Ausgangs-Signal WD_TIME_OUT an, das zurück zu dem anderen Eingang des ODER-Gates 476 zugeführt wird. Das Flip-Flop 488 wird dann gelöscht, wenn das Power-Good-Signal SYNC_POWEROK negiert wird. Demzufolge löscht ein ASR-Reset nicht das Signal WD_TIME_OUT.The TIME_OUT signal goes high through a time-out detector 474 is set when the timer signals WD_TMR_OUT [17: 0] become the binary value 1000000000000000. The signal TIME_OUT becomes an input of an OR gate 476 whose output is connected to the input of an AND gate 478 connected is. The other input of the AND gate 478 picks up the inverted state of a WRT_EN_CAP_1 signal (controlled by software to allow bus history and bus vector capture again), and its output goes to the D_input of a flip-flop 488 connected by the D-type. The flip-flop 488 is clocked by the signal PCLK and drives an output signal WD_TIME_OUT which goes back to the other input of the OR gate 476 is supplied. The flip-flop 488 is cleared when the power good signal SYNC_POWEROK is negated. As a result, an ASR reset does not clear the WD_TIME_OUT signal.

Das HANG_PEND Signal wird durch ein Flip-Flop 482 vom D-Typ auf hoch gesetzt, dessen D-Eingang mit dem Ausgang eines UND-Gates 484 verbunden wird und der durch das Signal PCLK getaktet wird. Ein Eingang des UND-Gates 484 ist mit dem Ausgang ei nes ODER-Gates 486 verbunden, und sein anderer Eingang nimmt den invertierten Zustand des Signals WRT_EN_CAP_1 auf. Ein Eingang des ODER-Gates 486 ist mit dem Signal HANG_PEND verbunden, und der andere Eingang ist mit dem Ausgang eines UND-Gates 488 verbunden. Die Eingänge des UND-Gates 488 nehmen das Signal TIME_OUT und das Freigabe-Signal HANG_RCOVR_EN auf. Demzufolge wird, falls die System-Software eine Bus-Hängend-Wiederherstellung freigibt (HANG_RCOVREN ist hoch), dann wird ein Time-out-Zustand bewirken, dass das Signal HANG_PEND auf hoch gesetzt wird. Das Signal HANG_PEND wird dann gelöscht, wenn die System-Software bewirkt, dass das Signal WRT_EN_CAP_1 aufgestellt wird (unter Durchführen eines I/O-Zyklus auf dem Bus 32), oder wenn das Signal SYNC_POWEROK negiert wird. Das Bit HANG_PEND wird nicht negiert durch einen ASR-Reboot.The HANG_PEND signal is passed through a flip-flop 482 of the D-type set high, whose D input to the output of an AND gate 484 is connected and which is clocked by the signal PCLK. An input of the AND gate 484 is at the output of an OR gate 486 connected, and his other one gear receives the inverted state of the signal WRT_EN_CAP_1. An input of the OR gate 486 is connected to the HANG_PEND signal and the other input is to the output of an AND gate 488 connected. The inputs of the AND gate 488 receive the signal TIME_OUT and the enable signal HANG_RCOVR_EN. As a result, if the system software releases a bus hanging recovery (HANG_RCOVREN is high), then a time out condition will cause the HANG_PEND signal to be asserted high. The HANG_PEND signal is cleared when the system software causes the WRT_EN_CAP_1 signal to assert (performing an I / O cycle on the bus 32 ), or if the signal SYNC_POWEROK is negated. The HANG_PEND bit is not negated by an ASR reboot.

Das Freigabe-Erfassungs-Signal EN_CAP wird durch ein Flip-Flop 490 vom D-Typ erzeugt, dessen D-Eingang den Ausgang eines UND-Gates 492 aufnimmt. Ein Eingang des UND-Gates 492 ist mit dem Ausgang eines ODER-Gates 494 verbunden, und sein anderer Eingang ist mit dem invertierten Zustand eines Signals CLR_EN_CAP verbunden. Ein Eingang des ODER-Gates 494 wird zurück zu dem Signal EN_CAP geführt und der andere Eingang nimmt das Signal WRT_EN_CAP_1 auf. Das Flip-Flop 490 wird durch das Signal PCLK getaktet und auf hoch gesetzt, wenn das Signal SYNC_POWEROK auf niedrig gesetzt wird. Wenn einmal das Signal EN_CAP auf hoch durch die Software über das Signal WRT_EN_CAP_1 gesetzt wird, wird es auf hoch beibehalten. Das Signal CLR_EN_CAP wird aufgestellt, um das Signal EN_CAP zu löschen (Disable Capture of Information – Sperren einer Erfassung von Information), was dann auftritt, wenn ein Zeitablauf bzw. Time-Out aufgetreten ist (TIME_OUT ist hoch), ein System-Fehler aufgetreten ist (SERR_ ist niedrig), ein Paritäts-Fehler aufgetreten ist (PERR_ ist niedrig), oder ein illegales Bus-Protokoll erfasst worden ist (CAP_ILLEG_PROT ist hoch).The enable detection signal EN_CAP is passed through a flip-flop 490 generated by the D-type whose D input the output of an AND gate 492 receives. An input of the AND gate 492 is with the output of an OR gate 494 and its other input is connected to the inverted state of a signal CLR_EN_CAP. An input of the OR gate 494 is fed back to the signal EN_CAP and the other input receives the signal WRT_EN_CAP_1. The flip-flop 490 is clocked by the signal PCLK and set high when the signal SYNC_POWEROK is set low. Once the signal EN_CAP is set high by the software via the signal WRT_EN_CAP_1, it is kept high. The CLR_EN_CAP signal is asserted to clear the EN_CAP signal (Disable Capture of Information), which occurs when a timeout has occurred (TIME_OUT is high), a system error has occurred is (SERR_ is low), a parity error has occurred (PERR_ is low), or an illegal bus protocol has been detected (CAP_ILLEG_PROT is high).

Das Signal CAP_ILLEG_PROT wird durch ein Flip-Flop 483 vom D-Typ erzeugt, dessen D-Eingang den Ausgang eines UND-Gates 485 aufnimmt. Ein Eingang des UND-Gates nimmt den invertierten Zustand des Signals WRT_EN_CAP_1 auf, und der andere Eingang empfängt den Ausgang eines ODER-Gates 487. Das ODER-Gate 487 empfängt die Signale CAP_ILLEG_PROT und SET_ILLEG_PROT. Das Signal SET_ILLEG_PROT wird dann aufgestellt, wenn ein Protokollieren (capture) freigegeben ist (EN_CAP ist hoch), die Zustand-Maschine 456 nicht aktiv ist (RCOVR_ACTIVE ist niedrig), der Bus leerläuft und irgendwelche Signale DEVSEL_, TRDY_ oder IRDY_ auf niedrig gesetzt sind. Dieser Zustand ist ein illegaler Zustand, der eine Protokollierung der Bus-Historie und von Bus-Vektor-Informationen triggert.The signal CAP_ILLEG_PROT is triggered by a flip-flop 483 generated by the D-type whose D input the output of an AND gate 485 receives. One input of the AND gate receives the inverted state of the signal WRT_EN_CAP_1, and the other input receives the output of an OR gate 487 , The OR gate 487 receives the signals CAP_ILLEG_PROT and SET_ILLEG_PROT. The signal SET_ILLEG_PROT is then asserted when a capture is enabled (EN_CAP is high), the state machine 456 is not active (RCOVR_ACTIVE is low), the bus is idling and any signals DEVSEL_, TRDY_ or IRDY_ are set low. This state is an illegal state that triggers logging of bus history and bus vector information.

Wie 43 zeigt, wird das Bus-Historie-Bereitschaft-Signal HIST_RDY durch ein Flip-Flop 502 vom D-Typ erzeugt, das durch das Signal PCLK getaktet und durch das Signal RESET gelöscht wird. Der D-Eingang des Flip-Flops 502 ist mit dem Ausgang eines ODER-Gates 504 verbunden, dessen Eingänge das Signal TIME_OUT, ein Signal M_ABORT (Master-Abort-Signal, verzögert durch eine PCLK), den Ausgang eines UND-Gates 506 und den Ausgang eines UND-Gates 508 aufnehmen. Das UND-Gate 506 stellt seinen Ausgang auf, falls ein erneuter Versuch, C zu trennen, oder ein Target-Abort-Zyklus auf dem sekundären Bus 32 vorhanden ist (das Signal FRAME_, der invertierte Zustand des Signals IRDY_, der invertierte Zustand des Signals STOP_, und der invertierte Zustand des Signals DSC_A_B sind alle wahr). Das UND-Gate 508 stellt seinen Ausgang auf, wenn eine abgeschlossene Daten-Übertragung aufgetreten ist (die Signale IRDY_ und TRDY_ sind beide niedrig). Demzufolge werden die Bus-Historie-Informationen in die Bus-Historie-FIFOs eingeladen, wenn der Watch-Dog-Zeitgeber 554 zeitmäßig abläuft, ein erneuter Versuch, C zu unterbrechen, oder ein Target-Abort-Zustand vorhanden ist, der Master den Zyklus ausgesondert hat oder ein Zyklus erfolgreich abgeschlossen wurde.As 43 shows, the bus history standby signal HIST_RDY by a flip-flop 502 generated by the D-type, which is clocked by the signal PCLK and cleared by the signal RESET. The D input of the flip-flop 502 is with the output of an OR gate 504 whose inputs are the signal TIME_OUT, a signal M_ABORT (master abort signal, delayed by a PCLK), the output of an AND gate 506 and the output of an AND gate 508 take up. The AND gate 506 asserts its output in case of a renewed attempt to disconnect C or a target abort cycle on the secondary bus 32 is present (the signal FRAME_, the inverted state of the signal IRDY_, the inverted state of the signal STOP_, and the inverted state of the signal DSC_A_B are all true). The AND gate 508 asserts its output when a completed data transfer has occurred (the IRDY_ and TRDY_ signals are both low). As a result, the bus history information is loaded into the bus history FIFOs when the watchdog timer 554 is timed, a retry to interrupt C, or a Target Abort condition exists, the Master has purged the cycle, or one cycle has successfully completed.

Das Gültigkeits-Daten-Indikations-Signal VALID_DATA wird durch einen Flip-Flop 510 vom D-Typ erzeugt, das durch das Signal PCLK getaktet wird und durch das Signal RESET gelöscht wird. Der D-Eingang des Flip-Flops 510 wird mit dem Ausgang eines NOR-Gates 512 verbunden, das das Signal TIME_OUT, das Master-Abort-Signal M_ABORT und den Ausgang des UND-Gates 506 aufnimmt. Demzufolge sind Daten gültig, ohne dass ein Zeitablauf erfasst ist, ein Master-Abort-Zyklus ausgegeben ist, oder ein erneuter Versuch, C zu trennen, oder ein Target-Abort-Zyklus, vorhanden ist.The validity data indication signal VALID_DATA is provided by a flip-flop 510 generated by the D-type, which is clocked by the signal PCLK and is cleared by the signal RESET. The D input of the flip-flop 510 is connected to the output of a NOR gate 512 connected, the signal TIME_OUT, the master Abort signal M_ABORT and the output of the AND gate 506 receives. As a result, data is valid without timing being detected, a master abort cycle being issued, or a retry attempt to disconnect C or a target abort cycle present.

Das Signal VECT_RDY wird durch ein Flip-Flop 514 vom D-Typ erzeugt, das durch das Signal PCLK getaktet wird und durch das Signal RESET gelöscht wird. Der D-Eingang des Flip-Flops 514 wird mit dem Ausgang eines ODER-Gates 516 verbunden, der das Zeitablaufsignal TIME_OUT und ein Signal CHANGE_STATE aufnimmt, was anzeigt, dass eines der PCI-Steuer-Signale in dem Bus-Vector seinen Zustand geändert hat. Dem zufolge werden die Zustands-Vektor-Informationen in die Vektor-FIFOs immer dann ein geladen, wenn Steuersignale auf dem PCI-Bus 32 einen Zustand ändern oder wenn ein Zeitablauf aufgetreten ist.The signal VECT_RDY is controlled by a flip-flop 514 generated by the D-type, which is clocked by the signal PCLK and is cleared by the signal RESET. The D input of the flip-flop 514 is connected to the output of an OR gate 516 which receives the timing signal TIME_OUT and a signal CHANGE_STATE indicating that one of the PCI control signals in the bus vector has changed state. As a result, the state vector information is loaded into the vector FIFOs whenever there are control signals on the PCI bus 32 change a state or if a timeout has occurred.

Wie 44 zeigt, werden die Bus-Historie-Daten {BUS_HIST_DATA3[31:0], BUS_HIST_DATA2[31:0], BUS_HIST_DATA1[15:0]} zu dem Eingang des Bus-Historie-Registers 540 geliefert, das die erste Stufe des Bus-Historie-FIFO's ist. Die Bus-Historie 501 liefert Ausgangs-Signale BUS_HIST_FIFO1[79:0] zu dem Register 542 (der zweite Zustand der Pipeline), was Ausgangs-Signale BUS_HIST_FIFO0[79:0] liefert. Beide Bus-Historie-Register 540 und 542 werden durch das Signal PCLK getaktet und gelöscht, wenn das Power-Good-Signal SYNC_POWEROK niedrig ist.As 44 1, the bus history data {BUS_HIST_DATA3 [31: 0], BUS_HIST_DATA2 [31: 0], BUS_HIST_DATA1 [15: 0]} becomes the input of the bus history register 540 which is the first stage of the bus history FIFO. The bus history 501 provides output signals BUS_HIST_FIFO1 [79: 0] to the register 542 (the second state of the pipeline), which provides output signals BUS_HIST_FIFO0 [79: 0]. Both bus history registers 540 and 542 are clocked by the signal PCLK and cleared when the power good signal SYNC_POWEROK is low.

Die Bus-Historie-Register 540 und 542 werden dann geladen, wenn der Ausgang des UND-Gates 518 auf hoch angesteuert wird. Das UND-Gate 518 empfängt das Freigabe-Erfassungs-Bit EN_CAP und das ODER des Bus-Historie-Bereitschafts-Signals HIST_RDY und des CAP_ILLEG_PROT Signals (ODER-Gate 519). Die Ausgangs-Signale BUS_HIST_FIFO0[79:0] und BUS_HIST_FIF01[79:0] werden zu den 0- und 1-Eingängen jeweils von Multiplexern 520, 522 und 524 geliefert. Jeder der Multiplexer 520, 522 und 524 wird durch ein Lese-Adressen-Signal HIST_FIFO_RD_ADDR ausgewählt (das mit niedrig startet, um den Ausgang des Bus-Registers 502 auszuwählen, und bei jeder darauffolgenden Lesung getoggelt wird). Die Multiplexer 520, 522 und 524 steuern Ausgangs-Signale BUS HIST_REG3[31:0], BUS_HIST_REG2[31:0], BUS_HIST_REG1[15:0] jeweils an.The Bus History Register 540 and 542 are then loaded when the output of the AND gate 518 is driven high. The AND gate 518 receives the enable detect bit EN_CAP and the OR of the bus history ready signal HIST_RDY and the CAP_ILLEG_PROT signal (OR gate 519 ). The output signals BUS_HIST_FIFO0 [79: 0] and BUS_HIST_FIF01 [79: 0] become the 0 and 1 inputs, respectively, of multiplexers 520 . 522 and 524 delivered. Each of the multiplexers 520 . 522 and 524 is selected by a read address signal HIST_FIFO_RD_ADDR (which starts low to the output of the bus register 502 and toggled at each subsequent reading). The multiplexers 520 . 522 and 524 control output signals BUS HIST_REG3 [31: 0], BUS_HIST_REG2 [31: 0], BUS_HIST_REG1 [15: 0] respectively.

Die Bus-Vektor-Daten-Signale BUS_VECT_DATA[24:0] werden zu den Eingängen eines Bus-Vektor-Registers 544 geliefert, dessen Ausgang zu dem Eingang eines Bus-Vektor-Registers 546 weitergeführt wird. Der Ausgang des Bus-Vektor-Registers 546 wird zu dem Eingang eines Bus-Vektor-Registers 548 weitergeführt, dessen Ausgang wiederum zu dem Eingang eines Bus-Vektor-Registers 550 zurückgeführt wird. Jedes der Bus-Vektor-Register 0–3 wird durch das Signal PCLK getaktet und dann gelöscht, wenn die Signale SYNC_POWEROK niedrig sind. Die Bus-Vektor-Register werden dann geladen, wenn der Ausgang des UND-Gates 521 auf hoch gesetzt wird. Das UND-Gate 521 empfängt das Signal EN_CAP und das ODER von Signalen VECT_RDY und CAP_ILLEG_PROT (ODER-GATE 523). Die Bus-Vektor-Register 550, 548, 546 und 544 erzeugen Ausgangs-Signale BUS_VECT_FIFO0[24:0], BUS_VECT_FIFO1[24:0], BUS VECT_FIFO0[24:0] und BUS_VECT_FIF03[24:0] jeweils, die wiederum zu den 0-, 1-, 2- und 3-Eingängen eines Multiplexers 526 jeweils eingegeben werden. Der Ausgang des Multiplexers 526 liefert Signale BUS_VECT_REG[31:0], wobei der Multiplexer 526 einen seiner Eingänge basierend auf dem Zustand von Adressen-Signalen VECT_FIFO_RD_ADDR[1:0] auswählt (was mit einem binären Wert 00 beginnt und bei jeder darauffolgenden Lesung erhöht wird).The bus vector data signals BUS_VECT_DATA [24: 0] become the inputs of a bus vector register 544 its output to the input of a bus vector register 546 is continued. The output of the bus vector register 546 becomes the input of a bus vector register 548 whose output in turn leads to the input of a bus vector register 550 is returned. Each of the bus vector registers 0-3 is clocked by the signal PCLK and cleared when the signals SYNC_POWEROK are low. The bus vector registers are then loaded when the output of the AND gate 521 is set high. The AND gate 521 receives the signal EN_CAP and the OR of signals VECT_RDY and CAP_ILLEG_PROT (OR-GATE 523 ). The bus vector registers 550 . 548 . 546 and 544 generate output signals BUS_VECT_FIFO0 [24: 0], BUS_VECT_FIFO1 [24: 0], BUS VECT_FIFO0 [24: 0] and BUS_VECT_FIF03 [24: 0] respectively, which in turn to the 0, 1, 2 and 3 inputs a multiplexer 526 each entered. The output of the multiplexer 526 provides signals BUS_VECT_REG [31: 0], where the multiplexer 526 select one of its inputs based on the state of address signals VECT_FIFO_RD_ADDR [1: 0] (which starts with a binary value 00 and increments each subsequent read).

Demzufolge werden die Bus-Historie- und Bus-Zustand-Vektor-Informationen in Abhängigkeit eines Aufstellens von Signalen HIST_RDY oder VECT_RDY jeweils protokolliert, oder in Abhängigkeit eines Aufstellens des Signals CAP_ILEG_PROT, falls ein illegaler Bus-Protokoll-Zustand erfasst ist.As a result, the bus history and bus state vector information is in dependence recording of signals HIST_RDY or VECT_RDY respectively logged, or depending setting up the signal CAP_ILEG_PROT if an illegal one Bus protocol state is detected.

ERWEITERUNGS-KARTEN-RAUM-RESERVIERUNGEXPANSION CARD SPACE RESERVATION

Im Gegensatz zu herkömmlichen Computersystemen reserviert, in der Anfangs-Konfiguration des Computersystems 10, bei einem Einschalten, die CPU 14 einen Speicherraum und PCI-Bus-Zahlen für die Schlitze bzw. Eisteckplätze 36, die leer sind (keine Karte 807 ist eingesetzt) oder abgeschaltet sind bzw. heruntergefahren sind.Unlike conventional computer systems reserved in the initial configuration of the computer system 10 , at power up, the CPU 14 a memory space and PCI bus numbers for the slots or ice tins 36 that are empty (no card 807 is used) or are switched off or shut down.

Die CPU 14 ordnet, wie dies typischerweise vorgenommen wird, Bus-Zahlen für PCI-Busse (z. B. PCI-Busse 24, 32ab und PCI-Bus(e) der Karten 807, die in Schlitze 36 eingesetzt sind und eingeschaltet sind) zu, die dann vorhanden sind, wenn das Computersystem 10 zuerst eingeschaltet bzw. hochgefahren wird.The CPU 14 As is typically done, allocates bus numbers for PCI buses (eg, PCI buses 24 . 32a - b and PCI bus (s) of the cards 807 in slits 36 are inserted and turned on), which are present when the computer system 10 is first switched on or raised.

Jede PCI-PCI-Brücken-Schaltung (z. B. PCI-PCI-Brücke 26, 48) in diesem Konfigurations-Register-Raum 1252 (49) besitzt ein Neben-Bus-Zahl-Register 1218 und ein Sekundär-Bus-Zahl-Register 1220. Das Neben-Bus-Zahl-Register 1218 enthält eine Neben-Bus-Zahl, die die höchste PCI-Bus-Zahl ausgangsseitig der PCI-PCI-Brücken-Schaltung ist, und das Sekundär-Bus-Zahl-Register 1220 enthält eine Sekundär-Bus-Zahl, die die PCI-Bus-Zahl des PCI-Busses unmittelbar ausgangsseitig der PCI-PCI-Brücken-Schaltung ist. Demzufolge definieren die Werte, gespeichert in dem Neben- 1218 und dem Sekundär- 1220 Bus-Zahl-Register, den Bereich von PCI-Bus-Zahlen, die ausgangsseitig der PCI-PCI-Brücken-Schaltung vorhanden sind.Any PCI-to-PCI bridge circuit (eg PCI-PCI bridge 26 . 48 ) in this configuration register space 1252 ( 49 ) has a slave bus number register 1218 and a secondary bus number register 1220 , The sub-bus number register 1218 contains a slave bus number, which is the highest PCI bus number on the output side of the PCI-PCI bridge circuit, and the secondary bus number register 1220 contains a secondary bus number which is the PCI bus number of the PCI bus immediately downstream of the PCI-PCI bridge circuit. As a result, the values stored in the minor 1218 and the secondary 1220 Bus number registers, the range of PCI bus numbers present on the output side of the PCI-PCI bridge circuit.

Der Konfigurations-Register-Raum 1252 besitzt auch ein Primär-Bus-Zahlen-Register 1222. Das Primär-Bus-Zahl-Register 1222 enthält die Zahl des PCI-Busses, angeordnet unmittelbar eingangsseitig der PCI-PCI-Brücken-Schaltung.The configuration register space 1252 also has a primary bus number register 1222 , The Primary Bus Number Register 1222 contains the number of the PCI bus, arranged immediately on the input side of the PCI-PCI bridge circuit.

Die System-Steuereinheit/Host-Brücken-Schaltung 18 besitzt auch das Neben- 1218 und Sekundär- 1220 Bus-Zahl-Register. Nach einer Konfiguration enthält das Ne ben-Bus-Zahl-Register 1218 der Schaltung 18 die maximale PCI-Bus-Zahl, die in dem Computersystem vorhanden ist. Das Sekundär-Bus-Zahl-Register 1220 der Schaltung 18 enthält die Bus-Zahl Null, da dem PCI-Bus unmittelbar ausgangsseitig der Schaltung 18 (PCI-Bus 24) immer die Bus-Zahl Null zugeordnet wird.The system controller / host bridge circuit 18 also owns the secondary 1218 and secondary 1220 Bus number register. After a configuration contains the Ne ben Bus Number Register 1218 the circuit 18 the maximum PCI bus number that exists in the computer system. The secondary bus number register 1220 the circuit 18 contains the bus number zero, since the PCI bus is directly on the output side of the circuit 18 (PCI bus 24 ) is always assigned the bus number zero.

Im Gegensatz zu dem bekannten System erkennt die CPU 14, dass einer der Schlitze 36, der zu Anfang eingeschaltet bzw. hochgefahren ist oder leer ist, einen oder mehrere zusätzliche PCI-Bus(e) (vorhanden auf der Karte 802, eingesetzt in dem Schlitz 36, zu Anfang heruntergefahren) in das Computersystem 10 hinein einführen kann, nachdem das Computersystem 10 bereits eingeschaltet bzw. hochgefahren und konfiguriert ist. Dementsprechend reserviert, während einer anfänglichen Konfiguration, die CPU 14 Speicherraum, I/O-Raum und eine vorbestimmte Zahl (z. B. eins oder drei) von PCI-Bus-Zahlen für irgendeinen Schlitz 36, der heruntergefahren oder leer ist.Unlike the known system, the CPU detects 14 that one of the slots 36 , which is initially powered up or is empty, one or more additional PCI bus (s) (present on the card 802 inserted in the slot 36 , shut down at the beginning) in the computer system 10 can introduce into it after the computer system 10 already switched on or started up and configured. Accordingly, during an initial configuration, the CPU reserves 14 Memory space, I / O space, and a predetermined number (eg, one or three) of PCI bus numbers for any slot 36 that is shut down or empty.

Demzufolge müssen die PCI-PCI-Brücken-Schaltungen des Computersystems 10 nicht rekonfiguriert werden, um die Karte 807 aufzunehmen, die vor kurzem eingeschaltet worden ist. Nur die PCI-PCI-Brücken-Schaltungen der Karte 807, die vor kurzem eingeschaltet wurde, muss konfiguriert werden. Der Rest des Computersystems 10 verbleibt unverändert.As a result, the PCI-PCI bridge circuits of the computer system 10 not reconfigured to the card 807 which has been switched on recently. Only the PCI-PCI bridge circuits of the card 807 that has been switched on recently must be configured. The rest of the computer system 10 remains unchanged.

Als ein Teil des Resource-Reservierungs-Prozesses baut ein Basic-Input/Output-System (BIOS), gespeichert in dem ROM 23 und verdeckt in den Speicher 20 eingegeben (und schreibgeschützt), eine Tabelle auf, die Resource-Bereiche spezifiziert, die für die Schlitze 36 reserviert werden. Diese Tabelle umfasst eine Bus-Zahl, Speicher und I/O-Resource-Bereiche zur Verwendung beim Konfigurieren einer PCI-Vorrichtung, die neu zu dem System 10 hinzugefügt worden ist. Das Betriebssystem verwendet diese Tabelle, um zu bestimmen, welche Resourcen reserviert worden sind und welche Resourcen für eine Konfigurierung der neu hinzugefügten PCI-Vorrichtung verfügbar sind.As part of the resource reservation process builds a basic input / output system (BIOS) stored in the ROM 23 and hidden in the memory 20 entered (and read-only), a table that specifies resource areas for the slots 36 reserved. This table includes a bus number, memory, and I / O resource areas for use in configuring a PCI device new to the system 10 has been added. The operating system uses this table to determine which resources have been reserved and which resources are available for configuring the newly added PCI device.

Wie in 45 dargestellt ist, ordnet, in einem rekursiven PCI-Konfigurations-Programm, bezeichnet als BUS_ASSIGN, die CPU 14 Konfigurations-Register 1252 für PCI-Bus-Zahlen und -Programme der PCI-PCI-Brücken-Schaltungen entsprechend zu. Die CPU 14 nimmt dies durch Abtasten eines PCI-Busses zu einem Zeitpunkt für PCI-Vorrichtungen vor. Das BUS_ASSIGN Programm ist Teil des BIOS, gespeichert in dem ROM 23, und wird dazu verwendet, zu Anfang das Computersystem 10, nach einem Einschalten, zu konfigurieren.As in 45 in a recursive PCI configuration program, referred to as BUS_ASSIGN, maps the CPU 14 Configuration Registers 1252 for PCI bus numbers and programs corresponding to the PCI-PCI bridge circuits. The CPU 14 does this by scanning a PCI bus at a time for PCI devices. The BUS_ASSIGN program is part of the BIOS stored in the ROM 23 , and is used initially to the computer system 10 , after turning on, configure.

Die CPU 14 setzt zuerst 1000, der Wert eines Such-Parameters PCI-Bus, gleich zu dem Wert eines anderen Such-Parameters CURRENT_PCI_BUS, und initialisiert 1000 Such-Parameter FCN und DEV. Der Parameter PCI-Bus zeigt die Bus-Zahl des PCI-Busses an, der momentan durch die CPU 14 abgetastet wird, und wenn das BUS_ASSIGN Programm zuerst durch die CPU 14 ausgeführt wird, zeigt der Parameter PCI-Bus die Bus-Zahl Null an.The CPU 14 sets first 1000, the value of a search parameter PCI bus, equal to the value of another search parameter CURRENT_PCI_BUS, and initializes 1000 search parameters FCN and DEV. The PCI bus parameter indicates the bus number of the PCI bus currently being used by the CPU 14 is sampled, and if the BUS_ASSIGN program first by the CPU 14 is executed, the PCI bus parameter displays the bus number zero.

Der Parameter CURRENT_PCI_BUS zeigt die nächste PCI-Bus-Zahl an, die zum Zuordnen durch die CPU verfügbar ist, und wenn das Programm BUS_ASSIGN zuerst durch die CPU 14 ausgeführt wird, zeigt der Parameter CURRENT_PCI_BUS eine Bus-Zahl Null an. Die Parameter FCN und DEV zeigen die momentane PCI-Funktion und die PCI-Vorrichtung, jeweils, an, die momentan durch die CPU 14 abgetastet werden.The parameter CURRENT_PCI_BUS indicates the next PCI bus number available for allocation by the CPU and if the program BUS_ASSIGN is first issued by the CPU 14 is executed, the parameter CURRENT_PCI_BUS indicates a bus number zero. The parameters FCN and DEV indicate the current PCI function and the PCI device, respectively, currently being used by the CPU 14 be scanned.

Die CPU 14 bestimmt, 1001, ob der Parameter PCI_BUS eine Bus-Zahl Null anzeigt, und falls dies der Fall ist, stellt die CPU 14 das Sekundär-Bus-Zahl-Register 1220 der System-Steuereinheit/Host-Brücken-Schaltung 18 gleich zu Null ein. Die CPU 14 findet dann, 1004, die nächste PCI-PCI-Brücken-Schaltung oder den Schlitz 36, der heruntergefahren bzw. ausgeschaltet ist oder leer ist, auf dem PCI-Bus, angezeigt durch den Parameter PCI BUS. Zu Zwecken einer Bestimmung, ob die nächste, gefundene PCI-Vorrichtung eine PCI-PCI-Brücken-Schaltung ist oder nicht existiert (ein abgeschalteter oder leerer Schlitz), versucht die CPU 14, von einem Wert eines EIN-Wort-Vendor-ID-Register, angeordnet in dem Konfigurations-Raum jeder PCI-Vorrichtung, zu lesen. Ein Wert von „hFFFF" (wobei die Vorsilbe „h" eine hexadezimale Darstellung bezeichnet) wird reserviert und nicht durch irgendeinen Vendor bzw. Lieferanten verwendet. Falls die versuchte Lesung von dem Vendor-ID-Register zu einem Wert „HFFFF" zurückkehrt, dann zeigt dies an, dass keine PCI-Vorrichtung vorhanden ist.The CPU 14 certainly, 1001 whether the parameter PCI_BUS indicates a bus number zero, and if so, the CPU stops 14 the secondary bus number register 1220 the system controller / host bridge circuit 18 equal to zero. The CPU 14 then finds 1004 , the next PCI-PCI bridge circuit or the slot 36 that is powered down or blank, on the PCI bus, indicated by the parameter PCI BUS. For purposes of determining whether the next found PCI device is or does not exist a PCI-PCI bridge circuit (a powered down or empty slot), the CPU attempts 14 to read from a value of an ON-word vendor-ID register located in the configuration space of each PCI device. A value of "hFFFF" (where the prefix "h" denotes a hexadecimal representation) is reserved and not used by any vendor. If the attempted read from the vendor ID register returns to a value of "HFFFF", then this indicates that there is no PCI device.

Falls die CPU 14 bestimmt, 1006, dass dort keine weiteren, nicht vorgefundenen PCI-PCI-Brücken-Schaltungen oder Schlitze 36 vorhanden sind, die heruntergefahren sind oder leer sind, und zwar auf dem PCI-Bus, angezeigt durch den Parameter PCI BUS, wird eine Zurückführung von dem letzten Aufruf, vorgenommen zu dem BUS_ASSIGN Programm, vorgenommen. Ansonsten bestimmt die CPU 14, 1008, ob eine andere PCI-PCI-Brücken-Schaltung vorgefunden wurde, und falls nicht, erhöht die CPU 14, 1010, den Parameter CURRENT_PCI_BUS, da ein Schlitz bzw. Einsteckplatz 36, der eingeschaltet oder leer ist, gefunden wurde, und findet, 1004, die nächste PCI-PCI-Brücken-Schaltung. oder einen Schlitz 36, der abgeschaltet oder leer ist. Demzufolge reserviert, durch Erhöhen, 1010, des Parameters CURRENT_PCI_BUS, die CPU 14 effektiv eine Bus-Zahl für den Schlitz 36, der abgeschaltet oder leer ist. Alternativ kann die CPU 14 mehr als eine Bus-Zahl für den Schlitz 36 reservieren, der abgeschaltet oder leer ist.If the CPU 14 certainly, 1006 that there are no other, non-found PCI-PCI bridge circuits or slots 36 There is a drop of the last call on the PCI bus, indicated by the PCI BUS parameter, that are down or empty taken to the BUS_ASSIGN program. Otherwise, the CPU determines 14 . 1008 whether another PCI-PCI bridge circuit has been found, and if not, increases the CPU 14 . 1010 , the parameter CURRENT_PCI_BUS, as a slot or slot 36 which is turned on or empty, and finds, 1004 , the next PCI-PCI bridge circuit. or a slot 36 that is switched off or empty. Consequently, by increasing, 1010 , of the parameter CURRENT_PCI_BUS, the CPU 14 effectively a bus number for the slot 36 that is switched off or empty. Alternatively, the CPU 14 more than one bus number for the slot 36 reserve, which is switched off or empty.

Falls die CPU 14 eine PCI-PCI-Brücken-Schaltung fand, dann stellt die CPU 14, 1012, die Primär-Bus-Zahl der PCI-PCI-Brücken-Schaltung gleich zu dem Parameter CURRENT_PCI_BUS ein. Die CPU 14 erhöht dann, 1014, den Parameter CURRENT_PCI_BUS und stellt, 1016, die sekundäre Bus-Zahl der PCI-PCI-Brücke gleich zu der neuen Bus-Zahl, angezeigt durch den Parameter CURRENT_PCI_BUS, ein.If the CPU 14 found a PCI-PCI bridge circuit, then put the CPU 14 . 1012 , the primary bus number of the PCI-PCI bridge circuit is equal to the parameter CURRENT_PCI_BUS. The CPU 14 then increases, 1014 , set the parameter CURRENT_PCI_BUS and, 1016 , the secondary bus number of the PCI-PCI bridge is equal to the new bus number indicated by the parameter CURRENT_PCI_BUS.

Die CPU 14 stellt dann, 1018, die Neben-Bus-Zahl der gefundenen PCI-PCI-Brücken-Schaltung gleich zu der maximalen, möglichen Zahl von PCI-Bussen ein, und zwar durch Schreiben zu dem Neben-Bus-Zahl-Register 1218. Dieser Wert für das Neben-Bus-Zahl-Register 1218 ist temporär und ermöglicht der CPU 14, zusätzliche, ausgangsseitige PCI-PCI-Brücken-Schaltungen oder Schlitze 36 zu finden und zu programmieren, die abgeschaltet oder leer sind.The CPU 14 then, 1018 , the sub-bus number of the PCI-PCI bridge circuit found equal to the maximum possible number of PCI buses by writing to the sub-bus number register 1218 , This value for the slave bus number register 1218 is temporary and allows the CPU 14 , additional output side PCI-PCI bridge circuits or slots 36 to find and program that are turned off or empty.

Die CPU 14 findet zusätzliche, ausgangsseitige PCI-PCI-Brücken-Schaltungen oder Schlitze 36, die abgeschaltet oder leer sind, durch Aufbewahren, 1022, der Parameter PCI_BUS, DEV und FCN und jeweils aufrufen, 1022, des BUS_ASSIGN Programms. Die CPU 14 speichert dann wieder, 1024, die Werte für die Parameter PCI_BUS, DEV und FCN, und kehrt zu dem letzten Aufruf des BUS_ASSIGN Programms zurück, um den Parameter CURRENT_PCI_BUS mit der nächsten PCI-Bus-Zahl zu aktualisieren, die durch die CPU 14 zugeordnet werden sollen.The CPU 14 finds additional output side PCI-PCI bridge circuits or slots 36 that are off or empty by storing, 1022 calling parameters PCI_BUS, DEV and FCN and respectively, 1022 , the BUS_ASSIGN program. The CPU 14 then save again, 1024 , the values for the PCI_BUS, DEV, and FCN parameters, and returns to the last call of the BUS_ASSIGN program to update the CURRENT_PCI_BUS parameter with the next PCI bus number issued by the CPU 14 should be assigned.

Die CPU 14 aktualisiert dann, 1026, die Neben-Bus-Zahl der aufgefundenen PCI-PCI-Brücke durch Einstellen, 1026, der Neben-Bus-Zahl gleich zu dem Parameter CURRENT_PCI_BUS. Demzufolge schließt dies die Zuordnung der PCI-Bus-Zahl zu der gefundenen PCI-PCI-Brückenschaltung und zusätzlichen, ausgangsseitigen PCI-PCI-Brücken-Schaltungen und Einsteckplätzen bzw. Schlitzen 36 ab, die abgeschaltet oder leer sind. Die CPU 14 findet dann, 1004, die nächste PCI-PCI-Brücken-Schaltung oder den Schlitz 36, die abgeschaltet oder leer sind, und zwar auf dem PCI-Bus, angezeigt durch den Parameter PCI_BUS.The CPU 14 then updates, 1026 to set the sub-bus number of the found PCI-PCI bridge by setting, 1026 , the sub-bus number is equal to the parameter CURRENT_PCI_BUS. Consequently, this includes the assignment of the PCI bus number to the found PCI-PCI bridge circuit and additional output PCI-PCI bridge circuits and slots 36 off, which are switched off or empty. The CPU 14 then finds 1004 , the next PCI-PCI bridge circuit or the slot 36 that are off or empty on the PCI bus, indicated by the PCI_BUS parameter.

Wie in 46 dargestellt ist, führt, nachdem die PCI-Bus-Zahlen zugeordnet sind, die CPU 14 ein Speicher-Raum-Zuordnungs-Programm, bezeichnet als MEM_ALLOC, aus, um Speicher-Raum für die PCI-Funktionen und Schlitze 36 zuzuordnen, die abgeschaltet oder leer sind. Die CPU 14 initialisiert zuerst, 1028, Such-Parameter, verwendet beim Unterstützen der CPU 14 beim Auffinden der angeordneten PCI-Funktionen und Schlitze 36, die abgeschaltet oder leer sind.As in 46 is shown, after the PCI bus numbers are assigned, the CPU 14 a memory space allocation program, referred to as MEM_ALLOC, turns off memory space for the PCI functions and slots 36 assign, which are switched off or empty. The CPU 14 initializes first, 1028 , Search parameter, used in supporting the CPU 14 finding the PCI functions and slots 36 that are switched off or empty.

Die CPU 14, findet dann, 1030, die nächste PCI-Funktion oder die Schlitze 36, die abgeschaltet oder leer ist. Falls die CPU 14 bestimmt, 1032, dass alle PCI-Funktionen und alle Schlitze bzw. Einsteckplätze 36, die abgeschaltet oder leer sind, einem Speicherraum zugeordnet worden sind, kehrt die CPU 14 von dem Programm MEM_ALLOC zurück. Ansonsten bestimmt die CPU 14, 1032, ob eine PCI-Funktion gefunden wurde.The CPU 14 , then finds 1030 , the next PCI function or the slots 36 that is switched off or empty. If the CPU 14 certainly, 1032 that all PCI functions and all slots or slots 36 that are off or empty, have been allocated to a memory space, the CPU returns 14 from the program MEM_ALLOC. Otherwise, the CPU determines 14 . 1032 whether a PCI function was found.

Falls dies der Fall ist, ordnet die CPU 14 Speicher-Resourcen zu, 1038, wie dies durch die PCI-Funktion spezifiziert ist. Ansonsten wird einer der Schlitze bzw. Einsteckplätze 36, der abgeschaltet ist oder leer ist, vorgefunden, und die CPU 14 ordnet eine Fehler-Speicher-Größe und eine Speicher-Ausrichtung für den Schlitz 36 zu, 1036. Die Fehler-Speicher-Größe kann entweder eine vorbestimmte Größe sein, bestimmt vor einem Einschalten des Computersystems 10, oder eine Größe, die nach einer Bestimmung der Speicher-Resourcen, erforderlich durch das Computersystem 10, bestimmt ist.If so, the CPU maps 14 Memory resources too, 1038 as specified by the PCI function. Otherwise, one of the slots or insertion slots 36 which is turned off or empty, found, and the CPU 14 associates an error memory size and a memory alignment for the slot 36 to, 1036 , The error memory size may either be a predetermined amount, determined prior to turning on the computer system 10 , or a size, after a determination of the memory resources required by the computer system 10 , is determined.

Wenn Speicherraum zugeordnet wird, programmiert die CPU 14 Speicher-Basis- 1212 und Speicher-Grenzen- 1214 Register der PCI-PCI-Brücken-Schaltungen, die eingangsseitig der gefundenen PCI-Funktion vorhanden sind. Die CPU 14 programmiert geeignet auch Basis-Adressen-Register der entsprechenden PCI-Vorrichtungen. Die CPU 14 findet dann, 1030, die nächste PCI-Funktion oder den Schlitz 36, der abgeschaltet oder leer ist.When memory space is allocated, the CPU programs 14 Memory base 1212 and memory limits 1214 Register of PCI-PCI bridge circuits present on the input side of the found PCI function. The CPU 14 Also suitably programs base address registers of the corresponding PCI devices. The CPU 14 then finds 1030 , the next PCI function or the slot 36 that is switched off or empty.

Wie in 47 dargestellt ist, führt, nachdem die PCI-Bus-Zahlen zugeordnet sind, die CPU 14 ein I/O-Raum-Zuordnungs-Programm, bezeichnet als I/O_ALLOC, aus, um I/O/Raum für PCI-Funktionen und Schlitze 36, die leer sind, zuzuordnen. Die CPU 14 initialisiert zuerst, 1040, Such-Parameter, verwendet beim Unterstützen der CPU 14, die zugeordneten PCI-Funktionen und Schlitze 36, die abgeschaltet oder leer sind, zu finden.As in 47 is shown, after the PCI bus numbers are assigned, the CPU 14 an I / O space allocation program, referred to as I / O_ALLOC, off to I / O / space for PCI functions and slots 36 that are empty, assign. The CPU 14 initializes first, 1040 , Search parameters, used when Support the CPU 14 , the associated PCI functions and slots 36 that are turned off or empty.

Die CPU 14 findet, 1042, die nächste PCI-Funktion oder den Schlitz 36, der abgeschaltet oder leer ist. Falls die CPU 14 bestimmt, 1044, dass alle PCI-Funktionen und Schlitze 36, die abgeschaltet oder leer sind, einem I/O/Raum zugeordnet worden sind, kehrt die CPU 14 von dem I/O_ALLOC Programm zurück. Ansonsten bestimmt die CPU 14, 1044, ob eine PCI-Funktion gefunden wurde. Falls dies der Fall ist, ordnet die CPU 14, 1050, I/O-Resourcen zu, wie dies durch die PCI-Funktion spezifiziert ist. Ansonsten ordnen ein Schlitz 36, der heruntergefahren ist oder leer vorgefunden wurde, und die CPU 14 eine Fehler-I/O-Größe und eine I/O-Ausrichtung für den Schlitz 36 zu, 1048. Die Fehler-I/O-Größe kann entweder eine vorbestimmte Größe, bestimmt vor einem Abschalten des Computersystems 10, oder eine Größe, bestimmt nach einer Bestimmung der I/O-Ressourcen, erforderlich durch das Computersystem 10, sein.The CPU 14 finds 1042 , the next PCI function or the slot 36 that is switched off or empty. If the CPU 14 certainly, 1044 that all PCI functions and slots 36 that are off or empty, have been assigned to an I / O / space, the CPU returns 14 back from the I / O_ALLOC program. Otherwise, the CPU determines 14 . 1044 whether a PCI function was found. If so, the CPU maps 14 . 1050 , I / O resources too, as specified by the PCI function. Otherwise, arrange a slot 36 that was shut down or found empty, and the CPU 14 an error I / O size and I / O alignment for the slot 36 to, 1048 , The error I / O size may either be a predetermined amount, determined prior to shutdown of the computer system 10 , or a size determined by a determination of the I / O resources required by the computer system 10 , be.

Wenn ein I/O/Raum zugeordnet wird, dann programmiert die CPU 14 die I/O-Basis 1208 und begrenzt, 1012, Register der PCI-PCI-Brücken-Schaltungen, eingangsseitig der PCI-Funktion oder des Schlitzes 36. Die CPU 14 programmiert auch Basis-Adressen-Register der entsprechenden PCI-Vorrichtungen geeignet. Die CPU 14 findet dann, 1042, die nächste PCI-Funktion oder den Schlitz 36, der abgeschaltet oder leer ist.If an I / O / room is assigned then the CPU programs 14 the I / O base 1208 and limited, 1012 , Registers of the PCI-PCI bridge circuits, input side of the PCI function or the slot 36 , The CPU 14 also programs base address registers of the corresponding PCI devices. The CPU 14 then finds 1042 , the next PCI function or the slot 36 that is switched off or empty.

Wie in 48 dargestellt ist, führt, nach einer anfänglichen Konfiguration, wenn eine Unterbrechung erzeugt ist, die anzeigt, dass einer der Hebel 802 geöffnet oder geschlossen ist, die CPU 14 ein Unterbrechungs-Service-Programm, bezeichnet als CARD_INT, aus. Die CPU 14 liest, 1052, die Inhalte des Unterbrechungs-Registers 800, um zu bestimmen, 1053, ob der Hebel 802 geöffnet oder geschlossen worden ist. Falls die CPU 14 bestimmt, 1053, dass der Hebel 802, der die Unterbrechung verursacht, geöffnet wurde, kehrt die CPU 14 von dem Programm CARD_INT zurück.As in 48 after an initial configuration, when an interrupt is generated that indicates that one of the levers 802 open or closed, the CPU 14 an interrupt service program, referred to as CARD_INT, off. The CPU 14 read, 1052 , the contents of the interrupt register 800 , to determine, 1053 whether the lever 802 has been opened or closed. If the CPU 14 certainly, 1053 that the lever 802 that caused the interruption, the CPU returns 14 from the program CARD_INT.

Ansonsten schreibt die CPU 14, 1054, zu dem Schlitz-Freigabe-Register 817 und stellt, 1054, das SO-Bit ein, um das Einschalten des Schlitzes 36 und der Karte 807, eingesetzt in dem Schlitz 36, zu initiieren. Die CPU 14 wartet dann (nicht dargestellt) auf die Karte 807, um einzuschalten. Die CPU 14 greift dann, 1055, auf den PCI-Bus auf der Karte zu, falls vorhanden. Die CPU 14 bestimmt dann, 1056, ob die Karte 807, die gerade eingeschaltet wurde, einen PCI-Bus besaß (und eine PCI-PCI-Brücken-Schaltung). Falls dies der Fall ist, bestimmt, 1057, die CPU 14 die primären, sekundären und Unterprogramm-Bus-Zahlen, reserviert für den Schlitz 36, in dem die Karte 807 eingeschaltet wurde. Die CPU 14 konfiguriert darauffolgend, 1058, die PCI-PCI-Brücken-Schaltung auf der Karte 807, die eingeschaltet wurde.Otherwise, the CPU writes 14 . 1054 , to the slot-release register 817 and pose 1054 , the SO bit to turn on the slot 36 and the card 807 inserted in the slot 36 , to initiate. The CPU 14 then wait (not shown) for the card 807 to turn on. The CPU 14 then pick, 1055 to the PCI bus on the card too, if available. The CPU 14 then determines 1056 whether the card 807 that was just turned on had a PCI bus (and a PCI-to-PCI bridge circuit). If this is the case, determines 1057 , the CPU 14 the primary, secondary and subroutine bus numbers reserved for the slot 36 in which the card 807 was turned on. The CPU 14 subsequently configures 1058 , the PCI-PCI bridge circuit on the card 807 that was turned on.

Die CPU 14 bestimmt dann, 1060, die Stelle und die Größe von I/O- und Speicher-Räumen, reserviert für den Schlitz 36. Die CPU 14 schreibt darauffolgend, 1062, zu Basis-Adressen-Registern in dem PCI-Konfigurations-Header-Raum der Karte 807, die eingeschaltet wurde. Die CPU 14 liest dann, 1064, ein Unterbrechungs-Stift-Register in dem Konfigurations-Raum der Karte 807, um zu bestimmen, 1066, ob die Karte 807 Unterbrechungs-Anforderungen verwendet. Falls dies der Fall ist, schreibt die CPU 14, 1068, ein Unterbrechungs-Zeilen-Register in den Konfigurations-Raum der Karte 807 mit einer zugeordneten IRQ-Zahl.The CPU 14 then determines 1060 , the location and size of I / O and storage spaces, reserved for the slot 36 , The CPU 14 subsequently writes 1062 to base address registers in the PCI configuration header space of the card 807 that was turned on. The CPU 14 then reads, 1064 , an interrupt pin register in the configuration space of the card 807 , to determine, 1066 whether the card 807 Interrupt requests used. If so, the CPU writes 14 . 1068 , an interrupt line register in the configuration space of the card 807 with an assigned IRQ number.

Die CPU gibt dann, 1070, Befehls-Register der Karte 870 frei, die in dem Konfigurations-Raum der Karte 807 angeordnet sind, und ermöglicht der Karte 807, auf Speicher- und I/O-Zugriffe auf den PCI-Bus 32 anzusprechen. Die CPU 14 schreibt darauffolgend, 1072, zu dem Unterbrechungs-Register 800, um die Unterbrechungs-Anforderung zu löschen, und lädt, 1074, einen Software-Vorrichtungs-Treiber für die Karte 807. Die CPU 14 kehrt dann von dem Programm CARD_INT zurück.The CPU then gives 1070 , Command register of the card 870 free in the configuration space of the card 807 are arranged, and allows the card 807 , to memory and I / O access to the PCI bus 32 to appeal. The CPU 14 subsequently writes 1072 to the interrupt register 800 to clear the interrupt request and load, 1074 , a software device driver for the card 807 , The CPU 14 then returns from program CARD_INT.

BRÜCKEN-KONFIGURATIONBRIDGE CONFIGURATION

Funktional bilden Brücken-Chips 26 und 48 eine PCI-PCI-Brücke zwischen PCI-Bussen 24 und 32. Allerdings umfasst jeder Brücken-Chip einen Konfigurations-Raum, der unabhängig konfiguriert werden muss. Eine Lösung ist diejenige, zwei Brücken als unabhängige Vorrichtungen, eine Brücke bildend, zu behandeln, allerdings würde dies eine Modifikation des BIOS-Konfigurations-Programms erfordern. Die andere Lösung ist diejenige, das Kabel 28 als einen Bus zu definieren, so dass das Konfigurations-Programm den eingangsseitigen Brücken-Chip 26 als eine PCI-PCI-Brücke zwischen dem PCI-Bus 24 und dem Kabel 28 und dem ausgangsseitigen Brücken-Chip 48 als eine PCI-PCI-Brücke zwischen dem Kabel 28 und dem PCI-Bus 32 konfigurieren kann. Ein Vorteil dieser zweiten Lösung ist derjenige, dass Standard-PCI-Konfigurations-Zyklen laufen können, um die Brücken-Chips 26 und 48 zu konfigurieren, falls sie zwei PCI-PCI-Brücken waren, wenn tatsächlich die zwei Brücken-Chips eine PCI-PCI-Brücke bilden.Functionally form bridge chips 26 and 48 a PCI-PCI bridge between PCI buses 24 and 32 , However, each bridge chip has a configuration space that needs to be independently configured. One solution is to treat two bridges as independent devices forming a bridge, but this would require a modification of the BIOS configuration program. The other solution is the one that cables 28 as define a bus, so the configuration program the input side bridge chip 26 as a PCI-PCI bridge between the PCI bus 24 and the cable 28 and the output side bridge chip 48 as a PCI-PCI bridge between the cable 28 and the PCI bus 32 can configure. An advantage of this second solution is that standard PCI configuration cycles can run to the bridge chips 26 and 48 if they were two PCI-PCI bridges, in fact if the two bridge chips form a PCI-PCI bridge.

Dabei sind zwei Typen von Konfigurations-Transaktionen auf dem PCI-Bus vorhanden: Typ 0 und Typ 1. Ein Konfigurations-Zyklus vom Typ 0 ist für Vorrichtungen auf dem PCI-Bus vorgesehen, auf dem der Konfigurations-Zyklus erzeugt ist, während ein Konfigurations-Zyklus vom Typ 1 für Vorrichtungen auf einem sekundären PCI-Bus, auf den über eine Brücke zugegriffen wird, vorgesehen ist. 51 stellt das Adressen-Format von Konfigurations-Zyklen vom Typ 0 und Typ 1 dar. Ein Konfigurations-Befehl vom Typ 0 wird durch Einstellen von PCI-Adressen-Bits AD[1:0] auf 00 während eines Konfigurations-Zyklus spezifiziert. Ein Konfigurations-Zyklus vom Typ 0 wird nicht über eine PCI-PCI- Brücke weitergeführt, sondern verbleibt lokal auf dem Bus, auf dem die Konfigurations-Transaktion vom Typ 0 erzeugt wurde.There are two types of configuration transactions on the PCI bus: type 0 and type 1. A Type 0 configuration cycle is for devices on the PCI bus on which the configuration cycle is generated while a configuration cycle is in progress Type 1 cycle for devices on a secondary PCI bus accessed via a bridge is provided. 51 represents the address format of type 0 and type 1 configuration cycles. A type 0 configuration command is specified by setting PCI address bits AD [1: 0] to 00 during a configuration cycle. A Type 0 configuration cycle is not continued via a PCI-PCI bridge, but remains locally on the bus where the Type-0 configuration transaction was created.

Ein Konfigurations-Befehl vom Typ 1 wird durch Einstellen von Adressen-Bits AD[1:0] auf einen binären Wert 01 spezifiziert. Konfigurations-Befehle vom Typ 1 können durch eine PCI-PCI-Brücke zu irgendeinem Level in der PCI-Bus-Hierarchie weitergeführt werden. Schließlich wandelt eine PCI-PCI-Brücke einen Befehl vom Typ 1 zu einem Befehl vom Typ 0 um, um Vorrichtungen zu konfigurieren, die mit der sekundären Schnittstelle der PCI-PCI-Brücke verbunden sind.One Type 1 configuration command is accomplished by setting address bits AD [1: 0] on a binary Value 01 specified. Configuration commands of type 1 can by a PCI-PCI bridge continue to any level in the PCI bus hierarchy. After all converts a PCI-PCI bridge a Type 1 command to a Type 0 order command to devices to configure that connected to the secondary interface of the PCI-PCI bridge are.

Konfigurations-Parameter, gespeichert in den Konfigurations-Registern 105 oder 125 der Brücke, identifizieren die Bus-Zahlen für deren primäre PCI-Schnittstelle (Primär-Bus-Zahl) und sekundären PCI-Schnittstelle (Sekundär-Bus-Zahl) und eine nebengeordnete Bus-Zahl, die die höchste, nummerierte PCI-Bus-Unterordnung der Brücke angibt. Die Bus-Zahlen werden durch ein PCI-Konfigurations-Programm BUS_ASSIGN (45) eingestellt. Zum Beispiel ist, in dem eingangsseitigen Brücken-Chip 26, die Primär-Bus-Zahl des Busses 24, die Sekundär-Bus-Zahl ist die Zahl des Kabels 28 und die Neben-Bus-Zahl ist die Zahl des Sekundär-PCI-Busses 32 oder die Zahl eines tieferen PCI-Busses, falls ein solcher existiert. In dem ausgangsseitigen Brücken-Chip 48 ist die Primär-Bus-Zahl die Zahl des Kabel-Busses 28, die Sekundär-Bus-Zahl ist die Zahl des PCI-Busses 32 und die nebengeordnete Bus-Zahl ist die Zahl eines PCI-Busses, angeordnet tiefer in der PCI-Bus-Hierarchie, falls eine solche existiert.Configuration parameters stored in the configuration registers 105 or 125 The bridge, identify the bus numbers for their primary PCI interface (primary bus number) and secondary PCI interface (secondary bus number) and a sibling bus number, which is the highest, numbered PCI bus subordination indicating the bridge. The bus numbers are determined by a PCI configuration program BUS_ASSIGN ( 45 ). For example, in the input side bridge chip 26 , the primary bus number of the bus 24 , the secondary bus number is the number of cable 28 and the slave bus number is the number of the secondary PCI bus 32 or the number of a lower PCI bus, if one exists. In the output side bridge chip 48 the primary bus number is the number of the cable bus 28 , the secondary bus number is the number of the PCI bus 32 and the sibling bus number is the number of a PCI bus located lower in the PCI bus hierarchy, if one exists.

Wie 53A zeigt, wird eine Erfassung von Konfigurations-Zyklen durch eine Logik in dem PCI-Target-Block 103 oder 121 in dem eingangsseitigen Brücken-Chip 26 oder dem ausgangsseitigen Brücken-Chip 48 jeweils behandelt. Ein Konfigurations-Zyklus vom Typ 0, erfasst auf dem eingangsseitigen Bus 24, wird durch Aufstellen eines Signals TYP0_CFG_CYC_US, erzeugt durch ein UND-Gate 276, angezeigt. Das UND-Gate 276 empfängt Signale UPSTREAM_CHIP, IDSEL (Chip-Select während einer Konfigurations-Transaktion), CFGCMD (Konfigurations-Befehl-Zyklus, der erfasst ist) und ADDR00 (Bits 1 und 0 sind beide 0'en). Ein Konfigurations-Zyklus vom Typ 0, erfasst durch den ausgangsseitigen Brücken-Chip 48, wird durch ein Signal TYP0_CFG_CYC_DS, erzeugt durch ein UND-Gate 278, angezeigt, das ein Signal S1_BL_IDSEL (IDSEL Signal für den ausgangsseitigen Brücken-Chip 48), das Signal CFGCMD, das Signal ADDR00, ein Signal MSTR_ACTIVE (anzeigend, dass der Brücken-Chip 48 der Master auf einem sekundären PCI-Bus 32 ist), und den invertierten Zustand eines Signal UPSTREAM_CHIP empfängt.As 53A shows, detection of configuration cycles by logic in the PCI target block 103 or 121 in the input side bridge chip 26 or the output side bridge chip 48 each treated. A configuration cycle of type 0, detected on the input side bus 24 , is established by asserting a signal TYP0_CFG_CYC_US generated by an AND gate 276 , displayed. The AND gate 276 receives signals UPSTREAM_CHIP, IDSEL (chip select during a configuration transaction), CFGCMD (configuration command cycle detected) and ADDR00 (bits 1 and 0 are both 0's). A configuration cycle of type 0 detected by the output side bridge chip 48 , is given by a signal TYP0_CFG_CYC_DS, generated by an AND gate 278 , indicated that a signal S1_BL_IDSEL (IDSEL signal for the output side bridge chip 48 ), the signal CFGCMD, the signal ADDR00, a signal MSTR_ACTIVE (indicating that the bridge chip 48 the master on a secondary PCI bus 32 is), and receives the inverted state of a signal UPSTREAM_CHIP.

Eine Erfassung eines Konfigurations-Zyklus vom Typ 1 durch das PCI-Target 103 in dem eingangsseitigen Brücken-Chip 26 wird durch Aufstellen eines Signals TYP1_CFG_CYC_US von einem UND-Gate 280 angezeigt, das Signale CFGCMD, ADDR01 (Bits 1 und 0 sind niedrig und hoch jeweils) und UPSTREAM_CHIP empfängt. Eine Erfassung eines Konfigurations-Zyklus vom Typ 1 auf dem ausgangsseitigen Bus 32 wird durch Aufstellen eines Signals TYP_CFG_CYC_DS von einem UND-Gate 282, das die Signale CFGCMD, ADDR01 empfängt, und dem invertierten Zustand des Signals UPSTREAM_CHIP angezeigt.A capture of a type 1 configuration cycle by the PCI target 103 in the input side bridge chip 26 is set by asserting a signal TYP1_CFG_CYC_US from an AND gate 280 displayed, the signals CFGCMD, ADDR01 (bits 1 and 0 are low and high respectively) and UPSTREAM_CHIP receives. A detection of a type 1 configuration cycle on the output side bus 32 is done by setting up a TYP_CFG_CYC_DS signal from an AND gate 282 , which receives the signals CFGCMD, ADDR01, and the inverted state of the signal UPSTREAM_CHIP.

Der Brücken-Chip, der eine Transaktion vom Typ 0 aufnimmt, verwendet das Register-Zahl-Feld 250 in der Konfigurations-Transaktions-Adresse, um auf das geeignete Konfigurations-Register zuzugreifen. Das Funktions-Zahl-Feld 252 spezifiziert eine von acht Funktionen, die in einer multi-funktionalen Vorrichtung während der Konfigurations-Transaktion durchgeführt werden soll. Eine PCI-Vorrichtung kann multi-funktional sein und kann solche Funktionen haben, wie eine Festplatten-Laufwerksteuereinheit, eine Speicher-Steuereinheit, eine Brücke, usw..The bridge chip that accepts a type 0 transaction uses the register number field 250 in the configuration transaction address to access the appropriate configuration register. The function number field 252 specifies one of eight functions to be performed in a multi-functional device during the configuration transaction. A PCI device may be multi-functional and may have such functions as a hard disk drive controller, a memory controller, a bridge, etc.

Wenn der Brücken-Chip 26 eine Konfigurations-Transaktion vom Typ 1 auf seinem eingangsseitigen Bus 26 sieht, kann er die Transaktion entweder ausgangsseitig weiterführen, die Transaktion zu einer Transaktion vom Typ 0 translatieren, die Transaktion zu einem speziellen Zyklus konvertieren oder die Transaktion ignorieren (basierend auf den Bus-Zahl-Parametern, gespeichert in den Konfigurations-Registern 105 oder 125). Falls eine Transaktion weitergeführt wird, gelangt sie bis zu dem PCI-Master des Bestimmungs-Brücken-Chips, um die Transaktion vom Typ 1 zu der entsprechenden, geeignten Transaktion zu konvertieren. Falls ein Brücken-Chip die Transaktion selbst handhabt, dann spricht er durch Aufstellen des Signals DEVSEL_ auf den PCI-Bus an, und handhabt die Transaktion als eine normale, verzögerte Transaktion.If the bridge chip 26 a type 1 configuration transaction on its input side bus 26 sees, he can either continue the transaction on the output side, translate the transaction to a type 0 transaction, convert the transaction to a specific cycle, or ignore the transaction (based on the bus number parameters stored in the configuration registers 105 or 125 ). If a transaction continues, it goes to the PCI master of the destination bridge chip to convert the type 1 transaction to the appropriate transaction. If a bridge chip handles the transaction itself, it will respond to the PCI bus by asserting the signal DEVSEL_ and handle the transaction as a normal, delayed transaction.

In einer Konfiguration-Transaktion vom Typ 1 wählt das Bus-Zahl-Feld 260 einen eindeutigen PCI-Bus in der PCI-Hierarchie aus. Ein PCI-Target-Block 103 führt einen Konfigurations-Zyklus vom Typ 1 von dem eingangsseitigen Chip 26 zu dem ausgangsseitigen Brücken-Chip 48 hindurch, falls ein Signal PASS_TYP1_DS durch ein UND-Gate 284 aufgestellt ist. Das UND-Gate 284 empfängt das Signal_TYP1_CFG_CYC_US und ein Signal IN_RANGE (das Bus-Zahl-Feld 260 ist größer als oder gleich zu der gespeicherten, sekundären Bus-Zahl und geringer als oder gleich zu der gespeicherten Neben-Bus-Zahl). Der andere Eingang des UND-Gates 284 ist mit dem Ausgang eines ODER-Gates 286 verbunden, der einen Eingang mit dem Ausgang eines UND-Gates 288 verbunden besitzt, und wobei der andere Eingang den invertierten Zustand eines Signals SEC_BUS_MATCH aufnimmt. Demzufolge wird, falls ein Zyklus vom Typ 1 erfasst wird, das Signal IN_RANGE aufgestellt ist, und wenn das Bus-Zahl-Feld 260 nicht die gespeicherte, sekundäre Bus-Zahl anpasst, das Signal PASS_TYP1_DS aufgestellt. Falls das Bus-Feld 260 nicht die gespeicherte Sekundär-Bus-Zahl anpasst, dann werden die Bus-Vorrichtungen auf oder nach dem ausgangsseitigen Bus 32 adressiert. Das UND-Gate 288 wird auf hoch gesetzt und das Vorrichtungs-Zahl-Feld 258 zeigt an, dass das Target des Konfigurations-Zyklus vom Typ 1 der Konfigurations-Raum des ausgangsseitigen Brücken-Chips 48 ist. Falls dies wahr ist, wird die Konfigurations-Transaktion vom Typ 1 entlang des Kabels 28 zu dem ausgangsseitigen Brücken-Chip 48 für eine Translation einer Konfigurations-Transaktion vom Typ 0 weitergeführt. Das PCI-Target 121 in dem ausgangsseitigen Brücken-Chip 48 spricht auf die Transaktion an und liest von den und schreibt in die ausgangsseitigen Brücken-Konfigurations-Register 125 entsprechend zu der Transaktion vom Typ 0. Die Steuer-Stifte des ausgangsseitigen Chips werden angesteuert und Lese- und Schreib-Daten erscheinen auf dem ausgangsseitigen PCI-Bus 32, falls eine Transaktion vom Typ 0 auf dem ausgangsseitigen Bus läuft (für Debug-Zwecke), obwohl jedes IDSEL auf dem ausgangsseitigen Bus 32 so blockiert wird, das keine Vorrichtung tatsächlich auf eine Transaktion vom Typ 0 anspricht.In a configuration transaction of type 1 selects the bus number field 260 a unique PCI bus in the PCI hierarchy. A PCI target block 103 performs a type 1 configuration cycle of the input side chip 26 to the output side bridge chip 48 if a PASS_TYP1_DS signal passes through an AND gate 284 is set up. The AND gate 284 receives the signal_TYP1_CFG_CYC_US and a signal IN_RANGE (the bus number field 260 is greater than or equal to the stored secondary bus number and less than or equal to the stored slave bus number). The other input of the AND gate 284 is with the output of an OR gate 286 connected, which has an input to the output of an AND gate 288 and the other input receives the inverted state of a signal SEC_BUS_MATCH. Consequently, if a Type 1 cycle is detected, the IN_RANGE signal is asserted, and if the Bus Number field 260 does not adjust the stored secondary bus number, the PASS_TYP1_DS signal is asserted. If the bus field 260 does not adjust the stored secondary bus number, then the bus devices on or after the output side bus 32 addressed. The AND gate 288 is set to high and the device number field 258 indicates that the target of the Type 1 configuration cycle is the configuration space of the output bridge chip 48 is. If true, the configuration transaction will be type 1 along the cable 28 to the output side bridge chip 48 for a translation of a type 0 configuration transaction. The PCI target 121 in the output side bridge chip 48 responds to the transaction and reads from the and writes to the output side bridge configuration registers 125 corresponding to the type-0 transaction. The control pins of the output-side chip are driven and read and write data appear on the output-side PCI bus 32 if a transaction of type 0 is on the output side bus (for debug purposes), although each IDSEL is on the output side bus 32 is blocked so that no device is actually responsive to a type 0 transaction.

Falls der PCI-Target-Block 103 in dem eingangsseitigen Brücken-Chip 26 eine Konfigurations-Transaktion vom Typ 1 auf seinen eingangsseitigen Bus 24 erfasst, mit einem Bus-Zahl-Feld gleich zu der gespeicherten Sekundär-Bus-Zahl (der Kabel-Bus 28), allerdings nicht eine Vorrichtung 0 adressierend (suchen nach anderen Vorrichtungen auf dem Kabel-Bus 28), dann irgnoriert der Target-Block 103 die Transaktion auf dem primären Bus 26.If the PCI target block 103 in the input side bridge chip 26 a configuration transaction of type 1 on its input side bus 24 detected, with a bus number field equal to the stored secondary bus number (the cable bus 28 ), but not addressing a device 0 (look for other devices on the cable bus 28 ), then the target block ignores 103 the transaction on the primary bus 26 ,

Falls das PCI-Target 121 eine Konfigurations-Schreib-Transaktion vom Typ 1 (WR_hoch) auf dem sekundären PCI-Bus 32 erfasst, der ein Bus-Zahl-Feld außerhalb des Bereichs der Sekundär-Bus-Zahl und der Neben-Bus-Zahl besitzt (IN_RANGE niedrig), und falls die Vorrichtungs-Zahl 258, die Funktions-Zahl 256 und die Register-Zahl 254 ei nen speziellen Zyklus anzeigen (SP_MATCH hoch), dann wird ein Signal PASS_TYP1_US durch ein UND-Gate 290 aufgestellt. Das UND-Gate 290 empfängt das Signal TYP1_CFG_CYC_DS, das Signal SP_MATCH, das Schreib/Lese-Strobe WR_ und den invertierten Zustand des Signal IN_RANGE. Wenn der PCI-Master 101 in dem eingangsseitigen Brücken-Chip 26 einen solchen Zyklus empfängt, lässt er einen speziellen Zyklus auf dem primären PCI-Bus 24 laufen.If the PCI target 121 a configuration write transaction of type 1 (WR_high) on the secondary PCI bus 32 detected having a bus number field outside the range of the secondary bus number and the sub-bus number (IN_RANGE low), and if the device number 258 , the function number 256 and the register number 254 show a special cycle (SP_MATCH high), then a PASS_TYP1_US signal goes through an AND gate 290 established. The AND gate 290 receives the signal TYP1_CFG_CYC_DS, the signal SP_MATCH, the write / read strobe WR_ and the inverted state of the signal IN_RANGE. If the PCI master 101 in the input side bridge chip 26 When it receives such a cycle, it leaves a special cycle on the primary PCI bus 24 to run.

Konfigurations-Transaktionen werden durch einen Brücken-Chip unter bestimmten Bedingungen ignoriert. Falls der Target-Block 103 in dem eingangsseitigen Brücken-Chip 26 eine Konfigurations-Transaktion vom Typ 1 auf dem PCI-Bus 24 erfasst (sein eingangsseitiger Bus) und das Bus-Zahl-Feld 260 geringer als die Sekundär-Bus-Zahl oder größer als die Neben-Bus-Zahl, gespeichert in dem Konfigurations-Raum des Brücken-Chips, ist, dann ignoriert der Target-Block 103 die Transaktion.Configuration transactions are ignored by a bridge chip under certain conditions. If the target block 103 in the input side bridge chip 26 a type 1 configuration transaction on the PCI bus 24 detected (its input side bus) and the bus number field 260 is less than the secondary bus number or greater than the slave bus number stored in the configuration space of the bridge chip, then ignores the target block 103 the transaction.

Falls der Target-Block 121 in dem ausgangsseitigen Brücken-Chip 48 eine Konfigurations-Transaktion vom Typ 1 auf dem sekundären PCI-Bus 32 erfasst (sein ausgangsseitiger Bus), und das Bus-Zahl-Feld 260 größer als oder gleich zu der Sekundär-Bus-Zahl oder geringer als oder gleich zu der Neben-Bus-Zahl, gespeichert in dem Konfigurations-Raum des Brücken-Chips, ist, dann ignoriert der Target-Block 121 die Transaktion. Zusätzlich werden Konfigurations-Befehle vom Typ 1, die zu der Eingangsseite hin gehen, ignoriert, falls ein Befehl vom Typ 1 nicht eine Konversion zu einer speziellen Zyklus-Transaktion spezifiziert, ungeachtet der Bus-Zahl, spezifiziert in dem Befehl vom Typ 1.If the target block 121 in the output side bridge chip 48 a type 1 configuration transaction on the secondary PCI bus 32 detected (its output side bus), and the bus number field 260 is greater than or equal to the secondary bus number, or less than or equal to the slave bus number stored in the bridge chip configuration space, then the target block ignores 121 the transaction. In addition, type 1 configuration instructions going to the input side are ignored if a type 1 instruction does not specify a conversion to a particular cycle transaction, regardless of the bus number specified in the type 1 instruction.

Wie 53B zeigt, überwacht der PCI-Master 101 oder 123 einen Konfigurations-Zyklus, übertragen über das Kabel 28. Falls der PCI-Master 123 in dem ausgangsseitigen Brücken-Chip 48 eine Konfigurations-Transaktion vom Typ 1 von dem eingangsseitigen Brücken-Chip 26 erfasst, vergleicht das Bus-Zahl-Feld 260 mit der Primär-Bus-Zahl und der Sekundär-Bus-Zahl, gespeichert in dem Konfigurations-Raum des Brücken-Chips 48. Falls das Bus-Zahl-Feld 260 entweder die gespeicherte Primär-Bus-Zahl (d. h. Kabel 28) oder die gespeicherte Sekundär-Bus-Zahl (Adressieren einer Vorrichtung direkt, verbunden mit dem ausgangsseitigen Bus 23) anpasst, dann translatiert der ausgangsseitige Brücken-Chip 48 die Transaktion zu einer Transaktion vom Typ 0 (durch Einstellen von AD[1:0] = 00), wenn er die Konfigurations-Transaktion auf dem Bus weiterführt. Die Transaktion vom Typ 0 wird auf dem PCI-Bus 32 durch den PCI-Master-Block 123 durchgeführt.As 53B shows, monitors the PCI master 101 or 123 a configuration cycle, transmitted via the cable 28 , If the PCI master 123 in the output side bridge chip 48 a type 1 configuration transaction from the upstream bridge chip 26 captures, compares the bus number field 260 with the primary bus number and the secondary bus number stored in the bridge chip configuration space 48 , If the bus number field 260 either the stored primary bus number (ie cable 28 ) or the stored secondary bus number (addressing a device directly connected to the output side bus 23 ), then the output side bridge chip translates 48 the transaction becomes a type 0 transaction (by setting AD [1: 0] = 00) when it completes the configuration transaction on the bus continues. The transaction of type 0 will be on the PCI bus 32 through the PCI master block 123 carried out.

Das nachfolgende sind Translationen, durchgeführt von Feldern in der Konfigurations-Transaktion vom Typ 1. Das Vorrichtungs-Zahl-Feld 258 in der Konfigurations-Transaktion vom Typ 1 wird durch den PCI-Master 123 decodiert, um eine eindeutige Adresse in der translatierten Transaktion vom Typ 0 auf dem sekundären Bus 32 zu erzeugen, wie dies in der Tabelle der 52 definiert ist. Die Sekundär-Adressen-Bits AD[31:16], decodiert von dem Vorrichtungs-Zahl-Feld 258, werden durch den PCI-Master 123 verwendet, um die geeigneten Chip-Auswahl-Signale IDSEL für die Vorrichtungen auf dem sekundären PCI-Bus 32 zu erzeugen. Wenn das Adressen-Bit AD[15] gleich zu 1 ist, dann behält der Brücken-Chip 48 alle Adressen-Bits AD[31:16], gesetzt auf niedrig (kein IDSEL ist aufgestellt), bei. Das Register-Zahl-Feld 254 und das Funktions-Zahl-Feld 256 des Konfigurations-Befehls vom Typ 1 werden nicht modifiziert zu dem Konfigurations-Befehl vom Typ 0 hindurchgeführt. Das Funktions-Zahl-Feld 256 wählt acht Funktionen aus, und das Register-Zahl-Feld 254 wählt ein Doppel-Wort in dem Konfigurations-Register-Raum der ausgewählten Funktion aus.The following are translations performed by fields in the type 1 configuration transaction. The device number field 258 in the type 1 configuration transaction is through the PCI master 123 decodes to a unique address in the translated type 0 transaction on the secondary bus 32 to produce, as shown in the table of 52 is defined. The secondary address bits AD [31:16] decoded from the device number field 258 , be through the PCI master 123 used to provide the appropriate chip selection signals IDSEL for the devices on the secondary PCI bus 32 to create. If the address bit AD [15] is equal to 1, then the bridge chip keeps 48 all address bits AD [31:16] set to low (no IDSEL set up). The register number field 254 and the function number field 256 of the type 1 configuration command are passed unmodified to the type 0 configuration command. The function number field 256 selects eight functions, and the register number field 254 selects a double word in the configuration register space of the selected function.

Für eine Konfigurations-Transaktion vom Typ 1, zielmäßig vorgesehen zu dem ausgangsseitigen Brücken-Chip 48, wandelt der Brücken-Chip 48 die Transaktion vom Typ 1 zu einer Transaktion vom Typ 0 um, als würde sie eine Vorrichtung auf dem ausgangsseitigen Bus 32 adressieren, allerdings werden die AD[31:16] Stifte auf 0'en gesetzt, so dass keine Sekundär-PCI-Bus-Vorrichtung ein IDSEL aufnimmt. Die PCI-Master-Logik 123 erfasst dies durch Aufstellen eines Signals TYP1_TO_INT0, angesteuert durch ein UND-Gate 262. Das UND-Gate 262 empfängt ein Signal CFG_CMD (einen Konfigurations-Befehl-Zyklus anzeigend), den Ausgang eines ODER-Gates 264 und den invertierten Zustand des Signals UPSTREAM_CHIP (Translation Type-1-zu-Type-0 wird in dem eingangsseitigen Brücken-Chip 26 gesperrt). Das ODER-Gate 264 stellt seinen Ausgang auf hoch, falls ein Signal PRIM_BUS_MATCH aufgestellt ist (das Bus-Zahl-Feld 260 passt die gespeicherte, primäre Bus-Zahl an), oder falls die gespeicherte, primäre Bus-Zahl CFG2P_PRIM_BUS_NUM[7:0] gleich zu null ist (anzeigend, dass die Primär-Bus-Zahl in dem Konfigurations-Raum des Brücken-Chips 48 nicht durch das System BIOS bis jetzt konfiguriert worden ist und der momentane Konfigurations-Zyklus vom Typ 1 zu dem internen Konfigurations-Raum geht, um die Primär-Bus-Zahl des Brücken-Chips 48 zu programmieren).For a type 1 configuration transaction targeted to the output bridge chip 48 , converts the bridge chip 48 the transaction of type 1 to a transaction of type 0, as if it were a device on the output side bus 32 however, the AD [31:16] pins are set to 0's so that no secondary PCI bus device will pick up an IDSEL. The PCI Master logic 123 detects this by setting up a signal TYP1_TO_INT0, driven by an AND gate 262 , The AND gate 262 receives a signal CFG_CMD (indicating a configuration command cycle), the output of an OR gate 264 and the inverted state of the signal UPSTREAM_CHIP (Translation Type-1-to-Type-0 is in the input side bridge chip 26 blocked). The OR gate 264 sets its output high if a PRIM_BUS_MATCH signal is asserted (the bus number field 260 adjusts the stored primary bus number) or if the stored primary bus number CFG2P_PRIM_BUS_NUM [7: 0] is equal to zero (indicating that the primary bus number is in the bridge chip's configuration space 48 has not been configured by the system BIOS until now, and the current type 1 configuration cycle goes to the internal configuration space to the bridge chip's primary bus number 48 to program).

Ein Signal TYP1_TO_EXT0 wird durch ein UND-Gate 266 aufgestellt und spricht auf eine Anpassung zu einer gespeicherten Sekundär-Bus-Zahl an. Die Eingänge des UND-Gates 266 empfangen das Signal CFG_CMD, das Signal SEC_BUS_MATCH, den invertierten Zustand des Signals UPSTREAM_CHIP und den invertierten Zustand eines Signals SP_MATCH (nicht ein spezieller Zyklus). Das Signal TYP1_TO_EXT0 zeigt an, dass die konvertierte Konfigurations-Transaktion vom Typ 0 zu einer Vorrichtung zielmäßig auf dem sekundären PCI-Bus 32 geführt wird.A signal TYP1_TO_EXT0 is passed through an AND gate 266 and responds to an adaptation to a stored secondary bus number. The inputs of the AND gate 266 receive the signal CFG_CMD, the signal SEC_BUS_MATCH, the inverted state of the signal UPSTREAM_CHIP and the inverted state of a signal SP_MATCH (not a special cycle). The TYP1_TO_EXT0 signal indicates that the converted type 0 configuration transaction to a device is targeted on the secondary PCI bus 32 to be led.

Das Signal TYP1_TO_INT0 wird zu dem 1-Eingang eines 4:1 Multiplexers 274 geliefert. Der 2-Eingang wird auf niedrig gelegt und der 0- und 3-Eingang des Multiplexers 274 nehmen ein Signal LTYP1_TO_INT0 von einem Flip-Flop 270 vom D-Typ auf. Der Auswahl-Eingang S1 des Multiplexers 274 empfängt ein Signal CMD_LATCH (FRAME_, aufgestellt für einen neuen Zyklus auf dem PCI-Bus 32), und der Auswahl-Eingang S0 empfängt ein Signal P2Q_START_PULSE (das anzeigt, wenn es hoch ist, dass eine Adresse zu dem PCI-Bus 32 geschickt worden ist). Der Ausgang des Multiplexers 274 wird mit dem D-Eingang eines Flip-Flops 270 verbunden, das mit dem Signal PCLK getaktet wird und durch das Signal RESET gelöscht wird. Die IDSEL-Signale zu den Sekundär-Bus-Vorrichtungen werden durch Aufstellen eines Signals BLOCK_IDSEL von einem ODER-Gate 272 blockiert, das an seinen Eingängen Signale Q2P_AD[15] (keine Konversion wird entsprechend Tabelle 1 der 6 benötigt), TYP1_TO_INT0 und LTYP1_TO_INT0 empfängt. Das Signal LTYP1_TO_INT0 erweitert das Aufstellen des Signals BLOCK_IDSEL.The signal TYP1_TO_INT0 becomes the 1 input of a 4: 1 multiplexer 274 delivered. The 2 input is set low and the 0 and 3 input of the multiplexer 274 take a signal LTYP1_TO_INT0 from a flip-flop 270 of the D-type. The selection input S1 of the multiplexer 274 receives a signal CMD_LATCH (FRAME_, asserted for a new cycle on the PCI bus 32 ), and the select input S0 receives a signal P2Q_START_PULSE (indicating, if high, that an address to the PCI bus 32 has been sent). The output of the multiplexer 274 is connected to the D input of a flip-flop 270 which is clocked with the signal PCLK and is cleared by the signal RESET. The IDSEL signals to the secondary bus devices are established by asserting a signal BLOCK_IDSEL from an OR gate 272 blocked, the signals at its inputs Q2P_AD [15] (no conversion is according to Table 1 of the 6 needed), TYP1_TO_INT0 and LTYP1_TO_INT0. The signal LTYP1_TO_INT0 expands the establishment of the signal BLOCK_IDSEL.

Wenn der PCI-Master 123 in dem ausgangsseitigen Brücken-Chip 48 eine Konfigurations-Transaktion vom Typ 1 von dem eingangsseitigen Brücken-Chip 26 empfängt, in dem das Bus-Zahl-Feld 260 größer als die gespeicherte, Sekundär-Bus-Zahl und geringer als oder gleich zu der gespeicherten Neben-Bus-Zahl ist, dann führt der PCI-Master-Block 123 die Transaktion vom Typ 1 zu dem Sekundär-PCI-Bus 32 unverändert weiter. Eine bestimmte andere Vorrichtung auf dem Sekundär-PCI-Bus 32, z. B. eine andere Brücken-Vorrichtung 323 (26B), wird die Konfigurations-Transaktion vom Typ 1 aufnehmen und sie zu dem sekundären Bus (PCI-Bus 325) weiterführen.If the PCI master 123 in the output side bridge chip 48 a type 1 configuration transaction from the upstream bridge chip 26 receives in which the bus number field 260 is greater than the stored secondary bus number and less than or equal to the stored slave bus number, then the PCI master block is executing 123 the transaction of type 1 to the secondary PCI bus 32 unchanged. A specific other device on the secondary PCI bus 32 , z. B. another bridge device 323 ( 26B ), the type 1 configuration transaction will pick up and transfer it to the secondary bus (PCI bus 325 ) continue.

Eine Konfigurations-Transaktion vom Typ 1 zu einer speziellen Zyklus-Translation wird dann durchgeführt, wenn der PCI-Master 123 eine Konfigurations-Schreib-Transaktion vom Typ 1 von dem eingangsseitigen Brücken-Chip 26 empfängt und das Bus-Zahl-Feld 260 die gespeicherte Sekundär-Bus-Zahl anpasst und falls das Vorrichtungs-Zahl-Feld 258, das Funktions-Zahl-Feld 256 und das Register-Zahl-Feld 254 einen speziellen Zyklus anzeigen (SP_MATCH ist hoch). Dies wird durch ein UND-Gate 268 angezeigt, das ein Signal TYP1_TO_SPCYC auf hoch setzt. Das UND-Gate 268 empfängt SP_MATCH, und Q2P_CBE_[0] (Befehl-Bit für einen speziellen Zyklus). Die Daten von der Konfigurations-Transaktion vom Typ 1 werden die Daten für den speziellen Zyklus an dem Bestimmungs-Bus. Die Adresse während eines speziellen Zyklus wird ignoriert.A configuration transaction of type 1 to a special cycle translation is then performed when the PCI master 123 a configuration write transaction of type 1 from the input side Bridge chip 26 receives and the bus number field 260 adjusts the stored secondary bus number and if the device number field 258 , the function number field 256 and the register number field 254 show a special cycle (SP_MATCH is high). This is done by an AND gate 268 is displayed, which sets a signal TYP1_TO_SPCYC high. The AND gate 268 receives SP_MATCH, and Q2P_CBE_ [0] (command bit for a special cycle). The data from the type 1 configuration transaction becomes the data for the particular cycle on the destination bus. The address during a special cycle is ignored.

BUS-FUNKTIONS-MONITORBUS FUNCTION MONITOR

Der Bus-Monitor 127 (3) umfasst eine Schaltung zum Speichern von Informationen, um bestimmte Bus-Funktions-Parameter zu berechnen. Die Parameter umfassen eine Bus-Nutzung, eine Bus-Effektivität und eine Lese-Daten-Effektivität. Eine Bus-Nutzung ist das Verhältnis der Zeit, die der Bus belegt ist, unter Durchführen einer Transaktion, zu einer vorgegebenen, globalen Zeitperiode. Eine Bus-Effektivität ist das Verhältnis der Zahl von PCI-Takt-Perioden, die tatsächlich für eine Daten-Übertragung verwendet werden, zu der gesamten Zahl von Taktperioden während der Bus-Beleg-Periode. Eine Lese-Daten-Effektivität ist das Verhältnis der Zahl der Lese-Daten-Bytes, auf die durch eine Vorrichtung auf dem Sekundär-PCI-Bus 32 zugegriffen ist, und zwar von der verzögerten Abschluss-Warteschlange (DCQ) 144 (4), zu der gesamten Zahl von Daten-Bytes, abgerufen für diesen Master durch den Brücken-Chip 48. Die Informationen, gespeichert in dem Bus-Monitor 127, werden durch die System-Software wieder aufgesucht, um die erwünschten Parameter zu berechnen.The bus monitor 127 ( 3 ) includes a circuit for storing information to calculate certain bus function parameters. The parameters include bus usage, bus efficiency, and read-data-effectiveness. A bus usage is the ratio of the time that the bus is busy, making a transaction, to a given global time period. Bus efficiency is the ratio of the number of PCI clock periods actually used for data transmission to the total number of clock periods during the bus slip period. A read data efficiency is the ratio of the number of read data bytes passed through a device on the secondary PCI bus 32 is accessed by the delayed completion queue (DCQ). 144 ( 4 ), to the total number of data bytes retrieved for that master by the bridge chip 48 , The information stored in the bus monitor 127 , are retrieved by the system software to calculate the desired parameters.

Wie 54A zeigt, zählt ein Global-Periode-Zeitgeber 1300 (der 32 Bits breit sein kann) eine gesamte Zeitperiode, während der die verschiedenen Parameter berechnet werden sollen. Der Zeitgeber 1300 wird auf den hexadezimalen Wert FFFFFFFF programmiert. Falls der PCI-Takt PCICLK2 bei 33 MHz läuft, dann beträgt die Zeitgeberperiode ungefähr 2 Minuten. Wenn sich der Zeitgeber 1300 auf 0 verringert, stellt er ein Signal GL_TIME_EXPIRE auf.As 54A shows, counts a global-period timer 1300 (which can be 32 bits wide) a whole time period during which the various parameters are to be calculated. The timer 1300 is programmed to the hexadecimal value FFFFFFFF. If the PCI clock PCICLK2 is running at 33 MHz, then the timer period is about 2 minutes. If the timer 1300 reduced to 0, it sets a signal GL_TIME_EXPIRE.

Der Bus-Monitor 127 umfasst 7 schlitz-spezifische Bus-Busy-Zähler 1302AG, wobei sechs der Zähler jeweils den 6 Schlitzen auf dem sekundären PCI-Bus 32 und einer der SIO 50 entsprechen. Die Bus-Busy-Zähler 1302AG werden dann gelöscht, wenn das Signal GL_TIME_EXPIRE aufgestellt ist. In Abhängigkeit davon, welche Bus-Vorrichtung eine Steuerung auf dem sekundären Bus 32 besitzt, erhöht sich der Bus-Busy-Zähler 1302 bei jedem PCI-Takt, in dem das Sekundär-PCI-Bus FRAME_ oder IRDY_ Signal aufgestellt ist. Der geeignete Eine der sieben Zähler wird durch eines der Erteilungs-Signale GNT[7:0]_ ausgewählt. Demzufolge wird, zum Beispiel, der Bus-Busy-Zähler 1302A dann ausgewählt, wenn das Signal GNT[1]_ auf niedrig gesetzt ist, was anzeigt, dass der SIO der momentane Master auf dem sekundären PCI-Bus 32 ist.The bus monitor 127 includes 7 slot-specific bus busy counters 1302A - G where six of the counters respectively correspond to the 6 slots on the secondary PCI bus 32 and one of the SIO 50 correspond. The bus-busy counters 1302A - G are cleared when the signal GL_TIME_EXPIRE is set up. Depending on which bus device has control on the secondary bus 32 owns, the Bus Busy counter increases 1302 at every PCI clock in which the secondary PCI bus FRAME_ or IRDY_ signal is set up. The appropriate one of the seven counters is selected by one of the grant signals GNT [7: 0] _. As a result, for example, the bus busy counter 1302A then selected when signal GNT [1] _ is low, indicating that the SIO is the current master on the secondary PCI bus 32 is.

Sieben Daten-Zyklus-Zähler 1306AG entsprechend, jeweils, zu den 6 Schlitzen auf dem sekundären PCI-Bus 32 und dem SIO 50, führen die Zeit nach, während der eine Datenübertragung tatsächlich zwischen einem Master und einem Target während einer Transaktion auf dem PCI-Bus 32 auftritt. Der ausgewählte Daten-Zyklus-Zähler 1306 wird bei jedem PCI-Takt erhöht, bei dem die Sekundär-Bus-IRDY_ und TRDY_ Signale beide auf niedrig gesetzt sind. Die Daten-Zyklus-Zähler 1306AG werden dann gelöscht, wenn das Signal GL_TIME_EXPIRE aufgestellt ist.Seven data cycle counters 1306A - G respectively, to the 6 slots on the secondary PCI bus respectively 32 and the SIO 50 , track the time during which a data transfer is actually between a master and a target during a transaction on the PCI bus 32 occurs. The selected data cycle counter 1306 is incremented at each PCI clock at which the secondary bus IRDY_ and TRDY_ signals are both low. The data cycle counter 1306A - G are cleared when the signal GL_TIME_EXPIRE is set up.

Sechs DCQ-Daten-Zähler 1310AF sind in dem Bus-Monitor 127 zum Protokollieren der Menge an Daten, eingeladen in die DCQ-Puffer, umfasst. Die sechs DCQ-Daten-Zähler 1310AF entsprechen den 6 Schlitzen auf dem sekundären PCI-Bus 32. Der ausgewählte DCQ-Daten-Zähler 1310 erhöht sich bei jedem PCI-Takt, indem verzögerte Lese-Abschluss-(Delayed Read Completion – DRC)Daten von dem Kabel 28 empfangen und in die Prefetch-Puffer hineingeladen werden.Six DCQ data counters 1310A - F are in the bus monitor 127 for logging the amount of data loaded into the DCQ buffers. The six DCQ data counters 1310A - F correspond to the 6 slots on the secondary PCI bus 32 , The selected DCQ data counter 1310 increases with each PCI clock by delaying Delay Read Completion (DRC) data from the cable 28 received and loaded into the prefetch buffers.

Ein anderer Satz von Zählern, DCQ-Daten-Benutzungs-Zähler 1314AF, werden dazu verwendet, die Menge an Daten zu protokollieren, die in die DCQ 144 eingeladen sind, tatsächlich verwendet durch die 6 Schlitze auf dem sekundären PCI-Bus 32. Der ausgewählte DCQ-Daten-Benutzungs-Zähler 1314 erhöht sich bei jedem PCI-Takt, in dem der sekundäre Bus-Masterdaten von dem entsprechenden DCQ-Puffer liest. Beide DCQ-Daten-Zähler 1310AF und DCQ-Daten-Benutzungs-Zähler 1314AF erhöhen sich bei jedem Daten-Zyklus ungeachtet der Zahl von Bytes, die tatsächlich übertragen werden. In den meisten Fällen beträgt die Zahl von Bytes, übertragen in jedem Daten-Zyklus, 4.Another set of counters, DCQ data usage counters 1314A - F , are used to log the amount of data in the DCQ 144 actually used by the 6 slots on the secondary PCI bus 32 , The selected DCQ data usage counter 1314 increases with each PCI clock in which the secondary bus master reads data from the corresponding DCQ buffer. Both DCQ data counters 1310A - F and DCQ Data Usage Counters 1314A - F increase each data cycle regardless of the number of bytes actually being transmitted. In most cases, the number of bytes transmitted in each data cycle is 4.

Wenn der Global-Perioden-Zeitgeber 1300 abläuft und das Signal GL_TIME_EXPIRE aufstellt, treten verschiedene Ereignisse auf. Zuerst lädt der Global-Perioden-Zeitgeber 1300 seinen Originalen Zähl-Wert wieder ein, der der hexadezimale Wert FFFFFFFF ist. Die Inhalte aller anderen Zähler, umfassend die Bus-Busy-Zähler 1302AG die Daten-Zyklus-Zähler 1306AG, die DCQ-Daten-Zähler 1310AF und die DCQ-Daten-Benutzungs-Zähler 1314AF, werden in Register 1304, 1308, 1312 und 1316 jeweils eingeladen. Die Zähler 1302, 1306, 1310 und 1314 werden dann auf 0 gelöscht. Der Global-Periode-Zeitgeber 1300 beginnt dann, erneut zu zählen, nachdem erneut mit seinem Original-Wert wieder geladen ist.If the Global Period Timer 1300 and executes the signal GL_TIME_EXPIRE, various events occur. First, the Global Period Timer loads 1300 its original count value, which is the hexadecimal value FFFFFFFF. The contents of all other counters, including the Bus-Busy counter 1302A - G the data cycle counter 1306A - G , the DCQ data counter 1310A - F and the DCQ data usage counters 1314A - F , be in register 1304 . 1308 . 1312 and 1316 each invited. The counters 1302 . 1306 . 1310 and 1314 will be cleared to 0 The Global Period Timer 1300 then begins to count again after reloading with its original value.

Das Signal GL_TIME_EXPIRE wird zu dem Unterbrechungs-Aufnahme-Block 132 zugeführt, der die Unterbrechung über das Kabel 28 zu dem Unterbrechungs-Ausgangs-Block 114 weiterführt, der wiederum eine Unterbrechung zu der CPU 14 erzeugt. Die CPU 14 antwortet auf die Unterbrechung durch Aufrufen eines Unterbrechungs-Händlers, um die Bus-Funktion-Analyse durchzuführen. Der Unterbrechungs-Händler greift auf die Inhalte der Register 1304, 1308, 1312 und 1316 zu, und berechnet die verschiedenen Parameter, umfassend die Bus-Benutzung, die Bus-Effektivität, die Prefetch-Effektivität-Parameter, zugeordnet den 6 Sekundär-Bus-Schlitzen bzw. -Einsteckplätzen und der SIO 50.The signal GL_TIME_EXPIRE becomes the interrupt recording block 132 fed the interruption over the cable 28 to the interrupt output block 114 which in turn gives an interrupt to the CPU 14 generated. The CPU 14 responds to the interruption by calling an interrupt handler to perform the bus function analysis. The interruption dealer accesses the contents of the registers 1304 . 1308 . 1312 and 1316 to, and calculates the various parameters including bus usage, bus efficiency, prefetch effectiveness parameters, associated with the 6 secondary bus slots and the SIO 50 ,

Der Bus-Benutzungs-Parameter ist der Wert des Bus-Busy-Zählers 1302, geteilt durch den Anfangswert des Global-Perioden-Zeitgebers 1300, der der hexadezimale Wert FFFFFFFF ist. Demzufolge ist die Bus-Nutzung der Prozentsatz der gesamten, globalen Zeit, während der ein Bus-Master eine Bus-Transaktion durchführt.The Bus Usage parameter is the value of the Bus-Busy Counter 1302 , divided by the initial value of the global period timer 1300 , which is the hexadecimal value FFFFFFFF. As a result, the bus usage is the percentage of the total global time during which a bus master performs a bus transaction.

Eine PCI-Transaktion umfasst eine Adressen-Phase und mindestens eine Daten-Übertragungs-Phase. Ein Bus-Master stellt das Signal FRAME_ auf, um den Beginn und die Dauer einer aktiven Bus-Transaktion anzuzeigen. Wenn das Signal FRAME_ weggenommen ist, zeigt dies an, dass die Transkaktion die End-Daten-Phase ist oder die Transaktion abgeschlossen worden ist. Das Signal IRDY_ zeigt an, dass der Bus-Master in der Lage ist, die momentane Daten-Phase der Bus-Transaktion abzuschließen. Während eines Schreibens zeigt das Signal IRDY_ an, dass gültige Daten auf dem Bus vorhanden sind. Während eines Lesens zeigt das Signal IRDY_ an, das der Master präpariert ist, um Lese-Daten anzunehmen. Das adressierte PCI-Target spricht auf die Bus-Transaktion durch Aufstellen des Signals TRDY_ an, um anzuzeigen, dass das Target in der Lage ist, die momentane Datenphase der Transaktion abzuschließen. Während eines Lesens zeigt das Signal TRDY_ an, dass gültige Daten auf dem Bus vorhanden sind; während eines Schreibens zeigt das Signal TRDY_ an, dass das Target präpariert wird, um Daten anzunehmen. Warte-Zustände können zwischen den Adressen- und Daten-Phasen und zwischen aufeinanderfolgenden Daten-Phasen der Bus-Transaktionen eingesetzt werden. Während der Adressen-Phase oder den Warte-Zuständen tritt keine Daten-Übertragung tatsächlich auf.A PCI transaction includes an address phase and at least one Data transmission phase. A bus master sets the signal FRAME_ to the beginning and the Duration of an active bus transaction. If the signal FRAME_ is removed, this indicates that the transaction is the End data phase is or the transaction has been completed. The signal IRDY_ indicates that the bus master is able to complete the current data phase of the bus transaction. During one Writing, the signal IRDY_ indicates that valid data is present on the bus are. While a read indicates the signal IRDY_ that the master prepares is to accept read data. The addressed PCI target speaks to the bus transaction by asserting the signal TRDY_ to indicate that the target is capable of the current data phase to complete the transaction. While On reading, signal TRDY_ indicates that valid data is present on the bus are; while In writing, the signal TRDY_ indicates that the target is being prepared is to accept data. Wait states can be between the address and data phases and between successive data phases the bus transactions are used. During the address phase or the wait states does not transmit data indeed on.

Eine tatsächliche Daten-Übertragung tritt nur dann auf, wenn beide Signale IRDY_ und TRDY_ auf niedrig gesetzt sind. Um die Daten-, Übertragungs-Bus-Effektivität zu bestimmen, teilt der Unterbrechungs-Händler den Wert des Daten-Zyklus-Zählers 1306 durch den Wert des Bus-Busy-Zählers 1302. Die Bus-Effektivität stellt die Menge an Zeit dar, während der eine Datenübertragung tatsächlich während einer Bus-Transaktion auftritt. Durch Berechnen dieses Werts kann sich das Computersystem über Target-Vorrichtungen bewusst werden, die viele Warte-Zustände erfordern und deshalb ineffektiv sind.Actual data transfer occurs only when both IRDY_ and TRDY_ signals are low. To determine the data, transmit bus efficiency, the interrupt handler shares the value of the data cycle counter 1306 by the value of the bus busy counter 1302 , The bus efficiency represents the amount of time during which data transfer actually occurs during a bus transaction. By calculating this value, the computer system may become aware of target devices that require many wait states and are therefore ineffective.

Der Brücken-Chip 48 kann Daten von dem primären PCI-Bus 26 abrufen und die Daten in der DCQ 144 speichern. Die DCQ 144 besitzt acht Puffer, wobei jeder einem sekundären Bus-Master zuordenbar ist. Zum Beispiel wird eine Speicher-Lese-Mehrfach-Transaktion, erzeugt durch einen sekundären Bus-Master, als Ziel an dem primären Bus vorgesehen, bewirken, dass die Brücke 26, 48 insgesamt 8 Cache-Zeilen von dem Speicher 20 abruft und sie in die DCQ 144 einlädt. Eine Speicher-Lese-Zeilen-Transaktion wird bewirken, dass die PCI-PCI-Brücke 26, 48 eine Zeile von Daten von dem Speicher 20 abruft. Zusätzlich kann, wie in Verbindung mit den 75 und 79 beschrieben ist, die PCI-PCI-Brücke 26, 48 eine Lesepromotion durchführen, die eine Lese-Anforderung von einem Sekundär-Bus-Master zu einer Lese-Anforderung für einen größeren Block an Daten umwandelt. In diesen Fällen existiert eine Möglichkeit, dass nicht alle der abgerufenen Daten durch den Bus-Master verwendet werden. In diesem Fall werden nicht-gelesene Daten ausgesondert, was die Lese-Daten-Effektivität reduziert. Ein Messen der Lese-Daten-Effektivität ermöglicht System-Designern zu verstehen, wie ein Bus-Master Lese-Daten, abgerufen durch den Brücken-Chip 26, 48, von dem primären Bus 24, verwendet.The bridge chip 48 can read data from the primary PCI bus 26 retrieve and the data in the DCQ 144 to save. The DCQ 144 has eight buffers, each of which can be assigned to a secondary bus master. For example, a memory read multiple transaction, generated by a secondary bus master as a destination on the primary bus, will cause the bridge 26 . 48 a total of 8 cache lines from the memory 20 retrieve them and put them in the DCQ 144 invites. A memory read-line transaction will cause the PCI-PCI bridge 26 . 48 a line of data from the memory 20 retrieves. In addition, as in connection with the 75 and 79 described is the PCI-PCI bridge 26 . 48 perform a read promotion that converts a read request from a secondary bus master to a read request for a larger block of data. In these cases, there is a possibility that not all of the retrieved data will be used by the bus master. In this case, unread data is discarded, which reduces read data effectiveness. Measuring the read-data effectiveness allows system designers to understand how a bus master reads data retrieved by the bridge chip 26 . 48 , from the primary bus 24 , used.

Wie 54B zeigt, erhöht sich der Zähler 1310 an der ansteigenden Flanke des Takts PCLK, falls das Signal DCQ_DATA_RECEIVED[X], X = 2–7, aufgestellt ist, was anzeigt, dass vier Bytes an Daten durch einen DCQ-Puffer, zugeordnet einem Master X von dem Kabel 28, empfangen werden. Der Zähler 1310 gibt einen Zähl-Wert DCQ_Data[X][20:0], X = 2–7, aus, was auf Null gelöscht wird, wenn das Signal GL_TIME_EXPIRE aufgestellt ist.As 54B shows, the counter increases 1310 at the rising edge of the clock PCLK, if the signal DCQ_DATA_RECEIVED [X], X = 2-7, is asserted, indicating that there are four bytes of data through a DCQ buffer associated with a master X from the cable 28 to be received. The counter 1310 outputs a count value DCQ_Data [X] [20: 0], X = 2-7, which is cleared to zero when the signal GL_TIME_EXPIRE is asserted.

Der Zähler 1314 erhöht sich an der ansteigenden Flanke des Takts PCLK, falls ein Signal DCQ_DATA_TAKEN[X], X = 2–7, aufgestellt ist, was anzeigt, dass vier Bytes an Daten von einem DCQ-Puffer zugeordnet zu Master X, gelesen sind. Der Zähler 1314 wird dann gelöscht, wenn das Signal GL_TIME_EXPIRE hoch ist.The counter 1314 increases at the rising edge of the clock PCLK if a signal DCQ_DATA_TAKEN [X], X = 2-7, is asserted, indicating that four bytes of data are read from a DCQ buffer associated with master X ,. The counter 1314 is cleared when the signal GL_TIME_EXPIRE is high.

Um die Menge der DCQ-Daten zu bestimmen, die tatsächlich durch die Vorrichtungen auf dem sekundären PCI-Bus 32 verwendet werden, wird die Prefetch-Effektivität durch den Unterbrechungs-Handler berechnet. Dies wird dadurch bestimmt, dass das Verhältnis des Werts in dem Zähler 1314, der die DCQ-Daten verwendet, zu dem Wert des DCQ-Daten-Zählers 1310 gesetzt wird. Obwohl sogar nicht alle Daten, übertragen in die Prefetch-Puffer oder übertragen aus diesen heraus, 4 Bytes breit sind, ist das Verhältnis eng durch eine Annahme angenähert, dass alle Daten-Phasen dieselbe Zahl von Bytes übertragen.To determine the amount of DCQ data that is actually passing through the devices on the secondary PCI bus 32 are used, the prefetch effectiveness is calculated by the interrupt handler. This is determined by the ratio of the value in the counter 1314 , which uses the DCQ data, to the value of the DCQ data counter 1310 is set. Even though not all data transferred into or out of the prefetch buffers is 4 bytes wide, the ratio is closely approximated by an assumption that all data phases carry the same number of bytes.

In Abhängigkeit der berechneten Parameter kann ein Benutzer oder der Computerhersteller besser die Funktion des Computersystems verstehen. Zum Beispiel könnte dann, wenn eine Bus-Effektivität niedrig ist, die PCI-Vorrichtung, die eingesetzt ist, durch ein unterschiedliches Teil des Computerherstellers ersetzt werden. Eine Kenntnis der DCQ-Lese-Daten-Effektivität ermöglicht dem Computerhersteller, seinen DCQ-Abruf-Algorithmus zu ändern, um besser die Effektivität zu verbessern.In dependence the calculated parameter may be a user or the computer manufacturer better understand the function of the computer system. For example could then, if a bus effectiveness is low, the PCI device inserted through different part of the computer manufacturer. A Knowing the DCQ read-data effectiveness allows the computer manufacturer to its DCQ fetch algorithm to change, to better the effectiveness to improve.

VERWENDUNG VON NEBEN-BUS-VORRICHTUNGENUSE BY-SIDE BUS DEVICES

Wie in 88 dargestellt ist, führen sechs Erweiterungskarten, eingesetzt in die sechs Erweiterungskartenschlitze bzw. -Steckplätze 36af, Bus-Vorrichtungen 17041708 ein, die zu der CPU 14 untergeordnet sind, und Bus-Vorrichtungen 17011702, die zu einem I2O Prozessor 1700 untergeordnet sind. Obwohl alle Neben-Bus-Vorrichtungen 17011708 mit dem gemeinsamen PCI-Bus 32 verbunden sind, erscheinen die I2O-Neben-Vorrichtungen 17011702 zu der CPU 14 nur so, dass sie über den I2O-Prozessor 1700 adressierbar sind und nicht direkt über den PCI-Bus 32 adressierbar sind. Deshalb dient der PCI-Bus 32 sowohl als ein I2O-Neben-Vorrichtungs-Bus als auch als ein Neben-Vorrichtungs-Bus der CPU 14.As in 88 6 expansion cards are inserted into the six expansion card slots 36a - f , Bus devices 1704 - 1708 one leading to the CPU 14 subordinate and bus devices 1701 - 1702 leading to an I 2 O processor 1700 are subordinate. Although all sub-bus devices 1701 - 1708 with the common PCI bus 32 are connected, the I 2 O sub-devices appear 1701 - 1702 to the CPU 14 just so that they have the I 2 O processor 1700 are addressable and not directly over the PCI bus 32 are addressable. That's why the PCI bus is used 32 both as an I 2 O sub-device bus and as a sub-device bus of the CPU 14 ,

Zu Zwecken eines Verhinderns, dass die CPU 14 die I2O-Neben-Vorrichtungen 17011702 als Vorrichtung des PCI-Busses 32 erkennt, umfasst der Brücken-Chip 48 eine Logik 1710 (90) zum Verhindern, dass die I2O-Neben-Vorrichtungen 17011702 auf Konfigurations-Zyklen ansprechen, die durch die CPU 14 laufen. Der Erweiterungskasten 30 umfasst auch eine Multiplexing-Schaltung 1712, die mit dem Unterbrechungs-Aufnahme-Block 132 des Brücken-Chips 48 zusammenarbeitet, um Unterbrechungs-Anforderungen zu maskieren, die von den I2O-Neben-Vorrichtungen 17011702 ausgehen, dass diese zu der CPU 14 propagieren. Unterbrechungs-Anforderungen, die von den I2O-Neben-Bus-Vorrichtungen 17011702 ausgehen, werden durch den Unterbrechungs-Aufnahme-Block 132 zu dem I2O-Prozessor 1700 umgeleitet. Der I2O-Prozessor 1700 konfiguriert die I2O-Neben-Vorrichtungen 17011702; empfängt und verarbeitet Unterbrechungs-Anforderungen, die von den I2O-Neben-Vorrichtungen 17011702 ausgehen; und steuert einen Betrieb der I2O-Neben-Vorrichtungen, wie dies durch die CPU 14 geleitet wird.For purposes of preventing the CPU 14 the I 2 O by-devices 1701 - 1702 as a device of the PCI bus 32 detects, includes the bridge chip 48 a logic 1710 ( 90 ) to prevent the I 2 O minor devices 1701 - 1702 respond to configuration cycles by the CPU 14 to run. The expansion box 30 also includes a multiplexing circuit 1712 that with the interruption recording block 132 of the bridge chip 48 works to mask interrupt requests made by the I 2 O minor devices 1701 - 1702 assume that this to the CPU 14 propagate. Interrupt requests made by the I 2 O sub-bus devices 1701 - 1702 go out through the interruption recording block 132 to the I 2 O processor 1700 diverted. The I 2 O processor 1700 configures the I 2 O slave devices 1701 - 1702 ; receives and handles interrupt requests made by the I 2 O slave devices 1701 - 1702 go out; and controls an operation of the I 2 O sub-devices as done by the CPU 14 is directed.

Nach einem Einschalten des Computersystems 10 und wenn eine Karte 807 eingeschaltet bzw. hochgefahren ist (d. h. eine neue Bus-Vorrichtung ist an dem PCI-Bus 32 eingeführt), tastet der I2O-Prozessor 1700 den PCI-Bus 32 ab, um I2O-Neben-Bus-Vorrichtungen zu identifizieren. Zu Zwecken eines Identifizierens des Typs einer Bus-Vorrichtung (I2O-Neben-Bus-Vorrichtung oder Neben-Vorrichtung der CPU 14) lässt der I2O-Prozessor 1700 Konfigurations-Zyklen auf dem PCI-Bus 32 laufen, um das Vorrichtungs-Identifikations-Wort (Vorrichtungs-ID) jeder Bus-Vorrichtung zu lesen. Die Vorrichtungs-ID ist in dem Konfigurations-Header-Raum aller PCI-Vorrichtungen angeordnet. Der I2O-Prozessor 1700 speichert die Ergebnisse dieser Abtastung in einem I2O-Neben-Register 1729 mit sechs Bits (93) innerhalb des I2O-Prozessors 1700, der durch die CPU 14 zugänglich ist. Bits null bis fünf des Registers 1729 sind Schlitzen bzw. Steckplätzen 36af jeweils zugeordnet. Ein Wert von „1" für ein Bit zeigt an, dass der zugeordnete Schlitz 36 eine Bus-Neben-Vorrichtung zu der CPU 14 besitzt, und ein Wert von „0" für ein Bit zeigt an, dass der zugeordnete Schlitz 36 eine Bus-Neben-Vorrichtung zu dem I2O-Prozessor 1700 besitzt.After turning on the computer system 10 and if a card 807 is powered up (ie, a new bus device is on the PCI bus 32 introduced), the I 2 O processor scans 1700 the PCI bus 32 to identify I 2 O sub-bus devices. For the purpose of identifying the type of a bus device (I 2 O sub-bus device or sub-device of the CPU 14 ) leaves the I 2 O processor 1700 Configuration cycles on the PCI bus 32 to read the device identification word (device ID) of each bus device. The device ID is located in the configuration header space of all PCI devices. The I 2 O processor 1700 stores the results of this scan in an I 2 O minor register 1729 with six bits ( 93 ) within the I 2 O processor 1700 that by the cpu 14 is accessible. Bits zero to five of the register 1729 are slots or slots 36a - f each assigned. A value of "1" for a bit indicates that the allocated slot 36 a bus slave device to the CPU 14 and a value of "0" for one bit indicates that the allocated slot 36 a bus slave device to the I 2 O processor 1700 has.

Der I2O-Prozessor 1700 kann in irgendeinen der Schlitze bzw. Steckplätze 36af eingesetzt werden. Zu Zwecken eines Identifizierens, welcher Schlitz 36, falls irgendeiner vorhanden ist, einen I2O-Prozessor enthält, tastet die CPU 14 den PCI-Bus 32 ab und liest die Vorrichtungs-ID der Bus-Vorrichtungen, verbunden mit dem Bus 32. Die CPU 14 versucht nicht, irgendwelche Vorrichtungen 17041708 auf dem Bus 32 zu konfigurieren bis ein Host-Konfigurations-Freigabe-Bit 1726 (94) innerhalb des I2O-Prozessors 1700 der CPU 14 anzeigt, dass der I2O-Prozessor 1700 seine Identifikation von I2O-Neben- Vorrichtungen 17011702 auf dem Bus 32 abgeschlossen hat. Das Host-Konfigurations-Freigabe-Bit 1726 besitzt einen Wert von „0" (Wert bei einem Einschalten), um eine Konfiguration der Vorrichtungen auf dem Bus 32 durch die CPU 14 zu sperren, und einen Wert „1", um eine Konfiguration der CPU 14 der Nebenvorrichtungen 17041708 der CPU 14 auf dem Bus 32 freizugeben. Wenn die CPU 14 Bus-Vorrichtungen auf dem Bus 32 konfiguriert, „sieht" die CPU 14 nicht die I2O-Neben-Vorrichtungen 17011702, und zwar aufgrund der Maskierung durch die Logik 1710, wie dies nachfolgend beschrieben ist.The I 2 O processor 1700 can in any of the slots or slots 36a - f be used. For purposes of identifying which slot 36 if any is present, contains an I 2 O processor, the CPU will sample 14 the PCI bus 32 and reads the device ID of the bus devices connected to the bus 32 , The CPU 14 do not try any devices 1704 - 1708 on the bus 32 to configure up a host configuration enable bit 1726 ( 94 ) within the I 2 O processor 1700 the CPU 14 indicates that the I 2 O processor 1700 its identification of I 2 O minor devices 1701 - 1702 on the bus 32 has completed. The host configuration enable bit 1726 has a value of "0" (value at switching on) to configure the devices on the bus 32 through the CPU 14 to lock, and a value "1" to a configuration of the CPU 14 the ancillary devices 1704 - 1708 the CPU 14 on the bus 32 release. If the CPU 14 Bus devices on the bus 32 configured, "sees" the CPU 14 not the I 2 O by-devices 1701 - 1702 , because of the masking by the logic 1710 , as described below.

Nachdem das Host-Freigabe-Konfigurations-Bit 1726 eingestellt ist, liest die CPU 14 die Inhalte des I2O-Neben-Registers 1729 und überträgt die gelesenen Inhalte zu einem Sechs-Bits-I2O-Neben-Register 1428 (91) des Brücken-Chips 48. Das Register 1728 zeigt den Neben-Status (Neben-I2O-Prozessor 1700 oder Neben-CPU 14) der Bus-Vorrichtungen in derselben Art und Weise wie das Register 1729 an. Bevor die CPU 14 zu dem Register 1728 schreibt, enthält das Register 1728 alle „Eins'en" (Werte bei einem Einschalten), was der CPU 14 ermöglicht, den Bus 32 nach dem I2O-Prozessor 1700 abzutasten. Der Unterbrechungs-Aufnahme-Block 132 verwendet das Register 1728, um zu identifizieren, welche Unterbrechungs-Anforderungen, empfangen durch den Block 132, zu der CPU 14 geführt werden sollten, und welche Unterbrechungs-Anforderungen, empfangen durch den Block 132, zu dem I2O-Prozessor 1700 für eine Verarbeitung geführt werden sollten. Weiterhin verwendet die Logik 1710 die Inhalte des Registers 1728, um eine Erkennung durch die CPU 14 der I2O-Neben-Vorrichtungen 17011702 von der CPU 14 zu blockieren.After the host release configuration bit 1726 is set, the CPU reads 14 the contents of the I 2 O minor register 1729 and transmits the read contents to a six-bit I 2 O sub-register 1428 ( 91 ) of the bridge chip 48 , The registry 1728 shows the slave status (slave I 2 O processor 1700 or secondary CPU 14 ) of the bus devices in the same manner as the register 1729 at. Before the CPU 14 to the register 1728 writes, contains the register 1728 all "ones" (values at power up), which is the CPU 14 allows the bus 32 after the I 2 O processor 1700 scan. The interruption recording block 132 uses the register 1728 to identify which interrupt requests received by the block 132 , to the CPU 14 should be performed, and what interrupt requests received by the block 132 to the I 2 O processor 1700 for processing. Continue to use the logic 1710 the contents of the register 1728 to get a detection by the CPU 14 of I 2 O by-devices 1701 - 1702 from the CPU 14 to block.

Zu Zwecken eines Anzeigens zu dem Unterbrechungs-Empfangs-Block 132, welche Bus-Vorrichtung, falls irgendeine vorhanden ist, ein I2O-Prozessor ist, stellt die CPU 14 ein Bit eines I2O-Schlitz-Registers 1730 (32) ein, dessen Bits 0–5 den Schlitzen 36af jeweils entsprechen. Für dieses Register 1730, angeordnet innerhalb des Brücken-Chips 48, zeigt ein Wert von „0" für ein Bit an, dass der zugeordnete Schlitz 36 keinen I2O-Prozessor besitzt, und ein Wert von „1" für das Bit zeigt an, dass der zugeordnete Schlitz 36 einen I2O-Prozessor besitzt.For purposes of indicating to the interrupt receive block 132 Which bus device, if any, is an I 2 O processor, represents the CPU 14 one bit of an I 2 O slot register 1730 ( 32 ), bits 0-5 of which are slots 36a - f respectively correspond. For this register 1730 , arranged inside the bridge chip 48 , a value of "0" for one bit indicates that the allocated slot 36 does not have an I 2 O processor, and a value of "1" for the bit indicates that the allocated slot 36 has an I 2 O processor.

Wie in 90 dargestellt ist, umfasst die Logik 1710 ein Multi-Bit-UND-Gate 1711, das Signale AD_IDSEL[5:0] zu Adressen/Daten-Leitungen des Busses 32 liefert, um Vorrichtungen auf dem Bus 32 während Konfigurations-Zyklen auszuwählen. Das UND-Gate 1711 empfängt ein Sechs-Bit-Signal ENABLE[5:0], das Bits besitzt, die für Bits des I2O- Neben-Registers 1728 indikativ sind und zu diesen entsprechen. Das UND-Gate 1711 empfängt auch die typischen Identifikations-Auswahl-Signale SLOT_IDSEL[5:0], geliefert durch den Brücken-Chip 48, zum Auswählen von Vorrichtungen auf den Bus 32, während Konfigurations-Zyklen. Deshalb werden die Signale ENABLE[5:0] dazu verwendet, selektiv die Signale SLOT_IDSEL[5:0] von dem PCI-Bus 32 zu maskieren, wenn Konfigurations-Zyklen durch die CPU 14 laufen.As in 90 is illustrated, includes the logic 1710 a multi-bit AND gate 1711 , the signals AD_IDSEL [5: 0] to address / data lines of the bus 32 delivers to devices on the bus 32 during configuration cycles. The AND gate 1711 receives a six-bit signal ENABLE [5: 0] having bits corresponding to bits of the I 2 O sub-register 1728 are indicative and correspond to them. The AND gate 1711 also receives the typical identification selection signals SLOT_IDSEL [5: 0] supplied by the bridge chip 48 to select devices on the bus 32 during configuration cycles. Therefore, the signals ENABLE [5: 0] are used to selectively latch the signals SLOT_IDSEL [5: 0] from the PCI bus 32 to mask when configuration cycles through the CPU 14 to run.

Zu Zwecken eines Kontrollierens der Bestimmung von Unterbrechungs-Anforderungen von den Schlitzen 36ad, werden die Vier-Standard-PCI-Unterbrechungs-Anforderungs-Signale (INTA#, INTB#, INTC# und INTD#), geliefert durch jeden Schlitz 36, zu einer Multiplexing-Schaltung 1712 geführt (88). Die Multiplexing-Schaltung 1712 serialisiert die PCI-Unterbrechungs-Anforderungs-Signale, empfangen von den Schlitzen 36, und liefert die Signale zu dem Unterbrechungs-Emfpangs-Block 132 über vier zeit-multiplexierte-, serielle Unterbrechungs-Anforderungs-Signale: INTSDA#, INTDSB#, INTSDC# und INTSDD#.For purposes of controlling the determination of interrupt requests from the slots 36a - d , the four standard PCI interrupt request signals (INTA #, INTB #, INTC # and INTD #) are provided by each slot 36 to a multiplexing circuit 1712 guided ( 88 ). The multiplexing circuit 1712 serializes the PCI interrupt request signals received from the slots 36 , and supplies the signals to the interrupt receive block 132 via four time-multiplexed, serial interrupt request signals: INTSDA #, INTDSB #, INTSDC #, and INTSDD #.

Wie in 89 dargestellt ist, liefert der Unterbrechungs-Empfangs-Block 132 Unterbrechungs-Anforderungs-Signale für die CPU 14 zu dem Unterbrechungs-Ausgabe-Block 114 über ein zeit-multiplexiertes, serielles Unterbrechungs-Anforderungs-Signal INTSDCABLE#. Der Unterbrechungs-Empfangs-Block 132 liefert Unterbrechungs-Anforderungs-Signale für den I2O-Prozessor 1700 über ein zeit-multiplexiertes, serielles Unterbrechungs-Anforderungs-Signal INTSDIIO#, geliefert über eine PCI INTC# Leitung 1709 des Busses 32 zu dem I2O-Prozessor 1700.As in 89 is shown, provides the interrupt receive block 132 Interrupt request signals for the CPU 14 to the interrupt output block 114 via a time-multiplexed, serial interrupt request signal INTSDCABLE #. The interrupt receive block 132 provides interrupt request signals to the I 2 O processor 1700 via a time-multiplexed, serial interrupt request signal INTSDIIO #, delivered via a PCI INTC # line 1709 of the bus 32 to the I 2 O processor 1700 ,

Der Unterbrechungs-Ausgabe-Block 114 liefert die Unterbrechungs-Anforderungen, bestimmt über die CPU 14, zu einer oder mehreren der Standard-PCI-Unterbrechungs-Anforderungs-Leitungen (INTA#, INTB#, INTC# und INTD#) des PCI-Busses 24. Eine Unterbrechungs-Steuereinheit 1900, extern zu dem Brücken-Chip 26, empfängt die Unterbrechungs-Anforderungen von den PCI-Unterbrechungs-Anforderungs-Leitungen des PCI-Busses 24. Die Unterbrechungs-Steuereinheit 1900 priorisiert die Unterbrechungs-Anforderungen (die Unterbrechungs-Anforderungen von anderen Vorrichtungen auf dem PCI-Bus 24 umfassen können) und liefert sie zu der CPU 14. Der Unterbrechungs-Ausgabe-Block 114 kann entweder asynchron (wenn er sich in einem asynchronen Mode befindet) die Unterbrechungs-Anforderungs-Signale zu den Unterbrechungs-Anforderungs-Leitungen des PCI-Busses 24 liefern oder kann sie seriell (wenn er sich in einem seriellen Mode befindet) die Unterbrechungs-Anforderungs-Signale zu der INTA# Leitung des PCI-Busses 24 führen, wie dies weiter nachfolgend beschrieben ist.The interrupt output block 114 provides the interrupt requests, determined via the CPU 14 to one or more of the standard PCI interrupt request lines (INTA #, INTB #, INTC #, and INTD #) of the PCI bus 24 , An interruption control unit 1900 , external to the bridge chip 26 , receives the interrupt requests from the PCI interrupt request lines of the PCI bus 24 , The interruption control unit 1900 prioritizes the interrupt requests (the interrupt requests from other devices on the PCI bus 24 and deliver them to the CPU 14 , The interrupt output block 114 For example, either asynchronously (when in an asynchronous mode), the interrupt request signals may be to the interrupt request lines of the PCI bus 24 or serially (if in a serial mode) it can supply the interrupt request signals to the INTA # line of the PCI bus 24 lead, as described below.

Wie in 95 dargestellt ist, repräsentieren alle der zeit-multiplexierten, seriellen Daten-Signale deren Daten über einen Unterbrechungs-Zyklus 1850, der acht aufeinanderfolgende Zeit-Teile (T0–T7) aufweist. Die Dauer jedes Zeit-Teils ist ein Zyklus des PCI-Takt-Signals CLK. Jeder Zeit-Teil stellt einen „Snapshot" über den Status von einem oder mehreren Unterbrechungs-Anforderungs-Signalen dar. Wie in 99 dargestellt ist, stellt das Signal INTSDA# die abgetasteten INTA# Unterbrechungs-Anforderungs-Signale von den Schlitzen 36af dar. Das Signal INTSDB# stellt die abgetasteten INTB# Unterbrechungs-Anforderungs-Signale von den Schlitzen 36af dar. Das Signal INTSDC# stellt die abgetasteten INTC# Unterbrechungs-Anforderungs-Signale von den Schlitzen 36af dar. Das Signal INTSDD# stellt die abgetasteten INTD# Unterbrechungs-Anforderungs-Signale von den Schlitzen 36af dar. Zu Zwecken eines Kombinierens der Unterbrechungs-Signale INTSDA#–D# in das Signal INTSDIIO# verknüpft der Unterbrechungs-Empfangs-Block 132 logisch die Signale INTSDA#–D# zusammen mit UND, während gleichzeitig Unterbrechungs-Anforderungs-Signale, bestimmt für die CPU 14, maskiert werden. Ähnlich verknüpft, zu Zwecken eines Kombinierens der Unterbrechungs-Signale INTSDA#–D# in das Signal INTSDCABLE# der Unterbrechungs-Aufnahme-Block 132 logisch mit UND die Signale INTSDA#–D# zusammen, während simultan Unterbrechungs-Anforderungs-Signale, bestimmt für die CPU 14, maskiert werden.As in 95 4, all of the time-multiplexed serial data signals represent their data through an interrupt cycle 1850 which has eight consecutive time parts (T0-T7). The duration of each time part is one cycle of the PCI clock signal CLK. Each time portion represents a "snapshot" of the status of one or more interrupt request signals 99 1, the INTSDA # signal represents the sampled INTA # interrupt request signals from the slots 36a - f The signal INTSDB # represents the sampled INTB # interrupt request signals from the slots 36a - f The signal INTSDC # represents the sampled INTC # interrupt request signals from the slots 36a - f The signal INTSDD # represents the sampled INTD # interrupt request signals from the slots 36a - f For purposes of combining the interrupt signals INTSDA # -D # into the signal INTSDIIO #, the interrupt receive block is concatenated 132 Logically, the signals INTSDA # -D # together with AND, while simultaneously interrupt request signals, intended for the CPU 14 to be masked. Similarly, for purposes of combining the interrupt signals INTSDA # -D # into the signal INTSDCABLE #, the interrupt record block links 132 logically with AND signals INTSDA # -D # together, while simultaneously interrupt request signals, destined for the CPU 14 to be masked.

Für den Zweck eines Instruierens des Unterbrechungs-Ausgangs-Blocks 114, wenn ein anderer Unterbrechungs-Zyklus 1850 beginnt, liefert der Unterbrechungs-Aufnahme-Block 132 ein Synchronisations-Signal INTSYNCCABLE# zu dem Unterbrechungs-Ausgangs-Block 114. Die abfallende, oder negative, Flanke des Signals INTSYNCCABLE# zeigt an, dass der Zeit-Teil T0 des Unterbrechungs-Zyklus 1850, übertragen über das Signal INTSDCABLE# an der nächsten, positiven Flanke des CLK Signals beginnt. Ein Signal INTSYNCIIO# wird in einer analogen Weise verwendet, um einen ankommenden Zeit-Schlitz T0 des Unterbrechungs-Zyklus 1850, übertragen über das Signal INTSDIIO#, anzuzeigen. Das Signal INTSYNCIIO# wird durch den Unterbrechungs-Empfangs-Block 132 zu dem I2O-Prozessor 1700 über eine PCI INTD# Leitung 1710 des Busses 32 geliefert. Für den Zweck eines Instruierens der Multiplexing-Schaltung 1712, wenn ein anderer Unterbrechungs-Zyklus 1850 über die Unterbrechungs-Signale INTS DA#–D# zu übertragen ist, liefert der Unterbrechungs-Empfangs-Block 132 ein Synchronisations-Signal INTSYNC# zu der Multiplexing-Schaltung 1712. Die abfallende, oder negative Flanke des Signals des INTSYNC# zeigt an, dass die Multiplexing-Schaltung 1712 den Zeit-Teil T0 der Signale INTSDA#–D# an der nächsten, positiven Flanke des CLK-Signals übertragen sollte.For the purpose of instructing the interrupt output block 114 if another interrupt cycle 1850 starts, provides the interruption recording block 132 a synchronization signal INTSYNCCABLE # to the interrupt output block 114 , The falling, or negative, edge of the INTSYNCCABLE # signal indicates that the time portion T0 of the interrupt cycle 1850 , transmitted via the signal INTSDCABLE # on the next positive edge of the CLK signal begins. A signal INTSYNCIIO # is used in an analogous manner to an incoming time slot T0 of the interrupt cycle 1850 , transmitted via the signal INTSDIIO #, display. The signal INTSYNCIIO # is passed through the interrupt receive block 132 to the I 2 O processor 1700 via a PCI INTD # line 1710 of the bus 32 delivered. For the purpose of instructing the multiplexing circuit 1712 if another interrupt cycle 1850 via the interrupt signals INTS DA # -D #, the interrupt receive block provides 132 a synchronization signal INTSYNC # to the multiplexing circuit 1712 , The falling or negative edge of the signal of the INTSYNC # indicates that the multiplexing circuit 1712 should transmit the time portion T0 of the signals INTSDA # -D # on the next positive edge of the CLK signal.

Wie in 96 dargestellt ist, umfasst die Multiplexing-Schaltung 1712 vier Multiplexer 17411744, die die Signale INTSDA#, INTSDB#, INTSDC# und INTSDD# jeweils liefern. Die Auswahl-Eingänge der Multiplexer 17411744 empfangen ein Zeit-Teil-Signal SLICEIN[2:0], das dazu verwendet wird, die Zeit-Teile T0–T7 der Signale INTSDA#–D# anzuzeigen. Die INTA-D# Unterbrechungs-Anforderungs-Signale von den Schlitzen 36 werden zu Eingängen der Multiplexer 17411744 jeweils geliefert.As in 96 is shown, comprises the multiplexing circuit 1712 four multiplexers 1741 - 1744 which provide the signals INTSDA #, INTSDB #, INTSDC # and INTSDD #, respectively. The selection inputs of the multiplexers 1741 - 1744 receive a time division signal SLICEIN [2: 0] which is used to indicate the time portions T0-T7 of the signals INTSDA # -D #. The INTA-D # interrupt request signals from the slots 36 become inputs to the multiplexers 1741 - 1744 each delivered.

Das Signal SLICEIN[2:0] wird durch den Ausgang eines Drei-Bit-Zählers 1745 geliefert, der an der positiven Flanke des PCI-Takt-Signals CLK getaktet wird. Das Unterbrechungs-Synchronisations-Signal INTSYNC# wird durch einen getakteten Freigabe-Eingang des Zählers 1745 empfangen. An der negativen Flanke des Signals INTSYNC# setzt sich der Zähler 1745 auf Null zurück (SLICEIN[2:0] entspricht Null). Der Zähler 1745 erhöht den Wert, angezeigt durch das SLICEIN[2.0] Signal, bis das SLICEIN[2:0] Signal gleich zu „7" ist, wo es verbleibt, bis der Zähler 1745 erneut durch das INTSYNC# Signal zurückgesetzt wird.The signal SLICEIN [2: 0] is given by the output of a three-bit counter 1745 which is clocked on the positive edge of the PCI clock signal CLK. The interrupt synchronization signal INTSYNC # is triggered by a clocked enable input of the counter 1745 receive. The counter is set on the negative edge of the signal INTSYNC # 1745 back to zero (SLICEIN [2: 0] equals zero). The counter 1745 increases the value indicated by the SLICEIN [2.0] signal until the SLICEIN [2: 0] signal is equal to "7", where it remains until the counter 1745 is reset again by the INTSYNC # signal.

Wie in 97A dargestellt ist, umfasst, zu Zwecken eines Protokollierens der Zeit-Teile T0–T7, der Unterbrechungs-Aufnahme-Block 132 einen Drei-Bit-Zähler 1750, der an der positiven Flanke des CLK-Signals getaktet wird. Der Zähler 1750 liefert ein Ausgangs-Signal SL1[2:0], das durch den Auswahl-Eingang eines 3 × 8 Decodierers 1752 empfangen wird. Der Decodierer 1752 liefert ein Acht-Bit-Signal G_CNTR[7:0], wobei das aufgestellte Bit des Signals G_CNTR[7:0] den Zeit-Teil der Signale INTSDIIO# und INTSDCABLE# anzeigt.As in 97A for purposes of logging the time portions T0-T7, the interruption recording block is included 132 a three-bit counter 1750 which is clocked on the positive edge of the CLK signal. The counter 1750 provides an output signal SL1 [2: 0] through the select input of a 3x8 decoder 1752 Will be received. The decoder 1752 provides an eight-bit signal G_CNTR [7: 0], where the established bit of the signal G_CNTR [7: 0] indicates the time portion of the signals INTSDIIO # and INTSDCABLE #.

Das INTSYNC# Signal wird durch den Ausgang eines Invertierers 1774 geliefert, der das signifikanteste Bit des G_CNTR[7:0] Signals, G_CNTR[7], empfängt. Obwohl das INTSYNC# Signal auf niedrig während des Zeit-Teils T7 gepulst wird, könnte der Unterbrechungs-Aufnahme-Block 132 alternativ mehrere Zyklen des CLK-Signals nach Beenden eines Unterbrechungs-Zyklus 1850, vor einem Pulsen des INTSYNC# Signals auf niedrig, warten. Die Signale INTSYNCCABLE# und INTSYNCIIO# werden beide durch den Ausgang eines Invertierers 1755 geliefert, der das Bit G_CNTR[0] empfängt.The INTSYNC # signal is through the output of an inverter 1774 which receives the most significant bit of the G_CNTR [7: 0] signal, G_CNTR [7]. Although the INTSYNC # signal is pulsed to low during the time portion T7, the interruption recording block could 132 alternatively, several cycles of the CLK signal after completion of an interrupt cycle 1850 , wait for a low pulse before the INTSYNC # signal pulses. The signals INTSYNCCABLE # and INTSYNCIIO # are both passed through the output of an inverter 1755 which receives the bit G_CNTR [0].

Ein zusätzliches Unterbrechungs-Anforderungs-Singal CAY_INT# für die CPU 14 wird durch die SIO-Schaltung 50 geliefert. Das CAY_INT# Signal wird logisch mit UND mit den INTSDA#–D# Signalen während des Zeit-Teils T0 verknüpft. Das CRY_INT# Signal wird durch den Ausgang eines UND-Gates 1756 geliefert, das ein SIO_CMPL# Signal, das SI_INTR# Signal und ein I2C_INT# Signal aufnimmt. Das SIO_CMPL# Signal wird aufgestellt, oder auf niedrig angesteuert, wenn die SIO-Schaltung 50 einen Seriell-Ausgangs-Prozess abgeschlossen hat. Das I2C_INT# Signal wird aufgestellt, oder auf niedrig angesteuert, um einen Abschluss einer Transaktion über einen I2C-Bus (nicht dargestellt) anzuzeigen, verbunden mit dem Brücken-Chip 48. Das I2C_INT# Signal wird ansonsten weggenommen, oder auf niedrig angesteuert.An additional interrupt request signal CAY_INT # for the CPU 14 is through the SIO circuit 50 delivered. The CAY_INT # signal is logically ANDed with the INTSDA # -D # signals linked to the time part T0. The CRY_INT # signal is passed through the output of an AND gate 1756 which receives a SIO_CMPL # signal, the SI_INTR # signal and an I 2 C_INT # signal. The SIO_CMPL # signal is asserted or driven low when the SIO circuit 50 has completed a serial output process. The I 2 C_INT # signal is asserted, or driven low, to indicate completion of a transaction over an I 2 C bus (not shown) connected to the bridge chip 48 , The I 2 C_INT # signal is otherwise removed, or driven low.

Zu Zwecken eines Maskierens von Unterbrechungs-Anforderungen erzeugt der Unterbrechungs-Empfangs-Block 132 vier Maskierungs-Signale MASKA, MASKB, MASKC und MASKD. Wenn das MASKA Signal aufgestellt ist, oder auf hoch angesteuert ist, während eines bestimmten Zeit-Teils (T0–T7) des Signals INTSDA#, wird eine Unterbrechungs-Anforderung, angezeigt durch das Seriell-Unterbrechungs-Signal INTSDA# während dieses bestimmten Zeit-Schlitzes, von der CPU 14 maskiert. Falls das MASKA Signal weggenommen ist, oder auf niedrig angesteuert ist, während des bestimmten Zeit-Teils, wird die Unterbrechungs-Anforderung, angezeigt durch das Seriell-Unterbrechungs-Signal INTSDA# von dem I2O-Prozessor 1700 maskiert. Die MASKB–D Signale funktionieren ähnlich zu den Maskierungs-Unterbrechungs-Anforderungen, geliefert durch die Signale INTSDB#–D#.For purposes of masking interrupt requests, the interrupt receive block generates 132 four masking signals MASKA, MASKB, MASKC and MASKD. When the MASKA signal is asserted or driven high during a particular time portion (T0-T7) of the signal INTSDA #, an interrupt request indicated by the serial interrupt signal INTSDA # during that particular time is Slot, from the CPU 14 masked. If the MASKA signal is deasserted or driven low during the particular time portion, the interrupt request will be indicated by the serial interrupt signal INTSDA # from the I 2 O processor 1700 masked. The MASKB-D signals operate similarly to the masking interrupt requests provided by the signals INTSDB # -D #.

Wie in 97B dargestellt ist, liefert ein Multiplexer 1758 das MASKA Signal. Der Auswahl-Eingang des Multiplexers 1758 empfängt das SL1[2:0] Signal. Die acht Eingänge des Multiplexers 1758 empfangen invertierte IIO_SUB[5:0] Signale, die für entsprechende Bits des I2O-Neben-Registers 1728 indikativ sind. Die Signale IIO_SUB[5:0] werden mit den geeigneten Eingängen des Multiplexers 1758 so verbunden, dass dann, wenn das INTSDA# Signal den Unterbrechungs-Status für einen bestimmten Schlitz bzw. Einsteckplatz 36 anzeigt, das MASKA Signal gleichzeitig das zugeordnete Bit des Registers 1728 für diesen Schlitz 36 anzeigt. Drei andere Multiplexer 1760, 1762 und 1764 liefern die Signale MASKB, MASKC und MASKD jeweils. Ähnlich zur Erzeugung des MASKA Signals, sind die Signale IIO_SUB[5:0] mit den geeigneten Eingängen von Multiplexern 1760, 1762 und 1764 so verbunden, dass die MASKB, MASKC und MASKD Signale das Bit des Registers 1728, zugeordnet zu dem Schlitz, dargestellt durch die Signale INTSDB#, INTSDC# und INTSDD#, anzeigen. Die Multiplexer 17601764 empfangen das Signal SL1[2:0] an deren Auswahl-Eingängen.As in 97B is shown, provides a multiplexer 1758 the MASKA signal. The selection input of the multiplexer 1758 receives the SL1 [2: 0] signal. The eight inputs of the multiplexer 1758 receive inverted IIO_SUB [5: 0] signals for corresponding bits of the I 2 O sub-register 1728 are indicative. The signals IIO_SUB [5: 0] are sent to the appropriate inputs of the multiplexer 1758 connected so that when the INTSDA # signal is the interrupt status for a particular slot or slot 36 indicates the MASKA signal at the same time the assigned bit of the register 1728 for this slot 36 displays. Three other multiplexers 1760 . 1762 and 1764 provide the signals MASKB, MASKC and MASKD respectively. Similar to the generation of the MASKA signal, the signals IIO_SUB are [5: 0] with the appropriate inputs of multiplexers 1760 . 1762 and 1764 connected so that the MASKB, MASKC and MASKD signals are the bit of the register 1728 assigned to the slot represented by the signals INTSDB #, INTSDC # and INTSDD #. The multiplexers 1760 - 1764 receive the signal SL1 [2: 0] at their select inputs.

Wie in 97C dargestellt ist, umfasst der Unterbrechungs-Aufnahme-Block 132 auch zwei Multiplexer 1768 und 1770, die zwei Maskierungssignale IIOTS_D und IIOTS_C, verwendet dazu, die INTD# und INTC# Signale zu maskieren, geliefert durch die Schlitz-Unterbrechungs-Leitungen des I2O-Prozessors 1700, liefern, da die Leitungen 1709 und 1713 dazu verwendet werden, die Signale INTSDIIO# und INTSYNCIIO# jeweils zu dem I2O-Prozessor 1700 zu liefern. Die Auswahl-Eingänge beider Multiplexer 1768 und 1770 empfangen das Signal SL1[2:0], und die Signal-Eingänge der Multiplexer 1768 und 1770 empfangen Signale IIOSLOT[5:0], die für die entsprechenden Bits des I2O-Schlitz-Registers 1730 indikativ sind. Die Signale IIOSLOT[5:0] werden mit den geeigneten Eingängen von Multiplexern 1768 und 1770 so verbunden, dass dann, wenn die INTSDC#–D# Signale den Unterbrechungs-Status für einen bestimmten Schlitz 36 anzeigen, das IIOSLOT[5:0] Signal, ausgewählt durch die Multiplexer 1768 und 1770, gleichzeitig das zugeordnete Bit des Registers 1730 für diesen Schritt 36 anzeigt.As in 97C is illustrated includes the interruption recording block 132 also two multiplexers 1768 and 1770 , the two masking signals IIOTS_D and IIOTS_C, used to mask the INTD # and INTC # signals provided by the slot interrupt lines of the I 2 O processor 1700 , deliver, as the wires 1709 and 1713 to use the signals INTSDIIO # and INTSYNCIIO # respectively to the I 2 O processor 1700 to deliver. The select inputs of both multiplexers 1768 and 1770 receive the signal SL1 [2: 0], and the signal inputs of the multiplexer 1768 and 1770 receive signals IIOSLOT [5: 0] corresponding to the corresponding bits of the I 2 O slot register 1730 are indicative. The signals IIOSLOT [5: 0] are provided with the appropriate inputs from multiplexers 1768 and 1770 connected so that when the INTSDC # -D # signals the interrupt status for a particular slot 36 indicate the IIOSLOT [5: 0] signal selected by the multiplexers 1768 and 1770 , at the same time the allocated bit of the register 1730 for this step 36 displays.

Wie in 97D dargestellt ist, werden sechs UND-Gates 17721782 dazu verwendet, um die Signale INTSDA#–INTSDD# zu kombinieren und ausgewählte Unterbrechungs-Anforderungs-Signale von der CPU 14 zu maskieren. Das UND-Gate 1772 empfängt ein invertiertes ECC_ERR_DOWN# Signal (aufgestellt dazu, um einen Fehler, erfasst durch den Chip 48b bei Kabel-Übertragungen, anzuzeigen) und das Bit G_CNTRL[0]. Das UND-Gate 1774 empfängt ein invertiertes INTSDA# Signal und das MASKA Signal. Das UND-Gate 1776 empfängt ein invertiertes INTSDB# Signal und das MASKB Signal. Das UND-Gate 1778 empfängt ein invertiertes INTSDC# Signal, das MASKC Signal und das IIOTS_C Signal. Das UND-Gate 1780 empfängt ein invertiertes INTSDC# Signal, das MASKD Signal und das IIOTS_D Signal. Das UND-Gate 1782 empfängt ein invertiertes CAY_INT Signal und das G_CNTRL Signal.As in 97D shown are six AND gates 1772 - 1782 used to combine the signals INTSDA # -INTSDD # and selected interrupt request signals from the CPU 14 to mask. The AND gate 1772 receives an inverted ECC_ERR_DOWN # signal (asserted to be an error detected by the chip 48b for cable transmissions) and the G_CNTRL [0] bit. The AND gate 1774 receives an inverted INTSDA # signal and the MASKA signal. The AND gate 1776 receives an inverted INTSDB # signal and the MASKB signal. The AND gate 1778 receives an inverted INTSDC # signal, the MASKC signal and the IIOTS_C signal. The AND gate 1780 receives an inverted INTSDC # signal, the MASKD signal and the IIOTS_D signal. The AND gate 1782 receives an inverted CAY_INT signal and the G_CNTRL signal.

Die Ausgänge der UND-Gates 17721782 sind als Eingänge zu einem ODER-Gate 1784 verbunden, das seinen Ausgang mit dem Signal-Eingang eines Flips-Flops 1786 vom D-Typ verbunden besitzt. Das Flip-Flop 1786 wird an der positiven Flanke des CLK- Signals getaktet, und der Einstell-Eingang des Flip-Flops 1786 empfängt das RST-Signal. Der invertierende Ausgang des Flip-Flops 1786 liefert das INTSDCABLE# Signal.The outputs of the AND gates 1772 - 1782 are as inputs to an OR gate 1784 connected its output to the signal input of a flip-flop 1786 owned by the D-type. The flip-flop 1786 is clocked on the positive edge of the CLK signal, and the set input of the flip-flop 1786 receives the RST signal. The inverting output of the flip-flop 1786 returns the INTSDCABLE # signal.

Vier UND-Gates 17901796 werden dazu verwendet, die INTSDA#–D# Signale zu kombinieren und ausgewählte Unterbrechungs-Anforderungs-Signale von dem I2O-Prozessor 1700 zu maskieren. Das UND-Gate 1790 empfängt ein invertiertes INTSDA# Signal und ein invertiertes MASKA Signal. Ein anderer Eingang des UND-Gates 1790 ist mit dem Ausgang eines NOR-Gates 1802 verbunden, das das INTSDA# Signal während der Zeit-Teile T0 und T7 maskiert, da keine Karten- und Unterbrechungsanforderungen in diesen Zeit-Teilen umfasst sind. Das NOR-Gate 1802 empfängt die Bits G_CNTRL[0] und G_CNTRL[7]. Das UND-Gate 1732 empfängt ein invertiertes INTSDB# Signal und ein invertiertes MASKB Signal. Ein anderer Eingang des UND-Gates 1792 ist mit dem Ausgang eines NOR-Gates 1804 verbunden, der oder das das INTSDB# Signal während der Zeit-Teile T1 und T4 maskiert, da keine Karten-Unterbrechungs-Anforderungen in diesen Zeit-Teilen umfasst sind. Das NOR-Gate 1802 empfängt die Bits G_CNTRL[1] und G_CNTRL[4].Four AND gates 1790 - 1796 are used to combine the INTSDA # -D # signals and selected interrupt request signals from the I 2 O processor 1700 to mask. The AND gate 1790 receives an inverted INTSDA # signal and an inverted MASKA signal. Another Input of the AND gate 1790 is at the output of a NOR gate 1802 which masks the INTSDA # signal during the time parts T0 and T7 since no card and interrupt requests are included in these time parts. The NOR gate 1802 receives bits G_CNTRL [0] and G_CNTRL [7]. The AND gate 1732 receives an inverted INTSDB # signal and an inverted MASKB signal. Another input of the AND gate 1792 is at the output of a NOR gate 1804 which masks the INTSDB # signal during the time portions T1 and T4 because no card interrupt requests are included in these time portions. The NOR gate 1802 receives bits G_CNTRL [1] and G_CNTRL [4].

Das UND-Gate 1794 empfängt ein invertiertes INTSDC# Signal und ein invertiertes MASKC Signal. Ein anderer Eingang des UND-Gates 1794 ist mit dem Ausgang eines NOR-Gates 1806 verbunden, der das INTSDC# Signal während der Zeit-Teile T2 und T5 maksiert, da keine Karten-Unterbrechungs-Anforderungen in diesen Zeit-Teilen umfasst sind. Das NOR-Gate 1806 empfängt die Bits G_CNTRL[2] und G_CNTRL[5]. Das UND-Gate 1796 empfängt ein invertiertes INTSDD# Signal und ein invertiertes MASKD Signal. Ein anderer Eingang des UND-Gates 1796 ist mit dem Ausgang eines NOR-Gates 1808 verbunden, die das INTSDD# Signal während der Zeit-Teile T3 und T6 maskiert, da keine Karten-Unterbrechungs-Anforderungen in diesen Zeit-Teilen umfasst sind. Das NOR-Gate 1808 empfängt die Bits G_CNTRL[3] und G_CNTRL[6].The AND gate 1794 receives an inverted INTSDC # signal and an inverted MASKC signal. Another input of the AND gate 1794 is at the output of a NOR gate 1806 connecting the INTSDC # signal during the time parts T2 and T5, since no card interruption requests are included in these time parts. The NOR gate 1806 receives bits G_CNTRL [2] and G_CNTRL [5]. The AND gate 1796 receives an inverted INTSDD # signal and an inverted MASKD signal. Another input of the AND gate 1796 is at the output of a NOR gate 1808 which masks the INTSDD # signal during the time parts T3 and T6 since no card interrupt requests are included in these time parts. The NOR gate 1808 receives bits G_CNTRL [3] and G_CNTRL [6].

Die Ausgänge der UND-Gates 17901796 sind als Eingänge mit einem ODER-Gate 1798 verbunden, das einen Ausgang mit dem Signal-Eingang eines Flip-Flops 1800 vom D-Typ verbunden besitzt. Das Flip-Flop 1800 wird auf der positven Flanke des CLK-Signals getaktet und der Einstell-Eingang des Flip-Flops 1800 empfängt das RST-Signal. Der invertierende Ausgang des Flip-Flops 1800 liefert das INTSDIIO# Signal.The outputs of the AND gates 1790 - 1796 are as inputs with an OR gate 1798 connected, which has an output to the signal input of a flip-flop 1800 owned by the D-type. The flip-flop 1800 is clocked on the positive edge of the CLK signal and the set input of the flip-flop 1800 receives the RST signal. The inverting output of the flip-flop 1800 returns the INTSDIIO # signal.

Wie in 98 dargestellt ist, umfasst der Unterbrechungs-Ausgangs-Block 114 einen Drei-Bit-Zähler 1820 von einem gemeinsamen Design zu dem Zähler 1745. Der Zäh ler 1820 wird an der positven Flanke des Signals CLK getaktet, liefert ein Ausgangs-Signal G_CNTR2[2:0] und beginnt ein Zählen von 0 an bis 7, nachdem er durch das INTSYNC# Signal zurückgesetzt ist.As in 98 is illustrated includes the interrupt output block 114 a three-bit counter 1820 from a common design to the counter 1745 , The counter 1820 is clocked on the positive edge of signal CLK, provides an output signal G_CNTR2 [2: 0], and starts counting from 0 to 7 after being reset by the INTSYNC # signal.

Zu Zwecken, das INTSYNCCPU# Signal zu liefern, umfasst der Unterbrechungs-Ausgangs-Block 114 ein Flip-Flop 1822 vom D-Typ, das an der positiven Flanke des CLK-Signals getaktet wird. Der Einstell-Eingang des Flip-Flops 1822 empfängt das RST-Signal und der Signal-Eingang des Flip-Flops 1822 empfängt das INTSYNCCABLE# Signal. Der nicht-invertierende Ausgang des Flip-Flops 1822 liefert das INTSYNCCPU# Signal.For purposes of providing the INTSYNCCPU # signal, the interrupt output block comprises 114 a flip-flop 1822 of the D-type, which is clocked on the positive edge of the CLK signal. The setting input of the flip-flop 1822 receives the RST signal and the signal input of the flip-flop 1822 receives the INTSYNCCABLE # signal. The non-inverting output of the flip-flop 1822 returns the INTSYNCCPU # signal.

Zu Zwecken, das INTSDCPU# Signal zu liefern, umfasst der Unterbrechungs-Ausgangs-Block 114 ein Flip-Flop 1824 vom D-Typ, das an der positiven Flanke des CLK-Signals getaktet wird. Der Einstell-Eingang des Flip-Flops 1824 empfängt das RST-Signal und der Signal-Eingang des Flip-Flops 1824 empfängt das INTSDCABLE# Signal. Der nicht-invertierende Ausgang des Flip-Flops 1824 liefert das INTSDCPU# Signal.For purposes of providing the INTSDCPU # signal, the interrupt output block comprises 114 a flip-flop 1824 of the D-type, which is clocked on the positive edge of the CLK signal. The setting input of the flip-flop 1824 receives the RST signal and the signal input of the flip-flop 1824 receives the INTSDCABLE # signal. The non-inverting output of the flip-flop 1824 returns the INTSDCPU # signal.

Die Unterbrechungs-Anforderungen, empfangen durch den Unterbrechungs-Empfangs-Block 114, werden zu der Unterbrechungs-Steuereinheit 1900 entweder asynchron oder seriell zugeführt. In dem asynchronen Mode werden die Unterbrechungs-Anforderungen zu den vier PCI-Unterbrechungs-Leitungen (herkömmlich bezeichnet auch als „Barber Poling") auf dem PCI-Bus 24 aufgelistet, wie dies in 100 dargestellt ist.The interrupt requests received by the interrupt receive block 114 , become the interruption control unit 1900 either supplied asynchronously or serially. In asynchronous mode, the interrupt requests become the four PCI interrupt lines (commonly referred to as "barber poling") on the PCI bus 24 listed, like this in 100 is shown.

Zu Zwecken eines Haltens der Unterbrechungs-Informationen, geliefert durch das INTSDCABLE# Signal, umfasst der Unterbrechungs-Ausgangs-Block 114 ein Acht-Bit-Register 1826. Alle Signal-Eingänge empfangen das INTSDCABLE# Signal. Die Lade-Freigabe-Eingänge von Bits 0–7 empfangen die Bits G_CNTR[0]–G_CNTR[7] jeweils. Deshalb wird, zum Beispiel, während des Zeit-Teils T4, ein Bit 3 mit dem Wert, dargestellt durch das INTSDCABLE# Signal, geladen. Bits 0 (dargestellt durch ein INT_A1 Signal) und 4 (dargestellt durch ein INT_A2 Signal) werden in ein CPUINTA# Signal hinein aufgelistet. Bits 1 (dargestellt durch ein INT_B1 Signal) und 5 (dargestellt durch ein INT_B2 Signal) werden in ein CPUINTB# Signal hinein aufgelistet. Bits 2 (dargestellt durch ein INT_C1 Signal) und 6 (dargestellt durch ein INT_C2 Signal) werden in ein CPUINTC# Signal hinein aufgelistet. Bits 3 (dargestellt durch ein INT_D1 Signal) und 7 (dargestellt durch ein INT_D2 Signal) werden in ein CPUINTD# Signal hinein aufgelistet.For purposes of holding the interrupt information provided by the INTSDCABLE # signal, the interrupt output block comprises 114 an eight-bit register 1826 , All signal inputs receive the INTSDCABLE # signal. The load enable inputs of bits 0-7 receive bits G_CNTR [0] -G_CNTR [7], respectively. Therefore, for example, during the time part T4, a bit 3 is loaded with the value represented by the INTSDCABLE # signal. Bits 0 (represented by an INT_A1 signal) and 4 (represented by an INT_A2 signal) are listed in a CPUINTA # signal. Bits 1 (represented by an INT_B1 signal) and 5 (represented by an INT_B2 signal) are listed in a CPUINTB # signal. Bits 2 (represented by an INT_C1 signal) and 6 (represented by an INT_C2 signal) are listed in a CPUINTC # signal. Bits 3 (represented by an INT_D1 signal) and 7 (represented by an INT_D2 signal) are listed in a CPUINTD # signal.

Vier ODER-Gates 18281834 liefern die Signale CPUINTA#, CPUINTB#, CPUINTC# und CPUINTD#, die zu den PCI-Unterbrechungs-Leitungen INTA#, INTB#, INTC# und INTD# jeweils des PCI-Busses 24 geliefert werden. Das ODER-Gate 1828 besitzt einen Eingang mit dem Augang eines UND-Gates 1836 verbunden. Das UND-Gate nimmt ein invertiertes CM-Signal auf. Das Signal CM wird durch ein Bit eines Konfigurations-Registers des Brücken-Chips 26 geliefert und wird aufgestellt, oder auf hoch angesteuert, um den asynchronen Mode anzuzeigen, und wird weggenommen, oder auf niedrig angesteuert, um den synchronen Mode anzuzeigen. Das UND-Gate 1836 empfängt auch das Signal INT_A1, das Signal INT_A2, und ein Signal ECC_ERR_UP (verwendet dazu, einen Fehler in Kabel-Übertragungen anzuzeigen).Four OR gates 1828 - 1834 provide the CPUINTA #, CPUINTB #, CPUINTC #, and CPUINTD # signals to the PCI interrupt lines INTA #, INTB #, INTC #, and INTD #, respectively, of the PCI bus 24 to be delivered. The OR gate 1828 has an input with the output of an AND gate 1836 connected. The AND gate receives an inverted CM signal. The signal CM is passed through a bit of a configuration register of the bridge chip 26 is delivered and set up, or driven high to indicate the asynchronous mode, and is taken off or driven low to the synchronous mode display. The AND gate 1836 also receives the signal INT_A1, the signal INT_A2, and an ECC_ERR_UP signal (used to indicate a fault in cable transmissions).

Das ODER-Gate 1828 besitzt einen Eingang mit dem Ausgang eines UND-Gates 1838 verbunden. Das UND-Gate 1838 empfängt das CM-Signal und das INTSDCPU# Signal. Ein anderer Eingang des UND-Gates 1838 ist mit dem Ausgang eines ODER-Gates 1848 verbunden. Das ODER-Gate 1848 empfängt das ECC_ERR_UP Signal und das Bit G_CNTR2[0].The OR gate 1828 has an input to the output of an AND gate 1838 connected. The AND gate 1838 receives the CM signal and the INTSDCPU # signal. Another input of the AND gate 1838 is with the output of an OR gate 1848 connected. The OR gate 1848 receives the ECC_ERR_UP signal and the G_CNTR2 bit [0].

Das ODER-Gate 1830 besitzt einen Eingang mit dem Ausgang eines UND-Gates 1840 verbunden und einen Eingang mit dem Ausgang eines UND-Gates 1842 verbunden. Das UND-Gate 1840 empfängt ein invertiertes CM-Signal, das Signal INT_B1, und das Signal INT_B2. Das UND-Gate 1842 empfängt das Signal CM und ein invertiertes Bit G_CNTR2[0] (verwendet dazu, das „sync" Signal zu der Unterbrechungs-Steuereinheit 1900 während des seriellen Modes zu liefern).The OR gate 1830 has an input to the output of an AND gate 1840 connected and an input to the output of an AND gate 1842 connected. The AND gate 1840 receives an inverted CM signal, the signal INT_B1, and the signal INT_B2. The AND gate 1842 receives the signal CM and an inverted bit G_CNTR2 [0] (uses the "sync" signal to the interrupt controller 1900 during the serial mode).

Das ODER-Gate 1832 besitzt einen Eingang mit dem Ausgang eines UND-Gates 1844 und mit einem Eingang, der das CM-Signal empfängt, verbunden. Das UND-Gate 1844 empfängt ein invertiertes CM-Signal, das INT_C1 Signal und das INT_C2 Signal. Das ODER-Gate 1834 besitzt einen Eingang mit dem Ausgang eines UND-Gates 1846 und mit einem Eingang, der das CM-Signal aufnimmt, verbunden. Das UND-Gate 1846 empfängt ein invertiertes CM-Signal, das INT_D1 Signal und das INT_D2 Signal.The OR gate 1832 has an input to the output of an AND gate 1844 and connected to an input receiving the CM signal. The AND gate 1844 receives an inverted CM signal, the INT_C1 signal and the INT_C2 signal. The OR gate 1834 has an input to the output of an AND gate 1846 and connected to an input receiving the CM signal. The AND gate 1846 receives an inverted CM signal, the INT_D1 signal and the INT_D2 signal.

Andere Ausführungsformen liegen innerhalb des Schutzumfangs der nachfolgenden Ansprüche. Zum Beispiel können unterschiedliche Typen von Bussen verwendet werden, einschließlich irgendeines Typs eines Host-Busses oder eines peripheren Busses. A180, der Brücken-Chip, kann, z. B., eine Host-zu-Peripher-Bus-Brücke, eine Host-zu-Host-Bus-Brücke oder eine Peripher-zu-Peripher-Brücke sein.Other embodiments are within the scope of the following claims. For example can different types of buses are used, including any one Type of host bus or peripheral bus. A180, the bridge chip, can, for. A host-to-peripheral bus bridge, a host-to-host bus bridge or a peripheral-to-peripheral bridge be.

Claims (19)

Computersystem, das aufweist: eine Datenspeichervorrichtung (20, 18) auf einem ersten Daten-Bus (24); eine anfordernde Vorrichtung (327A, 327B), die, auf einem zweiten Daten-Bus (32), eine Anfangs-Anforderung, gerichtet zu der Datenspeichervorrichtung (20, 18), platziert und die eine Steuerung des zweiten Daten-Busses (32) aufgibt, während sie auf eine Antwort auf die Anfangs-Anforderung hin wartet; eine Brückenvorrichtung (26, 48), die die Daten-Busse (24, 32) verbindet, die, auf die Anfangs-Anforderung hin, darauffolgend die Anforderung auf dem ersten Daten-Bus (24) platziert und damit beginnt, auf dem ersten Daten-Bus die angeforderten Daten von der Datenspeichervorrichtung (20, 18) zu empfangen, wobei die Brückenvorrichtung (26, 48) so aufgebaut ist, um auf die Re-Submission der Anfangs-Anforderung von der anfordernden Vorrichtung anzusprechen, und gekennzeichnet dadurch, dass dann, wenn die anfordernde Vorrichtung wieder eine Steuerung des zweiten Daten-Busses (32) unter einer Re-Submission der Anfangs-Anforderung erhält, die Brücke so betreibbar ist, um damit zu beginnen, die angeforderten Daten zu der anfordernden Vorrichtung (327A, 327B) auf dem zweiten Bus zu beginnen, sogar während die Datenspeichervorrichtung (20, 18) noch die angeforderten Daten zu der Brückenvorrichtung (26, 48) auf dem ersten Bus bereitstellt.A computer system comprising: a data storage device ( 20 . 18 ) on a first data bus ( 24 ); a requesting device ( 327A . 327B ), which, on a second data bus ( 32 ), an initial request directed to the data storage device ( 20 . 18 ) and the control of the second data bus ( 32 ) while awaiting a response to the initial request; a bridge device ( 26 . 48 ), which the data buses ( 24 . 32 ), which, upon the initial request, subsequently request on the first data bus ( 24 ) and begins, on the first data bus, the requested data from the data storage device ( 20 . 18 ), the bridge device ( 26 . 48 ) is arranged to respond to the re-submission of the initial request from the requesting device, and characterized in that, when the requesting device is again in control of the second data bus ( 32 ), upon a re-submission of the initial request, the bridge is operable to begin requesting the requested data to the requesting device ( 327A . 327B ) on the second bus, even while the data storage device ( 20 . 18 ) nor the requested data to the bridge device ( 26 . 48 ) on the first bus. System nach Anspruch 1, das weiterhin einen Bus-Arbitrierer (124) aufweist, der der anfordernden Vorrichtung eine höhere Bus-Arbitrierungs-Priorität zuordnet, um wieder eine Steuerung des zweiten Daten-Busses (32) zu erhalten, wenn die Datenspeichervorrichtung (20, 18) beginnt, die angeforderten Daten zu der Brücke (26, 48) bereitzustellen.The system of claim 1, further comprising a bus arbitrator ( 124 ), which assigns a higher bus arbitration priority to the requesting device to restore control of the second data bus (FIG. 32 ) when the data storage device ( 20 . 18 ) begins, the requested data to the bridge ( 26 . 48 ). System nach Anspruch 1, wobei die anfordernde Vorrichtung die höhere Priorität beibehält, bis die Datenspeichervorrichtung (20, 18) aufhört, Daten zu der Brücke (26, 48) bereitzustellen.The system of claim 1, wherein the requesting device maintains the higher priority until the data storage device (16) 20 . 18 ), data about the bridge ( 26 . 48 ). System nach Anspruch 1, wobei dann, wenn die Datenspeichervorrichtung (20, 18) damit beginnt, die angeforderten Daten zu der Brückenvorrichtung (26, 48) bereitzustellen, die Brückenvorrichtung eine Transaktion, initiiert, nachdem die anfordernde Vorrichtung eine Steuerung des Busses (32) aufgibt, beendet.The system of claim 1, wherein when the data storage device ( 20 . 18 ) begins to provide the requested data to the bridge device ( 26 . 48 ), the bridge device initiates a transaction after the requesting device initiates control of the bus ( 32 ) gives up, finished. System nach Anspruch 1, wobei die Brückenvorrichtung (26, 48) eine Transaktion auf einem der Daten-Busse (24, 32) beendet, um der anfordernden Vorrichtung zu ermöglichen, sich mit dem zweiten Daten-Bus (32) zu verbinden, während die Datenspeichervorrichtung (20, 18) die angeforderten Daten auf dem ersten Daten-Bus (24) bereitstellt.System according to claim 1, wherein the bridge device ( 26 . 48 ) a transaction on one of the data buses ( 24 . 32 ) to allow the requesting device to communicate with the second data bus (FIG. 32 ) while the data storage device ( 20 . 18 ) the requested data on the first data bus ( 24 ). System nach einem der Ansprüche 3 bis 5, wobei, nachdem die Transaktion beendet ist, die anfordernde Vorrichtung einer höheren Bus-Arbitrierungs-Priorität zugeordnet wird, um wieder eine Steuerung des zweiten Daten-Busses (32) zu erhalten.The system of any one of claims 3 to 5, wherein after the transaction is completed, the requesting device is assigned a higher bus arbitration priority to re-establish control of the second data bus ( 32 ) to obtain. System nach Anspruch 1, wobei der erste Daten-Bus (24) und der zweite Daten-Bus (32) jeweils einen PCI-Bus aufweisen, und wobei die Brückenvorrichtung (26, 48) eine PCI-zu-PCI-Brücke aufweist.The system of claim 1, wherein the first data bus ( 24 ) and the second data bus ( 32 ) each have a PCI bus, and wherein the bridge device ( 26 . 48 ) has a PCI-to-PCI bridge. System nach Anspruch 6, wobei die Brücke (26, 48) eine Beendigung einer Transaktion auf dem zweiten PCI-Bus (32) bewirkt, wenn die Datenspeichervorrichtung (20, 18) beginnt, die angeforderten Daten bereitzustellen.System according to claim 6, wherein the bridge ( 26 . 48 ) terminate a transaction on the second PCI bus ( 32 ), when the data storage device ( 20 . 18 ) begins to provide the requested data. System nach einem der Ansprüche 1 bis 8, das weiterhin einen Bus-Arbitrierer (124) aufweist, der der PCI-Vorrichtung eine höhere Bus-Arbitrierungs-Priorität zuordnet, um wieder eine Steuerung des zweiten Daten-Busses (32) zu erlangen, wenn die Speichervorrichtung (20, 18) beginnt, die angeforderten Daten zu der Brücke (26, 48) bereitzustellen.A system according to any one of claims 1 to 8, further comprising a bus arbitrator ( 124 ), which assigns a higher bus arbitration priority to the PCI device in order to restore control of the second data bus (FIG. 32 ), when the memory device ( 20 . 18 ) begins, the requested data to the bridge ( 26 . 48 ). System nach Anspruch 9, wobei der Bus-Arbitrierer (124) der anfordernden Vorrichtung eine höhere Bus-Arbitrierungs-Priorität zuordnet, nachdem die Transaktion beendet ist.The system of claim 9, wherein the bus arbitrator ( 124 ) assigns a higher bus arbitration priority to the requesting device after the transaction is completed. System nach einem der Ansprüche 1 bis 10, wobei die Anforderung von der anfordernden Vorrichtung eine Speicher-Lese-Mehrfach-Anforderung aufweist.The system of any one of claims 1 to 10, wherein the request from the requesting device a memory read multiple request having. Verfahren zum Erzeugen eines Datenflusses direkt von einer Datenspeichervorrichtung (20, 18) auf einen ersten Daten-Bus (24) in einem Computersystem zu einer anfordernden Vorrichtung (327A, 327B), die, auf einem zweiten Daten-Bus (32), eine An forderung, gerichtet zu der Datenspeichervorrichtung (20, 18), platziert, wobei das Verfahren aufweist: Erzwingen von der anfordernden Vorrichtung (327A, 327B), eine Steuerung des zweiten Daten-Busses (32) aufzugeben, nachdem die Anforderung auf dem zweiten Daten-Bus (32) platziert ist, während auf eine Antwort auf die Anforderung hin gewartet wird; wobei, auf die Anforderung hin, eine Brückenvorrichtung (26, 48), die den ersten und den zweiten Daten-Bus (24, 32) verbindet, darauffolgend die Anforderung auf dem ersten Daten-Bus (24) platziert und die angeforderten Daten auf dem ersten Daten-Bus von der Speichervorrichtung (20, 18) empfängt; gekennzeichnet durch Gewähren der Anforderung, um wieder eine Steuerung des zweiten Busses zu erlangen, wenn die anfordernde Vorrichtung (327A, 327B) die Anforderung auf dem zweiten Daten-Bus (32) wieder vorlegt, und Zulassen, dass die Brückenvorrichtung (26, 48) damit beginnt, die angeforderten Daten zu der anfordernden Vorrichtung (327A, 327B) auf dem zweiten Bus bereitzustellen, sogar während die Datenspeichervorrichtung (20, 18) noch die angeforderten Daten zu der Brückenvorrichtung (26, 48) auf dem ersten Bus bereitstellt.Method for generating a data flow directly from a data storage device ( 20 . 18 ) on a first data bus ( 24 ) in a computer system to a requesting device ( 327A . 327B ), which, on a second data bus ( 32 ), a request directed to the data storage device ( 20 . 18 ), the method comprising: forcing the requesting device ( 327A . 327B ), a controller of the second data bus ( 32 ) after the request on the second data bus ( 32 ) while waiting for a response to the request; wherein, upon request, a bridge device ( 26 . 48 ), the first and the second data bus ( 24 . 32 ), subsequently connecting the request on the first data bus ( 24 ) and the requested data on the first data bus from the storage device ( 20 . 18 ) receives; characterized by granting the request to regain control of the second bus when the requesting device ( 327A . 327B ) the request on the second data bus ( 32 ), and allowing the bridge device ( 26 . 48 ) begins to process the requested data to the requesting device ( 327A . 327B ) on the second bus, even while the data storage device ( 20 . 18 ) nor the requested data to the bridge device ( 26 . 48 ) on the first bus. Verfahren nach Anspruch 12, das weiterhin ein Beenden einer anderen Transaktion, die auf dem zweiten Daten-Bus (32) auftritt, wenn die anfordernde Vorrichtung wieder eine Steuerung des zweiten Daten-Busses (32) fordert, aufweist.The method of claim 12, further comprising terminating another transaction resident on the second data bus (10). 32 ) occurs when the requesting device resumes control of the second data bus ( 32 ) demands. Verfahren nach Anspruch 12, das weiterhin ein Beenden einer Transaktion, die auf dem zweiten Daten-Bus (32) auftritt, wenn die angeforderten Daten damit beginnen, von der Speichervorrichtung (20, 18) zu fließen, aufweist.The method of claim 12, further comprising terminating a transaction on the second data bus ( 32 ) occurs when the requested data begins to be retrieved from the storage device ( 20 . 18 ) to flow. Verfahren nach Anspruch 13, wobei die beendete Transaktion eine Schreib-Transaktion aufweist.The method of claim 13, wherein the completed transaction a write transaction having. Verfahren nach Anspruch 13, wobei die beendete Transaktion eine gepostete Schreib-Transaktion aufweist.The method of claim 13, wherein the completed transaction has a posted write transaction. Verfahren nach Anspruch 12, wobei die beendete Transaktion eine Lese-Transaktion aufweist.The method of claim 12, wherein the completed transaction a read transaction having. Verfahren nach Anspruch 12, das weiterhin ein Zuordnen zu der anfordernden Vorrichtung einer höheren Bus-Arbitrierungs-Priorität, nachdem die Transaktion beendet ist, aufweist.The method of claim 12, further comprising associating to the requesting device of higher bus arbitration priority, after the transaction is completed. Verfahren nach einem der Ansprüche 12 bis 18, das weiterhin, nach Einrichten des Datenflusses von der Datenspeichervorrichtung (24) aus, zu der anfordernden Vorrichtung ein Zuordnen einer Bus-Arbitrierungs-Priorität höher als diejenige irgendeiner anderen Vorrichtung, die versucht, den zweiten Daten-Bus (32) zu steuern, aufweist.The method of any one of claims 12 to 18, further comprising, after establishing the data flow from the data storage device (12). 24 ) assigns, to the requesting device, a bus arbitration priority higher than that of any other device attempting to connect the second data bus (FIG. 32 ) to control.
DE69731917T 1996-06-05 1997-06-04 Data flow in a bus bridge Expired - Lifetime DE69731917T2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/659,141 US5872941A (en) 1996-06-05 1996-06-05 Providing data from a bridge to a requesting device while the bridge is receiving the data
US659141 1996-06-05

Publications (2)

Publication Number Publication Date
DE69731917D1 DE69731917D1 (en) 2005-01-20
DE69731917T2 true DE69731917T2 (en) 2005-07-21

Family

ID=24644215

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69731917T Expired - Lifetime DE69731917T2 (en) 1996-06-05 1997-06-04 Data flow in a bus bridge

Country Status (4)

Country Link
US (1) US5872941A (en)
EP (1) EP0821310B1 (en)
JP (1) JPH1055336A (en)
DE (1) DE69731917T2 (en)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092141A (en) * 1996-09-26 2000-07-18 Vlsi Technology, Inc. Selective data read-ahead in bus-to-bus bridge architecture
US6138192A (en) * 1996-12-31 2000-10-24 Compaq Computer Corporation Delivering a request to write or read data before delivering an earlier write request
US6161169A (en) * 1997-08-22 2000-12-12 Ncr Corporation Method and apparatus for asynchronously reading and writing data streams into a storage device using shared memory buffers and semaphores to synchronize interprocess communications
US5987555A (en) * 1997-12-22 1999-11-16 Compaq Computer Corporation Dynamic delayed transaction discard counter in a bus bridge of a computer system
US6446149B1 (en) * 1998-03-03 2002-09-03 Compaq Information Technologies Group, L.P. Self-modifying synchronization memory address space and protocol for communication between multiple busmasters of a computer system
US6266770B1 (en) * 1998-04-14 2001-07-24 Micron Technology, Inc. Method for autonomous configuration of peer devices
US6360289B2 (en) 1998-04-14 2002-03-19 Micron Technology, Inc. System for autonomous configuration of peer devices
US6098140A (en) * 1998-06-11 2000-08-01 Adaptec, Inc. Modular bus bridge system compatible with multiple bus pin configurations
US6418503B1 (en) * 1999-08-19 2002-07-09 International Business Machines Corporation Buffer re-ordering system
US6742074B2 (en) * 1999-08-31 2004-05-25 Micron Technology, Inc. Bus to system memory delayed read processing
US20060218556A1 (en) * 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
EP1436724A4 (en) * 2001-09-28 2007-10-03 Consentry Networks Inc Multi-threaded packet processing engine for stateful packet pro cessing
US20030188080A1 (en) * 2002-03-28 2003-10-02 Olarig Sompong Paul Apparatus, method and system for remote registered peripheral component interconnect bus
US8023520B2 (en) * 2003-03-27 2011-09-20 Hewlett-Packard Development Company, L.P. Signaling packet
US7554993B2 (en) * 2003-03-27 2009-06-30 Hewlett-Packard Development Company, L.P. Method and apparatus for performing connection management with multiple stacks
US20040193833A1 (en) * 2003-03-27 2004-09-30 Kathryn Hampton Physical mode addressing
US7565504B2 (en) 2003-03-27 2009-07-21 Hewlett-Packard Development Company, L.P. Memory window access mechanism
US7502826B2 (en) * 2003-03-27 2009-03-10 Hewlett-Packard Development Company, L.P. Atomic operations
US7103744B2 (en) * 2003-03-27 2006-09-05 Hewlett-Packard Development Company, L.P. Binding a memory window to a queue pair
US8291176B2 (en) * 2003-03-27 2012-10-16 Hewlett-Packard Development Company, L.P. Protection domain groups to isolate access to memory windows
US7089378B2 (en) 2003-03-27 2006-08-08 Hewlett-Packard Development Company, L.P. Shared receive queues
US7757232B2 (en) * 2003-08-14 2010-07-13 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing work request lists
US7617376B2 (en) 2003-08-14 2009-11-10 Hewlett-Packard Development Company, L.P. Method and apparatus for accessing a memory
US8959171B2 (en) 2003-09-18 2015-02-17 Hewlett-Packard Development Company, L.P. Method and apparatus for acknowledging a request for data transfer
US7404190B2 (en) * 2003-09-18 2008-07-22 Hewlett-Packard Development Company, L.P. Method and apparatus for providing notification via multiple completion queue handlers
US8150996B2 (en) * 2003-12-16 2012-04-03 Hewlett-Packard Development Company, L.P. Method and apparatus for handling flow control for a data transfer
US7966439B1 (en) * 2004-11-24 2011-06-21 Nvidia Corporation Apparatus, system, and method for a fast data return memory controller
US20060259570A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Method and system for closing an RDMA connection
US7761619B2 (en) * 2005-05-13 2010-07-20 Microsoft Corporation Method and system for parallelizing completion event processing
US9465670B2 (en) 2011-12-16 2016-10-11 Intel Corporation Generational thread scheduler using reservations for fair scheduling
US20140118114A1 (en) * 2012-10-30 2014-05-01 Quantitative Sampling Technologies, LLC Bridge board for enhancing functionality of a data acquisition device
US10296469B1 (en) * 2014-07-24 2019-05-21 Pure Storage, Inc. Access control in a flash storage system

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5569830A (en) * 1978-11-20 1980-05-26 Toshiba Corp Intelligent terminal
EP0334627A3 (en) * 1988-03-23 1991-06-12 Du Pont Pixel Systems Limited Multiprocessor architecture
CA2007737C (en) * 1989-02-24 1998-04-28 Paul Samuel Gallo Data transfer operations between two asynchronous buses
JPH03188546A (en) * 1989-12-18 1991-08-16 Fujitsu Ltd Bus interface control system
US5454093A (en) * 1991-02-25 1995-09-26 International Business Machines Corporation Buffer bypass for quick data access
US5483641A (en) * 1991-12-17 1996-01-09 Dell Usa, L.P. System for scheduling readahead operations if new request is within a proximity of N last read requests wherein N is dependent on independent activities
JPH0789340B2 (en) * 1992-01-02 1995-09-27 インターナショナル・ビジネス・マシーンズ・コーポレイション Method and apparatus for address location determination in a bus-to-bus interface
CA2080210C (en) * 1992-01-02 1998-10-27 Nader Amini Bidirectional data storage facility for bus interface unit
US5491811A (en) * 1992-04-20 1996-02-13 International Business Machines Corporation Cache system using mask bits to recorder the sequences for transfers of data through cache to system memory
US5579530A (en) * 1992-06-11 1996-11-26 Intel Corporation Method and apparatus for dynamically allocating access time to a resource shared between a peripheral bus and a host bus by dynamically controlling the size of burst data transfers on the peripheral bus
JP2531903B2 (en) * 1992-06-22 1996-09-04 インターナショナル・ビジネス・マシーンズ・コーポレイション Computer system and system expansion unit
US5535395A (en) * 1992-10-02 1996-07-09 Compaq Computer Corporation Prioritization of microprocessors in multiprocessor computer systems
US5519839A (en) * 1992-10-02 1996-05-21 Compaq Computer Corp. Double buffering operations between the memory bus and the expansion bus of a computer system
US5463753A (en) * 1992-10-02 1995-10-31 Compaq Computer Corp. Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller
US5381528A (en) * 1992-10-15 1995-01-10 Maxtor Corporation Demand allocation of read/write buffer partitions favoring sequential read cache
US5522050A (en) * 1993-05-28 1996-05-28 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
US5396602A (en) * 1993-05-28 1995-03-07 International Business Machines Corp. Arbitration logic for multiple bus computer system
US5623633A (en) * 1993-07-27 1997-04-22 Dell Usa, L.P. Cache-based computer system employing a snoop control circuit with write-back suppression
US5613075A (en) * 1993-11-12 1997-03-18 Intel Corporation Method and apparatus for providing deterministic read access to main memory in a computer system
US5455915A (en) * 1993-12-16 1995-10-03 Intel Corporation Computer system with bridge circuitry having input/output multiplexers and third direct unidirectional path for data transfer between buses operating at different rates
US5559800A (en) * 1994-01-19 1996-09-24 Research In Motion Limited Remote control of gateway functions in a wireless data communication network
US5471590A (en) * 1994-01-28 1995-11-28 Compaq Computer Corp. Bus master arbitration circuitry having improved prioritization
US5530933A (en) * 1994-02-24 1996-06-25 Hewlett-Packard Company Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus
GB2286910B (en) * 1994-02-24 1998-11-25 Intel Corp Apparatus and method for prefetching data to load buffers in a bridge between two buses in a computer
US5535341A (en) * 1994-02-24 1996-07-09 Intel Corporation Apparatus and method for determining the status of data buffers in a bridge between two buses during a flush operation
TW400483B (en) * 1994-03-01 2000-08-01 Intel Corp High performance symmetric arbitration protocol with support for I/O requirements
US5528766A (en) * 1994-03-24 1996-06-18 Hewlett-Packard Company Multiple arbitration scheme
US5586297A (en) * 1994-03-24 1996-12-17 Hewlett-Packard Company Partial cache line write transactions in a computing system with a write back cache
US5623700A (en) * 1994-04-06 1997-04-22 Dell, Usa L.P. Interface circuit having zero latency buffer memory and cache memory information transfer
US5535340A (en) * 1994-05-20 1996-07-09 Intel Corporation Method and apparatus for maintaining transaction ordering and supporting deferred replies in a bus bridge
US5546546A (en) * 1994-05-20 1996-08-13 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
US5687347A (en) * 1994-09-19 1997-11-11 Matsushita Electric Industrial Co., Ltd. Data providing device, file server device, and data transfer control method
US5548730A (en) * 1994-09-20 1996-08-20 Intel Corporation Intelligent bus bridge for input/output subsystems in a computer system
US5524235A (en) * 1994-10-14 1996-06-04 Compaq Computer Corporation System for arbitrating access to memory with dynamic priority assignment
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
US5555383A (en) * 1994-11-07 1996-09-10 International Business Machines Corporation Peripheral component interconnect bus system having latency and shadow timers
US5664124A (en) * 1994-11-30 1997-09-02 International Business Machines Corporation Bridge between two buses of a computer system that latches signals from the bus for use on the bridge and responds according to the bus protocols
US5625779A (en) * 1994-12-30 1997-04-29 Intel Corporation Arbitration signaling mechanism to prevent deadlock guarantee access latency, and guarantee acquisition latency for an expansion bridge
US5594882A (en) * 1995-01-04 1997-01-14 Intel Corporation PCI split transactions utilizing dual address cycle
US5568619A (en) * 1995-01-05 1996-10-22 International Business Machines Corporation Method and apparatus for configuring a bus-to-bus bridge
US5630094A (en) * 1995-01-20 1997-05-13 Intel Corporation Integrated bus bridge and memory controller that enables data streaming to a shared memory of a computer system using snoop ahead transactions
US5596729A (en) * 1995-03-03 1997-01-21 Compaq Computer Corporation First arbiter coupled to a first bus receiving requests from devices coupled to a second bus and controlled by a second arbiter on said second bus
US5664150A (en) * 1995-03-21 1997-09-02 International Business Machines Corporation Computer system with a device for selectively blocking writebacks of data from a writeback cache to memory
US5619661A (en) * 1995-06-05 1997-04-08 Vlsi Technology, Inc. Dynamic arbitration system and method
US5634138A (en) * 1995-06-07 1997-05-27 Emulex Corporation Burst broadcasting on a peripheral component interconnect bus
US5694556A (en) * 1995-06-07 1997-12-02 International Business Machines Corporation Data processing system including buffering mechanism for inbound and outbound reads and posted writes
US5710906A (en) * 1995-07-07 1998-01-20 Opti Inc. Predictive snooping of cache memory for master-initiated accesses
US5649175A (en) * 1995-08-10 1997-07-15 Cirrus Logic, Inc. Method and apparatus for acquiring bus transaction address and command information with no more than zero-hold-time and with fast device acknowledgement
US5632021A (en) * 1995-10-25 1997-05-20 Cisco Systems Inc. Computer system with cascaded peripheral component interconnect (PCI) buses
US5673399A (en) * 1995-11-02 1997-09-30 International Business Machines, Corporation System and method for enhancement of system bus to mezzanine bus transactions
US5717876A (en) * 1996-02-26 1998-02-10 International Business Machines Corporation Method for avoiding livelock on bus bridge receiving multiple requests

Also Published As

Publication number Publication date
US5872941A (en) 1999-02-16
JPH1055336A (en) 1998-02-24
EP0821310A2 (en) 1998-01-28
EP0821310B1 (en) 2004-12-15
DE69731917D1 (en) 2005-01-20
EP0821310A3 (en) 1999-02-10

Similar Documents

Publication Publication Date Title
DE69731917T2 (en) Data flow in a bus bridge
DE69724048T2 (en) Performance monitoring of a computer system bus
DE69733101T2 (en) Data overflow management in a computer system
DE69720594T2 (en) Connection of expansion cards
US5822571A (en) Synchronizing data between devices
EP0820012B1 (en) Fault isolation
EP0817055B1 (en) Computer system host switching
US6055596A (en) Expansion card space reservation
US6108741A (en) Ordering transactions
US6021480A (en) Aligning a memory read request with a cache line boundary when the request is for data beginning at a location in the middle of the cache line
DE69732268T2 (en) Automatic data pre-loading in a computer system
EP0811931B1 (en) Expansion card insertion and removal
DE69732736T2 (en) Much thread bus master
US5987539A (en) Method and apparatus for flushing a bridge device read buffer
US5911055A (en) Using subordinate bus devices that are connected to a common bus
US6035362A (en) Storing data associated with one request while continuing to store data associated with a previous request from the same device
US5872939A (en) Bus arbitration
US5903906A (en) Receiving a write request that allows less than one cache line of data to be written and issuing a subsequent write request that requires at least one cache line of data to be written
EP0811929A2 (en) Bus device configuration in a bridge between two buses

Legal Events

Date Code Title Description
8364 No opposition during term of opposition