DE102008024521A1 - Dynamisches Linken und Laden von Nachbearbeitungskerneln - Google Patents
Dynamisches Linken und Laden von Nachbearbeitungskerneln Download PDFInfo
- Publication number
- DE102008024521A1 DE102008024521A1 DE200810024521 DE102008024521A DE102008024521A1 DE 102008024521 A1 DE102008024521 A1 DE 102008024521A1 DE 200810024521 DE200810024521 DE 200810024521 DE 102008024521 A DE102008024521 A DE 102008024521A DE 102008024521 A1 DE102008024521 A1 DE 102008024521A1
- Authority
- DE
- Germany
- Prior art keywords
- kernel
- combined
- code
- combined kernel
- kernels
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Image Processing (AREA)
- Storage Device Security (AREA)
Abstract
Description
- HINTERGRUND
- Ein Computersystem umfasst im allgemeinen Bearbeitungseinrichtungen, Speichereinrichtungen, Schnittstelleneinrichtungen und Eingabe-/Ausgabe-(I/O)-Geräte. Wenn Videosignale bearbeitet werden, kann das Computersystem Nachbearbeitungsfunktionen durchführen, wie etwa Filmmodusdetektion, Deinterlacing, ProcAmp-Kontrollanpassung, Videoskalierung, Alpha-Bending und Farbraumumwandlung. Es kann eine Mehrzahl unabhängiger Kernel entwickelt werden, von denen jeder eine oder mehrere der oben aufgeführten Nachbearbeitungsfunktionen umfasst. Jeder aus der Mehrzahl der Kernel kann dedizierte Speicherräume im Speicher besetzen, um Eingabedaten zu lesen und Ergebnisse zu schreiben. Allerdings kann das Kommunizieren von Daten zwischen verschiedenen Nachbearbeitungsfunktionen über den Speicher höhere Prozessorzyklen verbrauchen.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Die hier beschriebene Erfindung wird in den beigefügten Zeichnungen beispielhaft und nicht einschränkend dargestellt. Zur Einfachheit und Klarheit der Darstellung sind in den Figuren gezeigte Elemente nicht notwendigerweise maßstabsgetreu. Beispielsweise können die Abmessungen einiger Elemente im Verhältnis zu anderen Elementen zwecks besserer Klarheit übertrieben dargestellt sein. Außerdem wurden Bezugszeichen zwischen den Figuren, wo es nötig erschien, wiederholt, um korrespondierende oder analoge Elemente zu bezeichnen.
-
1 zeigt eine Ausführungsform eines Computersystems. -
2 zeigt eine Ausführungsform eines „Graphics Memory Controller Hub" (GMCH) von1 . -
3 zeigt eine Funktionsweise einer Ausführungsform eines Codepatch-Erzeugers von2 . -
4 zeigt eine Funktionsweise einer Ausführungsform eines Code-Managers aus2 . -
5 zeigt eine Funktionsweise einer Ausführungsform eines Kernel-Composers aus2 . - AUSFÜHRLICHE BESCHREIBUNG
- Die folgende Beschreibung beschreibt ein System zum dynamischen Linken und Laden von Nachbearbeitungskerneln. In der folgenden Beschreibung werden zahlreiche spezielle Details, wie logische Implementierungen, sowie Implementierungen zum Einteilen, Teilen oder Verdoppeln von Ressourcen, Typen und Zusammenhänge zwischen Systemkomponenten, sowie Logikpartitionierungen oder Integrationsmöglichkeiten benutzt, um ein näheres Verständnis der vorliegenden Erfindung zu vermitteln. Ein Fachmann wird jedoch erkennen, dass die Erfindung ohne solche speziellen Details ausgeführt werden kann. In anderen Beispielen wurden Kontrollstrukturen, Schaltkreise auf Gatterebene und vollständige Software-Befehlssequenzen nicht im Detail gezeigt, um die Erfindung nicht zu verschleiern.
- Fachleute werden mit den enthaltenen Beschreibungen in der Lage sein, die entsprechende Funktionalität ohne unangemessenes Experimentieren zu implementieren.
- Bezüge auf „eine (1) Ausführungsform", „eine Ausführungsform", „eine beispielhafte Ausführungsform" in der Beschreibung zeigen, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine Struktur oder ein Charakteristikum umfassen kann; aber nicht jede Ausführungsform muss notwendigerweise das bestimmte Merkmal, die Struktur oder das Charakteristikum umfassen. Vielmehr beziehen sich solche Phrasen nicht notwendigerweise auf die gleiche Ausführungsform. Ferner wird, sobald ein bestimmtes Merkmal, eine Struktur oder ein Charakteristikum in Verbindung mit einer Ausführungsform beschrieben wird, vorausgeschickt, dass es innerhalb des Wissens von Fachleuten liegt, ein solches Merkmal, eine Struktur oder ein Charakteristikum in Verbindung mit anderen Ausführungsformen anzubringen, sei es nun ausführlich beschrieben oder nicht.
- Ausführungsformen der Erfindung können in Hardware, Firmware, Software oder irgendeiner Kombination derselben implementiert werden. Ausführungsformen der Erfindung können außerdem als Befehle implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, welches von einem oder mehreren Prozessoren gelesen und ausgeführt werden kann. Ein maschinenlesbares Medium kann einen beliebigen Mechanismus zum Speichern oder Übertragen von Information in eine durch eine Maschine (zum Beispiel Recheneinrichtungen) lesbare Form umfassen.
- Beispielsweise kann ein maschinenlesbares Medium umfassen: schreibgeschützten Speicher (Read Only Memory (ROM)); direkt zugreifbaren Speicher (Random Access Memory (RAM)); Magnetspeichermedien; optische Speichermedien; Flash-Speichereinrichtungen; elektrische, optische, akustische oder andere Formen von sich ausbreitenden Signalen (zum Beispiel Trägerwellen, Infrarotsignale und digitale Signale). Ferner können Firmware, Software, Routinen und Befehle im folgenden so beschrieben werden, dass sie gewisse Handlungen ausführen. Es sollte allerdings zur Kenntnis genommen werden, dass solche Beschreibungen eher der Bequemlichkeit dienen und dass solche Handlungen eigentlich von Recheneinrichtungen, Prozessoren, Controller und anderen Einrichtungen herrühren, welche Firmware, Software, Routinen und Befehle ausführen.
- Eine Ausführungsform eines Computersystems
100 ist in1 gezeigt. Das Computersystem100 kann einen Prozessor110 , einen Speicher120 , einen Chipsatz130 , ein oder mehrere I/O-Einrichtungen160 , eine Videografikkartenschnittstelle (Video Graphics Array (VGA))170 und eine beschleunigte Grafikschnittstelle (Accelerated Graphics Port (AGP))180 umfassen. - Der Prozessor
110 kann verschiedene Ressourcen und Prozesse innerhalb des Computersystems100 steuern und auch Softwarebefehle ausführen. Der Prozessor110 kann zum Beispiel einen oder mehrere Mikroprozessoren der Pentium®- oder Itanium®-Familien von Intel®-Mikroprozessoren umfassen. Der Prozessor110 kann mit dem Chipsatz130 gekoppelt sein, um aus dem Speicher120 zu lesen und in den Speicher120 zu speichern. - Der Speicher
120 kann Daten und Befehle speichern und einen oder mehrere Typen von Speichereinrichtungen, wie DRAM(Dynamic Random Access Memory)-Einrichtungen, SDRAM(Synchronous DRAM)-Einrichtungen, DDR (Double Data Rate) oder andere flüchtige und nichtflüchtige Speichereinrichtungen umfassen, die in Computer genutzt werden. - Die I/O-Einrichtung
160 kann Einrichtungen wie eine Tastatur, Maus, eine Netzwerkkarte und andere Einrichtungen umfassen. Die Dateneinheiten können zwischen dem Chipsatz130 und den I/O-Einrichtungen160 über Busse übertragen werden, die „Peripheral Component Interconnect" (PCI), „Serial Advanced Technology Attachment" (SATA), „Low Pin Count" (LPC), „Integrated Device Electronics" (IDE) und andere solche Verbindungstechnologien umfassen. - Der Chipsatz
130 kann einen oder mehrere integrierte Schaltkreise oder Chips umfassen, die den Prozessor110 , den Speicher120 , die I/O-Einrichtungen160 , die VGA-Schnittstelle170 und die AGP-Schnittstelle180 koppeln. Der Chipsatz130 kann einer aus den Intel®-Familien von Chipsätzen sein. In einer Ausführungsform kann der Chipsatz130 einen Speicher-Kontroll-Hub143 , einen Grafik- und Speicher-Kontroll-Hub (Graphics and Memory Controller Hub (GMCH))145 und einen I/O-Kontroll-Hub (ICH)150 umfassen. Der ICH150 kann eine Schnittstelle zwischen den I/O-Einrichtungen160 bereitstellen, die an den ICH150 und den Prozessor110 und den Speicher120 gekoppelt ist. Beispielsweise kann der ICH150 Festplattenlaufwerk, Diskettenlaufwerk, CD-Laufwerke, Modems, Tastaturen, Drucker, Mäuse, Endpunkte, Ethernet und SCSI-Einrichtungen unterstützen. Der MCH143 kann eine Schnittstelle zwischen dem Prozessor110 und dem Speicher130 bereitstellen. - In einer Ausführungsform kann der GMCH
145 die Übertragungen und den Transfer der entsprechenden Daten zwischen dem Speicher120 , dem ICH150 , dem Prozessor110 und den Einrichtungen, die an die VGA-Schnittstelle170 und die AGP-Schnittstelle180 gekoppelt sind, durchführen. In einer Ausführungsform kann der GMCH145 dynamisches Linken und Laden von Nachbearbeitungskerneln unterstützen. In einer Ausführungsform können die Videonachbearbeitungskernel eine geordnete Sequenz von zwei oder mehr Nachbearbeitungsfunktionen, wie Filmmodusdetektion, Deinterlacing, ProcAmp-Kontrollanpassung, Videoskalierung, Alpha-Bending und Farbraumumwandlung, umfassen. - Beispielsweise kann ein erster kombinierter Kernel K1 Nachbearbeitungsfunktionen, wie Filmmodusdetektion, Deinterlacing und Alpha-Bending, in dieser Reihenfolge umfassen. Ein zweiter kombinierter Kernel K2 kann Nachbearbeitungsfunktionen, wie etwa Filmmodusdetektion, Deinterlacing, Videoskalierung und Farbraumumwandlung, in dieser Reihenfolge umfassen. In einer Ausführungsform können die kombinierten Kernel K1 und K2 zusammengesetzt werden, bevor der Kernel aufgerufen wird. Als Ergebnis kann vermieden werden, dass ein dedizierter Platz benötigt wird, um jeden der statisch zusammengesetzten Kernel zu speichern. In einer Ausführungsform können die Nachbearbeitungsfunktionen, die zum Bilden eines kombinierten Kerns benötigt werden, während der Übersetzungszeit identifiziert werden, und die Nachbearbeitungsfunktionen können dynamisch zusammengelinkt werden, um einen kombinierten Kernel während der Laufzeit zu bilden.
- Eine Ausführungsform des GMCH
145 , der dynamisches Linken und Laden von Nachbearbeitungskerneln unterstützt, ist in2 abgebildet. In einer Ausführungsform kann der GMCH145 Anwendungen210 , eine Programmierschnittstelle220 , einen Codepatch-Erzeuger230 , einen Treiber250 und eine Grafikhardware280 umfassen. In einer Ausführungsform kann die Grafikhardware280 mit dem Treiber250 gekoppelt sein, um die Funktionen durchzuführen, die von dem Treiber250 aufgezeigt werden. In einer Ausführungsform kann die Grafikhardware280 einen integrierten Grafik-Controller aus einer Intel®-Familie umfassen. - In einer Ausführungsform können die Anwendungen
210 Multimediaanwendungen umfassen, mit denen der Benutzer des Computersystems100 interagieren kann. In einer Ausführungsform kann die Programmierschnittstelle220 eine oder mehrere Routinen umfassen, die von den Anwendungen210 benutzt werden können, um mit den Diensten niedrigerer Ebene zu interagieren, welche von einem darunter liegenden Betriebssystem zur Verfügung bereitgestellt werden. - In einer Ausführungsform kann die Programmierschnittstelle
220 eine Programmierschnittstelle zwischen den Anwendungen210 und dem Codepatch-Erzeuger230 und dem Treiber250 bereitstellen. In einer Ausführungsform kann die Programmierschnittstelle220 eine Nachbearbeitungsfunktionsanfrage an den Treiber250 stellen, welche auf den Eingabewerten basiert, die von den Anwendungen210 empfangen wurden. In einer Ausführungsform kann die Programmierschnittstelle220 eine Microsoft®-DxVA-(Direct X Video Acceleration)-Programmierschnittstelle umfassen. - In einer Ausführungsform kann der Codepatch-Erzeuger
230 jede Kernelkomponente statisch zu einem Binary kompilieren, gemeinsam mit einem Ersatz-Codepatch, der ein dynamisches Linken während der Laufzeit ermöglicht. Das Binary und der Ersatz-Codepatch können während der Startzeit des Treibers250 in den Kernel-Composer258 des Treibers250 geladen werden. In einer Ausführungsform kann der Codepatch-Erzeuger230 I/O-Bereiche spezifizieren, die eine erste Kernelkomponente zum Lesen und Schreiben von Daten benutzen kann. Allerdings kann der Codepatch-Erzeuger230 nicht angeben, mit welchen anderen Komponentenkerneln der erste Komponentenkernel zusammengebunden werden kann, und dieses Linken von Komponentenkerneln kann während der Laufzeit stattfinden. - Der Treiber
250 kann obere Schichten, wie die Anwendungen210 , an die Grafikhardware280 koppeln. In einer Ausführungsform kann der Treiber250 einen Code-Manager254 und einen Code-Composer258 umfassen. In einer Ausführungsform kann der Treiber250 einen Grafiktreiber aus einer Intel®-Familie umfassen. - In einer Ausführungsform kann der Code-Manager
254 eine Suchanfrage von der Programmierschnittstelle220 empfangen, um einen spezifizierten kombinierten Kernel abzurufen. Der Code-Manager254 kann bestimmen, ob der spezifizierte kombinierte Kernel in der Datenbank, die durch den Code-Manager254 unterstützt wird, vorhanden ist. Der Code-Manager254 kann ein Signal an die Programmierschnittstelle220 senden, die das Vorhandensein des spezifizierten kombinierten Kernels anzeigt, falls der spezifizierte Kernel in der Datenbank vorhanden ist. Der Code-Manger254 kann eine Anfrage an den Code-Composer258 senden, um den spezifizierten Kernel zusammenzustellen, falls der spezifizierte kombinierte Kernel nicht vorhanden ist. In einer Ausführungsform kann der Code-Manager254 auch bestimmen, welche Komponentenkernel benötigt werden, um den spezifizierten kombinierten Kernel zusammenzustellen. - In einer Ausführungsform kann der Code-Manager
254 Speicherplatz zur Verfügung stellen, um den neu zusammengestellten spezifizierten kombinierten Kernel als Antwort auf das Empfangen einer Anfrage zum Zuordnen von Platz für den neu zusammengestellten spezifizierten kombinierten Kernel zu speichern. In einer Ausführungsform kann der Code- Manager254 den neu zusammengestellten spezifizierten kombinierten Kernel speichern und außerdem dem neu zusammengestellten spezifizierten kombinierten Kernel einen eindeutigen Bezeichner als Antwort auf das Empfangen eines Signals zuordnen, das angibt, dass der angegebene kombinierte Kernel zusammengesetzt wurde. In einer Ausführungsform kann der Code-Manager254 auch den Platz zum Speichern der kombinierten Kernel verwalten, indem die veralteten kombinierten Kernel gelöscht werden. - In einer Ausführungsform kann der Code-Composer
258 ein Signal zum Zusammensetzen des spezifizierten kombinierten Kernels empfangen. Der Code-Composer258 kann außerdem die Komponentenkernel empfangen, die zum Zusammenstellen des spezifizierten kombinierten Kernels benötigt werden. In einer Ausführungsform kann der Code-Composer258 den Platz bestimmen, der benötigt wird, um den neu zusammengesetzten spezifizierten kombinierten Kernel zu speichern, und kann eine Anfrage versenden, um Speicherplatz zur Verfügung zu stellen. - In einer Ausführungsform kann der Code-Composer
258 den kombinierten Kernel zusammenstellen, indem die I/O-Registerbereiche bestimmt werden, die für jede Kernelkomponente angegeben sind. In einer Ausführungsform kann der Code-Composer258 die binären Dateien der Komponentenkernel abrufen und an den zugewiesenen Platz kopieren. Der Code-Composer258 kann auch assoziierte Codepatches anwenden, um die binären Dateien dazu zu bringen, Eingabedaten aus den Eingaberegisterbereichen zu lesen und Ausgaben an die Ausgaberegisterbereiche zu schreiben. Der Code-Composer258 kann ein Signal senden, das anzeigt, dass der spezifizierte kombinierte Kernel zusammengesetzt wurde. - Eine Ausführungsform einer Funktionsweise eines Codepatch-Erzeugers
230 ist in3 gezeigt. In Block310 kann der Codepatch-Erzeuger230 Komponentenkernel zusammensetzen, um Binaries sowie Ersatz-Codepatches zu erzeugen, die ein Linken während der Laufzeit ermöglichen. In einer Ausführungsform kann der Codepatch-Erzeuger230 einen Gen4-Assembler umfassen, der eine „.declare"-Syntax benutzen kann. In einer Ausführungsform kann der Gen4-Assembler „.declare"-Syntax verwenden, um die Befehle, die Daten von dem vorherigen Kernel lesen, sowie die Befehle, die Daten an den nachfolgenden Kernel schreiben, zu identifizeren. In einer Ausführungsform kann die „.declare"-Syntax für Eingabe- und Ausgabe-Bereiche wie folgt aussehen:
.declareINBase=r4,Elementsize=4,Type=d,Width(8),Height(4)PP_IN
.declareOUTBase=r8,Elementsize=4,Type=d,Width(8),Height(4)PP_OUT - In einer Ausführungsform zeigen PP_IN und PP_OUT an, dass „.declare" benutzt wird, um auf die Daten, die von dem vorherigen Kernel erzeugt werden, und auf den zum Schreiben von Daten vorgesehenen Bereich zuzugreifen, um die Ausgabedaten zu schreiben, die von dem nachfolgenden Kernel gelesen werden können. Der Inhalt von PP_IN und PP_OUT kann bis zur Laufzeit auf einen Standardwert gesetzt werden. Die tatsächlichen Werte, die während der Laufzeit bestimmt werden, können benutzt werden, um den Inhalt von PP_IN und PP_OUT zu konfigurieren. In einer Ausführungsform kann der Gen4-Assembler „.declare" mit PP_IN und PP_OUT verfolgen, bevor er einen Ersatz-Codepatch erzeugt.
- In Block
350 kann der Codepatch-Erzeuger230 die Binaries und die Ersatz-Codepatches in den Treiber250 laden. - Eine Ausführungsform der Funktionsweise des Code-Managers
254 ist in4 gezeigt. In Block410 kann der Code-Manger254 eine erste Anfrage zum Abrufen eines kombinierten Kernels K empfangen. In Block420 kann der Code-Manager254 prüfen, ob der kombinierte Kernel K vorhanden ist, und wird die Kontrolle an Block425 übergeben, falls der kombinierte Kernel K vorhanden ist, andernfalls an Block430 . - In Block
425 kann der Code-Manager254 das Alter aller existierenden kombinierten Kernel erhöhen. Ein solcher Ansatz kann die Identifikation der kombinierten Kernel erlauben, die zuletzt benutzt worden sind. In einer Ausführungsform sind die kombinierten Kernel mit geringerem Alterswert die zuletzt benutzten kombinierten Kernel. - In Block
430 kann der Code-Manager254 bestimmen, ob der Kernelspeicherplatz wieder beansprucht werden kann, und geht die Kontrolle über an Block435 , falls der Kernelspeicherplatz beansprucht werden kann, andernfalls an Block440 . - In Block
435 kann der Code-Manager254 kombinierte Kernel mit einem Alter, das größer als ein Schwellenwertalter ist, löschen. In einer Ausführungsform kann der Code-Manager254 das Alter jedes kombinierten Kernels mit einem Schwellenwertalter vergleichen, um zu bestimmen, ob das Alter des kombinierten Kernels größer ist als das Schwellenwertalter. - In Block
440 kann der Code-Manager254 die ausgewählten Kernelkomponenten bestimmen, die benötigt werden, um den kombinierten Kernel K zu erzeugen. In Block450 kann der Code-Manager254 eine zweite Anfrage senden, um den kombinierten Kernel K sowie die ausgewählten Komponentenkernel zusammenzusetzen. In einer Ausführungsform kann der Code-Manager254 die zweite Anfrage an den Code-Composer258 in Form eines booleschen Arrays senden. Beispielsweise kann der boolesche Array wie bool component_kernels [Liste der Komponentenkernel] aussehen. Die Komponentenkernel können ausgewählt werden, falls die booleschen Werte der Komponentenkernel wahr sind. - In Block
460 kann der Code-Manager254 Platz zur Verfügung stellen, um den kombinierten Kernel K als Antwort auf das Empfangen eines ersten Signals vom Code-Composer258 zu speichern. In Block470 kann der Code-Manager254 ein zweites Signal senden, das anzeigt, dass der Platz zum Speichern des kombinierten Kernels K zugewiesen ist. - In Block
480 kann der Code-Manager254 prüfen, ob ein drittes Signal empfangen wurde, das anzeigt, ob der kombinierte Kernel zusammengesetzt ist, und geht die Kontrolle an Block490 über, falls der kombinierte Kernel K zusammengesetzt ist, andernfalls an Block480 . - In Block
490 kann der Code-Manager254 den kombinierten Kernel K gemeinsam mit einem eindeutigen Bezeichner, der dem kombinierten Kernel K zugewiesen wurde, zwischenspeichern oder speichern. - Eine Ausführungsform der Funktionsweise des Code-Composers
258 ist in5 gezeigt. In Block510 kann der Code-Composer258 die erste Anfrage empfangen, um den kombinierten Kernel K zu erzeugen. In Block520 kann der Code-Composer258 den Platz bestimmen, der benötigt wird, um den kombinierten Kernel K zu speichern. - In Block
530 kann der Code-Composer258 das erste Signal senden, um Platz für den kombinierten Kernel K zur Verfügung zu stellen. In Block540 kann der Code-Composer258 die Reihenfolge der ausgewählten Komponentenkernel bestimmen, um den kombinierten Kernel K zu erzeugen, nachdem das zweite Signal empfangen wurde, welches angibt, dass der Platz, der zum Speichern des kombinierten Kernels K benötigt wird, zur Verfügung gestellt wurde. - In Block
550 kann der Code-Composer258 die Eingabe- und Ausgaberegisterbereiche bestimmen, die von den ausgewählten Komponentenkernel benutzt werden. In Block560 kann der Code-Composer258 die Binaries der ausgewählten Kernelkomponenten abrufen. - In Block
570 kann der Code-Composer258 die Binaries in den zugewiesenen Speicherbereich kopieren. An Block580 kann der Code-Composer258 die Codepatches anwenden, um die Binaries zu veranlassen, die Eingabedaten aus dem Eingaberegisterbereich zu lesen und die Ausgabedaten in den Ausgaberegisterbereich zu schreiben. - An Block
590 kann der Code-Composer258 ein drittes Signal senden, welches angibt, dass der kombinierte Kernel K zusammengesetzt wurde. Ein solches Signal kann an den Code-Manager254 gesendet werden. - Gewisse Merkmale der Erfindung wurden unter Bezug auf beispielhafte Ausführungsformen beschrieben. Allerdings soll die Beschreibung nicht in einschränkender Weise gedeutet werden. Verschiedene Modifikationen der beispielhaften Ausführungsformen, ebenso wie andere Ausführungsformen der Erfindung, welche für Fachleute auf dem Gebiet, auf das sich die Erfindung bezieht, offensichtlich sind, gelten als innerhalb von Geist und Schutzbereich der Erfindung liegend.
Claims (20)
- Verfahren, umfassend: Erzeugen einer Mehrzahl von Komponentenkernel in einem Codepatch-Erzeuger, wobei die Mehrzahl der Komponentenkernel während der Laufzeit gelinkt werden, Bestimmen, ob ein kombinierter Kernel in einem Code-Manager vorhanden ist, und Erzeugen des kombinierten Kernels in einem Code-Composer, wobei der kombinierte Kernel aus ausgewählten Komponentenkerneln aus der Vielzahl von Komponentenkerneln erzeugt wird, falls der kombinierte Kernel nicht im Code-Manager vorhanden ist.
- Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass das Erzeugen der Mehrzahl der Komponentenkernel ferner umfasst: Zusammensetzen der Mehrzahl der Komponentenkernel, um Binaries mit Codepatches zu erzeugen, die Daten von einem vorhergehenden Kernel lesen und während der Laufzeit Daten in einen nachfolgenden Kernel lesen, und Laden der Binaries und der Codepatches in einen Treiber.
- Verfahren nach Anspruch 2, wobei das Erzeugen des kombinierten Kernels ferner umfasst: Bestimmen eines Speichers, der zum Speichern des kombinierten Kernels benötigt wird, Identifizieren der Eingabe- und Ausgaberegisterbereiche, die von den ausgewählten Komponentenkerneln der Vielzahl der Komponentenkernel benutzt werden, und Anwenden der Codepatches, um die Binaries einzusetzen, um Daten aus den Eingaberegisterbereichen zu lesen und Daten in die Ausgaberegisterbereiche zu schreiben.
- Verfahren nach Anspruch 3, wobei das Bestimmen des Speichern zum Speichern des kombinierten Kernels ferner umfasst: Senden eines Signals an den Code-Manager und Bestimmen einer Reihenfolge von Komponentenkernel, welche benötigt werden, um den kombinierten Kernel zu erzeugen.
- Verfahren nach Anspruch 3, wobei das Erzeugen des kombinierten Kernels ferner umfasst: Abrufen der Binaries der Komponentenkernel, Kopieren der Binaries in den Speicherraum, und Anzeigen, dass der kombinierte Kernel zusammengesetzt ist, nachdem die Codepatches angewendet wurden, um die Binaries einzusetzen, um Daten aus den Eingaberegisterbereich zu lesen und Daten in die Ausgaberegisterbereiche zu schreiben.
- Verfahren nach Anspruch 4, wobei das Bestimmen, ob der kombinierte Kernel vorhanden ist, ferner das Senden einer Anfrage an den Code-Composer umfasst, um den kombinierten Kernel zu erzeugen, falls der kombinierte Kernel noch nicht vorhanden ist.
- Verfahren nach Anspruch 5, ferner umfassend: Empfangen des gesendeten Signals durch den Code-Composer, wobei das Signal dazu dient, den Code-Manager zu veranlassen, den Speicher zum Speichern des kombinierten Kernels zuzuweisen, Zuweisen des Speichers, der benötigt wird, um den kombinierten Kernel zu speichern, und Speichern des kombinierten Kernels und eines eindeutigen Bezeichners, der mit dem kombinierten Kernel assoziiert ist, nachdem der kombinierte Kernel durch den Code-Composer erzeugt wurde.
- Vorrichtung, umfassend: einen Codepatch-Erzeuger zum Erzeugen einer Vielzahl von Komponentenkerneln, wobei die Vielzahl der Komponentenkernel während der Laufzeit verlinkt werden soll, einen Code-Manager, der an den Codepatch-Erzeuger gekoppelt ist, wobei der Code-Manager dazu dient, zu bestimmen, ob ein kombinierter Kernel im Code-Manager vorhanden ist, und einen Code-Composer, der an den Code-Manager gekoppelt ist, um den kombinierten Kernel zu erzeugen, wobei der kombinierte Kernel aus ausgewählten Komponentenkerneln der Vielzahl der Komponentenkernel erzeugt wird, falls der kombinierte Kernel nicht im Code-Manager vorhanden ist.
- Vorrichtung nach Anspruch 8, dadurch gekennzeichnet, dass der Codepatch-Erzeuger dazu dient, die Vielzahl von Komponentenkerneln zusammenzusetzen, um Binaries mit Codepatches zu erzeugen, die Daten aus dem vorherigen Kernel lesen und während der Laufzeit Daten in den nachfolgenden Kernel schreiben, und um die Binaries und Codepatches in einen Treiber zu laden.
- Vorrichtung nach Anspruch 9, dadurch gekennzeichnet, dass der Code-Composer dazu dient, einen Speicher zu bestimmen, der zum Speichern des kombinierten Kernels benötigt wird, die Eingabe- und Ausgaberegisterbereiche zu identifizieren, die von den ausgewählten Komponentenkerneln der Vielzahl von Komponentenkerneln benutzt werden, und die Codepatches anzuwenden, um die Binaries zu veranlassen, Daten aus den Eingaberegisterbereichen zu lesen und Daten in die Ausgaberegisterbereiche zu schreiben.
- Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, dass der Code-Composer ein Signal an den Code-Manager sendet und eine Reihenfolge der Komponentenkernel bestimmt, die benötigt wird, um den kombinierten Kernel zu erzeugen.
- Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, dass der Code-Composer die Binaries der Komponentenkernel abruft, die Binaries in den Speicherraum kopiert und anzeigt, dass der kombinierte Kernel zusammengesetzt ist, nachdem die Codepatches angewendet wurden, um die Binaries zu veranlassen, Daten aus den Eingaberegisterbereichen zu lesen und Daten in die Ausgaberegisterbereiche zu schreiben.
- Vorrichtung nach Anspruch 11, dadurch gekennzeichnet, dass der Code-Manager dazu dient, eine Anfrage an den Code-Composer zu übertragen, um den kombinierten Kernel zu erzeugen, falls der kombinierte Kernel nicht schon vorhanden ist.
- Einrichtung nach Anspruch 12, dadurch gekennzeichnet, dass der Code-Manager dazu dient, Speicher zum Speichern des kombinierten Kernels zuzuweisen, nachdem das Signal empfangen wurde, das von dem Code-Composer gesendet wurde, und den kombinierten Kernel und einen eindeutigen Bezeichner, der mit dem kombinierten Kernel assoziiert ist, zu speichern, nachdem der kombinierte Kernel von dem Code-Composer erzeugt wurde.
- Ein maschinenlesbares Medium, das eine Vielzahl von Befehlen umfasst, um ein Recheneinrichtung dazu zu bringen: eine Vielzahl von Komponentenkerneln in einem Codepatch-Erzeuger zu erzeugen, wobei die Vielzahl von Komponentenkerneln während der Laufzeit verlinkt werden sollen, zu bestimmen, ob ein kombinierter Kernel in einem Code-Manager vorhanden ist, und den kombinierten Kernel in einem Code-Composer zu erzeugen, wobei der kombinierte Kernel aus ausgewählten Komponentenkerneln der Vielzahl von Komponentenkerneln erzeugt wird, falls der kombinierte Kernel nicht im Code-Manager vorhanden ist.
- Maschinenlesbares Medium nach Anspruch 15, wobei das Erzeugen der Vielzahl von Komponentenkernel ferner umfasst: Zusammensetzen der Vielzahl von Komponentenkerneln, um Binaries mit Codepatches zu erzeugen, die Daten aus einem vorhergehenden Kernel lesen und während der Laufzeit Daten in einen nachfolgenden Kernel schreiben, und Laden der Binaries und der Codepatches in einen Treiber.
- Maschinenlesbares Medium nach Anspruch 16, wobei das Erzeugen des kombinierten Kernels ferner umfasst: Bestimmen eines Speichers, der zum Speichern des kombinierten Kernels benötigt wird, Identifizieren der Eingabe- und Ausgaberegisterbereiche, die von den ausgewählten Komponentenkerneln der Vielzahl von Komponentenkerneln benutzt werden, und Anwenden der Codepatches, um Binaries zu veranlassen, Daten aus den Eingaberegisterbereichen zu lesen und Daten in die Ausgaberegisterbereiche zu schreiben.
- Maschinenlesbares Medium nach Anspruch 17, wobei das Bestimmen des Speichers zum Speichern des kombinierten Kernels ferner umfasst: Senden eines Signals an den Code-Manager, und Bestimmen einer Reihenfolge von Komponentenkerneln, die zum Erzeugen des kombinierten Kernels benötigt werden.
- Maschinenlesbares Medium nach Anspruch 17, wobei das Erzeugen des kombinierten Kernels ferner umfasst: Abrufen der Binaries aus den Komponentenkerneln, Kopieren der Binaries in den Speicherraum, und Anzeigen, dass der kombinierte Kernel zusammengesetzt ist, nachdem die Codepatches angewendet wurden, um die Binaries zu veranlassen, Daten aus den Eingaberegisterbereichen zu lesen und Daten in die Ausgaberegisterbereiche zu schreiben.
- Maschinenlesbares Medium nach Anspruch 19, ferner umfassend: Empfangen des gesendeten Signals durch den Code-Composer, wobei das Signal dazu dient, den Code-Manager zu veranlassen, den Speicher zum Speichern des kombinierten Kernels zuzuweisen, Zuweisen des Speichers, der zum Speichern des kombinierten Kernels benötigt wird, und Speichern des kombinierten Kernels und eines eindeutigen Bezeichners, der mit dem kombinierten Kernel assoziiert ist, nachdem der kombinierte Kernel von dem Code-Composer erzeugt wurde.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/758,437 | 2007-06-05 | ||
US11/758,437 US8843913B2 (en) | 2007-06-05 | 2007-06-05 | Dynamic linking and loading of post-processing kernels |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102008024521A1 true DE102008024521A1 (de) | 2008-12-11 |
DE102008024521B4 DE102008024521B4 (de) | 2011-05-05 |
Family
ID=39942318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE200810024521 Expired - Fee Related DE102008024521B4 (de) | 2007-06-05 | 2008-05-21 | Dynamisches Linken und Laden von Nachbearbeitungskerneln |
Country Status (5)
Country | Link |
---|---|
US (2) | US8843913B2 (de) |
JP (1) | JP4984303B2 (de) |
CN (1) | CN101320332B (de) |
DE (1) | DE102008024521B4 (de) |
TW (1) | TWI400665B (de) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843913B2 (en) * | 2007-06-05 | 2014-09-23 | Intel Corporation | Dynamic linking and loading of post-processing kernels |
CN105512022B (zh) * | 2014-09-25 | 2018-09-28 | 华为技术有限公司 | 一种数据处理方法和设备 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS613243A (ja) * | 1984-06-18 | 1986-01-09 | Yamatake Honeywell Co Ltd | 演算状況変更方法 |
JPH02231604A (ja) | 1989-03-06 | 1990-09-13 | Toshiba Corp | プログラム作成装置 |
JPH05289858A (ja) | 1992-04-13 | 1993-11-05 | Toshiba Corp | ソフトウェア合成装置 |
JPH0844570A (ja) * | 1994-07-28 | 1996-02-16 | N T T Data Tsushin Kk | プログラム実行システム及び方法 |
US5966072A (en) * | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
US6148117A (en) * | 1996-12-27 | 2000-11-14 | Hewlett-Packard Company | Image processing system with alterable local convolution kernel |
US6490721B1 (en) * | 1998-07-14 | 2002-12-03 | Oc Systems Incorporated | Software debugging method and apparatus |
US6584567B1 (en) | 1999-06-30 | 2003-06-24 | International Business Machines Corporation | Dynamic connection to multiple origin servers in a transcoding proxy |
CA2453776A1 (en) * | 2003-12-19 | 2005-06-19 | Ibm Canada Limited-Ibm Canada Limitee | Compiler optimization |
US8046488B2 (en) | 2004-05-21 | 2011-10-25 | Intel Corporation | Dynamically modulating link width |
EP2364029A3 (de) | 2004-07-29 | 2011-12-21 | Microsoft Corporation | Bildverarbeitung unter Verwendung linearer Lichtwerte und anderer Bildverarbeitungsoptimierungen |
CN100396065C (zh) * | 2005-01-14 | 2008-06-18 | 清华大学 | 一种iSCSI存储系统的实现方法 |
JP2006338507A (ja) * | 2005-06-03 | 2006-12-14 | Fujifilm Holdings Corp | 処理装置及び処理方法 |
US7913243B2 (en) * | 2005-06-21 | 2011-03-22 | International Business Machines Corporation | Method and system for generating and applying patches to a computer program concurrently with its execution |
US8843913B2 (en) | 2007-06-05 | 2014-09-23 | Intel Corporation | Dynamic linking and loading of post-processing kernels |
-
2007
- 2007-06-05 US US11/758,437 patent/US8843913B2/en not_active Expired - Fee Related
-
2008
- 2008-05-21 TW TW97118793A patent/TWI400665B/zh not_active IP Right Cessation
- 2008-05-21 DE DE200810024521 patent/DE102008024521B4/de not_active Expired - Fee Related
- 2008-05-23 JP JP2008135731A patent/JP4984303B2/ja not_active Expired - Fee Related
- 2008-06-04 CN CN 200810110381 patent/CN101320332B/zh not_active Expired - Fee Related
-
2014
- 2014-09-03 US US14/476,285 patent/US9465629B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN101320332A (zh) | 2008-12-10 |
CN101320332B (zh) | 2012-07-04 |
US20080307404A1 (en) | 2008-12-11 |
US20150143387A1 (en) | 2015-05-21 |
US8843913B2 (en) | 2014-09-23 |
DE102008024521B4 (de) | 2011-05-05 |
US9465629B2 (en) | 2016-10-11 |
JP4984303B2 (ja) | 2012-07-25 |
TWI400665B (zh) | 2013-07-01 |
JP2008305398A (ja) | 2008-12-18 |
TW200912796A (en) | 2009-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102010051477B4 (de) | Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform | |
US5740431A (en) | Configuration file management | |
DE112012000212T5 (de) | Technik für live Analyse-basierte Rematerialisation zur Reduktion von Registerdruck und zur Verbesserung von Parallelität | |
DE102006028307B4 (de) | Powermanagement von mehreren Prozessoren | |
CN102708067B (zh) | 组合具有相同内容的存储器页面 | |
DE202010017667U1 (de) | Datenspeichervorrichtung mit Flash-Speicherchips | |
DE102008059790A1 (de) | Verfahren, Vorrichtung und Befehle zum Verarbeiten von Vektordaten | |
DE202012013432U1 (de) | Speichern von Daten auf Speicherknoten | |
DE112015000430T5 (de) | Einheitliche Speichersysteme und -verfahren | |
DE102007046947B4 (de) | System und Verfahren zum Verwalten von Systemmanagement-Interrupts in einem Mehrprozessor-Computersystem | |
DE10297624T5 (de) | Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen | |
DE112010003750T5 (de) | Hardware für parallele Befehlslistenerzeugung | |
DE112007001171T5 (de) | Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf | |
DE112012004893T5 (de) | Implementieren eines Software-Abbildes auf mehreren Zielen unter Verwendung einer Datenstromtechnik | |
DE112012004629T5 (de) | Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene | |
DE102013019333A1 (de) | Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten | |
DE102020119205A1 (de) | Speichervorrichtung, speichersystem und betriebsverfahren hierfür | |
DE112014000340T5 (de) | Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern | |
DE112020005789T5 (de) | Hierarchische partitionierung von operatoren | |
DE102021130906A1 (de) | Optimieren von zugriffen auf begrenzungsinformationen beim pufferschutz | |
DE102022121767A1 (de) | In-memory-assoziativverarbeitung für vektoren | |
DE102022121773A1 (de) | In-memory-assoziativverarbeitungssystem | |
CN106250063A (zh) | 一种翻页方法、装置及书写终端 | |
DE102008016180A1 (de) | Darlegen von Systemtopologie für die Ausführungsumgebung | |
DE102006026474A1 (de) | System und Verfahren für das automatische Optimieren von erhältlichen virtuellem Speicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8181 | Inventor (new situation) |
Inventor name: ZHANG, XUEFENG, BEIJING, CN Inventor name: YANG, YUENIAN, GRANITE BAY, CALIF., US Inventor name: LIU, PING, SUNNYVALE, CALIF., US Inventor name: LUEH, GUEI-YUAN, SAN JOSE, CALIF., US Inventor name: JIANG, HONG, EL DORADO HILLS, CALIF., US Inventor name: LUKYANOV, MAXIM, SUNNYVALE, CALIF., US Inventor name: HE, XIAOYING, PALO ALTO, CALIF., US |
|
R020 | Patent grant now final |
Effective date: 20110806 |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0009450000 Ipc: G06F0009445000 |