DE19722365B4 - Rekonfigurierbares Rechenbauelement - Google Patents

Rekonfigurierbares Rechenbauelement Download PDF

Info

Publication number
DE19722365B4
DE19722365B4 DE19722365A DE19722365A DE19722365B4 DE 19722365 B4 DE19722365 B4 DE 19722365B4 DE 19722365 A DE19722365 A DE 19722365A DE 19722365 A DE19722365 A DE 19722365A DE 19722365 B4 DE19722365 B4 DE 19722365B4
Authority
DE
Germany
Prior art keywords
data
pipeline
bus
alp
logic
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 - Fee Related
Application number
DE19722365A
Other languages
English (en)
Other versions
DE19722365A1 (de
Inventor
Charlé R. Bolton Rupp
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.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19722365A1 publication Critical patent/DE19722365A1/de
Application granted granted Critical
Publication of DE19722365B4 publication Critical patent/DE19722365B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

Rekonfigurierbares Rechenbauelement mit einem adaptiven Logikprozessor, welcher eine Mehrzahl einzeln konfigurierbarer Logikzellen (150), die in einer Anordnung angeordnet sind, die eine Mehrzahl von vertikalen Spalten konfigurierbarer Logikzellen (150) und eine Mehrzahl horizontaler Zeilen konfigurierbarer Logikzellen (150) enthält, umfaßt, wobei ein Satz Steuerleitungen (134) zur Übertragung von Steuersignalen und ein Satz Datenleitungen (132) zur Übertragung von Daten zwischen einem Pipelinesegment (160) und einer Logikzellenrekonfigurationssteuerung vorgesehen ist, wobei das Pipelinesegment (160) eine Menge konfigurierter Logikzellen (150) enthält und entlang der vertikalen Erstreckung der Anordnung positioniert ist, dadurch gekennzeichnet, daß die Steuerleitungen (134) und die Datenleitungen (132) sich über eine Mehrzahl von Spalten der Anordnung erstrecken und damit erlauben, daß sich das Pipelinesegment (160) an einer Mehrzahl horizontaler Stellen der Anordnung befindet, während mit einer Logikzellenrekonfigurationssteuerung die Konfiguration der Logikzellen (150) zum Bilden des sich vertikal erstreckenden Pipelinesegments (160) und Ausführung der Menge von Logikfunktionen durch die konfigurierten Logikzellen (150) durch Übertragung von...

Description

  • Die Erfindung betrifft ein rekonfigurierbares Rechenbauelement nach dem Oberbegriff des Anspruchs 1.
  • Rekonfigurierbare Logikrechnerarchitekturen sind Rechnersyteme, die in der Lage sind, sehr hohe Leistungsniveaus zu erreichen. Rekonfigurierbare Systeme basieren auf freiprogrammierbaren Logikanordnungen (FPGA – field programmable gate arrays), die integrierte Schaltungen sind, die aus einer Anordnung von programmierbarer Logik und programmierbaren Verbindungselementen bestehen. Die Elemente lassen sich vom Endbenutzer konfigurieren und rekonfigurieren, um eine große Reihe von Logikfunktionen und Digitalschaltungen zu implementieren. Bei FPGA-basierenden Systemen werden die FPGA zur Implementierung von Kundenalgorithmusspezifischen Schaltungen benutzt, die die Ausführung des Algorithmus beschleunigen. FPGA-Systeme haben einen großen Wirkungsgrad, da dieselben Schaltungselemente, die zur Ausführung eines Algorithmus benutzt werden, rekonfiguriert werden können, um einen vollständig anderen und unverwandten Algorithmus auszuführen.
  • SRAM-(static random access memory)basierende FPGA bestehen aus Logik- und Verbindungsmitteln, die durch in internen SRAM-Zellen gespeicherte Programmdaten konfiguriert werden. Dieselben FPGA-Bauelemente können unbegrenzte Male rekonfiguriert werden und gestatten damit, daß dasselbe Bauelement viele verschiedene Funktionen implementiert.
  • Bei rekonfigurierbaren Logikarchitekturen wird die FPGA als Kernsystembauelement benutzt, das rekonfiguriert wird, um an einen beliebigen Algorithmus angepaßt zu werden. Es werden hohe Leistungsniveaus erreicht, da die mit FPGA ermöglichten kundenspezifischen Anpassungen auf Gate-Ebene eine äußerst wirksame Schaltungsorganisation ergeben, die kundenspezifische Datenwege und "festverdrahtete" Steuerstrukturen benutzt. Diese Schaltungen weisen eine bedeutsame feinkörnige Parallelität auf Gate-Ebene auf, die mit programmierbaren, auf Anweisungen basierenden Techniken wie Mikroprozessoren oder Supercomputern nicht erreichbar ist. Dadurch eignen sich solche Architekturen besonders für Anwendungen, die die Ausführung von mehrfachen Berechnungen während der Verarbeitung einer großen Datenmenge erfordern.
  • Ein rekonfigurierbares Grundsystem besteht aus zwei Elementen: einem rekonfigurierbaren Schaltungsmittel von ausreichender Größe und Komplexität und einer Bibliothek von Schaltungsbeschreibungen (-konfigurationen), die für seine Konfigurierung in das Mittel herabgeladen werden können. Das rekonfigurierbare Mittel würde aus einer gleichförmigen Anordnung von orthogonalen Logikelementen (Allzweckelemente ohne feste Funktionalität) bestehen, die so konfiguriert werden könnte, daß sie jede gewünschte Digitalfunktion implementiert. Die Konfigurationsbibliothek würde die Grundlogik- und Verbindungsprimitiven enthalten, die zur Erstellung von größeren und aufwendigeren Schaltungsbeschreibungen benutzt werden könnten. Die Schaltungsbeschreibungen in der Bibliothek könnten auch aufwendigere Strukturen wie beispielsweise Zähler, Multiplexer, kleine Speicher und sogar Strukturen wie Steuerungen, große Speicher und Mikrosteuerungskerne enthalten.
  • Leider werden Konstrukteure durch den gegenwärtigen Stand der Technik in der FPGA-Technik auf Systeme beschränkt, die sich von dem beschriebenen Grundsystem unterscheiden. Diese in der Praxis verwendeten Systeme sind typischerweise eine Ansammlung mehrerer verschiedener Arten von Vorrichtungen: FPGA, statische RAM, programmierbare Kreuzschienenvorrichtungen und andere nicht rekonfigurierbare Vorrichtungen. Nicht rekonfigurierbare (feste) Vorrichtungen sind eingeschlossen, da es praktisch nicht möglich ist, einige Funktionen (beispielsweise Speicherung) in FPGA zu implementieren. Bei den meisten Systemen sind mehrere FPGA in einer Anordnung zusammengeschaltet, da eine einzige FPGA nicht genügend Mittel zur Implementierung einer typischen Anwendung bereitstellt. Obwohl durch diese Kombination von Nicht-FPGA-Vorrichtungen mit Anordnungen von FPGA die Implementierung von rekonfigurierbaren Systemen ermöglicht wird, die etwas komplexe Anwendungen unterstützen, ergibt sie auch ein System, das nicht so flexibel ist. Diese Inflexibilität ist ein direktes Ergebnis der festen Schnittstellen zwischen verschiedenen Bauelementen und den festen Funktionen der Nicht-FPGA-Vorrichtungen.
  • Feste Schnittstellen sind ein direktes Ergebnis des Zusammenschaltens von mehreren Bausteinen (FPGA und Nicht-FPGA) zur Ausbildung einer größeren rekonfigurierbaren Anordnung. Da diese Bausteine unter Verwendung herkömmlicher Leiterplatten-(PCB-)Methodik zusammengeschaltet sind, werden die Anschlußverbindungen zwischen einzelnen FPGA-Vorrichtungen zur Zeit der Systemherstellung festgelegt. Programmierbare Verbindungsvorrichtungen wie beispielsweise Kreuzschienen können eine begrenzte Flexibilität zwischen FPGA bieten, so daß die Anschlußbelegungen den Bedürfnissen der Anwendung entsprechend geändert werden können. Programmierbare Verbindungen bedeuten jedoch zusätzliche Verzögerung in den Wegen zwischen FPGA, und die Anschlüsse zwischen der Verbindungsvorrichtung und der FPGA bleiben fest.
  • Diese festen Schnittstellen ergeben ein rekon figurierbares Mittel, das nicht gleichförmig ist und schwieriger zu verwenden ist. Dies ist selbst dann wahr, wenn rekonfigurierbare Verbindungen benutzt werden. Ein bedeutendes Problem ist die große Fehlanpassung zwischen chipinterner und chipexterner Wegeführung. Die chipinterne Wegeführung, die zu Wegeführung von Schaltungsmodulen im Baustein benutzt wird, ist viel dichter und sehr viel schneller als die zur Verbindung einzelner FPGA-Bausteine benutzte chipexterne Wegeführung. Der Mangel an chipexterner Wegeführung und ihre relative Langsamkeit hat einen ernsthaften Rommunikationsengpaß zwischen einzelnen FPGA-Vorrichtungen zur Folge. Diesen Kommunikationsengpaß bei der Konstruktion zu umgehen, ist eine der größten Herausforderungen der effektiven Verwendung eines rekonfigurierbaren Systems.
  • Obwohl die Einführung von festen Schnittstellen und festen Funktionen den Aufbau von praktisch verwendbaren konfigurierbaren Systemen erlaubt hat, wird die Verwendung dieser Systeme durch ihre resultierende Ungleichförmigkeit schwieriger. Die Konstruktion ist in einem gleichförmigen Konstruktionsmedium vereinfacht, da die einzigen physischen Beschränkungen, die den Konstruktionsvorgang beeinflussen, die E/A-Stifte sind, die Daten in den und aus dem Baustein bringen. Sobald jedoch feste Schaltungen eingeführt sind, ist nicht nur ein Teil der Funktionalität des Systems festgelegt, sondern es geht auch ein Teil der ursprünglichen Flexibilität der FPGA verloren.
  • Der Verlust an Flexibilität beeinflußt sowohl Implementierung als auch Leistung. Beispielsweise sind Schaltungsimplementierungen mit mehreren Bausteinen weniger wirksam, da die zur Kommunikation zwischen Bausteinen benutzte chipexterne Verbindung nicht so dicht ist und einen niedrigeren Leistungsgrad aufweist, als chipintern zur Verfügung steht. Schaltungsmodule, die über mehrere FPGA aufgeteilt werden müssen, weisen typischerweise eine geringere Leistung auf, als wenn das Modul in eine einzige FPGA paßt. Partitionierung einer Schaltungsimplementierung über eine Menge fester und unfester Bauelemente ist ebenfalls sehr schwierig. Wenn beispielsweise bestimmt wird, daß für eine gegebene Anwendung ein Festfunktionsspeicher notwendig ist, müssen alle Schaltungen, die mit dem Speicher kommunizieren, in FPGA mit Stiften, die mit der Multiplizierschaltung verbunden sind, gelegt werden.
  • Ein weiteres Verbindungsproblem, das die Leistung typischer rekonfigurierbarer Systeme beeinflußt, ist das der Art und Weise, auf die Signale durch die Elemente einer FPGA-Anordnung geführt werden. Signale werden typischerweise vor Verbindung mit einem E/A-Bus oder einem sonstigen Systembauelement zum Rand einer Anordnung geführt. Daraus ergeben sich Verzögerungen bei der Übertragung von Daten und der Ausführung von Logikoperationen. Durch diese Art und Weise der Datenwegeführung wird auch die Flexibilität der rekonfigurierbaren Elemente verringert, da einige Zellen als Drähte konfiguriert werden müssen, damit die Signale durch die Zellen geführt werden können.
  • Gegenwärtige rekonfigurierbare Systeme weisen bedeutende Schwierigkeiten bei der Implementierung von Anwendungssoftware bei der Plazierung und Wegeführung der rekonfigurierbaren Funktionszellen und rekonfigurierbaren Verdrahtungszellen, die zur Realisierung der rekonfigurierbaren Rechenfunktionsblöcke notwendig sind, auf. Automatische Werkzeuge für dieses Problem benutzen das rekonfigurierbare Mittel allgemein auf unwirksame Weise. In vielen Fällen ist zur Realisierung einfacher rekonfigurierbarer Funktionsblöcke eine umständliche Plazierung und Wegeführung von Hand notwendig.
  • Die Taktgeschwindigkeitsleistung gegenwärtiger rekonfigurierbarer Systeme ist durch das Erfordernis mehrerer rekonfigurierbarer Drahtbrücken zur Übertragung von Daten aus der Peripherie der rekonfigurierbaren Anordnung zu den inneren Schaltungen, die die Daten benötigen, und die entsprechenden rekonfigurierbaren Drahtbrücken zum Herausbringen der Ergebnisdaten aus den inneren Zellen zur Peripherie der Anordnung be grenzt. Die veränderlichen Wegeverzögerungen des gegenwärtigen Systems erzeugen auch Taktschlupfprobleme bei der Implementierung der Pipelinestufen-Taktsteuerungen.
  • Gegenwärtige Systeme erfordern, daß alle Pipeline-Datenwege unter Verwendung einer begrenzten menge an rekonfigurierbaren Verdrahtungsmitteln zur Peripherie der Anordnung gebracht werden. Dadurch wird die Anzahl von Pipeline-Datenbussen begrenzt, die wirkungsvoll in einem System benutzt werden könne. Es besteht in gegenwärtigen Systemen eine entsprechende Begrenzung bei der Anzahl von Pipeline-Steuersignalen, die zur Verwaltung des rekonfigurierbaren Pipelinerechenprozesses verteilt werden können.
  • Erwünscht ist eine Architektur für ein rekonfigurierbares Rechnersystem, mit der die Nachteile bestehender Systeme überwunden werden.
  • DE 44 16 881 A1 offenbart eine Datenverarbeitungseinrichtung mit einem oder mehreren gekoppelten und rekonfigurierbaren Logikprozessoren. Jeder Logikprozessor umfaßt eine Mehrzahl einzeln konfigurierbarer Logikzellen, die in einer Anordnung angeordnet sind, die eine Mehrzahl von vertikalen Spalten konfigurierbarer Logikzellen und eine Mehrzahl horizontaler Zeilen konfigurierbarer Logikzellen enthält. Steuerleitungen zur Übertragung von Steuersignalen und Datenleitungen zur Übertragung von Daten zwischen einem Pipelinesegment und einer Logikzellenrekonfigurationssteuerung sind vorgesehen. Das Pipelinesegment enthält eine Menge konfigurierter Logikzellen und ist entlang der vertikalen Erstreckung der Anordnung positioniert.
  • Hierbei sind jedoch nur die Rand- und Kantenzellen eines Logikprozessors direkt an die Daten- und Steuerleitungen angeschlossen. Die Steuersignale und Daten müssen im Innern des Logikprozessors befindlichen Zellen anderweitig zugeführt werden, womit eine Reihe von Problemen verbunden ist.
  • Aufgabe der Erfindung ist es, ein rekonfigurierbares Rechenbauelement mit einem adaptiven Logikprozessor ALP nach dem Oberbegriff des Anspruchs 1 zu schaffen, wobei eine vergrößerte Anzahl von Pipelinesegmenten auf dem ALP angeordnet und mit erhöhter Zuverlässigkeit und höherer Leistungsfähigkeit betrieben werden können.
  • Diese Aufgabe wird entsprechend den Merkmalen des Anspruchs 1 gelöst.
  • Es wird eine Architektur für Informationsverarbeitungsvorrichtungen geschaffen, die den Aufbau von kostengünstigen, leistungsfähigen Systemen für spezialisierte Rechenanwendungen zur Sensordatenverarbeitung erlaubt. Zu einer typischen Anwendung gehört die hochratige Dateneingabe von einem oder mehreren Sensoren, Reduktion der Daten unter Verwendung von aufwendigen Signalverarbeitungsalgorithmen, die Darstellung der Ergebnisse am Systemausgang und die nachfolgende Steuerung von Betätigungsvorrichtungen (beispielsweise den Digital-Analog-Wandlern).
  • Ein Merkmal der rekonfigurierbaren Rechenarchitektur der vorliegenden Erfindung besteht in der Verwendung einer als adaptiver Logikprozessor (ALP) bezeichneten programmierbaren Logikstruktur. Diese Struktur ist einer erweiterungsfähigen freiprogrammierbaren Logikanordnung (FPGA – field programmable gate array) ähnlich und ist für die Implementierung von anwendungsprogrammspezifischen Pipelinefunktionen optimiert, wobei die Funktion während des Verlaufs eines Rechenvorgangs beliebige Male geändert werden kann. Diese Pipelinefunktionen werden durch Konfigurierung einer Gruppe von in der Logikanordnung enthaltenen Logikzellen zur Ausführung einer spezifischen Operation bzw. Folge von Logikoperationen implementiert. Zum Beladen des ALP mit den für die Ausführung eines bestimmten Programms benötigten Pipelinefunktion während des Konfigurationsvorgangs wird eine rekonfigurierbare Pipelineanweisungssteuerungs-(RPIC – Reconfigurable Pipeline Instruction Control)Einheit benutzt. Die RPIC bewirkt auch die Koordinierung der Operationen des ALPs mit anderen Informationsverarbeitungsstrukturen wie beispielsweise Speicher, E/A-Vorrichtungen und Arithmetikverarbeitungseinheiten.
  • Es können mehrere Bauelemente mit der rekonfigurierbaren Architektur der vorliegenden Erfindung kombiniert werden, um parallele Hochleistungsverarbeitungssysteme zu erzeugen, die auf dem Konzept der SIMD-(Single Instruction Multiple Data)Architektur basieren. In einem solchen Fall wird zur Bereitstellung von Kommunikation zwischen den Bauelementen eine Schaltbus (Toggle Bus) genannte Verbindungsstruktur benutzt. Der Schaltbus wird auch zur Integrierung von Peripherieverarbeitungselementen wie beispielsweise Bauelementen zum Ablesen von Sensordaten, zur Kommunikation von Ergebnissen und zur Steuerung von Betätigungsgliedern benutzt. Zusätzlich zu den ALP- und RPIC-Elementen enthält ein typisches rekonfigurierbares Bauelement eine Schaltbuskoppler-(TBT – Toggle Bus Transceiver)Schaltung, eine Pipeline-Datenprozessor (PDP) genannte standardmäßige arithmetische Pipelineprogrammausführungseinheit, einen Speicher mit Mehrfachzugriff (MPM – Multiple Port Memory) und eine externe Adreßgenerator (XAG) genannte externe Speicherzugriffseinheit.
  • Weitere Vorteile der vorliegenden Erfindung werden aus der nachfolgenden ausführlichen Beschreibung und den beiliegenden Zeichnungen er sichtlich werden.
  • Es zeigen:
  • 1 ein Diagramm der dem rekonfigurierbaren Signalverarbeitungssystem der vorliegenden Erfindung zu Grunde liegenden Rechenverfahren,
  • 2 ein Blockschaltbild eines allgemeinen rekonfigurierbaren Signalverarbeitungssystems (RSPS – Reconfigurable Signal Processing System),
  • 3 ein Blockschaltbild des Grundaufbaus eines typischen RSPS-Bauelements,
  • 4 das Format der Grundbefehlsarten für eine beispielhafte PDP- und ALP-Befehlsschnittstelle,
  • 5 die Grundelemente eines ALPs bei einer Implementierung mit 32 horizontalen Zellen und 64 vertikalen Zellen,
  • 6 die klassische Befehlsausführungsfolge nach Von Neumann, die durch den ALP implementiert wird,
  • 7 die Steuerschnittstelle zwischen den RPIC- und ALP-Modulen und die für jeden Pipeline-Steueranschluß (PCP – pipeline control port) benötigten Signale,
  • 8 ein Anwendungspipelinesegment, das eine Addier-/Akkumulierfunktion durchführt,
  • 9 die detaillierte Schnittstelle für eine ALP-Kernzelle,
  • 10 eine beispielhafte Schaltung zur Implementierung einer ALP-Kernzelle,
  • 11 eine beispielhafte Schaltung für die Spaltentaktleitung einer ALP-Zelle,
  • 12 den allgemeinen Plan des Kernblockaufbaus für einen Kernblock mit vier horizontalen Spalten und vier senkrechten Zeilen,
  • 13 die Verbindungen, die einen Teil der Schnittstelle zwischen den Kernzellen und Zwischenverstärkerschaltungen an der Ecke von vier Kernblöcken bilden,
  • 14 eine beispielhafte Schaltung für eine vertikale Zwischenverstärkerschaltung,
  • 15 eine beispielhafte Schaltung für eine horizontale Zwischenverstärkerschaltung,
  • 16 ein Blockschaltbild mit dem detaillierten Datenfluß für die Hauptbuswege eines beispielhaften RSP-Bauelements,
  • 17 ein Blockschaltbild mit einer beispielhaften Schaltung für den Schaltbuskoppler für ein RSP-Bauelement,
  • 18 ein Blockschaltbild der Grundbauelemente einer RPIC-Schaltung,
  • 19 ein Zustandsdiagramm des Betriebsflusses zur Erzeugung eines Pipeline-Freigabesignals für das eingeleitete Programm und selbständige Datenübertragungsoperationen,
  • 20 ein Zustandsdiagramm des Betriebsflusses, wenn der Befehlsdecodierer bestimmt, daß der gegenwärtige Befehl die Ausführung einer Pipelinefunktion im ALP erfordert,
  • 21 ein Zustandsdiagramm des Betriebsflusses der Programmdatenanforderungsoperation,
  • 22 ein Zustandsdiagramm des Be triebsflusses der selbständigen Anforderungsfolgeopera tion,
  • 23 das IEEE-32-Bit-Gleitkomma-Datenformat,
  • 24 ein Blockschaltbild einer ALP-Schaltung zur Durchführung von beschleunigten Gleitkommaoperationen,
  • 25 den Datenfluß und Berechnungen des grundlegenden FFT-Algorithmus für N = 8,
  • 26 ein Blockschaltbild für eine in jedem Datenverarbeitungselement zur Implementierung der bei der FFT-Berechnung benutzten Permutationsoperation benötigte ALP-Schaltung,
  • 27, wie der FFT-Algorithmus durch Aufteilen der Datenprozessoren in Paare, die die Grundberechnung durchführen, vereinfacht wird,
  • 28 ein Blockschaltbild einer ALP-Pipelineschaltung, die die Adreße für die Ko effizienten, die Adreße zum Lesen und Schreiben der Daten berechnet und die Daten für die FFT-Berechnung über den Schaltbus überträgt,
  • 29 eine hierarchische Darstellung eines im Speicher gespeicherten Bildes, das bei einer typischen Bildverarbeitungsanwendung benutzt wird,
  • 30 die Abbildung von Bildpunkten in einem Makroblock für 16 RSP-Datenprozessoren (Numerierung unter Verwendung von Hexadezimaldarstellung) für eine Bildverarbeitungsanwendung auf Grundlage der Architektur der vorliegenden Erfindung,
  • 31 das Ordnen von Daten zwischen den Prozessoren, wodurch Zugang der Daten in mehreren nützlichen Adreßierbetriebsarten für eine Bildverarbeitungsanwendung ermöglicht wird,
  • 32 das allgemeine Suchschema für eine Bewegungsoffseterkennungsanwendung auf Grundlage der Architektur der vorliegenden Erfindung,
  • 33 den Datenfluß und die Berechnungen des Algorithmus nach Walsh-Hadamard für N = 8,
  • 34 ein Blockschaltbild einer konfigurierbaren Logikschaltung, die die Berechnung der 33 implementiert,
  • 35 einen Teil eines verschiebbaren Pipelinesegments zur Verwendung bei der Ausführung der Berechnung der 33.
  • Obwohl die rekonfigurierbare Rechnerarchitektur der vorliegenden Erfindung in verschiedenen Formen, die für spezifische Verwendungszwecke ausgelegt sind, Implementiert werden kann, konzentriert sich die folgende Besprechung auf die Verwendung der Architektur für eine Signalverarbeitungsanwendung. Besondere Ausführungsformen der Erfindung erlauben die Veränderung einer Anzahl von Parametern zur Realisierung von Bauelementen, die die Erfordernisse spezifischer Marktsegmente erfüllen:
    • 1) Die Einzelheiten der Implementierung der Kernzellenanordnung und rekonfigurierbaren Verdrahtungszellen auf niedrigster Ebene lassen sich verändern, um entweder auf Nachschlagetabellen basierenden rekonfigurierbaren Architekturen oder feinkörnigen rekonfigurierbaren Architekturen Rechnung zu tragen;
    • 2) Die Anzahl von Kernzellen und rekonfigurierbaren Verdrahtungszellen läßt sich verändern, um einen Kompromiß zwischen Bauelementkosten und Anwendungsschaltungsgröße bei gleichzeitig verbesserter Herstellungstechnik zu bieten;
    • 3) Die Schnittstelle zum Speicher, zum Kernprozessor und zur Schnittstellenerweiterung für parallele Verarbeitung kann mit Festfunktionsschaltungen im selben Bauelement mit dem rekonfigurierbaren Logikmittel oder mit externen Bauelementen, die diese Festfunktionsfähigkeiten enthalten, verbunden sein;
    • 4) Die Bitzahl in den Busworten der Pipelinebusanordnung läßt sich zur Erfüllung der Erfordernisse der Schnittstelle zum Festfunktionsmittel und der Wortlängenerfordernisse bestimmter Anwendungskategorien verändern. Beispielsweise brauchen Bildverarbeitungsanwendungen typischerweise kürzere Worte als Digitalsignalverarbeitungsanwendungen; und
    • 5) Die Anzahl von Pipelinebusanordnungsdatenbussen läßt sich verringern oder erweitern, um einer verringerten bzw. erweiterten Anzahl von Festfunktionsblöcken Rechnung zu tragen.
  • Der rekonfigurierbare Signalprozessor (RSP) der vorliegenden Erfindung beruht auf einer Rechenarchitektur für Datenverarbeitung, die konfigurierbare Logik- und Parallelverarbeitungs-Verbindungsstrukturen als Teil des Grund-Rechenmechanismus integriert. Mit diesem Ansatz können Algorithmen derart implementiert werden, daß sich eine Leistungsverbesserung in einer ganzen Größenordnung für eine große Reihe von Anwendungen ergibt. Zur gleichen Zeit ermöglicht die Architektur die Verwendung leistungsstark Softwarekompilierkonzepte zur Vereinfachung der Programmentwicklungsaufgaben, die zum Erschließen ihrer hohen Leistungsfähigkeit benötigt werden.
  • Der Softwarekompilierer für die Architektur bildet wie in 1 dargestellt die Datenverarbeitungsaufgaben einer Anwendung auf drei Grundrechenverfahren. Diese Rechenverfahren umfassen konfigurierbare Berechnung, skalare Berechnung und parallele Verarbeitung. Die dem RSP zu Grunde liegende Architektur unterstützt die Integrierung dieser Verfahren auf eng verkoppelter Grundlage. Durch Zusammenwirkung der Hardwarestrukturen können Hunderte von Rechenschritten, an denen die skalaren Pipelineprozessoren, die konfigurierbare Logik und die Parallelverarbeitungsmittel beteiligt sind, in einem einzigen Taktzyklus durchgeführt werden.
  • Durch den RSP wird die Verwendung des konfigurierbaren Logikmittels als Grundbestandteil der Berechnung betont. Durch den Kompilierer wird die höchste Leistung durch Erzeugung anwendungsspezifischer "tiefer Pipeline-"Schaltungen realisiert, die aus der konfigurierbaren Logik gebildet werden. Bei diesem Ansatz werden freiprogrammierbare Logikanordnungen (FPBA) benutzt und die Durchführung vieler elementarer Rechenschritte in einem einzigen Taktzyklus ermöglicht. Da die konfigurierbare Logikanordnung die Implementierung von willkürlichen Logiknetzen erlaubt, besteht keine Beschränkung der dem Kompilierer für jede Pipelinestufe verfügbaren Art von Rechengrundelement. Die RSP-Architektur enthält auch das neuartige Konzept einer Pipeline-Busanordnung (PBA – pipelined bus array) als Teil der konfigurierbaren Logikanordnung zur Vereinfachung des Vorgangs automatischer Schaltungserstellung. Dadurch, daß die PBA die direkte Implementierung von Pipelinestrukturen erlaubt, bietet sie auch im Vergleich zu früheren Ansätzen zur Auslegung von rekonfigurierbaren Architekturen eine viel höhere Leistungsfähigkeit. Die Anzahl von in einer einzigen RSP-Vorrichtung implementierten Pipelinestufen ist durch die Größe der konfigurierbaren Logikanordnung begrenzt. In der zu beschreibenden Ausführungsform ist die PBA eine Erweiterung der feinkörnigen konfigurierbaren Logikanordnungsstruktur.
  • Durch Verwendung der integrierten Parallelverarbeitungs-Verbindungsstruktur der vorliegenden Erfindung lassen sich mehrere RSP-Vorrichtungen in der "Parallelverarbeitungsdimension" kombinieren. Durch Verwendung mehrerer RSP-Hauelemente können unter Verwendung des "Pipelineverkettung" genannten Konzepts tiefe Pipelineen erweitert werden. Dies ermöglicht die Ausführung von mehreren Hundert Algorithmusschritten in einem einzigen Taktzyklus. Auch erlaubt die Parallelverarbeitungs-Verbindungsstruktur die Implementierung von herkömmlichen SIMD-(Single Instruction Multiple Data) und MIMD (Multiple Instruction Multiple Data) Parallelverarbeitungsalgorithmen durch den Softwarekompilierer. Die in der zu beschreibenden RSP-Architektur implementierte spezifische Parallelverarbeitungs-Verbindungsstruktur wird als "Schaltbus" bezeichnet. Mit dieser Struktur kann ein Mehrstufen-Verbindungsnetz implementiert werden. Durch Einbau eines vollen Buskopplers in eine RSP-Vorrichtung ermöglicht die Schaltbusstruktur Zugriff auf die meisten Datenflußfähigkeiten eines Kreuzschienennetzes zu einem Preis, der mit dem Einsatz eines herkömmlichen Busses mit drei Zuständen vergleichbar ist. Für die interessierenden Anwendungen wird mit dem Schaltbus echte "skalierbare Berechnung" realisiert: N-mal Bandbreitensteigerung für (N) Verarbeitungselemente.
  • Anwendungsentwicklung
  • Die RSP-Architektur erlaubt die Implementierung von Softwareentwicklungswerkzeugen, die die konfigurierbare Logikanordnung auf mehrere unterschiedliche Weisen benutzen. Zusätzlich zu dem Ansatz der tiefen Pipeline kann das konfigurierbare Logikmittel als Mechanismus zur Steigerung des Befehlssatzes benutzt werden. Beispielsweise kann bei einer Anwendung, die die Handhabung einer großen Anzahl von Galois-Feld- Arithmetikgleichungen erfordert, die konfigurierbare Logik zur Implementierung eines Galois-Feld-Arithmetik-Befehlssatzes programmiert werden. Ein Programmierer kann durch Verwendung der "Operandenüberladungs"-Fähigkeit der Programmiersprache C++ auf diese Fähigkeit zugreifen. Für digitalsignalverarbeitungsorientierte Anwendungen kann die konfigurierbare Logik zur Implementierung der komplexen Adreßberechnungen benutzt werden, die zum Zugreifen auf die Anwendungsdatenbank benötigt werden. Der RSP behält die rekonfigurierbaren Eingabe-/Ausgabefähigkeiten herkömmlicher konfigurierbarer Logikvorrichtungen. Dadurch kann eine Gruppe von RSP-Vorrichtungen direkt mit Betätigungs/Sensorvorrichtungen verbunden werden, die Datenübertragung mit sehr hoher Bandbreite erfordern, wie beispielsweise Bildwandler und hochratige Kommunikationsvorrichtungen.
  • Die auf eine bestimmte Anwendung angewandte Mischung von Rechenansätzen ist von einer detailierten Analyse der Aufgabenstruktur der Anwendung und der Beschaffenheit der kritischen Rechenfolgen in den "inneren Schleifen" des Algorithmus abhängig. Die Abbildung der Anwendung auf die Mehrzahl möglicher verfügbarer Implementierungen unter Verwendung eines RSP-basierenden Systems ist die Aufgabe mit der größten Komplexität im automatischen Kompilierungsvorgang. Nunmehr wird die allgemeine Methode zur Ausführung dieser Aufgabe beschrieben.
  • Als erstes versucht der Kompilierer immer, 100% des konfigurierbaren Logikmittels zu benutzen. Der RSP enthält hochratige Rekonfigurierungsfähigkeiten, die es dem Anwendungsprogramm ermöglichen, die Berechnungen in der konfigurierbaren Logik mit dem Fortschreiten der Anwendung durch die Abfolge der erforderlichen Aufgaben zu verändern. Beispielsweise kann die konfigurierbare Logik zuerst zur Durchführung von hochratiger Datensammlung benutzt werden. Danach wird die konfigurierbare Logik mehrere Male verändert, um die Daten zu analysieren, und abschließend zur Ausgabe der Ergebnisse der Datenhandhabungen rekonfiguriert. Der Kompilierer versucht stets, für jede Aufgabe einer Berechnung die tiefste Pipelineanordnung der konfigurierbaren Logik zu realisieren. Pipelineverkettung zwischen zwei oder mehr RSP-Vorrichtungen über den Schaltbus wird benutzt, wenn Funktionspipelineanordnungen angetroffen werden, die größer sind, als was in das konfigurierbare Logikmittel einer einzigen RSP-Vorrichtung paßt. In Ermangelung der Erkennung einer tiefen Pipelineanordnung für eine spezifische Phase einer Anwendung benutzt der Kompilierer die konfigurierbare Logik als Mechanismus zur Beschleunigung des Befehlssatzes/der Adreßenerzeugung. Diese "dynamischen" Benutzungen der konfigurierbaren Logik finden zusätzlich zur "statischen" Benutzung der konfigurierbaren Logik für anwendungsspezifische Eingabe/Ausgabe statt. Der Kompilierer verwaltet die Verwendung des konfigurierbaren Logikmittels auf ähnliche Weise wie die klassischen Verfahren der "globalen Registeroptimierung". Im Gegensatz zu früheren Ansätzen zu einer rekonfigurierbaren Logik, die nur eine Funktion zu einer Zeit aktiv sein lassen, erlauben die mehreren Pipelinesteueranschlüsse (PCP – Pipeline Control Ports) der RSP-Architektur, daß mehrere Pipelinesegmente aktiv bleiben, während irgendeines der Segmente dynamisch rekonfiguriert wird.
  • Als zweites erreicht der Kompilierer eine verbesserte Leistung durch Verwendung der durch den Schaltbus bereitgestellten Parallelverarbeitungsfähigkeiten. In einer Gruppe von RSP-Vorrichtungen können gleichzeitig mehrere verschiedene Aufgaben (wie beispielsweise Dateneingabe, Datenanalyse und Datenausgabe) durch funktionsmäßige Verteilung dieser Operationen unter den Prozessoren und Verwendung des Schaltbusses für den Aufgabe-Aufgabe-Datenfluß durchgeführt werden. Dieser Rechenstil wird als MIMD-(Multiple Instruction Multiple Data)Verarbeitung bezeichnet. Eine Gruppe von RSP-Prozessoren kann auch unter Verwendung des SIMD-(Single Instruction Multiple Data)Parallelverarbeitungsverfahrens zur Beschleunigung eines bestimmten Algorithmus benutzt werden, der enge Datenflußverkopplung erfordert. Beipielsweise können (N) RSP-Prozessoren zusammen zur Beschleunigung der Berechnung des schnellen Fourier-Transformations-(FFT – Fast Fourier Tranform)Algorithmus um einen Faktor von N benutzt werden.
  • Der Kompilierer implementiert den Rest der Anwendung unter Verwendung von Codefolgen für den skalaren Prozessor. Die Programmteile enthalten den Code für die Rekonfiguration des konfigurierbaren Logikmittels. Der Befehlsstrom des skalaren Prozessors ist auch für die höhere Aufgabenfolgensteuerung unter Verwendung der Schaltbustransaktionen und zugehörigen Pipelinesteuermechanismen verantwortlich. Auf den unteren Ebenen der Berechnung wird die Koordination der Operationen zwischen den Funktionseinheiten durch die "selbständigen Pipeline-"Fähigkeiten der konfigurierbaren Logikanordnung verwaltet, die später beschrieben werden. Abschließend führt der skalare Prozessor alle übrigen Verarbeitungsaufgaben durch, die nicht der konfigurierbaren Logik oder den Parallelverarbeitungsmodulen zugewiesen worden sind. Ein Aspekt des Verhaltens von RSP-basierenden Systemen besteht darin, daß dasselbe Unterprogramm auf drei verschiedene Weisen ausgeführt werden kann: (1) vollständig in der konfigurierbaren Logik, wenn dieses Mittel an der spezifischen Stelle in der Berechnung nicht anderweitig verwendet wird, (2) teilweise in der konfigurierbaren Logik, wenn nur ein Teil des konfigurierbaren Logikmittels zur Verfügung steht, oder (3) vollständig im skalaren Prozessor, wenn das gesamte konfigurierbare Logikmittel zur Durchführung von Berechnungen eingesetzt wird, die eine bessere Leistung ergeben.
  • In der Praxis schreitet die Entwicklung einer Anwendung schrittweise voran. In vielen Situationen besteht wahrscheinlich eine vollständige Implementierung für die Anwendung für eine skalare Architektur. In den meisten Fällen kann dieser Code, um eine bessere Leistung zu erzielen, für den RSP rekompiliert werden, wird aber wahrscheinlich nicht die "beste" Leistung bewirken, da die Algorithmusdefinition typischerweise eine Neigung zu dem Skalarsystem des ursprünglichen Ziels enthält. Dies ist eine gut bekannte Erscheinung bei der parallelen Verarbeitung und wird nur durch sachkundige Änderungen des Programms gelöst, mit denen der Kompilierer bessere Arbeit bei der Codeerzeugung leisten kann. Dieser Weg der "progressiven Verfeinerung" ist eine der Hauptstärken der RSP-Architektur im Vergleich zu früheren Methoden. Das heißt, ein unerfahrener Benutzer wird ohne bedeutenden Aufwand eine nützliche Lösung für ein Anwendungsprogramm erhalten. Mit zunehmenden Kenntnissen des Benutzers können progressiv bessere Lösungen erzielt werden. Ausgeklügelte Softwarewerkzeuge wie beispielsweise "Anwendungsprofilierer" und auf Graphik basierende "Datenflußmanager" werden typischerweise zur Realisierung eines Endlösungsansatzes unter Verwendung der bei der Architektur der vorliegenden Erfindung verfügbaren Rechenverfahren eingesetzt.
  • Strukturell besteht die Ausgabe eines RSP-Rompiliererwerkzeugs aus einer Objektdatei, die sowohl die binäre Codedefinition für die skalaren Prozessoren und eine Menge verschiebbarer Schaltungskonstruktionen für die konfigurierbaren Logikanordnungen enthält. Die RSP-Architektur ist darin einmalig, daß sie die automatische Erzeugung von verschiebbaren Logikblöcken auf Grundlage der Schaltungskonstruktionen unter Verwendung des Pipeline-Busanordnungskonzepts erlaubt.
  • Übersicht über die RSPS-Systemarchitektur
  • Wie schon besprochen, basiert das rekonfigurierbare Signalverarbeitungssystem (RSPS – Reconfigurable Signal Processing System) der vorliegenden Erfindung auf einer Architektur für eine Familie von Informationsverarbeitungsvorrichtungen, die zum Aufbau von Hochleistungssytemen für spezialisierte Rechenanwendungen für Sensordatenverarbeitung benutzt werden können. Eine typische Anwendung würde eine hochratige Dateneingabe von einem oder mehreren Sensoren (wie beispielsweise eine Videokamera, einem Radar-Responder, Analog-Digital-Wandler usw.), Reduktion der Daten unter Verwendung komplexer Algorithmen wie beispielsweise der Fourier – Transformation, Darstellung der Ergebnisse am Ausgang des Systems und nachfolgende Steuerung einer Betätigungsvorrichtung (wie beispielsweise einem Digital-Analog-Wandler usw.) umfassen. Ein einmaliges Merkmal von RSPS-Automaten ist die Verwendung einer fortschrittlichen Art von programmierbarer Logikstruktur, die als adaptiver Logikprozessor (ALP – Adaptive Logic Processor) bezeichnet wird. Diese Struktur ist für die Implementierung von programmspezifischen Pipelinefunktionen optimiert, wobei die Funktion beliebige Male während des Verlaufs der Berechnung geändert werden kann. Die neuartige rekonfigurierbare Pipelinebefehlssteuerungs-(RPIC – Reconfigurable Pipeline Instruction Control)Einheit der vorliegenden Erfindung ist für das Einladen der Funktionen in den ALP (eine als Konfigurationsvorgang bezeichnete Operation) und das Koordinieren der Operationen des ALPs mit anderen Informationsverarbeitungsstrukturen verantwortlich. Zu diesen können Speicherelemente, E/A-Vorrichtungen und Arithmetikverarbeitungseinheiten gehören. Wie schon bemerkt, können mehrere RSPS-Architekturbauelemente kombiniert werden, um Parallelverarbeitungssysteme sehr hoher Leistung zu erzeugen, die auf dem Konzept der SIMD-(Single Instruction Multiple Data)Architektur basieren.
  • Die 2 ist ein Blockschaltbild eines allgemeinen RSPS (Reconfigurable Signal Processing System) 100. In 2 wird jedes RSPS-Architekturbauelement ein rekonfigurierbarer Signalprozessor (RSP) 102 genannt. N der Bauelemente, die von 0 bis N – 1 numeriert sind, werden als die Datenverarbeitungselemente des Systems bezeichnet und ein zusätzliches (N) numeriertes RSP-Bauelement 104 wird als Bushauptprozessor bezeichnet. Dieses Element wird als die Steuerung für die Datenelementanordnung benutzt. Die Tatsache, daß dasselbe RSP-Bauelement für diese verschiedenen Rollen benutzt werden kann, ist eine direkte Folge der AZP-Rekonfigurationsfähigkeit.
  • Wie schon bemerkt, wird zur Bereitstellung von Kommunikation zwischen den N RSP-Bauelementen eine als Schaltbus 106 bezeichnete Verbindungsstruktur benutzt. Der Schaltbus 106 hat die Eigenschaft, daß die Netto-Signalbandbreite des Busses im Verhältnis zur Anzahl verbundener RSP-Bauelemente steigt. Der Schaltbus 106 wird auch zur Integrierung von Peripherie-Verarbeitungselementen wie beispielsweise Bauelementen zum Ablesen von Sensordaten, der Kommunikation von Ergebnissen und der Steuerung von Betätigungsgliedern benutzt. Weitere Informationen hinsichtlich der Struktur und Funktionsweise des Schaltbusses 106 sind aus der am 5. Dezember 1995 eingereichten allgemein zugewiesenen US-Patentanmeldung Seriennummer 08/567 172 mit der Bezeichnung "Schaltbusschaltung" ersichtlich, deren Inhalt hier durch Bezugnahme aufgenommen wird. Jede RSP-Vorrichtung 102 und 104 enthält Speichermittel, die wie in der Figur gezeigt unter Verwendung externer Speicher-Bauelemente 108 erweitert werden können. Wenn gewünscht, können Peripherieprozessoren 110 an den Schaltbus 106 angeschaltet werden, um bei Dateneingabe/Ausgabefunktionen behilflich zu sein.
  • Struktur zur Implementierung von RSP-Elementen
  • Der RSP (und das RSPS-System) können als spezialisierte Großrechnerarchitektur betrachtet werden, mit der Betonung auf Anwendungen, die bedeutende Mengen von Handhabungen auf Bitebene und ganzzahlige Arithmetik erfordern. Zu Anwendungen, die in diese Kategorie fallen, gehört Bildverarbeitung und neue Arithmetik wie beispielsweise Endlichfeldarithmetik-Anwendungen. Die Architektur eignet sich auch für Datenbankverarbeitung und Verarbeitung von hochratiger Kommunikation. Die zu beschreibende Rechenarchitektur ist zur Begünstigung der Verwendung des konfigurierbaren Logikmittels ausgelegt. Als solches ist die skalare Verarbeitungsfähigkeit ein ganzzahliger Digitalsignalverarbeitungs-(DSP – Digital Signal Processing)Kern, der mit den Anwendungsarten übereinstimmt, die beschrieben werden. Alternative Ausführungsformen der Architektur könnten Prozessoren mit vollem Gleit- komma und virtuellen SpeicherAdreßierungsfähigkeiten enthalten.
  • Die 3 ist ein Blockschaltbild des Grundaufbaus eines typischen RSPS-Bauelements (RSP-Elemente 102 oder 104 der 2). Zusätzlich zu den bereits erwähnten Schaltungen des ALP 120 und RPIC 122 enthält eine typische RSP-Vorrichtung eine Schaltbuskoppler-(TBT – Toggle Bus Transceiver)Schaltung 124, eine als Pipeline-Datenprozessor (PDP – Pipeline Data Processor) 126 bezeichnete Pipelineeinheit zur Ausführung von Standardarithmetik, einen Speicher mit Mehrfachzugriff (MPM – Multiple Port Memory) 128 und eine als externer Adreßgenerator (XAG – External Address Generator) 130 bezeichnete externe Speicherzugriffseinheit.
  • Die Hauptmechanismen zur Implementierung einer RSP-Architektur sind die Pipelinebusanordnung 132 (PBA, in der Figur als Busleitungen RA, WA, RD, WD, RX und WX gezeigt), die rekonfigurierbare Pipelinebefehlssteuerung (RPIC – Reconfigurable Pipeline Instruction Controller) 122 und die Pipelinesteueranschlüsse (PCP – Pipeline Control Ports) 123. Im allgemeinen Fall enthält jedes RSP-Bauelement auch das hochratige Speichermittel mit Mehrfachzugriff (MPM – Multiple Port Memory) 128, das gleichzeitigen Zugriff von Programmanweisungen, Datenlesen und Datenschreiben in einem einzigen Taktzyklus erlaubt. Die dem RSP zur Verfügung stehende Speicherkapazität kann unter Verwendung von externen Bauelementen erweitert werden, auf die unter Verwendung des externen Adreßgenerators (XAG) 130 und den in der Figur gezeigten externen Verbindungen "A" und "B" zugegriffen wird. Für die Zwecke der gegenwärtigen Besprechung dient der adaptive Logikprozessor (ALP) 120 als das konfigurierbare Logikmittel, der Pipeline-Datenprozessor (PDP) 126 fungiert als der DSP-Kernprozessor und der Schaltbuskoppler (TBT – Toggle Bus Transceiver) 124 dient als die eingebettete Schaltbusverbindungsschaltung. In einer allgemeineren Architektur können die Blöcke PDP und TBT durch andere Arten von skalaren Verarbeitungseinheiten und andere Verbindungsarchitekturstrukturen ersetzt werden. Bei einigen Ausführungsformen können die Blöcke TBT, PDP, MPM und XAG entfernt werden, was nur das konfigurierbare Logikmittel und die Pipelinesteuerfähigkeit als Grundmodule der Architektur beläßt.
  • Wie bemerkt, ist ein einmaliges Merkmal von RSPS-Bauelementen die Verwendung einer Pipelinebusanordnungs-(PBA-) Struktur 132, die erlaubt, daß beliebige der Funktionseinheiten mit den im ALP 120 konfigurierten Pipelinefunktionen verbunden werden können. Daraus ergibt sich ein schnelleres und wirkungsvolleres Mittel zur Datenübertragung zwischen dem ALP und den anderen Bauelementen. Gleichzeitig können mehrere funktionsmäßig unterschiedliche Pipelinesegmente im ALP benutzt werden, was eine selbständige Pipelineaktion zuläßt, die durch Programmausführung im RPIC 122 synchronisiert wird.
  • Nunmehr werden die allgemeinen Konzepte für die Elemente ALP 120 und RPIC 122 in RSPS-Bauelementen und die Integration des Schaltbusses 106 besprochen. Wie schon erwähnt, wird angenommen, daß der PDP 126 eine typische hochratige Pipeline-Arithmetikeinheit wie beispielsweise der von National Semiconductor Corporation, dem Inhaber der vorliegenden Erfindung, hergestellte Digitalsignalverarbeitungs-(DSP – Digital Signal Processing)Kern ist. Es ist zu bemerken, daß die RSPS-Architektur die Verwendung einer Vielzahl von PDP-Funktionseinheiten zuläßt und RSP-Bauelemente berücksichtigt, die keine PDP-Einheit aufweisen. Bei den Einheiten MPM 128 und XAG 130 kommen Grundsätze typischer hochratiger Speicher mit verschachteltem Cache zur Anwendung und sie werden hier nicht ausführlich beschrieben.
  • In einer Ausführungsform ist ALP 120 eine Erweiterung der FPGA-Architektur des CLAy von National Semiconductor und bewahrt die feinkörnige symmetrische Zellenstruktur dieser Vorrichtung. Die CLAy-Architektur einer konfigurierbaren Logikanordnung ist in dem am 29. März 1994 erteilten und dem Inhaber der vorliegenden Erfindung zugewiesenen US-Patent Nr. 5 298 805 mit der Bezeichnung "Versatile and Efficient Cell-to-Local Bus Interface in a Configurable Logic Array" (Vielseitige und wirkungsvolle Zellen-Lokalbus-Schnittstelle in einer konfigurierbaren Logikanordnung) beschrieben und dessen Inhalt wird hiermit durch Bezugnahme aufgenommen. Die Hauptveränderungen an der CLAy-Architektur betreffen Optimierungen für eine wirkungsvolle Implementierung von mehrstufigen Pipelinestrukturen, Steuerung von mehrfachen Pipelineketten und Zugriff auf die Pipeline-Datenbusse des RSPs. Andere konfigurierbare Logikmittel mit der angemerkten Funktionalität können ebenfalls benutzt werden.
  • Beschreibung des allgemeinen RSP-Blockschaltbildes
  • Nach der 3 besteht ein RSP-Bauelement typischerweise aus sechs Funktionseinheiten:
    ALP: Adaptiver Logikprozessor. Eine programmierbare Logikstruktur, die die Implementierung von anwendungsspezifischen Logikschaltungen zur Steuerung externer Bauelemente und Berechnungspipelines erlaubt. Der ALP besteht aus einer Anordnung von Logikzellen, programmierbaren Schnittstellen zu den Eingangs-/Ausgangsstiften einer RSP-Vorrichtung, programmierbare Verbindungen zwischen den Logikzellen und Zugriff zu den Daten der Pipelinebusanordnung (PBA). Der gesamte ALP kann der Implementierung einer Funktion zugeordnet sein oder es können mehrere kleinere Funktionen gleichzeitig ablaufen. Die ALP-Schaltungen werden von der RPIC unter Verwendung von Daten im MPM oder vom Schaltbus konfiguriert. Die Schaltungen im ALP werden während der Ausführung eines typischen Programms allgemein mehrere Male geändert. Schaltungen im ALP, bei denen die Konfiguration augenblicklich nicht geändert wird, bleiben aktiv.
    RPIC: Rekonfigurierbare Pipelinebefehlssteuerung (Reconfigurable Pipeline Instruction Controller). Verantwortlich für die Koordinierung des Betriebes zwischen Funktionseinheiten. Die RPIC erzeugt den Befehlsadreßstrom zur Programmausführung, decodiert die für jeden Befehl erforderliche Operation, erzeugt Adreßen zum Lesen und Schreiben von Daten, erzeugt Steuersignale für den ALP und PDP zur Befehlsausführung und steuert die Rekonfiguration des gesamten ALPs oder eines Teils desselben. Die Steuerschnittstelle zwischen RPIC und ALP benutzt ein Pipelinesteueranschlüsse (PCP – Pipeline Control Ports) genanntes Konzept, das ausführlich unten beschrieben wird.
    PDP: Pipeline-Datenprozessor (Pipeline Data Processor). Dies ist eine herkömmliche Pipeline-Arithmetikverarbeitungseinheit. Typischerweise enthält sie eine ganzzahlige Mehrfunktions-Arithmetik-Logikeinheit (ALU – Arithmetic Logic Unit). Sie kann auch fest zugeordnete Funktionseinheiten für Multiplikations- und Gleitkommaoperationen enthalten.
  • Der PDP empfängt vom MPM, TBT oder ALP eingegebene Daten.
    MPM: Speicher mit Mehrfachzugriff (Multiple Port Memory). Eine schnelle Speichereinheit, die gleichzeitiges Programmlesen, Datenlesen und Datenschreiben erlaubt. Bei kleinen Anwendungen liefert der MPM alle Erfordernisse des Direktzugriffspeichers (RAM – Random Access Memory). Bei größeren Anwendungen wird der MPM als Cachespeicher für außerhalb des RSPs liegende größere Speicher benutzt. Der MPM kann über den Schaltbus oder über einen fest zugeordneten Schnittstellenanschluß für einen externen Speicher beladen werden.
    TBT: Schaltbuskoppler (Toggle Bus Transceiver). Dieser stellt einen flexiblen Datenfluß zwischen mehreren RSP-Bauelementen bereit, wenn er in der SIMD-Konfiguration benutzt wird. Der TBT stellt auch eine standardmäßige Eingabe-/Ausgabeschnittstelle für externe Speicher-, Sensor- und Betätigungsbauelemente bereit. In einer Anordnung von N RSP-Bauelementen bilden die TBT-Schaltungen zusammen ein Mehrstufenverbindungsnetz (MIN – Multiple Stage Interconnect Network).
    XAG: Externer Adreßgenerator. Damit werden die Adreßierungsfähigkeiten des RSP für große chipexterne Speicher erweitert. Auch liefert der XAG die Adreßfolge für Einschaltkonfigurierung des ALPs von einer chipinternen oder chipexternen Nurlesespeicher-(ROM – Read Only Memory)Vorrichtung.
    PBA: Pipeline-Busanordnung (Pipeline Bus Array). Acht Sätze von Datenleitungen für Datenflüsse zwischen den Funktionseinheiten des RSPs. Die Aktivität des PBAs erlaubt gleichzeitige Operation der angeschlossenen Funktionseinheiten mit hoher Geschwindigkeit. Der allgemeine Gebrauch jeder PBA-Busdatenleistung ist wie folgt:
    PA: Programmadreßbus (Program Address Bus). Dieser definiert die Adreße des nächsten aus dem MBM auszulesenden Befehls. Der PA wird nur von der RPIC zur Programmfolgesteuerung gesteuert und getrieben.
    RP: Leseprogrammbus (Read Program Bus). Der MPM-Ausgang liefert Befehlsdaten zur RPIC zur Programmausführung. Der RP kann auch vom TBT zur Ausführung von über den Schaltbus gelieferten Befehlen angesteuert werden.
    RA: Leseadreßbus (Read Address Bus). Dieser liefert die Adreße zum Auslesen von Daten aus dem MPM. Die RPIC steuert den RA zum Zugreifen auf durch das Adreßfeld in einem Befehl angegebene Daten an. Der RA kann auch von einer ALP-Pipeline angesteuert werden, um Speicherzugriff für Datenanordnungen zu vereinfachen. Vom ALP erzeugte RA-Werte werden auf zweierlei Weisen von der RPIC synchronisiert. Wenn die Daten, auf die Bezug genommen wird, für den PDP bestimmt sind, dann wird eine konfigurierbare Adreßmodenerweiterung (CAMX – Configurable Address Mode Extension) benutzt. Wenn die Daten für den ALP bestimmt sind, synchronisiert die RPIC den RA mit dem RD-Busgebrauch.
    WA: Schreibadreßbus (Write Address Bus). Dieser liefert die Adreße zum Einschreiben von Daten in den MPM. Die RPIC steuert den WA zum Einschreiben von durch das Adreßfeld in einem Befehl angegebenen Daten an. Der WA kann auch von einer ALP-Pipeline angesteuert werden, um Speicherzugriff für Datenanordnungen zu vereinfachen. Vom ALP erzeugte WA-Werte werden auf zweierlei Weise von der RPIC synchronisiert. Wenn die Daten, auf die Bezug genommen wird, für den PDP bestimmt sind, dann wird eine konfigurierbare Adreßmodenerweiterung (CAMX – Configurable Address Mode Extension) benutzt. Wenn die Daten für den ALP bestimmt sind, synchronisiert die RPIC den WA mit dem WD-Busgebrauch.
    RD: Lesendatenbus (Read Data Bus). Dieser Bus führt Daten vom MPM für den PDP, Daten vom MPM für den ALP oder Daten vom ALP für den PDP. Datenübertragung vom ALP zum PDP ist stets mit einer CAMX synchronisiert.
    WD: Schreibdatenbus (Write Data Bus). Dieser Bus führt Daten vom PDP zum Einschreiben in den MPM, Daten vom ALP zum Einschreiben in den MPM oder Daten vom PDP zum ALP. PDP-ALP-Übertragungen werden unter Verwendung einer CAMX synchronisiert. ALP-MPM-Übertragungen werden durch Befehle "ALP speichern" oder durch eine unten beschriebene Folge selbständiger Pipelineaktion (APA – Autonomous Pipeline Action) synchronisiert.
    RX: Extern-Lesebus (Read External Bus). Dieser Bus führt chipexterne Daten vom TBT zum PDP, ALP oder MPM. Das Lesen von externen Daten wird durch die RPIC synchronisiert. TBT-ALP-Übertragungen speisen Daten in eine ALP-Pipeline, die mit anderen Orten verkettet sein kann. TBT-PDP-Datenübertragung wird durch Ausführung von Befehlen "IN" eingeleitet. TBT-ALP-Übertragungen werden durch Befehle "IN" mit CAMX oder durch selbständige Pipelineaktion eingeleitet.
    WX: Extern-Schreibbus (Write External Bus). Dieser Bus führt vom PDP oder ALP ausgegebene Daten über den Schaltbus zu externen Bauelementen. PDP-Ausgabe wird unter Verwendung von Befehlen "OUT" eingeleitet. ALP-TBT-Übertragungen werden durch Befehle "OUT" oder durch selbsttätige Pipelineaktion eingeleitet.
  • Zusätzlich zu den PBA-Bussen enthält ein typisches RSP-Bauelement weitere spezialisierte Daten- und Steuerbusse 131. Es gibt fünf Hauptdatenwege, die die Verbindung eines RSP- Bauelements mit anderen RSP-Bauelementen, chipexternen Speichern, Sensoren und Betätigungsgliedern ermöglichen. Die allgemeine Nutzung dieser Datenwege ist wie folgt:
    P: Haupt-Schaltbusschnittstellenbus (Primary Toggle Bus interface bus). Dies ist die vorgegebene Datenschnittstelle für einen externen Speicher. Wenn mehrere RSP-Bauelemente in einer SIMD-Anordnung benutzt werden, arbeiten die P- und Q-Busse zusammen, um Parallelverarbeitungsdatenflußmuster zu erstellen. Wenn nur ein RSP in einem System benutzt wird, fungiert der P-Bus als standardmäßiger Bus mit drei Zuständen (siehe 17).
    Q: Sekundärer Schaltbusschnittstellenbus (Secondary Toggle Bus interface bus). Wenn nur ein RSP in einem System benutzt wird, kann der Q-Bus als zweiter Bus mit drei Zuständen oder als rekonfigurierbarer Satz von Eingangs-/Ausgangsstiften für externe Speicher-, Sensor- und Betätigungsgliedverbindung benutzt werden. Wenn mehrere RSP-Bauelemente in einer SIMD-Anordnung benutzt werden, werden die Q- und P-Leitungen unter Verwendung eines "Mischverdrahtungs-"Musters zusammengeschaltet. P und Q arbeiten dann zusammen mit dem Satz TBT-Schaltungen, um ein MIN-Parallelverarbeitungs-Verbindungsnetz zu erstellen (siehe 17).
    A: Primärer Adreßbus (Primary Address Bus). Als Vorgabe wird der A-Bus zur Adressierung von externen Speicherbauelementen von der XAG-Einheit aus benutzt. Wenn er nicht für diesen Zweck benutzt wird, kann der A-Bus durch programmierbare Logik im ALP als rekonfigurierbare Eingabe-/Ausgabeleitungen zum Anschalten an externe Sensoren und Betätigungsglieder angesteuert werden.
    C: Steuerbus (Control Bus). Wenn mehrere RSP-Bauelemente in einer SIMD-Anordnung benutzt werden, bildet der C-Bus den Schaltbussteuervektor, der vom Bushauptsteuerungs-RSP (Bauelement N der 2) erzeugt wird. In diesem Fall ist C ein Eingangsvektor zu den Datenverarbeitungs-RSP-Bauelememten (Bauelemente 0 bis N – 1). Wenn nur ein RSP in einem System benutzt wird, kann der C-Bus durch programmierbare Logik im ALP zur Steuerung externer Sensoren und Betätigungsglieder angesteuert werden (siehe 17).
    B: Sekundärer Datenbus (Secondary Bus). Als Vorgabe ist der B-Bus eine sekundäre zweiseitig gerichtete Schnittstelle für externe Speicherbauelemente unter der Steuerung des XAGs. In dieser Betriebsweise können externe Daten zwischen dem RSP und externen Speichern ohne Verwendung des Schaltbusses übertragen werden. Dies ermöglicht eine höhere Leistung bei Anwendungen, die die gesamte Schaltbusbandbreite für Prozessor-Prozessor-Kommunikation benutzen. Der B-Bus kann vom ALP als rekonfigurierbare Eingabe-/Ausgabeleitungen für den Anschluß von externen Sensoren und Betätigungsgliedern angesteuert werden.
  • Zusätzlich zu diesen primären Daten und Adreßschnittstellenbussen sind mehrere einzelne Steuersignalanschlüsse an einem RSP-Baustein der Takteingabe, externen Speichersteuerung usw. zugeordnet.
  • Datenformate und Speicheradressierunasmodi
  • Ein RSP-Bauelement kann unter Verwendung von 16-Bit-, 32-Bit- oder 64-Bit-Datenwegen entwickelt werden. Für Darstellungszwecke wird ein RSP-Bauelement mit 16-Bit-Datenworten benutzt. Jede Speicheradresse bezieht sich dann auf ein 16-Bit-Datenwort. Genaue Einzelheiten der Befehlswortbit werden von der Art der benutzten PDP-Einheit abhängig sein. Die 4 zeigt das Format der Grundbefehlstypen für eine beispielhafte PDP- und ALP-Befehlsschnittstelle. Der Befehl des Typs Nulladresse (ZA – zero address) benutzt ein gesamtes Wort für den Operationscode (OP) des Befehls und wird für Operationen benutzt, die keine Befehlsadreß- oder Parameterfelder (beispielsweise Löschen Akkumulator, Beginnen Konfigurationsfolge) erfordern. Die Befehle mit dem Format kurze Konstante (SC – short constant) benutzen einen 8-Bit-Operationscode und ein 8-Bit-Konstantenfeld (C). SC-Befehle führen Funktionen wie beispielsweise Hinzuaddieren einer Konstante zu einem Akkumulatorergebnis durch. Das Format lange Konstante (LC – long constant) benutzt zwei Worte, um Operationen mit einer vollständigen 16-Bit-Konstante zu ermöglichen. Die meisten Arithmetikbefehle im RSP sind von dem Format Kurzspeicher (SM – short memory). Die oberen acht Bit definieren den Operationscode. Das höchstwertige Bit des unteren Bytes (i) ist das Steuerbit "indirekte Speicherreferenz" und die übrigen sieben Bit (A) definieren einen kurzen Adreßwert oder einen indirekten Speicherzugriffsmodus, wie unten beschrieben. Das Langspeicherformat (LM – long memory) erlaubt direkten Zugriff zu dem vollen Speicherbereich einschließlich chipexterner Speicherreferenz. Das LM-Format wird auch für Befehle des Typs "Sprung" und "Aufruf" benutzt. Das Speicherverschiebe-(MS – memory shift)Format erlaubt Speicherlese- und Schreiboperationen mit zugehöriger Datenverschiebung unter Verwendung eines Vier-Bit-Verschiebungszählfeldes (S). Die Speicherregisterbefehle (MR – memory register) ermöglichen die Übertragung von Daten zwischen dem Speicher und bis zu acht Adreßregistern in der RPIC.
  • Die Adreßwerte, auf die durch RSP-Befehle und die PA-, RA- und WA-Busse Bezug genommen wird, zeigen auf Werte in vier getrennten Adreßräumen in Abhängigkeit vom Befehlstyp:
    Programmspeicher – Ziel von Befehlen des Typs "Sprung" und "Aufruf";
    Datenspeicher – Ziel von ALP- und PDP-Datenlese- und Schreibbefehlen wie beispielsweise "Zuaddieren zum Akkumulator";
    E/A-Raum – Ziel von externen ALP- und PDP-Datenübertragungen. Wird durch die Befehle des Typs "in" und "out" benutzt;
    Konfigurierungsraum – Werte der programmierbaren ALP-Kernzellen- und Verbindungsfunktion. Die zur Definierung der ALP-Schaltungen erforderlichen Daten sind in einem linearen Adreßraum zur Änderung durch das Programm adressierbar. Ziel der Konfigurations-Lese- und Schreibbefehle.
  • Auf den Datenspeicherraum wird direkt im RSP zugegriffen, wenn das indirekte Adressierungsbit des Befehls einen Wert "0" aufweist. In diesem Fall wird das Sieben-Bit-Adreßfeld mit einem "Datenseite"-Adreßwert in der RPIC verkettet, um die vollständige Datenspeicheradresse zu bilden.
  • Der Wert "Datenseite" kann durch einen Befehl "Seite setzen" geändert werden. Die meisten Datenspeicherbezugnahmen werden unter Verwendung indirekter Adressierung (i Bit ist "1") durchgeführt. In diesem Fall beziehen sich die niedrigeren drei Bit des Adreßfeldes (Feld R) auf das zu benutzende Adreßregister in der RPIC und die übrigen vier Bit definieren den Adressierungsmodus (AM) nach Tabelle 1. R0 stellt den Inhalt des Adreßregisters 0 dar.
  • Tabelle 1. RSP-Befehlsadreßmodi
    Figure 00310001
  • Figure 00320001
  • Adreßmodi 0 bis 5 stellen typische Adressierungsmodi dar und sind von der genauen Struktur des PDP-Moduls abhängig. Adreßmodi 8 bis 11 sind einmalig für das RSP-Konzept der vorliegenden Erfindung und werden als konfigurierbare Adreßmodi (CAM – Configurable Address Modes) bezeichnet. Der ALP-Modus erlaubt, daß die Adresse für eine Speicherschreib- oder Leseoperation von einer "RA-Pipeline" im ALP zum Lesen und durch eine "WA-Pipeline" im ALP zum Datenschreiben geliefert wird. Die Adreßmodi ALPR0 und ALPR1 erlauben die direkte Verwendung der Ausgabe von einer von zwei ALP-Pipelines als Operand für eine Operation im PDP. Der Adreßmodus ALPW erlaubt die direkte Verwendung von Daten aus dem PDP als Operandeneingabe in eine oder mehrere ALP-Pipelines. Zusätzlich zum Zugriff auf die Pipeline-Busanordnung (PBA) im ALP durch konfigurierbare Adreßmodenoperationen kann durch MPM-ALP- und ALP-MPM-Übertragungsbefehle explizit auf ALP-Daten Bezug genommen werden. Datenübertragungen können auch unter Verwendung der selbstständigen Pipelinesteuerungs-(APC – Autonomous Pipeline Control)Fähigkeit auftreten, die unten erklärt wird. Es ist zu bemerken, daß, obwohl die Tabelle 1 eine mögliche Menge von Registerzuweisungen zeigt, andere Zuweisungen in Abhängigkeit von den Erfordernissen des ALP-Kerns benutzt werden können.
  • Allgemeine Struktur des adaptiven Logikprozessors
  • Der adaptive Logikprozessor (ALP – Adaptive Logic Processor) besteht aus einer Anordnung programmierbarer Logikzellen und einer Anordnung programmierbarer Schalter, die den Datenfluß zwischen den Zellen erlauben. Diese Elemente bilden ein konfigurierbares Logikmittel, das in die RSP-Architektur eingebaut ist. Der ALP enthält die Pipeline-Busanordnung (PBA) und rekonfigurierbare Eingangs-/Ausgangsanschlüsse. Die 5 stellt die Grundelemente des ALP 120 in einer Ausführungsweise mit 32 horizontalen Zellen und 64 vertikalen Zellen dar.
  • Im allgemeinen Fall besteht ALP 120 aus drei Schaltungsschichten, die für die RSP-Architektur spezifische Funktionen durchführen. Die Grundschicht wird die "Kernzellenanordnung" genannt und besteht aus einer zweidimensionalen Anordnung von logischen Kernzellenschaltungen 150. Jede Kernzellenschaltung enthält ein Konfigurationsregister, das unter Steuerung des RPIC-Blocks beladen werden kann, wenn ein Befehl "Rekonfiguration" ausgeführt wird. Der Wert im Konfigurationsregister definiert die von der Kernzelle durchzuführende Logikfunktion und definiert Verbindungen für die Logikeingabe- und Ausgabesignale der Kernzelle. Die konfigurierte Funktion einer Kernzelle ist typischerweise eine Boolsche Operation mit mehreren Eingaben und mehreren Ausgaben, die einen oder mehrere Daten-Flipflops enthalten kann. Bei einer typischen Ausführungsform enthalten einige oder alle der zur Implementierung der Boolschen Operation benötigten Signale Verbindungen zu den nächsten Nachbarkernzellen. Dies stellt die unterste Ebene von Kernzellenverbindungen dar.
  • Die zweite logische Schicht der konfigurierbaren Logikanordnung (ALP) besteht aus Signalleitungen und Schaltern, die die Übertragung von Signalwerten über eine Entfernung von mehreren Kernzellen erlauben. Dies wird als "Lokalbusanordnung" bezeichnet. Jede Kernzelle kann eine Eingabe von einem oder mehreren Lokalbusanordnungsverdrahtungssegmenten empfangen und kann Daten zu einem oder mehreren Lokalbusanordnungssegmenten liefern. Jeder Satz von Lokalbusverdrahtungswegen überspannt einen als "Kernblock" 152 in der Figur bezeichneten Bereich. Die Schaltungen, die einen Signalaustausch zwischen Kernblöcken erlauben, werden (in der Figur nicht gezeigte) "Verstärker-"Schaltungen genannt. Jede Verstärkerschaltung enthält auch ein Konfigurationsregister, das definiert, wie Signale von einem Kernblock zu einem anderen fließen. Die zweite logische Schicht der konfigurierbaren Logikanordnung enthält auch Mittel zum Verbinden von Signalen in der Anordnung mit den rekonfigurierbaren E/A-Anschlußtreibern 153, die die Hauptschnittstelle zu einer RSP-Vorrichtung darstellen. Jeder Anschluß am RSP weist eine programmierbare Schnittstellenschaltung auf, die durch ein Konfigurationsregister gesteuert wird. Damit kann jeder Anschluß eine Vorgabebedeutung (wie beispielsweise eine der Eingangsleituagen vom Schaltbus) oder eine rekonfigurierte Verwendung (Logikeingang, Logikausgang oder zweiseitig gerichteter Dreizustandsbustreiber) aufweisen. In der Figur sind rekonfigurierbare E/A-Anschlußmittel 153 als die Leitungen "A", "B", "C", "D", "P", und "Q" gezeigt. Auch werden an der Peripherie der konfigurierbaren Logikanordnung detaillierte Steuersignale typischerweise zur Verfügung gestellt. In der zweiten logischen Schicht sind zur Implementierung der Pipelinestufen einer typischen Anwendung konfigurierbare Takt- und Rücksetzsignale über die gesamte Anordnung verteilt.
  • Die dritte logische Schicht der konfigurierbaren Logikanordnung (ALP) implementiert die Pipeline-Busanordnung (PBA) 132 und Pipeline-Steueranschlüsse (PCP) 134. Die Signalleitungen in dieser Schicht überqueren das gesamte horizontale Ausmaß der Anordnung und teilen die Anordnung in zwei logische Bereiche ein. Die PBA-Leitungen durchqueren das "Datenweg-"Gebiet 156, während die PCP-Leitungen das "Steuer-"Gebiet 158 überqueren. Im allgemeinen Fall ist eine spezifische ALP-Schaltung ein "Pipelinesegment" 160 genanntes rechteckiges Gebiet der Anordnung, das einen Datenweg enthält, der mit einem oder mehreren PBA-Busen und einem Steuerabschnitt, der an einen oder mehrere PCP-Leitungssätze angeschaltet ist, verbunden ist. Im allgemeinen können gleichzeitig mehrere Pipelinesegmente im ALP resident sein und jedes beliebige Segment kann rekonfiguriert werden, ohne die Operation der übrigen Segmente zu beeinflussen. Der Vorgang des Änderns von nur einem Teil der Logikanordnung ohne Beeinflussung der Operation des übrigen Teils wird "teilweise Rekonfiguration" genannt. Teilweise Rekonfiguration erlaubt Optimierung der Nutzung des konfigurierbaren Logikmittels durch die Entwicklungssoftware. Die Verbindung der Kernzellen- und Lokalbussignale mit den PBA- und PCP-Signalen wird durch horizontale Verstärkerschaltungen durchgeführt, die eine direkte Verbindung eines Lokalbussegments mit einer beliebigen der möglichen PBA-Bitleitungen erlauben, die die Zeile der Anordnung überqueren. Dadurch kann ein Pipelinesegment ohne ein Erfordernis zusätzlicher Signalwegeführung auf jede beliebige horizontale Lage in der Anordnung verlegt werden. Durch dieses Wiederverlegungsmerkmal wird die automatische Erzeugung der zur Durchführung einer Berechnung benötigten konfigurierbaren Logikschaltungen dramatisch vereinfacht.
  • Jede Kernzelle 150 der ALP-Anordnung 120 kann zur Implementierung einer beliebig großen Anzahl von Logikfunktionen programmiert werden. Dazu gehören Operationen wie logisches UND, ODER, XOR, Multiplexer- und Flipflop-Operationen. Wie bemerkt, erlaubt die Peripherie der Kernzellenanordnung die Verbindung mit den programmierbaren E/A-Anschlüssen 153 an einem RSP-Baustein. Jede Kernzelle kann (mittels der programmierbaren Verbindungsschalter) zum Zugreifen auf eines oder zwei Signale aus den vier Nachbarnkernzellen programmiert werden. Jede Kernzelle kann auch Daten auf einem (in der Figur mit gestrichelten Linien gezeigten) Lokalbusanordnungs-(LBA-)Segment empfangen oder übertragen. Wie bemerkt, bilden die LBA-Verbindungen für eine Teilmenge der Kernzellen einen (bereits erwähnten) sogenannten Kernblock. Der Kernzelle und dem LBA-Netz überlagert ist die Pipeline-Busanordnung (PBA) 132, die Signale führt, die die gesamte Anordnung in der horizontalen Richtung überqueren. Wie bemerkt, erlauben "Verstärker" genannte Schaltungen die Weiterführung der LBA-Daten zu Nachbarblöcken, den programmierbaren E/A-Anschlüssen und der PBA. Ein Satz programmierbarer Takt- und Rücksetzsignalgeneratoren 154 überqueren die Anordnung in der vertikalen Richtung. Diese Signale ermöglichen, daß jede Spalte als Pipelinestufe in der Anordnung fungiert. Die PBA-Datenleitungen 132 erlauben Verbindung mit den Bussen RD, WD, RX, WX, RA und WA im RSP. Die PCP-Steuerleitungen 134 stellen programmierbare Steuer- und Statusleitungen dar, die zur ALP-Pipelinesteuerung direkt mit der RPIC verbunden sind. Die 5 zeigt den typischen Bereich, der von einem programmierbaren Pipelinesegment 160 einer Berechnung benutzt wird. Jedes Pipelinesegment besteht aus einer Anzahl von Pipeline-Datenwegstufen im "Pipelinedatenweg-"Bereich 156 des ALPs und den zugehörigen Pipelinesteuerschaltungen im "Pipelinesteuerbereich" 158.
  • Wie bemerkt, besteht ein einmaliges Merkmal des ALP darin, daß die Definitionen der LBA-PBA-Verbindung im Pipelinesegmentkonfigurationsblock erlauben, daß sich das Pipelinesegment an einer beliebigen horizontalen Stelle im ALP befindet. Dadurch können gegenwärtig unbenutzten Pipelinesegmenten je nach Bedarf der aktuellen Aufgabe im Anwendungsprogramm neue Pipelinesegmente überlagert werden. In einem RSP-basierenden System wird die detaillierte Konfiguration und Programmierung der benötigten Pipelinesegmente während des Programmkompilierungsprozesses erstellt. Die zur Konfigurierung eines Pipelinesegments benötigten Daten werden als Konfigurationsblock (CB – Configuration Block) bezeichnet. CB-Daten werden im Programmadreßraum des RSPs gespeichert und unter Verwendung von Konfigurationssteuerbefehlen in den ALP eingeladen.
  • Allgemeine Konzepte der RPIC
  • Die rekonfigurierbare Pipeline-Befehlssteuerung (RPIC -Reconfigurable Pipeline Instruction Control) ist dafür verantwortlich, die Reihenfolge der Befehlsausführung unter Verwendung der Programmadreßbusleitungen (PA) zu bewahren, auszuführende Befehle vom Speicher unter Verwendung der Leseprogramm-(RP – Read Program) Busleitungen zu empfangen und den Pipeline-Datenfluß in der Pipeline-Busanordnung zu koordinieren. Auch führt die RPIC vom Schaltbuskoppler empfangene Befehle zur Implementierung von Parallelverarbeitungsstrukturen aus. Wie bemerkt, bilden die übrigen sechs Busse (siehe 3) die Pipeline-Busanordnung (PBA), die gleichzeitigen Datenfluß zwischen der Parallelverarbeitungsverbindungsstruktur (TBT), dem konfigurierbaren Logikmittel (ALP), dem Speichermittel (MPM) und dem skalaren Prozessor (PDP) erlaubt. Im allgemeinen Fall kann die PBA mehr oder weniger Busse als gezeigt aufweisen, sollte aber mindestens einen Datenadressbus, eine interne Datenbusverbindung mit dem skalaren Prozessor, eine Busverbindung zum Speicher und eine Verbindung zu der Parallelverarbeitungsverbindungsstruktur enthalten. In dem besprochenen Beispiel besteht die PBA aus sechs Bussen für Speicherleseadresse (RA – read address), Speicherschreibadresse (WA – write address), Schaltbusdateneingabe (RX), Schaltbusdatenausgabe (WX), Lesedaten (RD – read data) und Schreibdaten (WD – write data). Die Busse RD und WD sind jeweils in zwei getrennte ALP-Block-interne Busse aufgeteilt. Dies ermöglicht einen getrennten Datenfluß zwischen dem ALP-Block, dem Speicherblock und dem skalaren Prozessor. Im Fall der allgemeinen Architektur können der PBA zusätzliche Busse hinzugefügt werden, einschließlich beispielsweise der Programmadresse-(PA) und Leseprogramm- (RP-)Busse hinzugefügt werden.
  • Der Pipelinesteuerblock steht in Wechselwirkung mit dem skalaren Prozessor zur Ausführung von standardmäßigen Befehlen unter Verwendung von herkömmlichen Pipeline-Steuerkonzepten. Der RPIC-Block steht mit dem konfigurierbaren Logikmittel unter Verwendung eines als Pipeline-Steueranschlüsse (PCP – Pipeline Control Ports) bezeichneten Satzes von Leitungen in Wechselwirkung. Jeder PCP erlaubt, daß eine konfigurierbare Logikschaltung im ALP mit den außerhalb der konfigurierbaren Logik vorkommenden Pipeline-Datenströmen in Wechselwirkung tritt. Typischerweise besteht eine PCP-Menge von Steuersignalen für jeden Pipeline-Busanordnungsbus. Die Grundoperationen jedes Pipeline-Steueranschlusses, die Implementierungen der RSP-Architektur gemeinsam sind, sind folgende:
  • Funktionsanforderung: Die RPIC erkennt Befehle im Programm, die im Gegensatz zu einer Ausführung im skalaren Prozessor PDP durch die Schaltungen im ALP auszuführen sind. Die RPIC zeigt diesen Zustand der ALP-Schaltung an, indem sie ein Signal im PCP ändert. Wenn die ALP-Schaltung für den Befehl nicht bereit ist, wird die RPIC die Befehlsausführungspipeline aufhalten. Man beachte, daß die RPIC NICHT auf die Vollendung einer Befehlsausführung im ALP wartet, da eine typische ALP-Funktion mehrere Taktzyklen erfordert. Die RPIC kann im Gegenteil mit jedem Taktzyklus eine neue Funktionsausführung einleiten. Dies ist der typische Fall für die Implementierung der tiefen Pipelines in einer Anwendung. Die Funktionsausführungssteuerfähigkeit wird auch zur Implementierung der Fähigkeiten zur Erweiterung des Befehlsvorrats für eine Anwendung benutzt.
  • Proarammdatenanforderung: Diese Art von Übertragung wird dann durchgeführt, wenn ein skalarer Befehl auf einem ALP-Bus als die Adresse für Daten im Speicher oder als die Daten für einen Befehl Bezug nimmt. Diese werden als "konfigurierbare Adressmodi" bezeichnet. Beispielsweise kann die Ausgabe einer ALP-Pipeline direkt als Operand für einen Befehl "ADD" im Skalarprozessor benutzt werden. Als Alternative können Daten unter Verwendung dieses Mechanismus direkt vom skalaren Prozessor zu einer ALP-Schaltung übertragen werden. Abschließend kann der Befehl des skalaren Prozessors die Ausgabe einer ALP-Pipeline als Adresse für eine Speicherschreib- oder Leseoperation benutzen. Durch den RPIC-Block wird die Reihenfolge der Datenübertragung bewahrt, indem gegebenenfalls Wartezyklen eingespeist werden, um ordnungsgemäßen Pipeline-Betrieb aufrechzuerhalten. Der Steuermechanismus der Programmdatenanforderung wird zur Implementierung von Fähigkeiten der Verbesserung des Befehlsvorrates und komplizierter Adreßerzeugung für eine Anwendung benutzt.
  • Selbständige Datenanforderung: Eine ALP-Schaltung kann Datenübertragungen zu/von dem Speichermittel und zu/von dem Schaltbuskoppler unabhängig von der Programmbefehlsfolge anfordern. Diese werden "selbstständige" Datenübertragungen genannt. In einem typischen Fall wird die gesamte Berechnung in einer Gruppe von RSP-Vorrichtungen unter Verwendung des Mechanismus der selbstständigen Datenübertragung ohne Befehlsausführung für die einzelnen Schritte durchgeführt. Zur Ausgabe von Daten zum Speicher oder dem Schaltbus aktiviert die ALP-Schaltung ein PCP-Signal zur RPIC, das eine Ausgabeübertragung anfordert. Der RPIC-Block unternimmt dann die notwendigen Schritte zum Einschreiben der Daten in den Speicher oder Ausgeben der Daten über den Schaltbus. Wenn das gewünschte Mittel "besetzt", ist, muß die ALP-Schaltung weitere Operationen solange aufhalten, bis das PCP-Signal anzeigt, daß das Mittel verfügbar ist. Eine ähnliche Wechselwirkung tritt für Speicherdatenlese- und Schaltbusdatenleseoperationen ein. Selbstständige Datenübertragungen werden zur Implementierung von Pipelineverkettung von einer RSP-Vorrichtung zu einer anderen über den Schaltbus benutzt. Der Mechanismus der selbständigen Übertragung wird auch dazu benutzt, direkten Zugriff zum Speichermittel durch eine oder mehrere Stufen in einer tiefen Pipelinestruktur zu erlauben.
  • Im allgemeinen Fall enthält der Pipeline- Steueranschluß (PCP) typischerweise zusätzliche Signale. Bei der beispielhaften RSP-Implementierung, die besprochen wird, werden folgende zusätzliche Operationen unterstützt:
  • Pipeline-Zustand: Die konfigurierbare Logikschaltung erzeugt ein oder mehrere Status-Zustandssignale, die durch den Befehlsausführungsstrom unter Verwendung von Befehlen "bedingter Sprung" überwacht werden können. Diese Fähigkeit wird als Teil des norma len Rechenvorgangs zur Auswahl von alternativen Befehls flußströmen benutzt.
  • Pipeline-Unterbrechung: Die konfigurierbare Logikschaltung erzeugt eine Unterbrechungsanforderung an den RPIC-Block, die die Ausführung eines spezifischen Softwareunterprogramms bewirkt. Die Unterbrechung wird durch die Ausführung eines Funktionsanforderungsbefehls an den PCP bestätigt, der die Unterbrechungsanforderung erzeugte. Mit diesem Mechanismus kann die ALP-Schaltung den skalaren Prozessor als Teilprozessor für die konfigurierbare Logik benutzen. Diese Fähigkeit wird auch zur Implementierung von eingabe-/ausgabevorrichtungsabhängigen Berechnungen benutzt.
  • Wie bemerkt, ist die rekonfigurierbare Pipelinebefehlssteuerungs-(RPIC-)Einheit im RSP verantwortlich für die Steuerung der Programmausführung, Koordinierung der Tätigkeiten des Datenflusses zwischen den Verarbeitungseinheiten und Konfigurierung der programmierbaren Schaltungen im ALP. Die Grundfunktionsoperationen der RPIC lassen sich in fünf Kategorien einteilen:
  • Einschaltinitialisierung – Setzen der Steuer logik-Flipflops und programmierbaren Logik auf Vorgabezustände. Dieser Vorgang kann auch nach der Einschaltinitialisierung durch Aktivieren eines externen Konfigurationsfreigabesignals oder durch Ausführung des Befehls "REBOOT" eingeleitet werden.
  • Dynamische Rekonfigurierung – RSP-Befehle erlauben, daß alle oder ein Teil der ALP-Schaltungen während der Progrmmausführung geändert werden können.
  • Proarammfluß – Auslesen der erforderlichen Befehlsfolge für das Anwendungsprogramm aus dem MPM. Dazu gehört auch die Ausführung von "Sprung-" und "Aufruf-"Befehlen, die den aktuellen Wert des Programm-Adreßregisters (PAR) ändern.
  • MPM-Datenzugriff – Erzeugt die Adressen für Datenlese- und -schreiboperationen am MPM. Die konfigurierbaren Adreßmodi (CAM – Configurable Address Modes) ermöglichen der RPIC die Benutzung von durch ALP-Pipelinesegmente erzeugten Adressen.
  • Pipeline-Synchronisierung – Datenflüsse im ALP, MPM, PDP und TBT werden als unabhängige Pipelineketten behandelt. Die RPIC erzwingt den Pipeline-Verzögerungszustand durch Einfügen von Wartezuständen in jeder Situation, in der die Daten nicht in einem bestimmten Taktzyklus zur Verfügung stehen.
  • Für die folgende Besprechung wird angenommen, daß die Operation der Pipeline im PDP auf der in 6 dargestellten klassischen Befehlsausführungsfolge nach Von Neumann basiert. Solange kein Konflikt besteht, wird in dem "Abruf-"Zustand in jedem Taktzyklus ein neuer Befehl ausgelesen. Jeder Befehl schreitet dann durch den "Decodier-"Zustand im nächsten Taktzyklus fort. Bei normalen PDP-Befehlen (wie beispielsweise in einen Akkumulator addieren) werden die Daten beim dritten Taktzyklus des Befehls aus dem MPM ausgelesen und dann wird der Befehl schließlich beim vierten Taktzyklus ausgeführt. Vom Programm eingeleitete Befehlsausführung in einem ALP-Pipelinesegment bedient sich bis zu dem Punkt, an dem der Befehl ausgeführt wird, desselben Schemas. ALP-Pipelinesegmente erfordern im allgemeinen einen zusätzlichen Ausführungstaktzyklus für jede Pipelinestufe im Segment. Die RPIC wartet nicht, bis die Daten alle Stufen einer ALP-Pipeline durchlaufen haben. Wenn ein Befehl ausgeführt wird, der sich auf einen ALP- Pipelinebusgebrauch bezieht, wird die RPIC die Befehlsfolgenpipeline solange aufhalten, bis die Pipelinesegmentsteuerschaltung im ALP den Zustand "Pipeline bereit" anzeigt. RSP-Befehle, die Daten aus dem ALP auslesen, und die konfigurierbaren Adreßmodi erfordern gleichermaßen die Signale "bereit" von der konfigurierbaren Pipelinesteuerschaltung, ehe sie mit der Operation fortschreiten.
  • Die RPIC ist auch für die Koordinierung der selbstständigen Pipelinesegment-(APS – Autonomous Pipeline Segment)Operationen verantwortlich. Jedes ALP-Pipelinesegment kann so ausgelegt werden, daß es unabhängig von der normalen Programmausführungsfolge arbeitet. Das heißt, ein APS erfordert keine Befehlsausführung, um durch die Pipelinefolge fortzuschreiten. Schaltungen des APS-Typs werden hauptsächlich für asynchrone Schnittstellen zu externen Sensoren und Betätigungsgliedern benutzt, aber sie werden auch für die Schaltbussteuerung des C-Vektors für das Bushauptsteuerungs-RSP-Bauelement in einer SIMD-Anordnung benutzt. Die "Bereit"-Signalschnittstelle wird dann von der RPIC zur Synchronisierung der Programmausführung mit dem APS-Betrieb benutzt.
  • Wie bemerkt, basiert die Steuerschnittstelle zwischen der RPIC und den Pipelinesegmenten im ALP auf einem Pipeline-Steueranschluß (PCP) genannten Protokoll. Für eine spezifische RSP-Implementierung können gleichzeitig mehrere PCP bis zu einer Höchstzahl im ALP aktiv sein. Die RPIC/ALP-Steuerschnittstelle besteht aus einer Menge von Pipeline-Busanordnungs-(PBA – Pipeline Bus Arrangement)Signalen (die die PCP-Signale bilden), die die Länge des Steuerabschnitteils des ALP durch laufen. Diese Steuerschnittstelle wird konzeptionell in der 7 dargestellt, die die Steuerschnittstelle zwischen den RPIC- und ALP-Modulen und die für jeden Pipeline-Steueranschluß (PCP – pipeline control port) benötigten (mit PCPj in der Figur markierten) Signale zeigt. Für die gegenwärtige Besprechung wird ein RSP-Bauteil mit höchstens acht PCP angenommen. Die Funktion jedes der Pipeline-Steueranschlüsse ist in Tabelle 2 zusammengefaßt.
  • Tabelle 2. Beispiel eines Satzes Pipelinefunktionen
    Figure 00450001
  • Die Steueranschlüsse PSRA, PSWA, PSRD und PSWD werden zur Implementierung der konfigurierbaren Adreßmodusoperationen benutzt. Die Steueranschlüsse PSWX und PSRX ermöglichen die Implementierung von selbstständigen Pipelines für Datenübertragungen über den Schaltbus. Die Steueranschlüsse PSA und PSB haben keine festgelegte Funktionsbedeutung. Es können mehr als ein Steueranschluß kombiniert werden, um einen logischen Steueranschluß mit getrennten Steuerungen für unterschiedliche Operationen innerhalb dieses Segments zu bilden. Beispielsweise kann die ALP-Schaltungsimplementierung die Steueranschlüsse PSRA und PSWA kombinieren, so daß dieselbe Schaltung zur Erzeugung von sowohl Schreib- als auch Leseadressen benutzt wird. Die RPIC liefert alle 16 Bit des Befehlsregisters an den ALP. Die ALP-Steuerschaltungen decodieren dann das gesamte Wort oder einen Teil desselben, um die Operation für einen bestimmten Befehl zu spezialisieren oder um die Anzahl von durch ein einziges Pipelinesegment durchgeführten Funktionen zu erweitern. Wie bemerkt, zeigt die 7 die sechs für jeden Pipeline-Steueranschluß (PCP – pipeline control port) benötigten Signale:
  • ACTj: Aktives Pipelinesegment – wenn durch die ALP-Steuerschaltung für diesen Pipelineanschluß auf LOW gesetzt, zeigt dieses Signal an, daß der Pipelineanschluß aktiv ist und auf die anderen RPIC-Anschlußsteuerungen reagieren wird. Wenn dieses Signal auf HI belassen wird, dann ist die Anschlußsteuerschaltung nicht verfügbar und die RPIC erzeugt eine Falle unzulässiger Befehl, wenn das Programm versucht, diesen Pipelineanschluß anzusteuern. Dies wird zur Fehlersuche in Anwendungsprogrammen benutzt.
  • FRQj: Funktionsanforderung (Function Request) an Anschluß j – ein Signal mit aktivem LOW zeigt der ALP-Steuerschaltung an, daß das IR- (Instruction Register) Wort gültig ist und daß die Steuerschaltung mit der Ausführung des Befehls beginnen sollte.
  • FRYj: Funktion bereit (Function ready) für Anschluß j – ein Signal mit aktivem LOW zeigt an, daß die ALP-Steuerschaltung den vom FRQj-Signal angeforderten Befehl genommen hat. Die RPIC wird keinen weiteren Befehl an den ALP ausgeben, bis dieses Signal auf LOW gesetzt ist.
  • DRQj: Datenanforderung (Data Request) für Anschluß j – ein Signal mit aktivem LOW zeigt an, daß die RPIC Daten für eine Schreibfunktion bereit hat oder Datenausgabe für eine Lesefunktion anfordert. Dies entspricht dem Zustand "Daten" in der normalen Pipelinebefehlsausführungsfolge.
  • DRYj: Daten bereit (Data Ready) für Anschluß j – ein Signal mit aktivem LOW zeigt an, daß die ALP-Steuerschaltung Daten zum Lesen bereit hat oder die Schreibdaten als Eingabe angenommen hat. Für Daten, die zum ALP übertragen werden, wird die RPIC eine nachfolgende Datenanforderung solange aufhalten, bis dieses Signal auf LOW gesetzt ist. Für Daten, die vom ALP übertragen werden, hält die RPIC die Befehlspipeline solange auf, bis dieses Signal gesetzt ist und eine gültige ALP-Ausgabe anzeigt.
  • ARQj: Selbständige Anforderung (Autonomous Request) j – ein Signal mit aktivem LOW zeigt an, daß die ALP-Steuerschaltung eine selbstständige Datenübertragung auf dem zugehörigen Datenbus anfordert.
  • ARYj: Selbstständig bereit (Autonomous Ready) für Anschluß j – ein Signal mit aktivem LOW von der RPIC zur Pipeline-Steuerschaltung; zeigt an, daß die angeforderte Übertragung abgeschlossen ist.
  • STATj: Status für Anschluß j – die RPIC benutzt dieses Signal zur Implementierung von bedingten Sprungbefehlen, die von dem aktuellen Zustand des Pipelinesegments abhängig sind. Die Bedeutung des Zustandssignales ist abhängig von der ALP-Schaltung und entspricht einem nützlichen Zustand in der Anwendung.
  • Beispielsweise kann das STAT-Signal anzeigen, daß externe Daten zur Verfügung stehen, einen Arithmetik-Überlauf usw. Das STAT-Signal für einen Steueranschluß kann durch die Konfigurierungsfolge zur Implementierung einer asynchronen Unterbrechung zur RPIC programmiert werden.
  • Für allgemeine Pipelinesegmente im ALP erfordert die normale konfigurierbare ALP-Befehlsausführung die Verwendung von sowohl den FRQ/FRY- als auch den DRQ/DRY-Steuerungen. Daten zu und von für konfigurierbare Adreßmodi benutzten Pipelines erfordern nur die DRQ/DRY-Steuersignale. Selbstständige Pipelines benutzen die ARQ/ARY-Signale.
  • Die 8 zeigt ein Anwendungs-Pipelinesegment, das eine Addier-/Akkumulierfunktion durchführt. Diese Pipeline weist eine einzelne Stufe auf, so daß die Pipelinefunktion in einem einzelnen Taktzyklus durchgeführt wird. Das Segment benutzt zwei PCP, einen für Dateneingabe und einen für Datenausgabe. Die Leitungen ACT0 und ACT1 werden auf LOW gesetzt, um anzuzeigen, daß die PCP aktiv sind. Die Funktion ist stets für beide Anschlüsse bereit, so daß die Leitungen FRY0 und FRY1 ebenfalls auf LOW gesetzt werden. Gleichermaßen steht das Pipelinesegment stets zum Addieren eines neuen Wertes und zur Ausgabe eines Wertes zur Verfügung, so daß die Signale DRY0 und DRY1 ebenfalls auf LOW gesetzt werden. Jedesmal wenn ein Befehl "laden ALP" ausgeführt wird, wird das DRQ0-Signal abgetastet, um anzuzeigen, daß neue Daten verfügbar sind. Dieses Signal wird dann zur Freigabe des Pipelinetaktes für die Pipeline-Registerspalte benutzt.
  • Die RPIC-Einheit enthält Konfigurationsregister, die die Fähigkeit jedes Pipeline-Steueranschlusses anzeigen. Die Steuerbit für jeden PCP sind aus Tabelle 3 ersichtlich:
  • Tabelle 3. RPIC-Steuerregisterbit für PCP-Steuerung
    Figure 00500001
  • Die Operation von selbstständigen Pipelines ist von dem PBA-Datenbus abhängig, der von der durch die Anschlußnummer definierten Pipeline benutzt wird. Ein selbstständiger Anschluß kann mit anderen Anschlüssen kombiniert werden, um eine komplexe Pipelinesegmentsteuerschnittstelle zu erstellen.
  • Die Tabelle 4 zeigt eine beispielhafte Menge von selbstständigen Übertragungen für jeden Steueranschluß. Die selbstständigen Pipelines PSWX und PSRX können zur Verkettung von Pipelines von einem RSP-Bauelement zu einem anderen benutzt werden. Die selbstständigen Pipelines PSRD und PSWD werden normalerweise für Preprozessor- und Postprozessor-Datenhandhabung für Berechnungen unter Befehlssteuerung im PDP benutzt. Die Operationen werden unter Verwendung der durch Befehl eingeleiteten Steuersignale DRQ und DRY für die zugehörige Pipeline synchronisiert. Die selbstständigen Übertragungen PSA und PSB werden typischerweise für Sensordateneingabe und Betätigungsgliedsteuerung benutzt, die hochratige Datenübertragungen erfordern, die im Bezug auf die aktuelle Programmausführungsaufgabe als "Hintergrund-"Aktivität durchgeführt werden können. Beispielsweise wird ein Datenblock in den MPM eingelesen, während ein vorheriger Block durch das Programm verarbeitet wird. Die Konzepte "verzweigen" und "verbinden" der parallelen Verarbeitung werden zur Synchronisierung der selbstständigen und Programmausführungsaufgaben benutzt. Die selbstständigen Pipelines PSRA und PSWA werden zur Implementierung des Äquivalents von "Speicherdirektzugriffs-"(DMA – direct memory access)Übertragungen über den Schaltbus benutzt.
  • Tabelle 4. Selbstständige Pipeline-Datenübertragungen
    Figure 00520001
  • Die Schaltbussteuerungen für die selbstständigen Übertragungen, die den TBT adressieren, werden durch Register in der RPIC-Einheit definiert. Die Werte dieser Register werden durch normale Befehlsausführung definiert. Die RPIC führt eine Befehlsmenge aus, um die ALP-Pipeline-Verarbeitungsfähigkeit mit den Arithmeticverarbeitungsfähigkeiten des PDP und den Eingabe-/Ausgabeübertragungen zu synchronisieren. Für diesen Zweck werden acht Hauptbefehle benutzt, einer für jeden Pipeline-Steueranschluß. Von der ALP-Steuerschaltung können zusätzliche Befehlsregister-(IR-)Bit decodiert werden, um eine große Menge von anwendungsabhängigen Befehlen zu erstellen. Die direkten Befehle für diesen Zweck sind in der Tabelle 5 für die Beispielsmenge von Pipeline-Datenwegen dargestellt.
  • Datenübertragung zwischen dem PDP und ALP werden stets unter Verwendung der konfigurierbaren Adreßmodenfähigkeit synchronisiert. Der PFS-Befehl erlaubt einer zusammenhängenden Menge von Pipeline-Flipflopwerten in eine Speicherstelle eingelesen zu werden. Die Lese-Zeilen-/Spaltenadresse in der Anordnung ist im RPIC-Konfigurationsadreßregister enthalten, das durch einen Konfigurationssteuerbefehl fesetzt werden kann.
  • Tabelle 5. Beispielhafte Pipeline-Steuerbefehle
    Figure 00530001
  • Figure 00540001
  • Detailkonzepte der ALP-Anordnung
  • Die Rernzellenanordnung des ALP ist zwar symmetrisch, aber die Pipeline-Busstruktur ist zur Implementierung von mehrstufigen Pipeline-Datenwegen optimiert. Vertikale Takt- und Rücksetzleitungen ermöglichen Steuerung von Pipelinestufen mit verringerter Verlustleistung unter Verwendung eines Taktfreigabeschemas (eine Spalten-Takt- oder Rücksetzleitung wird nur dann abgefragt, wenn das Spalten-Taktfreigabe- oder Rücksetzfreigabesignal aktiv ist). Eine Auslegung der Kernzellen und der Gesamtanordnung, die zur Verwendung in der RSP-Architektur geeignet ist, ist die schon erwähnte CLAy-Familie konfigurierbarer Logikanordnungsbausteine, die von National Semiconductor Corporation in Santa Clara, Kalifornien, erzeugt wird. Für die Zwecke der vorliegenden Erfindung können auch andere konfigurierbare Logikmittel mit der erforderlichen Funktionalität (bzw. mit der Fähigkeit, dafür modifiziert zu werden) benutzt werden.
  • In der RSP-Architektur werden die globalen Takt- und getasteten Taktmodi der CLAy-Anordnung bewahrt, so daß der ALP zur Steuerung von externen Sensor-/Betätigungsvorrichtungen benutzt werden kann. Das Schema mit freigegebenem Takt und Rücksetzen ist der bevorzugte Ansatz für Anwendungen mit rekonfigurierbarer Pipeline. Die PBA-Leitungen laufen rechtwinklig zu den Taktleitungen und ermöglichen direkten Zugriff auf die Pipeline-Busmittel der internen RSP-Speicher (MPM), des Schaltbuskopplers (TBT) und des Pipeline-Datenprozessors (PDP).
  • In der 9 ist die detaillierte Schnittstelle für eine ALP-Kernzelle 200 dargestellt. Im normalen Betrieb liefern die Leitungen "A" und "B" den Signalfluß des nächsten Nachbarn zwischen den Kernzellen. Jede Kernzelle 200 kann auf ihren (in der Figur mit Ln, Le, Ls und Lw bezeichneten) vier Seiten mit einem oder zwei lokalen Bussegmenten verbunden sein. Konfigurationsdaten für eine Kernzelle werden aus den vier Konfigurationsdatenleitungen auf der "Nord"-Seite (den Cdn-Leitungen) und den vier Konfigurationsleitungen auf der "Süd"-Seite (den CDs-Leitungen) ausgelesen. Dies ergibt acht Bit von Konfigurationsdaten zu einer Kernzelle in einem Schritt. Jede Kernzelle wird durch UND-Verknüpfung der vertikalen CSL-(column select low)Leitung und der horizontalen RS-(row select)Leitung als x/y-Stelle der Anordnung zum Laden des niedrigwertigen Bytes der Konfiguration für die Zelle adressiert. Das hochwertige Byte der Konfiguration wird durch die Kombination der CSH-(column select high)Leitung und der RS-Leitung gesetzt. Jede Spalte von Kernzellen bedient sich einer gemeinsamen Takt-(CLB-) und Rücksetz-(RST-)Leitung, die, wie im nächsten Abschnitt beschrieben wird, durch Schaltungen oben und unten an der Anordnung gesteuert wird.
  • 10 zeigt eine beispielhafte Schaltung zur Implementierung einer ALP-Kernzelle. Diese Schaltung ist funktionsmäßig der CLAy-Kernzelle gleichwertig. Die Schaltungslogik besteht aus zwei Abschnitten: (1) einer Konfigurationsdatenschaltung 202, die die Zellenfunktion und Eingangsverbindungen definiert und (2) einer Funktionsschaltung 201, die die durch die Konfigurationsdaten definierte Operation durchführt.
  • Die Konfigurationslogik für eine Kernzelle besteht aus einem 16-Bit-Register (D-Speicher 203 und F-Speicher 204) und einer Konfigurationsdecoderschaltung (DC) 206. Die Ausgabe des Konfigurationsregisters und Decoders werden zur Auswahl der Funktionssignalwege für die durch die Kernzelle durchzuführende Funktion benutzt. Beispielsweise werden Konfigurationsregister-bit R0 und R1 zur Auswahl der Logikeingabe "A" in die Zelle aus einer der vier Nachbarzellen benutzt. Die niedrigstwertigen acht Bit des Konfigurationsregisters werden dadurch geladen, daß zuerst die CSL- und SET-Signale gesetzt werden. Danach wird das Zeilenauswahlsignal (RS) abgetastet, um die Datenbit zu laden. Die höchstwertigen acht Bit werden auf ähnliche Weise unter Verwendung des CSH-Signals anstatt des CSL-Signals geladen. Der aktuelle Konfigurationsdatenwert läßt sich durch Setzen der Signale CSH bzw. CSL auf LOW von den CD-Leitungen ablesen. Der aktuelle Wert des Kernzellen-Flipflops läßt sich durch Setzen des Signals FRD lesen. Damit kann das Anwendungsprogramm einen Pipeline-Registerwert direkt lesen.
  • Freigegebene Takt- und Rücksetzleitungen
  • Die Implementierung eines Takt- und Rücksetzfreigabeschemas vereinfacht den Aufbau von Pipelineketten, verringert die Größe jeder Pipelinestufe und verringert die Stromaufnahme, da ein Spaltentakt nur dann abgetastet wird, wenn das Freigabesignal gesetzt ist (nominell ein Wert mit Aktiv-HI). Dadurch kann eine globale Pipeline-Verzögerungsfähigkeit implementiert werden. Ein PIPEN genanntes vom ALP gesteuertes Signal kann STALL setzen, um Taktung aller Spalten, die Takt- und/oder Rücksetzfreigabe-gesteuert sind, zu sperren. Das Signal PIPEN hat keine Wirkung auf die Spalten, die globale Takt/Rücksetz- oder getastete Takt/Rücksetzsteuersignale benutzen.
  • Implementierung des Takt/Rücksetzfreigabeschemas erfordert Erweiterung der Takt/Rücksetz-Spaltensteuersignale an der oberen und unteren Peripherie der Anordnung. Der Unterschied besteht darin, daß jedes Flipflopelement einer durch Takt freigegebenen Spalte nur dann geladen wird, wenn das Spaltentaktfreigabesignal von der ALP-Steuerschaltung gesetzt und das PIPEN-Signal gesetzt ist. Alle Flipflopelemente (Flipflopkonfigurationen einer Kernzelle) werden auf dieselbe Weise beeinflußt. Das Spaltenrücksetzen kann ähnlicherweise durch ein vom ALP gesteuertes Rücksetzfreigabesignal freigegeben werden.
  • Die 11 zeigt eine beispielhafte Schaltung für die Spaltentaktleitung einer ALP-Zelle. Die Konfigurationssignale CC0, CC1 und CC2 steuern die Spaltentaktwirkung. Wenn CC0 = 1 und CC1 = 0, dann ist der Spaltentakt gesperrt. Wenn CC0 = 1 und CC1 = 1, dann ist der Spaltentakt die Ausgabe "A" der oberen Zelle der Spalte (die Konfiguration mit getastetem Takt). Wenn CC0 = 0 und CC1 = 1, dann wird der Spaltentakt vom südlichen Lokalbussegment der oberen Zeile angesteuert. Wenn CC0 = 0 und CC1 = 0, dann ist der Takt vom globalen Taktsignal abgeleitet und wird durch das Konfigurationssteuersignal CC2 und das Steuersignal PIPEN gesteuert. Wenn CC2 = 0, dann wird der Spaltentakt mit jedem Taktzyklus vom globalen Takt abgetastet. Wenn CC2 = 1, dann wird der Spaltentakt nur dann durch den globalen Takt abgetastet, wenn die Ausgabe "A" der oberen Zelle gesetzt ist. Dies ist der Fall der Pipeline-Taktfreigabe. Der Pipelinetakt kann global durch das Signal PIPEN gesperrt werden, wodurch alle Pipelines in der Anordnung verlangsamt werden.
  • Pipeline-Busanordnung
  • Mit der Pipeline-Busanordnung (PBA) wird eine Pipeline-Datenwegauslegung zum Zugreifen auf die Speicheradreß- und Datenleitungen des RSP ohne Erfordernis einer Wegeführung von Signalen zur Peripherie der Anordnung ermöglicht. Dies ist ein Schlüsselmerkmal des RSPs zur wirkungsvollen Verwendung des ALP. Das PBA-Konzept basiert auf zwei Beobachtungen der Verwendung von CLAy-Vorrichtungen, die den meisten SRAM-basierenden FPGA gemeinsam ist: (1) es gibt ein ausgedehntes Verdrahtungsnetz (8 Drähte pro Spalte), das für Konfigurationsdatenverteilung benutzt wird und das nicht benutzt wird, wenn die Anordnung eine Anwendung fährt; und (2) die MODGEN-Funktionsmenge zeigte an, daß alle interessierenden Datenflußoperatoren wirtschaftlich unter Verwendung einer Datenflußstruktur mit "Zweierraster" implementiert werden könnten. Die Verwendung des PBA erlaubt die Entwicklung von dynamischen Pipeline-Grundelementen, die ohne Notwendigkeit einer zusätzlichen Wegeführung an jede Blockstelle im ALP geladen werden können. Mehrere durch MODGEN erstellte Pipelineblöcke können in unterschiedlicher Reihenfolge in den ALP geladen werden und führen nützliche Funktionen im System mit durch die PBA-Verbindungen vorgesehener "automatischer globaler Wegeführung" unter Verwendung von anstoßenden Nachbarverbindungen durch. Dadurch können auf Grundlage einer Basisbibliothek erzeugter Funktionen Tausende von Pipelinestrukturen implementiert werden. Rekonfigurierbare Logik, die nicht an der rekonfigurierbaren RSP-Pipelinestruktur teilnimmt, benutzt die PBA nicht und die PBA behindert auf keine Weise die Verwendung des ALPs für diesen Zweck.
  • Die Implementierung der PBA erfordert mehrere Verbesserungen der CLAy-Struktur (bzw. die Fähigkeit, die jeweils benutzte SRAM-basierende FPGA-Kernzellenarchitektur modifizieren zu können, damit sie wie beschrieben funktioniert), beeinflußt aber nicht die Auslegung der Kernzelle:
    • • Die Konfigurationsdatenwege müssen rechtwinklig zum Takt-/Rücksetzleitungsnetz liegen. Das erfordert die Verwendung eines Herstellungsprozesses mit drei Metallschichten.
    • • Die horizontalen Verstärker-(HR – horizontal repeater)Schaltungen werden erweitert, um Lesen und Ansteuern einer beliebigen der acht PBA-Leitungen für jede Zeile in der Anordnung zu ermöglichen. Vier von den PBA-Leitungen pro Zeile sind Pipeline-Busbit (DR, DW und so weiter). Die anderen vier PBA-Leitungen pro Zeile haben keine fest zugeordnete Bedeutung in der RSP-Blockschnittstelle und werden als globale Busse im ALP benutzt. Die ansteuerbaren Leitungen pro Zeile können durch Tristate-Treiber angesteuert werden, um eine zweiseitig gerichtete Busstruktur zu implementieren. Man beachte, daß PBA-Mittel nur in der horizontalen Richtung zur Verfügung stehen, so daß die Implementierung des PBA-Konzepts nur die horizontalen Verstärkerschaltungen beeinflußt.
    • • Um die Abtrennung von PBA-Treibern während einer Konfigurationsfolge zu ermöglichen, ist eine globale CFG-Leitung über die gesamte horizontale Verstärkeranordnung verteilt.
    • • Der linken und/oder rechten Seite der Anordnung sind Schaltungen hinzugefügt, um das Umschalten der Leitungen GBA vom Konfigurationsdatenverteilungsmodus in die Pipelinedatenwegeinstellungen zu erlauben. Zusätzliche Schalter werden dazu benutzt, daß ALP-Ausgangsdaten als eine "Phantom-E/A"-Datenquelle für PDP-Befehle benutzt werden. Mit dieser Einrichtung kann jeder PDP-Kernbefehl auf einen Ausgang des ALPs als Adressen- oder Datenelement als Teil der normalen Befehlsausführung zugreifen. Diese Fähigkeiten werden im Schema der RSP-Architektur als "konfigurierbare Adreßmodi" (CAM) bezeichnet.
  • Die Tabelle 6 zeigt eine Beispielliste des PBA-Gebrauchs im ALP. Man beachte, daß ungeradzahlige und geradzahlige Zeilen zur Unterstützung des Zweierrasterkonzepts unterschiedlichen PBA-Gebrauch aufweisen (aufeinanderfolgende Wortbit sind durch eine Zwischenkernzelle getrennt). Man beachte, daß die 8 einen dynamisch verschiebbaren Addier/Akkumulier-Pipelineblock mit Verwendung der PBA als Datenquelle (DR-Bus) und eines zweiten PBA-Busses (DW) für die Pipeline-Ausgabe darstellt. Dieser Block (und Hundert tausende wie dieser) können ohne Notwendigkeit zusätzlicher Verdrahtungsmittel an jede horizontale Stelle des ALP gelegt werden. Dadurch vereinfacht sich das Problem der Plazierung und Wegeführung für rekonfigurierbare Rechensysteme. Der allgemeine verschiebbare Pipelineblock, der ein "Pipelinesegment" genannt wird, enthält die Steuerschaltungen, die mit dem Datenflußoperator verbunden sind. Die Segment-Steuerschaltung steht wie schon beschrieben mit der RPIC-Einheit in Wechselwirkung. Für den Zweck der vorliegenden Besprechung wird angenommen, daß die Steuerschaltungen von sich aus mit dem Datenfluß gebunden sind. Dies wird durch Verwendung von zusätzlichen PBA-Mitteln im Steuerteil des ALPs für Befehlsdecodierung, Statusantwort und Inter-Block-Steuerkommunikation erreicht. Zusammen genommen bilden diese Signale die Menge von Pipeline-Steueranschlüssen (PCP – Pipeline Control Ports).
  • Tabelle 6. Beispielhafte PBA-Belegung, ALP-Datenwegabschnitt
    Figure 00600001
  • Die Verteilung der Befehlsregister-(IR – instruction register)Daten und Pipeline-Steueranschluß-(PCP-)Signale im Steuerbereich des ALP basiert, wie teilweise in der Tabelle 7 gezeigt, auf einem anderen Ansatz.
  • Tabelle 7. Beispielhafte PBA-Belegung, ALP-Steuerabschnitt
    Figure 00610001
  • In dieser Anordnung sind die FRQ-Signale für alle PCP in zwei aufeinanderfolgenden Zeilen enthalten. Die FRY-Signale für alle PCP sind in den nächsten zwei Zeilen enthalten und so weiter. Dieses Muster wiederholt sich für alle PCP-Steuersignale und die Befehlsregister-Bit. Der gesamte Steuerbereich des ALPs erfordert 16 Zeilen für acht PCP-Mengen. Die PBA-Leitungen, die nicht im Datenflußbereich oder Steuerflußbereich liegen, können der Verwendung durch andere RSP-Steuer- und Datensignale zugewiesen werden.
  • Kernblockstruktur
  • Wie anhand der 5 besprochen, wird eine zusammenhängende rechtwinklige Anordnung von Kernzellen (CC) mit denselben lokalen Busverbindungen als ein Kernblock bezeichnet. 12 zeigt den allgemeinen Plan der Kernblockstruktur für einen Kernblock mit vier horizontalen Spalten und vier vertikalen Zeilen. Jeder Kernblock 220 ist unter Verwendung von horizontalen Verstärker-(HR – horizontal repeater)Schaltungen 222 und vertikalen Verstärker (VR – vertical repeater)-Schaltungen 224 mit Nachbarkernblöcken und mit der Pipeline-Busanordnung verbunden. Die Verteilung von Konfigurationsdaten wird durch horizontale Verstärkerschaltungen bewirkt, die die auf die gesamte Anordnung durchlaufenden PBA-Leitungen basierenden CD-Daten lesen oder schreiben. Bei einer kleinen ALP-Schaltung können die PBA-Leitungen direkt für die Konfigurationsdaten benutzt werden. 13 zeigt die Verbindungen, die einen Teil der Schnittstelle zwischen den Kernzellen und Verstärkerschaltungen an den Ecken der vier Kernblöcke bilden.
  • 14 zeigt eine beispielhafte Schaltung für eine vertikale Verstärkerschaltung 224. Jeder Verstärker empfängt Konfigurationsdaten von den horizontalen Verstärkerblöcken auf den CD-Leitungen. Jeder vertikale Verstärker erlaubt eine beliebige Verbindungskombination des lokalen Bussegments oberhalb des Verstärkers (La), des lokalen Bussegments unterhalb des Verstärkers (Lb), des Express-Bussegments oberhalb des Verstärkers (Ea) und des Express-Bussegments unterhalb des Verstärkers (Eb). Jede Spalte im ALP hat vertikale Verstärker links und rechts von der Spalte an jeder Kernblockgrenze.
  • 15 zeigt eine beispielhafte Schaltung einer horizontalen Verstärkerschaltung 222. Jede Zeile im ALP weist zwei horizontale Verstärkerschaltungen an einer Kernblockgrenze auf, eine für Bussegmente an der Nordseite und eine für die Bussegmente an der Südseite. Zusätzlich zu den Schaltungen, die Verbindung der östlichen und westlichen lokalen und Express-Bussegmente (Le, Lw, Ee und Ew) erlauben, enthält der horizontale Verstärker Schaltungen zum Lesen oder Schreiben eines beliebigen der vier Pipelinebus(PB-)Signale zum lokalen Bussegment an der Ostseite (Le). Die horizontalen Verstärker haben auch die Fähigkeit, die Konfigurationsdatenleitungen (CD) vom PB anzusteuern oder die Konfigurationsdatenleitungen zurück zum PB zu lesen.
  • Detaillierter Daten- und Steuerfluß im RSP
  • Ein RSP-Programm greift auf die Parallel verarbeitungs-Zusammenschaltungs-(TBT-) und konfigurier-baren Logikanordnungsmittel (ALP) durch Erweiterungen des Befehlsvorrats des skalaren Prozessors (PDP) zu. Die Definition des Befehlsvorratszugriffs auf Bitebene hängt von dem spezifischen benutzten skalaren Verarbeitungskern ab. Da alle skalaren Prozessoren eine auf der Architektur nach von Neumann basierende generische Befehlsvorratsform aufweisen, gilt die gegenwärtige Besprechung im allgemeinen für jeden skalaren Prozessor. Die Aspekte eines Befehlsvorratszugriffs fallen in folgende Kategorien: (1) konfigurierbare Adreßmodi, (2) Funktionsausführungsbefehle, (3) bedingte Sprung-befehle, (4) konfigurierbare Logikunterbrechungen, (5) direkte Ein-/Ausgabe und (6) Rekonfigurationsbefehle.
  • Eine typische RSP-Implementierung erlaubt Zugriff auf Pipeline-Busanordnungsverbindungen unter Verwendung einer Erweiterung des integrierten indirekten Adressierungsmechanismus. Diese Erweiterungen der normalen Adressierungsfähigkeiten sind die konfigurierbaren Adreßmodi. Jeder Befehl im skalaren Prozessor, der einen Speicheroperanden ansteuert, kann die konfigurierbare Adreßmodusfähigkeit benutzen. Im RSP-Beispiel gibt es sechs mögliche konfigurierbare Adreßansteuerungen:
    PAR – Lesen Pipeline-Schaltbuseingabe (Pipelined Toggle Bus Input Read). Dieser Adreßmodus erlaubt die direkte Ansteuerung von Schaltbuseingabedaten als Datenoperand.
    PAW – Schreiben Pipeline-Schaltbusausgabe. Dieser Adreßmodus wird mit Befehlen benutzt, die normalerweise zum Speicher schreiben. Die Datenausgabe wird als Ausgabewort vom RPIC-Block zum Schaltbus umgeleitet.
    PAR – Lesen Pipeline-Adresse. Der durch die Ausgabe der Leseadreß-(RA – Read Address)Pipelinebusanordnungsleitungen definierte Adreßwert wird als die Speicheradresse zum Lesen eines Operanden benutzt.
    PAW – Schreiben Pipeline-Adresse. Der durch die Ausgabe der Schreibadressen-(WA – Write Address)Pipelinebusanordnungsleitungen definierte Adreßwert wird als Adresse einer Speicherstelle zum Schreiben von Daten definiert.
    PDR – Lesen Pipeline Daten. Die Ausgabe der Lesedaten-(RD – Read Data)Pipelinebusanordnungsleitungen wird als Eingangsdatenoperand für den Befehl benutzt. Dies erlaubt die direkte Verbindung des konfigurierbaren Logikausgangs mit dem Eingang des skalaren Prozessors.
    PDW – Schreiben Pipeline Daten. Die Ausgabe des skalaren Prozessors wird als Eingabe zu den Schreibdaten-(WD – Write Data)Pipelinebusanordnungsleitungen umgeleitet. Dies erlaubt die direkte Übertragung von Daten vom skalaren Prozessor zur konfigurierbaren Logik.
  • In allen Fällen wird die RPIC-Schaltung "Wartezustände" einführen, wenn bei Einleitung einer Übertragung keine Daten von der Quelle zur Verfügung stehen. Die konfigurierbaren Adreßmoduserweiterungen werden unter Verwendung der Steuersignale "Datenanforderung" an den Pipelinesteueranschlüssen implementiert.
  • Funktionsausführungsbefehle benutzen die Steuersignale "Funktionsanforderung" an den Pipelinesteueranschlüssen. Im allgemeinen gibt es für jeden PCP einen Funktionsanforderungsbefehl. Bei der RSP-Implementierung werden der konfigurierbaren Logik vier zusätzliche unbenutzte Befehlsoperationscodebit bereitgestellt, was die Implementierung von bis zu 128 verschiedenen von der konfigurierbaren Logik abhängigen Funktionen erlaubt.
  • Die PCP-Zustandsleitungen erlauben die Implementierung von "konfigurierbaren Sprung"-Befehlen. Damit können in Abhängigkeit von dem aktuellen Wert von
  • Signalen in der konfigurierbaren Logik alternative Befehlsausführungsfolgen durchgeführt werden.
  • Konfigurierbare Unterbrechungen werden durch Erweiterung der typischen Unterbrechungsabbildungstabelle, so daß sie für jeden Pipeline-Steueranschluß eine Unterbrechungsstelle enthalten, implementiert. Wenn die Unterbrechung von der konfigurierbaren Logik gesetzt ist, hält die RPIC die normale Programmausführung an und beginnt mit der Ausführung des Unterprogramms an der von einem Wert in der Unterbrechungstabelle definierten Adresse. Im normalen Gebrauch führt das Unterprogramm einen Funktionsanforderungsbefehl aus, wodurch die konfigurierbare Logikschaltung das Unterbrechungsanforderungssignal entfernt.
  • Eine Architektur für eine spezifische Implementierung kann direkte Ein-/Ausgabebefehle zur Implementierung von Datenübertragungen zwischen dem skalaren Prozessor, dem Schaltbus und den konfigurierbaren Logikmitteln benutzen. In einem typischen Fall werden den Pipelinebusanordnungsleitungssätzen Ein-/Ausgabe-"Anschluß"-Nummern zugewiesen. Diese Fähigkeit wird normalerweise beim Schaltbuskoppler benutzt, wenn dieses Mittel nicht als Parallelverarbeitungszusammenschaltung benutzt wird.
  • Beladen der mit den konfigurierbaren Logikkernzellen und der konfigurierbaren Verdrahtung verbundenen Konfigurationsregister wird durch Sonderbefehle durchgeführt. Jedes Register wird als eine Stelle im "Konfigurationsspeicher"-Adreßraum betrachtet. Ein Befehl des Typs "Blockverschiebung" wird zum Laden eines gesamten Pipelinesegments benutzt. Als Alternative kann jedes Konfigurationsregister durch eine Einzelbefehlsausführung geändert werden. Auch sind Befehle zum Lesen von einem oder mehreren Konfigurationsregistern vorgesehen. Diese Befehle werden zur Implementierung von adaptiven Algorithmen (beispielsweise adaptiven Filtern oder zur Änderung einer Pipelinestufe zur Durchführung einer "Addier"- Operation anstatt einer "Subtrahier"-Operation) benutzt. Wie bemerkt, kann die Quelle von Konfigurationsdaten ein chipinterner Speicher, chipexterner Speicher oder eine Schaltbusdateneingabe sein.
  • Die 16 ist ein Blockschaltbild mit dem detaillierten Datenfluß für die Hauptbuswege eines beispielhaften RSP-Bauelements. Der Lesedaten-(RD – read data)Bus hat zwei Quellen: (1) RDa von ALP 120 und (2) RDm vom Speicher mit Mehrfachzugriff 128. Die RPIC 122 steuert die Auswahl dieser alternativen Werte in Abhängigkeit von dem aktuellen Pipelinebetrieb. Gleichermaßen kann die Schreibdaten-(WD – write data)Quelle vom ALP oder PDP 126 kommen, die externen Schreib-(WX – write external)Daten können vom ALP oder dem PDP kommen, die Leseadresse (RA – read address) kann vom ALP oder der RPIC kommen und die Schreibadresse (WA – write address) kann vom ALP oder der RPIC kommen. Zwischen dem Speicher und dem ALP ist ein besonders breiter Wortdatenweg für Konfigurationsdaten (CD) vorgesehen. Die Adreßerzeugungschaltungen in der RPIC haben ihre eigene Verbindung zu den arithmetischen Pipelinedaten (F) im PDP. Gleichermaßen können die RPIC-Adreßregisterwerte unter Verwendung des Datenweges AR in den PDP-Berechnungen benutzt werden. Die RPIC liefert die Befehlsregisterinformationen zum ALP und auch die Pipelinesteueranschluß-(PCP – pipeline control port)Signale. Wenn als Hauptbussteuerung ein RSP-Bauelement benutzt wird, treibt die RPIC-Schaltung den C-Steuerbus, der einen Eingang für die RSP-Bauelemente darstellt, die als untergeordnete Datenverarbeitungselemente benutzt werden.
  • Schaltbus-Ein-/Ausgabeoperationen
  • Der Schaltbuskoppler (TBT – Toggle Bus Transceiver) wird als Hauptdateneingang und -ausgang für ein RSP-Bauelement benutzt. Wenn mehrere RSP-Bauelemente benutzt werden, um ein SIMD- Parallelverarbeitungssystem zu bilden, implementiert der TBT eine Vielzahl fortgeschrittener Datenflußmuster, die Signalfluß mit großer Bandbreite und parallele Verarbeitungsoperationen erlauben. Die vom TBT implementierten drei Arten von Datenfluß sind folgende:
    Rundsenden – jeder Prozessor kann Daten an alle anderen Prozessoren rundsenden. Dies wird zur Befehlsverteilung vom Prozessor der Bushauptsteuerung an die untergeordneten Datenverarbeitungselemente und zur Datenrundsendung für die Schritte in einem Algorithmus, wenn jeder Prozessor dieselben Daten benötigt, benutzt.
    Reflexionen – die Daten von Prozessor J werden zum Prozessor mit der Nummer J XOR R übertragen, wobei R der Hammingabstand ist. Reflexionen können auf Bitebene durchgeführt werden, um mehrdimensionalen Speicherzugriff zu unterstützen, der für Bildverarbeitungs- und Bilderzeugungsanwendungen benötigt wird.
    Rotierungen – die Daten vom Prozessor J werden zum Prozessor mit der Nummer (J + R) mod N übertragen. Damit können ringbasierende Algorithmen veränderlicher Rotationsgröße implementiert werden. Rotationen können auch auf Bitebene durchgeführt werden, um Arithmetik- und Bilddatenhandhabung mit langen Worten zu unterstützen.
  • Jede dieser Operationen kann in einem einzigen Taktzyklus durchgeführt werden. Die Rundsendeoperationen benutzen einen Kombinationsdatenfluß wie bei einem herkömmlichen Tristate-Bus. Die Reflexions- und Rotationsoperationen benutzen ein zweiphasiges Schema, bei dem die Daten zuerst auf den P-Busleitungen übertragen, auf den Q-Leitungen empfangen und in einem Speicherregister gespeichert und danach auf den P- oder Q-Leitungen weiter übertragen werden. Zusätzlich zu den grundlegenden Datenflußoperationen führt der Schaltbus eine Anzahl von Overheadübertragungen durch, die Assoziativanordnungsverarbeitung erlauben. In der Tabelle 8 sind die Grundarten der Schaltbus-Datenübertragung zusammengefaßt.
  • Tabelle 8. Schaltbus-Datenflußoperationen
    Figure 00680001
  • Der Leerlauf-Buszyklus "NOP" (no operation) erlaubt der Bushauptsteuerung die Synchronisierung einer Datenverarbeitungsanordnung. Eine mit besetzt" bezeichnete Busleitung mit offenem Kollektor ist als Teil des Schaltbussteuervektors mit allen Prozessoren verbunden. Dieses Signal weist einen Wert "0" zur Bushauptsteuerung auf, wenn einer der Prozessoren gegenwärtig nicht zur Teilnahme an einem Schaltbuszyklus bereit ist. Ausführung des NOP- Buszyklus hält die Bushauptsteuerungsverarbeitung solange auf, bis alle Prozessoren bereit sind, weiterzuarbeiten. Der NOP-Zyklus kann von den Datenprozessoren zur Synchronisierung von internen Operationen benutzt werden.
  • Mit der Konfigurationsdatenrundsendung "CFG" kann eine Bushauptsteuerung die ALP-Schaltungen eines oder mehrerer Datenprozessoren konfigurieren. Auf die CFG-Konfigurationsbuszyklen reagieren nur gegenwärtig aktive Prozessoren nach untenstehender Definition.
  • Der Datenrundsendedatenfluß "DAT" erlaubt der Bushauptsteuerung das Rundsenden eines Datenwortes an alle Datenprozessoren in einer Anordnung. Die Datenprozessoren lesen diese Daten unter Verwendung von Befehlen "IN" oder durch selbständigen Pipelinezugriff. Der Funktionsrundsendebuszyklus "FCT" erlaubt der Bushauptsteuerung die Übertragung eines Befehls an alle Datenprozessoren. Der Befehl kann eine Datenhandhabungsfunktion (wie beispielsweise ADD zum Akkumulator) oder eine Flußsteuerungsoperation (wie beispielsweise Springen zu einer Unterprogrammstelle) sein. Wenn mehr als ein Wort erforderlich ist, können mehrere FCT-Buszyklen benutzt werden.
  • Der Auswahldatenfluß "SEL" erlaubt dem Prozessor der Bussteuerung die Auswahl einer Teilmenge der Datenprozessoren für nachfolgende Operationen. Für 1 bis 16 Prozessoren entspricht jedes Datenbit in der Rundsendung dem "Aktivitäts"-Zustand des entsprechenden Prozessors. Beispielsweise setzt das Bit 0 der Daten den aktiven Zustand für den Prozessor 0 bzw. setzt ihn zurück. Wenn es mehr als 16 Prozessoren gibt, erlaubt der Abstandswert "G" die Auswahl einer Teilmenge von 16 Prozessoren, die eine Gruppennummer aufweisen, die dem Wert von "G" entspricht. Wenn der Aktivitätszustand gesetzt ist, reagiert ein Prozessor auf die Funktionsrundsendebuszyklen "FCT". Wenn der Aktivitätszustand "0" ist, führt ein Prozessor bei Ausführung eines Funktionsbuszyklus keine Operation durch. Der Gruppenzustands (GSTAT – Group Status)Zyklus sendet der Bushauptsteuerung ein 16-Bit-Wort zurück, wobei jedes Bit eine Zusammenfassung einer Teilmenge von 16 Prozessoren ist. Ein Bit ist eine "1" wenn einer der Prozessoren in der Gruppe ein Zustandsbit von "1" aufweist. Der Lesezustandsbuszyklus "STAT" wird zum Lesen eines Zusammenfassungszustandswortes aus einer Gruppe von Datenprozessoren benutzt. Jedes Bit in dem von der Bushauptsteuerung empfangenen Wort entspricht einem zusammenfassenden Zustandsbit in jedem Prozessor. Die Bedeutung des Zustandsbits ist vom Algorithmus abhängig. Wenn es mehr als 16 Prozessoren gibt, wählt der Parameter "G" die Gruppe aus, die auf die Statusanforderung anspricht. Die Statusantwort wird typischerweise in Verbindung mit dem Auswahlbuszyklus für Operationen des Algorithmus der Assoziativanordnung benutzt.
  • 17 ist ein Blockschaltbild einer beispielhaften Schaltung des Schaltbuskopplers 124 für ein RSP-Bauelement. Die interne Datenquelle des RSP für die Datenausgabe sind entweder der Bus WXa von der ALP-Einheit oder die WXpDaten von der PDP-Einheit. Vom Schaltbus empfangene Daten werden auf dem Bus RX verteilt.
  • Bei einer Rundsendeoperation werden die WX-Daten nach Umwandlung in der Schaltbusaustauschschaltung 260 über die Q-Ansteuerschaltung 270 übertragen. Die Daten werden dann von den P-Leitungen über P-Speicher 262 und RX-Multiplexer 264 zur Verteilung auf dem RX-Bus empfangen. Für Reflexions- und Rotationsoperation werden die Daten nach Umwandlung zuerst über den P-Treiber 266 angesteuert. Die Daten werden dann im Q-Speicher 268 empfangen und gespeichert. Bei der zweiten Taktphase werden die Q-Speicherdaten dann über die Umwandlung zur Übertragung zurück durch P-Treiber 266 oder Q-Treiber 270 geführt und dann abschließend vom Q-Speicher 268 oder P-Speicher 262 aus auf den RX-Multiplexer 264 aufgeschaltet. Die P- und Q-Speicher fungieren als Master-Slave-Flipflop zum Speichern der Empfangsdaten für Reflexionen und Rotationen.
  • Der Schaltbuskoppler 124 wird durch den C-Vektor gesteuert, der folgende Informationen liefert:
    • • Schaltbusphase;
    • • P- und Q-Treiberfreigaben;
    • • Aktueller Datenflußtyp; Rundsenden, Reflexion, Rotation usw.; und
    • • Abstand: Rundsendequelle, Reflexionsabstand oder Rotationsabstand.
  • Der Schaltbuskoppler 124 erlaubt einen unterschiedlichen Datenfluß mit jeder Phase eines Buszyklus. Beispielsweise können Daten auf Bitebene mit der ersten Phase rotiert und dann mit der zweiten Phase reflektiert werden.
  • Bei SIMD-Systemen erzeugt der Prozessor der Bushauptsteuerung die Komponenten des C-Vektors für alle Datenprozessoren. Der C-Vektor wird dann in die untergeordneten Prozessoren eingegeben. Beim Einschalten fungiert der Schaltbus nur als Rundsendebus, bis alle RSP-Bauelemente erstkonfiguriert sind.
  • Detaillierte Beschreibung der RPIC
  • Die vollständige Schaltung für die rekonfigurierbare Pipeline-Befehlssteuerung (RPIC – Reconfigurable Pipeline Instruction Controller) ist von der Implementierung des Pipeline-Datenprozessors (PDP) abhängig. Die Schnittstelle zwischen dem RPIC-Block und dem ALP ändert sich nur mit der in der Pipeline-Busanordnung enthaltenen Anzahl von Datenwegen und der Anzahl von in den Pipeline-Steueranschlüssen implementierten Signalen. Die Schnittstelle zwischen dem RPIC-Block und dem Kernprozessor, dem Speicher und den Parallelverarbeitungs-Zusammenschaltfestfunktionen ändert sich nach den genauen Erfordernissen der zur Implementierung dieser Festfunktionsblöcke gewählten Schaltungen.
  • Wenn der ALP mit einem Kernprozessor verbunden ist, dann benötigt der RPIC-Block Steuersignale, die folgendes anzeigen: (1) wann ein neuer Befehl von einem Programmspeicher geholt wird, (2) wann vom Prozessor eingeleitete Ein- und Ausgabezyklen auszuführen sind und (3) wann Daten zu und von einem Festfunktionsdatenspeicherblock zu lesen bzw. schreiben sind. Auch erwartet die RPIC-Schaltung, daß sie Softwareunterbrechungsfunktionen im Kernprozessor einleiten kann. Diese generischen Fähigkeiten stehen bei allen Prozessoren zur Verfügung, ändern sich aber in den spezifischen Einzelheiten der Signale und in der Zeit der Signale.
  • Wenn der ALP mit einem Festfunktions- Parallelverarbeitungszusammenschaltblock verbunden ist, dann benötigt der RPIC-Block Schnittstellensteuersignale für folgendes: (1) zum Bestimmen, wann eine Rekonfiguration von einer externen Vorrichtung angefordert wird, (2) Bestimmen, wann extern eingeleitete Befehle von der RPIC auszuführen sind, (3) Bestimmen, wann externe Daten dem ALP verfügbar gemacht worden sind und (4) Bestimmen, wann die externen Vorrichtungen zur Aufnahme von Daten vom ALP bereit sind.
  • Wenn der ALP mit einem Festfunktionsspeichermittel verbunden ist, dann benötigt die RPCI Schnittstellensteuersignale zum (1) Bestimmen, wann der externe Speicher zum Schreiben zur Verfügung steht und (2) Bestimmen, wann vom ALP angeforderte Daten zur Verwendung bereitstehen.
  • Die folgende Besprechung beschreibt ein minimales RPIC-Teilsystem, wobei ein generischer PDP mit Betonung auf der Schnittstelle zu den Pipeline-Steueranschlüssen (PCP – pipeline control ports) angenommen wird.
  • 18 ist ein Blockschaltbild mit den Grundbauelementen einer RPIC-Schaltung 122. Die RPIC enthält zwei Grundregister für den Programmsteuerfluß. Befehlsregister (IR – instruction register) 280 hält den aktuellen auszuführenden Befehl und Programmzähler (PC – program counter) 282 hält die Adresse des nächsten auszuführenden Befehls. IR 280 kann entweder vom lokalen Speicher unter Verwendung der Adresse im PC 282 oder vom Empfangsanschluß des Schaltbusses aus beladen werden. Der Schaltbuseingang wird zum Empfang der Befehle in einem Datenprozessor von einem Bushauptsteuerungsprozessor unter Verwendung des Funktions-Schaltbuszyklus "FCT" benutzt. Die externe Befehlseingabe fungiert als "weiche Unterbrechung". Das heißt, es wird jede laufende Programmausführung während der Ausführung des externen Befehls (der normalerweise ein Abrufbefehl für ein Unterbrechungsdienstprogramm ist) angehalten. Die Ausführung eines Unterbrechungsrücksprungbefehls bewirkt die Wiederaufnahme der Ausführung durch die RPIC an der Stelle im Programm, an der die Funktionseingabe stattfand.
  • Der Programmzähler 282 steuert den Fluß des RSP-Programms durch die Abfolge von Adressen auf dem Programmadreßbus (PA). Für die meisten Befehle erhöht sich der PC-Wert mit demselben Taktzyklus, mit dem das IR beladen wird. Zur direkten Veränderung des aktuellen PC-Wertes werden Sprung- und Abrufbefehle benutzt.
  • Adressen zum Speicherlesen (auf dem Leseadreßbus RA) kommen von vier möglichen Quellen: (1) dem Speicherlesebus (RD), der als das zweite Wort eines Befehls eine direkte Adresse im Programmspeicher ist, (2) dem Schaltbus als zweites Wort einer Schaltbusfunktionseingabe, (3) dem ALP-Pipelinebus RAa als Reaktion auf eine selbständige Pipelineanforderung (ARQ) oder von einer durch Befehl eingeleiteten konfigurierbaren Adreßmodusoperation und (4) dem Prozessor indirekter Adressen (IAP – indirect address processor) 284. Schreibadressen für den Speicher auf dem WA haben gleichartige Quellwerte.
  • Der Prozessor indirekter Adressen 284 enthält PDP-abhängige Adreßregister- und Adreßberechnungsmittel zur Erstellung von Adressen auf Basis von Auswahlbit für indirekten Adreßmodus im Befehl.
  • Befehlsdecodierschaltung (IDC – Instruction Decode Circuit) 286 bestimmt die Art der Adressierung für jeden Befehl und wählt die Adreßquelle für RA und WA aus. Die Konfigurationsregister (CR) 288 in der RPIC enthalten Daten, die den Kontext der RSP-Operationen definieren. Beispielsweise werden CR-Bits zur Kennzeichnung der Prozessorgebrauchsart (Bushauptsteuerungsprozessor oder Datenprozessor) benutzt. Das CR enthält auch die Pipeline-Busanordnungskonfigurationssteuersignale wie schon beschrieben.
  • Die Pipeline-Vergabeschaltung (PARB) 290 koordiniert den Betrieb zwischen den ALP-Pipelinebussen, der Befehlsabrufpipeline und den PDP-Datenverarbeitungspipelines. Das benutzte Schema basiert auf der herkömmlichen Philosophie verriegelter Pipelineverzögerung: wenn eine Pipeline Daten von einer zweiten Pipeline benötigt, wird die erste Pipeline solange aufgehalten (ihr Taktsignal solange unterdrückt), bis die Daten von der angeforderten Pipeline zur Verfügung stehen. Die Software und ALP-Schaltungen sind dafür verantwortlich, ordnungsgemäßen Pipelinefluß sicherzustellen, indem sie nach Bedarf NOP-Befehle bzw. Taktwartezyklen einfügen.
  • Im einzelnen ist die Implementierung der PARB von der PDP-Struktur und von der Art der benutzten Technik abhängig. Die folgenden Absätze beschreiben die Funktionsweise der PARB-Schaltung im Zusammenhang mit den Grundoperationen, an denen die konfigurierbaren Pipelineschaltungen des ALP beteiligt sind.
  • Pipeline-Freigabeoperation – vom Programm eingeleitete und selbständige Datenübertragungen zwischen dem ALP und den anderen RSP-Prozessoren unter Verwendung der Pipeline-Busanordnung erfordern, daß die Pipeline durch folgendes freigegeben wird: (1) das Konfigurationsregister aktiv (CRAj) und (2) das Aktivsignal (ACTj) vom ALP.
  • 19 ist ein Zustandsdiagramm, das den Funktionsfluß zur Erzeugung eines Pipelinefreigabesignals für das eingeleitete Programm und selbständige Datenübertragungsoperationen zeigt. Die zur Implementierung des gezeigten Zustandsdiagramms benötigten Schaltungen können leicht von einem Fachmann hergestellt werden. Beim Einschalten und nach einem harten Rücksetzen werden alle Pipelines in den Zustand "gesperrt" getrieben. Damit werden die Pipelinefreigabesignale (PENj) auf LOW gezwungen, wodurch die anderen Operationen gesperrt werden. Die Pipeline bleibt solange gesperrt, wie eine Konfigurationsfolge ausgeführt wird (Signal CFG ist HI) und das Steuerbit Konfigorationsregisteraktiv LOW ist. Wenn CRAj HI ist und keine Konfigurationsfolge ausgeführt wird, überprüft die Schaltung das Signal ACTj vom ALP im Zustand "Überprüfen". Wenn ACTj auf LOW gesetzt ist, tritt die Schaltung in den Zustand "Freigegeben" ein und erzeugt einen Wert HI beim Signal PENj für die Pipeline. Eine Pipeline wird dann geperrt sein, wenn eine andere Konfigurationsfolge ausgeführt wird oder eine Operation durchgeführt wird, die das Signal ACTj auslöst.
  • Fluß der Funktionsanforderungsoperation – 20 ist ein Zustandsdiagramm, das den Betriebsfluß zeigt, wenn der Befehlsdecoder bestimmt, daß der aktuelle Befehl Ausführung einer Pipelinefunktion im ALP erfordert. Wenn die angeforderte Pipeline nicht im Konfigurationsregister freigegeben ist oder das Aktivsignal (ACTj) für die Pipeline nicht gesetzt ist, wird eine Fehlerunterbrechung eingeleitet. Damit wird die Fehlersuche in Algorithmen vereinfacht, die ALP-Pipelineschaltungen benutzen. Andernfalls gibt der RPIC-Befehlsdecoder das Signal "Programmfunktionsanforderung" (PFRQj) an den Programmfunktionszustandsautomaten für die Pipeline aus. Wenn das Signal "Funktion bereit" nicht gesetzt ist (das Signal FRYj ist HI), wird in einen Zustand beschäftigt eingegangen, wobei das Signal "Funktion anfordern" (FRQj) auf LOW gesetzt ist. Damit wird allen nachfolgenden Funktionsanforderungen an diese Pipeline ein Aufhaltezustand aufgezwungen. Die Schaltung verbleibt im Zustand "beschäftigt", bis das Signal FRYj auf LOW gesetzt wird oder die Pipeline gesperrt wird.
  • Solange das Signal FRYj gesetzt bleibt, kann mit jedem Taktzyklus ein neuer Pipeline-Funktionsbefehl ausgeführt werden. Dies ermöglicht die Implementierung hochratiger Pipelines, die in der Lage sind, mit jedem Taktzyklus eine neue Operation zu beginnen. Es erlaubt auch die Implementierung von Pipelines, die mehr als einen Taktzyklus für jede Funktionsanforderung erfordern. Beispielsweise wird eine Pipeline, die für jede Funktionseinleitung zwei Taktzyklen erfordert, das Signal FRYj einen Taktzyklus lang nach Erkennung des Signals FRQj auf HI anheben. Die PARB setzt dann die Funktionsanforderung (FRQj) für die ausgewählte Pipeline und wartet auf das Setzen des Zustands Funktion bereit (FRYj) von der ALP-Schaltung. Wenn im Befehlsstrom kein Pipeline-Funktionsbefehl anhängig ist, löst die PARB die Funktionsanforderung aus.
  • Fluß der Datenanforderungsoperation – Das RSP-Programm kann Befehle ausführen, die explizit die Datenübertragung von einer Verarbeitungseinheit (Speicher, PDP oder Schaltbus) oder von einer ALP-Pipeline zu einer anderen Verarbeitungseinheit vereinlassen. Diese Befehle bedienen sich der "Datenanforderungs-"Synchronisations-schaltung. Auch kann der Befehlsdecoder in der RPIC einen Datenanforderungszyklus für die konfigurierbaren Adreßmodi einleiten, die die Verwendung einer ALP-Pipelineausgabe für die Lese- oder Schreibadresse erlauben. Konfigurierbare Adreßmodi leiten auch eine Datenanforderung zur Übertragung von Daten vom PDP zu einer ALP-Pipeline oder vom ALP zum PDP ein. Alle diese Datenflußoperationen bedienen sich der Steuersignale-datenanforderung (DRQj) und Daten bereit (DRYj) am Pipelinesteueranschluß.
  • Die 21 ist ein Zustandsdiagramm, das den Funktionsfluß der Programmdatenanforderungsoperation zeigt. Wie bei allen vom Programm eingeleiteten Operationen muß die angeforderte Pipeline freigegeben werden, sonst wird eine Fehlerunterbrechung ausgeführt. Die Datenanforderung (DRQj) wird von der PARB-Schaltung für den ALP gesetzt, wenn der Befehlsdecoder das Signal "Programmdatenanforderung" (PDRQj) ausgibt. Wenn die Pipeline nicht für die Datenübertragung bereit ist, tritt der Zustandsautomat in den Zustand "beschäftigt" ein und wartet darauf, daß das Signal "Daten bereit" (DRYj) auf LOW gesetzt wird. Im Zustand beschäftigt wird eine nachfolgende Programmdatenanforderung die Befehlsausführungspipeline so lange aufhalten, bis das Signal DRYj auf LOW gesetzt wird. Mit jedem Taktzyklus kann so lange eine neue Datenanforderung gesetzt werden, wie die ALP-Pipelineschaltung in der Lage ist, Datenübertragung mit der höchsten Geschwindigkeit aufrechtzuerhalten. Ansonsten kann die ALP-Steuerschaltung "Wartezustände" einfügen, indem sie DRYj für die Dauer dieser notwendigen Anzahl von Taktzyklen auf HI setzt. Die RPIC fügt Wartezustände in den Vorgang ein, wenn die Quellen- bzw. Zielverarbeitungseinheit zusätzliche Zeit für die Datenübertragung erfordert.
  • Fluß der Statuszustandsoperation – Die ALP-Pipeline-Zustandssignale (STATj) werden von den bedingten Sprungbefehlen des RSP gelesen, die die ALP-Pipeline als eine Sprungbedingung ansprechen. Im Bezug auf die anderen vom Programm eingeleiteten Operationen wird eine Fehlerunterbrechung erzeugt, wenn die Pipeline nicht freigegeben ist. Die RPIC liest einfach die Statusleitung ab und führt den Sprung durch, wenn der Zustand erfüllt ist (Sprung mit Status "0" oder Sprung mit Status "1"). Man beachte, daß es für diese Funktion keinen Anforderungs/Bestätigungs-Austausch gibt. Der Algorithmus muß Aufhaltezyklen einfügen oder einen ALP-Funktionsbefehl ausführen, der darauf wartet, daß der Zustand vor Ausführung des bedingten Sprungs gültig ist, um sicherzustellen, daß der Zustand bei Ausführung des bedingten Sprunges gültig ist. Die meisten ALP-Pipelines halten das Signal STATj zu allen Zeiten auf einem gültigen Wert.
  • Selbständige Pipelinefunktion – Wenn sie in den Konfigurationsregistern freigegeben ist, kann eine ALP-Pipeline eine selbständige Datenübertragung zwischen der ALP-Pipeline-Busanordnung und dem Schaltbus oder den RSP-Speichermitteln anfordern. Diese Übertragungen erfordern keine Ausführung eines RSP-Befehls, sind aber normalerweise durch Funktionsanforderung und Datenanforderungsbefehlsausführung mit der Programmausführung synchronisiert. Eine selbständige Operation bedient sich der Signale selbständige Anforderung (ARQj) und selbständiges Bereit (ARYj) an einem Pipeline-Steueranschluß.
  • Die 22 ist ein Zustandsdiagramm, das den Funktionsfluß der selbständigen Anforderungsfolgeoperation zeigt. Die Pipeline muß im Konfigurationsregister für selbständige Handlung freigegeben sein, wenn eine selbständige Anforderung (ARQj) erkannt werden soll. Wenn ein Anforderungssignal gesetzt ist und die Pipeline nicht freigegeben ist, wird kein Fehlerunterbrechungssignal erzeugt.
  • Zur eingehenderen Erläuterung der selbständigen Pipelineoperation wird in der folgenden Besprechung eine selbständige Anforderung an das RSP-Speichermittel angenommen. Die Adresse für diese Anforderung wird von der RA-Pipeline im ALP geliefert. Es wird angenommen, daß die Adresse bei Setzen der Anforderung gültig ist. Die PRB-Schaltung setzt eine Leseanforderung an den Speicher und setzt das Signal bereit (ARYj) auf LOW, wenn die Daten verfügbar sind (Signal PRYk wird von der Speichereinheit auf LOW gesetzt). Wenn die Daten von der DRm-Pipeline angenommen worden sind, entfernt die ALP-Schaltung die Anforderung (ARQj) und die PARB reagiert mit der Entfernung des Signals bereit (ARYj).
  • Für jeden Zyklus, in dem das Anforderungssignal gesetzt ist und das Signal bereit gesetzt ist, wird eine Datenübertragung durchgeführt. Damit können schnelle Pipelines mit jedem Taktzyklus eine Speicheransteuerung unternehmen. Wenn eine Folge asynchroner Anforderungen die Speicheranforderungen für den PDP oder Schaltbus stört, wird der ALP-Pipeline nur die Hälfte der verfügbaren Speicherzyklen erteilt. Dies tritt nur bei gleichzeitigen Leseoperationen und gleichzeitigen Schreiboperationen ein.
  • Eine selbständige Schreiboperation zum RSP-Speicher wird durch eine ähnliche Folge durchgeführt. In diesem Fall muß die Schreibadresse am WAa-Pipelineausgang gültig sein und die vom WDa-Bus zu schreibenden Daten müssen vor Stellen der Anforderung gültig sein. Die RPIC setzt ARYj, wenn die Daten für die Speicherschreiboperation angenommen worden sind.
  • Selbständige Übertragungen zur und vom Schaltbuskoppler werden auf ähnliche Weise durchgeführt. Eine Leseanforderung wird aufhalten, bis der Bushauptsteuerungsprozessor einen Taktbuszyklus vollendet hat. Eine Schreibanforderung wird aufhalten, bis der Zyklus abgeschlossen ist, hat aber auch die Eigenschaft, daß zum anfordernden Prozessor übertragene, Daten (beispielsweise bei Benutzung eines Rotierungszyklus) aus dem RX-Pipelineeingang ausgelesen werden können, wenn das Signal ARYj gesetzt ist. So kann ein normaler Schreibbus-Schreib-/Lesezyklus mit einer einzigen selbständigen Anforderung durchgeführt werden.
  • Konzepte der Konfigurationsfolge
  • Der ALP in einem RSP-Bauelement kann Konfigura tionsdaten von einer von drei Quellen empfangen: (1) externe Daten (auf dem RX-Bus vom Schaltbuskoppler), die ihren Ursprung in einem Bushauptsteuerungs-RSP-Bauelement haben, (2) externe Daten von einem Speicher oder Systembus oder (3) von dem Speicher mit Mehrfachzugriff. Beim Einschalten zeigt ein Eingabeanschluß an, daß ein RSP unter Verwendung von externen Daten zu konfigurieren ist oder daß der RSP einen externen Speicher adressieren soll, um die Konfigurationsdaten zu erhalten. Konfiguration des ALPs aus dem chipinternen Speicher bietet einen schnellen Mechanismus für rekonfigurierbare Pipelineänderungen, erfordert aber, daß der Speicher zuerst von einer externen Quelle beladen wird.
  • Die allgemeine Konfigurationsdatei für die RSP-Bauelemente enthält größenveränderliche Datensätze für sechs verschiedene Mengen rekonfigurierbarer Speicher und Register:
  • Kernzellenanordnung (CCA – core cell array) – Erlaubt Rekonfigurierung eines beliebigen rechteckigen Nachbarblocks der ALP-Anordnung. Jede Zelle erfordert ein Wort (zwei Byte) Konfigurationsdaten. Für die RSP-Familie wird die ALP-Anordnung als lineares Abbild ähnlich der für Bitmap-Graphiken benutzten Art adressiert. Das heißt, es wird angenommen, daß die Anordnung eine Größe von Nc Spalten (Taktleitungsrichtung) und Nr Zeilen (Datenwegrichtung) besitzt. Die Adresse für die Zelle an Stelle x (Spalte) und y (Zeile) ist dann gegeben durch: A = x + y·Nr. Eine gegebene Adresse löst sich durch die folgenden Formeln in x- und y-Koordinaten auf: x = A mod Nr und y = A div Nr. Zwecks Verträglichkeit mit der CLAy-Architektur steigt die x-Koordinate von links nach rechts an und die y-Koordinate steigt von unten nach oben an, so daß Adresse 0 die untere linke Ecke des Blocks darstellt. Mit diesem Schema können Konfigurationsblöcke unabhängig von den Anordnungsabmessungen sein. Ein Kernzellanordnungskonfigurationsblock wird dann durch die Zieladresse (unter linke Ecke des Blocks in der Zielanordnung), die ein Einzelwort ist, die Blockbreite (ein Byte) und die Blockhöhe (ein Byte) definiert.
  • Lokalbusanordnung (LBA – local bus array) – Der ALP behält die grobe Blockstruktur der CLAy-Bauelemente für lokale und Express-Buskonfiguration. Die Konfiguration für die horizontalen und vertikalen Verstärkerschaltungen (HR und VR – horizontal repeater, vertical repeater) für den Lokalbus wird wie bei den Kernzellen adressiert.
  • Rekonfigurierbare E/A-Anschlüsse (RIOP – Reconfigurable I/O Pins) – die Peripherie der ALP-Anordnung enthält vom Familienmitglied abhängigen Zugang zu rekonfigurierbaren E/A-Anschlüssen sowie Zugang zu RSP-internen Steuersignalen. Damit kann die Peripherie der Anordnung unter Verwendung von "Vierer-Vierer-"Signalen auf Nachbaranordnungen erweitert werden. In dem RSP-Fall hat jeder E/A-Anschluß Zugang zu RSP-internen Signalen wie auch die gewöhnliche Bedeutung rekonfigurierbarer Anschlußstellen. Die Adressierung von Peripheriezellen ist notwendigerweise von der Vorrichtung abhängig. Es gibt mehrere Unterschiede im Verhalten der RIOP im ALP.
  • Pipeline-Busanordnung (PBA – Pipeline Bus Array) – Dies ist der bedeutendste Zusatz zur CLAy-Architektur und würde den meisten konfigurierbaren Logikauslegungen hinzugefügt werden müssen. Die RSP-Bauelemente enthalten eine Anzahl von Pipeline-Bussen zum Zugreifen auf den Daten-MPM, TBT und auf PDP-Daten und RPIC-Steuersignale. Die PBA ist eine Signalmenge mit doppelter Verwendung, die nur in der horizontalen Richtung fließt. Während einer Konfigurationsfolge wird die PBA zur Zuführung von Konfigurationsdaten zu den Kernzellen, Hr, VR und RIOP benutzt. Wenn die interne Anordnung nicht gerade konfiguriert wird, weist jede Anordnungszeile acht Leitungen auf, die direkt unter Verwendung der HR mit lokalen Bussegmenten verbindbar sind. Für jede Zeile weisen vier der PBA-Leitungen fest zugeordnete Verbindungen mit RSP-Pipelinebussen auf und vier der PBA-Leitungen werden als globale Verbindungsleitungen innerhalb des ALPs benutzt. Die PBA-Leitungen mit fest zugeordneter Bedeutung weisen Bitzuweisungen auf, die für Datenwegblöcke mit Raster 2 versetzt sind. Ein globales Konfigurationssignal CFG wird durchweg über HR verteilt, um lokale Bustreiber zu PBA-Leitungen während einer Konfigurationsfolge abzutrennen.
  • RSP-Konfigurationsregister (RSPCR – RSP Configuration Registers) – Der RSP enthält 32 Byte von SRAM, die der statischen Konfiguration der RSP-Umgebung zugeordnet sind. Diese Information enthält Bit für Prozessorgeschwindigkeit, Schaltbusgeschwindigkeit, Startprogrammadresse und so weiter.
  • Speicher mit Mehrfachzugriff (MPM – Multiple Port Memory) – Der Inhalt des internen Programmspeichers des RSPs ist als Teil einer Konfigurationsfolge konfigurierbar. Damit kann ein Erstprogramm ("Bootstrap-Lader") beim Einschalten oder nach einem Wieder-Urladen geladen werden.
  • Die verschiedenen Arten von Konfigurationsdatensätzen werden, wie in Tabelle 9 dargestellt, durch ein Huffman-Codierschema unterschieden.
  • Tabelle 9. Konfigurationsadreßliste
    Figure 00820001
  • Mit diesem Schema wird die direkte Abbildung für eine CCA von bis zu 16.384 Zellen (128 mal 128) unterstützt. Größere RSP-Teile würden 32- oder 64-Bitworte aufweisen, womit größere Anordnungen unterstützt werden.
  • Jeder RSP-Teil unterstützt die in Tabelle 10 gezeigten Befehle zur Rekonfiguration.
  • Der Befehl BCON muß vor Ausführung der Befehle DYCON, LDCON und STCON ausgeführt werden. BCON setzt den ALP-Taktmodus auf die durch die letzte Konfiguration gesetzten Werte und legt das Signal CFG an die HR-Verbindungen zur PBA an. DYCON führt eine Einzelblockkonfiguration durch. Die Zieladresse, Breiten- und Höheninformationen werden als die ersten zwei Worte des Konfigurationsblocks im Speicher definiert. Die Befehle LDCON und STCON erlauben das Lesen und Schreiben von Einzelzellenkonfigurationsdaten zur Unterstützung von Konfigurations-"Berechnungen" auf Zellenebene. Die "Adressen" für LDCON und STCON befinden sich im Konfigurationsadreßraum, während die "Adresse" für REBOOT und DYCON sich im Programmspeicheradreßraum befindet.
  • Tabelle 10. RSP-Konfigurationsbefehle
    Figure 00830001
  • Konfigurationsdateistruktur
  • Eine Konfigurationsdatei besteht aus einem Kopf, einer Menge von Konfigurationsblöcken und einem Nachspann. Die allgemeine Struktur gleicht den CLAy-Bitströmen mit folgenden Unterschieden:
    • • RSP-Vorrichtungen lassen sich nur im Parallelmodus konfigurieren und es besteht daher keine Notwendigkeit für Bitsynchronisierung. Eine RSP-Vorrichtung kann anfangs aus externen Daten (externer Taktmodus) oder durch interne Adressenerzeugung (interner Taktmodus) konfiguriert werden;
    • • Das erste Byte einer Konfigurationsdatei besteht aus einem Vier-Bit-"Vorspann-"Muster (nominell 1011) und einem Vier-Bit-Konfigurationsdateisteuerfeld. Das LSB des Steuerfeldes definiert die Konfigurationsquellspeicherbreite (0 ⇒ acht Bit breiter Speicher und 1 ⇒ 16-Bit-breiter Speicher). Die übrigen drei Bit definieren die Speichergeschwindigkeit (Anzahl von internen Taktzyklen pro externer Speicheransteuerung). Damit kann ein RSP sich selbst von einer Vielzahl von externen ROM- oder FLASH-Speichervorrichtungen aus konfigurieren. Im externen Konfigurationsmodus definieren die Steuerbit die Quelldatenbreite;
    • • Das zweite Byte einer Konfigurationsdatei (das hochwertige Byte des ersten Wortes bei einer 16-Bit-Breite) erweitert die Konfigurationsdateisteuersignale. Dieses Byte enthält Taktsteuerinformationen;
    • • Das zweite Wort einer Konfigurationsdatei zeigt die Anzahl von Konfigurationsblockdatensätzen an, die folgen. Es besteht keine Notwendigkeit für eine "Konfigurationssprungadresse", da diese Funktion leicht durch das aktuelle aktive Programm durchgeführt wird;
    • • Jeder Konfigurationsblock besteht aus einem Zwei-Wort-Kopf, gefolgt von den Konfigurationsdaten (stets ein Mehrfaches von zwei Byte). Das erste Kopfwort ist die Zielkonfigurationsadresse. Das niederwertige Byte des zweiten Wortes ist die Blockbreite und das hochwertige Byte des zweiten Wortes ist die Blockhöhe;
    • • Eine Konfigurationsdatei endet mit einem Nachspannbyte, das dasselbe wie das bei den CLAy-Vorrichtungen benutzte ist. Es gibt kein Konzept für "Kaskade". Wenn in einem System mehrere RSP-Teile (oder ein RSP mit mehreren CLAy-Vorrichtungen) benutzt werden, dann kann ein Haupt-RSP andere Vorrichtungen unter RSP-Programmsteuerung konfigurieren.
  • In der Tabelle 11 ist die RSP-Konfigurationsblockstruktur zusammengefaßt, während in der Tabelle 12 die RSP-Konfigurationsdateistruktur zusammengefaßt ist.
  • Tabelle 11. Konfigurationsblockdatensatzstruktur
    Figure 00850001
  • Tabelle 12. Konfigurationsdateidatensatzstruktur
    Figure 00850002
  • Externe Konfiguration bedient sich stets der Konfigurationsdateidatensatzstruktur. Jeder DYCON-Befehl zur internen Konfiguration steuert nur einen einzigen Block an. Konfigurationssteuersignale für einen DYCON-Befehl werden durch die RSPCR-Registerbit definiert, die durch Ausführung von STCON-Befehlen geändert werden können.
  • Mehrfache RSP-Konfigurationen
  • Wie erwähnt, können mehrere RSP-Vorrichtungen miteinander unter Verwendung der Schaltbusverbindungsarchitektur verbunden werden, um die Implementierung einer Anzahl von Arten eines Parallelverarbeitungssystems zu erlauben. Die allgemeinste Struktur ist die in 1B dargestellte. Wie in der vorherigen Besprechung dieser Figur bemerkt, wird ein als Prozessor "PN" bezeichneter Prozessor als Bushauptsteuerungsprozessor für eine Gruppe von N Verarbeitungselementen, die als Prozessoren "P0" bis "PN–1" bezeichnet werden, benutzt. Bei der gegenwärtigen RSP-Implementierung ist der Schaltbus auf N ≤ 256 begrenzt. Jeder Schaltbuskoppler besitzt zwei, "P-"Bus und "Q-"Bus genannte, zweiseitig gerichtete M-Bit-Koppler. Jeder Schaltbuszyklus besteht aus der Übertragung der Datenausgabe über die Leitungen "P" oder "Q" und dem Empfang der Daten auf den alternativen Leitungen "Q" bzw. "P". Der gemeinsame Schaltbus-Steuerbus "C" wird zur Definition der Art der Bustransaktion für alle Prozessoren benutzt.
  • Der Schaltbus bietet eine "Breitwort"-Fähigkeit, die bei vorherigen Parallelverarbeitungssystemen nicht verfügbar ist. Für M-Bit-Worte pro RSP-Knoten und N Knoten können die M·N Bit auf dem Schaltbus durch den Compiler als einziges Breitwort angesehen werden. Zu beispielhaften Operationen, die an diesem Breitwort in einem Buszyklus durchgeführt werden können, gehört "Rotieren um k", wobei k ≤ M·N, und die Bitumkehr des vollständigen Breitwortes. Diese Fähigkeit hat zahlreiche Anwendungen, einschließlich einer Arithmetik mit sehr hoher Präzision, die Implementierung von Fähigkeiten einer Arithmetik des finiten Feldes und die effektive Lösung einer Anzahl von Problemen, die bei Logikoptimierung und -analyse auftreten.
  • Die in der Figur aufgeführte "Schaltbusverdrahtung" basiert auf einem Muster der "idealen Mischung". Für den Fall von M-Bit-Worten und N = M Prozessoren wird die Verdrahtungsregel wie folgt definiert. Pkj stelle die j-te Bitleitung des P-Busses am Prozessor k dar und Q stelle gleichermaßen die i-te Bitleitung des Q-Busses an dem mit 1 numerierten Prozessor dar. Dann ist die Verdrahtung einfach Pkj ⇔ Q. Das heißt, man verbinde die j-te Leitung des P-Busses am Prozessor k mit der k-ten Leitung des Q-Busses am Prozessor j. Diese Regel wird auf die Verwendung von Teilgruppen von Signalleitungen für Systeme erweitert, bei denen M ≠ N.
  • Wie bei der Besprechung des Schaltbusses erwähnt, unterstützt der Schaltbus drei Grundarten von Datenflußmustern und Kombinationen dieser Muster. Das "Rundsende-"Datenflußmuster erlaubt einem beliebigen Prozessor die Übertragung von Daten an alle anderen Prozessoren in einem einzigen Buszyklus. Dieses Flußmuster gleicht der bei herkömmlichen Tristate-Busstrukturen angetroffenen Fähigkeit. Der Rundsendedatenfluß wird zur Verteilung von Konfigurationsdaten in einem RSP-Bündel benutzt. Der PN-Prozessor benutzt auch das Rundsenden zur Einleitung von spezifischer Verarbeitung in den Datenprozessoren durch Direktausführung von Befehlen. Im MIMD-Berechnungsstil leiten diese Befehle im wesentlichen die Ausführung von funktionsmäßig abhängigen Teilprogrammen ein. Im SIMD-Berechnungsstil sind die Befehle typischerweise "Funktionsanforderungs-"Befehle für die konfigurierbare Logikanordnung.
  • Der Schaltbus unterstützt auch allgemeine "Datenrotations-"Datenflußmuster auf Bitebene und Wortebene. Diese werden sowohl für SIMD- als auch MIMD-Parallelverarbeitungsansätze für Prozessor-Prozessor-Datenfluß benutzt. Die Rotationsdatenflußmuster können als eine Erweiterung der "Ring-"Zusammenschaltung betrachtet werden, die erfolgreich in vorherigen Systemen benutzt worden ist.
  • Die dritte Hauptart von Datenfluß über den Schaltbus wird "Datenreflektion" genannt. Dies ist das allgemeinste und leistungsfähigste Datenflußmuster und erlaubt die Implementierung sehr komplexer
  • Datenflußoperationen wie beispielsweise den im nächsten Abschnitt beschriebenen multidimensionalen Speicherzugriff. Reflexionsdatenfluß basiert auf dem in den meisten Logikauslegungs- und Codiertheorie-büchern beschriebenen Prinzip des "Hamming-Abstands". Beispielsweise können Daten zwischen zwei Prozessoren j und k durch Einstellen des Schaltbusreflexionsabstandes auf d = j ⊗ k, wobei "⊗" das bitweise exklusive ODER der Bit der Ganzzahlwerte von j und k ist, in einem Buszyklus ausgetauscht werden. Der auf diese Weise berechnete Abstand zwischen Prozessoren wird der Hamming-Abstand genannt. Die auf dem Hamming-Abstand basierenden Datenflußmuster sind ein integraler Aspekt komplexer Algorithmen wie beispielsweise der schnellen Fourier-Transformation (FFT – Fast Fourier-Transform), die für die beabsichtigten Anwendungen der RSP-Architektur von grundlegender Bedeutung sind.
  • Wie bemerkt, sind in der Tabelle 8 (Schaltbus-Datenflußoperationen) die Datenflußoperationen zusammengefaßt, die durch den PN-Prozessor eingeleitet werden können. Die Spalten "Buscode" und "Abstand" sind Felder in dem vom PN-Prozessor ausgegebenen Vektor "C. Jeder RSP-Prozessor bestimmt die für einen bestimmten Buszyklus durchzuführende Operation unter Verwendung des Buscodewertes. Zusätzlich zu den Datenflußoperationen Rundsenden, Rotation und Reflexion werden Buszyklen für Konfigurationsdaten, Befehlsausführung und "Assoziativteilmengen-"Verarbeitung durchgeführt. Die Assoziativverarbeitungsoperationen erlauben der PN-Verarbeitung, eine Teilmenge der Pi-Prozessoren auszuwählen, die auf nachfolgende Buszyklen reagieren wird. Dies wird beispielsweise zur Auswahl einer SIMD-Funktionsteilmenge von Prozessoren für einen spezifischen Algorithmus, der Teil einer im allgemeinen funktionsmäßig partitionierten MIMD-Systemstruktur ist, benutzt.
  • Wenn die Anzahl der Prozessoren N größer als die Anzahl von Bit M in den Worten ist, benutzt der PN- Prozessor die Buszyklustypen "Gruppenauswahl" zur Auswahl von Teilmengen der Prozessoren zur Aktivierung. Bei diesen größeren Systemen wird für jeden Buszyklus ein zusätzlicher Taktzyklus benötigt, um volle "Breitwort-"Datenflußmuster zu vervollständigen.
  • Anwendungsbeispiele
  • Die ALP-Mittel im RSP können auf drei unterschiedliche Weisen benutzt werden:
  • E/A-Pipeline. Schnittstelle zu externen Sensoren und Betätigungsgliedern unter Verwendung der konfigurierbaren E/A-Anschlüsse (wie beispielsweise die Datenmengen A und B). Damit verringert sich die Anzahl externer Bauelemente, die zur Implementierung eines Systems benötigt werden. In dieser Rolle wird der ALP als herkömmliche FPGA-Struktur benutzt, um mit den Steuersignalen der externen Vorrichtungen auf flexible Weise in Wechselwirkung zu treten. Das PDP-Programm greift dann auf die externen Daten unter Verwendung von Pipelinebuslese- und -schreibbefehlen zu. Der ALP kann Vor- und Nachverarbeitungsfunktionen, wie beispielsweise Bitzusammenfügung und -neuzusammenfügung bieten.
  • Programmierte Pipeline. Der ALP wird durch Durchführung von einfachen Overheadfunktionen für die Berechnung, die sonst mehrfache Befehle erfordern, zur Beschleunigung des Berechnungsvorgangs benutzt.
  • Selbständige Pipeline. Die gesamte Berechnung oder ein Großteil derselben wird im ALP durchgeführt, der direkt ohne Programmsteuerung auf die Speicher- und Schaltbus-E/A-Mittel zugreift.
  • Diese Ansätze können auf verschiedene Weisen kombiniert werden, um mit minimalen externen Bauelementen eine hohe Leistung bereitzustellen. In den folgenden Abschnitten wird beschrieben, wie sich diese Verfahren auf bekannte Berechnungen anwenden lassen.
  • Gleitkommaverarbeitung
  • Wenn der PDP-Prozessor im RSP keine Gleitkomma- Arithmetikfähigkeit besitzt, kann der ALP durch Durchführung der Exponentenberechnungen, Ausnahmezustanderkennung und Mantissenwortbildung zur
  • Beschleunigung einer Menge von Gleitkomma- Unterprogrammen um einen Faktor 5 benutzt werden. Die PDP-Befehle werden dann zur Durchführung der eigentlichen Multiplizier-, Addier- und Subtrahieroperationen benutzt. Für die gegenwärtige Besprechung wird das in der 23 gezeigte 32-Bit-IEEE-Gleitkomma-Datenformat benutzt. Jedes Gleitkommawort besteht aus zwei 16-Bit-Worten. Das niederwertige Wort (ML) stellt die niederwertigen 16 Bit der Mantisse dar. Die nieder-wertigen 7 Bit des höherwertigen Wortes (MH) sind die höherwertigen Bit der Mantisse, das (die) höchstwertige(n) Bit des höherwertigen Wortes sind das Zeichenbit und die übrigen Bit im höherwertigen Wort (E) stellen den Exponenten dar. Im IEEE-Format wird ein "verstecktes Bit" in der Matisse angenommen. Für alle Werte außer 0 muß an das MH-Feld ein Einzelbit mit einem Wert "1" angehängt werden, um einen richtigen 24-Bit-Mantissenwert zu erhalten.
  • 24 ist ein Blockschaltbild für eine ALP-Schaltung zur Durchführung von beschleunigten Gleitkomma-Operationen. Der allgemeine Plan für die ALP-Beschleunigerschaltung besteht darin, zwei Worte, die einen Gleitkomma-Wert darstellen, unter Verwendung des DRm-Pipelinebusses aus dem Speicher auszulesen. Die ALP-Schaltung bestimmt dann, ob mit dem Wert irgendwelche Ausnahmebedingungen verbunden sind. Für die gegenwärtige Besprechung wird eine verringerte Menge von Ausnahmen benutzt, die für Digitalsignalverarbei-tungsanwendungen typisch sind. Diese Bedingungen sind in Tabelle 13 zusammengefaßt.
  • Tabelle 13. IEEE-Gleitkomma-Ausnahmen für DSP
    Figure 00900001
  • Wenn Daten aus dem Speicher zur ALP-Schaltung ausgelesen werden, werden die Werteregister (VL und VH) mit dem Eingangswert beladen. Die Schaltungen "M = 0" und "E = 0" berechnen dann die Eigenschaften des Eingangswertes. Die Werteschaltung (VC) faßt dann diese Bedingungen zusammen und es wird, falls der Zustand "kN" (keine Nummer) erkannt wird, das DRm-Pipeline-Statusbit (das Signal DRm_STAT) gesetzt. Damit kann die Softwarefolge ungültige Eingangsdatenzustände erkennen. Nach Abschluß einer Gleitkomma-Operation hält das Gleitkomma-Akkumulatorregister (AL und AH in der Figur) den Ergebniswert. Diese selben Zustände werden dann für den Ergebniswert erkannt und bei Erkennung eines ungültigen Ergebnisses wird das Statusbitsignal DWm_STAT gesetzt. Der sich ergebende ungültige Zustand wird ebenfalls gesetzt, wenn ein Überlauf- oder Unterlaufzustand erkannt wird.
  • Die ALP-Schaltung der 24 enthält einen Prozessor vollständiger Exponenten (EP) und einen Prozessor vollständiger Vorzeichenbit (SBP). Für diese Funktionen werden keine PDP-Befehle benötigt. Nunmehr werden die Funktionsweise der ALP-Schaltung und die PDP-Programmfolgen zur Durchführung der Grund-Gleitkomma-Funktionen beschrieben.
  • Beladen Gleitkomma-Akkumulator – Zum Beladen des Gleitkomma-Akkumulators belädt das Programm zuerst die Eingangswerteregister mit zwei Worten und setzt das Funktionsregister (F) in der ALP-Schaltung auf eine Operation "Laden". Die Gleitkomma-Steuerungs-(FPC – floating point control)Schaltung überträgt dann die VL- und VH-Registerwerte zu den AL- und AH-Registern und setzt das Signal DWm_STAT, wenn der Wert ungültig ist. Die grundlegenden Programmschritte in Assemblersprache sind folgende:
    LDALPD A; Laden niederwertiges Wort in ALP-Schaltung
    LDALPD A+1; Laden hochwertiges Wort in ALP-Schaltung
    LDALPF "LDA"; Setzen ALP-Funktion
    IFC "ALP_DW" ...; Prüfen auf gültigen Operandenwert
  • Speichern Gleitkomma-Akkumulator – Das Programm setzt das Funktionsregister (F) in der ALP-Schaltung auf eine Operation "Speichern". Die Gleitkomma-Steuerungs-(FPC-)Schaltung überträgt dann die AL- und AH-Registerwerte zum DWm-Ausgangspipelinebus zur Speicherung im Speicher. Die grundlegenden Programmschritte in Assemblersprache sind die folgenden:
    LDALPF „LDA"; Setzen ALP-Funktion auf Speichern
    STALPD A; Speichern niederwertiges Wort aus ALP-Schaltung in "A"
    STALPD A+1; Speichern hochwertiges Wort aus ALP-Schaltung in "A+1"
  • Gleitkomma-Vergleich – Das Programm belädt das Eingangsregister mit dem mit dem aktuellen Gleitkomma-Akkumulatorwert zu vergleichenden Wert und setzt dann das Funktionsregister auf "Vergleich". Das Signal DRm_STAT zeigt eine ungültige Eingabe an, DWm_STAT zeigt an, daß "A = V", und DRp_STAT zeigt an, daß "A > V".
    LDALPD A; Laden niederwertiges Wort in ALP-Schaltung
    LDALPD A+1; Laden hochwertiges Wort in ALP-Schaltung
    LDALPF "CMP"; Setzen ALP-Funktion
    IFC "ALP_DR" ...; Prüfen auf aktuell größer als Eingabe
  • Gleitkomma-Multiplikation – Das Programm belädt das Eingangsregister mit dem mit dem aktuellen Gleitkomma-Akkumulatorwert zu multiplizierenden Wert und setzt dann das Funktionsregister auf "Multiplikation". Das Signal DRm_STAT zeigt eine ungültige Eingabe an. Die ALP-Schaltung berechnet automatisch den zeitweiligen Wert des sich ergebenden Exponenten und setzt das Signal DRp_STAT, wenn der Eingangswert "0" beträgt. Dann werden drei Multiplikationsoperationen unter Verwendung von Werten durchgeführt, die aus der DRp-Pipeline in einer festen Folge ausgelesen werden, die durch die Steuerschaltung definiert wird, die die Multiplexer zur Bereitstellung der Operanden in der ordnungsgemäßen Reihenfolge steuert. Das Ergebnis wird dann aus der WDp-Pipeline vom PDP aus in den Akkumulator eingeladen.
  • Figure 00930001
  • Figure 00940001
  • In diesem Codebeispiel stellen die Adressen "ALPD" und "ALPV" konfigurierbare Adreßmodusreferenzen zur Übertragung der ALP-WDa-Pipeline zum PDP bzw. Speicher dar. Dies ist ein Beispiel des wirklichen Vermögens der Verwendung von ALP-Pipelineschaltungen. Durch die Verwendung von einfachen Schaltungen im ALP zur Durchführung der einfachen Bithandhabungs- und Exponentenverarbeitungsfunktionen reduziert sich die Programmfolge auf ein Fünftel der Anzahl von Befehlen, die sonst zur Durchführung der IEEE-Gleitkomma-Multiplikation benötigt werden würden.
  • Gleitkomma-Addition – Das Programm belädt das Eingangsregister mit dem zum aktuellen Gleitkomma-Akkumulatorwert hinzuzufügenden Wert und setzt dann das Funktionsregister auf "Addition". Das Signal DRm_STAT zeigt eine ungültige Eingabe an. Der ALP-Exponentenprozessor berechnet den Mantissenverschiebungswert, der zum Skalieren des kleineren Operanden benutzt wird, und setzt das Signal DRp_STAT, wenn die Operation in Wirklichkeit stattdessen eine Subtraktion erfordert. Die ALP-Schaltung erkennt, welche Mantisse größer ist, und lädt diesen Wert zuerst in den PDP. Das Programm führt dann die Addition oder Subtraktion durch. Es wird eine Prüfung durchgeführt, ob Nachnormierung erforderlich ist (die Einzelheiten sind der Kürze halber weggelassen). Das Ergebnis wird dann zusammen mit dem vom Exponentenprozessor berechneten neuen Exponentenwert zurück in den Gleitkomma-Akkumulator umgespeichert.
  • Figure 00940002
  • Figure 00950001
  • Eine ähnliche Folge wird zur Durchführung von Gleitkomma-Subtraktion benutzt. Der einzige Unterschied besteht in der Umkehrung der Richtung der Subtraktionsbedingung.
  • Berechnung der schnellen Fouriertransformation (FFT – Fast Fourier Transform)
  • Bei der Auswertung und Handhabung von Daten ist die Benutzung der diskreten Fouriertransformation (DFT – Discrete Fourier Transform) weit verbreitet. Die mathematische Definition des Problems ist folgende: Bei einem gegebenen Vektor von Daten X mit N Punkten ist die diskrete Fouriertransformation der N-Punktvektor Y, gegeben durch das Produkt von X und der Transformationsmatrix M: Y = M·X
  • Im allgemeinen sind die Elemente von X komplexe Zahlen, die die Werte einer Zeitbereichsfunktion darstellen, und die Elemente von Y sind komplexe Zahlen, die die Koeffizienten des Frequenzbereichsspektrums der Funktion darstellen. Die Elemente der Transformationsmatrix M sind im allgemeinen komplexe Zahlen, die durch folgende Formel gegeben sind: Mjk = cos(2πjk/N) – i·sin(2πjk/N), j = 0, 1, ... N – 1 und k = 0, 1, ... N – 1
    wobei j und k die Zeilen- und Spaltenindices und i = √(–1) sind. Bei direkter Berechnung erfordert die DFT N2-Multiplizier- und N2-Addieroperationen. Die Algorith-men der schnellen Fouriertransformation (FFT) nutzen die Symmetrieeigenschaften der Koeffizienten Mjk, um die Anzahl von Berechnungen bedeutsam zu verringern.
  • 25 zeigt den Datenfluß und die Berechnungen des grundlegenden FFT-Algorithmus für N = 8. Wenn N eine Potenz von 2 ist, so daß N = 2m, erfordert der Vorgang m + 1 Stufen. In der ersten Stufe (Stufe 0 in der 24) wird der Eingangsdatenvektor X durch die "Bitumkehr-"Permutation permutiert, um den Zwischendatenvektor Z[j,0] zu bilden. In dieser Stufe wird jedes Element X[n] des Vektors X so auf das Element Z[j,0] abgebildet, daß die Bit mit Index j den Kehrwert des Indexes n bilden. In den Berechnungsstufen wird jedes "Reflexionspaar" von Zwischenwerten Z[j,k] und Z[j^d,k] transformiert, um das nächste Paar von Zwischenwerten Z[j,k + 1] und Z[j^d,k + 1] zu bilden. Für die Stufe k wird der Abstand zwischen den Elementen eines Paars durch die Hamming-Abstandsfunktion gegeben:
    j ist mit j^2k gepaart,
    wobei "^" das bitweise exklusive ODER der binären Darstellung der Ganzzahlen j und 2k ist. Die reduzierte Menge von Multiplikationskoeffizienten in der Figur basiert auf den Symmetrieeigenschaften der M-Matrix. Insbesondere ist: C[r] = M1,r wobei der Index r für den Koeffizienten der j-ten Zeile der Stufe k durch die niederwertigen (m – 1) Bit von j gegeben ist, wobei die niederwertigen (m – k) Bit auf Null gesetzt sind.
  • Nunmehr wird eine spezifische Ausführungsform der FFT unter Annahme der Verwendung von 16 RSP-Bauelementen, die unter Verwendung des Schaltbusses und einem 17-ten RSP, der zur Steuerung der Verarbeitungsanordnung benutzt wird, miteinander verbunden sind, dargestellt. Jeder RSP in dieser Struktur wird eindeutig durch den Prozessorindexwert L identifiziert, wobei L = 0, 1, ... 15 die "Datenprozessoren" sind und L = 16 die Berechnungssteuerung darstellt. Für Darstellungszwecke wird ein Wert von N = 1024 benutzt. Auch wird angenommen daß der Prozessor P0 die X-Elemente X[0], X[1], ... X[63] enthält, der Prozessor P1 die X-Elemente X[64], X[65], ... X[127] enthält und so weiter.
  • In der ersten Stufe muß der Vektor X bitweise rückwärts permutiert werden. Dies läßt sich durch Anwendung von einfachen Pipelines im ALP durchführen. In jedem Schritt werden in jedem Schaltbuszyklus 16 Datenpaare ausgetauscht. Der Algorithmus für den Vorgang basiert auf der Bildung von drei Gruppen für die Bit des Indexes des Datenelements X[i], das mit dem Datenelement X[j] so ausgetauscht werden muß, daß j der Wert von i mit umgekehrten Bit ist. Bei N = 1024 werden 64 Zyklen zur Vollendung der Umkehrpermutation benötigt (16 stellt das 6-te Bit von Index I dar und so weiter):
  • Figure 00980001
  • Bei der gegebenen angenommenen Datenspeicherordnung stellen die oberen 4 Bit (das mit SP bezeichnete Feld) die Prozessorkennummer dar und die unteren 6 Bit des Indexes (SG,SV) stellen den Index für die Speicherung von Datenelementen in diesem Prozessor dar. Zwei Datenelemente X[i] und X[j] können unter Verwendung von Schaltbusreflexionen ausgetauscht werden, wenn der Hamming-Abstand zwischen den Ursprungs- und Zielprozessornummern einer der zulässigen Reflexionswerte d ist, wobei d = 0, 1, ... 15. Das kann durch folgendes Erfordernis erzwungen werden: DP = SV^d
  • Alle 1024 Werte werden ordnungsgemäß durch Durchlaufen aller möglichen Werte von SG und SV permutiert. Beispielsweise wird der Austausch von X[153] gegen X[356] folgendermaßen durchgeführt:
    Figure 00980002
    wobei der Schaltbusabstand d = DP^SV = 14. Bei diesem Beispiel führen die ALP-Pipelineschaltungen die detaillierte Bithandhabung durch, um das Quelladressen-(RA-Pipeline), Zieladressen-(WA-Pipeline), Quelldaten lese-(RD-Pipeline), Quellschreib-(WD-Pipeline), Schaltbussende-(XW-Pipeline) und Schaltbusempfangs-(XR-Pipeline) Signal zu erstellen, womit der größte Teil der Pipelinebusanordnungsmittel genutzt wird. In dieser Stufe der FFT wird der PDP im Prozessor P16 nur für die Folgesteuerung durch die zur Vollendung des Vorgangs benötigten 64 Schritte benutzt.
  • Die 26 ist ein Blockschaltbild für eine ALP-Schaltung, die in jedem Datenverarbeitungselement zur Implementierung der bei der FFT benutzten Permutationsoperation zur Anwendung kommt. Zwischen den Prozessoren wird die Operation durch die Schaltbuszyklen synchronisiert. In der vorliegenden Figur ist der Block mit der Bezeichnung "A" ein Register, das mit der Basisadresse im Speicher des ersten Elements im X-Datenvektor beladen ist. Der Block "GS" ist ein Sechs-Bit-Zähler, der zum Fortschalten durch die Daten benutzt wird. Die niederwertigen zwei Bit dieses Zählers sind die "Gruppen-"Nummer und entsprechen dem SG-Feld in den obigen Beispielen. Die Quelladresse (RA) bei jedem Schritt wird dadurch erstellt, daß zuerst die exklusive ODER-Verknüpfung des Stufenwertes S mit der Prozessornummer L durchgeführt wird. Dieser Wert wird mit dem Gruppenwert G verkettet, umgekehrt (was nur Drahtverbindungen erfordert) und zu der Basisadresse hinzugefügt. Die Zieladresse (WA-Pipeline) wird durch Addieren des umgekehrten Wertes von L, verkettet mit G, zu der Basisadresse gebildet. Nach der Initialisierung arbeitet die Steuerschaltung für diesen Block als selbständige Pipeline und wiederholt den Zyklus der folgenden Schritte:
    • (1) Erzeugen Leseadresse in RA, Warten auf RD-Daten bereit. Auch Erstellen des später zu benutzenden Schreibadreßwertes.
    • (2) Lesen Daten aus RD und Übertragen Daten in Pipeline XW über den Schaltbus. Warten auf Empfangsdaten vom Schaltbus.
    • (3) Schreiben der Empfangsdaten von XR in den Speicher an der durch den WA-Wert definierten Adresse. Erhöhen des GS-Zählers.
  • Diese Schleife wird solange wiederholt, bis der GS-Zähler überläuft und der Vorgang dann endet. Der Fluß des P16-Programms ist allgemein wie folgt:
  • Figure 01000001
  • Man beachte, daß der größte Teil der Arbeit für die Bitumkehrphase in der ALP-Schaltung durchgeführt wird.
  • Die übrigen Stufen des FFT-Algorithmus benutzen die PDP-Verarbeituagsfähigkeiten in jedem Prozessor zur Durchführung der Addier-, Subtrahier- und Multiplizieroperationen. Der Algorithmus wird vereinfacht, indem die Datenprozessoren in Paare aufgeteilt werden, die die Grundberechnuag durchführen, wie in 27 dargestellt. Der Hamming-Abstand zwischen Paaren von Datenelementen beträgt 0 für die ersten 6 Stufen und ist durch folgendes gegeben: d = 2(k–6) für die letzten vier Stufen.
  • 28 ist ein Blockschaltbild einer ALP-Pipelineschaltung, die die Adresse für die Koeffizienten, die Adresse zum Lesen und Schreiben der Daten berechnet und die Daten über den Schaltbus für die FFT-Berechnung überträgt. In dieser Schaltung ist der Block "A" ein Register, in dem die Basisadresse im Speicher für die Daten gespeichert ist, der Block "C" ein Register, das die Basisadresse im Speicher für die Koeffizienten speichert und "S ein Register, das des Stufenindex speichert. Der Hlock "Dc" ist ein Zähler, der um in "S" definierte Werte ansteigt, um Adressen für aufeinanderfolgende Datenelemente für jede Stufe zu erzeugen. Der Block Cc" ist ein Zähler, der gleichermaßen aufeinanderfolgende Koeffizientenadresswerte erzeugt. Der Multiplexerblock "mux" wählt die Daten oder Koeffizientenadresse zum Auslesen aus dem Speicher aus.
  • Ein beispielhafter Umriß eines Algorithmus für die ungeradzahligen Datenverarbeitungselemente für die Berechnungsstufen der FFT ist wie folgt:
    Der folgende Umriß des Algorithmus wird dann für die geradzahligen Datenverarbeitungeelemente benutzt:
  • Figure 01010001
  • Danach wird der folgende Algorithmus vom Steuerprozessor (P16) zum Steuern des Datenflusses durch den Schaltbus benutzt:
  • Figure 01010002
  • Figure 01020001
  • Bildverarbeitung
  • Eine gebräuchliche Aufgabe bei Videokonferenz-, Bildtelefon- und Multimedia-Computeranwendungen ist die Kompression von Videobildströmen. Der Grundansatz besteht im Vergleichen der Bilddaten aus einem Vollbild mit einem aktuellen Schätzbild, Ableiten der wesentlichen Differenz und nachfolgendem Übertragen einer codierten Version der Differenzen. Dieser Vorgang wird "Videocodierer" genannt. Danach wird ein Videodecoder zur Rekonstruktion des ursprünglichen Bildstroms durch Umkehren der Grundschritte benutzt. Bei den meisten heutigen Ansätzen wird eine hierarchische Darstellung des im Speicher gespeicherten Bildes in der in 29 dargestellten Form benutzt.
  • In dieser Darstellung werden die Bilddaten zuerst in Blöcke von Bildpunkten (Pel) eingeteilt, wobei jeder Block aus einem N×N-Teilbild besteht, wobei N die Anzahl von Prozessoren ist. In dem in 29 gezeigten Beispiel ist jeder Block ein 8 × 8-Bild. Vier Blöcke werden zusammengruppiert, um einen "Makroblock" von 16 × 16 Bildpunkten zu bilden. In einem Parallelverarbeitungssystem mit mehrdimensionalem Speicherzugriff kann auf jede Zeile oder Spalte eines Bildblocks unter Verwendung der Reflexionsdatenflußmuster in einem einzigen Schaltbuszyklus zugegriffen werden.
  • Der vereinfachte Fluß eines Videocodieralgo rithmus ist wie folgt:
    • (1) Vergleichen jedes neuen Makroblocks mit dem entsprechenden Makroblock des gegenwärtigen Schätzbildes. Wenn die Differenz unterhalb eines vorgeschriebenen Schwellwertes liegt, wird keine weitere Verarbeitung an dem Makroblock durchgeführt.
    • (2) Bewegungserkennung – Die meisten Differenzen in einem Makroblock sind das Ergebnis der Bewegung eines Teils des Bildes. Der Algorithmus bestimmt die Bewegungsgröße eines Makroblocks durch eine komplexe Vergleichsfolge mit dem Vergleichen einer verschobenen Version des geschätzten Makroblocks mit einer Nachbarumgebung des neuen Bildes. Daraus ergibt sich eine annähernde optimale neue Position für den Schätzblock.
    • (3) Transformation – Die Differenz zwischen dem Schätzblock und dem neuen Block wird unter Verwendung des Algorithmus der diskreten Cosinustransformation (DCT – Discrete Cosine Transform) transformiert.
    • (4) Der transformierte Differenzblock wird quantisiert, um die Gesamtzahl benötigter Bit zu verringern.
    • (5) Die quantisierten Daten werden dann unter Verwendung von Datenkompressionsverfahren wie beispielsweise Codierung mit veränderlicher Wortlänge (VLC – Variable Length Coding) weiter reduziert.
  • In der folgenden Übersicht wird die Verwendung eines 17-Prozessor-RSP-Systems zur Implementierung der Bewegungserkennungs- und Transformationsschritte, die typischerweise die kompliziertesten Aspekte der Videokompression darstellen, beschrieben. Der Ansatz bedient sich der Fähigkeiten des mehrdimensionalen Zugriffs des Schaltbusses in Kombination mit der Verwendung des ALPs zur Adreßerzeugung und zum Bildpunktvergleich.
  • 30 zeigt die Abbildung von Bildpunkten in einem Makroblock auf die 16 RSP-Datenprozessoren, die unter Verwendung von Hexadezimaldarstellung ("0", "1", ... "A", ... "F") numeriert sind, für eine auf der Architektur der vorliegenden Erfindung basierende Bildverarbeitungsanwendung. Die Bildpunkte des Makroblocks werden entsprechend den auf dem Hamming Abstand-Konzept basierenden mathematischen Zuordnungsregeln den Speichern der verschiedenen RSP-Prozessoren zugewiesen. Unter diesen Regeln wird der Bildpunkt an Stelle x und y im Makroblock auf die Koordinaten P und A abgebildet, wobei P die Prozessornummer und A der Adressenversatz des Bildpunktes in der Blockspeicherung im Prozessor P ist. Die mathematische Regel ist folgende: P = x^Rp(y) A = ywobei RP(.) der Bitumkehroperator ist und "^" ein bitweises exklusives ODER anzeigt. Durch diese Regeln wird dann die umgekehrte Abbildung von (A,P) auf Koordinaten (x,y) durch folgende Gleichungen gegeben: x = P^Rp(A) y = A
  • Durch diese verwürfelte Anordnung von Daten unter den Prozessoren wird der Zugriff auf die Daten unter Verwendung mehrerer "Adressiermodi", wie in 31 dargestellt, ermöglicht. Der Grundadressiermodus ist "CM40", der erlaubt, daß jede 16-Pelpunktzeile von einem Block in einem Schaltbuszyklus gelesen werden kann. Bei diesem Modus sind die Werte y und A die ausgewählte Zeile und haben denselben Wert für alle Prozessoren. Der Schaltbus liest oder schreibt diese Zeile unter Verwendung eines Reflektionsabstandes von Rp(y), der die Daten für eine Schreiboperation in die richtigen Prozessoren verwürfelt bzw. die Daten aus den Prozessoren für eine Leseoperation entwürfelt.
  • Als Alternative kann jede Spalte in einem Block in einem Schaltbuszyklus unter Verwendung des Adreßmodus "CM04" modifiziert werden. In diesem Modus ist der Wert x eine Konstante, der Schaltbusabstand ist auf den Wert x gesetzt und die Adresse in jedem Prozessor ist gegeben durch: A = Rp(P^x)
  • Die verwürfelte Abbildung erlaubt gleichermaßen den Zugriff eines beliebigen 8×2-, 4×4- oder 2×8-Blocks von Bildpunkten in einem Zyklus. Zusätzlich erlaubt das Schema die Verwendung von "gegabelten" Adressiermodi. Beispielsweise erlaubt der Modus "BM44" den Zugriff auf Bildpunkte in einem zweidimensionalen Muster mit einem Abstand von 4 zwischen jedem Bildpunkt.
  • Es gibt mehrere Weisen zur Verwendung der mehrdimensionalen Zugriffsmodi dieses Schemas zur Implementierung der Bewegungserkennungsstufe der Videocodierung. Modus BM44 kann zur Durchführung einer schnellen Überprüfung einer Bildänderung durch Vergleichen einer Teilmenge des neuen Bildblocks mit dem gegenwärtigen Schätzblock in drei Schaltbuszyklen benutzt werden. In diesem Fall wird eine ALP-Pipelineschaltung zur Erzeugung der Speicheradressen "A", zum Durchführen eines Schwellwertvergleichs der beiden Bildpunkte und Melden des Gesamtergebnisses ("ja" bzw. "nein") an den PN-Prozessor benutzt. Wenn alle Prozessoren "keine bedeutende Differenz" melden, dann überspringt der PN-Prozessor alle weiteren Arbeiten an diesem Blockpunkt.
  • Wird eine bedeutende Blockdifferenz erkannt, versucht der Algorithmus, durch ein Suchverfahren die optimale neue Stelle für den Block zu bestimmen. Der allgemeine Suchplan für eine Bewegungsversatzanwendung ist in 32 dargestellt. Es stehen. mehrere Strategien zum Finden des optimalen Versatzes zur Verfügung. Im äußersten Fall wird der Schätzblock mit allen möglichen Stellen in einer festen Nachbarumgebung verglichen. Dies würde für die meisten Anwendungen unzulässig viel Zeit erfordern. Eine gebräuchliche Strategie ist, ein Verfahren des "Bezwingens durch Teilen" zu benutzen. Das Folgende ist ein grober Umriß:
    • (1) Die Vergleichsergebnisse der schnellen Überprüfung auf einen Nullversatz werden durch Addieren der Differenzwerte aller 16 Prozessoren angesammelt, um einen Gesamtdifferenzschätzwert zu erhalten. Dieser Reduktionsschritt erfordert 4 Schaltbuszyklen. Im ersten Zyklus wird der Betrag der Differenz in jedem Prozessor zum vergleichbaren Wert im Prozessor mit Abstand 1 hinzuaddiert. Der Schritt wird für Abstand 2, 4 und 8 wiederholt, woraus sich die in allen Prozessoren gespeicherte Sammeldifferenz ergibt. Dies stellt den aktuellen Gesamtdifferenzwert dar.
    • (2) Es wird dann die Differenz zwischen dem Schätzblockversatz gefunden, die Daten von jedem der acht Nachbarn des Schätzblocks enthält. Dies wird mit einem groben Versatz von 4 Bildpunkten durchgeführt. Für jede der acht möglichen Bewegungsrichtungen wird eine neue Sammeldifferenz berechnet. Wenn die neue Sammeldifferenz weniger als der vorherige Differenzwert ist, ersetzt die neue Sammeldifferenz den alten Wert und der neue Versatz ersetzt den vorherigen Versatzschätzwert.
    • (3) Der Schritt 2 wird mit einem Versatzabstand von 2 vom aktuellen optimalen Versatz wiederholt.
    • (4) Der Schritt 2 wird mit einem Versatzabstand von 1 von dem aktuellen optimalen Versatz wiederholt.
  • Daraus ergibt sich ein Bewegungsvektor (Dx,Dy), der eine Annäherung an den optimalen Bewegungsversatz anzeigt. Dieser Versatz wird dann zur Berechnung eines Differenzblocks benutzt, der die Differenz von Bildpunkten im neuen Bild im Verhältnis zu dem Versatzwert des Schätzblockes enthält. Der Differenzblock wird dann unter Verwendung eines zweidimensionalen DCT-Algorithmus transformiert. Dies geschieht typischerweise an den 8×8-Blöcken, um die Menge an notwendigen Berechnungen herabzusetzen. Die allgemeine Gleichung für den zweidimensionalen Algorithmus ist wie folgt:
    Figure 01060001
    wobei Dij die Bildpunkt-Differenzwerte an Stelle x = I und y = j sind, Gx,y die Matrix transformierter Werte ist und die Transformationskoeffizienten Wij durch folgende Formel gegeben sind:
  • Figure 01070001
  • Der Vorgang wird dadurch vereinfacht, daß zuerst in folgenden Gleichungen eine eindimensionale DCT an den Zeilen des Blocks und danach eine eindimensionale DCT an den Spalten des Blocks durchgeführt wird:
  • Figure 01070002
  • Für die Videokompression wird die DCT typischerweise für 8×8-Blöcke berechnet. Die Koeffizienten Wij verhalten sich nicht so gut wie die entsprechenden FFT-Koeffizienten. Diese Koeffizienten weisen eine Symmetrieeigenschaft auf, die die Reduktion auf nur N – 1 verschiedene Koeffizienten Cj durch folgende Definition erlaubt: Cj = W0j, j = 1, 2, ... N – 1
  • Die eindimensionale 8×8-Transformation läßt sich dann durch folgendes Matrixprodukt ausdrücken:
    Figure 01070003
    was 64 Multiplizier-Akkumulieroperationen erfordert. Die Anzahl von Multiplizieroperationen läßt sich durch Verwendung der Symmetrieeigenschaften der Koeffizientenmatrix und Verwendung eines durch die Summe und Differenz der Daten gebildeten Hilfsdatenvektors verringern:
    Figure 01080001
  • Mit dieser Form wird die Berechnung auf 32 Multiplizier-Akkumulieroperationen verringert, die über die 16 Datenprozessoren verteilt sind. Zur Implementierung auf dem 16-Prozessor-RSP-System werden zwei eindimensionale Transformationen gleichzeitig berechnet. Während der Zeilentransformationsphase wird der 8×2-Adreßmodus CM31 zum gleichzeitigen Zugreifen auf zwei Zeilen benutzt. Es werden dann acht Prozessoren zum Verarbeiten einer Zeile benutzt, während die übrigen acht Prozessoren die zweite Zeile verarbeiten. In der Spaltentransformationsphase wird der Adressmodus CM13 zum Zugreifen auf zwei Spalten in einem Zyklus benutzt. Der Summen-/Differenzvektor läßt sich leicht durch Verwendung der Reflexion mit Abstand 7 auf dem Schaltbus berechnen. Es werden dann ALP-Pipelines zur Berechnung der A/P- und der Koeffizientenadressen benutzt. Es folgt der Umriß des Codes für die vollständige zweidimensionale 8×8-DCT für die geradzahligen Prozessoren:
  • Figure 01090001
  • Nach Abschluß der Zeilentransformation werden mit einem ähnlichen Algorithmus die Spaltentransformationen berechnet:
  • Figure 01090002
  • Die ALP-Schaltungen für diese Berechnungen nutzen die kombinierten Datenflußoperationen des Schaltbusses. Beispielsweise wird das i-te Datenelement. im Summen-/Differenzvektor unter Verwendung eines Schaltbuszyklus gelesen der die Hildpunktabbildentwürflungsoperation mit dem Vektorelementversatz kombiniert. Nach Abschluß der DCT werden zusätzliche ALP-Schaltungen zur Durchführung der Quantisierungs- und Lauflängencodierschritte benutzt.
  • Wie bemerkt, benutzen Bildverarbeitungsanwendungen typischerweise Komplexe Datentransformationen wie beispielsweise die diskrete Fouriertransformation (DFT), diskrete Cosinustransformation (DCT) oder diskrete Walsh-Hadamard-Transformation (DWT) zur Umwandlung des Bildes in eine Ortsfrequenzdarstellung. Dies wird beispielsweise zur Bestimmung der sich in einem Bild bewegenden Art von Objekt durch Benutzung von Merkmalsanpassungsmedien benutzt. Alle diese Transformationen werden bei Implementierung unter Verwendung einer Gruppe von RSP-Vorrichtungen mit einer N-fachen Geschwindigkeit (oder schneller) durchgeführt.
  • Eine Implementierung der DWT-Berechnung wird hier als weiteres Beispiel, wie die konfigurierbare Logik und Schaltbusverbindungsstruktur zusammen zur Beschleunigung einer Anwendung benutzen werden können, benutzt. Für den eindimensionalen Fall werden die Eingangsdatenworte f[i] für i = 0, 1, ... N – 1 durch folgende Gleichung in einen N-Wort-Transformationsvektor F[i] umgewandelt:
    Figure 01100001
    wobei die Koeffizienten Cj,k die Werte +1 oder –1 entsprechend einem Hammingabstandverhältnis sind:
  • Figure 01100002
  • In dieser Formel ist Ω(j ⊗ k) das "Gewicht" des Hammingabstands, so daß Ω(j ⊗ k) den Wert 0 besitzt, wenn der Abstand j ⊗ k geradzahlig ist und Ω(j ⊗ k) den Wert 1 besitzt, wenn der Abstand ungeradzahlig ist. Eine direkte Implementierung dieser Gleichungen erfordert N2/2 Additionen und N2/2 Subtraktionen. Für die gegenwärtige Besprechung ist ein "schneller" Algorithmus dargestellt, der nur N*log2(N) Additionen und Subtraktionen erfordert und sich der Schaltbusreflexionsdatenflußmuster bedient. Der Algorithmus setzt zuerst die Eingangsdatenwerte fj in den Ausgangswert des Vektors Z0j ein. Dann werden Log2(N) Parallelverarbeitungszyklen zum Modifizieren der Elemente von Z benutzt, damit sie der gewünschte Transformationswert werden. Die erforderliche Berechnung für jedes Element j im Schritt k ist durch folgende Formel gegeben:
    Figure 01110001
    wobei jk der Wert des k-ten Bits der Ganzzahl j und j' der Index des Hammingabstands-"Paars" für das Element j ist, der durch j' = j ⊗ 2k gegeben ist. 33 zeigt den Datenfluß und die Berechnungen des Walsh-Hadamard-Algorithmus für N = 8. Die "X"-Datenflüsse im Diagramm stellen die zur Implementierung der Berechnungen in jedem Schritt benötigten "Reflexions-"Datenflüsse dar. Die benötigten Hammingabstände betragen 1 für die erste Spalte, 2 in der nächsten Spalte usw. Zur Implementierung einer Gruppe von acht RSP-Prozessoren unterhält jeder RSP einen Wert des Vektors. Bei jedem Schaltbuszyklus gibt jeder Prozessor seinen aktuellen Zj-Wert aus und empfängt seinen Hammingabstand-Paarwert. Im vorliegenden Beispiel residiert das Element Zj im Prozessor mit der Nummer j, so daß der Prozessor eine Addition durchführt, wenn jk 0 ist, oder eine Subtraktion durchführt, wenn der Wert von jk 1 beträgt. Die 34 ist ein Blockschaltbild einer konfigurierbaren Logikschaltung, die die Berechnung der 33 implementiert. Die Schaltung benutzt vier der Leitungssätze der Pipelinebusanordnung, RD, um den Ausgangswert vom chipinternen Speicher zu holen, XW und XR für den Schaltbusdatenfluß und WD, um das Ergebnis in den lokalen Speicher zurhekzuschreiben. Durch Verwendung der selbstständigen Pipelinefähigkeit kann die gesamte Berechnung ohne Ausführung irgendwelcher Skalaprozessorbefehle durchgeführt werden. Der PN-Prozessor wird zum Fortschalten durch den Algorithmus und Synchronisieren der Operationen unter Verwendung der Schaltbusdatenflußzyklen benutzt.
  • Dieser Grundalgorithmus läßt sich für einen beliebigen Wert von Datenelementen N erweitern und kann zur Implementierung der zweidimensionalen Walsh- Hadamard-Transformation für Bildverarbeitung erweitert werden. Für die zweidimensionale Transformation werden die Daten entsprechend den schon beschriebenen Regeln für multidimensionalen Speicherzugriff verteilt. Die Transformationsoperationen werden dann an den Spalten der Bildmatrix und danach an den Zeilen der Matrix durchgeführt. Die Endwerte werden durch eine Rechtsverschiebung von log2(N) zur Implementierung des Teilungsfaktors 1:N an der ursprhaglichen Gleichung eingestellt. Die 35 zeigt einen Teil eines verschiebbaren Pipelinesegments zur Verwendung bei der Ausführung der Berechnung der 33. Diese detaillierte Schaltungssynthese und -auslegung wurde unter Verwendung eines RSP-Datenweggeneratorsoftwarewerkzeugprototyps erstellt.

