DE112007002200T5 - Computergrafiksystem mit mehreren parallelen Prozessoren - Google Patents

Computergrafiksystem mit mehreren parallelen Prozessoren Download PDF

Info

Publication number
DE112007002200T5
DE112007002200T5 DE112007002200T DE112007002200T DE112007002200T5 DE 112007002200 T5 DE112007002200 T5 DE 112007002200T5 DE 112007002200 T DE112007002200 T DE 112007002200T DE 112007002200 T DE112007002200 T DE 112007002200T DE 112007002200 T5 DE112007002200 T5 DE 112007002200T5
Authority
DE
Germany
Prior art keywords
video
graphics
frames
data
commands
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE112007002200T
Other languages
English (en)
Inventor
Nelson Miami Gonzalez
Humberto Miami Organvidez
Juan H. Miami Organvidez
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dell Marketing LP
Original Assignee
Alienware Labs Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alienware Labs Corp filed Critical Alienware Labs Corp
Publication of DE112007002200T5 publication Critical patent/DE112007002200T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/42Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of patterns using a display memory without fixed position correspondence between the display memory contents and the display position on the screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/02Addressing, scanning or driving the display screen or processing steps related thereto
    • G09G2310/0224Details of interlacing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/12Overlay of images, i.e. displayed pixel being the result of switching between the corresponding input pixels
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2352/00Parallel handling of streams of display data
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/123Frame memory handling using interleaving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/12Synchronisation between the display unit and other units, e.g. other display units, video-disc players
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)

Abstract

Ein beschleunigtes Grafikverarbeitungssystem, aufweisend:
Ein Grafik-API-Modul, welches Befehle von einer Computeranwendung empfängt, wobei das Grafik-API-Modul die Befehle in eine Mehrzahl von API-Befehlen aufteilt, die erste API-Befehle enthalten, die auf eine erste Zeitperiode bezogen sind und zweite API-Befehle, die auf eine zweite Zeitperiode bezogen sind;
eine Mehrzahl von Grafikverarbeitungseinheiten (GPUs), die geeignet sind, die ersten und zweiten API-Befehle von dem API-Modul zu emfpangen, wobei die Mehrzahl von GPUs eine erste GPU und eine zweite GPU aufweist, wobei die erste GPU die ersten API-Befehle und die zweite GPU die zweiten API-Befehle empfangt, wobei die erste GPU die ersten API-Befehle verarbeitet, um ein erstes Videosignal zu erzeugen, das erste Videodaten aufweist, die auf die erste Zeitperiode bezogen sind und erste Synchronisationsdaten, die die ersten Videodaten der ersten Zeitperiode zuordnen, und wobei die zweite GPU die zweiten API-Befehle verarbeitet, um ein zweites Videosignal zu erzeugen, das zweite Videodaten aufweist, die der zweiten...

Description

  • 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.

