DE10213839B4 - DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus - Google Patents

DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus Download PDF

Info

Publication number
DE10213839B4
DE10213839B4 DE10213839.7A DE10213839A DE10213839B4 DE 10213839 B4 DE10213839 B4 DE 10213839B4 DE 10213839 A DE10213839 A DE 10213839A DE 10213839 B4 DE10213839 B4 DE 10213839B4
Authority
DE
Germany
Prior art keywords
data
address data
address
dma
memory
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
DE10213839.7A
Other languages
English (en)
Other versions
DE10213839A1 (de
Inventor
Siegfried Kay Hesse
Dale E. Gulick
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Priority to DE10213839.7A priority Critical patent/DE10213839B4/de
Priority to US10/184,407 priority patent/US6823403B2/en
Publication of DE10213839A1 publication Critical patent/DE10213839A1/de
Application granted granted Critical
Publication of DE10213839B4 publication Critical patent/DE10213839B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0879Burst mode
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B7/00Radio transmission systems, i.e. using radiation field
    • H04B7/02Diversity systems; Multi-antenna system, i.e. transmission or reception using multiple antennas
    • H04B7/04Diversity systems; Multi-antenna system, i.e. transmission or reception using multiple antennas using two or more spaced independent antennas
    • H04B7/08Diversity systems; Multi-antenna system, i.e. transmission or reception using multiple antennas using two or more spaced independent antennas at the receiving station
    • H04B7/0802Diversity systems; Multi-antenna system, i.e. transmission or reception using multiple antennas using two or more spaced independent antennas at the receiving station using antenna selection
    • H04B7/0822Diversity systems; Multi-antenna system, i.e. transmission or reception using multiple antennas using two or more spaced independent antennas at the receiving station using antenna selection according to predefined selection scheme

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bus Control (AREA)

Abstract

DMA-Controllerbauelement (DMA: Direct Memory Access) mit einer DMA-Sendeeinrichtung (225, 1145) zum Ausgeben von Leseanforderungen an eine Speicherschnittstelle (200, 1100) und Empfangen angeforderter Daten von der Speicherschnittstelle, wobei die DMA-Sendeeinrichtung umfasst: eine Datentransferinitiierungseinrichtung (250, 1200) zum Veranlassen eines Datentransfers durch Bestimmen, welche Daten aus einem Speicher zu holen sind, und Ausgeben erster Adressdaten, die einen ersten Speicherbereich (310) identifizieren, wobei der erste Speicherbereich die bestimmten, zu holenden Daten enthält; eine Randausrichteinrichtung (245, 1205) zum Empfangen der ersten Adressdaten, Erzeugen zweiter Adressdaten daraus und Ausgeben der zweiten Adressdaten, wobei die zweiten Adressdaten wenigstens einen zweiten Speicherbereich identifizieren, der von dem ersten Speicherbereich an wenigstens einem Rand verschieden ist; eine Leseanforderungsaufbaueinrichtung (230, 1205) zum Empfangen der zweiten Adressdaten und Erzeugen wenigstens einer Leseanforderung basierend darauf; eine Antwortempfangseinrichtung (240, 1210) zum Empfangen ungeordneter Daten in Erwiderung auf die wenigstens eine Leseanforderung; eine Antwortreihenfolgenwiederherstellungseinrichtung (240, 1205) zum Ändern der Reihenfolge, in der die Daten empfangen worden sind; und einen FIFO-Puffer (260, 1220) zum Speichern der angeforderten und empfangenen Daten in der geänderten Reihenfolge, wobei Leseanforderungen an die Speicherschnittstelle gesendet werden, wenn es im FIFO-Puffer Platz für die zugehörigen Antwortdaten gibt, und wobei das DMA-Controllerbauelement ferner über eine Schnittstelleneinrichtung (270, 1230) zum Bereitstellen einer Geräteschnittstelle verfügt, die die angeforderten und empfangenen Daten vom FIFO-Puffer empfängt, und wobei das DMA-Controllerbauelement in einem hochbandbreitigen Transferbearbeitungsmodus betrieben werden kann, in dem die Datentransferinitiierungseinrichtung automatisch Hochbandbreitentransfers durch Kombinieren wenigstens zweier Datentransfers veranlasst, die verschiedene Speicherbereiche betreffen, so dass der kombinierte Datentransfer von dem DMA-Controllerbaulement als ein einzelner Datenstrom behandelt wird.

Description

  • 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:
    Figure DE000010213839B4_0002
    Figure DE000010213839B4_0003
    Figure DE000010213839B4_0004
    Figure DE000010213839B4_0005
  • 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:
    Figure DE000010213839B4_0006
    Figure DE000010213839B4_0007
  • 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):
    Figure DE000010213839B4_0008
    Figure DE000010213839B4_0009
    Figure DE000010213839B4_0010
  • 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.

Claims (48)

  1. DMA-Controllerbauelement (DMA: Direct Memory Access) mit einer DMA-Sendeeinrichtung (225, 1145) zum Ausgeben von Leseanforderungen an eine Speicherschnittstelle (200, 1100) und Empfangen angeforderter Daten von der Speicherschnittstelle, wobei die DMA-Sendeeinrichtung umfasst: eine Datentransferinitiierungseinrichtung (250, 1200) zum Veranlassen eines Datentransfers durch Bestimmen, welche Daten aus einem Speicher zu holen sind, und Ausgeben erster Adressdaten, die einen ersten Speicherbereich (310) identifizieren, wobei der erste Speicherbereich die bestimmten, zu holenden Daten enthält; eine Randausrichteinrichtung (245, 1205) zum Empfangen der ersten Adressdaten, Erzeugen zweiter Adressdaten daraus und Ausgeben der zweiten Adressdaten, wobei die zweiten Adressdaten wenigstens einen zweiten Speicherbereich identifizieren, der von dem ersten Speicherbereich an wenigstens einem Rand verschieden ist; eine Leseanforderungsaufbaueinrichtung (230, 1205) zum Empfangen der zweiten Adressdaten und Erzeugen wenigstens einer Leseanforderung basierend darauf; eine Antwortempfangseinrichtung (240, 1210) zum Empfangen ungeordneter Daten in Erwiderung auf die wenigstens eine Leseanforderung; eine Antwortreihenfolgenwiederherstellungseinrichtung (240, 1205) zum Ändern der Reihenfolge, in der die Daten empfangen worden sind; und einen FIFO-Puffer (260, 1220) zum Speichern der angeforderten und empfangenen Daten in der geänderten Reihenfolge, wobei Leseanforderungen an die Speicherschnittstelle gesendet werden, wenn es im FIFO-Puffer Platz für die zugehörigen Antwortdaten gibt, und wobei das DMA-Controllerbauelement ferner über eine Schnittstelleneinrichtung (270, 1230) zum Bereitstellen einer Geräteschnittstelle verfügt, die die angeforderten und empfangenen Daten vom FIFO-Puffer empfängt, und wobei das DMA-Controllerbauelement in einem hochbandbreitigen Transferbearbeitungsmodus betrieben werden kann, in dem die Datentransferinitiierungseinrichtung automatisch Hochbandbreitentransfers durch Kombinieren wenigstens zweier Datentransfers veranlasst, die verschiedene Speicherbereiche betreffen, so dass der kombinierte Datentransfer von dem DMA-Controllerbaulement als ein einzelner Datenstrom behandelt wird.
  2. DMA-Controllerbauelement nach Anspruch 1, wobei die Randausrichteinrichtung eingerichtet ist zum Erzeugen der zweiten Adressdaten durch Ausrichten der ersten Adressdaten an Cachezeilengrenzen eines Cache (205) der Speicherschnittstelle.
  3. DMA-Controllerbauelement nach Anspruch 2, wobei die Cachezeilengrenzen Grenzen von 64-Byte-Cachezeilen sind.
  4. DMA-Controllerbauelement nach Anspruch 2, wobei die Randausrichteinrichtung eingerichtet ist zum Erzeugen der zweiten Adresse so, dass die Leseanforderungsaufbaueinrichtung die wenigstens eine Leseanforderung auf Grundlage der zweiten Adressdaten erzeugen kann, um nicht irgendwelche Daten zu holen, die von der Datentransferinitiierungseinrichtung nicht bestimmt worden sind.
  5. DMA-Controllerbauelement nach Anspruch 4, wobei die Randausrichteinrichtung eingerichtet ist zum Maskieren von Bits in den ersten Adressdaten bei der Erzeugung der zweiten Adressdaten.
  6. DMA-Controllerbauelement nach Anspruch 1, wobei die Randausrichteinrichtung eingerichtet ist zum Erzeugen der zweiten Adressdaten durch Ausrichten der ersten Adressdaten an Doppelwortgrenzen.
  7. DMA-Controllerbauelement nach Anspruch 6, wobei die Randausrichteinrichtung eingerichtet ist zum Erzeugen der zweiten Adressdaten so, dass die Leseanforderungsaufbaueinrichtung die wenigstens eine Leseanforderung auf Grundlage der zweiten Adressdaten erzeugen kann, um nicht irgendwelche Daten zu holen, die von der Datentransferinitiierungseinrichtung nicht bestimmt worden sind.
  8. DMA-Controllerbauelement nach Anspruch 7, wobei die Randausrichteinrichtung eingerichtet ist zum Maskieren von Bits in den ersten Adressdaten bei der Erzeugung der zweiten Adressdaten.
  9. DMA-Controllerbauelement nach Anspruch 1, wobei die zweiten Adressdaten, die aus den ersten Adressdaten erzeugt worden sind, wenigstens zwei zweite Speicherbereiche identifizieren und die Leseanforderungsaufbaueinrichtung eingerichtet ist zum Erzeugen wenigstens zweier Leseanforderungen zum Anfordern der bestimmten Daten.
  10. DMA-Controllerbauelement nach Anspruch 9, wobei die wenigstens zwei zweiten Speicherbereiche in dem ersten Speicherbereich umfasst sind.
  11. DMA-Controllerbauelement nach Anspruch 1, wobei die Randausrichteinrichtung eingerichtet ist zum Maskieren von Bits in den ersten Adressdaten bei der Erzeugung der zweiten Adressdaten.
  12. DMA-Controllerbauelement nach Anspruch 11, wobei die ersten Adressdaten eine Basisadresse enthalten und die Randausrichteinrichtung eingerichtet ist zum Maskieren von Bits in der Basisadresse bei der Erzeugung der zweiten Adressdaten.
  13. DMA-Controllerbauelement nach Anspruch 11, wobei die ersten Adressdaten Größendaten enthalten, die die Anzahl von zu lesenden Bytes angeben, und die Randausrichteinrichtung eingerichtet ist zum Maskieren von Bits in den Größendaten bei der Erzeugung der zweiten Adressdaten.
  14. DMA-Controllerbauelement nach Anspruch 1, wobei der wenigstens eine zweite Speicherbereich einen Unterbereich enthält, der in dem ersten Speicherbereich nicht enthalten ist.
  15. DMA-Controllerbauelement nach Anspruch 14, wobei das DMA-Controllerbauelement eingerichtet ist zum Übergehen von Daten, die aus dem Unterbereich gelesen worden sind.
  16. DMA-Controllerbauelement nach Anspruch 1, wobei die ersten Adressdaten eine Basisadresse und Größendaten enthalten und die Größendaten die gesamte Transferlänge der zu holenden Daten angeben.
  17. DMA-Controllerbauelement nach Anspruch 16, wobei die Randausrichteinrichtung eingerichtet ist zum Aufrunden der gesamten Transferlänge auf volle Doppelwörter bei der Erzeugung der zweiten Adressdaten.
  18. DMA-Controllerbauelement nach Anspruch 1, wobei die zweiten Adressdaten eine Basisadresse und Größendaten enthalten und die Größendaten die Anzahl von zu lesenden Bytes angeben.
  19. DMA-Controllerbauelement nach Anspruch 18, weiterhin einen Heraufzähler umfassend zum Berechnen der Basisadresse für jede der wenigstens einen Leseanforderung.
  20. DMA-Controllerbauelement nach Anspruch 18, weiterhin einen Herunterzähler umfassend zum Nachverfolgen der Anzahl ausstehender, zu lesender Bytes.
  21. DMA-Controllerbauelement nach Anspruch 1, weiterhin einen Puffer (260, 1155) zum Speichern der empfangenen Daten in der geänderten Reihenfolge umfassend.
  22. DMA-Controllerbauelement nach Anspruch 1, weiterhin einen Puffer (235) zum separaten Speichern von Datenabschnitten enthaltend, die verschiedene Speicherbereiche betreffen, wobei jeder der Datenabschnitte, die in dem Puffer gespeichert sind, einen zugehörigen Deskriptortag aufweist und die Deskriptortags solcher Datenabschnitte, die ein- und denselben kombinierten Datentransfer betreffen, dieselben sind.
  23. DMA-Controllerbauelement nach Anspruch 1, wobei die Datentransferinitiierungseinrichtung eingerichtet ist zum Empfangen von Transaktionselementinformationen von einer Datenqueue (1140), die Deskriptoren speichert, um zu bestimmen, welche Daten zu holen sind.
  24. DMA-Controllerbauelement nach Anspruch 1, wobei die Datentransferinitiierungseinrichtung eingerichtet ist zum asynchronen Veranlassen von Datentransfers in Erwiderung auf Deskriptoren, die von einer asynchronen Deskriptorqueue (1140) empfangen worden sind, wobei das DMA-Controllerbauelement in einem Einzelbulkcachemodus arbeiten kann, wenn es die asynchrone Deskriptorqueue bedient und die asynchrone Deskriptorqueue nur einen Deskriptor enthält, und wobei die Datentransferinitiierungseinrichtung eingerichtet ist zum selbständigen Holen von Daten im voraus.
  25. DMA-Controllerbauelement nach Anspruch 24, wobei: die Datentransferinitiierungseinrichtung weiterhin eingerichtet ist zum periodischen Veranlassen von Datentransfers in Erwiderung auf Deskriptoren, die von einer periodischen Deskriptorqueue (1140) empfangen worden sind; und das DMA-Controllerbauelement einen Puffer (260, 1220) umfasst, der einen Pufferbereich einer vorbestimmten Größe enthält, wobei der Pufferbereich in einem Betrieb des DMA-Controllerbauelements in dem Einzelbulkcachemodus reserviert ist, um das Holen von Daten im voraus für ein periodisches Planungsschema bei der Rückkehr aus dem asynchronen Planungsschema zu ermöglichen.
  26. DMA-Controllerbauelement nach Anspruch 1, weiterhin umfassend: eine Flagspeichereinrichtung (255, 1225) zum Speichern eines Alle-Daten-Vorhanden-Flags zum Anzeigen, wenn der FIFO-Puffer alle Daten für eine gegebene Transaktion speichert.
  27. DMA-Controllerbauelement nach Anspruch 1, weiterhin umfassend: eine Flag-Speichereinrichtung (255, 1225) zum Speichern eines Paketrandflags, das dem QTAG-Bit (QTAG: Queue Tag) einer gegebenen Transaktion entspricht.
  28. DMA-Controllerbauelement nach Anspruch 1, eingerichtet zum Abwickeln des Datenverkehrs in einem USB-Hostcontroller (USB: Universal Serial Bus) (1000) zwischen wenigstens einem USB-Gerät und einem Systemspeicher (105) eines Computersystems.
  29. DMA-Controllerbauelement nach Anspruch 28, wobei der USB-Hostcontroller ein USB-2-gemäßer Hostcontroller ist.
  30. USB-Hostcontroller (USB: Universal Serial Bus) zum Abwickeln des Datenverkehrs zwischen wenigstens einem USB-Gerät (125) und einem Systemspeicher (105) eines Computersystems, wobei der USB-Hostcontroller (1000) eine DMA-Sendeeinrichtung (DMA: Direct Memory Access) umfasst, wobei die DMA-Sendeeinrichtung (225, 1145) eingerichtet ist zum Ausgeben wenigstens einer Leseanforderung an eine Speicherschnittstelle (200, 1100), wenn für die zugehörigen Antworten genügend Pufferspeicher vorhanden ist, und zum Empfangen angeforderter Daten von der Speicherschnittstelle, wobei die DMA-Sendeeinrichtung umfasst: eine Adressdatenerzeugungseinrichtung (250, 1200, 215, 1300) zum Erzeugen und Ausgeben erster Adressdaten, die einen ersten Speicherbereich (310) identifizieren, wobei der erste Speicherbereich die bestimmten, zu holenden Daten enthält oder der Speicherbereich ist, in den die bestimmten Daten zu schreiben sind; einer Randausrichteinrichtung (245, 1300) zum Empfangen der ersten Adressdaten und Erzeugen zweiter Adressdaten daraus, wobei die zweiten Adressdaten wenigstens einen zweiten Speicherbereich identifizieren, der von dem ersten Speicherbereich an wenigstens einem Rand verschieden ist; eine Antwortempfangseinrichtung (240, 1210) zum Empfangen ungeordneter Daten in Erwiderung auf die wenigstens eine Leseanforderung; und eine Antwortreihenfolgenwiederherstellungseinrichtung (240, 1205) zum Ändern der Reihenfolge, in der die Daten empfangen worden sind, wobei der USB-Hostcontroller in einem hochbandbreitigen Transferbearbeitungsmodus betrieben werden kann, in dem die DMA-Sendeeinrichtung automatisch Hochbandbreitentransfers durch Kombinieren wenigstens zweier Datentransfers veranlasst, die verschiedene Speicherbereiche betreffen, so dass der kombinierte Datentransfer von dem USB-Hostcontroller als ein einzelner Datenstrom behandelt wird.
  31. Verfahren zum Betreiben einer DMA-Einrichtung (DMA: Direct Memory Access) in einem DMA-Controllerbauelement nach einem der Ansprüche 1 bis 29 zum Abwickeln des Datenverkehrs zwischen wenigstens einem Peripheriegerät (125) und einem Systemspeicher (105) eines Computersystems, wobei das Verfahren umfasst: Bestimmen (505) erster Adressdaten, die einen ersten Speicherbereich (310) identifizieren; Bestimmen (610, 700, 725, 750, 760, 805, 905), ob der erste Speicherbereich randausgerichtet ist; wenn der erste Speicherbereich nicht randausgerichtet ist, Erzeugen (616670, 705715, 730, 755, 765, 805, 905) zweiter Adressdaten aus den ersten Adressdaten, wobei die zweiten Adressdaten wenigstens einen zweiten Speicherbereich identifizieren, der von dem ersten Speicherbereich an wenigstens einem Rand verschieden ist; Erzeugen wenigstens einer Leseanforderung auf Grundlage der zweiten Adressdaten und Senden der wenigstens einen Leseanforderung an eine Speicherschnittstelle, wenn für die zugehörigen Antworten genügend Pufferspeicher vorhanden ist; Neuordnen von Antwortdaten, die ungeordnet empfangen werden; und Senden der angeforderten und empfangenen neugeordneten Antwortdaten an eine Geräteschnittstelle (270, 1230), wobei das DMA-Controllerbauelement in einem hochbandbreitigen Transferbearbeitungsmodus betrieben werden kann, in dem das Verfahren ferner umfasst: automatisches Veranlassen von Hochbandbreitentransfers durch Kombinieren wenigstens zweier Datentransfers, die verschiedene Speicherbereiche betreffen, so dass der kombinierte Datentransfer von dem DMA-Controllerbaulement als ein einzelner Datenstrom behandelt wird.
  32. Verfahren nach Anspruch 31, wobei der Schritt des Erzeugens der zweiten Adressdaten umfasst: Ausrichten der ersten Adressdaten an Cachezeilengrenzen eines Caches (205) der Speicherschnittstelle.
  33. Verfahren nach Anspruch 32, wobei die Cachezeilengrenzen Grenzen von 64-Byte-Cachezeilen sind.
  34. Verfahren nach Anspruch 32, wobei der Schritt des Erzeugens der zweiten Adressdaten umfasst: Maskieren von Bits in den ersten Adressdaten.
  35. Verfahren nach Anspruch 31, wobei der Schritt des Erzeugens der zweiten Adressdaten umfasst: Ausrichten der ersten Adressdaten an Doppelwortgrenzen.
  36. Verfahren nach Anspruch 35, wobei der Schritt des Erzeugens der zweiten Adressdaten umfasst: Maskieren von Bits in den ersten Adressdaten.
  37. Verfahren nach Anspruch 31, wobei die zweiten Adressdaten, die aus den ersten Adressdaten erzeugt worden sind, wenigstens zwei zweite Speicherbereiche identifizieren und der Schritt des Erzeugens der zweiten Adressdaten umfasst: Erzeugen wenigstens zweier Leseanforderungen zum Anfordern der bestimmten Daten.
  38. Verfahren nach Anspruch 37, wobei die wenigstens zwei zweiten Speicherbereiche in dem ersten Speicherbereich umfasst sind.
  39. Verfahren nach Anspruch 31, wobei der Schritt des Erzeugens der zweiten Adressdaten umfasst: Maskieren von Bits in den ersten Adressdaten.
  40. Verfahren nach Anspruch 39, wobei die ersten Adressdaten eine Basisadresse enthalten und der Schritt des Erzeugens der zweiten Adressdaten umfasst: Maskieren von Bits in der Basisadresse bei der Erzeugung der zweiten Adressdaten.
  41. Verfahren nach Anspruch 39, wobei die ersten Adressdaten Größendaten enthalten, die die Anzahl von zu lesenden Bytes angeben, und der Schritt des Erzeugens der zweiten Adressdaten umfasst: Maskieren von Bits in den Größendaten bei der Erzeugung der zweiten Adressdaten.
  42. Verfahren nach Anspruch 31, wobei der wenigstens eine zweite Speicherbereich einen Unterbereich enthält, der in dem ersten Speicherbereich nicht enthalten ist.
  43. Verfahren nach Anspruch 42, weiterhin umfassend: Übergehen von Daten, die aus dem Unterbereich gelesen worden sind.
  44. Verfahren nach Anspruch 31, wobei die ersten Adressdaten eine Basisadresse und Größendaten enthalten und die Größendaten die gesamte Transferlänge der zu holenden Daten angeben.
  45. Verfahren nach Anspruch 44, wobei der Schritt des Erzeugens der zweiten Adressdaten umfasst: Aufrunden der gesamten Transferlänge auf volle Doppelwörter bei der Erzeugung der zweiten Adressdaten.
  46. Verfahren nach Anspruch 31, wobei die zweiten Adressdaten eine Basisadresse und Größendaten enthalten und die Größendaten die Anzahl von zu lesenden Bytes angeben.
  47. Verfahren nach Anspruch 31, eingerichtet zum Abwickeln des Datenverkehrs in einem USB-Hostcontroller (USB: Universal Serial Bus) (1000) zwischen wenigstens einem USB-Gerät und einem Systemspeicher (105) eines Computersystems.
  48. Verfahren nach Anspruch 47, wobei der USB-Hostcontroller ein USB-2-gemäßer Hostcontroller ist.
