DE102005033770A1 - Anordnung und Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor - Google Patents

Anordnung und Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor Download PDF

Info

Publication number
DE102005033770A1
DE102005033770A1 DE200510033770 DE102005033770A DE102005033770A1 DE 102005033770 A1 DE102005033770 A1 DE 102005033770A1 DE 200510033770 DE200510033770 DE 200510033770 DE 102005033770 A DE102005033770 A DE 102005033770A DE 102005033770 A1 DE102005033770 A1 DE 102005033770A1
Authority
DE
Germany
Prior art keywords
data
processing unit
processing units
module
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE200510033770
Other languages
English (en)
Inventor
Hendrik Dipl.-Ing. Seidel
Gordon Dr.-Ing. Cichon
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.)
Technische Universitaet Dresden
Original Assignee
Technische Universitaet Dresden
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 Technische Universitaet Dresden filed Critical Technische Universitaet Dresden
Priority to DE200510033770 priority Critical patent/DE102005033770A1/de
Publication of DE102005033770A1 publication Critical patent/DE102005033770A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Abstract

Der Erfindung, welche eine Anordnung und ein Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor, bestehend aus mehreren Streifen betrifft, liegt die Aufgabe zugrunde, ein Verfahren und eine zugehörige Schaltungsanordnung zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor zu schaffen, womit eine prozessorinterne und vom Datenfluss abhängige Programmablaufsteuerung, ohne die Notwendigkeit von Programmverzweigungen oder Sprüngen, erreicht wird. Die Aufgabe wird anordnungsseitig dadurch gelöst, dass eine ein Befehlswort datenflussabhängig erweiternde Baugruppe 7 zur internen Befehlswortteilerweiterung angeordnet ist, wobei die Baugruppe mit den Verarbeitungseinheiten durch Steuerleitungen und die Verarbeitungseinheiten durch Statussignalleitungen mit der Baugruppe verbunden sind. Die Aufgabe wird verfahrensseitig dadurch gelöst, dass in Abhängigkeit der Zustandssignale einer oder mehrerer Verarbeitungseinheiten ein Teil des zu einer ersten Verarbeitungseinheit zugehörigen ersten Befehlswortteils verändert wird und mit diesem zumindest teilweise veränderten Befehlswortteil der Programmablauf in dieser ersten Verarbeitungseinheit gesteuert wird.

