DE60022952T2 - Verteilter Bus für Dienstanforderungen mit Token zur Auflösung von Kollisionen - Google Patents

Verteilter Bus für Dienstanforderungen mit Token zur Auflösung von Kollisionen Download PDF

Info

Publication number
DE60022952T2
DE60022952T2 DE60022952T DE60022952T DE60022952T2 DE 60022952 T2 DE60022952 T2 DE 60022952T2 DE 60022952 T DE60022952 T DE 60022952T DE 60022952 T DE60022952 T DE 60022952T DE 60022952 T2 DE60022952 T2 DE 60022952T2
Authority
DE
Germany
Prior art keywords
node
data
flow direction
information flow
service request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60022952T
Other languages
English (en)
Other versions
DE60022952D1 (de
Inventor
Keith Balmer
Amarjit Singh Daventry Bhandal
John Keay
Iain Copple Robertson
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments 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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE60022952D1 publication Critical patent/DE60022952D1/de
Application granted granted Critical
Publication of DE60022952T2 publication Critical patent/DE60022952T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/407Bus networks with decentralised control
    • H04L12/417Bus networks with decentralised control with deterministic access, e.g. token passing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/37Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing

Description

  • TECHNISCHES GEBIET DER ERFINDUNG
  • Das technische Gebiet dieser Erfindung sind Digitalvorrichtungs-Funktionsblöcke, die sich allgemein auf den Bereich des Mikroprozessorentwurfs beziehen und die sich genauer auf den Bereich digitaler Signalprozessorvorrichtungen beziehen. Insbesondere bezieht sich diese Erfindung auf verteilte Dienstanforderungsbusse wie etwa Datenübertragungsanforderungsbusse.
  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung behandelt die Datenübertragung, die verschiedene Speicherportknoten verbindet, in Anwendung auf den Übertragungs-Controller mit Hub- und Ports-Architektur. Der Übertragungs-Controller mit Hub und Ports ist der Gegenstand der UK-Patentanmeldung lfd. Nr. 9909196.6, eingereicht am 21. April 1999, mit einer Patentanmeldung gemäß EPÜ-Übereinkommen Nr. 00303373.5, eingereicht am 20. April 2000 und veröffentlicht am 25. 10. 2000 mit der Veröffentlichungsnummer EP1046999. Der Übertragungs-Controller mit Hub und Ports ist eine erhebliche Grundverbesserung der Datenübertragungstechniken in komplizierten digitalen Systemen und schafft viele nützliche Merkmale, von denen eines der interne Speicherport ist, der die Verbindung einer praktisch unbeschränkten Anzahl von Prozessor/Speicher-Knoten mit einem zentralen Übertragungs-Controller ermöglicht. Der zentrale Übertragungs-Controller muss Daten von Knoten zu Knoten übertragen können, wobei die Leistung verhältnismäßig unabhängig davon ist, wie nah oder fern ein Knoten von dem Übertragungs-Controller selbst sein könnte. Um das durch die vorliegende Erfindung gelöste Problem zu klären, ist es hilfreich, einen Überblick über die Eigenschaften, Architektur und Funktionsbausteine des Übertragungs-Controllers mit Hub und Ports zu geben.
  • Das durch diese Erfindung behandelte Systemproblem ist das des Sendens von Diensttransaktionsanforderungen von vielen Quellen. Die vielen Quellen können auf einem einzigen Siliciumchip sein. Die Transaktionsanforderungen werden an ein gemeinsames zentrales Betriebsmittel wie etwa einen herkömmlichen Direktspeicherzugriffs-Controller gesendet. In der bevorzugten Ausführungsform ist dieser Direktspeicherzugriffs-Controller der Übertragungs-Controller mit Hub und Ports der oben genannten Patentanmeldung. Die Dienstanforderungen sind in Transaktionsanforderungspaketen enthalten, die aus Worten bestehen, von denen jedes viele Bits breit sein kann.
  • Der herkömmliche Lösungsansatz wäre es, von jedem potentiellen Anforderer dedizierte Busse zu dem Controller bereitzustellen. Diese Konstruktion hat mehrere Nachteile. Sie ist inhärent kompliziert und erfordert kostspielige Hardware, da die Transaktionsanforderungen parallel bedient werden müssen. Je mehr potentielle Anforderer es gibt, desto komplizierter muss ein solches System sein. Eine Alternative ist die nicht parallele Transaktionsverarbeitung. Diese erfordert einen zentralen Zuteiler, um bei Dienstanforderungskollisionen die Reihenfolge der Bedienung zu bestimmen. Diese Alternative muss außerdem jede nicht bediente Quelle zwingen, Anforderungen neu einzureichen, bis sie quittiert und behandelt worden sind. Der Transaktionsprozessor erfordert für jeden neuen Entwurf, der Anforderer hinzufügt oder entfernt, entweder bei der parallelen oder bei der nicht parallelen Transaktionsverarbeitung umfangreiche Abwandlungen. Dies führt zu einer schlechten Wiederverwendbarkeit von Chipmodulentwürfen und macht schlechten Gebrauch von der knappen Ressource der Entwicklungsingenieure. Außerdem haben Anforderer fern von dem zentralen Transaktionsprozessor längere Busse. Dies erfordert zusätzliche Beachtung beim Entwurf oder Hardware, um sicherzustellen, dass die Signalwege nicht langsam sind.
  • Diese Grundbeschränkungen an herkömmliche Datenübertragungstechniken führten zu der anfänglichen Entwicklung des Übertragungs-Controllers mit Hub und Ports. Der Übertragungs-Controller mit Hub und Ports ist ein einzigartiger Mechanismus, der die Funktionen einer Direktspeicherzugriffsmaschine und wei terer Datenbewegungsmaschinen in einem digitalen Signalprozessorsystem (z. B. Cache-Speicher-Controller) zu einem einzigen Modul vereinigt.
  • Die Vereinigung dieser Funktionen besitzt sowohl Vorteile als auch Nachteile. Der wichtigste Vorteil der Vereinigung ist, dass sie allgemein Hardware spart, da nicht mehrere Instanzierungen des gleichen Typs der Adressenerzeugungshardware implementiert zu werden brauchen.
  • Auf einer höheren Ebene ist es ebenfalls vorteilhaft, die Adressenerzeugung zu vereinigen, da es den Entwurf vom Standpunkt des Speicherabbilds her inhärent einfacher zu ändern macht. Falls z. B. ein Peripheriegerät zu dem System hinzugefügt oder aus ihm entfernt wird, ist ein vereinigtes Modul der einzige Abschnitt des Entwurfs, der eine Änderung erfordert. In einem verteilten Adressensystem (z. B. Mehrkanal-Direktspeicherzugriff) ändern sich alle Instanzen der Direktspeicherzugriffskanäle ebenso wie die Speicher-Controller des digitalen Signalprozessors.
  • Grundlegende Nachteile des vereinigten Modells sind dagegen seine inhärenten Engpässe, die sich aus nicht gleichzeitig zulässigen Mehrfachanforderungen ergeben, wobei sie eine Herausforderung an höhere Taktraten sind. Außerdem gibt es lediglich dadurch, dass das einzelne Modul größer als irgendeines der Einzelteile ist, die es ersetzt, im Allgemeinen eine zusätzliche Kompliziertheit, die mit dem Übergang zu einem vereinigten Adressenmodell verknüpft ist.
  • Der Übertragungs-Controller mit Hub und Ports, auf den sich diese Erfindung bezieht, ist ein stark paralleler und stark im Pipelinesystem arbeitender Speichertransaktionsprozessor. Dieser Übertragungs-Controller mit Hub und Ports dient als eine Rückwandplatine, an der viele Peripherie- und/oder Speicherports angeschlossen können.
  • Systeme, die einen zentralen Mechanismus zur Verarbeitung mehrerer Übertragungsanforderungen von mehreren Übertragungsanforderungsknoten enthalten, besitzen eine unmittelbare Herausforderung, das Problem zu lösen: Wie werden nicht gleichzeitig zulässige Übertragungen, d. h. Übertragungskollisionen, entschieden.
  • Beispielsweise verwenden einige Systeme in Netzanwendungen eine Technik der Kollisionserfassung und des willkürlichen Zurücktretens, um einen gerechten Zugang zu dem Netz zu schaffen. Irgendeine Station kann mit Senden beginnen, wenn sie keine Aktivität im Netz sieht. Allerdings ist es in dem unentschiedenen Zustand möglich, dass mehrere Stationen gleichzeitig zu senden beginnen. Die Stationen handeln den Besitz des Netzes nicht aus. Stattdessen prüfen die Stationen dadurch auf eine Konfliktbedingung, dass sie das, was sie gesendet haben, wieder empfangen und prüfen, um zu sehen, ob es beschädigt worden ist (was eine Kollision mit einer anderen Station angibt). Falls dies geschieht, erfassen alle Stationen, die die Sendung gleichzeitig begonnen hatten, die Kollision und brechen ihre Sendung ab. Diese Stationen warten dann eine willkürliche Zeitdauer, bevor sie erneut zu senden beginnen versuchen. Da jede Station eine willkürliche Verzögerung wählt, schafft es jede Station schließlich, ihre Daten zu senden. Mit der Zeit könnte dieses System einen gerechten Zugang zu allen Stationen bieten.
  • Andere Netzsysteme verwenden eine Technik des Weiterleitens eines Tokens zwischen den Stationen. Eine Station kann nur dann zu senden beginnen, wenn sie das Token hat. Wenn sie fertig ist, leitet sie das Token an die nächste Station weiter, die es entweder nehmen und Daten senden kann oder das Token erneut weiterleiten kann, falls sie nicht zum Senden bereit ist. Dieses System ist sehr gerecht, aber etwas komplizierter und kostspieliger zu implementieren.
  • Für das Management der Anzahl unabhängiger Datenübertragungen auf eine Weise, die diese Kollisionsfälle eindeutig löst, muss ein zentraler Datenübertragungs-Controller entworfen werden, der mehrere gleichzeitige Datenübertragungsanforderungen behandelt, wobei irgendein Systementwurf offensichtlich mit Kompromissen rechnen muss.
  • Eine Übersicht über einige Buszuteilerstrukturen für Netze ist dargestellt in der Abhandlung "Design and analyses of multiple-bus arbiters with different prio rity schemes" von Q. Yang u. a., veröffentlicht in Databases, Parallel Architectures and their Applications (Parbase-90), International Conference in IEEE Computer Society Proceedings, 7. März 1990, auf den Seiten 238–247; insbesondere das Protokoll mit fester Priorität (Abschnitt 2.1) und das Protokoll mit rotierender Priorität (Abschnitt 2.2). Ein zu dem Protokoll fester Priorität ähnliches Schema ist ebenfalls im Patent der Vereinigten Staaten 4.414.624 beschrieben.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Diese Erfindung schafft die Lösung zur gerechten Kollisionsentscheidung in einem Netz von Übertragungsanforderungsknoten. Das Netz besteht aus einem Übertragunganforderungsknoten pro Übertragungsanforderer, wobei sie in einem Übertragungsanforderungsbus angeordnet sind. Der Übertragungsauforderungsbus beginnt in einem in Informationsflussrichtung voraus liegenden Knoten und endet in Informationsflussrichtung dahinter in einem Empfängerknoten, der als der Anfordererbus-Master-Eingang bezeichnet wird.
  • In einem gegebenen Taktzyklus kann in jedem Knoten nur eine von zwei möglichen Übertragungsanforderungen gesendet werden. Zunächst kann der vorhergehende in Informationsflussrichtung voraus liegende Knoten eine Übertragungsanforderung an den gegenwärtigen Knoten senden, der sie in Informationsflussrichtung erneut sendet. Zweitens kann der Anforderer, der an den gegenwärtigen Knoten selbst angeschlossen ist, eine Anforderung an den in Informationsflussrichtung vorletzten Knoten senden. Die Entscheidung, was geschieht, erfolgt durch ein Tokenweiterleitungsschema.
  • Ein Tokensignal ist nur an einem Knoten an dem Übertragungsanforderungsbus aktiv. Dieses Token wird in jedem Taktzyklus um die Übertragungsanforderungsknoten des Busses in Informationsflussrichtung weitergeleitet. Somit hält zu irgendeinem gegebenen Zeitpunkt ein und nur ein Übertragungsanforderungsknoten das Token. Das Token wird von dem in Informationsflussrichtung letzten anfordernden Knoten zu dem in Informationsflussrichtung ersten anfordernden Knoten weitergeleitet, um eine Token-Schleife zu bilden.
  • Die Entscheidung von Anforderungen findet wie folgt statt. Falls der gegenwärtige Knoten nicht bereit ist, eine Übertragungsanforderung von seinem Übertragungsanforderer einzufügen, wird irgendeine in Informationsflussrichtung voraus liegende Anforderung an den gegenwärtigen Knoten gesendet. Dies geschieht unabhängig davon, ob der gegenwärtige Knoten das Token besitzt. Falls der gegenwärtige Knoten zum Einfügen einer Anforderung bereit ist, kann es außer unter bestimmten Bedingungen nicht geschehen. Falls es keine Anforderung von einem in Informationsflussrichtung voraus liegenden Knoten gibt, kann der gegenwärtige Knoten seine Anforderung unabhängig davon, ob er das Token hat, in Informationsflussrichtung senden. Falls der gegenwärtige Knoten eine Anforderung von dem in Informationsflussrichtung unmittelbar davor liegenden Knoten empfängt, hängt seine Aktion davon ab, ob er das Token hält. Falls der gegenwärtige Knoten das Token nicht hält, muss er das Anforderungssignal von dem in Informationsflussrichtung voraus liegenden Knoten erneut senden. Falls der gegenwärtige Knoten das Token hält, kann er seine eigene Anforderung senden. In diesem Fall sendet der gegenwärtige Knoten ein Anhaltesignal an den in Informationsflussrichtung zweiten Knoten, der seine Anforderung anhält. Es werden keine Anforderungen abgebrochen. Irgendwelche zuvor angehaltenen Anforderungen in Informationsflussrichtung voraus können fortgesetzt werden, sobald das Token von dem gegenwärtigen Knoten weitergeleitet wird.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Diese und weitere Aspekte dieser Erfindung sind in der Zeichnung veranschaulicht, in der:
  • 1 einen Blockschaltplan der grundlegenden Hauptmerkmale eines Übertragungs-Controllers mit Hub- und Ports-Architektur veranschaulicht;
  • 2 die Mehrprozessormaschine mit Übertragungs-Controller mit Hub- und Ports-Architektur-Funktionsblock in Bezug auf diese Erfindung veranschaulicht, wobei sie von einer höheren Ebene die wesentlichen Elemente des Übertragungs-Controllers mit Hub und Ports und seine zugeordneten Funktionseinheiten zeigt;
  • 3 den Funktionsblockschaltplan des Übertragungsanforderungs-Datenbusses dieser Erfindung veranschaulicht; und
  • 4 ein ausführlicherer Blockschaltplan des Übertragungsanforderungsknotens jedes in 3 veranschaulichten internen Speicherportknotens ist;
  • 5 in Form eines Blockschaltplans ein Beispiel eines der mehreren in 2 veranschaulichten Prozessoren veranschaulicht; und
  • 6 weitere Einzelheiten des in 5 veranschaulichten digitalen Signalprozessorkerns mit sehr langem Befehlswort veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGSFORMEN
  • 1 veranschaulicht einen Blockschaltplan der Grundmerkmale des Übertragungs-Controllers mit Hub und Ports. Der Übertragungs-Controller mit Hub und Ports ist grundsätzlich ein Datenübertragungs-Controller, der an seinem Eingangsabschnitt einen Warteschlangenmanager 100 enthält, der Daten in Form von Übertragungsanforderungspaketen empfängt, priorisiert und absendet. Dieser Warteschlangenmanager 100 ist innerhalb der Hub-Einheit 110 mit den Kanalregistern 120 verbunden. Die Kanalregister 12 empfangen die Datenübertragungsanforderungspakete und verarbeiten sie, indem sie sie zunächst priorisieren und sie daraufhin einem der N Kanäle zuweisen. Jeder Kanal repräsentiert eine Prioritätsebene. Diese Kanalregister 120 sind mit der Quellsteuerpipeline 130 und mit der Zielsteuerpipeline 140 verbunden. Diese sind Adressenberechnungseinheiten für Quelloperationen (Leseoperationen) und Zieloperationen (Schreiboperationen).
  • Die Ausgaben von diesen Pipelines werden an M Ports (wobei in 1 sechs als 150 bis 155 gezeigt sind) rundgesendet. Diese Ports 150 bis 155 werden entweder mit der Taktfrequenz des Hauptprozessors oder mit der niedrigeren Taktfrequenz einer externen Vorrichtung getaktet. Die Lesedaten von einem Port, z. B. vom Port 150, mit einer Zielschreibadresse des Ports 153 werden über die Routing-Einheit an die Hub-Zielsteuerpipeline zurückgegeben.
  • Der Übertragungs-Controller mit Hub und Ports, auf den sich diese Erfindung bezieht, führt mehrere neue Ideen ein, die die frühere Übertragungs-Controller-Technologie ersetzen. Zunächst besitzt er eine einheitliche Pipeline. In den früheren Übertragungs-Controller-Entwürfen war die Pipeline stark an den von der Vorrichtung unterstützten externen Speichertyp gekoppelt. In der bevorzugten Ausführungsform enthält der Übertragungs-Controller mit Hub und Ports mehrere externe Ports, die für den Hub alle völlig gleich aussehen. Somit können Peripheriegeräte und Speicher ungehindert ausgetauscht werden, ohne den Übertragungs-Controller mit Hub und Ports zu beeinflussen. Zweitens führt der Übertragungs-Controller mit Hub und Ports Übertragungen gleichzeitig aus. Das heißt, an den mehreren Ports der Vorrichtung können bis zu N Übertragungen parallel stattfinden, wobei N die Anzahl der Kanäle in dem Übertragungs-Controller mit Hub- und Ports-Kern ist. Jeder Kanal in dem Übertragungs-Controller mit Hub- und Ports-Kern ist funktional nur eine Menge von Registern. Diese Register verfolgen die momentane Quell- und Zieladresse, die Wortzählwerte und andere Parameter für die Übertragung. Jeder Kanal ist völlig gleich, so dass die Anzahl der durch den Übertragungs-Controller mit Hub und Ports unterstützten Kanäle stark skalierbar ist. Drittens enthält der Übertragungs-Controller mit Hub und Ports einen Mechanismus, um Übertragungen in eine Warteschlange in einem dedizierten Warteschlangen-RAM einzureihen.
  • 2 veranschaulicht von einer höheren Ebene eine Übersicht einer integrierten Mehrprozessorschaltung, die den Übertragungs-Controller mit Hub und Ports dieser Erfindung verwendet. Es gibt vier Hauptfunktionsblöcke. Der Übertragungs-Controller mit Hub und Ports 220 und die Ports einschließlich der externen Portschnittstelleneinheiten 230 bis 233 der Ports und des internen Speicherports 260 sind die ersten zwei Hauptfunktionsblöcke. Obgleich lediglich vier externe Portschnittstelleneinheiten 230, 231, 232 und 233 veranschaulicht sind, ist dies lediglich ein Beispiel, wobei mehr oder weniger verwendet werden könnten.
  • Die anderen zwei Hauptfunktionsblöcke sind der Übertragungsanforderungs-Zufuhrmechanismus 245 und der Datenübertragungsbus (DTB) 255. Diese sind eng verknüpfte Funktionseinheiten, die aber kein Teil des Übertragungs-Controllers mit Hub und Ports 220 sind. Der Übertragungsanforderungs-Zufuhrmechanismus 245 ist mit mehreren internen Speicherportknoten 270, 271 und 272 gekoppelt. Obgleich drei interne Portknoten 270, 271 und 272 veranschaulicht sind, ist dies lediglich ein Beispiel, wobei mehr oder weniger verwendet werden könnten. Vorzugsweise enthält jeder dieser internen Speicherportknoten einen unabhängig programmierbaren Datenprozessor, der ein digitaler Signalprozessor sein kann, sowie einen entsprechenden Cache-Speicher oder anderen lokalen Speicher. Die interne Konstruktion dieser internen Speicherportknoten 270, 271 und 272 ist für diese Erfindung nicht wichtig. Für diese Erfindung ist ausreichend, dass jeder der internen Speicherportknoten 270, 271 und 272 über den Übertragungsanforderungs-Zufuhrmechanismus 245 Übertragungsanforderungen einreichen kann und einen Speicher besitzt, der eine Quelle oder ein Ziel für Daten sein kann. Der Übertragungsanforderungs-Zufuhrmechanismus 245 priorisiert diese Paketübertragungsanforderungen. Übertragungen, die von den internen Speicherportknoten 270, 271 oder 272 ausgehen oder für sie bestimmt sind, sind über den Datenübertragungsbus 255 und über den internen Speicherport-Master 260 mit dem Übertragungs-Controller mit Hub und Ports 220 gekoppelt. 2 hebt die mögliche Verbindung des Datenübertragungsbusses 255 mit den mehreren internen Speicherportknoten 270, 271 und 272 und die mögliche Verbindung der mehreren Übertragungsanforderungsknoten mit dem Übertragungsanforderungs-Zufuhrmechanismus 245 hervor.
  • Bei einem Übertragungsanforderungsbus, der zulässt, dass Kollisionen ohne Zurücktreten ungehindert auftreten, würde der Übertragungsanforderungsbus jene Anforderer, die in Informationsflussrichtung weiter voraus sind, inhärent bevorzugen. Je weiter ein Anforderer in Informationsflussrichtung dahinter ist, desto höher ist das Risiko, dass er das Senden seiner Anforderungen verzögern müsste, da es weitere in Informationsflussrichtung voraus liegende Stationen und somit ein weiteres Risiko gibt, dass eine Anforderung auf dem Bus ist, wenn er eine senden möchte. Diese Ungerechtigkeit braucht kein Problem zu sein, da der Übertragungsanforderungsbus die meiste Zeit ungenutzt ist und somit eine niedrige Kollisionswahrscheinlichkeit schafft. Dies ist so, da jede Anforderung auf dem Übertragungsanforderungsbus veranlasst, dass eine sehr erhebliche Datenmenge durch den Übertragungs-Controller mit Hub und Ports 220 übertragen wird. Somit ist die Rate, mit der Übertragungsanforderungen eingereicht werden, im Durchschnitt niedrig. Obgleich die Übertragungsanforderungen selten gesendet werden, können sie andererseits bündelweise gesendet werden. Somit könnte eine inakzeptable Ungerechtigkeit auftreten. Zum Beispiel wird angenommen, dass mehrere interne Speicherknoten etwas mehr oder weniger parallel verarbeiten können, was veranlasst, dass sie gleichzeitig ähnliche Übertragungsanforderungsanforderungen stellen.
  • Diese Faktoren führten zu der Annahme eines Token-gestützten Systems. Somit könnte ein Anforderer erst dann senden, wenn er das Token hält. Ein solches Entscheidungssystem ist vollkommen gerecht. Allerdings besteht die Möglichkeit, dass ein Anforderer möglicherweise viele Zyklen darauf warten müsste, dass ihn das Token erreicht, wenn der Übertragungsanforderungsbus ungenutzt ist. Dies könnte selbst dann geschehen, wenn der Übertragungsanforderungsbus ungenutzt ist. Dies wäre ineffizient.
  • Dementsprechend wurde das Token-System des Standes der Technik in dieser Erfindung abgewandelt. Falls der Übertragungsanforderungsbus ungenutzt ist, können Anforderer ihre Anforderungen sofort senden. Die Anforderer fügen sich dem Verkehr in Informationsflussrichtung voraus, bis sie das Token haben. Dies führt zu einer niedrigen Latenzzeit, wenn der Übertragungsanforderungsbus ungenutzt ist, und zum gerechten Zugriff auf den Übertragungsanforderungsbus, wenn er belegt ist. Dieses System besitzt wie folgt weitere Eigenschaften. Jeder Knoten an dem Übertragungsanforderungsbus ist durch getaktete Flipflops begrenzt. Dies macht den Entwurf grundsätzlich auf irgendeine Anzahl von Übertragungsanforderungsknoten inhärent skalierbar. Zum Beispiel ist die Belastung an irgendeinem Übertragungsanforderungsknoten unabhängig von der Anzahl der Vorrichtungen.
  • Es ist keine besondere Aufmerksamkeit erforderlich, um die Leistungsverschlechterung in Übertragungsanforderungsknoten weiter von dem zentralen Controller entfernt zu vermeiden. Es wird angemerkt, dass von dem zentralen Controller weiter entfernte Übertragungsanforderungsknoten aufgrund dessen, dass sie gegenüber anderen Knoten in Informationsflussrichtung weiter voraus sind, einen Vorteil besitzen. Wenn das System der vorliegenden Erfindung wie in der bevorzugten Ausführungsform mit einem Übertragungs-Controller mit Hub und Ports verwendet wird, braucht der Übertragungs-Controller mit Hub und Ports nicht abgewandelt zu werden, falls die Anzahl der Übertragungsanforderer geändert wird. Mit anderen Worten, der Entwurf des Übertragungs-Controllers mit Hub und Ports kann stark modular sein. Die Modularität des Übertragungsanforderungsbusses ist eine wichtige Komponente der Modularität des Übertragungs-Controllers mit Hub und Ports.
  • 3 veranschaulicht die Verbindung der Übertragungsanforderungsknoten in einem Bus mit den durch 300 bis 309 bezeichneten Knoten. Der Knoten 300, der der nächste zu dem Master-Eingang 320 des Warteschlangenmanager-Anforderungsbusses ist, wird als der nächste Knoten oder als der in Informationsflussrichtung letzte Knoten bezeichnet. Der Knoten 309 wird als der weiteste Knoten oder als der in Informationsflussrichtung erste Knoten bezeichnet. An jedem Übertragungsanforderungsknoten ist ein Prozessor/Cache-interner-Speicher-Knoten (die Knoten 310 bis 319) angeschlossen. Diese Prozessor-Cache-interner-Speicher-Knoten 310 bis 319 sind die gleichen wie die in 2 veranschaulichten Prozessor/Cache-interner-Speicher-Knoten 270, 271 und 272. Jeder dieser Prozessor/Cache-interner-Speicher-Knoten besitzt die Fähigkeit, lokale Übertragungsanforderungen auf dem Bus anzuordnen.
  • Wenn es keine lokale Anforderung gibt, werden Übertragungsanforderungen von einem Knoten in Informationsflussrichtung an den nächsten Knoten weitergeleitet. Diese Übertragungsanforderungen erreichen schließlich den Master-Eingang 320 des Warteschlangenmanager-Anfordererbusses zur Bedienung der Übertragungsanforderung. Eine Anforderung in Informationsflussrichtung voraus be sitzt Priorität, um vorwärts weitergeleitet zu werden, bis eine lokale Anforderung aktiv wird. In diesem Fall bestimmt der Übertragungsanforderungsknoten, ob das Token vorhanden ist. Falls nicht, wird die lokale Anforderung angehalten. Das Token ist einfach ein Signal, das in dem in 3 als "Token" gekennzeichneten oberen Weg um die Übertragungsanforderungsknoten umläuft. In jedem Taktzyklus bewegt sich das Token um eine Stelle. Diese Bewegung erfolgt wie die der Übertragungsanforderungen in Informationsflussrichtung. Nachdem das Token den Übertragungsanforderungsknoten "0" 300 erreicht hat, wird es zum Übertragungsanforderungsknoten "9" 309 zurückgesetzt. Umgekehrt muss die Anforderung in Informationsflussrichtung voraus angehalten werden, um zu ermöglichen, dass die lokale Anforderung Vorrang erhält, falls das Token vorhanden und eine lokale Anforderung aktiv ist. Wie zuvor festgestellt wurde, kann unabhängig von der Anwesenheit des Tokens irgendeine lokale Anforderung an dem lokalen Übertragungsanforderungsknoten angeordnet werden, falls keine Anforderung in Informationsflussrichtung voraus vorhanden ist, die über einen gegebenen Übertragungsanforderungsknoten weiterzuleiten ist. Der mit "Anhalten" gekennzeichnete mittlere Weg übermittelt die einzelnen Halte, die Anforderungen in Informationsflussrichtung voraus zugunsten lokaler Anforderungen mit dem Token abfangen. Der in 3 mit "Anforderungen" gekennzeichnete untere Weg repräsentiert den Fluss der "Anforderungen" von Knoten in Informationsflussrichtung voraus zu Knoten in Informationsflussrichtung dahinter.
  • 4 veranschaulicht die Grundstruktur für einen Übertragungsanforderungsknoten 300. Vorzugsweise besitzt jeder Übertragungsanforderungsknoten 300 bis 309 diese Struktur. Der in 3 veranschaulichte Anforderungsweg ist in 4 in einen Anforderungsweg und einen Übertragungsanforderungspaketweg unterteilt. Vorzugsweise enthält jede Anforderung zur Bedienung in einem Paket sowohl eine Anforderung als auch Daten. In der bevorzugten Ausführungsform gibt das Paket die zu übertragenden Daten z. B. durch die Quell- und Zieladresse und durch die Datengröße an. Am lokalen Anforderungseingang 401 werden lokale Anforderungen zur Bedienung von dem entsprechenden Prozessor/Cache-internen-Speicherportknoten 310 bis 318 empfangen und am lokalen Dateneingang 400 werden lokale Übertragungsdatenpakete 407 empfangen. Am Eingang 402 für Anforderungen in Informationsflussrichtung voraus werden Anforderungen zur Bedienung von Knoten in Informationsflussrichtung voraus empfangen und am Dateneingang 404 in Informationsflussrichtung voraus werden Übertragungsdatenpakete 417 in Informationsflussrichtung voraus empfangen. Der Eingang 401 für lokale Anforderungen und der Eingang 402 für Anforderungen in Informationsflussrichtung voraus sind mit dem Übertragungsanforderungsknoten-Steuerblock 410 verbunden. Außerdem empfängt der Übertragungsanforderungsknoten-Steuerblock 410 am Token-Eingang 404 in Informationsflussrichtung voraus das Token und am Eingang 421 für Halte in Informationsflussrichtung dahinter von einem Knoten in Informationsflussrichtung dahinter ein Signal für Halte in Informationsflussrichtung dahinter. Der Übertragungsanforderungsknoten-Steuerblock 410 erzeugt am Ausgang 422 für Anforderungen in Informationsflussrichtung dahinter ein Signal für Anforderungen in Informationsflussrichtung dahinter, am Ausgang 403 für Halte in Informationsflussrichtung voraus ein Signal für Halte in Informationsflussrichtung voraus, am Ausgang 418 für lokale Halte ein Signal für lokale Halte und liefert das Token am Ausgang 419 für das Token in Informationsflussrichtung dahinter an den Knoten in Informationsflussrichtung dahinter.
  • Die Übertragungspaketdaten werden durch Übertragungsanforderungspaketregister und durch die Umlauflogik 411 behandelt. Die Übertragungsanforderungspaketregister und die Umlauflogik 411 empfangen das lokale Übertragungsdatenpatenpaket 407 und das Übertragungsdatenpaket 417 in Informationsflussrichtung voraus. Die Übertragungsanforderungspaketregister und die Umlauflogik 411 liefern am Übertragungsdatenpaketausgang 409 ein Datenpaket 408 in Informationsflussrichtung dahinter an den Knoten in Informationsflussrichtung dahinter. Außerdem enthalten die Übertragungsanforderungspaketregister und die Umlauflogik 411 einen lokalen Datenumlaufweg 414 und einen Umlaufweg 416 für Daten in Informationsflussrichtung voraus. Das lokale Datenpaket läuft während eines lokalen Halts um. Ähnlich läuft das Datenpaket in Informationsflussrichtung voraus während eines Halts in Informationsflussrichtung voraus um.
  • Der Übertragungsanforderungsknoten-Steuerblock steuert den Betrieb des Übertragungsanforderungsknotens wie in Tabelle 1 gezeigt.
  • Tabelle 1
    Figure 00140001
  • Es wird angemerkt, dass die Anwesenheit oder Abwesenheit des Tokens nicht relevant ist, es sei denn, dass der Übertragungsanforderungsknoten-Steuerblock sowohl von dem Knoten in Informationsflussrichtung voraus als auch von dem momentanen Knoten eine Übertragungsanforderung empfängt. Das Token wird nur dann zur Auflösung der Priorität verwendet, wenn sowohl eine Anforderung in Informationsflussrichtung voraus als auch eine lokale Anforderung gleichzeitig auftreten. Dementsprechend zeigt Tabelle 1 für das Token für diese Bedingungen ein "----" oder einen "Unbedeutend"-Status.
  • 5 veranschaulicht einen Blockschaltplan eines Beispiels einer bevorzugten Prozessor- und Cache-Speicher-Kombination, die die internen Speicherknoten 270, 271 und 272 aus 2 implementiert. Vorzugsweise enthält jeder interne Speicherknoten 270, 271 und 272 einen digitalen Signalprozessorkern und einen entsprechenden Befehls- und Daten-Cache-Speicher. Der Übertragungs-Controller mit Hub und Ports 220 versorgt die gesamte Datenkommunikation zwischen den internen Speicherknoten 270, 271 und 272, den externen Eingabe/Ausgabe-Vorrichtungen (E/A-Vorrichtungen) und den Peripheriegeräten an den externen Ports 230 bis 233 sowie dem internen Speicher im Port-Master 260 des internen Speichers. Vorzugsweise umfasst jeder interne Speicherknoten 270, 271 und 272 einen digitalen Signalprozessorkern 44 mit sehr langem Befehlswort (VLIW), einen Programmspeicher-Controller (PMC) 46, einen Datenspeicher-Controller (DMC) 48, einen Emulations-, Test-, Analyse- und Austestblock 50, einen lokalen Speicher und eine Datenübertragungsbus-Schnittstelle (DTB-Schnittstelle) 52. Die internen Speicherknoten 270, 271 und 272 und der Übertragungs-Controller mit Hub und Ports 220 kommunizieren über ein Paar Busse mit hohem Durchsatz. Der Übertragungsanforderungs-Zufuhrmechanismus 245 wird von den digitalen Signalprozessorkernen 44 verwendet, um Transaktionen im Übertragungs-Controller mit Hub und Ports 220 zu spezifizieren und anzufordern. Der Datenübertragungsbus (DTB) 255 wird verwendet, um Daten von Objekten in dem globalen Speicherabbild zu laden und zu speichern. Während irgendein gegebener digitaler Signalprozessorkern 44 ohne Genehmigung vom Übertragungs-Controller mit Hub und Ports 220 auf seinen eigenen internen lokalen Speicher innerhalb des Clusters zugreifen kann, erfordert irgendein Zugriff auf einen globalen Speicher außerhalb seines lokalen Speichers, gleich, ob der Zugriff auf den externen Speicher oder auf den lokalen Speicher eines anderen digitalen Signalprozessors erfolgt, eine durch den Übertragungs-Controller angewiesene Datenübertragung. Die Gesamtarchitektur ist skalierbar, was die Implementierung vieler interner Speicherknoten ermöglicht, obgleich drei momentan die bevorzugte Ausführungsform sind. Es wird angemerkt, dass Architektureinzelheiten wie etwa die Anzahl der digitalen Signalprozessorkerne und ihre Befehlssatzarchitekturen nicht we sentlich für die Erfindung sind. Diese Mikroprozessorarchitektur ist nur beispielhaft und die Erfindung auf viele Mikroprozessorarchitekturen anwendbar.
  • 6 ist ein Blockschaltplan, der den in 5 veranschaulichten digitalen Signalprozessorkern 44 ausführlicher veranschaulicht. Der digitale Signalprozessorkern 44 ist ein 32-Bit-Achtwege-VLIW-Pipelineprozessor. Der Befehlssatz besteht aus 32-Bit-Computerbefehlen mit reduziertem Befehlsvorrat (RISC) mit fester Länge, die für Digitalsignalverarbeitungsanwendungen abgestimmt sind. Fast alle Befehle führen Register-Register-Operationen aus, während alle Speicherzugriffe unter Verwendung expliziter Lade/Speicher-Befehle ausgeführt werden. Wie in 10 gezeigt ist, besteht die Befehlspipeline 58 aus einer Holstufe 60 und aus einer Decodierstufe 62. Die Holstufe 60 gewinnt gemäß der Steuerung des Programmspeicher-Controllers 46 Programmcodes aus dem Befehls-Cache-Speicher 64 in Gruppen zu acht Befehlen, die ein Holpaket genannt werden, in den Prozessorkern wieder. Die Decodierstufe 62 analysiert das Holpaket syntaktisch, bestimmt den Parallelismus und die Betriebsmittelverfügbarkeit und konstruiert ein Ausführungspaket von bis zu acht Befehlen. Daraufhin wird jeder Befehl in dem Ausführungspaket in Steuersignale übersetzt, um die richtigen Einheiten in der Ausführungspipeline 66 anzusteuern. Die Ausführungspipeline 66 besteht aus zwei symmetrischen Datenwegen, einem Datenweg A 68 und einem Datenweg B 70, einer gemeinsamen 64-Bit-Lade/Speicher-Einheitsgruppe, der D-Einheitsgruppe 72, und einer gemeinsamen Verzweigungseinheitsgruppe, der P-Einheitsgruppe 74. Jeder Datenweg enthält eine 32-Wort-Registerdatei (32-Wort-RF) 76 und vier Ausführungseinheitsgruppen, eine A-Einheitsgruppe 78, eine C-Einheitsgruppe 80, eine S-Einheitsgruppe 82 und eine M-Einheitsgruppe 84. Insgesamt gibt es in der Ausführungspipeline 66 zehn getrennte Einheitsgruppen. In jedem Zyklus können acht dieser Einheiten gleichzeitig geplant werden. Jede Funktionseinheitsgruppe enthält mehrere Funktionseinheiten, von denen einige unter den Einheitsgruppen verdoppelt sind. Insgesamt gibt es neun 32-Bit-Addierer, vier 32-Bit-Schieber, drei Boolesche Operatoren und zwei 32-Bit-mal-16-Bit-Multiplizierer. Die Multiplizierer sind jeweils in zwei 16-Bit-mal-16-Bit-Multiplizierer oder in vier 8-Bit-mal-B-Bit-Multiplizierer konfigurierbar. Der Speicher in den internen Speicherknoten 270, 271 und 272 ist vorzugsweise zwischen einem über den Programmspeicher-Controller 46 gesteuerten Befehls-Cache-Speicher 46 und einem über den Datenspeicher-Controller 48 gesteuerten Daten-Cache-Speicher und Schreib-Lese-Speicher 88 aufgeteilt. Diese Speicheraufteilungen werden vom digitalen Signalprozessorkern 44 auf herkömmliche Weise verwendet.
  • Jeder digitale Signalprozessorkern 44 kann auf mehrere Art Datenübertragungen anfordern. Der digitale Signalprozessorkern 44 kann in Reaktion auf einen expliziten Datenübertragungsbefehl eine Datenübertragungsanforderung an den Übertragungs-Controller mit Hub und Ports 220 ausgeben. Der Datenübertragungsbefehl muss die Datenquelle, das Datenziel und die Datenmenge spezifizieren. Diese Spezifikationen können durch Sofortfelder in den Befehlen oder durch in Registern oder im Speicher gespeicherte Parameter erfolgen. Vorzugsweise kann jeder digitale Signalprozessorkern 44 irgendeine Datenübertragung anfordern, die durch den Übertragungs-Controller mit Hub und Ports 220 bedient werden kann. Somit kann irgendein digitaler Signalprozessorkern 44 Daten intern oder extern übertragen und irgendeinen internen Speicherknoten laden oder lesen.
  • Vorzugsweise enthält jeder digitale Prozessorkern 44 außerdem automatische Mechanismen zum Erzeugen von Anforderungen zur Datenübertragung für den Cache-Speicher-Dienst. Somit veranlasst ein Fehler des Befehls-Cache-Speichers vorzugsweise, dass der Programmspeicher-Controller 46 eine Datenübertragungsanforderung aus einer anderen Datenquelle erzeugt, um eine Linie des Befehls-Caches 64 mit Daten einschließlich Programmbefehlen, die bei der Adresse gespeichert sind, die den Fehler des Cache-Speichers erzeugt, zu füllen. Ähnliche veranlasst ein Fehler des Daten-Cache-Speichers bei einem Lesen von Daten vorzugsweise, dass der Datenspeicher-Controller 48 eine Datenübertragungsanforderung zum Wiedergewinnen von Daten erzeugt, um eine Linie im Daten-Cache-/Schreib-Lese-Speicher 88 mit entsprechenden Daten zu füllen. Dieser Befehl und diese Daten werden in einer höheren Speicherebene gespeichert. Diese höhere Speicherebene kann ein kombinierter chipintegrierter Cache-Speicher sein, der von allen digitalen Signalprozessorkernen 44 verwendet wird, oder kann extern zu der integrierten Mehrprozessorschaltung sein. Es gibt zwei Alternativen für Fehler des Daten-Cache-Speichers beim Schreiben von Daten. In einer Durchschreib-Betriebsart veranlasst ein Schreiben von Daten durch den digitalen Prozessorkern 44, bei dem ein Fehler des Daten-Cache-/Schreib-Lese-Speichers 88 auftritt, dass der Datenspeicher-Controller 48 eine Datenübertragungsanforderung erzeugt, um die Schreibdaten an einer geeigneten Stelle in einer höheren Speicherebene zu speichern. In einer Rückschreibbetriebsart veranlasst ein Schreiben von Daten durch den digitalen Prozessorkern 44, bei dem ein Fehler des Daten-Cache-/Schreib-Lese-Speichers 88 auftritt, dass der Datenspeicher-Controller 48 eine Datenübertragungsanforderung erzeugt, um entsprechende Daten an der geeigneten Stelle von einer höheren Speicherebene zur Speicherung im Daten-Cache-/Schreib-Lese-Speicher 88 zurückzurufen. Daraufhin werden die Schreibdaten in den Daten-Cache-/Schreib-Lese-Speicher 88 geschrieben, wobei sie die entsprechenden, gerade aus der höheren Speicherebene zurückgerufenen Daten überschreiben. Auf diesen Prozess wird als eine Schreibzuweisung in dem Daten-Cache-Speicher Bezug genommen.
  • Vorzugsweise verwendet der Datenspeicher-Controller 48 eine Datenübertragungsanforderung außerdem zur Behandlung eines Zurückschreibens von Daten in einen Speicher höheren Ebene bei der Leerung eines schmutzigen Eintrags aus dem Cache-Speicher. Ein schmutziger Cache-Speicher-Eintrag enthält Daten, die geändert worden sind, seit sie aus einer höheren Speicherebene zurückgerufen wurden. Diese geänderten Daten entsprechen einem späteren Zustand des Programms als die in der höheren Speicherebene gespeicherten Daten. Wenn diese Daten ersetzt werden müssen, um Platz für neue Cache-Speicher-Daten zu machen, was als eine Cache-Leerung bezeichnet wird, müssen diese schmutzigen Daten in eine höhere Speicherebene zurückgeschrieben werden, um den richtigen Programmzustand aufrechtzuerhalten. Für dieses Zurückschreiben geleerter schmutziger Cache-Speicher-Einträge wird vorzugsweise der Übertragungs-Controller mit Hub und Ports 220 verwendet.
  • Diese Prioritätstechnik arbeitet unter einer Vielzahl von Belastungsbedingungen gerecht. Wenn die Belastung gering ist und es eine niedrige Wahrscheinlichkeit der Erzeugung einer lokalen Anforderung oder des Empfangs einer Anforderung aus der Informationsflussrichtung voraus gibt, gibt es wenige Kollisionen. Unter diesen Bedingungen werden nahezu alle lokalen Anforderungen sofort in Informationsflussrichtung übertragen. Während mäßiger Belastung gibt es eine höhere Wahrscheinlichkeit, dass die Knoten in Informationsflussrichtung voraus an den Warteschlangen-Master-Knoten weitergeleitet werden, wobei sie aber weiter entfernt als die Knoten in Informationsflussrichtung dahinter sind. Wenn es während starker Belastung eine hohe Wahrscheinlichkeit sowohl des Empfangs einer Anforderung in Informationsflussrichtung voraus als auch der Erzeugung einer lokalen Anforderung gibt, stellt das Token sicher, dass jeder Knoten einen gerechten Zugriff hat. Somit schafft die Prioritätstechnik dieser Erfindung allgemein unter allen Bedingungen einen gerechten Zugriff auf alle Knoten. Diese Technik ist durch die Auswahl der Anzahl der Knoten skalierbar. Da jeder Knoten nur mit seinen Nachbarn verbunden ist, ist die Belastung an jedem Knoten unabhängig von der Anzahl der Knoten. Je höher die Anzahl der Knoten ist, desto länger ist der durchschnittliche Weg zu dem Warteschlangenmanageranforderungs-Bus-Master und somit umso länger die durchschnittliche Latenzzeit zwischen der Übertragung einer Anforderung und ihrem Empfang. Allerdings wird diese Wirkung insbesondere unter starker Belastung häufig durch die Halte verdeckt, die erzeugt werden, wenn ein Knoten mit dem Token eine lokale Anforderung erzeugt. Außerdem hat jeder Knoten inhärent eine längere durchschnittliche Latenzzeit zwischen der Ausgabe einer lokalen Anforderung und ihrer Bedienung, wenn es mehrere Knoten gibt. Dementsprechend ist dies kein sehr nachteiliger Faktor.
  • Diese Erfindung ist in Verbindung mit der bevorzugten Ausführungsform beschrieben worden, in der die Anforderungen solche für eine Datenübertragung sind. Der Fachmann auf dem Gebiet erkennt, dass eine Anforderung dieser Art nur eine Art ist, die durch diese Erfindung bedient werden kann. Diese Erfindung kann verwendet werden, um irgendeine Datenverarbeitungsfunktion, die von meh reren Anforderern angefordert werden kann und durch eine zentrale Anwendungseinheit bedient wird, zu verbinden und zu priorisieren.

Claims (19)

  1. Verfahren zur Zeitablaufsteuerung von Dienstanforderungen von mehreren Knoten, wovon jeder eine Dienstanforderung erzeugen kann, wobei das Verfahren die folgenden Schritte umfasst: Anordnen der mehreren Knoten in einer Kette, die einen in Informationsflussrichtung ersten Knoten und einen in Informationsflussrichtung letzten Knoten besitzt, wobei der in Informationsflussrichtung letzte Knoten mit einer Anwendungsvorrichtung verbunden ist, die die Dienstanforderungen bedienen kann; sequentielles Weiterleiten eines Tokens zwischen den mehreren Knoten von dem in Informationsflussrichtung ersten Knoten zu dem in Informationsflussrichtung letzten Knoten längs der Kette, wobei das Token sich von dem in Informationsflussrichtung letzten Knoten zu dem in Informationsflussrichtung ersten Knoten in einer Schleife bewegt; Bestimmen bei jedem Knoten, ob eine Dienstanforderung von einem in Informationsflussrichtung zweiten Knoten empfangen wird; Bestimmen bei jedem Knoten, ob dieser Knoten eine Dienstanforderung erzeugt; Bestimmen bei jedem Knoten, ob dieser Knoten das Token hält; Weiterleiten einer Dienstanforderung, die bei einem der mehreren Knoten empfangen wird, von einem in Informationsflussrichtung zweiten Knoten zu einem in Informationsflussrichtung vorletzten Knoten, falls dieser Knoten keine Dienstanforderung erzeugt, wobei der in Informationsflussrichtung letzte Knoten die Dienstanforderung zu der Anwendungsvorrichtung weiterleitet; Weiterleiten einer Dienstanforderung, die bei einem der mehreren Knoten empfangen wird, von dem in Informationsflussrichtung zweiten Knoten zu dem in Informationsflussrichtung vorletzten Knoten, falls dieser Knoten eine Dienstanforderung erzeugt und dieser Knoten das Token nicht hält; Weiterleiten einer Dienstanforderung, die von einem Knoten erzeugt wird, zu dem in Informationsflussrichtung vorletzten Knoten, falls dieser Knoten eine Dienstanforderung erzeugt und keine Dienstanforderung von dem in Informationsflussrichtung zweiten Knoten empfängt; und Weiterleiten einer Dienstanforderung, die von einem Knoten erzeugt wird, zu dem in Informationsflussrichtung vorletzten Knoten, falls dieser Knoten eine Dienstanforderung erzeugt und dieser Knoten das Token hält.
  2. Verfahren nach Anspruch 1, bei dem: ein Anhaltesignal von einem Knoten zu dem in Informationsflussrichtung zweiten Knoten gesendet wird, falls dieser Knoten eine Dienstanforderung erzeugt, das Token hält und eine Dienstanforderung von dem in Informationsflussrichtung zweiten Knoten empfängt oder falls dieser Knoten ein Anhaltesignal von dem in Informationsflussrichtung vorletzten Knoten empfängt; und Anhalten des Weiterleitens einer Dienstanforderung von einem Knoten zu dem in Informationsflussrichtung vorletzten Knoten, falls dieser Knoten ein Anhaltesignal empfängt.
  3. Verfahren nach Anspruch 1, bei dem: die Dienstanforderungen Datenübertragungsanforderungen für die Übertragung von Daten sind; und die Daten unter der Steuerung der Anwendungsvorrichtung in Reaktion auf den Empfang einer Datenübertragungsanforderung übertragen werden.
  4. Verfahren nach Anspruch 3, bei dem: der Schritt des Erzeugens einer Datenübertragungsanforderung eine Angabe einer Quelladresse, eine Angabe einer Zieladresse und eine Angabe der Datenmenge erzeugt.
  5. Verfahren nach Anspruch 3, bei dem jeder der mehreren Knoten einen Datenprozessor und einen Befehls-Cache-Speicher zum temporären Speichern von den Datenprozessor steuernden Programmbefehlen umfasst, wobei das Verfahren ferner umfasst: bei jedem Knoten Erzeugen einer Datenübertragungsanforderung zum Füllen des Programm-Cache-Speichers aus einem Systemspeicher bei einem Fehler des Lesezugriffs auf den Befehls-Cache-Speicher dieses Knotens; Übertragen von Daten unter der Steuerung der Anwendungsvorrichtung von einem Systemspeicher zu dem Befehls-Cache-Speicher eines Knotens, der eine Datenübertragungsanforderung zum Füllen des Programm-Cache-Speichers erzeugt.
  6. Verfahren nach Anspruch 3, bei dem jeder der mehreren Knoten einen Datenprozessor und einen Daten-Cache-Speicher zum temporären Speichern von von dem Datenprozessor verwendeten Daten umfasst, wobei das Verfahren ferner umfasst: bei einem Knoten Erzeugen einer Datenübertragungsanforderung zum Füllen des Daten-Cache-Speichers aus einem Systemspeicher bei einem Fehler des Lesezugriffs auf den Daten-Cache-Speicher dieses Knotens; und Übertragen von Daten unter der Steuerung der Anwendungsvorrichtung von einem Systemspeicher zu dem Daten-Cache-Speicher eines Knotens, der eine Datenübertragungsanforderung zum Füllen des Daten-Cache-Speichers erzeugt.
  7. Verfahren nach Anspruch 3, bei dem jeder der mehreren Knoten einen Datenprozessor und einen Daten-Cache-Speicher zum temporären Speichern von von dem Datenprozessor verwendeten Daten umfasst, wobei das Verfahren ferner umfasst: bei einem Knoten Erzeugen einer Datenübertragungsanforderung für ein Zurückschreiben von Daten in einen Systemspeicher bei einem Fehler des Schreibens in den Daten-Cache-Speicher dieses Knotens; und Übertragen von Daten unter der Steuerung der Anwendungsvorrichtung von einem Knoten, der eine Datenübertragungsanforderung für ein Zurückschreiben von Daten erzeugt, an den Systemspeicher.
  8. Verfahren nach Anspruch 3, bei dem jeder der mehreren Knoten einen Datenprozessor und einen Daten-Cache-Speicher zum temporären Speichern von von dem Datenprozessor verwendeten Daten umfasst, wobei das Verfahren ferner umfasst: bei einem Knoten Erzeugen einer Datenübertragungsanforderung für eine Schreibdatenzuweisung von einem Systemspeicher in den Daten-Cache-Speicher bei einem Fehler des Schreibens in den Daten-Cache-Speicher dieses Knotens; und Übertragen von Daten unter der Steuerung der Anwendungsvorrichtung von einem Systemspeicher in den Daten-Cache-Speicher eines Knotens, der eine Datenübertragungsanforderung für die Schreibdatenzuweisung erzeugt.
  9. Verfahren nach Anspruch 3, bei dem jeder der mehreren Knoten einen Datenprozessor und einen Daten-Cache-Speicher zum temporären Speichern von von dem Datenprozessor verwendeten Daten umfasst, wobei das Verfahren ferner umfasst: bei einem Knoten Erzeugen einer Datenübertragung zum Zurückschreiben von Daten in den Systemspeicher bei einer Leerung schmutziger Daten aus dem Daten-Cache-Speicher dieses Knotens; und Übertragen von Daten unter der Steuerung der Anwendungsvorrichtung von einem Knoten, der eine Datenübertragungsanforderung zum Leeren schmutziger Daten erzeugt, an den Systemspeicher.
  10. Datenverarbeitungssystem, mit: einer Anwendungsvorrichtung (320), die angeforderte Datenverarbeitungsoperationen in Reaktion auf entsprechende Dienstanforderungen bedienen kann; mehreren Knoten (300304), die in einer Kette angeordnet sind, die einen in Informationsflussrichtung ersten Knoten und einen in Informationsflussrichtung letzten Knoten besitzt, wobei jeder der mehreren Knoten umfasst: eine Operationseinheit (310319), die Dienstanforderungen erzeugen kann, einen Token-Eingang (404), um ein Token von einem in Informationsflussrichtung zweiten Knoten in der Kette zu empfangen, wobei der Token-Eingang des in Informationsflussrichtung ersten Knotens das Token von dem in Informationsflussrichtung letzten Knoten empfängt, einen in Informationsflussrichtung voraus liegenden Dienstanforderungseingang (402), der eine Dienstanforderung von einem in Informationsflussrichtung zweiten Knoten in der Kette empfängt, wobei der in Informationsflussrichtung erste Knoten kein Signal an dem in Informationsflussrichtung voraus liegenden Dienstanforderungseingang empfängt, einen lokalen Dienstanforderungseingang (401), der eine Dienstanforderung von der Operationseinheit empfängt, einen Token-Ausgang (419), der das Token an den in Informationsflussrichtung vorletzten Knoten in der Kette liefert, wobei der in Informationsflussrichtung letzte Knoten das Token zu dem Token-Eingang des in Informationsflussrichtung ersten Knotens liefert, einen in Informationsflussrichtung dahinter liegenden Dienstanforderungsausgang (422), der eine Dienstanforderung an den in Informationsflussrichtung vorletzten Knoten in der Kette liefert, wobei der in Informationsflussrichtung letzte Knoten die Dienstanforderung zu der Anwendungsvorrichtung liefert, einen Steuerblock (410), der mit dem Token-Eingang, dem Token-Ausgang, dem in Informationsflussrichtung voraus liegenden Dienstanforderungseingang, dem lokalen Dienstanforderungseingang und dem in Informationsflussrichtung dahinter liegenden Dienstanforderungsausgang verbunden ist und in der Weise arbeitet, dass er das Token von dem in Informationsflussrichtung ersten Token-Eingang zu dem Token-Ausgang am Ende weiterleitet, eine Dienstanforderung, die er in Informationsflussrichtung voraus liegenden Dienstanforderungseingang empfängt, zu dem in Informationsflussrichtung dahinter liegenden Dienstanforderungsausgang weiterleitet, falls dieser Knoten keine lokale Dienstanforderung erzeugt, wobei der in Informationsflussrichtung letzte Knoten die Dienstanforderung zu der Anwendungsvorrichtung weiterleitet; eine Dienstanforderung, die er am in Informationsflussrichtung zweiten Dienstanforderungseingang empfängt, zu dem in Informationsflussrichtung dahinter liegenden Dienstanforderungsausgang weiterleitet, falls dieser Knoten eine lokale Dienstanforderung erzeugt und dieser Knoten das Token nicht hält; eine lokale Dienstanforderung zu dem in Informationsflussrichtung dahinter liegenden Dienstanforderungsausgang weiterleitet, falls dieser Knoten eine lokale Dienstanforderung erzeugt und keine Dienstanforderung von dem in Informationsflussrichtung voraus liegenden Dienstanforderungseingang empfängt; und eine lokale Dienstanforderung zu dem in Informationsflussrichtung dahinter liegenden Dienstanforderungsausgang weiterleitet, falls dieser Knoten eine lokale Dienstanforderung erzeugt und dieser Knoten das Token hält.
  11. Datenverarbeitungssystem nach Anspruch 10, bei dem jeder Knoten ferner umfasst: einen in Informationsflussrichtung dahinter liegenden Anhalteeingang (421), der ein Anhaltesignal von einem in Informationsflussrichtung vorletzten Knoten empfängt, wobei der in Informationsflussrichtung letzte Knoten keinerlei Signal an dem in Informationsflussrichtung dahinter liegenden Anhalteeingang empfängt, und einen in Informationsflussrichtung voraus liegenden Anhalteausgang (403), der ein Anhaltesignal an den in Informationsflussrichtung dahinter liegenden Anhalteeingang eines in Informationsflussrichtung zweiten Knotens liefert, wobei der in Informationsflussrichtung voraus liegende Anhalteausgang des in Informationsflussrichtung ersten Knotens nicht angeschlossen ist; und wobei der Steuerblock ferner in der Weise arbeitet, dass er ein Anhaltesignal an dem in Informationsflussrichtung voraus liegenden Anhalteausgang erzeugt, falls dieser Knoten eine lokale Dienstanforderung erzeugt, eine Dienstanforderung von dem in Informationsflussrichtung voraus liegenden Dienstanforderungseingang empfängt, falls dieser Knoten das Token hält oder falls der Knoten ein Anhaltesignal von dem in Informationsflussrichtung vorletzten Knoten empfängt, und die Lieferung einer Dienstanforderung an den in Informationsflussrichtung letzten Dienstanforderungsausgang anhält, falls dieser Knoten ein Anhaltesignal an dem in Informationsflussrichtung dahinter liegenden Anhalteeingang empfängt.
  12. Datenverarbeitungssystem nach Anspruch 10, das ferner umfasst: einen Systemspeicher (260), der mit der Anwendungsvorrichtung verbunden ist; wobei die Operationseinheit jedes Knotens Datenübertragungs-Dienstanforderungen erzeugen kann; und wobei die Anwendungsvorrichtung Daten mit dem Systemspeicher in Reaktion auf Datenübertragungs-Dienstanforderungen übertragen kann.
  13. Datenverarbeitungssystem nach Anspruch 12, bei dem: die Operationseinheit jedes Knotens die Datenübertragungs-Dienstanforderungen erzeugen kann, die ein Übertragungsdatenpaket enthalten, das eine Angabe einer Quelladresse, eine Angabe einer Zieladresse und eine Angabe einer Datenmenge enthält; wobei jeder Knoten ferner umfasst: einen Übertragungsdatenpaket-Eingang (405), der ein Übertragungsdatenpaket von einem in Informationsflussrichtung zweiten Knoten empfängt, wobei der in Informationsflussrichtung erste Knoten an dem Übertragungsdatenpaket-Eingang kein Signal empfängt, und einen Übertragungsdatenpaket-Ausgang (409), der ein Übertragungsdatenpaket an den Übertragungsdatenpaket-Ausgang eines in Informationsflussrichtung vorletzten Knotens liefert, wobei der Übertragungsdatenpaket-Ausgang des in Informationsflussrichtung letzten Knotens mit der Anwendungsvorrichtung verbunden ist; und die Anwendungsvorrichtung die Datenübertragung von einer Adresse, die der Angabe der Quelladresse entspricht, zu einer Adresse, die der Angabe der Zieladresse entspricht, und in einer Menge, die der Angabe der Datenmenge entspricht, steuert.
  14. Datenverarbeitungssystem nach Anspruch 12, bei dem: jeder der mehreren Knoten einen Datenprozessor (44) und einen Befehls-Cache-Speicher (46) zum temporären Speichern von den Datenprozessor steuernden Programmbefehlen umfasst, wobei der Datenprozessor eine Datenübertragungs-Dienstanforderung zum Füllen des Programm-Cache-Speicher aus dem Systemspeicher bei einem Fehler des Lesezugriffs auf den Befehls-Cache-Speicher erzeugt; und die Anwendungsvorrichtung Daten von dem Systemspeicher zu dem Befehls-Cache-Speicher eines Knotens, der eine Datenübertragungsanforderung zum Füllen des Programm-Cache-Speichers erzeugt, überträgt.
  15. Datenverarbeitungssystem nach Anspruch 12, bei dem: jeder der mehreren Knoten einen Datenprozessor und einen Daten-Cache-Speicher (48) zum vorübergehenden Speichern von von dem Datenprozessor verwendeten Daten umfasst, wobei der Datenprozessor eine Datenübertragungs-Dienstanforderung zum Füllen des Daten-Cache-Speichers aus dem Systemspeicher bei einem Fehler des Lesezugriffs auf den Daten-Cache-Speicher erzeugt; wobei die Anwendungsvorrichtung Daten von dem Systemspeicher zu dem Daten-Cache-Speicher eines Knotens, der eine Datenübertragungsanforderung zum Füllen des Daten-Cache-Speichers erzeugt, überträgt.
  16. Datenverarbeitungssystem nach Anspruch 12, bei dem: jeder der mehreren Knoten einen Datenprozessor und einen Daten-Cache-Speicher zum temporären Speichern von von dem Datenprozessor verwendeten Daten umfasst, wobei der Datenprozessor eine Datenübertragungs-Dienstanforderung zum Zurückschreiben von Daten in den Systemspeicher bei einem Fehler des Schreibens in den Daten-Cache-Speicher erzeugt; und die Anwendungsvorrichtung Daten von dem Daten-Cache-Speicher eines Knotens, der eine Datenübertragungs-Dienstanforderung zum Zurückschreiben von Daten in den Systemspeicher erzeugt, überträgt.
  17. Datenverarbeitungssystem nach Anspruch 12, bei dem: jeder der mehreren Knoten einen Datenprozessor und einen Daten-Cache-Speicher zum temporären Speichern von von dem Datenprozessor verwendeten Daten umfasst, wobei der Datenprozessor eine Datenübertragungs-Dienstanforderung für eine Schreibdatenzuweisung von dem Systemspeicher in den Daten-Cache-Speicher bei einem Fehler des Schreibens in den Daten-Cache-Speicher erzeugt; und die Anwendungsvorrichtung Daten von dem Systemspeicher zu dem Daten-Cache-Speicher eines Knotens, der eine Datenübertragungs-Dienstanforderung für eine Schreibdatenzuweisung erzeugt, überträgt.
  18. Datenverarbeitungssystem nach Anspruch 12, bei dem: jeder der mehreren Knoten einen Datenprozessor und einen Daten-Cache-Speicher zum temporären Speichern von von dem Datenprozessor verwendeten Daten umfasst, wobei der Datenprozessor eine Datenübertragung für ein Zurückschreiben von Daten in den Systemspeicher bei einer Leerung schmutziger Daten aus dem Daten-Cache-Speicher erzeugt; wobei die Anwendungsvorrichtung Daten von dem Daten-Cache-Speicher eines Knotens, der eine Datenübertragungs-Dienstanforderung zum Zurückschreiben von Daten in den Systemspeicher erzeugt, überträgt.
  19. Datenverarbeitungssystem nach Anspruch 12, bei dem: die Anwendungsvorrichtung und die mehreren Knoten in einer einzigen integrierten Schaltung angeordnet sind.
DE60022952T 1999-07-16 2000-07-14 Verteilter Bus für Dienstanforderungen mit Token zur Auflösung von Kollisionen Expired - Lifetime DE60022952T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9916704A GB2352143A (en) 1999-07-16 1999-07-16 Token passing scheme
GB9916704 1999-07-16

Publications (2)

Publication Number Publication Date
DE60022952D1 DE60022952D1 (de) 2006-02-16
DE60022952T2 true DE60022952T2 (de) 2006-07-13

Family

ID=10857361

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60022952T Expired - Lifetime DE60022952T2 (de) 1999-07-16 2000-07-14 Verteilter Bus für Dienstanforderungen mit Token zur Auflösung von Kollisionen

Country Status (6)

Country Link
US (1) US6651083B1 (de)
EP (1) EP1069734B1 (de)
JP (1) JP2001069161A (de)
AT (1) ATE306103T1 (de)
DE (1) DE60022952T2 (de)
GB (1) GB2352143A (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080082708A1 (en) * 2006-09-29 2008-04-03 Kar Leong Wong Token hold off for chipset communication
GB2458499A (en) * 2008-03-20 2009-09-23 Cambridge Silicon Radio Ltd Sharing access to a data store by a host processor and a signal processor in a mobile phone
JP6766609B2 (ja) * 2016-11-17 2020-10-14 株式会社Jvcケンウッド 通信システム、通信装置、制御装置
US10579428B2 (en) 2017-12-01 2020-03-03 International Business Machines Corporation Data token management in distributed arbitration systems

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3629854A (en) * 1969-07-22 1971-12-21 Burroughs Corp Modular multiprocessor system with recirculating priority
US4449183A (en) * 1979-07-09 1984-05-15 Digital Equipment Corporation Arbitration scheme for a multiported shared functional device for use in multiprocessing systems
US4414624A (en) * 1980-11-19 1983-11-08 The United States Of America As Represented By The Secretary Of The Navy Multiple-microcomputer processing
US4566097A (en) * 1983-12-23 1986-01-21 International Business Machines Corp. Token ring with secondary transmit opportunities
US4926419A (en) * 1985-03-15 1990-05-15 Wang Laboratories, Inc. Priority apparatus
US5088024A (en) * 1989-01-31 1992-02-11 Wisconsin Alumni Research Foundation Round-robin protocol method for arbitrating access to a shared bus arbitration providing preference to lower priority units after bus access by a higher priority unit
US5560030A (en) * 1994-03-08 1996-09-24 Texas Instruments Incorporated Transfer processor with transparency
US5551048A (en) * 1994-06-03 1996-08-27 Digital Equipment Corporation Ring based distributed communication bus for a multiprocessor network
GB9909196D0 (en) * 1999-04-21 1999-06-16 Texas Instruments Ltd Transfer controller with hub and ports architecture

Also Published As

Publication number Publication date
DE60022952D1 (de) 2006-02-16
US6651083B1 (en) 2003-11-18
JP2001069161A (ja) 2001-03-16
GB2352143A (en) 2001-01-17
EP1069734B1 (de) 2005-10-05
ATE306103T1 (de) 2005-10-15
EP1069734A3 (de) 2003-08-13
EP1069734A2 (de) 2001-01-17
GB9916704D0 (en) 1999-09-15

Similar Documents

Publication Publication Date Title
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
DE102005009174B4 (de) Bussystem, zugehöriges Busbelegungszuteilverfahren und Datenübertragungsverfahren
DE69838387T2 (de) Verfahren und vorrichtung in einem paketenleitweglenkungsschalter um den zugriff zu einem gemeinsamen speicher auf verschiedenen datenraten zu steuern
DE3642324C2 (de) Multiprozessoranlage mit Prozessor-Zugriffssteuerung
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE2856483C2 (de)
EP0179936B1 (de) Verfahren und Einrichtung zur Steuerung einer Sammelleitung
DE69936225T2 (de) Gleichzeitige serielle verbindung zur integrierung von funktionellen blöcken in eine integrierte schaltungsvorrichtung
DE10045915A1 (de) Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem
DE69736872T2 (de) Datenverarbeitungssystem
DE3508291A1 (de) Realzeit-datenverarbeitungssystem
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE2847216A1 (de) Datenverarbeitungssystem mit mehrprogrammbetrieb
DE112005003243T5 (de) System und Verfahren für die Cache-Kohärenz bei einem Cache mit unterschiedlichen Längen für die Cache-Orte
DE60034998T2 (de) Verbesserungen in oder bezüglich von Mikroprozessoren
DE10296959T5 (de) System und Verfahren zum Steuern der Buszuteilung während Cache-Speicher-Burstzyklen
DE102006055512A1 (de) Mehrprozessor-Gateway
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE102004062442A1 (de) AMBA-System und Betriebsverfahren
DE10045916A1 (de) Methode und System zum Implementieren eines Remstat-Protokolls und Einbeziehung und Nicht-Einbeziehung von L1-Daten im L2-Cache zur Verhinderung einer gegenseitigen Lesesperre
DE19882975B4 (de) Zugreifen auf eine Nachrichtenaustauscheinheit von einem sekundären Bus aus
DE60029118T2 (de) Asynchrone zentralisierte multikanal-dma-steuerung
DE112012005572B4 (de) Ausgleichen der Bandbreite von Anforderern, die ein gemeinsam genutztes Speichersystem verwenden
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher
DE3142504A1 (de) Mehrfachplattenspeicher-uebertragungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition