DE112013006309T5 - Funktionseinheit mit Baumstruktur zur Unterstützung eines Vektorsortieralgorithmus und anderer Algorithmen - Google Patents

Funktionseinheit mit Baumstruktur zur Unterstützung eines Vektorsortieralgorithmus und anderer Algorithmen Download PDF

Info

Publication number
DE112013006309T5
DE112013006309T5 DE112013006309.3T DE112013006309T DE112013006309T5 DE 112013006309 T5 DE112013006309 T5 DE 112013006309T5 DE 112013006309 T DE112013006309 T DE 112013006309T DE 112013006309 T5 DE112013006309 T5 DE 112013006309T5
Authority
DE
Germany
Prior art keywords
vector
functional unit
instruction
elements
prefix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112013006309.3T
Other languages
English (en)
Inventor
Robert M. IOFFE
Nicolas C. Galoppo Von Borries
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112013006309T5 publication Critical patent/DE112013006309T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

Es ist eine Vorrichtung mit einer Funktionseinheit einer Anweisungsausführungs-Pipeline beschrieben. Die Funktionseinheit hat mehrere Vergleichs- und Austauschschaltungen, die an einen Netzschaltkreis zum Implementieren eines Vektorsortierbaums für eine Vektorsortieranweisung gekoppelt sind. Jede der Vergleichs- und Austauschschaltungen hat eine entsprechende Vergleichsschaltung, die ein Paar von Eingängen vergleicht. Jede der Vergleichs- und Austauschschaltungen hat einen ersten Ausgang an derselben Seite zum Präsentieren eines höheren der zwei Eingänge und einen zweiten Ausgang an derselben Seite zum Präsentieren eines niedrigeren der zwei Eingänge, wobei die Vergleichsschaltung auch die Ausführung der Funktionseinheit einer Präfix min und/oder Präfix-Additions-Anweisung unterstützt.

Description

  • 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.

Claims (21)

  1. Vorrichtung, aufweisend: eine Funktionseinheit einer Anweisungsausführungs-Pipeline mit mehreren Vergleichs- und Austauschschaltungen, die an einen Netzschaltkreis zum Implementieren eines Vektorsortierbaums für eine Vektorsortieranweisung gekoppelt sind, wobei jede der Vergleichs- und Austauschschaltungen eine entsprechende Vergleichsschaltung aufweist, die ein Paar von Eingängen vergleicht, wobei jede der Vergleichs- und Austauschschaltungen einen ersten Ausgang an derselben Seite aufweist, um einen höheren der zwei Eingänge zu präsentieren, und einen zweiten Ausgang an derselben Seite aufweist, um einen niedrigeren der zwei Eingänge zu präsentieren, wobei die Vergleichsschaltung auch die Ausführung einer Präfix min und/oder Präfix-Additions-Anweisung durch die Funktionseinheit unterstützt.
  2. Vorrichtung nach Anspruch 1, wobei die Funktionseinheit ein Sortieren verschieden großer Vektoren unterstützt.
  3. Vorrichtung nach Anspruch 2, wobei eine bestimmte der Größen mit einem Sofort-Operanden der Vektorsortieranweisung spezifiziert ist.
  4. Vorrichtung nach Anspruch 2, wobei die verschieden großen Vektoren 2 Elemente, 4 Elemente, 8 Elemente und 16 Elemente enthalten.
  5. Vorrichtung nach Anspruch 2, wobei die Funktionseinheit gleichzeitig zwei Vektoren sortieren kann, deren Größe geringer ist als eine maximale Vektorgröße, die durch den Vektorsortierbaum sortiert werden kann.
  6. Vorrichtung nach Anspruch 1, wobei der Netzschaltkreis ein konfigurierbares Schaltnetz enthält.
  7. Vorrichtung nach Anspruch 6, wobei die Funktionseinheit eine Speicherschaltung enthält, die einen Mikrocode enthält, der dem konfigurierbaren Schaltnetz Steuersignale für die Vektorsortieranweisung präsentiert.
  8. Vorrichtung, aufweisend: eine Funktionseinheit einer Anweisungsausführungs-Pipeline mit mehreren Vergleichs- und Austauschschaltungen, die an einen Netzschaltkreis gekoppelt sind, um einen Vektorsortierbaum für eine Vektorsortieranweisung zu implementieren, wobei jede der Vergleichs- und Austauschschaltungen eine entsprechende Vergleichsschaltung hat, die ein Paar von Eingängen vergleicht, wobei jede der Vergleichs- und Austauschschaltungen einen ersten Ausgang an derselben Seite hat, um einen höheren der zwei Eingänge zu präsentieren, und einen zweiten Ausgang an derselben Seite, um einen niedrigeren der zwei Eingänge zu präsentieren, wobei jede der Schaltungen auch eines der Folgenden aufweist: einen Addierer zum Implementieren einer Präfix-Additions-Anweisung mit der Funktionseinheit; einen Multiplizierer zum Implementieren einer Präfix-Multiplikationsanweisung mit der Funktionseinheit.
  9. Vorrichtung nach Anspruch 8, wobei die Funktionseinheit ein Sortieren verschieden großer Vektoren unterstützt.
  10. Vorrichtung nach Anspruch 9, wobei eine besondere der Größen mit einem Sofort-Operanden der Vektorsortieranweisung spezifiziert ist.
  11. Vorrichtung nach Anspruch 9, wobei die verschieden großen Vektoren 2 Elemente, 4 Elemente, 8 Elemente und 16 Elemente enthalten.
  12. Vorrichtung nach Anspruch 9, wobei die Funktionseinheit gleichzeitig zwei Vektoren sortieren kann, deren Größe geringer ist als eine maximale Vektorgröße, die durch den Vektorsortierbaum sortiert werden kann.
  13. Vorrichtung nach Anspruch 8, wobei der Netzschaltkreis ein konfigurierbares Schaltnetz enthält.
  14. Vorrichtung nach Anspruch 13, wobei die Funktionseinheit eine Speicherschaltung enthält, die einen Mikrocode enthält, der dem konfigurierbaren Schaltnetz Steuersignale für die Vektorsortieranweisung präsentiert.
  15. Vorrichtung nach Anspruch 8, wobei der Komparator jeder der Schaltungen auch zum Implementieren einer der Folgenden mit der Funktionseinheit verwendet wird: einer Präfix min Anweisung; einer Präfix max Anweisung.
  16. Verfahren, aufweisend: Durchführen des Folgenden mit dem Funktionseinheitsschaltkreis einer Anweisungsausführungs-Pipeline zur Ausführung einer Vektorsortieranweisung: gleichzeitiges Empfangen eines ersten Vektors und eines zweiten Vektors; Hindurchleiten von Elementen des ersten und zweiten Vektors durch mehrere Vergleichs- und Austauschschaltungen, die einen Sortierbaum zum Sortieren des ersten und zweiten Vektors implementieren, wobei jede der Vergleichs- und Austauschschaltungen Folgendes ausführt: Vergleichen eines Paares der Elemente; Präsentieren eines höheren des Paares von Elementen an einem ersten Ausgang derselben Seite; Präsentieren eines niedrigeren des Paares von Elementen an einem zweiten Ausgang an derselben Seite.
  17. Verfahren nach Anspruch 16, wobei die Anweisung eine Größe des ersten und zweiten Vektors spezifiziert.
  18. Verfahren nach Anspruch 17, wobei die Funktionseinheit die Größe zum Bestimmen verwendet, durch wie viele Stufen des Sortierbaums die Elemente hindurchgehen.
  19. Verfahren nach Anspruch 16, des Weiteren aufweisend ein Ausführen einer von einer Präfix Summen-Anweisung oder Präfix-Additions-Anweisung mit der Funktionseinheit.
  20. Verfahren nach Anspruch 16, des Weiteren aufweisend ein Ausführen einer von einer Präfix min Anweisung oder Präfix max Anweisung mit der Funktionseinheit.
  21. Vorrichtung, aufweisend: eine Funktionseinheit einer Anweisungsausführungs-Pipeline mit mehreren Vergleichs- und Austauschschaltungen, die an einen Netzschaltkreis gekoppelt sind, um einen Vektorsortierbaum zum gleichzeitigen Sortieren von mehr als einem Eingangsvektor zu implementieren, wobei jede der Vergleichs- und Austauschschaltungen eine entsprechende Vergleichsschaltung hat, die ein Paar von Eingängen vergleicht, wobei jede der Vergleichs- und Austauschschaltungen einen ersten Ausgang an derselben Seite zum Präsentieren eines höheren der zwei Eingänge und einen zweiten Ausgang an derselben Seite zum Präsentieren eines niedrigeren der zwei Eingänge hat.
DE112013006309.3T 2012-12-28 2013-06-20 Funktionseinheit mit Baumstruktur zur Unterstützung eines Vektorsortieralgorithmus und anderer Algorithmen Withdrawn DE112013006309T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/730,685 2012-12-28
US13/730,685 US9405538B2 (en) 2012-12-28 2012-12-28 Functional unit having tree structure to support vector sorting algorithm and other algorithms
PCT/US2013/046801 WO2015094145A2 (en) 2012-12-28 2013-06-20 Functional unit having tree structure to support vector sorting algorithm and other algorithms

Publications (1)

Publication Number Publication Date
DE112013006309T5 true DE112013006309T5 (de) 2015-09-10

Family

ID=51018675

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013006309.3T Withdrawn DE112013006309T5 (de) 2012-12-28 2013-06-20 Funktionseinheit mit Baumstruktur zur Unterstützung eines Vektorsortieralgorithmus und anderer Algorithmen

Country Status (5)

Country Link
US (2) US9405538B2 (de)
KR (2) KR101766183B1 (de)
CN (1) CN105051679B (de)
DE (1) DE112013006309T5 (de)
WO (1) WO2015094145A2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI604379B (zh) * 2014-12-24 2017-11-01 英特爾公司 用於k最近相鄰者搜尋之系統、設備及方法
US10303735B2 (en) 2015-11-18 2019-05-28 Intel Corporation Systems, apparatuses, and methods for K nearest neighbor search
US20160283549A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Value sorter
CN107948102A (zh) * 2016-10-12 2018-04-20 深圳市中兴微电子技术有限公司 一种矢量数据的并行排序网络及方法
KR102235803B1 (ko) 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device
US10574593B2 (en) * 2017-04-19 2020-02-25 Infineon Technologies Ag Median filter that re-uses comparators when sorting data
KR102343652B1 (ko) 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
CN107832845A (zh) 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
US10691412B2 (en) 2018-08-31 2020-06-23 International Business Machines Corporation Parallel sort accelerator sharing first level processor cache
US10579332B1 (en) 2018-08-31 2020-03-03 International Business Machines Corporation Hardware sort accelerator sharing first level processor cache
US10725738B2 (en) 2018-08-31 2020-07-28 International Business Machines Corporation Adaptive sort accelerator sharing first level processor cache
US11990137B2 (en) 2018-09-13 2024-05-21 Shanghai Cambricon Information Technology Co., Ltd. Image retouching method and terminal device
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US10831478B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US11500841B2 (en) 2019-01-04 2022-11-15 International Business Machines Corporation Encoding and decoding tree data structures as vector data structures
US11042356B2 (en) 2019-02-28 2021-06-22 International Business Machines Corporation Tournament tree rollback for payload write exception
US11593106B1 (en) * 2021-09-24 2023-02-28 Apple Inc. Circuits and methods for vector sorting in a microprocessor

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62208167A (ja) * 1986-03-10 1987-09-12 Hitachi Ltd ベクトル処理装置
US5287494A (en) 1990-10-18 1994-02-15 International Business Machines Corporation Sorting/merging tree for determining a next tournament champion in each cycle by simultaneously comparing records in a path of the previous tournament champion
US5937188A (en) * 1994-05-16 1999-08-10 British Telecommunications Public Limited Company Instruction creation device
US7358872B2 (en) * 2005-09-01 2008-04-15 Micron Technology, Inc. Method and apparatus for converting parallel data to serial data in high speed applications
US7788268B2 (en) * 2008-01-08 2010-08-31 International Business Machines Corporation In-place sorting using node specific mask width
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
EP2466472A1 (de) 2010-12-17 2012-06-20 ST-Ericsson SA Vektorbasierte Anpassungsschaltung für Datenströme
CN104517091A (zh) * 2013-09-29 2015-04-15 北大方正集团有限公司 一种qr码探测图形的筛选方法及系统

Also Published As

Publication number Publication date
US20140189292A1 (en) 2014-07-03
WO2015094145A3 (en) 2015-08-20
KR20170016998A (ko) 2017-02-14
KR20150101995A (ko) 2015-09-04
WO2015094145A2 (en) 2015-06-25
KR101766183B1 (ko) 2017-08-07
US20160342418A1 (en) 2016-11-24
US9760373B2 (en) 2017-09-12
CN105051679B (zh) 2018-06-29
KR101703797B1 (ko) 2017-02-07
CN105051679A (zh) 2015-11-11
US9405538B2 (en) 2016-08-02

Similar Documents

Publication Publication Date Title
DE112013006309T5 (de) Funktionseinheit mit Baumstruktur zur Unterstützung eines Vektorsortieralgorithmus und anderer Algorithmen
DE68927371T2 (de) Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69928428T2 (de) Multiplizier-akkumulator-konfiguration zur effizienten planung in einem digitalen signalverarbeitungsrechner
DE69229244T2 (de) Multiprozessor mit effizienter Verwendung von Prozessoren mit unterschiedlichen Leistungseigenschaften
DE68920388T2 (de) Paralleles Rechnersystem mit Verwendung eines SIMD-Verfahrens.
DE3751235T2 (de) Vielfachknotenrechner mit rekonfigurierbarer Pipelinestruktur.
DE69132495T2 (de) Verteilter Verarbeitungsspeicher
EP0875031B1 (de) Prozessor zur bildverarbeitung
DE3854568T2 (de) SIMD-Feldrechner.
DE68928530T2 (de) Modulare Kreuzschienenzwischenverbindungen in einem digitalen Rechner
DE69033272T2 (de) Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem
DE69300041T2 (de) Mehrfachprozessor-Datenverarbeitungssystem.
DE3787886T2 (de) Parallelprozessor mit binärer baumstruktur.
DE2714805C2 (de)
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE3882772T2 (de) Vektorprozessor angepasst zum Sortieren von Vektordaten.
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE102014011332A1 (de) Priorisieren von anweisungen basierend auf typ
DE3049437A1 (de) Matrixanordnung einer vielzahl von verarbeitungselementen fuer parallelprozessoren
DE3338333A1 (de) Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur
DE69106384T2 (de) Skalierbares parallel-vektorrechnersystem.
DE3588212T2 (de) Verfahren und Gerät zum Suchen von Daten
DE69230626T2 (de) Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R409 Internal rectification of the legal status completed
R409 Internal rectification of the legal status completed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee