Nothing Special   »   [go: up one dir, main page]

DE60318105T2 - Pipeline-coprozessor - Google Patents

Pipeline-coprozessor Download PDF

Info

Publication number
DE60318105T2
DE60318105T2 DE60318105T DE60318105T DE60318105T2 DE 60318105 T2 DE60318105 T2 DE 60318105T2 DE 60318105 T DE60318105 T DE 60318105T DE 60318105 T DE60318105 T DE 60318105T DE 60318105 T2 DE60318105 T2 DE 60318105T2
Authority
DE
Germany
Prior art keywords
data
pipeline
accelerator
host
processor
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.)
Expired - Lifetime
Application number
DE60318105T
Other languages
English (en)
Other versions
DE60318105D1 (de
Inventor
Chandan Manassas MATHUR
Scott Amessville HELLENBACH
John W. Manassas RAPP
Larry Manassas JACKSON
Mark Centreville JONES
Troy Culpeper CHERASARO
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.)
Lockheed Martin Corp
Original Assignee
Lockheed Corp
Lockheed Martin 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
Priority claimed from US10/684,057 external-priority patent/US7373432B2/en
Application filed by Lockheed Corp, Lockheed Martin Corp filed Critical Lockheed Corp
Application granted granted Critical
Publication of DE60318105D1 publication Critical patent/DE60318105D1/de
Publication of DE60318105T2 publication Critical patent/DE60318105T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Microcomputers (AREA)
  • Programmable Controllers (AREA)
  • Logic Circuits (AREA)
  • Bus Control (AREA)
  • Complex Calculations (AREA)

