-
GEBIET DER
ERFINDUNG
-
Die vorliegende Erfindung betrifft
das Gebiet der Computersysteme. Im Besonderen betrifft die vorliegende
Erfindung ein Computersystem, das einen Speichercontroller und einen
Grafikcontroller einsetzt, die eine Speicherressource gemeinsam
nuten.
-
STAND DER
TECHNIK
-
Eine Vielzahl von Computersystemen
mit einem Mikroprozessor verwendet einen Speichercontroller und
einen Grafikcontroller. Der Speichercontroller steuert den Zugriff
durch den Mikroprozessor und andere periphere integrierte Schaltungen
auf den Systemspeicher. Der Grafikcontroller steuert das Anzeigen
der durch den Mikroprozessor vorgesehenen Daten auf einem Anzeigebildschirm,
wie etwa einer Kathodenstrahlröhre
(CRT) unter Verwendung eines Rahmenpuffers. Sowohl der Systemspeicher
als auch der Rahmenpuffer werden für gewöhnlich unter Verwendung von
Arrays eines dynamischen RAM-Speichers (DRAM) implementiert. Bei
einer Reihe dem Stand der Technik entsprechender Systeme weist der
Speichercontroller einen exklusiven Zugriff auf den Systemspeicher
auf, und der Grafikcontroller weist in ähnlicher Weise exklusiven Zugriff
auf den Rahmenpuffer auf.
-
Zur Kostenreduzierung wurden bei
einer Reihe von Computersystemen der Rahmenpuffer und der Systemspeicher
in einem vereinheitlichten oder gemeinsamen Speicher integriert,
wodurch Hersteller von Computereinrichtungen die Kosten dadurch senken
können,
dass kein separater Speicher für
den Rahmenpuffer erforderlich ist. Die Integration des Rahmenpuffers
und des Systemspeichers in einem gemeinsamen Speicher ist auch aus
dem Grund wünschenswert,
da dadurch ungenutzte Bereiche des Rahmenpuffers als Systemspeicher
verwendet werden können,
wenn der gesamte oder nur ein Teil des Rahmenpuffers nicht eingesetzt
wird. Diese Effizienz kann nur schwer mit einem separaten Rahmenpuffer
erreicht werden, der durch einen Grafikcontroller gesteuert wird.
-
Ein Beispiel für eine Computersystemarchitektur,
bei der der Rahmenpuffer und der Systemspeicher in einer gemeinsamen
Speicherressource realisiert werden, ist die Shared Memory Buffer
Architecture (SMBA) (auch bekannt als Unified Memory Architecture
(UMA)) der Intel Corporation, Santa Clara, Kalifornien, USA.
-
Eine gemeinsame Speicherarchitektur
gemäß der vorstehenden
Beschreibung wird durch das Vorsehen einer DRAM-Array implementiert,
auf welche sowohl der Speichercontroller als auch der Grafikcontroller
zugreifen können,
wobei der zugeordnete Speicherraum der DRAM-Array auf den Systemspeicher
und den Rahmenpuffer aufgeteilt sind. Bei einem derartigen Computersystem
weist der Speichercontroller für
gewöhnlich
Zugriff auf den gesamten gemeinsamen Speicher auf, einschließlich des als
Rahmenpuffer bezeichneten Bereichs. Wenn der Rahmenpuffer nicht
erforderlich ist, so kann der Speichercontroller somit auf den als
Rahmenpuffer designierten Speicherbereich zugreifen und diesen Speicherbereich
als Systemspeicher nutzen. Da die DRAM-Array von dem Speichercontroller
und dem Grafikcontroller gemeinsam genutzt wird, ist für gewöhnlich eine
Arbitrierungseinheit (oder ein Arbiter) in den Computersystemen
vorgesehen, welche die Konfiguration des gemeinsamen Speichers einsetzt, um
den fairen und effizienten Zugriff auf die DRAM-Array sowohl durch den
Speichercontroller als auch durch den Grafikcontroller zu gewährleisten.
-
In US-A-5,450,542 wird ein gemeinsamer Speicher
offenbart, auf den unabhängig
durch einen Grafikcontroller und einen Kern-Logikcontroller zugegriffen werden kann,
wobei der gemeinsame Speicher als Grafikcontroller oder als Hauptspeicher
fungiert. Das Bezugsdokument offenbart die programmierbare neue
Zuweisung eines ungenutzten Bereichs eines Anzeigespeichers zur
Systemspeichernutzung.
-
Während
die Implementierung einer Konfiguration eines gemeinsamen Speichers
eine Reihe von Kostenvorteilen schafft, leiden derartige Speicherkonfigurationen
unter einer niedrigen Speicherbandbreite, da der gemeinsame Speicher
nicht länger
ist als eine dedizierte Ressource des Grafikcontrollers oder des
Speichercontrollers. Während
die Systemleistung bei der Ausführung
von nicht grafikintensiven Anwendungen nicht signifikant beeinflusst
wird, kann die Systemleistung deutlich leiden, wenn das Computersystem
eine grafikintensive Anwendung wie etwa eine Multimediaanwendung
ausführt.
In diesen Fällen
konkurrieren der Grafikcontroller und der Speichercontroller stark
um den Zugriff auf den gemeinsamen Speicher. Ein Zugriff des Grafikcontrollers
auf den gemeinsamen Speicher über
einen längeren
Zeitraum kann die Zugreifbarkeit auf den Systemspeicher durch den
Speichercontroller um bis zu fünfzig
Prozent verringern. Daraus resultiert, dass die Leistung des Computersystems
erheblich leiden kann.
-
Die vorliegende Erfindung versucht
die Leistungseinbußen
zu adressieren, die aus einer Konfiguration eines gemeinsamen Speichers
resultieren, wie dies vorstehend im Text beschrieben worden ist.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen ist gemäß einem
ersten Aspekt der vorliegenden Erfindung ein Computersystem gemäß dem gegenständlichen
Anspruch 1.
-
Vorgesehen ist gemäß einem
zweiten Aspekt der vorliegenden Erfindung eine Schnittstellenanordnung
gemäß dem gegenständlichen
Anspruch 8.
-
Vorgesehen ist gemäß einem
dritten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen
Anspruch 12.
-
Gemäß dem ersten Aspekt der Erfindung
ist ein Computersystem vorgesehen, das einen Speichercontroller
und einen Grafikcontroller aufweist. In einem Ausführungsbeispiel
verwendet das Computersystem eine Shared Frame Buffer Architecture
und weist somit einen gemeinsamen Speicher in Form einer Bank von
DRAMs auf. Auf den gemeinsamen Speicher kann sowohl durch den Speicher-
als auch durch den Grafikcontroller zugegriffen werden. Der gemeinsame
Speicher weist mindestens eine gemeinsame DRAM-Zeile auf, in der
eine Shared Frame Buffer (SFB) Apertur definiert ist. Eine Schnittstelle
sieht selektiv Zugriff auf die SFB-Apertur über den Grafikcontroller oder
den Speichercontroller vor. Dies erleichtert den gleichzeitigen
Zugriff auf die SFB-Apertur durch den Grafikcontroller und auf die verbleibenden
DRAM-Zeilen durch
den Speichercontroller, wobei die Zugreifbarkeit auf mindestens
eine gemeinsam genutzte DRAM-Zeile durch den Speichercontroller
aufrechterhalten wird. Zur Verringerung der Wahrscheinlichkeit für eine Zugriffskonkurrenz
auf die mindestens eine gemeinsam genutzte DRAM-Zeile ist die SFB- Apertur vorzugsweise
an einem unteren Speicherplatz in dem gemeinsamen Speicher definiert.
-
Die Schnittstelle weist eine Selektorschaltung
auf, wie zum Beispiel einen Multiplexer oder einen Q-Switch, wobei
die Schaltung so gekoppelt ist, dass sie entsprechende Speicheradressierungs-
und Steuersignale von dem Grafikcontroller und dem Speichercontroller über einen
dedizierten Bus von jedem dieser Controller empfängt. Die Selektorschaltung
ist selektiv derart funktionsfähig,
dass entweder die Speicheradresse an die gemeinsam genutzte DRAM-Zeile vorsieht, in
der die SFB-Apertur definiert ist, und wobei sie ferner selektiv
Zugriff auf die gemeinsam genutzte DRAM-Zeile durch einen der Controller über einen
Datenbus vorsieht. Die Selektorschaltung empfängt einen Steuereingang von
einer Logikschaltung, welche bestimmt, ob eine von dem Speichercontroller
empfangene Anforderung für
einen Speicherzugriff eine Adresse in der mindestens einen gemeinsamen
DRAM-Zeile oder eine Adresse in den verbleibenden DRAM-Zeilen betrifft.
-
Gemäß einem dritten Aspekt der
vorliegenden Erfindung ist ein Verfahren vorgesehen, das einen gleichzeitigen
Zugriff durch einen Grafikcontroller und einen Speichercontroller
auf einen gemeinsamen Speicher vorsieht, wobei der gemeinsame Speicher
einen ersten Speicherabschnitt und einen zweiten Speicherabschnitt
aufweist. Der erste Speicherabschnitt, bei dem es sich um eine einzelne DRAM-Zeile
handeln kann, weist eine Shared Frame Buffer (SFB) Apertur auf.
Beim Empfang einer Anforderung für
einen Zugriff auf eine erste Speicheradresse in dem ersten Speicherabschnitt
von dem Grafikcontroller wird dem Grafikcontroller Zugriff auf den
ersten Speicherabschnitt gewährt.
Wenn eine Anforderung für
einen Zugriff auf eine zweite Speicheradresse von dem Speichercontroller
empfangen wird, wird bestimmt, ob sich die zweite Speicheradresse
in dem ersten oder dem zweiten Speicherabschnitt des gemeinsamen
Speichers befindet. Der Zugriff auf die zweite Speicheradresse wird
dem Speichercontroller gewährt,
wenn sich die zweite Speicheradresse in dem zweiten Speicherabschnitt befindet,
um den gleichzeitigen Zugriff durch den Grafikcontroller und den
Speichercontroller entsprechend auf die ersten und zweiten Speicherabschnitte zu
ermöglichen.
Wenn sich die zweite Speicheradresse im Gegensatz dazu in dem ersten
Speicherabschnitt befindet, wird der Zugriff durch den Speichercontroller
auf den ersten Speicherabschnitt verweigert, oder die konkurrierenden
Anforderungen für einen
Zugriff auf den ersten Speicherabschnitt durch die Grafik- und Speichercontroller
wird einer Arbitrierungseinheit zur Arbitrierung zugeführt.
-
Weitere Merkmale der vorliegenden
Erfindung werden aus den beigefügten
Zeichnungen sowie aus der folgenden genauen Beschreibung deutlich.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die vorliegende Erfindung ist beispielhaft und
ohne einzuschränken
in den Abbildungen der anhängigen
Zeichnungen veranschaulicht, in denen die gleichen Bestandteile
mit den gleichen Bezugsziffern bezeichnet sind. Es zeigen:
-
1 ein
Blockdiagramm eines Computersystems, in dem die vorliegende Erfindung
implementiert werden kann;
-
2 ein
Blockdiagramm eines Computersystems, das ein erstes Ausführungsbeispiel
der vorliegenden Erfindung umfasst;
-
3 ein
Blockdiagramm eines Computersystems, das ein zweites Ausführungsbeispiel
der vorliegenden Erfindung umfasst;
-
4 ein
Blockdiagramm eines Computersystems, das ein drittes Ausführungsbeispiel
der vorliegenden Erfindung umfasst; und
-
5 ein
Flussdiagramm, das ein Verfahren für das Vorsehen eines gleichzeitigen
Zugriffs durch erste und zweite Agenten auf einen gemeinsamen Speicher
gemäß der vorliegenden
Erfindung veranschaulicht.
-
GENAUE BESCHREIBUNG
-
Beschrieben werden ein Verfahren
und eine Vorrichtung für
einen gleichzeitigen Zugriff durch eine Mehrzahl von Agenten (Steuereinrichtungen)
auf einen gemeinsamen Speicher. In der folgenden Beschreibung werden
zum Zwecke der Erläuterung
verschiedene spezielle Details ausgeführt, um ein umfassendes Verständnis der
vorliegenden Erfindung vorzusehen. Für den Fachmann auf dem Gebiet
ist es jedoch offensichtlich, dass die vorliegende Erfindung ohne
diese spezifischen Details ausgeführt werden kann.
-
In anfänglichem Bezug auf die Abbildung
aus 1 ist in Form eines
Blockdiagramms ein Computersystem 10 dargestellt, das als
Hauptbestandteile einen Prozessor 12, einen Speichercontroller 14,
einen Speicherarbiter 16, einen Grafikcontroller 18 und einen
gemeinsamen Speicher 20 aufweist. Der Prozessor 12 führt verschiedene
Befehle aus und ist mit einem Host-Bus 22 gekoppelt. Eine
Busbrücke 24 erleichtert
die Kommunikation zwischen dem Host-Bus 22 und einem peripheren
Bus 26. Der periphere Bus 26 kann gemäß der Peripheral
Components Interconnect (PCI) Local Bus Specification Revision 2.1, veröffentlicht
am 1. Juni 1995, betrieben werden, wobei es sich bei der Busbrücke 24 um
eine Host-to-PCI-Brücke
handelt. Die Busbrücke 24 weist eine
Datenwegeinheit 28 und einen Systemcontroller 30 auf.
Der Speichercontroller 14 und die Speicherarbitrierungseinheit 16 sind
in dem Systemcontroller 30 implementiert. In einem Ausführungsbeispiel
umfasst die Datenwegeinheit 28 eine Datenwegeinheit 82438VX,
und der Systemcontroller 30 umfasst einen Systemcontroller
82437VX, die beide von der Intel Corporation, Santa Clara, Kalifornien,
USA, hergestellt werden. Der Speichercontroller 14 und
die Speicherarbitrierungseinheit 16 müssen nicht in einem Systemcontroller
implementiert werden, wobei sie vielmehr unabhängige Funktionseinheiten in
dem Computersystem 10 darstellen können. Die Busbrücke 24 ist
durch einen dedizierten Speicherbus 32 mit dem gemeinsamen
Speicher 20 gekoppelt. Der Speicherbus 32 umfasst
Steuer- und Adressierungsleitungen 32.1 und Datenleitungen 32.2.
Im Besonderen umfassen durch den Speichercontroller auf den Leitungen 32.1 vorgesehene
Steuersignale ein Schreibfreigabesignal (Write Enable Signal (WE)), ein
Zeilenzugriffs-Strobesignal (Row Access Strobe Signal (RAS#)) und
ein Spaltenadressierungs-Strobesignal (Column Address Strobe Signal
(CAS#)). Der Speichercontroller 14 steuert ein Speicheradressierungssignal
(Memory Address Signal (MA)) auf die Steuer- und Adressierungsleitungen 32.1.
Daten werden auf den 64-Bit-Datenleitungen 32.1 zu und von
dem gemeinsamen Speicher 20 übertragen. Der Grafikcontroller 18 ist
in ähnlicher
Weise über
einen Bus 34 mit dem gemeinsamen Speicher 20 gekoppelt,
der Steuer- und Adressierungsleitungen 34.1 umfasst, die
mit den Steuer- und Adressierungsleitungen 32.1 des Speicherbusses 32 verbunden
sind, und Datenleitungen 34.2, die in ähnlicher Weise mit den Datenleitungen 32.2 verbunden
sind.
-
Der dargestellte gemeinsame Speicher 20 umfasst
N Zeilen DRAM 20.1 bis 20.N, wobei jede DRAM-Zeile
so gekoppelt ist, dass sie Steuer- und Adressierungssignale auf
den Leitungen 32.1 des Speicherbusses 32 empfängt, und
so dass sie Daten auf den Datenleitungen 32.2 des Speicherbusses 32 empfängt und
ausgibt. Somit kann auf jede DRAM-Zeile entweder durch den Speichercontroller 14 oder
den Grafikcontroller 18 zugegriffen werden, und zwar abhängig davon,
welcher dieser Agenten den Speicherbus 32 steuert. Gemäß der Abbildung weist
die DRAM-Zeile 20.N eine
Apertur 25 des gemeinsamen Rahmenpuffers auf, wobei die
Rahmenpufferapertur 25 zur Verwendung durch. den Grafikcontroller 18 vorgesehen
ist. Die Rahmenpufferapertur 25 ist nahe dem oberen Bereich
des Systemspeichers 20 mit einer Bindung an das Betriebssystem angeordnet,
und der Speicher oberhalb des Rahmenpuffers 25 kann durch
das Betriebssystem nie zugewiesen werden. Hiermit wird festgestellt,
dass die Größe und die
Position des Rahmenpuffers 25 in dem gemeinsamen Speicher 20 definiert
und abhängig
von den Anforderungen des Computersystems 10 modifiziert
werden können.
Hiermit wird festgestellt, dass nur eine einzige Anordnung von Steuer- und
Adressierungsleitungen 32.1 und Datenleitungen 32.2 den
gemeinsamen Speicher 20 mit den anderen Komponenten des
Computersystems 10 über eine
einzelne Anschlussschnittstelle verbindet.
-
Der Speichercontroller 14 ist
so gekoppelt, dass er Speicherzugriffaufforderungen von einer Reihe
von Komponenten in dem Computersystem 10 empfängt, wie
etwa dem Prozessor 12, PCI-Mastern und Erweiterungsbusbrücken. Der
Speichercontroller
14 kann danach als Reaktion auf derartige
Speicherzugriffsanforderungen Daten aus dem gemeinsamen Speicher 20 lesen
oder in diesen schreiben. Für
einige Operationen, wie etwa DRAM-Auffrischung, erlangt der Speichercontroller 14 Zugriff
auf alle Abschnitte des gemeinsamen Speichers 20. Für andere Operationen,
wie etwa Speicherzugriffsanforderungen, muss der Speichercontroller 14 nur
auf den Systemspeicherabschnitt zugreifen (d. h. den adressierbaren
Speicher, der nicht der gemeinsamen Rahmenpufferapertur 25 in
dem gemeinsamen Speicher 20 zugeordnet ist). Für wiederum
andere Operationen muss der Speichercontroller 14 unter
Umständen
auf die gemeinsame Rahmenpufferapertur 25 zugreifen.
-
Der Grafikcontroller 18 greift
auf die gemeinsame Rahmenpufferapertur 25 in dem gemeinsamen Speicher 20 zu,
um darin Grafikdaten zu speichern, die letztlich auf einer Anzeigevorrichtung
(nicht abgebildet) angezeigt werden sollen, wie etwa einer Kathodenstrahlröhre (CRT)
oder einer Flüssigkristallanzeige
(LCD), die bei 26 mit dem peripheren Bus gekoppelt ist.
Der Grafikcontroller 18 ist mit dem peripheren Bus 26 gekoppelt
und empfängt
Grafiken, Daten und Befehle über
den peripheren Bus 26. Die Grafiken, Daten und Befehle
stammen von dem Prozessor 12 oder einer Reihe anderer Vorrichtungen oder
Bauteile, die auf im Fach bekannte Art und Weise mit dem peripheren
Bus 26 verbunden sind.
-
Hiermit wird festgestellt, dass sowohl
der Grafikcontroller 18 als auch der Speichercontroller 14 über den
einzelnen Speicherbus 32 auf den gemeinsamen Speicher 20 zugreifen.
Die auch als "Speicherarbiter" bezeichnete Arbitrierungseinheit 16 ist vorgesehen,
um den Zugriff auf den Speicherbus 32 durch den Speichercontroller 14 und
den Grafikcontroller 18 zu koordinieren. Im Besonderen
empfängt die
Arbitrierungseinheit 16 Speicherzugriffsanforderungen sowohl
von dem Speichercontroller 14 als auch von dem Grafikcontroller 18,
bestimmt die relative Priorität
der Zugriffsanforderungen und gewährt danach einem bestimmten
Agenten oder einer bestimmten Vorrichtung abhängig von den relativen Prioritäten der
Anforderungen Zugriff. In einem Ausführungsbeispiel wird dem Speichercontroller 14 die Standardsteuerung
des Speicherbusses 32 für
einen Zugriff auf den gemeinsamen Speicher 20 gewährt. Die
Arbitrierungseinheit 16 ist so gekoppelt, dass sie ein
Speicherbus-Anforderungssignal (MREQ#) über die Leitung 35 von
dem Grafikcontroller 18 empfängt, wodurch der Arbitrierungseinheit 16 angezeigt
wird, dass der Grafikcontroller 18 auf den Speicherbus 32 zugreifen
möchte.
Danach arbitriert die Arbitrierungseinheit 1 zwischen der
Zugriffsanforderung des Grafikcontrollers 18 und konkurrierenden
Zugriffsanforderungen von dem Speichercontroller 14. Wenn
die Arbitrierungseinheit 16 danach bestimmt, dass dem Grafikcontroller 18 Zugriff
auf den gemeinsamen Speicher 20 gewährt wird, sieht die Arbitrierungseinheit 16 auf
der Leitung 36 ein Speicherbusgewährungssignal (MGNT#) vor. Ein
Speicherarbitrierungsprotokoll, gemäß dem die Arbitrierungseinheit 16 funktionsfähig ist,
wird in der U.S. Patentanmeldung 08/516,495 mit dem Titel "Method and Apparatus
for Arbitrating Access Requests to a Shared Computer System Memory
by a Graphics Controller and a Memory Controller", eingereicht am 17. August 1995 und
auf den Zessionar der vorliegenden Erfindung übertragen, beschrieben.
-
Die in der Abbildung in dem Systemcontroller 30 vorgesehene
Arbitrierungseinheit 16 kann ferner als separate Schaltung
implementiert werden.
-
In dem vorstehend beschriebenen Computersystem 10 konkurrieren
Zugriffsanforderungen von dem Grafikcontroller 18 mit Speicherzugriffsanforderungen
von dem Speichercontroller 14, die wiederum von einer Reihe
anderer Bauteile in dem Computersystem 10 stammen. Ferner
ist es wichtig festzustellen, dass der Grafikcontroller 18 tatsächlich nur den
Zugriff auf eine DRAM-Zeile 20.N erfordert, welche den
gemeinsamen Rahmenpuffer 25 vorsieht. Für eine Umsetzung eines derartigen
Zugriffs muss der Grafikcontroller 18 die Kontrolle über den
einzigen Speicherbus 32 aufweisen. Wenn der Grafikcontroller 18 somit
die Kontrolle über
den Speicherbus 32 aufweist, wird verhindert, dass der
Speichercontroller 14 Zugriffsanforderungen ausgibt, die
aus dem Controller selbst stammen oder von einer Vorrichtung einer
Reihe weiterer Vorrichtungen empfangen werden. Demgemäß können als
Folge der verringerten Bandbreite, verursacht durch die Konfiguration
des gemeinsamen Speichers, Systemleistungseinbußen auftreten.
-
Die Abbildung aus 2 zeigt ein Computersystem 210 zur
Implementierung eines Verfahrens, das einen gleichzeitigen Zugriff
durch mindestens zwei Agenten, wie etwa einen Speichercontroller 214 und
einen Grafikcontroller 218, auf einen gemeinsamen Speicher 220 vorsieht.
Zur besseren Veranschaulichung ist der gemeinsame Speicher 220 mit nur
zwei Speicherabschnitten in Form der DRAM-Zeilen 220.1 und 220.2 dargestellt.
Eine gemeinsame Rahmenpufferapertur 225 ist in der DRAM-Zeile 220.2 implementiert.
Wie in dem vorstehend in Bezug auf die Abbildung aus 1 beschriebenen Computersystem
umfasst das Computersystem 210 einen Prozessor 212,
der mit einem Host-Bus 222 gekoppelt ist, der über eine
Busbrücke 224 mit
einem peripheren Bus 226 kommuniziert. Die Busbrücke 224 weist
eine Datenwegeinheit 228 und einen Systemcontroller 230 auf,
worin der Speichercontroller 214 und eine Speicherarbitrierungseinheit 216 implementiert
werden können.
Die Arbitrierungseinheit 216 empfängt Speicheranforderungssignale (MREQ#) über die
Leitung 235 von dem Grafikcontroller 218 und gibt
Speicherzugriffsgewährungssignale
(MGNT#) auf der Leitung 236 aus.
-
Das Computersystem 210 umfasst
ferner eine zwischen den gemeinsamen Speicher 220 und die
Busbrücke 224 sowie
den Grafikcontroller 218 gekoppelte Schnittstelle 240.
Die Schnittstelle 240 ist mit dem Speicherbus 232 verbunden,
der die Steuer- und Adressierungsleitungen 232.1 und die
Datenleitungen 232.2 umfasst. Die Schnittstelle 240 ist
ferner mit einem Rahmenpufferbus 234 gekoppelt, der Steuer-
und Adressierungsleitungen 234.1 und Datenleitungen 234.2 umfasst.
Die Schnittstelle 240 ist ferner durch zwei weitere Busse,
d. h. die Busse 242 und 244 mit dem gemeinsamen
Speicher 220 gekoppelt. Gemäß der Abbildung aus 2 ist der Bus 242 zur
Adressierung und zum Vorsehen eines Zugriffs auf die DRAM-Zeile 220.2 dediziert,
welche eine gemeinsame Rahmenpufferapertur 225 aufweist.
Der Bus 244 sieht einen Zugriff auf die verbleibenden DRAM-Zeilen
in dem gemeinsamen Speicher 220 vor, wobei es sich in dem
veranschaulichten Beispiel um nur eine DRAM-Zeile 220.1 handelt.
-
In einem Ausführungsbeispiel umfasst die Schnittstelle 240 eine
Selektoranordnung in Form eines Paars von Q-Switches 246.1 und 246.2.
Der Q-Switch 246.2 ist so gekoppelt, dass er Eingaben von
den Steuer- und Adressierungsleitungen 232.1 und 234.1 empfängt, und
wobei der Q-Switch 246.1 mit den Datenleitungen 232.2 und 234.2 gekoppelt ist.
Das Paar der Q-Switches
wird durch ein auf der Leitung 248 durch den Systemcontroller 230 erzeugtes
Signal geschaltet. Im Besonderen weist der Systemcontroller 230 die
Logikschaltkreisanordnung 231 zur Prüfung der Speicherzugriffsanforderungen
von dem Speichercontroller sowie zum Erzeugen entsprechender Signale
auf der Leitung 248 auf, wie dies nachstehend näher beschrieben
wird. Hiermit wird festgestellt, dass die Logikschaltkreisanordnung 231 in
jeder beliebigen Funktionseinheit in dem Systemcontroller 230 vorgesehen
oder außerhalb
des Systemcontrollers 230 als unabhängige Funktionseinheit oder
Schaltung realisiert werden kann. Die Logikschaltkreisanordnung 231 kann
praktischerweise auch in der Schnittstelle 240 selbst vorgesehen sein.
-
Die Schnittstelle 240 erleichtert
den gleichzeitigen Zugriff durch den Speichercontroller 214 und den
Grafikcontroller 218 auf den gemeinsamen Speicher 220,
wenn der Speichercontroller 214 den Zugriff auf einen Speicherplatz
in einem ersten Abschnitt des gemeinsamen Speichers 220,
nämlich
die DRAM-Zeile 220.1 anfordert,
und wenn der Grafikcontroller 218 den Zugriff auf einen
Speicherplatz in einem zweiten Abschnitt des gemeinsamen Speichers 220 anfordert,
nämlich
die DRAM-Zeile 220.2. Wenn der Speichercontroller 214 einen
Zugriff auf den Speicherplatz in dem DRAM 220.1 verlangt,
werden die Switches 246.1 und 246.2 in der Schnittstelle 240 in
einen ersten Zustand umgeschaltet, indem ein entsprechendes Signal
auf der Leitung 248 vorgesehen wird, wobei das Signal durch
die Logikschaltkreisanordnung 231 erzeugt wird, die in
dem Systemcontroller 230 vorgesehen ist. Der Q-Switch 246.1 sieht
einen Datenweg zwischen den Datenleitungen 244.2 und 232.2 vor,
um eine Ausbreitung der Daten zwischen der Datenwegeinheit 28 und
der DRAM-Zeile 220.1 zu ermöglichen. Der Speichercontroller 214 kann
die DRAM-Zeile 220.1 über
die Steuer- und Adressierungsleitung 244.2 adressieren. In ähnlicher
Weise erzeugt der Q-Switch 246.2 einen Signalweg zwischen
Steuer- und Adressierungsleitungen 234.1 und 242,
so dass der Grafikcontroller 218 die DRAM-Zeile 220.2 steuern
und auf diese zugreifen kann. Die Daten können danach über die
Datenleitungen 234.2 zwischen der DRAM-Zeile 220.2 und
dem Grafikcontroller 218 ausgebreitet werden. Auf diese
Weise kann der Speichercontroller 214 während einem Zugriff des Grafikcontrollers 218 auf die
DRAM-Zeile 220.2 gleichzeitig auf die DRAM-Zeile 220.1 zugreifen.
Wenn der Speichercontroller 214 auf die DRAM-Zeile 220.1 zugreift,
kann der Grafikcontroller 218 in ähnlicher Weise gleichzeitig
auf die gemeinsame Pufferapertur 222 in der DRAM-Zeile 220.2 zugreifen.
-
Hiermit wird festgestellt, dass ein
Abschnitt der DRAM-Zeile 20.2 Systemspeicher umfasst, und somit
fordert der Speichercontroller 214 den Zugriff auf die
DRAM-Zeile 220.2, und es können konkurrierende Anforderungen
von dem Speichercontroller 216 und dem Grafikcontroller 218 für einen
Zugriff auf die DRAM-Zeile 220.2 erzeugt werden. Danach
führt die
Arbitrierungseinheit 216 ein Arbitrierungsprotokoll aus
und gewährt
dem entsprechenden Controller Zugriff, indem die Q-Switches 246.1 und 246.2 in
die entsprechenden Zustände
versetzt werden. Somit wird kein gleichzeitiger Zugriff ermöglicht,
da die Speicherzugriffsanforderungen von dem Grafikcontroller und
dem Speichercontroller an die gleiche DRAM-Zeile 220.2 gerichtet
sind. Hiermit wird festgestellt, dass die Q-Switches 246.1 und 246.2,
die als unidirektionale oder bidirektionale Feldeffekttransistoren
(FETs) implementiert werden können,
durch jede andere geeignete Selektoreinrichtung ersetzt werden können, wie
etwa durch Multiplexer oder Puffer mit drei Zuständen.
-
Die vorliegende Erfindung ist nicht
auf einen gemeinsamen Speicher 220 beschränkt, der
nur zwei DRAM-Zeilen aufweist. Die Abbildung aus 3 zeigt ein alternatives Ausführungsbeispiel
der vorliegenden Erfindung. Der gemeinsame Speicher 320 eines
Computersystems 310 weist N DRAM-Zeilen auf, wobei die
gemeinsame Rahmenpufferapertur 325 in der DRAM-Zeile 320.N implementiert
ist. Eine DRAM-Zeile kann unter Verwendung verschiedener Kombinationen
von DRAM-Bänken
implementiert werden. Zum Beispiel kann eine DRAM-Zeile einer Bank
mit 8 MB oder zwei Bänken
mit jeweils 4 MB entsprechen. In Anwendung der vorstehend in Bezug auf
die Abbildung aus 2 beschriebenen
Grundsätze
wird hiermit festgestellt, dass eine Schnittstelle 340 so
gekoppelt ist, das sie den gleichzeitigen Zugriff durch einen Grafikcontroller 318 auf
die DRAM-Zeile 320.N und durch einen Speichercontroller 314 auf
eine beliebige andere DRAM-Zeile in dem gemeinsamen Speicher 320 ermöglicht.
Die Schnittstelle 340 betrachtet den gemeinsamen Speicher 320 folglich
als in zwei Abschnitte unterteilt, nämlich die DRAM-Zeile 320.N,
welche die gemeinsame Rahmenpufferapertur 322 aufweist,
und die verbleibenden DRAM-Zeilen.
-
Die Abbildung aus 4 zeigt ein weiteres alternatives Ausführungsbeispiel
der vorliegenden Erfindung, wobei das Computersystem 410 eine 128-Bit-Datenwegeinheit 428 aufweist,
die so gekoppelt ist, dass sie Daten auf den 64-Bit-Datenleitungen 442.2 und 44.2 empfängt und überträgt, wodurch
die zwei Q-Switches in einer Schnittstelleneinheit 440 überflüssig werden.
Die Datenwegeinheit 428 ist so gekoppelt, dass sie ein
Auswahlsignal 348 von dem Systemcontroller 430 empfängt, wodurch
es ermöglicht
wird, dass eine Datenwegeinheit 428 selektiv einen Datenweg
zwischen einer externen Vorrichtung und entweder der DRAM-Zeile 420.N erzeugt,
welche die gemeinsame Rahmenpufferapertur 422 aufweist,
oder einer der anderen DRAM-Zeilen in dem gemeinsamen Speicher 420.
Der gemeinsame Rahmenpuffer 422 muss ferner nicht im oberen
Bereich des Systemspeichers angeordnet sein, wie dies in der Abbildung
aus 4 dargestellt ist.
Da Ladevorgänge
und Zugriffe eines Betriebssystems häufig an Speicheradressen gerichtet
sind, die sich im oberen Bereich oder in der Nähe des oberen Bereichs des Speichers
befinden, ist es wünschenswert,
den gemeinsamen Rahmenpuffer 422 an einem Speicherplatz
unmittelbar oberhalb des DOS-Anwendungsbereichs
in dem Speicher 420 anzuordnen. Durch die Positionierung
des gemeinsam genutzten Rahmenpuffers 422 an einer unteren
Stelle in dem Speicher 420 wird die Wahrscheinlichkeit
reduziert, dass der Speichercontroller 414 und der Grafikcontroller 418 einen
Zugriff auf die gleiche DRAM-Zeile anfordern. Demgemäß kann die
erfindungsgemäße gleichzeitige
Zugriffsfähigkeit
umfassender umgesetzt werden.
-
Die vorstehend beschriebenen Ausführungsbeispiele
waren auf das Schaffen eines gleichzeitigen Zugriffs auf einen gemeinsamen
Speicher mit einem Shared Frame Buffer (SFB) durch einen Grafikcontroller
und einen Speichercontroller ausgerichtet. Hiermit wird festgestellt,
dass auch andere Puffer in einem gemeinsamen Speicher implementiert
werden können,
wie etwa ein sogenannter "Alpha-Puffer" und ein "Z-Puffer", welche Informationen über die
Anzeige dreidimensionaler Grafiken aufweisen. Die Lehren der vorliegenden
Erfindung können
somit ausgeweitet werden, so dass sie das Vorsehen eines gleichzeitigen
Zugriffs auf eine gemeinsame Speicherressource umfassen, welche
die vorstehend genannten Puffer aufweisen. Ferner kann der gleichzeitige
Zugriff für
andere Arten von Steuereinheiten sowie für mehr als nur zwei Controller
oder Agenten vorgesehen werden.
-
Hiermit wird festgestellt, dass der
Shared Frame Buffer (SFB) nicht in einer einzigen DRAM-Zeile angeordnet
sein muss, wie dies vorstehend beschrieben worden ist, vielmehr
kann er auch fragmentiert und an einer Mehrzahl von DRAM-Zeilen
angeordnet sein. In diesem Fall können die Lehren der vorliegenden
Erfindung ausgeweitet werden, so dass ein gleichzeitiger Zugriff
durch einen Grafikcontroller auf die DRAM-Zeilen vorgesehen wird,
in der sich der SFB befindet, sowie durch den Speichercontroller
auf die anderen DRAM-Zeilen.
-
Nachstehend wird in Bezug auf die
Abbildungen der 5 und 6 ein Verfahren 510 beschrieben, wobei
der gleichzeitige Zugriff durch erste und zweite Agenten, wie etwa
durch einen Grafikcontroller und einen Speichercontroller, auf einen
gemeinsamen Speicher vorgesehen wird. In dem Schritt 520 wird zuerst
bestimmt, ob eine Zugriffsanforderung auf den gemeinsamen Speicher
von einem Agenten, wie zum Beispiel von dem Grafikcontroller empfangen
worden ist. Wenn keine Zugriffsanforderung empfangen worden ist,
springt der Verfahrensablauf zu dem Schritt 505. Wenn jedoch
eine Zugriffsanforderung auf den gemeinsamen Speicher von dem Grafikcontroller empfangen
worden ist, so fährt
das Verfahren mit dem Schritt 530 fort, in welchem die
Verarbeitungslogik bestimmt, ob eine vorherige Anforderung von einem
anderen Agenten, wie zum Beispiel dem Speichercontroller, empfangen
worden ist. Wenn keine vorherige Anforderung von dem Speichercontroller empfangen
worden ist, fährt
das Verfahren mit dem Schritt 540 fort, und wobei der Speicherzugriff
dem Grafikcontroller gewährt
wird. Wenn die Verarbeitungslogik 530 in dem Schritt bestimmt,
dass tatsächlich
eine vorherige Speicherzugriffsanforderung von dem Speichercontroller
empfangen worden ist, springt das Verfahren zu dem Schritt 550,
in welchem bestimmt wird, ob die Zugriffsanforderung des Grafikcontrollers
an eine Speicheradresse in der gleichen DRAM-Zeile gerichtet ist
wie die Adresse von Speicherzugriffsanforderungen, die von dem Speichercontroller
empfangen worden sind. Wenn die Speicherzugriffsanforderungen der
entsprechenden Controller an Speicheradressen in der gleichen DRAM-Zeile
gerichtet sind, fährt
das Verfahren mit dem Schritt 560 fort, um zwischen den
Zugriffsanforderungen zu arbitrieren. Nach Beendigung der Arbitrierung
gewährt
eine Arbitrierungseinheit in dem Schritt 540 entweder dem
Grafikcontroller oder dem Speichercontroller Zugriff. Wenn in dem
Schritt 550 bestimmt wird, dass sich die Zugriffsanforderung
des Grafikcontrollers an einen Speicherplatz richtet, der sich nicht
in der gleichen DRAM-Zeile
befindet, wird alternativ in dem Schritt 570 beiden Controllern
der gleichzeitige Zugriff auf den gemeinsamen Speicher gewährt.
-
Die vorliegende Erfindung sieht gegenüber dem
Stand der Technik entsprechenden Computersystemen mit einem gemeinsamen
Speicher eine Reihe von Vorteilen vor. Am wichtigsten ist die Tatsache,
dass die vorliegende Erfindung die effektive Speicherbandbreite
eines Computersystems mit einem gemeinsamen Speicher erhöht, indem
der gleichzeitige Zugriff auf den gemeinsamen Speicher durch mindestens
zwei Agenten ermöglicht
wird, wie etwa einen Grafikcontroller und einen Speichercontroller.
Die Gesamtsystemleistung ist somit mit der eines Computersystems
mit einer dedizierten Speicherressource für jeden der anfordernden Agenten vergleichbar,
wobei die Kostenvorteile durch einen gemeinsamen Speicher aufrechterhalten
werden können.
Erreicht wird dieser Vorteil durch eine Erhöhung der Granularität oder Auflösung, mit
der Agenten auf eine gemeinsame Speicherressource zugreifen können. Somit
wird eine Speicherzugriffskonkurrenz zwischen zwei Agenten auf die
Konkurrenz in Bezug auf einzelne Speicherzeilen reduziert, im Gegensatz
zu der Konkurrenz in Bezug auf den gesamten gemeinsamen Speicher.
Die Fähigkeit
der vorliegenden Erfindung, einen gemeinsamen Speicher bei niedrigerer
Granularität
vorzusehen, wird teilweise durch das Vorsehen separater Steuereingaben
in erste und zweite Abschnitte des gemeinsamen Speichers erreicht.
Im Besonderen wird gemäß der vorliegenden
Erfindung das Vorsehen eines dedizierten Speicherbusses für eine DRAM-Zeile
vorgeschlagen, die eine gemeinsame Pufferapertur aufweist, sowie eines
dedizierten Speicherbusses für
den Rest der DRAM-Zeilen. Ferner gewährleistet die vorliegende Erfindung
eine vollständige
64-Bit-Schnittstelle mit dem gemeinsamen Speicher, ohne die Pin-Anzahl
einer Datenwegeinheit zu erhöhen.
-
Die vorliegende Erfindung wurde vorstehend in
Bezug auf spezielle Ausführungsbeispiele
der Erfindung beschrieben. Es ist jedoch offensichtlich, dass verschiedene
Modifikationen und Abänderungen
möglich
sind, ohne dabei von dem in den anhängigen Ansprüchen ausgeführten Umfang
der Erfindung abzuweichen. Die Beschreibung und die Zeichnungen
dienen somit Veranschaulichungszwecken und schränken die Erfindung nicht ein.