-
Gebiet der Erfindung
-
Das Gebiet der Erfindung betrifft im Allgemeinen die Informatik und insbesondere eine Funktionseinheit, die imstande ist, mehrere verschiedene Anweisungen mit einem Sortiernetz auszuführen.
-
Allgemeiner Stand der Technik
-
Vektoranweisungsausführungs-Pipeline
-
1 zeigt ein Diagramm auf hoher Ebene eines Verarbeitungskerns 100, der mit einem logischen Schaltkreis auf einem Halbleiterchip implementiert ist. Der Verarbeitungskern enthält eine Pipeline 101. Die Pipeline besteht aus mehreren Stufen, die jeweils zur Ausführung eines speziellen Schritts in einem mehrstufigen Prozess gestaltet sind, der zur vollständigen Ausführung einer Programmcode-Anweisung gestaltet ist. Diese enthalten typischerweise zumindest: 1) Anweisungsabruf und Decodieren; 2) Datenabruf; 3) Ausführung; 4) Zurückschreiben. Die Ausführungsstufe führt eine spezielle Operation, die durch eine Anweisung identifiziert ist, die in einer früheren Stufe bzw. früheren Stufen (z. B. oben in Schritt 1)) abgerufen wurden, an Daten aus, die durch dieselbe Anweisung identifiziert und in einer anderen früheren Stufe (z. B. oben in Schritt 2)) abgerufen wurden. Die Daten, die bearbeitet werden, werden typischerweise von einem (Allzweck-)Registerspeicherraum 102 abgerufen. Neue Daten, die bei Beendigung der Operation erstellt werden, werden auch typischerweise in den Registerspeicherraum ”zurückgeschrieben” (z. B. oben in Stufe 4)).
-
Der logische Schaltkreis, der mit der Ausführungsstufe verknüpft ist, besteht typischerweise aus mehreren ”Ausführungseinheiten” oder ”Funktionseinheiten” 103_1 bis 103_N, die jeweils zur Durchführung ihres eigenen Teilsatzes von Operationen gestaltet sind (z. B. führt eine erste Funktionseinheit ganzzahlige mathematische Operationen aus, eine zweite Funktionseinheit führt Fließkommaanweisungen aus, eine dritte Funktionseinheit führt Lade/Speicher-Operationen aus/in einen Cache/Speicher aus, usw.). Die Gesamtheit aller Operationen, die von all den Funktionseinheiten ausgeführt wird, entspricht dem ”Anweisungssatz”, der vom Verarbeitungskern 100 unterstützt wird.
-
Es sind zwei Arten von Prozessorarchitekturen allgemein im Bereich der Informatik anerkannt: ”skalar” und ”Vektor”. Ein skalarer Prozessor ist zur Ausführung von Anweisungen gestaltet, die Operationen an einem einzigen Datensatz ausführen, während ein Vektorprozessor zur Ausführung von Anweisungen gestaltet ist, die Operationen an mehreren Datensätzen ausführen. 2A und 2B stellen ein vergleichendes Beispiel dar, das den grundlegenden Unterschied zwischen einem skalaren Prozessor und einem Vektorprozessor zeigt.
-
2A zeigt ein Beispiel einer skalaren UND-Anweisung, in welcher ein einziger Operandensatz, A und B, UND-verknüpft wird, um ein singuläres (oder ”skalares”) Ergebnis C zu erzeugen (d. h., A.UND.B = C). Im Gegensatz dazu zeigt 2B ein Beispiel einer Vektor-UND-Anweisung, in der zwei Operandensätze, A/B und DIE, jeweils UND-verknüpft werden, um ein Vektorergebnis C, F zu erzeugen (d. h., A.UND.B = C und D.UND.E = F). Bezüglich der Terminologie ist ein ”Vektor” ein Datenelement mit mehreren ”Elementen”. Zum Beispiel hat ein Vektor V = Q, R, S, T, U fünf verschiedene Elemente: Q, R, S, T und U. Die ”Größe” des beispielhaften Vektors V ist fünf (da er fünf Elemente hat).
-
1 zeigt auch das Vorhandensein eines Vektorregisterraums 107, der sich vom Allzweck-Registerraum 102 unterscheidet. Im Speziellen, wird der Allzweck-Registerraum 102 nominell zum Speichern skalarer Werte verwendet. Als solches, wenn Ausführungseinheiten skalare Operationen ausführen, verwenden sie nominell Operanden, die vom Allzweck-Registerspeicherraum 102 abgerufen werden (und schreiben Ergebnisse in diesen zurück). Wenn im Gegensatz dazu Ausführungseinheiten Vektoroperationen ausführen, verwenden sie nominell Operanden, die vom Vektorregisterraum 107 abgerufen werden (und schreiben Ergebnisse in diesen zurück). Unterschiedliche Speicherbereiche können ebenso dem Speichern von skalaren Werten und Vektorwerten zugeordnet werden.
-
Es ist das Vorhandensein einer Maskierungslogik 104_1 bis 104_N und 105_1 bis 105_N an den jeweiligen Eingängen und Ausgängen in die und aus den Funktionseinheiten 103_1 bis 103_N zu beachten. In verschiedenen Implementierungen für Vektoroperationen ist nur eine dieser Schichten tatsächlich implementiert – obwohl dies keine strenge Anforderung ist (obwohl in 1 nicht dargestellt, müssen Ausführungseinheiten, die nur skalare und keine Vektoroperationen ausführen, natürlich keine Maskierungsschicht haben). Für jede Vektoranweisung, die eine Maskierung verwendet, kann eine Eingangsmaskierungslogik 104_1 bis 104_N und/oder eine Ausgangsmaskierungslogik 105_1 bis 105_N zur Steuerung verwendet werden, welche Elemente effektiv für die Vektoranweisung bearbeitet werden. Hier wird ein Maskenvektor aus einem Maskenregisterraum 106 ausgelesen (z. B. gemeinsam mit Eingangsoperandenvektoren, die aus dem Vektorregisterspeicherraum 107 gelesen werden) und wird zumindest einer der Schichten der Maskierungslogik- 104, 105 präsentiert.
-
Im Verlauf einer Ausführung eines Vektorprogrammcodes braucht nicht jede Vektoranweisung ein volles Datenwort. Zum Beispiel können die Eingangsvektoren für einige Anweisungen nur 8 Elemente sein, die Eingangsvektoren für andere Anweisungen können 16 Elemente sein, die Eingangsvektoren für andere Anweisungen können 32 Elemente sein, usw. Daher werden Maskierungsschichten 104/105 zum Identifizieren eines Satzes von Elementen eines vollen Vektordatenworts verwendet, die für eine bestimmte Anweisung gelten, so dass verschiedene Vektorgrößen quer durch Anweisungen betroffen sind. Typischerweise wird für jede Vektoranweisung ein spezielles Maskenmuster, das im Maskenregisterraum 106 gehalten wird, von der Anweisung aufgerufen, vom Maskenregisterraum abgerufen und einer oder beiden der Maskenschichten 104/105 bereitgestellt, um den korrekten Satz von Elementen für die bestimmte Vektoroperation ”freizugeben”.
-
Figuren
-
Die vorliegende Erfindung wird anhand eines Beispiels und nicht zur Einschränkung in den Figuren der beiliegenden Zeichnungen veranschaulicht, in welchen gleiche Bezugszeichen ähnliche Elemente angeben und in welchen:
-
1 (Stand der Technik) eine Ausführungsform einer Anweisungsausführungs-Pipeline zeigt;
-
2A–B (Stand der Technik) ein Beispiel einer Vektorverarbeitung zeigt;
-
3 (Stand der Technik) sich auf einen Sortieralgorithmus nach dem Stand der Technik bezieht;
-
4 eine Ausführungsform eines logischen Anweisungsausführungsschaltkreises zum Implementieren des Sortieralgorithmus von 3 in einer einzigen Anweisung zeigt;
-
5 eine Vergleichs- und Austauschschaltung zeigt;
-
6 den Sortierbaum von 3 zeigt, der durch den Schaltkreis von 4 implementiert ist;
-
7 einen anderen Baum zum Implementieren einer Präfix-Additions- und/oder Präfix-Multiplikationsanweisung mit dem Schaltkreis von 4 zeigt;
-
8 die Vergleichs- und Austauschschaltung von 5 zeigt, die so erweitert ist, dass sie eine Funktionalität zum Implementieren einer Additionsfunktion und einer Summen- und Austauschfunktion enthält;
-
9 die Vergleichs- und Austauschschaltung von 8 zeigt, die so erweitert ist, dass sie eine Funktionalität zum Implementieren einer Multiplikationsfunktion und einer Multiplikations- und Austauschfunktion enthält;
-
10 eine Ausführungsform eines Prozessors zeigt.
-
Ausführliche Beschreibung
-
Sortieralgorithmus nach dem Stand der Technik
-
3 zeigt einen Softwareprozess nach dem Stand der Technik, der einen Satz ungeordneter Daten in einen geordneten Satz sortiert. Unter Bezugnahme auf 3 wird ein ungeordneter Eingangssatz 301 durch den Sortierprozess, der in 3 dargestellt ist, geordnet, um einen sortierten Ausgangssatz 302 zu bilden. Ein sortierter Satz ist ein Satz von Werten, die nach gewissen Kriterien gereiht wurden. Das grundlegendste Kriterium, das in dem Prozess von 3 dargestellt ist, ist eine numerische Reihung. Das heißt, die Elemente in einem Satz sind anhand ihrer numerischen Werte relativ zueinander gereiht. Wie in 3 erkennbar ist, sind die Elemente eines sortierten Ausgangssatzes 302 in numerischer Reihenfolge gereiht, wobei kleinere Werte nach links ausgerichtet sind und höhere Werte nach rechts ausgerichtet sind.
-
Der sortierte Ausgangssatz 302 wird aus dem unsortierten Eingangssatz 301 gemäß der Abfolge von Prozeduren erzeugt, die in 3 dargestellt ist. Hier stellt jeder horizontale Balken eine ”Vergleichs- und Austausch-”Operation dar, in der die zwei verbundenen Werte verglichen werden und das niedrigere der zwei verglichenen Elemente zum ganz linken stromabwärts liegenden Pfad geleitet wird, der der horizontalen Verbindung entspringt, während das höhere der zwei verglichenen Elemente zum ganz rechten stromabwärts liegenden Pfad aus der horizontalen Verbindung geleitet wird.
-
Bisher wurde der oben beschriebene Sortieralgorithmus in Software implementiert, so dass jedes neu berechnete Element in einem Zwischensatz oder dem resultierenden Satz mehrere CPU-Anweisungen verbraucht. Als solches kann ein Berechnen des gesamten Algorithmus hunderte, wenn nicht tausende CPU Anweisungen verbrauchen.
-
Funktionseinheit, die zur Ausführung eines Sortieralgorithmus und anderer Algorithmen imstande ist
-
Für die deutliche Beschleunigung der Erstellung eines sortierten Satzes aus einem unsortierten Satz zeigt 4 eine Ausführungsform einer logischen Schaltungskonstruktion für eine Funktionseinheit 400 innerhalb einer Anweisungsausführungs-Pipeline, die einen Sortieralgorithmus mit einer einzigen Anweisung implementiert. Die Funktionseinheit ist auch imstande, zusätzliche Anweisungen auszuführen, wie in der Folge ausführlicher beschrieben ist.
-
Wie in 4 erkennbar ist, enthält die Funktionseinheit eine Bank von Vergleichs- und Austauschschaltungen 401 zwischen einem Paar von Schaltnetzen, die hier als das erste (vorangehende) Schaltnetz 402 und das zweite (folgende) Schaltnetz 403 bezeichnet werden. Der anfängliche Eingangsvektor wird an den a0 bis a15 Eingängen der Funktionseinheit 407 präsentiert. Durchschnittsfachleute werden erkennen, dass die Funktionalität der hier beschriebenen Funktionseinheit erfolgreich mit einem einzigen Schaltnetz implementiert werden kann, das der Vergleichs- und Austauschschaltungsbank 401 vorangeht oder folgt. Zur einfacheren Darstellung der ziemlich komplexen Schaltaufgaben der Funktionseinheit 400 wird jedoch in der Folge auf eine Ausführungsform mit zwei Schaltnetzen Bezug genommen.
-
Eine Registerbank 404 ist stromabwärts des zweiten Schaltnetzes 403 gekoppelt. Eine Nur-Lese-Speicher-(ROM)Schaltung 405 enthält einen Mikrocode, der Steuersignale zum ersten und zweiten Schaltnetz 402, 403 leitet, so dass Werte auf Kanalleitungen a0 bis a15 zu einer passenden Vergleichs- und Austauschschaltung innerhalb der Vergleichs- und Austauschschaltungsbank 401 geleitet werden. Die Registerbank 404 speist das erste Schaltnetz 402 in einer Loopback-Weise.
-
In der besonderen Ausführungsform von 4 sind acht Austausch- und Vergleichsschaltungen 406_1 bis 406_8 innerhalb der Vergleichs- und Austauschschaltungsbank 401 vorhanden. 5 zeigt eine Ausführungsform der Konstruktion 506 jeder Vergleichs- und Austauschschaltung. Wie in 5 erkennbar ist, hat eine einzige Vergleichs- und Austauschschaltung 506 zwei Eingänge und zwei Ausgänge. Eine Vergleichsschaltung 507 vergleicht die zwei Eingänge und bestimmt, welcher Eingang größer ist. Dann wird eine Ausgangsroute für die zwei Eingänge abhängig davon gewählt, welcher der Eingänge größer ist. In der besonderen Ausführungsform von 5 wird der größere Eingangswert am ganz rechten Ausgang 508 präsentiert und der niedrigere Eingangswert wird am ganz linken Ausgang 507 präsentiert.
-
Die Funktionseinheit implementiert dann den Sortierbaum von 3 nach dem Zeitablaufdiagramm von 6. 6 zeigt im Wesentlichen den Sortierbaum von 3, wobei die Stufen des Sortierbaums unter mehreren Taktzyklen der Funktionseinheit verteilt sind. Ferner beschreibt 6 den Zustand des ersten und zweiten Schaltnetzes 402, 403 für jeden Taktzyklus. Beispielsweise empfängt im zweiten Taktzyklus eine erste Vergleichs- und Austauschschaltung einen Eingang von den (erstes Netz) und generiert Ausgänge für (zweites Netz) die a0 und a2 Kanäle(n), eine zweite Vergleichs- und Austauschschaltung empfängt einen Eingang von den und generiert einen Ausgang für die a1 und a3 Kanäle(n), usw. Es ist zu beachten, dass die maximale Anzahl verwendeter Vergleichs- und Tauschschaltungen für jede Stufe acht ist (Taktzyklen 1, 4, 7, 9 und 10). Somit gibt es acht Vergleichs- und Austauschschaltungen 406_1 bis 406_8 innerhalb der Vergleichs- und Austauschbank 401.
-
Mit jedem neuen Taktzyklus werden die Werte innerhalb der Registerbank 404 zum ersten Schaltnetz 402 gelenkt, das Sätze von Werten, die zu vergleichen und auszutauschen sind, zu einer bestimmten der Vergleichs- und Austauschschaltungen innerhalb der Vergleichs- und Austauschbank 401 leitet. Jede Vergleichs- und Austauschschaltung führt ihre entsprechende Vergleichs- und Austauschfunktion an ihrem entsprechenden Wertepaar durch. Das Wertepaar wird dann vom zweiten Schaltnetz 403 zum richtigen Kanal der Registerbank 404 geleitet.
-
Nach Verstreichen einer geeigneten Ausbreitungsverzögerung durch das erste Schaltnetz 402, die Vergleichs- und Austauschbank 401 und das zweite Schaltnetz 403 werden die neu generierten Werte in der Registerbank 404 zwischengespeichert. Der Prozess wird dann für den nächsten Taktzyklus wiederholt, wobei sich der Zustand des ersten und zweiten Netzes (d. h., das Muster der innerhalb des Netzes errichteten Routen) typischerweise vom alten zum neuen Taktzyklus geändert wird. Hier steuert der Mikrocode von der ROM-Schaltung 405 den gesamten Fluss, einschließlich der Präsentation neuer Steuersignale beim ersten und zweiten Schaltnetz 402, 403 für jeden neuen Taktzyklus.
-
Wie in 3 erkennbar ist, kann ein Sechzehn-Element-Vektor in zehn Taktzyklen vollständig verarbeitet werden. Ferner ist das besondere Sortiermuster von 3 auch für Vektorgrößen von 2, 4, 6 und 8 geeignet. Somit ist die besondere Anweisung von 6 imstande, Vektoren der Größe 2, 4, 6, 8 oder 16 zu verarbeiten (Durchschnittsfachleute werden erkennen, dass noch größere Vektorgrößen möglich sind, z. B. 32, 64, usw.). Hier stellt zum Beispiel ein Vektor der Größe 16 einen Wert für jeden der Kanäle a0 bis a15 dar, ein Vektor der Größe 8 stellt einen Wert für jeden der Kanäle a0 bis a7 dar, usw. Überdies steigt die Anzahl erforderlicher Taktzyklen mit der Größe des Eingangsvektors. Wie oben erwähnt, werden zehn Taktzyklen beim Sortieren eines Vektors mit sechzehn Elementen verbraucht. Im Gegensatz dazu sind nur die ersten sechs Taktzyklen zum Sortieren eines Vektors mit acht Elementen erforderlich, nur die ersten drei Taktzyklen sind zum Sortieren eines Vektors mit vier Elementen erforderlich und nur der erste Taktzyklus ist zum Sortieren eines Vektors mit zwei Elementen erforderlich.
-
In dem Ausmaß, in dem Vektorgrößen von weniger als 16 unterhalten werden, kann die Funktionseinheit aufgrund der Symmetrie des Baumes mehrere Vektoren parallel verarbeiten. Das heißt, die Funktionseinheit kann ein Paar von Acht-Element-Vektoren parallel über den ersten sechs Taktzyklen sortieren (ein erster Eingangsvektor verbraucht Kanäle a0 bis a7 und ein zweiter Eingangsvektor verbraucht Kanäle a8 bis a15). Ebenso kann die Funktionseinheit gleichzeitig vier Eingangsvektoren der Größe vier über den ersten drei Taktzyklen sortieren (wobei die Eingangsvektoren zum Belegen der Kanäle a0–a3; a4–7; a8–a11; a12–a15 angeordnet sind) oder kann acht Eingangsvektoren der Größe zwei über den ersten Taktzyklus sortieren (wobei die Eingangsvektoren zum Belegen der Kanäle a0–a1; a2–a3; a4–a5; a6–a7; a8–a9; a10–a11; a12–a13; a14–a15 angeordnet sind).
-
Es besteht eine beachtliche ”Wiederverwendung” der Netzsteuersignale innerhalb des ROM 405 quer über mehrere Sortieranweisungen, die von der Funktionseinheit unterstützt werden. Anders ausgedrückt, die Funktionseinheit kann verschiedene Sortierfunktionen, wie oben beschrieben, mit nur einem einzigen Satz an Schaltnetzsteuersignalen, die im ROM 405 gespeichert sind (einen für jeden Taktzyklus) und Informationen, die angeben, wie viele Taktzyklen für die Anweisung erforderlich sind (z. B. als Funktion der Größe des Eingangsvektors (der Eingangsvektoren)) ausführen. In einer Ausführungsform enthält das Anweisungsformat einen Opcode oder Sofort-Operanden, der die Größe des Eingangsvektors (der Eingangsvektoren) spezifiziert. Basierend auf der Größe des Eingangsvektors (der Eingangsvektoren) kann der Mikrocode im ROM 405 bestimmen, wie viele Taktzyklen zur Ausführung der Anweisung erforderlich sind.
-
Abgesehen von Sortierfunktionen können zusätzliche Baumeinstellungen im ROM 405 gespeichert werden, um andere Funktionen (neben Sortierfunktionen) zu implementieren, die mit einigen zusätzlichen Funktionalitäten gekoppelt sind, die der Vergleichs- und Austauschschaltung von 5 hinzugefügt sind.
-
7 zeigt Baumeinstellungen zum Implementieren entweder einer oder beider von einer Präfix-Additions- oder Präfix-Multiplikations-Operation. Präfix-Additions- und Präfix-Multiplikations-Operationen sind nach dem Stand der Technik bekannt. Eine Präfix-Additions-Operation addiert Werte horizontal über einen Eingangsvektor und präsentiert als Ergebnis den Zwischenwert an jeder Elementposition, die der Summierung entspricht, die zur Elementposition führt. Zum Beispiel ist für einen Eingangsvektor 1 2 3 4 die Präfix-Additionsfunktion 0 1 3 6 10. Das spezielle Sortierbaummuster, das in 7 erkennbar ist, ist nach dem Stand der Technik bekannt. Seine Implementierung gemeinsam mit den Mikrocode-Baumeinstellungen, die auch zur Implementierung einer Sortierfunktion verwendet werden, wird als neu angenommen.
-
Jede horizontale Linie in den ersten vier Taktzyklen von 7 entspricht einer Additionsfunktion nach rechts, die zwei Eingangswerte empfängt und die Summierung der zwei Eingangswerte an ihrem ganz rechten Eingang präsentiert. Während des fünften Taktzyklus wird der ganz rechte Kanal a15 auf einen Wert 0 gelöscht. Jede horizontale Linie in Taktzyklen sechs, sieben, acht und neun entspricht einer Summen- und Austauschfunktion, die zwei Eingangswerte annimmt und die Summierung der zwei Eingangswerte am ganz rechten Ausgang bereitstellt und den ganz rechten Eingang am ganz linken Ausgang bereitstellt.
-
8 zeigt die Vergleichs- und Austauschschaltung von 5, die so erweitert ist, dass sie sowohl die nach rechts verlaufende Additionsfunktion wie auch die Summen- und Austauschfunktionen enthält. Hier bestimmt ein Auswahleingang 810 zur Schaltung 806, welche Funktion implementiert wird (Vergleich und Austausch; nach rechts verlaufende Addition; Summe und Austausch). Wie in 8 erkennbar ist, enthält die erweiterte Schaltung 806 einen Addierer 811 zum Implementieren der nach rechts verlaufenden Addition und Summen- und Austauschfunktionen. Der Auswahleingang 810 wird durch den Mikrocode bereitgestellt und wählt die nach rechts verlaufende Additionsfunktion für den ersten bis vierten Taktzyklus von 7 und die Summen- und Austauschfunktion für den sechsten bis achten Taktzyklus.
-
9 zeigt die Schaltung von 8, die so erweitert ist, dass Präfix-Multiplikationsfunktionen unterstützt werden können. Hier ist derselbe Baum wie in 7 implementiert, aber die Funktionen, die an jeder Stufe ausgeführt werden, entsprechen einer Multiplikation und nicht einer Addition. Die Schaltung von 9 unterstützt daher zwei zusätzliche Funktionen: nach rechts verlaufende Multiplikation, wo das Produkt der zwei Eingangswerte am ganz rechten Ausgang angeordnet ist und Multiplikation-und-Austausch, wo das Produkt der zwei Eingänge am ganz rechten Ausgang bereitgestellt ist und der ganz rechte Eingang am ganz linken Ausgang bereitgestellt ist. Als solches wird für diese Funktionen der Multiplizierer 912 anstelle des Addierers 911 verwendet. Die Schaltung unterstützt zwei weitere Eingangswerte am Auswahleingang 910 zur Auswahl dieser Funktionen.
-
In einer weiteren Implementation kann der Sortierbaum von 6 auch zum Implementieren von Präfix min und Präfix max Operationen verwendet werden. Eine Präfix min Operation stellt den Minimalwert dar, der für einen Eingangsvektor für jedes Element beobachtet werden kann, wenn der Eingangsvektor aus einer bestimmten Richtung abgetastet wird. Zum Beispiel ist für einen Eingangsvektor 5 4 7 9 8 2 7 der Ausgangsvektor 5 4 4 4 4 2 2, wenn er von links nach rechts abgetastet wird. Eine Präfix max Funktion stellt das Maximum bereit, das beobachtet wird, und nicht den beobachteten Minimalwert. Zum Beispiel ergibt beim Abtasten von links nach rechts die Präfix max Funktion das folgende Ergebnis für denselben Eingangsvektor 5 5 7 9 9 9 9.
-
Zur Implementierung dieser Funktionen kann derselbe Baum wie in 7 dargestellt (erneut) mit einer Modifizierung am Schaltkreis verwendet werden, der die logische Analyse durchführt. Hier kann die Schaltung von 9 erweitert werden, so dass sie eine zusätzliche Vergleichsfunktionalität enthält, die zwei Eingänge vergleicht und das Minimum am ganz rechten Ausgang (Präfix min) oder Maximum am ganz rechten Ausgang (Präfix max) darstellt. Diese Vergleichsfunktionen werden für Taktzyklen eins bis vier gewählt. Die obengenannte Vergleichs- und Austauschfunktion kann für Taktzyklen sechs bis acht verwendet werden.
-
In zusätzlichen Ausführungsformen spezifiziert das Anweisungsformat für die Funktionseinheit einen Opcode oder Sofort-Operanden, der anzeigt, welche von einigen/allen der verschiedenen zuvor beschriebenen Operationen (Sortieren, Präfix-Addition, Präfix-Multiplikation, Präfix min, Präfix max) auszuführen ist. Als Reaktion stellt der Mikrocode im ROM die korrekte Abfolge von Schaltnetzeinstellungen und Schaltungsauswahlen bereit, um die angegebene Operation auszuführen.
-
Es muss unbedingt festgehalten werden, dass die zuvor beschriebene Funktionseinheitskonstruktion eine einzige Bank von Vergleichs- und Austauschschaltungen vorsieht (möglicherweise erweitert, um andere Funktionen als einige/alle der oben beschriebenen Präfixfunktionen zu unterstützen), die über eine Reihe von Takteinstellungen mit geeigneten Schaltnetzeinstellungen ”durchgeschleift” ist. Dieser besondere Konstruktionsansatz spart möglicherweise Halbleiterfläche, da im Fall des Baums von 6 nur acht Vergleichs- und Austauschschaltungen erforderlich sind, obwohl 63 Vergleichs- und Austauschfunktionen ausgeführt werden (d. h., es gibt 63 horizontale Linien in 6).
-
Obwohl Halbleiterfläche gespart wird, kann derselbe Ansatz mehr Taktzyklen verbrauchen als der Ansatz beim entgegengesetzten Extrem. Das heißt, eine alternative Ausführungsform könnte die Konstruktion des gesamten Baums von 6 in Hardware sein. In diesem Fall sind 63 separate Vergleichs- und Austauschschaltungen an die a0–a15 Kanäle in dem Baum gemäß den in 6 dargestellten Verbindungen angeschlossen. Diese verschiedenen Schaltverbindungen können auch als ein Netz (wenn auch als ein hart verdrahtetes und nicht konfiguriertes/konfigurierbares) angesehen werden. Dieser Ansatz kann möglicherweise weniger Taktzyklen verbrauchen, da die Ausbreitungsverzögerung der gesamten Funktionseinheit für die Sortierfunktion mit der Ausbreitungsverzögerung durch zehn Vergleichs- und Austauschschaltungen vergleichbar wird (eine Ausbreitungsverzögerung für jede Stufe durch den Baum). In diesem Fall braucht der ROM keine Netzschalteinstellungen enthalten. Wenn die Funktionseinheit erweitert wird, so dass sie die Präfix Operationen enthält, werden jene Verbindungen, die im Baum von 6 beobachtet werden, die zum Unterstützen des Präfix Baums von 7 verwendet werden können, wie auch spezielle zusätzliche Verbindungen, die nicht einfach wiederverwendet werden können, vom Baum von 6 ”freigegeben”.
-
Andere Konstruktionsansätze können irgendwo zwischen diesen zwei Extremen liegen (vollständig konfigurierbarer Netzschaltkreis gegenüber vollständig verdrahtetem Netzschaltkreis) um ein Gleichgewicht zwischen Siliziumflächenverbrauch und Geschwindigkeit zu erreichen.
-
Durchschnittsfachleute sind imstande, die Baummuster, die oben angeführt sind, zu erweitern, um alternative Ausführungsformen zu konstruieren, die Vektorgrößen größer oder kleiner 16 aufnehmen. Anders gesagt, Durchschnittsfachleute sind imstande, die oben angeführten Lehren zur Konstruktion anderer Baum-Ausführungsformen mit mehr oder weniger als sechzehn Kanälen zu verwenden.
-
10 zeigt die Architektur eines beispielhaften Mehrfachkern-Prozessors 1000. Wie in 1000 dargestellt, enthält der Prozessort: 1) mehrere Verarbeitungskerne 1001_1 bis 1001_N; 2) ein Verbindungsnetz 1002; 3) ein Cache-System letzter Ebene 1003; 4) eine Speichersteuerung 1004 und einen I/O-Hub 1005. Jeder der Verarbeitungskerne enthält eine oder mehrere Anweisungsausführungs-Pipelines zur Ausführung von Programmcode-Anweisungen. Einige oder alle solcher Anweisungsausführungs-Pipelines können die Ausführung von Vektoranweisungen in Übereinstimmung mit der Beschreibung von 1 unterstützen und enthalten eine Funktionseinheit, die die oben in Bezug auf 4 bis 9 besprochenen Operationen ausführen kann. Das Verbindungsnetz 1002 dient zum Verbinden jedes der Kerne 1001_1 bis 1001_N mit jedem anderen wie auch den anderen Komponenten 1003, 1004, 1005. Das Cache-System letzter Ebene 1003 dient als Cache letzter Schicht im Prozessor, bevor Anweisungen und/oder Daten zum Systemspeicher 1008 geräumt werden.
-
Die Speichersteuerung 1004 liest/schreibt Daten und Anweisungen aus dem/in den Systemspeicher 1008. Der I/O-Hub 1005 verwaltet die Kommunikation zwischen dem Prozessor und ”I/O” Vorrichtungen (z. B. nicht flüchtige Speichervorrichtungen und/oder Netzschnittstellen). Port 1006 entspringt dem Verbindungsnetz 1002 zur Verknüpfung mehrerer Prozessoren, so dass Systeme mit mehr als N Kernen realisiert werden können. Ein Grafikprozessor 1007 führt Grafikberechnungen aus. Ein Leistungsverwaltungsschaltkreis (nicht dargestellt) verwaltet die Leistungs- und Energiezustände des Prozessor als Ganzes (”Paketebene”) wie auch Aspekte der Leistungs- und Energiezustände der einzelnen Einheiten innerhalb des Prozessors, wie die einzelnen Kerne 1001_1 bis 1001_N, Grafikprozessor 1007, usw. Andere Funktionsblöcke von Bedeutung (z. B. Phasenregel-(PLL)Schaltkreis) sind der Einfachheit wegen in 10 nicht dargestellt.
-
In der vorangehenden Beschreibung wurde die Erfindung unter Bezugnahme auf ihre speziellen beispielhaften Ausführungsformen beschrieben. Es ist jedoch klar, dass verschiedene Modifizierungen und Änderungen vorgenommen werden können, ohne vom umfassenderen Wesen und Schutzumfang der Erfindung abzuweichen, wie in den beiliegenden Ansprüchen angegeben. Die Beschreibung und Zeichnungen sind daher als eine Veranschaulichung und nicht in einschränkendem Sinn zu betrachten.