DE68926168T2 - Rechner-dreiweg-übertragungsvorgang - Google Patents

Rechner-dreiweg-übertragungsvorgang

Info

Publication number
DE68926168T2
DE68926168T2 DE68926168T DE68926168T DE68926168T2 DE 68926168 T2 DE68926168 T2 DE 68926168T2 DE 68926168 T DE68926168 T DE 68926168T DE 68926168 T DE68926168 T DE 68926168T DE 68926168 T2 DE68926168 T2 DE 68926168T2
Authority
DE
Germany
Prior art keywords
data
address
bus
sequence
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE68926168T
Other languages
English (en)
Other versions
DE68926168D1 (de
Inventor
Thomas Jermoluk
Douglas Solomon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Graphics Properties Holdings Inc
Original Assignee
Silicon Graphics Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Silicon Graphics Inc filed Critical Silicon Graphics Inc
Application granted granted Critical
Publication of DE68926168D1 publication Critical patent/DE68926168D1/de
Publication of DE68926168T2 publication Critical patent/DE68926168T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

    GEBIET DER ERFINDUNG
  • Die Erfindung betrifft das Gebiet, bei dem es darum geht, für wirkungsvolle Übertragung digitaler Information innerhalb eines digitalen Computers zu sorgen. Genauer gesagt, betrifft die Erfindung die Übertragung digitaler Information von einer zentralen Verarbeitungseinheit auf einen Bus, von einem Speicher auf einen Bus und von einem Bus auf ein Untersystem, einschließlich eines Graphikuntersystems.
  • HINTERGRUND DER ERFINDUNG
  • Digitale Computer verwenden Verfahren und Systeme zum Übertragen digitaler Information vom Speicher auf verschiedene Untersysteme des Computers, einschließlich Graphikuntersysteme. Graphikuntersysteme steuern, zum Teil, die graphische Anzeige auf einem Arbeitsplatzrechner oder einem Computerterminal.
  • Bei einer bekannten Konfiguration wird graphische Information zunächst in einen Abschnitt des Hauptspeichers (d.h. Hostspeichers) des Computers heruntergeladen. Bekannte Computer verfügen auch über einen Spezialzweck-Anzeigelistespeicher, zusätzlich zum Hostspeicher. Ein Anzeigelisteprozessor überträgt dann graphische Information vom Hostspeicher an den Anzeigelistespeicher. Der Anzeigelisteprozessor sendet die graphische Information vom Anzeigelistespeicher dadurch zum Graphikuntersystem, daß er die Anzeigeliste kontinuierlich durchläuft.
  • Ein Nachteil dieser bekannten Konfiguration ist es, daß statt einer Datenübertragung zwei Datenübertragungen eine Rolle spielen - eine Übertragung vom Hostspeicher an den Anzeigelistespeicher und eine andere Übertragung vom Anzeigelistespeicher an das Graphikuntersystem. Dies sorgte für eine Belastung des Funktionsvermögens.
  • Ein anderer Nachteil bei der bekannten Konfiguration ist es, daß zusätzliche Hardware über den Hostprozessor und den Hostspeicher hinaus erforderlich ist - nämlich der Anzeigelisteprozessor und der Anzeigelistespeicher.
  • Bei einer anderen bekannten Konfiguration existiert kein Spezialzweck-Anzeigelisteprozessor und kein Spezialzweck-Anzeigelistespeicher. Statt dessen wird Graphikinformation in den Haupt(d.h. Host)Speicher eingespeichert und vom Hauptspeicher durch den Hostprozessor an das Graphikuntersystem übertragen. Der Hostprozessor übernimmt demgemäß die Stelle des Listeprozessors.
  • Ein Nachteil bei dieser letztgenannten bekannten Konfiguration ist es, daß ein großer Teil der Prozessorzeit diesen Übertragungen von Graphikinformation vom Speicher auf das Graphikuntersystem gewidmet ist. Dies verzögert andere Vorgänge, die vom Prozessor ausgeführt werden. Ein anderer Nachteil ist es, daß der Prozessor nicht mit der Geschwindigkeit Schritt halten kann, mit der das Graphikuntersystem Daten empfangen kann. Anders gesagt, ist die Übertragung nicht so schnell, wiesie sein könnte.
  • Spezielle Beispiele bekannter Anordnungen finden sich in den Dokumenten US-A-4;296476 und US-A-4,394733.
  • Angesichts der Grenzen bekannter Verfahren und Systeme zum Übertragen digitaler Information von einem Computerspeicher an ein Computeruntersystem, einschließlich eines Graphikuntersystems, ist es eine der Aufgaben der Erfindung, eine wirkungsvolle Maßnahme zum Übertragen von Daten an ein Computeruntersystem, einschließlich eines Graphikuntersystems, zu schaffen, um das Funktionsvermögen des Computers zu verbessern.
  • Eine andere Aufgabe der Erfindung ist es, ein Verfahren und eine Vorrichtung zum Übertragen digitaler Information an ein Computeruntersystem unter Steuerung durch eine zentrale Verarbeitungseinheit ("CPU") zu schaffen, die den Aufwand an Zeit minimieren, in der die CPU mit der Übertragung beschäftigt ist, und die damit die CPU dafür freimachen, sich bei anderen Computervorgängen zu engagieren. Es ist daher eine Aufgabe der Erfindung, zu vermeiden, daß die Übertragung die Verarbeitungszeit einer CPU beherrscht.
  • Eine zusätzliche Aufgabe der Erfindung ist es, ein Verfahren und eine Vorrichtung zum Übertragen digitaler Information an ein Computeruntersystem zu schaffen, die den Aufwand an Computerhardware minimieren, der dazu erforderlich ist, für derartige Übertragungen zu sorgen.
  • Eine andere Aufgabe der Erfindung ist es, ein Verfahren und eine Vorrichtung zum Übertragen digitaler Information an ein Computeruntersystem mit ausreichend hoher Geschwindigkeit dergestalt zu schaffen, daß die Geschwindigkeit, mit der der Computer digitale Information an das Untersystem liefert, im wesentlichen mit der Maximalgeschwindigkeit übereinstimmt, mit der das Untersystem die digitale Information empfangen kann.
  • Eine andere Aufgabe der Erfindung ist es, ein Verfahren und eine Vorrichtung zum Übertragen digitaler Information an ein Computeruntersystem zu schaffen, bei denen zwei oder mehr Datenwörter gleichzeitig übertragen werden.
  • Eine andere Aufgabe der Erfindung ist es, ein Verfahren und eine Vorrichtung zum Übertragen digitaler Information an ein Untersystem eines cache-geschützten Computers mit mehreren Prozessoren zu schaffen, bei denen Datenübertragungen über eine Cachezeile laufen können.
  • Eine weitere Aufgabe der Erfindung ist es, ein Verfahren und eine Vorrichtung zum Übertragen digitaler Information an ein Computeruntersystem in solcher Weise zu schaffen, daß dann, wenn während einer Übertragung ein Interrupt auftritt, der Computer nach dem Interrupt in den Zustand wiederhergestellt werden kann, in dem er sich unmittelbar vor dem Interrupt befand.
  • Diese und andere Aufgaben der Erfindung sind durch das Verfahren gemäß Anspruch 1 gelöst. Der digitale Computer enthält eine CPU, eine mit dieser CPU verbundene Decodierschaltung, einen mit der Decodierschaltung verbundenen Bus, einen mit dem Bus verbundenen Speicher und ein mit dem Bus verbundenes Untersystem. Die digitale Information enthält einen Datenblock mit (1) einer Startadresse, die die Adresse des ersten Worts im Datenblock ist, und (2) eine Wortanzahl, die die Anzahl von Wörtern im Datenblock repräsentiert. Von der CPU wird eine Triggerädresse für einen Schreibvorgang an die Decodierschaltung geliefert. Die Triggeradresse wird decodiert, und es wird verhindert, daß anschließende Schreibvorgänge den Speicher modifizieren. Von der CPU wird die Startadresse für einen Schreibvorgang an den Bus geliefert. Dann wird die Startadresse vom Bus an den Speicher und an das Untersystem geliefert. Die die Wortanzahl umfassenden Daten werden von der CPU an den Bus geliefert. Vom Speicher wird eine Folge von zwei oder mehr Datenwörtern an den Bus geliefert. Die Anzahl von Datenwörtern in der Folge ist größer als die Wortanzahl oder entspricht dieser. Eines der Datenwörter der Folge von Datenwörter liegt am Ort der Startadresse im Speicher. Die Folge von Datenwörtern wird vom Bus an das Untersystem übertragen. So wird der Datenblock direkt vom Speicher über den Bus an das Untersystem übertragen.
  • Die digitale Information enthlt einen Datenblock mit (1) einer ersten Startadresse, die die Adresse eines ersten Worts im Datenblock ist, (2) eine Endadresse, die die Adresse des letzten Worts im Datenblock ist und (3) eine Wortanzahl, die die Anzahl von Wörtern im Datenblock repräsentiert. Von der CPU wird eine Triggeradresse an die Decodierschaltung geliefert. Die Triggeradresse wird decodiert, und es wird verhindert, daß anschließende Schreibvorgänge den Speicher modifizieren. Von der CPU wird eine erste Startadresse für einen Schreibvorgang an die Decodierschaltung geliefert. Ein Bit der ersten Startadresse ist als Markierungsbit abgespeichert. Das Markierungsbit hat einen Wert, der seine Position innerhalb der Startadresse repräsentiert. Die erste Startadresse wird von der Decodierschaltung an den Bus geliefert. Die erste Startadresse wird vom Bus an den Speicher und an das Untersystem geliefert. Die die Wortanzahl umfassenden Daten werden vom Bus an das Untersystem geliefert. Eine erste Folge von N Datenwörtern wird vom Speicher an den Bus geliefert. N ist eine ganze Zahl größer als eins und größer als die Wortanzahl oder dieser entsprechend. Eines der Datenwörter der ersten Folge von N Datenwörtern liegt am Ort der ersten Startadresse im Speicher. Die erste Folge von N Datenwörtern wird vom Bus an das Untersystem übertragen. Die Wortanzahl wird durch N geteilt, eins wird subtrahiert und dann, wenn das Ergebnis ein Bruch ist, wird das Ergebnis auf die nächstgrößere ganze Zahl aufgerundet, um eine ganze Zahl X zu erzeugen. Wenn X eine von null abweichende positive ganze Zahl ist, werden die obigen Schritte X mal wiederholt. Vor jeder Wiederholung der obigen Schritte wird (1) die erste Startadresse um N inkrementiert, im eine zweite Startadresse zu erzeugen, (2) die erste Startadresse wird die zweite Startadresse, (3) das Markierungsbit wird gelöscht und (4) die erste Folge von N Datenwörtern wird eine nächste Folge von N Datenwörtern aus einer aufeinanderfolgenden Reihe von Folgen von N Datenwörtern, wobei die aufeinanderfolgenden Reihen durchlaufen, wenn die obigen Schritte X mal wiederholt werden. Nachdem die obigen Schritte abgeschlossen sind, wird die Endadresse für einen Schreibvorgang von der CPU an die Decodierschaltung geliefert. Das Markierungsbit wird mit einem Bit der Endadresse mit derselben Stellung wie das Markierungsbit verglichen. Wenn die zwei Bits nicht miteinander übereinstimmen, wird (1) die Endadresse von der Decodierschaltung an den Bus geliefert, (2) die Endadresse wird vom Bus an den Speicher und an das Untersystem geliefert, (3) die die Wortanzahl umfassenden Daten werden von der CPU an den Bus geliefert, (4) die die Wortanzahl umfassenden Daten werden vom Bus an das Untersystem geliefert, (5) eine Endfolge von N Datenwörtern wird vom Speicher an den Bus geliefert, wobei eines der Datenwörter der Endfolge von Datenwörter am Ort der Endadresse im Speicher liegt, und (6) die Endfolge von N Datenwörtern wird vom Bus an das Untersystem übertragen. So wird der Datenblock direkt vom Speicher über den Bus an das Untersystem übertragen.
  • Andere Aufgaben, Merkmale und Vorteile der Erfindung gehen aus den beigefügten Zeichnungen und der nachfolgenden detaillierten Beschreibung hervor.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung ist in den Figuren der beigefügten Zeichnungen beispielhaft und ohne Beschränkung veranschaulicht, wobei gleiche Bezugszeichen ähnliche Elemente kennzeichnen, und in denen:
  • Fig. 1 ein Blockdiagramm der Architektur eines digitalen Computers ist, der zwei CPUS, eine Decodierschaltung, einen Bus, einen Speicher und ein Graphikuntersystem aufweist.
  • Fig. 2 einen Datenblock mit verschiedenen Wortanzahlen veranschaulicht.
  • Fig. 3 ein Zeitsteuerdiagramm für Dreiwegeübertragung digitaler Information ist.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird nun auf die Zeichnungen Bezug genommen, deren Fig. 1 in Blockdiagrammform eine Schaltungsanordnung 10 veranschaulicht, die die Architektur eines cachegestützten digitalen Computers mit mehreren Prozessoren mit verbesserten Graphikfähigkeiten bildet. Beginnend auf der linken Seite von Fig. 1, ist eine CPU 20 ein 32-Bit-Computer R3000 mit eingeschränktem Befehlssatz ("RISC") mit mehreren Prozessoren, wie von MIPs Computers, Sunnyvale, Kalifornien vertrieben. Jedes Datenwort besteht aus 32 Bits. Mit der CPU 20 ist ein Anweisungscache 22 verbunden, und ein Datencache 24 ist auf ähnliche Weise mit der CPU 20 verbunden. Der Anweisungscache 22 und der Datencache 24 wirken als kleine Hochgeschwindigkeitsspeicher, die zwischen dem Prozessor 20 und dem Hauptspeicher 80 liegen. Der Anweisungscache 22 und der Datencache 24 sind jeweils mit Direktbelegung kartiert. Die Tatsache, daß die Caches 22 und 24 mit Direktbelegung kartiert sind, bedeutet, daß es der CPU 20 bekannt ist, von wo aus dem Hauptspeicher 80 die Daten in den Caches 22 und 24 herrühren. Das Doppelcacheschema gewährleistet, daß Anweisungen und Daten bei der Realisierung mit Direktbelegungs-Kartierung nicht miteinander im Wettbewerb stehen. Getrennte Anweisungs- und Datencaches sorgen für erhöhte Anwendungsbandbreite. Die Schaltungsanordnung 10 enthält auch einen zweiten mit Direktbelegung kartierten Datencache 40, der zwischen einen Schreibpuffer 30 und einen Bus 70 geschaltet ist.
  • Innerhalb des Anweisungscaches 22 und des Datencaches 24 der CPU 20 befindet sich eine Graphikunterroutine, wie auch in einem Anweisungscache 102 und einem Datencache 104 einer CPU 100.
  • Bei einem bevorzugten Ausführungsbeispiel der Erfindung wird eine Dreiwegeübertragung digitaler Information innerhalb der Schaltungsanordnung 10 ausgeführt. Bei einer Übertragung des Dreiwege-Übertragungsvorgangs wird eine Startadresse von der CPU 20 über den Bus 70 an den Speicher 80 geliefert. Gemäß einer anderen Übertragung des Dreiwege-Übertragungsvorgangs wird die Startadresse von der CPU 20 über den Bus 70 an das Graphikuntersystem 90 geliefert. Bei einer dritten Übertragung des Dreiwege-Übertragungsvorgangs wird ein Datenblock mit einer Startadresse, die die Adresse des ersten Worts im Datenblock ist, und der einen Wortanzahl-Datenwert aufweist, der die Anzahl von Wörtern im Datenblock repräsentiert, direkt vom Speicher 80 oder vom Datencache 40 über den Bus 70 an das Graphikuntersystem 90 geliefert. Das Graphikuntersystem 90 verwendet den so übertragenen Datenblock.
  • Der Datencache 24 ist ein Durchschreibecache. Bei einem Durchschreibecache, wie dem Datencache 24, schreibt die CPU 20 immer sowohl in den Datencache (d.h. den Datencache 24) als auch den Hauptspeicher 80. Der Datencache 24 ist vom Durchschreibetyp, so daß der Hauptspeicher 80 immer die aktuellste Kopie irgendwelcher Daten im Datencache 24 hat. Bei einer Architektur mit Durchschreibecache wird immer angenommen, daß der Cache verfehlt wurde, weswegen die CPU 20 sowohl in den Cache (d.h. den Cache 24) als auch den Speicher 80 schreibt. Die Markierung für den Cache 40 wird ebenfalls aktualisiert.
  • Der Datencache 40 auf dem zweiten Niveau ist jedoch ein Rückschreibecache. Ein Rückschreibecacheschema bedeutet, daß es möglich ist, daß der Cache 40 eine aktuellere Version eines Datenworts hat, als es der unter demselben Adressenort im Speicher 80 entspricht. Bei einem Rückschreibecacheschema schreibt die CPU 20 nur in den Cache 40 und nicht gleichzeitig sowohl in den Cache 40 als auch den Speicher 80. Anders gesagt, bedeutet ein Rückschreibecacheschema, daß der Cache aktuellere Information als der Speicher 80 enthalten kann. Demgemäß ist es möglich, daß der Cache 40 eine ausschließliche Kopie eines zuletzt modifizierten Datenworts enthält. Das Rückschreibecacheschema minimiert den Busverkehr, da dann, wenn die CPU 20 zweimal an derselben Stelle zu schreiben wünscht, sie nur einmal in den Speicher 80 schreiben muß.
  • Der Schreibpuffer 30 ist ein solcher mit der Tiefe vier, was bedeutet, daß er vier Wörter digitaler Information aufnehmen kann. Der Schreibpuffer 30 ist auch ein Zuerst-ein-zuerstaus("FIFO")-Schreibpuffer. Der Schreibpuffer 30 ist über Leitungen 32 mit dem Dätencache 40 des zweiten Niveaus verbunden. Der Schreibpuffer 30 ist über Leitungen 34 auch mit einem Adressendecodierer 50 verbunden.
  • Der Schreibpuffer 30 ist über Leitungen 26 mit der CPU 20 und dem Datencache 24 verbunden. Der Schreibpuffer 30 bewahrt den Durchschreibecache 24 davor, daß er auf den langsameren Hauptspeicher 80 zum Abschließen seiner Schreibzyklen warten muß. Die CPU 20 gibt die digitale Information, die sie zu schreiben wünscht (in den Datencache 40 des zweiten Niveaus oder den Speicher 80) in den Schreibpuffer 30 aus. Der Schreibpuffer 30 führt dann die relativ langsamen Schreibvorgänge in den Datencache 40 des zweiten Niveaus und den Hauptspeicher 80 aus, während die CPU 20 zu andern Computervorgängen übergeht. Bei einem bevorzugten Ausführungsbeispiel der Erfindung ist die CPU 20 ein 25-MHZ-Mikroprozessor, der digitale Information relativ schnell überträgt. So wirkt der Schreibpuffer 30 so, daß er die digitale Information von der CPU 20 aufnimmt, damit diese CPU 20 zu andern Computervorgängen übergehen kann.
  • Die CPU 20 führt Lese- oder Schreibvorgänge aus. Bei einem Lesevorgang (d.h. einem Ladevorgang) erhält die CPU 20 Anweisungen, Adressen und Daten von den Caches 22, 24 und 40 oder vom Speicher 80. Wenn die CPU 20 während eines Lesevorgangs einen Cache "verfehlt", bedeutet dies, daß sich die CPU 20 zum Erhalten von Anweisungen, Adressen und Daten an den Speicher 80 statt an die Caches 22, 24 oder 40 wendet. Während eines Lesevorgangs muß die CPU 20 auf Daten warten. Während eines Schreibvorgangs (d.h. eines Einspeichervorgangs) liefert die CPU 20 Adressen und Daten an die Caches 24 und 40 oder den Speicher 80. Wenn die CPU 20 die Caches 24 oder 40 während eines Schreibvorgangs "verfehlt", liefert der Cache 22 Adressen und Daten an beide Caches 24 und 40.
  • Die CPU 20 sendet und empfängt Adressen und Daten auf den Leitungen 26. Der Schreibpuffer 30 sendet und empfängt Adressen und Daten auf den Leitungen 32. Der Datencache 40 des zweiten Niveaus sendet und empfängt Adressen und Daten auf den Leitungen 44.
  • Es wird auf die rechte Seite von Fig. 1 Bezug genommen, auf der die CPU 100 dargestellt ist, die ebenfalls ein 32-Bit- RISC-Mikroprozessor R3000, vertrieben von MIPs Computers, Sunnyvale, Kalifornien. Die Schaltungsanordnung auf der rechten Seite von Fig. 1 ist der Schaltungsanordnung auf der linken Seite von Fig. 1 ähnlich. Ein Anweisungscache 102 ist mit der CPU 100 verbunden. Auch ein Datencache 104 ist mit der CPU 100 verbunden. Der Anweisungscache 102 und der Datencache 104 sind beide mit Direktbelegung kartiert. Der Datencache 104 ist ein Durchschreibedatencache. Die CPU 100 liefert Adressen und Daten über Leitungen 106 an einen Schreibpuffer 110. Der Schreibpuffer 110 ist entsprechend ein FIFO-Schreibpuffer mit der Tiefe vier. Der Schreibpuffer 110 liefert Adressen und Daten über Leitungen 112 an einen Datencache 102 auf dem zweiten Niveau. Der Schreibpuffer 110 ist über Leitungen 114 auch mit einem Adressendecodierer 130 verbunden. Der Datencache 120 auf dem zweiten Niveau ist ein Rückschreibedatencache mit Direktbelegungs-Kartierung. Dieser Datencache 120 auf dem zweiten Niveau liefert Adressen und Daten über Leitungen 124 an den Bus 70. Der Datencache 120 auf dem zweiten Niveau ist über Leitungen 122 auch mit dem Adressendecodierer verbunden.
  • Gemäß dem unteren Teil von Fig. 1 laufen Adressen und Daten zwischen dem Speicher 80 und dem Bus 70 über Leitungen 82. Adressen und Daten laufen zwischen dem Graphikuntersystem 90 und dem Bus 70 über Leitungen 92.
  • Bei einem alternativen Ausführungsbeispiel der Erfindung können zusätzliche Prozessoren vorhanden sein, die gemeinsam den Bus 70, den Speicher 80 und das Graphikuntersystem 90 nutzen. Z.B. könnten vier Mikroprozessoren statt zwei Mikroprozessoren den Bus 70 gemeinsam nutzen.
  • Darüber hinaus könnte bei einem anderen alternativen Ausführungsbeispiel der Erfindung ein einzelner Prozessor statt mehrerer Prozessoren mit dem Bus 70 verbunden sein. Bei einem derartigen alternativen Ausführungsbeispiel wären die CPU 20 und die Schaltungsanordnung äuf der linken Seite und im unteren Teil von Fig. 1 Teil der Schaltungsanordnung. Die CPU 100 wäre nicht Teil der Schaltungsanordnung.
  • Bei noch einem anderen alternativen Ausführungsbeispiel der Erfindung könnte die erfindungsgemäße Schaltungsanordnung keinen Schreibpuffer oder Datencaches auf dem zweiten Niveau enthalten. Anders gesagt, wären die Schreibpuffer 30 und 110 sowie die Datencaches 40 und 120 nicht vorhanden. Der digitale Computer würde jedoch eine CPU, eine mit der CPU verbundene Decodierschaltung, einen mit der Decodierschaltung verbundenen Bus, einen mit dem Bus verbundenen Speicher und ein mit dem Bus verbundenes Untersystem aufweisen.
  • Es wird nun zum bevorzugten Ausführungsbeispiel von Fig. 1 zurückgekehrt, bei dem, da die Schaltungsanordnung 10 mehrere Datencaches enthält, ein Schema vorhanden sein muß, das die Cacheübereinstimmung aufrecht erhält oder ein Cachezusammenhangsprotokoll führt. Cacheübereinstimmung oder Cachezusammenhang gewährleistet, daß dann, wenn die CPU 20 in den Datencache 40 einschreibt, die CPU 100 auf dieselben Daten zugreifen kann, die in den Cache 40 geschrieben wurden.
  • Als Teil des Cachezusammenhangschemas beim bevorzugten Ausführungsbeispiel der Erfindung werden zwei Zustandsbits verwendet. Die zwei Zustandsbits können vier mögliche Zustände zeigen:
  • (1) einen gültigen Zustand,
  • (2) einen ungültigen Zustand,
  • (3) einen gemeinsamen Zustand und
  • (4) einen unsauberen Zustand.
  • Bei einem bevorzugten Ausführungsbeispiel sind die Zustandsbits Datenzeilen zugeordnet. Bei einem bevorzugten Ausführungsbeispiel besteht eine Datenzeile aus vier Datenwörtern, die zwischen zwei aufeinanderfolgenden Cachezeilen liegen. Eine Modifizierung einer der Datenwörter der die Datenzeile bildenden Datenwörter bedeutet, daß die Datenzeile modifiziert wurde.
  • Der gültige Zustand zeigt an, daß sich die spezielle Datenzeile aus dem Speicher nur in einem Datencache befindet und daß sie nicht modifiziert wurde. Anders gesagt, ist eine unmodifizierte Datenzeile im Speicher und im Datencache jeweils dieselbe. Z.B. kann eine unmodifizierte Datenzeile sowohl im Datencache 40 als auch im Speicher 80 auftreten.
  • Der ungültige Zustand entspricht dem Fall, daß sich keine Daten im Cache befinden. Der Cache ist so auf den ungültigen Zustand initialisiert. Der ungültige Zustand entspricht einem "verfehlenden Zugriff".
  • Der gemeinsam genutzte Zustand zeigt, daß die spezielle Datenzeile in mehr als einem Cache vorliegen kann und noch nicht modifiziert wurde. Z.B. könnte sich die Datenzeile sowohl im Datencache 40 als auch im Datencache 120 befinden.
  • Der unsaubere Zustand zeigt, daß nur eine Kopie einer speziellen Datenzeile, d.h. die aktuellste Kopie, vorhanden ist, daß es der einzige Cache mit diesen speziellen Daten ist und daß der Speicher 80 diese Daten nicht enthält. Anders gesagt, bedeutet es, wenn die dem Cache 40 zugeordneten Zustandsbits so gesetzt sind, daß sie den unsauberen Zustand zeigen, daß der Cache 40 eine ausschließliche Kopie dieser speziellen Datenzeile hat. Dies bedeutet, daß sich diese Datenzeile in keinem anderen Datencache der Schaltungsanordnung 10 oder im Speicher 80 befindet. Demgemäß bedeutet es, wenn die Zustandsbits zeigen, daß für den Datencache 40 der unsaubere Zustand vorliegt, daß der Datencache 120 keine Kopie dieser speziellen Datenzeile hat, und daß auch der Speicher 80 keine Kopie dieser speziellen Datenzeile hat.
  • Jeder Vorgang, an dem der Bus 70 teilnimmt, erfordert die Teilnahme sowohl des Datencaches 40 als auch des Datencaches 120 wie auch des Speichers 80. Demgemäß ist der Cache 40 und auch der Cache 120 jeweils ein "herumsuchender" Cache, in dem Sinn, daß jeder nach der Adresse auf dem Bus 70 Ausschau hält.
  • Ein Beispiel betreffend eine Folge von Cachezuständen trägt dazu bei, das Cachezusammenhangsprotokoll zu erläutern. Der Datencache 40 und der Datencache 120 werden als erstes auf den ungültigen Zustand initialisiert. Dann geht der Datencache 40 in den gültigen Zustand über. Nachdem der Datencache 40 in den gültigen Zustand übergegangen ist, wünscht die CPU 100, aus dem Hauptspeicher 80 zu lesen. Dann gehen der Cache 40 und der Cache 120 in den gemeinsam genutzten Zustand über.
  • Als Beispiel sei angenommen, daß die CPU 20 unter derselben Adresse in den Datencache 40 zu schreiben wünscht. Anders gesagt, wünscht die CPU 20, eine gemeinsam genutzte Zeile zu schreiben. Die CPU 20 nimmt demgemäß einen Busvorgang über den Bus 70 vor, um es dem Datencache 120 anzugeben, für diese Zeile vom gemeinsam genutzten Zustand in den ungültigen Zustand überzugehen. Dadurch geht der Cache 120 in den ungültigen Zustand über. Dann geht der Datencache 40 in den unsauberen Zustand über.
  • Demgemäß befindet sich die unsaubere Kopie dieser speziellen Datencachezeile im Datencache 40 und nicht im Datencache 120 und auch nicht im Speicher 80. Wenn die CPU 100 diese spezielle Cachezeile, die unsauber ist, zu lesen wünscht, würden die Daten vom Cache 40 statt vom Speicher 80 kommen. Dies, da der Datencache 40 die ausschließliche Kopie der modifizierten Cachezeile enthält. Wenn die CPU 100 diese Daten liest, laufen die Daten vom Cache 40 über den Bus 70 zum Cache 120. Dann gehen der Datencache 40 und der Datencache 120 in den gemeinsam genutzten Zustand zurück.
  • Wenn während eines Dreiwege-Übertragungsvorgangs die Statusbits des Cachezusammenhangsprotokolls anzeigen, daß z.B. der Datencache 40 eine ausschließliche Kopie der zu übertragenden Datenzeile enthält (d.h., daß der Cache 40 eine unsaubere Kopie enthält), wird die Datencachezeile vom Cache 40 über den Bus 70 an das Graphikuntersystem 90 übertragen, statt vom Speicher 80 aus. Auf ähnliche Weise werden, wenn der Datencache 120 die ausschließliche, modifizierte Kopie der während eines Dreiwege-Übertragungsvorgangs zu übertragenden Daten enthält (d.h., daß der Datencache 120 eine unsaubere Kopie enthält), die Daten vom Datencache 120 statt vom Speicher 80 an das Graphikuntersystem 90 übertragen. Die Tatsache, daß das Cachezusammenhangsprotokoll während eines Dreiwege-Übertragungsvorgangs berücksichtigt wird, gewährleistet, daß nur die ganz zuletzt modifizierten Kopien von Datenwörtern als Teil eines Dreiwege-Übertragungsvorgangs übertragen werden, statt überholte frühere Kopien von Datenwörtern.
  • Der Bus 70 ist ein 64-Bit-Bus. Dieser Bus 70 enthält gesonderte Adressen- und Datenleitungen. Die CPU 20 und die CPU 100 können zu verschiedenen Zeiten auf den Bus 70 zugreifen, und demgemäß ist der Bus 70 ein Multiplexbus. Der Dreiwege- Übertragungsvorgang ist ein spezieller Busvorgang.
  • Bei einem bevorzugten Ausführungsbeispiel der Erfindung ist jede Cacheübertragung eine Übertragung von vier Wörtern. Demgemäß werden jedesmal dann, wenn eine den Bus 70 betreffende Übertragung vorliegt, vier Datenwörtern pro Adresse übertragen. Daher werden, anstatt daß ein einzelnes Datenwort pro einzelnem Buszyklus übertragen wird, vier Datenwörter pro einzelnem Buszyklus übertragen. Demgemäß überträgt jede den Bus 70 betreffende Übertragung 128 Bits, vorausgesetzt, daß jedes Datenwort 32 Bits lang ist und daß gleichzeitig vier Datenwörter übertragen werden. Jedesmal dann, wenn ein einzelner Speicherlese- oder -schreibvorgang vorliegt, werden gleichzeitig vier Wörter übertragen. Vier Wörter werden unabhängig davon übertragen, ob die CPU 20 vier Wörter oder weniger als vier Wörter benötigt. Wenn die CPU 20 z.B. drei statt vier Wörtern benötigt, erhält die CPU 20 trotzdem vier Wörter, da nie weniger als vier Wörter übertragen werden.
  • Der Speicher 80 und die Caches 22, 24, 40, 102, 104 und 120 sind in Cachezeilen organisiert. Cachezeilen 301, 302, 304, 306 und 307 sind in der Fig. 2 veranschaulicht. Daten sind in der Spalte mit der Bezeichnung "Daten" dargestellt, und Adressen sind in der Spalte mit der Bezeichnung "Adressen" dargestellt. Die Cachezeilen 301, 302, 304, 306 und 307 organisieren die Daten in Gruppen von vier Datenwörtern. Z.B. liegen vier Datenwörter zwischen der Cachezeile 302 und der Cachezeile 304. Demgemäß sind die Cachezeilen 301, 302, 304, 306 und 307 jeweils Grenzen zwischen vier Wörtern.
  • Das Graphikuntersystem 90 ist über Leitungen 92 mit dem Bus 70 verbunden. Bei einem bevorzugten Ausführungsbeispiel der Erfindung handhabt das Graphikuntersystem 90 die Umwandlung, Überführung und Anzeige graphischer Information für den digitalen Computer. Diese Vorgänge werden örtlich unter Verwendung von Pipelineprozessoren ("VLSI") , parallelen Finiter-Zustand-Prozessoren, einem schnellen Speicher und einem 32-Bit-Mikroprozessor (die alle nicht dargestellt sind) ausgeführt. Das Graphikuntersystem 90 enthält ein Geometrieuntersystem (nicht dargestellt), ein Überführungsuntersystem (nicht dargestellt) und ein Anzeigeuntersystem (nicht dargestellt) . Eine Graphikverwaltungsplatine (nicht dargestellt) ist Teil des Überführungsuntersystems, das seinerseits Teil des Graphikuntersystems 90 ist. Die Graphikverwaltungsplatine enthält einen Mikroprozessor (nicht dargestellt) und einen örtlichen Speicher (nicht dargestellt) . Der Mikroprozessor der Graphikverwaltungsplatine kommuniziert mit dem Mikroprozessoren 20 und 100 der Schaltungsanordnung 10. Der Graphikverwalter des Graphikuntersystems 90 überwacht auch die Aktivitäten der Geometriepipeline innerhalb des Graphikuntersystems 90.
  • Der Adressendecodierer 50 ist über Leitungen 34 mit dem Schreibpuffer 30 verbunden. Der Adressendecodierer 50 enthält eine Decodierschaltung, die im Schreibpuffer 30 befindliche Adressen decodiert. Die vom Adressendecodierer 50 erhaltene Information wird dazu verwendet, zu entscheiden, ob der Bus 70 anzufordern ist oder nicht. Die vom Adressendecodierer 50 erhaltene Information wird auch dazu verwendet, zu entscheiden, ob gelesen, geschrieben oder ein Dreiwege-Übertragungsvorgang ausgeführt werden soll. Die vom Adressendecodierer 50 erhaltene Information wird auch dazu verwendet, zu entscheiden, was mit dem Datencache 40 erfolgen soll.
  • Der Adressendecodierer 50 liefert Signale über Leitungen 42 an den Datencache 40. Der Adressendecodierer sendet Decodier- oder Statusbits auf Leitungen 52 an ein Register 60. Die Status- oder Decodierbits können im Register 60 gespeichert werden. Die Status- oder Decodierbits sind auch als Dreiwege-Übertragungsbits oder einfach als Dreiwegebits bekannt. Die Leitungen 54, 56 und 58 verbinden das Register 60 auch mit dem Adressendecodierer 50. Die Leitungen 54, 56 und 58 bilden Einrichtungen für das Register 60 zum Liefern des Zustands der Dreiwege-Übertragungsbits an das Register 50.
  • Die Dreiwege-Übertragungsbits umfassen (1) ein Startadresse- Triggerbit, (2) ein Endadresse-Triggerbit und (3) ein Markierungsbit. Bei einem bevorzugten Ausführungsbeispiel der Erfindung ist das Markierungsbit das Bit an der fünften Stelle der Startadresse, die dem Dreiwege-Übertragungsvorgang zugeordnet ist. Anders gesagt, ist das Markierungsbit das Bit A4 der Startadresse.
  • Das Startadresse-Triggerbit, das Endadresse-Triggerbit und das Markierungsbit können über Leitungen 52 vom Adressendecodierer 50 zur Speicherung an das Register 60 geliefert werden. Die im Register 60 eingespeicherten Bits können auch gelöscht und damit zurückgesetzt werden. Der Adressendecodierer 50 kann auch das Bit einer Endadresse im Schreibpuffer 30 abtasten und dieses Bit zur Speicherung über Leitungen 52 an das Register 60 liefern. Bei einem bevorzugten Ausführungsbeispiel der Erfindung wird auf diese Weise das Bit an der fünften Stelle der Endadresse abgetastet und abgespeichert. Anders gesagt, wird das Bit A4 der Endadresse abgetastet und abgespeichert.
  • Das durch den Adressendecodierer 50 gelieferte Startadresse- Triggerbit wird dazu verwendet, weitere Schreibvorgänge während eines Dreiwege-Übertragungsvorgangs zu sperren. Das Startadresse-Triggerbit zeigt auch an, daß der nächste Schreibvorgang ein solcher in die Startadresse ist. Der Adressendecodierer 50 erzeugt ein Endadresse-Triggerbit, wenn einmal ein Schreibvorgang in die Startadresse vorliegt. Das Endadresse-Triggerbit zeigt an, daß der nächste Schreibvorgang ein solcher in die Endadresse ist.
  • Der Adressendecodierer 130 und das Register 140 auf der rechten Seite in Fig. 1 führen ähnliche Funktionen wie der Adressendecodierer 50 bzw. das Register 60 aus. Der Adressendecodierer 130 decodiert vom Schreibpuffer 110 über Leitungen 114 gelieferte Adressen. Der Adressendecodierer 130 liefert Steuersignale über Leitungen 122 an den Datencache 120. Der Adressendecodierer 130 liefert Dreiwegebits (d.h. Decodier- oder Statusbits) über Leitungen 132 zur Speicherung an das Register 140. Die Dreiwegebits enthalten ein Startadresse-Triggerbit, ein Endadresse-Triggerbit, ein Markierungsbit und ein Bit zur Endadresse, das dieselbe Stellung wie das Markierungsbit hat. Das Register 140 kann gelöscht werden, wodurch die in ihm abgespeicherten Dreiwegebits zurückgesetzt werden. Das Register 140 ist über Leitungen 134, 136 und 138 mit dem Adressendecodierer 130 verbunden. Demgemäß kann der Inhalt des Registers 140 über die Leitungen 134, 136 und 138 an den Adressendecodierer 130 geliefert werden.
  • Bauelemente 150 zu einer programmierbaren Relogik ("PALs") enthalten eine Steuerlogik für die Schaltungsanordnung 10 des digitalen Computers. Die PALs 150 empfangen Eingangssignale über Leitungen 152. Die PALs 150 senden Steuersignale über Leitungen 154 aus. PALs 160 enthalten ebenfalls Steuerlogik für die Schaltungsanordnung 10. Die PALs 160 empfangen Eingangssignale über Leitungen 162 und sie geben Steuersignale über Leitungen 164 aus.
  • Die PALs 150 und 160 steuern alle Zyklen auf dem Bus 70. Die PALs 150 und 160 entscheiden, ob der Bus 70 angefordert ist oder nicht. Die PALs 150 und 160 entscheiden auch abschließend, ob ein Lese-/Schreibvorgang oder ein Dreiwege-Übertragungsvorgang stattfinden soll. Die PALs 150 und 160 überwachen den Dreiwege-Übertragungsvorgang. Die PALs 150 und 160 entscheiden, ob ein Schreibvorgang während eines Dreiwege- Vorgangs zu sperren ist. Die PALs 150 und 160 überwachen den Status der Dreiwegebits in den Registern 60 und 140 und empfangen so die Dreiwegebits, um Steuerentscheidungen zu treffen. Die PALs 150 und 160 stellen sicher, daß die Dreiwegebits entweder abgespeichert, wiederhergestellt oder gelöscht werden, abhängig davon, ob ein Interrupt vorliegt, und abhängig davon, in welchem Zustand sich die Schaltungsanordnung 10 während eines Dreiwege-Übertragungsvorgang befindet. Die PALs 150 und 160 liefern Steuersignale an Sendeempfänger (nicht dargestellt), die die Übertragungsrichtung von Adressen und Daten durch einen Großteil der Schaltungsanordnung steuern.
  • Bei einem bevorzugten Ausführungsbeispiel der Erfindung bestehen die PALs 150 und 160 aus Flipflops, Zustandsmaschinen und Logikgattern. Bei einem alternativen Ausführungsbeispiel der Erfindung kann die durch die PALs 150 und 160 vorgenommene Steuerung mikrocodiert sein. Die bei der Programmierung oder Mikrocodierung der PALs 150 und 160 verwendete Logik ergibt sich aus den hier beschriebenen Verfahren zum Ausführen von Dreiwegeübertragungen digitaler Information.
  • Der Dreiwege-Übertragungsvorgang gemäß der Erfindung sorgt für eine wirkungsvolle Maßnahme zum Übertragen von Daten an die Graphikverwaltungsplatine (nicht dargestellt) des Graphikuntersystems 90.
  • Bei einem bevorzugten Ausführungsbeispiel der Erfindung umfaßt das Anzeigen graphischer Bilder auf einer Anzeige eines digitalen Computers ein Musterauslegen mit Polygonen. Musterauslegung mit Polygonen bedeutet, daß Bilder aus einer Vielzahl relativ kleiner Polygone bestehen. Die Koordinaten jedes derartigen Polygons müssen vom Bus 70 an das Graphikuntersystem 90 geliefert werden, damit die Graphikpipeline des Graphikuntersystems 90 diese Koordinaten empfangen kann. Jeder Ecke jedes Polygons sind räumliche X-, Y- und Z-Komponenten sowie R-, G-, B-(d.h. rot, grün, blau)Farbcodes zugeordnet. Demgemäß verfügt jede Ecke jedes Polygons über ein X-Wort, ein Y-Wort, ein Z-Wort, ein R-Wort, ein G-Wort und ein B-Wort, und diese Wörter müssen über den Bus 70 an das Graphikuntersystem 90 geliefert werden. Jedes dieser Wörter ist eine Gleitkommazahl. Wenn sechs Wörter jeder Ecke zugeordnet sind und im allgemeinen vier Ecken pro Polygon vorliegen, existieren demgemäß 24 Wörter pro Polygon. Angesichts der Tatsache, daß jedes angezeigte Bild aus einer Anzahl von Polygonen besteht, muß eine relativ große Anzahl von Datenwörtern an das Graphikuntersystem 90 geliefert werden. Darüber hinaus müssen derartige Wörter mit ausreichend hoher Geschwindigkeit an das Graphikuntersystem 90 geliefert werden, um die Funktion desselben zu optimieren.
  • Während eines Dreiwege-Übertragungsvorgangs wird ein Datenblock entweder vom (1) Hauptspeicher 80 oder (2) vom Cache oder vom Cache 120 (wenn der Cache 40 oder der Cache 120 eine ausschließliche, modifizierte Kopie der Daten enthält) über den Bus 70 an das Graphikuntersystem 90 übertragen. Der übertragene Datenblock verfügt über (1) eine Startadresse, die die Adresse des ersten Worts im Datenblock ist, (2) eine Endadresse, die die Adresse des letzten Worts im Datenblock ist, und (3) einen Wortanzahl-Datenwert, der die Wortanzahl im Datenblock repräsentiert.
  • Fig. 2 veranschaulicht Beispiele von Datenblöcken, die als Teil eines Dreiwege-Übertragungsvorgangs übertragen werden können. Jedes "X" in Fig. 2 veranschaulicht ein Wort eines Datenblocks, das über den Bus 70 zu übertragen ist. Wie oben erörtert, sind der Speicher 80 wie auch die Caches 40 und 120 mittels Cachezeilen organisiert, wie den Cachezeilen 301, 302, 304, 306 und 307 von Fig. 2. Die Cachezeilen organisieren die Datenwörter in Gruppen von vier Wörtern. Jedesmal dann, wenn ein Busvorgang oder eine den Bus beanspruchende Datenübertragung ausgeführt wird, werden gleichzeitig vier Wörter übertragen.
  • Wie es aus der Fig. 2 erkennbar ist, können die als Teil eines Dreiwege-Übertragungsvorgangs zu übertragenden Datenblöcke verschiedene Wortlängen aufweisen. Die Datenblöcke können auch verschiedene Startadressen und verschiedene Endadressen aufweisen. Z.B. weist der Datenblock in der Spalte A von Fig. 2 die Wortanzahl drei, die Startadresse null und die Endadresse zwei auf. Außerdem überquert der Datenblock der Spalte A keine Cachezeile.
  • Der Datenblock in der Spalte B hat die Startadresse 1, die Endadresse 3 und die Wortanzahl 3.
  • Um irgendwelche Daten über den Bus 70 zu übertragen, müssen gleichzeitig vier Wörter übertragen werden. Daher muß zum Übertragen des Datenblocks der Spalte A über den Bus 70 die Folge von Datenwörtern ab der Adresse null bis zur Adresse drei übertragen werden. Daher wird, obwohl die CPU 20 von Fig. 1 nur die Übertragung des bei der Adresse null beginnenden und bei der Adresse zwei endenden Datenblocks der Spalte zwei wünscht, dennoch der Datenwert übertragen, der an der Adresse drei liegt. Demgemäß werden bei der Cachezeilenarchitektur der Schaltungsanordnung 10 manchmal als Teil irgendeines Dreiwege-Übertragungsvorgangs zusätzliche Daten übertragen. Entsprechend wird, wenn die CPU 20 den Datenblock in der Spalte B von Fig. 2 zu übertragen wünscht, der Datenwert an der Adresse null zusammen mit dem Datenblock übertragen, der die Startadresse eins, die Endadresse drei und die Wortanzahl drei hat.
  • Demgemäß kann die CPU 20, wenn der Datenblock, den die CPU zu übertragen wünscht, ganz innerhalb einer Folge von vier Datenwörtern liegt, die von zwei Cachezeilen begrenzt werden, nicht angeben, welche speziellen Wörter innerhalb der Folge von vier Wörtern sie zu übertragen wünscht. Statt dessen erhält die CPU 20 alle vier Wörter, unabhängig davon, ob sie sie wünscht oder nicht. Eine andere Weise zum Ausführen dieses Vorgangs ist es, daß die Bits niedriger Ordnung einer Adresse irrelevant sind, wenn diese Bits niedriger Ordnung nur angeben, innerhalb einer Folge von Datenwörtern ein spezielles Datenwort liegt. Anders gesagt, kann die CPU 20 kein einzelnes Wort innerhalb der Gruppierung einer Cachezeile von vier Wörtern erhalten, ohne auch die anderen Wörter der Cachezeilengruppierung zu erhalten. Die vier Wörter einer Cachezeilengruppierung werden auch gemeinsam als Datenzeile oder Zeile von Daten bezeichnet.
  • In der Spalte C von Fig. 2 befindet sich ein Datenwort mit der Startadresse zwei, der Endadresse vier und der Wortanzahl drei. Dieser Datenblock der Spalte C überquert die Cachezeile 302. Jedoch überträgt eine einzelne Übertragung über den Datenbus 70 nur eine Folge von vier Datenwörtern, die zwischen zwei aufeinanderfolgenden Zeilen liegen. Demgemäß überträgt ein einzelner Busübertragungsvorgang für die Spalte C die vier Datenwörter beginnend bei der Adresse null und endend bei der Adresse drei. Der Datenwert im Datenblock der Spalte C, der an der Adresse vier liegt, wird nicht als Teil des ersten, einzelnen Busübertragungsvorgangs übertragen. Dies, da nur der zwischen den Cachezeilen 301 und 302 liegende Datenwert als Teil eines einzelnen Busübertragungsvorgangs zu übertragen wäre. Die CPU muß daher einen anderen Busübertragungsvorgang auslösen, um den Datenwert an der Adresse vier zu übertragen. Selbstverständlich wird als Teil des zweiten Busübertragungsvorgangs nicht nur der Datenwert an der Adresse vier übertragen, sondern es werden auch die Daten an den Adressen fünf, sechs und sieben übertragen, da diese Daten zwischen den Cachezeilen 302 und 304 liegen.
  • Auf ähnliche Weise sind zwei Busübertragungsvorgänge, wie zwei Dreiwege-Übertragungsvorgänge, erforderlich, um den Datenblock in der Spalte D zu übertragen, der die Startadresse drei, die Endadresse fünf und die Wortanzahl drei hat. Während des ersten Busübertragungsvorgangs werden Datenwörter an den Adressen null, eins, zwei und drei übertragen. Während des zweiten Busübertragungsvorgangs werden die Datenwörter an den Adressen vier, fünf, sechs und sieben übertragen, weil diese Datenwörter zwischen den aufeinanderfolgenden Cachezeilen 302 und 304 liegen. Daher wird während eines Dreiwege-Übertragungsvorgangs, obwohl ein Datenblock an das Graphikuntersystem 90 zu liefern ist, dennoch während jeder einzelnen Übertragung eine Folge von vier Datenwörtern an das Graphikuntersystem 90 geliefert.
  • Die Spalte E in Fig. 2 veranschaulicht, daß ein als Teil eines Dreiwege-Übertragungsvorgangs zu übertragender Datenblock die Wortanzahl eins aufweisen kann. Die Spalte F in Fig. 2 zeigt, daß ein als Teil eines Dreiwege-Übertragungsvorgangs zu übertragender Datenblock die Wortanzahl vier aufweisen kann. Die Übertragungen für die Spalten A, B, E und F erfordern jeweils nur eine einzige Übertragung einer Datenzeile als Teil eines Dreiwege-Übertragungsvorgangs. Die Datenblöcke in den Spalten E und D, die die Cachezeile 302 überqueren, erfordern jedoch zwei Busübertragungen als Teil eines Dreiwege-Übertragungsvorgangs. Wenn der Datenblock in der Spalte E übertragen wird, bedeutet dies auch, daß die Daten an den Adressen eins, zwei und drei übertragen werden, wie auch der Datenwert an der Adresse null.
  • Der Datenblock in der Spalte G hat die Wortanzahl sechs, die Startadresse eins und die Endadresse sechs. Die Daten der Spalte G überqueren ebenfalls die Cachezeile 302. Demgemäß sind zwei Busübertragungen erforderlich, um den gesamten Datenblock der Spalte G zu übertragen.
  • Die Spalte H in Fig. 2 veranschaulicht einen Datenblock, der zwei Cachezeilen überquert, nämlich die Cachezeilen 302 und 304. Der Datenblock in der Spalte H hat die Wortanzahl acht, die Startadresse zwei und die Endadresse neun. Zum vollständigen Übertragen des Datenblocks der Spalte H sind drei Busübertragungen als Teil eines Dreiwege-Übertragungsvorgangs erforderlich. Erneut werden zusätzliche Daten unter den Adressen null, eins, zehn und elf als Teil der Busübertragungen übertragen.
  • Der Datenblock in der Spalte I von Fig. 2 überquert drei Cachezeilen, nämlich die Cachezeilen 302, 304 und 306. Der Datenblock in der Spalte 1 hat die Startadresse 1, die Wortanzahl 14 und die Endadresse 14. Vier Busübertragungen sind erforderlich, um den Datenblock der Spalte I in seiner Gesamtheit zu übertragen. Erneut werden die Daten an den Adressen null und fünfzehn als Teil der Busübertragungen übertragen.
  • Es ist zu beachten, daß gemäß der Erfindung andere Datenblöcke mit anderen Startadressen, anderen Endadressen und anderen Wortanzahlen übertragen werden können. Z.B. kann es erwünscht sein, Datenblöcke mit größeren Wortanzahlen als vier zu übertragen, wenn Zahlen mit doppelter Genauigkeit gesendet werden.
  • Die Fig. 3 ist ein Zeitsteuerdiagramm, das den Ablauf von Ereignissen veranschaulicht, wie sie während eines DreiwegeÜbertragungsvorgangs auftreten. Nahe der Oberseite von Fig. 3 sind Taktsignale dargestellt. Bei einem bevorzugten Ausführungsbeispiel der Erfindung ist die Zykluszeit als Zeitdauer zwischen der steigenden Flanke des Takts und der nächsten steigenden Flanke des Takts definiert.
  • Die Zeile NA von Fig. 3 ist die Zeile für die "nächste Adresse". Die Zeile NA in Fig. 3 zeigt die vom Schreibpuffer auf den Leitungen 34 und 32 herkommenden Adressen. Diese Adressen rühren von der CPU 20 her und wurden über die Leitungen 26 an den Schreibpuffer 30 geliefert.
  • Die Zeile TA in Fig. 3 veranschaulicht die Markierungsadressen, wie sie innerhalb des Datencaches 40 auf dem zweiten Niveau auftreten. Diese Markierungsadressen rühren von der CPU 20 her. Die in der Zeile TA erscheinenden Adressen sind gegenüber denjenigen, die in der Zeile NA erscheinen, einfach verzögert.
  • Die Zeile DA in Fig. 3 zeigt die Datenadressen für den Datencache 40 auf dem zweiten Niveau, wie sie innerhalb dieses Datencaches 40 auftreten. Die in der Zeile DA dargestellten Adressen sind einfach verzögerte Versionen der Adressen in den Zeilen TA und NA.
  • Die Zeile CD veranschaulicht die auf den Leitungen 32 vom Schreibpuffer 30 her auftretenden Daten. Diese Daten stammen von der CPU 20 her und wurden über die Leitungen 26 an den Schreibpuffer 30 geliefert.
  • Die Zeile NA könnte alternativ die nächsten Adressen zeigen, wie sie vom Schreibpuffer 110 auf den Leitungen 114 und 112 auftreten und von der CPU 100 herrühren. Die Zeile TA könnte alternativ die Markierungsadressen für den Datencache 120 zeigen. Die Zeile DA könnte alternativ die Datenadressen für den Datencache 120 zeigen. Die Zeile CD könnte alternativ die auf den Leitungen 112 vom Schreibpuffer 110 her auftretenden Daten zeigen, die von der CPU 100 herrühren.
  • Wie es durch die Fig. 3 veranschaulicht ist, löst die CPU 20 einen Dreiwege-Übertragungsvorgang dadurch aus, daß sie einen Schreibvorgang in eine Dreiwege-Triggeradresse ausführt. In der Fig. 3 repräsentiert "3WT" eine Dreiwege-Triggeradresse. Dies ist die erste Adresse in der Zeile NA. Die Dreiwege-Triggeradresse wird von der CPU 20 über die Leitungen 26 an den Schreibpuffer 30 geliefert. Der Schreibpuffer 30, die Leitungen 34 und der Adressendecodierer 50 bilden die Decodierschaltungsanordnung, die dann die an den Schreibpuffer 30 gelieferte Triggeradresse decodiert. Der Adressendecodierer 50 decodiert die Dreiwege-Triggeradresse, um ein Startadresse-Triggerbit zu setzen, das anzeigt, daß der nächste von der CPU 20 ausgeführte Schreibvorgang ein Schreibvorgang in die Startadresse eines Datenblocks ist, der während des Dreiwege-Übertragungsvorgangs zu übertragen ist. Das Setzen des Startadresse-Triggerbits durch den Adressendecodierer 50 dient auch dazu, den Datencache 40 auf dem zweiten Niveau darüber zu informieren, daß die nächsten zwei Schreibvorgänge "spezielle" Vorgänge sind. Der Adressendecodierer 50 liefert über die Leitungen 42, die zwischen ihn und den Datencache 40 auf dem zweiten Niveau geschaltet sind, ein Signal, das dies dem Datencache 40 auf dem zweiten Niveau anzeigt. Das Startadresse-Triggerbit wird dadurch gesichert, daß es vom Adressendecodierer über die Leitungen 52 ausgegeben wird, um im Register 60 abgespeichert zu werden.
  • Die nächsten zwei Schreibvorgänge sind "spezielle" Schreibvorgänge. Beide Schreibvorgänge werden daran gehindert, in den Datencache 40 auf dem zweiten Niveau zu schreiben. Beide Schreibvorgänge werden auch daran gehindert, den Absolutadressenspeicher 80 zu modifizieren. Die nächsten zwei Schreibvorgänge sind auch Teilschreibvorgänge. Bei einem bevorzugten Ausführungsbeispiel der Erfindung machen die zwei nächsten Teilschreibvorgänge automatisch den Datencache 24 ungültig. Dies, da der Datencache 24 ungültig würde, wenn ein Teilschreibvorgang in diesen Datencache 24 hinein versucht würde. Die Tatsache, daß die nächsten zwei Schreibvorgänge Teilschreibvorgänge sind, bedeutet auch, daß die unteren Datenbytes, die einen Graphikbefehl und einen Wortanzahl-Datenwert enthalten, schließlich an den Bus 70 übertragen werden.
  • Der Dreiwege-Übertragungsvorgang kann drei Arten von Schreibvorgängen betreffen:
  • (1) ein Einschreiben in eine Triggeradresse,
  • (2) ein Einschreiben in eine Anfangsstartadresse und, für längere Datenblöcke, einen Schreibvorgang oder mehrere in andere, anschließende Zwischenadressen, und (3) einen Schreibvorgang in eine Endadresse, jedoch nur, falls erforderlich.
  • Für Schreibvorgänge und Lesevorgänge folgen einer Adresse immer Daten. Anders gesagt, kommt zunächst bei jeder Übertragung digitaler Information eine Adresse. Nachdem eine Adresse in der Zeile NA auftritt, treten Daten in der Zeile CD auf. Die durch D0 bezeichneten und in der Zeile CD von Fig. 3 dargestellten Daten repräsentieren nichtverwendete Daten. Dies, da der Prozessor 20 einen Schreibvorgang in die Triggeradresse ausführt und demgemäß hier keine Beschäftigung zu Daten erfolgt, die dem Schreibvorgang in die Triggeradresse zugeordnet sind.
  • Die Zeile MPREQ von Fig. 5 veranschaulicht ein Multiprozessor-Busanforderungssignal, das von der CPU 20 zum Bus 70 läuft. Die in Fig. 3 dargestellte Zeile MPGRNT zeigt das Multiprozessor-Busleitungs-Gewährungssignal, das vom Bus 70 zur CPU 20 und auch zur CPU 100 läuft.
  • Wie es in der Zeile NA in Fig. 3 dargestellt ist, ist das nächste auf den Leitungen 32 und 34 erscheinende Signal die Startadresse A1 für einen Schreibvorgang. Wenn der Datencache 40 auf dem zweiten Niveau auf die erste Startadresse für den Schreibvorgang trifft, wird der Multiprozessorbus 70 angefordert und es wird der Dreiwege-Übertragungsvorgang auf dem Multiprozessorbus weiter ausgeführt.
  • Sobald die CPU 20 erkennt, daß die Leitungen MPREQ und MPGRNT niedrig angesteuert werden, liefert die CPU 20 die in der Zeile NA von Fig. 3 erscheinende Information an den Multiprozessorbus 70. Dies ist aus der Fig. 3 ersichtlich, wobei vorausgesetzt ist, daß die Zeile MPA die Adressen repräsentiert, die auf den Adressenleitungen des Multiprozessorbusses 70 erscheinen. Demgemäß erscheint die Startadresse A1 auf der Leitung MPA, nachdem die Startadresse A1 auf der Leitung NA für die nächste Adresse erschienen ist, und nachdem die Signale MPREQ und MPGRNT auf niedrig gesteuert sind. Bevor die Startadresse vom Multiprozessorbus 70 empfangen wird, wurde sie von der CPU 20 über die Leitungen 26 an den Schreibpuffer 30 geliefert. Der Adressendecodierer 50 decodiert die Startadresse, die über die Leitungen 34 an ihn geliefert wird. Dieses führt dazu, daß das Dreiwege-Startadresse-Triggerbit gelöscht wird und das Dreiwege-Endadresse-Triggerbit gesetzt wird. Das Dreiwege-Startadresse-Triggerbit wird dadurch gelöscht, daß ein Löschsignal an das Register 60 geliefert wird. Das Dreiwege-Endadresse-Triggerbit wird vom Adressendecodierer 50 gesetzt und über die Leitungen 52 an das Register 60 geliefert, um in diesem abgespeichert zu werden. So wird das Endadresse-Triggerbit gesichert. Die absolute Startadresse im Schreibpuffer 30 wird dann auf die Adressenleitungen des Multiprozessorbusses 70 gegeben. Dies ist bei A1 in der Zeile MPA in Fig. 3 dargestellt.
  • Während der Periode, die normalerweise für Zurückschreibedaten reserviert ist, werden der Wortanzahl-Datenwert und der Graphikbefehl auf die unteren 16 Datenleitungen des Multiprozessorbusses 70 gegeben. Der Wortanzahl-Datenwert ist in der Zeile MPD (SCHREIBEN) von Fig. 3 mit "W" gekennzeichnet. Der Graphikbefehl ist in dieser Zeile MPD (SCHREIBEN) in Fig. 3 durch "C" repräsentiert. Die Leitungen NPD (SCHREI- BEN) und MPD (LESEN) repräsentieren zusammen die Daten auf den Datenleitungen des Multiprozessorbusses 70.
  • Ein Graphikbefehl teilt dem Graphikuntersystem mit, was mit den Daten zu geschehen hat, die als Teil des Dreiwege-Übertragungsvorgangs übertragen werden. Ein Beispiel für einen Graphikbefehl ist der Befehl "polygonzeichnen". Die Graphikbefehle rühren von der Software des digitalen Computers her, dessen Schaltungsanordnung 10 in der Fig. 1 dargestellt ist.
  • Zu Beginn eines Taktzyklus werden Daten auf den Bus 70 gegeben. Am Ende eines Taktzyklus nimmt das Graphikuntersystem 90 eine Zwischenspeicherung der Daten vor, und demgemäß werden die Daten vom Bus 70 über die Leitungen 92 an das Graphikuntersystem 90 übertragen. Daher ist eine Einschwingzeit für die Daten vorhanden, vorausgesetzt, daß eine zeitliche Lücke zwischen dem Beginn des Taktzyklus und dem Ende desselben besteht. Zum Zeitpunkt, zu dem der Wortanzahl-Datenwert und der Graphikbefehl den Multiprozessorbus 70 erreichen, hat das Graphikuntersystem 90 bereits die Startadresse A1 zwischengespeichert.
  • Durch den Cache 40 auf dem zweiten Niveau wird eine Datenzeile von 16 Bytes, wie durch die absolute Startadresse A1 spezifiziert, auf den Multiprozessorbus 70 gegeben, und zwar nur dann, wenn der Datencache 40 die ausschließliche, modifizierte Kopie der Datenzeile von 16 Bytes enthält. Die Datenzeile von 16 Bytes, wie sie durch die absolute Startadresse spezifiziert wird, wird vom Hauptspeicher 80 auf den Multiprozessorbus 70 gegeben, wenn der Hauptspeicher 80 die aktuellste Version der Datenzeile von 16 Bytes enthält und kein anderer Cache eine ausschließliche, modifizierte Kopie der Datenzeile von 16 Bytes enthält.
  • Dann erfaßt das Graphikuntersystem 90 die Datenzeile von 16 Bytes, oder nimmt eine Zwischenspeicherung derselben vor -d.h. des Datenblocks -, wie sie vom Multiprozessorbus 70 herrührt. Demgemäß erfaßt das Graphikuntersystem 90 als Teil eines Dreiwege-Übertragungsvorgangs die Multiprozessorbus- Startadresse, die Wortanzahl, den Graphikbefehl und die Datenzeile von 16 Bytes - d.h. den Datenblock.
  • Wenn ein zweiter Schreibvorgang für eine zweite Adresse an den Datencache 40 gelangt, wird eine zweite Busübertragung als Teil des Dreiwege-Busübertragungsvorgangs nur dann gestartet, wenn zusätzliche Wörter verbleiben, die während des ersten Dreiwege-Übertragungsvorgangs nicht übertragen wurden. Dies wird dadurch ermittelt, daß das Adressenbit an der fünften Stelle (d.h. das Bit A4) der zweiten Schreibadresse mit dem Adressenbit an der fünften Stelle (d.h. dem Bit A4) verglichen wird, das aus der ersten Schreibadresse gesichert wurde. Wenn die Bits voneinander verschieden sind, wird ein zusätzlicher Multiprozessorbus-Übertragungsvorgang als Teil des Dreiwege-Übertragungsvorgangs ausgeführt, wie es in der Fig. 3 dargestellt ist.
  • Das Dreiwege-Endtriggerbit wird unabhängig davon gelöscht, ob ein anschließender Dreiwege-Übertragungsvorgang ausgeführt wird oder nicht.
  • In der Fig. 3 entsprechen Zeilen MCWREQ0, MCWREQ1, MCWREQ2 und MCWREQ3 jeweils einem jeweiligen Niveau des Schreibpuffers 30. Wenn jede dieser Leitungen niedrig angesteuert ist, zeigt dies an, daß dieses spezielle Niveau des Schreibpuffers mit Daten gefüllt ist.
  • Leitungen WACK0, WACK1, WACK2 und WACK3 sind jeweils Quittierungssignale, die jedem Niveau des Schreibpuffers 30 zugeordnet sind.
  • Die Zeile CWREQ in Fig. 3 ist einfach die logische ODER-Verknüpfung aller MCWREQ-Leitungen 0-3. Demgemäß sagt die Leitung CWREQ aus, daß mindestens ein Schreibvorgang anhängig ist. Die Zeile WBSEL in Fig. 3 teilt mit, mit welchem Niveau des rechten Puffers 30 aktuell gearbeitet wird.
  • Bei einem Ausführungsbeispiel der Erfindung werden ein zweiter, dritter; vierter, fünfter, usw. Schreibvorgang als Teil des Dreiwege-Übertragungsvorgangs ausgeführt, wenn zusätzliche Wörter zurückbleiben, die während der vorangehenden Übertragungen beim Dreiwege-Übertragungsvorgang nicht übertragen wurden. Wie es in der Fig. 3 dargestellt ist, repräsentiert T1 den Zeitraum für den ersten Schreibvorgang auf dem Bus 70 beim Dreiwege-Übertragungsvorgang. Der Zeitraum T2 repräsentiert den zweiten Schreibvorgang auf dem Bus 70. Der Zeitraum T3 repräsentiert den beendenden Schreibvorgang beim Dreiwege-Übertragungsvorgang auf dem Bus 70. Die Ausführung von mehr Schreibvorgängen für längere Blöcke eines Datenworts bedeutet, daß Zeiträume T4, T5, T6 usw. vorliegen, bis ein Datenblock mit großer Wortanzahl vollständig an das Untersystem 90 übertragen ist. Z.B. erfordert der Datenblock in der Spalte I von Fig. 2 vier Schreibvorgänge statt den in der Fig. 3 dargestellten drei Schreibvorgängen.
  • Der letzte Schreibvorgang einer Dreiwegeübertragung umfaßt immer das Senden einer Endadresse. In Fig. 3 ist zu beachten, daß zwischen dem vorletzten Schreibvorgang und dem Abschlußvorgang keine Triggeradresse gesendet wird. In der Zeile NA von Fig. 3 erscheint keine Triggeradresse zwischen dem ersten Schreibvorgang in T1 und dem zweiten Schreibvorgang in T2. Wenn z.B. vier Schreibvorgänge als Teil des Dreiwege-Übertragungsvorgangs existieren, tritt ein Schreibvorgang für eine Triggeradresse zwischen dem zweiten und dritten Schreibvorgang, jedoch nicht zwischen dem dritten und dem abschließenden Vorgang auf. Dies, da das Schreiben einer Triggeradresse als Art Rücksetzmaßnahme wirkt.
  • Nachdem der Dreiwege-Übertragungsvorgang beendet ist, können weitere Schreibvorgänge auftreten.
  • Bei einem Ausführungsbeispiel der Erfindung erfolgt eine Vorberechnung, um die Anzahl von Schreibvorgängen zu bestimmen, die während eines Dreiwege-Übertragungsvorgangs ausgeführt werden müssen, und zwar bevor der Endadresse-Schreibvorgang als Teil des Dreiwege-Übertragungsvorgangs erfolgt. Die Wortanzahl des zu übertragenden Datenblocks wird durch N geteilt, wobei N die Anzahl von Datenwörtern ist, die zwischen zwei benachbarten Cachezeilen liegen. Anders gesagt, ist N die Anzahl von Datenwörtern, die während eines Busübertragungsvorgangs übertragen werden. Dann wird vom Quotient der Wert eins subtrahiert. Wenn das Ergebnis nach dieser Subtraktion einen Bruch enthält, wird das Ergebnis auf die nächstgrößere ganze Zahl aufgerundet. Wenn z.B. das Ergebnis 1,25 ist, wird das Ergebnis auf 2 gerundet. Dies ergibt eine ganze Zahl X. Wenn mit dem vorigen Beispiel fortgefahren wird, wäre die ganze Zahl X die Zahl 2. Wenn X eine andere positive ganze Zahl als null ist, existieren X Schreibvorgänge folgend auf den ersten Schreibvorgang und vor dem Endschreibvorgang des Dreiwege-Übertragungsvorgangs. Diese Berechnung kann durch Software in Verbindung mit den PALs 150 und 160 erfolgen.
  • Bei alternativen Ausführungsbeispielen der Erfindung könnte die Anzahl von während jedes Busübertragungsvorgangs zu übertragender Datenwörter N sein, wobei N eine ganze Zahl größer als eins ist und größer als die Wortanzahl oder gleich groß wie diese. Dies bedeutet, daß N Datenwörter zwischen benachbarten Cachezeilen liegen würden.
  • Zwischen jedem der drei Schreibvorgänge, die der Dreiwegeübertragung von Fig. 3 zugeordnet sind, kann ein Ausnahmevorgang betreffend die CPU 20 und demgemäß eine zusammenhangsbezogene Umschaltung erfolgen. Demgemäß ist in der Schaltungsanordnung 10 von Fig. 1 die Fähigkeit vorhanden, den durch die ersten zwei Schreibvorgänge hervorgerufenen Zustand aufzuheben, zu sichern oder wiederherzustellen. Diese Möglichkeit ist dadurch gegeben, daß (1) das Dreiwege-Startadresse-Triggerbit (2) das Dreiwege-Endadresse-Trigger bit und (3) ein Markierungsbit gesichert wird, das das Bit an der fünften Stelle (d.h. das Bit A4) der Startadresse ist. Diese Bits können in das Register 60 in Fig. 1 eingespeichert werden. In der Schaltungsanordnung 10 der Fig. 1 ist auch die Fähigkeit vorhanden, drei Bits im Register 60 zu lesen und in es einzuschreiben. Wenn während eines Dreiwege-Übertragungsvorgangs ein Interrupt auftritt, liest das Betriebssystem des digitalen Computers zunächst den Zustand dieser drei im Register 60 abgespeicherten Bits und sichert diese. Das Betriebssystem hebt dann die aktuellen Bits im Register 60 auf. Wenn das Betriebssystem dazu zurückkehrt, das System in den Zustand zurückzusetzen, in dem es sich unmittelbar vor dem Interrupt befand, schreibt das Betriebssystem die drei Bits in das Register 60 im Zustand zurück, in dem sie sich unmittelbar vor dem Interrupt befanden. Das Betriebssystem kann dies dadurch ausführen, daß es zunächst den Status der drei Bits liest und abspeichert, bevor sie aufgehoben werden.
  • Bei alternativen Ausführungsbeispielen der Erfindung kann, anstatt daß in ein Graphikuntersystem 90 als Teil eines Dreiwege-Übertragungsvorgangs geschrieben wird, z.B. in einen seriellen Port geschrieben werden. Außerdem kann als Teil des Dreiwege-Übertragungsvorgangs statt in das Graphikuntersystem 90 in einen zweiten Speicher geschrieben werden.
  • Bei noch einem anderen alternativen Ausführungsbeispiel der Erfindung kann ein Datenblock unmittelbar vom Untersystem 90 über den Bus 70 als Teil eines Dreiwege-Übertragungsvorgangs in den Speicher 80 geschrieben werden.
  • In der vorstehenden Beschreibung wurde die Erfindung unter Bezugnahme auf spezielle beispielhafte Ausführungsformen derselben beschrieben.

Claims (9)

1. Computerrealisiertes Verfahren in einem digitalen Computer (10), der eine zentrale Verarbeitungseinheit (20, 100), eine mit der zentralen Verarbeitungseinheit (20, 100) verbundene Decodierschaltung (50, 130), einen mit der Decodierschaltung verbundenen Cachespeicher (40, 120), einen mit dem Cachespeicher (40, 120) verbundenen Bus (70), einen mit dem Bus (70) verbundenen Hauptspeicher (80) und ein mit dem Bus (70) verbundenes Graphikuntersystem (90) aufweist, das dazu dient, einen durch einen Schreibvorgang ausgelösten speziellen Übertragungsvorgang für digitale Information auszuführen, wobei die digitale Information während des speziellen Übertragungsvorgangs an das Graphikuntersystem (90) übertragen wird, wobei die digitale Information eine Startadresse und einen Datenblock enthält, wobei (i) die Startadresse die Adresse des ersten Worts im Datenblock ist und
(ii) ein Wortanzahl-Zählwert die Anzahl von Wörtern im Datenblock repräsentiert, dadurch gekennzeichnet, daß das Verfahren folgende Schritte aufweist:
(a) Auslösen des speziellen Übertragungsvorgangs durch Ausführen eines ersten Schreibvorgangs durch die zentrale Verarbeitungseinheit, um eine Triggeradresse von der zentralen Verarbeitungseinheit (20, 100) an die Decodierschaltung (50, 130) zu liefern;
(b) Decodieren der Triggeradresse durch die Decodierschaltung (50) und Verhindern, daß (i) ein zweiter Schreibvorgang durch die zentrale Verarbeitungseinheit, der sich an den ersten Schreibvorgang durch die zentrale Verarbeitungseinheit anschließt, und (ii) ein dritter Schreibvorgang durch die zentrale Verarbeitungseinheit, der sich an den zweiten Schreibvorgang durch die zentrale Verarbeitungseinheit anschließt, den Hauptspeicher (8) und den Cachespeicher (40, 120) modifizieren;
(c) Ausführen des zweiten Schreibvorgangs durch die zentrale Verarbeitungseinheit, um (i) die Startadresse und (ii) Daten, die den Wortanzahl-Datenwert und einen Graphikbefehl umfassen, von der zentralen Verarbeitungseinheit (20, 100) an den Cachespeicher (40, 120) und den Bus (70) zu liefern;
(d) Liefern der Startadresse vom Bus (70) an den Hauptspeicher (80) und das Graphikuntersystem (90);
(e) Liefern der den Wortanzahl-Datenwert und den Graphikbefehl umfassenden Daten vom Bus (70) an den Hauptspeicher (80) und das Graphikuntersystem (90);
(f) Liefern einer exklusiven, modifizierten Version einer Folge von Datenwörtern direkt vom Cachespeicher (40, 120) über den Bus (70) an das Graphikuntersystem (90), ohne die exklusive, modifizierte Version der Folge von N Datenwörter an die zentrale Verarbeitungseinheit (20, 100) zu liefern, die den speziellen Übertragungsvorgang ausgelöst hat, wenn der Cachespeicher (40, 120) die exklusive, modifizierte Version der Folge von N Datenwörtern enthält, wobei N eine ganze Zahl größer als die Wortanzahl ist, oder dieser entspricht, und wobei eines der Datenwörter der Folge von N Datenwörtern an der Startadresse liegt, wobei der Datenblock in der Folge von N Datenwörtern enthalten ist;
(g) Liefern der aktuellsten Version der Folge von N Datenwörtern direkt vom Hauptspeicher (80) über den Bus (70) an das Graphikuntersystem (90), ohne die aktuellste Version der Folge von N Datenwörtern an die zentrale Verarbeitungseinheit (20, 100) zu liefern, die den speziellen Übertragungsvorgang ausgelöst hat, wenn der Hauptspeicher (80) die aktuellste Version der Folge von N Datenwörtern enthält und wenn der Cachespeicher (40, 120) die exklusive, modifizierte Version der Folge von N Datenwörtern nicht enthält.
2. Verfahren nach Anspruch 1, ferner mit den folgenden Schritten:
(h) Ausführen des dritten Schreibvorgangs durch die zentrale Verarbeitungseinheit durch Liefern der Endadresse von der zentralen Verarbeitungseinheit (20, 100) an den Cachespeicher (40, 120) und an den Bus (70), wobei die Endadresse die Adresse des letzten Wärts im Datenblock ist; und
(i) Liefern der Endadresse vom Bus (70) an den Hauptspeicher (80) und das Graphikuntersystem (90), wobei sowohl der Hauptspeicher (80) als auch der Cachespeicher (40, 120) während des dritten Schreibvorgangs durch die zentrale Verarbeitungseinheit nicht modifiziert werden.
3. Verfahren nach Anspruch 2, bei dem der Schritt (c) ferner die folgenden Schritte umfaßt:
(1) Liefern der Startadresse von der zentralen Verarbeitungseinheit (20, 100) an die Decodierschaltung (50, 130);
(2) Sichern eines Bits der Startadresse als Markierungsbit, das einen Rang hat, der die Position des Markierungsbits innerhalb der Startadresse repräsentiert;
(3) Liefern der Startadresse von der Decodierschaltung (50, 130) an den Cachespeicher (40, 120) und den Bus (70); und
(4) Liefern der Daten, die den Wortanzahl-Datenwert und den Graphikbefehl enthalten, von der zentralen Verarbeitungseinheit (20, 100) an den Cachespeicher (40, 120) und den Bus (70).
4. Verfahren nach Anspruch 3, bei dem der Schritt (i) ferner die folgenden Schritte umfaßt:
(1) Vergleichen des Markierungsbits mit einem Bit der Endadresse, das denselben Rang wie das Markierungsbit hat, wobei der Datenblock nur dann in der ersten Folge von N Datenwörtern enthalten ist, wenn das Markierungsbit mit dem Bit der Endadresse übereinstimmt, wobei der Datenblock in der ersten Folge von N Datenwörtern und einer zweiten Folge von N Datenwörtern enthalten ist, wenn das Markierungsbit nicht mit dem Bit der Endadresse übereinstimmt, wobei dann, wenn die zwei Bits nicht übereinstimmen, folgendes ausgeführt wird:
(2) Liefern der Endadresse von der Decodierschaltung (50, 130) an den Cachespeicher (40, 120) und den Bus (70);
(3) Liefern der Endadresse vom Bus (70) an den Hauptspeicher (80) und das Graphikuntersystem (90);
(4) Liefern der Daten, die den Wortanzahl-Datenwert und den Graphikbefehl enthalten, von der zentralen Verarbeitungseinheit (20, 100) an den Cachespeicher (40, 120) und den Bus (70);
(5) Liefern der Daten, die den Wortanzahl-Datenwert und den Graphikbefehl enthalten, vom Bus (70) an das Graphikuntersystem (90);
(6) Liefern einer exklusiven, modifizierten Version der zweiten Folge von N Datenwörtern direkt vom Cachespeicher (40, 120) über den Bus (70) an das Graphikuntersystem (90), ohne die exklusive, modifizierte Version der zweiten Folge von N Datenwörtern an die zentrale Verarbeitungseinheit (20, 100) zu liefern, die den speziellen Übertragungsvorgang ausgelöst hat, wenn der Cachespeicher (40, 120) die exklusive, modifizierte Version der zweiten Folge von N Datenwörtern enthält, wobei eines der Datenwörter der zweiten Folge von N Datenwörlern an der Endadresse liegt; und
(7) Liefern der aktuellsten Version der zweiten Folge von N Datenwörtern direkt vom Hauptspeicher (80) über den Bus (70) an das Graphikuntersystem (90), ohne diese aktuellste Version der zweiten Folge von N Datenwörtern an die zentrale Verarbeitungseinheit (20, 100) zu liefern, die den speziellen Übertragungsvorgang ausgelst hat, wenn der Hauptspeicher (80) die aktuellste Version der zweiten Folge von N Datenwörtern enthält und wenn der Cachespeicher (40, 120) die exklusive, modifizierte Version der zweiten Folge von N Datenwörtern nicht enthält.
5. Verfahren nach Anspruch 4, bei dem im Schritt (b) die Triggeradresse decodiert wird, um ein Startadresse-Triggerbit zu setzen, das anzeigt, daß der zweite Schreibvorgang durch die zentrale Verarbeitungseinheit, anschließend an den ersten Schreibvorgang durch die zentrale Verarbeitungseinheit, ein Schreibvorgang in die Startadresse ist.
6. Verfahren nach Anspruch 5, bei dem der Schritt (b) den Schritt des Sicherns des Startadresse-Triggerbits umfaßt.
7. Verfahren nach Anspruch 6, ferner mit den folgenden Schritten:
(j) Decodieren der Startadresse, um (1) ein Endadresse-Triggerbit zu setzen, das anzeigt, daß der dritte Schreibvorgang durch die zentrale Verarbeitungseinheit ein Schreibvorgang in die Endadresse ist, und um (ii) das Startadresse-Triggerbit zu löschen, wobei das Endadresse-Triggerbit anzeigt, daß der dritte Schreibvorgang durch die zentrale Verarbeitungseinheit daran gehindert wird, den Hauptspeicher (80) und den Cachespeicher (40, 120) zu modifizieren; und
(k) Sichern des Endadresse-Triggerbits durch Löschen des Startadresse-Triggerbits.
8. Verfahren nach Anspruch 7, bei dem während eines Interrupts ein Betriebssystem des digitalen Computers das Startadresse-Triggerbit, das Endadresse-Triggerbit und das Markierungsbit liest, um den digitalen Computer nach dem Interrupt in den Zustand wiederherzustellen, indem er sich unmittelbar vor dem Interrupt befand.
9. Verfahren nach Anspruch 8, ferner mit dem Schritt des Teilens der Wortanzahl durch N, des Subtrahierens des Werts eins und des Rundens, wenn das Ergebnis ein Bruch ist, auf die nächstgrößere ganze Zahl, um eine ganze Zahl X zu erzeugen, und des Wiederholens der Schritte (a) bis (g) X minus eins mal, wenn X eine von null abweichende positive ganze Zahl ist, wobei vor jeder Wiederholung der Schritte (a) bis (g) folgendes ausgeführt wird:
(1) Inkrementieren der Startadresse;
(2) Löschen des Markierungsbits; und
(3) Veranlassen, daß die nächste Folge von N Datenwörtern aus einer aufeinanderfolgenden Reihe von Folgen von N Datenwörtern die erste Folge von N Datenwörtern wird, wobei die fqlgenden Reihen dadurch abgearbeitet werden, daß die Schritte (a) bis (j) wiederholt werden.
DE68926168T 1988-10-03 1989-10-02 Rechner-dreiweg-übertragungsvorgang Expired - Fee Related DE68926168T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US25320688A 1988-10-03 1988-10-03
PCT/US1989/004317 WO1990004226A1 (en) 1988-10-03 1989-10-02 Computer three-way transfer operation

Publications (2)

Publication Number Publication Date
DE68926168D1 DE68926168D1 (de) 1996-05-09
DE68926168T2 true DE68926168T2 (de) 1996-08-29

Family

ID=22959325

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68926168T Expired - Fee Related DE68926168T2 (de) 1988-10-03 1989-10-02 Rechner-dreiweg-übertragungsvorgang

Country Status (5)

Country Link
EP (1) EP0436641B1 (de)
JP (1) JP3120382B2 (de)
KR (1) KR900702448A (de)
DE (1) DE68926168T2 (de)
WO (1) WO1990004226A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970071323A (ko) * 1996-04-22 1997-11-07 포만 제프리 엘 그래픽 서브시스템
EP1199897A3 (de) 2000-10-16 2003-03-26 THOMSON multimedia Verfahren und Anlage zur Aufnahme von Stromdaten wie Digitalvideo und Nicht-Stromdaten

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1113771B (it) * 1977-07-07 1986-01-20 Sits Soc It Telecom Siemens Unita' di interfaccia atta a consentire lo scambio di dati a velocita' elevata tra la memoria centrale di un elaboratore ed una unita' periferica
US4296476A (en) * 1979-01-08 1981-10-20 Atari, Inc. Data processing system with programmable graphics generator
JPS5911135B2 (ja) * 1979-01-17 1984-03-13 株式会社日立製作所 デ−タ処理システムのデ−タ転送方式
FR2479532B1 (fr) * 1980-04-01 1986-09-19 Bull Sa Procede et dispositif pour gerer les transferts d'informations entre un ensemble memoire et les differentes unites de traitement d'un systeme de traitement numerique de l'information
US4426679A (en) * 1980-09-29 1984-01-17 Honeywell Information Systems Inc. Communication multiplexer using a random access memory for storing an acknowledge response to an input/output command from a central processor
US4729095A (en) * 1986-05-19 1988-03-01 Ncube Corporation Broadcast instruction for use in a high performance computer system

Also Published As

Publication number Publication date
EP0436641B1 (de) 1996-04-03
JP3120382B2 (ja) 2000-12-25
KR900702448A (ko) 1990-12-07
EP0436641A1 (de) 1991-07-17
WO1990004226A1 (en) 1990-04-19
EP0436641A4 (en) 1993-02-24
DE68926168D1 (de) 1996-05-09
JPH04502827A (ja) 1992-05-21

Similar Documents

Publication Publication Date Title
DE3689042T2 (de) Gerät zur Pufferung von Schreibanforderungen.
DE3750107T2 (de) Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.
DE3782335T2 (de) Speichersteuersystem.
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
EP0013737B1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE69031086T2 (de) Cache-Speicherinhaltssteuerung in Mehrprozessornetzwerken
DE69025658T2 (de) Verfahren zur Verbesserung der Leistung eines mehrstufigen Cachespeichers durch erzwungene Fehlgriffe
DE3854481T2 (de) Datenverarbeitungsverfahren in einem dezentralisierten Verarbeitungssystem.
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE68902193T2 (de) Datenspeicheranordnung.
DE19580990C2 (de) Verfahren und Einrichtung zum Ausführen verzögerter Transaktionen
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE69029173T2 (de) Mikroprozessor
DE3338345C2 (de)
DE3131341A1 (de) "pufferspeicherorganisation"
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE69030072T2 (de) Schneller Durchschreib-Cache-Speicher
DE69027919T2 (de) Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee