DE102013018376A1 - System for executing sequential code by using single-instruction-multi-strand-processor, has pipeline-control unit formed to generate group of opponent-strands of sequential code, where one of opponent-strands is subordinate strand - Google Patents
System for executing sequential code by using single-instruction-multi-strand-processor, has pipeline-control unit formed to generate group of opponent-strands of sequential code, where one of opponent-strands is subordinate strand Download PDFInfo
- Publication number
- DE102013018376A1 DE102013018376A1 DE201310018376 DE102013018376A DE102013018376A1 DE 102013018376 A1 DE102013018376 A1 DE 102013018376A1 DE 201310018376 DE201310018376 DE 201310018376 DE 102013018376 A DE102013018376 A DE 102013018376A DE 102013018376 A1 DE102013018376 A1 DE 102013018376A1
- Authority
- DE
- Germany
- Prior art keywords
- strands
- strand
- sequential code
- subordinate
- instructions
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 description 24
- 239000005557 antagonist Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000006467 substitution reaction 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
Description
QUERVERWEIS AUF VERWANDTE ANMELDUNGCROSS-REFERENCE TO RELATED APPLICATION
Diese Anmeldung beansprucht die Priorität der vorläufigen US-Anmeldung mit der Seriennummer 61/722661, die von den Lin et al. am 5. November 2012 eingereicht wurde mit dem Titel „AUSFÜHRUNG EINES SEQUENZIELLEN CODES UNTER ANWENDUNG EINER GRUPPE AUS STRÄNGEN”, und der US-Anmeldung mit der Seriennummer 13/723981, die von Lin et al. am 21. Dezember 2012 eingereicht wurde mit dem Titel „SYSTEM UND VERFAHREN ZUR AUSFÜHRUNG EINES SEQUENZIELLEN CODES UNTER ANWENDUNG EINER GRUPPE AUS STRÄNGEN UND EINES EINZELBEFEHL-MULTI-STRANG-PROZESSORS, DER DIESE ENTHÄLT”, die beide von der gleichen Anmelderin wie die vorliegende Anmeldung sind und hierin durch Bezugnahme mit eingeschlossen sind.This application claims the benefit of US Provisional Application Ser. No. 61 / 722,661, filed by Lin et al. filed November 5, 2012, entitled "IMPLEMENTATION OF A SEQUENCIAL CODE USING A GROUP OF STRANDS," and US Application Serial No. 13 / 723,981, by Lin et al. on December 21, 2012, entitled "SYSTEM AND METHOD FOR CARRYING OUT A SEQUENCIAL CODE USING A GROUP OF STRANDS AND A SINGLE COMMAND MULTI-STRAND PROCESSOR CONTAINING THEM", both filed by the same Applicant as the present application and are incorporated herein by reference.
TECHNISCHES GEBIETTECHNICAL AREA
Diese Anmeldung richtet sich generell an parallele Prozessoren und insbesondere an ein System und Verfahren zur Ausführung eines sequenziellen Codes unter Anwendung einer Gruppe aus Strängen und eines Einzelbefehl-Multi-Strang-(SIMT-)Prozessors, in welchem das System oder das Verfahren enthalten sind.This application is directed generally to parallel processors and, more particularly, to a system and method for executing a sequential code using a set of strings and a single instruction multi-string (SIMT) processor incorporating the system or method.
HINTERGRUNDBACKGROUND
Wie der Fachmann auf dem Gebiet weiß, können Anwendungen parallel ausgeführt werden, um ihr Leistungsverhalten zu verbessern. Datenparallele Anwendungen führen den gleichen Prozess gleichzeitig an unterschiedlichen Daten aus. Aufgabenparallele Anwendungen führen unterschiedliche Prozesse gleichzeitig an den gleichen Daten aus. Statische parallele Anwendungen sind Anwendungen mit einem Grad an Parallelität, der vor ihrer Ausführung festgelegt werden kann. Im Gegensatz dazu kann die Parallelität, die von dynamischen parallelen Anwendungen erreichbar ist, nur bestimmt werden, wenn sie gerade ausgeführt werden. Unabhängig davon, ob die Anwendung datenparallel oder aufgabenparallel oder statisch oder dynamisch parallel sind, kann sie in einer Pipeline bzw. einer Parallelverarbeitungslinie ausgeführt werden, was häufig der Fall ist für graphische Anwendungen.As one skilled in the art knows, applications can be performed in parallel to improve their performance. Data-parallel applications execute the same process simultaneously on different data. Task-parallel applications execute different processes simultaneously on the same data. Static parallel applications are applications with a degree of parallelism that can be set prior to their execution. In contrast, the parallelism achievable by dynamic parallel applications can only be determined when they are being executed. Whether the applications are data-parallel or task-parallel, or static or dynamically parallel, they can be executed in a pipeline or parallel processing line, which is often the case for graphical applications.
Ein SIMT-Prozessor ist insbesondere bei der Ausführung datenparalleler Anwendungen geeignet. Eine Pipeline-Steuereinheit in dem SIMT-Prozessor erzeugt eine Gruppe aus Strängen zur Ausführung und disponiert diese für die Ausführung, während welcher alle Stränge in der Gruppe gleichzeitig den gleichen Befehl ausführen. In einem speziellen Prozessor hat jede Gruppe 32 Stränge, die 32 Ausführungs-Pipelines oder Bahnen in dem SIMT-Prozessor entsprechen.A SIMT processor is particularly suitable for the execution of data-parallel applications. A pipeline controller in the SIMT processor generates a set of threads for execution and schedules them for execution, during which all threads in the group simultaneously execute the same instruction. In a particular processor, each group has 32 strands corresponding to 32 execution pipelines or lanes in the SIMT processor.
Parallele Anwendungen enthalten typischerweise Gebiete bzw. Bereiche mit sequenziellem Code und parallelem Code. Ein sequenzieller Code kann nicht parallel ausgeführt werden und wird daher in einem einzelnen Strang ausgeführt. Wenn ein paralleler Code angetroffen wird, teilt die Pipeline-Steuereinheit die Ausführung auf, wobei Gruppen aus Arbeiter-Strängen für die parallele Ausführung des parallelen Codes gebildet werden. Wenn wieder ein sequenzieller Code angetroffen wird, vereinigt die Pipeline-Steuereinheit die Ergebnisse der parallelen Ausführung, erzeugt einen weiteren einzelnen Strang für den sequenziellen Code und die Ausführung geht weiter.Parallel applications typically contain regions of sequential code and parallel code. A sequential code can not be executed in parallel and is therefore executed in a single thread. When a parallel code is encountered, the pipeline control unit breaks the execution, forming groups of worker strings for the parallel execution of the parallel code. When a sequential code is encountered again, the pipeline controller unites the results of the parallel execution, creates another single thread for the sequential code, and execution continues.
Es ist wichtig, die Stränge in einer Gruppe zu synchronisieren. Die Synchronisierung beinhaltet teilweise die Anpassung der Zustände jeweiliger lokaler Speicher, die zu jeweiligen Bahnen gehören. Es wurde erkannt, dass die Synchronisierung schneller gemacht werden kann, wenn bei der Ausführung eines sequenziellen Codes ein Gegenspieler-Strang des sequenziellen Codes in jeder der Bahnen ausgeführt wird. Die Zustände des lokalen Speichers werden somit als bereits angeglichen angenommen, wenn die Ausführung später aufgeteilt wird.It is important to synchronize the strands in a group. The synchronization involves partially adapting the states of respective local memories belonging to respective lanes. It has been recognized that synchronization can be made faster if, in the execution of a sequential code, an antagonist string of the sequential code is executed in each of the tracks. The states of the local memory are thus assumed to be already aligned when the execution is split later.
ÜBERBLICKOVERVIEW
Ein Aspekt stellt ein System zur Ausführung eines sequenziellen Codes bereit. In einer Ausführungsform umfasst das System: (1) eine Pipeline-Steuereinheit, die ausgebildet ist, eine Gruppe aus Gegenspieler-Strängen des sequenziellen Codes zu erzeugen, wobei einer der Gegenspieler-Stränge ein Master-Strang bzw. ein übergeordneter Strang ist, wobei verbleibende der Gegenspieler-Stränge Slave-Stränge bzw. untergeordnete Stränge sind, und (2) Bahnen, die ausgebildet sind, um: (2a) gewisse Befehle des sequenziellen Codes nur in dem übergeordneten Strang auszuführen, wobei entsprechende Befehle in den untergeordneten Strängen auf den gewissen Befehlen basieren, und (2b) Verzweigungsbedingungen in dem übergeordneten Strang an die untergeordneten Stränge bekannt zu geben.One aspect provides a system for executing a sequential code. In one embodiment, the system comprises: (1) a pipeline control unit configured to generate a set of opponent strands of the sequential code, wherein one of the opposing strands is a master thread, with one remaining strand the adversary strands are slave strands, and (2) tracks configured to: (2a) execute certain commands of the sequential code only in the parent thread, with corresponding commands in the subordinate strands are based on the certain commands, and (2b) announce branch conditions in the parent strand to the subordinate strands.
Ein weiterer Aspekt stellt ein Verfahren zur Ausführung eines sequenziellen Codes bereit. In einer Ausführungsform umfasst das Verfahren: (1) Erzeugen einer Gruppe aus Gegenspieler-Strängen des sequenziellen Codes, wobei einer der Gegenspieler-Strange ein übergeordneter Strang ist, wobei die verbleibenden Gegenspieler-Stränge untergeordnete Stränge sind, (2) Ausführen gewisser Befehle des sequenziellen Codes nur in dem übergeordneten Strang, wobei entsprechende Befehle in den untergeordneten Strängen auf den gewissen Befehlen basieren, und (3) Bekanntgeben von Verzweigungsbedingungen in dem übergeordneten Strang an die untergeordneten Stränge.Another aspect provides a method of executing a sequential code. In one embodiment, the method comprises: (1) generating a set of antisplay strands of the sequential code, wherein one of the antagonist strands is a parent strand, the remaining antisplay strands being subordinate strands, (2) performing certain commands of the sequential one Codes only in the parent thread, with corresponding commands in the child threads based on the certain commands, and (3) posting branch conditions in the parent thread to the child threads.
Ein noch weiterer Aspekt stellt einen SIMT-Prozessor bereit. In einer Ausführungsform umfasst der SIMT-Prozessor: (1) Bahnen, (2) lokale Speicher, die entsprechenden Bahnen zugeordnet sind, (3) eine gemeinsam genutzte Speichereinrichtung für die Bahnen und (4) eine Pipeline-Steuereinheit, die ausgebildet ist, eine Gruppe aus Gegenspieler-Strängen des sequenziellen Codes zu erzeugen und zu veranlassen, dass die Gruppe in den Bahnen ausgeführt wird, wobei einer der Gegenspieler-Stränge ein übergeordneter Strang ist, wobei die verbleibenden Gegenspieler-Strange untergeordnete Stränge sind. Die Bahnen sind ausgebildet, um: (1) gewisse Befehle des sequenziellen Codes nur in dem übergeordneten Strang auszuführen, wobei entsprechende Befehle in den untergeordneten Strängen auf den gewissen Befehlen basieren, und (2) Verzweigungsbedingungen in dem übergeordneten Strang an die untergeordneten Stränge bekannt zu geben.Yet another aspect provides a SIMT processor. In one embodiment, the SIMT processor comprises: (1) lanes, (2) local memories associated with respective lanes, (3) a shared memory device for the lanes, and (4) a pipeline control unit configured Create group of opponent strands of the sequential code and cause the group to execute in the lanes, one of the opponent strands being a parent strand, with the remaining opponent strands being minor strands. The lanes are configured to: (1) execute certain commands of the sequential code only in the parent thread, with corresponding instructions in the child threads based on the certain instructions, and (2) know branch conditions in the parent thread to the child threads give.
KURZE BESCHREIBUNGSHORT DESCRIPTION
Es wird nun auf die folgenden Beschreibungen in Verbindung mit den begleitenden Zeichnungen verwiesen, in denen:Reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION
Wie zuvor angegeben ist, wurde erkannt, dass der Vorgang der Synchronisierung unter den Bahnen oder Kernen eines SIMT-Prozessors schneller gemacht werden kann, wenn ein Gegenspieler-Strang des sequenziellen Codes in jeder der Bahnen ausgeführt wird. Da die Gegenspieler-Stränge den gleichen Code aufweisen (d. h. die gleichen Befehle in der gleichen Reihenfolge), und da die Zustände der lokalen Speicher angeglichen sind, wenn die Gegenspieler-Stränge des Codes mit der Ausführung beginnen, erscheint die Annahme, dass die Zustände der lokalen Speicher angeglichen bleiben, als eine ausgemachte Sache. Jedoch wird hierin erkannt, dass Bedingungen auftreten können, unter denen die Speicherzustände voneinander abweichen.As stated previously, it has been recognized that the process of synchronization among the lanes or cores of a SIMT processor can be made faster if an antisquos strand of the sequential code is executed in each of the lanes. Since the opponent strands have the same code (ie, the same commands in the same order), and since the states of the local memories are aligned, when the opponent strands of the code begin execution, the assumption appears that the states of the local memory, as a foregone conclusion. However, it is recognized herein that conditions may occur under which the memory states differ.
Als ein Beispiel sei angenommen, dass die Gegenspieler-Stränge des sequenziellen Codes den gleichen Ladebefehl ausführen sollen. Die Stelle des Speichers, die zu laden ist, ist durch ein Register oder eine Adresse angegeben. Wenn dies durch ein Register der Fall ist, kann der Wert des Registers pro Strang unterschiedlich sein, da jeder Strang seine eigene Kopie des Registers besitzt. Wenn dies durch eine Adresse der Fall ist, kann der Adressenwert auf unterschiedliche Strang-lokale Speicherstellen in dem System zeigen. In jedem Falle können die jeweiligen Stränge gegebenenfalls unterschiedliche Werte aus einer Vielzahl von Speicherstellen laden, so dass die Strang-lokalen Speicherzustände voneinander abweichen. Sollen die Gegenspieler-Stränge dann auf der Grundlage der geladenen Daten verzweigen, wären einige genommene Verzweigungen korrekt, und andere wären fehlerhaft.As an example, assume that the counterpart strings of the sequential code should execute the same load instruction. The location of the memory to be loaded is indicated by a register or an address. If this is the case through a register, the value of the register per thread may be different because each thread has its own copy of the register. If this is the case through an address, the address value may point to different thread local storage locations in the system. In either case, the respective strings may optionally load different values from a plurality of memory locations such that the string local memory states are different. If the adversary strands then branch based on the loaded data, some branches taken would be correct, and others would be flawed.
Es sei in ähnlicher Weise angenommen, dass die Gegenspieler-Stränge des sequenziellen Codes den gleichen Speicherbefehl ausführen sollen. Der Speicher, in welchen gespeichert werden soll, ist aus den gleichen Gründen pro Strang unterschiedlich, wie dies zuvor für den Ladebefehl beschrieben ist.It is similarly assumed that the opponent strands of the sequential code should execute the same store instruction. The memory to be stored in will be different per thread for the same reasons as previously described for the load instruction.
Speicherstellen, die bei der sequenziellen Ausführung nicht modifiziert wurden, würden fälschlicher Weise bei der parallelen Ausführung modifiziert werden.Memory locations which were not modified in the sequential execution would be falsely modified in the parallel execution.
Als ein weiteres Beispiel sei angenommen, dass die Gegenspieler-Stränge des sequenziellen Codes Daten gleichzeitig in die gleiche Stelle des gemeinsam benutzten Speichers speichern sollen. Der gemeinsam benutzte Speicher könnte wiederum überfüllt und als Folge davon geschädigt werden. Die Probleme, die in diesen beiden Beispielen aufgezeigt sind, werden manchmal in Vektor-Operationen angetroffen.As another example, assume that the contiguous strands of the sequential code should simultaneously store data in the same location of the shared memory. The shared memory could in turn become overcrowded and damaged as a result. The problems shown in these two examples are sometimes encountered in vector operations.
Als noch ein weiteres Beispiel sei angenommen, dass eine Ausnahmebehandlung eine von den diversen Bahnen gemeinsam benutzte Ressource ist. Gebiete mit sequenziellem Code enthalten oft zahlreiche Befehle, die potenziell das Auftreten von Ausnahmen hervorrufen können. Bei der parallelen Ausführung dieser Befehle könnten bei Auftreten einer Ausnahme die parallelen Prozesse gleichzeitige Ausnahmen hervorrufen und könnten die gemeinsam genutzte Ausnahmebehandlung überfrachten, die höchstens eine einzelne Ausnahme und möglicherweise überhaupt keine Ausnahme erwarten würde.As yet another example, assume that an exception handler is a resource shared by the various lanes. Sequential code areas often contain many commands that can potentially cause exceptions to occur. When executing these commands in parallel, if an exception occurs, the parallel processes could cause concurrent exceptions and could overload the shared exception handler, which would expect at most a single exception and possibly no exception whatsoever.
Es wird daher hierin erkannt, dass die Annahme, dass die lokalen Speicherzustände notwendigerweise übereinstimmend bleiben, während die Gegenspieler-Strange eines sequenziellen Codes ausgeführt werden, nicht haltbar ist. Es wird ferner hierin erkannt, dass gewisse Operationen, wozu nicht nur Ladebefehle aus und Speicherbefehle in den gemeinsamen benutzten Speicher gehören, sondern auch die Divisionen und andere Befehle, die potentiell Ausnahmen hervorrufen, den gemeinsam benutzten Speicher schädigen können oder bewirken können, dass als „Nebenwirkung” lokale Speicherzustände voneinander abweichen können. Es wird ferner hierin erkannt, dass ein Mechanismus benötigt wird, um sicherzustellen, dass die Semantik eines sequenziellen Codes durch voneinander abweichende Strang-lokale Speicherzustände nicht verändert wird. It is therefore recognized herein that the assumption that the local memory states necessarily remain coincidental while the counterpart strings of a sequential code are executed is not tenable. It is further appreciated herein that certain operations, including not only load instructions and store instructions in shared memory, but also the divisions and other instructions that potentially cause exceptions, may or may cause damage to the shared memory. Side effect "local memory states may differ. It is further appreciated herein that a mechanism is needed to ensure that the semantics of a sequential code is not altered by divisive strand-local memory states.
Folglich werden hier diverse Ausführungsformen eines Systems und Verfahrens zur Ausführung eines sequenziellen Codes unter Anwendung einer Gruppe aus Strängen eingeführt. Auf einer sehr hohen Ebene betrachtet bewirken die diversen Ausführungsformen, dass die Ausführung auf Gegenspieler-Strang-Ebene eines sequenziellen Codes eine Ausführung auf Ebene eines übergeordneten Strangs eines sequenziellen Codes emuliert bzw. nachbildet.Thus, various embodiments of a system and method for executing a sequential code using a set of strands are introduced herein. At a very high level, the various embodiments cause the counterpart string-level execution of a sequential code to emulate execution at the level of a higher-level string of sequential code.
Gemäß den diversen Ausführungsformen wird einer der Gegenspieler-Stränge als ein übergeordneter Strang ausgewiesen, und die anderen Stränge werden als untergeordnete Stränge ausgewiesen. Gewisse Befehle (typischerweise jene, die gemeinsam benutzte Ressourcen nutzen können oder tatsächlich benutzen) in den untergeordneten Strängen basieren bzw. gründen dann auf entsprechenden Befehlen in dem übergeordneten Strang, und nur die entsprechenden Befehle in dem übergeordneten Strang werden ausgeführt. Wenn ein Verzweigungsbefehl in dem übergeordneten Strang angetroffen wird, werden dann die Verzweigungsbedingungen in dem übergeordneten Strang den untergeordneten Strängen mitgeteilt bzw. bekannt gegeben.According to the various embodiments, one of the opponent strands is designated as a parent strand and the other strands are designated as child strands. Certain commands (typically those that may or may share shared resources) in the child strands are then based on corresponding commands in the parent thread, and only the corresponding commands in the parent thread are executed. If a branch instruction is encountered in the parent thread, then the branch conditions in the parent thread are reported to the child strings.
Der SIMT-Prozessor
Es wird die Ausführungsform aus
Die Ausführungsform aus
Die Stranggruppe
In der Ausführungsform aus
Das Verfahren beginnt in einem Startschritt
In einem Schritt
Ausführungsformen der vorliegenden Erfindung umfassen die folgenden Konzepte:
Konzept 1. Ein System zur Ausführung eines sequenziellen Codes, mit: (i) einer Pipeline-Steuereinheit, die ausgebildet ist, eine Gruppe aus Gegenspieler-Strängen des sequenziellen Codes zu erzeugen, wobei einer der Gegenspieler-Stränge ein übergeordneter Strang ist, während die verbleibenden Gegenspieler-Stränge untergeordnete Stränge sind; und (ii) Bahnen, die ausgebildet sind, um: gewisse Befehle des sequenziellen Codes nur in dem übergeordneten Strang auszuführen, wobei entsprechende Befehle in den untergeordneten Strängen auf den gewissen Befehle basieren, und Verzweigungsbedingungen in dem übergeordneten Strang den untergeordneten Strängen bekannt zu geben. Embodiments of the present invention include the following concepts:
Konzept 2. Das System wie beschrieben in Konzept 1, wobei lokale Speicher, die den Bahnen zugeordnet sind, die die untergeordneten Stränge ausführen, ferner ausgebildet sind, die Verzweigungsbedingungen zu speichern.Concept 2. The system as described in
Konzept 3. Das System wie beschrieben in Konzept 1 oder 2, wobei die gewissen Befehle ausgewählt sind aus der Gruppe:
Ladebefehle, Speicherbefehle und eine Ausnahme hervorrufende Befehle.Concept 3. The system as described in
Load commands, store commands, and exception-causing commands.
Konzept 4. Das System wie beschrieben in einem der Konzepte 1–3, wobei eine Bahn, die den übergeordneten Strang ausführt, ferner ausgebildet ist, die Verzweigungsbedingungen vor Ausführung eines Verzweigungsbefehls in dem übergeordneten Strang bekannt zu geben, und wobei Bahnen, die die untergeordneten Stränge ausführen, ferner ausgebildet sind, entsprechende Verzweigungsbefehle in den untergeordneten Strängen nur auszuführen, nachdem die Bahn die Verzweigungsbedingungen bekannt gegeben hat.Concept 4. The system as described in any one of concepts 1-3, wherein a lane that executes the parent strand is further configured to announce the branch conditions prior to executing a branch instruction in the parent strand, and lanes that are the child Execute strands, further configured to execute corresponding branch instructions in the subordinate strands only after the web has announced the branch conditions.
Konzept 5. Das System wie beschrieben in einem der Konzepte 1–4, wobei die Pipeline-Steuereinheit ferner ausgebildet ist, die entsprechenden Befehle unter Verwendung einer Bedingung anzugeben, die auf einer Strangkennung beruht.Concept 5. The system as described in any one of concepts 1-4, wherein the pipeline control unit is further configured to specify the corresponding instructions using a condition based on a string identifier.
Konzept 6. Das System wie beschrieben in einem der Konzepte 1–5, wobei der sequenzielle Code Teil einer Vektor-Operation ist.Concept 6. The system as described in any of concepts 1-5, wherein the sequential code is part of a vector operation.
Konzept 7. Das System wie beschrieben in einem der Konzepte 1–6, wobei der sequenzielle Code Teil einer Anwendung ist, die ausgewählt ist aus der Gruppe: ein OpenMP-Programm und ein OpenACC-Programm.Concept 7. The system as described in any of concepts 1-6, wherein the sequential code is part of an application selected from the group: an OpenMP program and an OpenACC program.
Konzept 8. Ein Verfahren zur Ausführung eines sequenziellen Codes, mit: (i) Erzeugen einer Gruppe aus Gegenspieler-Strängen des sequenziellen Codes, wobei einer der Gegenspieler-Stränge ein übergeordneter Strang ist, während die verbleibenden Gegenspieler-Strange untergeordnete Stränge sind; (ii) Ausführen gewisser Befehle des sequenziellen Codes nur in dem übergeordneten Strang, wobei entsprechende Befehle in den untergeordneten Strängen auf den gewissen Befehlen beruhen bzw. durch diese bestimmt sind; und (iii) Bekanntgeben von Verzweigungsbedingungen in dem übergeordneten Strang an die untergeordneten Stränge.Concept 8. A method of executing a sequential code, comprising: (i) generating a set of antisplay strands of the sequential code, wherein one of the antisplay strands is a parent thread while the remaining antagonist strands are child strands; (ii) executing certain instructions of the sequential code only in the parent thread, with corresponding instructions in the child threads being based on or determined by the certain instructions; and (iii) posting branch conditions in the parent thread to the subordinate threads.
Konzept 9. Das Verfahren wie beschrieben in Konzept 8, das ferner umfasst: Speichern der Verzweigungsbedingungen in den lokalen Speichern, die den untergeordneten Strängen zugeordnet sind.Concept 9. The method as described in Concept 8, further comprising: storing the branch conditions in the local memories associated with the subordinate threads.
Konzept 10. Das Verfahren wie beschrieben in Konzept 8 oder 9, wobei die gewissen Befehle ausgewählt sind aus der Gruppe: Ladebefehle, Speicherbefehle und eine Ausnahme hervorrufende Befehle.Concept 10. The method as described in concept 8 or 9, wherein the certain instructions are selected from the group: load instructions, store instructions, and exception causing instructions.
Konzept 11. Das Verfahren wie beschrieben in einem der Konzepte 8–10, wobei die Bekanntgabe vor Ausführung eines Verzweigungsbefehls in dem übergeordneten Strang ausgeführt wird, wobei das Verfahren ferner umfasst: Ausführen entsprechender Verzweigungsbefehle in den untergeordneten Strängen, nachdem die Bekanntgabe ausgeführt ist.Concept 11. The method as described in any of the concepts 8-10, wherein the announcement is performed prior to executing a branch instruction in the parent thread, the method further comprising: executing corresponding branch instructions in the child strings after the announcement is executed.
Konzept 12. Das Verfahren wie beschrieben in einem der Konzepte 8–11, wobei die Ausführung umfasst: Bestimmen der entsprechenden Befehle unter Verwendung einer Bedingung, die auf einer Strangkennung beruht.Concept 12. The method as described in any of concepts 8-11, the embodiment comprising: determining the corresponding instructions using a condition based on a string identifier.
Konzept 13. Das Verfahren wie beschrieben in einem der Konzepte 8–12, wobei der sequenzielle Code Teil einer Vektor-Operation ist.Concept 13. The method as described in any of the concepts 8-12, wherein the sequential code is part of a vector operation.
Konzept 14. Das Verfahren wie beschrieben in einem der Konzepte 8–13, wobei der sequenzielle Code Teil einer Anwendung ist, die ausgewählt ist aus der Gruppe: ein OpenMP-Programm und ein OpenACC-Programm.Concept 14. The method as described in any of concepts 8-13, wherein the sequential code is part of an application selected from the group consisting of an OpenMP program and an OpenACC program.
Konzept 15. Ein Einzelbefehl-Multi-Strang-(SIMT-)Prozessor, mit: (i) Bahnen; (ii) lokalen Speichern, die entsprechenden Bahnen zugeordnet sind; (iii) einer gemeinsam benutzten Speichereinrichtung für die Bahnen; und (iv) einer Pipeline-Steuereinheit, die ausgebildet ist, eine Gruppe aus Gegenspieler-Strängen des sequenziellen Codes zu erzeugen und zu veranlassen, dass die Gruppe in den Bahnen ausgeführt wird, wobei einer der Gegenspieler-Stränge ein übergeordneter Strang ist, und wobei die verbleibenden Gegenspieler-Strange untergeordnete Stränge sind, wobei die Bahnen ausgebildet sind, um: gewisse Befehle des sequenziellen Codes nur in dem übergeordneten Strang auszuführen, wobei entsprechende Befehle in den untergeordneten Strängen auf den gewissen Befehlen beruhen, und um Verzweigungsbedingungen in dem übergeordneten Strang den untergeordneten Strängen bekannt zu geben.Concept 15. A single-instruction multi-strand (SIMT) processor, comprising: (i) tracks; (ii) local memories associated with respective lanes; (iii) a shared memory device for the lanes; and (iv) a pipeline control unit configured to generate a set of opponent strands of the sequential code and to cause the group to execute in the paths, wherein one of the opposing strands is a parent strand, and wherein the remaining antagonist strings are subordinate threads, the traces being arranged to: execute certain sequential code instructions only in the parent thread, with corresponding instructions in the subordinate threads based on the certain instructions, and branch conditions in the parent thread subordinate strands to announce.
Konzept 16. Der SIMT-Prozessor wie beschrieben in Konzept 15, wobei die lokalen Speicher, die den Bahnen zugeordnet sind, die die untergeordneten Stränge ausführen, ferner ausgebildet sind, die Verzweigungsbedingungen zu speichern.Concept 16. The SIMT processor as described in Concept 15, wherein the local memories associated with the paths that execute the subordinate threads are further configured to store the branch conditions.
Konzept 17. Der SIMT-Prozessor wie beschrieben in Konzept 15 oder 16, wobei die gewissen Befehle ausgewählt sind aus der Gruppe: Ladebefehle, Speicherbefehle und eine Ausnahme hervorrufende Befehle.Concept 17. The SIMT processor as described in Concept 15 or 16, wherein the certain instructions are selected from the group: load instructions, store instructions, and exception causing instructions.
Konzept 18. Der SIMT-Prozessor wie beschrieben in einem der Konzepte 15–17, wobei eine Bahn, die den übergeordneten Strang ausführt, ferner ausgebildet ist, die Verzweigungsbedingungen vor der Ausführung eines Verzweigungsbefehls in dem übergeordneten Strang bekannt zu geben, und wobei Bahnen, die die untergeordneten Stränge ausführen, ferner ausgebildet sind, entsprechende Verzweigungsbefehle in den untergeordneten Strängen nur auszuführen, nachdem die Bahn die Verzweigungsbedingungen bekannt gegeben hat.Concept 18. The SIMT processor as described in any one of concepts 15-17, wherein a lane executing the parent strand is further configured to announce the branch conditions prior to executing a branch instruction in the parent strand, and wherein lanes, which execute the subordinate threads, are further configured to execute corresponding branch instructions in the subordinate threads only after the web has announced branching conditions.
Konzept 19. Der SIMT-Prozessor wie beschrieben in einem der Konzepte 15–18, wobei die Pipeline-Steuereinheit ferner ausgebildet ist, die entsprechenden Befehle unter Verwendung einer Bedingung zu bestimmen, die auf einer Strangkennung beruht.Concept 19. The SIMT processor as described in any of concepts 15-18, wherein the pipeline control unit is further configured to determine the corresponding instructions using a condition based on a thread identifier.
Konzept 20. Der SIMT-Prozessor wie beschrieben in einem der Konzepte 15–19, wobei der sequenzielle Code Teil einer Anwendung ist, die ausgewählt ist aus der Gruppe: ein OpenMP-Programm und ein OpenACC-Programm.Concept 20. The SIMT processor as described in any of concepts 15-19, wherein the sequential code is part of an application selected from the group consisting of an OpenMP program and an OpenACC program.
Der Fachmann auf diesem Gebiet, an den sich diese Anmeldung richtet, erkennt, dass andere und weitere Hinzufügungen, Streichungen, Ersetzungen und Modifizierungen an den beschriebenen Ausführungsformen vorgenommen werden können.Those skilled in the art to which this application pertains recognize that other and further additions, deletions, substitutions, and alterations can be made to the described embodiments.
Claims (10)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261722661P | 2012-11-05 | 2012-11-05 | |
US61/722,661 | 2012-11-05 | ||
US13/723,981 US9436475B2 (en) | 2012-11-05 | 2012-12-21 | System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same |
US13/723,981 | 2012-12-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102013018376A1 true DE102013018376A1 (en) | 2014-05-08 |
Family
ID=50489870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE201310018376 Pending DE102013018376A1 (en) | 2012-11-05 | 2013-11-04 | System for executing sequential code by using single-instruction-multi-strand-processor, has pipeline-control unit formed to generate group of opponent-strands of sequential code, where one of opponent-strands is subordinate strand |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102013018376A1 (en) |
-
2013
- 2013-11-04 DE DE201310018376 patent/DE102013018376A1/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0689694B1 (en) | Process for the machine-generation of parallel processable command groups from a program for super-scalar microprocessors | |
DE102015112202A1 (en) | Combining paths | |
DE102013022722B4 (en) | SYSTEM AND METHOD FOR SYNCHRONIZING THREADS IN A DIVERGENT CODE AREA | |
DE102018126001A1 (en) | Synchronization in a multi-tile processing array | |
DE112006004005T5 (en) | Communication between multiple execution sequences in a processor | |
DE102016014152A1 (en) | Numerical control device | |
EP2852896B1 (en) | Arrangement having a microprocessor system | |
DE102013006396A1 (en) | A GRAPHIC PROCESSING UNIT USING A STANDARD PROCESSING UNIT AND A PROCESS FOR BUILDING A GRAPHIC PROCESSING UNIT | |
DE19524402C2 (en) | Program execution control device with addressability according to an M-row pseudo-random number sequence | |
DE112012004728T5 (en) | Method, program and system for simulation execution | |
DE69230626T2 (en) | Information processing system capable of operating multiple vector pipelines in two different modes | |
DE102018104188A1 (en) | Combined Rendering and Calculation Resource Allocation Management System | |
EP3417373B1 (en) | Method and device for operating a controller | |
DE102016215345A1 (en) | Method and device for redundant data processing | |
DE102012222821A1 (en) | Power distribution for microprocessor power gates | |
DE4430195B4 (en) | Procedure for evaluating Boolean expressions | |
DE102013020834A1 (en) | Apparatus and method for efficient vector roll operation | |
DE102016221526A1 (en) | Apparatus and method for processing a plurality of tasks | |
DE102013018376A1 (en) | System for executing sequential code by using single-instruction-multi-strand-processor, has pipeline-control unit formed to generate group of opponent-strands of sequential code, where one of opponent-strands is subordinate strand | |
DE102015112250A1 (en) | Separation of nuclei | |
DE3688973T2 (en) | Processing system in pipeline structure and microprocessor with such a system. | |
DE69503620T2 (en) | MICROCOMPUTER WITH DEVELOPMENT SUPPORT | |
EP3705993B1 (en) | System and method for locating and identifying computing nodes in a network | |
DE102014003665A1 (en) | INSTRUCTION FOR PERFORMING OVERLOAD TESTING | |
DE102013212266A1 (en) | Program development support apparatus e.g. personal computer (PC) for multi-core processor, has representation section that represents assigning result of each object, which is carried out by allocation section |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R082 | Change of representative |
Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE |
|
R016 | Response to examination communication |