Claims (9)

  1. Rekonfigurierbares Rechenbauelement mit einem adaptiven Logikprozessor, welcher eine Mehrzahl einzeln konfigurierbarer Logikzellen (150), die in einer Anordnung angeordnet sind, die eine Mehrzahl von vertikalen Spalten konfigurierbarer Logikzellen (150) und eine Mehrzahl horizontaler Zeilen konfigurierbarer Logikzellen (150) enthält, umfaßt, wobei ein Satz Steuerleitungen (134) zur Übertragung von Steuersignalen und ein Satz Datenleitungen (132) zur Übertragung von Daten zwischen einem Pipelinesegment (160) und einer Logikzellenrekonfigurationssteuerung vorgesehen ist, wobei das Pipelinesegment (160) eine Menge konfigurierter Logikzellen (150) enthält und entlang der vertikalen Erstreckung der Anordnung positioniert ist, dadurch gekennzeichnet, daß die Steuerleitungen (134) und die Datenleitungen (132) sich über eine Mehrzahl von Spalten der Anordnung erstrecken und damit erlauben, daß sich das Pipelinesegment (160) an einer Mehrzahl horizontaler Stellen der Anordnung befindet, während mit einer Logikzellenrekonfigurationssteuerung die Konfiguration der Logikzellen (150) zum Bilden des sich vertikal erstreckenden Pipelinesegments (160) und Ausführung der Menge von Logikfunktionen durch die konfigurierten Logikzellen (150) durch Übertragung von Befehlen und Daten mittels der Steuerleitungen (134) und Datenleitungen (132) steuerbar ist.
  2. Rechenbauelement nach Anspruch 1, dadurch gekennzeichnet, daß eine Arithmetikverarbeitungseinheit zur Ausführung von skalaren Arithmetikfunktionen vorgesehen ist und der adaptive Logikprozessor weiterhin einen zweiten Satz von Datenleitungen zur Übertragung von Daten zwischen der im Pipelinesegment enthaltenen Menge konfigurierter Logikzellen und der Arithmetikverarbeitungseinheit umfaßt, wobei sich der zweite Satz Datenleitungen über jede Spalte der Anordnung erstreckt.
  3. Rechenbauelement nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der adaptive Logikprozessor einen zwischen benachbarten Zeilen konfigurierbarer Logikzellen verlaufenden Zeilenlokalbus, wobei die konfigurierbaren Logikzellen in besagten Nachbarzellen selektiv da mit verbindbar sind, Logikzellen-Lokalbusschnittstellenschaltungen, die selektiv zwischen einer ausgewählten konfigurierbaren Logikzelle und einem ausgewählten Zeilenlokalbus verbindbar sind, um zuzulassen, daß die besagte ausgewählte konfigurierbare Logikzelle Daten aus dem ausgewählten Zeilenlokalbus ausliest oder Daten in denselben einschreibt, und Direktverbindungsmittel umfaßt, die zwischen der ausgewählten konfigurierbaren Logikzelle und einer benachbarten konfigurierbaren Logikzelle verbindbar sind, so daß ein durch die ausgewählte konfigurierbare Logikzelle bereitgestelltes Ausgangssignal unabhängig vom Zeilenlokalbus direkt als Eingangssignal für die benachbarte konfigurierbare Logikzelle bereitgestellt werden kann.
  4. Rechenbauelement nach Anspruch 3, dadurch gekennzeichnet, daß der adaptive Logikprozessor einen zwischen benachbarten Spalten konfigurierbarer Logikzellen verlaufenden Spaltenlokalbus, wobei die konfigurierbaren Logikzellen in besagten Nachbarspalten selektiv damit verbindbar sind und weiterhin wobei die Logikzellen-Lokalbusschnittstellenschaltungen selektiv zwischen einer ausgewählten konfigurierbaren Logikzelle und einem ausgewählten Spaltenlokalbus verbindbar sind, um zuzulassen, daß die ausgewählte konfigurierbare Logikzelle Daten aus dem ausgewählten Spaltenlokalbus ausliest oder Daten darin einschreibt.
  5. Rechenbauelement nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die zwischen der Menge konfigurierter Logikzellen und der Logikzellenrekonfigurationssteuerung übertragenen Steuersignale ein Funktionsanforderungssignal, das anzeigt, daß die Logikzellenrekonfigurationssteuerung einen Befehl in einer ausführenden Befehlsmenge identifiziert hat, der zur Ausführung durch die Menge konfigurierter Logikzellen bestimmt ist, ein Datenanforderungssignal, das anzeigt, daß die Logikzellenrekonfigurierationssteuerung Daten identifiziert hat, die von einem anderen Element des rekonfigurierbaren Rechenbauelements zum adaptiven Logikprozessor oder vom adaptiven Logikprozessor zu einem anderen Element des rekonfigurierbaren Rechenbauelements zu übertragen sind, und ein selbständiges Datenübertragungssignal zur Steuerung der Ausführung einer selbständigen Datenübertragung zwischen dem adaptiven Logikprozessor und einem anderen Element des rekonfigurierbaren Rechenbauelements umfassen, wobei die selbständige Datenübertragung unabhängig von einem Befehl im ausführenden Befehlssatz ist.
  6. Rechenbauelement nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß eine zum adaptiven Logikprozessor externe Speichervorrichtung zur Speicherung von Logikzellenkonfigurationsdaten vorgesehen ist, wobei die Speichervorrichtung durch den zweiten Satz von Datenleitungen mit den anderen Elementen des rekonfigurierbaren Rechenbauelements verbunden ist.
  7. Rechenbauelement nach Anspruch 6, dadurch gekennzeichnet, daß ein externer Adreßgenerator zum Erzeugen von zum Zugreifen auf die Speichervorrichtung benutzten Speicheradressen vorgesehen ist, wobei der Adreßgenerator durch den zweiten Satz Datenleitungen mit den anderen Elemenenten des rekonfigurierbaren Rechenelements verbunden ist.
  8. Rekonfigurierbares Rechensystem mit einer Mehrzahl miteinander verbundener rekonfigurierbarer Rechenbauelemente nach einem der Ansprüche 1 bis 7 und mit einem Verbindungsbus zur Bereitstellung von Signalübertragung zwischen der Mehrzahl rekonfigurierbarer Rechenbauelemente, wobei eine Netto-Signalbandbreite der Verbindung im Verhältnis zur Anzahl miteinander verbundener rekonfigurierbarer Rechenbauelemente zunimmt.
  9. Rechensystem nach Anspruch 8, dadurch gekennzeichnet, daß jedes der rekonfigurierbaren Rechenbauelemente einen Verbindungsbuskoppler zum Verbinden des rekonfigurierbaren Rechenbauelements mit dem zweiten Satz Datenleitungen und dem Verbindungsbus umfaßt.