Description

  • Prioritätsbeanspruchung
  • Diese Applikation beansprucht die Priorität der provisorischen U. S. Anmeldung mit der Anmeldungsnummer 60/422,503, eingereicht am 31. Oktober 2002, welche durch Bezugnahme in diesen Text aufgenommen wird.
  • Querverweise auf in Beziehung stehende Anmeldungen
  • Diese Anmeldung steht in Beziehung zu U.S.-Publikationen Nr. 20004/0181621 , betitelt "Computing machine having improved computing architecture and related system and method"; Nr. 2004/0136241 betitelt "Pipeline accelerator for improved computing architecture and related system and method"; 2004/0170070 betitelt "Programmable circuit and related computing machine and method"; sowie Nr. 2004/0130927 betitelt "Pipeline accelerator having multiple Pipeline units and related computing machine and methods"; alle eingereicht am 09. Oktober 2003 und sämtlich einen gemeinsamen Inhaber aufweisend.
  • Hintergrund
  • Eine gebräuchliche Rechnerarchitektur zum Verarbeiten relativ großer Mengen von Daten in einer relativ kurzen Zeitdauer beinhaltet mehrere miteinander verbundene Prozessoren, die sich die Rechenlast teilen. Durch Teilen der Rechenlast können diese Mehrfachprozessoren oft die Daten schneller verarbeiten, als es ein einzelner Prozessor bei einer gegebenen Taktfrequenz kann. Beispielsweise kann jeder der Prozessoren einen entsprechenden Teil der Daten verarbeiten oder einen entsprechenden Teil eines Verarbeitungsalgorithmus ausführen.
  • 1 ist ein schematisches Blockdiagramm einer herkömmlichen Rechenmaschine 10 mit einer Multiprozessorarchitektur. Die Maschine 10 beinhaltet einen Hauptprozessor 12 und Co-Prozessoren 141 14n , die miteinander und mit dem Hauptprozessor über einen Bus 16 kommunizieren, einen Eingangsanschluss 18 zum Entgegennehmen von Rohdaten von einer entfernt angeordneten Vorrichtung (in 1 nicht dargestellt), sowie einen Ausgangsanschluss 20 zum Liefern verarbeiteter Daten an die entfernt angeordnete Quelle. Die Maschine 10 beinhaltet ebenso einen Speicher 22 für den Hauptprozessor 12, entsprechende Speicher 241 24n für die Co-Prozessoren 141 14n , sowie einen Speicher 26, den der Hauptprozessor und die Co-Prozessoren über den Bus 16 gemeinsam benutzen. Der Speicher 22 dient sowohl als ein Programm- als auch als ein Arbeitsspeicher für den Hauptprozessor 12, und jeder Speicher 241 24n dient dient sowohl als ein Programm- als auch als ein Arbeitsspeicher für einen entsprechenden Co-Prozessor 141 14n . Der gemeinsam benutzte Speicher 26 ermöglicht es dem Hauptprozessor 12 und den Co-Prozessoren 14, über die Anschlüsse 18 bzw. 20 Daten untereinander und von/an die entfernte Vorrichtung zu transferieren. Der Hauptprozessor 12 sowie die Co-Prozessoren 14 empfangen auch ein gemeinsames Taktsignal, welches die Geschwindigkeit steuert, mit der die Maschine 10 die Rohdaten verarbeitet.
  • Im Allgemeinen teilt die Rechenmaschine 10 das Verarbeiten von Rohdaten unter den Hauptprozessor 12 und die Co-Prozessoren 14 auf. Die entfernt angeordnete Quelle (in 1 nicht dargestellt) wie etwa eine Sonar-Anordnung (5) lädt die Rohdaten über den Anschluss 18 in einen Bereich des gemeinsam benutzten Speichers 26, welcher als ein First-In-First-Out(FIFO)-Puffer (nicht dargestellt) für die Rohdaten fungiert. Der Hauptprozessor 12 ruft die Rohdaten aus dem Speicher 26 über den Bus 16 ab, und dann verarbeiten der Hauptprozessor und die Co-Prozessoren 14 die Rohdaten, dabei Daten nach Bedarf untereinander über den Bus 16 transferierend. Der Hauptprozessor 12 lädt die verarbeiteten Daten in einen anderen FIFO-Puffer (nicht dargestellt), der in dem gemeinsam genutzten Speicher 26 festgelegt ist, und die entfernt angeordnete Quelle ruft die verarbeiteten Daten über den Anschluss 20 aus diesem FIFO ab.
  • In einem Betriebsbeispiel verarbeitet die Rechenmaschine 10 die Rohdaten durch sequenzielles Ausführen von n + 1 entsprechenden Operationen auf den Rohdaten, wobei diese Operationen zusammen einen Verarbeitungsalgorithmus wie eine schnelle Fourier-Transformation (FFT) bilden. Insbesondere bildet die Maschine 10 aus dem Hauptprozessor 12 und den Co-Prozessoren 14 eine Datenverarbeitungspipeline. Oftmals erlaubt eine derartige Pipeline für eine gegebene Frequenz des Taktsignals, dass die Maschine 10 die Rohdaten schneller verarbeitet als eine Maschine, welche lediglich einen einzelnen Prozessor aufweist.
  • Nach dem Abrufen der Rohdaten aus dem Rohdaten-FIFO (nicht dargestellt) in dem Speicher 26 führt der Hauptprozessor eine erste Operation, wie etwa eine trigonometrische Funktion, auf den Rohdaten durch. Diese Operation liefert ein erstes Resultat, das der Prozessor 12 in einem Erstresultat-FIFO (nicht dargestellt) abspeichert, welches in dem Speicher 26 gebildet ist. Typischerweise führt der Prozessor 12 ein in dem Speicher 22 gespeichertes Programm durch und führt die vorstehend beschriebenen Aktionen unter der Kontrolle des Programmes aus. Der Prozessor 12 kann auch den Speicher 22 als einen Arbeitsspeicher zum vorübergehenden Speichern von Daten verwenden, die der Prozessor in Zwischenbereichen der ersten Operation erzeugt.
  • Danach, nach dem Abrufen des ersten Resultates von dem Erstresultat-FIFO (nicht dargestellt) in dem Speicher 26, führt der Co-Prozessor 141 eine zweite Operation, wie etwa eine logarithmische Funktion, auf dem ersten Resultat durch. Diese zweite Operation liefert ein zweites Resultat, welches der Co-Prozessor 141 in einem Zweitresultat-FIFO (nicht dargestellt), das in dem Speicher 26 gebildet ist, abspeichert. Typischerweise führt der Co-Prozessor 141 ein in dem Speicher 241 gespeichertes Programm aus und führt die vorstehend beschriebenen Aktionen unter der Kontrolle des Programmes durch. Der Co-Prozessor 141 kann auch den Speicher 241 als Arbeitsspeicher zum vorübergehenden Speichern von Daten benutzen, die der Co-Prozessor in Zwischenbereichen der zweiten Operation generiert.
  • Danach führen die Co-Prozessoren 242 24n sequenziell dritte bis n-te Operationen auf den zweiten bis (n – 1)-ten Resultaten in einer Art und Weise aus, die ähnlich der ist, die vorstehend für den Co-Prozessor 241 erörtert worden ist.
  • Die n-te Operation, die durch den Co-Prozessor 24 ausgeführt wird, liefert das endgültige Ergebnis, d. h. die verarbeiteten Daten. Der Co-Prozessor 24n lädt die verarbeiteten Daten in ein FIFO für verarbeitete Daten (nicht dargestellt), welches in dem Speicher 26 gebildet ist, und die entfernt angeordnete Vorrichtung (in 1 nicht dargestellt) ruft die verarbeiteten Daten aus diesem FIFO ab.
  • Da der Hauptprozessor 12 und die Co-Prozessoren 14 gleichzeitig unterschiedliche Operationen des Verarbeitungsalgorithmus ausführen, ist die Rechenmaschine 10 oft in der Lage, die Rohdaten schneller als eine Rechenmaschine zu verarbeiten, welche einen einzelnen Prozessor aufweist, welcher die verschiedenen Operationen nacheinander durchführt. Insbesondere kann der einzelne Prozessor nicht eine neue Menge der Rohdaten abrufen, bis er alle n + 1 Operationen auf der vorhergehenden Menge von Rohdaten ausgeführt hat. Aber durch Verwenden der vorstehend erörterten Pipeline-Technik kann der Hauptprozessor 12 eine neue Menge von Rohdaten abrufen, nachdem er lediglich die erste Operation durchgeführt hat. Demgemäß kann diese Pipeline-Technik bei einer gegebenen Taktfrequenz die Geschwindigkeit, mit der die Maschine 10 die Rohdaten verarbeitet, im Vergleich mit einer Einprozessormaschine (in 1 nicht dargestellt) um einen Faktor von ungefähr n + 1 erhöhen.
  • Alternativ kann die Rechenmaschine 10 die Rohdaten parallel durch gleichzeitiges Ausführen von n + 1 Instanzen eines Verarbeitungsalgorithmus, wie etwa einer FFT, auf den Rohdaten verarbeiten. Das heisst, wenn der Algorithmus wie in dem vorherigen Beispiel vorstehend beschrieben, n + 1 sequenzielle Operationen beinhaltet, dann führen der Hauptprozessor 12 und die Co-Prozessoren 14 sequenziell alle n + 1 Operationen auf entsprechenden Mengen der Rohdaten aus. Demzufolge kann diese Parallelverarbeitungstechnik wie die vorstehend beschriebene Pipeline-Technik bei einer gegebenen Taktfrequenz die Geschwindigkeit, mit der die Maschine 10 die Rohdaten verarbeitet, im Vergleich mit einer Einprozessormaschine (in 1 nicht dargestellt) um einen Faktor von n + 1 erhöhen.
  • Obgleich die Rechenmaschine Daten schneller als eine Einprozessor-Rechenmaschine (in 1 nicht dargestellt) verarbeiten kann, ist die Datenverar beitungsgeschwindigkeit der Maschine 10 unglücklicherweise oft signifikant kleiner als die Frequenz des Prozessortaktes. Insbesondere ist die Datenverarbeitungsgeschwindigkeit der Rechenmaschine 10 durch die Zeit begrenzt, die der Hauptprozessor 12 und die Co-Prozessoren 14 zum Verarbeiten der Daten benötigen. Der Kürze halber wird ein Beispiel dieser Geschwindigkeitsbegrenzung im Zusammenhang mit dem Hauptprozessor 12 diskutiert, obgleich es deutlich ist, dass diese Diskussion auch auf die Co-Prozessoren 14 anwendbar ist. Wie vorstehend beschrieben, führt der Hauptprozessor 12 ein Programm aus, das den Prozessor zum Manipulieren der Daten in einer gewünschten Art und Weise steuert. Dieses Programm beinhaltet eine Sequenz von Instruktionen, die der Prozessor 12 ausführt. Unglücklicherweise benötigt der Prozessor 12 typischerweise mehrere Taktzyklen, um eine einzige Instruktion auszuführen, und muss oft mehrere Instruktionen ausführen, um einen einzigen Datenwert zu verarbeiten. Nehmen wir beispielsweise an, dass der Prozessor 12 einen ersten Datenwert A (nicht dargestellt) mit einem zweiten Datenwert B (nicht dargestellt) zu multiplizieren hat. Während eines ersten Taktzyklus empfängt der Prozessor 12 eine Multiplikations-Instruktion aus dem Speicher 22. Während eines zweiten und dritten Taktzyklus ruft der Prozessor 12 A bzw. B aus dem Speicher 26 ab. Während eines vierten Taktzyklus multipliziert der Prozessor 12 A mit B und, während eines fünften Taktzyklus, speichert er das resultierende Produkt in dem Speicher 22 oder 26 oder liefert das resultierende Produkt an die entfernt angeordnete Vorrichtung (nicht dargestellt). Dies ist ein für den besten Fall dargestelltes Szenario, da in zahlreichen Fällen der Prozessor 12 zusätzliche Taktzyklen für Overhead-Aufgaben wie das Initialisieren und das Abschließen von Zählern benötigt. Daher benötigt der Prozessor 12 bestenfalls fünf Taktzyklen oder einen Mittelwert von 2,5 Taktzyklen pro Datenwert, um A und B zu verarbeiten.
  • Demzufolge ist die Geschwindigkeit, mit der die Rechenmaschine 10 Daten verarbeitet, oftmals signifikant niedriger als die Frequenz des Taktes, der den Hauptprozessor 12 und die Co-Prozessoren 14 ansteuert. Wenn beispielsweise der Prozessor 12 mit 1,0 Gigahertz (GHz) getaktet ist, jedoch einen Mittelwert von 2,5 Taktzyklen pro Datenwert benötigt, dann ist die effektive Datenverarbeitungsgeschwindigkeit gleich (1,0 GHz)/2,5 = 0,4 GHz. Diese effektive Datenverarbeitungsgeschwindigkeit wird oft in Einheiten von Operationen pro Sekunde angegeben. Daher würde der Prozessor 12 in diesem Beispiel bei einer Taktrate von 1,0 GHz mit einer Datenverarbeitungsgeschwindigkeit von 0,4 Gigaoperationen/Sekunde (Gops) eingestuft werden.
  • 2 ist ein Blockdiagramm einer festverdrahteten Datenpipeline 30, die typischerweise Daten schneller als ein Prozessor bei einer gegebenen Taktfrequenz verarbeiten kann, und oft bei im Wesentlichen derselben Rate, mit der die Pipeline getaktet wird. Die Pipeline 30 beinhaltet Operatorschaltungen 321 32n , von denen jede eine entsprechende Operation auf entsprechenden Daten ausführt, ohne Programm-Instruktionen auszuführen. Das heisst, die gewünschte Operation ist in eine Schaltung 32 "eingebrannt", so dass sie die Operation ohne die Notwendigkeit von Programm-Instruktionen automatisch implementiert. Durch Eliminieren des Overheads, der mit der Ausführung von Programm-Instruktionen verbunden ist, kann die Pipeline 30 typischerweise mehr Operationen bei einer gegebenen Taktfrequenz ausführen, als ein Prozessor es kann.
  • Beispielsweise kann die Pipeline 30 oftmals die folgende Gleichung bei einer gegebenen Taktfrequenz schneller lösen, als es ein Prozessor kann: Y(xk) = (5xk + 3)2xk (1),wobei xk eine Sequenz von Rohdatenwerten repräsentiert. In diesem Beispiel ist die Operatorschaltung 321 ein Multiplizierer, welcher 5xk berechnet, die Schaltung 322 ist ein Addierer, die 5xk + 3 berechnet, und die Schaltung 32n (n = 3) ist ein Multiplizierer, der (5xk + 3)2xk berechnet.
  • Während eines ersten Taktzyklus k = 1 empfängt die Schaltung 321 den Datenwert x1 und multipliziert ihn mit 5, um 5x1 zu erzeugen.
  • Während eines zweiten Taktzyklus k = 2 empfängt die Schaltung 322 5x1 aus der Schaltung 321 und addiert 3, um 5x1 + 3 zu erzeugen. Auch erzeugt die Schaltung 321 während des zweiten Taktzyklus [den Wert] 5x2.
  • Während eines dritten Taktzyklus k = 3 empfängt die Schaltung 323 [den Wert] 5x1 + 3 von der Schaltung 322 und multipliziert mit 2x1 (effektiv eine Rechtsverschiebung 5x1 + 3 um x1), um das erste Ergebnis (5x1 + 3)2x1 zu erzeugen. Auch während des dritten Taktzyklus erzeugt die Schaltung 321 [den Wert] 5x3 und die Schaltung 322 erzeugt [den Wert] 5x2 + 3.
  • Die Pipeline 30 fährt mit der Verarbeitung nachfolgender Rohdatenwerte xk in dieser Weise fort, bis alle Rohdatenwerte verarbeitet sind.
  • Demzufolge erzeugt die Pipeline [nach] einer Verzögerung von 2 Taktzyklen nach dem Empfangen eines Rohdatenwertes x1 – diese Verzögerung wird oft die Latenz der Pipeline 30 genannt – das Ergebnis (5x1 + 3)2x+1, und danach erzeugt sie ein Resultat pro Taktzyklus.
  • Die Latenz nicht beachtend, weist die Pipeline 30 daher eine Datenverarbeitungsgeschwindigkeit gleich der Taktrate auf. Im Vergleich kann die Pipeline 30 Daten bei einer gegebenen Taktrate 2,5-mal schneller verarbeiten als die Rechenmaschine 10 (1), wenn angenommen wird, dass der Hauptprozessor 12 und die Co-Prozessoren 14 (1) Datenverarbeitungsgeschwindigkeiten aufweisen, die, wie in dem vorstehenden Beispiel, das 0,4-fache der Taktgeschwindigkeit betragen.
  • Immer noch auf 2 Bezug nehmend, kann ein Entwerfer sich dafür entscheiden, die Pipeline 30 in einem IC mit programmierbarer Logik (PLIC), wie etwa einem feldprogrammierbaren Gate Array (FPGA), zu implementieren, da ein PLIC eine größere Entwurfs- und Modifikationsflexibilität als ein anwendungsspezifisches IC (ASIC) erlaubt. Um die festverdrahteten Verbindungen innerhalb eines PLICs zu konfigurieren, braucht der Entwerfer lediglich vorbestimmte Binärzustände in innerhalb des PLICs angeordneten Verbindungskonfigurationsregistern einzustellen. Die Kombination aller dieser binären Zustände wird oft "Firmware" genannt. Typischerweise lädt der Entwerfer diese Firmware in einen nichtflüchtigen Speicher (in 2 nicht dargestellt), welcher mit dem PLIC gekoppelt ist. Wenn man das PLIC "einschaltet", lädt dieses die Firmware aus dem Speicher in die Verbindungskonfigurationsregister herunter. Daher ändert der Entwerfer zum Modifizieren der Funktionen des PLICs lediglich die Firmware und ermöglicht es dem PLIC, die modifizierte Firmware in die Verbindungskonfigurationsregister herunterzuladen. Diese Fähigkeit, das PLIC lediglich durch Modifizieren der Firmware zu ändern, ist insbesondere während des Prototypenstadiums und zum Verbessern der Pipeline 30 "im Felde" nützlich.
  • Unglücklicherweise kann die festverdrahtete Pipeline typischerweise nicht alle Algorithmen ausführen, insbesondere nicht jene, welche das Fällen von wesentlichen Entscheidungen mit sich bringen. Ein Prozessor kann typischerweise eine Entscheidungs-Instruktion (z. B. bedingte Instruktionen wie etwa "wenn A, dann gehe nach B, andernfalls gehe nach C") ungefähr gleich schnell ausführen, wie er eine operationale Instruktion (z. B. "A + B") von vergleichbarer Länge ausführen kann. Aber obgleich die Pipeline 30 fähig sein kann, eine relativ einfache Entscheidung zu treffen (z. B. "A > B?"), kann sie typischerweise nicht eine relativ komplexe Entscheidung ausführen (z. B. "wenn A, dann gehe zu B, andernfalls gehe zu C"). Und obgleich man in der Lage sein mag, die Pipeline 30 so zu entwerfen, so dass sie eine derartige komplexe Entscheidung ausführen kann, macht die Größe und die Komplexität der erforderlichen Schaltungen ein derartiges Design oft unpraktisch, insbesondere, wenn ein Algorithmus mehrere verschiedene komplexe Entscheidungen beinhaltet.
  • Demzufolge werden Prozessoren typischerweise in Anwendungen benutzt, die signifikanterweise das Treffen von Entscheidungen benötigen, und festverdrahtete Pipelines sind typischerweise beschränkt auf "Zahlenfresser"-Anwendungen, die wenig oder überhaupt keine Entscheidungsfindung mit sich bringen.
  • Darüber hinaus ist es, wie untenstehend erörtert, typischerweise sehr viel einfacher für jemanden, eine Prozessorbasierte Rechenmaschine zu entwerfen/zu modifizieren, so wie etwa die Rechenmaschine 10 aus 1, als es ist, eine festverdrahtete Pipeline zu entwerfen/zu modifizieren, wie etwa die Pipeline 30 aus 2, insbesondere, wenn die Pipeline 30 mehrere PLICs umfasst.
  • Rechenkomponenten, wie etwa Prozessoren und ihre Peripherien (z. B. Speicher) beinhalten typischerweise Kommunikationsinterfaces gemäß Indu striestandards, welche das Verbinden der Komponenten erleichtern, um eine Prozessorbasierte Rechenmaschine zu bilden.
  • Typischerweise beinhaltet ein standardgemäßes Kommunikationsinterface zwei Ebenen: eine physikalische Ebene und eine Diensteebene.
  • Die physikalische Ebene beinhaltet die Schaltung und die entsprechenden Schaltungsverbindungen, die das Interface bilden, sowie die Betriebsparameter dieser Schaltungen. Beispielsweise beinhaltet die physikalische Ebene die Anschlussstifte, welche die Komponente mit einem Bus verbinden, die Puffer, die Daten, welche aus den Anschlussstiften abgerufen worden sind, verriegeln, und die Treiber, die Daten an den Anschlussstifte ansteuern. Die Betriebsparameter beinhalten die akzeptablen Spannungsbereiche der Datensignale, welche die Anschlussstifte entgegennehmen, sowie die unterstützten Betriebsmodi (z. B. Signalfolge-Modus, Seitenmodus). Herkömmliche physikalische Ebenen beinhalten Transistor-Transistor Logik (TTL) sowie RAMBUS.
  • Die Diensteebene beinhaltet das Protokoll, durch welches eine Rechenkomponente Daten überträgt. Das Protokoll legt das Format der Daten und die Art und Weise fest, in welcher die Komponente die formatierten Daten sendet und empfängt. Herkömmliche Kommunikationsprotokolle beinhalten das Dateitransferprotokoll (FTP) und TCP/IP (expandieren).
  • Demzufolge kann man typischerweise das Interface einer derartigen Komponente entwerfen und es unter relativ kleiner Anstrengung mit anderen Rechnerkomponenten verbinden, da Hersteller und andere typischerweise Computerkomponenten entwerfen, welche Kommunikationsebenen nach Industriestandards aufweisen. Dies ermöglicht es einem, den größten Teil der Zeit dem Entwurf der anderen Teile der Rechenmaschine zu widmen und die Maschine durch Hinzufügen oder Entfernen von Komponenten leicht zu modifizieren.
  • Das Entwerfen einer Rechnerkomponente, welche eine Kommunikationsebene nach einem Industriestandard unterstützt, erlaubt es einem, Entwicklungszeit durch Verwendung eines Designs für die physikalische Ebene aus ei ner Designbibliothek einzusparen. Dies stellt auch sicher, dass er/sie die Komponente leicht mit handelsüblichen Computerkomponenten verbinden kann.
  • Und das Entwerfen einer Rechenmaschine unter Verwendung von Computerkomponenten, die eine Kommunikationsebene nach einem gängigen Industriestandard unterstützen, ermöglicht es dem Entwickler, die Komponenten mit wenig Zeit und Anstrengung miteinander zu verbinden. Da die Komponenten eine gängige Interfaceebene unterstützen, kann der Entwickler sie über einen Systembus mit geringem Entwicklungsaufwand miteinander verbinden. Da die unterstützte Interfaceebene ein Industriestandard ist, kann man die Maschine leicht modifizieren. Beispielsweise kann man unterschiedliche Komponenten und Peripheriegeräte zu der Maschine hinzufügen, wenn sich die Systemkonstruktion weiter entwickelt, oder man kann leicht Komponenten der nächsten Generation hinzufügen/entwickeln, wie sich die Technologie fortentwickelt. Darüber hinaus kann man in die Software der Rechenmaschine ein existierendes Softwaremodul aufnehmen, das das entsprechende Protokoll implementiert, da die Komponenten eine Diensteebene unterstützen, die einem gängigen Industriestandard entspricht. Daher kann man die Komponenten mit geringer Anstrengung miteinander verbinden, weil die Entwicklung des Interfaces im Wesentlichen bereits vorhanden ist, und man kann sich daher auf das Entwickeln derjenigen Teile der Maschine konzentrieren (z. B. Software), die dafür verantwortlich sind, dass die Maschine die gewünschten Funktionen/die gewünschte Funktion ausführt.
  • Aber unglücklicherweise gibt es für Komponenten wie etwa PLICs, die verwendet werden, um festverdrahtete Pipelines, wie etwa die Pipeline 30 aus 2, zu bilden keine bekannten Kommunikationsebenen, die Industriestandards entsprechen.
  • Demzufolge verbringt man typischerweise eine signifikante Zeitdauer damit, um eine Pipeline zu entwickeln, die mehrere PLICs enthält, und übt eine wesentliche Anstrengung aus, die Kommunikationsebene zwischen den PLICs "von Anfang an" zu entwickeln und von Fehlern zu befreien. Typischerweise hängt eine derartige ad-hoc-Kommunikationsebene von den Parametern der zwischen den PLICs übertragenen Daten ab. In ähnlicher Weise müsste man eine signifikante Menge an Zeit verbringen, um eine Pipeline zu entwerfen, die ein Interface mit einem Prozessor bildet, und eine erhebliche Anstrengung ausüben, um die Kommunikationsebene zwischen der Pipeline und dem Prozessor von Anfang an zu entwerfen und von Fehlern zu befreien.
  • In ähnlicher Weise verbringt man eine signifikante Zeitdauer, um eine Pipeline durch Hinzufügen eines PLICs zu modifizieren, und wendet eine signifikante Anstrengung auf, um die Kommunikationsebene zwischen dem hinzugefügten PLIC und den bereits bestehenden PLICs zu entwerfen und von Fehlern zu befreien. In ähnlicher Weise müsste man eine signifikante Zeitdauer verbringen und eine erhebliche Anstrengung ausüben, um die Kommunikationsebene zwischen der Pipeline und dem Prozessor zu entwickeln und von Fehlern zu befreien, um eine Pipeline durch Hinzufügen eines Prozessors zu modifizieren, oder um eine Rechenmaschine durch Hinzufügen einer Pipeline zu modifizieren.
  • Demzufolge ist man beim Konstruieren einer Rechenmaschine unter Bezugnahme auf die 1 und 2 wegen der Probleme beim Herstellen von Interfaces für mehrere PLICs und beim Herstellen von Interfaces zwischen einem Prozessor und einer Pipeline oftmals gezwungen, signifikante Kompromisse einzugehen. Beispielsweise ist man bei einer Prozessorbasierten Rechenmaschine gezwungen, einen Kompromiss zu schließen hinsichtlich Zahlenfresser-Geschwindigkeit gegenüber der Fähigkeit, komplexe Entscheidungen zu treffen, sowie der Flexibilität bei dem Entwurf und der Modifikation. Umgekehrt ist man bei einer Pipeline-basierten Rechenmaschine gezwungen, Kompromisse zwischen der Fähigkeit zur Vornahme komplexer Entscheidungen und der Flexibilität beim Entwickeln/Modifizieren gegenüber der Zahlenfresser-Geschwindigkeit einzugehen. Darüber hinaus ist es oftmals infolge der Probleme beim Herstellen von Interfaces zwischen mehreren PLICs unpraktisch für jemanden, eine Pipeline-basierte Maschine mit mehr als wenigen PLICs zu entwerfen. Im Ergebnis weist eine praktische Pipeline-basierte Maschine oft eine begrenzte Funktionalität auf. Und wegen der Probleme beim Herstellen von Interfaces zwischen einem Prozessor und einem PLIC wäre es unpraktisch, einen Prozessor mit einem Interface zu mehr als einem PLIC zu versehen. Im Ergebnis wären die durch das Kombinieren eines Prozessors und einer Pipeline erzielten Vorteile minimal.
  • Daher ist ein Bedürfnis nach einer neuen Computerarchitektur entstanden, die es einem ermöglicht, die Fähigkeit einer Prozessorbasierten Maschine, Entscheidungen zu treffen, zu kombinieren mit der Zahlenfresser-Geschwindigkeit einer festverdrahteten Pipeline-basierten Maschine. EP-A-0945788 offenbart ein Datenverarbeitungssystem mit einem digitalen Signalprozessorkern und einem Co-Prozessor, der auf Kommandos von dem Digitalsignalprozessorkern antwortet. Die Anmelderin merkt an, dass die durch den digitalen Signalprozessor gesendeten Kommandos Operationscodes beinhalten, die den Rechentyp festlegen, daher sind die Kommandos Programminstruktionen für den Co-Prozessor, und der Co-Prozessor muss diese Programminstruktionen ausführen, um Ergebnisdaten zu verarbeiten und zu erzeugen. Die Anmelderin merkt ebenfalls an, dass der digitale Signalprozessorkern während des Betriebes die durch den Co-Prozessor verwendeten Daten und Koeffizienten durch Laden der zu verarbeiteten Daten in den Datenspeicher und die Koeffizienten in den Koeffizientenspeicher steuert. Nach der Übertragung der zu verarbeiteten Daten signalisiert der digitale Signalprozessorkern dem Co-Prozessor mit dem Kommando für den gewünschten Signalprozessoralgorithmus. Daher sind die durch den digitalen Signalprozessorkern an den Co-Prozessor gesendeten Kommandos Teil des Programmcodes, der durch den digitalen Signalprozessorkern in dem Prozess des Erzeugens der dem Co-Prozessor zuzuspeisenden Daten ausgeführt wird.
  • S. Bakshi at al., „Partitioning and Pipelining for Performance-Contraint Hardware/Software Systems", IEEE Trans. an VLSI Systems, Vol. 7, No. 4, Dezember 1999, Seiten 419–432, offenbaren (2) eine mit einer Pipeline versehene Architektur, die aus einem oder mehreren Prozessoren, einem oder mehreren ASICs und einem oder mehreren Speicherchips besteht, die alle über einen oder mehrere Busse kommunizieren. Die Anmelderin merkt an, dass ASICs festverdrahtete Schaltungen sind, die danach nicht mehr (re)konfiguriert werden können. G. Levrieux-Lafayette "Un seul FPGA dope le traitement d'images" Electronique CEP Communication, Paris, Nummer 55, 1996, Seiten 98, 101–103 beschreibt einen "Bildcomputer", der einen Mikroprozessor und einen Co-Prozessor basierend auf einem FPGA aufweist, wobei der FPGA während seines Betriebes rekonfigurierbar ist.
  • Zusammenfassung
  • In einer Ausführungsform der Erfindung sind eine Peer-Vektor-Maschine, wie in Anspruch 1 dargelegt, sowie ein Verfahren, wie in Anspruch 7 dargelegt, vorgesehen.
  • (entfallen)
  • Da die Peer-Vektor-Maschine sowohl einen Prozessor als auch einen festverdrahteten Pipeline-Beschleuniger umfasst, kann diese Daten oftmals effizienter als eine Rechenmaschine verarbeiten, welche lediglich Prozessoren oder lediglich festverdrahtete Pipelines enthält. Beispielsweise kann man die Peer-Vektor-Maschine entwerfen, so dass der Wirtsprozessor Entscheidungen fällende und nicht rechenintensive Operationen durchführt, wohingegen der Beschleuniger rechenintensive Operationen durchführt. Durch Verschieben der rechenintensiven Operationen an den Beschleuniger kann die Peer-Vektor-Maschine oftmals, bei einer gegebenen Taktfrequenz, Daten mit einer Geschwindigkeit verarbeiten, welche die Geschwindigkeit übertrifft, mit der eine lediglich einen Prozessor aufweisende Maschine die Daten verarbeiten kann.
  • Kurzbeschreibung der Zeichnungen
  • 1 zeigt ein Blockschaltbild einer Rechenmaschine mit einer herkömmlichen Multiprozessorarchitektur.
  • 2 ist ein Blockschaltbild einer herkömmlichen festverdrahteten Pipeline.
  • 3 ist ein schematisches Blockschaltbild einer Rechenmaschine mit einer Peer-Vektor-Architektur gemäß einer Ausführungsform der Erfindung.
  • 4 ist ein schematisches Blockschaltbild eines elektronischen Systems, welches die Peer-Vektor-Rechenmaschine aus 3 gemäß einer Ausführungsform der Beschreibung verkörpert.
  • Detaillierte Beschreibung
  • (unvollständiger Satzbau) ... Beschleuniger 44, welcher mindestens einen Teil der Datenverarbeitung durchführt, und der daher effektiv die Bank der Co-Prozessoren 14 in der Rechenmaschine 10 aus 1 ersetzt. Daher sind der Wirtsprozessor 42 und der Beschleuniger 44 "Peers", die Datenvektoren hin und her übertragen können. Da der Beschleuniger 44 keine Programminstruktionen exekutiert, führt er typischerweise rechenintensive Operationen auf Daten signifikant schneller aus, als eine Bank mit Co-Prozessoren es bei einer gegebenen Taktfrequenz kann. Demzufolge weist die Maschine 40 durch Kombinieren der Fähigkeit des Prozessors 42, Entscheidungen zu fällen, und der Fähigkeit des Beschleunigers 44, Zahlen in großen Mengen rasch zu verarbeiten, dieselben Fähigkeiten einer herkömmlichen Rechenmaschine wie etwa der Maschine 10 auf, aber kann Daten oft schneller verarbeiten als diese. Darüber hinaus erleichtert das Versehen des Beschleunigers 44 mit derselben Kommunikationsebene wie der Wirtsprozessor 42, wie in den vorstehend zitierten Publikationen Nr. 2004/0181621, betitelt "Computing machine having improved computing architecture and related system and method", sowie Nr. 2004/0136241, betitelt "Pipeline accelerator for improved computing architecture and related system and method", erörtert, den Entwurf und die Modifikation der Maschine 40, insbesondere wenn die Kommunikationsebene ein Industriestandard ist. Und wenn der Beschleuniger 44 mehrere Komponenten (z. B. PLICs) beinhaltet, erleichtert das Vorsehen dieser Komponenten mit dieser gleichen Kommunikationsebene den Entwurf und die Modifikation des Beschleunigers, insbesondere wenn die Kommunikationsebene ein Industriestandard ist. Darüber hinaus kann die Maschine 40 auch andere Vorzüge wie untenstehend sowie in den vorstehend zitierten Patentanmeldungen beschrieben, aufbieten.
  • Zusätzlich zu dem Wirtsprozessor 42 und dem Pipeline-Beschleuniger 44 beinhaltet die Peer-Vektor-Rechenmaschine 40 einen Prozessorspeicher, einen Interfacespeicher 48, einen Bus 50, einen Firmware-Speicher 52, optionale Rohdaten-Eingangsanschlüsse 54 sowie 92 (Anschluss 92 in 4 gezeigt), optionale Ausgangsanschlüsse 58 und 94 (Anschluss 94 in 4 gezeigt) zum Ausgeben verarbeiteter Daten, sowie einen optionalen Router 61.
  • Der Wirtsprozessor 42 beinhaltet eine Verarbeitungseinheit 62 sowie einen Nachrichten-Handhaber 74, und der Prozessorspeicher 46 beinhaltet einen Speicher 66 der Verarbeitungseinheit sowie einen Speicher 68 des Handhabers, die entsprechend sowohl als Programm- als auch als Arbeitsspeicher für die Prozessoreinheit bzw. für den Nachrichten-Handhaber dienen. Der Prozessorspeicher 46 beinhaltet auch einen Beschleuniger-Konfigurationsregistersatz 70 sowie einen Nachrichten-Konfigurationsregistersatz 72, welche entsprechende Konfigurationsdaten speichern, welche es dem Wirtsprozessor 42 erlauben, die Funktionen des Beschleunigers 44 und die Struktur der Nachrichten, die der Nachrichten-Handhaber 64 erzeugt, zu konfigurieren.
  • Der Pipeline-Beschleuniger 44 ist auf mindestens einem PLIC (nicht dargestellt) aufgestellt und beinhaltet festverdrahtete Pipelines 741 74n , welche entsprechende Daten verarbeiten, ohne Programminstruktionen auszuführen. Der Firmware-Speicher 52 speichert die Konfigurations-Firmware für den Beschleuniger 44. Wenn der Beschleuniger 44 auf mehreren PLICs aufgestellt ist, können diese PLICs und ihre entsprechenden Firmware-Speicher auf mehreren gedruckten Schaltungen aufgestellt sein, d. h., auf Tochterkarten (nicht dargestellt). Der Beschleuniger 44 und die Tochterkarten werden weiter in den vorstehend zitierten U.S.-Publikationen Nr. 2004/0136241 betitelt "Pipeline accelerator for improved computing architecture and related system and method", sowie Nr. 2004/0130927 betitelt "Pipeline accelerator having multiple Pipeline units and related computing machine and method" erörtert. Alternativ kann der Beschleuniger 44 auf mindestens einem ASIC aufgestellt sein und daher interne Verbindungen aufweisen, die nicht konfigurierbar sind. In dieser Alternative kann die Maschine 40 den Firmware-Speicher 52 fortlassen. Darüberhinaus kann diese lediglich eine einzige Pipeline beinhalten, obgleich der Beschleuniger 44 als mehrere Pipelines 74 enthaltend gezeigt ist.
  • Immer noch auf 3 Bezug nehmend, wird der Betrieb der Peer-Vektor-Maschine 40 untenstehend gemäß einer Ausführungsform der Erfindung erörtert.
  • Die Peer-Vektor-Maschine konfigurieren
  • Wenn die Peer-Vektor-Maschine 40 am Anfang aktiviert wird, konfiguriert die Verarbeitungseinheit 62 den Nachrichten-Handhaber 64 sowie den Pipeline-Beschleuniger 44 (wenn der Beschleuniger konfigurierbar ist), so dass die Maschine den gewünschten Algorithmus ausführen wird. Insbesondere führt die Verarbeitungseinheit 62 ein Wirtsapplikationsprogramm aus, das in dem Speicher 66 gespeichert ist und welches bewirkt, dass die Verarbeitungseinheit den Nachrichten-Handhaber 64 sowie den Beschleuniger 44 wie unten stehend erörtert konfiguriert.
  • Um den Nachrichten-Handhaber 64 zu konfigurieren, ruft die Verarbeitungseinheit 62 Nachrichtenformat-Informationen aus dem Registersatz 72 ab und liefert diese Formatinformationen an den Nachrichten-Handhaber, welcher diese Informationen in dem Speicher 68 abspeichert. Wenn die Maschine 40 die Daten wie untenstehend erörtert verarbeitet, verwendet der Nachrichten-Handhaber 64 diese Formatinformation, um Datennachrichten zu erzeugen und zu entschlüsseln, die ein gewünschtes Format aufweisen. In einer Ausführungsform sind die Formatinformationen in der erweiterbaren Auszeichnungssprache (XML) aufgeschrieben, obgleich diese auch in einer anderen Sprache oder in einem anderen Datenformat niedergeschrieben werden können. Da die Verarbeitungseinheit 62 den Nachrichten-Handhaber 64 jedes Mal konfiguriert, wenn die Peer-Vektor-Maschine 40 aktiviert wird, kann man das Nachrichtenformat durch bloßes Modifizieren der in dem Registersatz 72 gespeicherten Formatinformationen verändern. Alternativ kann eine externe Nachrichtenkonfigurationsbibliothek (nicht dargestellt) Informationen für mehrere Nachrichtenformate speichern, und man kann die Wirtsanwendung entwerfen und/oder modifizieren, so dass die Verarbeitungseinheit 62 den Registersatz 72 von ausgewählten Teilen der Bibliothek aktualisiert und dann die gewünschten Formatinformationen von dem aktualisierten Registersatz in den Nachrichten-Handhaber 64 herunterlädt. Das Nachrichtenformat und das Erzeugen und Entschlüsseln der Nachrichten werden untenstehend sowie in der vorstehend zitierten U.S.-Publikation Nr. 2004/0181621 , betitelt "Computing machine having improved computing architecture and related system and method", erörtert.
  • In ähnlicher Weise ruft die Verarbeitungseinheit 62 zum Konfigurieren des Verbindungslayout des Pipeline-Beschleunigers 44 die Konfigurations-Firmware aus dem Registersatz 70 ab und lädt die Firmware über den Nachrichten-Handhaber 64 und den Bus 50 in den Speicher 52 herunter. Der Beschleuniger 44 konfiguriert sich dann selbst durch Herunterladen der Firmware aus dem Speicher 52 in seine Verbindungskonfigurationsregister (nicht dargestellt). Da die Verarbeitungseinheit 62 den Beschleuniger 44 jedes Mal konfiguriert, wenn die Peer-Vektor-Maschine 40 aktiviert wird, kann man das Verbindungslayout und daher die Funktion des Beschleunigers 44 durch bloßes Modifizieren der in dem Registersatz 70 gespeicherten Firmware verändern. Alternativ kann eine externe Beschleunigerkonfigurationsbibliothek (nicht dargestellt) Firmware für mehrere Konfigurationen des Beschleunigers 44 speichern, und man kann die Wirtsapplikation entwerfen und/oder modifizieren, so dass die Verarbeitungseinheit 62 den Registersatz 70 aus den ausgewählten Teilen der Bibliothek heraus aktualisiert und dann die gewünschte Firmware aus dem aktualisierten Registersatz in den Speicher 52 herunterlädt. Darüber hinaus kann die externe Bibliothek oder der Registersatz 70 Firmware-Module speichern, die unterschiedliche Teile und/oder Funktionen des Beschleunigers 44 festlegen. Daher kann man diese Module verwenden, um den Entwurf und/oder die Modifikation des Beschleunigers 44 zu erleichtern. Darüber hinaus kann die Verarbeitungseinheit 62 diese Module verwenden, um den Beschleuniger 44 zu modifizieren, während die Maschine 40 Daten verarbeitet. Die Verbindungskonfiguration des Beschleunigers 44 und die Firmware-Module werden weiter in der vorstehend zitierten U.S.-Publikation Nr. 2004/017007 , betitelt "Programmable circuit and related computing machine and method", erörtert.
  • Die Verarbeitungseinheit 62 kann den Pipeline-Beschleuniger 44 auch "weich konfigurieren", während die Peer-Vektor-Maschine 40 Daten verarbeitet. D. h., die Verarbeitungseinheit 62 kann die Funktion des Beschleunigers 44 konfigurieren, ohne das Verbindungslayout des Beschleunigers zu verändern. Eine derartige weiche Konfiguration wird im Folgenden sowie in der U.S.-Publikation Nr. 2004/0136241 , betitelt "Pipeline accelerator for improved computing architecture and related system and method", weiter erläutert.
  • Verarbeiten von Daten mit der Peer-Vektor-Maschine
  • Im Allgemeinen teilt die Peer-Vektor-Maschine 40 das Verarbeiten der Rohdaten wirksam zwischen dem Wirtsprozessor 42 und dem Pipeline-Beschleuniger 44 auf. Beispielsweise kann der Wirtsprozessor 42 die meisten oder sogar alle der auf die Daten Bezug nehmenden Entscheidungsoperationen ausführen, und der Beschleuniger 44 kann die meisten oder alle der rechenintensiven Operationen auf den Daten vornehmen. Die Maschine 40 kann die Datenverarbeitung jedoch auf jegliche gewünschte Art und Weise aufteilen.
  • Betrieb des Wirtsprozessors
  • In einer Ausführungsform empfängt der Wirtsprozessor 42 die Rohdaten von einer entfernt angeordneten Vorrichtung, wie etwa einer Sonar-Anordnung, und liefert die resultierenden verarbeiteten Daten an dieses (4).
  • Der Wirtsprozessor 42 empfängt zuerst die Rohdaten von der entfernt angeordneten Vorrichtung über den Eingangsanschluss 54 oder den Bus 50. Die Peer-Vektor-Maschine 40 kann ein FIFO (nicht dargestellt) zum Puffern der empfangenen Rohdaten beinhalten.
  • Dann bereitet die Verarbeitungseinheit 62 die Rohdaten für die Verarbeitung durch den Pipeline-Beschleuniger 44 vor. Beispielsweise kann die Einheit 62 z. B. feststellen, welche der Rohdaten zu dem Beschleuniger 44 zu übermitteln sind oder in welcher Reihenfolge die Rohdaten zu übermitteln sind. Oder die Einheit 62 kann die Rohdaten verarbeiten, um Zwischendaten zum Übertragen an den Beschleuniger 44 zu erzeugen. Die Vorbereitung der Rohdaten wird weiter erörtert in der vorstehend zitierten U.S.-Publikation Nr. 2004/0181621 , betitelt "Computing machine having improved computing architecture and related system and method".
  • Beim Vorbereiten der Rohdaten kann die Verarbeitungseinheit 54 auch ein oder mehrere "Soft-Konfigurations"-Kommando(s) erzeugen, um die Funktion des Beschleunigers 44 zu modifizieren. Im Gegensatz zu der Firmware, welche das Verbindungslayout des Beschleunigers 44 konfiguriert, wenn die Maschine 40 aktiviert wird, steuert ein Soft-Konfigurations-Kommando die Funktion des Beschleunigers, ohne sein Verbindungslayout zu verändern. Beispielsweise kann ein Soft-Konfigurations-Kommando die Größe der Datenreihungen (z. B. 32 bit oder 64 bit) steuern, welche der Beschleuniger 44 verarbeitet. Die Soft-Konfiguration des Beschleunigers 44 wird weiter in der vorstehend zitierten U.S.-Publikation Nr. 2004/0136241 , betitelt "Pipeline accelerator for improved computing architecture and related system and method", erörtert.
  • Die Verarbeitungseinheit 62 lädt dann die vorbereiteten Daten und/oder Soft-Konfigurations-Kommandos) in eine entsprechende Stelle des Interfacespeichers 48, welcher als ein FIFO-Puffer zwischen der Einheit 62 und dem Beschleuniger 44 agiert.
  • Dann ruft der Nachrichten-Handhaber 64 die vorbereiteten Daten und/oder Software-Kommandos) aus dem Interfacespeicher 48 ab und erzeugt Nachrichten-Objekte, die die Daten und/oder Kommando(s) sowie dazu gehörige Informationen beinhalten. Typischerweise benötigt der Beschleuniger 44 vier Identifizierer, die die Daten/Kommando(s) sowie die dazu gehörigen Informationen (insgesamt "Informationen") beschreiben: a) Der beabsichtigte Zielort (z. B. die Pipeline 741 ) der Informationen, b) die Priorität (z. B. soll der Beschleuniger die Daten vor oder nach zuvor empfangenen Daten verarbeiten), c) die Länge oder das Ende des Nachrichten-Objektes und d) die eindeutige Instanz der Daten (z. B. Sensorsignal Nr. 9 aus einer Anordnung von 1000 Sensoren). Um diese Festlegung zu erleichtern, erzeugt der Nachrichten-Handhaber 64 Nachrichten-Objekte, welche wie vorstehend erörtert ein vorbestimmtes Format aufweisen. Zusätzlich zu den vorbereiteten Daten/Soft-Konfigurations-Kommando(s), beinhaltet ein Nachrichten-Objekt typischerweise einen Nachrichten-Kopf, welcher die vier vorstehend beschriebenen Identifizierer beinhaltet und der auch Identifizierer beinhalten kann, die den Typ der Informationen beschreiben, welche das Objekt beinhaltet (z. B. Daten, Kommando), sowie den Algorithmus, durch welchen die Daten zu verarbeiten sind. Dieser letztere Identifizierer ist nützlich, wenn die Zielpipeline 74 mehrere Algorithmen implementiert. Der Handhaber 64 kann die Informationen des Nachrichten-Kopfes aus dem Interfacespeicher 48 abrufen oder er kann den Nachrichten-Kopf basierend auf dem Ort innerhalb des Interfacespeichers, von welchem es die vorbereiteten Daten oder Kommando(s) abruft, erzeugen. Durch Entschlüsseln des Nachrichten-Kopfes kann der Router 61 und/oder der Beschleuniger 44 die Informationen innerhalb des Nachrichten-Objektes an den gewünschten Zielort schicken und bewirken, dass der Zielort die Informationen in einer gewünschten Reihenfolge verarbeitet.
  • Es existieren alternative Ausführungsformen zum Erzeugen der Nachrichten-Objekte. Beispielsweise kann ein einzelnes Nachrichten-Objekt sowohl Daten als auch ein Kommando oder mehrere Kommandos beinhalten, obgleich jedes Nachrichten-Objekt als entweder Daten oder ein Soft-Konfigurations-Kommando beinhaltend beschrieben ist. Darüber hinaus kann der Nachrichten-Handhaber 64 die Daten und Kommandos direkt aus der Verarbeitungseinheit 54 abrufen, obgleich er als die Daten und Kommandos aus dem Interfacespeicher 48 abrufend beschrieben ist.
  • Die Erzeugung von Nachrichten-Objekten wird weiter in der vorstehend zitierten U.S.-Publikation Nr. 2004/0181621 , betitelt "Computing machine having improved computing architecture and related system and method", erörtert.
  • Der Pipeline-Beschleuniger
  • Der Pipeline-Beschleuniger 44 empfängt und entschlüsselt die Nachrichten-Objekte von dem Nachrichten-Handhaber 64 und richtet diese Daten und/oder Kommandos in den Objekten wirksam an den gewünschten Zielort/an die gewünschten Zielorte. Diese Technik ist insbesondere nützlich, wenn die Zahl der durch die Verarbeitungseinheit 62 und der Pipelines 74 implementierten Algorithmen relativ klein ist und daher der Router 61 fortgelassen werden kann. Alternativ empfängt und entschlüsselt der Router 61 die Nachrichten-Objekte von dem Nachrichten-Handhaber 64, wenn die Anzahl der durch die Verarbeitungseinheit 62 implementierten Algorithmen oder die Anzahl der Pipeline 74 relativ groß ist, und schickt die Daten und/oder Kommandos in dem Objekt wirksam an den gewünschten Zielort/an die gewünschten Zielorte innerhalb des Beschleunigers 44.
  • In einer Ausführungsform, in der es eine kleinere Anzahl von Verarbeitungseinheits-Algorithmen und Pipelines 74 gibt, empfängt jede Pipeline gleichzeitig ein Nachrichten-Objekt und analysiert den Nachrichten-Kopf, um festzustellen, ob sie ein beabsichtigter Empfänger der Nachricht ist. Wenn das Nachrichten-Objekt für eine bestimmte Pipeline 74 gedacht ist, dann entschlüsselt diese Pipeline die Nachricht und verarbeitet die abgerufenen Daten/Kommando(s). Wenn das Nachrichten-Objekt jedoch nicht für eine bestimmte Pipeline 74 gedacht ist, dann ignoriert diese Pipeline das Nachrichten-Objekt. Nehmen wir beispielsweise an, ein Nachrichten-Objekt beinhaltet Daten zum Verarbeiten durch die Pipeline 741 . Daher analysiert die Pipeline 741 den Nachrichten-Kopf, stellt fest, dass sie ein beabsichtigter Zielort für die Daten ist, ruft die Daten aus der Nachricht ab und verarbeitet die abgerufenen Daten. Umgekehrt analysiert jede der Pipelines 742 74n den Nachrichten-Kopf, stellt fest, dass sie nicht ein beabsichtigter Zielort für die Daten ist, und ruft daher die Daten nicht ab und verarbeitet sie nicht. Wenn die Daten innerhalb des Nachrichten-Objektes für mehrere Pipelines 74 beabsichtigt sind, dann erzeugt und sendet der Nachrichten-Handhaber 64 eine Sequenz entsprechender Nachrichten-Objekte, welche dieselben Daten beinhalten; eine Nachricht für jede Zielort-Pipeline. Alternativ kann der Nachrichten-Handhaber 64 die Daten durch Aussenden eines einzigen Nachrichten-Objektes, welches einen Nachrichten-Kopf hat, der alle Zielort-Pipelines identifiziert, gleichzeitig an alle der Zielort-Pipelines 74 senden. Das Abrufen von Daten und Soft-Konfigurations-Kommandos von Nachrichten-Objekten wird weiter in der vorstehend zitierten U.S.-Publikation Nr. 2004/0136241 , betitelt "Pipeline accelerator for improved computing architecture and related system and method", erörtert.
  • In einer anderen Ausführungsform, in der es eine große Anzahl von Verarbeitungseinheit-Prozessen oder Pipelines 74 gibt, empfängt jede Pipeline Nachrichten-Objekte von dem Router 61. Obgleich der Router 61 idealerweise Nachrichten-Objekte lediglich an die Zielpipeline 74 senden sollte, analysiert die Zielpipeline immer noch den Nachrichten-Kopf, um festzustellen, ob sie eine beabsichtigte Empfängerin der Nachricht ist. Eine derartige Analyse identifiziert mögliche Nachrichten-Routing-Fehler, d. h., Ausnahmen [exceptions]. Wenn das Nachrichten-Objekt für die Zielpipeline 74 beabsichtigt ist, dann entschlüsselt diese Pipeline die Nachricht und verarbeitet die abgerufenen Daten/Kommando(s). Wenn jedoch das Nachrichten-Objekt nicht für die Zielpipeline 74 bestimmt ist, dann ignoriert diese Pipeline das Verarbeiten jenes Nachrichten-Objektes und kann auch eine neue Nachricht an den Wirtsprozessor 42 aussenden, die angibt, dass eine Routing-Ausnahme aufgetreten ist. Die Handhabung von Routing-Ausnahmen wird in der vorstehend zitierten U.S.-Publikation Nr. 2004/0181621 , betitelt "Computing machine having improved computing architecture and related system and method", erörtert.
  • Danach verarbeitet der Pipeline-Beschleuniger 44 die aus den Nachrichten-Objekten abgerufenen hereinkommenden Daten und/Kommandos.
  • Für die Daten führt die Zielpipeline oder führen die Zielpipelines 74 eine entsprechende Operation oder Operationen auf den Daten aus. Wie im Zusammenhang mit 2 erörtert, können sie oftmals die Daten mit einer Rate verarbeiten, die im Wesentlichen gleich der Frequenz des Pipelinetaktes ist, weil die Pipelines 74 keine Programm-Instruktionen ausführen.
  • In einer ersten Ausführungsform erzeugt eine einzelne Pipeline 74 Ergebnisdaten durch Verarbeiten der hereinkommenden Daten.
  • In einer zweiten Ausführungsform erzeugen mehrere Pipelines 74 Ergebnisdaten durch serielles Verarbeiten der hereinkommenden Daten. Beispielsweise kann die Pipeline 74 erste Zwischendaten durch Ausführen einer ersten Operation auf den hereinkommenden Daten erzeugen. Danach kann die Pipeline 742 zweite Zwischendaten durch Ausführen einer zweiten Operation auf den ersten Zwischendaten erzeugen, usw., bis die Endpipeline 74 in der Kette die Ergebnisdaten erzeugt.
  • In einer dritten Ausführungsform erzeugen mehrere Pipelines 74 die Ergebnisdaten durch parallele Verarbeitung der hereinkommenden Daten. Beispielsweise kann die Pipeline 741 eine erste Menge von Ergebnisdaten durch Ausführen einer ersten Operation auf einer ersten Menge hereinkommender Daten erzeugen. Zur gleichen Zeit kann die Pipeline 742 eine zweite Menge von Ergeb nisdaten durch Ausführen einer zweiten Operation auf einer zweiten Menge der hereinkommenden Daten erzeugen, usw. usf.
  • Alternativ können die Pipelines 74 Ergebnisdaten aus den hereinkommenden Daten gemäß irgendeiner Kombination der vorstehenden drei Ausführungsformen erzeugen. Beispielsweise kann die Pipeline 741 eine erste Menge von Ergebnisdaten durch Ausführen einer ersten Operation auf einer ersten Menge hereinkommender Daten erzeugen. Zur gleichen Zeit können die Pipelines 742 und 74n eine zweite Menge von Ergebnisdaten durch serielles Ausführen zweiter und dritter Operationen auf einer zweiten Menge der hereinkommenden Daten erzeugen.
  • In irgendeiner beliebigen der vorstehenden Ausführungsformen und Alternativen kann eine einzelne Pipeline 74 mehrere Operationen ausführen. Beispielsweise kann die Pipeline 741 Daten entgegennehmen, erste Zwischendaten durch Ausführen einer ersten Operation auf den entgegengenommenen Daten erzeugen, die ersten Zwischendaten vorübergehend abspeichern, zweite Zwischendaten durch Ausführen einer zweiten Operation auf den ersten Zwischendaten erzeugen, usw., bis sie die Ergebnisdaten erzeugt. Es gibt eine Anzahl von Techniken zum Bewirken, dass die Pipeline 741 von der Ausführung der ersten Operation auf das Ausführen der zweiten Operation usw. umschaltet. Derartige Techniken werden in der vorstehend zitierten U.S. Patentanmeldung mit der Anmeldenummer 10/683929, betitelt "Pipeline accelerator for improved computing architecture and related system and method" (Anwalts-Fristenüberwachungsnummer 1934-13-3), erörtert.
  • Der Beschleuniger 44 stellt für ein Soft-Konfigurations-Kommando die Bits in dem entsprechenden Soft-Konfigurationsregister/in den entsprechenden Soft-Konfigurationsregistern (nicht dargestellt) ein, wie es in dem Nachrichten-Kopf angegeben ist. Wie vorstehend erörtert, ändert das Einstellen dieser Bits typischerweise die Funktion des Beschleunigers 44, ohne dessen Verbindungslayout zu ändern. Dies ist ähnlich dem Einstellen von Bits in einem Steuerungsregister eines Prozessors, beispielsweise zum Einstellen eines externen Anschlussstiftes als einen Eingangsstift oder als einen Ausgangsstift oder zum Auswählen eines Adressierungsmodus. Darüber hinaus kann ein Soft-Konfigu rations-Kommando ein Register oder eine Tabelle (eine Anordnung von Registern) zum Halten von Daten partitionieren. Ein anderes Soft-Konfigurations-Kommando oder eine durch den Beschleuniger 44 ausgeführte Operation kann Daten in das soft-konfigurierte Register oder in die soft-konfigurierte Tabelle hereinladen. Die Soft-Konfiguration des Beschleunigers 44 wird weiterhin in der vorstehend zitierten U.S.-Publikation Nr. 2004/0136241 , betitelt "Pipeline accelerator for improved computing architecture and related system and method" (Anwalts-Fristenüberwachungsnummer 1934-13-3), erörtert.
  • Danach liefert der Pipelinebeschleuniger 44 die Ergebnisdaten über den Router 61 (oder direkt, falls der Router fortgelassen ist) an den Wirtsprozessor 42 zur weiteren Verarbeitung.
  • Alternativ liefert der Beschleuniger 44 die Ergebnisdaten an den entfernt angeordneten Zielort (5) entweder direkt über den Ausgangsanschluss 94 (4) oder indirekt über den Router 61 (falls vorhanden), den Bus 50, den Wirtsprozessor 42 und den Ausgangsanschluss 58. Demzufolge sind die durch den Beschleuniger 44 generierten Ergebnisdaten in dieser alternativen Ausführungsform die verarbeiteten Enddaten.
  • Wenn der Beschleuniger 44 die resultierenden Daten an den Wirtsprozessor 42 liefert – entweder zur weiteren Verarbeitung oder zum Durchreichen an die entfernt angeordnete Vorrichtung (4) – sendet er diese Daten in einem Nachrichten-Objekt, welches dasselbe Format wie die durch den Nachrichten-Handhaber 64 erzeugten Nachrichten-Objekte aufweist. Ähnlich den durch den Nachrichten-Handhaber 64 erzeugten Nachrichten beinhalten die durch den Beschleuniger 44 erzeugten Nachrichten-Objekte Nachrichtenköpfe, die z. B. den Zielort und die Priorität der resultierenden Daten spezifizieren. Beispielsweise kann der Nachrichten-Kopf den Nachrichten-Handhaber 64 anweisen, die resultierenden Daten über den Anschluss 58 an die entfernt angeordnete Vorrichtung weiterzureichen oder er kann angeben, welcher Teil des durch die Verarbeitungseinheit 62 ausgeführten Programmes das Verarbeiten der Daten steuern soll. Unter Verwendung desselben Nachrichtenformates weist der Beschleuniger 44 dieselbe Interfaceebene wie der Wirtsprozessor 42 auf. Dies er leichtert den Entwurf und das Modifizieren der Peer-Vektor-Maschine 40, insbesondere, wenn die Interfaceebene ein Industriestandard ist.
  • Die Struktur und der Betrieb des Pipeline-Beschleunigers 44 und der Pipelines 66 werden weiterhin in der vorstehend zitierten U.S.-Publikation Nr. 2004/0136241 , betitelt "Pipeline accelerator for improved computing architecture and related system and method" (Anwalts-Fristenlistennummer 1934-13-3), erörtert.
  • Empfangen und Verarbeiten von dem Pipeline-Beschleuniger mit dem Wirtsprozessor
  • Wenn er ein Nachrichten-Objekt von dem Beschleuniger 44 entgegennimmt, entschlüsselt der Nachrichten-Handhaber 64 zuerst den Nachrichten-Kopf und schickt die abgerufenen Daten an den angegebenen Zielort.
  • Wenn der Nachrichten-Kopf anzeigt, dass die Daten über den Anschluss 58 an die entfernt angeordnete Vorrichtung (4) weiterzureichen sind, dann kann der Nachrichten-Handhaber 64 die Daten direkt an den Anschluss 58 oder an einen Anschluss-FIFO-Puffer (nicht dargestellt) liefern, der in dem Interfacespeicher 48 oder in einem anderen Speicher gebildet ist, und dann von dem Puffer an den Anschluss 58. Mehrfache Anschlüsse 58 und mehrfache entsprechende entfernt angeordnete Vorrichtungen werden ebenfalls in Betracht gezogen.
  • Wenn der Nachrichten-Kopf jedoch anzeigt, dass die Verarbeitungseinheit 62 die Daten weiterverarbeiten soll, dann speichert der Nachrichten-Handhaber 64 die Daten in einer Stelle des Interfacespeichers 48, welche dem Teil des Programmes der Verarbeitungseinheit entspricht, das die Verarbeitung der Daten steuern soll. Genauer gesagt, derselbe Nachrichten-Kopf gibt nun indirekt an, welcher Teil/welche Teile des durch die Verarbeitungseinheit 54 ausgeführten Programmes die Verarbeitung der Daten steuern soll/sollen. Demzufolge speichert der Nachrichten-Handhaber 64 die Daten an der Stelle (wie etwa ein FIFO) des Interfacespeichers 48 entsprechend diesem Programmteil.
  • Wie vorstehend erörtert, agiert der Interfacespeicher 48 als ein Puffer zwischen dem Beschleuniger 44 und der Verarbeitungseinheit 62 und erlaubt somit die Übertragung von Daten, wenn die Verarbeitungseinheit nicht mit dem Beschleuniger synchronisiert ist. Dieser Mangel an Synchronisation kann beispielsweise auftreten, wenn der Beschleuniger 44 Daten schneller als die Verarbeitungseinheit 62 verarbeitet. Durch Verwenden des Interfacespeichers 48 wird der Beschleuniger 44 nicht durch die langsamere Antwort der Verarbeitungseinheit 62 ausgebremst. Dies vermeidet auch die mit der unbestimmten Antwortzeit der Verarbeitungseinheit beim Verarbeiten von Unterbrechungen verknüpften Ineffizienznachteile. Die nicht ermittelbare Handhabung von Ausgangsnachrichten des Beschleunigers 44 durch die Verarbeitungseinheit 62 würde unnötigerweise den Entwurf des Beschleunigers durch Erzwingen verkomplizieren, dass der Entwerfer entweder a) Speicher und Handhabung für sicherheitsgespeicherte Ausgangsnachrichten vorsieht oder b) Untätigkeitssteuerungen über die Pipeline hinweg vorsieht, um zu verhindern, dass die sicherheitsgespeicherten Nachrichten überschrieben werden. Daher weist die Verwendung des Interfacespeichers 48, welcher als ein Puffer zwischen dem Beschleuniger 44 und der Verarbeitungseinheit 62 agiert, verschiedene wünschenswerte Konsequenzen auf: a) Beschleuniger sind leichter zu entwerfen, b) Beschleuniger benötigen weniger Infrastruktur und können größere PLIC-Applikationen halten, c) Beschleuniger können stromlinienförmiger gestaltet werden, um schneller zu laufen, da die Ausgangsdaten nicht durch einen langsameren Prozessor "blockiert" werden.
  • Danach ruft die Verarbeitungseinheit 62 Daten, welche der Nachrichten-Handhaber 64 in dem Interfacespeicher 48 gespeichert hat, aus dem Interfacespeicher ab. Die Verarbeitungseinheit 62 kann den Interfacespeicher 48 abfragen, um festzustellen, wenn neue Daten an einer bestimmten Stelle angekommen sind, oder der Nachrichten-Handhaber 64 kann eine Unterbrechung oder ein anderes Signal erzeugen, welches die Verarbeitungseinheit von der Ankunft der Daten benachrichtigt. In einer Ausführungsform erzeugt der Nachrichten-Handhaber 64 ein Nachrichten-Objekt, welches die Daten enthält, bevor die Verarbeitungseinheit 62 Daten abruft. Genauer gesagt, man kann das durch die Verarbeitungseinheit 62 ausgeführte Programm entwerfen, um Daten in Nach richten-Objekten entgegenzunehmen. Der Nachrichten-Handhaber 64 könnte daher ein Nachrichten-Objekt in dem Interfacespeicher 48 speichern, anstelle lediglich die Daten zu speichern. Aber ein Nachrichten-Objekt beansprucht typischerweise mehr Speicherplatz, als es die Daten tun, welche es enthält. Demzufolge entschlüsselt der Nachrichten-Handhaber 64 ein Nachrichten-Objekt von dem Pipeline-Beschleuniger 44, um Speicher zu sparen, speichert die Daten in dem Speicher 48 und regeneriert dann das Nachrichten-Objekt gewissermaßen, wenn die Verarbeitungseinheit 62 bereit ist, die Daten entgegenzunehmen. Dann entschlüsselt die Verarbeitungseinheit 62 das Nachrichten-Objekt und verarbeitet die Daten unter der Steuerung des in dem Nachrichten-Kopf identifizierten Programmteils.
  • Danach verarbeitet die Prozessoreinheit 62 die entgegengenommenen Daten unter der Steuerung des Zielteils des Programms, erzeugt verarbeitete Daten und speichert die verarbeiteten Daten an einer Stelle des Interfacespeichers 48, die dem beabsichtigten Zielort der verarbeiteten Daten entspricht.
  • Danach nimmt der Nachrichten-Handhaber 64 die verarbeiteten Daten entgegen und liefert diese an den angegebenen Zielort. Um die verarbeiteten Daten abzurufen, kann der Nachrichten-Handhaber 64 den Speicher 48 abfragen, um festzustellen, ob Daten angekommen sind, oder die Verarbeitungseinheit 62 kann den Nachrichten-Handhaber von dem Eintreffen der Daten mit einer Unterbrechung oder einem anderen Signal unterrichten. Um die verarbeiteten Daten an deren beabsichtigten Zielort zu liefern, kann der Nachrichten-Handhaber 64 ein Nachrichten-Objekt erzeugen, welches die Daten enthält, und kann das Nachrichten-Objekt zurück an den Beschleuniger 44 für eine weitere Verarbeitung der Daten senden. Oder, der Handhaber 56 kann die Daten an den Anschluss 58 senden, oder an eine andere Stelle des Speichers 48 durch eine weitere Verarbeitung durch die Verarbeitungseinheit 62.
  • Das Entgegennehmen und Verarbeiten von Daten von dem Pipeline-Beschleuniger 44 durch den Wirtsprozessor wird weiterhin in der vorstehend zitierten U.S.-Publikation Nr. 2004/0181621 , betitelt "Computing machine having improved computing architecture and related system and method" (Anwalts-Fristenüberwachungssystemnummer 1934-12-3), erörtert.
  • Alternative Datenverarbeitungstechniken unter Verwendung der Peer-Vektor-Maschine
  • Immer noch auf 3 Bezug nehmend, bestehen Alternativen zu den vorstehend beschriebenen Ausführungsformen, in welchen der Wirtsprozessor 44 Daten entgegennimmt und verarbeitet und dann die Daten an den Pipeline-Beschleuniger 44 zum weiteren Verarbeiten sendet.
  • In einer Alternative führt der Wirtsprozessor 44 das gesamte Verarbeiten von mindestens einigen Daten durch und sendet daher diese Daten nicht an den Pipeline-Beschleuniger 44 zur weiteren Verarbeitung.
  • In einer anderen Alternative empfängt der Pipeline-Beschleuniger 44 die Rohdaten über den Anschluss 92 (4) direkt von der entfernt angeordneten Vorrichtung (4) und verarbeitet die Rohdaten. Der Beschleuniger 44 kann dann die verarbeiteten Daten direkt über den Anschluss 94 an die entfernt angeordnete Vorrichtung zurücksenden, oder kann die verarbeiteten Daten an den Wirtsprozessor 42 zur weiteren Verarbeitung senden. Im letztgenannten Fall kann der Beschleuniger 44 die Daten in Nachrichten-Objekten, wie vorstehend erörtert, einkapseln.
  • In einer weiteren Alternative kann der Beschleuniger 44 zum Ergänzen der Zahlenfresser-Fähigkeiten der Pipelines zusätzlich zu den festverdrahteten Pipelines 74 einen instruktionsausführenden Prozessor oder mehrere instruktionsausführende Prozessoren, wie etwa einen digitalen Signalprozessor (DSP) beinhalten.
  • Beispielimplementation der Peer-Vektor-Maschine
  • Immer noch auf 3 Bezug nehmend, ist der Pipeline-Bus 50 in einer Ausführungsform ein Standard 133 MHz PCI-Bus, wobei die Pipelines 74 in einer Standard-PMC-Karte oder in mehreren Standard-PMC-Karten enthalten sind, und der Speicher 52 ist ein Flash-Speicher oder mehrere Flash-Speicher, der/die jeweils auf einer entsprechenden PMC-Karte angeordnet ist/sind.
  • Beispielanwendung der Peer-Vektor-Maschine
  • 4 ist ein Blockschaltbild eines Sonarsystems 80, das die Peer-Vektor-Maschine 40 aus 3 gemäß einer Ausführungsform der Erfindung verkörpert. Zusätzlich zu der Maschine 40 beinhaltet das System 80 eine Anordnung 82 von Sende-Empfänger-Elementen 841 84n zum Empfangen und Aussenden von Sonar-Signalen, Digital-Analog-Wandler (DACs) 861 86n , Analog-Digital-Wandler (ADCs) 881 88n sowie ein Dateninterface 90. Da das Generieren und Verarbeiten von Sonarsignalen häufig rechenintensive Funktionen sind, kann die Maschine 40 oftmals diese Funktionen schneller und effizienter als eine herkömmliche Rechenmaschine – so wie die Mehrprozessormaschine 10 (1) – bei einer gegebenen Taktfrequenz wie vorstehend im Zusammenhang mit 3 erörtert – ausführen.
  • Während eines Sendebetriebsmodus sendet die Anordnung 82 ein Sonarsignal in ein Medium wie etwa Wasser (nicht dargestellt). Zuerst konvertiert die Peer-Vektor-Maschine 40 Rohdatensignale, die auf dem Anschluss 92 empfangen worden sind, in n Digitalsignale, eines für jedes der Elemente der Anordnung 84. Die Größen und Phasen dieser Signale legen das Sendestrahl-Muster der Anordnung 82 fest. Dann liefert die Maschine 40 diese digitalen Signale an das Interface 90, welches diese Signale an die entsprechenden DACs 86 für die Umwandlung in entsprechende Analogsignale liefert. Beispielsweise kann das Interface 90 als ein Puffer agieren, der seriell die Digitalsignale von der Maschine 40 entgegennimmt, diese Signale speichert, bis es alle n von ihnen empfängt und puffert, und dann gleichzeitig diese sequenziellen Signalabtastungen an die entsprechenden DACs 86 liefert. Dann wandeln die Sende-Empfänger-Elemente 84 diese Analogsignale in entsprechende Schallwellen, welche miteinander interferieren, um die Leitstrahlen eines Sonarsignals zu bilden.
  • Während eines Empfangsbetriebsmodus empfängt die Anordnung 82 ein Signal von dem Medium (nicht dargestellt). Das empfangene Sonarsignal ist zusammengesetzt aus dem Teil des gesendeten Sonarsignals, das durch entfernt angeordnete Objekte reflektiert wird, und der Schallenergie, die durch die Umgebung und die entfernt angeordneten Objekte emittiert wird. Zuerst empfangen die Sendeempfängerelemente 84 entsprechende Schallwellen, die das Sonarsignal bilden, wandeln diese Schallwellen in n Analogsignale um und liefern diese Analogsignale an die ADCs 88 zur Umwandlung in n entsprechende Digitalsignale. Danach liefert das Interface 90 diese Digitalsignale zur Verarbeitung an die Peer-Vektor-Maschine 40. Beispielsweise kann das Interface 90 als ein Puffer agieren, welcher die Datensignale von den ADCs 88 parallel entgegennimmt und dann diese Signale seriell an die Maschine 40 liefert. Die Verarbeitung, welche die Maschine 40 auf den Signaldaten vornimmt, legt das Muster des empfangenen Strahles der Anordnung 82 fest. Weitere Verarbeitungsschritte, wie etwa Filterung, Bandverschiebung, spektrale Transformation (z. B. die Fourier-Transformation) und Faltung werden auf die Digitalsignale angewendet. Die Maschine 40 liefert dann die verarbeiteten Signaldaten über den Anschluss 94 an eine andere Apparatur, wie etwa eine Anzeigevorrichtung zum Betrachten georteter Objekte.
  • Obgleich im Zusammenhang mit dem Sonarsystem 80 diskutiert, können andere Systeme, die nicht Sonarsysteme sind, ebenso die Peer-Vektor-Maschine 40 verkörpern.
  • Die vorstehende Erörterung wird vorgelegt, um es einem Fachmann zu ermöglichen, die Erfindung nachzuarbeiten und zu verwenden. Verschiedene Modifikationen der Ausführungsformen werden Fachleuten leicht ersichtlich sein, und die echten Prinzipien darin können auf andere Ausführungsformen und Anwendungen übertragen werden. Daher ist es nicht beabsichtigt, dass die vorliegende Erfindung auf die gezeigten Ausführungsformen beschränkt ist, sondern sie ist auszulegen in dem breitesten Schutzbereich, der mit den Prinzipien und Merkmalen, die hierin offenbart sind, verträglich ist.