Description

  • Die Erfindung betrifft eine Anordnung zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor, bestehend aus mehreren Streifen, wobei ein Streifen mindestens eine Verarbeitungseinheit mit Eingabe- und Ausgaberegistern enthält, wobei die Streifen über ein Datenbussystem mit einem dem jeweiligen Streifen zugeordneten Speicherabschnitt eines Datenspeichers und über einen Befehlsbus mit einer Programmablaufsteuerung verbunden sind.
  • Die Erfindung betrifft auch ein Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor, bei dem eine Steuerung der zeitgleichen Abarbeitung von Befehlsinstruktionen in den Verarbeitungseinheiten des SIMD-Prozessor durch ein langes, aus mindestens zwei Befehlswortteilen bestehendes, Befehlswort (VLIW) erfolgt.
  • SIMD-Prozessoren (Single Instruction Multiple Data) bestehen aus mehreren meist gleichartig aufgebauten Streifen, wobei jeder Streifen eine oder mehrere Verarbeitungseinheiten enthält. Diese Verarbeitungseinheiten weisen mindestens eine Eingangs- und/oder mindestens ein Ausgangsregister zur Zwischenspeicherung der Daten auf, wobei das oder die Eingangsregister die zu verarbeitenden Daten und/oder das Ausgangsregister das Ergebnis der Verarbeitung enthält.
  • Anstelle einer ALU (Arithmetik-Logik-Einheit) als Verarbeitungseinheit kann auch eine FPU (Floating-Point-Einheit) angeordnet sein. Weitere Möglichkeiten bestehen in der Anordnung eins Shifters, eines Registers oder eines Speichers anstelle einer Verarbeitungseinheit, wobei alle diese Einheiten innerhalb eines Streifens anwendungsspezifisch miteinander verbunden sind.
  • Die Register der Verarbeitungseinheiten sind zumindest mittelbar über einen Datenbus mit einem internen (Cache) und/oder externen Datenspeicher verbunden.
  • Die in den Streifen angeordneten Verarbeitungseinheiten sind zur Steuerung der Verarbeitung der Eingangsdaten über einen Befehlsbus mit einer Programmablaufsteuerung verbunden.
  • Bei einem SIMD-Prozessor steuert ein einzelner Befehl mehrere funktionale Einheiten. Somit sind derartige Prozessoren in der Lage, mehrerer Datenströme, in mehrere funktionale Einheiten, gesteuert durch einen Instruktionsstrom, parallel zu verarbeiten. Somit ist es möglich, in jedem Streifen gleichzeitig, in dem meisten Fällen unterschiedliche Eingangsdaten, gesteuert durch einen ersten gemeinsamen Befehl, derselben arithmetischen oder logischen Operation zu unterziehen.
  • Zeitgleich dazu besteht die Möglichkeit, weitere Verarbeitungseinheiten, welche beispielsweise in anderen Streifen angeordnet sind, durch einen zweiten gemeinsamen Befehl zu steuern. Somit führen diese Einheiten ebenfalls eine gleichartige arithmetische oder logische Operation mit ihren Eingangsdaten durch.
  • Der erste und der zweite gemeinsame Befehl sind Bestandteil einer Gruppe von zeitgleich auszuführenden Befehlen des SIMD-Prozessors. Diese Gruppe von Befehlen ist in einem langen Befehls- oder Instruktionswort zusammengefasst und wird als VLIW (Very Long Instruction Word) bezeichnet. Dieses VLIW ist ein langes Befehlswort, das in Befehlswortteile eingeteilt ist. Diese Befehlswortteile steuern mehrere Verarbeitungseinheiten im Prozessor unabhängig voneinander. Eine zentrale Programmablaufsteuerung holt in jedem Takt ein langes Befehlswort aus dem Befehlsspeicher und stößt die darin kodierten Operationen in parallelen Verarbeitungseinheiten zur Ausführung an.
  • Bei der Befehlausführung in jeder Verarbeitungseinheit werden Flags (1-Bit-Register, Zero, Carry und andere) erzeugt, welche durch eine Programmablaufsteuerung ausgewertet werden können. Diese Flags erhalten durch jede Befehlsabarbeitung während der Laufzeit des Programms ihren aktuellen Wahrheitswert durch Vergleichs- und eventuell andere Operationen.
  • Die Programmflusskontrolle entspricht der eines RISC-Prozessors (Reduced Instruction Set Computer), bei dem Änderungen des sequenziellen Programmflusses durch Sprünge, Verzweigungen und Unterprogrammaufrufe erfolgen. Hierdurch können beispielsweise die aktuell erzeugten Flags ausgewertet werden. Nachteilig dabei ist die Tatsache, dass eine Erfüllung einer vorgegebenen Sprungbedingung durch ein Flag einer Verarbeitungseinheit dazu führt, dass nicht nur der Programmfluss für die eine Verarbeitungseinheit sondern für alle geändert wird. Diese Tatsache kann dazu führen, dass die anderen Verarbeitungseinheiten zumindest für einen Teil des geänderten Programmablaufs so genannte Leerbefehle (NOP) ausführen müssen und die Performance für die abzuarbeitende Anwendung sinkt.
  • Eine datenabhängige Programmflusskontrolle ist in einem SIMD-Prozessor für nur einen Streifen unabhängig von den anderen nicht oder nur bedingt möglich, da hierzu in jedem Streifen ein unterschiedlicher Programmfluss möglich sein müsste. Dies ist aber auf Grund der SIMD-Architektur nicht möglich.
  • Aus dem Stand der Technik ist ein so genannter TigerSharc-SIMD-Prozessor bekannt, welcher eine Programmverzweigung durchführt, wenn alle oder eine Streifen des Prozessors eine Bedingung erfüllt.
  • Weiterhin ist von Analog-Devices ein DSP der Serie ADSP 2100 bekannt, bei dem eine Flagauswertung durch die Programmablaufsteuerung erfolgt und die Flags für Sprünge oder Programmverzweigungen überprüft werden.
  • Aus der DE 198 35 216 ist ein Prozessor und ein Verfahren zur parallelen Datenverarbeitung mit einem Datenspeicher, parallelen Verarbeitungseinheiten und einer globalen Kommunikationseinheit, die Busse und einen Verteiler umfasst, bekannt, wobei der Datenspeicher mit ersten Bussen mit den Eingängen des Verteilers und jeder Verarbeitungseinheit verbunden ist.
  • Mit dieser Anordnung wird eine Verbesserung der Kommunikation innerhalb eines Prozessors, speziell zwischen den Streifen erreicht. Eine Änderung des Programmflusses ist nur in üblicher Weise durch Auswertung von Statussignalen und Steuerung durch die Programmflusskontrolle möglich.
  • Aus der WO 01/50240 ist eine Anordnung und ein Verfahren zur Steuerung des Datenflusses in einer Verarbeitungseinheit mit einer Vielzahl von parallelen Datenpfaden mit jeweils einem Register/Speicher, jeweils einer zugehörigen Verarbeitungseinheit und einem Ergebnisregister, wobei die Verarbeitungseinheiten nach dem gleichen Algorithmus arbeiten und jeweils eine Recheneinheit enthalten und jeder Datenpfad sowie jedes Ergebnisregister mit dem Steuerausgang einer zentralen Programmsteuereinheit verbunden ist, bekannt.
  • Bei dieser Lösung wird die Übernahme eines durch eine Recheneinheit erzeugten Ergebnisses in Abhängigkeit von Statussignalen gesteuert. Eine Programmflusskontrolle ist mit dieser Lösung nur nach dem bekannten Stand der Technik gesteuert durch die Programmsteuereinheit möglich.
  • Aus der US 5,355,508 ist eine Anordnung bekannt, welche eine Kombination aus einem SIMD- und einem MIMD-Prozessor mit einer übergeordneten Kontrolleinheit darstellt. Mittels dieser Anordnung können die Vorteile der SIMD- und MIMD-Architektur gemeinsam genutzt bzw. die Nachteile beider minimiert werden.
  • Durch die übergeordneten Kontrolleinheit lassen sich parallel ausführbare und sequentiell ausführbare Operationen auf die entsprechenden Teilprozessoren verteilen und somit ein Performancegewinn erzielen. Eine datenabhängige oder statussignalabhängige Programmflusssteuerung ist nur durch die Auswertung der Statussignale und entsprechenden Programmsprüngen oder Verzweigungen möglich
  • Der Erfindung liegt somit die Aufgabe zugrunde, ein Verfahren und eine zugehörige Schaltungsanordnung zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor zu schaffen, womit eine prozessorinterne und vom Datenfluss abhängige Programmablaufsteuerung ohne die Notwendigkeit von Programmverzweigungen oder Sprüngen erreicht wird.
  • Gemäß der Erfindung wird die Aufgabe bei einer Anordnung zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor der eingangs genannten Art dadurch gelöst, dass eine ein Befehlswort datenflussabhängig erweiternde Baugruppe zur internen Befehlswortteilerweiterung angeordnet ist, wobei die Baugruppe mit den Verarbeitungseinheiten durch Steuerleitungen und die Verarbeitungseinheiten durch Statusleitungen mit der Baugruppe verbunden sind.
  • Die Erfindung beinhaltet eine Baugruppe die es ermöglicht, datenabhängig einen oder mehrere Streifen oder Verarbeitungseinheiten innerhalb eines Streifens zu deaktivieren und zu aktivieren. Zu diesem Zweck ist die Baugruppe mit den Verarbeitungseinheiten der Streifen über Statussignalleitungen zur Übertragung von Statussignalen, welche bei der Verarbeitung von Daten durch die Verarbeitungseinheit entstehen, verbunden. Derartige Statussignale könne beispielsweise ein Zero-Flag oder ein Carry-Flag sein.
  • Eine weitere Möglichkeit der datenflussabhängigen Programmablaufsteuerung besteht in der gezielten Auswahl von zu verarbeitenden Eingangsdaten für eine spezielle Verarbeitungseinheit. Somit wird von einem zentral durch das VLIW vorgegebenen Programmablauf ohne eine Veränderung des Steuerablaufs in der Programmablaufsteuerung abgewichen.
  • Dies ist möglich, durch die Trennung der Flag-Auswertung und der Programmflussteuerung durch die Programmablaufsteuerung. Im Stand der Technik wird diese Flag-Auswertung in einer Programmablaufsteuerung selbst oder einer mit dieser steuernd in Verbindung stehenden Auswerteeinheit durchgeführt. Eine getrennte Flag-Auswertungseinheit, welche erfindungsgemäß durch die Baugruppe zur internen datenflussabhängigen Befehlswortteilerweiterung realisiert ist, ist in der Lage, datenabhängig Erweiterungen zu den durch das VLIW vorgegebenen Befehlswortteilen zu erzeugen. Diese Befehlswortteilerweiterungen werden von der Baugruppe zu den einzelnen Verarbeitungseinheiten in den Streifen über Steuerleitungen übertragen und führen beispielsweise zu einer Auswahl von Eingangsdaten für eine Rechenoperation in einer Verarbeitungseinheit. Somit ist es möglich, dass für eine Additionsoperation nicht die Eingangsdaten genutzt werden, welche von dem zu der jeweiligen Verarbeitungseinheit zugehörigen Befehlswortteil des VLIW vorgegeben wurden, sondern diejenigen die durch die zugehörige Befehlswortteilerweiterung bestimmt werden.
  • Durch die Auswertung der Statussignale durch die erfindungsgemäße Baugruppe kann ein oder mehrere Streifen des parallelen Prozessors zu oder abgeschaltet werden. Es können aber auch Verarbeitungseinheiten in den Streifen zu oder abgeschaltet werden oder der Operationscode der Verarbeitungseinheit geändert werden. Eine weitere Möglichkeit besteht in der statussignalabhängigen Auswahl der zu verarbeitenden Eingangdaten einer Verarbeitungseinheit.
  • In einer Ausgestaltung der Erfindung ist vorgesehen, dass eine Verarbeitungseinheit aus mindestens einem Eingangs- und mindestens einem Ausgangsregister besteht, wobei jedem Eingangsregister eine Auswahlschaltung zur Auswahl einer Eingangsquelle, gesteuert durch ein Auswahlsignal, vorgeschaltet ist.
  • Jede Verarbeitungseinheit weist mehrere Eingangs- und/oder Ausgangsregister auf. In den Eingangsregistern können mehrere zu verarbeitende Eingangsdaten gespeichert werden, bevor sie durch die Verarbeitungseinheit verarbeitet werden. In den Ausgangsregistern können mehrere Ergebnisse von durchgeführten Operationen der Verarbeitungseinheit gespeichert werden. Innerhalb eines Streifens sind die Verarbeitungseinheiten anwendungsspezifisch miteinander verbunden. So kann beispielsweise das erste Ausgangsregister einer ersten Verarbeitungseinheit mit einem ersten Eingangsregister einer zweiten Verarbeitungseinheit, das zweite Ausgangsregister einer ersten Verarbeitungseinheit mit einem ersten Eingangsregister einer dritten Verarbeitungseinheit usw. verbunden sein.
  • Jedem Eingangsregister einer Verarbeitungseinheit ist eine Auswahlschaltung mit mehreren Eingängen vorgeschaltet. Mittels dieser zwischengeschalteten Auswahlschaltung ist es möglich, die oben beschriebene feste Verdrahtung der Verarbeitungseinheiten untereinander in eine statussignalabhängige, durch die Baugruppe gesteuerte zu verändern. In Abhängigkeit der Statussignalauswertung wird die Auswahlschaltung durch die erfindungsgemäße Baugruppe über eine Steuerleitung gesteuert und somit die gewünschte Eingangsdatenquelle ausgewählt.
  • Gemäß der Erfindung wird die Aufgabe bei einem Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor der eingangs genannten Art dadurch gelöst, dass in Abhängigkeit der Zustandssignale einer oder mehrerer Verarbeitungseinheiten ein Teil des zu einer ersten Verarbeitungseinheit zugehörigen ersten Befehlswortteils verändert wird und mit diesem zumindest teilweise veränderten Befehlswortteil der Programmablauf in dieser ersten Verarbeitungseinheit gesteuert wird.
  • Durch die Programmablaufsteuerung wird ein aus dem Befehlsspeicher geholtes und dekomprimiertes langes Datenwort (VLIW), welches aus mehreren Befehlswortteilen besteht erzeugt. Ein erster Befehlswortteil steuert beispielsweise eine erste und weitere Verarbeitungseinheiten in einem ersten und weiteren Streifen. Durch das erfindungsgemäße Verfahren wird in Abhängigkeit der Statussignale der Verarbeitungseinheiten dieser erste Befehlswortteil zumindest teilweise verändert. Der veränderte Befehlswortteil wird zur Steuerung des Programmablaufs der ersten und der weiteren Verarbeitungseinheiten verwendet.
  • In einer weiteren Ausgestaltung der Erfindung ist vorgesehen, dass der Befehlswortteil durch eine Ersetzen einer oder mehrerer Bitstellen oder durch ein Hinzufügen einer oder mehrerer Bitstellen verändert wird.
  • Ein Befehlswortteil eines VLIW setzt sich aus einer bestimmten Anzahl von Bitstellen zusammen. Durch das erfindungsgemäße verfahren wird der Befehlswortteil zumindest teilweise verändert. Dies kann beispielsweise durch ein Ersetzen der niederwertigsten oder speziell ausgewählter n-Bitstellen erfolgen. Eine weitere Möglichkeit der Veränderung eines Befehlswortteils besteht im Hinzufügen von n-Bitstellen zu dem ursprünglichen Befehlswortteil.
  • Die Erfindung soll nachfolgend anhand eines Ausführungsbeispiels näher erläutert werden. In den zugehörigen Zeichnungen zeigt
  • 1 einen SIMD-Prozessor mit der erfindungsgemäßen Baugruppe zur internen datenflussabhängigen Befehlswortteilerweiterung und
  • 2 eine Verarbeitungseinheit mit Eingangsregistern, Ausgangsregistern und Auswahlschaltungen.
  • 1 zeigt den Aufbau einer erfindungsgemäßen Schaltungsanordnung. Die Darstellung enthält nur die für die Erfindung wesentlichen Baugruppen des betrachteten SIMD-Prozessors 1. Dargestellt ist der die abzuarbeitenden Befehle beinhaltende Befehlsspeicher 2, welcher ein Teil des gesamten zur Prozessoranordnung zugehörigen Speichers oder eine eigenständige Speichereinheit ist. Der Befehlsspeicher 2 ist über einen Bus mit einem Befehlsdekoder 3 verbunden. Dieser erzeugt, beispielsweise durch einen Dekomprimierungsvorgang, ein aus mehreren Befehlswortteilen bestehendes langes Befehlswort 4, das so genannte VLIW (Very Long Instruction Word). Das VLIW 4 besteht beispielsweise aus einem ersten Befehlswortteil a, einem zweiten Befehlswortteil b usw. bis hin zu einem n-ten Befehlswortteil 4n. Mittels dieses VLIW 4 werden die in den Streifen 5 des SIMD-Prozessors 1 angeordneten Verarbeitungseinheiten 6 zeitgleich gesteuert, indem beispielsweise eine erste Verarbeitungseinheit a eines ersten Streifens 5a mit dem für diese erste Verarbeitungseinheit a bestimmten ersten Befehlswortteil a des VLIW 4 und zeitgleich eine erste Verarbeitungseinheit a eines zweiten Streifens 5b mit dem gleichen ersten Befehlswortteil a gesteuert wird. Ebenfalls zeitgleich wird die Verarbeitung von weiteren Eingangsdaten durch einen zweiten Befehlswortteil b beispielsweise in einer zweiten Verarbeitungseinheit b des ersten Streifens 5a und in einer weiteren zweiten Verarbeitungseinheit b eines anderen Streifen, beispielsweise im Streifen 5b, gesteuert.
  • Die Streifen 5 sind über einen Datenbus 10 mit einem dem Streifen 5 zugeordneten Abschnitt eines Datenspeichers 11 verbunden. Dieser Datenspeicher 11 kann zu verarbeitende Daten für die Verarbeitungseinheiten 6 speichern, welche vor der eigentlichen Verarbeitung durch die Verarbeitungseinheiten 6 zu diesen übertragen werden. Die im Ergebnis der Datenverarbeitung durch die Verarbeitungseinheiten 6 entstehenden Ergebnisse können nachfolgend über den Datenbus 10 übertragen und im Datenspeicher 11 gespeichert werden.
  • Die Verarbeitungseinheiten 6 sind untereinander anwendungsspezifisch verdrahtet. Das heißt, je nach der zu erfüllenden Aufgabe des SIMD-Prozessors wird vom Entwickler festgelegt, welche Eingangs- und/oder Ausgangsregister einer ersten Verarbeitungseinheit a mit welchen Eingangs- und/oder Ausgangsregister einer anderen Verarbeitungseinheit 6 oder einem der vorhandenen Bussysteme verbunden werden sollen. Somit kann der Prozessor auf die spezielle Anwendung, beispielsweise die parallele Dekodierung von OFDM-Signalen in einem Empfänger, optimiert werden.
  • Erfindungsgemäß ist die SIMD-Prozessor-Anordnung 1 in der 1 um eine Baugruppe zur internen datenflussabhängigen Befehlswortteilerweiterung 7 erweitert. Dabei sind die Verarbeitungseinheiten 6 aller Streifen 5 mit der Baugruppe 7 zur Übermittelung eines oder mehrerer Statussignale (Flags) der Verarbeitungseinheiten 6 über die Statussignalleitungen 8 verbunden. Weiterhin ist die Baugruppe 7 mit allen Verarbeitungseinheiten 6 zur Übertragung einer zu einer Verarbeitungseinheit 6 zugeordneten erzeugten Befehlswortteilerweiterung über Steuerleitungen 9 verbunden.
  • Somit ist es möglich, Statussignale, welche durch die Befehlsabarbeitung in jeder Verarbeitungseinheit 6 entstehen, an die Baugruppe zur internen datenflussabhängigen Befehlswortteilerweiterung 7 zu übertragen. Diese Statussignale, welche beispielsweise ein Zero-Flag, ein Carry-Flag oder ein Halfcarry-Flag und andere sein können, werden durch die Baugruppe 7 gleichzeitig oder nacheinander ausgewertet. Die Art der Auswertung kann durch eine an die Baugruppe 7 vom Befehlsdekoder 3 übergebene Teilinstruktion festgelegt werden. So kann beispielsweise ein Vergleich mit einem Vorgabewert durchgeführt werden. In Abhängigkeit des Ergebnisses der Auswertung durch die Baugruppe 7 wird für eine oder mehrere Verarbeitungseinheiten 6 eine Befehlswortteilerweiterung generiert. Diese zu einer Verarbeitungseinheit 6 zugehörige Befehlswortteilerweiterung wird über eine zugehörige Steuerleitung 9 zur Verarbeitungseinheit 6 übertragen und steuert die Verarbeitung der Daten somit ereignisabhängig.
  • 2 zeigt eine Verarbeitungseinheit 6 mit mehreren Eingangsregistern IN0, IN1 bis INn 12 und mehreren Ausgangsregistern OUT0, OUT1 bis OUTn. 13. Jedem Eingangsregister IN ist eine Auswahleinheit 14 vorgeschaltet. Die Eingänge der Auswahleinheit 14 sind mit verschiedenen Eingangsdatenquellen 15 verbunden. Derartige Quellen können beispielsweise Ausgangsregister 13 anderer Verarbeitungseinheiten 6 oder Speicherbaugruppen sein. Die Auswahleinheiten 14 sind über die Steuerleitungen 9 mit der Baugruppe 7 verbunden. Somit wird, gesteuert durch die zugehörige Befehlswortteilerweiterung, eine der verfügbaren Eingangsdatenquellen 15 ausgewählt und die Daten dieser Quelle in das Eingangsregister 12 geschrieben. Diese Daten können durch die Verarbeitungseinheit 6 einer Verarbeitung unterzogen werden. Dabei können Daten aus einem oder mehreren Eingangsregistern 12 zur Verarbeitung ausgewählt werden. Die Verarbeitungseinheit 6 kann beispielsweise zur Durchführung arithmetischer und logischer Operationen eine ALU (Arithmetik-Logik-Einheit) 16 enthalten.
  • Daten aus nur einem Eingangsregister 12 werden benötigt, wenn der Inhalt von IN0 zum Akku-Inhalt der Verarbeitungseinheit 6 addiert wird. Daten aus zwei Eingangsregistern 12 werden beispielsweise bei einer Additionsoperation von IN0 und IN1 oder einer Vergleichsoperation zwischen IN0 und IN1 benötigt.
  • Welches oder welche Eingangsregister 12 für die entsprechende Verarbeitung verwendet werden, wird durch einen Befehlswortteil des VLIW selbst oder eine erzeugte Befehlwortteilerweiterung bestimmt.
  • Weite Ausgestaltungen der Verarbeitungseinheit 6 bestehen in den nachfolgend beschriebenen Kombinationen. Ein Verarbeitungseinheit 6 enthält kein oder nur ein Eingangsregister 12 oder die Verarbeitungseinheit 6 enthält nur ein Ausgangsregister zur Speicherung eines Rechenergebnisses.
  • Ebenso wie einem Eingangsregister 12 der Verarbeitungseinheit 6 eine Auswahleinheit 14 vorgeschaltet ist kann einem oder mehreren Ausgangsregistern 13 eine Auswahleinheit 14 nachgeschaltet sein. Die Eingangsquellen 15 dieser Auswahleinheit 14 sind dann ein oder mehrere Ausgangsregistern 13 der gleichen oder verschiedener Verarbeitungseinheiten 6.
  • Ein erstes Anwendungsbeispiel der erfindungsgemäßen Anordnung und des Verfahrens ist das Detektieren von Symbolen bei einer OFDM-Datenübertragung.
  • Dabei wird die Amplitude des Eingangssignals mit einer Referenzschwelle verglichen und je nachdem welche Referenzschwelle über oder unterschritten wurde, eine binäre Kodierung durchgeführt. Bei dem beschriebenen Beispielsystem kann dies ohne ein so genanntes Wenn-dann-Konstrukt durchgeführt werden. In jedem Streifen kann so individuell eine andere Kodierung durchgeführt werden, ohne den Programmfluss des SIMD-Prozessors generell verändern zu müssen.
  • Es wird angenommen, dass eine Verarbeitungseinheit 6 in jedem Streifen 5 eine Vergleichsoperation durchführen soll. Das Ergebnis dieser Vergleichsoperationen wird über die jeweiligen Statussignalleitungen 8 der Verarbeitungseinheiten 6 der Streifen 5 an die Baugruppe 7 übergeben. Die Statussignale werden von der Baugruppe 7 beispielsweise durch einen Vergleich mit einem Vorgabewert verglichen. Das Ergebnis dieses Vergleichs beeinflusst die Erzeugung der Befehlswortteilerweiterung durch die Baugruppe 7.
  • Die Baugruppe 7 generiert somit in Abhängig von den Statussignalen der Statusignalleitungen 8 eine individuelle Instruktion für eine oder mehrere Verarbeitungseinheiten 6 in einem oder mehreren Streifen 5. Gesteuert durch eine derart erzeugte Befehlswortteilerweiterung wird durch die Auswahleinheit 14 einer Verarbeitungseinheit 6 je nach Zustand der aktuellen Statussignale eine der Eingangsdatenquellen 15 auswählen.
  • Ein zweites Ausführungsbeispiel bezieht sich auf eine Berechung mit Festkommazahlen. Hierbei kann eine numerische Präzision nur dann sichergestellt werden, wenn der komplette Wertebereich ausgenutzt werden kann und es zu keinem Überlauf kommt. Die Werte sollten daher immer innerhalb eines bestimmten Wertebereichs liegen. Daher ist eine datenabhängige Re-Skalierung dieses Wertenbereichs notwendig. Zu diesem Zweck werden die Eingangsdaten über ein Schieberegister um eine Stelle verschoben und somit dividiert oder multipliziert.
  • Die aktuellen Eingangsdaten müssen bei einem derartigen Berechnungsverfahren ständig überwacht werden. Mit Hilfe der Baugruppe 7 ist dies auch für eine parallele Verarbeitung innerhalb eines SIMD-Prozessors möglich. Dazu überprüft eine der Verarbeitungseinheit 6 jedes Streifens 5 in jedem Takt, ob die Eingangsdaten in dem bevorzugten Wertebereich liegen. Die Ergebnisse dieser Auswertungen durch die Verarbeitungseinheiten 6 werden über die Statussignalleitungen 8 an die Baugruppe 7 übertragen. Durch die Baugruppe 7 wird eine Über- oder Unterschreitung des vorgegebenen Wertebereichs erkannt und der Skalierungsfaktor für eine, mehrere oder alle Verarbeitungseinheiten 6 verändert, indem eine Befehlswortteilerweiterung je Verarbeitungseinheit 6 erzeugt und über die Steuerleitungen 9 an die jeweilige Verarbeitungseinheit 6 übergeben wird.
  • 1
    SIMD-Prozessors
    2
    Befehlsspeicher
    3
    Programmablaufsteuerung/Befehlsdekoder
    4
    VLIW – langes Befehlswort a erster Befehlswortteil b zweiter Befehlswortteil n n-ter Befehlswortteil
    5
    Streifen a erster Streifen b zweiter Streifen
    6
    Verarbeitungseinheiten a erste Verarbeitungseinheit b zweite Verarbeitungseinheit
    7
    Baugruppe zur internen datenflussabhängigen Befehlswortteilerweiterung
    8
    Statussignalleitung
    9
    Steuerleitungen
    10
    Datenbus
    11
    Datenspeicher
    12
    Eingangsregister
    13
    Ausgangsregister
    14
    Auswahleinheit
    15
    Eingangsdatenquellen
    16
    ALU