DE19722365A 1996-05-28 1997-05-28 Rekonfigurierbares Rechenbauelement Expired - Fee Related DE19722365B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US654395 1996-05-28
US08/654,395 US5784636A (en) 1996-05-28 1996-05-28 Reconfigurable computer architecture for use in signal processing applications

Publications (2)

Publication Number Publication Date
DE19722365A1 DE19722365A1 (de) 1997-12-04
DE19722365B4 true DE19722365B4 (de) 2005-07-28

Family

ID=24624680

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19722365A Expired - Fee Related DE19722365B4 (de) 1996-05-28 1997-05-28 Rekonfigurierbares Rechenbauelement

Country Status (3)

Country Link
US (1) US5784636A (de)
KR (1) KR100305947B1 (de)
DE (1) DE19722365B4 (de)

Families Citing this family (223)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2307072B (en) 1994-06-10 1998-05-13 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
JP3623840B2 (ja) 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US5968161A (en) * 1996-08-29 1999-10-19 Altera Corporation FPGA based configurable CPU additionally including second programmable section for implementation of custom hardware support
GB2321322B (en) * 1996-10-28 2001-10-10 Altera Corp Remote software technical support
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
EP1329816B1 (de) 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US6289434B1 (en) * 1997-02-28 2001-09-11 Cognigine Corporation Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates
JP3215344B2 (ja) * 1997-03-10 2001-10-02 株式会社東芝 プロセッサ及びそのバグ回避方法
JP3187739B2 (ja) * 1997-03-12 2001-07-11 株式会社東芝 半導体集積回路及びそのテスト方法
US6311258B1 (en) * 1997-04-03 2001-10-30 Canon Kabushiki Kaisha Data buffer apparatus and method for storing graphical data using data encoders and decoders
US6085317A (en) * 1997-08-15 2000-07-04 Altera Corporation Reconfigurable computer architecture using programmable logic devices
US6023566A (en) * 1997-04-14 2000-02-08 Cadence Design Systems Cluster matching for circuit implementation
US5852742A (en) * 1997-06-17 1998-12-22 Hewlett-Packard Company Configurable data processing pipeline
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US5999734A (en) * 1997-10-21 1999-12-07 Ftl Systems, Inc. Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models
US6105125A (en) * 1997-11-12 2000-08-15 National Semiconductor Corporation High speed, scalable microcode based instruction decoder for processors using split microROM access, dynamic generic microinstructions, and microcode with predecoded instruction information
US6128724A (en) * 1997-12-11 2000-10-03 Leland Stanford Junior University Computation using codes for controlling configurable computational circuit
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
WO1999040492A1 (de) * 1998-02-06 1999-08-12 Siemens Aktiengesellschaft Verfahren und vorrichtung zum verarbeiten von daten gemäss einer vorgegebenen verarbeitungsfunktion mit hilfe einer programmierbaren logikschaltung
US6266764B1 (en) * 1998-03-17 2001-07-24 Matsushita Electric Industrial Co., Ltd. Program controller for switching between first program and second program
US6473897B1 (en) 1998-04-13 2002-10-29 Intel Corporation Method and apparatus for generating multiple processor-specific code segments in a single executable
US6167330A (en) * 1998-05-08 2000-12-26 The United States Of America As Represented By The Secretary Of The Air Force Dynamic power management of systems
US7100020B1 (en) * 1998-05-08 2006-08-29 Freescale Semiconductor, Inc. Digital communications processor
US6356995B2 (en) * 1998-07-02 2002-03-12 Picoturbo, Inc. Microcode scalable processor
US6292762B1 (en) * 1998-07-13 2001-09-18 Compaq Computer Corporation Method for determining a random permutation of variables by applying a test function
DE19843663A1 (de) 1998-09-23 2000-03-30 Siemens Ag Konfigurierbarer Hardware-Block
US6170041B1 (en) * 1998-09-24 2001-01-02 Integrated Silicon Soulution, Inc. Integrated circuit memory with a bus transceiver
US6141779A (en) * 1998-10-19 2000-10-31 Hewlett-Packard Company Method for automatically programming a redundancy map for a redundant circuit
US6539438B1 (en) 1999-01-15 2003-03-25 Quickflex Inc. Reconfigurable computing system and method and apparatus employing same
US6260139B1 (en) * 1999-01-26 2001-07-10 Xilinx, Inc. FPGA control structure for self-reconfiguration
US6195750B1 (en) * 1999-03-09 2001-02-27 Amdhal Corporation Method and apparatus for dynamic CPU reconfiguration in a system employing logical processors
WO2000077652A2 (de) 1999-06-10 2000-12-21 Pact Informationstechnologie Gmbh Sequenz-partitionierung auf zellstrukturen
US6347346B1 (en) * 1999-06-30 2002-02-12 Chameleon Systems, Inc. Local memory unit system with global access for use on reconfigurable chips
US6633181B1 (en) * 1999-12-30 2003-10-14 Stretch, Inc. Multi-scale programmable array
US6874110B1 (en) 2000-05-11 2005-03-29 Stretch, Inc. Apparatus and method for self testing programmable logic arrays
EP2226732A3 (de) 2000-06-13 2016-04-06 PACT XPP Technologies AG Cachehierarchie für einen Multicore-Prozessor
US6772254B2 (en) * 2000-06-21 2004-08-03 International Business Machines Corporation Multi-master computer system with overlapped read and write operations and scalable address pipelining
US6751723B1 (en) * 2000-09-02 2004-06-15 Actel Corporation Field programmable gate array and microcontroller system-on-a-chip
US7119576B1 (en) 2000-09-18 2006-10-10 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US7346644B1 (en) 2000-09-18 2008-03-18 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US6857110B1 (en) 2001-01-30 2005-02-15 Stretch, Inc. Design methodology for merging programmable logic into a custom IC
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
WO2005045692A2 (en) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7142882B2 (en) 2001-03-09 2006-11-28 Schmidt Dominik J Single chip wireless communication integrated circuit
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US20040133745A1 (en) 2002-10-28 2004-07-08 Quicksilver Technology, Inc. Adaptable datapath for a digital processing system
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7489779B2 (en) * 2001-03-22 2009-02-10 Qstholdings, Llc Hardware implementation of the secure hash standard
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
CN100397331C (zh) * 2001-09-07 2008-06-25 Ip菲力股份有限公司 数据处理系统以及控制方法
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7187663B2 (en) * 2001-10-09 2007-03-06 Schmidt Dominik J Flexible processing system
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US6868464B2 (en) * 2002-01-03 2005-03-15 Intel Corporation Method, apparatus, and system for multi-line communication
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
US6920545B2 (en) * 2002-01-17 2005-07-19 Raytheon Company Reconfigurable processor with alternately interconnected arithmetic and memory nodes of crossbar switched cluster
AU2003208266A1 (en) 2002-01-19 2003-07-30 Pact Xpp Technologies Ag Reconfigurable processor
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US6992925B2 (en) * 2002-04-26 2006-01-31 Kilopass Technologies, Inc. High density semiconductor memory cell and memory array using a single transistor and having counter-doped poly and buried diffusion wordline
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
GB0304628D0 (en) * 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
US8090928B2 (en) * 2002-06-28 2012-01-03 Intellectual Ventures I Llc Methods and apparatus for processing scalar and vector instructions
US20040133709A1 (en) * 2002-07-09 2004-07-08 International Business Machines Corporation Method and system for personalized I/O device initialization
US7657861B2 (en) * 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7031209B2 (en) * 2002-09-26 2006-04-18 Kilopass Technology, Inc. Methods and circuits for testing programmability of a semiconductor memory cell and memory array using a breakdown phenomenon in an ultra-thin dielectric
US7042772B2 (en) * 2002-09-26 2006-05-09 Kilopass Technology, Inc. Methods and circuits for programming of a semiconductor memory cell and memory array using a breakdown phenomenon in an ultra-thin dielectric
US7065665B2 (en) * 2002-10-02 2006-06-20 International Business Machines Corporation Interlocked synchronous pipeline clock gating
WO2004034227A2 (en) * 2002-10-11 2004-04-22 Quicksilver Technology, Inc. Reconfigurable bit-manipulation node
GB0224023D0 (en) * 2002-10-16 2002-11-27 Roysmith Graeme Reconfigurable integrated circuit
US7571303B2 (en) * 2002-10-16 2009-08-04 Akya (Holdings) Limited Reconfigurable integrated circuit
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US7418574B2 (en) * 2002-10-31 2008-08-26 Lockheed Martin Corporation Configuring a portion of a pipeline accelerator to generate pipeline date without a program instruction
EP1573515A2 (de) * 2002-10-31 2005-09-14 Lockheed Martin Corporation Pipeline-beschleuniger, system und verfahren dafür
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US20060076418A1 (en) * 2002-11-21 2006-04-13 Koninlijke Philips Electronics N.V. Electronic memory component or memory module, and method of operating same
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US7519630B2 (en) * 2002-12-16 2009-04-14 Dell Products L.P. Method and system for automated testing of versioned information handling system applications
US8001266B1 (en) 2003-03-31 2011-08-16 Stretch, Inc. Configuring a multi-processor system
US7590829B2 (en) * 2003-03-31 2009-09-15 Stretch, Inc. Extension adapter
US7581081B2 (en) 2003-03-31 2009-08-25 Stretch, Inc. Systems and methods for software extensible multi-processing
US7613900B2 (en) * 2003-03-31 2009-11-03 Stretch, Inc. Systems and methods for selecting input/output configuration in an integrated circuit
US7010664B1 (en) * 2003-04-30 2006-03-07 Xilinx, Inc. Configurable address generator and circuit using same
US7236525B2 (en) * 2003-05-22 2007-06-26 Lsi Corporation Reconfigurable computing based multi-standard video codec
EP1654554A1 (de) * 2003-07-23 2006-05-10 Koninklijke Philips Electronics N.V. Leistungsfähiges zuordnen von rekonstruktions-algorithmen der kerspintomographie auf ein rekonfigurierbares rekonstruktions-system
US7373642B2 (en) * 2003-07-29 2008-05-13 Stretch, Inc. Defining instruction extensions in a standard programming language
US7418575B2 (en) 2003-07-29 2008-08-26 Stretch, Inc. Long instruction word processing with instruction extensions
US6924664B2 (en) * 2003-08-15 2005-08-02 Kilopass Technologies, Inc. Field programmable gate array
US7209809B2 (en) * 2003-10-15 2007-04-24 The Boeing Company Method and apparatus for obtaining high integrity and availability in multi-channel systems
US6972986B2 (en) * 2004-02-03 2005-12-06 Kilopass Technologies, Inc. Combination field programmable gate array allowing dynamic reprogrammability and non-votatile programmability based upon transistor gate oxide breakdown
US7064973B2 (en) * 2004-02-03 2006-06-20 Klp International, Ltd. Combination field programmable gate array allowing dynamic reprogrammability
US20050218929A1 (en) * 2004-04-02 2005-10-06 Man Wang Field programmable gate array logic cell and its derivatives
US9123572B2 (en) 2004-05-06 2015-09-01 Sidense Corporation Anti-fuse memory cell
US7755162B2 (en) 2004-05-06 2010-07-13 Sidense Corp. Anti-fuse memory cell
EP1743380B1 (de) * 2004-05-06 2016-12-28 Sidense Corp. Antifuse-anordnungsarchitektur mit geteiltem kanal
US8735297B2 (en) 2004-05-06 2014-05-27 Sidense Corporation Reverse optical proximity correction method
CN101002169A (zh) 2004-05-19 2007-07-18 Arc国际(英国)公司 微处理器架构
US7164290B2 (en) * 2004-06-10 2007-01-16 Klp International, Ltd. Field programmable gate array logic unit and its cluster
US20050275427A1 (en) * 2004-06-10 2005-12-15 Man Wang Field programmable gate array logic unit and its cluster
US7278122B2 (en) * 2004-06-24 2007-10-02 Ftl Systems, Inc. Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization
US7151709B2 (en) * 2004-08-16 2006-12-19 Micron Technology, Inc. Memory device and method having programmable address configurations
US7299339B2 (en) * 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
US7135886B2 (en) * 2004-09-20 2006-11-14 Klp International, Ltd. Field programmable gate arrays using both volatile and nonvolatile memory cell properties and their control
US7619541B2 (en) * 2004-10-01 2009-11-17 Lockheed Martin Corporation Remote sensor processing system and method
US7804504B1 (en) * 2004-12-13 2010-09-28 Massachusetts Institute Of Technology Managing yield for a parallel processing integrated circuit
GB2423840A (en) * 2005-03-03 2006-09-06 Clearspeed Technology Plc Reconfigurable logic in processors
US7193436B2 (en) * 2005-04-18 2007-03-20 Klp International Ltd. Fast processing path using field programmable gate array logic units
US8966223B2 (en) * 2005-05-05 2015-02-24 Icera, Inc. Apparatus and method for configurable processing
EP1894113B1 (de) * 2005-06-23 2020-06-03 Hilscher Gesellschaft für Systemautomation mbH Verfahren zur datenkommunikation von busteilnehmern eines offenen automatisierungssystems
US20070031054A1 (en) * 2005-08-08 2007-02-08 Neomagic Israel Ltd. Encoding DCT coordinates
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US7747088B2 (en) 2005-09-28 2010-06-29 Arc International (Uk) Limited System and methods for performing deblocking in microprocessor-based video codec applications
US7568198B2 (en) * 2006-01-10 2009-07-28 National Instruments Corporation Control of tasks in a programmable logic controller
KR100681199B1 (ko) * 2006-01-11 2007-02-09 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
WO2007082730A1 (de) 2006-01-18 2007-07-26 Pact Xpp Technologies Ag Hardwaredefinitionsverfahren
US8041759B1 (en) 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8266199B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
JP2007272358A (ja) * 2006-03-30 2007-10-18 Pioneer Electronic Corp 情報処理装置
US8300798B1 (en) 2006-04-03 2012-10-30 Wai Wu Intelligent communication routing system and method
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US7822799B1 (en) 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US7814137B1 (en) 2007-01-09 2010-10-12 Altera Corporation Combined interpolation and decimation filter for programmable logic device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
KR100893527B1 (ko) * 2007-02-02 2009-04-17 삼성전자주식회사 재구성 가능 멀티 프로세서 시스템에서의 매핑 및 스케줄링방법
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US8589935B2 (en) 2007-05-08 2013-11-19 L-3 Communications Corporation Heterogeneous reconfigurable agent compute engine (HRACE)
US7949699B1 (en) 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage
US8566453B1 (en) * 2007-11-19 2013-10-22 Juniper Networks, Inc. COPS-PR enhancements to support fast state synchronization
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8244789B1 (en) 2008-03-14 2012-08-14 Altera Corporation Normalization of floating point operations in a programmable integrated circuit device
US7765512B1 (en) * 2008-03-25 2010-07-27 Xilinx, Inc. Relocatable circuit implemented in a programmable logic device
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8626815B1 (en) 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8255448B1 (en) 2008-10-02 2012-08-28 Altera Corporation Implementing division in a programmable integrated circuit device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8886696B1 (en) 2009-03-03 2014-11-11 Altera Corporation Digital signal processing circuitry with redundancy and ability to support larger multipliers
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8805916B2 (en) 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8549055B2 (en) 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
KR101814221B1 (ko) 2010-01-21 2018-01-02 스비랄 인크 스트림 기반 계산을 구현하기 위한 범용 다중 코어 시스템을 위한 방법 및 장치
US8788714B2 (en) * 2010-01-29 2014-07-22 Honeywell International Inc. Method for synchronizing execution of multiple processing devices and related system
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US8601044B2 (en) 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8458243B1 (en) 2010-03-03 2013-06-04 Altera Corporation Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
US8516225B2 (en) * 2011-03-25 2013-08-20 Koichi Kitagishi Central processing unit and microcontroller
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
EP2615423B1 (de) * 2012-01-13 2015-10-28 SICK STEGMANN GmbH Verfahren zur Prüfung der Funktionsfähigkeit einer digitalen Signalverarbeitungseinheit eines Positionssensors, und Positionskodierer
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
GB2500707B (en) * 2012-03-30 2014-09-17 Cognovo Ltd Multiprocessor system, apparatus and methods
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9063532B2 (en) * 2012-08-31 2015-06-23 Micron Technology, Inc. Instruction insertion in state machine engines
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
US9454378B2 (en) 2013-09-30 2016-09-27 Apple Inc. Global configuration broadcast
US9379687B1 (en) 2014-01-14 2016-06-28 Altera Corporation Pipelined systolic finite impulse response filter
US9459812B2 (en) * 2014-02-03 2016-10-04 Ceva D.S.P. Ltd. System and method for zero contention memory bank access in a reorder stage in mixed radix discrete fourier transform
US9268597B2 (en) 2014-04-01 2016-02-23 Google Inc. Incremental parallel processing of data
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US10509757B2 (en) * 2016-09-22 2019-12-17 Altera Corporation Integrated circuits having expandable processor memory
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US11171651B2 (en) 2018-02-23 2021-11-09 Octavo Systems Llc Mixed signal computer
US11847553B2 (en) 2018-06-14 2023-12-19 International Business Machines Corporation Parallel computational architecture with reconfigurable core-level and vector-level parallelism
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication
US10680615B1 (en) * 2019-03-27 2020-06-09 Xilinx, Inc. Circuit for and method of configuring and partially reconfiguring function blocks of an integrated circuit device
US10818731B1 (en) * 2019-06-19 2020-10-27 Avalanche Technology, Inc. Three-dimensional nonvolatile memory
CN112098959B (zh) * 2019-10-31 2023-11-14 上海交通大学 基于fpga的可重构雷达目标/干扰模拟器及实现方法
CN111079081B (zh) * 2019-12-16 2021-02-12 海光信息技术股份有限公司 一种矩阵乘法器、数据处理方法、集成电路器件及处理器
EP4091049A4 (de) 2020-01-13 2023-01-18 Telefonaktiebolaget LM Ericsson (publ) Programmierbare steuerung
CN113238985A (zh) * 2021-05-21 2021-08-10 北京轩宇空间科技有限公司 Fpga在轨重构控制系统及方法
CN115080503A (zh) * 2022-07-28 2022-09-20 中国人民解放军63921部队 一种针对fft基模块映射的脉动阵列可重构处理器
CN115439720B (zh) * 2022-11-08 2023-01-24 成都数联云算科技有限公司 Cam图像的重构方法、训练方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994014123A1 (en) * 1992-12-11 1994-06-23 National Technology, Inc. Integrated circuit computing device comprising dynamically configurable gate array having a reconfigurable execution means
DE4416881A1 (de) * 1993-05-13 1994-11-17 Martin Vorbach Datenverarbeitungseinrichtung

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5477165A (en) * 1986-09-19 1995-12-19 Actel Corporation Programmable logic module and architecture for field programmable gate array device
US5298805A (en) * 1991-08-29 1994-03-29 National Semiconductor Corporation Versatile and efficient cell-to-local bus interface in a configurable logic array
US5684980A (en) * 1992-07-29 1997-11-04 Virtual Computer Corporation FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions
US5535406A (en) * 1993-12-29 1996-07-09 Kolchinsky; Alexander Virtual processor module including a reconfigurable programmable matrix
US5600845A (en) * 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5646544A (en) * 1995-06-05 1997-07-08 International Business Machines Corporation System and method for dynamically reconfiguring a programmable gate array

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994014123A1 (en) * 1992-12-11 1994-06-23 National Technology, Inc. Integrated circuit computing device comprising dynamically configurable gate array having a reconfigurable execution means
DE4416881A1 (de) * 1993-05-13 1994-11-17 Martin Vorbach Datenverarbeitungseinrichtung