Claims (8)

  1. Peer-Vektor-Maschine (40), aufweisend: einen Wirtsprozessor (42), der zum Ausführen eines Programmes betreibbar ist und der, in Abhängigkeit von dem Programm, betreibbar ist, um erste Wirtsdaten zu generieren; einen Pipelinebeschleuniger (44) mit mindestens einer festverdrahteten Pipeline, wobei der Pipelinebeschleuniger mit dem Wirtsprozessor (42) gekoppelt und betreibbar ist, um die ersten Wirtsdaten entgegenzunehmen und erste Pipeline-Daten aus den ersten Wirtsdaten zu erzeugen, wobei mindestens ein Teilbereich des Pipelinebeschleunigers konfigurierbare interne Zusammenschaltungen aufweist, und einen Firmwarespeicher (52), der zum Speichern einer Konfigurations-Firmware zum Konfigurieren der internen Zusammenschaltungen betreibbar ist, dadurch gekennzeichnet, dass die Peer-Vektor-Maschine (40) ferner aufweist: eine mit dem Wirtsprozessor (42) gekoppelte und zum Speichern der Konfigurations-Firmware getrennt von dem Programm betreibbare Beschleunigerkonfigurations-Registratur (70), wobei der Wirtsprozessor (42) betreibbar ist, um die Konfigurations-Firmware aus der Registratur (70) entgegenzunehmen und den Pipelinebeschleuniger (44) zum Generieren der ersten Pipelinedaten durch Bereitstellen der Konfigurations-Firmware an den Pipelinebeschleuniger vor dem Ausführen des Programmes durch Laden der Konfigurations-Firmware in den Firmwarespeicher zu konfigurieren, einen einzelnen Bus (50) zum Ermöglichen von Kommunikation zwischen dem Wirtsprozessor und dem Pipelinebeschleuniger, und wobei der Wirtsprozessor und der Pipelinebeschleuniger über eine Nachricht kommunizieren, welche die ersten Wirtsdaten und einen Nach richtenkopf beinhaltet, welcher die beabsichtigte festverdrahtete Zielpipeline der Daten enthält.
  2. Peer-Vektor-Maschine (40) nach Anspruch 1, wobei der Wirtsprozessor (40) ferner betreibbar ist, um: zweite Daten entgegenzunehmen; und die ersten Wirtsdaten aus den zweiten Daten zu generieren.
  3. Peer-Vektor-Maschine (40) nach irgendeinem der vorstehenden Ansprüche, wobei der Wirtsprozessor (42) ferner betreibbar ist, um: erste Pipeline-Daten aus dem Pipelinebeschleuniger entgegenzunehmen; und die ersten Pipeline-Daten zu verarbeiten.
  4. Peer-Vektor-Maschine (40) nach irgendeinem der vorstehendem Ansprüche, ferner aufweisend: einen mit dem Wirtsprozessor (42) und dem Pipelinebeschleuniger (40) gekoppelten und einen ersten Speicherabschnitt aufweisenden Interface-Speicher (48); wobei der Wirtsprozessor (42) betreibbar ist, um die ersten Wirtsdaten in dem ersten Speicherabschnitt zu speichern, und die ersten Wirtsdaten aus dem ersten Speicherabschnitt dem Pipelinebeschleuniger (44) bereitzustellen.
  5. Peer-Vektor-Maschine (40) nach irgendeinem der vorstehenden Ansprüche, ferner aufweisend: einen mit dem Wirtsprozessor (42) und dem Pipelinebeschleuniger (44) gekoppelten und einen ersten Speicherabschnitt und einen zweiten Speicherabschnitt aufweisenden Interface-Speicher (48); wobei der Wirtsprozessor (42) betreibbar ist, um: die ersten Wirtsdaten in dem ersten Speicherabschnitt zu speichern, die in dem ersten Speicherabschnitt gespeicherten Wirtsdaten dem Pipelinebeschleuniger (44) bereitzustellen, die ersten Pipeline-Daten von dem Pipelinebeschleuniger (44) entgegenzunehmen, die ersten Pipeline-Daten in dem zweiten Speicherabschnitt zu speichern, die ersten Pipeline-Daten aus dem zweiten Speicherabschnitt für den Wirtsprozessor (42) abzurufen, und die ersten Pipeline-Daten zu verarbeiten.
  6. Verfahren, aufweisend: Erzeugen erster Wirtsdaten durch Ausführen eines Programmes auf einem Wirtsprozessor (42); Erzeugen erster Pipeline-Daten aus den ersten Wirtsdaten mit einem Pipelinebeschleuniger (44), der mindestens eine festverdrahtete Pipeline aufweist und mit dem Wirtsprozessor gekoppelt ist; gekennzeichnet durch Entgegennehmen von Pipelinebeschleuniger-Konfigurationsinformationen, die vom Programm getrennt sind, von einer Registratur (70), die mit dem Wirtsprozessor (42) gekoppelt ist, und Konfigurieren des Pipelinebeschleunigers (44) zum Erzeugen der ersten Pipeline-Daten durch Bereitstellen der Konfigurationsinformation für den Pipelinebeschleuniger durch den Wirtsprozessor (42) vor dem Ausführen des Programmes, wobei das Bereitstellen der Konfigurationsinformationen das Laden der Konfigurationsinformationen in einen Firmwarespeicher einschließt, welcher betreibbar ist, um die Konfigurationsinformationen zum Konfigurieren interner Zusammenschaltungen des Pipelinebeschleunigers zu speichern, und wobei das Erzeugen der ersten Pipeline-Daten das Senden einer Nachricht einschließlich der ersten Wirtsdaten und eines die beabsichtigte festverdrahtete Zielpipeline enthaltenden Nachrichtenkopfes über einen einzelnen Bus (50) an den Pipelinebeschleuniger beinhaltet.
  7. Verfahren nach Anspruch 6, wobei das Erzeugen der ersten Wirtsdaten das Erzeugen der ersten Wirtsdaten aus durch den Pipelinebeschleuniger (44) generierten zweiten Pipeline-Daten beinhaltet.
  8. Verfahren nach Anspruch 6 oder 7, ferner aufweisend das Generieren von zweiten Wirtsdaten aus den ersten Pipeline-Daten durch Ausführen des Programmes auf dem Wirtsprozessor (42).
