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.
27B–C zeigen schematische Diagramme einer Hebel-Schaltung. 27B - C show schematic diagrams of a lever circuit.
28–31 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.
33C–H 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.
59–62 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.
63–65 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.
66–69b 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.
70–74 zeigen
schematische Diagramme und eine Tabelle einer Master-Zyklus-Entscheidungseinrichtung. 70 - 74 show schematic diagrams and a table of a master cycle decision device.
75–87 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.
91–94 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.
97A–D 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 (36a–f),
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.
PCI-Schnittstellen-Slave-Transaktionen 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.
PCI-Schnittstellen-Master-Transaktionen 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.
Erzeugung
von p2q_slot[2:0] 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.
Erzeugung
von req_slot[2:0] 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.
Transaktions-Befehl-Code 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.
Inhalte
von PMWQ 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.
Inhalte
von DRQ 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 2135a–h 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.
Inhalte
von DCQ 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 2148a–d des
Puffer-Zahl-Registers 2144 gespeichert sind. Das Anforderungs-Bit
in jedem Schlitz 2150a–d 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 2150a–d 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 2148a–d durch
das cd_dcq_buff_num[2:0] Signal eingeladen. Der Schlitz 2148a–d,
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.
Puffer-Zahl-Register-Schlitz-Auswahl 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 2228a–h 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 2240a–h 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.
DCQ-Puffer-Zuordnung 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 2280a–d 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 2280a–d 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 2280a–d 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 2314a–h 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 2314a–h 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.
Erzeugung
eines start_queue_select Signals 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.
Master-Zustand-Transaktionen 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.
Slave-Zustand-Übergänge 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.
Kabel-Nachrichten-Generator-Zustand-Übergänge 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 (36a–f),
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]) PARALLEL OUTPUT CONTROL SIGNALS (POUT [39:01])
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 (27A–27C) 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] STATUS [127: 0]
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 831a–f,
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 831b–f 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 36a–f 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 36a–f 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 32A–B 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 33B–G 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 36a–f 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 35A–B 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, 32a–b 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 1302A–G,
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 1302A–G 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 1306A–G 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 1306A–G 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 1310A–F sind
in dem Bus-Monitor 127 zum Protokollieren der Menge an Daten,
eingeladen in die DCQ-Puffer, umfasst. Die sechs DCQ-Daten-Zähler 1310A–F 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 1314A–F,
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 1310A–F und
DCQ-Daten-Benutzungs-Zähler 1314A–F 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 1302A–G die
Daten-Zyklus-Zähler 1306A–G,
die DCQ-Daten-Zähler 1310A–F und
die DCQ-Daten-Benutzungs-Zähler 1314A–F,
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 36a–f,
Bus-Vorrichtungen 1704–1708 ein,
die zu der CPU 14 untergeordnet sind, und Bus-Vorrichtungen 1701–1702,
die zu einem I2O Prozessor 1700 untergeordnet
sind. Obwohl alle Neben-Bus-Vorrichtungen 1701–1708 mit
dem gemeinsamen PCI-Bus 32 verbunden sind, erscheinen die I2O-Neben-Vorrichtungen 1701–1702 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 1701–1702 als
Vorrichtung des PCI-Busses 32 erkennt, umfasst der Brücken-Chip 48 eine
Logik 1710 (90) zum Verhindern, dass die
I2O-Neben-Vorrichtungen 1701–1702 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 1701–1702 ausgehen,
dass diese zu der CPU 14 propagieren. Unterbrechungs-Anforderungen,
die von den I2O-Neben-Bus-Vorrichtungen 1701–1702 ausgehen, werden
durch den Unterbrechungs-Aufnahme-Block 132 zu
dem I2O-Prozessor 1700 umgeleitet.
Der I2O-Prozessor 1700 konfiguriert
die I2O-Neben-Vorrichtungen 1701–1702;
empfängt
und verarbeitet Unterbrechungs-Anforderungen, die von den I2O-Neben-Vorrichtungen 1701–1702 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 36a–f 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 36a–f 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 1704–1708 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 1701–1702 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 1704–1708 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 1701–1702,
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 1701–1702 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 36a–f 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 36a–d,
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 36a–f dar.
Das Signal INTSDB# stellt die abgetasteten INTB# Unterbrechungs-Anforderungs-Signale
von den Schlitzen 36a–f dar.
Das Signal INTSDC# stellt die abgetasteten INTC# Unterbrechungs-Anforderungs-Signale
von den Schlitzen 36a–f dar.
Das Signal INTSDD# stellt die abgetasteten INTD# Unterbrechungs-Anforderungs-Signale
von den Schlitzen 36a–f 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 1741–1744,
die die Signale INTSDA#, INTSDB#, INTSDC# und INTSDD# jeweils liefern.
Die Auswahl-Eingänge
der Multiplexer 1741–1744 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 1741–1744 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 1760–1764 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 1772–1782 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 1772–1782 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 1790–1796 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 1790–1796 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 1828–1834 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.