DE10213839.7A 2002-03-27 2002-03-27 DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus Expired - Lifetime DE10213839B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE10213839.7A DE10213839B4 (de) 2002-03-27 2002-03-27 DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus
US10/184,407 US6823403B2 (en) 2002-03-27 2002-06-27 DMA mechanism for high-speed packet bus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10213839.7A DE10213839B4 (de) 2002-03-27 2002-03-27 DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus

Publications (2)

Publication Number Publication Date
DE10213839A1 DE10213839A1 (de) 2003-10-23
DE10213839B4 true DE10213839B4 (de) 2016-11-03

Family

ID=28458418

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10213839.7A Expired - Lifetime DE10213839B4 (de) 2002-03-27 2002-03-27 DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus

Country Status (2)

Country Link
US (1) US6823403B2 (de)
DE (1) DE10213839B4 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340554B2 (en) * 2003-05-15 2008-03-04 Nxp B.V. USB host controller with DMA capability
US7231505B1 (en) * 2003-08-26 2007-06-12 Marvell International Ltd. Aligning IP payloads on memory boundaries for improved performance at a switch
US20060031603A1 (en) * 2004-08-09 2006-02-09 Bradfield Travis A Multi-threaded/multi-issue DMA engine data transfer system
US7478180B1 (en) * 2005-12-14 2009-01-13 Vmware, Inc. Virtualizing a communications channel in which blocks of data are divided into multiple sub-blocks for conveyance
JP2007249938A (ja) * 2006-02-14 2007-09-27 Matsushita Electric Ind Co Ltd Usbホストシステム、avデータ再生装置およびavデータ記録装置
JP4908017B2 (ja) * 2006-02-28 2012-04-04 富士通株式会社 Dmaデータ転送装置及びdmaデータ転送方法
US7802005B2 (en) * 2007-03-30 2010-09-21 Motorola, Inc. Method and apparatus for configuring buffers for streaming data transfer
US20090089515A1 (en) * 2007-10-02 2009-04-02 Qualcomm Incorporated Memory Controller for Performing Memory Block Initialization and Copy
US7870314B2 (en) * 2008-02-15 2011-01-11 International Business Machines Corporation Method and system for implementing store buffer allocation
JP5482230B2 (ja) * 2010-01-25 2014-05-07 富士通株式会社 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム
TW201308200A (zh) * 2011-08-12 2013-02-16 Ite Tech Inc 橋接裝置及其資料預取及丟棄之方法
JP5906078B2 (ja) * 2011-12-20 2016-04-20 キヤノン株式会社 データ転送装置及びデータ転送方法
US20130185491A1 (en) * 2012-01-17 2013-07-18 Skymedi Corporation Memory controller and a method thereof
US10303618B2 (en) 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US10095433B1 (en) 2012-10-24 2018-10-09 Western Digital Technologies, Inc. Out-of-order data transfer mechanisms for data storage systems
US8943240B1 (en) * 2013-03-14 2015-01-27 Xilinx, Inc. Direct memory access and relative addressing
US9563586B2 (en) * 2013-04-11 2017-02-07 Apple Inc. Shims for processor interface
US9411735B2 (en) * 2014-04-15 2016-08-09 International Business Machines Corporation Counter-based wide fetch management
DE102016206109A1 (de) * 2016-04-13 2017-10-19 Robert Bosch Gmbh Speicherdirektzugriffssteuereinrichtung für mindestens eine einen Arbeitsspeicher aufweisende Recheneinheit
US10303630B2 (en) * 2017-10-08 2019-05-28 Huawei Technologies Co., Ltd. Configurable hardware accelerators
JP7102936B2 (ja) * 2018-05-23 2022-07-20 日本電信電話株式会社 パケット処理装置およびパケット処理方法
US11403247B2 (en) 2019-09-10 2022-08-02 GigaIO Networks, Inc. Methods and apparatus for network interface fabric send/receive operations
WO2021081409A1 (en) * 2019-10-25 2021-04-29 GigaIO Networks, Inc. Methods and apparatus for dma engine descriptors for high speed data systems
US11295206B2 (en) 2020-02-07 2022-04-05 Google Llc Interleaving memory requests to accelerate memory accesses

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003122A (en) * 1995-12-29 1999-12-14 Intel Corporation Direct memory access controller
EP0997822A2 (de) * 1998-10-28 2000-05-03 Nec Corporation Direktspeicherzugriff-Steuereinrichtung und -Verfahren
US6266715B1 (en) * 1998-06-01 2001-07-24 Advanced Micro Devices, Inc. Universal serial bus controller with a direct memory access mode

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0419869A3 (en) * 1989-09-29 1992-06-03 Kabushiki Kaisha Toshiba Personal computer for accessing two types of extended memories having different memory capacities
US5465357A (en) * 1992-06-22 1995-11-07 International Business Machines Corporation Method and apparatus for an automated dynamic load of an ABIOS device support layer in a computer system
US6098113A (en) * 1992-10-22 2000-08-01 Ncr Corporation Apparatus and method for address translation and allocation for a plurality of input/output (I/O) buses to a system bus
KR960706657A (ko) * 1993-11-30 1996-12-09 토마스 씨. 토코스 공유 메모리 시스템에서의 병행 동작을 가능하게 하고 최대화하는 방법 및 장치(method and apparatus for providing and maximizing concurrent operations in a shared memory system)
US5890207A (en) * 1996-11-27 1999-03-30 Emc Corporation High performance integrated cached storage device
US6330623B1 (en) * 1999-01-08 2001-12-11 Vlsi Technology, Inc. System and method for maximizing DMA transfers of arbitrarily aligned data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003122A (en) * 1995-12-29 1999-12-14 Intel Corporation Direct memory access controller
US6266715B1 (en) * 1998-06-01 2001-07-24 Advanced Micro Devices, Inc. Universal serial bus controller with a direct memory access mode
EP0997822A2 (de) * 1998-10-28 2000-05-03 Nec Corporation Direktspeicherzugriff-Steuereinrichtung und -Verfahren

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Hans-Peter Messmer: PC-Hardwarebuch. 5. Auflage. Bonn : Addison-Wesley, 1997. Seiten 713, 714. - ISBN 3-8273-1302-3 *
HyperTransport I/O Link Specification. In: HyperTransport Technology Consortium, Revision 1.03, 10.10.2001, Seite 61. *

Also Published As

Publication number Publication date
US6823403B2 (en) 2004-11-23
US20030172224A1 (en) 2003-09-11
DE10213839A1 (de) 2003-10-23

Similar Documents

Publication Publication Date Title
DE10213839B4 (de) DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus
DE602004012106T2 (de) Multikanal-DMA mit gemeinsamem FIFO-Puffer
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE60215417T2 (de) Netzwerkschaltung
DE10234991B4 (de) Hostcontrollerdiagnose für einen seriellen Bus
DE102012209016B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102018006756A1 (de) Beschleuniger-Fabric
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE102012208803B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE60304455T2 (de) Usb host controller
DE102012209009B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE102008055892A1 (de) Abspeichern von Abschnitten eines Datenübertragungsdeskriptors in einem gecachten und einem nicht gecachten Adressbereich
DE10234990B4 (de) Hostcontroller, Verfahren zum Betreiben, zugehöriges Southbridgebauelement und Computersystem zur Steuerung der Ersetzung im voraus geholter Deskriptoren in einem Cache
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE102012209011A1 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102005041312A1 (de) Speicherzugriff auf virtuelles Targetgerät
DE102007029833B4 (de) Mikrocontroller mit Datenmodifikationsmodul und System umfassend ein Datenmodifikationsmodul
DE602004010399T2 (de) Neuadressierbare virtuelle dma-steuer und statusregister
DE10239814A1 (de) Erweiterte Testmodusunterstützung für Hostcontroller
DE112007000688T5 (de) Fehlerverwaltungstopologien
DE10224163A1 (de) Transaktionsdauermanagement in einem USB-Hostcontroller
DE102012209014B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R071 Expiry of right