DE60318105T 2002-10-31 2003-10-31 Pipeline-coprozessor Expired - Lifetime DE60318105T2 (de)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US684057 1991-04-11
US42250302P 2002-10-31 2002-10-31
US422503P 2002-10-31
US10/684,057 US7373432B2 (en) 2002-10-31 2003-10-09 Programmable circuit and related computing machine and method
US683932 2003-10-09
US684053 2003-10-09
US10/683,929 US20040136241A1 (en) 2002-10-31 2003-10-09 Pipeline accelerator for improved computing architecture and related system and method
US10/684,053 US7987341B2 (en) 2002-10-31 2003-10-09 Computing machine using software objects for transferring data that includes no destination information
US10/683,932 US7386704B2 (en) 2002-10-31 2003-10-09 Pipeline accelerator including pipeline circuits in communication via a bus, and related system and method
US10/684,102 US7418574B2 (en) 2002-10-31 2003-10-09 Configuring a portion of a pipeline accelerator to generate pipeline date without a program instruction
US684102 2003-10-09
US683929 2003-10-09
PCT/US2003/034557 WO2004042560A2 (en) 2002-10-31 2003-10-31 Pipeline coprocessor

Publications (2)

Publication Number Publication Date
DE60318105D1 DE60318105D1 (de) 2008-01-24
DE60318105T2 true DE60318105T2 (de) 2008-12-04