Claims (4)

  1. Anordnung zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor, bestehend aus mehreren Streifen, wobei ein Streifen mindestens eine Verarbeitungseinheit mit Eingabe- und Ausgaberegistern enthält, wobei die Streifen über ein Datenbussystem mit einem dem jeweiligen Streifen zugeordneten Speicherabschnitt eines Datenspeichers und über einen Befehlsbus mit einer Programmablaufsteuerung verbunden sind, dadurch gekennzeichnet, dass eine ein Befehlswort datenflussabhängig erweiternde Baugruppe (7) zur internen Befehlswortteilerweiterung angeordnet ist, wobei die Baugruppe (7) mit den Verarbeitungseinheiten (6) durch Steuerleitungen und die Verarbeitungseinheiten (6) durch Statussignalleitungen mit der Baugruppe (7) verbunden sind.
  2. Anordnung nach Anspruch 1, dadurch gekennzeichnet, dass eine Verarbeitungseinheit (6) aus mindestens einem Eingangs- (12) und mindestens einem Ausgangsregister (13) besteht, wobei jedem Eingangsregister (12) eine Auswahleinheit (14) zur Auswahl einer Eingangsquelle (15), gesteuert durch ein Auswahlsignal (9), vorgeschaltet ist.
  3. Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor, bei dem eine Steuerung der zeitgleichen Abarbeitung von Befehlsinstruktionen in den Verarbeitungseinheiten des SIMD-Prozessor durch ein langes, aus mindestens zwei Befehlswortteilen bestehendes, Befehlswort (VLIW) erfolgt, dadurch gekennzeichnet, dass in Abhängigkeit der Zustandssignale (8) einer oder mehrerer Verarbeitungseinheiten (6) ein Teil des zu einer ersten Verarbeitungseinheit (6a) zugehörigen ersten Befehlswortteils (4a) verändert wird und mit diesem zumindest teilweise veränderten Befehlswortteil (4a) der Programmablauf in dieser ersten Verarbeitungseinheit (6a) gesteuert wird.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass der Befehlswortteil (4a) durch eine Ersetzen einer oder mehrerer Bitstellen oder durch ein Hinzufügen einer oder mehrerer Bitstellen verändert wird.
