-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die Erfindung betrifft allgemein DMA-Mechanismen (DMA: Direct Memory Access) und DMA-Steuergeräte (DMA-Controller, DMA-Controllerbauelemente) und -verfahren und insbesondere DMA-Mechanismen, die einen direkten Speicherzugriff über einen Hochgeschwindigkeitspaketbus gestatten, wie etwa in HyperTransport®-basierten USB-2-Hostcontrollern (USB: Universal Serial Bus).
-
2. Beschreibung des Standes der Technik
-
In gegenwärtigen Computersystemen besteht ein Weg, um die zentrale Mikroprozessoreinheit bezüglich der Durchführung wiederholter Eingabe/Ausgabefunktionen zu entlasten, darin, Interrupts zu vermeiden und diese Funktionen mittels eines DMA-Controllers zu realisieren, der eine Steuereinheit ist, die einen direkten Speicherzugriff ermöglicht. Bevor der tatsächliche Eingabe/Ausgabeprozess stattfindet, initialisiert der Prozessor den DMA-Controller durch das Schreiben von Initialisierungsdaten in seine Register, woraufhin der DMA-Controller Datentransfers zwischen Speicher und Schnittstelle unabhängig durchführen kann. Das bedeutet, dass der Controller während der Phase, in der die Steuer- und Adressregister initialisiert werden, als Slave arbeitet. Sobald jedoch der Controller eine Transferanforderung empfängt und eine Datenübertragung beginnt, führt der Controller Buszyklen unabhängig durch, d. h. er arbeitet als Master und teilt sich den Bus mit dem Prozessor zum Zugriff auf den Speicher.
-
1 zeigt ein konventionelles System, das einen DMA-Controller anwendet. In diesem System ist der Prozessor 100 mit dem Speicher 105, dem DMA-Controller 110 und einer Gerätesteuereinrichtung 120 verbunden, die das periphere Gerät 125 steuert. Abhängig von dem Betriebsmodus des DMA-Controllers 110 kann der Datentransfer zwischen Speicher 105 und Gerätesteuereinrichtung 120 direkt oder indirekt, d. h. mittels eines Puffers 115, durchgeführt werden. In dem direkten Transfermodus benötigt der DMA-Controller 110 nur einen Buszyklus pro Datenelement, indem er den Speicher 105 über den Adressbus und zur selben Zeit die Schnittstellendatenregister über eine Steuerleitung adressiert (Einzeladressmodus). In dem indirekten Transfermodus führt der DMA-Controller 110 zunächst einen Lesezyklus durch und speichert die gelesenen Daten in dem Puffer 115. In einem nachfolgenden Schreibzyklus transferiert der DMA-Controller 110 dann die gepufferten Daten zu der jeweiligen Zieleinheit. Sowohl der Speicher als auch die Schnittstelle werden über den Adressbus adressiert (Dualadressmodus).
-
Während in einem Computersystem viele verschiedene Implementierungen eines DMA-Controllers möglich sind, besteht ein Beispiel in einem USB-Controller, der über einen DMA-Modus verfügt, wie dies in der
US 6,266,715 B1 beschrieben ist. Ein anderes Beispiel besteht in einem DMA-Controller, der einen Teil eines USB-2.0-gemäßen Hostcontrollers bildet.
-
USB wurde ursprünglich im Jahre 1995 entwickelt, um einen externen Erweiterungsbus zu definieren, der die Verbindung zusätzlicher Peripheriegeräte an ein Computersystem erleichtert. Die USB-Technik wird durch PC-Hostcontrollerhardware und -software (PC: Personal Computer) und durch peripheriefreundliche Master-Slave-Protokolle implementiert und ermöglicht robuste Verbindungen und Kabelanordnungen. In USB-Systemen besteht die Rolle der Systemsoftware darin, eine vereinheitlichte Sicht auf die Eingabe/Ausgabe-Architektur für alle Anwendungssoftware dadurch bereitzustellen, dass Hardwareimplementierungsdetails versteckt werden. Insbesondere verwaltet sie die dynamische Hinzufügung und Abtrennung von Peripheriegeräten und kommuniziert mit den Peripheriegeräten, um deren Identität in Erfahrung zu bringen. Während der Laufzeit veranlasst der Host Transaktionen, um Peripheriegeräte zu spezifizieren, und jedes periphere Gerät nimmt seine Transaktionen entgegen und antwortet dementsprechend.
-
Während diese Funktionen und Protokolle bereits in der USB-1.1-Spezifikation implementiert waren, wurde diese Technik noch verbessert, um eine Schnittstelle mit besseren Leistungseigenschaften bereitzustellen. In USB-2.0-gemäßen Systemen kann die Geschwindigkeitsverbesserung bis zu einem Faktor von 40 betragen. Darüber hinaus ist USB 2.0 rückwärts kompatibel zu USB 1.1.
-
In USB-2.0-gemäßen Hosts, z. B. Personalcomputern, wird die Hochgeschwindigkeits-USB-2.0-Funktionalität durch einen erweiterten Hostcontroller durchgeführt, der in Übereinstimmung mit der EHCI-Spezifikation (EHCI: Enhanced Host Controller Interface) für USB 2.0 arbeitet. Während diese Spezifikation die Schnittstelle auf Registerebene und die zugehörigen speicherresidenten Datenstrukturen definiert, enthält sie weder eine Definition noch eine Beschreibung der Hardwarearchitektur, die zum Aufbauen eines dementsprechenden Hostcontrollers erforderlich ist.
-
Um dem Bedürfnis nach Hochgeschwindigkeits-Chip-zu-Chip-Kommunikation in Computersystemen nachzukommen, beispielsweise in Verbindung mit EHCI-gemäßen USB-Hostcontrollern, wurde die HyperTransport-Technologie entwickelt, die eine sehr schnelle hochperformante Punkt-zu-Punkt-Verbindung auf der Platine (”on-board”) zum Verbinden integrierter Schaltkreise untereinander auf einem Motherboard bereitstellt. Sie kann für eine äquivalente Anzahl von Pins signifikant schneller sein als andere Bustechnologien. Die HyperTransport-Technologie ist entworfen worden, um signifikant mehr Bandbreite als andere Technologien bereitzustellen, Antworten mit geringerer Latency zu verwenden, eine geringe Pinzahl bereitzustellen, kompatibel zu Legacy-Computerbussen zu sein, auf neue Systemarchitekturbusse erweiterbar zu sein, für Betriebssysteme transparent zu sein und geringe Auswirkungen auf Peripherietreiber zu haben.
-
Während die HyperTransport-Schnittstelle somit eine Hochgeschwindigkeits-Chip-zu-Chip-Schnittstelle bereitstellt, kann die Datenverarbeitung, die innerhalb der Chips durchgeführt wird, oft selbst zum Flaschenhals werden. Insbesondere können die gegenwärtigen DMA-Mechanismen die Gesamtperformance verringern, da sie verhindern, dass die vollen Leistungseigenschaften, die durch On-Board-Interchipschnittstellen wie etwa der HyperTransport-Schnittstelle bereitgestellt werden, hinunter zu den Peripheriegeräten gebracht werden.
-
Aus der
EP 0 997 822 A2 ist ein DMA-Steuerverfahren und eine zugehörige Vorrichtung bekannt, die die Transfergröße automatisch ändern können.
-
Die
US 6,003,122 beschreibt einen DMA-Controller mit einer MWI-Logikschaltung (MWI: Memory Write and Invalidate).
-
ÜBERSICHT ÜBER DIE ERFINDUNG
-
Der Erfindung liegt die Aufgabe zugrunde, einen DMA-Mechanismus bereitzustellen, der die Leistungseigenschaften bei der Durchführung eines Speicherzugriffs über einen Hochgeschwindigkeitspaketbus verbessern kann.
-
Diese Aufgabe wird durch die Gegenstände der unabhängigen Patentansprüche gelöst.
-
Bevorzugte Ausgestaltungen sind in den Unteransprüchen angegeben.
-
In einer Ausgestaltung wird ein DMA-Controllerbauelement bereitgestellt, das eine DMA-Sendeeinrichtung (”transmit DMA engine”) zum Ausgeben von Leseanforderungen (”read requests”) an eine Speicherschnittstelle und Empfangen der angeforderten Daten von der Speicherschnittstelle aufweist. Die DMA-Sendeeinrichtung umfasst eine Datentransferinitiierungseinrichtung zum Veranlassen eines Datentransfers durch Bestimmen, welche Daten aus dem Speicher geholt werden sollen, und Ausgeben erster Adressdaten, die einen ersten Speicherbereich identifizieren. Der erste Speicherbereich enthält die bestimmten, zu holenden Daten. Die DMA-Sendeeinrichtung umfasst weiterhin eine Randausrichteinrichtung zum Empfangen der ersten Adressdaten, Erzeugen zweiter Adressdaten daraus und Ausgeben der zweiten Adressdaten. Die zweiten Adressdaten identifizieren wenigstens einen zweiten Speicherbereich, der an wenigstens einem Rand (einer Grenze) von dem ersten Speicherbereich verschieden ist. Weiterhin umfasst die DMA-Sendeeinrichtung eine Leseanforderungsaufbaueinrichtung zum Empfangen der zweiten Adressdaten und Erzeugen wenigstens einer Leseanforderung auf dieser Grundlage.
-
In einer anderen Ausgestaltung kann ein DMA-Controllerbauelement bereitgestellt werden, das eine DMA-Empfangseinrichtung (”receive DMA engine”) zum Schreiben von Daten auf eine Speicherschnittstelle aufweist. Die DMA-Empfangseinrichtung umfasst eine Schreibbefehlaufbaueinrichtung zum Bestimmen, welche Daten in den Speicher geschrieben werden sollen, Bestimmen erster Adressdaten, die einen ersten Speicherbereich identifizieren, wobei der erste Speicherbereich der Speicherbereich ist, in den die bestimmten Daten geschrieben werden sollen, und Aufbauen wenigstens eines Schreibbefehls zum Schreiben der bestimmten Daten. Die Schreibbefehlaufbaueinrichtung enthält eine Randausrichteinrichtung zum Erzeugen zweiter Adressdaten auf der Grundlage der ersten Adressdaten. Die zweiten Adressdaten identifizieren wenigstens einen zweiten Speicherbereich, der von dem ersten Speicherbereich an wenigstens einem Rand verschieden ist. Die Schreibbefehlaufbaueinrichtung ist eingerichtet zum Aufbauen des wenigstens einen Schreibbefehls, um die bestimmten Daten in den wenigstens einen zweiten Speicherbereich zu schreiben.
-
In einer weiteren Ausgestaltung wird ein USB-Hostcontroller bereitgestellt zum Abwickeln des Datenverkehrs zwischen wenigstens einem USB-Gerät und einem Systemspeicher eines Computersystems. Der USB-Hostcontroller umfasst eine DMA-Sendeeinrichtung und/oder eine DMA-Empfangseinrichtung. Die DMA-Sendeeinrichtung ist eingerichtet zum Ausgeben von Leseanforderungen an eine Speicherschnittstelle und Empfangen von angeforderten Daten von der Speicherschnittstelle. Die DMA-Empfangseinrichtung ist eingerichtet zum Schreiben von Daten auf die Speicherschnittstelle. Die DMA-Sendeeinrichtung und/oder DMA-Empfangseinrichtung umfassen eine Adressdatenerzeugungseinrichtung zum Erzeugen und Ausgeben erster Adressdaten, die einen ersten Speicherbereich identifizieren. Der erste Speicherbereich enthält die bestimmten, zu holenden Daten oder ist der Speicherbereich, in den die bestimmten Daten geschrieben werden sollen. Die DMA-Sendeeinrichtung und/oder DMA-Empfangseinrichtung umfasst weiterhin eine Randausrichteinrichtung zum Empfangen der ersten Adressdaten und Erzeugen zweiter Adressdaten daraus. Die zweiten Adressdaten identifizieren wenigstens einen zweiten Speicherbereich, der von dem ersten Speicherbereich an wenigstens einem Rand verschieden ist.
-
Gemäß einer wiederum anderen Ausgestaltung umfasst ein Verfahren zum Betreiben einer DMA-Einrichtung zum Abwickeln des Datenverkehrs zwischen wenigstens einem Peripheriegerät und einem Systemspeicher eines Computersystems das Bestimmen erster Adressdaten, die einen ersten Speicherbereich identifizieren, das Bestimmen, ob der erste Speicherbereich ausgerichtete Ränder aufweist, und das Erzeugen zweiter Adressdaten aus den ersten Adressdaten, wenn der erste Speicherbereich nicht ausgerichtete Ränder aufweist. Die zweiten Adressdaten identifizieren wenigstens einen zweiten Speicherbereich, der von dem ersten Speicherbereich an wenigstens einem Rand verschieden ist.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die beigefügten Zeichnungen sind in die Beschreibung eingefügt und bilden einen Teil derselben zum Zwecke der Erläuterung der Prinzipien der Erfindung. Die Zeichnungen sind nicht als die Erfindung auf nur die verdeutlichten und beschriebenen Beispiele beschränkend zu verstehen, wie die Erfindung gemacht und verwendet werden kann. Weitere Merkmale und Vorteile werden aus der folgenden und genaueren Beschreibung der Erfindung ersichtlich werden, wie in den beigefügten Zeichnungen verdeutlicht, in denen:
-
1 ein konventionelles Computersystem verdeutlicht, das einen DMA-Controller enthält;
-
2 die Hardwarekomponenten eines DMA-Controllers gemäß einer ersten Ausgestaltung verdeutlicht;
-
3 einen Teil des Adressraums zeigt zur Verdeutlichung von Speicherbereichsrändern;
-
4 ein Flussdiagramm ist, das den Leseprozess verdeutlicht, der von dem DMA-Controller von 2 durchgeführt werden kann;
-
5 ein Flussdiagramm ist, das eine Ausgestaltung verdeutlicht, wie Leseanforderungen in dem Prozess von 4 durchgeführt werden;
-
6 ein Flussdiagramm ist, das den ersten Teil eines Leseanforderungsprozesses gemäß einer anderen Ausgestaltung verdeutlicht;
-
7 ein Flussdiagramm ist, das den zweiten Teil des Leseanforderungsprozesses von 6 verdeutlicht;
-
8 ein Flussdiagramm ist, das eine andere Ausgestaltung der Durchführung einer Leseanforderung in dem Prozess von 4 verdeutlicht;
-
9 ein Flussdiagramm ist, das einen Schreibprozess verdeutlicht, der von dem DMA-Controller von 2 durchgeführt werden kann;
-
10 die Hauptkomponenten des USB-2.0-gemäßen Hostcontrollers verdeutlicht, der einen DMA-Controller gemäß einer anderen Ausgestaltung enthält;
-
11 ein Blockdiagramm ist, das die Komponenten des erweiterten Hostcontrollers verdeutlicht, der eine Komponente der Anordnung von 10 ist;
-
12 die Komponenten der DMA-Sendeeinrichtung des erweiterten Hostcontrollers von 11 verdeutlicht;
-
13 die Komponenten der DMA-Empfangseinrichtung des erweiterten Hostcontrollers von 11 verdeutlicht;
-
14 ein Zeitdiagramm ist, das das Schnittstellentiming zwischen der Paketbearbeitungseinrichtung und der DMA-Sendeeinrichtung von 12 verdeutlicht; und
-
15 ein Zeitdiagramm ist, das das Schnittstellentiming zwischen der Paketbearbeitungseinrichtung und der DMA-Empfangseinrichtung von 13 verdeutlicht.
-
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
-
Die verdeutlichenden Ausgestaltungen der vorliegenden Erfindung werden unter Bezugnahme auf die Zeichnungen beschrieben werden, in denen gleiche Elemente und Strukturen durch gleiche Bezugszeichen angegeben werden.
-
Wird nun auf die Zeichnungen und insbesondere auf 2 Bezug genommen, die eine erste Ausgestaltung eines DMA-Controllers verdeutlicht, so kann diese Architektur als zwischen einer HyperTransport-kompatiblen Speicherschnittstelle 200, die Daten in einem Cache 205 speichert, und einem USB-2-EHCI-Hostcontroller sitzend gedacht werden. Es ist anzumerken, dass in anderen Ausgestaltungen andere Hochgeschwindigkeitsspeicherschnittstellen verwendet werden können, ebenso wie andere Hostcontroller.
-
Daten werden von dem DMA-Controller in den Speicher und aus dem Speicher in Erwiderung auf Befehle von dem Hostcontroller bewegt und durch Niveaus in den zugehörigen Sende- und Empfangspuffern schrittgesteuert. Es ist anzumerken, dass die Begriffe ”Senden” und ”Empfangen” hier verwendet werden, um Richtungen bezüglich des verbundenen Peripheriegeräts bzw. der verbundenen Peripheriegeräte zu bezeichnen. In der Senderichtung, in der der Controller aus dem Speicher liest, erzeugt der Hostcontroller eine Queue von Anforderungen. Der DMA-Controller schaut in seine Queue und identifiziert den nächsten auszuführenden Befehl. Der Befehl kann eine Basisadresse von 32 Bits und eine Länge von 11 Bits enthalten. Der Betrieb des Controllers wird unten in weiteren Einzelheiten diskutiert werden.
-
In der vorliegenden Ausgestaltung, in der die HyperTransport-Technologie verwendet wird, ist der in 2 gezeigte Controller eingerichtet, um bestimmte Regeln zu befolgen. Beispielsweise darf sich keine Transaktion über einen Cachezeilenrand erstrecken, d. h. es wird eine natürliche 64-Byte-Ausrichtung durchgeführt, um mit der maximalen 64-Byte-Paketgröße bestens umzugehen. Darüber hinaus sind so viele Transaktionen wie möglich 64 Bytes lang. Das bedeutet, dass der Controller zunächst für eine Teilcachezeile, die auszurichten ist, Daten sendet (oder gelesene Daten anfordert), dann Pakete von Cachezeilengröße sendet (oder anfordert) und mit jedem verbleibenden Paket einer teilweisen Cachezeile (oder ihrer jeweiligen Leseanforderung) endet. Weiterhin kann der Controller eingerichtet sein zum Durchsetzen von HyperTransport-Ordnungsregeln und Behandeln von Antworten, die außer der Reihe zurückkommen. In der vorliegenden Ausgestaltung ist das minimale Datenpaket ein Doppelwort (dword). Transfers von nicht doppelwortausgerichteten Daten können einen maskierten Doppelwortbefehl verwenden. Somit kann zusätzlich zu der Cachezeilenausrichtung eine Doppelwortausrichtung erlangt werden. Dies wird auch unten in weiteren Einzelheiten diskutiert.
-
Wird nun zu 2 übergegangen, so umfasst ein DMA-Controller eine DMA-Sendeeinrichtung 225 und eine DMA-Empfangseinrichtung 210. Beide DMA-Einrichtungen sind mit der Speicherschnittstelle 200 zum Austauschen von Daten und, im Falle der DMA-Sendeeinrichtung, von Anforderungen verbunden. Die DMA-Einrichtungen sind weiterhin mit den jeweiligen Geräteschnittstellen 265, 270 verbunden.
-
Die Rolle der DMA-Sendeeinrichtung 225 besteht darin, Daten vom Speicher über die Speicherschnittstelle 200 zu holen und in einen Sendepuffer 260 zur Verwendung durch die Paketaufbaueinrichtung zu plazieren. Der Sendepuffer 260 kann ein FIFO-Puffer (FIFO: First In First Out) sein und wird daher im folgenden auch FIFO-Sendepuffer oder Sende-FIFO genannt.
-
Wie aus 2 ersehen werden kann, enthält die DMA-Sendeeinrichtung 225 eine Aktivitätsinitiierungseinrichtung (Datentransferinitiierungseinrichtung, Adressdatenerzeugungseinrichtung) 250. Wenn der Controller eingeschaltet wird, wird die Aktivitätsinitiierungseinrichtung 250 die aus dem Speicher bzw. in den Speicher zu bewegenden Daten bestimmen und sie an die Randausrichteinrichtung 245 leiten, um die Verarbeitung zu beginnen. Die Aktivitätsinitiierungseinrichtung 250 wählt die erste Transaktion, die sie antrifft, aus und leitet sie an die Randausrichteinrichtung 245 weiter, um die Verarbeitung zu beginnen. Die Randausrichteinrichtung 245 erzeugt Aktivität für die Leseanforderungsaufbaueinrichtung 230. Die Leseanforderungsaufbaueinrichtung 230 wird durch die Verfügbarkeit von Raum in dem FIFO-Sendepuffer 260 schrittgesteuert. Im Falle weiterer Transaktionen nach außen werden zugehörige Parameter an die Randausrichteinrichtung 245 und die Leseanforderungsaufbaueinrichtung 230 geleitet. Wenn die Transaktionsqueue leer ist oder der Sender in einen Zustand gebracht wurde, in dem er nicht arbeitet, erzeugt die Aktivitätsinitiierungseinrichtung 250 ein Disablesignal für den Rest der DMA-Sendeeinrichtung 225. Um es der Aktivitätsinitiierungseinrichtung 250 zu ermöglichen zu bestimmen, ob die Transaktionsqueue leer ist oder der Transmitter nicht arbeitet, kann sie ein Senderfreigabesignal (”enable”) und ein Transaktionsqueueelementsignal empfangen.
-
Die Randausrichteinrichtung 245 der vorliegenden Ausgestaltung ist eine 64-Byte-Ausrichteinrichtung, die eine Basisadresse (ADDR[31:0]) und Größe (SIZE[10:0]) als Eingaben annimmt und Adressen- und Längenausgaben für einzelne Anforderungen erzeugt. Die eingegebene Größe dient zur Bestimmung, wie viele Bytes benötigt werden. Die Anforderungen werden dann an Doppelwort- und Cachezeilenadressrändern zerlegt. Weiterhin können sie an Doppelwortlängengrenzen zerlegt werden, wenn teilweise Doppelwörter separat angefordert werden. Ist die Größe kleiner als drei und die Adresse nicht ausgerichtet, so könnte dies zu mehreren Transaktionen von nur einem oder zwei Bytes führen. Der Prozess, wie der Fall zu behandeln ist, in dem der Benutzer der Daten keine Möglichkeit des Verwerfens nicht gewünschter Teile eines Doppelworts hat, wird unten unter Bezug auf 6 und 7 in weiteren Einzelheiten diskutiert werden.
-
Die Leseanforderungsaufbaueinrichtung 230 dient zur Kommunikation von Leseanforderungen an die Speicherschnittstelle 200. Die Randausrichteinrichtung 245 erzeugt Arbeit für die Leseanforderungsaufbaueinrichtung 230. Dies sind entweder Lesevorgänge mit Größen von einer Ganzzahl von Doppelwörtern (”sized reads”) oder maskierte Lesevorgänge von weniger als einem Doppelwort (”masked reads”). Die Anforderungen werden an die Speicherschnittstelle 200 gesendet. In der vorliegenden Ausgestaltung sind Eingaben von der Randausrichteinrichtung 245 Doppelwörter oder Unterdoppelwörter, Basisadressen, Maskierungswerte und Doppelwertanzahlen.
-
Die Leseanforderungsaufbaueinrichtung 230 liefert die Quellentags in aufsteigender Reihenfolge (wrapping). Die Leseanforderungsaufbaueinrichtung 230 ist mit einem RAM (Random Access Memory) 235 verbunden, der ein Transaktionsflag speichert und weiterhin den Pufferbasispointer zum Speichern der zurückgegebenen Daten bereitstellt. Das Speichern des Transaktionsflags ist erforderlich, damit der Rand zwischen Paketen in dem Sende-FIFO 260 dargestellt werden kann. Die Quellentags dienen als Index in den RAM 235. Das zugehörige Startflagbit wird gesetzt, wenn die erste Anforderung einer Transaktion an die Speicherschnittstelle 200 gesendet wurde. Immer wenn eine Anforderung empfangen wird, wird ihr Quellentag verwendet, um den RAM 235 zu indizieren. Wenn das zugehörige Bit gesetzt ist, wird das erste Datenbyte als Start eines neuen Datenpakets markiert. Das Bit wird dann gelöscht. Es könnten jederzeit jede Anzahl von RAM-Bits gesetzt werden, entsprechend der einzelnen noch ausstehenden Transaktionen.
-
In der vorliegenden Ausgestaltung werden Leseanforderungen nur dann an die Speicherschnittstelle 200 gesendet, wenn es in dem Sende-FIFO 260 Platz gibt. Anforderungen werden von der Speicherschnittstelle 200 nicht akzeptiert, wenn sie keinen Pufferplatz für die Antwort hat. Die Leseanforderungsaufbaueinrichtung 230 kann versuchen, Anforderungen so schnell zu senden, wie die Speicherschnittstelle 200 sie annehmen wird, und die Grenze für die Anzahl ausstehender Transaktionen wird von der Speicherschnittstelle 200 durchgesetzt.
-
Der Sende-FIFO 260 kann als acht 256-Byte-Puffer organisiert sein, wobei jeweils vier angrenzende Puffer kombiniert werden können, um einen Puffer zu bilden, der bis zu 1K lang ist. Jedes gegebene Datenpaket kann sich über vier Puffer erstrecken, jedoch kann ein einzelner Puffer nur Daten von einem Paket halten. Werden die acht Puffer mit [H:A] bezeichnet, so liegen die Puffer in einem Kreis, d. h. A, B, C, D, E, F, G, H, A, B ..., so dass ein 1K-Puffer die Puffer G, H, A, B besetzen könnte.
-
In der vorliegenden Ausgestaltung stellen die Puffer physikalisch einen einzelnen RAM mit 11-bittigen Lade- und Entladezeigern dar. Der durch die unteren acht Bits gebildete Index in die Blöcke und die oberen drei Bits können den Block spezifizieren.
-
Wenn eine Transaktion verarbeitet wird, wird der Puffer bzw. werden die Puffer, der/die zum Speichern der zugehörigen Daten erforderlich ist/sind, reserviert, wobei die FIFO-Ordnung von Transaktionen in dem Sende-FIFO 260 eingehalten werden. Die ”Reservierung” kann schlicht die Form eines 3-Bit-Zählers annehmen, der auf den nächsten Puffer zeigt.
-
Konzentriert man sich nun auf den Mechanismus zur Wiederherstellung der Reihenfolge, so kann die Speicherschnittstelle 200, die HyperTransport-kompatibel sein kann, eine Reihe von ungeordneten Leseanforderungen (”out of order”) zurückgeben. Es kann somit in der Verantwortlichkeit der DMA-Sendeeinrichtung 225 liegen, diese in den Sende-FIFO 260 in der richtigen Reihenfolge zu plazieren. Die Reihenfolge wird durch die Quellentagfelder sichergestellt. Zu diesem Zweck umfasst die DMA-Sendeeinrichtung 225 eine Reihenfolgenwiederherstellungseinrichtung 240.
-
Der Quellentag indiziert einen 32×12-Bit-RAM. Die elf geringwertigsten Bits geben den Offset in den Puffer ab. Das zwölfte Bit ist das Transaktionsstartflag. Die Basisadresse und das Startflag werden geschrieben, wenn der Tag zugewiesen wird.
-
Wie aus 2 ersichtlich ist, enthält die DMA-Sendeeinrichtung 225 weiterhin einen Flag-FIFO 255, um über einen Mechanismus zu verfügen, der den Benutzer der DMA-Daten, z. B. die USB-Paketaufbaueinrichtung, informiert, dass alle Daten für eine gegebene Transaktion geholt worden sind und in dem Sende-FIFO 260 liegen. Der Flag-FIFO 255 kann die Form eines FIFO mit acht Einträgen annehmen, entsprechend dem Puffer bzw. den Puffern A–H. Der Flag-FIFO 255 kann pro Eintrag zwei Bits aufweisen: ein Alle-Daten-Vorhanden-Bit und ein Paketrandflag. Das Alle-Daten-Vorhanden-Bit ist ein Flag, das angibt, dass alle Daten vorhanden sind. Das Paketrandflag entspricht dem QTAG-Bit (QTAG: Queue Tag) in dem Transaktionselement. Dieser Mechanismus ermöglicht, dass die Daten in dem Sende-FIFO 260 zu dem Transaktionselement richtig ausgerichtet werden.
-
Im Falle eines USB-Senders kann es das Erfordernis geben, den Sende-FIFO 260 zu informieren, wenn die Daten nicht länger benötigt werden. Genauer gesagt, der vom Sender durchgeführte Vorgang des Lesens des Sende-FIFO 260 mag diesen nicht leer machen. Statt dessen sendet der Sender einen Hinweis an den Flag-FIFO 255, um die gerade verwendeten Plätze frei zu machen. Dies kann bei der Abwicklung von Sendewiederholungen durchgeführt werden, die für einige Pakettypen zulässig sein können.
-
Während die DMA-Sendeeinrichtung 225 der Behandlung von Lesevorgängen aus dem Speicher dient, enthält das Bauelement von 2 weiterhin eine DMA-Empfangseinrichtung 210 zur Behandlung von Schreibvorgängen in den Speicher. Die DMA-Empfangseinrichtung 210 umfasst einen Empfangs-FIFO 220 und eine Schreibbefehlaufbaueinrichtung 215 und hat eine Schnittstelle zu dem Gerät wie etwa einem USB-Empfänger über die Geräteschnittstelle 265.
-
Der Umkehrprozess zu dem Sendefall findet für den Empfänger statt mit der Ausnahme, dass der Empfänger nicht all die Daten von dem Paket zu halten braucht, bis das vollständige Paket angekommen ist und als fehlerfrei überprüft wurde. Es kann nur ein doppelter 64-Byte-FIFO-Puffer 220 erforderlich sein, wenn man annimmt, dass eine einlaufende Transaktion nicht gestartet wird, solange die Speicherschnittstelle 200 nicht genügend Pufferung hat, um ein gesamtes Paket abzuarbeiten.
-
Wenn nun zu der Schreibbefehlaufbaueinrichtung 215 der DMA-Empfangseinrichtung 210 übergegangen, so werden größeneingestellte Schreibvorgänge (”sized writes”) in der vorliegenden Ausgestaltung verwendet, die in einem HyperTransport-gemäßen virtuellen Kanal gesendet werden können. Wie bei der DMA-Sendeeinrichtung 225 kann eine Cachezeilenausrichtung durchgeführt werden. Schreibvorgänge können eine beliebige Anzahl angrenzender Doppelwörter lang sein oder sie können byteorientiert sein. Praktischerweise kann die Schreibbefehlaufbaueinrichtung 215 eine einzelne Transaktion von 0 bis 3 Bytes senden, um doppelwortausgerichtet zu werden, eine einzelne Transaktion von 0 bis 15 Doppelwörtern senden, um cacheausgerichtet zu werden, eine Anzahl von Transaktionen von 16 Doppelwörtern senden, eine Transaktion von 0 bis 15 Doppelwörtern senden, die die letzten Ganzzahldoppelwörter in dem Paket enthalten, und eine einzelne Transaktion von 0 bis 3 Bytes mit allen nicht vollständigen Teilen eines Doppelworts senden. Die Transaktionen werden gesendet, sobald die erforderlichen Daten in dem Empfangs-FIFO 220 empfangen worden sind. Das bedeutet, dass die Schreibbefehlaufbaueinrichtung 215 das Transaktionselement untersuchen kann, um die Adress/Größenausrichtung im voraus zu bestimmen und die Anzahl von Bytes oder Doppelwörtern festzustellen, die erforderlich sind, um die obigen Regeln einzuhalten. Die Adress-, Maskierungs- und Zählfelder können geeignet eingestellt werden.
-
Es ist anzumerken, dass es innerhalb der DMA-Empfangseinrichtung 210 keine Notwendigkeit geben mag, bei der Speichersteuereinrichtung eine Reihenfolge wiederherzustellen, so dass Tags und Sequenzidentifikationen nicht erforderlich sind.
-
Der Empfänger kann über die Geräteschnittstelle 265 einen Hinweis an die Schreibbefehlaufbaueinrichtung 215 liefern, wenn er das Ende eines Pakets empfangen hat. Dies erfolgt, um dem Empfangs-FIFO 220 zu ermöglichen, von allen übrigbleibenden Bytes befreit zu werden.
-
Daten, die über die Geräteschnittstelle 265 empfangen werden, werden verarbeitet, indem die Daten von dem Rest des Pakets herausgelöst werden. Der Datenabschnitt wird in den Empfangs-FIFO 220 geladen. Zwei Optionen können angewendet werden: die bytebreite und die doppelwortbreite Organisation. Wenn der Empfangs-FIFO 220 bytebreit ist, mag die Ausrichtung kein Thema sein. Wenn der Empfangs-FIFO 220 mit einer Doppelwortbreite organisiert ist, wird die DMA-Empfangseinrichtung 210 Doppelwörter extrahieren und die Daten wieder ausrichten, um Adressdoppelwortgrenzen einzuhalten.
-
Die DMA-Empfangseinrichtung 210 der vorliegenden Ausgestaltung kann Daten aus dem Empfangs-FIFO 220 auf Grundlage der folgenden Regeln extrahieren, d. h. basierend auf der Ausrichtung des Adressfeldes in dem Transaktionselement und der Anzeige von dem Empfänger über das Ende eines empfangenen Pakets: Wenn die Daten nicht doppelwortausgerichtet sind, werden 1 bis 3 Bytes extrahiert, sobald sie vorhanden sind, und eine größenrichtige Schreibtransaktion (”sized write”) wird erzeugt, wobei die geeigneten Maskierungsbits gesetzt sind. Wenn die Daten nicht cachezeilenausgerichtet sind, werden 1 bis 15 Doppelwörter extrahiert, sobald sie vorliegen, und eine größenrichtige Schreibtransaktion wird erzeugt, wobei das Zählfeld in geeigneter Weise eingestellt ist. Größenrichtige Schreibtransaktionen werden in 64-Byte-Chunks erzeugt, wenn 64 Bytes verfügbar werden. Dies setzt sich fort, solange 64-Byte-Datenchunks empfangen werden. Wenn die Anzeige von dem Empfänger über das Ende eines empfangenen Pakets aktiviert wird, wird der verbleibende Inhalt des Empfangs-FIFO 220 als entweder eine Transaktion oder zwei Transaktionen gesendet, abhängig von der Anzahl zu sendender Bytes. Nimmt man an, dass weniger als 64 Bytes in dem Empfangs-FIFO 220 vorliegen, wird zunächst eine Transaktion gesendet, die ein vollständiges Doppelwort enthält, wobei die geeigneten Zählwerte eingestellt sind. Danach werden alle verbleibenden Bytes mit geeignet gesetzten Maskierungsbits gesendet.
-
Wie aus dem Vorhergehenden ersichtlich ist, können sowohl in der DMA-Sendeeinrichtung 225 als auch in der DMA-Empfangseinrichtung 210 Randausrichtungen durchgeführt werden. In diesem Zusammenhang bedeutet Randausrichtung, dass erste Adressdaten empfangen werden, die einen ersten Speicherbereich angeben, und dass daraus zweite Adressdaten erzeugt werden, die wenigstens einen zweiten Speicherbereich angeben, der von dem ersten Speicherbereich an wenigstens einem Rand verschieden ist.
-
Aus Gründen der Erläuterung kann dies besser unter Bezugnahme auf 3 verstanden werden.
-
In dieser Figur ist ein Teil des Speichers dargestellt. Der Speicher speichert eine Vielzahl von Bytes 305, die jeweils acht Bits 300 haben. In der vorliegenden Ausgestaltung umfasst ein Doppelwort vier Bytes, so dass es Doppelwortgrenzen 315, 320, 325, 330, 335 gibt.
-
Weiterhin gibt es Cachezeilengrenzen 330, die aus dem Umstand resultieren, dass der Cache 205 in Cachezeilen organisiert ist, die in der vorliegenden Ausgestaltung eine Größe von 64 Bytes haben. Eine Cachezeilengrenze kann zur selben Zeit eine Doppelwortgrenze sein.
-
Wenn ein Speicherbereich 310 gelesen oder geschrieben werden soll, der eine Doppelwortgrenze oder eine Cachezeilengrenze enthält, kann eine Randausrichtung durchgeführt werden, indem dieser Speicherbereich in Unterbereiche aufgeteilt wird, die separat verarbeitet werden. Dies wird genauer unter Bezugnahme auf die Flussdiagramme der 4 bis 9 erläutert werden.
-
4 zeigt die Hauptprozessschritte beim Lesen von Daten. Zunächst werden Leseanforderungen im Schritt 400 von der DMA-Sendeeinrichtung 225 plaziert. Im Schritt 405 empfängt die DMA-Sendeeinrichtung 225 die Daten, die ungeordnet ankommen können. Die Reihenfolgenwiederherstellungseinrichtung 240 der DMA-Sendeeinrichtung 225 stellt dann die Ordnung der Daten im Schritt 410 wieder her und die wieder geordneten Daten werden in Schritt 415 im Sende-FIFO 260 gepuffert.
-
Ein Beispiel dessen, was im Schritt 400 des Plazierens von Leseanforderungen tatsächlich getan wird, ist in 5 gezeigt. Zunächst wird von der Aktivitätsinitiierungseinrichtung 250 festgestellt, welche Daten zu holen sind (Schritt 500). Dann erzeugt die Randausrichteinrichtung 245 Adressdaten in Schritt 505 und führt die Randausrichtung in Schritt 510 durch. Schließlich baut die Leseanforderungsaufbaueinrichtung 230 eine oder mehrere Anforderungen in Schritt 515 auf und sendet die Anforderungen an die Speicherschnittstelle 200 in Schritt 520.
-
Ein detaillierterer Beispielsprozess der Plazierung von Leseanforderungen ist in den 6 und 7 insbesondere zur Behandlung des Falles dargestellt, in dem der Benutzer der Daten nicht über die Möglichkeit verfügt, ungewünschte Teile eines Doppelworts zu verwerfen, weswegen nur die tatsächlich gewünschten Datenbytes aus dem Speicher geholt werden.
-
Zunächst wird in Schritt 600 die Basisadresse in einen Heraufzähler geladen, der die Basisadresse für jede Adresse berechnet. In Schritt 605 wird die Größe in einen Herunterzähler geladen, der die Anzahl von noch zu holenden Bytes zählt. Es wird dann in Schritt 610 überprüft, ob die Daten bereits doppelwortausgerichtet sind, und wenn dies der Fall ist, kann der Prozess mit Schritt 700 fortfahren. Andernfalls werden die Schritte 615 bis 670 zur Doppelwortausrichtung der Daten durchgeführt.
-
Im Einzelnen: Wenn mehr als drei Bytes übrig sind, wird in Schritt 620 eine maskierte Doppelworttransaktion gesendet und die Anzahl der ausstehenden, zu sendenden Bytes in Schritt 625 berechnet. Dann wird in den Schritten 630, 645, 660 überprüft, ob 3, 2 oder 1 Byte ausstehen. Abhängig vom Ergebnis der jeweiligen Überprüfung werden in den Schritten 635, 650, 665 eine oder mehrere maskierte Doppelwortanforderungen mit geeignet gesetzten Maskierungsbits gesendet und die Anzahl der ausstehenden Bytes demgemäß in den Schritten 640, 655, 670 heruntergezählt.
-
Nachdem die Doppelwortausrichtung durchgeführt wurde, wird in Schritt 700 überprüft, ob die Anforderung cachezeilenausgerichtet ist. Ist dies der Fall, können die Schritte 705 bis 715 übersprungen werden, aber sonst wird festgestellt, wie viele Doppelwörter erforderlich sind, und es wird eine Anforderung der festgestellten Größe gesendet. Die Größe wird dann um die festgestellte Größe heruntergezählt.
-
Dann wird in Schritt 720 festgestellt, wie viele volle Cachezeilen angefordert werden. Wenn die Anzahl der vollen Cachezeilenanforderungen von Null verschieden ist, werden die jeweiligen Anforderungen in Schritt 730 gesendet, der Heraufzähler in Schritt 735 erhöht und der Herunterzähler in Schritt 740 verringert. Der Prozess kehrt dann zu Schritt 700 zurück.
-
Sind einmal alle vollen Cachezeilenanforderungen gesendet, müssen die verbleibenden Doppelwörter und Unterdoppelwörter bearbeitet werden. Aus diesem Grund bestimmt Schritt 745 die Anzahl der übriggebliebenen Doppelwörter und die jeweiligen Anforderungen werden in Schritt 755 gesendet. Die verbleibenden Unterdoppelwörter werden dann durch Senden maskierter Anforderungen in Schritt 765 angefordert.
-
Im Folgenden wird ein Pseudocode gezeigt, der dem Prozess von
6 und
7 entspricht und den Ausrichtmechanismus in einer ausführlicheren Weise erläutert:
-
Wird nun zu 8 übergegangen, so ist ein anderes Beispiel der Durchführung des Prozesses der Plazierung von Leseanforderungen gezeigt. Zunächst wird bestimmt, welche Daten zu holen sind, und dieser Datenbereich wird in Schritt 800 auf volle Doppelwörter aufgerundet. Dann wird eine Cachezeilenausrichtung in Schritt 805 im Wesentlichen nach dem oben beschriebenen Schema erzielt. Die Cachezeilenanforderungen werden dann in Schritt 810 plaziert und die verbleibenden Daten in Schritt 815 angefordert. Schließlich werden nicht verwendete Bytes, die im Schritt 800 beim Aufrunden auf volle Doppelwörter hinzugefügt worden sind, in Schritt 820 fallengelassen.
-
Wie oben erwähnt, können die soweit beschriebenen Randausrichttechniken sowohl in der DMA-Sendeeinrichtung 225 als auch in der DMA-Empfangseinrichtung 210 durchgeführt werden. Während die vorherigen Flussdiagramme die Leseprozesse behandelt haben, d. h. den Betrieb der DMA-Sendeeinrichtung 225, zeigt 9 ein Flussdiagramm, das die Schritte des entsprechenden Schreibprozesses verdeutlicht. In Schritt 900 werden die Daten, die von der Geräteschnittstelle 265 empfangen werden, gepuffert. Dann werden im Schritt 905 Doppelwort- und Cacheausrichtungen durchgeführt und entsprechende Transaktionen an die Speicherschnittstelle 200 in Schritt 910 gesendet.
-
Während die Flussdiagramme der 4 bis 9 Prozesse verdeutlichen, die in dem Controller von 2 durchgeführt werden können, ist anzumerken, dass es andere Ausgestaltungen solcher Prozesse geben kann, die von den oben diskutierten Flussdiagrammen darin verschieden sein können, dass die Abfolge der Schritte geändert, einige Schritte weggelassen und andere hinzugefügt sind.
-
Wird nun zu 10 übergegangen, so wird nun eine zweite Ausgestaltung beschrieben. Die Figur verdeutlicht einen USB-2.0-gemäßen Hostcontroller 1000, der hauptsächlich drei Komponenten aufweist: einen erweiterten Hostcontroller (EHC: Enhanced Host Controller) 1020, einen oder mehrere Begleithostcontroller 1005 und einen Port-Router 1025.
-
Der erweiterte Hostcontroller 1020 bewerkstelligt den USB-2.0-Hochgeschwindigkeitsverkehr. Zusätzlich steuert er den Port-Router 1025. In der Begleithostcontrollereinrichtung 1005 der vorliegenden Ausgestaltung gibt es zwei OHCI-gemäße (OHCI: Open Host Controller Interface) Hostcontroller, OHC0 1010 und OHC1 1015. Diese Controller bearbeiten den gesamten USB-1.1-gemäßen Verkehr und können die Legacy-Tastaturemulation für nicht USB-gemäße Umgebungen enthalten. Der Port-Router 1025 weist den physikalischen Portschnittstellen ihre jeweiligen Eigner zu.
-
Der USB-2.0-gemäße Hostcontroller 1000 von 10 kann als Hardwarearchitektur definiert werden, um einen EHCI-gemäßen Hostcontroller 1020 zur Integration in eine Southbridge eines Computersystems zu implementieren. Der Hostcontroller sitzt dann zwischen den analogen USB-2-Eingabe/Ausgabepins und einem Verbindungsschnittstellenmodul zum Ausbilden einer Schnittstelle in Richtung auf den Systemspeicher. Diese Schnittstelle kann eine interne HyperTransport-Schnittstelle sein.
-
Wird nun zur 11 übergegangen, so sind die Komponenten des erweiterten Hostcontrollers 1020 in weiteren Einzelheiten gezeigt. Die Bearbeitung des Datenverkehrs zu und von dem Systemspeicher wird durch den Stub 1100 bewerkstelligt. Der Stub 1100 weist die internen Quellen und Senken den jeweiligen HyperTransport-Strömen zu, d. h. Posted-Requests, Non-Posted-Requests und Responses (Antworten). Der Stub 1100 arbitriert die interne HyperTransport-Schnittstelle zwischen allen internen Busmastern, d. h. der DMA-Empfangseinrichtung 1110, dem Deskriptorcache 1160, der Deskriptorverarbeitungseinrichtung 1125 und der DMA-Sendeeinrichtung 1145. Somit arbitriert der Stub 1100 zwischen dem Holen von Deskriptoren, dem Zurückschreiben von Deskriptoren, dem Empfangen von Daten und dem Senden von Daten.
-
Der Stub 1100 ist mit einem Registerfile 1105 verbunden, das die EHCI-Register enthält. In der vorliegenden Ausgestaltung speichern die EHCI-Register Daten bezüglich der Fähigkeiten des Hostcontrollers und der Betriebsmodi des Hostcontrollers.
-
Die Deskriptorverarbeitungseinrichtung 1125 ist mit dem Stub 1100 verbunden und besteht aus drei Untereinheiten: der Deskriptorholeinrichtung (DescrFetch) 1130, der Deskriptorspeichereinrichtung (DescrStore) 1140 und der Transaktionsvervollständigungsmaschine (TACM) 1135. Die Deskriptorholeinrichtung 1130 bestimmt auf Grundlage von Timinginformationen und Registereinstellungen, welcher Deskriptor als nächstes zu holen oder im voraus zu holen ist, und sendet die Anforderung an den Stub 1100 und/oder den Deskriptorcache 1160. Wenn sie den Deskriptor empfängt, sendet sie ihn an die Deskriptorspeichereinrichtung 1140. Die Transaktionsvervollständigungsmaschine 1135 ist mit der Deskriptorholeinrichtung 1130 zum Verwalten von Statusrückschreibungen zu Deskriptoren verbunden. Zu diesem Zweck ist die Transaktionsvervollständigungsmaschine 1135 mit dem Deskriptorcache 1160 verbunden.
-
Wie aus der Figur ersichtlich ist, werden weiterhin eine DMA-Sendeeinrichtung 1145 und einem DMA-Empfangseinrichtung 1110 bereitgestellt. Die DMA-Sendeeinrichtung 1145 besteht aus einer Datenholeinrichtung (DataFetch) 1150 und einem Datensendepuffer (TxBuf) 1155. Die Datenholeinrichtung 1150 ist der DMA-Lesebusmaster und untersucht die Einträge in der Deskriptorspeichereinrichtung 1140 der Deskriptorverarbeitungseinrichtung 1125. Die Datenholeinrichtung 1150 holt im voraus die entsprechenden Daten und leitet sie an den Datensendepuffer 1555 weiter. Der Datensendepuffer 1155 kann ein FIFO-Puffer sein und seine Funktion entspricht der der Deskriptorspeichereinrichtung 1140 darin, dass er es ermöglicht, genügend Daten für auslaufende Transaktionen im voraus zu holen, um die Speichersystemlatency abzudecken.
-
Die DMA-Empfangseinrichtung 1110 besteht aus der Datenschreibeinrichtung (DataWrite) 1115, die als DMA-Schreibbusmaster zum Verschieben der empfangen Daten dient, die in dem Datenempfangspuffer (RxBuf) 1120 gespeichert sind, an ihre jeweilige Stelle im Systemspeicher. Der Datenempfangspuffer 1120 kann ein einfacher FIFO-Puffer sein.
-
Der erweiterte Hostcontroller von 11 umfasst weiterhin eine Rahmentimingeinrichtung (FrameTiming) 1190, die die USB-Masterzeitreferenz ist. Die Rahmentimingeinrichtung 1190 ist mit der Deskriptorspeichereinrichtung 1140 und dem Paketbearbeitungsblock 1165 verbunden.
-
Der Paketbearbeitungsblock 1165 besteht aus einer Paketaufbaueinrichtung (PktBuild) 1180, die die notwendigen USB-Busoperationen zum Senden von Daten und Handshakes erstellt, und einem Paketdecodierer (PktDecode) 1170, der empfangene USB-Pakete zerlegt. Weiterhin wird eine Transaktionssteuereinrichtung (TaCtrl) 1175 bereitgestellt, die die Paketaufbaueinrichtung 1180 und den Paketdecodierer 1170 überwacht. Ferner umfasst die Paketbearbeitungseinrichtung 1165 eine CRC-Einrichtung (CRC: Cyclic Redundancy Check) 1185 zum Erzeugen und Überprüfen von CRC-Daten für gesendete und empfangene Daten.
-
Die Paketaufbaueinrichtung 1180 und der Paketdecodierer 1170 der Paketbearbeitungseinrichtung 1165 sind mit dem Roothub 1195 verbunden, der portspezifische Steuerregister, eine Verbindungsdetektionslogik und eine Streu/Einsammelfunktionalität für Pakete zwischen der Paketbearbeitungseinrichtung 1165 und dem Port-Router enthält.
-
Wird nun zu 12 übergegangen, die in weiteren Einzelheiten die DMA-Sendeeinrichtung 1145 verdeutlicht, so besteht die Einheit hauptsächlich aus der Datenholeinrichtung 1150 und dem Datensendepuffer 1155. Die Datenholeinrichtung 1150 umfasst eine Aktivitätsinitiierungseinrichtung 1200 zum Interagieren mit der Deskriptorverarbeitungseinrichtung 1125, um festzustellen, für welchen gespeicherten Deskriptor sie die entsprechenden Daten holen wird. Es gibt ferner eine Verbindung zum Stub 1100, wo die Datenholeinrichtung 1150 mit anderen Einheiten bezüglich des Speicherzugriffs konkurrieren muss. Ist der Speicherzugriff einmal gewährt, werden Daten in den Datensendepuffer 1155 verschoben.
-
Die Datenholeinrichtung 1150 umfasst ferner einen Anforderungssequenzierer 1205, der eine Steuereinrichtung darstellt zum Sicherstellen, dass alle Bedingungen erfüllt sind, wie etwa die Pufferbeladung, Speicherschnittstellenzugriffsbeschränkungen, die Transfergröße, etc. Die Steuerung kann weiterhin durch dynamische Planungsverwaltung kompliziert werden, indem der Puffer entleert werden muss, wenn zum Ende eines Mikrorahmens keine Zeit mehr besteht, um asynchrone Daten, die bereits im voraus geholt worden sind, zu senden.
-
Der Datensendepuffer 1155 der vorliegenden Ausgestaltung ist ein Dualport-RAM (TxRAM) 1220 mit einiger Steuerlogik: einer Pointersteuereinrichtung (PtrCtrl) 1225 und einer Paketporteinrichtung (PktPort) 1230. Die Paketporteinrichtung 1230 dient als Schnittstelle zu der Paketbearbeitungseinrichtung 1165 und enthält hauptsächlich Statusbits, die die Paketbearbeitungseinrichtung 1165 informieren, dass alle Daten für ein Paket geholt worden sind, und Informationen über die Paketgröße und die Byteausrichtung für das allererste Datendoppelwort. Diese Statusbits werden in den Dualport-RAM 1220 vor das erste Doppelwort eines jeden Datenpakets multiplexiert und in die Paketporteinrichtung 1230 extrahiert, wenn ein Datenpaket an den Kopf des Puffers gelangt. In ähnlicher Weise verbreitet die TACM-Porteinrichtung (TACMPort) 1215 diese Statusbits an die Transaktionsvervollständigungsmaschine 1135 für Statusrückschreibungen.
-
Die DMA-Sendeeinrichtung 1145 kann einen Spezialmodus für Einzelbulktransferdeskriptoren haben. Um die Effizienz zu erhöhen, kann sie versuchsweise Daten im voraus holen für mehr als einen Besuch des Deskriptors, d. h. für asynchrone Queuedurchwanderung.
-
Wird nun zu 13 übergegangen, so besteht die DMA-Empfangseinrichtung 1110 der vorliegenden Ausgestaltung aus vier Haupteinheiten: Der tatsächliche Puffer ist in dem Datenempfangs-RAM (RxRAM) 1310 enthalten und wird durch die Pointersteuereinrichtung (PtrCtrl) 1315 gesteuert. Ähnlich der DMA-Sendeeinrichtung 1145 gibt es einen Anforderungssequenzierer 1300, der den Speicherschnittstellenbefehl aufbaut. Schließlich versorgt eine TACM-Porteinrichtung 1305 die Transaktionsvervollständigungsmaschine 1135 mit Statusinformationen.
-
14 und 15 sind Zeitdiagramme, die das Schnittstellentiming zwischen der Paketbearbeitungseinrichtung 1165 und den DMA-Sende- und -Empfangseinrichtungen 1145, 1110 verdeutlichen. Wird zunächst 14 besprochen, so wird die Paketaufbaueinrichtung 1180, die Teil der Paketbearbeitungseinrichtung 1165 ist, die Daten von der DMA-Sendeeinrichtung 1145 zu der Zeit latchen, zu der sie das gelesene Signal setzt. Die DMA-Sendeeinrichtung 1145 kann dann ihren Lesezeiger inkrementieren, wenn das Lesesignal auf eins geht, und sie kann die nächsten Daten innerhalb des Zeitintervalls Td anwenden, das kürzer als ein Taktzyklus ist. Das Lesesignal hat eine Länge von einer Taktperiode. Die Leerlaufzeit zwischen zwei Lesepulsen beträgt wenigstens ein Taktzyklus.
-
Das Timing der Schnittstelle zwischen der Paketbearbeitungseinrichtung 1165 und der DMA-Empfangseinrichtung 1110 ist in 15 gezeigt. Es mag sein, dass es zwischen der DMA-Empfangseinrichtung 1110 und der Paketbearbeitungseinrichtung 1165 keinen Handshake gibt. Die Paketbearbeitungseinrichtung 1165 wird das Bytefreigabesignal zur selben Zeit wie die Daten anwenden. Das Bytefreigabesignal kann dann verwendet werden, um bytebreite Schreibvorgänge in den RAM durchzuführen. Es kann weiterhin sein, dass es kein dediziertes Gültigkeitssignal gibt, um der DMA-Empfangseinrichtung 1110 zu zeigen, dass die Daten gültig sind. Dies kann aus dem Bytefreigabesignal gewonnen werden.
-
Im Folgenden wird die Funktionsweise der DMA-Sende- und -Empfangseinrichtung 1145, 1110 in weiteren Einzelheiten erläutert werden. Zunächst wird auf die DMA-Sendeeinrichtung 1145 Bezug genommen.
-
Die Aktivitätsinitiierungseinrichtung
1200 wird sich bei der Deskriptorverarbeitungseinrichtung
1125 nach dem nächsten herausgehenden Deskriptor erkundigen und den Anforderungssequenzierer
1205 mit der jeweiligen Startadresse und Länge der Ausgabedaten beliefern. Der Anforderungssequenzierer
1205 wird wiederum alle notwendigen Speicherschnittstellenbefehle zum Holen der Daten aufbauen. In der vorliegenden Ausgestaltung dürfen die Datenpakete nicht größer als eine Cachezeile (d. h. 64 Bytes) sein und keine Cachezeilengrenzen überschreiten, so dass Datenholvorgänge in mehrere Anforderungen zerlegt werden müssen. Der unten aufgelistete Algorithmus wird verwendet, um dies zu bewerkstelligen:
-
Grundsätzlich gesprochen, kann die gesamte Transferlänge auf volle Doppelwörter aufgerundet werden. Dann erzielt der erste Zugriff eine Cachezeilenausrichtung und alle nachfolgenden Zugriffe können vollständige Cachezeilenbursts verwenden, mit Ausnahme möglicherweise des allerletzten Zugriffs. Ein oder mehrere ungenutzte Bytes innerhalb des allerersten und des allerletzten Doppelworts werden innerhalb der Paketbearbeitungseinrichtung 1165 fallengelassen.
-
Um die Effizienz zu erhöhen und die Speicherlatency zu minimieren, kann die DMA-Sendeeinrichtung 1145 alle Pakete für Hochbandbreitentransfers selbständig holen. Sie ist hierzu in der Lage, indem sie alle notwendigen Informationen von der Deskriptorverarbeitungseinrichtung 1125 empfängt. Anstelle der unabhängigen Bearbeitung von bis zu drei Paketen für einen hochbandbreitigen Transfer, was zu mehreren unvollständigen Bursts und Adressneuausrichtungen führen würde, kann die DMA-Sendeeinrichtung 1145 diese maximal drei Pakete als einen einzelnen Datenstrom behandeln, der von der Speicherschnittstelle angefordert werden muss. Folglich werden nur eine Cachezeilenadressenausrichtung am Beginn (mit einem unvollständigen Burst) und möglicherweise ein abschließender unvollständiger Burst auftreten. Jedoch kann die DMA-Sendeeinrichtung 1145 die Paketisierung nachverfolgen, d. h. sie kann Datenabschnitte separat in ihrem Puffer 1155 speichern und all diese mit demselben Deskriptortag markieren. Dies dient dazu, folgende Pakete eines solchen hochbandbreitigen Transfers beseitigen zu können, wenn die erste oder die dazwischenliegende Transaktion fehl geht. Es dient weiterhin auch dazu, die paketorientierte Schnittstelle zu der Paketbearbeitungseinrichtung 1165 zu halten.
-
Wie erwähnt, kann die DMA-Sendeeinrichtung 1145 der vorliegenden Ausgestaltung in einem Einzelbulkcachemodus betrieben werden. Dies ist ein spezieller Modus, in den übergegangen wird, wenn die asynchrone Queue bedient wird und es nur einen Deskriptor in ihr gibt. Dieser Zustand wird der DMA-Sendeeinrichtung 1145 von der Deskriptorverarbeitungseinrichtung 1125 durch ein Flag mitgeteilt. Es ist ein spezieller Modus, um die normalerweise durch diese Schleife entstehende Latency zu vermeiden: durch das Holen des (einzigen) Deskriptors, Ausführen der Transaktion, Zurückschreiben des Status. Da der nächste Holvorgang des Deskriptors und der jeweiligen Daten nur nach einer Statusrückschreibung durchgeführt werden könnte, gäbe es praktisch überhaupt kein Vorausholen von Daten mehr. Folglich wird von der DMA-Sendeeinrichtung 1145 gefordert, das Holen von Daten im voraus selbständig zu bewerkstelligen.
-
Ähnlich zu der oben beschriebenen hochbandbreitigen Transferbehandlung liegen die Dinge mit einem Multiplizitätsfaktor von (sehr viel) größer als drei. Jedoch kann es einige Erweiterungen zu diesem Modus geben. Beispielsweise mag die Anzahl von Paketen, die im voraus zu holen sind, vorher nicht bekannt sein. Weiterhin kann die Transferlänge die Kapazität der Speicherseiten überschreiten. Die DMA-Sendeeinrichtung 1145 kann folglich die Adressen intern nachverfolgen, d. h. sie kann den Holvorgang fortsetzen, bis entweder die richtige Anzahl von Bytes gelesen wurden oder der nächste Lesevorgang der maximalen Paketbytegröße sogar die sekundäre Speicherseite überschreiten würde. Im letzteren Falle kann die DMA-Sendeeinrichtung 1145 nach wie vor von der Deskriptorverarbeitungseinrichtung 1125 anfordern, aber sie kann alle zurückgegebenen Adressen ignorieren, bis die Sekundärseite zur Primärseite geworden ist und eine neue Sekundärseite zurückgegeben wurde. Wenn sich die DMA-Sendeeinrichtung 1145 im Einzelbulkcachemodus befindet, kann sie wenigstens 512 Bytes ihres Puffers für den nächsten periodischen Transfer, der folgen kann, reservieren. Diese Regel dient zur Sicherstellung, dass nach Rückkehr vom asynchronen Planungsschema (mit nur diesem einen Deskriptor) Daten für das periodische Planungsschema im voraus geholt werden können, wobei wieder mit dem nächsten Mikrorahmen begonnen wird.
-
Während der zuletzt erwähnte Algorithmus und die speziellen Betriebsmodi die DMA-Sendeeinrichtung
1145 betreffen, kann der Anforderungssequenzierer
1300 der Datenschreibeinrichtung
1115 der DMA-Empfangseinheit
1110 den folgenden Algorithmus ausführen, um die Speicherschnittstellenbefehle zu bilden und alle HyperTransport-Zugriffsbeschränkungen zu behandeln (wobei er als Adressdatenerzeugungseinrichtung und Randausrichteinrichtung arbeitet):
-
Während die Erfindung in Bezug auf die physikalischen Ausgestaltungen, die in Übereinstimmung mit ihr konstruiert worden sind, beschrieben worden ist, wird Fachleuten ersichtlich sein, dass verschiedene Modifikationen, Variationen und Verbesserungen der vorliegenden Erfindung im Lichte der obigen Lehren und innerhalb der Umfangs der beigefügten Ansprüche gemacht werden können, ohne von der Idee und dem beabsichtigen Umfang der Erfindung abzuweichen. Zusätzlich sind solche Bereiche, in denen davon ausgegangen wird, dass sich Fachleute auskennen, hier nicht beschrieben worden, um die hier beschriebene Erfindung nicht unnötig zu verschleiern. Es ist demgemäß zu verstehen, dass die Erfindung nicht durch die spezifisch erläuternden Ausgestaltungen sondern nur durch den Umfang der beigefügten Ansprüche beschränkt wird.