Family

ID=34280226

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60318105T Expired - Lifetime DE60318105T2 (de) 2002-10-31 2003-10-31 Pipeline-coprozessor

Country Status (8)

Country Link
EP (5) EP1573515A2 (de)
JP (9) JP2006518495A (de)
KR (5) KR101035646B1 (de)
AU (5) AU2003287317B2 (de)
CA (5) CA2503622C (de)
DE (1) DE60318105T2 (de)
ES (1) ES2300633T3 (de)
WO (4) WO2004042561A2 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8095508B2 (en) 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US7711844B2 (en) 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US7987341B2 (en) 2002-10-31 2011-07-26 Lockheed Martin Corporation Computing machine using software objects for transferring data that includes no destination information
CA2503622C (en) * 2002-10-31 2015-12-29 Lockheed Martin Corporation Computing machine having improved computing architecture and related system and method
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
AU2004273406A1 (en) 2003-05-23 2005-03-24 Data Search Systems, Inc. Intelligent data storage and processing using FPGA devices
US7619541B2 (en) 2004-10-01 2009-11-17 Lockheed Martin Corporation Remote sensor processing system and method
JP2008532177A (ja) 2005-03-03 2008-08-14 ワシントン ユニヴァーシティー 生物学的配列類似検索を実行するための方法および装置
JP4527571B2 (ja) * 2005-03-14 2010-08-18 富士通株式会社 再構成可能演算処理装置
WO2007011203A1 (en) * 2005-07-22 2007-01-25 Stichting Astron Scalable control interface for large-scale signal processing systems.
US7702629B2 (en) 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
JP2007164472A (ja) * 2005-12-14 2007-06-28 Sonac Kk 待ち合わせ機構を有する演算装置
US7954114B2 (en) * 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
US20110138158A1 (en) * 2008-07-30 2011-06-09 Masatomo Mitsuhashi Integrated circuit
WO2010077829A1 (en) 2008-12-15 2010-07-08 Exegy Incorporated Method and apparatus for high-speed processing of financial market depth data
US8478965B2 (en) 2009-10-30 2013-07-02 International Business Machines Corporation Cascaded accelerator functions
CA2820898C (en) 2010-12-09 2020-03-10 Exegy Incorporated Method and apparatus for managing orders in financial markets
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
FR2996657B1 (fr) * 2012-10-09 2016-01-22 Sagem Defense Securite Organe electrique generique configurable
CA2887022C (en) 2012-10-23 2021-05-04 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US10102260B2 (en) 2012-10-23 2018-10-16 Ip Reservoir, Llc Method and apparatus for accelerated data translation using record layout detection
WO2014182314A2 (en) * 2013-05-10 2014-11-13 Empire Technology Development, Llc Acceleration of memory access
GB2541577A (en) 2014-04-23 2017-02-22 Ip Reservoir Llc Method and apparatus for accelerated data translation
US9846426B2 (en) * 2014-07-28 2017-12-19 Computational Systems, Inc. Parallel digital signal processing of machine vibration data
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
JP2017135698A (ja) * 2015-12-29 2017-08-03 株式会社半導体エネルギー研究所 半導体装置、コンピュータ及び電子機器
JPWO2017149591A1 (ja) * 2016-02-29 2018-12-20 オリンパス株式会社 画像処理装置
EP3560135A4 (de) 2016-12-22 2020-08-05 IP Reservoir, LLC Rohrleitungen zum hardware-beschleunigten maschinellen lernen
JP6781089B2 (ja) 2017-03-28 2020-11-04 日立オートモティブシステムズ株式会社 電子制御装置、電子制御システム、電子制御装置の制御方法
GB2570729B (en) * 2018-02-06 2022-04-06 Xmos Ltd Processing system
IT202100020033A1 (it) * 2021-07-27 2023-01-27 Carmelo Ferrante Sistema di interfacciamento tra due dispositivi a controllo elettronico e unità a controllo elettronico comprendente tale sistema di interfacciamento

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4703475A (en) * 1985-12-04 1987-10-27 American Telephone And Telegraph Company At&T Bell Laboratories Data communication method and apparatus using multiple physical data links
US4811214A (en) * 1986-11-14 1989-03-07 Princeton University Multinode reconfigurable pipeline computer
US4914653A (en) * 1986-12-22 1990-04-03 American Telephone And Telegraph Company Inter-processor communication protocol
US4956771A (en) * 1988-05-24 1990-09-11 Prime Computer, Inc. Method for inter-processor data transfer
JP2522048B2 (ja) * 1989-05-15 1996-08-07 三菱電機株式会社 マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP2858602B2 (ja) * 1991-09-20 1999-02-17 三菱重工業株式会社 パイプライン演算回路
US5283883A (en) * 1991-10-17 1994-02-01 Sun Microsystems, Inc. Method and direct memory access controller for asynchronously reading/writing data from/to a memory with improved throughput
US5268962A (en) * 1992-07-21 1993-12-07 Digital Equipment Corporation Computer network with modified host-to-host encryption keys
US5440687A (en) * 1993-01-29 1995-08-08 International Business Machines Corporation Communication protocol for handling arbitrarily varying data strides in a distributed processing environment
JPH06282432A (ja) * 1993-03-26 1994-10-07 Olympus Optical Co Ltd 演算処理装置
US5583964A (en) * 1994-05-02 1996-12-10 Motorola, Inc. Computer utilizing neural network and method of using same
US5568614A (en) * 1994-07-29 1996-10-22 International Business Machines Corporation Data streaming between peer subsystems of a computer system
US5692183A (en) * 1995-03-31 1997-11-25 Sun Microsystems, Inc. Methods and apparatus for providing transparent persistence in a distributed object operating environment
JP2987308B2 (ja) * 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US5748912A (en) * 1995-06-13 1998-05-05 Advanced Micro Devices, Inc. User-removable central processing unit card for an electrical device
US5752071A (en) * 1995-07-17 1998-05-12 Intel Corporation Function coprocessor
JP3156562B2 (ja) * 1995-10-19 2001-04-16 株式会社デンソー 車両用通信装置及び走行車両監視システム
US5784636A (en) * 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
JPH1084339A (ja) * 1996-09-06 1998-03-31 Nippon Telegr & Teleph Corp <Ntt> ストリーム暗号による通信方法、ならびに通信システム
US5892962A (en) * 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
JPH10304184A (ja) * 1997-05-02 1998-11-13 Fuji Xerox Co Ltd 画像処理装置および画像処理方法
DE19724072C2 (de) * 1997-06-07 1999-04-01 Deutsche Telekom Ag Vorrichtung zur Durchführung eines Blockchiffrierverfahrens
JP3489608B2 (ja) * 1997-06-20 2004-01-26 富士ゼロックス株式会社 プログラマブル論理回路システムおよびプログラマブル論理回路装置の再構成方法
US6216191B1 (en) * 1997-10-15 2001-04-10 Lucent Technologies Inc. Field programmable gate array having a dedicated processor interface
JPH11120156A (ja) * 1997-10-17 1999-04-30 Nec Corp マルチプロセッサシステムにおけるデータ通信方式
US6076152A (en) * 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US6049222A (en) * 1997-12-30 2000-04-11 Xilinx, Inc Configuring an FPGA using embedded memory
KR100572945B1 (ko) * 1998-02-04 2006-04-24 텍사스 인스트루먼츠 인코포레이티드 효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는디지탈 신호 처리기
JPH11271404A (ja) * 1998-03-23 1999-10-08 Nippon Telegr & Teleph Corp <Ntt> プログラムによって再構成可能な回路における自己試験方法および自己試験装置
US6282627B1 (en) * 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
JP2000090237A (ja) * 1998-09-10 2000-03-31 Fuji Xerox Co Ltd 描画処理装置
SE9902373D0 (sv) * 1998-11-16 1999-06-22 Ericsson Telefon Ab L M A processing system and method
JP2000278116A (ja) * 1999-03-19 2000-10-06 Matsushita Electric Ind Co Ltd Fpga用コンフィギュレーションインターフェース
JP2000295613A (ja) * 1999-04-09 2000-10-20 Nippon Telegr & Teleph Corp <Ntt> 再構成可能なハードウェアを用いた画像符号化方法,画像符号化装置および画像符号化のためのプログラム記録媒体
JP2000311156A (ja) * 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
US6308311B1 (en) * 1999-05-14 2001-10-23 Xilinx, Inc. Method for reconfiguring a field programmable gate array from a host
EP1061438A1 (de) * 1999-06-15 2000-12-20 Hewlett-Packard Company Rechnerarchitektur mit Prozessor und Coprozessor
US20030014627A1 (en) * 1999-07-08 2003-01-16 Broadcom Corporation Distributed processing in a cryptography acceleration chip
JP3442320B2 (ja) * 1999-08-11 2003-09-02 日本電信電話株式会社 通信方式切替無線端末及び通信方式切替方法
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US6326806B1 (en) * 2000-03-29 2001-12-04 Xilinx, Inc. FPGA-based communications access point and system for reconfiguration
JP3832557B2 (ja) * 2000-05-02 2006-10-11 富士ゼロックス株式会社 プログラマブル論理回路への回路の再構成方法および情報処理システム
US6982976B2 (en) * 2000-08-11 2006-01-03 Texas Instruments Incorporated Datapipe routing bridge
US7196710B1 (en) * 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
JP2002207078A (ja) * 2001-01-10 2002-07-26 Ysd:Kk レーダ信号処理装置
CN1284082C (zh) * 2001-01-19 2006-11-08 株式会社日立制作所 电子电路装置
US6657632B2 (en) * 2001-01-24 2003-12-02 Hewlett-Packard Development Company, L.P. Unified memory distributed across multiple nodes in a computer graphics system
JP2002269063A (ja) * 2001-03-07 2002-09-20 Toshiba Corp メッセージングプログラム、及び分散システムにおけるメッセージング方法、並びにメッセージングシステム
JP3873639B2 (ja) * 2001-03-12 2007-01-24 株式会社日立製作所 ネットワーク接続装置
JP2002281079A (ja) * 2001-03-21 2002-09-27 Victor Co Of Japan Ltd 画像データ伝送装置
CA2503622C (en) * 2002-10-31 2015-12-29 Lockheed Martin Corporation Computing machine having improved computing architecture and related system and method
US7373528B2 (en) * 2004-11-24 2008-05-13 Cisco Technology, Inc. Increased power for power over Ethernet applications

Also Published As

Publication number Publication date
KR101035646B1 (ko) 2011-05-19
WO2004042574A2 (en) 2004-05-21
CA2503613A1 (en) 2004-05-21
CA2503611A1 (en) 2004-05-21
AU2003287321A1 (en) 2004-06-07
EP1573515A2 (de) 2005-09-14
CA2503622A1 (en) 2004-05-21
CA2503613C (en) 2011-10-18
JP2011170868A (ja) 2011-09-01
KR101062214B1 (ko) 2011-09-05
EP1559005A2 (de) 2005-08-03
AU2003287320A1 (en) 2004-06-07
KR20050086424A (ko) 2005-08-30
AU2003287319B2 (en) 2010-06-24
WO2004042569A3 (en) 2006-04-27
AU2003287317A1 (en) 2004-06-07
CA2503622C (en) 2015-12-29
WO2004042574A3 (en) 2005-03-10
JP2006515941A (ja) 2006-06-08
DE60318105D1 (de) 2008-01-24
WO2004042561A3 (en) 2006-03-02
JP2006518056A (ja) 2006-08-03
CA2503617A1 (en) 2004-05-21
AU2003287317B2 (en) 2010-03-11
EP1570344A2 (de) 2005-09-07
KR20050084629A (ko) 2005-08-26
AU2003287318B2 (en) 2010-11-25
ES2300633T3 (es) 2008-06-16
JP2006518057A (ja) 2006-08-03
JP2011175655A (ja) 2011-09-08
WO2004042569A2 (en) 2004-05-21
EP1570344B1 (de) 2007-12-12
KR100996917B1 (ko) 2010-11-29
KR101012744B1 (ko) 2011-02-09
JP2011154711A (ja) 2011-08-11
EP1573514A2 (de) 2005-09-14
EP1576471A2 (de) 2005-09-21
KR20050088995A (ko) 2005-09-07
JP2006518058A (ja) 2006-08-03
JP5568502B2 (ja) 2014-08-06
WO2004042560A2 (en) 2004-05-21
WO2004042561A2 (en) 2004-05-21
CA2503611C (en) 2013-06-18
AU2003287318A1 (en) 2004-06-07
KR20050084628A (ko) 2005-08-26
AU2003287319A1 (en) 2004-06-07
AU2003287321B2 (en) 2010-11-18
KR20050086423A (ko) 2005-08-30
KR101012745B1 (ko) 2011-02-09
JP2006518495A (ja) 2006-08-10
CA2503620A1 (en) 2004-05-21
AU2003287320B2 (en) 2010-12-02
JP2011181078A (ja) 2011-09-15
WO2004042560A3 (en) 2005-03-24

