DE102014002510A1 - Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur - Google Patents
Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur Download PDFInfo
- Publication number
- DE102014002510A1 DE102014002510A1 DE102014002510.1A DE102014002510A DE102014002510A1 DE 102014002510 A1 DE102014002510 A1 DE 102014002510A1 DE 102014002510 A DE102014002510 A DE 102014002510A DE 102014002510 A1 DE102014002510 A1 DE 102014002510A1
- Authority
- DE
- Germany
- Prior art keywords
- processor
- exception
- elements
- multiple data
- input
- 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
Links
- 230000011664 signaling Effects 0.000 title claims description 11
- 239000013598 vector Substances 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims description 26
- 230000006870 function Effects 0.000 description 6
- 238000013479 data entry Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000014616 translation Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (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)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
Description
- HINTERGRUND
- Gebiet der Erfindung
- Die Erfindung bezieht sich im Allgemeinen auf Systeme und Verfahren zum Ausführen einer oder mehrerer Operationen auf einem oder mehreren Elementen unter Verwendung eines Mehrfachdatenverarbeitungselementprozessors.
- Stand der Technik
- Mehrfachdatenverarbeitungselementprozessoren, z. B. ein Einfachanweisungs-Mehrfachdaten-Prozessor (SIMD-Prozessor) oder Mehrfachanweisungs-Mehrfachdaten-Prozessor (MIMD-Prozessor), empfangen mehrere Dateneingaben, führen auf diesen Eingaben Operationen aus und geben die Ergebnisse der Operation zum Beispiel zu einem Ausgaberegister aus. Als Beispiel könnte ein solcher Prozessor die Eingaben a, b, c und d empfangen und sie zusammen addieren, um die Ergebnisse a + b und c + d zu erzeugen. Gelegentlich ist das Ausführen der vorgeschriebenen Operation auf einer oder mehreren der Dateneingaben problematisch für den Prozessor, und er erzeugt eine Ausnahme. Das geschieht beispielsweise, wenn die vorgeschriebene Operation für die bereitgestellten Eingaben für den Prozessor nicht implementiert ist. In einem solchen Szenario wäre der Prozessor nicht imstande, diese Operation auszuführen und würde eine Ausnahme erzeugen.
- Wenn eine Ausnahme auftritt, werden typischerweise keine Ergebnisse in das Ausgaberegister geschrieben, und die Ausnahme wird von einem Ausnahmebehandlungsprogramm behandelt, das eine Software-Emulation verwendet, um zum Beispiel die Operation auf den Dateneingaben auszuführen oder mit der Ausnahme auf eine andere Weise umzugehen. Das Problem mit diesem Verfahren ist, dass es langsam und betriebsmittelintensiv sein kann. Darüber hinaus verursachen in vielen Instanzen nur wenige der mehreren Dateneingaben eine Ausnahme, wenn die Operation ausgeführt wird; die Mehrzahl der Dateneingaben verursacht keine Ausnahme, wenn die Operation ausgeführt wird. Das Verarbeiten einer Ausnahme verzögert jedoch typischerweise auch das Verarbeiten von Daten, die nicht mit der Ausnahme zusammenhängen, da das Ausnahmebehandlungsprogramm nicht unterscheiden kann, welche Dateneingaben die Ursache der Ausnahme sind.
- KURZZUSAMMENFASSUNG DER ERFINDUNG
- Was daher benötigt wird, sind Systeme und Verfahren, die eine präzisere Ausnahmesignalisierung ermöglichen, so dass ein Ausnahmebehandlungsprogramm nur die Daten behandeln muss, die einer gültigen Ausnahme zugeordnet sind, während sie ermöglichen, dass Dateneingaben, die nicht die Ursache einer Ausnahme sind, rechtzeitig von einem oder mehreren Verarbeitungselementen verarbeitet werden. Gemäß Ausführungsformen der Erfindung ist ein Verfahren zum Ausführen einer oder mehrerer Operationen auf mehreren Datenelementen unter Verwendung eines Mehrfachdatenverarbeitungselementprozessors bereitgestellt. Ein Eingabevektor, der mehrere Elemente umfasst, wird von einem Prozessor empfangen. Der Prozessor bestimmt, ob ein Ausführen einer ersten Operation auf einem ersten Element eine Ausnahme verursachen wird, und falls ja schreibt er eine Angabe der Ausnahme, die von der ersten Operation verursacht wird, in einen ersten Abschnitt eines Ausgabevektors, der in einem Ausgaberegister gespeichert ist. Eine zweite Operation kann auf einem zweiten Element ausgeführt werden, wobei das Ergebnis dieser zweiten Operation in einen zweiten Abschnitt des Ausgabevektors, der in dem Ausgaberegister gespeichert ist, geschrieben wird.
- Ausführungsformen der Erfindung umfassen einen Mehrfachdatenverarbeitungselementprozessor. Das System enthält ein Eingaberegister, ein Ausgaberegister und einen Mehrfachdatenverarbeitungselementprozessor. Das Eingaberegister kann ausgelegt sein, einen Eingabevektor, der mehrere Elemente umfasst, zu speichern. Das Ausgaberegister kann ausgelegt sein, die Ergebnisse mehrerer Operationen zu speichern. Der Prozessor ist ausgelegt, den Eingabevektor aus dem Eingaberegister zu empfangen und zu bestimmen, dass ein Ausführen einer ersten Operation auf einem ersten Element eine Ausnahme verursachen wird, und eine Angabe der von der ersten Operation verursachten Ausnahme zu einem ersten Abschnitt eines in dem Ausgaberegister gespeicherten Ausgabevektors auszugeben. Zusätzlich kann der Prozessor ausgelegt sein, eine zweite Operation auf einem zweiten Element auszuführen und das Ergebnis der zweiten Operation zu einem zweiten Abschnitt des in dem Ausgaberegister gespeicherten Ausgabevektors auszugeben.
- Einige Ausführungsformen der Erfindung umfassen ein Verfahren zum Ausführen einer Operation auf mehreren Elementen unter Verwendung eines Mehrfachdatenverarbeitungselementprozessors. Das Verfahren umfasst ein Empfangen eines Eingabevektors, der ein erstes und ein zweites Element enthält, und ein Bestimmen, dass das Ausführen einer ersten Operation auf einem ersten Element eine Ausnahme verursachen wird. In diesem Fall fährt das Verfahren durch Schreiben einer Angabe der Ausnahmenursache durch die erste Operation in einen ersten Abschnitt eines in einem Ausgaberegister gespeicherten Ausgabevektors fort. Ferner umfasst das Verfahren ein Ausführen einer zweiten Operation auf dem zweiten Element und Schreiben eines Ergebnisses der zweiten Operation in einen zweiten Abschnitt des in dem Ausgaberegister gespeicherten Ausgabevektors.
- KURZBESCHREIBUNG DER ZEICHNUNGEN/FIGUREN
- Die begleitenden Zeichnungen, die hier enthalten sind und einen Teil der Beschreibung bilden, veranschaulichen die vorliegende Erfindung und dienen, zusammen mit der Beschreibung, ferner dazu, die Prinzipien der Erfindung zu erklären und einem Fachmann der einschlägigen Technik zu ermöglichen, die Erfindung herzustellen und zu verwenden.
-
1 stellt ein Mehrfachdatenverarbeitungselementsystem gemäß verschiedenen Ausführungsformen der Erfindung dar. -
2a und2b stellen Mehrfachdatenoperationen gemäß verschiedenen Ausführungsformen der Erfindung dar. -
3 veranschaulicht ein Verfahren zum Verarbeiten von Datenelementen gemäß verschiedenen Ausführungsformen der Erfindung. -
4 veranschaulicht ein Verfahren zum Verarbeiten von Datenelementen gemäß verschiedenen Ausführungsformen der Erfindung. -
5 veranschaulicht ein Verfahren zum Verarbeiten von Datenelementen gemäß verschiedenen Ausführungsformen der Erfindung. -
6 stellt eine Prozessorarchitektur gemäß verschiedenen Ausführungsformen der Erfindung dar. - Merkmale und Vorteile der Erfindung werden aus der genauen Beschreibung der Ausführungsformen der Erfindung, die nachstehend dargelegt sind, offensichtlicher, wenn sie im Zusammenhang mit den Zeichnungen betrachtet werden, in denen gleiche Bezugszeichen durchgehend entsprechende Elemente identifizieren. In den Zeichnungen geben gleiche Bezugszeichen im Allgemeinen gleiche, funktional ähnliche und/oder strukturell ähnliche Elemente an. Die Zeichnungen, in denen ein Element zuerst erscheint, ist durch die am weitesten links stehende(n) Ziffer(n) in dem entsprechenden Bezugszeichen angegeben.
- AUSFÜHRLICHE BESCHREIBUNG
- Die folgende ausführliche Beschreibung der Ausführungsformen der Erfindung bezieht sich auf die begleitenden Zeichnungen, die beispielhafte Ausführungsformen veranschaulichen. Hier beschriebene Ausführungsformen beziehen sich auf einen Niederleistungs-Multiprozessor. Andere Ausführungsformen sind möglich, und Modifikationen können innerhalb des Wesens und des Schutzbereichs dieser Beschreibung vorgenommen werden. Deshalb ist die ausführliche Beschreibung nicht dazu bestimmt, die nachstehend beschriebenen Ausführungsformen einzuschränken.
- Es sollte für einen Fachmann in der relevanten Technik offensichtlich sein, dass die nachstehend beschriebenen Ausführungsformen in vielen unterschiedlichen Ausführungsformen von Software, Hardware, Firmware und/oder den in den Figuren veranschaulichten Entitäten implementiert sein können. Jeder echte Software-Code mit der spezialisierten Steuerung von Hardware, um Ausführungsformen zu implementieren, ist für diese Beschreibung nicht einschränkend. Daher wird das betriebstechnische Verhalten von Ausführungsformen mit dem Verständnis beschrieben, dass Modifikationen und Variationen der Ausführungsformen angesichts des hier präsentierten Detaillierungsgrads möglich sind.
-
1 stellt ein System100 dar, das eine präzise Ausnahmebehandlung gemäß Ausführungsformen der Erfindung bereitstellen kann. Das System100 enthält einen Prozessor104 , eine Eingabe A102a und eine Eingabe B102b (hier gemeinsam als Eingabe102 bezeichnet). Der Prozessor104 kann die Ergebnisse einer Operation zum Ausgaberegister106 ausgeben. Das Anweisungsregister108 kann eine Anweisung oder Anweisungen enthalten, die angeben, welche Operation der Prozessor auf den Eingabedatenelementen, die in der Eingabe102 enthalten sind, ausführen soll. - Jede der Eingaben
102a und102b kann ein oder mehrere Register enthalten, die einen oder mehrere Eingabevektoren speichern können. Zusätzlich kann der Prozessor gemäß einigen Ausführungsformen mit einem einzelnen, in einem einzelnen Register gespeicherten Eingabevektor102 versorgt werden. Jeder der Eingabevektoren kann eine Anzahl von Datenelementen zum Verarbeiten durch den Prozessor enthalten. Beispielsweise kann der Prozessor104 eine Operation auf einer Gruppe aus einem oder mehreren Elementen ausführen, um ein Ergebnis zu erzeugen. Als ein Beispiel wird angenommen, dass die Eingabe102 die Elemente x und y enthält. Der Prozessor104 kann ausgelegt sein, die Operation f auf den Elementen x und y auszuführen und ein Ergebnis z zu erzeugen, so dass z = f(x, y) ist. Der Prozessor104 kann jedoch ausgelegt sein, eine Operation auf jede Anzahl von Elementen aus Eingabe102 auszuführen. - Der Prozessor
104 kann gemäß einigen Ausführungsformen einen Mehrfachdatenverarbeitungselementprozessor wie z. B. einen Einfachanweisungs-Mehrfachdaten-Prozessor (SIMD-Prozessor) umfassen. Zusätzlich kann der Prozessor104 einen Mehrfachanweisungs-Mehrfachdaten-Prozessor (MIMD-Prozessor) umfassen. Der Prozessor kann ausgelegt sein, basierend auf der Anweisungseingabe108 eine Anzahl unterschiedlicher Operationen (z. B. Addieren, Subtrahieren, Dividieren, Multiplizieren, Verschieben, usw.) auszuführen. Der Prozessor kann auch ausgelegt sein, das Ergebnis der Operation zu dem Ausgaberegister106 auszugeben. - Der Prozessor
104 kann ausgelegt sein, ein Steuersignal110 , das steuert, ob der Prozessor in einer Nicht-Signalisierungs-Ausnahmebetriebsart gemäß verschiedenen Ausführungsformen arbeitet, zu empfangen. Wenn der Prozessor nicht in einer Nicht-Signalisierungs-Ausnahmebetriebsart arbeitet, kann der Prozessor104 so betrachtet werden, dass er in einer ”normalen” Betriebsart arbeitet. Das heißt, wenn eine Ausnahme von einer Operation auf irgendeinem der Elemente erzeugt wird, signalisiert der Prozessor die Ausnahme, und ein Ausnahmebehandlungsprogramm behandelt die Operation für die gesamten Elemente. Wenn jedoch der Prozessor104 in einer Nicht-Signalisierungs-Ausnahmebetriebsart arbeitet, signalisiert der Prozessor nicht, dass eine Ausnahme aufgetreten ist, und gibt stattdessen eine Ausnahme in dem Ausgaberegister nur für die speziellen Operationen an, die die Ausnahme verursacht haben, während er ermöglicht, dass die Operation auf den anderen Elementen fortschreitet und das Ergebnis in das Ausgaberegister geschrieben werden kann. -
2a veranschaulicht eine Operation, die von dem Prozessor104 ausgeführt wird. Beispielsweise empfängt der Prozessor104 wie dargestellt einen ersten Eingabevektor202 , der die Elemente A0, A1, A2 und A3 umfasst. Der Vektor kann jede Länge aufweisen und kann in einem Register gespeichert sein. Zum Beispiel kann, falls der erste Eingabevektor202 in einem 64-Bit-Register gespeichert ist, jedes der Elemente A0, A1, A2 und A3 16 Bits umfassen. Ähnlich dem ersten Eingabevektor202 kann ein zweiter Eingabevektor206 auch eine Anzahl von Elementen B0, B1, B2 und B3 umfassen. Zusätzlich kann der zweite Eingabevektor206 in einem Register jeder beliebigen Länge gespeichert sein und muss nicht von der gleichen Länge sein wie das Register, das den ersten Eingabevektor202 speichert. - Gemäß den Ausführungsformen der Erfindung kann der Prozessor
104 ausgelegt sein, die Operationen204 auf den Elementen in den Eingabevektoren202 und206 auszuführen. Die Operationen204 können durch die Eingabeanweisung108 definiert sein. In einigen Ausführungsformen (z. B. Ausführungsformen, in denen der Prozessor104 ein SIMD-Prozessor ist) gibt es nur eine Anweisung, und dieselbe Operation wird auf jedem der Eingabeelement-Paare ausgeführt. Diese Situation ist in2a dargestellt, wo jedes der Elementpaare (d. h. A0 und B0, A1 und B1, usw.) zusammen addiert wird, um den Ergebnisvektor208 zu erhalten. Der Ausgabevektor208 kann in eine Anzahl von Ergebnissen organisiert sein (z. B.208a ,208b ,208c und208d ), von denen jedes dem Ergebnis des Ausführens der Operation auf einem oder mehreren Elementen entspricht. Gemäß anderen Ausführungsformen (z. B. MIMD-Ausführungsformen) kann der Prozessor104 mehrere Anweisungen oder einen Anweisungsvektor empfangen, und unterschiedliche Operationen können auf den verschiedenen Elementpaaren ausgeführt werden. - Wie bei den Eingabevektoren
202 und206 kann der Ergebnisvektor208 in einem Register wie z. B. dem Ausgaberegister106 gespeichert sein. Obwohl das Ausgaberegister jede Größe aufweisen kann, so ist es vorzugsweise groß genug, um unter allen oder den meisten Umständen Überlauf zu verhindern. Beispielsweise kann das Ausgaberegister größer sein als jeder der Eingabevektoren202 und206 gemäß Aspekten der Erfindung. -
2b veranschaulicht eine Situation ähnlich der, die in2a dargestellt ist, wobei jedoch die Ausführung der Operation auf einem oder mehreren Elementpaaren eine Ausnahme verursacht. Gemäß Ausführungsformen kann der Prozessor104 , der Operationen auf den Eingabevektoren202 und206 ausführt, in einer Nicht-Signalisierungs-Ausnahmebetriebsart arbeiten. Wie in2b gezeigt ist, werden die in den Eingabevektoren202 und206 enthaltenen Elemente zusammen addiert, wie durch die Operation204 vorgeschrieben ist. In diesem Fall verursacht die Addition von A2 zu B2 jedoch eine Ausnahme. Die übrigen Ergebnisse verursachen jedoch keine Ausnahme und werden in den entsprechenden Ergebnisabschnitt des Ausgabevektors208 in ihre entsprechenden Orte208a ,208b und208d geschrieben. Anstelle eines Ergebnisses wird jedoch eine Angabe, dass die Addition von A2 und B2 eine Ausnahme verursacht hat, in den Ausgabevektor an dem entsprechenden Ort208c geschrieben. Die Ausnahmeangabe kann sowohl Informationen, die die Ausnahme identifizieren, die aufgetreten ist (z. B. einen Ausnahmecode), als auch Informationen über die Elemente, die die Ausnahme verursacht haben, enthalten. -
3 veranschaulicht ein Verfahren300 zum Verarbeiten von Datenelementen gemäß Ausführungsformen der Erfindung. Bei Schritt302 kann ein Prozessor Eingabeelemente in der Form eines oder mehrerer Eingabevektoren, von denen jeder eine Anzahl von Elementen enthält, empfangen. Zusätzlich kann der Prozessor eine oder mehrere Anweisungen, die eine Operation angeben, die auf den Eingabeelementen ausgeführt werden soll, empfangen. Gemäß einigen Ausführungsformen können die Eingabevektoren in einem oder in mehreren Eingaberegistern gespeichert sein. - Bei Schritt
304 bestimmt der Prozessor, dass ein Ausführen einer Operation auf einem ersten Element oder einer ersten Gruppe von Elementen eine Ausnahme verursachen wird. Eine Angabe, dass ein Ausführen der Operation auf dem ersten Element oder der Gruppe von Elementen eine Ausnahme verursachen wird, wird bei Schritt306 zu einer entsprechenden Position in einem Ausgaberegister ausgegeben. Die Operation auf dem zweiten Element kann bei Schritt308 ausgeführt werden, und das Ergebnis der Operation auf dem zweiten Element kann bei Schritt310 in einem entsprechenden Ort eines Ausgaberegisters gespeichert werden. Gemäß einigen Ausführungsformen können die Schritte304 und306 parallel zu den Schritten308 und310 ausgeführt werden. -
4 veranschaulicht ein Verfahren400 zum Verarbeiten von Daten unter Verwendung eines Prozessors gemäß Ausführungsformen der Erfindung. Bei Schritt402 empfängt der Prozessor Eingabeelemente. Die Eingabeelemente können gemäß verschiedenen Ausführungsformen Teil eines oder mehrerer Eingabevektoren sein und in einem oder mehreren Eingaberegistern gespeichert sein. Zusätzlich kann der Prozessor eine oder mehrere Eingabeanweisungen, die die Operationen angeben, die der Prozessor auf den Elementen ausführen soll, empfangen. - Bei Schritt
404 bestimmt der Prozessor, ob eine Nicht-Signalisierungs-Ausnahmebetriebsart aktiviert worden ist oder nicht. Die Betriebsart kann durch Setzen oder Löschen eines Steuer-Bits in dem Prozessor gemäß verschiedenen Ausführungsformen aktiviert oder deaktiviert werden. Falls die Betriebsart deaktiviert ist, dann führt der Prozessor bei Schritt418 die Operation oder Operationen auf den Elementen gemäß einem normalen Ausnahmesignalisierungsverfahren aus. Das heißt, wenn eine Ausnahme auftritt, signalisiert der Prozessor eine Ausnahme und ermöglicht, dass ein Ausnahmebehandlungsprogramm die Operation oder die Operationen an den gesamten Eingabeelementen ausführt, unabhängig davon, welches Element oder welche Gruppe von Elementen die Ausnahme verursacht hat. - Falls bei Schritt
404 bestimmt wird, dass die Nicht-Signalisierungs-Betriebsart aktiviert ist, dann bestimmt der Prozessor bei Schritt406 , ob ein Element oder eine Gruppe von Elementen eine Ausnahme erzeugen wird. Falls das Element oder die Gruppe von Elementen eine Ausnahme erzeugen wird, dann erzeugt der Prozessor bei Schritt408 eine Angabe der Ausnahme und gibt bei Schritt410 die Angabe zu einem Ausgaberegister aus. Gemäß Ausführungsformen kann die Angabe die Elemente und die Operation, die die Ausnahme verursacht hat, identifizieren. Falls bestimmt wird, dass das Element oder die Gruppe von Elementen keine Ausnahme verursachen wird, dann wird bei Schritt412 die Operation ausgeführt, und das Ergebnis der Operation auf dem Element oder den Elementen wird bei Schritt414 zu dem Ausgaberegister ausgegeben. Bei Schritt416 kehrt das Verfahren zu Schritt406 zurück, falls es mehr Elemente gibt, die betrachtet werden müssen, andernfalls endet es bei420 . Während4 die Schritte406 –414 darstellt, die nacheinander für jedes Element oder jede Gruppe von Elementen ausgeführt werden, könnten diese Schritte simultan für jedes der Elemente oder jede der Gruppen von Elementen ausgeführt werden. -
5 veranschaulicht ein Verfahren500 zum Identifizieren der Ausnahmen, die in einem Ausgabevektor aufgetreten sind, gemäß Ausführungsformen der Erfindung. Bei Schritt502 wird das Ausgabedatenelement aus dem Ausgaberegister oder dem Vektor gelesen. Es kann dann bestimmt werden, ob das Datenelement das Ergebnis einer Operation oder eine Angabe einer Ausnahme enthält. Bei Schritt504 können, falls das Ergebnis eine Angabe einer Ausnahme ist, die geeigneten Ausnahmeinformationen aus der Angabe bei Schritt506 bestimmt werden. Beispielsweise könnte die Angabe einen Ausnahmecode und Informationen sowohl über das Element oder die Elemente als auch über die Operation, die die Ausnahme verursacht hat, enthalten. Bei Schritt508 können die relevanten Informationen, die sich auf die Ausnahme beziehen, zu einem Ausnahmebehandlungsprogramm gesendet werden, so dass es die Ausnahme z. B. durch Software-Emulation behandeln kann. Bei Schritt510 bestimmt der Prozess, ob die gesamten Ausgabedaten gelesen worden sind. Falls nicht, kehrt das Verfahren500 zu Schritt502 zurück und wird für die nächsten Elemente in dem Ausgaberegister wiederholt. Falls jedoch bei Schritt510 das Verfahren500 bestimmt, dass die gesamten Ausgabeelemente gelesen worden sind, dann endet der Prozess bei Schritt512 . - Es ist zu verstehen, dass verschiedene Ausführungsformen durch oder in Zusammenwirken mit Hardwarekomponenten, die die Funktionalität der verschiedenen Software-Routinen, Module, Elemente oder Anweisungen ermöglichen, implementiert oder erleichtert werden können. Beispiel-Hardwarekomponenten werden mit Bezug auf
6 nachstehend weiter beschrieben, z. B. der Prozessorkern600 , der eine Ausführungseinheit602 , eine Abrufeinheit604 , eine Gleitkommaeinheit606 , eine Lade/Speicher-Einheit608 , eine Speichermanagementeinheit (MMU)610 , einen Anweisungszwischenspeicher612 , einen Datenzwischenspeicher614 , eine Busschnittstelleneinheit616 , eine Multiplikations- und Divisionseinheit (MDU)620 , einen Co-Prozessor622 , Mehrzweckregister624 , ein Scratch-Pad630 und eine Kernerweiterungseinheit634 enthält. - Obwohl vorstehend verschiedene Ausführungsformen der vorliegenden Erfindung beschrieben worden sind, ist zu verstehen, dass sie durch Beispiele, nicht durch Einschränkung präsentiert worden sind. Es ist für Fachleute der relevanten Computertechnik offensichtlich, dass verschiedene Änderungen in Form und Detail daran vorgenommen werden können, ohne vom Wesen und Schutzbereich der Erfindung abzuweichen. Darüber hinaus ist zu verstehen, dass die ausführliche Beschreibung der vorliegenden Erfindung, die hier bereitgestellt ist, und nicht die Übersichts- und Zusammenfassungs-Abschnitte, verwendet werden soll, um die Ansprüche zu interpretieren. Die Übersichts- und Zusammenfassungs-Abschnitte können einen oder mehrere, jedoch nicht alle beispielhaften Ausführungsformen darlegen, wie sie von den Erfindern gedacht sind.
- Beispielsweise können zusätzlich zu Implementierung unter Verwendung von Hardware (z. B. innerhalb einer oder gekoppelt mit einer zentralen Verarbeitungseinheit (”CPU”), einem Mikroprozessor, einer Mikrosteuereinheit, einem digitalen Signalprozessor, einem Prozessorkern, einem ”System an Chip” (”SOC”) oder irgend einer anderen programmierbaren oder elektronischen Vorrichtung) Implementierungen auch in Software ausgeführt sein (z. B. computerlesbarer Code, Programmcode, Anweisungen und/oder Daten, die in irgendeiner Form angeordnet sind, wie z. B. als Quelle, Objekt oder Maschinensprache), die beispielsweise in einem computernutzbaren (z. B. lesbaren) Medium, das ausgelegt ist, die Software zu speichern, abgelegt sind. Derartige Software kann beispielsweise die Funktion, Herstellung, Modellierung, Simulation, Beschreibung und/oder das Testen der Vorrichtung und der Verfahren, die hier beschrieben sind, ermöglichen. Beispielsweise kann dies durch das Verwenden allgemeiner Programmiersprachen (z. B. C, C++), GDSII-Datenbanken, Hardware-Beschreibungssprachen (HDL), die Verilog-HDL, VHDL, SystemC-Register-Übertragungsebene (RTL) und so weiter enthalten, oder andere verfügbare Programme, Datenbanken und/oder Schaltungserfassungs-Werkzeuge (d. h. schematische Erfassungswerkzeuge) erreicht werden. Ausführungsformen können in jedem bekannten nichtflüchtigen computerverwendbaren Medium, das Halbleiter, Magnetplatte, optische Platte (z. B. CD-ROM, DVD-ROM, usw.) enthält, abgelegt werden.
- Es ist zu verstehen, dass die Vorrichtungs- und Verfahrensausführungsformen, die hier beschrieben sind, in einem Halbleiterkern für geistiges Eigentum, wie z. B. einem Mikroprozessorkern (z. B. ausgeführt in HDL) enthalten sein können und in der Produktion von integrierten Schaltkreisen in Hardware umgesetzt werden können. Zusätzlich können die Vorrichtungs- und Verfahrensausführungsformen, die hier beschrieben sind, als eine Kombination von Hardware und Software ausgeführt sein. Daher sollte die vorliegende Erfindung nicht durch eine der vorstehend beschriebenen beispielhaften Ausführungsformen eingeschränkt werden, sondern sollte nur in Übereinstimmung mit den folgenden Ansprüchen und ihrer Entsprechung definiert werden. Es ist zu verstehen, dass Ausführungsformen, die eine Kombination von Hardware und Software verwenden, durch oder im Zusammenwirken mit Hardwarekomponenten, die die Funktionalität der verschiedenen Software-Routinen, Module, Elemente oder Anweisungen, z. B. der Komponenten, die vorstehend mit Bezug auf
1 genannt sind, ermöglichen, implementiert oder erleichtert sein können. -
6 ist eine schematische Darstellung eines beispielhaften Prozessorkerns600 gemäß einer Ausführungsform der vorliegenden Erfindung zum Implementieren eines gemeinsam verwendeten Register-Pools. Der Prozessorkern600 ist ein beispielhafter Prozessor, der anschaulich und nicht einschränkend sein soll. Fachleute würden zahlreiche Prozessorimplementierungen zur Verwendung mit einem ISA gemäß Ausführungsform der vorliegenden Erfindung erkennen. - Wie in
6 gezeigt ist, enthält der Prozessorkern600 eine Ausführungseinheit602 , eine Abrufeinheit604 , eine Gleitkommaeinheit606 , eine Lade/Speicher-Einheit608 , eine Speichermanagementeinheit (MMU)610 , einen Anweisungszwischenspeicher612 , einen Datenzwischenspeicher614 , eine Busschnittstelleneinheit616 , eine Multiplikations- und Divisionseinheit (MDU)620 , einen Co-Prozessor622 , Mehrzweckregister624 , ein Scratch-Pad630 und eine Kernerweiterungseinheit634 . Obwohl der Prozessorkern600 hier so beschrieben ist, dass er mehrere getrennte Komponenten enthält, sind viele dieser Komponenten optionale Komponenten und werden nicht in jeder Ausführungsform der vorliegenden Erfindung vorhanden sein, oder Komponenten, die kombiniert werden können, so dass sich beispielsweise die Funktionalität von zwei Komponenten innerhalb einer einzigen Komponente befindet. Zusätzliche Komponenten können ebenfalls hinzugefügt werden. Daher sind die einzelnen Komponenten, die in6 gezeigt sind, anschaulich und nicht gedacht, die vorliegende Erfindung einzuschränken. - Die Ausführungseinheit
602 implementiert vorzugsweise eine Lade-Speicher-Architektur (RISC-Architektur) mit arithmetischen Einzelzykluslogikeinheit-Operationen (z. B. logisch, verschieben, addieren, subtrahieren, usw.). Die Ausführungseinheit602 ist mit einer Abrufeinheit604 , einer Gleitkommaeinheit606 , einer Lade/Speichereinheit608 , einer Multiplikations- und Divisionseinheit620 , einem Co-Prozessor622 , Mehrzweckregistern624 und einer Kernerweiterungseinheit634 verbunden. - Die Abrufeinheit
604 ist für das Bereitstellen von Anweisungen für die Ausführungseinheit602 zuständig. In einer Ausführungsform enthält die Abrufeinheit604 Steuerlogik für den Anweisungszwischenspeicher612 , eine Aufzeichnungseinheit zum Aufzeichnen komprimierter Formatanweisungen, eine dynamische Zweigvorhersage und einen Anweisungspuffer, um den Betrieb der Abrufeinheit604 von der Ausführungseinheit602 zu entkoppeln. Die Abrufeinheit604 ist mit der Ausführungseinheit602 , der Speichermanagementeinheit610 , dem Anweisungszwischenspeicher612 und der Busschnittstelleneinheit616 verbunden. Die Gleitkommaeinheit606 ist mit der Ausführungseinheit602 verbunden und bearbeitet Nicht-Ganzzahldaten. Die Gleitkommaeinheit606 enthält Gleitkommaregister618 . In einer Ausführungsform können die Gleitkommaregister618 außerhalb der Gleitkommaeinheit606 sein. Die Gleitkommaregister618 können 32-Bit- oder 64-Bit-Register sein, die für Gleitkommaoperationen, die von der Gleitkommaeinheit606 ausgeführt werden, verwendet werden. Typische Gleitkommaoperationen sind Arithmetik, wie z. B. Addition und Multiplikation, und können auch Exponential- oder trigonometrische Berechnungen enthalten. - Die Lade/Speichereinheit
608 ist für Datenladung und -speicherung zuständig und enthält Datenzwischenspeichersteuerlogik. Die Lade/Speichereinheit608 ist mit dem Datenzwischenspeicher614 und dem Scratch-Pad630 und/oder einem Füllpuffer (nicht gezeigt) verbunden. Die Lade/Speichereinheit608 ist außerdem mit der Speichermanagementeinheit610 und der Busschnittstelleneinheit616 verbunden. - Die Speichermanagementeinheit
610 übersetzt virtuelle Adressen in physikalische Adressen für den Speicherzugriff. In einer Ausführungsform enthält die Speichermanagementeinheit610 einen Übersetzungspuffer (TLB) und kann einen getrennten Anweisungs-TLB und einen getrennten Daten-TLB enthalten. Die Speichermanagementeinheit610 ist mit der Abrufeinheit604 und der Lade/Speichereinheit608 verbunden. - Der Anweisungszwischenspeicher
612 ist ein auf dem Chip enthaltenes Speicherfeld, das als ein Mehrfach-Assoziativzwischenspeicher oder direkter Assoziativzwischenspeicher, wie z. B. 2-fach-Assoziativzwischenspeicher, ein 4-fach-Assoziativzwischenspeicher, ein 8-fach-Assoziativzwischenspeicher, usw. organisiert ist. Der Anweisungszwischenspeicher612 ist vorzugsweise virtuell indiziert und physikalisch markiert und ermöglicht dadurch, dass virtuell/physikalische Adressenübersetzungen parallel mit Zwischenspeicherzugriffen auftreten. In einer Ausführungsform enthalten die Markierungen ein Valid-Bit und optional Paritäts-Bits zusätzlich zu physikalischen Adressen-Bits. Der Anweisungszwischenspeicher612 ist mit der Abrufeinheit604 verbunden. - Der Datenzwischenspeicher
614 ist ebenfalls ein auf dem Chip enthaltenes Speicherfeld. Der Datenzwischenspeicher614 ist vorzugsweise virtuell indiziert und physikalisch markiert. In einer Ausführungsform enthalten die Markierungen ein Valid-Bit und optional Paritäts-Bits zusätzlich zu physikalischen Adressen-Bits. Der Datenzwischenspeicher614 ist mit der Lade/Speichereinheit608 verbunden. - Die Busschnittstelleneinheit
616 steuert externe Schnittstellensignale für den Prozessorkern600 . In einer Ausführungsform enthält die Busschnittstelleneinheit616 einen reduzierenden Schreibpuffer, um Write-Through-Transaktionen zusammenzuführen und Schreibvorgänge aus nicht zwischengespeicherten Speichern zu sammeln. - Die Multiplikations- und Divisionseinheit
620 führt Multiplizier- und Dividieroperationen für den Prozessorkern600 aus. In einer Ausführungsform enthält die Multiplikations- und Divisionseinheit620 vorzugsweise einen Pipeline-Multiplizierer, Akkumulationsregister (Akkumulatoren)626 und Multiplizier- und Dividier-Zustandsautomaten und außerdem die gesamte Steuerlogik, die notwendig ist, um beispielsweise Multiplizier-, Multiplizier-Addier- und Dividier-Funktionen auszuführen. Wie in6 gezeigt ist, ist die Multiplikations- und Divisionseinheit620 mit der Ausführungseinheit602 verbunden. Die Akkumulatoren626 werden verwendet, um Ergebnisse der von der Multiplikations- und Divisionseinheit620 ausgeführten Arithmetik zu speichern. - Der Co-Prozessor
622 führt verschiedene Overhead-Funktionen für den Prozessorkern600 aus. In einer Ausführungsform ist der Co-Prozessor622 für virtuell/physikalische Adressübersetzungen, Implementieren von Zwischenspeicherprotokollen, Ausnahmebehandlung, Operationsbetriebsartauswahl und Aktivieren/Deaktivieren von Unterbrechungsfunktionen zuständig. Der Co-Prozessor622 ist mit der Ausführungseinheit602 verbunden. Der Co-Prozessor622 enthält Zustandsregister628 und einen allgemeinen Speicher638 . Die Zustandsregister628 werden im Allgemeinen verwendet, um Variablen, die von dem Co-Prozessor622 verwendet werden, zu halten. Die Zustandsregister628 können außerdem Register zum allgemeinen Halten von Zustandsinformationen für den Prozessorkern600 enthalten. Beispielsweise können die Zustandsregister628 ein Statusregister enthalten. Der allgemeine Speicher638 kann verwendet werden, um temporäre Werte wie z. B. während der Berechnungen erzeugte Koeffizienten zu halten. In einer Ausführungsform hat der allgemeine Speicher638 die Form einer Registerdatei. - Die Mehrzweckregister
624 sind typischerweise 32-Bit- oder 64-Bit-Register, die für skalare Ganzzahloperationen und Adressberechnungen verwendet werden. In einer Ausführungsform sind die Mehrzweckregister624 ein Teil der Ausführungseinheit602 . Optional können eine oder mehrere zusätzliche Registerdateigruppen, wie z. B. Schattenregisterdateigruppen, enthalten sein, um Inhaltsaustausch-Überhang beispielsweise während einer Unterbrechungs- und/oder Ausnahmeverarbeitung zu minimieren. - Das Scratch-Pad
630 ist ein Speicher, der Daten speichert oder die Lade/Speichereinheit608 mit Daten versorgt. Die eine oder die mehreren speziellen Adressbereiche eines Scratch-Pads können vorkonfiguriert sein oder programmtechnisch konfiguriert werden, während der Prozessorkern600 läuft. Ein Adressbereich ist ein zusammenhängender Bereich von Adressen, die beispielsweise durch eine Basisadresse und eine Bereichsgröße spezifiziert sein können. Wenn die Basisadresse und die Bereichsgröße verwendet werden, spezifiziert die Basisadresse den Anfang des Adressbereichs, und die Bereichsgröße wird beispielsweise zu der Basisadresse addiert, um das Ende des Adressbereichs zu spezifizieren. Typischerweise werden, sobald ein Adressbereich für ein Scratch-Pad spezifiziert ist, alle Daten, die dem spezifizierten Adressbereich entsprechen, aus dem Scratch-Pad abgerufen. - Die Einheit für anwenderdefinierte Anweisungen (UDI-Einheit)
634 ermöglicht, dass der Prozessorkern600 an die spezifischen Anwendungen angepasst werden kann. Die UDI634 ermöglicht einem Anwender, seine eigenen Anweisungen, die auf beispielsweise in den Mehrzweckregistern624 gespeicherten Daten arbeiten können, zu definieren und hinzuzufügen. Die UDI634 ermöglicht Anwendern, neue Fähigkeiten hinzuzufügen, während sie die Kompatibilität mit Industriestandardarchitekturen erhält. Die UDI634 enthält einen UDI-Speicher636 , der verwendet werden kann, um von dem Anwender hinzugefügte Anweisungen und während der Berechnung erzeugten Variablen zu speichern. In einer Ausführungsform hat der UDI-Speicher636 die Form einer Registerdatei. - Ausführungsformen, die hier beschrieben sind, beziehen sich auf einen gemeinsam verwendeten Register-Pool. Die Übersichts- und Zusammenfassungs-Abschnitte können eine oder mehrere, jedoch nicht alle beispielhaften Ausführungsformen darlegen, wie sie von den Erfindern gedacht sind, und sind daher nicht vorgesehen, die vorliegende Erfindung und die Ansprüche auf irgendeine Weise einzuschränken.
- Die Ausführungsformen wurden hier vorstehend mit Hilfe von funktionalen Aufbaublöcken, die die Implementierung der spezifizierten Funktionen und deren Beziehungen darstellen, beschrieben. Die Grenzen dieser funktionalen Aufbaublöcke wurden hier zur Vereinfachung der Beschreibung willkürlich definiert. Alternative Grenzen können definiert werden, so lange die spezifizierten Funktionen und deren Beziehungen angemessen ausgeführt werden.
- Die vorstehende Beschreibung der speziellen Ausführungsformen legt so die allgemeine Beschaffenheit der Erfindung vollständig offen, die andere durch Anwenden von Kenntnissen innerhalb der Fertigkeit der Technik einfach für verschiedene Anwendung solcher spezieller Ausführungsformen ohne übermäßiges Experimentieren und ohne von dem allgemeinen Konzept der vorliegenden Erfindung abzuweichen modifizieren und/oder anpassen können. Deshalb ist vorgesehen, dass solche Anpassungen und Modifikationen innerhalb der Bedeutung und des Bereichs von Äquivalenten der offenbarten Ausführungsformen liegen, basierend auf der hier gezeigten Lehre und Führung. Es ist zu verstehen, dass hier verwendete Ausdrucksweise und Terminologie dem Zweck der Beschreibung und nicht der Einschränkung dient, so dass die Terminologie oder Ausdrucksweise der vorliegenden Beschreibung von Fachleuten im Lichte der Lehren und Führung interpretiert werden soll.
Claims (20)
- Verfahren zum Ausführen einer oder mehrerer Operationen auf mehreren Elementen unter Verwendung eines Mehrfachdatenverarbeitungselementprozessors, das umfasst: Empfangen eines oder mehrerer Eingabevektoren, wobei der eine oder die mehreren Eingabevektoren eine erste Gruppe von Elementen und eine zweite Gruppe von Elementen umfassen; Bestimmen, dass das Ausführen einer ersten Operation auf der ersten Gruppe von Elementen eine Ausnahme verursacht; Schreiben einer Angabe der von der ersten Operation verursachten Ausnahme in ein erstes Element eines Ausgabevektors; Ausführen einer zweiten Operation auf der zweiten Gruppe von Elementen; und Schreiben eines Ergebnisses der zweiten Operation in ein zweites Element des Ausgabevektors.
- Verfahren nach Anspruch 1, das ferner ein Bestimmen, dass eine Nicht-signalisierungs-Ausnahmebetriebsart im Prozessor aktiviert ist, umfasst.
- Verfahren nach Anspruch 1, wobei der eine oder die mehreren Eingabevektoren eine dritte Gruppe von Elementen umfassen.
- Verfahren nach Anspruch 3, das ferner ein Bestimmen, dass ein Ausführen einer dritten Operation auf der dritten Gruppe von Elementen eine Ausnahme verursacht, und ein Schreiben einer Angabe der Ausnahme in ein drittes Element des Ausgabevektors umfasst.
- Verfahren nach Anspruch 1, wobei die erste und die zweite Operation die gleiche Operation sind.
- Verfahren nach Anspruch 1, wobei der Mehrfachdatenverarbeitungselementprozessor ein Einfacheingabe-Mehrfachdaten-Prozessor (SIMD-Prozessor) ist.
- Verfahren nach Anspruch 1, wobei der Mehrfachdatenverarbeitungselementprozessor ein Mehrfacheingabe-Mehrfachdaten-Prozessor (MIMD-Prozessor) ist.
- Verfahren nach Anspruch 1, wobei die Angabe einem Ausnahmebehandlungsprogramm signalisiert, die Ausnahme zu behandeln.
- Verfahren nach Anspruch 1, wobei sowohl die erste als auch die zweite Gruppe von Elementen ein einzelnes Element enthält.
- Verfahren nach Anspruch 1, wobei sowohl die erste als auch die zweite Gruppe von Elementen mehrere Elemente enthält.
- Mehrfachdatenverarbeitungselementsystem, das umfasst: ein Eingaberegister, das ausgelegt ist, einen oder mehrere Eingabevektoren zu speichern, wobei der eine oder die mehreren Eingabevektoren eine erste Gruppe von Elementen und eine zweite Gruppe von Elementen umfassen; ein Ausgaberegister, das ausgelegt ist, die Ergebnisse mehrerer Operationen zu speichern; und einen Mehrfachdatenverarbeitungselementprozessor, der ausgelegt ist: den einen oder die mehreren Eingabevektoren aus dem Eingaberegister zu empfangen, zu bestimmen, dass ein Ausführen einer ersten Operation auf der ersten Gruppe von Elementen eine Ausnahme verursacht, und eine Angabe der von der ersten Operation verursachten Ausnahme in ein erstes Element des Ausgaberegisters auszugeben, und eine zweite Operation auf einer zweiten Gruppe von Elementen auszuführen und das Ergebnis der Operation in ein zweites Element des Ausgaberegisters auszugeben.
- System nach Anspruch 11, wobei der Prozessor ferner ausgelegt ist zu bestimmen, dass eine Nichtsignalisierungs-Ausnahmebetriebsart in dem Prozessor aktiviert ist.
- System nach Anspruch 11, wobei der eine oder die mehreren Eingabevektoren ferner eine dritte Gruppe von Elementen umfassen.
- System nach Anspruch 13, wobei der Prozessor ferner ausgelegt ist zu bestimmen, dass ein Ausführen einer dritten Operation auf der dritten Gruppe von Elementen eine Ausnahme verursacht, und eine Angabe der Ausnahme in ein drittes Element des Ausgaberegisters auszugeben.
- System nach Anspruch 11, wobei die erste und die zweite Operation die gleiche Operation sind.
- System nach Anspruch 11, wobei der Mehrfachdatenverarbeitungselementprozessor ein Einfacheingabe-Mehrfachdaten-Prozessor (SIMD-Prozessor) ist.
- System nach Anspruch 11, wobei der Mehrfachdatenverarbeitungselementprozessor ein Mehrfacheingabe-Mehrfachdaten-Prozessor (MIMD-Prozessor) ist.
- Verfahren nach Anspruch 11, wobei die Angabe ausgelegt ist, einem Ausnahmebehandlungsprogramm zu signalisieren, die Ausnahme zu behandeln.
- System nach Anspruch 11, wobei sowohl die erste als auch die zweite Gruppe von Elementen ein einzelnes Element enthält.
- System nach Anspruch 11, wobei sowohl die erste als auch die zweite Gruppe von Elementen mehrere Elemente enthält.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/773,818 US20140244987A1 (en) | 2013-02-22 | 2013-02-22 | Precision Exception Signaling for Multiple Data Architecture |
US13/773,818 | 2013-02-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102014002510A1 true DE102014002510A1 (de) | 2014-08-28 |
Family
ID=50482540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102014002510.1A Withdrawn DE102014002510A1 (de) | 2013-02-22 | 2014-02-21 | Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur |
Country Status (5)
Country | Link |
---|---|
US (1) | US20140244987A1 (de) |
CN (1) | CN104008021A (de) |
DE (1) | DE102014002510A1 (de) |
GB (1) | GB2513448A (de) |
RU (1) | RU2014106624A (de) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2543302B (en) * | 2015-10-14 | 2018-03-21 | Advanced Risc Mach Ltd | Vector load instruction |
GB2543303B (en) | 2015-10-14 | 2017-12-27 | Advanced Risc Mach Ltd | Vector data transfer instruction |
GB2543554B (en) | 2015-10-22 | 2019-01-23 | Advanced Risc Mach Ltd | Handling exceptional conditions for vector arithmetic instruction |
GB2546510B (en) * | 2016-01-20 | 2018-09-26 | Advanced Risc Mach Ltd | Vector atomic memory update instruction |
US10216515B2 (en) * | 2016-10-18 | 2019-02-26 | Oracle International Corporation | Processor load using a bit vector to calculate effective address |
US20190065199A1 (en) | 2017-08-31 | 2019-02-28 | MIPS Tech, LLC | Saving and restoring non-contiguous blocks of preserved registers |
US11080062B2 (en) | 2019-01-12 | 2021-08-03 | MIPS Tech, LLC | Address manipulation using indices and tags |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5113521A (en) * | 1988-03-18 | 1992-05-12 | Digital Equipment Corporation | Method and apparatus for handling faults of vector instructions causing memory management exceptions |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US5346117A (en) * | 1993-07-27 | 1994-09-13 | International Business Machines Corporation | Method of fabricating a parallel processor package |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US6304963B1 (en) * | 1998-05-14 | 2001-10-16 | Arm Limited | Handling exceptions occuring during processing of vector instructions |
US6038652A (en) * | 1998-09-30 | 2000-03-14 | Intel Corporation | Exception reporting on function generation in an SIMD processor |
US6301705B1 (en) * | 1998-10-01 | 2001-10-09 | Institute For The Development Of Emerging Architectures, L.L.C. | System and method for deferring exceptions generated during speculative execution |
US6675292B2 (en) * | 1999-08-13 | 2004-01-06 | Sun Microsystems, Inc. | Exception handling for SIMD floating point-instructions using a floating point status register to report exceptions |
US6880068B1 (en) * | 2000-08-09 | 2005-04-12 | Advanced Micro Devices, Inc. | Mode dependent segment use with mode independent segment update |
US7937559B1 (en) * | 2002-05-13 | 2011-05-03 | Tensilica, Inc. | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes |
JP3958662B2 (ja) * | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
GB2409059B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US8010953B2 (en) * | 2006-04-04 | 2011-08-30 | International Business Machines Corporation | Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine |
US20080016320A1 (en) * | 2006-06-27 | 2008-01-17 | Amitabh Menon | Vector Predicates for Sub-Word Parallel Operations |
US7487341B2 (en) * | 2006-06-29 | 2009-02-03 | Intel Corporation | Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource |
US9529592B2 (en) * | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US8103858B2 (en) * | 2008-06-30 | 2012-01-24 | Intel Corporation | Efficient parallel floating point exception handling in a processor |
US20110035568A1 (en) * | 2008-08-15 | 2011-02-10 | Apple Inc. | Select first and select last instructions for processing vectors |
JP4623199B2 (ja) * | 2008-10-27 | 2011-02-02 | ソニー株式会社 | 画像処理装置、画像処理方法およびプログラム |
US8458684B2 (en) * | 2009-08-19 | 2013-06-04 | International Business Machines Corporation | Insertion of operation-and-indicate instructions for optimized SIMD code |
US9110802B2 (en) * | 2010-11-05 | 2015-08-18 | Advanced Micro Devices, Inc. | Processor and method implemented by a processor to implement mask load and store instructions |
US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
-
2013
- 2013-02-22 US US13/773,818 patent/US20140244987A1/en not_active Abandoned
-
2014
- 2014-02-20 GB GB1403028.2A patent/GB2513448A/en not_active Withdrawn
- 2014-02-21 DE DE102014002510.1A patent/DE102014002510A1/de not_active Withdrawn
- 2014-02-21 RU RU2014106624/08A patent/RU2014106624A/ru unknown
- 2014-02-21 CN CN201410102598.5A patent/CN104008021A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20140244987A1 (en) | 2014-08-28 |
RU2014106624A (ru) | 2015-08-27 |
GB201403028D0 (en) | 2014-04-09 |
CN104008021A (zh) | 2014-08-27 |
GB2513448A (en) | 2014-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102014002510A1 (de) | Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur | |
DE112017001825T5 (de) | Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher | |
DE112013003743T5 (de) | Beschleunigte spurübergreifende Vektorreduzierungsbefehle | |
DE112013004783T5 (de) | Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl | |
DE112017003340T5 (de) | Unterbrechungsfähige und neustartfähige matrix-multiplikationsinstruktionen, prozessoren, verfahren, und systeme | |
DE102018125805A1 (de) | Systeme, verfahren, und vorrichtungen für skalarproduktoperationen | |
DE112012007088B4 (de) | Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster | |
DE112010002773T5 (de) | Entpacken von gepackten daten auf mehreren spuren | |
DE102014004564A1 (de) | Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen | |
DE102018124919A1 (de) | Skalierbare speicheroptimierte Hardware für Matrix-Solve | |
DE112013004800T5 (de) | Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit | |
DE112013003741T5 (de) | Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers | |
DE102015102135A1 (de) | Unterbrechbares Exklusivspeichern | |
DE102013013137A1 (de) | Mehrstufige registerumbenennung durch entfernen von abhängigkeiten | |
DE112016005909T5 (de) | Einrichtung und verfahren zum beschleunigen von graphenanalyse | |
DE102018132200A1 (de) | Vorrichtung und verfahren zum verarbeiten von fraktionalen umkehroperationen | |
DE102018006798A1 (de) | Einrichtung und Verfahren zum Multiplizieren, Addieren/Subtrahieren und Akkumulieren von gepackten Datenelementen | |
DE102018129298A1 (de) | Vorrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von vorzeichenbehafteten Doppelwörtern | |
DE102018005859A1 (de) | Einrichtung und Verfahren zur Multiplikation und Akkumulation von komplexen und echten gepackten Datenelementen | |
DE102018128626A1 (de) | Systeme, Verfahren und Vorrichtungen für Matrixoperationen | |
DE102018126036A1 (de) | Systeme und verfahren zum setzen eines kachelregisterpaars auf null | |
DE102014003659A1 (de) | Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters | |
DE102018125971A1 (de) | Systeme und verfahren zum berechnen von skalaprodukten von halbbytes in operanden aus zwei kacheln | |
DE102018005976A1 (de) | Systeme, vorrichtungen und verfahren zur multiplikation und akkumulation von vektorgepackten vorzeichenbehafteten werten | |
DE102018129273A1 (de) | Einrichtung und verfahren zum vektor-multiplizieren; und -akkumulieren von unsignierten doppelwörtern |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R081 | Change of applicant/patentee |
Owner name: IMAGINATION TECHNOLOGIES, LLC (N.D.GES.D. STAA, US Free format text: FORMER OWNER: MIPS TECHNOLOGIES, INC., SUNNYVALE, CALIF., US Owner name: MIPS TECH, LLC (N.D.GES.D.STAATES DELAWARE), S, US Free format text: FORMER OWNER: MIPS TECHNOLOGIES, INC., SUNNYVALE, CALIF., US |
|
R082 | Change of representative |
Representative=s name: CMS CAMERON MCKENNA NABARRO OLSWANG LLP, GB Representative=s name: OLSWANG GERMANY LLP, DE |
|
R081 | Change of applicant/patentee |
Owner name: MIPS TECH, LLC (N.D.GES.D.STAATES DELAWARE), S, US Free format text: FORMER OWNER: IMAGINATION TECHNOLOGIES, LLC (N.D.GES.D. STAATES DELAWARE), SANTA CLARA, CALIF., US |
|
R082 | Change of representative |
Representative=s name: CMS CAMERON MCKENNA NABARRO OLSWANG LLP, GB Representative=s name: OLSWANG GERMANY LLP, DE |
|
R082 | Change of representative |
Representative=s name: CMS CAMERON MCKENNA NABARRO OLSWANG LLP, GB |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |