-
ERFINDUNGSGEBIET
-
Die
vorliegende Erfindung betrifft im allgemeinen Computersysteme und
insbesondere das Verwalten von Speicherzugriffsanforderungen in
einem Computersystem.
-
HINTERGRUND
DER ERFINDUNG
-
In
einem beispielhaften Computersystem können Zugriffsanforderungen
auf Daten, die in Speichervorrichtungen des Systems gespeichert
sind, durch Peripheriegeräte
bestätigt
werden. Beispielsweise kann ein Sprecher Audiodaten von den Speichervorrichtungen
erhalten. Zur Steuerung der Peripheriegeräte kann das Computersystem
eine Eingang/Ausgang-Steuerung enthalten, die mit den Peripheriegeräten gekoppelt
ist. Die Eingang/Ausgang-Steuerung kann eine Reihe von Steuerungen (z.B.
eine Audiosteuerung) enthalten, die jeweils für eine bestimmte Art von Peripheriegeräten zuständig ist
(z.B. Audiogeräte).
Die Steuerungen können
Speicherzugriffsanforderungen für
die entsprechenden Peripheriegeräte
bestätigen.
Die Eingang/Ausgang-Steuerung vermittelt zwischen den Speicherzugriffsanforderungen
und sendet die Anforderung über einen
Anschluß (z.B.
Peripheriekomponentenanschluß-Expressbus)
an die Speichervorrichtungen.
-
Nach
dem Peripheriekomponentenanschluß-(PCI)-Expressprotokoll ist
eine Periode in eine Reihe von Zeitfenstern aufgeteilt. Jeder Steuerung
innerhalb der Eingang/Ausgang-Steuerung
ist einer Reihe von Zeitfenstern zugeordnet. Eine Anforderung wird
in jedem zugeordneten Zeitfenster gesendet. Da die Anforderungen
jedoch in unterschiedlichen Längen
auftreten, wird die überschüssige Bandbreite
in einem Zeitfenster nicht verwendet, wenn die Anforderung nicht
das gesamten Zeitfenster in Anspruch nimmt.
-
Außerdem können die
Anforderungen unterschiedliche Niveaus von Wartezeitempfindlichkeit aufweisen.
Die bestehenden Steuerungen stellen jedoch keinen Mechanismus bereit,
Anforderungen mit unterschiedlichen Wartezeitempfindlichkeitsniveaus zu
unterscheiden und die Anforderungen als Reaktion auf ihre Wartezeitempfindlichkeit
zu verwalten. Daher können
Anforderungen mit einem hohen Wartezeitempfindlichkeitsniveau nicht
rechtzeitig an die Speichervorrichtungen gesendet werden und in
der Folge kann es zu Pannen im Datenstrom kommen.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung ist umfassender aus der folgenden Beschreibung
und den beigefügten
Zeichnungen verständlich,
die jedoch nicht zur Beschränkung
der angehängten
Ansprüche
auf die gezeigten Ausführungsform
herangezogen werden sollten, sondern nur der Erläuterung und dem Verständnis dienen.
-
1 zeigt
ein Flußdiagramm
einer Ausführungsform
eines Prozesses zum Verwalten von Speicherzugriffsanforderungen.
-
2 zeigt
eine Ausführungsform
einer Eingang/Ausgang-Steuerung.
-
3A zeigt
eine Ausführungsform
einer Schaltung zum Bestimmen der Länge einer Datenanforderung.
-
3B zeigt
eine Ausführungsform
einer Schaltung zum Bestimmen der Länge einer Zwischenspeicherdeskriptoranforderung.
-
3C zeigt
ein Zustandsdiagramm einer Ausführungsform
einer Prioritätszustandsmaschine.
-
3D zeigt
eine Ausführungsform
eines Vermittlers.
-
4 zeigt
eine beispielhafte Ausführungsform
eines Computersystems.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
In
der folgenden Beschreibung wurden ein Verfahren und ein Apparat
zum Verwalten von Speicherzugriffsanforderungen offenbart. Zahlreiche
spezifische Einzelheiten werden im folgenden näher dargestellt. Es versteht
sich jedoch, daß Ausführungsformen
der Erfindung ohne diese spezifischen Einzelheiten ausgeführt werden
können.
In anderen Fällen
wurden wohlbekannte Schaltungen, Strukturen und Techniken nicht
im Detail dargestellt, um das Verständnis dieser Beschreibung nicht
zu erschweren.
-
In
der Beschreibung bedeutet die Bezugnahme auf „eine Ausführungsform", daß ein bestimmtes Merkmal, eine
bestimmte Struktur oder eine bestimmte Eigenschaft, die im Zusammenhang
mit der Ausführungsform
beschrieben wurden, in mindestens einer Ausführungsform der Erfindung enthalten sind.
Das Auftreten des Satzes „in
einer Ausführungsform" an verschiedenen
Stellen der Beschreibung bezieht sich nicht notwendigerweise auf
dieselbe Ausführungsform.
-
Einige
Abschnitte der folgenden ausführlichen
Beschreibung werden im Rahmen symbolischer Darstellung von Databit-Operationen
in einem Computerspeicher dargestellt. Diese Beschreibungen und
Darstellungen sind die Werkzeuge, die von den Fachleuten auf dem
Gebiet der Datenverarbeitung verwendet werden, um das Wesen ihrer
Arbeit am effektivsten an andere Fachleute zu übermitteln. Ein Algorithmus
bedeutet hier und allgemein eine unabhängige Abfolge von Operationen,
die zu einem erwünschten
Ergebnis führt.
Die Operationen erfordern physische Handhabung physikalischer Größen. Diese
Größen nehmen
in der Regel, aber nicht notwendigerweise die Form elektrischer
oder magnetischer Signale an, die in der Lage sind, gespeichert, übertragen,
kombiniert, verglichen oder anderweitig gehandhabt zu werden. Es
hat sich zuweilen aus Gründen der
Allgemeingebräuchlichkeit
als zweckmäßig erwiesen,
diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe,
Zahlen oder dergleichen zu bezeichnen.
-
Es
sei jedoch daran erinnert, daß all
diese und ähnliche
Begriffe im Zusammenhang mit den entsprechenden physikalischen Größen zu verwenden
sind und lediglich diesen Größen zugeordnete zweckmäßige Etiketten
darstellen. Sofern in der folgenden Beschreibung nicht anders angegeben,
werden Erläuterungen
in der gesamten Beschreibung, die Begriffe wie „verarbeiten", „berechnen", „bestimmen" oder „anzeigen" verwenden, als bezogen
auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen
elektronischen Berechnungsvorrichtung, das/die als physikalische
(elektronische) Größen dargestellte
Daten innerhalb der Register und Speicher eines Computersystems
handhabt und in andere Daten umwandelt, welche innerhalb der Speicher
oder Register des Computersystems oder anderer derartiger Informationsspeicher-,
-übertragungs-
oder -anzeigevorrichtungen auf ähnliche
Weise als physikalische Größen dargestellt
werden.
-
Ausführungsformen
der vorliegenden Erfindung betreffen auch einen Apparat zum Ausführen der
hier beschriebenen Operationen. Dieser Apparat kann für den erfor derlichen
Zweck speziell konstruiert sein oder einen Universalcomputer umfassen, der
durch ein auf dem Computer gespeichertes Computerprogramm gezielt
betätigt
oder konfiguriert ist. Ein solches Computerprogramm kann in einem
computerlesbaren Speichermedium gespeichert sein, wie beispielsweise,
jedoch nicht darauf beschränkt,
jede Art von Disketten, einschließlich Floppy Disk, optische
Diskette, CD-ROM und magnetooptische Diskette, Lesespeicher (ROMs),
Direktzugriffsspeicher (RAMs), EPROMs, EEPROMs, magnetische oder optische
Karten oder jede Art von Medien, die sich zum Speichern elektronischer
Befehle eignen und die jeweils mit einem Computersystembus gekoppelt sind.
-
Die
hier dargestellten Operationen und Anzeigen sind nicht inhärent auf
einen bestimmten Computer oder einen bestimmten Apparat bezogen. Verschiedene
Universalsysteme können
mit Programmen gemäß den hier
dargestellten Lehren verwendet werden oder es kann sich als zweckmmäßig erweisen,
zur Ausführung
der beschriebenen Operationen spezifischere Apparate zu konstruieren.
Die für
eine Reihe dieser Systeme benötigte
Struktur wird aus der unten stehenden Beschreibung ersichtlich. Außerdem können Ausführungsformen
der vorliegenden Erfindung nicht mit Bezug auf irgendeine besondere
Programmiersprache beschrieben werden. Es versteht sich, daß eine Reihe
von Programmiersprachen verwendet werden können, um die hier beschriebenen
Lehren der Erfindung umzusetzen.
-
So
wie der Begriff „maschinenlesbares
Medium" hier verwendet
wird, umfaßt
er jede Art von Mechanismus zum Speichern oder Übertragen von Informationen
in einer Form, die durch eine Maschine (z.B. einen Computer) lesbar
ist. Beispielsweise umfaßt
ein maschinenlesbares Medium ROM, RAM, magnetische Diskettenspeichermedien,
optische Speichermedien, Flash-Speicher-Vorrichtungen, elektrische,
optische, akustische oder andere Arten von sich ausbreitenden Signalen
(z.B. Trägerwellen, Infrarotsignale,
Digitalsignale usw.); usw.
-
1 zeigt
ein Flußdiagramm
einer Ausführungsform
eines Prozesses zum Verwalten von Speicherzugriffsanforderungen.
Der Prozess wird durch eine Verarbeitungslogik ausgeführt, die
Hardware (z.B. Schaltungen, fest zugeordnete Logik usw.), Software
(wie beispielsweise auf einem Universalcomputersystem oder einer
fest zugeordneten Maschine betrieben wird) oder eine Kombination
aus beidem umfassen kann.
-
Die
Verarbeitungslogik bestätigt
mit Hilfe einer Reihe von Speicherzugriffssteuerungen (Verarbeitungsblock 110)
eine Reihe von Anforderungen, auf die Speicher vorrichtungen zuzugreifen.
Die Anforderungen können
als Reaktion auf einen von einer zentralen Verarbeitungseinheit
in einem Computersystem kommenden Befehl bestätigt werden. Die Anforderungen
können
Anforderungen zum Lesen und/oder Schreiben von Daten und Zwischenspeicherdeskriptoranforderungen
umfassen. Die Speicherzugriffssteuerungen können Direktspeicherzugriffs-(DMA)-Steuerungen,
wie Daten-DMA-Steuerungen
(sowohl Eingang als auch Ausgang) und DMA-Steuerungen für den Zwischenspeicherdeskriptor
(BD) umfassen. In einer Ausführungsform
ist eine Daten-DMA-Steuerung
für den
Zugriff auf Daten in der Speichervorrichtung zuständig, während eine BD-DMA-Steuerung
für den
Zugriff auf BDs in einer BD-Liste zuständig ist. Jeder BD enthält eine
Adresse und eine Größe eines
Stücks
Daten in den Speichervorrichtungen. In einer Ausführungsform
weist jede Daten-DMA-Steuerung eine entsprechende BD-DMA-Steuerung
auf.
-
In
einer Ausführungsform
sind die DMA-Steuerungen Teil einer Audiosteuerung in einer Eingang/Ausgang-Steuerung
eines Computersystems. Die Audiosteuerung kann die Datenübertragung
zwischen einem oder mehreren Audiocode-Decodierer und den Speichervorrichtungen
steuern. Derartige Audiocode-Decodierer können Bestandteil eines Headsets,
eines Lautsprechers, eines Telefons usw. sein.
-
Unter
Bezugnahme auf 1 modifiziert die Verarbeitungslogik
dynamisch die Attribute jeder der Anforderungen (Verarbeitungsblock 120).
Beispielsweise modifiziert die Verarbeitungslogik dynamisch die
Prioritäten
der Anforderungen als Reaktion auf die Wartezeitempfindlichkeit
der Anforderungen. Die Wartezeitempfindlichkeit ist bezogen auf
die erforderliche Schnelligkeit der Datenübertragung der Daten. Eine
Anforderung benötigt
schnellere Datenübertragung,
wenn die Wartezeitempfindlichkeit der Anforderung höher ist.
-
In
einer Ausführungsform
klassifiziert die Verarbeitungslogik die Wartezeitempfindlichkeit
der Anforderungen in zwei Niveaus, nämlich hoch und niedrig. Die
Verarbeitungslogik kann eine DMA-Steuerung veranlassen, eine Anforderung
mit einer Wartezeitempfindlichkeit des niedrigen Niveaus zu bestätigen, wenn
die Daten, die aus einem Zwischenspeicher der DMA-Steuerung geholt
oder daraus entfernt werden können,
eine erste Schwelle erreichen. Außerdem kann die Verarbeitungslogik
die DMA-Steuerung veranlassen, die Wartezeitempfindlichkeit der Anforderung
auf das hohe Niveau zu erhöhen,
wenn der in dem Zwischenspeicher verfügbare Raum einen zweiten Schwellenwert
erreicht. Der zweite Schwellenwert hängt nicht von dem ersten Schwellenwert
ab.
-
Unter
Bezugnahme auf 1 vermittelt die Verarbeitungslogik
zwischen den Anforderungen, um eine Anforderung zum Senden an die
Speichervorrichtungen in einem Zeitfenster als Reaktion auf die Attribute
auszuwählen
(Verarbeitungsblock 130). Die Verarbeitungslogik kann bei
jedem Taktzyklus vermitteln, um die Anforderung mit der höchsten Wartezeitempfindlichkeit
auszuwählen.
Die Verarbeitungslogik kann verschiedene Vermittlungsschemata annehmen,
wie beispielsweise First-Come-First-Serve (FCFS), Weighted Round Robin (WWR)
usw. Die Einzelheiten verschiedener Vermittlungsschemata werden
weiter unten beschrieben. Außerdem
kann dem Zeitfenster eine Anschlußsteuerung zugeordnet sein,
wie beispielsweise eine digitale Multimediaanschluß-(DMI)-Steuerung,
Schnittstellenbildung mit einem Anschluß (beispielsweise DMI), der
die Audiosteuerung mit den Speichervorrichtungen koppelt.
-
Außer dem
Priorisieren der Anforderungen kann die Verarbeitungslogik die Länge der
Anforderungen dynamisch als Reaktion auf die Größe des Zeitfensters ändern (Verarbeitungsschritt 140).
Beispielsweise kann die Verarbeitungslogik die Länge der Anforderung bis auf
die Größe des Zeitfensters vergrößern, wenn
der Umfang der verfügbaren
Daten, die geholt oder entfernt werden sollen, zunimmt.
-
In
einer Ausführungsform
bestimmt die Verarbeitungslogik die Länge einer Anforderung als Reaktion
auf verschiedene Faktoren. Zu den Faktoren gehört beispielsweise der in dem
Zwischenspeicher der DMA-Steuerung verfügbare Platz und die verbleibenden
Datenbytes, die aus dem entsprechenden BD gelesen oder in den entsprechenden
BD geschrieben werden. Außerdem
kann die Verarbeitungslogik nicht ermöglichen, daß die Länge der Anforderungen die Obergrenze
der Schlitzgröße des Anschlusses, über den
die Anforderung gesendet wird, nicht übersteigt. Durch das dynamische Ändern der
Anforderungslänge
kann die Verarbeitungslogik, wo möglich, kleinere Anforderungen
zu größeren Anforderungen
vereinen, um jedes der Audiosteuerung zugeordneten Zeitfenster besser
auszunutzen. In der Folge kann die Verarbeitungslogik die Effizienz
der Audiosteuerung vergrößern.
-
Schließlich sendet
die Verarbeitungslogik die ausgewählte Anforderung an die Speichervorrichtungen
(Verarbeitungsschritt 150). Wie oben erwähnt, kann
die Verarbeitungslogik die Anforderung über den DMI an die Speichervorrichtungen
senden. In einer Ausführungsform
folgt die Verarbeitungslogik dem Peripheriekomponentenanschluß-(PCI)-Expressprotokoll,
welches isochrone Datenübertragung unterstützt. Die
Fähigkeit,
die Anforderungslänge
dynamisch zu ändern
und Anforderungen entspre chend der Wartezeitempfindlichkeit zu priorisieren, ermöglicht isochrone
Datenübertragung,
um die zugeordnete Bandbreite über
eine relevante Zeitperiode zu empfangen, ohne den nicht isochronen
Verkehr zu behindern.
-
2 veranschaulicht
eine Ausführungsform
einer Eingang/Ausgang-Steuerung. Die Eingang/Ausgang-Steuerung 200 enthält eine
Anschlußsteuerung 210 (z.B.
eine DMI-Steuerung), eine
Reihe von Peripheriegerätesteuerungen 220 und 230 und
einen Bus 215, der die Peripheriegerätesteuerungen 220 und 230 an
die Anschlußsteuerung 210 koppelt.
Die Anschlußsteuerung 210 treibt einen
Anschluß 208 (z.B.
einen DMI) n. Speichervorrichtungen sind über den Anschluß 208 mit
der Eingang/Ausgang-Steuerung 200 gekoppelt.
Die Anschlußsteuerung 210 und
der Bus können
auch zusammen als „Rückgrat" der Eingang/Ausgang-Steuerung 200 bezeichnet
werden. Die Peripheriegerätesteuerungen 220 und 230 können eine
Universal-Serial-Bus-(USB)-Steuerung,
eine Audiosteuerung usw. enthalten.
-
In
einer Ausführungsform
enthält
die Audiosteuerung 230 einen Vermittler 240, eine
Reihe von Ausgangs-DMA-Maschinen 250 und eine Reihe von Eingangs-DMA-Maschinen 260.
Die Audiosteuerung 230 kann beispielsweise vier Ausgangs-DMA-Maschinen und vier
Eingangs-DMA-Maschinen enthalten. Die Eingangs- und Ausgangs-DMA-Maschinen 250 und 260 treiben
einen oder mehrere Audiocode-Decodierer 270 in
einem oder mehreren Peripheriegeräten wie beispielsweise Lautsprechern,
Telefonen, Headsets usw. an. Es sei darauf hingewiesen, daß nur eine
Ausgangs-DMA-Maschine 250 und eine
Eingangs-DMA-Maschine 260 in 2 dargestellt
sind, um das Verständnis
der Ausführungsform nicht
zu erschweren.
-
Jede
Ausgangs-DMA-Maschine 250 kann eine BD-DMA-Steuerung 252 und
eine Daten-DMA-Steuerung 254 enthalten. Die BD-DMA-Steuerung 252 kann
eine Prioritätszustandsmaschine 2521,
Schaltungen zum Bestimmen der BD-Anforderungslänge und einen BD-Zwischenspeicher 2525 enthalten.
Der BD-Zwischenspeicher 2525 kann einen First-In-First-Out-(FIFO)-Zwischenspeicher
enthalten. Ebenso kann die Daten-DMA-Steuerung 254 eine
Prioritätszustandsmaschine 2541,
Schaltungen 2543 zum Bestimmen der Datenanforderungslänge und
einen Ausgangsdatenzwischenspeicher 2545 enthalten. Der
Ausgangsdatenzwischenspeicher 2545 kann einen FIFO-Zwischenspeicher
enthalten.
-
Jede
Eingangs-DMA-Maschine 260 kann eine BD-DMA-Steuerung 262 und
eine Daten-DMA-Steuerung 264 enthalten. Die BD-DMA-Steuerung 262 kann
eine Priori tätszustandsmaschine 2621,
Schaltungen 2623 zum Bestimmen der BD-Anforderungslänge und
einen BD-Zwischenspeicher 2625 enthalten. Der BD-Zwischenspeicher 2625 kann
einen First-In-First-Out-(FIFO)-Zwischenspeicher enthalten. In einer
Ausführungsform
enthält
die Daten-DMA-Steuerung 264 eine Prioritätszustandsmaschine 2641,
Schaltungen 2643 zum Bestimmen der Datenanforderungslänge und
einen Ausgangsdatenzwischenspeicher 2645. Der Ausgangsdatenzwischenspeicher
kann einen FIFO-Zwischenspeicher enthalten.
-
Jede
der BD-DMA-Steuerungen 252 und 262 sowie die Daten-DMA-Steuerungen 254 und 264 bestätigen eine
Anforderung, auf die Speichervorrichtungen zuzugreifen, und senden
die Anforderung an den Vermittler 240. Der Vermittler 240 wählt eine Anforderung
aus diesen Anforderungen in Reaktion auf die Wartezeitempfindlichkeit
dieser Anforderungen aus und stellt die Anforderung dem Rückgrat der Eingang/Ausgang-Steuerung 230 dar.
Die Anschlußsteuerung 210 weist
jeder der Steuerungen 220 und 230 periodisch ein
Zeitfenster zu. Wenn der Audiosteuerung 230 ein Zeitfenster
zugeordnet ist, wird die ausgewählte
Anforderung dem zugeordneten Zeitfenster über den Anschluß 208 gesendet.
-
Zur
Steigerung der Effizienz der Audiosteuerung 230 enthält jede
der BD- und Daten-DMA-Steuerungen 252, 262, 254 und 264 eine
Prioritätszustandsmaschine
(beispielsweise die Prioritätszustandsmaschine 2521, 2541, 2621 und 2641),
um die Anforderungen der DMA-Steuerungen als Reaktion auf die Wartezeitempfindlichkeit
der Anforderungen dynamisch zu priorisieren. In einer Ausführungsform wird
die Wartezeitempfindlichkeit in zwei Niveaus eingeteilt, nämlich hoch
und niedrig. Die Prioritätszustandsmaschine
kann als Reaktion auf den in dem Zwischenspeicher der entsprechenden
DMA-Steuerung verfügbaren
Platz das Niveau der Wartezeitempfindlichkeit verändern. Weitere
Einzelheiten der Prioritätszustandsmaschine
werden weiter unten erläutert.
-
Außerdem enthält jede
der DMA-Steuerungen 252, 262, 254 und 264 Schaltungen
zum Bestimmen der Anforderungslänge
als Reaktion auf die Größe des der
Audiosteuerung 230 zugeordneten Zeitfensters. Beispielsweise
kann eine Reihe von kleineren Anforderungen zu einer einzigen Anforderung kombiniert
werden, die in einem einzigen Zeitfenster gesendet wird. Daher können die
DMA-Steuerungen 252, 262, 254 und 264 das
zum Senden der Anforderung zugewiesenen Zeitfenster durch dynamisches Ändern der
Anforderungslänge
besser ausnutzen.
-
Obwohl
die offenbarte Technik oben mit Bezug auf die Audiosteuerung 230 beschrieben
wurde, sollte klar sein, daß die
Technik auf andere Steuerungen in dem Computersystem anwendbar ist,
um Speicherzugriffsanforderungen zu verwalten.
-
3A veranschaulicht
eine Ausführungsform
einer Schaltung zum Bestimmen von Datenanforderungslängen in
einer Daten-DMA-Steuerung. Die Schaltung 310 enthält eine
Reihe von Multiplexern 3110–3170 und einen Flip-Flop 3180.
Die Ausgabe jedes der Multiplexer 3110–3160 wird in den Multiplexer 3170 eingegeben.
Die Ausgabe von Multiplexer 3170 wird in den Flip-Flop 3180 eingegeben. Der
Flip-Flop 3180 kann einen Verzögerungs-Flip-Flop (D-Flip-Flop)
enthalten. Die Ausgabe von Flip-Flop 3180 ist die bestimmte
Datenanforderungslänge
req_byte_len[7:0]. Steuersignale (z.B. max_len[31:0] >= × 80) werden in die Multiplexer 3110–3160 eingegeben.
-
In
einer Ausführungsform
werden drei Variablen definiert, um eine Datenanforderungslänge zu bestimmen,
REQ_LEN, REM_DESC_LEN und FIFO_SPACE. REQ_LEN ist die Anforderungslänge. REM_DESC_LEN
ist die Anzahl der verbleibenden Datenbytes, die in den entsprechenden
Zwischenspeicher geschrieben oder aus ihm gelesen werden müssen. FIFO_SPACE
ist der zur Auslösung
einer Lese-/Schreib-Anforderung verfügbare Zwischenspeicherplatz.
-
REQ_LEN
kann nach drei Regeln bestimmt werden. Erstens darf die Anforderungslänge nicht
die maximale Schlitzgröße des Anschlusses übersteigen, über den
die Anforderung gesendet wird. Beispielsweise läßt ein Anschluß, der das
PCI-Express-Protokoll annimmt, eine maximale Schlitzgröße von 128
Bytes zu und daher kann die Anforderungslänge in einem PCI-Express-Protokoll
128 Byte nicht überschreiten.
Zweitens darf REQ_LEN nicht REM_DESC_LEN überschreiten. Drittens wird REQ_LEN
so eingestellt, daß sie
nach den beiden obigen Regeln im wesentlichen gleich FIFO_SPACE ist.
In einer Ausführungsform
umfaßt
REQ_LEN 8 Byte, wenn FIFO_SPACE 16 Byte beträgt und der 16-Byte-Modus aktiviert
ist. Wenn FIFO_SPACE 32 Byte beträgt, dann beträgt REQ_LEN
32 Byte. Wenn FIFO_SPACE 64 Byte beträgt, dann beträgt REQ_LEN
64 Byte. Wenn FIFO_SPACE 96 Byte beträgt, dann beträgt REQ_LEN
96 Byte. Wenn FIFO_SPACE 128 Byte beträgt, dann beträgt REQ_LEN
128 Byte. Die obigen Regeln können durch
die in 3A gezeigte Formel dargestellt
werden. Es sei jedoch daran erinnert, daß diese spezifischen Regeln
und Figuren nur zu Veranschaulichungszwecken beschrieben sind. Andere
Ausführungsformen
können
verschiedene Regeln oder Figuren annehmen, um das offenbarte Konzept
umzusetzen.
-
3B veranschaulicht
eine Ausführungsform
der Schaltung zum Bestimmen der BD-Anforderungslänge in einer BD-DMA-Steuerung.
Die Schaltung 320 enthält
einen Multiplexer 3210 und einen Flip-Flop 3220.
Die Ausgabe des Multiplexers 3210 ist mit dem Flip-Flop 3220 gekoppelt,
der die Ausgabe des Multiplexers 3210 verriegelt. Die Ausgabe
von Flip-Flop 3220 ist die bestimmte BD-Anforderungslänge, bd_req_len[1:0].
In einer Ausführungsform weist
jeder BD in einer BD-Liste 16 Byte. Daher kann die Länge eines
BD-Lesens ein Vielfaches von 16 Byte sein (z.B. 16 Byte, 32 Byte,
48 Byte usw.), abhängig
von der Größe des Zwischenspeichers
der BDA-DMA-Steuerung.
-
In
einer Ausführungsform
werden drei Variablen definiert, um die Anforderungslänge einer BD-Anforderung,
nämlich
REQ_LEN, REM_BD_LEN und FIFO_SPACE zu bestimmen. REQ_LEN ist die BD-Anforderungslänge. REM_BD_LEN
ist die Anzahl der zum Lesen aus der entsprechenden BD-Liste verbleibenden
BDs. REQ_LEN kann nach drei Regeln bestimmt werden. Erstens darf
REQ_LEN die maximale Schlitzgröße des Anschlusses, über den die
Anforderung gesendet wird, nicht überschreiten. Beispielsweise
läßt ein Anschluß, der das
PCI-Express-Protokoll annimmt, eine maximale Schlitzgröße von 128
Bytes zu und daher kann die Anforderungslänge in einem PCI-Express-Protokoll
128 Byte nicht überschreiten.
Zweitens darf REQ_LEN nicht REM_DESC_LEN überschreiten. Drittens wird REQ_LEN
so eingestellt, daß sie
nach den beiden obigen Regeln im wesentlichen gleich FIFO_SPACE ist.
Insbesondere umfaßt
REQ_LEN, vorausgesetzt, dass die Länge jedes BD 16 Byte beträgt und FIFO-Spache nach den obigen
beiden Regeln 1 BD lang ist, 1 BD, d.h. 16. Byte. Ebenso umfaßt REQ_LEN,
wenn FIFO_SPACE 2 BD lang ist, 32 Byte, und wenn FIFO_SPACE 3 BD
lang ist, dann umfaßt
REQ_LEN 48 Byte. Es sei jedoch daran erinnert, daß diese
spezifischen Regeln und Figuren nur zu Veranschaulichungszwecken
beschrieben sind. Andere Ausführungsformen
können
verschiedene Regeln oder Figuren annehmen, um das offenbarte Konzept
umzusetzen.
-
3C veranschaulicht
das Zustandsdiagramm einer Ausführungsform
einer Prioritätszustandsmaschine
in einer DMA-Steuerung (z.B. eine BD-DMA-Steuerung oder eine Daten-DMA-Steuerung).
Unter Bezugnahme auf 3C weist die Zustandsmaschine
zwei Zustände
auf, nämlich
den geringer Priorität 332 und
den hoher Priorität 334.
In einer Ausführungsform
nimmt die Zustandsmaschine, wenn sie neu eingestellt wird, den Zustand
niedriger Priorität 332 an.
Die Zustandsmaschine kann den Zustand hoher Priorität 334 annehmen,
wenn eine Anforderung durch die DMA-Steuerung bestätigt wurde oder
im nächsten
Taktzyklus bestätigt
werden wird und die Anforde rung weniger wartezeitempfindlich wurde.
Beispielsweise wird eine BD-Anforderung weniger wartezeitempfindlich,
wenn der BD-Zwischenspeicher in der BD-DMA-Steuerung leer st. Eine Anforderung
zum Lesen von Daten kann wartezeitempfindlich werden, wenn die Daten
in dem Datenzwischenspeicher der Daten-DMA-Steuerung unterhalb einem
vorbestimmten Schwellenwert sind. Eine Anforderung zum Schreiben
von Daten kann wartezeitempfindlich werden, wenn der in dem Datenzwischenspeicher
der Daten-DMA-Speicherung verfügbare
Platz unterhalb eines vorbestimmten Schwellwerts fällt, so
wie ein Datenframe.
-
In
einer Ausführungsform
geht die Zustandsmaschine von dem Zustand geringer Priorität 332 zu dem
Zustand hoher Priorität 334 über, wenn
eine Anforderung durch die Anschlußsteuerung 210 der
Eingang/Ausgang-Steuerung 200 angenommen wurde (siehe 2).
-
3D veranschaulicht
eine Ausführungsform
eines Vermittlers einer Audiosteuerung (z.B. den Vermittler 240 in
der Audiosteuerung 230 in 2). Der
Vermittler 340 umfasst zwei Niveaus auf. Das erste Niveau
weist vier Vermittler 3410–3416 und das zweite
Niveau einen festen Prioritätsvermittler 3420.
Die Vermittler des ersten Niveaus können drei First-Come-First-Serve-(FCFS)-Vermittler 3410–3416 und
einen Rundspulen-Vermittler 3416 zum Vermitteln zwischen
Anforderungen mit im wesentlichen der gleichen Wartezeitpriorität umfassen. Der
Vermittler 3420 des zweiten Niveaus vermittelt zwischen
den Ausgängen
der der Vermittler 3410–3416 des ersten Niveaus.
-
In
einer Ausführungsform,
vermittelt der BD-Holen-Vermittler 3410 zwischen den Anforderungen
von den BD-DMA-Steuerungen (z.B. BD-DMA-Steuerungen 252 und 262 in 2).
Jede BD-DMA-Steuerung sendet eine Anforderung an den BD-Holen-Vermittler 3410.
Beispielsweise empfängt der
Vermittler 3410 acht Anforderungen, wenn die Audiosteuerung
acht BD-DMA-Steuerungen hat.
-
Unter
Bezugnahme auf 3D vermittelt der Vermittler 3412 zwischen
den Anforderungen zum Lesen von Daten (auch als Datenholenanforderungen
bekannt) hoher Wartezeitempfindlichkeit von den Daten-DMA-Steuerungen
(z.B. der Daten-DMA-Steuerung 254 aus 2).
Beispielsweise können
bei einer Audiosteuerung mit vier Lesedaten-DMA-Steuerungen vier
Anforderungen zum Lesen von Daten hoher Wartezeitempfindlichkeit
in den Vermittler 3412 eingegeben werden. Ebenso vermittelt
der Vermittler 3414 zwischen den Anforderungen zum Schreiben
von Daten (auch als Datenentfernenanforderungen bekannt) hoher Wartezeitempfindlichkeit
von den Daten- DMA-Steuerungen
(z.B. der Daten-DMA-Steuerung 264 aus 2).
In einer Ausführungsform
werden sowohl die Anforderungen zum Lesen von Daten als auch zum
Schreiben von Daten geringer Wartezeitempfindlichkeit durch den
Rundspulen-Vermittler 3416 vermittelt.
-
Jeder
der FCFC-Vermittler 3410–3414 kann mit Hilfe
einer Schlange ausgeführt
werden, um die Reihenfolge der Bestätigung der Anforderungen hoher
Wartezeitempfindlichkeit einzuhalten. Der Rundspulen-Vermittler 3416 kann
ein gewichtetes Rundspulenschema (Weighted Round Robin, WRR) annehmen,
welches feste Prioritätsvermittlung
mit Anforderungsmaskierung an ausgewählten DMA-Steuerungen verwendet.
Beispielsweise kann eine DMA-Steuerung ausgewählt sein, wenn die DMA-Steuerung eine Anforderung
bestätigt,
die bestätigte
Anforderung nicht maskiert ist, keine Anforderdung hoher Wartezeitempfindlichkeit
aktiv ist und keine andere nicht maskierte DMA-Steuerung höherer Priorität und geringer
Wartezeitempfindlichkeit anfordert.
-
In
einer Ausführungsform
vermitteln die Vermittler 3410–3416 des ersten Niveaus
zwischen den DMA-Steuerungen in allen Taktzyklen (z.B. Taktzyklus
X) und wählen
einen Taktzyklus von einer der DMA-Steuerungen in dem folgenden
Taktzyklus aus (z.B. Taktzyklus X + 1). Der Vermittler des zweiten
Niveaus 3420 wählt
eine Anforderung in Taktzyklus (X + 1) aus. Außerdem können die Attribute der ausgewählten Anforderung
in Taktzyklus (X + 1) an die Anschlußsteuerung 210 gesendet
werden (siehe 2). Daher kann der Vermittler 340 sicherstellen, dass
eine Anforderung aussteht und jederzeit versandbereit ist, ohne
die der Audiosteuerung zugeordneten Zeitfenster zu verschwenden.
-
4 zeigt
eine beispielhafte Ausführungsform
eines Computersystems 400. Das Computersystem 400 weist
eine Zentrale Verarbeitungseinheit (CPU) 410, ein Speichersteuerung
(MCH) 420, eine Reihe Zweifach-Speicher-Module (DIMMs) 425,
eine Reihe Speichervorrichtungen 427, einen PCI-Express-Grafikport 430,
eine Eingang/Ausgang-Steuerung (ICH) 440, eine Reihe Universal-Serial-Bus-(USB)-Ports 445,
einen Audiocode-Decodierer (460) einen Super-Eingang/Ausgang
(Super-E/A) 450 und einen Firmwarehub (FWH) 470)
auf.
-
In
einer Ausführungsform
sind die CPU 410, der PCI-Express-Grafikport 430,
die DIMMs 425 und die ICH 440 an die MCH 420 gekoppelt.
Die Verbindung 435 zwischen der MCH 420 und der
ICH 440 kann eine DMI-Verbindung enthalten. Die MCH 420 leitet
Daten zu und von den Speichervorrichtungen 427 über die
DIMMs 425.
-
Die
Speichervorrichtungen 427 können verschiedene Arten von
Speichern umfassen, wie beispielsweise einen dynamischen Direktzugriffsspeicher
(DRAM), einen synchronen dynamischen Direktzugriffsspeicher (SDRAM),
Doppeldatenraten(DDR)-SDRAM oder einen Flashspeicher. In einer Ausführungsform
ist jede der DIMMs an demselben Motherboard (nicht gezeigt) über einen
DIMM-Anschluß (nicht
gezeigt) verbunden, um mit der MCH 420 zu koppeln. In einer
Ausführungsform
sind die USB-Ports 445, der Audiocode-Decodierer 460 und der
Super-E/A 450 an die ICH 440 gekoppelt. Der Super-E/A 450 kann
außerdem
an einen Firmwarehub 470, ein Floppy-Diskettenlaufwerk 451, Dateneingabevorrichtungen 453,
wie beispielsweise eine Tastatur, Maus usw., eine Reihe von seriellen
Ports 455 und eine Reihe von parallelen Ports 457 gekoppelt.
-
In
einer Ausführungsform
umfaßt
die ICH 440 eine Audiosteuerung 442, die einen
Vermittler enthält,
eine Reihe von BD-DMA-Steuerungen und eine Reihe von Ausgangs- und
Eingangs-Daten-DMA-Steuerungen. Die DMA-Steuerungen bestätigen Anforderungen,
als Reaktion auf einen Befehl von der CPU 410 auf die Speichervorrichtungen zuzugreifen.
Die Anforderung kann Anforderungen zum Lesen/Schreiben von Daten
und BD-Leseanforderungen umfassen. Die DMA-Steuerungen können die
Attribute dynamisch verändern.
Einzelheiten einiger Ausführungsformen
der DMA-Steuerungen
und des Vermittlers wurden oben beschrieben.
-
Es
sei darauf hingewiesen, dass einige oder alle der Komponenten und
die zugeordnete Hardware, die in 4 veranschaulicht
wurde, in verschiedenen Ausführungsformen
des Computersystems 400 verwendet werden kann. Es sollte
klar sein, dass andere Konfigurationen des Computersystems eine
oder mehrere zusätzliche
in 4 nicht gezeigte Vorrichtungen enthalten kann.
Außerdem
sei darauf hingewiesen, daß die
offenbarte Technik auf verschiedene Arten von Systemumgebungen angewendet
werden kann, die offenbarte Technik ist sowohl auf mobile als auch
auf Desktop-Computersysteme anwendbar.
-
Die
vorstehenden Erläuterungen
beschreiben lediglich einige beispielhafte Ausführungsformen der vorliegenden
Erfindung. Ein Fachmann wird aus einer derartigen Beschreibung,
den beigefügten Zeichnungen
und den Ansprüchen
erkennen, daß zahlreiche
Modifikationen vorgenommen werden können, ohne von dem Geist und
dem Schutzumfang der angefügten
Ansprüche
abzuweichen. Die Beschreibung sollte somit als veranschaulichend,
nicht als einschränkend
verstanden werden.
-
Zusammenfassung
-
Es
wird ein Verfahren und eine Vorrichtung zum Verwalten von Speicherzugriffsanforderungen offenbart.
Eine Ausführungsform
des Verfahrens umfaßt
das dynamische Ändern
von Attributen jeder einer Anzahl von Anforderungen, auf einen oder
mehrere Speichervorrichtungen zu zugreifen, und ein Vermitteln zwischen
den Anforderungen, um eine Anforderung auszuwählen, um diese in einem Zeitfenster,
das auf den Attributen basiert, zu senden. Es werden weitere Ausführungsformen
beschrieben und beansprucht.