-
QUERVERWEIS AUF VERWANDTE
ANMELDUNGEN
-
Die
vorliegende Anmeldung ist eine „Continuation-in-Part-Anmeldung" einer U.S. „Non-provisional-Anmeldung" mit der Serien-Nummer:
10/620,150, die am 15. Juli 2003 eingereicht wurde und deren Gegenstand
hiermit in ihrer Gesamtheit durch Bezugnahme mit aufgenommen ist.
-
AUSSAGE BEZÜGLICH UNTERSTÜTZTER FORSCHUNG
UND ENTWICKLUNG
-
Nicht
gegeben.
-
REFERENZ AUF EIN SEQUENZPROTOKOLL
-
Nicht
gegeben.
-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft das Verarbeiten von Grafikanweisungen
in Computer. Im Speziellen offenbart das bevorzugte Ausführungsbeispiel der
vorliegenden Erfindung ein beschleunigtes Grafikverarbeitungssubsystem
zur Verwendung in Computern, welches mehrere handelsübliche Videokarten
verwendet, von denen jede ein oder mehrere Grafikprozessoreinheiten
(graphic processor units, GPUs) aufweist, und welches jede Videokarte
anweist, abwechselnd Anweisungen zum Zeichnen einer Anzeige zu erzeugen.
Die Videokarten, die in der offenbarten Erfindung verwendet werden
sollen, brauchen nicht in substanzieller Weise modifiziert werden.
-
Beschreibung des Standes der
Technik
-
Sogar
vor dem Start der weit verbreiteten Verwendung von Personalcomputern,
war die Computergrafik einer der vielversprechendsten und herausfordernsten
Aspekten der Computertechnik. Die ersten Grafikpersonalcomputer,
die für
den Massenmarkt entwickelt worden sind, vertrauten auf ihre Hauptcomputerverarbeitungseinheit
(CPU), um jeden Aspekt der Grafikausgabe zu steuern. Grafikkarten
oder Videokarten in frühen
Systemen dienten als einfache Schnittstellen zwischen der CPU und
der Anzeigeeinrichtung und führten
selbst keine Verarbeitung aus. In anderen Worten übersetzten
diese frühen
Videokarten einfach die Hardwarekommandos auf niedrigstem Niveau,
die von der CPU ausgeben wurden, in analoge Signale die die Anzeigeeinrichtungen
zu auf dem Bildschirm darstellbaren Bilder transformierten. Da die
ganze Verarbeitung durch die CPU durchgeführt wurde, hatten grafikintensive Anwendungen
die Tendenz die Verarbeitungszyklen überzustrapazieren und die CPU
davon abzuhalten andere Tätigkeiten
auszuführen.
Dies führte
zu einer Gesamtträgheit
und einer verschlechterten Systemperformance.
-
Um
der CPU die Grafikverarbeitungstätigkeiten
abzunehmen, führten
Hardwareentwickler Grafikprozessorsubsysteme ein, um realistisch
animierte Bilder in Echtzeit zu rendern, z. B. bei 30 oder mehr Bildern
pro Sekunde. Diese Subsysteme sind oftmals auf Erweiterungskarten
ausgeführt
worden, die in geeignet konfigurierte Steckplätze auf einem Motherboard eines
Computersystems eingesetzt zu werden und umfassen im Allgemeinen
eine oder mehrere spezielle Grafikverarbeitungseinheiten (GPUs)
und speziellen Grafikspeicher. GPUs sind in der Lage sogenannte „high-level-Grafikbefehle" anzunehmen und diese
intern zu Videosignalen zu verarbeiten, die von den Anzeigeeinrichtungen
benötigt
werden.
-
Die
typische GPU ist eine hoch komplexe integrierte Schaltkreisvorrichtung
die optimiert ist, um Grafikberechnungen durchzuführen (z.
B. Matrixtransformationen, Scannumwandlung und/oder Rastertechniken,
Texturmischungen etc.) und sie schreiben die Ergebnisse in den Grafikspeicher.
Die GPU ist ein Tochterprozessor („slave"-Prozessor) der in Antwort auf Befehle
arbeitet, die er von einem Treiberprogramm erhält, das auf einem Hauptprozessor („master"-Prozessor) ausgeführt wird,
im Allgemeinen auf dem Hauptprozessor (CPU) des Systems. Mittels
eines extrem vereinfachten Beispiels: Wenn eine Anwendung erfordert,
dass ein Dreieck auf dem Bildschirm gezeichnet werden soll, könnte die
Anwendung anstatt von der CPU zu verlangen die Videokarte anzuweisen
wo die individuellen Pixel auf den Bildschirm gezeichnet werden
sollen (d. h. „low-level-hardware-Befehle") könnte sie
einen „Zeichne Dreieck"-Befehl an die Videokarte
zusammen mit bestimmten Parametern senden (wie die Eckpunkte des
Dreiecks) senden und die GPU könnte
solche high-level-Befehle zu einen Videosignal verarbeiten. Auf
diese Art und Weise wird die Grafikverarbeitung, die vorher von
der CPU durchgeführt
wurde, nun von der GPU durchgeführt.
Diese Innovation ermöglicht es
der CPU nicht Grafik bezogene Aufgaben effizienter zu behandeln.
-
Der
primäre
Nachteil von frühen
GPU-basierenden Videokarten war der, dass noch kein festgesetzter
Standart für
die „Sprache” der verschiedenen high-level-Befehle festgelegt
wurde, welche die GPUs interpretieren und dann verarbeiten konnten. Als
ein Ergebnis benötigt
jede Anwendung, die high-level-Funktionen
einer GPU basierenden Videokarte verwenden wollte, einem speziellen
Teil von Software der im Allgemeinen als ein Treiber bezeichnet
wurde, der die Sprache der GPUs verstehen konnte. Bei Hunderten
von unterschiedlichen GPU basierten Videokarten auf dem Markt verzettelten sich
Anwendungsentwickler beim Schreiben dieser spezialisierten Treiber.
Tatsächlich
war es nicht selten so, dass für
ein spezielles populäres
Softwareprogramm der ausführbare
Code von Hunderten, wenn nicht sogar Tausenden von Videokartentreibern
aufgenommen wurde. Dies hat die Entwicklung und die Annahme neuer
Software stark verlangsamt.
-
Dieses
Sprachproblem wurde gelöst,
da in modernen Computerbetriebssystemen Standartmethoden der Videokartenanbindung
eingeführt
wurden. Moderne Betriebssysteme wie beispielsweise das Windows® Betriebssystem
(vertrieben durch die Microsoft Corp. in Redmond, WA) benötigen nur
einen einzigen Hardwaretreiber, der für eine Videokarte geschrieben
ist. Interaktionen zwischen verschiedenen Softwareanwendungen, der
CPU und der Videokarte werden durch eine Softwarezwischensicht vermittelt,
die als Anwendungsprogrammschnittstelle (Application Programming
Interface, API oder API Modul) bezeichnet wird. Alles was benötigt wird,
ist, dass die Videotreiber und die Anwendungen in der Lage sind
eine gemeinsame Grafik API zu interpretieren. Die zwei gebräuchlichsten
Grafik APIs, die in aktuellen Personalcomputern verwendet werden,
sind DirectX®,
vertrieben durch die Microsoft Corp., Redmond, WA und OpenGL®,
vertrieben durch ein Konsortium von Computerhardware- und Softwarebeteiligungen.
-
Seit
dem Beginn der GPU basierten Grafikverarbeitungssubsysteme waren
die meisten Anstrengungen darauf gerichtet, den Durchsatz des Grafiksubsystems
des Personalcomputers zu erhöhen
(das Subsystem die Informationen schneller verarbeiten zu lassen).
Sie waren ganz natürlich
darauf gerichtet, leistungsfähigere
und komplexere GPUs zu erzeugen und die Möglichkeiten der entsprechenden
APIs zu optimieren und zu vergrößern.
-
Ein
andere- Weg, bei dem die Hardwareentwickler versucht haben den Durchsatz
des Grafiksubsystems zu erhöhen,
ist der, durch die Verwendung von mehreren GPUs auf einer einzelnen
Videokarte Grafikinformationen parallel zu verarbeiten. Ein paralleler
Betrieb erhöht
substantiell die Anzahl der Renderoperationen die pro Sekunde durchgeführt werden,
ohne signifikante Verbesserungen im GPU Design zu erfordern. Um
Ressourcenkonflikte zwischen GPUs zu minimieren, wird jede GPU im
Allgemeinen mit ihrem eigenen bestimmten Speicherbereich ausgestattet,
umfassend einen Anzeigepuffer in dem die GPU Pixeldaten schreibt,
die sie rendert. Als ein Beispiel ist es bekannt Videobefehlssignale
von APIs wie beispielsweise DirectX® oder
OpenGL® unter
Verwendung von mehren GPUs zu verarbeiten. Eine GPU ist als eine
primäre
GPU ausgelegt und die andere als eine sekundäre GPU. Obwohl beide GPUs unabhängig voneinander
Grafikbefehle verarbeiten, die von einer API kommen, muss die sekundäre GPU immer
noch die Informationen die sie verarbeitet (d. h. die digitale Darstellung
für einen
Bereich des Bildschirms, der ihr zugeordnet ist) durch die primäre GPU leiten,
welche wiederum ein einziges kombiniertes Ausgangsvideosignal zu
der Videoanzeigevorrichtung liefert. Ein offensichtlicher und signifikanter
Nachteil dieses Systems liegt darin, dass eine hochbreitbandinge
Pipeline zwischen den zwei GPUs bestehen muss.
-
Keine
bekannte Vorrichtung, kein System oder Verfahren stellt ein Grafikverarbeitungssubsystem
für die
Verwendung in einem Computer bereit, die die Verarbeitungsleistung
von mehreren, handelsüblichen
Videokarten kombiniert, welche jeweils eine oder mehrere GPUs aufweisen,
und welches jeder Videokarte Anweisungen zum Zeichnen eines vorbestimmten
Teils des Bildschirms zuordnet, welcher den Benutzer mittels eines
Monitors oder einer anderen visuellen Ausgabeeinrichtung angezeigt wird.
Zusätzlich
beschreibt keine der obigen Vorrichtungen ein Grafikverarbeitungssubsystem
das in der Lage ist, mehrere handelsübliche Videokarten ohne substantielle
Modifikationen der Videokarten zu kombinieren.
-
Daher
besteht im Stand der Technik der Bedarf für ein Grafikverarbeitungssubsystem
zur Verwendung in einem Computer, das die Verarbeitungsleistung
von mehreren Videokarten kombiniert, die jeweils einen oder mehrere
GPUs aufweisen und das jeder Videokarte Verarbeitungsanweisungen
zum Zeichnen eines vorbestimmten Bereichs des Bildschirms zuweist,
der dem Benutzer über
einen Monitor oder eine andere visuelle Ausgabevorrichtung angezeigt
wird.
-
Es
gibt weiterhin einen Bedarf im Stand der Technik für ein Grafikverarbeitungssubsystem,
das in der Lage ist, mehrere handelsübliche Videokarten ohne wesentliche
Modifikationen an den Videokarten zu kombinieren.
-
Es
gibt einen weiteren Bedarf im Stand der Technik für ein Grafikverarbeitungssubsystem,
das die Verarbeitungsleistung von mehreren Videokarten kombinieren
kann und welches keine hochbreitbandige Verbindung zwischen den
Videokarten erfordert.
-
KURZE ZUSAMMENFASSUNG DER
ERFINDUNG
-
Der
Gegenstand der Erfindung löst
die oben beschriebenen Bedürfnisse
und Probleme durch Bereitstellen eines Grafikverarbeitungssubsystems
zur Verwendung in einem Computer, das die Verarbeitungsleistung
von mehreren handelsüblichen
Videokarten ohne substantielle Modifikation kombiniert, wobei jede
Videokarte eine oder mehrere GPUs aufweist und welches jeder Videokarte
Verarbeitungsanweisungen zum Zeichen eines vorbestimmten Bereichs
des Bildschirms zuweist, der dem Benutzer durch einen Monitor oder
eine andere visuelle Ausgabeeinrichtung, wie beispielsweise eine
Bildröhrenanzeige,
eine Flüssigkristallanzeige,
eine Plasmaschirmanzeige, eine Projektionsanzeige, eine OLED-Anzeige, eine kopfbefestigte
Anzeige (head mounted display) oder eine Hybride davon, angezeigt
wird.
-
Die
Grundkomponenten der vorliegenden Erfindung sind: (1) Ein Softwaregrafikbefehlsreplikator-Modul
(Graphics Command Replicator (GCR)); (2) mehrere Videokarten, die
mit mindestens einer GPU ausgestattet sind; (3) einen Mechanismus
um sicher zu stellen, dass die Videosignalausgaben der mehreren
Videokarten synchronisiert werden; und (4) eine Videozusammenführungsknoten-Hardware-/Softwarekomponente
(Video Merger Hub (VMH)).
-
Allgemein
ausgedrückt
funktioniert die vorliegende Erfindung so, dass die Grafikbefehle,
die von einer Computeranwendung ausgegeben werden, abgefangen werden
und diese Befehle durch das GCR-Modul zu mehreren Grafikbefehlsströmen repliziert
werden. Die Anzahl der Grafikbefehlsströme entspricht der Anzahle der
Videokarten, die in dem System vorhanden sind. Jeder Grafikbefehlsstrom, der
von dem GCR-Modul erzeugt wurde, weist jede Videokarte an nur für einen
bestimmten Bereich des Bildschirms ein Bild zu erzeugen. Die mehreren
Videokarten werden auf das gleiche Videobild durch einen aus einer
Anzahl von verfügbaren
Mechanismen, wie sie den Fachleuten wohl bekannt sind, synchronisiert.
Die von den mehren Videokarten resultierenden Videosignale werden
dann an dem VMH gesammelt und zu einem kompletten Bild zusammengefügt welches
dann auf einem Monitor oder einer anderen Videoausgabevorrichtung
angezeigt wird.
-
Es
wird von den Fachleuten erkannt werden und durch Experimentieren
herausgefunden werden, dass durch die Verwendung von mehreren Videokarten,
wobei jede nur einen Bereich des Bildschirms verarbeitet, der gesamte
Durchsatz des Grafiksubsystems proportional zu der Anzahl der Videokarten erhöht wird.
Die Erhöhung
des Durchsatzes ist jedoch nicht unendlich steigerbar, da das GCR-Modul zumindest minimale
Mengen von Verarbeitungsoverhead erzeugt, welcher auch im Verhältnis zu
der Anzahl der Videokarten steigt.
-
Demgemäß besteht
in einer Ausführungsform
der vorliegende Erfindung das beschleunigte Grafikverarbeitungssubsystem,
aufweisend einen Grafikbefehlsreplikator (GCR), aus einem Softwaremodul
das Grafikbefehle abfängt,
die von einer Anwendung herausgegeben werden und der mehrere modifizierte
Grafikbefehlsströme
erzeugt; eine Mehrzahl von Videokarten, die jeweils ausgestattet
sind mit einem oder mehren GPUs, wobei die Anzahl der mehreren,
modifizierten Grafikbefehlsströme
gleich der Anzahl der Mehrzahl der Videokarten ist; einen Mechanismus,
um die Signalausgabe der Mehrzahl der Videokarten zu synchronisieren;
und einen Videozusammenführungsknoten,
aufweisend einen Videoschal ter, einen Videoschaltercontroller einen
Microcontroller und eine Videoausgabe; wobei der Grafikbefehlsreplikator
(GCR) die mehreren, modifizierten Grafikbefehlsströme erzeugt,
so dass jeder der mehreren, modifizierten Grafikbefehlsströme Befehle
enthält,
um nur einen Teil eines Grafikbildschirms zu zeichnen; wobei jeder
der mehreren, modifizierten Grafikbefehlsströme von einer separaten Videokarte empfangen
wird, die ausgewählt
wird aus der Mehrzahl der Videokarten; wobei Signale von der Mehrzahl
der Videokarten durch den Videoschalter empfangen werden und ausgewählte Bereiche
davon sequentiell zu der Videoausgabe geleitet werden und auf einer
visuellen Ausgabevorrichtung angezeigt werden; und wobei der Videoschalter
durch den Videoschaltercontroller gesteuert wird, indem Verteilschalter
zu geeigneten Intervallen geschaltet werden, die bestimmt werden,
durch die vertikale Erneuerungsrate und die vertikale Auflösung des
Ausgabesignals der Mehrzahl der Videokarten und durch das Belastungsausgleichsverhältnis, das
jeder Karte der Mehrzahl der Videokarten zugeordnet ist.
-
Auch
wird ein Verfahren zum Beschleunigen der Verarbeitung von Grafikanweisungen
auf einem Computer durch die Verwendung einer Mehrzahl von Videokarten
offenbart, aufweisend die folgenden Schritte: Abfangen von Grafikbefehlen,
die durch eine Anwendung ausgeben werden und Erzeugen von mehreren,
modifizierten Grafikbefehlsströmen, wobei
die Anzahl der mehreren modifizierten Grafikbefehlsströme gleich
der Anzahl der Mehrzahl von Videokarten ist; Synchronisieren der
Signalausgabe der Mehrzahl der Videokarten; Kombinieren des Ausgangssignals
der Mehrzahl der Videokarten in ein einziges Grafikausgabesignal
unter Verwendung eines Videozusammenführungsknotens, aufweisend einen
Videoschalter, einen Videoschaltercontroller, einen Microcontroller
und eine Videoausgabe; und Anzeigen des einzigen Grafikausgabesignals
auf einer visuellen Ausgabevorrichtung; wobei jeder der mehreren
modifizieren Grafikbefehlsströme
Befehle enthält,
um nur einen Teil des Grafikbildschirms zu zeichnen; wobei jeder
der mehreren, modifizierten Grafikbefehlsströme von einer separaten Videokarte empfangen
wird, die aus der Mehrzahl der Videokarten ausgewählt wird;
Ausgangssignale von der Mehrzahl der Videokarten von dem Videoschalter empfangen
werden und ausgewählte
Teile daraus sequentiell zu der Videoausgabe geleitet werden und
auf einem visuellen Ausgabegerät
angezeigt werden; und wobei der Videoschalter durch den Videoschaltercontroller
gesteuert wird, indem Verteilschalter zu geeigneten Intervallen
geschaltet werden, die bestimmt werden durch die vertikale Wiederholungsrate
und die vertikale Auflösung
der Ausgabesignale der Mehrzahl von Videokarten und durch das Belastungsausgleichsverhältnis, das
jeder Karte der Mehrzahl der Videokarten zugeordnet ist.
-
Daher
können
Ausführungsformen
der vorliegenden Erfindung ein beschleunigtes Grafikbearbeitungssubsystem
zur Verwendung in Computern bereitstellen, welches die Verarbeitungsleistung
von mehreren Videokarten kombiniert, welche jeweils ein oder mehrere
GPUs aufweisen, und das jeder Videokarte Verarbeitungsanweisungen
zum Zeichnen eines vorbestimmten Teils des Bildschirms zuordnet, der
dem Benutzer durch einen Monitor oder eine andere visuelle Ausgabevorrichtung
angezeigt wird. Ausführungsformen
der vorliegenden Erfindung stellen ein Grafikverarbeitungssubsystem
bereit, das in der Lage ist, eine Videographikausgabe durch Kombinieren
von mehreren handelsüblichen
Videokarten ohne substantielle Modifizierung zu beschleunigen. Andere
Ausführungsformen
der vorliegenden Erfindung stellen ein Grafikverarbeitungssubsystem
bereit, das keine hoch-breitbandige Verbindung zwischen den Videokarten
benötigt.
-
In
einer anderen Ausführungsform
organisiert die vorliegende Erfindung die Videoverarbeitung durch
mehrere Videokarten (oder GPUs) so, dass jede der Videokarten für die Videoverarbeitung
während
unterschiedlicher Zeitperioden verantwortlich ist. Beispielsweise
können
zwei Videokarten so zusammen arbeiten, dass sie Videodaten an eine
Anzeige bereitstellen, in dem sie sich abwechseln, wobei die erste
Videokarte die Anzeige für
eine bestimmte Zeitperiode steuert und die zweite Videokarte sequentiell
die Videoverarbeitungsaufgaben für eine
folgende Periode annimmt. Diese Konfiguration stellt den Vorteil
bereit, dass während
eine Videokarte verarbeitete Videodaten bereitstellt, die zweite
Videokarte ihre Verarbeitung der nächsten Videodaten für die nächste Zeitperiode durchführt, wobei
Verzögerungen
minimiert werden, da die Verarbeitung der Videodaten fertig sein
kann, bevor die nächste
Zeitperiode beginnt.
-
KURZE BESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN
DER ZEICHNUNG
-
Diese
und andere Aspekte, Merkmale und Vorteile der vorliegenden Erfindung
werden klarer verstanden werden und gewürdigt werden bei einer Durchsicht
der nachfolgenden detaillierten Beschreibung der bevorzugten und
alternativen Ausführungsformen
und durch Bezug auf die begleitenden Zeichnungen und Ansprüche.
-
1 zeigt
ein Blockdiagramm eines typischen (Stand der Technik) Grafiksubsystems
mit einer einzigen Videokarte.
-
Die 2 und 6 zeigen
ein Blockdiagramm des Grafiksubsystems mit mehreren Videokarten
von Ausführungsformen
der vorliegenden Erfindung.
-
3 zeigt
eine Darstellung der Anwendung von mehreren Befehlsströmen, die
durch den Grafikbefehlsreplikator der vorliegenden Erfindung erzeugt wurden.
-
Die 4 bis 5 und 7 bis 8 zeigen
eine schematische Darstellung des Betriebs eines Videozusammenführungsknotens
von Ausführungsformen
der vorliegenden Erfindung.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
Während die
vorliegende Erfindung vollständiger
hiernach mit Bezug auf die begleitenden Zeichnungen beschrieben
werden wird, in denen eine bevorzugte Ausführungsform der vorliegenden
Erfindung dargestellt ist, sollte am Anfang der folgenden Beschreibung
verstanden werden, dass Fachleute in den entsprechenden Techniken
die hierin beschriebene Erfindung modifizieren können, wobei immer noch die
vorteilhaften Ergebnisse dieser Erfindung erzielt werden. Demgemäß sollte
die folgende Beschreibung als eine breite lehrende Offenbarung verstanden
werden, die an Fachleute in den entsprechenden Techniken gerichtet
ist und nicht als die vorliegende Erfindung beschränkend anzusehen
ist.
-
1 ist
ein Blockdiagramm, das ein aktuelles Grafiksubsystem innerhalb eines
Computers zeigt, da es typischerweise ohne die vorliegende Erfindung
konfiguriert ist und zeigt seine Interaktion mit einer typischen
Personalcomputersoftware, um ein Bild zu erzeugen.
-
Unter
typischen Umständen
wird eine Computeranwendung 150, die beispielsweise ein
Spiel, 3D-Grafikprogramm oder anderes Programm ist, API-Befehle 152 für die verschiedenen
Grafiken erzeugen, die auf der Anzeigevorrichtung 168 angezeigt
werden sollen. Die API-Befehle 152 werden so ausgegeben,
dass sie in Übereinstimmung
mit einer der mehreren verfügbaren
APIs interpretiert werden können,
die auf dem Computer installiert sind, wie beispielsweise DirectX
oder OpenGL. Die entsprechenden API-Module 154 empfangen
die API-Befehle 152,
die durch die Anwendung ausgegeben werden und werden in Folge Treiberbefehle 156 verarbeiten
und an einen Videokartentreiber 158 übertragen. Der Videokartentreiber 158 gibt
in Folge GPU-Befehle 156 an einen Videokartentreiber 158 aus.
Der Videokartentreiber 158 gibt in Folge GPU-Befehle 160 zu
einer Videokarte 162 aus. Die Videokarte 162 wird
dann die GPU-Befehle 160 empfangen und wird durch ihre
internen Schaltkreise die Befehle in ein Videosignal 164 übersetzen,
das von der Anzeigevorrichtung 168 empfangen wird und dem
Benutzer angezeigt wird.
-
2 ist
ein Blockdiagramm, das ein Grafiksubsystem darstellt, das gemäß der vorliegenden
Erfindung und deren Interaktion mit typischer Personal computersoftware
konfiguriert ist, um ein Bild zu erzeugen. Lediglich zu Darstellungszwecken
zeigt die 2 ein System, das mit zwei Videokarten
ausgestattet ist, die jeweils eine einzige GPU aufweisen. Es soll
jedoch von Fachleuten verstanden werden, dass zusätzliche
Videokarten zu dem System hinzugefügt werden können, wobei seine Effektivität erhöht wird. Zusätzliche
Effektivität
kann erzielt werden durch den Einbau von mehreren Videokarten, die
mehr als eine GPU aufweisen und/oder durch Einbringen einer Mischung
von Videokarten, wobei einige Einzel-GPUs aufweisen und einige mehrere
GPUs aufweisen.
-
Unter
der vorliegenden Erfindung ist das GCR-Modul 204 ein Softwareprogramm,
das sich zwischen der Computeranwendung und mehreren Instanzen der
API-Module 203, 205 befindet. Die GCR identifiziert
und nimmt API-Befehle 202 auf, die durch die Anwendung 200 herausgegeben
werden, bevor diese Befehle die API-Modulinstanzen 203, 205 erreichen.
Nachdem sie abgefangen sind, erzeugt das GCR-Modul 204 mehrere,
modifizierte API-Befehlsströme 206, 208.
Die modifizierten API-Befehlsströme 206, 208 werden
durch die API-Modulinstanzen 203, 205 empfangen,
welche wiederum jeweils mehrere Befehlsströme 207, 209 erzeugen,
die von ihren zugeordneten Videokartentreibern 210, 212 empfangen
und verarbeitet werden. Die Anzahl der modifizierten API-Befehlsströme 206, 208 und
der Instanzen der API-Module 203, 205, in diesem
Falle zwei (2), ist gleich der Anzahl der Videokarten, die in dem
System verwendet werden. Die API-Ströme werden so erzeugt, dass
jede Videokarte nur die Pixel erzeugen wird, die in einem bestimmten Bereich
des Bildschirms enthalten sind, der dieser Videokarte zugeordnet
ist.
-
Um
dieses „Mehr-Befehls-Strom"-Konzept besser zu
verstehen, zeigt die 3, wie es auf die vorliegende
Erfindung angewandt wird. Wie in 3 gezeigt,
besteht ein kompletter Grafikbildschirm 250 aus einer Mehrzahl
von Pixeln. Die Pixel sind in einem X-Y Gitter angeordnet und jedes
Pixel auf dem Schirm kann unter Verwendung seiner einzigartigen X-Y
Koordinate adressiert werden. Der Bereich der Koordinaten für den gesamten
Bildschirm erstreckt sich von Xlinks, Yoben für
die obere linke Ecke 252 bis Xrechts,
Yunten für
die untere rechte Ecke 254 der Anzeige. Wenn mittels des
einfachsten Beispiels die vorliegende Erfindung mit zwei Videokarten
verwendet wird, könnte
der Bildschirm in eine obere Hälfte 256 und
eine untere Hälfte 258 geteilt
werden. Die Pixelkoordinaten für
die obere Hälfte
des Bildschirm würden
reichen von Xlinks, Yoben,
(252) bis Xrechts, Yhälfte (260)
und die Pixelkoordinaten für
die untere Hälfte des
Bildschirms würden
reichen von Xlinks, (262) bis Xrechts, Yunten (254).
-
Demgemäß und rückkehrend
zur 2 könnte
der Befehlsstrom 207, der der Videokarte 218 entspricht,
die den oberen Teil des Bildschirms zeichnen soll, die Videokarte
anweisen, nur diese Pixel zu verarbeiten und zu zeichnen, die innerhalb
eines Rechtecks liegen, das begrenzt wird durch die Koordinaten
Xlinks, Yoben (252)
und Xrechts, Yhälfte (260).
Auf ähnliche
Weise würde
der Befehlsstrom 209, der der Videokarte 220 entspricht,
die den unteren Teil des Bildschirms zeichnen soll, die Videokarte
anweisen, nur diese Pixel zu verarbeiten und zu zeichnen, die innerhalb
eines Rechtecks liegen, das durch die Koordinaten Xrechts,
Yhälfte (262)
und Xrechts, Yunten (254)
begrenzt ist.
-
Die „Mehr-Befehlsstrom"-Modifikation kann durchgeführt werden
durch eine Vielzahl von Techniken, die im Stand der Technik wohlbekannt
sind, deren detaillierte Diskussion über den Bereich dieses Patents
hinausgeht. Beispielsweise kann ein Weg sein, der verwendet wird,
um mehrere Befehlsströme zu
erzeugen, der sein, in jeden Strom einen einzigartigen „2D-abschneide" oder „3D-abschneide" Befehl einzusetzen,
der die Videokarte, die dem Strom zugeordnet ist, anweist, nur diese
Pixel zu „zeichnen", die innerhalb eines
bestimmten rechteckigen, durchgehenden Bereichs des Bildschirms
dieser Karte zugeordnet sind. Zum Beispiel könnte in einem Zwei-Karten-System,
in dem eine erste Karte dem oberen Bereich des Bildschirms zugeordnet
ist und eine zweite Karte dem unteren Bereich zugeordnet ist, der
Strom, der der ersten Karte entspricht, würde den Videostrom für den gesamten
Bildschirm empfangen aber würde
einen 2D- oder 3D-Abschneidebefehl
empfangen, der ihn anweisen würde,
alle Pixel, die nicht inner halb des oberen Teils des Bildschirms
sind, „abzuschneiden" (das heißt nicht
zu zeichnen). Umgekehrt könnte
die zweite Karte auch den Videostrom für den gesamten Bildschirm empfangen,
aber würde
einen 2D- oder 3D-Abschneidebefehl empfangen, der sie anweisen würde, alle
Pixel, die nicht innerhalb des unteren Teils des Bildschirms sind, „abzuschneiden".
-
Die
GCR 204 kann auch dynamisch die verschiedenen Befehlsströme modifizieren,
so dass jede Videokarte Videobefehle empfängt, die nur zu einem bestimmten
Bereich des Bildschirms gehören. In
einfacheren Worten, empfängt
jede Videokarte nicht den gesamten Befehlsstrom, der notwendig ist, um
das gesamte Bild zu zeichnen. Zum Beispiel in einen System mit zwei
Videokarten, wobei jede Karte verantwortlich ist für 50% des
Bildschirms (z. B. oben/unten), würde die GCR 204 die
API-Befehle 202 von der Computeranwendung 200 empfangen, interpretieren
und verarbeiten und zwei Sätze
von modifizierten API-Befehlsströmen 206, 208 ausgeben.
Die „obere
Bereich" Videokarte
würde die
Befehle empfangen, die notwendig sind, um nur diese Pixel zu zeichnen,
die relevant sind für
den oberen Bereich des Videobildschirms. Die „untere Bereich" Videokarte würde die
Befehle empfangen, die notwendig sind, um nur diese Pixel zu zeichnen,
die relevant für
den unteren Bereich des Videobildschirms sind.
-
Es
sollte von Fachleuten verstanden werden, dass die unterschiedlichen
Bereiche des Bildschirms die jeder Videokarte zugeordnet sind, nicht
gleich groß zu
sein brauchen, oder dass jeder Karte ein zusammenhängender
Bereich des Videobildschirms zugeordnet ist. Unter den meisten,
aber nicht allen Umständen,
sollte es wünschenswert
sein, sicherzustellen, dass jeder Bereich des Bildschirms fair eine Videokarte
ausgewiesen wird und einer Videokarte zugewiesen wird. Jedoch können Situationen
einfach vorgestellt werden, in denen Regionen des Bildschirms grafisch
statisch verbleiben und daher der Grafikdurchsatz sich erhöhen würde wenn
solche Bereiche einmal gezeichnet würden und dann nicht zugewiesen
verbleiben würden.
-
Um
mit 2 fortzufahren, wird jeder der Befehlsströme 207, 209 dann
von seinem zugeordneten Videokartentreiber 210, 212 verarbeitet,
welcher wiederum GPU Befehle 214, 216 an eine
entsprechende Videokarte 218, 220 ausgibt. Jede
Videokarte 218, 220 erzeugt ein Videosignal 222, 224 das
ihrem jeweiligen Bereich des Bildschirms entspricht. Die mehreren
Videosignale 222, 224 die durch die verschiedenen
Videokarten erzeugt werden, werden zu einem Videozusammenführungsknoten
(VMH) 226 gesendet, der diese zu einem einzigen Ausgangsvideosignal 228 kombiniert,
das durch die Anzeigevorrichtung 168 empfangen wird.
-
Jede
Videokarte 218, 220 umfasst im Allgemeinen einen
oder mehrere GPUs, die konfiguriert sind, um verschiedene Renderfunktionen
in Antwort auf Anweisungen (Befehle) durchzuführen, die über einen Systembus empfangen
werden. In einigen Ausführungsformen
entsprechen die Renderfunktionen verschiedenen Stufen in einer Grafikverarbeitungspipeline
bei der Geometriedaten, die eine Szene beschreiben in Pixeldaten
zur Anzeige auf einer Anzeigevorrichtung 168 transformiert
werden. Diese Funktionen können
beispielsweise umfassen Beleuchtungstransformationen, Koordinatentransformationen,
Scannumwandlung von geometrischen Primitiven auf gerastete Daten,
Schattierungsberechnungen, Schattierungsrendern, Texturüberlagerungen,
usw.. Verschiedene Implementierungen von Renderfunktionen sind im
Stand der Technik bekannt und können
von den GPUs auf den Videokarten 218, 220 implementiert
werden. Jede GPU auf den Videokarten 218, 220 hat
einen zugeordneten Grafikspeicher, der so ausgeführt sein kann, dass er eine
oder mehrere integrierte Schaltkreisspeichervorrichtungen von allgemein
gewöhnlichem
Design aufweisen kann. Die Grafikspeicher können verschiedene physikalische
oder logische Unterteilungen aufweisen, wie beispielsweise Anzeigepuffer
und Befehlspuffer. Die Anzeigepuffer speichern Pixeldaten für ein Bild oder
für einen
Teil eines Bildes, das gelesen wird und zu der Anzeigevorrichtung 168 zur
Darstellung übertragen
wird. Wie oben beschrieben, können
die Pixeldaten erzeugt werden aus Szenendaten, die von einer Anwendung 150 erzeugt
werden. In einigen Ausführungsformen
kann der Anzeigepuffer dop pelt gepuffert sein, so dass während die
Daten für
ein erstes Bild zur Anzeige von einem vorderen Puffer gelesen werden,
die Daten für
ein zweites Bild zu einem hinteren Puffer geschrieben werden können, ohne
das gegenwärtig
angezeigte Bild zu beeinflussen. Die Befehlspuffer auf den Videokarten 218, 220 werden dann
verwendet, um Befehle zur Ausführung
durch die entsprechende Videokarte 218, 220, wie
oben beschrieben, aufzureihen. Andere Bereiche von Grafikspeicher
auf den Videokarten 218, 220 können verwendet werden, um Daten
zu speichern, die durch die entsprechenden GPUs benötigt werden
(wie beispielsweise Texturdaten, Farbnachschlagetabellen, etc.),
ausführbare
Programmcodes, usw.. Für
jeden Grafikspeicher auf den Videokarten 218, 220 kann eine
Speicherschnittstelle bereitgestellt werden zum Steuern des Zugriffs
auf den entsprechenden Grafikspeicher. Die Speicherschnittstellen
können
mit den entsprechenden GPUs oder Speichern integriert sein oder
die Speicherschnittstellen können
als separate integrierte Schaltkreisvorrichtungen implementiert sein.
In einer bekannten Implementierung werden alle Speicherzugriffsanfragen,
die von der CPU kommen, zu der Speicherschnittstelle gesandt. Wenn
die Zieladresse der Anfrage einem Ort in dem GPU-Speicher entspricht,
kann die Speicherschnittstelle auf den entsprechenden Ort zugreifen.
-
Ein
Synchronisierer 232 stellt sicher, dass die mehreren Videokarten
synchronisiert sind, um Videodaten für die gleiche Videoausgabe
zur gleichen Zeit zu erzeugen. Es gibt verschiedenen Verfahren die
Fachleuten bekannt sind, um diese Art der Synchronisation zu erreichen,
aber eine detaillierte Diskussion dessen geht über den Bereich dieses Patents
hinaus. Beispielsweise liegt ein Weg, um eine Synchronisation zu
erreichen, darin eine „genlock"-Mechanismus (Kurzform
für Generatorblockierung)
zu verwenden. Ein genlock-Mechanismus synchronisiert allgemein ausgedrückt mehrere
Vorrichtungen zu einem spezifischen Zeitsignal. Ein anderes Verfahren
zum Erzielen einer Synchronisation zwischen den mehreren Videokarten
liegt darin, eine Zeitregulierungseinrichtung in einer der Videokarten als
eine Master-Zeitregulierungseinrichtung zu bestimmen und den Schaltkreis
in den anderen Karten so zu modifizieren, dass die Zeitregulierungseinrich tungen
in diesen Karten als „slaves" der Master-Zeitregulierungseinrichtungen
wirken. Die Zeitregulierungseinrichtungen verwenden im Allgemeinen
piezoelektrische programmierbare Kristalle, Oszillatoren oder programmierbare
Oszillatoren als Zeitreferenzquellen. Wenn diese Methode verwendet
wird, würden „slave"-Karten periodisch
durch den Masterkristall zurückgesetzt
werden, so dass ihre Zeitbestimmung im Wesentlichen während des
Betriebs des Systems synchronisiert wäre.
-
4 zeigt
eine schematische Darstellung des Betriebs des VMH 226 im
Detail. Die prinzipiellen Komponenten des VMH 226 sind
ein Videoschalter 322, ein Videoschaltercontroller 320,
ein Microcontroller 316 und ein Videoausgang 330.
Typischerweise besteht jedes Videosignal, das von dem VMH 226 empfangen
wird aus einer Videodatenkomponente 308, 310 und
einer Synchronisierungskomponente 312, 314. Die
Videodatenkomponente 308, 310 besteht aus roten,
grünen
und blauen Werten („RGB") (oder eine andere
Darstellung der Pixelfarben) für das
Pixel, das zu einer bestimmten Zeit gezeichnet wird. Die Synchronisationskomponente 312, 314 besteht
aus vertikalen und horizontalen Synchronisationssignalen (Vsync und Hsync) welche
die vertikale und horizontale Position (d. h. die Koordinaten) des
Pixels bestimmen, welches zu einer bestimmten Zeit gezeichnet wird.
Da die Ausgaben von den Videokarten synchronisiert sind (wie oben
beschrieben) sind die Synchronisationskomponenten 312, 314 der
verschiedenen Videosignale 222, 224 im Wesentlichen zu
jeder Zeit identisch.
-
Wenn
die Videosignale 222, 224 an dem VMH 226 ankommen
werden ihre Videodatenkomponenten 308, 310 zu
dem Videoschalter 322 geleitet. Der Videoschalter 322 ist
wiederum durch den Videoschaltercontroller 320 gesteuert,
der die Synchronisationskomponenten 312, 314 empfängt. Während jedem
Bildwiederholungszyklus leitet der Videoschalter 323 intelligent
und sequentiell die Videodatenkomponente der verschiedenen Videosignale 222, 224 auf
solch eine Art und Weise, dass ein einziges nahtlos kombiniertes
Videosignal 228 von der Videoausgabe 330 des VMH 226 zu
der Anzeigevorrichtung 168 übertragen wird, zusammen mit
den Synchronisationskomponenten 312, 314 die im
Wesentlichen durch den Videoschaltercontroller 320 „geleitet" werden.
-
Wie
oben erwähnt,
schaltet der Videoschalter zyklisch seine mehreren Eingänge sequentiell durch,
und erzeugt eine einzige nahtlose Ausgabe. Das Timing des Durchschaltens
von einem Videosignal zu dem nächsten
ist kritisch und muss exakt im richtigen Moment durchgeführt werden,
damit das kombinierte Videosignal 228 nahtlos erscheint.
In einem System mit zwei Videokarten, wie das frühere als Beispiel in 2 benutzte,
werden zu Beginn des Bildwiederholungszyklus die Videodatenkomponenten
von der Videokarte 218, die dem Zeichnen der oberen Hälfte des
Bildschirms 256 zugeordnet ist, zu dem Videoausgang 330 des
VMH 226 durch den Videoschalter geleitet. Dann, exakt an
dem Punkt wenn die untere Hälfte
des Bildschirms durch die zweite Videokarte 220 gezeichnet
werden soll, wird der Videoschalter 322 aktiviert oder „getriggert" und dann beginnt
der Videoausgang 330, damit die Videodatenkomponenten von
der Videokarte 220 zu empfangen die dem Zeichnen der untere
Hälfte
des Bildschirms 258 zugeordnet ist. Wenn die untere Hälfte des
Bildschirms vervollständigt
ist, beginnt der Bildwiederholungszyklus von Neuem und der Videoschalter 322 wird
wieder getriggert und die Videoausgabe 330 beginnt wieder
damit Videodaten von der „oberen
Bereich"-Videokarte 218 zu
empfangen. Dieser Zyklus wird kontinuierlich wiederholt, um ein
nahtlos kombiniertes Videosignal 228 zu erhalten.
-
Der
Videoschalter 322 wird durch den Videoschaltercontroller 320 gesteuert,
der bestimmt, wie lang ein Intervall zwischen zwei Triggersignalen
des Videoschalters sein sollte. Der Controller 320 bestimmt
das Triggerintervall unter Verwendung von drei Datenelementen. Das
erste Datenelement ist die vertikale Wiederholungsrate bei der die
Videokarten betrieben werden. Die vertikale Wiederholungsrate wird
ausgedrückt
in Hertz (Hz) oder Zyklen pro Sekunde. Beispielsweise zeichnet eine
Videokarte, die mit einer vertikalen Widerholungsrate von 50 Hz
arbeitet den ganzen Bildschirm 50-mal jede Sekunde. Anders
ausgedrückt
zeichnet eine Videokarte die mit 50 Hz arbeitet den kompletten Bildschirme in
20 Millisekunden. Der Videoschaltercontroller 320 berechnet
dynamisch die vertikale Widerholungsrate von dem Vsync Teil
der Synchronisationskomponente 312, 314, die er
von den mehreren Videokartensignalen 222, 224 empfängt.
-
Das
zweite Datenelement ist die vertikale Auflösung. Ein Weg, die vertikale
Auflösung
zu bestimmen ist es, die Anzahl der horizontalen Synchronisationspulse
pro Frame zu zählen
(die Framedauer wird basierend auf der Bildwiderholrate berechnet). Beispielsweise
hat eine Videokarte, die bei einer vertikalen Auflösung von
1600 × 1200
arbeitet, eine vertikale Auflösung
von 1200 Abtastlinien. Dies bedeutet, dass in jedem Frame 1200 Scannlinienvideodaten
enthalten sind.
-
Das
dritte Datenelement, das von dem Videoschaltercontroller 320 verwendet
wird, ist der Prozentsatz des Bildschirms welcher jeder Videokarte 218, 220 zugeordnet
ist. In bestimmten Situationen könnte
es wünschenswert
sein, den Bildschirm zwischen den Videokarten gleichmäßig aufzuteilen,
in anderen Situationen, beispielsweise wenn eine Videokarte leistungsfähiger ist
als die andere(n) könnte
es wünschenswert
sein, einen größeren Teil
des Bildschirms einer oder mehrerer der Videokarten zuzuweisen.
Dieses Element, genant das „Lastausgleichsverhältnis" wird durch Software
zugeordnet, und optional durch eine Benutzereingabe, und wird durch
den Microcontroller 316 von dem Datenbus 110 des
Computers erhalten. Das Lastausgleichsverhältnis wird wiederum erhalten
durch den Videoschaltercontroller 320 von dem VMH Microcontroller 316.
-
Fachleute
werden erkennen, dass ein einfaches Testrückkopplungsschleifenprogramm,
welches dynamisch das Lastausgleichsverhältnis basierend auf der Last
an jeder Videokarte auf einer dynamischen oder Frame-by-Frame-Basis
dynamisch einstellt, den Durchsatz der kombinierten GPUs maximieren
kann. Typischerweise interagiert das Rückkopplungsschleifenprogramm
zwischen dem GCR-Modul 204 welches die Grafikverarbeitungszuordnungen
zu separaten API-Befehlsströme 207, 209 aufteilt
und den VMH 226, das die resultierenden, verar beiteten
Signale 222, 224 von den Videokarten 218, 220 zusammenführt. Im
Speziellen kann das Rückkopplungsschleifenprogramm
die relative Verarbeitungsmöglichkeit
jeder der Videokarten überwachen
und dynamisch den zugeordneten Bildschirmbereich, der jeder der
Videokarten zugeordnet ist, in seiner Größe verändern, falls notwendig, um den
Gesamtvideoverarbeitungsdurchsatz zu maximieren.
-
Wenn
die vertikale Wiederholungsrate, vertikale Auflösung und das Lastausgleichsverhältnis dem
Videoschalterschaltercontroller 320 bekannt sind, kann
er einfach die Triggerintervalle berechnen, die verwendet werden,
um das kombinierte Videosignal 228 zu erzeugen. Zum Zwecke
der Darstellung wäre
in einem System mit zwei Videokarten, dass bei 50 Hz betrieben wird
(d. h. 20 Millisekunden zum Zeichnen des gesamten Bildschirms),
mit einer vertikalen Auflösung
von 1200; und in dem die Videokarten die den oberen und unteren
Hälften
des Bildschirms zugeordnet sind, entsprechend mit 25% und 75% Lastausgleichsverhältnis zugeordnet
sind, die Schaltsequenz wie folgt: (1) zu Beginn des Bildwiederholungszyklus
würde der
Videoschalter 322 die Videodatenkomponenten 308 von
der Videokarte 218 für
den oberen Bereich zu dem Videoausgang 330 des VMH 226 leiten;
(2) nach 300 Scannlinien (25% von 1200 Scannlinien) würde der
Schalter durch den Controller 220 getriggert und würde beginnen
Videodatenkomponenten 310 von der Videokarte 220 von
dem unteren Bereich zu dem Videoausgang 330 des VMH 226 zu
leiten; (3) Nach zusätzlichen
900 Scannlinien (75% von 1200 Scannlinien) würde der Videoschalter 322 zu
seiner ursprünglichen
Position getriggert und einen neuen Bildwiederholungszyklus beginnen.
Um die Erzeugung von Artefakten in dem Endbild zu verhindern, sind
alle Schalter zwischen den verschiedenen Videokarten zeitlich bestimmt,
um während
der horizontalen Ausblendperiode der Videosignale aufzutreten.
-
Daher
kann erkannt werden, dass Ausführungsformen
der vorliegenden Erfindung mehrere GPUs auf einer einzigen Videokarte
bereitstellen oder mehre Videokarten 218, 220,
die gleichzeitig arbeiten, um Videoverarbeitungsaufgaben aufzuteilen und
im Speziellen offenbaren sie das Aufteilen eines Anzeigebereichs 250 in
zwei oder mehr bestimmte Bereiche 256, 258, wobei
eine der Videokarten 218, 220 ausgewählt wurde
jeden der bestimmten Bereiche 256, 258, wobei
eine der Videokarten 218, 220 für jeden
der bestimmten Bereiche 256, 258 zur Verarbeitung
ausgewählt
wurde, wie beispielsweise für eine
Anzahl von Linien einer Raster basierenden Anzeige. Das Bild wird
dargestellt durch Auslesen der Pixeldaten von einem Anzeigepuffer
für jede
GPU oder Videokarte in einer geeigneten Sequenz. Um die interne
Konsistenz des angezeigten Bildes sicherzustellen („frame
coherence") wird
jede GPU daran gehindert, den darauffolgenden Frame zu rendern bis
die andere GPU auch den gegenwärtigen Frame
beendet hat, so dass beide Bereiche des angezeigten Bildes im gleichen
Auslesedurchgang erneuert werden können.
-
Während die
obige Diskussion beschreibt, dass die vorliegende Erfindung offenbart,
dass der Anzeigebereich in zwei separate Bereiche 256, 258 geteilt
wird, sollte erkannt werden, dass der Anzeigebereich 250 unter
Verwendung von unterschiedlichen Techniken aufgeteilt werden kann
und dass zwei oder mehrere Videokarten 218, 220 gleichzeitig
betrieben werden um die Videoverarbeitungsaufgaben aufzuteilen,
in dem sie unterschiedliche Bereiche bearbeiten. Beispielsweise
kann der Anzeigebereiche 250 in vier Bereiche aufgeteilt
werden, wobei jede der Videokarten 218, 220 zwei
separate Bereiche bearbeitet oder wobei eine der Videokarten 218, 220 drei
der vier Anzeigebereiche bearbeitet, wie es für den Lastausgleich benötigt wird.
Auf gleiche Weise ist es möglich,
die Videokarten 218, 220 so zu paaren, dass jede
jeweils gerade oder ungerade Anzeigereihen bearbeitet, wie dies
für eine
Interlaced-Anzeige verwendet wird, wo das projizierte Bild schnell
zwischen den gerade nummerierten Linien und den ungerade nummerierten
Linien jedes Bildes wechselt. Beispielsweise werden bei einer Standard-Funk-Fernsehübertragung
nur die Hälfte
der Linien jedes Frames in dem, was als ein Feld bekannt ist, übertragen,
wobei ein Feld (das ungerade Feld) nur die ungerade nummerierten
Linien enthält
und das nächste
Feld (das gerade Feld) nur die gerade nummerierten Linien enthält.
-
In
den oben beschriebenen Ausführungsformen
der vorliegenden Erfindung kann erkannt werden, dass das VMH 226 gleichzeitige
Videosignalausgaben 222, 224 von mehreren GPUs
oder Videokarten 218, 220 empfängt und kombiniert und die
unverbunden Videodaten 308, 310 zu einem kohärenten Videoausgang 330 organisiert,
unter Verwendung von Synchronisationsdaten 312, 314,
um den Betrieb des Schalters 322 zu steuern, der selektiv
die Videodaten 308, 310 empfängt, um die Videoausgabe 330 zu
erhalten. Unter Bezugnahme nun auf 5 umfasst
in einer alternativen Ausführungsform der
vorliegenden Erfindung der VMH 226 weiterhin einen Videopuffer 340,
der die unverbundenen Videodaten 308, 310 empfängt und
speichert. Im Speziellen speichert der Videopuffer 340 die
ungeordneten Videodaten 308, 310, wie sie von
den Videokarten 318, 320 empfangen werden. Eine
Pufferzugriffsanwendung 342 greift dann selektiv auf den
Videospeicherpuffer zu, gemäß den Synchronisationsdaten 312, 314,
wie es benötigt
wird, um die kohärente
Videoausgabe 330 zu bilden. Im Speziellen greift während jedes
Bildwiederholungszyklus die Pufferzugriffsanwendung 342 intelligent
auf den Videopuffer 340 zu, der die Videodatenkomponenten 308, 310 enthält, so dass
dann ein einziges nahtlos kombiniertes Videosignal 228 von
dem Videoausgang 330 des VMH 226 zu der Anzeigeeinrichtung 168 zusammen mit
den Synchronisationskomponenten 312, 314 übertragen
wird, welche im Wesentlichen die Pufferzugriffsanwendung 342 „durchlaufen".
-
Alternativ
kann der Videopuffer 340 die Videodatenkomponenten 308, 310 gemäß den Synchronisationsdaten 312, 314 in
einer geordneten Form speichern, so dass während jedem Bildwiederholungszyklus
die Pufferzugriffsanwendung 342 eher auf die bereits geordneten
Videodatenkomponenten 308, 310 zugreifen kann,
wie es benötigt
wird, um die zusammengesetzte Videoausgabe 330 zu bilden,
die die verschiedenen Anzeigebereiche, die durch jede der Videokarten 218, 220 verarbeitet
wurden, vereinigt.
-
Es
sollte erkannt werden, dass andere Verfahren zum Organisieren der
Videodaten zu einer Anzeige in der vorliegenden Erfindung verwendet
werden können,
wobei jede der Videokarten 218, 220 für einen
separaten Bereich des Stroms der Videodaten zuständig ist, Anstelle eines getrennten
Bereichs des Anzeigebereichs 250. Beispielsweise können die zwei
Videokarten 218, 220 zusammenarbeiten, um Videodaten
zu einer Anzeige bereit zu stellen in dem sie sich abwechseln, wobei
die erste Videokarte 218 die Anzeige für eine bestimmte Zeitdauer
steuert und wobei die zweite Videokarte 220 die Videoverarbeitungsaufgaben
an dem Ende dieser Periode sequentiell übernimmt. Diese Konfiguration
stellt Vorteile bereit, da eine Videokarte 218 verarbeite
Videodaten bereitstellen kann, während
die zweite Videokarte 220 ihre Verarbeitung der nächsten Videodaten
für die
nächste
Zeitperiode vervollständigt.
-
Unter
Bezugnahme nun auf 6 wird die Verarbeitung eines
Videosignals durch mehrere GPUs oder Videokarten durch Zeitdivision
detaillierter offenbart. 6 ist ein Blockdiagramm, das
ein Grafiksubsystem illustriert, das konfiguriert ist in Übereinstimmung
mit der vorliegenden Erfindung und ihrer Interaktion mit einer typischen
Personalcomputersoftware, um ein Bild zu erzeugen, unter Verwendung
von mehreren Videokarten oder mehreren GPUs, die auf einer einzigen
Karte angeordnet sind. Lediglich zu Illustrationszwecken zeigt 6 ein
System das mit zwei Videokarten 418, 420 ausgestattet
ist, die jeweils eine einzige GPU aufweisen. Jedoch wird es von
Fachleuten verstanden, dass zusätzliche
Videokarten oder Karten mit mehreren unabhängigen GPUs zu dem System hinzugefügt werden
können,
wobei seine Effektivität
erhöht
wird. Auf ähnliche
Weise kann eine zusätzliche
Effektivität
erzielt werden, durch Einbringen von mehreren Videokarten, die mehr
als eine GPU aufweisen und/oder durch Einbringen einer Mischung
von Videokarten, wobei einige einzelne GPUs und einige mehrere GPUs
haben.
-
In
der vorliegen Erfindung ist das Grafikmodul 404 ein Softwareprograrmm,
dass sich zwischen der Computeranwendung und mehreren Instanzen der API-Module 403, 405 befindet.
Die GCR identifiziert und fängt
API-Befehle 402 ab, die durch eine Anwendung 400 herausgegeben
werden. Wenn sie abgefangen sind, erzeugt das GCR-Modul 404 mehrere
modifizierte API-Befehlsströme 406, 408 im
Allgemeinen durch die Verwendung einer Art von Signalschalter, der
selektiv die API-Befehle 402 zwischen den API-Modulen 403, 405 gemäß verschiedenen
Kriterien, wie beispielsweise einem Zeitstempel, der dem API-Befehl 402 zugeordnet
ist, leitet. Die modifizierten API-Befehlsströme 406, 408,
die jeweils diskrete Bereiche der API-Befehle 402 repräsentieren,
werden durch die API-Modulinstanzen 403, 405 empfangen,
welche wiederum entsprechende Befehlsströme 407, 409 erzeugen,
welche von ihren entsprechend zugeordneten Videokartentreibern 410, 414 empfangen
und verarbeitet werden. Die Anzahl der modifizierten API-Befehlsströme 406, 408 und
der API-Module 403, 405 in diesem Fall (2) wird im
Allgemeinen gleich der Anzahl der Videokarten oder GPUs, die in
dem System verwendet werden, sein. Die Befehlsströme 406, 408 werden
auf so einen Weise erzeugt, dass jede Videokarte 418, 420 die
Pixel erzeugt, die innerhalb dem Anzeigeschirm während Zeitperioden sind, die
der entsprechenden Videokarte zugeordnet sind. Die Zeitaufteilung
eines API-Befehlsstroms 402 in mehrere separate Befehlsströme kann
durch einen Vielzahl von Techniken durchgeführt werden, die im Stand der
Technik wohl bekannt sind, wobei eine detaillierte Diskussion dieser über den
Bereich dieses Patents hinausgeht.
-
Wie
oben vorgeschlagen, kann das Grafikmodul 404 dynamisch
die verschiedenen Befehlsströme
zuordnen, so dass jede Videokarte Videobefehle empfängt, die
nur zu bestimmten Zeitanteilen des Bildschirms gehören. Einfach
ausgedrückt,
empfängt
jede Videokarte 418, 420 den gesamten Befehlsstrom,
der notwendig ist, das gesamte Bild während dieser diskreten Zeitperioden
zu zeichnen. Beispielsweise würde
in einem System mit zwei Videokarten, wobei jede Karte zuständig ist
für 50%
der diskreten Zeitperioden, wie beispielsweise gerade oder ungerade
Zeitperioden, das Grafikmodul 404 die API-Befehle 402 von
der Computeranwendung 400 empfangen, interpretieren und
verarbeiten und zwei Sätze
von modifizierten API-Befehlsströmen 406, 408 herausgeben.
Die Video karte für
die ungerade Periode würde
die Befehle empfangen, die benötigt
werden, um nur die Pixel zu zeichnen, die relevant für die ungeraden
Perioden des Videobildschirms sind (Perioden 1, 3, 5, etc.). Die
Videokarte für
die geraden Perioden würde
die Befehle empfangen, die benötigt
werden, um nur diese Pixel zu zeichnen, die relevant sind für die geraden
Perioden des Videobildschirms (Perioden 2, 4, 6, etc.). Es wird von
Fachleuten verstanden, dass die unterschiedlichen Zeitperioden des
Bildschirms, die jeder Videokarte zugeordnet sind, nicht in ihrer
Größe gleich
sein müssen,
noch muss jede Karte einer kontinuierlichen Zeitperiode der Videoanzeige
zugeordnet sein.
-
Jeder
der Befehlsströme 407, 409 wird
dann durch seinen zugeordneten Videokartentreiber 410, 414 verarbeitet,
welcher wiederum die GPU-Befehle 414, 416 zu einer
entsprechenden Videokarte 418, 420 ausgibt. Jede
Videokarte 418, 420 erzeugt wiederum ein Videosignal 422, 424,
die ihren entsprechenden Zeitperioden zum Verwalten der Ausgabe des
Videoanzeigebildschirms 168 entsprechen.
-
Ein
Synchronisierer 434 stellt sicher, dass die mehreren Videokarten 418, 420 koordiniert
werden, so dass sie Videodaten erzeugen, die zusammen eine sichtbare
Anzeige 168 ergeben, die nahtlos die Videodaten unterschiedlicher
Zeitperioden darstellt. Es gibt verschiedene Methoden, die Fachleuten
bekannt sind, um diese Art von Synchronisation zu erzielen. Aber
eine detaillierte Diskussion davon geht über den Bereich dieses Patents
hinaus. Ein Beispiel eine Möglichkeit
der Synchronisation zu erzielen, ist durch die Verwendung von eines „genlock"-Mechanismus (Kurzform für generator
locking = Generator Blockieren). Ein genlock-Mechanismus synchronisiert
allgemein ausgedrückt
mehrere Geräte
auf ein spezifisches Timing-Signal. Ein anderes Verfahren zum Erzielen
einer Synchronisation zwischen den verschiedenen Videokarten ist
es, eine Zeitreguliereinrichtung in einer der Videokarten als eine
Master-Zeitregulierungseinrichtung festzulegen und den Schaltkreis
in den anderen Karten zu modifizieren, so dass die Zeitregulierungseinrichtungen
in diesen Karten als „slaves" der Master- Zeitregulierungseinrichtungen
agieren. Die Zeitregulierungseinrichtungen verwenden im Allgemeinen
piezoelektrische Kristalle, programmierbare Kristalle, Oszillatoren
oder programmierbare Oszillatoren als Zeitreferenzquellen. Unter
Verwendung dieser Methode, würden
die Zeitkristalle in den slave-Karten periodisch durch die Masterkristalle
zurückgesetzt
werden, so dass ihr Zeitverhalten im Wesentlichen während des
Betriebs des Systems synchronisiert wäre. Auf diese Art und Weise
könnte
eine Videokarte ein Synchronisationssignal erzeugen, das den Betrieb der
verbleibenden Videokarten bestimmt, so dass jegliche Irregularitäten im Zeitverhalten
durch nachfolgende Berechnungen sofort kompensiert werden.
-
Die
mehreren Videosignale 444, 444, die durch die
verschiedenen Videokarten erzeugt werden, werden zu einem Videovereinigungsknoten
(video merger hub = VMH) 426 gesendet, welcher diese in
ein einziges Videoausgangssignal 428 kombiniert, welches
von der Anzeigeeinrichtung 168 empfangen wird.
-
7 zeigt
eine schematische Darstellung, die den Betrieb des VMH 426 in
einer Ausführungsform
der vorliegenden Erfindung im Detail zeigt. Die prinzipiellen Komponenten
des VMH 426 sind ein Videoschalter 522, ein Videoschalterkontroller 520,
ein Mikrokontroller 516 und ein Videoausgang 530.
Typischerweise besteht jedes Videosignal, das von dem VMH 426 empfangen
wird, aus einer Videodatenkomponente 508, 510 und
einer Synchronisationskomponente 512, 514. Die
Videodatenkomponente 508, 510 besteht aus roten,
grünen
und blauen Werten für
Pixel, die zu einer bestimmten Zeit gezeichnet werden („RGB") (oder eine andere
Darstellung von Werten für
Pixel). Die Synchronisationskomponente 512, 514 besteht
aus Zeitsynchronisationssignalen (Tsync),
welche die bestimmten Zeiten der Pixel bestimmen, die den Videodatenkomponenten 508, 510 zugeordnet
sind.
-
Wenn
die Videosignale 422, 424 an dem VMH 426 ankommen,
werden ihre Videodatenkomponenten 508, 518 zu
dem Videoschalter 522 geleitet. Der Videoschalter 522 ist
wiederum durch den Videoschalterkontroller 520 gesteuert,
der die Synchronisationskomponenten 512, 514 empfängt. Der
Videoschalter 522 leitet intelligent und sequentiell die
Videodatenkomponente von den verschiedenen Videosignalen 422, 424 in
solch einer Art und Weise, dass ein einziges, nahtlos kombiniertes
Videosignal 428 dann von dem Videoausgang 530 des
VMH 426 zu der Anzeigeeinrichtung 168 übertragen
wird, zusammen mit den Synchronisationskomponenten 512, 514,
welche im Wesentlichen durch den Videoschalterkontroller 520 geleitet
werden.
-
Wie
oben erwähnt,
schaltet der Videoschalter 522 zyklisch hintereinander
durch seine mehreren Eingänge,
wobei er eine einzige nahtlose Ausgabe erzeugt. Das Zeitverhalten
des Schaltens von einem Videosignal zu dem nächsten lässt das kombinierte Videosignal 428 nahtlos
erscheinen; d. h. die Anzeige 168 empfängt nicht unterschiedliche
Anweisungen nebeneinander und es gibt auch keine Pause zwischen
dem Ende eines Videodatenstroms und dem Anfang des nächsten Videodatenstroms.
In einem System mit zwei Videokarten, wie dem vorher als ein Beispiel
in 6 benutzten, werden die Videodatenkomponenten
von der Videokarte 418, welche zugewiesen ist, den Bildschirm
während
einer bestimmten Zeitperiode zu zeichnen, zu dem Videoausgang 530 des
VMH 426 durch den Videoschalter 422 während der
geeigneten Zeitperiode geleitet, wie durch die Synchronisationsdaten
angezeigt. Dann, wenn die Zeitperiode für die erste Videokarte 418 endet,
und die Zeitperiode für
die zweite Videokarte 420 beginnt, wird der Videoschalter 522 aktiviert
und der Videoausgang 530 beginnt dann, die Videodatenkomponenten
von der anderen Videokarte 420 zu empfangen. Wenn die Zeitperiode
für die
zweite Videokarte 420 beendet ist, beginnt der Zyklus von Neuem,
wobei der Videoschalter 522 wieder arbeitet, so dass der
Videoausgang 530 nun die Videodaten von der Videokarte 418 für die erste
Periode empfängt.
Dieser Zyklus wird kontinuierlich wiederholt, um ein nahtlos kombiniertes
Videosignal 428 zu erhalten.
-
Der
Videoschalter 522 wird durch den Videoschalterkontroller 520 gesteuert,
der bestimmt, wie lang ein Intervall zwischen zwei Videoschaltertriggersignalen
sein sollte. Der Kontroller 520 bestimmt das Triggerintervall
unter Verwendung der Synchronisationskomponente 512, 514,
die innerhalb der mehreren Videokartensignale 422, 424 empfangen
wird. Das primäre
Element, das von dem Videoschalterkontroller 520 verwendet
wird, ist die Dauer der Zeitperioden, die jeder Videokarte 418, 420 zugewiesen wird.
In bestimmten Situationen könnte
es wünschenswert
sein, die Zeitperioden zwischen den Videokarten gleich zu verteilen.
In anderen Situationen, wenn beispielsweise eine Videokarte leistungsfähiger ist
als die andere(n) oder eine relativ größere Bandbreitenverbindung
besitzt, könnte
es wünschenswert
sein, eine längere
Zeitperiode einer der Videokarten zuzuweisen. Dieses Lastausgleichsverhältnis wird
durch Software zugewiesen und optional durch eine Benutzereingabe
und wird durch den Mikrokontroller 516 von dem Datenbus 110 des
Computers erhalten. Das Lastausgleichsverhältnis wird wiederum von dem
Videoschalterkontroller 520 von dem Mikrokontroller 516 erhalten.
-
Fachleute
werden erkennen, dass die Verwendung eines einfachen Testrückkopplungsschleifenprogramms,
das dynamisch das Lastausgleichsverhältnis basierend auf der Last
auf jeder der Videokarten auf einer dynamischen Basis oder einer
Periode-zu-Periode-Basis dynamisch einstellt, den Durchsatz der
kombinierten GPUs maximieren kann. Typischerweise interagiert das
Testrückkopplungsschleifenprogramm
zwischen dem Grafikmodul 404, das die Grafikverarbeitungszuordnungen
in separate API-Befehlsströme 407, 409 trennt
und dem VMH 426, der die resultierenden verarbeiteten Videosignale 422, 424 von
den Videokarten 418, 420 zusammenfügt. Insbesondere
kann das Rückkopplungsschleifenprogramm
die relative verfügbare
Verarbeitungsmöglichkeit
jeder der Videokarten 418, 420 überwachen
und dynamisch die Länge
der Zeitperioden, die jeder der Videokarten 418, 420 zugewiesen ist,
in ihrer Größe verändern, wie
es notwendig ist, um durch Minimieren der Stillstandszeiten der
Videokarten 418, 420 den gesamten Videoverarbeitungsdurchsatz
zu maximieren.
-
Daher
kann erkannt werden, dass Ausführungsformen
der vorliegenden Erfindung mehrere GPUs bereitstellen auf einer
einzigen Videokarte oder mehreren Videokarten 418, 420,
welche gleichzeitig arbeiten, um Videoverarbeitungsaufgaben aufzuteilen.
Und speziell wird offenbart, ein Teilen der Zeitperioden des Anzeigegebiets 450 in
zwei oder mehrere diskrete Zeitperioden, wobei jede der Videokarten 418, 420 spezifisch
ausgewählt
wird, um separate Zeitperioden zu verarbeiten. Das Bild wird dargestellt,
indem Pixeldaten aus einem Anzeigepuffer für jede GPU oder Videokarte
in einer geeigneten Sequenz ausgelesen werden. Um eine interne Konsistenz
des dargestellten Bildes zu erhalten, wird jede GPU davon abgehalten,
ein nachfolgendes Bild zu rendern, bis die andere GPU die gegenwärtige Anzeige
beendet hat.
-
Es
ist möglich,
die Videokarten 418, 420 so zu paaren, indem jede
gerade bzw. ungerade Anzeigereihen bearbeitet, wie sie in einer
Interlaced-Anzeige verwendet werden, wo das dargestellte Bild schnell
zwischen gerade nummerierten Linien und ungerade nummerierten Linien
jedes Bildes wechselt. Beispielsweise wird in einer Standard-Funk-Fernsehübertragung
nur die Hälfte
der Linien von jedem Rahmen (frame) übertragen, in dem, was als
Feld (field) bekannt ist, wobei ein Feld (das ungerade Feld) nur
die ungerade nummerierten Linien enthält und das nächste Feld
(das gerade Feld) nur die gerade nummerierten Linien enthält.
-
Unter
Bezugnahme nun auf 8 umfasst in einer alternativen
Ausführungsform
der vorliegenden Erfindung der VMH 426 weiterhin einen
Videopuffer 540, der die unverbundenen Videodaten 508, 510 empfängt und
speichert. Der Videopuffer 540 speichert die ungeordneten
Videodaten 508, 510 wie sie von den Videokarten 418, 420 empfangen
werden. Eine Pufferzugriffsanwendung 542 greift dann selektiv
auf den Videospeicherpuffer gemäß der Synchronisationsdaten 512, 514 zu,
wie es benötigt
wird, um den Videoausgang 530 während der Zeitperioden, die
jeder der Videokarten 418, 420 zugeordnet sind, zu
bilden. Beispielsweise sollte erkannt werden, dass jede der Videokarten 418, 420 gleichzeitig verarbeitete
Videodaten für
unterschiedliche Zeitperioden ausgibt (streaming). Der Puffer 540 kann
diese Daten, wie empfangen, in unorganisiertem Zustand speichern,
wobei auf diese Daten selektiv zugegriffen wird, gemäß den Synchronisationsdaten 512, 514, wie
es benötigt
wird, um einen geordneten Videodatenstrom zu erzeugen. Insbesondere
greift während jeder
der zugeordneten Perioden die Pufferzugriffsanwendung 542 intelligent
auf den Videopuffer 540 zu, der die Videodatenkomponenten 508, 510 von
den verschiedenen Videosignalen 422, 424 enthält, so dass
ein einziges, nahtlos kombiniertes Videosignal 428 von
dem Videoausgang 530 des VMH 426 zur Anzeigeeinrichtung 168 übertragen
wird.
-
Alternativ
kann der Videopuffer 540 die Videodatenkomponente 508, 510 in
einer geordneten Form unter Verwendung der Synchronisationsdaten 512, 514 speichern,
so dass die Pufferzugriffsanwendung 542 lediglich auf die
bereits geordnete Videodatenkomponente 508, 510 zugreifen
kann ohne weitere Verarbeitung, wie notwendig, um sequentielle Videoausgaben 530 zu
bilden, die zusammen die verschiedenen Zeitperioden bilden, die
von jeder der Videokarten 418, 420 verarbeitet
wurden.
-
Demgemäß wird es
verstanden werden, dass das bevorzugte Ausführungsbeispiel der vorliegenden
Erfindung als Beispiel offenbart wurde und dass andere Modifikationen
und Abänderungen Fachleuten
einfallen werden, ohne von dem Schutzbereich und dem Geist der beiliegenden
Ansprüche abzuweichen.
-
Zusammenfassung
-
Ein
beschleunigtes Grafikverarbeitungssubsystem kombiniert die Verarbeitungsleistung
von mehreren Grafikverarbeitungseinheiten (GPUs) oder Videokarten.
Die Videoverarbeitung der mehreren Videokarten wird durch Zeitaufteilung
organisiert, so dass jede Videokarte für die Verarbeitung von Videodaten
während
einer unterschiedlichen Zeitperiode zuständig ist. Beispielsweise können sich
zwei Videokarten abwechseln, wobei die erste Videokarte eine Anzeige
für eine
bestimmte Zeitperiode steuert und die zweite Videokarte sequenziell
die Videoverarbeitungsaufgaben für
eine nachfolgende Periode annimmt. Auf diese Art und Weise, da eine
Videokarte die Anzeige in einer Zeitperiode verwaltet, verarbeitet die
zweite Videokarte Videodaten für
die nächste Zeitperiode,
wobei ein extensives Verarbeiten der Videodaten vor dem Start der
nächsten
Zeitperiode ermöglicht
wird. Die vorliegende Erfindung kann weiterhin einen Lastausgleich
umfassen, so dass die Dauer der Verarbeitungszeitperioden für jede der
Videokarten dynamisch modifiziert werden, um die gesamte Videoverarbeitung
zu maximieren.