Similar Documents

Publication Publication Date Title
DE60318105T2 (de) Pipeline-coprozessor
DE19722365B4 (de) Rekonfigurierbares Rechenbauelement
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE3750236T2 (de) Gerät zur In-line-Abfragesteuerung für Datenprozessorprüfung.
DE3851858T2 (de) Digitaler Signalprozessor.
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
US7418574B2 (en) Configuring a portion of a pipeline accelerator to generate pipeline date without a program instruction
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
EP0961980B1 (de) Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines
DE69419697T2 (de) Arithmetisch-logische Einheit mit mehreren unabhängigen Abschnitten und ein Register zur Speicherung der Statusbits
DE19614991C2 (de) Dynamisch rekonfigurierbare Verarbeitungseinheit, System zur dynamisch rekonfigurierbaren Steuerung, System zum Koppeln von Prozessoren, Verfahren zur Erzeugung von Instruktionen, Verfahren zum dynamischen rekonfigurierbaren Rechnen, dynamisch rekonfigurierbare Computer und Verfahren zur Datenverarbeitung
DE102020122174A1 (de) Berechne-in/nahe speicher- (cim) schaltungsarchitektur für vereinheitlichte matrix-matrix- und matrix-vektor-berechnungen
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE102015002215A1 (de) Sortierbeschleunigungsprozessor, -Verfahren, -Systeme und -Befehle
EP0875031A1 (de) Prozessor zur bildverarbeitung
US7468613B1 (en) Methods and apparatus for control and configuration of programmable logic devices
DE3852592T2 (de) Bildbehandlungsprozessor mit zeitverschachteltem Bus mit freiem Fluss.
DE102015102135A1 (de) Unterbrechbares Exklusivspeichern
DE102019119746A1 (de) Bildsignalprozessor, Verfahren zum Betreiben des Bildsignalprozessors und Anwendungsprozessor mit dem Bildsignalprozessor
DE69601750T2 (de) Videoverarbeitungseinheit mit nicht-abstellender Unterbrechungsverarbeitung
DE3855524T2 (de) Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator
DE69130233T2 (de) Verfahren und gerät um ein sperrungscache einzusetzen
DE69034246T2 (de) Gerät zur Verarbeitung von Grafikdaten
DE4326740C1 (de) Architektur für eine Rechenanlage

Legal Events

Date Code Title Description
8364 No opposition during term of opposition