WO2006058358A2 - Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung - Google Patents

Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung Download PDF

Info

Publication number
WO2006058358A2
WO2006058358A2 PCT/AT2005/000485 AT2005000485W WO2006058358A2 WO 2006058358 A2 WO2006058358 A2 WO 2006058358A2 AT 2005000485 W AT2005000485 W AT 2005000485W WO 2006058358 A2 WO2006058358 A2 WO 2006058358A2
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
instruction words
word
words
instruction word
Prior art date
Application number
PCT/AT2005/000485
Other languages
English (en)
French (fr)
Other versions
WO2006058358A3 (de
WO2006058358A8 (de
Inventor
Karl Heinz GRÄBNER
Andreas Bolzer
Original Assignee
On Demand Microelectronics Ag
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 On Demand Microelectronics Ag filed Critical On Demand Microelectronics Ag
Publication of WO2006058358A2 publication Critical patent/WO2006058358A2/de
Publication of WO2006058358A8 publication Critical patent/WO2006058358A8/de
Publication of WO2006058358A3 publication Critical patent/WO2006058358A3/de

Links

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3802Instruction prefetching
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Definitions

  • the invention relates to a method for controlling the cyclical feeding of instruction words to parallel-operating computing elements of a data processing device, wherein the instruction words are read from a program memory.
  • the invention relates to a data processing device having a plurality of parallel-operating computing elements, which cyclically receive instruction words supplied from a program memory under the control of a control unit.
  • the parallel computing elements execute different instructions in each working step, whereby the data to be processed can be different for each computing element, but in principle also the same.
  • This form of processing is commonly called MIMD processing (MIMD - Multiple Instruction, Multiple Data).
  • MIMD processing MIMD - Multiple Instruction, Multiple Data
  • mixed forms are also possible and frequently used.
  • digital signal processing parallel computer architectures are designed such that they both programming and processing modes as well as mixed forms _ O _ enable.
  • US 6 044 450 A also deals with the processing of long instruction words (VLIW), in which short instruction words contained therein the number of following NOP instructions (NOP) is recorded, which long command words are deleted.
  • VLIW long instruction words
  • NOP NOP instructions
  • a two-stage, special code compression is provided here, whereby summarized in a "time” compression NOPs and possibly identical in a “space” “compression command categories of instructions - but not all commands - for parallel processing units with a sustainedidenti- fikator
  • a computer architecture developed specifically for VLIW instructions is described in the article "A VLIW Architecture for a Trace Scheduling Compiler” by RP Colwell et al., October 1987, ACM 0-89791-238- 1/87 / 1000-0180; Proceedings of the Second Intern. Conference on Architectural Support for Programming Languages and Operating Systems, pp. 180-192.
  • the parallel operating computing elements are associated with command registers in which the individual instruction words for the parallel computing elements and the processing operations are stored in the computing elements.
  • the instruction memory sub-system or the program memory operates at the same clock rate as the individual computation elements or arithmetic units, the instruction memory subsystem must simultaneously provide as many instruction words in each processing step as there are parallel computation elements. If the number of parallel computing elements (slices) is denoted by n, and each slice instruction word has a width of k bits, then if only the slice instruction words are taken into account, the data word width for the instruction storage subsystem must be nxk, that is, nx the slice instruction word width.
  • the invention provides a method or a data processing device as specified in the independent claims.
  • Advantageous embodiments and further developments are defined in the dependent claims.
  • a kind of instruction compression is enabled, thereby improving the utilization efficiency by a factor of up to one (n + 1) / 2 times in the case of the SIMD processing mode depending on the processing mode.
  • a reduction of the instruction word accesses per unit time is achieved to the same extent, and this in turn means a reduced power consumption of the associated circuit parts.
  • This is contradicted by the fact that a separate control information or a distributor for the distribution of the instruction words is required, but the control information is actually practically irrelevant relative to the rest of the program data amount. If this control information, as is preferred, is provided in the global instruction word, it is only necessary to extend this global instruction word by a corresponding bit field, at least the length Iog2 (n) xn.
  • each of the n computation elements is assigned a fixed address-corresponding to the position of the associated field area in the instruction word distribution field-ie the position (or the index of the position) of the associated distribution field indicates the address of the respective computation element. This also enables the formation of a virtual pointer pointer ("slice pointer").
  • the respective global instruction word is followed by a single slice instruction word which is valid in one execution cycle for all the calculation elements and is to be supplied thereto.
  • all field regions in the instruction word distribution field of the control information contain only the one number of the one instruction word, for example the number "0 NN , where, for example, the numbering goes from 0 to 7 in the case of eight calculation elements.
  • ISS word ISS-instruction memory subsystem
  • the third instruction field in the ISS word may already again contain one global instruction word for the following execution cycle, with this global instruction word the instruction word or the different instruction words of the following execution cycle follow. It also follows that it is not necessary to use ISS Instead, this read cycle can be reduced according to a quotient equal to (n + 1) / 2 in the optimal case (if a SIMD processing mode is given), from the program memory at the rate of instruction execution. In a corresponding manner, the program counter associated with the program counter, which addresses the program words in the ISS, no longer needs to be incremented for each individual processing step, but only when an ISS word has been processed.
  • a so-called slot pointer is expediently also to be carried along in addition to the program counter; this is a pointer pointing to the respectively valid (current) global instruction word.
  • This slot pointer will increment by the number x (with l ⁇ x ⁇ n) of the following different slice instruction words after each processing step.
  • an ISS word has a width of n + 1 single instruction words (a global instruction word + n slice instruction words), it may happen that, whenever several or even all instruction words are identical for the computing elements, then as above executed per ISS word several units consisting of a global Instruktinswort and associated slice instruction words, can be accommodated in the n + 1 instruction fields, depending on the case constellation, a subsequent global instruction word is still present in an ISS word, the associated, following slice Instruction words (in extreme cases, as mentioned, only a single such slice instruction word) already come to lie (or come) in the next ISS word.
  • a switching field is provided to cause in the given case a jump to the next instruction word in the command register, to the next ISS word, when the next global instruction word at a new address stands.
  • the immediately following ISS word in which there are, for example, slice instruction words which belong to a global instruction word, that in the current ISS word is included) immediately available. It is therefore advantageous if two buffer command registers are provided, one of which is set up to store the respectively current instruction words and the other to store the respectively next valid instruction words.
  • the control unit responsible for transferring the ISS words from the program memory can then store the buffer that is currently not (any more) in the next one Fill the ISS word, which ensures a continuous program flow that is free from interruptions, because you can move on to the next ISS word without having to wait for a readout from the program memory.
  • the Pointer Pointer serves as an auxiliary variable during the decoding of the slice instruction words to address the slice instruction words relative to the global instruction word.
  • an instruction word distributor is interposed which, according to the content of the control information, in particular within the global instruction word loaded in the buffer instruction register, applies the respective slice instruction words to the computation elements distributed in the desired manner.
  • This instruction word distributor may also be considered as a multiplexor, and is preferably formed by a logic gate circuit, with corresponding control bits applied to the control inputs of the individual gates, depending on the current control information, around the instruction words to the individual computing elements to pass in a targeted manner or to block their passage to the computing elements.
  • Fig. 1 shows schematically a data processing device according to the invention, wherein only those parts are illustrated, which are for the Invention are of importance;
  • Fig. 2 is a diagram illustrating a data processing in a pure SIMD programming, in which therefore a single slice instruction word for all n computing elements is valid /
  • FIG. 3 is a diagram similar to FIG. 2, but in which there are two different slice instruction words to be alternately divided among the n computation elements;
  • FIG. 5 shows a state diagram for illustrating the operation of the control unit of the data processing device according to FIG. 1, insofar as this method of operation is of importance here.
  • FIG. 1 shows a diagram of a data processing device 1, for example a digital signal processor, illustrating only those components which are relevant to the present instruction compression, whereas other components, such as those for the supply of data to be processed and for the output of the calculated data, for the sake of clarity omitted. These components can be formed in a completely conventional manner, so that an explanation thereof may be unnecessary.
  • the data processing device 1 contains a program memory 2 which contains corresponding program instructions (also referred to as FIGS. 2 to 4) under associated addresses, the so-called ISS words (ISS instruction memory subsystem). Furthermore, a central control unit 3 is provided, which serves for reading out the instructions (in the so-called fetch cycles), and from which a program counter 4 is guided and incremented according to the fetch cycles in order to respond to the respective command line to be processed in the next step (FIG. Address). A possible state machine of this control unit 3 is shown in Fig. 5 to be explained in more detail below; these Central control unit 3 is also referred to as program sequencer.
  • program sequencer A possible state machine of this control unit 3 is shown in Fig. 5 to be explained in more detail below; these Central control unit 3 is also referred to as program sequencer.
  • each ISS word contains a global instruction word G and the different instruction words (slice instruction words) required for the respective processing step for the computation elements (slices), in the case of FIG. 1 two different instruction words SO, Sl.
  • n 8
  • parallel computing elements CS0 to CS7 CS - Computing Slice
  • SIF SIF - Slice Instruction Field
  • an instruction word distributor 6 which is here a logic gate circuit, with corresponding gate circuits, acts, and wherein as control signals control information is supplied to an input 6.1.
  • the respective control information is present in the example shown in the global instruction word G, as will be explained in more detail below with reference to FIGS. 2 to 4.
  • FIG. 1 the through-paths for the slice instruction words SO, Sl predetermined in the given example are shown, whereby it can be seen that the two instruction words SO, S1 are alternately fed to the successive computation elements CS0 to CS7 (via the instruction fields SIF). This type of processing is also illustrated schematically in FIG. 3 explained in more detail below.
  • n 8 parallel computing elements CS are thus provided, which is a frequently occurring number in practice.
  • SO instruction word
  • FIG. 3 the extreme case of the SIMD programming will first be described with reference to FIG. 2, in which a single slice instruction word S for all eight (FIG. generally all n) computing elements CS is valid. This results in the situation for Fig.
  • the buffer memory 5 (and also the parallel buffer memory 5 ') has a word width of nine instruction words, with the individual fields numbered 0 to 8 numbered.
  • the slice instruction words S are identical in each case for all computation elements CS, ie there is only one single instruction word S having the number "0" (as can be seen on the other hand from FIG two different slice instruction words S (or, more precisely SO, Sl) in each case the numbers "0" and ,, 1 ⁇ ).
  • the global instruction word G contains in a field Gl the usual global instruction information which is used in parallel computer architectures for controlling the program flow as well as for general-purpose management tasks.
  • an extension field G.2 is present, which is a bit field with the length Iog2 (n) x (n + 1) + 1.
  • this extension bit field G.2 contains an instruction word distribution field G.2.2, which has eight (generally n) field areas, one each in a fixed assignment to a calculation element CS.
  • This distribution field G.2.2 is preceded by a switching field G.2.1, which can contain either a "0 ⁇ bit or a" 1 "bit and which, if this" 1 "* is in this om switch field, jumps to the next one Command word in the program memory (command register) 2 triggers when the next global instruction G is at a new address.
  • the individual computing elements CS are directly associated in the immediate sequence, are the numbers or indices of the various cached in the buffer memory 5 S Instruction-words S.
  • Instruction-words S In the case of Fig. 2, there is only a single such instruction word S, which has the number "0", and accordingly in all - field areas of the distribution field G.2.2 - separated by dashed lines - enter the number "0".
  • Each field area has a bit length corresponding to the largest possible number or number that can occur, that is n, corresponding to the number of computing elements CS;
  • n 8
  • each field area has three bit locations, since three bits can be used to specify eight different numbers or numbers in binary (from 000 to 111).
  • a control field G.2.3 following the distribution field G.2.2, which likewise has a bit width Iog2 (n), in this case equal to three bits, the number of respectively different instruction words S is specified.
  • the number "1" is thus in the control bit field G.2.3 (in the case of Fig. 3, where two different instruction words S, with the numbers 0 and 1, the number "2" is in this control field, and in the example of FIG. 4, in which there are eight different slice instruction words SO to S7, the number "8" is in the control field.)
  • the central control unit 3 is responsible.
  • Another pointer is the computing element pointer or slice pointer 9, which serves as an auxiliary variable during the decoding of the slice instructions for addressing the slice instruction words S relative to the associated global instruction word G, and which de facto has the status of the distribution field G .2.2.
  • connection 10 from the buffer memory 5 or 5 'to the control unit 3 can be seen, via which the general global instruction information contained in the global instruction word G, from the region G.sub.1, is also supplied to the control unit 3.
  • the respective second, parallel buffer memory 5 has the advantage that the respective following ISS words can already be buffered while the instructions in the current buffer memory 5 are still being processed. This is of particular advantage especially if, as in FIG. 2, a global instruction word G still lies in the current buffer memory 5, whereas the associated slice instruction word S already lies in a following ISS word, although it is nonetheless parallel Buffer memory 5 'can be transmitted directly to the computing elements CS, so that the decoding of the instructions can be extremely efficient.
  • FIG. 3 corresponds to that in accordance with the diagram of FIG. 2, whereby, however, the processing mode or programming already indicated in FIG. 1 is based on two different slice instruction words SO, Sl.
  • two slice instruction words SO, Sl follow each global instruction word G, and the distribution of these instruction words SO, Sl to the eight calculation elements CS0 to CS7 takes place as indicated in the distribution field G.2.2 (see there the numbers "0" and "1"), so here in alternating succession.
  • the logic gate circuit is then driven in the distributor 6, a multiplexer or cross field distributor of a conventional type, in order to pass or block the instruction words in the predetermined manner.
  • the slot pointer 8 is set to the following global instruction word G, cf. also in Fig. 3 the drawn with dotted line slot pointer 8.
  • the central control unit 3 is responsible for the program flow in general as well as for the provision and distribution of the instructions.
  • the first program word which consists of a global instruction word G and one or more slice instruction word or words S, is fetched from the program memory 2 into the buffer memory 5 via the control unit 3.
  • the control unit 3 decides, among other things, the distribution, i. E., Based on the information supplied via the connection 10 given in the global instruction word G; in which sequence the slice instruction words S are forwarded to the computing elements CS. The distribution is then accomplished via the manifold 6 as described.
  • FIG. 4 illustrates the contrasting extreme processing mode in comparison to FIG. 2, in which there are different slice instruction words SO to S7 for each individual calculation element CS.
  • the individual field regions 7 of the distribution field G.2.2 contain the various numbers 0 to 7, ie those numbers which - in the corresponding order - which designate slice instruction words in the ISS word, and which also correspond to the order of the calculation elements CS0 to CS7.
  • the subsequent control field G.2.3 contains the number "8" as the number of different slice instruction words S following the global instruction word G in the buffer memory 5 or 5 '.
  • control unit 3 is illustrated as a finite state machine, wherein it can assume the following states during operation:
  • a (first or further) ISS word is fetched from the program memory 2 and stored in the associated buffer memory (buffer command register) 5, 5 '.
  • state 13 "Fetch-Decode ⁇ , the first instruction in the ISS word is decoded and distributed to the slice instruction fields SIF of the computing elements. At the same time, the next ISS word is fetched from the program memory 2 to fill the buffer memory 5 or 5 '.
  • state 14 "Fetch-Decode-Execute"
  • the second and all following instructions are decoded and executed by the computing elements CS
  • a refilling of the buffer memory 5, 5 ' has to be ensured in the program, as indicated at 15 in FIG. 5.
  • the program is executed in accordance with a loop 16, in order to be able to continue the program at a new address.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

Bei der zyklischen Zuführung von Instruktionswörtern (S) zu parallel arbeitenden Rechenelementen (CS) einer Datenverarbeitungseinrichtung (1), wobei die Instruktionswörter aus einem Programmspeicher (2) ausgelesen werden, werden bzw. wird jeweils nur voneinander verschiedene Instruktionswörter (S), bei Gleichheit aller Instruktionswörter jeweils nur das eine Instruktionswort, aus dem Programmspeicher (2) ausgelesen und einem Puffer-Befehlsregister (5, 5´) zugeführt, und weiters wird eine Steuerinformation (G.2) vorgesehen, gemäß welcher die voneinander verschiedenen Instruktionswörter oder das eine Instruktionswort in vergebener Weise auf die parallelen Rechenelemente (CS) verteilt werden bzw. wird.

Description

Verfahren zum Steuern der zyklischen Zuführung von Instruktionswörtern zu Rechenelementen und Datenverarbeitunqseinrichtunσ mit einer solchen Steuerung
Die Erfindung betrifft ein Verfahren zum Steuern der zyklischen Zuführung von Instruktionswörtern zu parallel arbeitenden Rechenelementen einer Datenverarbeitungseinrichtung, wobei die Instruktionswörter aus einem Programmspeicher ausgelesen werden.
Weiters bezieht sich die Erfindung auf eine Datenverarbeitungseinrichtung mit mehreren parallel arbeitenden Rechenelementen, die zyklisch Instruktionswörter aus einem Programmspeicher unter Steuerung durch eine Steuereinheit zugeführt erhalten.
Es ist bekannt, Datenverarbeitungseinrichtungen zur Steigerung der Recheneffizienz mit einer Anzahl von parallel arbeitenden Rechenelementen (auch Computing Slices genannt) auszubilden. Bei diesen auch Vektormaschinen genannten Datenverarbeitungseinrichtungen sind im Prinzip zwei verschiedene Arten der Programmierung und Datenverarbeitung möglich. Bei der einen Programmierungsart wird ein und das selbe Instruktionswort für alle parallel arbeitenden Rechenelemente verwendet, so dass diese Rechenelemente jeweils die selben Operationen ausführen. Den parallelen Rechenelementen werden dabei jeweils unterschiedliche Daten zur Verarbeitung zugeführt. Diese Verarbeitung wird auch Vektorverarbeitung genannt, und die allgemein übliche Benennung für diese Form der Abarbeitung von Daten wird SIMD- Verarbeitung genannt (SIMD - Single Instruction, Multiple Data) . Bei der anderen, sich grundsätzlich von der erstgenannten Verabeitungsart unterscheidenden Verarbeitungsart führen die parallelen Rechenelemente in jedem Arbeitsschritt jeweils unterschiedliche Instruktionen aus, wobei die zu verarbeitenden Daten für jedes Rechenelement verschieden, aber in Prinzip auch gleich sein können. Diese Verarbeitungsform wird allgemein MIMD-Ver- arbeitungsart genannt (MIMD - Multiple Instruction, Multiple Data) . Zwischen diesen beiden Extremfällen der SIMD- und MIMD- Verarbeitungsarten sind auch Mischformen möglich und häufig angewandt. Insbesondere in der digitalen Signalverarbeitung werden Parallelrechnerarchitekturen derart gestaltet, dass sie beide Programmierungs- bzw. Verarbeitungsarten sowie Mischformen _ O _ ermöglichen.
Für einen solchen Parallelrechner ist in der US 6 272 616 Bl bereits vorgeschlagen worden, im Fall des Umschaltens zwischen verschiedenen Betriebsarten, wie SIMD und MIMD, auch Hardwareteile der einzelnen parallelen Verarbeitungspfade, die gerade nicht benötigt werden, zu deaktivieren, um Strom zu sparen. Weiters ist es aus der US 5 212 777 A bekannt, zur flexiblen Spei- cher-Ausnützung einen Crossbar-Switch zwischen Prozessoren, die im SIMD- bzw. im MIMD-Modus betrieben werden, und einem Arbeitsspeicher anzuordnen. Dabei geht es um die dynamische Nutzung von Speicherbereichen durch parallele Recheneinheiten, wobei der Crossbar-Switch zur Adressenumleitung eingesetzt wird. Darüber hinaus kann auch der Zugriff der Prozessoren auf Datenspeicherbereiche durch den Crossbar-Switch verschoben werden. Die US 6 044 450 A befasst sich ferner mit der Verarbeitung von langen Instruktionswörtern (VLIW - Very long Instruction Words) , wobei in darin enthaltenen kurzen Befehlswörtern die Anzahl von folgenden NOP-Instruktionen (NOP - No Operation) aufgenommen wird, die von folgenden, langen Befehlswörtern gestrichen werden. Im Einzelnen ist hier eine zweistufige, spezielle Codekomprimierung vorgesehen, wobei in einer „Zeit"-Kompression NOPs zusammengefasst werden und in einer „Raum""-Kompression eventuell idente Befehlskategorien von Instruktionen - nicht jedoch ganze Befehle - für parallele Recheneinheiten mit einem Gruppenidenti- fikator zusammengefasst werden. Eine Rechnerarchitektur, die speziell für VLIW-Instruktionen entwickelt wurde, ist im Übrigen im Artikel „A VLIW Architecture for a Trace Scheduling Compiler" von R.P. Colwell et al., October 1987, ACM 0-89791-238- 1/87/1000-0180; Proceedings of the Second Intern. Conference on Architectual Support for Programming Languages and Operating Systems, S. 180-192, beschrieben.
Ganz allgemein gilt für Rechner-Architekturen wie vorstehend angeführt mit parallelen Rechenelementen Folgendes:
Den parallel arbeitenden Rechenelementen sind Befehlsregister zugeordnet, in denen die einzelnen Instruktionswörter für die Parallelrechenelemente sowie die Verarbeitungsvorgänge in den Rechenelementen gespeichert werden. Wenn nun angenommen wird, dass das Instruktionsspeicher-Subsysterα bzw. der Programmspei- cher mit derselben Taktrate arbeitet wie die einzelnen Rechenelemente oder Rechenwerke, muss das Instruktionsspeicher- Subsystem in jedem Verarbeitungsschritt soviele Instrukions- wörter gleichzeitig zur Verfügung stellen, wie parallel arbeitende Rechenelemente vorhanden sind. Wenn die Anzahl der parallel arbeitenden Rechenelemente (Slices) mit n bezeichnet wird, und jedes Slice-Instruktionswort eine Breite von k Bits hat, dann muss, wenn nur die Slice-Instruktionswörter berücksichtigt werden, die Datenwortbreite für das Instruktionsspeicher-Subsystem n x k, also n x die Slice-Instruktionswortbreite, betragen. Hinzu kommt noch die Datenwortbreite für das sog. globale Instruktionswort, das bei Parallelrechnerarchitekturen in üblicher Weise zur Kontrolle des Programmflusses und für allgemein gültige Verwaltungsaufgaben verwendet wird. Wenn nun weiter angenommen wird, dass dieses globale Instruktionswort die selbe Wortbreite wie jedes Slice-Instruktionswort hat, so ergibt sich eine Gesamtwortbreite des Instruktionsspeicher-Subsystems von (n+1) x k, mit k = Slice-Instruktionswortbreite. Wenngleich eine solche Form der InstruktionswortZuführung ersichtlich sowohl für die vorerwähnte MIMD-Verarbeitungsart als auch für die SIMD-Verarbeitungsart, sowie selbstverständlich auch für alle möglichen Mischformen hievon geeignet ist, so ist doch von großem Nachteil, dass dann, wenn nicht für alle parallel arbeitenden Rechenelemente eigene Instruktionswörter benötigt werden (was der MIMD-Verarbeitungsart entspricht), sondern zumindest teilweise die selben Instruktionswörter für einzelne der parallelen Rechenelemente verwendet werden, die Ausnützung der Speicherkapazität im Instruktionsspeicher-Subsystem schlecht ist, und diese schlechte Ausnützung ist besonders extrem im Fall der SIMD-Verarbeitungsart, in der für alle Rechenelercvente ein und das selbe Instruktionswort gültig ist, das aber für jedes der n Rechenelemente, also n-mal, gespeichert wird.
Es ist nun Aufgabe der Erfindung, hier Abhilfe zu schaffen und ein Verfahren bzw. eine Datenverarbeitungseinrichtung wie einleitend angegeben vorzusehen, wobei der Ausnutzungsgrad, die Effizienz, bei der Zuführung der Instruktionswörter zu den Parallelrechenelementen verbessert bzw. optimiert wird. In der Folge wird somit eine Reduktion der Instruktionswörterzugriffe pro Zeiteinheit und demzufolge wiederum eine Reduktion des Leistungsverbrauchs der beteiligten Schaltungskomponenten angestrebt.
Zur Lösung der gestellten Aufgabe sieht die Erfindung ein Verfahren bzw. eine Datenverarbeitungseinrichtung wie in den unabhängigen Ansprüchen angegeben vor. Vorteilhafte Ausführungsformen und Weiterbildungen sind in den abhängigen Ansprüchen definiert.
Mit der erfindungsgemäßen Technik wird eine Art Instruktionskomprimierung ermöglicht, wodurch der Ausnutzungsgrad um einen Faktor verbessert wird, der je nach Verarbeitungsart bis zu einem (n+1) /2-fachen im Fall der SIMD-Verarbeitungsart beträgt. Dabei wird im selben Ausmaß auch eine Reduktion der Instruktionswort- Zugriffe pro Zeiteinheit erzielt, und dies bedeutet wiederum einen reduzierten Leistungsverbrauch der zugehörigen Schaltungsteile. Dem steht entgegen, dass eine eigene Steuerinformation bzw. ein Verteiler für die Verteilung der Instruktionswörter erforderlich ist, wobei jedoch die Steuerinformation relativ zur übrigen Programmdatenmenge tatsächlich praktisch nicht ins Gewicht fällt. Wenn diese Steuerinformation, wie dies bevorzugt wird, im globalen Instruktionswort vorgesehen wird, ist es nur notwendig, dieses globale Instruktionswort um ein entsprechendes Bitfeld, zumindest der Länge Iog2 (n) x n, zu erweitern. Dies rührt daher, dass jedem der n Rechenelemente in einem Instruk- tiσnswörter-Verteilfeld der Steuerinformation ein eigener Feldbereich zugeordnet wird, wobei diese gesonderten Feldbereiche (insgesamt n, entsprechend der Anzahl n der Rechenelemente) jeweils Zuordnungsbits aufgenommen sind, die die jeweils zugehörigen, verschiedenen Instruktionswörter indexmäßig angeben, wobei die Reihung der Feldbereiche der Reihung der Rechenelemente entspricht, so dass durch die Zuordnungsbits in den Feldbereichen auch die Zuordnung der Instruktionswörter zu den Rechenelementen gegeben ist. Es genügt, als Zuordnungsbits einfach Nummern der Slice-Instruktionswörter anzugeben. Die maximale Zahl, die mit den Zuordnungsbits in digitaler Form anzugeben ist, ist die Zahl n, wobei im Fall von acht Rechenelementen (also n=8) in jedem Feldbereich daher drei Bits Platz haben müssen, da mit drei Bits acht Zahlen angebbar sind. Dementsprechend hat das Verteilfeld insgesamt eine Länge von 3 x 8 = 24 Bits. Dabei ist wie erwähnt jedem der n Rechenelemente, eine feste Adresse - entsprechend der Position des zugehörigen Feldbereichs im Instruktionswörter-Verteilfeld - zugeordnet, d.h. die Position (oder der Index der Position) des zugehörigen Verteilfeldes gibt die Adresse des jeweiligen Rechenelements an. Auf diese Weise wird auch die Bildung eines virtuellen Rechenelement-Zeigers („Slice-Pointer") ermöglicht.
In der Steuerinformation kann für Steuer- und Prüfzwecke ein weiterer Feldbereich vorgesehen werden, der keinem Rechenelement zugeordnet wird, sondern angibt, wie viele gültige, d.h. von einander verschiedene Instruktionswörter momentan vorliegen und dem zugehörigen globalen Instruktionswort folgen. Dieses Kontroll-Bitfeld muss demgemäß wiederum eine Bitbreite aufweisen, die ausreicht, um die Zahl n anzugeben, also ebenfalls eine Bitbreite von Iog2 (n) , im Fall von n=8 daher eine Breite von drei Bits.
Im Fall einer reinen SIMD-Programmierung folgt dem jeweiligen globalen Instruktionswort ein einziges Slice-Instruktionswort, das in einem Abarbeitungszyklus für alle Rechenelemente gültig und diesem zuzuführen ist. In diesem Fall enthalten alle Feldbereiche im Instruktionswörter-Verteilfeld der Steuerinformation nur die eine Nummer des einen Instruktionswortes, z.B. die Nummer „0NN, wobei beispielsweise im Fall von acht Rechenelementen die Nummerierung von 0 bis 7 geht. Im aus dem Programmspeicher ausgelesenen ISS-Wort (ISS - Instruktionsspeicher-Subsystem) werden für einen solchen Verarbeitungsschritt nur zwei Instruktionsfelder belegt, nämlich eines für das globale Instruktionswort und das andere für das eine, für alle acht (oder allgemein n) Rechenelemente in gleicher Weise gültige Instruktionswort. Wenn dann das ISS-Wort für insgesamt neun Instruktionsfelder ausgelegt ist (ein globales Instruktionswort und n = 8 Einzel- Instruktionswörter) , so kann das dritte Instruktionsfeld im ISS- Wort bereits wieder ein globales Instruktionswort für den folgenden Abarbeitungszyklus enthalten, wobei auf dieses globale Instruktionswort das Instruktionswort oder die unterschiedlichen Instruktionswörter des folgenden Abarbeitungszyklus folgen. Hieraus ergibt sich auch, dass es nicht erforderlich ist, ISS- Wörter aus dem Programmspeicher in der Rate der Befehlsabarbeitung auszulesen, vielmehr kann dieser Auslesezyklus entsprechend einem Quotienten gleich (n+l)/2 im optimalen Fall (wenn eine SIMD-Verarbeitungsart gegeben ist) reduziert werden. In entsprechender Weise ist auch der dem Programmspeicher zugeordnete Programmzähler, der die Programmwörter im ISS adressiert, nicht mehr für jeden einzelnen Verarbeitungsschritt zu inkrementieren, sondern erst dann, wenn ein ISS-Wort abgearbeitet ist. Für diese Arbeitsweise mit rationalisierter Auslesung von Instruktionswörtern aus dem Programmspeicher ist zweckmäßig auch in Ergänzung zum Programmzähler ein sog. Slot- Pointer mitzuführen, das ist ein Zeiger, der auf das jeweils gültige (aktuelle) globale Instruktionswort zeigt. Dieser Slot- Pointer wird nach jedem Verarbeitungsschritt um die Anzahl x (mit l≤x≤n) der folgenden verschiedenen Slice-Instruktionswörter zu inkrementieren.
Da ein ISS-Wort eine Breite von n+1 Einzel-Instruktionswörtern hat (ein globales Instruktionswort + n Slice-Instruktionswörter) , kann es vorkommen, dass dann, wenn immer mehrere oder sogar alle Instruktionswörter für die Rechenelemente ident sind, wobei dann wie vorstehend ausgeführt pro ISS-Wort mehrere Einheiten bestehend aus einem globalen Instruktinswort und zugehörigen Slice-Instruktionswörtern, in den n+1 Instruktionsfeldern untergebracht werden können, je nach Fallkonstellation ein folgendes globales Instruktionswort zwar noch in einem ISS- Wort vorliegt, die zugehörigen, folgenden Slice-Instruktionswörter (im Extremfall wie erwähnt auch nur ein einziges solches Slice-Instruktionswort) bereits im nächsten ISS-Wort zu liegen kommen (bzw. kommt) . Insbesondere für derartige Fälle ist es von Vorteil, wenn in der Steuerinformation ein Umschaltfeld vorgesehen wird, um im gegebenen Fall einen Sprung auf das nächste Instruktionswort im Befehlsregister, auf das nächste ISS-Wort, zu veranlassen, wenn das nächste globale Instruktionswort an einer neuen Adresse steht. Um in diesen Fällen die Decodierung der Instruktionen möglichst effizient zu gestalten, sollte nicht nur das jeweils aktuelle ISS-Wort, sondern auch bereits das unmittelbar darauf folgende ISS-Wort (in dem sich beispielsweise Slice-Instruktionswörter befinden, die zu einem globalen Instruktionswort gehören, das im gerade noch aktuellen ISS-Wort enthalten ist) sofort verfügbar sein. Es ist daher günstig, wenn zwei Puffer-Befehlsregister vorgesehen sind, von denen das eine zur Speicherung der jeweils aktuellen Instruktionswörter und das andere zur Speicherung der jeweils nächstgültigen Instruktionswörter eingerichtet ist. Im Fall von zwei solchen Puffer-Speichern oder Puffer-Befehlsregistern (sog. „Anead-Buffer") kann dann die für die Überführung der ISS-Wörter aus dem Programmspeicher verantwortliche Steuereinheit den jeweils gerade nicht (mehr) in Bearbeitung befindlichen Puffer mit dem nächsten ISS- Wort füllen; dadurch wird ein kontinuierlicher Programmfluss gewährleistet, der frei von Unterbrechungen ist, da sofort zum nächsten ISS-Wort übergegangen werden kann, ohne dass erst ein Auslesen aus dem Programmspeicher abgewartet werden muss. Der Rechenelemente-Zeiger (Slice-Pointer) dient während der Deco- dierung der Slice-Instruktionswörter als Hilfsvariable, um die Slice-Instruktionswörter relativ zum globalen Instruktionswort zu adressieren.
Für die Verteilung der einzelnen Slice-Instruktionswörter auf die entsprechenden Rechenelemente wird ein Instruktionswort-Ver- teiler zwischengeschaltet, der entsprechend dem Inhalt der Steuerinformation, insbesondere innerhalb des globalen Instruktionswortes, das im Puffer-Befehlsregister geladen ist, die jeweiligen Slice-Instruktionswörter auf die Rechenelemente in der gewünschten Weise verteilt. Dieser Instruktionswort-Verteiler kann auch als Multiplexer bzw. Kreuzfeldverteiler angesehen werden, und er wird bevorzugt durch eine logische Gatterschaltung gebildet, wobei entsprechende Steuerbits, je nach der aktuellen Steuerinformation, an den Steuereingängen der einzelnen Gatter angelegt werden, um die Instruktionswörter zu den einzelnen Rechenelementen in gezielter Weise durchzulassen bzw. ihren Durchgang zu den Rechenelementen zu sperren.
Die Erfindung wird nachfolgend anhand von bevorzugten Ausführungsbeispielen, auf die sie jedoch nicht beschränkt sein soll, und unter Bezugnahme auf die Zeichnung noch weiter erläutert. Es zeigen:
Fig. 1 schematisch eine erfindungsgemäße Datenverarbeitungseinrichtung, wobei nur jene Teile veranschaulicht sind, die für die Erfindung von Bedeutung sind;
Fig. 2 ein Schema zur Veranschaulichung einer Datenverarbeitung bei einer reinen SIMD-Programmierung, bei der also ein einziges Slice-Instruktionswort für alle n Rechenelemente gültig ist/
Fig. 3 ein der Fig. 2 ähnliches Schema, bei dem jedoch zwei verschiedene Slice-Instruktionswörter gegeben sind, die abwechselnd auf die n Rechenelemente aufzuteilen sind;
Fig. 4 den anderen Extremfall, nämlich jenen einer reinen MIMD- Prograiαmierung, bei der lauter verschiedene Slice-Instruktionswörter für die einzelnen Rechenelemente vorliegen; und
Fig. 5 ein Zustandsdiagramm zur Veranschaulichung der Arbeitsweise der Steuereinheit der Datenverarbeitungseinrichtung gemäß Fig. 1, soweit diese Arbeitsweise hier von Bedeutung ist.
In Fig. 1 ist ein Schema einer Datenverarbeitungseinrichtung 1, beispielsweise eines digitalen Signalprozessors, gezeigt, wobei nur jene Komponenten veranschaulicht sind, die für die vorliegende Instruktionskomprimierung von Bedeutung sind, wogegen andere Komponenten, wie etwa jene für die Zuführung von zu verarbeitenden Daten und für die Ausgabe der berechneten Daten, der besseren Übersichtlichkeit halber weggelassen wurden. Diese Komponenten können in völlig herkömmlicher Weise ausgebildet werden, so dass sich auch eine Erläuterung hiervon erübrigen kann.
Gemäß Fig. 1 enthält die Datenverarbeitungseinrichtung 1 einen Programmspeicher 2, der unter zugehörigen Adressen (vgl. auch Fig. 2 bis 4) entsprechende Programm-Instruktionen, die sog. ISS-Wörter (ISS-Instruktionsspeicher-Subsystem) , enthält. Weiters ist eine zentrale Steuereinheit 3 vorgesehen, die zum Auslesen der Instruktionen (in den sog. Fetch-Zyklen) dient, und von der ein Programmzähler 4 geführt und entsprechend den Fetch- Zyklen inkrementiert wird, um auf die jeweils im nächsten Schritt abzuarbeitende Befehlszeile (Adresse) zu zeigen. Eine mögliche Zustandsmaschine dieser Steuereinheit 3 ist in der nachfolgend noch näher zu erläuternden Fig. 5 gezeigt; diese zentrale Steuereinheit 3 wird auch als Programm-Sequenzer bezeichnet.
Gemäß Fig. 1 werden die in den Fetch-Zyklen ausgelesenen ISS- Wörter einem von zwei parallelen Puffer-Befehlsregistern oder Pufferspeichern 5 bzw. 51 (vgl. außer Fig. 1 auch die Fig. 2 bis 4) zugeführt. Jedes ISS-Wort enthält ein globales Instruktionswort G sowie die für den jeweiligen Abarbeitungsschritt erforderlichen, voneinander verschiedenen Instruktionswörter (Slice-Instruktionswörter) für die Rechenelemente (Slices) , im Fall von Fig. 1 zwei voneinander verschiedene Instruktionswörter SO, Sl. Im vorliegenden Beispiel sind weiters acht (n=8) parallel arbeitende Rechenelemente CSO bis CS7 vorhanden (CS - Computing Slice) , denen jeweils ein Rechenelement-Instruktions- feld SIF (SIF - Slice Instruction Field) zugeordnet ist. Um die ausgelesenen, pro ISS-Wort vorhandenen, voneinander verschiedenen Instruktionswörter SO, Sl in der gewünschten, durch Programmierung vorgegebenen Weise auf die Rechenelemente CSO bis CS7 zu verteilen, ist ein Instruktionswort-Verteiler 6 vorgesehen, wobei es sich hier um eine logische Gatterschaltung, mit entsprechenden Gatterkreisen, handelt, und wobei als Steuersignale Steuerinformationen an einem Eingang 6.1 zugeführt werden. Die jeweilige Steuerinformation ist im gezeigten Beispiel im globalen Instruktionswort G vorhanden, wie dies nachstehend anhand der Fig. 2 bis 4 noch näher erläutert werden wird. In Fig. 1 sind demgemäß die im gegebenen Beispiel vorgegebenen Durchschaltwege für die Slice-Instruktionswörter SO, Sl eingezeichnet, wobei ersichtlich ist, dass die beiden Instruktionswörter SO, Sl abwechselnd den aufeinander folgenden Rechenelementen CSO bis CS7 (über die Instruktionsfelder SIF) zugeführt werden. Diese Verarbeitungsart ist auch schematisch in der nachfolgend noch näher erläuterten Fig. 3 veranschaulicht.
Im gezeigten Ausführungsbeispiel sind somit n = 8 parallele Rechenelemente CS vorgesehen, was eine in der Praxis häufig vorkommende Anzahl ist. Es können aber selbstverständlich abweichend davon auch mehr oder weniger Rechenelemente CS vorhanden sein, wie etwa bloß zwei oder vier oder aber 32 Rechenelemente, je nach Zielvorstellungen. Bevor nun die Verarbeitungsart bei zwei voneinander verschiedenen Instruktionswörtern SO, Sl anhand der Fig. 3 näher erläutert wird, soll noch anhand der Fig. 2 zuvor der Extremfall der SIMD-Programmierung beschrieben werden, bei der ein einziges Slice-Instruktionswort S für alle acht (allgemein alle n) Rechenelemente CS gültig ist. Damit ergibt sich für Fig. 2 die Situation, dass im gerade aktuellen Puffer-Befehlsregister oder Puffer-Speicher 5 bzw. 5', abwechselnd ein globales Instruktionswort G und ein zugehöriges, dem globalen Instruktionswort G folgendes Slice-Instruktionswort S vorliegen; wie ersichtlich hat der Pufferspeicher 5 (und ebenso der parallele Pufferspeicher 5') eine Wortbreite von neun Instruktionswörtern, wobei die einzelnen Felder mit den Nummern 0 bis 8 nummeriert sind. Die Slice-Instruktionswörter S sind gemäß Fig. 2 jeweils für alle Rechenelemente CS ident, d.h. es ist jeweils nur ein einziges Instruktionswort S vorhanden, das die Nummer „0" aufweist. (Wie andererseits aus Fig. 3 zu ersehen ist, haben dort die beiden verschiedenen Slice-Instruktionswörter S (bzw. genauer SO, Sl) jeweils die Nummern „0" bzw. ,,1ΛΛ) .
Aus Fig. 2 ist weiters im unteren Bereich die Struktur eines globalen Instruktionswortes ersichtlich. Das globale Instruktionswort G enthält in einem Feld G.l die übliche globale Instruktions-Information, die bei Parallelrechnerarchitekturen zur Kontrolle des Programmflusses ebenso wie für allgemein gültige Verwaltungsaufgaben verwendet wird. Zusätzlich ist ein Erweiterungsfeld G.2 vorhanden, bei dem es sich um ein Bitfeld mit der Länge Iog2 (n) x (n+1) + 1 handelt. Als wesentlichen Teil enthält dieses Erweiterungsbitfeld G.2 ein Instruktionswörter-Verteilfeld G.2.2, welches acht (allgemein n) Feldbereiche, je einen in fixer Zuordnung zu einem Rechenelement CS, aufweist. Diesem Verteilfeld G.2.2 geht ein Umschaltfeld G.2.1 voraus, das entweder ein „0λλ-Bit oder ein „1"-Bit enthalten kann und das dann, wenn in diesem Omschaltfeld eine „1"* steht, einen Sprung auf das nächste Befehlswort im Programmspeicher (Befehlsregister) 2 auslöst, wenn die nächste globale Instruktion G an einer neuen Adresse steht.
In den einzelnen Feldbereichen des Erweiterungsbitfeldes G.2, die wie erwähnt den einzelnen Rechenelementen CS beispielsweise in der unmittelbaren Aufeinanderfolge direkt zugeordnet sind, stehen die Nummern oder Indexe der verschiedenen im Pufferspeicher 5 zwischengespeicherten Slice-Instruktionswörter S. Im Fall der Fig. 2 liegt nur ein einziges solches Instruktionswort S vor, das die Nummer „0" hat, und demgemäß ist in allen - durch strichlierte Linien voneinander getrennten - Feldbereichen des Verteilfeldes G.2.2 die Nummer „0" eingetragen. Jeder Feldbereich hat eine Bitlänge entsprechend der größtmöglichen Zahl oder Nummer, die vorkommen kann, also gleich n, entsprechend der Anzahl der Rechenelemente CS; im vorliegenden Beispiel gilt n = 8, wobei sich für n = 8 ergibt, dass jeder Feldbereich drei Bitstellen aufweist, da mit drei Bits acht verschiedene Zahlen oder Nummern binär (von 000 bis 111) angegeben werden können.
In einem dem Verteilfeld G.2.2 folgenden Kontrollfeld G.2.3, das ebenfalls eine Bitbreite Iog2 (n) , also hier gleich drei Bits, aufweist, wird die Zahl der jeweils verschiedenen Instruktionswörter S angegeben. Im Fall der Fig. 2, wo jeweils nur ein einziges Instruktionswort S gegeben ist, steht somit im Kontroll-Bitfeld G.2.3 die Zahl „1". (Im Fall der Fig. 3, wo zwei verschiedene Instruktinswörter S, mit den Nummern 0 und 1, vorliegen, steht in diesem Kontrollfeld die Zahl „2", und im Beispiel der Fig. 4, in dem acht verschiedene Slice- Instruktionswörter SO bis S7 vorliegen, steht im Kontrollfeld die Zahl „8".)
Wie aus Fig. 2 im Bereich des Pufferspeichers 5 bzw. 5' ersichtlich ist, sind für jeden Verarbeitungsschritt im ISS-Wort nur zwei Instruktionsfelder zu belegen, nämlich eines für das globale Instruktionswort G und das zweite für das Slice-Instruktions- wort S. Das dritte Instruktionsfeld kann bereits für das globale Instruktionswort G des folgenden Verarbeitungszyklus verwendet werden usw. Es ist daher auch nicht erforderlich, die ISS-Wörter im Takt der Befehlsabarbeitung aus dem Programmspeicher 2 zu holen, und auch der Programmzähler 4, der die Programmwörter im Programmspeicher 2 adressiert, ist nicht mehr für jeden Ver- afbeitungsschritt zu inkrementieren.
In Ergänzung zum Programmzähler 4 wird jedoch ein auf das jeweils gültige globale Instruktionswort G zeigender Zeiger, der Slot-Pointer 8, mitgeführt, wobei hierfür wie aus Fig. 1 ersichtlich, die zentrale Steuereinheit 3 verantwortlich ist. Ein weiterer Zeiger ist der Rechenelement-Zeiger oder Slice-Pointer 9, der als Hilfsvariable während der Decodierung der Slice-In- struktionen zur Adressierung der Slice-Instruktionswörter S relativ zum zugehörigen globalen Instruktionswort G dient, und der de facto den Status des Verteilfeldes G.2.2 widerspiegelt.
Aus Fig. 1 ist im Übrigen noch eine Verbindung 10 vom Pufferspeicher 5 bzw. 5' zur Steuereinheit 3 ersichtlich, über die auch die im globalen Instruktionswort G enthaltenen allgemeinen globalen Instruktionsinforraationen, aus dem Bereich G.l, der Steuereinheit 3 zugeführt werden.
Wie aus Fig. 2 ferner ersichtlich ist, erbringt der jeweils zweite, parallele Pufferspeicher 5' den Vorteil, dass bereits die jeweils folgenden ISS-Wörter zwischengespeichert werden können, während noch die Instruktionen im aktuellen Pufferspeicher 5 abgearbeitet werden. Dies ist vor allem dann von besonderem Vorteil, wenn wie in Fig. 2 ein globales Instruktionswort G noch im aktuellen Pufferspeicher 5 zu liegen kommt, wogegen das zugehörige Slice-Instruktionswort S bereits in einem folgenden ISS-Wort liegt, wobei es nichtsdestoweniger zufolge des parallelen Pufferspeichers 5' unmittelbar zu den Rechenelementen CS übertragen werden kann, so dass die Decodierung der Instruktionen außerordentlich effizient erfolgen kann.
Die Darstellung in Fig. 3 entspricht jener gemäß dem Schema von Fig. 2, wobei nun jedoch die bereits in Fig. 1 angedeutete Verarbeitungsart oder Programmierung mit jeweils zwei verschiedenen Slice-Instruktionswörtern SO, Sl zugrunde gelegt ist. Auf jedes globale Instruktionswort G folgen somit zwei Slice-Instruktions- wörter SO, Sl, und die Verteilung dieser Instruktionswörter SO, Sl auf die acht Rechenelemente CSO bis CS7 erfolgt wie im Verteilfeld G.2.2 angegeben (s. dort die Nummern „0" und „1"), also hier in abwechselnder Aufeinanderfolge. Es wäre aber beispielsweise auch eine Verteilung denkbar, gemäß welcher die ersten vier Rechenelemente CSO bis CS3 das erste Instruktionswort SO (Nummer „0" in G.2.2) und die nächsten vier Rechenelemente CS4 bis CS7 das zweite Instruktionswort Sl (Nummer „1" in G.2.2) zugeführt erhalten sollen; in diesem Fall würden die Zahlen (Nummern) im Verteilfeld G.2.2 daher wie folgt sein (nicht dargestellt) : 00001111. Selbstverständlich sind auch noch andere, beliebige Formen der Verteilung möglich und durch die Zahlen bzw. deren Position im Verteilfeld G.2.2 eindeutig gegeben. Entsprechend diesen Zahlen, somit entsprechend diesen Steuerinformationen, wird dann im Verteiler 6, einem Multiplexer oder Kreuzfeldverteiler von an sich bekannter Art, die logische Gatterschaltung angesteuert, um die Instruktionswörter in der vorgegebenen Weise durchzulassen bzw. zu sperren. Nach jeder De- codierphase wird der Slot-Pointer 8 auf das folgende globale Instruktionswort G gesetzt, vgl. auch in Fig. 3 den mit strichpunktierter Linie eingezeichneten Slot-Pointer 8. Damit kann dann die Verteilung der Slice-Instruktionswörter S für den nächsten Rechenzyklus von Neuem beginnen.
Wie ersichtlich, ist die zentrale Steuereinheit 3 für den Pro- grammfluss allgemein wie auch für die Bereitstellung und Verteilung der Instruktionen verantwortlich. Bei einem Programmstart wird über die Steuereinheit 3 das erste Programmwort, das aus einem globalen Instruktionswort G und einem oder mehreren Slice- Instruktionswort bzw. -Wörtern S besteht, aus dem Programmspeicher 2 in den Pufferspeicher 5 geholt. Während der Decodierphase entscheidet die Steuereinheit 3 anhand der über die Verbindung 10 zugeleiteten Information, die im globalen Instruktionswort G gegeben ist, unter anderem auch die Verteilung, d.h. in welcher Folge die Slice-Instruktionswörter S an die Rechenelemente CS weitergeleitet werden. Die Verteilung wird dann über den Verteiler 6 wie beschrieben bewerkstelligt.
In Fig. 4 ist der im Vergleich zu Fig. 2 konträre extreme Verarbeitungsmodus veranschaulicht, in dem für die einzelnen Rechenelemente CS jeweils voneinander verschiedene Slice- Instruktionswörter SO bis S7 vorliegen. Dies entspricht der vorerwähnten reinen MIMD-Programmierung, und die Aufteilung der Slice-Instruktionswörter S ist ident mit jener Aufteilung, die sich ohne die vorliegende Instruktionskomprimierung ergibt. Im Erweiterungsfeld G2 des globalen Instruktionswortes G enthalten die einzelnen Feldbereiche 7 des Verteilfeldes G.2.2 die verschiedenen Zahlen 0 bis 7, d.h. jene Zahlen, die - in der gege- benen Reihenfolge - die Slice-Instruktionswörter im ISS-Wort bezeichnen, und die auch der Reihenfolge der Rechenelemente CSO bis CS7 entsprechen. Das darauf folgende Kontrollfeld G.2.3 enthält die Zahl „8" als die Anzahl der dem globalen Instruktionswort G im Pufferspeicher 5 bzw. 5' folgenden verschiedenen Slice-Instruktionswörter S. Dieser Fall der reinen MIMD-Program- mierung führt somit zu einer völlig herkömmlichen Arbeitsweise der Datenverarbeitungseinrichtung 1, wobei sich die beschriebenen erfindungsgemäßen Maßnahmen zur Instruktionskom- primierung hier nicht auswirken können. Es kommt jedoch dann zu einer Verbesserung des Ausnutzungsgrades, wenn pro ISS-Wort zumindest zwei Slice-Instruktionswörter gleich sind, bis zu einer Verbesserung um einen Faktor (n+l)/2, nämlich im Fall der reinen SIMD-Programmierung (siehe Fig. 2) . In diesem Fall wird der Programmablauf besonders kompakt, und es werden pro Fetch-Zyklus somit 4,5 Befehlszyklen erreicht, wenn acht Rechenelemente CS angenommen werden.
In Fig. 5 ist die Steuereinheit 3 als finite Zustandsmaschine veranschaulicht, wobei sie während des Betriebs folgende Zustände einnehmen kann:
In einem Zustand 11 „Reset" werden alle Systemvariablen auf ihre Default-Werte zurückgesetzt.
In einem Zustand 12 „Feten1" wird ein (erstes bzw. weiteres) ISS- Wort aus dem Programmspeicher 2 geholt und im zugehörigen Pufferspeicher (Puffer-Befehlsregister) 5, 5' abgelegt.
Im Zustand 13 „Fetch-DecodeΛΛ wird der erste Befehl im ISS-Wort decodiert und auf die Slice-Instruktionsfelder SIF der Rechenelemente verteilt. Zugleich wird das nächste ISS-Wort aus dem Programmspeicher 2 geholt, um den Pufferspeicher 5 bzw. 5' zu füllen.
Im Zustand 14 „Fetch-Decode-Execute" werden der zweite und alle folgenden Befehle decodiert und von den Rechenelementen CS ausgeführt. Weiters muss je nach Länge der Befehle für eine Wieder- befüllung des Pufferspeichers 5, 5' gesorgt werden. Im Fall eines Sprungbefehls im Programm, wie bei 15 in Fig. 5 angedeu- tet, wird in den Zustand 12 „Fetch" gewechselt, um das Programm an einer neuen Adresse fortführen zu können. Solange kein Sprungbefehl vorliegt, wird hingegen das Programm gemäß einer Schleife 16 abgearbeitet.

Claims

Patentansprüche
1. Verfahren zum Steuern der zyklischen Zuführung von Instruktionswörtern (S) zu parallel arbeitenden Rechenelementen (CSO- CS7) einer Datenverarbeitungseinrichtung (1), wobei die Instruktionswörter aus einem Programmspeicher (2) ausgelesen werden, dadurch gekennzeichnet, dass jeweils nur voneinander verschiedene Instruktionswörter (SO, Sl,...), bei Gleichheit aller Instruktionswörter jeweils nur das eine Instruktionswort (S), aus dem Programmspeicher (2) ausgelesen und einem Puffer-Befehlsregister (5, 5') zugeführt werden bzw. wird und weiters eine Steuerinformation (G.2) vorgesehen wird, gemäß welcher die voneinander verschiedenen Instruktionswörter oder das eine Instruktionswort in vorgebener Weise auf die parallelen Rechenelemente verteilt werden bzw. wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Steuerinformation (G.2) jeweils als Teil eines globalen Instruktionsworts (G) zusammen mit den Instruktionswörtern (S) aus dem Programmspeicher (2) ausgelesen und dem Puffer-Befehlsregister (5, 5') zugeführt wird.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Steuerinformation (G.2) ein Instruktionswörter-Verteilfeld (G.2.2) mit, den einzelnen parallelen Rechenelementen zugeteilten Feldbereichen enthält, in denen für die einzelnen Rechenelemente Zuordnungsbits enthalten sind, die die jeweils vorliegenden, verschiedenen Instruktionswörter angeben.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass die Zuordnungsbits im Verteilfeld (G.2.2) einen virtuellen Rechenelement-Zeiger bilden.
5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass in der jeweiligen Steuerinformation (G.2) ein Kontrollfeld (G.2.3) vorgesehen wird, das die jeweilige Anzahl der verschiedenen Instruktionswσrter angibt.
6. Verfahren nach einem der Ansprüche 2 bis 5, dadurch gekennzeichnet, dass von einer zentralen Steuereinheit (3) ein Zeiger (8), der auf das jeweils gültige globale Instruktionswort (G) im Befehlsregister (5, 5') zeigt, mitgeführt wird.
7. Verfahren nach einem der Ansprüche 2 bis 6, dadurch gekennzeichnet, dass in der Steuerinformation (G.2) ein Umschaltfeld (G.2.1) vorgesehen wird, um einen Sprung auf das nächste Instruktionswort im Programmspeicher (2) zu veranlassen, wenn das nächste globale Instruktionswort an einer neuen Adresse steht.
8. Datenverarbeitungseinrichtung (1) mit mehreren parallel arbeitenden Rechenelementen (CS0-CS7), die zyklisch Instruktionswörter (S) aus einem Programmspeicher (2) unter Steuerung durch eine Steuereinheit (3) zugeführt erhalten, dadurch gekennzeichnet, dass zwischen dem Programmspeicher (2) und den Rechenelementen (CS0-CS7) zumindest ein Puffer-Befehlsregister (5, 5')/ in dem jeweils nur Instruktionswörter (S), so weit sie voneinander verschieden sind, gespeichert werden, und ein Instruktionswort-Verteiler (6) angeordnet sind, der die im Puffer- Befehlsregister (5, 5') zwischengespeicherten, voneinander verschiedenen Instruktionswörter (S) mit einer durch Steuerinformation (G.2) vorgegebenen Verteilung den Rechenelementen (CS0-CS7) zuführt.
9. Datenverarbeitungseinrichtung nach Anspruch 8, dadurch gekennzeichnet, dass das Puffer-Befehlsregister (5, 5') einen Speicherbereich für die jeweilige Steuerinformation enthält, die jeweils zusammen mit den Instruktionswörtern aus dem Programmspeicher ausgelesen wird.
10. Datenverarbeitungseinrichtung nach Anspruch 8 oder 9, dadurch gekennzeichnet, dass die Steuerinformation als Teil eines globalen Instruktionsworts (G) aus dem Programmspeicher (2) ausgelesen und in das Puffer-Befehlsregister (5, 5') überführt wird.
11. Datenverarbeitungseinrichtϊxαg nach einem der Ansprüche 8 bis 10, dadurch gekennzeichnet, dass zwei Puffer-Befehlsregister (5, 51) vorgesehen sind, von denen das eine zur Speicherung der jeweils aktuellen Instruktionswörter (S) und das andere zur Speicherung der jeweils nächstgültigen Instruktionswörter (S) eingerichtet ist.
PCT/AT2005/000485 2004-12-03 2005-12-02 Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung WO2006058358A2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
ATA2039/2004 2004-12-03
AT0203904A AT501213B1 (de) 2004-12-03 2004-12-03 Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung

Publications (3)

Publication Number Publication Date
WO2006058358A2 true WO2006058358A2 (de) 2006-06-08
WO2006058358A8 WO2006058358A8 (de) 2006-08-10
WO2006058358A3 WO2006058358A3 (de) 2007-04-12

Family

ID=35755885

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/AT2005/000485 WO2006058358A2 (de) 2004-12-03 2005-12-02 Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung

Country Status (3)

Country Link
US (1) US20070226468A1 (de)
AT (1) AT501213B1 (de)
WO (1) WO2006058358A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1942410A3 (de) * 2006-11-15 2008-09-24 STMicroelectronics, Inc Die Vektormodusausführung unterstützender Prozessor

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100960148B1 (ko) 2008-05-07 2010-05-27 한국전자통신연구원 데이터 프로세싱 회로
JP5831316B2 (ja) * 2012-03-19 2015-12-09 富士通株式会社 並列処理装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0652509A1 (de) * 1993-11-05 1995-05-10 Intergraph Corporation Befehlscachespeicher mit Kreuzschienenschalter
US6401190B1 (en) * 1995-03-17 2002-06-04 Hitachi, Ltd. Parallel computing units having special registers storing large bit widths
WO2002061574A1 (en) * 2001-01-30 2002-08-08 Koninklijke Philips Electronics N.V. Computer instruction with instruction fetch control bits

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
US5175862A (en) * 1989-12-29 1992-12-29 Supercomputer Systems Limited Partnership Method and apparatus for a special purpose arithmetic boolean unit
US5822606A (en) * 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
JPH09265397A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
JP3395727B2 (ja) * 1999-09-02 2003-04-14 日本電気株式会社 演算装置および方法
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US7831802B2 (en) * 2007-07-19 2010-11-09 International Business Machines Corporation Executing Multiple Instructions Multiple Data (‘MIMD’) programs on a Single Instruction Multiple Data (‘SIMD’) machine

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0652509A1 (de) * 1993-11-05 1995-05-10 Intergraph Corporation Befehlscachespeicher mit Kreuzschienenschalter
EP1369775A1 (de) * 1993-11-05 2003-12-10 Intergraph Hardware Technologies Company Befehlscachespeicher mit assoziativem Kreuzschienenschalter
US6401190B1 (en) * 1995-03-17 2002-06-04 Hitachi, Ltd. Parallel computing units having special registers storing large bit widths
WO2002061574A1 (en) * 2001-01-30 2002-08-08 Koninklijke Philips Electronics N.V. Computer instruction with instruction fetch control bits

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1942410A3 (de) * 2006-11-15 2008-09-24 STMicroelectronics, Inc Die Vektormodusausführung unterstützender Prozessor
US7493475B2 (en) 2006-11-15 2009-02-17 Stmicroelectronics, Inc. Instruction vector-mode processing in multi-lane processor by multiplex switch replicating instruction in one lane to select others along with updated operand address
US8161266B2 (en) 2006-11-15 2012-04-17 Stmicroelectronics Inc. Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation

Also Published As

Publication number Publication date
US20070226468A1 (en) 2007-09-27
WO2006058358A3 (de) 2007-04-12
WO2006058358A8 (de) 2006-08-10
AT501213B1 (de) 2006-10-15
AT501213A2 (de) 2006-07-15

Similar Documents

Publication Publication Date Title
DE68914172T2 (de) Datenverarbeitungssystem und Videoverarbeitungssystem mit einem derartigen Datenverarbeitungssystem.
DE60132585T2 (de) Vorrichtung und verfahren zum ausgeben der gruppierung von befehlen in einem vliw-prozessor
DE1774296B2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE2154106A1 (de) Arbeitsspeicherwerk
CH620779A5 (de)
DE2318069A1 (de) Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE10116639B4 (de) Schreib/Lese-Abgleichschema zur Portverringerung in Mehrfachport-SRAM-Zellen
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE2164793A1 (de) Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE69027919T2 (de) Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher
DE69532152T2 (de) System zur parallelen Datenverarbeitung für digitale Tongeräte
DE2548720A1 (de) Mikroprogramm-steuerwerk
DE3343348A1 (de) Anordnung zur datenuebertragung zwischen mehreren prozessoren und einem speicher
WO2006058358A2 (de) Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung
DE4222275C2 (de) Parallelprozessor und Betriebsverfahren für diesen
DE60221515T2 (de) Speichersystem für schleifenbeschleunigung nach wunsch
DE2245284A1 (de) Datenverarbeitungsanlage
EP0134822B1 (de) Digitalspeicher
CH495584A (de) Datenverarbeitungsanlage
DE2440390A1 (de) Elektronischer rechner
DE10026017B4 (de) Vorabruf-Puffer mit Gültigkeitswerten zur Bereitstellung von abgeglichenen Befehlen
DE10025952B4 (de) Datenverarbeitungseinheit mit einer Superscaler-Struktur sowie Verfahren zum Zuführen einer Mehrzahl von Befehlen

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KN KP KR KZ LC LK LR LS LT LU LV LY MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 05814937

Country of ref document: EP

Kind code of ref document: A2

WWW Wipo information: withdrawn in national office

Ref document number: 5814937

Country of ref document: EP