Claims (17)

  1. Ein beschleunigtes Grafikverarbeitungssystem, aufweisend: Ein Grafik-API-Modul, welches Befehle von einer Computeranwendung empfängt, wobei das Grafik-API-Modul die Befehle in eine Mehrzahl von API-Befehlen aufteilt, die erste API-Befehle enthalten, die auf eine erste Zeitperiode bezogen sind und zweite API-Befehle, die auf eine zweite Zeitperiode bezogen sind; eine Mehrzahl von Grafikverarbeitungseinheiten (GPUs), die geeignet sind, die ersten und zweiten API-Befehle von dem API-Modul zu emfpangen, wobei die Mehrzahl von GPUs eine erste GPU und eine zweite GPU aufweist, wobei die erste GPU die ersten API-Befehle und die zweite GPU die zweiten API-Befehle empfangt, wobei die erste GPU die ersten API-Befehle verarbeitet, um ein erstes Videosignal zu erzeugen, das erste Videodaten aufweist, die auf die erste Zeitperiode bezogen sind und erste Synchronisationsdaten, die die ersten Videodaten der ersten Zeitperiode zuordnen, und wobei die zweite GPU die zweiten API-Befehle verarbeitet, um ein zweites Videosignal zu erzeugen, das zweite Videodaten aufweist, die der zweiten Zeitperiode zugeordnet sind und zweite Synchronisationsdaten, die die zweiten Videodaten der zweiten Zeitperiode zuordnen; und einen Videozusammenführungsknoten, der geeignet ist, die ersten und zweiten Videosignale von der Mehrzahl der GPUs zu empfangen, wobei der Videozusammenführungsknoten die ersten und zweiten Synchronisationsdaten analysiert und die ersten Videodaten während der ersten Zeitperiode zu einer Anzeigeeinrichtung weiterleitet und die zweiten Videodaten während der zweiten Zeitperiode weiterleitet.
  2. Das beschleunigte Grafikverarbeitungssystem gemäß Anspruch 1, wobei die erste GPU auf einer ersten Videokarte angeordnet ist und die zweite GPU auf einer zweiten Videokarte angeordnet ist, wobei die erste und die zweite Videokarte mit einem Computer verbunden sind.
  3. Das beschleunigte Grafikverarbeitungssystem gemäß Anspruch 1, wobei der Videozusammenführungsknoten einen Videoschalter, einen Videoschalterkontroller, einen Mikrokontroller und einen Videoausgang aufweist.
  4. Das beschleunigte Grafikverarbeitungssystem gemäß Anspruch 3, wobei der Videoschalter die ersten Videodaten und die zweiten Videodaten von einer Mehrzahl von GPUs empfängt und sequenziell die ersten Videodaten und die zweiten Videodaten zu dem Videoausgang leitet.
  5. Das beschleunigte Grafikverarbeitungssystem gemäß Anspruch 4, wobei der Videoschalter durch den Videoschaltercontroller gesteuert ist und wobei der Videoschaltercontroller den Videoschalter durch das Triggern von Leitungsschaltern zu geeigneten Intervallen, die den ersten und zweiten Zeitperioden entsprechen, steuert.
  6. Das beschleunigte Grafikverarbeitungssubsystem gemäß Anspruch 1, wobei die ersten und die zweiten Zeitperioden definiert sind durch ein Lastausgleichsverhältnis, wobei das Lastausgleichsverhältnis dynamisch durch ein Testrückkopplungsschleifenprogramm eingestellt wird, welches eine Verarbeitungslast an jeder der GPUs misst.
  7. Verfahren zum Lastausgleich für eine Mehrzahl von Grafikprozessoren, die geeignet sind parallel zu arbeiten, wobei das Verfahren aufweist: Bereitstellen eines Anzeigebereichs, aufweisend eine Sequenz von Frames, aufweisend N-Frames, wobei die N-Frames K-Frames aufweisen, die gerendert werden von einem ersten der Mehrzahl der Grafikprozessoren und wobei die verbleibenden N-K-Frames gerendert werden durch einen zweiten der Mehrzahl der Grafikprozessoren, wobei ein Verhältnis von K/(N – K) ein Lastausgleichsverhältnis des ersten und zweiten Grafikprozessors ist; Anweisen der Mehrzahl der Grafikprozessoren, die Frames zu rendern, wobei der erste Grafikprozessor und der zweite Grafikprozessor jeweils das Rendern der K-Frames und der N-K-Frames durchführen; Empfangen von Rückkopplungsdaten für die Frames von den ersten und den zweiten Grafikprozessoren, wobei die Rückkopplungsdaten die entsprechenden Render-Zeiten für die ersten und zweiten Grafikprozessoren reflektieren; Bestimmen basierend auf den Rückkopplungsdaten, ob ein Ungleichgewicht zwischen den Lasten des ersten und zweiten Grafikprozessors existiert; und für den Fall, dass ein Ungleichgewicht existiert: Identifizieren, basierend auf den Rückkopplungsdaten, welcher Grafikprozessor der ersten und zweiten Grafikprozessoren stärker belastet ist und Verringern der Anzahl der Frames, die durch den stärker belasteten der ersten und zweiten Grafikprozessoren gerendert werden, indem ein neuer Wert für K ausgewählt wird, um das Lastausgleichsverhältnis einzustellen.
  8. Das Verfahren gemäß Anspruch 7, wobei der Schritt der Verringerung der Anzahl von Frames, die gerendert werden durch den stärker belasteten der ersten und zweiten Grafikprozessoren, weiterhin umfasst das Auswählen eines neuen Werts für N um das Lastausgleichsverhältnis einzustellen.
  9. Das Verfahren gemäß Anspruch 7, wobei der Schritt des Empfangens der Rückkopplungsdaten ein Empfangen der Rückkopplungsdaten für jeden der Mehrzahl von Frames umfasst.
  10. Das Verfahren gemäß Anspruch 7, weiterhin aufweisend: Erzeugen eines Befehlsstroms für jeden der ersten und zweiten Grafikprozessoren, wobei der Befehlsstrom einen Satz von Render-Befehlen für die Frames umfasst; und Einfügen eines Schreibebenachrichtigungsbefehls in einen Befehlsstrom für jeden der ersten und zweiten Grafikprozessoren, die dem Satz der Render-Befehle folgt, wobei jeder der ersten und zweiten Grafikprozessoren auf den Schreibebenachrichtigungsbefehl reagiert, indem er die Rückkopplungsdaten zu einem Speicherplatz überträgt.
  11. Das Verfahren gemäß Anspruch 7, wobei jeder der N-Frames abwechselnd durch den ersten beziehungsweise den zweiten Grafikprozessor gerendert wird.
  12. Ein Grafikverarbeitungssystem aufweisend: Ein Grafiktreibermodul und eine Mehrzahl von Grafikprozessoren, die in der Lage sind, parallel zu arbeiten, um entsprechende Sätze von Frames in einer Sequenz von Frames zu rendern und Rückkopplungsdaten zu dem Grafiktreibermodul zu liefern, wobei das Grafiktreibermodul weiterhin in der Lage ist, basierend auf den Rückkopplungsdaten ein Ungleichgewicht zwischen entsprechenden Lasten von zwei der Mehrzahl von Grafikprozessoren zu erkennen und in Antwort auf das Erkennen eines Ungleichgewichts eine Größe eines ersten Satzes von Frames, welcher durch den stärker belasteten der zwei Grafikprozessoren gerendert wird, zu verringern und eine Größe eines zweiten Satzes von Frames, der von dem anderen der zwei Grafikprozessoren gerendert wird, zu erhöhen.
  13. Das Grafikverarbeitungssystem gemäß Anspruch 12, weiterhin aufweisend eine Mehrzahl von Grafikspeichern, wobei jeder Grafikspeicher mit einem entsprechenden Grafikprozessor gekoppelt ist und Pixeldaten für Frames speichert, die von dem daran gekoppelten Grafikprozessor gerendert wurden.
  14. Das Grafikverarbeitungssystem gemäß Anspruch 12, wobei das Grafiktreibermodul weiterhin in der Lage ist, einen Befehlsstrom für die Mehrzahl der Grafikprozessoren zu erzeugen, wobei der Befehlsstrom einen Satz von Render-Befehlen für Frames umfasst und eine Anweisung für jeden der zwei Grafikprozessoren, um Rückkopplungsdaten zu übertragen, welche anzeigen, dass der übertragende Prozessor den Satz von Render-Befehlen ausgeführt hat.
  15. Das Grafikverarbeitungssystem gemäß Anspruch 12, wobei die Rückkopplungsdaten einen Hinweis umfassen, welcher der zwei Grafikprozessoren als letzter das Rendern des entsprechenden Satzes von Frames beendet hat.
  16. Das Grafikverarbeitungssystem gemäß Anspruch 15, wobei die Rückkopplungsdaten einen numerischen Identifizierer von einem der zwei Grafikprozessoren, der als letzter fertig wurde, umfassen und wobei das Grafiktreibermodul weiterhin in der Lage ist, einen Lastkoeffizienten aus dem numerischen Identifizierer über eine Mehrzahl von Frames zu berechnen.
  17. Das Grafikverarbeitungssystem gemäß Anspruch 16, wobei das Grafiktreibermodul weiterhin in der Lage ist, ein Ungleichgewicht zu erkennen, für den Fall, dass der Lastkoeffizient größer ist als ein hoher Schwellenwert oder niedriger ist als ein unterer Schwellenwert.