Also Published As

Publication number Publication date
DE19722365A1 (de) 1997-12-04
US5784636A (en) 1998-07-21
KR100305947B1 (ko) 2001-10-19
KR970076254A (ko) 1997-12-12

Similar Documents

Publication Publication Date Title
DE19722365B4 (de) Rekonfigurierbares Rechenbauelement
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE102020122174A1 (de) Berechne-in/nahe speicher- (cim) schaltungsarchitektur für vereinheitlichte matrix-matrix- und matrix-vektor-berechnungen
EP0428770B1 (de) Datengesteuerter Arrayprozessor
DE60213601T2 (de) Programmierbare hardwarelogik, welche ein programmierbares interface und eine zentrale recheneinheit beinhaltet
DE4416881C2 (de) Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
US9047440B2 (en) Logical cell array and bus system
DE102018006735A1 (de) Prozessoren und Verfahren für konfigurierbares Clock-Gating in einem räumlichen Array
DE19815865A1 (de) Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen
EP0960374A2 (de) Internes bussystem für dfps, sowie bausteine mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen, zur bewältigung grosser datenmengen mit hohem vernetzungsaufwand
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE4134192A1 (de) Integrierter schaltkreis mit verarbeitung im speicher
US20220179823A1 (en) Reconfigurable reduced instruction set computer processor architecture with fractured cores
DE102009012409A1 (de) Systeme und Verfahren zum Zusammenfügen von Speicherzugriffen von parallelen Threads
DE102010044529A1 (de) Autonome Subsystem-Architektur
DE112021002239T5 (de) Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle
Cantoni et al. PAPIA: Pyramidal architecture for parallel image analysis
DE102017200456A1 (de) Recheneinheit und Betriebsverfahren hierfür
DE10347975B4 (de) Einrichtung der programmierbaren Logik
DE3933172A1 (de) Akkumulator fuer komplexe zahlen
DE3708887C2 (de)
DE102016013579A1 (de) Speicherungs-Prozessorarray für wissenschaftliche Berechnungen
Doshi et al. A modular systolic architecture for image convolutions
DE102023105575A1 (de) Verteilter gemeinsamer speicher

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 9/38

8364 No opposition during term of opposition
R082 Change of representative
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20131203