DE102014002510A1 - Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur - Google Patents

Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur Download PDF

Info

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
Application number
DE102014002510.1A
Other languages
English (en)
Inventor
Ilie Garbacea
James Robinson
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.)
MIPS Tech LLC
Original Assignee
MIPS Technologies Inc
MIPS Tech LLC
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 MIPS Technologies Inc, MIPS Tech LLC filed Critical MIPS Technologies Inc
Publication of DE102014002510A1 publication Critical patent/DE102014002510A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, 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

Es werden Verfahren und Systeme bereitgestellt, die eine oder mehrere Operationen auf mehreren Elementen unter Verwendung eines Mehrfachdatenverarbeitungselementprozessors ausführen. Ein Eingabevektor, der mehrere Elemente umfasst, wird von einem Prozessor empfangen. Der Prozessor bestimmt, ob das Ausführen einer ersten Operation auf einem ersten Element eine Ausnahme verursacht, 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 der zweiten Operation in einen zweiten Abschnitt des Ausgabevektors, der in dem Ausgaberegister gespeichert ist, geschrieben wird.

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 und 2b 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 System 100 dar, das eine präzise Ausnahmebehandlung gemäß Ausführungsformen der Erfindung bereitstellen kann. Das System 100 enthält einen Prozessor 104, eine Eingabe A 102a und eine Eingabe B 102b (hier gemeinsam als Eingabe 102 bezeichnet). Der Prozessor 104 kann die Ergebnisse einer Operation zum Ausgaberegister 106 ausgeben. Das Anweisungsregister 108 kann eine Anweisung oder Anweisungen enthalten, die angeben, welche Operation der Prozessor auf den Eingabedatenelementen, die in der Eingabe 102 enthalten sind, ausführen soll.
  • Jede der Eingaben 102a und 102b 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 Eingabevektor 102 versorgt werden. Jeder der Eingabevektoren kann eine Anzahl von Datenelementen zum Verarbeiten durch den Prozessor enthalten. Beispielsweise kann der Prozessor 104 eine Operation auf einer Gruppe aus einem oder mehreren Elementen ausführen, um ein Ergebnis zu erzeugen. Als ein Beispiel wird angenommen, dass die Eingabe 102 die Elemente x und y enthält. Der Prozessor 104 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 Prozessor 104 kann jedoch ausgelegt sein, eine Operation auf jede Anzahl von Elementen aus Eingabe 102 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 Prozessor 104 einen Mehrfachanweisungs-Mehrfachdaten-Prozessor (MIMD-Prozessor) umfassen. Der Prozessor kann ausgelegt sein, basierend auf der Anweisungseingabe 108 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 Ausgaberegister 106 auszugeben.
  • Der Prozessor 104 kann ausgelegt sein, ein Steuersignal 110, 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 Prozessor 104 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 Prozessor 104 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 Prozessor 104 ausgeführt wird. Beispielsweise empfängt der Prozessor 104 wie dargestellt einen ersten Eingabevektor 202, 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 Eingabevektor 202 in einem 64-Bit-Register gespeichert ist, jedes der Elemente A0, A1, A2 und A3 16 Bits umfassen. Ähnlich dem ersten Eingabevektor 202 kann ein zweiter Eingabevektor 206 auch eine Anzahl von Elementen B0, B1, B2 und B3 umfassen. Zusätzlich kann der zweite Eingabevektor 206 in einem Register jeder beliebigen Länge gespeichert sein und muss nicht von der gleichen Länge sein wie das Register, das den ersten Eingabevektor 202 speichert.
  • Gemäß den Ausführungsformen der Erfindung kann der Prozessor 104 ausgelegt sein, die Operationen 204 auf den Elementen in den Eingabevektoren 202 und 206 auszuführen. Die Operationen 204 können durch die Eingabeanweisung 108 definiert sein. In einigen Ausführungsformen (z. B. Ausführungsformen, in denen der Prozessor 104 ein SIMD-Prozessor ist) gibt es nur eine Anweisung, und dieselbe Operation wird auf jedem der Eingabeelement-Paare ausgeführt. Diese Situation ist in 2a dargestellt, wo jedes der Elementpaare (d. h. A0 und B0, A1 und B1, usw.) zusammen addiert wird, um den Ergebnisvektor 208 zu erhalten. Der Ausgabevektor 208 kann in eine Anzahl von Ergebnissen organisiert sein (z. B. 208a, 208b, 208c und 208d), 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 Prozessor 104 mehrere Anweisungen oder einen Anweisungsvektor empfangen, und unterschiedliche Operationen können auf den verschiedenen Elementpaaren ausgeführt werden.
  • Wie bei den Eingabevektoren 202 und 206 kann der Ergebnisvektor 208 in einem Register wie z. B. dem Ausgaberegister 106 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 Eingabevektoren 202 und 206 gemäß Aspekten der Erfindung.
  • 2b veranschaulicht eine Situation ähnlich der, die in 2a dargestellt ist, wobei jedoch die Ausführung der Operation auf einem oder mehreren Elementpaaren eine Ausnahme verursacht. Gemäß Ausführungsformen kann der Prozessor 104, der Operationen auf den Eingabevektoren 202 und 206 ausführt, in einer Nicht-Signalisierungs-Ausnahmebetriebsart arbeiten. Wie in 2b gezeigt ist, werden die in den Eingabevektoren 202 und 206 enthaltenen Elemente zusammen addiert, wie durch die Operation 204 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 Ausgabevektors 208 in ihre entsprechenden Orte 208a, 208b und 208d 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 Ort 208c 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 Verfahren 300 zum Verarbeiten von Datenelementen gemäß Ausführungsformen der Erfindung. Bei Schritt 302 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 Schritt 306 zu einer entsprechenden Position in einem Ausgaberegister ausgegeben. Die Operation auf dem zweiten Element kann bei Schritt 308 ausgeführt werden, und das Ergebnis der Operation auf dem zweiten Element kann bei Schritt 310 in einem entsprechenden Ort eines Ausgaberegisters gespeichert werden. Gemäß einigen Ausführungsformen können die Schritte 304 und 306 parallel zu den Schritten 308 und 310 ausgeführt werden.
  • 4 veranschaulicht ein Verfahren 400 zum Verarbeiten von Daten unter Verwendung eines Prozessors gemäß Ausführungsformen der Erfindung. Bei Schritt 402 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 Schritt 418 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 Schritt 406, 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 Schritt 408 eine Angabe der Ausnahme und gibt bei Schritt 410 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 Schritt 412 die Operation ausgeführt, und das Ergebnis der Operation auf dem Element oder den Elementen wird bei Schritt 414 zu dem Ausgaberegister ausgegeben. Bei Schritt 416 kehrt das Verfahren zu Schritt 406 zurück, falls es mehr Elemente gibt, die betrachtet werden müssen, andernfalls endet es bei 420. Während 4 die Schritte 406414 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 Verfahren 500 zum Identifizieren der Ausnahmen, die in einem Ausgabevektor aufgetreten sind, gemäß Ausführungsformen der Erfindung. Bei Schritt 502 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 Schritt 504 können, falls das Ergebnis eine Angabe einer Ausnahme ist, die geeigneten Ausnahmeinformationen aus der Angabe bei Schritt 506 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 Schritt 508 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 Schritt 510 bestimmt der Prozess, ob die gesamten Ausgabedaten gelesen worden sind. Falls nicht, kehrt das Verfahren 500 zu Schritt 502 zurück und wird für die nächsten Elemente in dem Ausgaberegister wiederholt. Falls jedoch bei Schritt 510 das Verfahren 500 bestimmt, dass die gesamten Ausgabeelemente gelesen worden sind, dann endet der Prozess bei Schritt 512.
  • 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 Prozessorkern 600, der eine Ausführungseinheit 602, eine Abrufeinheit 604, eine Gleitkommaeinheit 606, eine Lade/Speicher-Einheit 608, eine Speichermanagementeinheit (MMU) 610, einen Anweisungszwischenspeicher 612, einen Datenzwischenspeicher 614, eine Busschnittstelleneinheit 616, eine Multiplikations- und Divisionseinheit (MDU) 620, einen Co-Prozessor 622, Mehrzweckregister 624, ein Scratch-Pad 630 und eine Kernerweiterungseinheit 634 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 Prozessorkerns 600 gemäß einer Ausführungsform der vorliegenden Erfindung zum Implementieren eines gemeinsam verwendeten Register-Pools. Der Prozessorkern 600 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 Prozessorkern 600 eine Ausführungseinheit 602, eine Abrufeinheit 604, eine Gleitkommaeinheit 606, eine Lade/Speicher-Einheit 608, eine Speichermanagementeinheit (MMU) 610, einen Anweisungszwischenspeicher 612, einen Datenzwischenspeicher 614, eine Busschnittstelleneinheit 616, eine Multiplikations- und Divisionseinheit (MDU) 620, einen Co-Prozessor 622, Mehrzweckregister 624, ein Scratch-Pad 630 und eine Kernerweiterungseinheit 634. Obwohl der Prozessorkern 600 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 in 6 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ührungseinheit 602 ist mit einer Abrufeinheit 604, einer Gleitkommaeinheit 606, einer Lade/Speichereinheit 608, einer Multiplikations- und Divisionseinheit 620, einem Co-Prozessor 622, Mehrzweckregistern 624 und einer Kernerweiterungseinheit 634 verbunden.
  • Die Abrufeinheit 604 ist für das Bereitstellen von Anweisungen für die Ausführungseinheit 602 zuständig. In einer Ausführungsform enthält die Abrufeinheit 604 Steuerlogik für den Anweisungszwischenspeicher 612, eine Aufzeichnungseinheit zum Aufzeichnen komprimierter Formatanweisungen, eine dynamische Zweigvorhersage und einen Anweisungspuffer, um den Betrieb der Abrufeinheit 604 von der Ausführungseinheit 602 zu entkoppeln. Die Abrufeinheit 604 ist mit der Ausführungseinheit 602, der Speichermanagementeinheit 610, dem Anweisungszwischenspeicher 612 und der Busschnittstelleneinheit 616 verbunden. Die Gleitkommaeinheit 606 ist mit der Ausführungseinheit 602 verbunden und bearbeitet Nicht-Ganzzahldaten. Die Gleitkommaeinheit 606 enthält Gleitkommaregister 618. In einer Ausführungsform können die Gleitkommaregister 618 außerhalb der Gleitkommaeinheit 606 sein. Die Gleitkommaregister 618 können 32-Bit- oder 64-Bit-Register sein, die für Gleitkommaoperationen, die von der Gleitkommaeinheit 606 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/Speichereinheit 608 ist mit dem Datenzwischenspeicher 614 und dem Scratch-Pad 630 und/oder einem Füllpuffer (nicht gezeigt) verbunden. Die Lade/Speichereinheit 608 ist außerdem mit der Speichermanagementeinheit 610 und der Busschnittstelleneinheit 616 verbunden.
  • Die Speichermanagementeinheit 610 übersetzt virtuelle Adressen in physikalische Adressen für den Speicherzugriff. In einer Ausführungsform enthält die Speichermanagementeinheit 610 einen Übersetzungspuffer (TLB) und kann einen getrennten Anweisungs-TLB und einen getrennten Daten-TLB enthalten. Die Speichermanagementeinheit 610 ist mit der Abrufeinheit 604 und der Lade/Speichereinheit 608 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 Anweisungszwischenspeicher 612 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 Anweisungszwischenspeicher 612 ist mit der Abrufeinheit 604 verbunden.
  • Der Datenzwischenspeicher 614 ist ebenfalls ein auf dem Chip enthaltenes Speicherfeld. Der Datenzwischenspeicher 614 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 Datenzwischenspeicher 614 ist mit der Lade/Speichereinheit 608 verbunden.
  • Die Busschnittstelleneinheit 616 steuert externe Schnittstellensignale für den Prozessorkern 600. In einer Ausführungsform enthält die Busschnittstelleneinheit 616 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 Prozessorkern 600 aus. In einer Ausführungsform enthält die Multiplikations- und Divisionseinheit 620 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 in 6 gezeigt ist, ist die Multiplikations- und Divisionseinheit 620 mit der Ausführungseinheit 602 verbunden. Die Akkumulatoren 626 werden verwendet, um Ergebnisse der von der Multiplikations- und Divisionseinheit 620 ausgeführten Arithmetik zu speichern.
  • Der Co-Prozessor 622 führt verschiedene Overhead-Funktionen für den Prozessorkern 600 aus. In einer Ausführungsform ist der Co-Prozessor 622 für virtuell/physikalische Adressübersetzungen, Implementieren von Zwischenspeicherprotokollen, Ausnahmebehandlung, Operationsbetriebsartauswahl und Aktivieren/Deaktivieren von Unterbrechungsfunktionen zuständig. Der Co-Prozessor 622 ist mit der Ausführungseinheit 602 verbunden. Der Co-Prozessor 622 enthält Zustandsregister 628 und einen allgemeinen Speicher 638. Die Zustandsregister 628 werden im Allgemeinen verwendet, um Variablen, die von dem Co-Prozessor 622 verwendet werden, zu halten. Die Zustandsregister 628 können außerdem Register zum allgemeinen Halten von Zustandsinformationen für den Prozessorkern 600 enthalten. Beispielsweise können die Zustandsregister 628 ein Statusregister enthalten. Der allgemeine Speicher 638 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 Speicher 638 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 Mehrzweckregister 624 ein Teil der Ausführungseinheit 602. 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/Speichereinheit 608 mit Daten versorgt. Die eine oder die mehreren speziellen Adressbereiche eines Scratch-Pads können vorkonfiguriert sein oder programmtechnisch konfiguriert werden, während der Prozessorkern 600 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 Prozessorkern 600 an die spezifischen Anwendungen angepasst werden kann. Die UDI 634 ermöglicht einem Anwender, seine eigenen Anweisungen, die auf beispielsweise in den Mehrzweckregistern 624 gespeicherten Daten arbeiten können, zu definieren und hinzuzufügen. Die UDI 634 ermöglicht Anwendern, neue Fähigkeiten hinzuzufügen, während sie die Kompatibilität mit Industriestandardarchitekturen erhält. Die UDI 634 enthält einen UDI-Speicher 636, 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-Speicher 636 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)

  1. 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.
  2. Verfahren nach Anspruch 1, das ferner ein Bestimmen, dass eine Nicht-signalisierungs-Ausnahmebetriebsart im Prozessor aktiviert ist, umfasst.
  3. Verfahren nach Anspruch 1, wobei der eine oder die mehreren Eingabevektoren eine dritte Gruppe von Elementen umfassen.
  4. 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.
  5. Verfahren nach Anspruch 1, wobei die erste und die zweite Operation die gleiche Operation sind.
  6. Verfahren nach Anspruch 1, wobei der Mehrfachdatenverarbeitungselementprozessor ein Einfacheingabe-Mehrfachdaten-Prozessor (SIMD-Prozessor) ist.
  7. Verfahren nach Anspruch 1, wobei der Mehrfachdatenverarbeitungselementprozessor ein Mehrfacheingabe-Mehrfachdaten-Prozessor (MIMD-Prozessor) ist.
  8. Verfahren nach Anspruch 1, wobei die Angabe einem Ausnahmebehandlungsprogramm signalisiert, die Ausnahme zu behandeln.
  9. Verfahren nach Anspruch 1, wobei sowohl die erste als auch die zweite Gruppe von Elementen ein einzelnes Element enthält.
  10. Verfahren nach Anspruch 1, wobei sowohl die erste als auch die zweite Gruppe von Elementen mehrere Elemente enthält.
  11. 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.
  12. System nach Anspruch 11, wobei der Prozessor ferner ausgelegt ist zu bestimmen, dass eine Nichtsignalisierungs-Ausnahmebetriebsart in dem Prozessor aktiviert ist.
  13. System nach Anspruch 11, wobei der eine oder die mehreren Eingabevektoren ferner eine dritte Gruppe von Elementen umfassen.
  14. 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.
  15. System nach Anspruch 11, wobei die erste und die zweite Operation die gleiche Operation sind.
  16. System nach Anspruch 11, wobei der Mehrfachdatenverarbeitungselementprozessor ein Einfacheingabe-Mehrfachdaten-Prozessor (SIMD-Prozessor) ist.
  17. System nach Anspruch 11, wobei der Mehrfachdatenverarbeitungselementprozessor ein Mehrfacheingabe-Mehrfachdaten-Prozessor (MIMD-Prozessor) ist.
  18. Verfahren nach Anspruch 11, wobei die Angabe ausgelegt ist, einem Ausnahmebehandlungsprogramm zu signalisieren, die Ausnahme zu behandeln.
  19. System nach Anspruch 11, wobei sowohl die erste als auch die zweite Gruppe von Elementen ein einzelnes Element enthält.
  20. System nach Anspruch 11, wobei sowohl die erste als auch die zweite Gruppe von Elementen mehrere Elemente enthält.
DE102014002510.1A 2013-02-22 2014-02-21 Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur Withdrawn DE102014002510A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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