DE112007002200T 2006-09-18 2007-09-18 Computergrafiksystem mit mehreren parallelen Prozessoren Ceased DE112007002200T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/522,525 2006-09-18
US11/522,525 US20080211816A1 (en) 2003-07-15 2006-09-18 Multiple parallel processor computer graphics system
PCT/US2007/020125 WO2008036231A2 (en) 2006-09-18 2007-09-18 Multiple parallel processor computer graphics system

Publications (1)

Publication Number Publication Date
DE112007002200T5 true DE112007002200T5 (de) 2009-07-23

Family

ID=39201050

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112007002200T Ceased DE112007002200T5 (de) 2006-09-18 2007-09-18 Computergrafiksystem mit mehreren parallelen Prozessoren

Country Status (6)

Country Link
US (1) US20080211816A1 (de)
CN (1) CN101548277B (de)
BR (1) BRPI0716969B1 (de)
DE (1) DE112007002200T5 (de)
GB (1) GB2455249B (de)
WO (1) WO2008036231A2 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047040B2 (en) * 2007-06-25 2015-06-02 International Business Machines Corporation Method for running computer program on video card selected based on video card preferences of the program
US9047123B2 (en) 2007-06-25 2015-06-02 International Business Machines Corporation Computing device for running computer program on video card selected based on video card preferences of the program
US8330763B2 (en) * 2007-11-28 2012-12-11 Siemens Aktiengesellschaft Apparatus and method for volume rendering on multiple graphics processing units (GPUs)
US7995003B1 (en) * 2007-12-06 2011-08-09 Nvidia Corporation System and method for rendering and displaying high-resolution images
US8537166B1 (en) * 2007-12-06 2013-09-17 Nvidia Corporation System and method for rendering and displaying high-resolution images
US8477143B2 (en) 2008-03-04 2013-07-02 Apple Inc. Buffers for display acceleration
US8289333B2 (en) 2008-03-04 2012-10-16 Apple Inc. Multi-context graphics processing
US8514215B2 (en) * 2008-11-12 2013-08-20 International Business Machines Corporation Dynamically managing power consumption of a computer with graphics adapter configurations
US8482114B2 (en) * 2009-09-10 2013-07-09 Nxp B.V. Impedance optimized chip system
US20110063309A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation User interface for co-processing techniques on heterogeneous graphics processing units
KR101598374B1 (ko) * 2009-09-21 2016-02-29 삼성전자주식회사 영상 처리 장치 및 방법
US9041719B2 (en) * 2009-12-03 2015-05-26 Nvidia Corporation Method and system for transparently directing graphics processing to a graphical processing unit (GPU) of a multi-GPU system
US8890880B2 (en) * 2009-12-16 2014-11-18 Intel Corporation Graphics pipeline scheduling architecture utilizing performance counters
US9830889B2 (en) 2009-12-31 2017-11-28 Nvidia Corporation Methods and system for artifically and dynamically limiting the display resolution of an application
US20110212761A1 (en) * 2010-02-26 2011-09-01 Igt Gaming machine processor
US20110298816A1 (en) * 2010-06-03 2011-12-08 Microsoft Corporation Updating graphical display content
US20120001925A1 (en) * 2010-06-30 2012-01-05 Ati Technologies, Ulc Dynamic Feedback Load Balancing
US8274422B1 (en) * 2010-07-13 2012-09-25 The Boeing Company Interactive synthetic aperture radar processor and system and method for generating images
JP6027739B2 (ja) * 2011-12-15 2016-11-16 キヤノン株式会社 映像処理装置、映像処理方法、映像処理システムおよびプログラム
WO2013097210A1 (zh) * 2011-12-31 2013-07-04 华为技术有限公司 基于云应用的在线渲染方法和离线渲染方法及相关装置
WO2013102798A1 (en) * 2012-01-06 2013-07-11 Aselsan Elektronik Sanayi Ve Ticaret Anonim Sirketi Distributed image generation system
KR101609812B1 (ko) * 2012-04-09 2016-04-20 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 프로세싱 로드 분배
US20140195594A1 (en) * 2013-01-04 2014-07-10 Nvidia Corporation Method and system for distributed processing, rendering, and displaying of content
KR20140111736A (ko) * 2013-03-12 2014-09-22 삼성전자주식회사 디스플레이장치 및 그 제어방법
WO2015006910A1 (en) * 2013-07-16 2015-01-22 Harman International Industries, Incorporated Image layer composition
US9497358B2 (en) * 2013-12-19 2016-11-15 Sony Interactive Entertainment America Llc Video latency reduction
KR101855311B1 (ko) * 2014-02-20 2018-05-09 인텔 코포레이션 그래픽 처리 유닛을 위한 작업 부하 일괄 제출 메커니즘
GB201506328D0 (en) * 2015-04-14 2015-05-27 D3 Technologies Ltd A system and method for handling video data
EP3188014B1 (de) * 2015-12-29 2022-07-13 Dassault Systèmes Verwaltung mehrerer grafikkarten
EP3188013B1 (de) * 2015-12-29 2022-07-13 Dassault Systèmes Verwaltung mehrerer grafikkarten
CN105786523B (zh) * 2016-03-21 2019-01-11 北京信安世纪科技股份有限公司 数据同步系统及方法
WO2017203096A1 (en) * 2016-05-27 2017-11-30 Picturall Oy A computer-implemented method for reducing video latency of a computer video processing system and computer program product thereto
WO2018101514A1 (ko) * 2016-12-01 2018-06-07 엘지전자 주식회사 영상표시장치, 및 이를 구비하는 영상표시 시스템
CN106686352B (zh) * 2016-12-23 2019-06-07 北京大学 多gpu平台的多路视频数据的实时处理方法
US10204394B2 (en) * 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US11508110B2 (en) 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
US11170461B2 (en) * 2020-02-03 2021-11-09 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering
US11514549B2 (en) 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
CN112132915B (zh) * 2020-08-10 2022-04-26 浙江大学 一种基于生成对抗机制的多样化动态延时视频生成方法
CN115129483B (zh) * 2022-09-01 2022-12-02 武汉凌久微电子有限公司 一种基于显示区域划分的多显卡协同显示方法

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821209A (en) * 1986-01-21 1989-04-11 International Business Machines Corporation Data transformation and clipping in a graphics display system
JP2770598B2 (ja) * 1990-06-13 1998-07-02 株式会社日立製作所 図形表示方法およびその装置
DE69132796T2 (de) * 1990-11-30 2002-04-25 Sun Microsystems Inc Verfahren und gerät zur darstellung von grafischen bildern
US5774133A (en) * 1991-01-09 1998-06-30 3Dlabs Ltd. Computer system with improved pixel processing capabilities
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
JP3098342B2 (ja) * 1992-11-26 2000-10-16 富士通株式会社 並列処理装置における処理順序指定方式
US5560034A (en) * 1993-07-06 1996-09-24 Intel Corporation Shared command list
US5460093A (en) * 1993-08-02 1995-10-24 Thiokol Corporation Programmable electronic time delay initiator
JPH07152693A (ja) * 1993-11-29 1995-06-16 Canon Inc 情報処理装置
EP0693737A3 (de) * 1994-07-21 1997-01-08 Ibm Verfahren und Apparat zum Verwalten der Aufgaben in einem Mehrprozessorsystem
US5668594A (en) * 1995-01-03 1997-09-16 Intel Corporation Method and apparatus for aligning and synchronizing a remote video signal and a local video signal
US5799204A (en) * 1995-05-01 1998-08-25 Intergraph Corporation System utilizing BIOS-compatible high performance video controller being default controller at boot-up and capable of switching to another graphics controller after boot-up
US5638531A (en) * 1995-06-07 1997-06-10 International Business Machines Corporation Multiprocessor integrated circuit with video refresh logic employing instruction/data caching and associated timing synchronization
US5784075A (en) * 1995-08-08 1998-07-21 Hewlett-Packard Company Memory mapping techniques for enhancing performance of computer graphics system
US6025840A (en) * 1995-09-27 2000-02-15 Cirrus Logic, Inc. Circuits, systems and methods for memory mapping and display control systems using the same
KR100269106B1 (ko) * 1996-03-21 2000-11-01 윤종용 멀티프로세서 그래픽스 시스템
US6064672A (en) * 1996-07-01 2000-05-16 Sun Microsystems, Inc. System for dynamic ordering support in a ringlet serial interconnect
US5961623A (en) * 1996-08-29 1999-10-05 Apple Computer, Inc. Method and system for avoiding starvation and deadlocks in a split-response interconnect of a computer system
US5790842A (en) * 1996-10-11 1998-08-04 Divicom, Inc. Processing system with simultaneous utilization of multiple clock signals
US6006289A (en) * 1996-11-12 1999-12-21 Apple Computer, Inc. System for transferring data specified in a transaction request as a plurality of move transactions responsive to receipt of a target availability signal
US5818469A (en) * 1997-04-10 1998-10-06 International Business Machines Corporation Graphics interface processing methodology in symmetric multiprocessing or distributed network environments
US6157395A (en) * 1997-05-19 2000-12-05 Hewlett-Packard Company Synchronization of frame buffer swapping in multi-pipeline computer graphics display systems
US5937173A (en) * 1997-06-12 1999-08-10 Compaq Computer Corp. Dual purpose computer bridge interface for accelerated graphics port or registered peripheral component interconnect devices
US5892964A (en) * 1997-06-30 1999-04-06 Compaq Computer Corp. Computer bridge interfaces for accelerated graphics port and peripheral component interconnect devices
US6429903B1 (en) * 1997-09-03 2002-08-06 Colorgraphic Communications Corporation Video adapter for supporting at least one television monitor
US5914727A (en) * 1997-09-09 1999-06-22 Compaq Computer Corp. Valid flag for disabling allocation of accelerated graphics port memory space
US6205119B1 (en) * 1997-09-16 2001-03-20 Silicon Graphics, Inc. Adaptive bandwidth sharing
US6008821A (en) * 1997-10-10 1999-12-28 International Business Machines Corporation Embedded frame buffer system and synchronization method
US6141021A (en) * 1997-12-12 2000-10-31 Intel Corporation Method and apparatus for eliminating contention on an accelerated graphics port
US5956046A (en) * 1997-12-17 1999-09-21 Sun Microsystems, Inc. Scene synchronization of multiple computer displays
US6412031B1 (en) * 1998-02-10 2002-06-25 Gateway, Inc. Simultaneous control of live video device access by multiple applications via software locks and in accordance with window visibility of applications in a multiwindow environment
US6304244B1 (en) * 1998-04-24 2001-10-16 International Business Machines Corporation Method and system for dynamically selecting video controllers present within a computer system
US6088043A (en) * 1998-04-30 2000-07-11 3D Labs, Inc. Scalable graphics processor architecture
WO2000004527A1 (en) * 1998-07-17 2000-01-27 Intergraph Corporation Apparatus and method of directing graphical data to a display device
US6329996B1 (en) * 1999-01-08 2001-12-11 Silicon Graphics, Inc. Method and apparatus for synchronizing graphics pipelines
US6549963B1 (en) * 1999-02-11 2003-04-15 Micron Technology, Inc. Method of configuring devices on a communications channel
US6753878B1 (en) * 1999-03-08 2004-06-22 Hewlett-Packard Development Company, L.P. Parallel pipelined merge engines
JP3169933B2 (ja) * 1999-03-16 2001-05-28 四国日本電気ソフトウェア株式会社 並列描画装置
US6545683B1 (en) * 1999-04-19 2003-04-08 Microsoft Corporation Apparatus and method for increasing the bandwidth to a graphics subsystem
US6323875B1 (en) * 1999-04-28 2001-11-27 International Business Machines Corporation Method for rendering display blocks on display device
US6275240B1 (en) * 1999-05-27 2001-08-14 Intel Corporation Method and apparatus for maintaining load balance on a graphics bus when an upgrade device is installed
US6477603B1 (en) * 1999-07-21 2002-11-05 International Business Machines Corporation Multiple PCI adapters within single PCI slot on an matax planar
US6384833B1 (en) * 1999-08-10 2002-05-07 International Business Machines Corporation Method and parallelizing geometric processing in a graphics rendering pipeline
US6560659B1 (en) * 1999-08-26 2003-05-06 Advanced Micro Devices, Inc. Unicode-based drivers, device configuration interface and methodology for configuring similar but potentially incompatible peripheral devices
US6228700B1 (en) * 1999-09-03 2001-05-08 United Microelectronics Corp. Method for manufacturing dynamic random access memory
US6473086B1 (en) * 1999-12-09 2002-10-29 Ati International Srl Method and apparatus for graphics processing using parallel graphics processors
US6557065B1 (en) * 1999-12-20 2003-04-29 Intel Corporation CPU expandability bus
US6760031B1 (en) * 1999-12-31 2004-07-06 Intel Corporation Upgrading an integrated graphics subsystem
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US6924807B2 (en) * 2000-03-23 2005-08-02 Sony Computer Entertainment Inc. Image processing apparatus and method
JP3688618B2 (ja) * 2000-10-10 2005-08-31 株式会社ソニー・コンピュータエンタテインメント データ処理システム及びデータ処理方法、コンピュータプログラム、記録媒体
US20020154214A1 (en) * 2000-11-02 2002-10-24 Laurent Scallie Virtual reality game system using pseudo 3D display driver
US6621500B1 (en) * 2000-11-17 2003-09-16 Hewlett-Packard Development Company, L.P. Systems and methods for rendering graphical data
JP2002328818A (ja) * 2001-02-27 2002-11-15 Sony Computer Entertainment Inc 情報処理装置、統合型情報処理装置、実行負荷計測方法、コンピュータプログラム
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US6898766B2 (en) * 2001-10-30 2005-05-24 Texas Instruments Incorporated Simplifying integrated circuits with a common communications bus
US7436850B2 (en) * 2001-10-30 2008-10-14 Texas Instruments Incorporated Ultra-wideband (UWB) transparent bridge
US20030112248A1 (en) * 2001-12-19 2003-06-19 Koninklijke Philips Electronics N.V. VGA quad device and apparatuses including same
US6683614B2 (en) * 2001-12-21 2004-01-27 Hewlett-Packard Development Company, L.P. System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system
US6920618B2 (en) * 2001-12-21 2005-07-19 Hewlett-Packard Development Company, L.P. System and method for configuring graphics pipelines in a computer graphical display system
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US6894692B2 (en) * 2002-06-11 2005-05-17 Hewlett-Packard Development Company, L.P. System and method for sychronizing video data streams
US6943804B2 (en) * 2002-10-30 2005-09-13 Hewlett-Packard Development Company, L.P. System and method for performing BLTs
US7802049B2 (en) * 2002-10-30 2010-09-21 Intel Corporation Links having flexible lane allocation
US7119808B2 (en) * 2003-07-15 2006-10-10 Alienware Labs Corp. Multiple parallel processor computer graphics system
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system

Also Published As

Publication number Publication date
BRPI0716969A8 (pt) 2017-08-15
BRPI0716969A2 (pt) 2013-11-05
WO2008036231A2 (en) 2008-03-27
WO2008036231A3 (en) 2008-11-27
GB0904650D0 (en) 2009-04-29
GB2455249B (en) 2011-09-21
BRPI0716969B1 (pt) 2018-12-18
CN101548277A (zh) 2009-09-30
GB2455249A (en) 2009-06-10
CN101548277B (zh) 2015-11-25
US20080211816A1 (en) 2008-09-04

Similar Documents

Publication Publication Date Title
DE112007002200T5 (de) Computergrafiksystem mit mehreren parallelen Prozessoren
DE102015108424B4 (de) Dynamische Frame-Wiederholung in einem Variable-Wiederauffrischungs-Rate-System
DE60120474T2 (de) Rasterung von dreidimensionalen bildern
DE102015108057B4 (de) Aktualisierungsabhängiges adaptives Dithering für ein Display mit variabler Aktualisierungsrate
DE4231158C5 (de) Verfahren und Einrichtung für die Zusammensetzung und Anzeige von Bildern
DE10110358B4 (de) Anordnung und Verfahren zur räumlichen Visualisierung
US7119808B2 (en) Multiple parallel processor computer graphics system
DE102020110662A1 (de) Simultane positionsbestimmung und kartenerstellung (slam) für mehrere benutzer
DE69333508T2 (de) Vorrichtung und Verfahren zur Verarbeitung von Videosignalen
DE69434014T2 (de) Vorrichtung und verfahren zur bilderzeugung
DE60015213T2 (de) Paralelle Wiedergabevorrichtung
DE60105510T2 (de) Bilderzeugungsgerät
DE69729916T2 (de) Dynamische bildgrössenänderung
DE102013020808A1 (de) Effiziente Autostereo-Unterstützung unter Verwendung von Anzeigesteuerungsfenster
DE3718501A1 (de) Videoanzeigegeraet
DE60118135T2 (de) Bildanzeigegerät
DE102013021708A1 (de) Flüssigkristallanzeige mit geringer bewegungsunschärfe
DE112004002391T5 (de) Räumlich-zeitliche Erzeugung einer Bewegungsunschärfe
EP2780886B1 (de) Grafikverarbeitungsvorrichtung, anzeigevorrichtung für ein flugzeugcockpit sowie verfahren zur anzeige von grafikdaten
DE102013114306A1 (de) System, Verfahren und Computerprogrammprodukt für eine verteilte Verarbeitung von überlappenden Teilbereichen von Pixel
DE10240313B4 (de) Bildverarbeitungsvorrichtung mit einem Verarbeitungsvorgang Koordinatenberechung
DE60212900T2 (de) Bilderzeugungsverfahren und Rechnerprogramm dafür
EP0869459B1 (de) Bilddarstellungsverfahren und Vorrichtung zur Durchführung des Verfahrens
DE69332733T2 (de) Videobilderanzeigevorrichtung und Verfahren zum Steuern einer Videobilderanzeige
DE3927123C2 (de)

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20140411