-
Diese Anmeldung beansprucht die Priorität der am 8. Juni 2021 eingereichten Anmeldung
US 17/361,240 .
-
Technisches Gebiet
-
Die Offenbarung betrifft allgemein elektronische Prozessoren und genauer Vorrichtungen für Array-Prozessoren mit verbesserten Eigenschaften, einer verbesserten Funktionalität und/oder verbesserten Merkmalen und zugehörige Verfahren.
-
Allgemeiner Stand der Technik
-
Die Fortschritte bei der Informationsverarbeitung haben zu erhöhten Ansprüchen an die Verarbeitungsleistung geführt. Beispiele umfassen schnellere und leistungsfähigere Prozessoren, schnellere Grafik- oder Videohardware und schnellere und größere Speicher.
-
Bei einigen Anwendungen ist eine Array-Verarbeitung gewünscht. Die Array-Verarbeitung wird in einer Vielzahl von Technologiebereichen verwendet. Beispielsweise kann dann, wenn eine Matrixmanipulation gewünscht ist, vorteilhaft ein Array-Prozessor benutzt werden.
-
Die Beschreibung in diesem Abschnitt und jedwede entsprechende(n) Figur(en) sind als Hintergrundinformationsmaterialien aufgenommen. Die Materialien in diesem Abschnitt sollten nicht als Zugeständnis, dass diese Materialien den Stand der Technik für die vorliegende Patentanmeldung bilden, angesehen werden.
-
Kurzdarstellung
-
Nach beispielhaften Ausführungsformen wird eine Vielfalt von Vorrichtungen und zugehörigen Verfahren ins Auge gefasst. Nach einer beispielhaften Ausführungsform weist eine Vorrichtung einen Array-Prozessor zur Verarbeitung von Array-Daten auf. Die Array-Daten sind in einem Speicher angeordnet. Die Array-Daten werden durch programmierbare Größen- und Schrittlängenwerte pro Dimension bestimmt.
-
Nach einer anderen beispielhaften Ausführungsform weist eine Vorrichtung einen Array-Prozessor zur Verarbeitung von Array-Daten auf. Der Array-Prozessor weist einen Anweisungssequenzierer und eine mit dem Anweisungssequenzierer gekoppelte Array-Steuerung auf.
-
Nach einer anderen beispielhaften Ausführungsform wird ein Verfahren zum Verarbeiten von Array-Daten, die in einem Speicher angeordnet sind, bereitgestellt. Das Verfahren umfasst das Verwenden eines Array-Prozessors, um die Array-Daten zu verarbeiten. Die Array-Daten werden durch programmierbare Größen- und Schrittlängenwerte pro Dimension bestimmt.
-
Figurenliste
-
Die beiliegenden Zeichnungen stellen lediglich beispielhafte Ausführungsformen dar und sollten daher nicht als Beschränkung des Umfangs der Anmeldung oder des beanspruchten Gegenstands betrachtet werden. Durchschnittsfachleute werden verstehen, dass sich die offenbarten Konzepte für andere gleichermaßen wirksame Ausführungsformen eignen. In den Zeichnungen bezeichnen gleiche numerische Bezugszeichen, die in mehr als einer Zeichnung verwendet werden, die gleiche, eine ähnliche oder eine gleichwertige Funktionalität oder gleiche, ähnliche oder gleichwertige Komponenten oder Blöcke.
- 1 zeigt eine Schaltungsanordnung für einen Array-Prozessor nach einer beispielhaften Ausführungsform.
- 2 zeigt eine Schaltungsanordnung für ein System, das einen Array-Prozessor aufweist, nach einer beispielhaften Ausführungsform.
- 3 zeigt eine Schaltungsanordnung für einen Array-Prozessor nach einer beispielhaften Ausführungsform.
- 4 zeigt eine atomare Aktionssequenz nach einer beispielhaften Ausführungsform.
- 5 zeigt ein Format für eine Makroanweisung nach einer beispielhaften Ausführungsform.
- 6 zeigt ein Beispiel für eine Matrixmultiplikation unter Verwendung eines Array-Prozessors nach einer beispielhaften Ausführungsform.
- 7 zeigt eine Schaltungsanordnung für einen Anweisungssequenzierer und zugehörige Schaltungsanordnungen nach einer beispielhaften Ausführungsform.
- 8 zeigt ein Zustandsdiagramm zur Steuerung eines Anweisungssequenzierers nach einer beispielhaften Ausführungsform.
- 9 zeigt eine Schaltungsanordnung für Programmzustands- und Schleifensteuerungen nach einer beispielhaften Ausführungsform.
- 10A bis 10G zeigen Beispiele für Schleifen, die unter Verwendung eines Array-Prozessors nach einer beispielhaften Ausführungsform verarbeitet werden.
- 11 zeigt eine Schaltungsanordnung für eine Schleifensteuerung nach einer beispielhaften Ausführungsform.
- 12 zeigt eine Schaltungsanordnung für eine Array-Steuerung und zugehörige Schaltungsanordnungen nach einer beispielhaften Ausführungsform.
- 13 zeigt eine Schaltungsanordnung für einen Adressrechner nach einer beispielhaften Ausführungsform.
- 14 zeigt eine Schaltungsanordnung für Array-Zustandsregister nach einer beispielhaften Ausführungsform.
- 15 zeigt Array-Konfigurationsfelder nach einer beispielhaften Ausführungsform.
- 16 zeigt ein Array-Speicherslicing nach einer beispielhaften Ausführungsform.
- 17A bis 17C zeigen Beispiele für eine Matrixmanipulation nach einer beispielhaften Ausführungsform.
- 18 zeigt ein Beispiel für Gleitfenster in einem Speicher nach einer beispielhaften Ausführungsform.
- 19 zeigt ein Beispiel für Paketfelder nach einer beispielhaften Ausführungsform.
- 20 zeigt ein Beispiel für die Paketreihenfolge in einem Speicher oder einer Vorrichtung nach einer beispielhaften Ausführungsform.
- 21 zeigt eine Schaltungsanordnung für eine IC, die einen oder mehrere Array-Prozessoren aufweist, nach einer beispielhaften Ausführungsform.
- 22 zeigt ein Blockdiagramm für ein System zur Informationsverarbeitung unter Verwendung eines oder mehrerer Array-Prozessoren nach einer beispielhaften Ausführungsform.
-
Ausführliche Beschreibung
-
Die offenbarten Konzepte betreffen allgemein Verarbeitungsvorrichtungen wie etwa Prozessoren zum Verarbeiten von Informationen. Genauer stellen die offenbarten Konzepte Vorrichtungen und Verfahren für Array-Prozessoren mit verbesserten Eigenschaften, einer verbesserten Funktionalität und/oder verbesserten Merkmalen bereit.
-
Array-Prozessoren nach verschiedenen Ausführungsformen verfügen über die Fähigkeit, Informationen in im Allgemeinen N-dimensionalen Anordnungen, wobei N eine Ganzzahl größer null ist (z.B. könnte N einen beliebigen der Werte 1, 2, 3, 4, 5, 6 usw. aufweisen), zu verarbeiten. Array-Prozessoren nach beispielhaften Ausführungsformen arbeiten an Arrays als Ströme, wobei jede einzelne oder mehrere Operationen an Elementen des Arrays (z.B. an jedem Element des Arrays) durchgeführt werden und auf verschiedene Weisen iteriert werden können.
-
Die Array-Prozessoren nach beispielhaften Ausführungsformen sind domänenspezifische Computer oder Prozessoren zur Durchführung vektorisierter oder nichtvektorisierter Operationen an mehrdimensionalen Array-Daten. Die Arten der Operationen, die an den Array-Daten durchgeführt werden, können verhältnismäßig komplex sein, z.B. Kombinationen von verschachtelten Schleifen, wobei jede Schleifenebene möglicherweise mehrere arithmetische Operationen und Array-Iterationsoperationen aufweist.
-
Bei beispielhaften Ausführungsformen sind die Array-Daten auf eine Weise, die unter Verwendung einer Array-Konfigurationsstruktur bestimmt werden kann, in einem Speicher gespeichert. Arrays werden durch ein Speicherzugriffsmuster, das aus einer Basisadresse und Schrittlängen und Größen pro Dimension besteht, bestimmt. Somit weisen Arrays bei beispielhaften Ausführungsformen programmierbare Schrittlängenwerte pro Dimension auf. Wie Durchschnittsfachleute verstehen, bezieht sich die Schrittlänge auf den Abstand zwischen einem gegebenen Array-Element und dem nächsten oder nachfolgenden Array-Element entlang einer bestimmten Dimension des Arrays. Der Schrittlängenwert ist pro Dimension fest, kann sich aber zwischen verschiedenen Dimensionen des Arrays unterscheiden, d.h., ist pro Dimension programmierbar.
-
Bei beispielhaften Ausführungsformen werden Arrays durch ein Speicherzugriffsmuster, das eine Basisadresse und Schrittlängen- und Größenwerte pro Dimension aufweist, bestimmt. Der Array-Prozessor durchläuft Speicherzugriffe unter Verwendung von Array-Konfigurationsinformationen auf eine feste Weise anstatt durch zufällige Zugriffslade-/-speicheranweisungen. Ein Konfigurationsschema wird verwendet, um unter Verwendung einer Kombination aus einer Adresse, einer Speicherart, einer Anzahl von Elementen pro Dimension, einer Schrittlänge pro Dimension usw. jede beliebige Anzahl von Arrays (abhängig von der verfügbaren Speicherkapazität) zu bestimmen. Ein Programm für derartige Array-Prozessoren enthält Anweisungen, wobei die Anweisungen veranlassen können, dass eines oder mehrere aus Schleifensteuerungen, Array-Iterationen oder Operationen einer arithmetischen Logikeinheit (arithmetic logic unit, ALU) durchgeführt werden.
-
Anders als eine Allzweck-CPU weisen Array-Prozessoren nach beispielhaften Ausführungsformen eine benutzerdefinierte Anweisungssatzarchitektur (instruction set architecture, ISA) auf, die aus Makroanweisungen besteht. Eine Makroanweisung definiert, wie der Array-Prozessor über mehrere Arrays und eine oder mehrere Berechnungen pro Eintrag iterieren/laufen soll.
-
Bei beispielhaften Ausführungsformen weist der Array-Prozessor keine bedingten Anweisungen auf. Somit ist das Speicherzugriffsmuster für ein gegebenes Programm vordefiniert und sind die einzigen Variablen die Werte der Array-Elemente selbst. Der Array-Prozessor unterscheidet sich von allgemeinen Vektor-Prozessoren, da er keine Allzweck-Zentraleinheit (central processing unit, CPU) ist, sondern eine neuartige Architektur, ISA und Umsetzung aufweist.
-
Bei beispielhaften Ausführungsformen unterscheidet sich der Array-Prozessor von Tensor Processing Units (TPUs), die sehr domänenspezifische Architekturen sind, welche auf das Berechnen spezifischer Matrixoperationen zugeschnitten sind. Die Array-Prozessoren nach verschiedenen Ausführungsformen weisen eine ISA auf, die ein Iterieren über beliebige Speichersegmente ermöglicht, sofern der Speicher als Arrays definiert werden kann.
-
Dazu verwenden die Array-Prozessoren einen programmierbaren Satz von Makroanweisungen, die ein Programm umfassen, wobei jede Makroanweisung jede beliebige Anzahl von Schleifen, Array-Iterationen und ALU-Operationen, als eine atomare Aktionssequenz (AAS) bezeichnet, ausführen kann. Bei beispielhaften Ausführungsformen werden die Makroanweisungen auf Basis des Speicherzugriffsmusters, der Schleifenbildung und von Indexiermechanismen auf eine benutzerdefinierte Pipeline zugeschnitten.
-
Array-Prozessoren nach beispielhaften Ausführungsformen weisen wenigstens die folgenden Attribute auf: (1) eine flexible Speicherart (eine implizite Umwandlung beim Lesen/Schreiben von dem Speicher in die arithmetische Art der ALU); (2) einen neuartigen Makroanweisungsprogrammiermechanismus, der vollständige Aktionssequenzen beschreibt (was eine Schleifenbildung und eine Array-Iteration mit einem Overhead von Null impliziert); (3) einen parallelen Ein - und Ausgangs-Bus, der einen Durchsatz von einer ALU-Operation pro Zyklus ermöglicht; (4) eine flexible N-dimensionale Array-Konfiguration, die direkte Ansichten wie etwa ein Transponieren, eine Unterblockbildung, eine umgekehrte Iteration usw. ermöglicht (Datenbewegungszeit einspart, da die Array-Speicherung im Speicher nicht neuangeordnet wird, und Zwischenspeicher-Overhead, der mit dem Kopieren und Herumbewegen des Speichers verbunden ist, einspart); und (5) ALU-Eingangstransformationen (die eine direkte Verneinung, Konjugation und Trennung in real/imaginär gestattet). Die obigen Attribute werden nachstehend ausführlich beschrieben.
-
Im Allgemeinen können Array-Prozessoren nach beispielhaften Ausführungsformen so angesehen werden, dass sie zwei Haupt-Unterblöcke aufweisen, einen für das Sequenzieren und die Steuerung und einen für das Datenrouting und das Berechnen. Zu diesem Zweck weisen die Array-Prozessoren bei beispielhaften Ausführungsformen jeweils einen Anweisungssequenzierer und eine Array-Steuerung auf.
-
1 zeigt eine Schaltungsanordnung für einen Array-Prozessor 1 nach einer beispielhaften Ausführungsform. Der Array-Prozessor 1 weist einen Anweisungssequenzierer 5 und eine Array-Steuerung 10 auf, wie nachstehend ausführlich beschrieben wird.
-
Obwohl der Array-Prozessor 1 in 1 als der Hauptprozessor verwendet werden kann, können in einigen Fällen komplexere Anordnungen verwendet werden. Wie Durchschnittsfachleute verstehen werden, kann der Array-Prozessor 1 zum Beispiel nach Wunsch als Teil eines Systems, das zusätzliche Verarbeitungsschaltungsanordnungen oder Steuerungen aufweisen kann, verwendet werden, wie Durchschnittsfachleute verstehen werden.
-
2 zeigt eine Schaltungsanordnung für ein System, das einen Array-Prozessor 1 aufweist, nach einer beispielhaften Ausführungsform. Der Array-Prozessor 1 ist mit einem Host oder einer CPU 565 gekoppelt und kann dem Host/der CPU 565 nach Wunsch ein Interrupt-Signal (um Ereignisse oder Situationen wie etwa den Abschluss einer Aufgabe, einen Fehlerzustand usw. zu bezeichnen) bereitstellen. Der Host/die CPU 565 ist mit einem Systembus (oder allgemein einer Verbindung) 560 gekoppelt, wodurch er/sie mit einem Systemspeicher 625 und dem Array-Prozessor 1 kommunizieren kann.
-
Der Array-Prozessor 1 ist über einen oder mehrere Datenbusse (als „Datenbus 0“, „Datenbus 1“ und „Datenbus 2“ bezeichnet) mit dem Systembus 560 gekoppelt, um Daten über den Systembus 560 zu/von anderen Blöcken in dem System zu übermitteln oder übertragen. Der Array-Prozessor 1 ist auch über einen Steuerbus (als „Steuerbus“ bezeichnet) mit dem Systembus 560 gekoppelt, über den er Steuerinformationen wie etwa durchzuführende Aufgaben usw. erhalten kann.
-
Schließlich ist der Array-Prozessor 1 mit einer Leistungssteuerung 580 gekoppelt. Der Array-Prozessor 1 erhält von der Leistungssteuerung ein oder mehrere Leistungssteuersignale. Als Reaktion auf die Leistungssteuersignale kann der Array-Prozessor nach Wunsch in einen Energiesparmodus (oder Schlaf- oder Bereitschafts- oder Ruhemodus) oder einen normalen Moduls (Vollleistungs-, Verarbeitungsmodus) gehen, wie Durchschnittsfachleute verstehen werden.
-
3 zeigt eine Schaltungsanordnung für einen Array-Prozessor 1 nach einer beispielhaften Ausführungsform. Genauer zeigt 3 weitere Einzelheiten des in 2 gezeigten Array-Prozessors 1 (der wie oben erwähnt in einem System verwendet werden kann oder auch nicht).
-
Unter erneuter Bezugnahme auf 3 weist der Array-Prozessor 1 bei der gezeigten Ausführungsform eine Datenpipeline (oder Datenpipelineschaltungsanordnung) 15 und eine Steuerschaltungsanordnung 20 auf. Die Datenpipeline 15 entspricht dem oben genannten Unterblock für das Datenrouting und das Berechnen des Array-Prozessors 1. Die Steuerschaltungsanordnung 20 entspricht dem oben genannten Unterblock für das Sequenzieren und die Steuerung des Array-Prozessors 1.
-
Die Datenpipeline 15 weist eine Lade-/Speichereinheit 35 auf, die über die oben beschriebenen Datenbusse Daten erhalten kann oder einer Schaltung oder einem Block außerhalb des Array-Prozessors 1 Daten bereitstellen kann. Die Lade-/Speichereinheit 35 ist mit ALU-Registern 30 gekoppelt, die verwendet werden, um ALU-Operationen zu vereinfachen. Genauer stellen die ALU-Register der ALU 22 Operanden (mit x, y und a bezeichnet) bereit. Die ALU 22 führt gewünschte Operationen durch und stellt den ALU-Registern 30 das Ergebnis (mit z bezeichnet) bereit. Die ALU-Register 30 stellen das Ergebnis nach Wunsch der Lade-/Speichereinheit 35 bereit. Eine Pipeline-Steuerschaltung 25 steuert den Betrieb der verschiedenen Blöcke und Schaltungsanordnungen in der Datenpipeline 15 wie etwa das Erhalten von Daten, das Durchführen gewünschter Operationen und das Bereitstellen der Ergebnisse der Operationen.
-
Die Steuerschaltungsanordnung 20 weist einen Anweisungssequenzierer 5, eine Array-Steuerung 10 und Steuerregister 45 auf. Der Anweisungssequenzierer 5 weist eine oder mehrere Schleifensteuerungen 40 (nachstehend ausführlich beschrieben) auf.
-
Die Steuerregister 45 erhalten Steuersignale oder Daten von einem Steuerbus. Wie Durchschnittsfachleute verstehen werden, können die Steuerregister nach Wunsch dem Steuerbus auch Statusinformationen bereitstellen. Die Daten in den Steuerregistern werden verwendet, um den Betrieb des Anweisungssequenzierers 5 und der Array-Steuerung 10 und, genauer, des Array-Prozessors 1 zu steuern.
-
Der Anweisungssequenzierer 5 führt eine hochrangige Programmausführungssteuerung und Anweisungsablaufsteuerung durch. Die hochrangige Programmausführungssteuerung umfasst das Beginnen/Fortsetzen des Programms, die Detektion des Programmabschlusses (z.B. über das Geltendmachen einer Interrupt-Markierung) und den Fehlerbericht/die Handhabung/den Abbruch des Programms.
-
Die Anweisungsablaufsteuerung umfasst die Programmzählerverwaltung (PZ-Verwaltung), die Anweisungsdecodierung, die Anweisungsmultiplexierung und die Schleifenverwaltung. Die Array-Steuerung 1 führt eine Array-Zustands-Verwaltung und eine Array-Index-Erhöhung durch. Einzelheiten zu verschiedenen Blöcken des Array-Prozessors wie etwa dem Anweisungssequenzierer 5 und der Array-Steuerung 10 werden nachstehend näher beschrieben.
-
Ein Aspekt der Offenbarung betrifft Makroanweisungen, wie oben erwähnt wurde. Wie ebenfalls oben erwähnt wurde, verwenden Array-Prozessoren nach beispielhaften Ausführungsformen anders als eine Allzweck-CPU keine bedingten Anweisungen. Somit weisen Array-Prozessoren nach beispielhaften Ausführungsformen anders als eine Allzweck-CPU eine benutzerdefinierte ISA auf, die ein neuartiges Makroanweisungsparadigma benutzt.
-
Anstatt von Allzweckanweisungen werden vielmehr Makroanweisungen verwendet. Die Makroanweisungen sind zusammengesetzte Anweisungen, wobei jede Makroanweisung eine beliebige Anzahl von Schleifenoperationen, Array-Iterationen und ALU-Operationen (gesammelt wie oben erwähnt als atomare Aktionssequenz (ASS) bezeichnet) durchführen kann. 4 zeigt die ASS für einen Array-Prozessor nach einer beispielhaften Ausführungsform.
-
Die Aktionen in 4 sind als eine Sequenz von Schritten in jener Reihenfolge, in der die Software ihre Ausführung veranlassen würde, geschrieben. Es ist zu beachten, dass Array-Prozessoren nach beispielhaften Ausführungsformen in der Lage sind, pro Taktzyklus eine ganze Sequenz abzuschließen, sofern keine Datenverzögerung aufgrund von Speicherzugriffskonflikten vorliegt. Es ist ferner zu beachten, dass Makroanweisungen nicht nur das, was 4 zeigt, sondern nach Wunsch auch andere Aufgaben wie etwa eine Array-Konfigurationen erfüllen können, wie Durchschnittsfachleute verstehen werden.
-
Wie oben erwähnt wurde, weisen Array-Prozessoren nach beispielhaften Ausführungsformen keine bedingten Anweisungen auf. Somit ist das Speicherzugriffsmuster für ein gegebenes Programm vorherbestimmt und stellen die Variablen die Werte der Array-Elemente selbst dar. Diese Vorhersagbarkeit von Zugriffsmustern und der Anweisungsausführung gestattet den Array-Prozessoren, zu einer beliebigen gewünschten Ebene geleitet zu werden (z.B. durch Verwenden der oben beschriebenen Datenpipeline 15), und kann sogar eine Datenbewegung mit Null-Latenz erzielen (durch Leiten der Aktionsschritte in der AAS auf eine solche Weise, dass sich für die gesamte Aktionssequenz ein Einzelzyklus-Durchsatz ergibt), was herkömmlich im Allgemeinen bei Rechenhardware mit festgelegter Funktion, nicht bei programmierbaren Prozessoren der Fall war.
-
5 zeigt ein Formt für eine Makroanweisung 50 nach einer beispielhaften Ausführungsform. Die Makroanweisung 50 weist verschiedene Felder auf, die als Ein-/Ausgangssteuerungen (E/A-Steuerungen) 50A, Schleifensteuerungen 50B, ALU-Steuerungen 50C und Operationscode (Opcode) 50D, der den in die Makroanweisung 50 eingebetteten Basisanweisungscode enthält, gezeigt sind. Die Felder 50A bis 50D entsprechen einem Satz von Bits, die die Makroanweisung 50 bilden.
-
Die Felder 50A bis 50D in der Makroanweisung 50 werden verwendet, um die Hardware des Array-Prozessors zu steuern. Somit bezeichnen bei dem gezeigten Beispiel die Bits in dem Feld 50A die E/A-Steuerungen, die durch die Makroanweisung 50 durchgeführt werden, bestimmen die Bits in dem Feld 50B die Bits, die die Schleifensteuertätigkeiten regeln, entsprechen die Bits in dem Feld 50C den ALU-Steuerungen und bestimmen die Bits in dem Feld 50D den Basis-Opcode für die Makroanweisung 50. In Array-Prozessoren nach beispielhaften Ausführungsformen ist der Anweisungssequenzierer 5 für das Decodieren von Makroanweisungen wie etwa der Makroanweisung 50 in 5, das Handhaben der Schleifeniterationen und Programmzählerberechnungen (PZ-Berechnungen) wie auch für das Senden von Befehlen in die Datenpipeline 50 für den Speicherzugriff und zugehörige Berechnungen verantwortlich.
-
Wie oben beschrieben wurde, ist die Makroanweisungsarchitektur in Array-Prozessoren nach beispielhaften Ausführungsformen eine neuartige ISA. Sie besteht aus zusammengesetzten Anweisungen anstatt aus Einzeloperationsanweisungen, wie das bei einem typischen herkömmlichen Prozessor der Fall ist. Dieses Attribut verringert den Bedarf an bedingten Konstrukten, wodurch eine völlig vorhersagbare Ausführungspipeline und ein völlig vorhersagbares Speicherzugriffsmuster bereitgestellt werden, was wiederum eine Datenbewegung mit Null-Latenz ermöglicht. Diese Datenbewegung mit Null-Latenz war im Allgemeinen bei Rechenhardware mit festgelegter Funktion, nicht bei programmierbaren Prozessoren möglich.
-
Als nur ein Beispiel zeigt
6 eine Matrixmultiplikationsoperation durch einen Array-Prozessor nach einer beispielhaften Ausführungsform. Unter Annahme einer mxn-Matrix a und einer nxp-Matrix b ergibt das Multiplizieren der Matrix a mit der Matrix b unter Verwendung der folgenden mathematischen Operation eine mxp-Matrix c.
für i = 1, ..., m und j = 1, ..., p
-
Bei dem Beispiel, das in 6 gezeigt ist, ist die Multiplikation einer 4×3-Matrix A mit einer 3×5-Matrix B, was eine 4×5-Matrix C ergibt, d.h., die mathematische Operation C = A × B, dargestellt. Die Kästchen in 6 zeigen die Daten in dem Speicher, die der oben beschriebenen Matrixmultiplikationsoperation entsprechen. In dem größeren Kästchen in 6 sind drei Kästchen enthalten, die die Daten in dem Speicher (wie etwa dem Systemspeicher 625 in 2), die jeweils den Matrizen A, B und C entsprechen, darstellen.
-
Wie oben erwähnt wurde, betrifft ein Aspekt der Offenbarung den Anweisungssequenzierer 5 und die Rolle, die er in den Array-Prozessoren 1 nach beispielhaften Ausführungsformen spielt. Eine Funktion des Anweisungssequenzierers 5 besteht darin, die durch den Benutzer definierte Sequenz herzunehmen und die Sequenz in einzelne Tätigkeiten aufzubrechen, die mit jedem Taktzyklus durch die Verarbeitungspipeline geführt werden sollen. Die ISA verwendet wie erwähnt eine verhältnismäßig hoch parametrisierte, aber dennoch feste Technik (keine bedingten Anweisungen oder Zweige). Der Anweisungssequenzierer nimmt eine verhältnismäßig kleine Anzahl von Anweisungen und erzeugt eine große Anzahl wie etwa hunderte, tausende und sogar Millionen von Befehlen. Diese Befehle werden zu der Pipelinesteuerung weitergegeben, pro Betriebszyklus des Array-Prozessors einer.
-
7 zeigt eine Schaltungsanordnung für einen Anweisungssequenzierer 5 und zugehörige Schaltungsanordnungen nach einer beispielhaften Ausführungsform. Bei dem gezeigten Beispiel weist der Anweisungssequenzierer 5 eine endliche Zustandsmaschine (finite state machine, FSM) (oder eine Sequenzierer-FSM) 5A, Schleifensteuerungen 40, eine Programmzustandslogik oder -schaltung 5D, die den PZ (Programmzähler) verwaltet, eine Anweisungsausgabeschaltung 5B und eine Steuerfunktionalität, um den Strom der Anweisungen in die Datenpipeline unter Verwendung einer Pipelinesteuerschaltung 75 zu orchestrieren, auf.
-
Die FSM 5A steuert die Initialisierung und den Betriebs-/Anhaltezustand des Anweisungssequenzierers 5. Am Beginn eines Programms werden die Schleifenzähler entweder initialisiert oder erneut mit Werten von einem zuvor angehaltenen Programm geladen. Der Zustand des Anweisungssequenzierers 5 geht dann zu einem aktiven Zustand über, in dem Anweisungen in die oben beschriebene Datenpipeline ausgegeben werden. Der Anweisungssequenzierer 5 wird seinen Betrieb fortsetzen, bis das Programm endet, der Benutzer den Sequenzierer anhält oder bei der FSM 5A, die die richtige Behandlung der Beendigung oder des Abschlusses ausstehender Tätigkeiten koordiniert, ein Fehler auftritt, bevor er in den Ruhezustand zurückkehrt, wie nachstehend in Bezug auf 8 beschrieben wird.
-
Jede Schleife, die in der Architektur definiert ist, weist eine fest zugeordnete Schleifensteuerung 10 auf, die die Zählung für diese Schleife unterhält und das Vorrücken und Zurücksetzen der Schleife zu der passenden Zeit wie auch das Ausgeben von Array-Erhöhungsoperationen an dem Ende der Schleife (wenn der Zähler überschlägt) bewerkstelligt. Jede Schleifensteuerung 10 ist völlig unabhängig, doch bei beispielhaften Ausführungsformen sind die Schleifensteuerungen kaskadiert, so dass eine Schleife bei ihrem Abschluss die nächste aktive äußere Schleife (über die nächste aktive Schleifensteuerung) von dem Überschlagszustand benachrichtigt, um die äußere Schleife hochzuzählen. Inaktive Schleifen (Schleifen, die nicht an der aktuellen Anweisung beteiligt sind), geben die Erhöhungsanforderung an die angrenzende Schleifensteuerung weiter, bis eine aktive Schleife die Benachrichtigung in Anspruch nimmt.
-
Als Reaktion auf ein Vorrücksignal von der FSM 5A steuert die Programmzustandssteuerung 5D den PZ (Programmzähler) so, dass er die aktuelle Anweisung angibt, und überwacht die aktuell aktiven Schleifen und ihre Zustände, um zu bestimmen, wann der Programmzähler vorrücken soll (bei gleichzeitigem Überschlagen aller aktiven Schleifen) oder nach Abschluss innerer Schleifen zu einer vorherigen Anweisung zurückspringen soll. Die Programmzustandssteuerung 5D steuert auch enge Schleifen, bei denen es sich im Gegensatz zu nicht engen Schleifen, die bei unterschiedlichen Anweisungen beginnen und enden und mit sich bringen, dass der PZ zurückspringt, um die Schleife wieder aufzunehmen, um Schleifen handelt, die bei einer einzelnen Anweisung sowohl beginnen als auch enden.
-
Die Anweisungsausgabeschaltung 5B verwaltet das Zusammenfügen der Adresse, der Steuerungen und der Opcodes, die zur Ausführung von numerischen Operationen zu der Datenpipeline 15 (nicht gezeigt) gesendet werden sollen, und stellt diese Information der Datenpipeliniesteuerschaltung 75 bereit. Diese Information wird durch die Datenpipelinesteuerschaltung 75 zu der Datenpipeline 15 gesendet, wo Daten aus dem Systemspeicher oder lokalen Registern geholt werden, durch die aktuelle Anweisung einer Tätigkeit unterzogen werden und jeweils in Register oder den Systemspeicher zurück geschrieben werden. Durch die Array-Steuerung 10 werden auf Basis des Array-Zustands aktuelle Array-Adressenzeiger bereitgestellt, die durch Erhöhungen, welche von den Schleifensteuerungen 40 oder der Anweisungsausgabeschaltung 5B stammen, aktualisiert werden können.
-
Die Anweisungsausgabeschaltung 5B ist für das Decodieren der (als Reaktion auf den Wert des PZ durch den Anweisungsmultiplexierer (MUX) 5C bereitgestellten) aktuellen Anweisung und das Zusammensetzen aller zugehörigen Adressen- und Steuersignale, die für die Ausgabe einer Operation (unter Verwendung der Datenpipelinesteuerschaltung 75) in die Datenpipeline 15 erforderlich sind, unter Verwendung der folgenden Tätigkeiten, (a) einer Anweisungsablaufsteuerung, die die aktuelle Anweisung auf Basis des PZ multiplexiert; (b) einer Datenpipelinesteuerung (Speicherlade-/-speichersteuerungen und ALU-Berechnungssteuerungen); und (c) einer Array-Steuerung (Array-Teil-Wahlsteuerungen und Array-Index-Erhöhung für die Lade-/Speichereinheit(en)), verantwortlich.
-
Bei beispielhaften Ausführungsformen ist der Anweisungssequenzierer 45 mit den Steuerregistern 45 gekoppelt. Die Steuerregister 45 stellen der Schaltungsanordnung in dem Anweisungssequenzierer 5 verschiedene Daten und/oder Steuersignale bereit, wie 7 zeigt. Die Steuerregister 45 erhalten von der Schaltungsanordnung in dem Anweisungssequenzierer 5 Daten und/oder Zustandssignale, z.B. Zustandssignale von der FSM 5A.
-
Die FSM 5A verwaltet den allgemeinen Zustand des aktuellen Programmes, verwaltet die Programminitialisierung und koordiniert den Abschluss von Befehlen am Ende des Programms oder bei einem Fehlerzustand. 8 zeigt das Zustandsdiagramm für die FSM 5A.
-
Der Zustand RUHE ist der Zustand beim Zurücksetzen oder nach dem Abschluss eines Programms. Wenn nach dem Abschluss der Ausführung eines Programms zu dem RUHE-Zustand zurückgekehrt wird, wird beim Übergang zu diesem Zustand das Zustandsbit ERLEDIGT geltend gemacht. In dem INIT-Zustand setzt der Anweisungssequenzierer 5 den PZ auf null zurück und leert alle Schleifensteuerungen 40, damit sie ihren Anfangszustand einnehmen.
-
Die Zustandsmaschine gelangt in den Zustand RUHE, wenn die Software des Benutzers RUHE in das Befehlsregister in den Steuerregistern 45 schreibt. Wenn sie sich in dem Zustand AUSFÜHRUNG befindet, hat die FSM 5A ein Programm geladen und führt sie aktiv Anweisungen aus. Die FSM 5A gelangt in den Zustand AUSFÜHRUNG, wenn die Software des Benutzers START in das Befehlsregister in den Steuerregistern 45 schreibt.
-
Während die FSM 5A eine Ausführung vornimmt (im Zustand AUSFÜHRUNG), kann sie in den Zustand ANGEHALTEN gelangen, wenn die Software des Benutzers ANHALTEN in das Befehlsregister in den Steuerregistern 45 schreibt. Die FSM 5A wird in dem Zustand ANGEHALTEN bleiben, bis die Software des Benutzers Tätigkeiten durch START erneut beginnt oder den Betrieb durch Beschreiben des Bitfelds INIT beendet. Nach einer erfolgreichen Programmausführung kehrt die FSM 5A in den Zustand RUHE zurück.
-
Der Anweisungssequenzierer 5 gelangt in den Zustand FEHLER, wenn ein ungültiger oder ein Fehlerzustand, der die Programmausführung beendet, auftritt. Beispiele für ungültige Zustände wären ungültige Schleifensteuerkonstrukte, Busfehler bei Lade-/Speichertätigkeiten oder ALU-Defekte oder -Fehler. Jegliche passende Bereinigung (das Festlegen verschiedener Felder oder Bits, ein Zustandsbericht usw.) findet in diesem Zustand statt, bevor zu dem Zustand RUHE zurückgekehrt wird, woraufhin das Zustandsbit FEHLER geltend gemacht werden wird.
-
Unter erneuter Bezugnahme auf 7 sind die Programmzustandsschaltung 5D und die Schleifensteuerungen 40 für das richtige Vorrücken des PZ (des Programmzählers) und der Schleifenzähler auf Basis der Schleifenkonstrukte in der Anweisungssequenz verantwortlich. Anders als ein herkömmlicher Prozessor verwenden Array-Prozessoren nach beispielhaften Ausführungsformen keine ausdrücklich codierten Zweigoperationen, sondern kann statt dessen jede Anweisung null oder mehr gesetzte Schleifenanfangs- und/oder -endmarkierungen aufweisen.
-
9 zeigt, wie die Programmzustandsschaltung 5D mit den Schleifensteuerungen 40 gekoppelt ist. Genauer besteht die Rolle der Programmzustandsschaltung 5D darin, (a) anzuweisen, welche Schleifenzähler bei jedem beliebigen gegebenen Zyklus hochgezählt werden sollen; (b) auf Basis aktueller Schleifenzählerzustände zu bestimmen, ob der PZ gleich bleiben soll, vorrücken (sich vorwärts bewegen) soll oder zurückspringen soll; und (c) Fehler bei den Schleifenbildungssteuerungen zu detektieren und das Programm in solchen Fällen zu beenden.
-
Die Programmzustandsschaltung 5D gibt die Signale „Initialisieren“ und „Leeren“ an jede Schleife aus, um anzugeben, ob die Schleife initialisiert (am Beginn eines Programms) oder geleert (am Beginn einer neuen Schleife) werden soll. Das Signal „Vorrücken“ ist ein Kennzeichner, um die Steuerungen zu benachrichtigen, wenn diese ihren Zustand vorrücken müssen (anstatt ihren gegenwärtigen Zustand zu bewahren, wenn die Pipeline angehalten ist und keine Anweisung ausgegeben werden kann). Das Signal „nächster_pz“ gibt den Wert des Programmzählers (PZ) bei dem nächsten Taktzyklus an. Es wird durch die Schleifensteuerungen 40 verwendet, um den PZ, bei dem eine Schleife beginnt, aufzuzeichnen, damit der Sequenzierer dann, wenn die Schleife abgeschlossen ist, zu dem passenden PZ zurückspringen kann.
-
Der PZ wird in dem MUX, der den Anweisungsstrom (als „Anweisung[]“ bezeichnet) erhält, als Wahlsignal verwendet, um zu bestimmen, welche Anweisung ausgeführt wird, und um den Schleifensteuerungen 40 die Anfangs- und die Endmarkierung von der Makroanweisung bereitzustellen. Die Logikschaltungsanordnung des Anweisungssequenzierers 5 erstellt auch Hilfssteuerungen „beginne_nächste“, was angibt, dass bei dem folgenden Taktzyklus eine neue Schleife beginnt, und „innerste_Schleife“, was die innerste Schleife bestimmt, die angesichts der gegenwärtigen Programm- und Schleifenzustände vorangetrieben werden soll. Die Schleifensteuerungen 40 stellen jeweils ein Beendigungssignal bereit, das dem Anweisungssequenzierer 5 anzeigt, dass die aktuelle Schleife abgeschlossen wurde. Die Beendigungssignale von allen Schleifensteuerungen 40 werden durch den Anweisungssequenzierer 5 verwendet, um zu bestimmen, ob alle Schleifen erfüllt wurden, oder ob äußere Schleifen noch abzuschließen sind. Wie oben besprochen wurde, stellt jede der Schleifensteuerungen 40 der darauffolgenden Schleifensteuerung 40 (mit Ausnahme der letzten Schleifensteuerung 40, da diese keine darauffolgende Schleifensteuerung aufweist) ein Überschlagssignal bereit.
-
Die Schleifenbildungsarchitektur von Array-Prozessoren nach beispielhaften Ausführungsformen gestattet mehrere Arten von Schleifenbildungszuständen. 10A bis 10G zeigen mehrere Beispiele für Schleifenbildungszustände. Bei den Beispielen von 10A bis 10G zeigen die Tabellen die relevanten Anweisungen und das Vorhandensein von Schleifenbeginn- (B) oder - endmarkierungen (E), die den einzelnen Schleifensteuerungen 40 entsprechen. N bezieht sich auf den Schleifenzählwert für den innersten (untersten) Schleifenzähler, während M der nächsthöhere Schleifenzähler ist, L den nächsten Schleifenzähler bezeichnet, usw.
-
10A zeigt eine Situation mit einer engen Einzelanweisungsschleife in einer einzelnen Schleife. Wenn eine Anweisung angibt, dass für eine Schleife sowohl eine Anfangs-(B) als auch eine Endmarkierung (E) gesetzt ist, wird die einzelne Schleifensteuerung (SCHLEIFE1) die Anweisung N Mal wiederholen, bevor der PZ vorrückt. An dem Ende der N Iterationen wird die Schleifensteuerung der Array-Steuerung melden, dass mit dieser Schleife verbundene Arrays hochzuzählen sind, und wird der Anweisungssequenzierer zu der nächsten Anweisung vorrücken.
-
10B zeigt ein Szenario mit einer engen Einzelanweisungsschleife mit mehreren Schleifen. Wenn eine Anweisung angibt, dass für zwei oder mehr Schleifen sowohl eine Anfangs- (B) als auch eine Endmarkierung (E) gesetzt ist, werden sich die Schleifen verbinden, um M×N Iterationen der gleichen Anweisung auszuführen. Am Ende der N Schleifeniterationen wird die innerste Schleife (SCHLEIFE4) überschlagen und der Array-Steuerung melden, dass mit dieser Schleife verbundene Arrays hochzuzählen sind. Sie wird auch der SCHLEIFE2 melden, dass es zu einem Überschlagen gekommen ist, und SCHLEIFE2 wird eine Erhöhung um eins vornehmen. Wenn SCHLEIFE2 ihren Endzählwert (M) erreicht, geben beide Schleifen Array-Erhöhungs-Meldungen aus und rückt die Programmzustandsschaltung 5D zu der nächsten Anweisung vor. Es ist zu beachten, dass es möglich ist, alle Schleifensteuerungen so zu programmieren, das sie sich sofort in einem engen Schleifenzustand befinden.
-
10C zeigt einen Zustand mit mehreren Anweisungen innerhalb einer einzelnen Schleife. Eine einzelne Schleife kann über mehrere Anweisungen iterieren, wenn sich die Anfangsmarkierung in einer Anweisung befindet und die Endmarkierung in einer anderen Anweisung befindet. In diesem Fall werden ANWEIS1 und ANWEIS2 (in dieser Reihenfolge) N mal wiederholt werden, bis die Schleife abgeschlossen ist.
-
In manchen Fällen sind mehrere Anweisungen innerhalb mehrerer Schleifen vorhanden. Mehrere Anweisungen können innerhalb mehrerer Schleifen nach Wunsch in einer verhältnismäßig großen Anzahl von Konfigurationen ausgeführt werden, wie Durchschnittsfachleute verstehen werden. 10D bis 10G zeigen zur Veranschaulichung, aber nicht als Beschränkung, einige Beispiele.
-
10D entspricht einem N×M-maligen Widerholen von ANWEIS0+ANWEIS1. 10E zeigt die Situation für ein M-maliges Wiederholen von (ANWEIS0+ANWEI1×N). 10F betrifft ein M-maliges Wiederholen von ((ANWEIS0×N)+ANWEIS1) . 10G zeigt die Situation für ein L-maliges Wiederholen von (ANWEIS0+ANWEIS1xN+ANWEIS2xM). SCHLEIFE4 wiederholt ANWEIS1 N mal, SCHLEIFE2 wiederholt ANWEIS2 M-mal, und SCHLEIFE0 wiederholt die gesamte Sequenz L-mal.
-
Wie erwähnt wurde, sind die Beispiele in 10A bis 10G lediglich erläuternd. Durch Verwenden von Array-Prozessoren nach beispielhaften Ausführungsformen sind verhältnismäßig komplexe Schleifenbildungsszenarien möglich, wenn mehrere Schleifen aktiviert werden, die mehrere Anweisungen überspannen. Array-Prozessoren nach beispielhaften Ausführungsformen können alle möglichen (gültigen) Kombinationen behandeln und eine Iteration über komplexe Array-Strukturen mit einer Vielfalt von Tätigkeiten ermöglichen.
-
11 zeigt eine Schaltungsanordnung für eine Schleifensteuerung 40 nach einer beispielhaften Ausführungsform. Wie oben erwähnt wurde, weisen Array-Prozessoren 1 bei beispielhaften Ausführungsformen wenigstens eine Schleifensteuerung und, je nach der Art der gewünschten Verarbeitung, häufig mehr als eine Schleifensteuerung 40 auf.
-
Unter Bezugnahme auf 11 weist die Schleifensteuerung 40 eine Steuerlogik (oder Steuerschaltungsanordnung oder -schaltung) 40A, einen Zähler 40B und Register „Aktiv“ (mit 40C beschriftet) und „PZBEGINN“ (mit 40D beschriftet) auf. Die Schleifensteuerung 40 erhält (wie durch die Signale, der der Steuerschaltungsanordnung 40A bereitgestellt werden, gezeigt) mehrere Signale oder Markierungen, die der aktuellen Anweisung entsprechen, einschließlich der Markierungen „Beginn“/„Ende“, des Signals „innerste_Schleife“ (durch die Programmzustandsschaltung 5D erzeugt), das die innerste aktive Schleife zu jedem beliebigen gegebenen Zeitpunkt identifiziert, und „Beginn_nächste“, das der Schleifensteuerung 40 anzeigt, dass die Schleife in dem nächsten Taktzyklus aktiviert werden wird. Die Schleifensteuerungen 40 behalten auch die Anweisung, als die Steuerung aktiviert wurde, im Auge, indem der PZ, der der Programmzustandsschaltung 5D den nächsten PZ bereitstellt, wenn eine Schleife zurückspringen soll, um ihre nächste Tätigkeit fortzusetzen, in dem Register 40D gespeichert wird. Das Signal „Schleife_aktiv“ gibt an, dass die Schleifensteuerung 40 aktiviert ist und aktiv eine Schleifenzählung für den aktuellen Programmzustand durchführt und eine Erhöhung vornehmen wird, wenn „Uberschlag_Eingabe“ geltend gemacht wird.
-
Bei der beispielhaften Ausführungsform, die in den Figuren gezeigt ist, entsprechen die niedriger nummerierten Schleifensteuerungen den äußeren Schleifen und entsprechen die höher nummerierten Schleifensteuerungen den inneren Schleifen. Für jeden beliebigen Zyklus, während dem mehrere Schleifenzähler 40 aktiv sind, wird die innerste Schleife durch die Programmzustandsschaltung 5D hochgezählt werden, während aktive äußere Schleifen hochgezählt werden können, wenn die vorhergehende innere Schleife überschlägt. Wenn mehrere Schleifen aktiv sind, wird eine innere Schleife letztendlich eine Kaskade von äußeren Schleifenerhöhungen auslösen, da jede einzelne der Reihe nach überschlägt.
-
12 zeigt eine Schaltungsanordnung für eine Array-Steuerung 10 und zugehörige Schaltungsanordnungen nach einer beispielhaften Ausführungsform. Die Array-Steuerung 10 ist dafür verantwortlich, den Zustand eines jeden der definierten Programm-Arrays aufrechtzuerhalten. Jedes Array weist eine Basisadresse, eine Größe und eine Schrittlänge auf, die durch sein zugehöriges Array-Konfigurationsregister in den Steuerregistern 45 bereitgestellt werden.
-
Zusammen mit der statischen Konfiguration von den Steuerregistern 45 unterhält die Array-Steuerung 10 als Reaktion auf Erhöhungsanforderungen von dem Anweisungssequenzierer 5 und der Schleifensteuerung (den Schleifensteuerungen) 40 den aktuellen Array-Index (Index[]) entlang jeder Dimension. Wenn der Anweisungssequenzierer 5 und die Schleifensteuerung(en) 40 Signale, um die verschiedenen Array-Dimensionen hochzuzählen, senden, wird die Array-Steuerung 10 den passenden Index durch Erhöhen um eins oder Durchführen der Modulo-Operation (des Überschlags), wenn die endgültige Dimensionsgröße erreicht wurde, aktualisieren.
-
Es gibt zwei Quellen für die Erhöhungen von dem Anweisungssequenzierer 5 in die Array-Steuerung 10: (1) die Schleifensteuerungen 40 geben ein Erhöhungssignal aus, wenn die Schleife überschlägt (ihren Endzählwert erreicht), und (2) die Lade-/Speichertätigkeiten geben ein Erhöhungssignal aus, wenn die Anweisung an die Datenpipeline ausgegeben wird. Zudem weist die Array-Steuerung 10 Adressenrechenschaltungsanordnungen 10D bis 10F auf, die verwendet werden, um die Speicheradresse, an der jeder Lade- und Steuerbus des Array-Prozessors 1 in dem aktuellen Anweisungszyklus operieren soll, zu berechnen. Es ist zu beachten, dass bei einigen Ausführungsformen jede Schleifensteuerung 40 (optional) eine Vielzahl von Erhöhungssignalen ausgibt. Falls konfiguriert, kann sie für jedes unabhängige Array und jede Dimension eine Erhöhung vornehmen. Gleichermaßen kann jedes Laden/Speichern optional beliebige oder alle Dimensionen hochzählen, sofern das Array an der Lade-/Speichertätigkeit beteiligt ist.
-
Unter Bezugnahme auf 12 werden die Ausgänge der Adressenrechenschaltungsanordnungen 10D bis 10F (d.h., die Signale „Datenbus 0 Adr“, „Datenbus 1 Adr“ und „Datenbus 2 Adr") der Lade-/Speichereinheit 35 bereitgestellt. Die Signale werden von der Lade-/Speichereinheit 35 wie nachstehend beschrieben verwendet.
-
Unter Bezugnahme auf 12 weist die Array-Steuerung 10 eine Schaltung 10A von Zustandsregistern und Hochzählern auf, die mit Multiplexierern MUXes 10C gekoppelt ist. Die Zustandsregister 10A weisen Register für die Zustände der Arrays 0 bis n (mit 10A0 bis 10An beschriftet) auf. Die Schaltung 10A von Zustandsregistern und Hochzählern erhält von den Steuerregistern 45 über die Signale „Größe[]“ eine Information hinsichtlich der Konfiguration der Arrays (als Anordnungskonfiguration 0 bis Anordnungskonfiguration n gezeigt).
-
Die Information hinsichtlich des Zustands der Arrays wird den MUXes 10C durch die Schaltung 10A von Zustandsregistern und Hochzählern bereitgestellt. Die Signale „Isu_Array_Auswahlen“ von dem Anweisungssequenzierer 5 dienen als die Wahlsignale für die MUXes 10C. Die MUXes 10C stellen den Adressenrechnern 10D bis 10F das Basisadress- (Basis_Adr), das Schrittlängen-(Schrittlänge[]) und das Indexsignal (Index[]) bereit. Bei beispielhaften Ausführungsformen gibt es für eine gegebene Makroanweisung bis zu zwei Ladungen und eine Speicherung, die konfiguriert werden können. Die Wahlleitungen stellen die Auswahl, welches Array gewählt werden soll, für jede dieser drei E/A-Kanäle bereit. Die Information hinsichtlich der Konfiguration der Arrays wird den MUXes 10C durch die Steuerregister 45 bereitgestellt. Jede Leitung, die die Steuerregister 45 und die MUXes 10C koppelt, umfasst oder enthält ein Basis_Adr- und ein Schrittlänge[]-Signal. Die sich wiederholenden Punkte in der Figur stellen Wiederholungen des gezeigten Musters von zwei Multiplexierern dar.
-
Bei beispielhaften Ausführungsformen erzeugt die Adressenrechenschaltung 10D bis 10f die effektive Adresse für jedes Laden und Speichern, das durch die Lade-/Speicherschaltung 35 abgeschlossen wird, auf Basis dessen, welches Array für diese bestimmte Lade- und Speichertätigkeit gewählt ist. Als ein Beispiel für ein dreidimensionales Array wird die effektive Adresse, d.h., der Ausgang der Adressenrechenschaltung, als
berechnet. Wie erwähnt wurde, stellt die obige Formel die effektive Adresse für ein dreidimensionales Array bereit. Wie Durchschnittsfachleute verstehen werden, kann die Formel durch Vornehmen passender Abwandlungen überarbeitet werden, um effektive Adressen für Arrays mit anderen Dimensionen bereitzustellen.
-
13 zeigt eine Schaltungsanordnung für eine Adressenrechenschaltung 10D nach einer beispielhaften Ausführungsform. Die Schaltungsanordnung in 13 setzt die oben gezeigte Formel für die effektive Adresse eines beispielhaften dreidimensionalen Arrays um. Wie Durchschnittsfachleute verstehen werden, kann die Schaltungsanordnung in 13 durch Vornehmen passender Abwandlungen (z.B. Hinzufügen oder Entfernen von Multiplizierern usw.) überarbeitet werden, um effektive Adressen für Arrays mit anderen Dimensionen bereitzustellen. Und obwohl 13 die Adressenrechenschaltung 10D zeigt, können ähnliche Schaltungsanordnungen nach Wunsch für die Adressenrechenschaltung 10E und die Adressenrechenschaltung 10F verwendet werden, wie Durchschnittsfachleute verstehen werden.
-
Unter Bezugnahme auf 13 weist die Adressenrechenschaltung 10D drei Multiplizierer 10D1, 10D2 und 10D3 auf, die jeweils die Produkte (Index0 × Schrittlänge0), (Index1 × Schrittlänge1) und (Index2 × Schrittlänge2) erzeugen. Ein Addierer 10D4 addiert die Ausgänge der drei Multiplizierer 10D1 bis 10D3. Ein Addierer 10D5 addiert die Basisadresse (Basis_Adr) zu dem Ausgang des Addierers 10D4. Der Ausgang des Addierers 10D5 bildet die durch die obige Formel gegebene Adresse für ein beispielhaftes dreidimensionales Array.
-
14 zeigt eine Schaltungsanordnung für Array-Zustandsregister und Hochzähler nach einer beispielhaften Ausführungsform. Genauer zeigt die Figur die Zustandsregister und Hochzähler 10A1 (siehe 12). Unter erneuter Bezugnahme auf 14 bietet die gezeigte Schaltungsanordnung Array-Zustandsregister und Hochzähler für ein beispielhaftes dreidimensionales Array. Wie Durchschnittsfachleute verstehen werden, kann die Schaltungsanordnung in 14 durch Vornehmen passender Abwandlungen (z.B. Hinzufügen oder Entfernen von Modulo-Hochzählern usw.) überarbeitet werden, um Array-Zustandsregister und Hochzähler für Arrays mit anderen Dimensionen bereitzustellen.
-
Die Schaltung in 14 weist drei Modulo-Hochzähler 10A11 bis 10A13 auf, die einem dreidimensionalen Array entsprechen. Der Modulo-Hochzähler für eine gegebene Dimension erhält Signale „Größe“ und „Erhöhung“ (erhöh), die der bestimmten Dimension entsprechen, als Eingaben. Unter Verwendung der Operation, die in 14 gezeigt ist, erzeugen die Hochzähler 10A11 bis 10A13 drei Indexsignale (Index[0], Index[1] und Index[2]), die den jeweiligen drei Array-Dimensionen entsprechen.
-
Wie erwähnt wurde, berechnet die Array-Steuerung 10 Adressen während der Ausführung auf Basis einer Kombination aus einer statischen Programmkonfiguration (Basis_Adresse, Größe, Schrittlänge, Speicher_Art) und des Programmzustands (Index). Die „Basis_Adresse“ stellt die Basisadresse eines Arrays, d.h., die Adresse des Array-Ursprungs im Speicher dar. Die „Speicher_Art“ bezeichnet die Speicherart der Array-Elemente, z.B. vorzeichenbehafteter 8-Bit-Integer, 16-Bit-Gleitkommainteger usw. Bei einigen Ausführungsformen findet eine implizite Umwandlung statt, wenn von dem Speicher in die arithmetische Art der ALU gelesen/geschrieben wird. Umgekehrt weist die ALU bei einigen Ausführungsformen eine native Unterstützung für mehrere Arten auf, wodurch der Overhead für Datenartumwandlungen überwunden wird.
-
Die Feldgröße [] stellt die Größe pro Dimension dar. Zum Beispiel ist die Größe [n] die Größe des Arrays entlang der Dimension n. Die Feldschrittlänge [] bezeichnet die Schrittlänge pro Dimension. Als ein Beispiel ist die Schrittlänge [n] der Adressenunterschied zwischen einem Element und den nächsten Elementen entlang der Dimension n des Arrays. Der Feldindex [] bildet den Indexzustand pro Dimension. Als ein Beispiel verfolgt der Index [n] den Index entlang der Dimension n des gegenwärtig gewählten Elements. Es ist zu beachten, dass die Indizes aller Dimensionen verwendet werden, um ein Array-Element vollständig anzusprechen.
-
15 zeigt Array-Konfigurationsfelder nach einer beispielhaften Ausführungsform. Genauer werden die Felder in der Array-Steuerung 10 für ein beispielhaftes dreidimensionales Array den Daten in dem Speicher (z.B. dem Systemspeicher 625 in 2) zugeordnet. Das Feld BASIS ist die Basisadresse des Arrays. DIMOGRÖSSE, DIM0SCHRITTL. stellen die Dimensionsgröße und die Schrittlänge der ersten Dimension (Dimension 0) dar, und so weiter, sofern Anwendbarkeit auf andere Array-Dimensionen besteht. Wie oben erwähnt wurde, wird das dreidimensionale Array lediglich als beispielhafte Größe eines Arrays verwendet. Bei verschiedenen Ausführungsformen ist die Verwendung anderer Array-Dimensionen durch Vornehmen passender Abänderungen ins Auge gefasst, wie Durchschnittsfachleute verstehen werden.
-
Der „Array“-Speicherzuordnungskonfigurationsmechanismus gestattet, dass eine verhältnismäßig flexible Speicheranordnung von dem Blickpunkt eines Array-Prozessors 1 her dennoch als ein „Array“ durchlaufen wird. Insbesondere können Array-Prozessoren nach beispielhaften Ausführungsformen ein Speicherslicing unterstützen. Genauer gestattet die Verwendung von konfigurierbaren Schrittlängen eine Unterstützung für Arrays, die in dem Speicher mit einer bestimmten Abstandsgröße (oder Speicherstellen) zwischen Elementen angelegt sind, sofern diese für sich genommen über jede Dimension hinweg gleichmäßig ist.
-
Diese Technik kann für eine flexible Array-Verarbeitung unter Verwendung von Array-Prozessoren nach beispielhaften Ausführungsformen verwendet werden. Zum Beispiel zeigt 16 ein Array-Speicherslicing nach einer beispielhaften Ausführungsform. Bei der gezeigten Ausführungsform weisen DIMOGRÖSSE, DIMOSCHRITTL., DIM1GRÖSSE, DIM1SCHRITTL., DIM2GRÖSSE und DIM2SCHRITTL. jeweils Werte von 3, 3, 2, 20, 2 bzw. 50 auf. Wie bei dem Beispiel dargestellt ist, können die Dimensionen und die Schrittlängenwerte für jede Dimension nach Wunsch konfiguriert werden, was eine flexible Weise für das Darstellen oder Anordnen oder Speichern von Arrays in einem Speicher ermöglicht.
-
Es ist zu beachten, dass 16 ein dreidimensionales Array als ein bloßes Beispiel zeigt. Durch Vornehmen passender Abwandlungen an der gezeigten Array-Konfiguration können nach Wunsch Arrays mit beliebigen oder gewünschten dimensionalen Werten verwendet und im Speicher dargestellt werden, wie Durchschnittsfachleute verstehen werden.
-
Bei beispielhaften Ausführungsformen bedeutet die Fähigkeit, über unabhängige Schrittlängen entlang jeder Dimension zu verfügen, dass keine implizite Zeilen- oder Spalten-Hauptreihenfolge angenommen wird, sondern beides möglich ist, falls dies gewünscht ist. Tatsächlich können Arrays, die durch ein Rechenelement in dem System erzeugt und im Speicher gespeichert wurden, durch Array-Prozessoren nach beispielhaften Ausführungsformen unter Verwendung von Betrachtungen wie einer Transposition an Ort und Stelle oder einer Iteration in umgekehrter Reihenfolge ausgelesen werden, ohne dass die Verwendung eines direkten Speicherzugriffs (direct memory access, DMA), um Elemente umzuordnen, oder eine Änderung des an dem Array-Prozessor verwendeten Programms erforderlich ist.
-
17A bis 17C zeigen Beispiele für eine Matrix- oder Array-Manipulation nach einer beispielhaften Ausführungsform. Genauer zeigt 17A ein Array, wobei BASIS, DIMOGRÖSSE, DIMOSCHRITTL., DIM1GRÖSSE und DIM1SCHRITTL. jeweils Werte von 11, 7, 1, 4 bzw. 10 aufweisen. 17B zeigt eine Transponieroperation (einen Tausch der Indizes). DIMOGRÖSSE, DIMOSCHRITTL., DIM1GRÖSSE und DIM1SCHRITTL. werden durch die Operation zu 4, 10, 7 bzw. 1 geändert. 17C zeigt eine umgekehrte Transponieroperation (negative Indizes). Die Werte für BASIS, DIMOGRÖSSE, DIMOSCHRITTL., DIM1GRÖSSE und DIM1SCHRITTL. werden durch die Operation zu 48, 4, -10, 7 bzw. - 1 geändert.
-
Es ist zu beachten, dass die Array-Konfiguration in Array-Prozessoren nach beispielhaften Ausführungsformen entlang jedes Index unabhängig von einem anderen Index oder anderen Indizes vorgenommen werden kann. Die unabhängige Konfiguration der Arrays entlang jedes Index bedeutet, dass es zum Beispiel auch möglich ist, bestimmte Speicherzugriffssequenzen als Arrays zu definieren, selbst bei wiederholten Elementen. Als ein Beispiel zeigt 18 ein Iterieren durch Matrix- oder Array-Unterblöcke als ein Gleitfenster über eine größere Matrix, die im Speicher gespeichert ist. Bei dem gezeigten Beispiel sind Teilstücke von 3×3 als das Gleitfenster über ein größeres Array oder eine Matrix von 9×6 gezeigt.
-
Bei dem Beispiel, das in 18 gezeigt ist, gleitet ein Fenster von 3×3 über einen größeren Speicherraum, wobei die Dimension 2 das Gleiten steuert. Bei diesem Beispiel schiebt jede Dimension 2 das Fenster um zwei Zeilen nach unten und eine Zeile nach rechts (die Interpretation nimmt an, dass dieses Speichersegment irgendeine größere Matrix von 10×10 darstellt).
-
Bei einigen Ausführungsformen weisen Array-Prozessoren zusätzlich zu der oben genannten Umwandlung der Art des Speicherformats oder anstelle davon Schaltungsanordnungen für eine Modifikation von Array-Elementen oder -Werten an Ort und Stelle auf. Zum Beispiel wird bei einigen Ausführungsformen eine Negation von Elementen oder Werten an Ort und Stelle unterstützt. Als anderes Beispiel wird bei einigen Ausführungsformen eine Maskierung von Elementen oder Werten auf null an Ort und Stelle unterstützt. Zusätzlich zu dem Obigen können bei verschiedenen Ausführungsformen nach Wunsch andere Modifikationen oder Änderungen an Array-Elementen oder -Werten verwendet werden. Derartige Modifikationen können nach Wunsch durch Vornehmen passender Abwandlungen vorgenommen werden, wie Durchschnittsfachleute verstehen werden.
-
Es ist ferner zu beachten, dass die Operationen, die in 16, 17A bis 17C und 18 gezeigt sind, nur als anschauliche Beispiele gezeigt sind. Wie Durchschnittsfachleute verstehen werden, kann unter Verwendung der flexiblen Speicherkonfigurationsschemata in Array-Prozessoren nach beispielhaften Ausführungsformen eine verhältnismäßig breite Vielfalt von Operationen an Arrays, deren Dimensionen und Schrittlängen gewünschte Werte aufweisen, durchgeführt werden.
-
Die Konfiguration von Arrays im Speicher nach verschiedenen Ausführungsformen bietet eine Reihe von Attributen. Eine solche Konfiguration gestattet eine Verarbeitung der Daten nur mit einer CPU. Die CPU kann mit beliebigen Speicheranordnungen für das Array (die Arrays) umgehen. In solchen Situationen wird die Verwendung der CPU-Ressourcen gegen die Flexibilität der Speicherkonfigurationen von Arrays abgewogen.
-
Bei anderen Ausführungsformen kann ein DMA verwendet werden, um Array-Daten nach Wunsch zwischen verschiedenen Rechenschritten zu bewegen und/oder zu kopieren. Dabei wird die Flexibilität und das Auslagern von Aufgaben von der CPU gegen die Leistung und/oder die Latenzzeit und die Möglichkeit, dass der DMA möglicherweise manche gewünschten Speicheranordnungen oder -übersetzungen nicht unterstützt, abgewogen. In einigen Fällen kann nach einer Kopieroperation eine Verdoppelung von Informationen auftreten.
-
Die Speicherkonfiguration nach beispielhaften Ausführungsformen passt jede Rechenmaschine, die Daten behandelt oder verarbeitet, an jede andere an, um Daten auf jene Weise anzuordnen, die von der nächsten oder nachfolgenden oder Zielrechenmaschine verwendet oder erwartet wird. Dies bringt eine verhältnismäßig enge Kopplung von verschiedenen Hardwareblöcken mit sich und könnte in einigen Fällen zusätzlichen Speicherraum zum Auffüllen von Daten im Speicher, um das richtige oder erwartete Format für einen Verbraucher der Daten (einen Endnutzer, verschiedene Rechenmaschinen oder Schaltungsblöcke oder Untersysteme) zu erhalten, verwenden. Es ist zu beachten, dass es in manchen Situationen mehr als einen Verbraucher der gleichen oder von überlappenden Datenelemente(n) geben könnte, in welchem Fall es möglicherweise keine einzelne ideale Anordnung der Daten geben könnte.
-
Bei beispielhaften Ausführungsformen verringert die Speicherkonfiguration von Arrays in manchen Fällen die Wahrscheinlichkeit, dass Daten überhaupt bewegt und/oder kopiert werden, wodurch der Stromverbrauch (durch die zusätzliche Einschaltzeit und die zusätzlichen Speicherzugriffe) verringert wird, die Latenzzeit verringert wird, die Speicherkosten verringert werden, usw. Darüber hinaus können bei derartigen Ausführungsformen mit den gleichen Systemressourcen zusätzliche Anwendungen oder Anwendungen mit einer höheren Funktionalität ermöglicht werden.
-
Bei einigen Ausführungsformen werden Programmpakete eingesetzt. Die Verwendung von Programmpaketen ist mit einer neuartigen Anordnung von Steuerregistern in dem Steuerblock oder der Schaltungsanordnung des Array-Prozessors verbunden. Als ein allgemeines Konzept kann die Verwendung von Paketen auf jede beliebige periphere Vorrichtung, die programmierbare Register aufweist, welche in Pakete gruppiert werden können, angewendet werden.
-
Die Verwendung von Paketen gestattet, dass Kompilierprogramme, die für den Array-Prozessor bestimmt sind, zu einem Programmpaket zusammengestellt werden. In typischen früheren Situationen wurden Register unter Verwendung eines Konzepts der individuellen Registerprogrammierung von Konfigurationsfeldern geschrieben. Obwohl dieses Verfahren auch bei Array-Prozessoren nach verschiedenen Ausführungsformen möglich ist, werden die Hardwareregister bei einigen Ausführungsformen ausdrücklich gruppiert und geordnet, um als ein „Paket“ geschrieben und gelesen zu werden.
-
Bei beispielhaften Ausführungsformen bezeichnet ein Programmpaket die Konfigurationsregister des Array-Prozessors 1, d.h., die Informationen, die verwendet werden, um ein neues Programm für den Array-Prozessor 1 zu konfigurieren. Ein erweitertes Programmpaket andererseits bezeichnet das Programmpaket und den ALU-Registerzustand (ALUREGZUSTAND oder ALUZUSTAND). Die ALU-Registerzustände werden bei beispielhaften Ausführungsformen vor den Programmkonfigurationsregistern geladen.
-
Dieses Schema gestattet, dass in Situationen, in denen eine ALU-Registerinitialisierung als Teil der Programmausführung gewünscht ist, ein erweitertes Programmpaket (anstelle eines Programmpakets) in den Array-Prozessor 1 geschrieben wird. Sowohl Programmpakete als auch erweiterte Programmpakete können, falls gewünscht, vorab (dynamisch oder während der Kompilierungszeit) erzeugt werden und in einem Speicher (RAM oder einem nichtflüchtigen Speicher (NF-Speicher) (siehe z.B. 21, NF-Speicher 635)) gespeichert werden, um während der Laufzeit abgerufen und über mehrere Datensätze hinweg wiederverwendet zu werden.
-
Bei beispielhaften Ausführungsformen gibt es zusätzlich zu den Programmkonfigurations- und den ALU-Zustandsregistern andere Laufzeitzustandsregister, z.B. den Array-Zustand, den Schleifenzustand, usw., die in Pakete aufgenommen werden können. Zustandsregister halten implementierungsabhängige Zustandsinformationen, die während der Programmausführung durch Hardware geschrieben werden. Sie enthalten Informationen, die verwendet werden, um den gesamten Kontext eines in Ausführung befindlichen Programms darzustellen. Zur Aufnahme derartiger Informationen können kontextbezogene Programmpakete verwendet werden.
-
Genauer bilden kontextbezogene Programmpakete eine Kombination aus einem erweiterten Programmpaket und allen Zustandsregistern. Um den Kontext eines angehaltenen Programms zu speichern, kann das gesamte erweiterte Programmpaket im Speicher (siehe oben) gespeichert werden. Es kann später erneut in den Array-Prozessor 1 geladen werden, wenn eine Wiederherstellung des Kontexts und eine Wiederaufnahme der Ausführung gewünscht ist. Wie Durchschnittsfachleute verstehen werden, kann jede beliebige Anzahl von Programmen auf diese Weise gespeichert und wiederhergestellt werden, um während der Ausführung ein Wechseln von Kontexten nach Wunsch je nach Faktoren wie etwa dem Verwendungsszenario, dem verfügbaren Speicher, der Gestaltungs- und Leistungsspezifikation für die Array-Prozessoren 1 usw. zu gestatten.
-
Es ist zu beachten, dass die obigen Beschreibungen von verschiedenen Arten von Paketen annehmen, dass von einem Host (siehe z.B. 2) her auf alle genannten Programmpaketregister, selbst jene, die einen implementationsabhängigen Zustand darstellen, zugegriffen werden kann. In Situationen, in denen ein solcher Zugriff von einem Host nicht verfügbar oder nicht gewünscht ist, können durch Vornehmen passender Abwandlungen andere Arten von Paketen verwendet werden, wie Durchschnittsfachleute verstehen werden.
-
19 zeigt ein Beispiel für Paketfelder nach einer beispielhaften Ausführungsform. Bei dem gezeigten Beispiel umfasst Programm_Paket die Felder SCHLEIFENKONFIG (die Schleifenkonfiguration), ARRAYKONFIG (die Array-Konfiguration) und ANWEISKONFIG (die Anweisungskonfiguration). Darüber hinaus umfasst Erweitertes_Programm_Paket die Felder des Programm_Pakets und das Feld ALUZUSTAND (den ALU-Zustand). Schließlich umfasst das kontextuelle Programmpaket die Felder des Erweiterten_Programm_Pakets und die Felder SCHLEIFENZUSTAND (den Schleifenzustand), ARRAYZUSTAND (den Array-Zustand) und PROGRAMMZUSTAND (den Programmzustand).
-
Es ist zu beachten, dass die oben beschriebenen Paketarten und Inhalte lediglich anschaulich und nicht beschränkend sind. Wie Durchschnittsfachleute verstehen werden, können nach Wunsch andere Arten von Paketen aufgebaut und verwendet werden. Die Wahl der Art und der Inhalte eines Pakets für eine gegebene Umsetzung hängen von einer Vielfalt von Faktoren ab, wie Durchschnittsfachleute verstehen werden. Diese Faktoren umfassen Designspezifikationen, Leistungsspezifikationen, die Kosten, den Stromverbrauch, die IC- oder Vorrichtungsfläche, die verfügbaren Ressourcen (wie etwa die Speicherkapazität), die Zielmärkte, die Zielendnutzer usw.
-
Zur Unterstützung der Verwendung von Paketen weisen Array-Prozessoren nach beispielhaften Ausführungsformen bestimmte Hardwareblöcke oder Schaltungsanordnungen auf. Die Hardware zur Unterstützung der obigen Pakete umfasst eine so organisierte Speicherzuordnung des Array-Prozessors, dass Registeruntersätze gebildet werden, die die verschiedenen Paketarten bilden, wobei jeder eine geringstmögliche Menge an Speicherraum oder Kapazität beansprucht, um das Paket zu bilden. 20 zeigt die Reihenfolge der Register im Speicher (oder einer Vorrichtung), um die drei oben beschriebenen Paketarten zu unterstützen.
-
Wie 20 zeigt, wird das höchstwertige Byte (most significant byte, MSB) in dem Speicherraum von einem CMD-Wort (Befehlswort) belegt. Der Rest des Speicherraums, der Paketen zugeteilt ist, umfasst die oben beschriebenen Felder. Genauer lautet die Reihenfolge der in dem Speicher angeordneten Felder ab dem CMD-Wort ANWEISKONFIG, SCHLEIFENKONFIG, ARRAYKONFIG, ALUREGZUSTAND, SCHLEIFENZUSTAND, ARRAYZUSTAND und PROGRAMMZUSTAND. Bei der gezeigten Ausführungsform belegt PROGRAMMZUSTAND das niedrigstwertige Byte (least significant byte, LSB) in dem Speicherraum.
-
Und wie 20 zeigt und wie oben beschrieben wurde, bilden ANWEISKONFIG, SCHLEIFENKONFIG und ARRAYKONFIG das Programmpaket. ALUREGZUSTAND bildet zusammen mit dem Programmpaket das erweiterte Programmpaket. SCHLEIFENZUSTAND, ARRAYZUSTAND und PROGRAMMZUSTAND bilden zusammen mit dem erweiterten Programmpaket das kontextuelle Programmpaket. Es ist zu beachten, dass einige der Felder, die in 20 gezeigt sind, nach Wunsch je nachdem, ob man ein Programmpaket, ein erweitertes Programmpaket oder ein kontextuelles Programmpaket verwenden möchte, möglicherweise nicht verwendet werden, wie Durchschnittsfachleute verstehen werden.
-
Ebenso gibt es Registerreihenfolgenüberlegungen, die ein autonomes Laden einer jeden beliebigen der drei Paketarten gestatten, unter anderem ein speicherzugeordnetes Befehlsregister, das unmittelbar auf das Programmpaket folgt (siehe als Beispiel CMD in 20). Zusätzlich zu der Programmpaketspeicheranordnung ermöglichen Array-Prozessoren 1 nach beispielhaften Ausführungsformen drei unterschiedliche Verwendungsfälle für das Programmieren und Laden, (1) das Laden und Ausführen eines vollständigen Programms (unter Verwendung des erweiterten Programmpakets); (2) das Laden und Ausführen eines Teilprogramms (unter Verwendung des Programmpakets); und (3) das Speichern/Wiederherstellen eines Programms (Kontexts) (unter Verwendung des kontextuellen Programmpakets).
-
Ein solches Schema ermöglicht einen (vorbeugenden) Kontextwechsel oder eine Speicherungs-/Wiederherstellungs-Fensterung von Energiesparmoden, bei dem bzw. der die Zustandsinformationen andernfalls verloren gehen würden. Somit wird der gesamte Zustand und die gesamte Konfiguration eines laufenden Programms unterstützt.
-
Die Sequenzierer-FSM 5A (siehe 7) gestattet dem Programmierer des Array-Prozessors 1, verschiedene Programmiermodelle wie etwa das oben beschriebene über die Verwendung der Befehlsbits Start, Anhalten und Init bereitzustellen, um einen Zustandsübergang der Sequenzierer-FSM 5A herbeizuführen (siehe 8). Das Steuerbit Init des CMD-Worts aktiviert die automatische richtige Initialisierung einiger Zustandsregister, falls kein kontextuelles Programmpaket geladen oder verwendet wird.
-
Wie oben erwähnt wurde, können bei verschiedenen Ausführungsformen nach Wunsch andere Arten von Paketen verwendet werden. Zudem können die obigen Paketarten nach Wunsch gemischt und/oder unterteilt und gemischt werden, wie Durchschnittsfachleute verstehen werden. Als nur ein Beispiel können nach Wunsch Pakete für das gleiche Programm, aber unterschiedliche Zustände/Konfigurationen unterstützt werden.
-
Wie Durchschnittsfachleute verstehen werden, wird zur Unterstützung der Verwendung von Paketen bei verschiedenen Ausführungsformen die Verwendung einer zugehörigen Software ins Auge gefasst. Die Software soll das Kompilieren und Manipulieren der verschiedenen Arten von Paketen während der Laufzeit und der Kompilierungszeit nach Wunsch erleichtern. Zum Beispiel kann eine Array-Programmiersprache verwendet werden. Eine solche Programmiersprache könnte zum Beispiel gestatten, dass diskrete Mikrohandlungen in einer formalen Sprache, die im Konzept anderen Programmiersprachen wie etwa C oder Python ähnlich ist, bestimmt werden. Zum Beispiel kann nach Wunsch die Fähigkeit zur Erzeugung von Makros in der C-Programmiersprache, die der Grammatik der Array-Programmiersprache entsprechen, um diese Sprache direkt in ein C-Programm einzubetten, damit sie zusammen damit kompiliert wird, unterstützt werden. Die Mikrohandlungen bei derartigen Ausführungsformen werden zu Makroanweisungen, die durch die Array-Prozessoren nach verschiedenen Ausführungsformen verwendet werden, zusammengesetzt.
-
Bei einigen Ausführungsformen kann ein Anweisungssequenzersteller (ein Kompilierer, der eine Umwandlung von der Array-Programmiersprache in Programmpakete vornimmt) verwendet werden. Dieses Merkmal kann sowohl die Fähigkeit zu einer spontanen als auch jene zu einer off-line-Kompilierung unterstützen, d.h., Programme können nach Wunsch während der Laufzeit dynamisch übersetzt oder während der Kompilierzeit übersetzt und die Ergebnisse in dem Speicher gespeichert werden.
-
Nach Wunsch können andere Laufzeitanwendungsprogrammierschnittstellen (application programming interfaces, APIs) verwendet werden, wie etwa (1) eine API, um die verschiedenen Paketarten heranzuziehen und in den Speicher zu laden/speichern; (2) eine API, um eine direkte Speicherzugriffsprogrammierung (DMA-Programmierung) des Array-Prozessors unter Verwendung einer der Programmpaketarten vorzunehmen; und (3) eine API, um ein kompiliertes Programmpaket heranzuziehen und es durch Abwandeln bestimmter Teile der Programmkonfiguration zu parametrisieren. Wie Durchschnittsfachleute verstehen werden, kann nach Wunsch eine Vielfalt von anderen Softwarekonstrukten einschließlich APIs verwendet werden. Die Wahl und die Art eines solchen Softwarekonstrukts für eine gegebene Umsetzung hängt von einer Vielzahl von Faktoren ab, wie Durchschnittsfachleute verstehen werden. Diese Faktoren umfassen Gestaltungsspezifikationen, Leistungsspezifikationen, die Kosten, die verfügbare Technologie wie etwa die Art der verwendeten Programmiersprache(n), die Zielmärkte, die Zielendnutzer usw. Je nach diesen Faktoren kann für eine gegebene Anwendung eine geeignete Softwareplattform umgesetzt werden, wie Durchschnittsfachleute verstehen werden.
-
Array-Prozessoren 1 nach beispielhaften Ausführungsformen können nach Wunsch in einer Vielfalt von Systemen, Untersystemen, Modulen usw. verwendet werden. Zum Beispiel können bei einigen Ausführungsformen ein oder mehrere Array-Prozessoren 1 in eine IC wie etwa eine Mikrosteuereinheit (micro controller unit, MCU) integriert oder aufgenommen sein. 21 zeigt eine Schaltungsanordnung für eine solche beispielhafte Ausführungsform.
-
Die Schaltungsanordnung weist eine IC 550 auf, die eine MCU bildet oder aufweist. Die IC 550 weist eine Anzahl von Blöcken (z.B. (einen) Prozessor(en) 565, einen Datenwandler 605, eine E/A-Schaltungsanordnung 585 usw.) auf, die unter Verwendung einer Verbindung 560 miteinander kommunizieren. Bei beispielhaften Ausführungsformen kann die Verbindung 560 einen Kopplungsmechanismus wie etwa einen Bus, einen Satz von Leitern oder Halbleiterelemente (z.B. Leiterbahnen, Vorrichtungen usw.) zur Übermittlung von Informationen wie etwa Daten, Befehlen, Zustandsinformationen und dergleichen bilden.
-
Die IC 550 kann eine Verbindung 560 aufweisen, die mit einem oder mehreren Prozessoren 565, einer Taktschaltung 575 und einer Leistungsverwaltungsschaltung oder Leistungsverwaltungseinheit (power management unit, PMU) 580 gekoppelt ist. Bei einigen Ausführungsformen kann der Prozessor (können die Prozessoren) 565 Schaltungsanordnungen oder Blöcke zur Bereitstellung von Informationsverarbeitungsfunktionen (oder Datenverarbeitungs- oder Rechenfunktionen) wie etwa Zentraleinheiten (CPUs), arithmetische Logikeinheiten (ALUs) und dergleichen aufweisen. Bei einigen Ausführungsformen kann der Prozessor (können die Prozessoren) 565 zusätzlich oder als Alternative einen oder mehrere DSPs aufweisen. Die DSPs können nach Wunsch eine Vielfalt von Signalverarbeitungsfunktionen wie etwa arithmetische Funktionen, eine Filterung, eine Verzögerung von Blöcken und dergleichen bereitstellen.
-
Die IC 550 kann einen oder mehrere Array-Prozessoren 1 aufweisen. Der Array-Prozessor 1 kann wie oben beschrieben auf eine Vielfalt von Weisen so umgesetzt werden, dass er einen verhältnismäßig weiten Bereich an Funktionalität und Attributen aufweist. Der Array-Prozessor 1 kommuniziert (die Array-Prozessoren 1 kommunizieren) über die Verbindung 560 mit einem oder mehreren Blöcken in der IC 550. Zum Beispiel kommuniziert der Array-Prozessor 1 (kommunizieren die Array-Prozessoren 1) nach Wunsch über die Verbindung 560 mit dem Prozessor (den Prozessoren) 565, der Speicherschaltung 625, der PMU (oder Leistungssteuerung) 580 usw., wie Durchschnittsfachleute verstehen werden.
-
Die Taktschaltung 575 kann ein oder mehrere Taktsignale erzeugen, die das Timing der Tätigkeiten eines oder mehrerer Blöcke in der IC 550 erleichtern oder steuern. Die Taktschaltung 575 kann nach Wunsch auch das Timing von Tätigkeiten, die die Verbindung 560 verwenden, erleichtern. Bei einigen Ausführungsformen kann die Taktschaltung 575 ein oder mehrere Taktsignale über die Verbindung 560 anderen Blöcken in der IC 550 bereitstellen.
-
Bei einigen Ausführungsformen kann die PMU 580 in Bezug auf einen Teil einer Schaltung oder alle Komponenten einer Schaltung wie etwa einen oder mehrere Blöcke in der IC 550 die Taktgeschwindigkeit einer Vorrichtung (z.B. der IC 550) verringern, den Takt abschalten, die Leistung verringern, den Strom abschalten, eine Deaktivierung (oder ein Herunterfahren oder Bringen in einen Zustand mit einem geringeren Stromverbrauch oder einen Schlaf- oder Inaktivitäts- oder Ruhezustand), eine Aktivierung (oder ein Hochfahren oder Bringen in einen Zustand mit einem höheren Stromverbrauch oder einen Normal- oder Aktivzustand) oder jede beliebige Kombination davon vornehmen. Ferner kann die PMU 580 als Reaktion auf einen Übergang von einem inaktiven Zustand zu einem aktiven Zustand (einschließlich, aber ohne Beschränkung darauf, dann, wenn ein Prozessor (Prozessoren) 565 einen Übergang von einem Energiespar- oder Ruhe- oder Schlafzustand zu einem normalen Betriebszustand vornimmt (vornehmen)) einen Takt einschalten, eine Taktrate erhöhen, den Strom einschalten, die Leistung erhöhen oder jede beliebige Kombination davon vornehmen.
-
Die Verbindung 560 kann durch die serielle Schnittstelle 595 mit einer oder mehreren Schaltungen 600 gekoppelt sein. Durch die serielle Schnittstelle 595 können eine oder mehrere Schaltungen oder Blöcke, die mit der Verbindung 560 gekoppelt sind, mit den Schaltungen 600 kommunizieren. Die Schaltungen 600 können unter Verwendung eines oder mehrerer serieller Protokolle, z.B. SMBUS I2C, SPI und dergleichen, kommunizieren, wie Durchschnittsfachleute verstehen werden.
-
Die Verbindung 560 kann durch eine E/A-Schaltungsanordnung 585 mit einem oder mehreren Periphergeräten 590 gekoppelt sein. Durch die E/A-Schaltungsanordnung 585 können ein oder mehr Periphergeräte 590 mit der Verbindung gekoppelt sein und daher mit einem oder mehreren Blöcken, die mit der Verbindung 560 gekoppelt sind, z.B. dem Prozessor (den Prozessoren) 565, der Speicherschaltung 625 usw. kommunizieren.
-
Bei beispielhaften Ausführungsformen können die Periphergeräte 590 eine Vielfalt von Schaltungsanordnungen, Blöcken und dergleichen umfassen. Beispiele umfassen E/A-Vorrichtungen (Tastenfelder, Tastaturen, Lautsprecher, Anzeigevorrichtungen, Speichervorrichtungen, Zeitgeber, Sensoren usw.). Es ist zu beachten, dass sich bei einigen Ausführungsformen einige Periphergeräte 590 außerhalb der IC 550 befinden können. Beispiele dafür umfassen Tastaturen, Lautsprecher und dergleichen.
-
Bei einigen Ausführungsformen kann die E/A-Schaltungsanordnung 585 im Hinblick auf einige Periphergeräte umgangen werden. Bei derartigen Ausführungsformen können einige Periphergeräte 590 ohne Verwendung der E/A-Schaltungsanordnung 585 mit der Verbindung 560 gekoppelt sein und damit kommunizieren. Bei einigen Ausführungsformen können sich solche Periphergeräte wie oben beschrieben außerhalb der IC 550 befinden.
-
Die Verbindung 560 kann über (einen) Datenwandler 605 mit einer analogen Schaltungsanordnung 620 gekoppelt sein. Der Datenwandler 605 kann (die Datenwandler 605 können) einen oder mehrere Analog-Digital-Wandler (ADWs) 605a und/oder einen oder mehrere Digital-Analog-Wandler (DAWs) 605B aufweisen.
-
Der ADW 605A erhält (die ADWs 605A erhalten) ein analoges Signal (analoge Signale) von der analogen Schaltungsanordnung 620 und wandelt (wandeln) das analoge Signal (die analogen Signale) in ein digitales Format um, das einem oder mehreren Blöcken, die mit der Verbindung 560 gekoppelt sind, übermittelt wird. Umgekehrt erhält der DAW 605B (erhalten die DAWs 605B) ein digitales Signal (digitale Signale) von einem oder mehreren Blöcken, die mit der Verbindung 560 gekoppelt sind, und wandelt (wandeln) das digitale Signal (die digitalen Signale) in ein analoges Format um, das der analogen Schaltungsanordnung 620 übermittelt wird.
-
Die analoge Schaltungsanordnung 620 kann eine breite Vielfalt von Schaltungsanordnungen, die analoge Signale bereitstellen und/oder erhalten, aufweisen. Beispiele umfassen Sensoren, Umformer und dergleichen, wie Durchschnittsfachleute verstehen werden. Bei einigen Ausführungsformen kann die analoge Schaltungsanordnung 620 nach Wunsch mit Schaltungsanordnungen außerhalb der IC 550 kommunizieren, um komplexere Systeme, Untersysteme, Steuerblöcke oder -systeme, Rückmeldesysteme und Informationsverarbeitungsblöcke zu bilden.
-
Die Steuerschaltungsanordnung 570 ist mit der Verbindung 560 gekoppelt. Daher kann die Steuerschaltungsanordnung 570 durch Bereitstellen von Steuerinformationen oder Signalen mit verschiedenen Blöcken, die mit der Verbindung 560 gekoppelt sind, kommunizieren und/oder deren Betrieb steuern. Bei einigen Ausführungsformen erhält die Steuerschaltungsanordnung 570 auch Zustandsinformationen oder Signale von verschiedenen Blöcken, die mit der Verbindung 560 gekoppelt sind. Zudem erleichtert die Steuerschaltungsanordnung 570 bei einigen Ausführungsformen die Kommunikation oder das Zusammenwirken zwischen verschiedenen Blöcken, die mit der Verbindung 560 gekoppelt sind (oder steuert oder überwacht diese).
-
Bei einigen Ausführungsformen kann die Steuerschaltungsanordnung 570 eine Rücksetztätigkeit oder ein Signal auslösen oder darauf antworten. Wie Durchschnittsfachleute verstehen werden, kann die Rücksetztätigkeit ein Zurücksetzen eines oder mehrerer Blöcke, die mit der Verbindung 560 gekoppelt sind, der IC 550 usw. bewirken. Zum Beispiel kann die Steuerschaltungsanordnung 570 ein Zurücksetzen der PMU 580 und von Schaltungsanordnungen wie etwa einem oder mehreren Array-Prozessoren 1 auf einen Anfangs- oder einen bekannten Zustand bewirken.
-
Bei beispielhaften Ausführungsformen kann die Steuerschaltungsanordnung 570 eine Vielfalt von Schaltungsarten und -blöcken aufweisen. Bei einigen Ausführungsformen kann die Steuerschaltungsanordnung 570 Logikschaltungsanordnungen, FSMs oder andere Schaltungsanordnungen zur Durchführung von Tätigkeiten wie die oben beschriebenen Tätigkeiten aufweisen.
-
Eine Kommunikationsschaltungsanordnung 640 ist mit der Verbindung 560 und auch mit Schaltungsanordnungen oder Blöcken (nicht gezeigt) außerhalb der IC 550 gekoppelt. Durch die Kommunikationsschaltungsanordnung 640 können verschiedene Blöcke, die mit der Verbindung 560 (oder allgemein mit der IC 550) gekoppelt sind, über ein oder mehr Kommunikationsprotokolle mit den externen Schaltungsanordnungen oder Blöcken (nicht gezeigt) kommunizieren. Beispiele für Kommunikationen umfassen USB, Ethernet und dergleichen. Bei beispielhaften Ausführungsformen können je nach Faktoren wie etwa Gestaltungs- oder Leistungsspezifikationen für eine gegebene Anwendung andere Kommunikationsprotokollen verwendet werden, wie Durchschnittsfachleute verstehen werden.
-
Wie oben erwähnt wurde, ist die Speicherschaltung 625 mit der Verbindung 560 gekoppelt. Folglich kann die Speicherschaltung 625 mit einem oder mehreren Blöcken, die mit der Verbindung 560 gekoppelt sind, wie etwa dem Prozessor (den Prozessoren) 565, der Steuerschaltungsanordnung 570, der E/A-Schaltungsanordnung 585 usw. kommunizieren.
-
Die Speicherschaltung 625 bietet einen Speicher für verschiedenen Informationen oder Daten in der IC 550 wie etwa Operanden, Markierungen, Daten, Anweisungen und dergleichen, wie Durchschnittsfachleute verstehen werden. Die Speicherschaltung 625 kann nach Wunsch verschiedene Protokolle wie etwa die Doppelte Datenrate (DDR), DDR2, DDR3, DDR4 und dergleichen unterstützen.
-
Bei einigen Ausführungsformen sind Speicherlese- und/oder -schreibtätigkeiten durch die Speicherschaltung mit der Verwendung eines oder mehrerer Blöcke in der IC 550 wie etwa dem Prozessor (den Prozessoren) 565 verbunden. Eine Anordnung für den direkten Speicherzugriff (DMA) (nicht gezeigt) gestattet in manchen Situationen eine verbesserte Leistung von Speichertätigkeiten. Genauer bietet der DMA (nicht gezeigt) einen Mechanismus zur direkten Durchführung von Speicherlese- und -schreibtätigkeiten zwischen der Quelle oder dem Zielort der Daten und der Speicherschaltung 625 anstatt über Blöcke wie den Prozessor (die Prozessoren) 565.
-
Die Speicherschaltung 625 kann eine Vielfalt von Speicherschaltungen oder -blöcken aufweisen. Bei der gezeigten Ausführungsform weist die Speicherschaltung 625 einen nichtflüchtigen Speicher (NF) 635 auf. Zudem oder statt dessen kann die Speicherschaltung 625 einen flüchtigen Speicher (nicht gezeigt) wie etwa einen Direktzugriffsspeicher (random access memory, RAM) aufweisen. Der NF-Speicher 635 kann zum Speichern von Informationen im Zusammenhang mit der Leistung, der Steuerung oder der Konfiguration eines oder mehrerer Blöcke in der IC 550 verwendet werden. Zum Beispiel kann der NF-Speicher 635 wie oben beschrieben Konfigurationsinformationen im Zusammenhang mit dem Array-Prozessor (den Array-Prozessoren) 1 speichern.
-
22 zeigt ein Blockdiagramm eines Systems 1000 zur Informationsverarbeitung unter Verwendung eines oder mehrerer Array-Prozessoren 1 nach einer beispielhaften Ausführungsform. Unter Verwendung des Systems 100 können die verschiedenen Algorithmen, Prozesse, Verfahren oder Software an Computersystemen, Vorrichtungen, Prozessoren, Steuerungen usw. durchgeführt, laufen gelassen oder ausgeführt werden. Das System 1000, oder Abwandlungen oder Variationen davon, wie Durchschnittsfachleute erkennen werden, kann verwendet werden, um unter Verwendung des Array-Prozessors (der Array-Prozessoren) 1 wie oben beschrieben eine Vielfalt von Prozessen wie etwa eine Array-Verarbeitung laufen zu lassen oder durchzuführen.
-
Das System 1000 weist eine Computervorrichtung 1005, eine Eingabevorrichtung 1010, eine Video-/Anzeigevorrichtung 1015 und eine Speicher-/Ausgabevorrichtung 1020 auf, obwohl nach Wunsch mehr als eine dieser Vorrichtungen aufgenommen werden kann. Die Computervorrichtung 1005 ist mit der Eingabevorrichtung 1010, der Video-/Anzeigevorrichtung 1015 und der Speicher-/Ausgabevorrichtung 1020 gekoppelt. Das System 1000 kann nach Wunsch mehr als eine Computervorrichtung 1005, zum Beispiel einen Satz von zugehörigen Computervorrichtungen oder - systemen, aufweisen.
-
Bei beispielhaften Ausführungsformen weist die Computervorrichtung einen oder mehrere Array-Prozessoren 1 auf. Wie Durchschnittsfachleute verstehen werden, kann es sich bei dem Array-Prozessor (den Array-Prozessoren 1) um eine oder mehrere der verschiedenen Ausführungsformen des Array-Prozessors oder eine Kombination oder Abwandlung derartiger Array-Prozessoren handeln.
-
Typischerweise arbeitet das System 1000 in Verbindung mit Eingaben von einem Benutzer. Die Benutzereingaben bringen das System 1000 typischerweise zur Durchführung bestimmter gewünschter Informationsverarbeitungsaufgaben einschließlich einer Array-Verarbeitung. Das System 1000 verwendet zum Teil die Computervorrichtung 1005, um diese Aufgaben durchzuführen. Die Computervorrichtung 1005 weist neben einem oder mehreren Array-Prozessoren 1 eine Informationsverarbeitungsschaltungsanordnung wie etwa eine CPU, eine Steuerung, eine Mikrosteuereinheit (MCU) usw. auf, obwohl mehr als eine solche Vorrichtung oder Informationsverarbeitungsschaltungsanordnung verwendet werden kann, wie Fachleute verstehen würden. Die Computervorrichtung kann nach Wunsch eine Speicherschaltungsanordnung wie etwa eine in Verbindung mit dem Array-Prozessor (den Array-Prozessoren) 1 verwendete Speicherschaltungsanordnung aufweisen.
-
Die Eingabevorrichtung 1010 erhält Eingaben von dem Benutzer und stellt die Eingaben der Computervorrichtung 1005 zur Verarbeitung zur Verfügung. Die Benutzereingaben können nach Wunsch Daten, Anweisungen oder beides umfassen. Die Eingabevorrichtung 1010 kann eine alphanumerische Eingabevorrichtung (z.B. eine Tastatur oder ein Tastenfeld), eine Zeigevorrichtung (z.B. eine Maus, eine Rollkugel, einen Leuchtstift, ein berührungsempfindliches Gerät, zum Beispiel eine berührungsempfindliche Anzeige oder ein Tablet) oder beides bilden. Der Benutzer betätigt die alphanumerische Tastatur oder das Tastenfeld, um der Computervorrichtung 1005 einen Text wie etwa ASCII-Zeichen bereitzustellen. Ebenso betätigt der Benutzer die Zeigevorrichtung, um der Computervorrichtung 1005 CursorPositionen oder Steuerinformationen bereitzustellen.
-
Die Video-/Anzeigevorrichtung 1015 zeigt dem Benutzer visuelle Bilder an. Die Video-/Anzeigevorrichtung 1015 kann nach Wunsch eine Grafikschaltungsanordnung wie etwa Grafikprozessoren aufweisen. Die visuellen Bilder können Informationen über den Betrieb der Computervorrichtung 1005 wie etwa Diagramme, Aufnahmen, Bilder und Text enthalten. Die Video-/Anzeigevorrichtung 1015 kann einen Computermonitor oder eine Anzeige, eine elektronische Anzeige (z.B. eine Flüssigkristallanzeige), eine Projektionsvorrichtung und dergleichen aufweisen, wie ein Durchschnittsfachmann verstehen würde. Wenn das System 1000 eine berührungsempfindliche Anzeige verwendet, kann die Anzeige auch zur Bereitstellung von Benutzereingaben in die Computervorrichtung 1005 wirken.
-
Die Speicher-/Ausgabevorrichtung 1020 gestattet der Computervorrichtung 1005 Informationen für eine zusätzliche Verarbeitung oder einen späteren Abruf (z.B. eine Bildschirmausgabe) zu speichern, Informationen in verschiedenen Formen (z.B. als Ausdruck) zu zeigen, oder beides. Als ein Beispiel kann die Speicher-/Ausgabevorrichtung 1020 ein magnetisches, optisches, Halbleiter- oder magnetoptisches Laufwerk aufweisen, das in der Lage ist, Informationen auf einem gewünschten Medium und in einem gewünschten Format zu speichern. Als anderes Beispiel kann die Speicher-/Ausgabevorrichtung 1020 einen Drucker, einen Plotter oder eine andere Ausgabevorrichtung zur Erzeugung gedruckter oder gezeichneter Ausformulierungen der Informationen von der Computervorrichtung 1005 bilden. Bei einigen Ausführungsformen kann die Speichervorrichtung 1020 zusätzlich oder als Alternative zu der Speicherung von Informationen einer oder mehreren Komponenten oder Teilen des Systems 1000, zum Beispiel der Computervorrichtung 1005, Informationen (z.B. vorher gespeicherte Informationen) bereitstellen.
-
Ein computerlesbares Medium 1025 (oder ein Computerprogrammprodukt) ist strukturell und funktional mit der Computervorrichtung 1005 verknüpft. Das computerlesbare Medium 1025 speichert, codiert, erfasst und/oder verkörpert funktionsbeschreibendes Material. Zur Veranschaulichung kann das funktionsbeschreibende Material Computerprogramme, Computercode, Computeranwendungen und/oder Informationsstrukturen (Datenstrukturen, Datenbanken und/oder Dateisysteme) umfassen. Wenn das funktionsbeschreibende Material durch das computerlesbare Medium 1025 gespeichert, codiert, erfasst und/oder verkörpert wird, verleiht es Funktionalität. Das funktionsbeschreibende Material ist mit dem computerlesbaren Medium 1025 verknüpft. Bei einigen Ausführungsformen ist das computerlesbare Medium 1025 nach Wunsch nichtflüchtig.
-
Informationsstrukturen im Rahmen des funktionsbeschreibenden Materials definieren strukturelle und funktionale Verknüpfungen zwischen den Informationsstrukturen und dem computerlesbaren Medium 1025 und/oder anderen Aspekten des Systems 1000. Diese Verknüpfungen erlauben die Umsetzung der Funktionalität der Informationsstrukturen.
-
Überdies definieren Computerprogramme im Rahmen dieses funktionsbeschreibenden Materials strukturelle und funktionale Verknüpfungen zwischen den Computerprogrammen und dem computerlesbaren Medium 1025 und anderen Aspekten des Systems 1000. Diese Verknüpfungen erlauben die Umsetzung der Funktionalität der Computerprogramme. Somit enthält das computerlesbare Medium 1025 im allgemeinen Sinn Informationen wie etwa Anweisungen, die die Computervorrichtung 1005 (das System 1000 im Allgemeinen) bei Ausführung durch die Computervorrichtung 1005 dazu bringen, die durch einen Prozess, ein Computerprogramm, Software, Firmware, ein Verfahren, einen Algorithmus usw., der, das oder die (teilweise oder zur Gänze) in dem computerlesbaren Medium 1025 enthalten ist, vorgeschriebene Funktionalität bereitzustellen.
-
Zur Veranschaulichung liest die Computervorrichtung 1005 das funktionsbeschreibende Material, greift darauf zu oder kopiert es in einen Computerspeicher (in der Figur nicht ausdrücklich gezeigt) der Computervorrichtung 1005 (oder nach Wunsch in einen gesonderten Block oder eine gesonderte Speicherschaltung, der oder die mit der Computervorrichtung 1005 gekoppelt ist). Die Computervorrichtung 1005 führt als Reaktion auf das Material, das in dem Computerspeicher vorhanden ist, Tätigkeiten durch. Die Computervorrichtung 1005 kann die Tätigkeiten des Verarbeitens einer Computeranwendung, die die Computervorrichtung 1005 zur Durchführung zusätzlicher Tätigkeiten bringt, durchführen. Entsprechend zeigt das funktionsbeschreibende Material eine funktionale Verknüpfung mit der Weise, auf die die Computervorrichtung 1005 Prozesse ausführt und Tätigkeiten durchführt.
-
Darüber hinaus bildet das computerlesbare Medium 1025 eine Vorrichtung, von der aus die Computervorrichtung 1005 auf Computerinformationen, Programme, Code und/oder Anwendungen zugreifen kann. Die Computervorrichtung 1005 kann die Informationen, die Programme, den Code und/oder die Anwendungen, die die Computervorrichtung 1005 zur Durchführung zusätzlicher oder gewünschter Aufgaben oder Tätigkeiten bringen, verarbeiten.
-
Es ist zu beachten, dass das computerlesbare Medium 1025 auf eine Vielfalt von Weisen umgesetzt werden kann, wie Durchschnittsfachleute verstehen würden. Zum Beispiel kann nach Wunsch ein in der Computervorrichtung 1005 (und/oder außerhalb der Computervorrichtung 1005) vorhandener Speicher ein computerlesbares Medium 1025 bilden.
-
Alternativ kann das computerlesbare Medium 1025 dann, wenn die Computervorrichtung 1005 das funktionsbeschreibende Material von einem Netzwerk von Computersystemen oder Informationsverarbeitungssystemen erhält, zum Beispiel einen Satz von zugehörigen, verknüpften, (z.B. über Leiter, Fasern usw.) gekoppelten oder vernetzten computerlesbaren Medien aufweisen. Es ist zu beachten, dass die Computervorrichtung 1005 das funktionsbeschreibende Material nach Wunsch von dem computerlesbaren Medium 1025, dem Netzwerk oder beiden erhalten kann. Zudem ist es nach Wunsch möglich, einen Eingang (Eingänge) des Systems 1000 von einem oder mehreren Netzwerken (nicht gezeigt) zu erhalten und/oder diesem (diesen) einen Ausgang (Ausgänge) des Systems 1000 bereitzustellen.
-
Verschiedene Schaltungen und Blöcke, die oben beschrieben wurden und bei beispielhaften Ausführungsformen verwendet werden, können auf eine Vielfalt von Weisen und unter Verwendung einer Vielfalt von Elementen oder Blöcken umgesetzt werden. Zum Beispiel können die Blöcke und Schaltungsanordnungen in dem Array-Prozessor 1 allgemein unter Verwendung von digitalen Schaltungsanordnungen umgesetzt werden. Die digitalen Schaltungsanordnungen können nach Wunsch Schaltungselemente oder Blöcke wie etwa Gatter, digitale Multiplexierer (MUXs), Zwischenspeicher, Flipflops, Register, FSMs, Prozessoren, programmierbare Logik (z.B. feldprogrammierbare Gateanordnungen (FPGAs) oder andere Arten von programmierbarer Logik), ALUs, Standardzellen, benutzerdefinierte Zellen, Gatter, Durchlassgatter usw. aufweisen, wie Durchschnittsfachleute verstehen werden. Zudem können nach Wunsch analoge Schaltungsanordnungen oder Mischsignalschaltungsanordnungen oder beides (z.B. in der IC 550 in 21) vorhanden sein, zum Beispiel Leistungswandler, diskrete Vorrichtungen (Transistoren, Kondensatoren, Widerstände, Induktoren, Dioden usw.) und dergleichen. Die analogen Schaltungsanordnungen können nach Wunsch Vorspannschaltungen, Entkopplungsschaltungen, Kopplungsschaltungen, Versorgungsschaltungen, Stromspiegel, Strom- und/oder Spannungsquellen, Filter, Verstärker, Wandler, Signalverarbeitungsschaltungen (z.B. Multiplizierer), Detektoren, Umformer, diskrete Komponenten (Transistoren, Dioden, Widerstände, Kondensatoren, Induktoren), analoge MUXs und dergleichen aufweisen, wie Durchschnittsfachleute verstehen werden. Die Mischsignalschaltungsanordnungen können zusätzlich zu den wie oben beschriebenen analogen Schaltungsanordnungen und digitalen Schaltungsanordnungen Analog-Digital-Wandler (ADWs), Digital-Analog-Wandler (DAWs) usw. aufweisen, wie Durchschnittsfachleute verstehen werden. Die Wahl der Schaltungsanordnung für eine gegebene Umsetzung hängt von einer Vielfalt von Faktoren ab, wie Durchschnittsfachleute verstehen werden. Diese Faktoren umfassen Designspezifikationen, Leistungsspezifikationen, die Kosten, die IC- oder Vorrichtungsfläche, die verfügbare Technologie (wie etwa die Halbleiterherstellungstechnologie), die Zielmärkte, die Zielendnutzer usw.
-
Unter Bezugnahme auf die Figuren werden Durchschnittsfachleute erkennen, dass die verschiedenen gezeigten Blöcke hauptsächlich die konzeptuellen Funktionen und den Signalfluss darstellen könnten. Die tatsächliche Schaltungsumsetzung könnte für die verschiedenen Funktionsblöcke möglicherweise gesondert identifizierbare Hardware enthalten oder auch nicht und könnte die bestimmte gezeigte Schaltungsanordnung verwenden oder auch nicht. Zum Beispiel könnte die Funktionalität von verschiedenen Blöcken nach Wunsch zu einer Schaltung kombiniert werden. Darüber hinaus kann die Funktionalität eines einzelnen Blocks nach Wunsch in mehreren Schaltungsblöcken ausgeführt werden. Die Wahl der Schaltungsumsetzung hängt von verschiedenen Faktoren wie etwa bestimmten Design- und Leistungsspezifikationen für eine gegebene Umsetzung ab. Durchschnittsfachleuten werden andere Abwandlungen und alternative Ausführungsformen neben den Ausführungsformen in der Offenbarung offensichtlich sein. Entsprechend lehrt die Offenbarung Fachleuten die Art der Ausführung der offenbarten Konzepte nach beispielhaften Ausführungsformen und soll sie nur als anschaulich interpretiert werden. Gegebenenfalls könnten die Figuren maßstabsgetreu gezeichnet sein oder auch nicht, wie Durchschnittsfachleute verstehen werden.
-
Die bestimmten Formen und Ausführungsformen, die gezeigt und beschrieben wurden, stellen lediglich beispielhafte Ausführungsformen dar. Fachleute können verschiedene Änderungen an der Form, der Größe und der Anordnung von Teilen vornehmen, ohne von dem Umfang der Offenbarung abzuweichen. Zum Beispiel können Fachleute die dargestellten und beschriebenen Elemente durch gleichwertige Elemente ersetzen. Überdies können Fachleute bestimmte Merkmale der offenbarten Konzepte unabhängig von der Verwendung anderer Merkmale benutzen, ohne von dem Umfang der Offenbarung abzuweichen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-