DE69421103T2 - Programmgesteuertes Prozessor - Google Patents
Programmgesteuertes ProzessorInfo
- Publication number
- DE69421103T2 DE69421103T2 DE69421103T DE69421103T DE69421103T2 DE 69421103 T2 DE69421103 T2 DE 69421103T2 DE 69421103 T DE69421103 T DE 69421103T DE 69421103 T DE69421103 T DE 69421103T DE 69421103 T2 DE69421103 T2 DE 69421103T2
- Authority
- DE
- Germany
- Prior art keywords
- vector
- address
- memory
- data
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 239000013598 vector Substances 0.000 claims description 344
- 230000015654 memory Effects 0.000 claims description 293
- 238000000034 method Methods 0.000 claims description 46
- 239000000872 buffer Substances 0.000 claims description 12
- 238000010168 coupling process Methods 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 28
- 239000011159 matrix material Substances 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 6
- 230000007423 decrease Effects 0.000 description 5
- 206010000210 abortion Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Description
- Die vorliegende Erfindung betrifft einen programmgesteuerten Prozessor, bei welchem eine Hochgeschwindigkeits-Verarbeitungsleistung erforderlich ist, und insbesondere die Architektur eines Digital-Signal-Prozessors (DSP), welcher in Digital-Signal-Verarbeitungsanwendungen verwendet wird.
- Ein Befehlssatz eines bekannten programmgesteuerten Prozessors, wie eines Mikroprozessors, beinhaltet gewöhnlich Befehle wie Operationen, Lesen und Schreiben eines Speichers oder Registers und Verzweigen. Ein diese Befehle verwendendes Programm kann verschiedene Verarbeitungen durch sequentielles Ausführen jeweils eines Befehls zur Zeit implementieren.
- Bei einer dynamischen Bildverarbeitung und weiteren Digital-Signal-Verarbeitungsanwendungen, welche eine Hochgeschwindigkeits-Verarbeitungsleistung erfordern, war jedoch die Verbesserung der Verarbeitungsleistung eines programmgesteuerten Digital-Signal-Prozessors (DSP) ein zu beseitigendes Hindernis.
- Die japanische Offenlegung JP-A-627 5664 hat zum Beispiel ein Verfahren zum Lösen dieses Problems vorgeschlagen. Dieses Verfahren sieht einen Pipeline- Operator als Verarbeitungsressource eines Prozessors vor und beinhaltet Vektor- Verarbeitungsbefehle in dem Befehlssatz.
- "Parallel Algorithms and Architectures", 14. April 1986, LUHINY, offenbart eine Anordnung mit einem Skalar-Prozessor, einem Paket-Prozessor (entsprechend einem Vektor-Prozessor) und einem Schnittstellen-Prozessor (entsprechend einem Vektor-Verteiler und einem Vektor-Koppler), und das Ergebnis eines Vektor-Befehls wird in Vektor-Speichern gespeichert. Es ist jedoch nirgends beschrieben, daß ein Ausgangssignal des Paket-Prozessors (Vektor-Prozessor) durch den Skalar-Prozessor verarbeitet wird.
- Die US-A-4 837 730 offenbart eine Anordnung mit einer funktionalen Einheitensteuerung 26, Skalar-Registern 36, einem Multiplexer 40, einem bi-direktionalen Datenbus 18 (entsprechend dem Skalar-Bus) und einer Verbindungs-Übertragung 74. Das Ergebnis der funktionalen Einheit 26 wird durch den bi-direktionalen Datenbus oder die Verbindungs-Übertragung verarbeitet.
- Der Bedarf nach einer dynamischen Bildverarbeitung für höhere Auflösung nimmt jedoch zu und eine weitere Verbesserung der Prozessor-Leistungsfähigkeit ist jetzt ein Problem. Insbesondere bei dynamischen Bildverarbeitungsanwendungen mit hoher Auflösung, welche eine Hochgeschwindigkeitsverarbeitung großer Datenmengen erfordern, bieten die Architekturen bekannter, programmgesteuerter Prozessoren nicht ausreichende Verarbeitungsleistung, und eine Verbesserung der Datenverarbeitungs-Leistungsfähigkeit ist ein einzelnes, größtes Problem.
- Eine Aufgabe der vorliegenden Erfindung ist es, einen programmgesteuerten Prozessor mit hoher Leistungsfähigkeit anzugeben.
- Gemäß einem Aspekt der Erfindung kann ein programmgesteuerter Prozessor mehrere Vorgänge gleichzeitig parallel ausführen, um eine hohe Leistungsfähigkeit zu verwirklichen, durch Verwendung mehrerer Vektor-Verarbeitungseinrichtungen zum Ausführen mehrerer paralleler Anweisungen einschließlich paralleler Vektor- Anweisungen, einer Skalar-Verarbeitungseinrichtung zum Ausführen einer Skalar- Operation, eines Vektor-Verteilers und eines Vektor-Kopplers. Die Vektor-Verarbeitungseinrichtung verarbeitet Vektor-Operationen basierend auf parallelen Vektor-Befehlen in Pipeline-Verarbeitung. Die Skalar-Verarbeitungseinrichtung ist über einen Bus an die Vektor-Verarbeitungseinrichtung angeschlossen. Der Prozessor umfaßt weiterhin einen Befehlsspeicher, einen Sequenzierer und einen Dekodierer zum Interpretieren von Programmbefehlen. Der Dekodierer steuert die gesamte Vektor-Verarbeitungseinrichtung zum Ausführen des gleichen Vorgangs, wenn ein auszuführender Befehl ein Parallel-Befehl ist, und zum Steuern der Skalar-Verarbeitungseinrichtung zum Ausführen einer Skalar-Operation, wenn ein auszuführender Befehl nicht ein Parallel-Befehl ist. Der Vektor-Verteiler ist vorgesehen zum Aufteilen eingegebener Vektor-Daten in mehrere Block-Vektoren, wobei die Anzahl der Block-Vektoren die gleiche wie diejenige der Vektor-Verarbeitungseinheiten ist, und zum Senden der Block-Vektoren zu entsprechenden Vektor-Verarbeitungseinrichtungen. Der Vektor-Koppler koppelt erhaltene Block-Vektoren mit einem par allelen Vektor-Befehl (Vektor-Anweisung) zum Senden eines Ausgangs-Vektors. Wenn ein auszuführender Befehl eine parallele Vektor-Anweisung ist, deren Ergebnis ein Vektor ist, speichert die Vektor-Verarbeitungseinrichtung die Ergebnisse der Verarbeitung in der Vektor-Verarbeitungseinrichtung und gibt die Ergebnisse zu dem Vektor-Koppler aus, während, wenn ein auszuführender Befehl eine parallele Vektor-Anweisung ist, deren Ergebnis ein Skalar ist, die Skalar-Verarbeitungseinrichtung die Skalar-Ergebnisse von der Mehrzahl der Vektor-Verarbeitungseinrichtungen über den Bus empfangen kann.
- Gemäß einem zweiten Aspekt der Erfindung umfaßt jeder zum Schreiben oder Lesen von Block-Vektor-Daten verwendete Speicher in der Vektor-Verarbeitungseinrichtung eine Mehrzahl von Puffer-Speichereinrichtungen. Ein Vektor-Verteiler und ein Vektor-Koppler wirken unabhängig von dem Sequenzierer. Der Vektor- Verteiler und der Vektor-Koppler wirken unabhängig von dem Sequenzierer und Block-Vektor-Daten werden in einen Speicher einer Puffer-Speichereinrichtung geschrieben, während Block-Vektor-Daten aus dem anderen der Puffer-Speichereinrichtungen gelesen werden können, oder umgekehrt. Somit kann die Vektor- Verarbeitungseinrichtung parallele Vektor-Operationen gleichzeitig mit der Eingabe/Ausgabe von Eingangs/Ausgangs-Vektoren ausführen.
- In einem dritten Aspekt der Erfindung beinhaltet ein Parallel-Vektor-Befehl in einem programmgesteuerten Prozessor einen Steuerungs-Indikator, der eine zu betreibende Vektor-Verarbeitungseinrichtung angibt. Der Dekodierer sendet ein Signal zu der durch den Indikator zum Betrieb angegebenen Vektor-Verarbeitungseinrichtung.
- Gemäß einem vierten Aspekt der Erfindung umfaßt eine Speichereinrichtung zum Speichern von Blockvektoren in sämtlichen parallelen Vektor-Verarbeitungseinrichtungen ein Speicherelement zum Speichern eines Blockvektors und eine an das Speicherelement angeschlossene Steuerung zum Steuern, ob ein Blockvektor in das Speicherelemenet geschrieben oder daraus gelesen wird. Der Prozessor umfaßt weiterhin einen Adressdekodierer zum Senden eines Signales zu sämtlichen Steuerungen zum gleichzeitigen Schreiben oder Lesen von Blockvektoren in die oder aus den Speicherelementen.
- Gemäß einem fünften Aspekt der Erfindung umfassen der Vektor-Verteiler oder der Vektor-Koppler einen Adressgenerator zum Steuern des Zugriffes einer Mehrzahl von Speichereinrichtungen zum Schreiben oder Lesen (2nx · 2ny) von (2nx · 2ny · 2mx · 2my) Daten in oder aus (2mx · 2my) Speichereinrichtungen in dem programmgesteu erten Prozessor, wobei nx, ny, mx und my natürliche Zahlen sind. Somit kann die Anzahl von Pins verringert werden, da Adresspins nicht benötigt werden. Der Adressgenerator umfaßt z. B.: einen (nx + ny + mx + my)-Bit-Adresszähler zum Zählen von Datenzugriffen, wenn der Datenzugriff beginnt; eine Umschalt-Schaltung zum Ändern der Reihenfolge der Adresszähler-Ausgangsbits entsprechend einem Zugriffs-Verfahrens-Signal und zum Bezeichnen der Reihenfolge; und eine Zugriffssteuerung zum Senden von Speicherzugriffssignalen zu den (2mx · 2my) Speicherelementen. Die Umschalt-Schaltung gibt die Bits 1 bis (nx + ny) als eine Adresse zu den (2mx + 2my) Speicherelementen und die Bits (nx + ny + 1) bis (nx + ny + mx + my) zu der Zugriffssteuerung aus. Somit können die Daten unter Verwendung einer einfachen Schaltung verteilt oder gekoppelt werden.
- Gemäß einem sechsten Aspekt der Erfindung zählt in einem Adressgenerator für ein quadratisches Bild, wobei mx = my = m und nx = ny = n sind, ein (n + n + m + m + 1)-Bit-Adresszähler Datenzugriffe, wenn der Datenzugriff beginnt. Um auf die Speicher zuzugreifen, wählen i Adress-Selektierer (1 ≤ i ≤ n) Bit (n + i) oder Bit (n + m + i) des Adresszählers aus, während j Speicheradress-Selektierer (1 ≤ j ≤ m) Bit (n + n + j) auswählen, wenn das Bit (n + i) durch die i Adress- Selektierer ausgewählt ist, und wählen Bit (n + j) aus, wenn das Bit (n + m + i) durch die i Adress-Selektierer ausgewählt ist, wobei i, j, m und n natürliche Zahlen sind. Ein Abbruchsignal-Selektierer wählt Bit (2 · n + 2 · m + 1) oder Bit (2 · n + 2 · m) entsprechend einem Speichernummern-Auswahlsignal zum Auswählen des Zugriffs auf die 22xm Speicherelemente oder die 2m Speicherelemente aus. Eine Zugriffssteuerung sendet Speicherzugriffssignale zu den (2m · 2m) Speicherelementen. Die Bits 1 bis n des Adresszählers und die Ausgangssignale des i Adress- Selektierers werden als eine Adresse zu den 22xm Speicherelementen ausgegeben. Die Ausgangssignale des j Speicher-Adress-Selektierers und die Bits (n + n + m + 1) bis (n + n + m + m) des Adresszählers werden in die Zugriffs-Steuerung eingegeben. Der Abbruchsignal-Selektierer wählt Bit (n + n + m + m + 1) aus, wenn ein Speichernummern-Auswahlsignal des Zugriff auf die 22xm Speicherelemente auswählt und wählt Bit (n + n + m + m) aus, wenn das Speichernummern- Auswahlsignal des Zugriff auf die 2m Speicherelemente auswählt.
- Ein Vorteil der vorliegenden Erfindung ist, daß die Vektorverarbeitung unter Verwendung einer parallelen Vektorverarbeitung durch Verarbeiten von für jede Vektor-Verarbeitungseinrichtung aufgeteilten Daten in einer kürzeren Zeit ausführbar ist.
- Ein weiterer Vorteil der vorliegenden Erfindung ist, daß die Anzahl von Pins des programmgesteuerten Prozessors verringert werden kann.
- Die vorliegende Erfindung wird aus der unten gegebenen, detaillierten Beschreibung und den beigefügten Darstellungen besser verständlich. Dabei zeigen:
- Fig. 1 ein Blockschaltbild eines programmgesteuerten Prozessors gemäß der ersten Ausführungsform der Erfindung;
- Fig. 2 ein Blockschaltbild der Vektorverarbeitungseinheiten in Fig. 1;
- Fig. 3 ein Blockschaltbild eines Vektor-Verteilers in Fig. 1;
- Fig. 4 ein Blockschaltbild eines Vektor-Kopplers in Fig. 1;
- Fig. 5 Vektor-Verteilungs/Kopplungs-Vorgänge in dem programmgesteuerten Prozessor in Fig. 1;
- Fig. 6(a) und 6(b) Flußdiagramme der Wirkungsweise des in Fig. 1 gezeigten, programmgesteuerten Prozessors;
- Fig. 7(a) und 7(b) Flußdiagramme der Wirkungsweise eines konventionellen, programmgesteuerten Prozessors;
- Fig. 8 einen Vergleich der Verarbeitungszeit zwischen einem konventionellen, programmgesteuerten Prozessor und dem in Fig. 1 gezeigten, programmgesteuerten Prozessor;
- Fig. 9 ein Blockschaltbild eines programmgesteuerten Prozessors gemäß der zweiten Ausführungsform der Erfindung;
- Fig. 10(a) und 10(b) Blockschaltbilder des Doppelpuffer-Vektorspeichers in dem in Fig. 9 gezeigten, programmgesteuerten Prozessor;
- Fig. 11 ein Zeitdiagramm, welches zum Beschreiben der Wirkungsweise des in Fig. 9 gezeigten, programmgesteuerten Prozessors verwendet wird;
- Fig. 12 ein Blockschaltbild des in einer dritten Ausführungsform eines programmgesteuerten Prozessors gemäß der vorliegenden Erfindung verwendeten Dekodierers;
- Fig. 13 ein Blockschaltbild eines programmgesteuerten Prozessors gemäß einer vierten Ausführungsform der Erfindung;
- Fig. 14 ein durch einen erfindungsgemäßen Adressgenerator verarbeitetes Bildsignal;
- Fig. 15 ein Blockschaltbild eines Adressgenerators der fünften und sechsten Ausführungsform der vorliegenden Erfindung;
- Fig. 16 ein Blockschaltbild einer Zugriffssteuerung in der fünften Ausführungsform der erfindungsgemäßen Speichersteuerung;
- Fig. 17 ein Blockschaltbild einer Umschalt-Schaltung in der fünften Ausführungsform der erfindungsgemäßen Speichersteuerung;
- Fig. 18 ein Blockschaltbild eines Adressgenerators einer erfindungsgemäßen sechsten Ausführungsform;
- Fig. 19(a) und 19(b) Diagramme zum Darstellen der Zugriffsverfahren der vorliegenden Erfindung;
- Fig. 20(a) und 20(b) Diagramme zum Zeigen der Dateneingabe-Sequenz;
- Fig. 21 ein Blockschaltbild eines Adressgenerators einer erfindungsgemäßen siebten Ausführungsform;
- Fig. 22 ein Blockschaltbild der Adressgeneratorschaltung der siebten Ausführungsform;
- Fig. 23(a) und 23(b) Darstellungen der Dateneingabesequenz in der vorliegenden Erfindung;
- Fig. 24 ein Blockschaltbild eines Adressgenerators eines weiteren Beispiels der siebten Ausführungsform gemäß der vorliegenden Erfindung; und
- Fig. 25 ein Blockschaltbild des Adressgenerators des Beispiels.
- In den Zeichnungen, in weichen gleiche Bezugszeichen gleiche oder entsprechende Teile in den Zeichnungen bezeichnen, zeigt Fig. 1 ein Blockschaltbild eines programmgesteuerten Prozessors einer ersten Ausführungsform der Erfindung. Wie in der Zeichnung gezeigt, empfängt dieser Prozessor zwei Reihen von Bilddaten Eingangssignalen (oder Eingangs-Vektoren), welche durch programmierte Steuerung verarbeitet werden, um ein Bildsignal (oder Ausgangs-Vektor) oder eine skalare Menge auszugeben.
- Die primären Komponenten dieses programmgesteuerten Prozessors beinhalten eine Skalar-Verarbeitungseinheit 101 (SPU), einen Vektor-Prozessor 102 einschließlich n Vektorverarbeitungseinheiten (VPU) 102-1 - 102-n, einen Vektor-Verteiler 103, einen Vektor-Koppler 104, einen Befehlsspeicher 105, einen Sequenzierer 106 und einen Dekodierer 107. Der Befehlsspeicher 105 speichert ein Programm bei dem Betrieb dieser Schaltungsblöcke. Der Sequenzierer 106 liest sequenziell ein in dem Befehlsspeicher 105 gespeichertes Programm und der Dekodierer 107 interpretiert eine gelesene Anweisung und gibt ein Steuerungssignal zu jedem Schaltungsblock aus. Die Skalar-Verarbeitungseinheit 101 umfaßt eine Arithmetik- und Logik-Schaltung, Register und ähnliches, vergleichbar mit einem bekannten Prozessor, für normale Daten-Operationen wie Additions-, Subtraktions- und Verzweigungs- Operationen. Sie umfaßt weiterhin einen Skalar-Bus-Eingang zum Bezugnehmen auf Skalar-Register 206 (Fig. 2) in den Vektor-Verarbeitungseinheiten 102. Die Vektor-Verarbeitungseinheiten 102-1 - 102-n sind parallel an die Vektor-Verteilungseinrichtung 103 und den Vektor-Koppler 104 angeschlossen. Die Vektor- Verteilungseinrichtung 103 empfängt zwei Reihen von Eingangsdaten und teilt die Eingangs-Vektordaten in Blockvektoren auf, die auf Vektorspeicher 304 zu verteilen sind, die in Vektor-Verarbeitungseinheiten 102-1 - 102-n vorgesehen sind. Der Dekodierer 107 sendet einen Befehl über eine gleiche Signalleitung zu den Vektor- Verarbeitungseinheiten 102-1 - 102-n. Der Vektor-Koppler 104 koppelt in Vektorspeichern 404 als Ergebnisse der Verarbeitung in den Vektor-Verarbeitungseinheiten 102-1 - 102-n gespeicherte Blockvektoren zum Senden eines Ausgangssektors.
- Bei der Bildverarbeitung können viele Anwendungen wie Raum-Filterung, Muster- Übereinstimmung und Bild-Kompression/Expansion parallele Verarbeitung in n- Bildpunkte x n-Bildpunkt(Block)-Einheiten ausführen. Gewöhnlich beinhaltet der Inhalt der Verarbeitung der Daten eines Blockes Kombinationen von Vektor-Operationen, welche für alle Blöcke vergleichbar sind.
- Die Vektoroperation wird ausgeführt durch Behandeln von Bildpunkten in einem Block als Elemente Xi eines Vektors X, wobei i = 1, 2, ..., k sind. Ein Subtraktionsvorgang zum Erhalten einer Differenz Z zwischen zwei Blöcken ist zum Beispiel in der Gleichung (1) ausgedrückt; ein Vorgang zum Erhalten einer Produktsumme Z ist in der Gleichung (2) ausgedrückt; und ein Vorgang zum Erhalten einer Gesamtsumme Z ist in der Gleichung (3) ausgedrückt. Das Ergebnis der Operation durch Gleichung (1) ist ein Vektor, während diejenigen der Gleichungen (2) und (3) Skalare sind.
- Zi = Xi - Yi. (1)
- Z = (Xi · Yi). (2)
- Z = Xi. (3)
- Jede der Vektorverarbeitungseinheiten 102-1 - 102-n des in Fig. 1 gezeigten, programmgesteuerten Prozessors weist einen identischen Aufbau auf. Die Vektor- Verarbeitungseinheit 102-1 umfaßt zum Beispiel einen Prozessor 200 zum Ausführen von Vektor-Operationen in Blockeinheiten und Vektor-Speicher 304 und 404 zum Speichern von Eingangs/Ausgangs-Vektordaten. Die zwei Vektorspeicher 304 speichern zwei Reihen von Vektor-Blockdaten, die jeweils von dem Vektor-Verteiler 103 empfangen werden. Der Vektor-Prozessor 200 führt die Vektoroperation der in den Speichern 304 gespeicherten Blockdaten aus und sendet Daten eines Vektors zu dem Speicher 404 und Skalardaten über den Skalar-Bus zu der Skalar- Verarbeitungseinheit 101. Der Speicher 404 sendet Vektordaten zu dem Vektorkoppler 104 ebenso wie zu dem Vektor-Prozessor 200 selbst für die Operation unter Verwendung der Vektordaten. Daher kann der Vektor-Prozessor 200 eine Vektor-Operation basierend auf den daraus ausgegebenen Daten ausführen.
- Fig. 2 zeigt ein Beispiel einer Konfiguration eines in Fig. 1 gezeigten Vektor- Prozessors 200. Dieser Vektor-Prozessor 200 umfaßt Prozessoren (A) 201 und (B) 202 wie Arithmetik- und Logik-Einheiten, einen Addierer 203 wie einen Multiplizierer, zwei Pipeline-Register 204, 205 und ein Skalar-Register 206 zum Speichern akkumulierter Daten. Diese Elemente 201-206 werden zur Pipeline-Verarbeitung durch Selektierer 207, 208, 209, 210 und 211 gekoppelt. Die Selektierer 207 und 208 wählen eine der Vektor-Eingaben aus den zwei Speichern 304, das Ausgangssignal des Speichers 404 und das Ausgangssignal des Pipeline-Registers 204 aus und senden Daten zu dem Prozessor 201 und senden ausgewählte Daten zu dem Prozessor 201, während die Selektoren 209 und 210 eine der Vektor-Eingaben aus den zwei Speichern 304, das Ausgangssignal des Speichers 404 und das Ausgangssignal des Pipeline-Registers 205 auswählen und ausgewählte Daten zu dem Prozessor 202 senden. Die Ausgangsdaten der Prozessoren 201 und 202 werden jeweils in den Pipelineregistern 204 und 205 gespeichert. Daten eines Ausgangssignales jedes Pipelineregisters 204, 205 werden zu dem Addierer 203 geliefert, während Ausgangsdaten des Skalarregisters 206, welche das Ergebnis der Addition des Addierers 203 speichern, ebenfalls zu dem Addierer 203 geliefert werden. Das Skalar-Register 206 speichert Skalardaten und sendet sie zu dem Skalar-Bus, während das Pipeline-Register 204 Vektordaten zu dem Speicher 404 sendet.
- Sämtliche Vektor-Verarbeitungseinheiten 102-1 - 102-n in dem programmgesteuerten Prozessor arbeiten vergleichbar durch die Aktivierung durch den Dekodierer 107 über die gleiche Signalleitung durch Verwendung des Vektor-Prozessors 200.
- Die gleiche Vektor-Operation wird auf die in den Vektorspeichern 404 gespeicherten Blockvektoren gleichzeitig parallel in den Vektor-Verarbeitungseinheiten angewendet. In den Vektor-Operationen erhaltene Vektoren werden in den Vektorspeichern 404 gespeichert, während ein Skalar-Ergebnis in dem Skalar-Register 206 gespeichert wird. Das Skalar-Register 206 sendet Daten über den Skalar-Bus entweder gleichzeitig oder sequentiell zu der Skalar-Verarbeitungseinheit 101.
- Fig. 3 zeigt ein Beispiel des Vektor-Verteilers 103. In dem Vektor-Verteiler 103 erzeugt ein Extern-Adressgenerator 301 eine externe Adresse und eine Schreib- Steuerung 302 steuert das Schreiben in den Vektorspeicher 304 in den Vektorspeichern 304 in sämtlichen Vektor-Verarbeitungseinheiten 102-1 - 102-n zum Speichern eines Datenwertes bei der externen Adresse unter Verwendung von Schreib-Steuerungssignalen. Ein Intern-Adressgenerator 303 erzeugt eine zu jedem Vektorspeicher 304 gelieferte Adresse. Obwohl Fig. 3 die Datenverteilung für eine Reihe von Eingangsdaten zeigt, empfängt der Vektor-Verteiler 103 zwei Reihen von Eingangsdaten, wie in Fig. 1 gezeigt. D. h., der Vektor-Verteiler umfaßt zwei solcher Schaltungen.
- Dieser Vektor-Verteiler 103 liest kontinuierlich Eingangs-Vektordaten wie außerhalb des programmgesteuerten Prozessors gespeicherte Bilddaten und verteilt die Daten zu jeder Vektor-Verarbeitungseinheit 102-1 - 102-n als Blockvektoren mit einer gleichen Anzahl von Daten in einem Format zur Parallel-Verarbeitung.
- Fig. 4 zeigt ein Beispiel einer Anordnung des Vektor-Kopplers 104. Der Vektor- Koppler 104 liest gleichzeitig die in den Vektorspeichern 404 in den Vektor-Verarbeitungseinheiten 102-1 - 102-n bei durch den Intern-Adressgenerator 403 ausgegebenen Adressen gespeicherten Blockvektoren. Das Lesen des Speichers wird gesteuert durch die Lesesteuerung 402 und die gelesenen Blockvektoren werden dann ebenso wie die durch den Extern-Adressgenerator 401 erzeugten Adressen sequentiell nach außen ausgegeben.
- Fig. 5 zeigt ein Konzept der Wirkungsweise des Vektor-Verteilers 103 und des Vektor-Kopplers 104. Die eingegebenen Vektoren sind Bilddaten aus X · Y Bildpunkten. Wenn der programmgesteuerte Prozessor n Vektor-Verarbeitungseinheiten 102-1 - 102-n umfaßt, teilt der Vektor-Verteiler 103 die Bilddaten in einer vertikalen Richtung in n Blöcke auf und speichert Bilddaten aus X · (Y/n) Bildpunkten als Blockvektoren in den Vektorspeichern 304 der Vektor-Verarbeitungseinheiten 102-1 - 102-n. Gegenüber diesem Verteilungsvorgang speichert der Vektor-Koppler 104 die Blockvektoren aus X · (Y/n) Bildpunkten als Ausgangsvektoren aus X · Y Bildpunkt-Bilddaten in dem Format der Quellen-Bilddaten in den Vektorspeichern 404 der Vektor-Verarbeitungseinheiten 102-1 - 102-n. Es ist anzumerken, daß, während das in Fig. 5 gezeigte Verteilungs/Kopplungs-Verfahren die Bilddaten in einer vertikalen Richtung aufteilt, verschiedene andere Verfahren wie rechtwinklige Block-Verteilung/Kopplung für eine Anwendung verwendbar sind. Die später zu erläuternde Fig. 14 zeigt die Aufteilung der Bilddaten in rechtwinklige Blöcke.
- Der in Fig. 1 gezeigte, programmgesteuerte Prozessor weist parallele Befehle einschließlich paralleler Vektorbefehle zusätzlich zu den Befehlen eines konventionellen Prozessors auf. Ein paralleler Befehl ist ein Befehl, welcher die Vektor- Verarbeitungseinheiten 201-1 - 201-n parallel identisch betreibt. Wenn ein durch den Dekodierer 107 interpretierter und ausgeführter Befehl ein paralleler Befehl ist, werden einige Operationen durch die Vektor-Verarbeitungseinheiten 102-1 - 102-n ausgeführt. D. h., der Dekodierer 107 gibt das gleiche Steuerungssignal zu sämtlichen Vektor-Verarbeitungseinheiten 102-1 - 102-n aus, welcher daher die gleiche Verarbeitung ausführen. Wenn andererseits der Befehl nicht einer der Parallel- Befehle ist, wird die Skalar-Verarbeitungseinheit 101 verwendet. D. h., der Dekodierer 107 gibt ein Steuerungssignal zu der Skalar-Verarbeitungseinheit 101 zur Datenverarbeitung aus. Ob der Befehl ein Parallel-Befehl ist, oder nicht, wird durch das Befehls-Bitmap bestimmt. Zum Beispiel kann das Bit 1 des Bitmap als Steuerungsbit für die Befehls-Unterscheidung verwendet werden.
- Die Fig. 6(a) und 6(b) zeigen Abläufe zum Berechnen eines Mittelwertes von Bilddaten in bekannten, programmgesteuerten Prozessoren. Wie in Fig. 6(a) gezeigt, werden bei einem bekannten Prozessor Dateneingabe und Akkumulations- Vorgang mit der gleichen Häufigkeit ausgeführt und die Summe wird dann durch die Anzahl von Daten dividiert. Wie in Fig. 6(b) gezeigt, werden bei einem weiteren, bekannten Prozessor Vektor-Befehle für Vektor-Angaben und Akkumulation ausgeführt. D. h., ein Vektor-Befehl für die Akkumulierung von Elementen von Vektorblöcken wird ausgeführt. Das Ergebnis der Akkumulation wird dann durch die Anzahl der Daten dividiert.
- Die Fig. 7(a) und 7(b) zeigen Beispiele von Abläufen, die durch den Prozessor der vorliegenden Ausführungsform ausgeführt werden. Die Akkumulation wird durch den in Fig. 7(a) gezeigten Ablauf ausgeführt, während die Differenz der zwei Bilddaten durch den in Fig. 7(b) gezeigten Ablauf berechnet wird.
- In dem in Fig. 7(a) gezeigten Ablauf schreibt der Prozessor kontinuierlich Bildpunktdaten als die Bilddaten-Vektoren in den Vektorspeicher 304 in jeder Vektor- Verarbeitungseinheit 102-1 - 102-n durch den Vektor-Verteiler 103 (Schritt S700). Daten mit der gleichen Anzahl von Bildpunkten werden in dem Vektorspeicher 304 jeder Vektor-Verarbeitungseinheit 102-1 - 102-n gespeichert. Ein paralleler Vektorbefehl wird dann durch die Vektor-Verarbeitungseinheiten 102-1 - 102-n ausgeführt, um die skalare Gesamtsumme der Vektorelemente und Verwendung der als Quellendaten auf die Speicher 304 der Vektor-Verarbeitungseinheiten 102-1 - 102- n verteilten Blockvektoren zu berechnen (Schritt S702). Die in diesem Schritt ausgeführte, parallele Vektor-Operation ist die in Gleichung (3) gezeigte Berechnung. Ein nächster Schritt wird nicht ausgeführt, bis der parallele Vektor-Befehl beendet ist. Wenn der parallele Vektor-Befehl beendet ist, werden die Summen der Elemente sämtlicher Blockvektoren durch die Skalar-Verarbeitungseinheit 101 sequentiell addiert, da die Summen in den Skalar-Registern 206 in den Vektor- Verarbeitungseinheiten 102-1 - 102-n gespeichert wurden (Schritt S704). Durch Dividieren der Gesamtsumme der Gesamtanzahl der Bildpunkte durch die Skalar- Verarbeitungseinheit 101 wird der Mittelwert der eingegebenen Bilddaten erhalten (Schritt S706).
- In Fig. 7(b) werden die Daten der Bildpunkte der zwei Reihen von Bilddaten kontinuierlich als Vektoren eingegeben und in die Speicher 304 in den Vektor- Verarbeitungseinheiten 102-1 - 102-n durch den Vektor-Verteiler 103 geschrieben (Schritt S720). Die Verteilung in diesem Schritt speichert die gleiche Anzahl von Bildpunkten in den Speichern 304 der Vektor-Verarbeitungseinheiten 102-1 - 102- n. Die Vektor-Verarbeitungseinheiten 102-1 - 102-n führen dann einen parallelen Vektor-Befehl aus, um einen Differenzvektor (die Differenz der Elemente) der Blockvektoren unter Verwendung der Blockvektoren zu berechnen, welche auf die Speicher 304 in den Vektor-Verarbeitungseinheiten 102-1 - 102-n als zwei Quellendaten verteilt sind, und durch Speichern des Ergebnisses in den Vektorspeichern 404 in den Vektor-Verarbeitungseinheiten 102-1 - 102-n (Schritt S722). Wenn der Parallel-Vektor-Befehl beendet ist, liest und konvertiert der Vektor-Koppler 104 die in den Vektorspeichern 404 gespeicherten Differenzvektoren in das gleiche Format wie die angegebenen Bilddaten und das Ergebnis wird ausgegeben (Schritt S724).
- Fig. 8 zeigt ein Zeitdiagramm von Verarbeitungszeiten in den Beispielen der in den Fig. 6(a) und 6(b) der oben erwähnten, bekannten Prozessoren und in dem Prozessor der ersten Ausführungsform gezeigten Verarbeitung der Berechnung eines Mittelwertes zum Vergleich. Das obere Diagramm in Fig. 8 entspricht der in Fig. 6(a) gezeigten Verarbeitung, wobei ein Datenwert jedes Bildpunktes sequenziell verarbeitet wird und dann ein Mittelwert errechnet wird. Die Akkumulation wird daher so häufig wie die Anzahl der Daten ausgeführt. Das mittlere Diagramm in Fig. 8 entspricht der in Fig. 6(b) gezeigten Verarbeitung. Zuerst werden in einem mit (1) bezeichneten Abschnitt Eingangs-Vektoren empfangen und Blockvektoren geschrieben. Als nächstes werden in einem mit (2) bezeichneten Abschnitt Vektor-Befehle zur Akkumulierung ausgeführt. Die Verarbeitungszeit dieses Abschnittes ist im wesentlichen proportional zu der Anzahl von Vektorelementen. Daher ist die Verarbeitungszeit in diesem Fall kürzer als diejenige in dem oberen Teil. Schließlich wird ein Mittelwert in einem mit (3) bezeichneten Abschnitt berechnet. Das untere Diagramm in Fig. 8 entspricht der in Fig. 7(a) gezeigten Verarbeitung. Zuerst werden die eingegebenen Vektoren empfangen und Blockvektoren werden in einem mit (1) bezeichneten Abschnitt geschrieben. Die Verarbeitungszeit dieses Abschnittes ist die gleiche wie das Gegenstück in dem mittleren Diagramm. Als nächstes wird dann in einem mit (2-1) bezeichneten Abschnitt ein paralleler Vektorbefehl durch die Vektor-Verarbeitungseinheit 102 parallel ausgeführt, um Vektor-Blockelemente zu akkumulieren. Dann werden die Summen der Elemente sämtlicher Blockvektoren in einem mit (2-2) bezeichneten Abschnitt durch die Skalar-Verarbeitungseinheit 101 sequenziell addiert. Schließlich wird ein Mittelwert in einem mit (3) bezeichneten Abschnitt berechnet. Die Verarbeitungszeit dieses Abschnittes ist die gleiche wie das Gegenstück in dem mittleren Teil. Die Ausführungszeit der Abschnitt (2-1) und (2-2) ist jedoch kurz, da die Vektor- Operation parallel in den Vektor-Verarbeitungseinheiten 102-1 - 102-n ausgeführt wird. Daher ist es aus diesem Zeitdiagramm offensichtlich, daß durch Verwendung des erfindungsgemäßen, programmgesteuerten Prozessors die Ausführungszeit in der vorliegenden Erfindung signifikant verringert und die Leistung verbessert wird.
- Da die Ausgangsdaten der Vektorspeicher 404 der Vektor-Verarbeitungseinheiten 102-1-102-n, welche bei dem Prozessor der ersten Ausführungsform zur Ausgabe verwendet werden, wieder zu dem Vektor-Prozessor 200 gesendet werden, kann zusätzlich das Ergebnis eines parallelen Vektorbefehles als Eingangssignal für einen nächsten, parallelen Vektor-Befehl verwendet werden. Durch Kombinieren paralleler Vektor-Befehle mit normalen Befehlen können die Anforderungen komplexer Anwendungen erfüllt werden.
- Wie oben beschrieben, verwirklicht der programmgesteuerte Prozessor der ersten Ausführungsform auf einfache Weise die Datenverteilung für die Parallel-Verarbeitung zum Verkürzen der Verarbeitungszeit durch Kombinieren der Mehrzahl von Vektor-Verarbeitungseinheiten mit dem Vektor-Verteiler und dem Vektor-Koppler. Er verbessert signifikant die Leistungsfähigkeit z. B. bei einer Bildverarbeitungs- Anwendung, welche durch Verwendung einer Bild-Aufteilungstechnik in Parallel- Verarbeitung betrieben werden kann.
- Fig. 9 ist ein Blockschaltbild eines programmgesteuerten Prozessors gemäß einer zweiten Ausführungsform der Erfindung. Die Vektor-Verarbeitungseinheiten 102'-1 - 102'-n dieser Ausführungsform sind identisch mit denjenigen der ersten Ausführungsform mit der Ausnahme, daß jeder der Vektorspeicher 1001, 1002, 1003, 1004 zum Speichern von Blockvektoren in jeder Vektor-Verarbeitungseinheit 102'- 1 - 102'-n als ein Doppel-Puffer aufgebaut ist. Ein Vektor-Verteiler 103' und ein Vektor-Koppler 104' (Fig. 9) arbeiten ebenfalls abweichend von dem Vektor- Verteiler 103 und dem Vektor-Koppler 104 in der ersten Ausführungsform. Wenn ein Start-Befehl ausgeführt wird, können Vektoren unabhängig von dem Sequenzierer 106 und dem Dekodierer 107 übertragen werden.
- Wie in den Fig. 10(a) und 10(b) jeweils gezeigt, beinhalten die Eingangs- und Ausgangs-Seiten-Anordnungen des Doppelpuffer-Vektorspeichers Vektorspeicher 1001, 1002, 1003 und 1004 und Selektierer 1005, 1006, 1007, 1008, 1009, 1010 und 1011 (in Fig. 10(a) sind nur die Speicher 1001 und 1002 gezeigt). Die Selektierer 1005 und 1006 wählen zwischen Daten von dem Vektor-Verteiler 103' und Daten von der Vektor-Verarbeitungseinheit 102', die zu dem Speicher 1001, 1002 zu senden sind, während der Selektierer 1007 zwischen den Daten von dem Speicher 1001 und Daten von dem anderen Speicher 1006 wählt, die zu einem Vektor-Prozessor 200' in der Vektor-Verarbeitungseinheit 102' zu senden sind. Ebenso wählen die Selektierer 1008 und 1009 aus Daten von der Vektor-Verarbeitungseinheit 102' und Daten von dem Vektor-Koppler 104', die zu dem Speicher 1003, 1004 zu senden sind, während die Selektierer 1010 und 1011 zwischen Daten von dem Speicher 1010 und Daten von dem anderen Speicher 1011 wählen, welche zu dem Vektor-Koppler 104' und zu dem anderen Vektor- Prozessor 200' in der Vektor = Verarbeitungseinheit 102' zu senden sind.
- Wenn eine Blockvektor-Übertragung zwischen einem der Vektorspeicher 1001, 1003 und dem Vektor-Prozessor 200 während einer bestimmten Periode durch den Selektierer 1005 - 1011 freigegeben wird (oder wenn der Vektor-Prozessor 200 Zugriffs-Privilegien hat) werden in den Fig. 10(a) und 10(b) die anderen Vektor- Speicher 1002, 1004 ausschließlich gesteuert, um die Kommunikation mit dem Vektor-Verteiler 103' oder Vektor-Koppler 104' zu steuern (der Vektor-Verteiler 103' oder der Vektor-Koppler 104' hat Zugriffs-Privilegien). Mit anderen Worten werden Zugriffs-Privilegien gewechselt, wenn eine Periode endet. Ein bestimmter, interner Befehl, oder ein externes Synchronisierungssignal wird zum Steuern des Zugriffs-Privileg-Wechsels verwendet.
- Der in Fig. 9 gezeigte Prozessor führt eine Vektor-Eingabe-, eine Verarbeitung, einschließlich Vektor-Operationen und Vektor-Ausgabeoperationen im Parallel- Pipeline-Verarbeitungs aus. Diese Verarbeitung wird unten anhand eines in Fig. 11 gezeigten Zeitdiagramms erläutert. Es ist anzumerken, daß die in Fig. 11 gezeigten Verarbeitungsergebnisse durch Anwenden einer Verarbeitung auf mehrere Eingangsvektoren erhalten werden, was zu einem Vektor führt, der in dem oben erwähnten, zweiten Beispiel gezeigt ist.
- Wie in Fig. 11 erkennbar ist, werden die n-ten Eingangsdaten durch den Vektor- Prozessor 200' in einer Periode verarbeitet, während des Lesens der n-ten Eingabe aus einem der Eingangsspeicher 1001, 1002 und Schreiben des Ergebnisses der Verarbeitung in einen der Ausgangsspeicher 1003, 1004. In der gleichen Periode wird ein (n + 1)-tes Eingangssignal in den anderen der Eingangsspeicher eingegeben und geschrieben, während ein (n - 1)-tes Ergebnis in dem anderen der Ausgangsspeicher gelesen und ausgegeben wird. Mit anderen Worten, der in Fig. 9 gezeigte Prozessor führt die Übertragung der Eingabe/Ausgabe der Vektoren und die Verarbeitung der Vektoren parallel aus. Daher werden Operationen des Prozessors in mit (1), (2 - 1) und (2 - 2) in Fig. 8 bezeichneten Abschnitten in Pipeline-Verarbeitung ausgeführt und verbessern somit weiterhin die Verarbeitungs-Effizienz. Als Ergebnis kann der Prozessor für Echtzeitverarbeitung erfordernde Bewegtbild- Verarbeitungsanwendungen verwendet werden.
- Es ist anzumerken, daß, während die oben erwähnte, zweite Ausführungsform einen Doppelpuffer-Vektorspeicher verwendet, die Erfindung für einen Vektor- Speicher mit jeder Anzahl von Puffern gültig bleibt.
- Wie oben erläutert, verbessert der programmgesteuerte Prozessor gemäß der zweiten Ausführungsform weiterhin die Leistungsfähigkeit durch Verwendung einer Mehrfachpuffer-Struktur für die Speicher in den Vektor-Verarbeitungseinheiten und Betreiben des Sequenzierers unabhängig von der Daten-Eingabe/Ausgabe.
- Fig. 12 zeigt ein Konzept eines in einer dritten Ausführungsform eines erfindungsgemäßen, programmgesteuerten Prozessors verwendeten Dekodierers. Der Prozes sor ist vergleichbar mit demjenigen der oben erläuterten, ersten Ausführungsform, mit Ausnahme der Dekodierer-Steuerung.
- Der Prozessor der dritten Ausführungsform weist einen Steuerungsindikator in einem Befehlskode der Parallel-Vektor-Befehle auf, um anzuzeigen, welche der mehreren Vektor-Verarbeitungseinheiten 102-1 -102-n zu betreiben sind. In einem programmgesteuerten Prozessor mit vier Vektor-Verarbeitungseinheiten (n = 4) werden zum Beispiel vier Bits als ein Steuerungsindikator in einem Befehlskode in der Maschinensprache zugeordnet. Jedes Bit des 4-Bit-Steuerungsindikators entspricht einer der vier Vektor-Verarbeitungseinheiten und das Setzen eines Bits bedeutet, daß die entsprechende Vektor-Verarbeitungseinheit betrieben wird. Zum Beispiel wird "1" oder "0" gesetzt, um die Vektor-Verarbeitungseinheit zu betreiben oder nicht zu betreiben. Einige Beispiele sind in Tabelle 1 gezeigt. Es ist anzumerken, daß "o" den Betrieb der Vektor-Verarbeitungseinheit anzeigt, während "x" den nicht-Betrieb davon anzeigt. Tabelle 1 Steuerungsindikator
- In Fig. 12 werden die durch den Sequenzierer 106 (Fig. 1) gelesenen, unteren vier Bits in einem Befehlskode als der oben erwähnte Steuerungs-Indikator verwendet und der Dekodierer 107' sendet diese Bits als ein Betriebs-Freigabesignal direkt zu einer entsprechenden Vektor-Verarbeitungseinheit 102 neben einem Steuerungssignal, welches den Inhalt einer auszuführenden Operation anweist. Somit bestimmt jede Vektor-Verarbeitungseinheit 102 den Betrieb oder nicht durch Bewerten des Status des Betriebs-Freigabesignals in einem Befehlskode. Die Steuerung zum Anhalten der Verarbeitung der Vektor-Verarbeitungseinheit wird zum Beispiel ausgeführt durch Anhalten des Taktes, welcher Pipeline-Operationen führt, so daß sämtliche Statusänderungen verhindert werden.
- Der Prozessor der dritten Ausführungsform wendet die gleiche Steuerung in sämtlichen n Vektor-Verarbeitungseinheiten an. Wenn die Anwendung die Eingangsvektoren nicht in n Teile für die parallele Verarbeitung aufteilen kann, aber in m Teile (wobei n > m ist), kann der programmgesteuerte Prozessor gemäß der dritten Ausführungsform der vorliegenden Erfindung den Betrieb einer ausgewählten Anzahl von Vektor-Verarbeitungseinheiten basierend auf der Anzahl der durch diese Anwendung ausführbaren Parallel-Prozesse unterbinden. Dann kann die Gesamtverlustleistung verringert werden, da überzählige Vektor-Verarbeitungseinheiten nicht betrieben werden.
- Fig. 13 zeigt eine Speicherkonfiguration des programmgesteuerten Prozessors einer vierten Ausführungsform der Erfindung. Die Konfiguration des Vektorspeichers 1303 in den in Fig. 13 gezeigten Vektor-Verarbeitungseinheiten unterscheidet sich von derjenigen der Vektorspeicher 304 in der ersten Ausführungsform (siehe Fig. 3). Die in Fig. 3 gezeigten Vektor-Speicher 304 sind konventionelle Speichervorrichtungen, welche jede einen Adressdekodierer und ein Speicherelement umfassen. Andererseits umfaßt der Speicher 1304 einen Adressdekodierer 315, n Speicherelemente 316 und n Steuerungen 317 zum Steuern, um ein Blockvektor gelesen oder geschrieben wird, wobei jedes der Speicherelemente 316 einen Vektor-Speicher bezeichnet, enthalten in jeder der n Vektor-Verarbeitungseinheiten. Die Steuerungen 317 verwenden den in der dritten Ausführungsform verwendeten, oben erwähnten Steuerungs-Indikator zum Steuern, welche der Vektor-Verarbeitungseinheiten 102-1 - 102-n betrieben werden. Ein durch eine Schreib-Steuerung 302 erzeugtes Speicherzugriffssignal wird zu einer relevanten Steuerung 317 geliefert, während ein durch einen Extern-Adressgenerator 303 erzeugtes Adresssignal nur als eine Adresse zu dem Adressdekodierer 315 geliefert wird.
- Wie in Fig. 1 gezeigt, umfaßt eine Vektor-Verarbeitungseinheit 102-1 - 102-n zwei Speicher 304 für eingegebene Vektordaten und einen Speicher 404 für ausgegebene Vektordaten. Die in Fig. 13 gezeigte Konfiguration illustriert lediglich einen Satz für einen der zwei Speicher 304 und eine weitere Konfiguration ist ebenfalls für den anderen der zwei Speicher 304 für die anderen Reihen von Eingabedaten vorgesehen. Weiterhin ist eine vergleichbare Speicherkonfiguration für n Speicher 404 für Ausgabe-Vektordaten vorgesehen, obwohl sie nicht explizit gezeigt sind.
- Ein Vorteil des in Fig. 13 gezeigten Vektorspeicher-Aufbaus ist, daß alle ausgewählten Blockvektoren gleichzeitig durch Verwendung des einzelnen Adress dekodierers 315 geschrieben/gelesen werden können. Wenn parallele Verarbeitungen in m Abteilungen (n > m) ausgeführt werden, werden die weiteren Speicherelemente nicht betrieben. Dies verringert den Leistungsverlust und verringert ebenfalls den für die Speicher benötigten Platz, da nur ein Adressdekodierer vorgesehen ist.
- In den programmgesteuerten Prozessoren der oben erläuterten Ausführungsformen werden Daten für parallele Vektor-Verarbeitung in oder aus Speichern in den n Vektorverarbeitungseinheiten 102-1 - 102-n verteilt oder gekoppelt. Als nächstes werden die Adressgeneratoren zum Verteilen oder Koppeln der Daten detailliert erläutert.
- Fig. 14 zeigt ein zu verarbeitendes Bildsignal zur Eingabe oder ähnliches, wobei Werte nx, ny, mx und my natürlicher Zahlen definiert sind. Ein Bildsignal 800 betrifft einen rechtwinkligen Bildbereich von (2nx+mx) · (2ny+my) Bildpunkten und es ist in mehrere Bildsignale 810 rechtwinkliger Blöcke aufgeteilt, die jeder (2nx) · (2ny) Bildpunkte umfassen. Die Position eines Bildpunktes in einem Block ist mit nx und ny bestimmt, während die Position eines Blockes durch mx und my definiert ist. Jedes dieser Block-Bildsignale 810 ist in einem Speicher in einer Vektor-Verarbeitungseinheit 102-1 - 102-n gespeichert. Die Anzahl der für die Speicher 304 oder 404 verwendeten Speicher ist (2mx+my). Ein programmgesteuerter Prozessor umfaßt bevorzugt eine Adress-Auswahleinrichtung zum Bezeichnen einer i-ten Zeile (1 ≤ i ≤ n) in einem Block mit Vektordaten 810 als eine Matrix und eine Speicheradress- Auswahleinrichtung zum Bezeichnen einer j-ten Spalte (1 ≤ j ≤ m) in einer Matrix der Speicher.
- Die Fig. 15-17 zeigen ein Beispiel einer fünften Ausführungsform der Erfindung, einschließlich eines Adressgenerators 520 zum Schreiben oder Lesen (2nx · 2ny) von (2ny · 2ny · 2mx · 2my) Daten oder aus (2mx · 2my) Speicherelementen 304, 404. Der Adressgenerator 520 entspricht einem lntern-Adressgenerator 501, 403 oder 403', und er umfaßt einen (nx + ny + mx + my)-Bit-Adresszähler 503 und eine Umschalt-Schaltung 501 und eine Zugriffssteuerung 502. Die Umschalt- Schaltung 501 ändert die Reihenfolge der (nx + ny + mx + my)-Bits eines Ausgangssignales des Adresszählers 503 entsprechend einem Zugriffs-Verfahrens- Signal. Die Umschalt-Schaltung 501 kann sämtliche Bits auswählen, das Zugriffsverfahrens-Signal wird aber so gesetzt, daß die gleichen Bits nicht von der Umschalt-Schaltung 501 ausgegeben werden. Die Folge oder der Datenzugriff, welche durch die Umschalt-Schaltung 501 ausgeführt werden, wird entsprechend einem Zugriffsverfahrens-Signal gesteuert. Das Zugriffsverfahrens-Signals bezeichnet zum Beispiel eine Block-Abtastung oder eine Raster-Abtastung, wie in den Fig. 19 (a) und (b) gezeigt. Wenn der Datenzugriff beginnt, zählt der Adresszähler 503 die Datenzugriffe und Bit 1 bis (nx + ny) der Umschalt-Schaltung 501 werden als eine Adresse in einem Block gemeinsam zu (nx + my) Adress-Pins der (2mx · 2my) Speicherelemente 304, 404 ausgegeben, während (mx + my) Bits von dem Bit (nx + ny + 1) bis (nx + ny + mx + my) der Umschaltung-Schaltung 501 zum Lokalisieren eines anzusprechenden Blocks zu der Zugriffs-Steuerung 502 gesendet werden. Somit wird eine Adresse kontinuierlich erzeugt. Das durch die Speicher empfange Bit (nx + 1) bis (nx + ny) wählt eine i-te Zeile (1 ≤ i ≤ ny) in jedem Block mit Vektordaten als eine Matrix aus, wie in Fig. 14 gezeigt. Die die Bits (nx + ny + 1) bis (mx + my + nx + ny) empfangene Zugriffssteuerung 502 erzeugt Speicher-Zugriffssignale. Die Zugriffs-Steuerung 502 sendet Speicher-Zugriffssignale zu den (2mx · 2my) Speicherelementen 304, 404. D. h., die Zugriffssteuerung 502 kann einen Speicher in einer Matrix aus den Speichern auswählen. Dann können die Speicher entsprechend einem bezeichneten Abtastverfahren angesprochen werden.
- Das Speicherzugriffsverfahren-Signal bezeichnet bevorzugt entweder Block-Zugriff oder Raster-Abtast-Zugriff und dis Umschaltung-Schaltung 501 umfaßt bevorzugt Adress-Selektoren (1 ≤ i ≤ ny) zum Auswählen von Bit (nx + i) zum Block-Zugriff oder Bit (nx + mx + i) zum Raster-Abtast-Zugriff und j Speicheradress-Selektierer (1 ≤ j ≤ mx) zum Auswählen von Bit (nx + ny + j) zum Blockzugriff oder Bit (nx + j) zum Raster-Abtast-Zugriff, wobei i und j natürliche Zahlen sind. Die ersten bis nx-ten Bits des Adresszählers werden zu den ersten bis nx-ten Adresspins der Speicher ausgegeben, während die Ausgangssignale der i Adress-Selektierer zu den (nx + 1)-ten bis (nx + ny)-ten Adresspins der Speicher geliefert werden, um eine horizontale Zeile in einem Block mit Speicherdaten auszuwählen. Die Ausgangssignale der j Speicheradress-Selektierer bezeichnen die j-ten Spalten in der Matrix der Speicher, während die Bits (nx + ny + mx + 1) bis (nx + ny + mx + my) die Zeilen in der Matrix der Speicher bezeichnen. Die Zugriffssteuerung 560 erzeugt Speicherzugriffssignale aus den Ausgangssignalen der y Speicheradressselektierer und den Bits (nx + ny + mx + 1) bis (nx + ny + mx + my), um einen anzusprechenden Speicher anzuzeigen.
- Ein Beispiel der fünften Ausführungsform ist unten anhand der Fig. 15, 16 und 17 beschrieben, wobei mx + my = 2 und nx + ny = 4 sind oder 16 Datenwerte in jedem von vier Speichern gespeichert sind. Ein Adressgenerator 520 wird verwendet zur Dateneingabe in einem programmgesteuerten Prozessor mit vier Vektor-Verarbeitungseinheiten 102-1 - 102-4. Wie in Fig. 15 gezeigt, steuert der Adressgenerator 520 einen Speicher 510 mit vier Speicherelementen 304 entsprechend einem Zugriffsverfahrensignal. Der Adressgenerator 520 sendet ein Zugriffssignal und eine Adresse entsprechend dem Zugriffsverfahren-Signal zu den vier Speichern in dem Speicher 510. Somit werden die eingegebenen Daten aufeinanderfolgend in den vier Speichern gespeichert. Wie in Fig. 16 gezeigt, umfaßt der Adressgenerator 520 eine Umschalt-Schaltung 501, eine Steuerung 502 und einen 6-Bit-Adresszähler 503. Die Umschalt-Schaltung 501 empfängt einen 6-Bit- Wert der durch den Adresszähler 503 gezählten Datenzählung und sendet ihn als ein Zugriffs-Steuerungssignal und als eine Adresse. Fig. 17 ist ein Blockschaltbild der in Fig. 16 gezeigten Umschalt-Schaltung 501. Die Umschalt-Schaltung 501 umfaßt sechs Adress-Selektierer 504 zum Auswählen von Daten entsprechend dem Zugriffsverfahrens-Signal.
- Die Wirkungsweise dieser Ausführungsform wird unten in einem Beispiel beschrieben, wobei die Werte mx = 2, my = 0, nx = 1 und ny = 3 sind. Die Umschalt- Schaltung 501 kann jedes Bit auswählen, wie in Fig. 17 gezeigt, die ausgewählten Bits werden aber entsprechend dem Zugriffsverfahrens-Signal gesteuert und die gleichen Bits werden nicht von der Umschalt-Schaltung 501 ausgegeben. Insbesondere wird zuerst jeder Adress-Selektierer 504 durch das Zugriffsverfahrens- Signal gesetzt.
- Wenn dieses Zugriffsverfahrens-Signal einen Raster-Abtast-Modus bezeichnet, ist das Bit 1 des Adresszählers 503 das Ausgangsbit 1, Bit 2 ist das Ausgangsbit 5, Bit 3 ist das Ausgangsbit 6, Bit 4 ist das Ausgangsbit 2, Bit 5 ist das Ausgangsbit 3 und Bit 6 ist das Ausgangsbit 4. Mit anderen Worten werden das Adresszählerbit 1 und die drei hohen Bits 4 - 6 (insgesamt vier Bits) zu jedem Speicher als eine Adresse ausgegeben, während die Adresszählerbits 2 und 3 (insgesamt zwei Bits) zu der Zugriffssteuerung 502 ausgegeben werden. Wenn die Daten-Eingabe/Ausgabe (E/A) beginnt, zählt der Adresszähler 503 die Anzahl der Datenzugriffe und die E/A-Daten werden in den durch die Steuerung 502 angegebenen Speicher geschrieben. In dem Beispiel, in welchem mx = 2, my = 0, nx = 1 und ny = 3 sind, werden die ersten zwei Datenwerte in den ersten Speicher geschrieben, wobei die Datenzugriffszählung der Adresszählung des Adresszählers 503 "000000" und "000001" ist; die dritten und vierten Datenwerte (zwei Datenwerte) werden in den zweiten Speicher geschrieben, wobei die Datenzugriffszählung des Adresszählers 503 "000010" und "000011" ist; die fünften und sechsten Daten werte (zwei Datenwerte) werden in den dritten Speicher geschrieben, wobei die Datenzugriffszählung des Adresszählers 503 "000100" und "000101" ist; und die siebten und achten Datenwerte (zwei Datenwerte) werden in den vierten Speicher geschrieben, wobei die Datenzugriffszählung des Adresszählers 503 "000110" und "000111" ist. Die neunten und zehnten Datenwerte (zwei Datenwerte) werden dann in den ersten Speicher geschrieben, da die Bits 3 und 2 in der Datenzählung wieder zu "00" zurückkehren. Diese Folge wird durch Schreiben von zwei Datenwerten in einen Speicher fortgesetzt und durch Fortschreiten zu dem nächsten Speicher. Somit ist es für (2¹ · 2³ · 2² · 2&sup0;) Datenwerte möglich (2¹ · 2³) Datenwerte in jeden von (2² · 2&sup0;) Speicher zu schreiben. Es ist anzumerken, daß dieses Beispiel leicht für einen Adressgenerator zum Speichern von (2nx · 2ny) aus (2nx · 2ny · 2mx · 2my) Datenwerten in (2mx · 2my) Speichern erweiterbar ist.
- Wie oben beschrieben, ist die Parallel-Verarbeitungstechnik wesentlich zum Beschleunigen von Bildverarbeitungsanwendungen und der Adressgenerator der vorliegenden Ausführungsform kann (2nx · 2ny · 2mx · 2my) Datenwerte eines rechtwinkligen Bereiches von Daten, welche durch Verwendung einer Schaltung mit geringen Abmessungen in die/aus den (2mx · 2my) Speichern eingegebenen/- ausgegeben werden, verteilen/koppeln. Weiterhin kann dies die Anzahl von benötigten Adress-Pins verringern und die Kosten sinken ebenfalls, wenn die Anzahl der Pins abnimmt. Da der Leistungsverlust für die Eingabe/Ausgabe-Pins zu einem relativ großen Prozentsatz zu dem Gesamtleistungsverlust der Vorrichtung beiträgt, können der Leistungsverlust und die Energieversorgungs-Anforderungen der Vorrichtung mit verringerter Pin-Anzahl verringert werden.
- Als nächstes wird ein Adressgenerator 521 gemäß einer sechsten Ausführungsform der Erfindung zum Schreiben oder Lesen von (2n · 2n) aus (2n · 2n · 2m · 2m) Daten in und aus (2m · 2m) Speicherelementen zum Verarbeiten eines Bildsignales eines quadratischen Bildbereiches beschrieben, wobei m und n natürliche Zahlen sind. Die Werte von m und n dieses Speicherbildes entsprechen einem Fall, in welchem mx = my = m und nx = ny = n des in Fig. 14 gezeigten Bildes sind. Der Adressgenerator 521 wird für ein Bild aus 2n+m · 2n+m Bildpunkten verwendet, welches in mehrere Bildsignale aufteilbar ist, welche quadratische Bildblöcke aus 2n · 2n Bildpunkten darstellen, wobei jedes Block-Bildsignal in einem Speicher gespeichert wird. Die Speicherzugriffs-Folge der sechsten Ausführungsform unterscheidet sich jedoch von derjenigen der fünften Ausführungsform.
- Der Adressgenerator der sechsten Ausführungsform umfaßt einen (n + n + m + m)-Bit-Adresszähler 530, i-Adress-Selektierer (1 ≤ i ≤ n) zum Auswählen des Bits (n + i) zum Blockzugriff oder des Bits (n + m + i) für Rasterabtast-Adressen, und j Speicheradress-Selektierer (1 ≤ j ≤ m) zum Auswählen von Bit (n + n + j) zur Blockabtastung oder Bit (n + j) zum Raster-Abtast-Zugriff, und eine Zugriffs-Steuerung 560 zum Erzeugen von Speicherzugriffssignalen, welche zu den Speichern zu senden sind, um einen anzusprechenden Speicher zu bezeichnen, wobei i und j natürliche Zahlen sind. Die Ausgangssignale der i Adress-Selektierer werden zu den (n + 1)-ten bis (n + n)-ten Adresspins der Speicher geliefert, um eine horizontale Zeile in Daten in einem Blockspeicher auszuwählen, während die j Speicheradress- Selektierer eine vertikale Speicherspalte in einer Matrix der Speicher auswählen. Die Zugriffs-Steuerung 560 erzeugt Speicherzugriffssignale. Die j Speicheradress- Selektierer selektieren Bit (n + n + j), wenn das Zugriffssignal das Bit (m + i) basierend auf der Auswahl durch die i-Adress-Selektierer auswählt, und wählt das Bit (n + j) aus, wenn das Bit (n + m + i) durch die i-Adress-Selektierer ausgewählt wird. Wenn der Datenzugriff beginnt, zählt der Adresszähler 530 Datenzugriffe und die Bits 1 bis n des Adresszählers 530 und die i Adress-Selektierer- Ausgangssignale werden als eine Adresse zu den 22xm Speicherelementen ausgegeben, während die j Speicheradress-Selektierer-Ausgangssignale und die Bits (n + n + m + 1) bis (n + n + m + m) des Adresszählers 530 in die Zugriffs-Steuerung 560 eingegeben werden. Die Zugriffsteuerung 560 gibt ein Zugriffssignal zu 22xm Speicherelementen aus.
- Ein Beispiel der sechsten Ausführungsform, bei welchem m = 1 und n = 2 ist, wird unten anhand von Fig. 18, eines Blockschaltbildes eines Adressgenerators für einen programmgesteuerten Prozessor einschließlich vier Vektor-Verarbeitungseinheiten beschrieben. Der Adressgenerator wird in der in Fig. 15 gezeigten Schaltung anstelle des Adressgenerators 520 verwendet. Wie in Fig. 18 gezeigt, umfaßt der Adressgenerator einen 6-Bit-Adresszähler 530, einen ersten Adress- Selektierer 541 zum Auswählen von Bit 3 oder 4, einen zweiten Adress-Selektierer 542 zum Auswählen von Bit 4 oder 5, einen Speicher-Adress-Selektierer 551 zum Auswählen von Bit 5 oder 3 und eine Zugriffs-Steuerung 560.
- Die Wirkungsweise des Beispiels ist unten beschrieben. In dem Beispiel werden 16 Datenwerte in jedem von vier Speichern gespeichert. Die Fig. 19(a) und 19(b) stellen zwei Haupt-Zugriffsverfahren dar: Eingabe in Blockeinheiten (Fig. 19(a)), nachfolgend als "Blockzugriff" bezeichnet, und Raster-Abtastzugriff, der mehrere Blöcke überspannt (Fig. 19(b)), nachfolgend als "Raster-Abtast-Zugriff" bezeich net. Fig. 20(a) zeigt eine Eingabefolge von Daten in dem Block-Zugriffsmodus. Die als "erster Speicher", "zweiter Speicher", "dritter Speicher" und "vierter Speicher" bezeichneten Bereiche zeigen die Periode an, in welcher Daten in die ersten bis vierten Speicherelemente geschrieben werden. In dem Block-Zugriffsmodus werden somit Daten in der Einheit eines Block-Bildbereiches aufeinanderfolgend angesprochen. Fig. 20(b) zeigt andererseits die Eingabe-Folge von Daten in dem Raster- Abtast-Zugriffsmodus, wobei "1" angibt, daß der erste Speicher durch das Zugriffssignal ausgewählt ist; "2", "3" und "4" geben vergleichbar die Auswahl der entsprechenden Speicherelemente an. Somit werden Daten entlang einer horizontalen Zeile aufeinanderfolgend angesprochen.
- Das Zugriffsverfahrens-Signal wird verwendet, um auszuwählen, welches der zwei Zugriffsverfahren verwendet wird. Der Blockzugriff (Fig. 19(a)) wird verwendet, wenn das Bit 3 durch den ersten Adress-Selektierer 541 ausgewählt ist, Bit 4 durch den zweiten Adress-Selektierer 542 und Bit 5 durch den Speicheradress- Selektierer 551, während der Raster-Abtast-Zugriff (Fig. 19(b)) verwendet wird, wenn Bit 4 durch den ersten Adress-Selektierer 541 ausgewählt ist, Bit 5 durch den zweiten Adress-Selektierer 542 und Bit 3 durch den Speicher-Adress-Selektierer 551.
- Wenn durch das Zugriffsverfahrens-Signal ein Blockzugriff angegeben ist, wählt der erste Adress-Selektierer 541 Bit 3, der zweite Adress-Selektierer 542 wählt Bit 4 und der Speicher-Adress-Selektierer 551 wählt Bit 5. Mit anderen Worten werden die Selektierer 541, 542 und und 551 so gesetzt, daß die niedrigsten vier Bits des Adresszählers 530 als eine Adresse in jedes Speicherelement in dem Speicher 510 eingegeben werden, und die fünften und sechsten Bits des Adresszählers 530 werden als ein Speicheradress-Signal in die Zugriffs-Steuerung 560 eingegeben. Wenn die Daten-Eingabe/Ausgabe beginnt, zählt der Adresszähler 530 die Anzahl von Datenzugriffen und das fünfte Bit des Adresszählers 530, welches das Ausgangssignal des Speicher-Adress-Selektierers 551 ist, und das höchste Bit des Adresszählers 530 werden durch die Zugriffs-Steuerung 560 dekodiert, um als die Speicherzugriffssignale zusammen mit den Eingabedaten zu den Speicherelementen in dem Speicher 510 gesendet zu werden. Somit werden 16 Daten kontinuierlich in einem Speicherelement gespeichert und Eingabedaten werden in den vier Speicherelementen aufeinanderfolgend gespeichert.
- Wenn ein Raster-Abtast-Zugriff durch das Zugriffsverfahrens-Signal bezeichnet wird, wählt der erste Adress-Selektierer 541 Bit 4, der zweite Adress-Selektierer 542 wählt Bit 5 und der Speicheradress-Selektierer 551 wählt Bit 3. Mit anderen Worten werden die Selektierer 541, 542 gesetzt, so daß die niedrigsten zwei Bits und die Bits 4 und 5 des Adresszählers 530 in jedes Speicherelement des Speichers 510 als eine Adresse eingegeben werden und die Bits 3 und 6 des Adresszählers 530 werden als eine Speicheradresse in die Zugriffs-Steuerung 560 eingegeben. Wenn die Dateneingabe beginnt, zählt der Adresszähler 530 die Anzahl der Dateneingaben und das Bit 3 des Adresszählers 530, welches das Ausgangssignal des Speicher-Adress-Selektierers 551 ist, und das höchste Bit des Adresszählers 530 werden durch die Zugriffs-Steuerung 560 dekodiert und in die Speicherelemente des Speichers 510 als Speicherzugriffs-Signale zusammen mit den Eingabedaten eingegeben. Bei der Raster-Abtastung werden vier aufeinanderfolgende Datenwerte in dem ersten Speicher für die Adresszählungen von "000000" bis "000011 gespeichert. Dann wird für die Adresszählung von "000100" das Speicherzugriffssignal von "00" auf "01" geändert und die nächsten vier Datenwerte für Adresszählungen von "000100" bis "000111" werden in den zweiten Speicher gespeichert. Als nächstes wird für die Adresszählung von "001000" das Speicherzugriffssignal von "01" auf "00" geändert und die nächsten vier Daten für die Adresszählung von "001000" bis "001011" werden in den ersten Speicher gespeichert. Diese Verarbeitung wird für die Raster-Abtastung fortgesetzt. Somit ist es für (2² · 2² · 2¹ · 2¹) Datenwerte möglich, (2x · 2²) Datenwerte in jeden von (2¹ · 2¹) Speicher zu schreiben.
- Es ist anzumerken, daß dieses Beispiel leicht erweiterbar ist, wie oben beschrieben, als ein Adressgenerator zum Schreiben/Lesen von (2n · 2n) aus (2n · 2n · 2m · 2m) Daten in und aus (2m · 2m) Speichern. Es ist ebenfalls anzumerken, daß für ein durch einen Adressgenerator der fünften Ausführungsform zu verarbeitendes, rechtwinkliges Bild, ein Abbruch-Selektierer vorgesehen ist.
- Wie oben beschrieben, kann der Adressgenerator der vorliegenden Ausführungsform (2n+m · 2n+m) Datenwerte eines quadratischen Bereiches verteilen/koppeln, die in/aus (2m · 2m) Speicher eingeben/ausgeben werden durch Verwenden entweder eines Blockzugriffes oder eines Raster-Abtast-Zugriffes unter Verwendung einer Schaltung mit einer kleinen Abmessung. Dieses kann daher die Anzahl von benötigten Adress-Pins verringern und die Kosten sinken, da die Anzahl von Pins abnimmt. Da der Leistungsverlust durch die Eingabe/Ausgabe-Pins zu einem relativ hohen Prozentsatz zum gesamten Energieverbrauch einer LSI-Vorrichtung beiträgt, verringert die Verringerung der Anzahl der Pins ebenfalls den Energieverbrauch und die Energieversorgungs-Anforderungen der Vorrichtung.
- Beim Verarbeiten quadratischer Datenbereiche, wie sie bei der Bildverarbeitung häufig verwendet werden, kann der Adressgenerator gemäß der sechsten Ausführungsform Daten-Eingaben/Ausgaben in einem (2n+m · 2m+m) Bereich auf (2m · 2m) Speicherelemente durch einen Zähler und einen Nummern-Selektierer verteilen/koppeln. Durch Bereitstellen eines Selektierers kann entweder ein Blockzugriff oder ein Raster-Abtast-Eingabe/Ausgabe-Verfahren ausgewählt werden.
- Als nächstes wird ein Adressgenerator gemäß einer siebten Ausführungsform der Erfindung erläutert. Der Adressgenerator kann die Anzahl von Speicherelementen steuern, die zum Speichern betrieben werden, durch Hinzufügen einer Schaltung mit nur geringen Abmessungen zu dem Adressgenerator der sechsten Ausführungsform. Die Datenzugriffszeit wird dann halbiert, wenn die Anzahl der zu verarbeitenden Blöcke geringer als die Hälfte von (2m · 2m) oder geringer als (2m · 2m-1) ist, und verwirklicht somit eine Hochgeschwindigkeits-Daten-Eingabe/Ausgabe.
- Ein Beispiel des Adressgenerators der siebten Ausführungsform, wobei m = 1 und n = 2 ist, ist unten anhand der Fig. 21, 22, 23(a) und 23(b) beschrieben. In diesem Beispiel werden 16 Datenwerte in jedem von vier Speichern gespeichert. Wie in den Fig. 21 und 22 gezeigt, ist der Adressgenerator generell der gleiche wie bei der in Fig. 18 gezeigten, sechsten Ausführungsform, mit Ausnahme eines 7-Bit-Adresszählers 531 und einem Abbruchsignal-Selektierer 570 zum Auswählen der Bits 6 oder 7 entsprechend einem Speichernummern-Änderungssignal. Der Abbruchsignal-Selektierer 570 wählt das Bit 7 beim Eingeben von Daten in sämtliche der vier Speicherelemente entsprechend einer der zwei Arten von Speichernummern-Änderungssignale aus und wählt Bit 6 aus, wenn Daten nur in zwei Speicherelemente entsprechend dem anderen der Speichernummern-Änderungssignale eingegeben werden.
- Vergleichbar mit der sechsten Ausführungsform sind zwei Haupt-Zugriffsverfahren vorhanden: Blockzugriff, wie in Fig. 19(a) gezeigt, und Raster-Abtast-Zugriff, wie in Fig. 19(b) gezeigt. Es sind zwei Speichernummern-Auswahlsignale vorhanden: eines zum Speichern von Daten in allen vier Speicherelementen des Speichers 510, und das andere zum Speichern von Daten in nur zwei der vier Speicherelemente des Speichers 510. Wenn das Bit 7 durch den Abbruchsignal-Selektierer 570 ausgewählt ist, und Daten in die vier Speicherelemente eingegeben werden, ist die Wirkungsweise die gleiche, wie diejenige der oben erläuterten, sechsten Ausführungsform und wird hier nicht erläutert.
- Wenn Bit 6 durch den Abbruchsignal-Selektierer 570 ausgewählt ist, werden Daten in zwei Speicherelemente eingegeben, wie unten beschrieben. Wenn der Blockzugriff durch das Zugriffsverfahrens-Signal ausgewählt ist, wählt der erste Adress- Selektierer 541 das Bit 3 aus, der zweite Adress-Selektierer 542 wählt das Bit 4 und der Speicheradress-Selektierer 551 wählt das Bit 5. Mit anderen Worten werden die Selektierer 541, 542 und 551 so eingestellt, daß die unteren vier Bits des Adresszählers 531 in jedes Speicherelement des Speichers 510 als eine Adresse eingegeben werden und das fünfte Bit des Adresszählers 531 wird als eine Speicheradresse in die Zugriffsteuerung 561 eingegeben. Wenn die Dateneingabe beginnt, zählt der Adresszähler 530 die Anzahl der Dateneingaben und das fünfte Bit des Adresszählers 531, welches das Ausgangssignal des Speicher-Adress- Selektierers 551 ist, und die obersten zwei Bits des Adresszählers 531 werden durch die Zugriffs-Steuerung 561 dekodiert und zusammen mit Eingabedaten als Speicherzugriffssignale zu den Speicherelementen des Speichers 510 gesendet.
- Die Eingabefolge der Daten in dem Block-Zugriffsmodus ist in Fig. 23(a) dargestellt. Die als "erster Speicher", "zweiter Speicher", "dritter Speicher" und "vierter Speicher" bezeichneten Abschnitte zeigen Perioden an, wenn Daten in die ersten bis vierten Speicherelemente geschrieben werden. Wenn die Speicherung von 16 Datenwerten in die zwei Speicherelemente des Speichers 510 beendet ist, bricht das Bit6-Abbruchsignal des Adresszählers 531 das Schreiben der Daten in die Speicherelemente in dem Speicher 510 durch das Zugriffssignal von der Steuerung 561 ab, so daß die Dateneingabe endet.
- Wenn der Raster-Abtast-Zugriff durch das Zugriffsverfahrens-Signal bezeichnet wird, wählt der erste Adress-Selektierer 541 Bit 4, der zweite Adress-Selektierer 542 wählt Bit 5 aus und der Speicheradress-Selektierer 551 wählt Bit 3 aus. Mit anderen Worten werden die Selektierer eingestellt, so daß die untersten zwei Bits und die Bits 4 und 5 des Adresszählers 531 in jedes Speicherelement des Speichers 510 als eine Adresse eingegeben werden und das dritte Bit des Adresszählers 531 wird als eine Speicheradresse in die Zugriffssteuerung 561 eingegeben. Wenn die Dateneingabe beginnt, zählt der Adresszähler 531 die Anzahl der Dateneingaben und das dritte Bit des Adresszählers 531, welches das Ausgangssignal des Speicheradress-Selektierers 551 ist, und die obersten zwei Bits des Adresszählers 531 werden durch die Zugriffs-Steuerung 561 dekodiert und Speicherzugriffssignale werden zusammen mit den Eingangsdaten in die Speicherelemente des Speichers 510 eingegeben.
- Diese Eingangs-Folge von Daten in dem Raster-Abtast-Zugriffsmodus ist in Fig. 23(b) gezeigt. Das Bezugszeichen "1" zeigt an, daß der erste Speicher durch das Zugriffssignal ausgewählt ist; "2", "3" und "4" zeigen vergleichbar die Auswahl der zweiten, dritten und vierten Speicherelemente an. Wenn die Speicherung von 16 Datenwerten in den zwei Speicherelementen in dem Speicher 510 beendet ist, bricht das Bit6-Abbruchsignal des Adresszählers 531 das Schreiben der Daten in die Speicherelemente in dem Speicher 510 durch das von der Zugriffs-Steuerungsschaltung 561 ausgegebene Zugriffssignal ab, so daß die Dateneingabe endet. Für (2² · 2² · 2¹ · 2¹) Daten ist es somit möglich, zwischen dem Speichern von (2² · 2²) Daten in jedem von (2¹ · 2¹) Speichern und Lesen/Schreiben von (2² · 2²) Daten aus/in (2¹ · 2&sup0;) Speicher zu wählen, durch Bereitstellen eines Selektierers dafür. Es ist anzumerken, daß diese Ausführungform leicht erweiterbar ist als ein Adressgenerator, der zum Speichern von (2n · 2n) aus (2n · 2n · 2m · 2m) Daten in (2m · 2m) Speichern und Lesen/Schreiben von (2n · 2n) Daten aus/in (2m · 2m-1) Speichern in der Lage ist.
- In der siebten Ausführungsform der vorliegenden Erfindung umfaßt ein Adressgenerator weiterhin einen Abbruchsignal-Selektierer 570 zum Auswählen von Bit (n + n + m + m + 1) oder Bit (n + n + m + m). Ein Speichernummern-Auswahlsignal ist vorgesehen für den Abbruchsignal-Seiektierer 570, um den Zugriff auf 22xm Speicherelemente oder 2m Speicherelemente auszuwählen. Der Abbruchsignal-Selektierer 570 selektiert das Bit (n + n + m + m + 1) beim Zugriff auf 22xm Speicherelemente, während er das Bit (n + n + m + m) beim Zugriff auf 2m Speicherelemente auswählt.
- Wie oben beschrieben, kann der Adressgenerator der vorliegenden Ausführungsform durch Hinzufügen einer Schaltung eines Abbruchsignal-Selektierers 570 mit einer geringen Abmessung zu dem Adressgenerator der sechsten Ausführungsform die Anzahl der Speicherelemente steuern, in/aus welchen Daten geschrieben/- gelesen werden, um die Datenzugriffszeit zu halbieren, wenn die Anzahl der zu verarbeitenden Verarbeitungsblöcke geringer als die Hälfte (2m · 2m) ist, oder geringer als (2m · 2m-1) und somit die Daten-Eingabe/Ausgabe-Zeit beschleunigen.
- Ein weiteres Beispiel des Adressgenerators der siebten Ausführungsform der vorliegenden Erfindung wird unten anhand von Fig. 24 und 25 beschrieben, wobei n = 1 und n = 3 ist, d. h., vierundsechzig Datenwerte werden in jedem der vier Speicherelemente gespeichert. Wie in den Zeichnungen gezeigt, umfaßt der Adressgenerator 610 einen 9-Bit-Adresszähler 630, einen ersten Adress-Selektierer 641 zum Auswählen von Bit 4 oder 5, einen zweiten Adress-Selektierer 642 zum Auswählen von Bit 5 oder 6, einen dritten Adress-Selektierer 643 zum Auswählen von Bit 6 oder 7, einen Speicheradress-Selektierer 651 zum Auswählen von Bit 7 oder 4, eine Zugriffs-Steuerung 660 und einen Abbruchsignal-Selektierer 670 zum Auswählen von Bit 8 oder 9. Wie durch eines der zwei verschiedenen Speichernummern-Auswahlsignale angewiesen, selektiert der Abbruchsignal-Selektierer 670 Bit 9, wenn Daten in alle vier Speicherelemente eingegeben werden, während er Bit 8 auswählt, wenn Daten nur in zwei Speicherelemente eingegeben werden.
- Wie bei dem ersten Beispiel der oben erläuterten, siebten Ausführungsform sind zwei Speichernummern-Auswahlsignale vorhanden: eines zum Speichern von Daten in allen vier Speicherelementen des Speichers 620 und das andere zum Speichern der Daten in nur zwei der Speicherelemente des Speichers 620.
- Die Wirkungsweise dieses Beispiels, wenn Bit 9 durch den Abbruchsignal-Selektierer zur Eingabe in vier Speicherelemente ausgewählt ist, wird zuerst beschrieben. Wenn der Blockzugriff durch das Zugriffsverfahrens-Signal bezeichnet ist, wählt der erste Adress-Selektierer 641 das Bit 4 aus, der zweite Adress-Selektierer 642 wählt Bit 5 aus, der dritte Adress-Selektierer 643 wählt Bit 6 aus und der Speicheradress-Selektierer 651 wählt Bit 7 aus. Mit anderen Worten werden die Selektierer so eingestellt, daß die niedrigsten sechs Bits des Adresszählers 630 als die Adresse in jedes Speicherelement in dem Speicher 610 eingegeben werden und das siebte Bit des Adresszählers 630 wird als eine Speicheradresse in die Zugriffs- Steuerung 660 eingegeben. Wenn die Dateneingabe beginnt, zählt die Adresszähler 630 die Anzahl von Dateneingaben und das siebte Bit des Adresszählers 630, welches das Ausgangssignal des Speicheradress-Selektierers 651 ist, und die höchsten zwei Bits des Adresszählers 630 werden durch die Zugriffs-Steuerung 660 dekodiert, um zusammen mit den Eingangsdaten in die Speicherelemente in dem Speicher 610 als Speicherzugriffssignale eingegeben zu werden.
- Die Eingabe-Folge von Daten in dem Block-Zugriffsmodus wird als nächstes beschrieben. Wenn die Speicherung der vierundsechzig Datenwerten in den Speicherelementen in dem Speicher 610 beendet ist, bricht das Bit-9-Abbruchssignal des Adresszählers 630 das Schreiben der Daten in die Speicherelemente in dem Speicher 610 durch das von der Zugriffs-Steuerung 660 ausgegebene Zugriffssignal ab, so daß die Dateneingabe endet.
- Wenn der Raster-Abtast-Zugriff durch das Zugriffsverfahrens-Signal bezeichnet ist, wählt der erste Adress-Selektierer 641 Bit 5 aus, der zweite Adress-Selektierer 642 wählt Bit 6 aus, der dritte Adress-Selektierer 643 wählt Bit 7 aus und der Speicheradress-Selektierer 651 wählt Bit 4 aus. Mit anderen Worten werden die Selektierer eingestellt, so daß die unteren drei Bits und die Bits 5, 6 und 7 des Adresszählers 630 in jedes Speicherelement in dem Speicher 610 als eine Adresse eingegeben werden und das Bit 4 des Adresszählers 630 wird als eine Speicheradresse in die Zugriffs-Steuerung 660 eingegeben. Wenn die Dateneingabe beginnt, zählt der Adresszähler 630 die Anzahl der Dateneingaben und Bit 4 des Adresszählers 630, welches das Ausgangssignal des Speicheradress-Selektierers 651 ist, und die höchsten zwei Bits des Adresszählers 630 werden durch die Zugriffs-Steuerung 660 dekodiert, um zusammen mit den Eingabedaten in die Speicherelemente in dem Speicher 610 als Speicher-Zugriffssignale eingegeben zu werden.
- Die Eingabe-Folge von Daten in dem Raster-Abtast-Zugriffs-Modus ist vergleichbar mit der in Fig. 20(b) der sechsten Ausführungsform gezeigten. Wenn die Speicherung der vierundsechzig Datenwerte in den vier Speicherelementen in dem Speicher 610 beendet ist, beendet das Bit-9-Abbruchsignal des Adresszählers 630 das Schreiben der Daten in die Speicherelemente in dem Speicher 610 durch das von der Zugriffs-Steuerung 660 ausgegebene Zugriffssignal, so daß die Dateneingabe endet.
- Die Wirkungsweise dieses Beispiels, wenn das Bit 8 durch den Abbruchsignal- Selektierer 670 zur Eingabe in zwei Speicherelemente ausgewählt ist, wird unten beschrieben. Wenn der Blockzugriff durch das Zugriffs-Verfahrens-Signal bezeichnet ist, wählt der erste Adress-Selektierer 641 Bit 4 aus, der zweite Adress-Selektierer 642 wählt Bit 5 aus, der dritte Adress-Selektierer 643 wählt Bit 6 aus und der Speicher-Adress-Selektierer 651 wählt Bit 7 aus. Mit anderen Worten werden die Selektierer eingestellt, so daß die unteren sechs Bits des Adresszählers 630 in jedes Speicherelement in dem Speicher 610 als eine Adresse eingegeben werden und Bit 7 des Adresszählers 630 wird als eine Speicheradresse in die Zugriffssteuerung 660 eingegeben. Wenn die Dateneingabe beginnt, zählt der Adresszähler 630 die Anzahl von Dateneingaben und Sit 7 des Adresszählers 630, welches das Ausgangssignal des Speicher-Adress-Selektierers 651 ist, und die höchsten zwei Bits des Adresszählers 630 werden durch die Zugriffs-Steuerung 660 dekodiert und zusammen mit den Eingangsdaten als Speicherzugriffssignale in die Speicherelemente eingegeben.
- Die Eingabefolge von Daten in dem Block-Zugriffsmodus ist vergleichbar mit derjenigen des in Fig. 23(a) gezeigten ersten Beispieles der siebten Ausführungsform. Wenn die Speicherung der vierundsechzig Datenwerte in den zwei Speicherelementen des Speichers 610 beendet ist, bricht das Bit-8-Abbruchsignal des Adresszählers 630 das Schreiben der Daten in die Speicherelemente des Speichers 610 durch das von der Zugriffs-Steuerung 660 ausgegebene Zugriffssignal ab, so daß die Dateneingabe endet.
- Wenn ein Raster-Abtast-Zugriff durch das Zugriffsverfahrens-Signal bezeichnet wird, wählt der erste Adress-Selektierer 641 Bit 5 aus, der zweite Adress-Selektierer 642 wählt Bit 6 aus, der dritte Adress-Selektierer 643 wählt Bit 7 und der Speicheradress-Selektierer 651 wählt Bit 4 aus. Mit anderen Worten werden die Selektierer eingestellt, so daß die unteren drei Bit und die Bits 5, 6 und 7 des Adresszählers in jedes Speicherelement in dem Speicher 610 als eine Adresse eingegeben werden und Bit 4 des Adresszählers wird als eine Speicheradresse in die Zugriffs-Steuerung 660 eingegeben. Wenn die Dateneingabe beginnt, zählt der Adresszähler 630 die Anzahl der Dateneingaben und Bit 4 des Adresszählers 630, welches das Ausgangssignal des Speicheradress-Selektierers 651 ist, und die höchsten zwei Bits des Adresszählers 630 werden durch die Zugriffs-Steuerung 660 dekodiert, um zusammen mit den Eingangsdaten als Speicherzugriffssignale in die Speicherelemente in dem Speicher 610 eingegeben zu werden.
- Die Eingabe-Folge der Daten in dem Raster-Abtast-Zugriffsmodus ist vergleichbar mit derjenigen des in Fig. 23(b) ersten Beispiels. Wenn die Speicherung der vierundsechzig Datenwerte in den zwei Speicherelementen in dem Speicher 610 beendet ist, bricht das Bit-8-Abbruchsignal des Adresszählers 630 das Scheiben der Daten in die Speicherelement in dem Speicher 610 durch das von der Zugriffs- Steuerung 660 ausgegebene Zugriffssignal ab, so daß die Dateneingabe endet.
- Der Adressgenerator gemäß der siebten Ausführungsform kann Daten in Makro- Block-Einheiten verarbeiten, d. h., ein Luminanzsignalblock aus 16 · 16 Bildpunkten und zwei Farbdifferenzsignalblöcken aus 8 · 8 Bildpunkten, wie allgemein bei Bildverarbeitungsanwendungen verwendet, entweder im Block- oder Raster-Abtast- Zugriffsmodus. Somit kann die Anzahl von Pins verringert werden, da Adresspins nicht benötigt werden. Weiterhin sinken ebenfalls die Kosten, da die Anzahl der Pins abnimmt. Da der Leistungsverlust durch die Eingabe/Ausgabe-Pins zu einem relativ großen Prozentsatz zum Gesamtleistungsverlust einer LSI-Vorrichtung beiträgt, verringert die Verringerung der Anzahl der Pins ebenfalls den Leistungsver lust und die Energieversorgungsanforderungen der Vorrichtung. Zusätzlich ist es durch Vorsehen einer Schaltung mit einer kleinen Abmessung des Abbruchsignal- Selektierers 670 möglich, die Dateneingabe in vier Speicherelemente zu steuern, wenn das Luminanzsignal eingegeben wird, und in zwei Speicherelemente, wenn die Farbdifferenzsignale eingegeben werden, und somit die Dateneingabezeit zu verringern.
- Es ist anzumerken, daß, während die fünfte und siebte Ausführungsform oben nur anhand der Dateneingabe beschrieben wurden, die Erfindung ebenfalls verwendet wird, wenn sie für Datenausgabevorgänge eingesetzt wird.
Claims (19)
1. Programmgesteuerter Prozessor, mit:
mehreren Vektor-Verarbeitungseinrichtungen (102) zum Ausführen mehrerer
paralleler Anweisungen einschließlich paralleler Vektoranweisungen, wobei die
Vektor-Verarbeitungseinrichtung Vektoroperationen basierend auf den parallelen
Vektoranweisungen in einer Pipeline-Verarbeitung ausführt;
einer Skalar-Verarbeitungseinrichtung (101)zum Ausführen einer Skalar-Operation;
einem Anweisungsspeicher (105);
einem Sequenzierer (106) zum Steuern des Anweisungsspeichers (105);
einem Dekodierer (107) zum Interpretieren von von dem Sequenzierer (106)
empfangenen Programmanweisungen zum Steuern sämtlicher
Vektor-Verarbeitungseinrichtungen (102) zum Ausführen des gleichen Vorgangs, wenn eine auszuführende
Anweisung eine parallele Vektoranweisung ist, und zum Steuern der
Skalar-Verarbeitungseinrichtung (101) zum Ausführen eines Skalarvorganges, wenn eine
auszuführende Anweisung nicht eine parallele Vektoranweisung ist;
einem Vektor-Verteiler (103) zum Aufteilen eingegebener Vektordaten in mehrere
Blockvektoren, wobei die Anzahl der Blockvektoren die gleiche wie die Anzahl der
Vektor-Verarbeitungseinheiten ist, und zum Senden der Blockvektoren zu
entsprechenden Vektor-Verarbeitungseinrichtungen (102); und
einem Vektorkoppler (104) zum Koppeln der durch die Vektorvorgänge in der
Vektor-Verarbeitungseinrichtung (102) erhaltenen Blockvektoren zum Senden eines
Ausgangsvektors;
dadurch gekennzeichnet, daß die Skalar-Verarbeitungseinrichtung (101) über einen
Skalar-Bus an die Vektor-Verarbeitungseinrichtung (102) angeschlossen ist, und
wobei die Vektor-Verarbeitungseinrichtung die Ergebnisse der Verarbeitung in der
Vektor-Verarbeitungseinrichtung (102) speichert und die Ergebnisse zu dem Vektor-
Koppler (104) ausgibt, wenn eine auszuführende Anweisung eine parallele
Vektoranweisung ist, deren Ergebnis ein Vektor ist, während die skalaren Ergebnisse von
der Mehrzahl der Vektor-Verarbeitungseinrichtungen (102) direkt zu der Skalar-
Verarbeitungseinrichtung (101) über den Skalar-Bus übertragen werden, wenn eine
auszuführende Anweisung eine parallele Vektoranweisung ist, deren Ergebnis
skalar ist.
2. Programmgesteuerter Prozessor nach Anspruch 1,
bei welchem der Vektor-Verteiler (103) zwei Reihen von Eingangsvektordaten
empfängt und jede Reihe von Eingangsvektordaten in mehrere Blockvektoren
aufteilt.
3. Programmgesteuerter Prozessor nach Anspruch 1,
bei welchem jede Vektor-Verarbeitungseinrichtung (102) umfaßt:
zwei Eingangs-Speichereinrichtungen (304) zum Speichern von zwei Reihen von
eingegebenen Blockvektoren;
einen Vektor-Prozessor (200) zum Ausführen einer Vektor-Operation mit von der
Eingangs-Speichereinrichtung (304) empfangenen, die Blockvektoren enthaltenden
Daten;
eine erste Ausgangs-Speichereinrichtung (404) zum Speichern eines
Vektorergebnisses der Vektor-Operation, wobei die erste Ausgangs-Speichereinrichtung (404)
an den Vektor-Koppler (104) und an den Vektor-Prozessor (200) angeschlossen ist;
und
eine zweite Ausgangs-Speichereinrichtung (206) zum Speichern eines skalaren
Ergebnisses der Vektor-Operation, wobei die zweite Ausgangs-Speichereinrichtung
(206) an den Skalar-Bus angeschlossen ist.
4. Programmgesteuerter Prozessor nach Anspruch 3,
bei welchem die Eingangs-Speichereinrichtung (304) und die erste
Ausgangs-Speichereinrichtung (404) zum Speichern von Blockvektoren mehrere
Pufferspeichereinrichtungen umfassen, die jede zum Speichern von Blockvektoren vorgesehen
sind;
wobei der Vektor-Verteiler (103) und der Vektor-Koppler (104) unabhängig von
dem Sequenzierer (106) arbeiten, und wenn Blockvektordaten in eine der
Pufferspeichereinrichtungen geschrieben werden, können Blockvektordaten aus der
anderen der Pufferspeichereinrichtungen gelesen werden, und umgekehrt.
5. Programmgesteuerter Prozessor nach Anspruch 1,
bei welchem eine parallele Vektoranweisung eine Steuerungsanzeige beinhaltet,
welche anzeigt, daß die Vektor-Verarbeitungseinrichtung (102) zu betreiben ist,
und wobei der Dekodierer (107) eine Einrichtung zum Senden eines Signals zu der
Vektor-Verarbeitungseinrichtung (102) aufweist, welche durch die Anzeige
angezeigt wird.
6. Programmgesteuerter Prozessor nach Anspruch 3,
bei welchem eine der in der gesamten Vektor-Verarbeitungseinrichtung (102)
vorgesehenen Speichereinrichtungen zum Speichern von Blockvektoren ein
Speicherelement zum Speichern eines Blockvektors und eine an das Speicherelement
angeschlossene Steuerung umfaßt, zum Steuern, ob ein Blockvektor in dem
Speicherelement geschrieben oder gelesen wird;
wobei der Prozessor weiterhin einen Adreßdekodierer umfaßt, zum Senden eines
Signals zu sämtlichen Steuerungen zum gleichzeitigen Schreiben oder Lesen von
Blockvektoren zu oder aus den Speicherelementen.
7. Programmgesteuerter Prozessor nach Anspruch 3,
bei welchem eine der in dem programmgesteuerten Prozessor enthaltenen
Komponenten einen Adreßgenerator (500) umfaßt, zum Speichern des Zugriffs der
Eingangs-Speichereinrichtung (304)oder der ersten Ausgangs-Speichereinrichtung
(404) zum Schreiben oder Lesen (2nx · 2ny) von (2nx · 2ny · 2mx · 2my) Daten zu
oder aus (2mx · 2my) Eingangs-Speichereinrichtungen oder der ersten Ausgangs-
Speichereinrichtung in dem programmgesteuerten Prozessor, wobei nx, ny, mx und
my natürliche Zahlen sind.
8. Programmgesteuerter Prozessor nach Anspruch 7,
bei welchem eine der Komponenten den Vektor-Verteiler (103) umfaßt.
9. Programmgesteuerter Prozessor nach Anspruch 7,
bei weichem die eine der Komponenten den Vektorkoppler (104) umfaßt.
10. Programmgesteuerter Prozessor nach Anspruch 7,
wobei nx = ny und mx = my ist.
11. Programmgesteuerter Prozessor nach Anspruch 7,
wobei der Adreßgenerator (500) umfaßt:
einen (nx + ny + mx + my)-Bit-Adreßzähler (503) zum Zählen von
Datenzugriffen, wenn der Datenzugriff beginnt;
einen Umschalter (501) zum Ändern der Sequenz der Ausgangsbits des
Adreßzählers (503) entsprechend einem Zugriffsverfahrenssignal zum Bezeichnen der
Sequenz der Adreßzähler-Ausgangsbits; und
eine Zugriffssteuerung (502) zum Senden der Speicherzugriffsignale zu den (2mx ·
2my) Speicherelementen;
wobei der Umschalter (501) Bits 1 bis (nx + ny) zu den (2mx · 2my)
Speicherelementen als eine Adresse und Bits (nx + ny + 1) bis (nx + ny + mx + my) zu der
Zugriffssteuerung (502) sendet.
12. Programmgesteuerter Prozessor nach Anspruch 11,
bei welchem das Zugriffsverfahrenssignal ein Blockabtastungsverfahren bezeichnet.
13. Programmgesteuerter Prozessor nach Anspruch 11,
bei welchem das Zugriffsverfahrenssignal ein Raster-Abtastverfahren bezeichnet.
14. Programmgesteuerter Prozessor nach Anspruch 11
bei welchem mx = 2, my = 0, nx = 1 und ny = 3 ist.
15. Programmgesteuerter Prozessor nach Anspruch 10,
bei welchem nx = ny = n und mx = my = m sind, wobei der Adreßgenerator
(500) umfaßt:
den (n + n + m + m)-Bit-Adreßzähler (503) zum Zählen der Datenzugriffe, wenn
der Datenzugriff beginnt;
den Umschalter (501) mit i Adreß-Selektierern (1 ≤ i ≤ n) zum Selektieren von Bit
(n + i) oder Bit (n + m + i) und j Speicheradreß-Selektierern (1 ≤ j ≤ m) zum
Auswählen von Bit (n + n + j) wenn das Bit (n + i) durch die i Adreßselektierer
ausgewählt ist, und zum Auswählen von Bit (n + j), wenn das Bit (n + m + i)
durch die i Adreßselektierer ausgewählt ist; und
die Zugriffssteuerung (502) zum Senden von Speicherzugriffssignalen zu den (2m
· 2m) Speicherelementen, wobei i, j, m und n natürliche Zahlen sind;
wobei die Bits 1 bis n der Ausgänge der Adreßzähler (503) und die i
Adreßselektierer als eine Adresse zu den 22xm Speicherelementen ausgegeben werden und die
Ausgangssignale der j Speicheradreßselektoren und Bits (n + n + m + 1) bis (n
+ n + m + m) des Adreßzählers (503) zu der Zugriffssteuerung (502) gesendet
werden.
16. Programmgesteuerter Prozessor nach Anspruch 15,
bei welchem m = 1 und n = 2 ist.
17. Programmgesteuerter Prozessor nach Anspruch 10,
bei welchem mx = my = m und nx = ny = n sind, wobei der Adreßgenerator
(500) umfaßt:
einen (n + n + m + m + 1)-Bit-Adreßzähler (503) zum Zählen von
Datenzugriffen, wenn der Datenzugriff beginnt;
i Adreßselektierer (1 ≤ i ≤ n) zum Auswählen von Bit (n + i) oder Bit (n + m +
i);
j Speicheradreßselektierer (1 ≤ j ≤ m) zum Auswählen von Bit (n + n + j) wenn
das Bit (n + i) durch die i Adreßselektierer ausgewählt ist, und zum Auswählen des
Bit (n + j), wenn das Bit (n + m + i) durch die i Adreßselektierer selektiert ist;
einen Endesignal-Selektierer zum Selektieren des Bits (2 · n + 2 · m + 1) oder Bit
(2 · n + 2 · m) entsprechend einem Speichernummer-Selektionssignal zum
Selektieren eines Zugriffs auf die 22xm Speicherelemente oder die 2m
Speicherelemente; und
eine Zugriffssteuerung (502) zum Senden von Speicherzugriffssignalen zu den (2m
· 2m) Speicherelementen, wobei i, j, m und n natürliche Zahlen sind;
wobei die Bits 1 bis n des Adreßzählers (503) und die i Adreßselektierer-Ausgänge
als eine Adresse zu den 22xm Speicherelementen ausgegeben werden und die
Ausgangssignale der j Speicheradreßselektierer und Bits (n + n + m + 1) bis (n
+ n + m + m) des Adreßzählers (503) in die Zugriffssteuerung (502) eingegeben
werden und der Endesignal-Selektierer das Bit (n + n + m + m + 1) selektiert,
wenn das Speichernummern-Selektionssignal den Zugriff auf die 22xm
Speicherelemente selektiert und das Bit (n + n + m + m) selektiert, wenn das
Speichernummern-Selektionssignal den Zugriff auf die 2m Speicherelemente selektiert.
18. Programmgesteuerter Prozessor nach Anspruch 17,
wobei m = 1 und n = 2 ist.
19. Programmgesteuerter Prozessor nach Anspruch 17,
wobei m = 1 und n = 3 ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00895893A JP3316901B2 (ja) | 1993-01-22 | 1993-01-22 | データ分配回路 |
JP09913793A JP3305406B2 (ja) | 1993-04-26 | 1993-04-26 | プログラム制御のプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69421103D1 DE69421103D1 (de) | 1999-11-18 |
DE69421103T2 true DE69421103T2 (de) | 2000-06-08 |
Family
ID=26343590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69421103T Expired - Lifetime DE69421103T2 (de) | 1993-01-22 | 1994-01-21 | Programmgesteuertes Prozessor |
Country Status (3)
Country | Link |
---|---|
US (1) | US5517666A (de) |
EP (1) | EP0607988B1 (de) |
DE (1) | DE69421103T2 (de) |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630161A (en) * | 1995-04-24 | 1997-05-13 | Martin Marietta Corp. | Serial-parallel digital signal processor |
US5893066A (en) * | 1996-10-15 | 1999-04-06 | Samsung Electronics Co. Ltd. | Fast requantization apparatus and method for MPEG audio decoding |
KR100207705B1 (ko) * | 1996-12-04 | 1999-07-15 | 윤종용 | Dct 블럭과 래스터 스캔을 위한 메모리 주소지정장치 및 그 방법 |
US6401194B1 (en) * | 1997-01-28 | 2002-06-04 | Samsung Electronics Co., Ltd. | Execution unit for processing a data stream independently and in parallel |
US5805610A (en) * | 1997-04-28 | 1998-09-08 | Credence Systems Corporation | Virtual channel data distribution system for integrated circuit tester |
US5894484A (en) * | 1997-04-28 | 1999-04-13 | Credence Systems Corporation | Integrated circuit tester with distributed instruction processing |
US5925145A (en) * | 1997-04-28 | 1999-07-20 | Credence Systems Corporation | Integrated circuit tester with cached vector memories |
EP1145218B1 (de) * | 1998-11-09 | 2004-05-19 | Broadcom Corporation | Anzeigesystem zur mischung von graphischen daten und videodaten |
WO2000031658A1 (fr) * | 1998-11-26 | 2000-06-02 | Matsushita Electric Industrial Co., Ltd. | Processeur et dispositif de traitement d'image |
US6807620B1 (en) * | 2000-02-11 | 2004-10-19 | Sony Computer Entertainment Inc. | Game system with graphics processor |
US6857061B1 (en) | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
US6684352B1 (en) * | 2000-07-12 | 2004-01-27 | Sun Microsystems, Inc. | Read control system and method for testing word oriented SRAM with macros |
JP2002108837A (ja) * | 2000-09-29 | 2002-04-12 | Nec Corp | 計算機システムとその計算制御方法 |
GB2382886B (en) | 2001-10-31 | 2006-03-15 | Alphamosaic Ltd | Vector processing system |
GB2382887B (en) * | 2001-10-31 | 2005-09-28 | Alphamosaic Ltd | Instruction execution in a processor |
US8775997B2 (en) | 2003-09-15 | 2014-07-08 | Nvidia Corporation | System and method for testing and configuring semiconductor functional circuits |
US8732644B1 (en) | 2003-09-15 | 2014-05-20 | Nvidia Corporation | Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits |
US8788996B2 (en) | 2003-09-15 | 2014-07-22 | Nvidia Corporation | System and method for configuring semiconductor functional circuits |
US8711161B1 (en) | 2003-12-18 | 2014-04-29 | Nvidia Corporation | Functional component compensation reconfiguration system and method |
US8427490B1 (en) | 2004-05-14 | 2013-04-23 | Nvidia Corporation | Validating a graphics pipeline using pre-determined schedules |
US7577869B2 (en) * | 2004-08-11 | 2009-08-18 | Ati Technologies Ulc | Apparatus with redundant circuitry and method therefor |
US9098932B2 (en) * | 2004-08-11 | 2015-08-04 | Ati Technologies Ulc | Graphics processing logic with variable arithmetic logic unit control and method therefor |
US8723231B1 (en) | 2004-09-15 | 2014-05-13 | Nvidia Corporation | Semiconductor die micro electro-mechanical switch management system and method |
US8624906B2 (en) * | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
US8711156B1 (en) * | 2004-09-30 | 2014-04-29 | Nvidia Corporation | Method and system for remapping processing elements in a pipeline of a graphics processing unit |
JP4906734B2 (ja) * | 2004-11-15 | 2012-03-28 | エヌヴィディア コーポレイション | ビデオ処理 |
US8424012B1 (en) * | 2004-11-15 | 2013-04-16 | Nvidia Corporation | Context switching on a video processor having a scalar execution unit and a vector execution unit |
JP4408836B2 (ja) * | 2005-05-30 | 2010-02-03 | キヤノン株式会社 | 画像処理装置及びその制御方法、プログラム |
JP2007011872A (ja) * | 2005-07-01 | 2007-01-18 | Toshiba Corp | メモリカードとその制御方法 |
US9092170B1 (en) | 2005-10-18 | 2015-07-28 | Nvidia Corporation | Method and system for implementing fragment operation processing across a graphics bus interconnect |
FR2895102B1 (fr) * | 2005-12-19 | 2012-12-07 | Dxo Labs | Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede |
US8049760B2 (en) * | 2006-02-06 | 2011-11-01 | Via Technologies, Inc. | System and method for vector computations in arithmetic logic units (ALUs) |
US9135017B2 (en) * | 2007-01-16 | 2015-09-15 | Ati Technologies Ulc | Configurable shader ALU units |
US8683126B2 (en) * | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
US8411096B1 (en) | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US8659601B1 (en) | 2007-08-15 | 2014-02-25 | Nvidia Corporation | Program sequencer for generating indeterminant length shader programs for a graphics processor |
US9024957B1 (en) | 2007-08-15 | 2015-05-05 | Nvidia Corporation | Address independent shader program loading |
US8724483B2 (en) * | 2007-10-22 | 2014-05-13 | Nvidia Corporation | Loopback configuration for bi-directional interfaces |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8780123B2 (en) * | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8923385B2 (en) * | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8681861B2 (en) * | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8489851B2 (en) * | 2008-12-11 | 2013-07-16 | Nvidia Corporation | Processing of read requests in a memory controller using pre-fetch mechanism |
US9331869B2 (en) | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
JP5835942B2 (ja) * | 2010-06-25 | 2015-12-24 | キヤノン株式会社 | 画像処理装置、その制御方法及びプログラム |
WO2012052774A2 (en) * | 2010-10-21 | 2012-04-26 | Bluwireless Technology Limited | Data processing units |
CN102495719B (zh) * | 2011-12-15 | 2014-09-24 | 中国科学院自动化研究所 | 一种向量浮点运算装置及方法 |
US9037931B2 (en) | 2011-12-21 | 2015-05-19 | Advanced Micro Devices, Inc. | Methods and systems for logic device defect tolerant redundancy |
US9141885B2 (en) * | 2013-07-29 | 2015-09-22 | Adobe Systems Incorporated | Visual pattern recognition in an image |
US9268597B2 (en) | 2014-04-01 | 2016-02-23 | Google Inc. | Incremental parallel processing of data |
WO2020148874A1 (ja) * | 2019-01-17 | 2020-07-23 | 日本電気株式会社 | 照合装置、照合方法、及びコンピュータ読み取り可能な記録媒体 |
US11853237B2 (en) * | 2021-11-19 | 2023-12-26 | Micron Technology, Inc. | Input/output sequencer instruction set processing |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4541046A (en) * | 1981-03-25 | 1985-09-10 | Hitachi, Ltd. | Data processing system including scalar data processor and vector data processor |
JPS58134357A (ja) * | 1982-02-03 | 1983-08-10 | Hitachi Ltd | ベクトルプロセッサ |
US4722052A (en) * | 1984-04-02 | 1988-01-26 | Sperry Corporation | Multiple unit adapter |
US4890220A (en) * | 1984-12-12 | 1989-12-26 | Hitachi, Ltd. | Vector processing apparatus for incrementing indices of vector operands of different length according to arithmetic operation results |
US4875161A (en) * | 1985-07-31 | 1989-10-17 | Unisys Corporation | Scientific processor vector file organization |
JPS6353678A (ja) * | 1986-08-22 | 1988-03-07 | Hitachi Ltd | ベクトル処理装置 |
JPH0648486B2 (ja) * | 1986-10-08 | 1994-06-22 | 日本電気株式会社 | ベクトルデ−タ処理装置 |
US4837730A (en) * | 1987-02-06 | 1989-06-06 | Scientific Computer Systems Corporation | Linking scalar results directly to scalar operation inputs on a bidirectional databus in a computer which superpositions vector and scalar operations |
JPS63253468A (ja) * | 1987-04-10 | 1988-10-20 | Hitachi Ltd | ベクトル処理装置 |
JP2602240B2 (ja) * | 1987-08-28 | 1997-04-23 | 株式会社日立製作所 | マルチプロセツサシステム |
US5367654A (en) * | 1988-04-13 | 1994-11-22 | Hitachi Ltd. | Method and apparatus for controlling storage in computer system utilizing forecasted access requests and priority decision circuitry |
JP2584156B2 (ja) * | 1990-09-03 | 1997-02-19 | 松下電器産業株式会社 | プログラム制御型プロセッサ |
US5299320A (en) * | 1990-09-03 | 1994-03-29 | Matsushita Electric Industrial Co., Ltd. | Program control type vector processor for executing a vector pipeline operation for a series of vector data which is in accordance with a vector pipeline |
-
1994
- 1994-01-21 DE DE69421103T patent/DE69421103T2/de not_active Expired - Lifetime
- 1994-01-21 EP EP94100869A patent/EP0607988B1/de not_active Expired - Lifetime
- 1994-01-24 US US08/185,367 patent/US5517666A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0607988A1 (de) | 1994-07-27 |
US5517666A (en) | 1996-05-14 |
DE69421103D1 (de) | 1999-11-18 |
EP0607988B1 (de) | 1999-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69421103T2 (de) | Programmgesteuertes Prozessor | |
DE69033444T2 (de) | Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können | |
DE3804938C2 (de) | Bildverarbeitungseinrichtung | |
DE3783072T2 (de) | Zusatzprozessorarchitektur. | |
DE3248215C2 (de) | ||
DE3751720T2 (de) | Schaltung für die bildschirmwiedergabe von computern | |
DE3789116T2 (de) | Prozessor zur zweidimensionalen diskreten cosinustransformation. | |
DE3779718T2 (de) | Datendarstellung in aequivalenter zeit. | |
DE69332458T2 (de) | Vektorprozessor | |
DE3750017T2 (de) | Prozessor für orthogonale Transformation. | |
DE3879637T2 (de) | Pufferspeichergeraet und -verfahren, insbesondere fuer die matrixtransposition von datenfolgen. | |
DE69624866T2 (de) | Speicherschaltung für Texturmuster | |
DE69225839T2 (de) | Filtersystem und Verfahren zur Bildverarbeitung mit sehr hoher Geschwindigkeit | |
DE69125874T2 (de) | Generator für mehrdimensionale Adressen und Anordnung zum Steuern desselben | |
DE3855524T2 (de) | Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator | |
DE4010311C2 (de) | Datenprozessor | |
DE3783796T2 (de) | Erweiterte rasterbedienung in einem anzeigegeraet. | |
DE69830474T2 (de) | Verfahren und gerät zur fft-berechnung | |
DE69532152T2 (de) | System zur parallelen Datenverarbeitung für digitale Tongeräte | |
DE69521464T2 (de) | Paralleler Prozessor | |
DE2324063C3 (de) | Pufferspeichereinrichtung | |
DE3933253A1 (de) | Einrichtung und verfahren zur durchfuehrung von booleschen rasteroperationen an quellen- und zieldaten | |
DE3854039T2 (de) | Bildverarbeitungssystem. | |
DE69534890T2 (de) | Verfahren zum schnellen Ausmalen und Kopieren von Bildelementen kurzer Wortlänge in einem breiteren Rasterpufferspeicher | |
DE19528760A1 (de) | Bildverarbeitende Schaltung eines hohen Integrationsgrads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: PANASONIC CORP., KADOMA, OSAKA, JP |
|
8320 | Willingness to grant licences declared (paragraph 23) |