DE200510033770 2005-07-15 2005-07-15 Anordnung und Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor Ceased DE102005033770A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200510033770 DE102005033770A1 (de) 2005-07-15 2005-07-15 Anordnung und Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200510033770 DE102005033770A1 (de) 2005-07-15 2005-07-15 Anordnung und Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor

Publications (1)

Publication Number Publication Date
DE102005033770A1 true DE102005033770A1 (de) 2007-01-25

Family

ID=37575616

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200510033770 Ceased DE102005033770A1 (de) 2005-07-15 2005-07-15 Anordnung und Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor

Country Status (1)

Country Link
DE (1) DE102005033770A1 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649135A (en) * 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649135A (en) * 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions

Similar Documents

Publication Publication Date Title
DE2542751C2 (de) Datenverarbeitungsanlage
DE2755273C2 (de)
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE2714805A1 (de) Datenverarbeitungssystem
DE1250659B (de) Mikroprogrammgesteuerte Datenverarbeitungsanlage
DE2536622A1 (de) Mikroprogrammsteuerung mit flexibler auswahl von steuerworten
DE4434529A1 (de) Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu
DE2854400C2 (de) Anordnung zum Wechsel zwischen verzahnt zu verarbeitenden Programmen
DE4222275C2 (de) Parallelprozessor und Betriebsverfahren für diesen
DE3344340C2 (de) Datenverarbeitungsanordnung zum Durchführen von Mikrobefehlen
DE2937777C2 (de) Steuereinrichtung in einer elektronischen Datenverarbeitungsanlage zur Programmunterbrechung und für die Durchführung erzwungener Operationen
DE102005033770A1 (de) Anordnung und Verfahren zur datenflussabhängigen Programmablaufsteuerung in einem SIMD-Prozessor
AT503171A2 (de) Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen
DE3101270A1 (de) Rechnersystem zur kombinierten wortverarbeitung und bitverarbeitung
DE1774896B1 (de) Datenverarbeitungsanlage mit einem rechenwerk, einem hauptspeicher und einem aktivspeicher
DE10359949B4 (de) Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Taktzyklusverlust, ohne Umschalt-Programmbefehl und ohne Erweiterung des Programmbefehlsformates
DE10144904C2 (de) SIMD-Prozessor mit Unterprogramm-Steuereinheit
AT501213B1 (de) Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung
DE10206830B4 (de) Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
DE2419837B2 (de) Schaltungsanordnung zur adressierung eines mikroprogramms in datenverarbeitungseinrichtungen und verfahren zur durchfuehrung von sprungbefehlen
DE2502005C2 (de) Schaltungsanordnung zur Zuordnung von Adressen zu Operationen zwecks Ausführung von Befehlen in einer Datenverarbeitungseinrichtung
DE3133742C2 (de) Zentraleinheit einer mikroprogrammierten digitalen Mehrbit-Rechenanlage
DE19945940C2 (de) Verfahren und Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit PIPELINE-Rechnerarchitektur
DE3603319C2 (de)
EP0155371B1 (de) Befehlsdecoder für ein Steuerwerk eines Prozessors

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection