GR20170200089U - Multiply-accumulation in a data processing apparatus - Google Patents

Multiply-accumulation in a data processing apparatus Download PDF

Info

Publication number
GR20170200089U
GR20170200089U GR20170200089U GR20170200089U GR20170200089U GR 20170200089 U GR20170200089 U GR 20170200089U GR 20170200089 U GR20170200089 U GR 20170200089U GR 20170200089 U GR20170200089 U GR 20170200089U GR 20170200089 U GR20170200089 U GR 20170200089U
Authority
GR
Greece
Prior art keywords
data processing
register
data
registers
contents
Prior art date
Application number
GR20170200089U
Other languages
Greek (el)
Inventor
David Hennah Mansell
Grigorios Magklis
Original Assignee
Arm Limited
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 Arm Limited filed Critical Arm Limited
Priority to GR20170200089U priority Critical patent/GR20170200089U/en
Publication of GR20170200089U publication Critical patent/GR20170200089U/en

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/30003Arrangements for executing specific machine 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/30098Register arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

A data processing apparatus, a method of operating a data processing apparatus, a non-transitory computer readable storage medium, and an instruction are provided. The instruction specifies a first source register, a second source register, and a set of Ν accumulation registers. In response to the instruction control signals are generated, causing processing circuitry to extract Ν data elements from content of the first source register, perform a multiplication of each of the Ν data elements by content of the second source register, and apply a result of each multiplication to content of a respective target register of the set of Ν accumulation registers. As a result plural (N) multiplications are performed in a manner that effectively provides a multiplier Ν times the register width, but without requiring the register file to be made Ν times larger.

Description

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ-ΣΥΣΣΩΡΕΥΣΗ ΣΕ ΜΙΑ ΔΙΑΤΑΞΗ ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ MULTIPLICATION-ACCUMULATION IN A DATA PROCESSING ARRANGEMENT

Η παρούσα δημοσιοποίηση αφορά στην επεξεργασία δεδομένων. Συγκεκριμένα αφορά σε μια διάταξη επεξεργασίας δεδομένων η οποία πραγματοποιεί αριθμητικές πράξεις. This disclosure concerns data processing. Specifically, it concerns a data processing device that performs arithmetic operations.

Μια διάταξη επεξεργασίας δεδομένων μπορεί να απαιτείται για την πραγματοποίηση αριθμητικών πράξεων. Αυτές οι αριθμητικές πράξεις μπορούν για παράδειγμα να περιλαμβάνουν πράξεις πολλαπλασιασμού πινάκων οι οποίες μπορούν να βρουν εφαρμογή σε ένα πλήθος αντικειμένων. Ένα χαρακτηριστικό της υλοποίησης τέτοιων πολλαπλασιασμών πινάκων είναι ότι η διεκπεραιωτική ικανότητα είναι σε πολύ μεγάλο βαθμό εξαρτώμενη από υπολογισμούς (παρά εξαρτώμενη από φορτώσεις/αποθηκεύσεις). Το γεγονός αυτό ισχύει όλο και περισσότερο όσο αυξάνεται το μήκος των διανυσμάτων και ο όγκος των δεδομένων εργασίας που μπορούν να αποθηκεύονται στο αρχείο καταχωρητών. Για παράδειγμα, σε διανύσματα 256 bit που περιλαμβάνουν τιμές κινητής υποδιαστολής 32 bit, μπορούν να εκτελούνται 6 πολλαπλασιασμοί διανυσμάτων (οι οποίοι απαιτούν τουλάχιστον 32 καταχωρητές) ανά φόρτωση διανύσματος. Για την αύξηση της απόδοσης πολλαπλασιασμού πινάκων, θα μπορούσε να αυξηθεί το μήκος διανύσματος, ώστε να προσδίδει μια αντίστοιχη βελτίωση στην απόδοση, όμως τα μεγαλύτερα διανύσματα απαιτούν μεγαλύτερο αρχείο καταχωρητών, και μπορεί να απαιτούν μια πιο σύνθετη μονάδα φόρτωσης/αποθήκευσης, εάν απαιτείται η φόρτωση μεγαλύτερων διανυσμάτων. Η προσθήκη περισσότερων λειτουργικών μονάδων πολλαπλασιασμού διανυσμάτων θα μπορούσε επίσης να αυξάνει την απόδοση πολλαπλασιασμού πινάκων, όμως κάτι τέτοιο επιβαρύνει σημαντικά άλλα τμήματα του επεξεργαστή. Για παράδειγμα, εφόσον κάθε πράξη πολλαπλασιασμού/συσσώρευσης απαιτεί τρεις θύρες ανάγνωσης καταχωρητή και μια θύρα εγγραφής καταχωρητή, τέσσερις μονάδες πολλαπλασιασμού/συσσώρευσης θα απαιτούσαν ένα σύνολο δώδεκα θυρών ανάγνωσης και τεσσάρων θυρών εγγραφής. Επιπλέον αυτού, η λογική αποκωδικοποίησης και προώθησης μετωπικού άκρου θα έπρεπε να έχει την ικανότητα ταυτόχρονης επεξεργασίας πολλών εντολών για την προώθηση προς αυτές τις λειτουργικές μονάδες (π.χ. απαιτείται ζήτημα «πενταπλού εύρους» για την αξιόπιστη τροφοδοσία τεσσάρων πολλαπλασιαστών) και συνεπώς να είναι αξιοσημείωτα σύνθετη. A data processing device may be required to perform arithmetic operations. These arithmetic operations can for example include matrix multiplication operations which can be applied to a number of objects. A feature of implementing such array multiplications is that throughput is very heavily computation dependent (rather than load/store dependent). This fact is increasingly true as the length of the vectors increases and the amount of work data that can be stored in the register file increases. For example, on 256-bit vectors that include 32-bit floating-point values, 6 vector multiplications (which require at least 32 registers) can be performed per vector load. To increase matrix multiplication performance, the vector length could be increased to give a corresponding improvement in performance, but larger vectors require a larger register file, and may require a more complex load/store unit if loading is required of larger vectors. Adding more vector multiplication modules could also increase matrix multiplication performance, but doing so places a significant burden on other parts of the processor. For example, since each multiply/accumulate operation requires three register read ports and one register write port, four multiply/accumulate units would require a total of twelve read ports and four write ports. In addition to this, the front-end decode and forward logic should have the ability to simultaneously process multiple instructions to forward to these modules (eg a "quintuple range" issue is required to reliably feed four multipliers) and thus be remarkably complex.

Τουλάχιστον ένα παράδειγμα που περιγράφεται στο παρόν παρέχει μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει: ένα κύκλωμα αποθήκευσης καταχωρητών με ένα πλήθος καταχωρητών, με κάθε καταχωρητή για την αποθήκευση πολλαπλών στοιχείων δεδομένων, ένα κύκλωμα αποκωδικοποιητή που αποκρίνεται σε μια εντολή επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στο πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης και ένα κύκλωμα επεξεργασίας που αποκρίνεται στα σήματα ελέγχου για την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων η οποία περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης. At least one example described herein provides a data processing arrangement that includes: a register storage circuit having a plurality of registers, each register for storing multiple data items, a decoder circuit responsive to a data processing command for generating control signals , the data processing instruction specifying in the plurality of registers: a first source register, a second source register, and a set of N accumulation registers, and a processing circuit responsive to the control signals to perform a data processing operation which includes extracting N items data from the contents of the first source register, performing a multiplication of each of the N data items by the contents of the second source register, and applying the result of each multiplication to the contents of a corresponding destination register from the set of N accumulation registers.

Τουλάχιστον ένα παράδειγμα που περιγράφεται στο παρόν παρέχει ένα μέσο αποθήκευσης με δυνατότητα ανάγνωσης από υπολογιστή το οποίο αποθηκεύει με ένα μη προσωρινό τρόπο ένα πρόγραμμα το οποίο περιλαμβάνει τουλάχιστον μια εντολή επεξεργασίας δεδομένων η οποία όταν εκτελείται από μια διάταξη επεξεργασίας δεδομένων προκαλεί τα εξής: παραγωγή σημάτων ελέγχου σε απόκριση μιας εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, και την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου, με τη λειτουργία επεξεργασίας δεδομένων να περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης. At least one example described herein provides a computer-readable storage medium that stores in a non-transitory manner a program that includes at least one data processing instruction that when executed by a data processing device causes the following: generation of control signals in response to a data processing instruction, the data processing instruction specifying in a plurality of registers: a first source register, a second source register, and a set of N accumulation registers, and performing a data processing operation in response to the control signals, with data processing operation to include extracting N data items from the contents of the first source register, performing a multiplication of each of the N data items by the contents of the second source register, and applying the result to each p multiplication to the content of a corresponding destination register from the set of N accumulation registers.

Τουλάχιστον ένα παράδειγμα που περιγράφεται στο παρόν παρέχει μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει: μέσα για την αποθήκευση πολλαπλών στοιχείων δεδομένων σε καταχωρητές από ένα πλήθος καταχωρητών, μέσα για την παραγωγή σημάτων ελέγχου σε απόκριση μιας εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στο πλήθος των καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, και μέσα πραγματοποίησης μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου, με τη λειτουργία επεξεργασίας δεδομένων να περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης. At least one example described herein provides a data processing arrangement comprising: means for storing multiple data items in registers from a plurality of registers, means for generating control signals in response to a data processing command, the data processing command specifying in the plurality of registers: a first source register, a second source register and a set of N accumulation registers, and means for performing a data processing operation in response to the control signals, the data processing operation comprising extracting N data items from the contents of first source register, performing a multiplication of each of the N data items with the contents of the second source register and applying the result of each multiplication to the contents of a corresponding destination register from the set of N registers of accumulation.

Η παρούσα εφεύρεση θα περιγράφει περαιτέρω, μέσω παραδείγματος μόνο, αναφορικά με τις υλοποιήσεις αυτής όπως εικονίζεται στα συνοδευτικά σχεδιαγράμματα, στα οποία: The present invention will be further described, by way of example only, with respect to embodiments thereof as illustrated in the accompanying drawings, in which:

Το Σχήμα 1 απεικονίζει σχηματικά μια διάταξη επεξεργασίας δεδομένων η οποία μπορεί να ενσωματώνει διάφορα παραδείγματα των υφιστάμενων τεχνικών, Figure 1 schematically illustrates a data processing arrangement which may incorporate various examples of the existing techniques,

Το Σχήμα 2 απεικονίζει σχηματικά τη χρήση μιας εντολής προετοιμασίας δεδομένων σε μια υλοποίηση, Figure 2 schematically illustrates the use of a data preparation instruction in one embodiment,

Το Σχήμα 3 απεικονίζει σχηματικά μια παραλλαγή της υλοποίησης του Σχήματος 2, Το Σχήμα 4Α απεικονίζει σχηματικά ένα παράδειγμα εντολής επεξεργασίας δεδομένων και το Σχήμα 4Β δείχνει την υλοποίηση της εκτέλεσης αυτής της εντολής επεξεργασίας δεδομένων σε μια υλοποίηση, Figure 3 schematically illustrates a variant of the embodiment of Figure 2, Figure 4A schematically illustrates an example data processing command, and Figure 4B shows the implementation of executing this data processing command in an embodiment,

Τα Σχήματα 5Α και 5Β απεικονίζουν σχηματικά δύο τρόπους με τους οποίους η δρομολόγηση των στοιχείων δεδομένων προς τις λειτουργικές μονάδες μπορεί να παρέχεται σε ορισμένες υλοποιήσεις, Figures 5A and 5B schematically illustrate two ways in which routing of data items to functional units may be provided in some embodiments,

Τα Σχήματα 6Α και 6Β απεικονίζουν σχηματικά δύο περαιτέρω παραδείγματα της εντολής επεξεργασίας δεδομένων που εξετάστηκε αναφορικά με τα Σχήματα 4Α και 4Β και την εκτέλεσή τους, Figures 6A and 6B schematically illustrate two further examples of the data processing instruction considered with respect to Figures 4A and 4B and their execution;

Το Σχήμα 7Α απεικονίζει σχηματικά ένα παράδειγμα εντολής επεξεργασίας δεδομένων και το Σχήμα 7Β δείχνει την υλοποίηση της εκτέλεσης αυτής της εντολής επεξεργασίας δεδομένων σε μια υλοποίηση, Figure 7A schematically illustrates an example data processing command and Figure 7B shows the implementation of executing this data processing command in one embodiment,

Το Σχήμα 8 δείχνει μια ακολουθία βημάτων τα οποία ακολουθούνται σύμφωνα με τη μέθοδο μιας υλοποίησης, Figure 8 shows a sequence of steps followed according to the method of one embodiment,

Το Σχήμα 9Α απεικονίζει σχηματικά την εκτέλεση μιας εντολής επεξεργασίας δεδομένων σύμφωνα με μια υλοποίηση και το Σχήμα 9Β δείχνει δύο παραδείγματα μιας τέτοιας εντολής, Το Σχήμα 10 απεικονίζει σχηματικά ορισμένες παραλλαγές σε υλοποιήσεις της εκτέλεσης των εντολών επεξεργασίας δεδομένων του Σχήματος 9Β, Figure 9A schematically illustrates the execution of a data processing instruction according to one embodiment and Figure 9B shows two examples of such an instruction, Figure 10 schematically illustrates certain variations in implementations of the execution of the data processing instructions of Figure 9B;

Το Σχήμα 11 απεικονίζει σχηματικά ένα πιο σύνθετο παράδειγμα με δύο καταχωρητές προέλευσης 128 bit για μια εντολή επεξεργασίας δεδομένων «εσωτερικού γινομένου» σε μια υλοποίηση, Figure 11 schematically illustrates a more complex example with two 128-bit source registers for an "internal product" data processing instruction in one embodiment,

Το Σχήμα 12 δείχνει μια παραλλαγή της υλοποίησης του Σχήματος 11, Figure 12 shows a variation of the embodiment of Figure 11,

Το Σχήμα 13 δείχνει μια περαιτέρω παραλλαγή στα παραδείγματα που δείχνονται στα Σχήματα 11 και 12, Figure 13 shows a further variation on the examples shown in Figures 11 and 12,

Το Σχήμα 14 δείχνει μια ακολουθία βημάτων τα οποία ακολουθούνται σύμφωνα με τη μέθοδο μιας υλοποίησης, Figure 14 shows a sequence of steps followed according to the method of one embodiment,

Το Σχήμα 15A απεικονίζει σχηματικά την εκτέλεση μιας εντολής επεξεργασίας δεδομένων η οποία παρέχεται από ορισμένες υλοποιήσεις και το Σχήμα 15Β δείχνει ένα αντίστοιχο παράδειγμα εντολής, Figure 15A schematically illustrates the execution of a data processing command provided by some embodiments, and Figure 15B shows a corresponding example command,

Το Σχήμα 16 δείχνει ένα παράδειγμα οπτικής αναπαράστασης της υλοποίησης του Σχήματος 15Α, με τη μορφή μιας απλής πράξης πολλαπλασιασμού πινάκων, Figure 16 shows an example visual representation of the implementation of Figure 15A, in the form of a simple matrix multiplication operation,

Το Σχήμα 17 δείχνει μια απλούστερη παραλλαγή των παραδειγμάτων που δείχνονται στο Σχήμα 15Α, όπου μόνο δύο στοιχεία δεδομένων προκύπτουν από κάθε έναν από τον πρώτο και το δεύτερο καταχωρητή προέλευσης, Figure 17 shows a simpler variation of the examples shown in Figure 15A, where only two data items are derived from each of the first and second source registers;

Το Σχήμα 18 δείχνει μια άλλη παραλλαγή του παραδείγματος που δείχνεται στο Σχήμα 15Α, όπου περισσότερα στοιχεία δεδομένων εξάγονται από κάθε έναν από τους καταχωρητές προέλευσης, Figure 18 shows another variation of the example shown in Figure 15A, where more data items are output from each of the source registers,

Το Σχήμα 19 δείχνει ένα παράδειγμα υλοποίησης της εκτέλεσης μιας εντολής επεξεργασίας δεδομένων, παρέχοντας περισσότερες λεπτομέρειες ορισμένων συγκεκριμένων πράξεων πολλαπλασιασμού οι οποίες πραγματοποιούνται, Figure 19 shows an example implementation of the execution of a data processing instruction, providing more details of some specific multiplication operations that are performed,

Το Σχήμα 20 δείχνει ένα παράδειγμα υλοποίησης της εκτέλεσης μιας εντολής επεξεργασίας δεδομένων, όπου το περιεχόμενο των δύο καταχωρητών προέλευσης αντιμετωπίζεται ως να περιλαμβάνει στοιχεία δεδομένων σε δύο ανεξάρτητες λωρίδες, Figure 20 shows an example implementation of the execution of a data processing instruction, where the contents of the two source registers are treated as including data elements in two independent lanes,

Το Σχήμα 21 δείχνει μια ακολουθία βημάτων τα οποία ακολουθούνται σύμφωνα με τη μέθοδο μιας υλοποίησης και Figure 21 shows a sequence of steps which are followed according to the method of one embodiment and

Το Σχήμα 22 δείχνει μια υλοποίηση εικονικής μηχανής σύμφωνα με μια υλοποίηση. Τουλάχιστον ένα παράδειγμα υλοποίησης που περιγράφεται στο παρόν παρέχει μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει: ένα κύκλωμα αποθήκευσης καταχωρητών που έχει ένα πλήθος καταχωρητών, με κάθε καταχωρητή για την αποθήκευση πολλαπλών στοιχείων δεδομένων, ένα κύκλωμα αποκωδικοποιητή που αποκρίνεται σε μια εντολή επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στο πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, και ένα κύκλωμα επεξεργασίας που αποκρίνεται στα σήματα ελέγχου για την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων η οποία περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, εκτελεί έναν πολλαπλασιασμό κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης, και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης. Figure 22 shows a virtual machine implementation according to one embodiment. At least one exemplary embodiment described herein provides a data processing arrangement comprising: a register storage circuit having a plurality of registers, with each register for storing multiple data items, a decoder circuit responsive to a data processing command for generating control signals, the data processing instruction specifying in the plurality of registers: a first source register, a second source register, and a set of N accumulation registers, and a processing circuit responsive to the control signals to perform a data processing operation which includes extracting N data items from the contents of the first source register, performing a multiplication of each of the N data items with the contents of the second source register, and applying the result of each multiplication to the contents of a s corresponding destination register from the set of N accumulation registers.

Η εντολή που παρέχεται, και το αντίστοιχο κύκλωμα που παρέχεται στη διάταξη επεξεργασίας δεδομένων για την υποστήριξή της, επιτρέπουν συνεπώς την πραγματοποίηση πολλαπλών (Ν) πολλαπλασιασμών με έναν τρόπο ώστε να είναι στην πράξη δυνατή η χρήση ενός πολλαπλασιαστή με Ν φορές το πλάτος του καταχωρητή. Με άλλη διατύπωση, επιτυγχάνεται η πυκνότητα υπολογισμού ενός διανύσματος μήκους Ν φορές τον καταχωρητή, χωρίς να απαιτείται το αρχείο καταχωρητών να γίνει Ν φορές μεγαλύτερο. Επιπλέον, επειδή οι τελεστές προέλευσης είναι κοινόχρηστοι, αυτή η προσέγγιση χρησιμοποιεί μόνο τις μισές θύρες ανάγνωσης για την επίτευξη των Ν πολλαπλασιασμών. Για παράδειγμα για την υλοποίηση ενός τετραπλού (Ν=4) πολλαπλασιαστή, οι παρούσες τεχνικές επιτυγχάνουν αυτούς τους τέσσερις πολλαπλασιασμούς, αλλά απαιτούν μόνο 6 θύρες ανάγνωσης καταχωρητών και 4 θύρες εγγραφής (με αυτές να είναι οι μισές θύρες ανάγνωσης από αυτές που θα απαιτούσαν 4 ανεξάρτητοι πολλαπλασιαστές). Επιπλέον, οι μηχανισμοί αποκωδικοποίησης και αποστολής της διάταξης απλοποιούνται εφόσον υπάρχει μόνο μια εντολή προς αποκωδικοποίηση και έκδοση και όχι Ν εντολές (μια για κάθε πολλαπλασιασμό). The instruction provided, and the corresponding circuitry provided in the data processing device to support it, thus allow multiple (N) multiplications to be performed in a way that it is practically possible to use a multiplier with N times the width of the register. Stated another way, the computation density of a vector of N times register length is achieved without requiring the register file to become N times larger. Furthermore, because the source operators are shared, this approach uses only half the read ports to achieve the N multiplications. For example to implement a quadruple (N=4) multiplier, the present techniques achieve these four multiplications, but require only 6 register read ports and 4 write ports (with these being half the read ports that would require 4 independent multipliers). Additionally, the array's decoding and dispatch mechanisms are simplified since there is only one instruction to decode and issue rather than N instructions (one for each multiplication).

Ο τρόπος με τον οποίο χρησιμοποιείται το περιεχόμενο του δεύτερου καταχωρητή προέλευσης στον πολλαπλασιασμό με κάθε ένα από τα Ν στοιχεία δεδομένων μπορεί να διαφέρει, όμως σε ορισμένες υλοποιήσεις κάθε στοιχείο δεδομένων μπορεί να πολλαπλασιάζεται με ένα αντίστοιχο τμήμα αυτού. Επιπλέον η εξαγωγή των Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης μπορεί να διαμορφώνεται με διάφορους τρόπους, όμως σε ορισμένες υλοποιήσεις το ίδιο στοιχείο δεδομένων αντιγράφεται για την παροχή των Ν στοιχείων δεδομένων. Ανάλογα σε ορισμένες υλοποιήσεις το κύκλωμα επεξεργασίας περιλαμβάνει ένα κύκλωμα χειρισμού στοιχείων δεδομένων που αποκρίνεται στα σήματα ελέγχου για την παροχή πολλαπλών στιγμιότυπων ενός στοιχείου δεδομένων το οποίο εξάγεται από τον πρώτο καταχωρητή προέλευσης, όπου η εκτέλεση του πολλαπλασιασμού περιλαμβάνει τον πολλαπλασιασμό των πολλαπλών στιγμιότυπων του στοιχείου δεδομένων με αντίστοιχα τμήματα του περιεχομένου του δεύτερου καταχωρητή προέλευσης. How the contents of the second source register are used in the multiplication by each of the N data items may vary, but in some implementations each data item may be multiplied by a corresponding portion thereof. Furthermore, extracting the N data items from the contents of the first source register can be configured in various ways, but in some implementations the same data item is copied to provide the N data items. According to some embodiments, the processing circuit includes a data item manipulation circuit responsive to control signals to provide multiple instances of a data item output from the first source register, wherein performing the multiplication includes multiplying the multiple instances of the data item by corresponding portions of the contents of the second source register.

Ένα τέτοιο κύκλωμα χειρισμού στοιχείων δεδομένων μπορεί να παρέχει διαφορετικά πολλαπλάσια των στιγμιότυπων αντιγράφων ενός στοιχείου δεδομένων που εξάγεται από τον πρώτο καταχωρητή προέλευσης ανάλογα τις απαιτήσεις. Για παράδειγμα σε ορισμένες υλοποιήσεις το κύκλωμα χειρισμού στοιχείων δεδομένων αποκρίνεται στα σήματα ελέγχου για την παροχή Μ στιγμιότυπων του στοιχείου δεδομένων, όπου το μέγεθος των Μ στιγμιότυπων είναι μικρότερο από το μέγεθος της πλειοψηφίας των καταχωρητών. Με άλλα λόγια, τα πολλαπλά στιγμιότυπα του στοιχείου δεδομένων μπορεί να καταλαμβάνει μόνο ένα τμήμα του πλάτους του καταχωρητή. Αυτό το τμήμα θα μπορούσε για παράδειγμα να είναι ένα μισό, ένα τέταρτο ή οποιοδήποτε άλλο κλάσμα ακεραίου, όπως απαιτεί ο υλοποιημένος υπολογισμός. Such data item handling circuitry may provide different multiples of the snapshot copies of a data item extracted from the first source register as required. For example in some implementations the data element manipulation circuitry is responsive to the control signals to provide M snapshots of the data element, where the size of the M snapshots is smaller than the size of the majority of the registers. In other words, multiple instances of the data item may occupy only a fraction of the register width. This part could for example be a half, a quarter, or any other integer fraction as required by the implemented calculation.

Όταν τα πολλαπλά στιγμιότυπα του στοιχείου δεδομένων δεν καταλαμβάνουν το πλήρες εύρος του καταχωρητή, μπορεί να ισχύει ότι περαιτέρω στοιχεία δεδομένων εξάγονται από τον πρώτο καταχωρητή προέλευσης και αντιγράφονται για να ταυτιστεί αυτό το εύρος. Για παράδειγμα σε ορισμένες υλοποιήσεις, το κύκλωμα χειρισμού στοιχείων δεδομένων αποκρίνεται στα σήματα ελέγχου για την παροχή αντίστοιχων Μ στιγμιότυπων για κάθε στοιχείο δεδομένων από ένα σύνολο στοιχείων δεδομένων που εξάγονται από τον πρώτο καταχωρητή προέλευσης, όπου το συνολικό μέγεθος των Μ στιγμιότυπων για το σύνολο στοιχείων δεδομένων ισούται με το μέγεθος του καταχωρητή. Επομένως για παράδειγμα εάν εξάγονται Κ στοιχεία δεδομένων, με κάθε ένα να αντιγράφεται Μ φορές, ο συνολικός αριθμός στοιχείων θα είναι Κ * Μ, το οποίο θα ισούται με το μέγεθος του καταχωρητή. When multiple instances of the data item do not occupy the full range of the register, it may be the case that further data items are extracted from the first source register and copied to identify that range. For example in some implementations, the data element manipulation circuit is responsive to the control signals to provide corresponding M snapshots for each data element from a set of data elements output from the first source register, where the total size of the M snapshots for the set of data elements equal to the size of the register. So for example if K data elements are extracted, each copied M times, the total number of elements will be K * M, which will equal the size of the register.

Το σύνολο στοιχείων δεδομένων μπορεί να επιλέγεται με διάφορους τρόπους από τον πρώτο καταχωρητή προέλευσης, όμως σε ορισμένες υλοποιήσεις το σύνολο στοιχείων δεδομένων δίδεται από ένα επιλεγμένο στοιχείο δεδομένων εντός ενός επαναλαμβανόμενου υπο-τμήματος του μεγέθους καταχωρητή. Στο προαναφερόμενο παράδειγμα με την εξαγωγή των Κ στοιχείων δεδομένων, υπάρχουν στη συνέχεια Κ υπο-τμήματα (ή «ομάδες δεδομένων») στον καταχωρητή. Για παράδειγμα στις περιπτώσεις στις οποίες ο πρώτος καταχωρητής προέλευσης υποδιαιρείται σε τέσσερα για παράδειγμα υπο-τμήματα, το σύνολο στοιχείων δεδομένων θα μπορούσε τότε να δίδεται για παράδειγμα από το πρώτης τάξης στοιχείο δεδομένων κάθε ενός από αυτά τα υπο-τμήματα. Με άλλα λόγια, ένα στοιχείο δεδομένων από κάθε υπο-τμήμα αντιγράφεται από το κύκλωμα χειρισμού στοιχείων δεδομένων για την παροχή του ίδιου στοιχείου δεδομένων που επαναλαμβάνεται σε ολόκληρο από κάθε ένα υπο-τμήμα. The set of data items may be selected in various ways from the first source register, but in some implementations the set of data items is given by a selected data item within a repeating sub-segment of the register size. In the above example by extracting the K data items, there are then K sub-sections (or "data groups") in the register. For example in cases where the first source register is subdivided into four for example sub-sections, the set of data items could then be given by for example the first order data item of each of these sub-sections. In other words, one data element from each sub-section is copied by the data element handling circuit to provide the same data element repeated throughout from each sub-section.

Ωστόσο δεν απαιτείται η υποδιαίρεση σε υπο-τμήματα με αυτό τον τρόπο σε σχέση με το κύκλωμα χειρισμού στοιχείων δεδομένων, ενώ ένα στοιχείο δεδομένων που έχει εξαχθεί μπορεί να αντιγράφεται σε ολόκληρο το εύρος καταχωρητή. Ανάλογα, σε ορισμένες υλοποιήσεις ένα συνδυασμένο μέγεθος των πολλαπλών στιγμιότυπων του στοιχείου δεδομένων ισούται με το μέγεθος της πλειοψηφίας των καταχωρητών. Οι παρούσες τεχνικές αναγνωρίζουν περαιτέρω ότι η διαίρεση σε Κ ομάδες και η αντιγραφή εντός κάθε μιας από αυτές τις ομάδες είναι πιθανό να είναι ευκολότερη για υλοποίηση σε υλικό, ωστόσο κάτι τέτοιο δεν είναι πάντα απαραίτητο, επομένως σε ορισμένες υλοποιήσεις ουσιαστικά Κ = 1 και Μ = το εύρος διανύσματος. However, sub-dividing in this way is not required in relation to the data element handling circuitry, and an extracted data element can be copied over the entire register range. Accordingly, in some implementations a combined size of the multiple instances of the data element is equal to the size of the majority of the registers. The present techniques further recognize that dividing into K groups and copying within each of these groups is likely to be easier to implement in hardware, however this is not always necessary, so in some implementations essentially K = 1 and M = the vector range.

Οι παρούσες τεχνικές μπορούν να υλοποιούνται με το Ν να παίρνει διάφορες τιμές, όμως έχει βρεθεί ότι μια καλή σχέση κόστους-ωφέλους επιτυγχάνεται όταν το Ν είναι στην περιοχή 2 έως 8. Σε ορισμένες συγκεκριμένες υλοποιήσεις το Ν ισούται με 2. Σε ορισμένες συγκεκριμένες υλοποιήσεις το Ν ισούται με 4. The present techniques can be implemented with N taking various values, but it has been found that a good cost-benefit ratio is obtained when N is in the range of 2 to 8. In some specific embodiments, N is equal to 2. In some specific embodiments, N equals 4.

Η εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο του αντίστοιχου καταχωρητή προορισμού στη λειτουργία επεξεργασίας δεδομένων μπορεί να πραγματοποιείται με διάφορους τρόπους, ανάλογα την απαίτηση υπολογισμού. Σε ορισμένες υλοποιήσεις η εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο του αντίστοιχου καταχωρητή προορισμού στη λειτουργία επεξεργασίας δεδομένων περιλαμβάνει την προσθήκη του αποτελέσματος κάθε πολλαπλασιασμού με το περιεχόμενο του αντίστοιχου καταχωρητή προορισμού. Σε ορισμένες υλοποιήσεις η εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο του αντίστοιχου καταχωρητή προορισμού στη λειτουργία επεξεργασίας δεδομένων περιλαμβάνει την αφαίρεση του αποτελέσματος κάθε πολλαπλασιασμού από το περιεχόμενο του αντίστοιχου καταχωρητή προορισμού. Σε ορισμένες υλοποιήσεις η εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο του αντίστοιχου καταχωρητή προορισμού στη λειτουργία επεξεργασίας δεδομένων περιλαμβάνει την αντικατάσταση του περιεχομένου του αντίστοιχου καταχωρητή προορισμού με το αποτέλεσμα κάθε πολλαπλασιασμού. Applying the result of each multiplication to the contents of the corresponding destination register in the data processing operation can be done in various ways depending on the computation requirement. In some implementations applying the result of each multiplication to the contents of the corresponding destination register in the data processing operation includes adding the result of each multiplication to the contents of the corresponding destination register. In some implementations applying the result of each multiplication to the contents of the corresponding destination register in the data processing operation includes subtracting the result of each multiplication from the contents of the corresponding destination register. In some implementations applying the result of each multiplication to the contents of the corresponding destination register in the data processing operation includes replacing the contents of the corresponding destination register with the result of each multiplication.

Η προτεινόμενη προσέγγιση, στην οποία το αποτέλεσμα κάθε πολλαπλασιασμού εφαρμόζεται στο περιεχόμενο των αντίστοιχων καταχωρητών προορισμού ενός συνόλου Ν καταχωρητών συσσώρευσης, μπορεί να κάνει δυνατή μια αποτελεσματική κωδικοποίηση της αναπαράστασης αυτού του συνόλου Ν καταχωρητών συσσώρευσης στην εντολή, και επίσης να κάνει δυνατή μια αποτελεσματικά απλή σχεδίαση του αρχείου καταχωρητών. Για παράδειγμα σε ορισμένες υλοποιήσεις το σύνολο των Ν καταχωρητών συσσώρευσης είναι καταχωρητές διαδοχικής διευθυνσιοδότησης. Σε ορισμένες υλοποιήσεις ένας δείκτης ενός πρώτου καταχωρητή συσσώρευσης του συνόλου των Ν καταχωρητών συσσώρευσης είναι ένας μη αρνητικός ακέραιος πολλαπλάσιος του Ν. Τέτοιες υλοποιήσεις διευκολύνουν τη διευθυνσιοδότηση και επιπλέον κάνουν δυνατή μια απλούστερη σχεδίαση του αρχείου καταχωρητών από ένα με πολλαπλές ανεξάρτητες θύρες. The proposed approach, in which the result of each multiplication is applied to the contents of the corresponding destination registers of a set of N accumulation registers, can enable an efficient encoding of the representation of this set of N accumulation registers in the instruction, and also enable an effectively simple design of the registry file. For example in some implementations all of the N accumulation registers are sequential addressing registers. In some implementations a pointer to a first accumulation register of the set of N accumulation registers is a non-negative integer multiple of N. Such implementations facilitate addressing and further enable a simpler design of the register file than one with multiple independent ports.

Επίσης, αύξηση της απόδοσης μπορεί επίσης να επιτυγχάνεται στη διευθυνσιοδότηση των στοιχείων δεδομένων που εξάγονται από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, ενώ σε ορισμένες υλοποιήσεις τα Ν στοιχεία δεδομένων που εξάγονται από το περιεχόμενο του πρώτου καταχωρητή προέλευσης είναι στοιχεία δεδομένων διαδοχικής διευθυνσιοδότησης. Σε ορισμένες υλοποιήσεις ένας δείκτης ενός πρώτου στοιχείου δεδομένων από τα Ν στοιχεία δεδομένων που εξάγονται από το περιεχόμενο του πρώτου καταχωρητή προέλευσης είναι ένας μη αρνητικός ακέραιος πολλαπλάσιος του Ν. Also, an increase in performance may also be achieved in addressing the data items extracted from the contents of the first source register, while in some implementations the N data items extracted from the contents of the first source register are sequentially addressed data items. In some implementations an index of a first data item of the N data items extracted from the contents of the first source register is a non-negative integer multiple of N.

Ο πολλαπλασιασμός που πραγματοποιείται στη λειτουργία επεξεργασίας δεδομένων για τον πολλαπλασιασμό κάθε ενός από τα Ν στοιχεία δεδομένων που εξάγονται από τον πρώτο καταχωρητή προέλευσης με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης μπορεί ο ίδιος να λαμβάνει ένα πλήθος διαμορφώσεων. Σε ορισμένες υλοποιήσεις ο πολλαπλασιασμός κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης περιλαμβάνει: την εξαγωγή τουλάχιστον πρώτων ζευγών στοιχείων δεδομένων και δεύτερων ζευγών στοιχείων δεδομένων από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης, την εκτέλεση πράξεων πολλαπλασιασμού για τον πολλαπλασιασμό των τουλάχιστον πρώτων ζευγών στοιχείων δεδομένων και δεύτερων ζευγών στοιχείων δεδομένων, τη φόρτωση μιας τιμής συσσωρευτή από έναν καταχωρητή συσσωρευτή εισόδου του συνόλου Ν καταχωρητών συσσώρευσης και την πρόσθεση των αποτελεσμάτων των πράξεων πολλαπλασιασμού στην τιμή του συσσωρευτή. Με άλλα λόγια, είναι δυνατή η πραγματοποίηση πράξεων πολλαπλασιασμού ζευγών στα στοιχεία δεδομένων που εξάγονται από κάθε καταχωρητή προέλευσης με τρόπο ώστε, σε ένα παράδειγμα στο οποίο δύο στοιχεία δεδομένων εξάγονται από κάθε έναν από τον πρώτο και το δεύτερο καταχωρητή προέλευσης, OL πράξεις πολλαπλασιασμού ζευγών πολλαπλασιάζουν τα πρώτα στοιχεία δεδομένων που εξάγονται από κάθε έναν από τον πρώτο και το δεύτερο καταχωρητή προέλευσης σε μια πρώτη πράξη πολλαπλασιασμού και επίσης ξεχωριστά πολλαπλασιάζουν τα δεύτερα στοιχεία δεδομένων που εξάγονται από κάθε έναν από τον πρώτο και το δεύτερο καταχωρητή προέλευσης σε μια δεύτερη πράξη πολλαπλασιασμού. Τα αποτελέσματα αυτών των πράξεων πολλαπλασιασμού προστίθενται στη συνέχεια με την τιμή συσσωρευτή. Με αυτό τον τρόπο πραγματοποιείται ένας ιδιαίτερα πυκνός, υπολογισμός κινητής υποδιαστολής, ο οποίος κάνει δυνατή τη διεύρυνση του αποτελέσματος. The multiplication performed in the data processing operation to multiply each of the N data items output from the first source register by the contents of the second source register may itself take a number of configurations. In some implementations multiplying each of the N data items by the contents of the second source register includes: extracting at least first pairs of data items and second pairs of data items from the first source register and the second source register, performing multiplication operations for multiplying the at least first pairs of data items and second pairs of data items, loading an accumulator value from an input accumulator register of the set of N accumulator registers, and adding the results of the multiplication operations to the accumulator value. In other words, it is possible to perform pair multiplication operations on the data items retrieved from each source register such that, in an example in which two data items are retrieved from each of the first and second source registers, OL pair multiplication operations multiply first data items output from each of the first and second source registers in a first multiply operation and also separately multiplying the second data items output from each of the first and second source registers in a second multiply operation. The results of these multiplication operations are then added with the accumulator value. In this way a particularly dense, floating-point calculation is performed, which makes it possible to expand the result.

Τουλάχιστον ένα παράδειγμα υλοποίησης που περιγράφεται στο παρόν παρέχει μια μέθοδο λειτουργίας μιας διάταξης επεξεργασίας δεδομένων η οποία περιλαμβάνει: την παραγωγή σημάτων ελέγχου σε απόκριση μιας εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, και την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου, με τη λειτουργία επεξεργασίας δεδομένων να περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την πραγματοποίηση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης, και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού με το περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης. At least one exemplary embodiment described herein provides a method of operating a data processing device comprising: generating control signals in response to a data processing command, the data processing command specifying in a plurality of registers: a first source register, a second source register and a set of N accumulation registers, and performing a data processing operation in response to the control signals, the data processing operation comprising extracting N data items from the contents of the first source register, performing a multiplication of each of N data items with the contents of the second source register, and applying the result of each multiplication with the contents of a corresponding destination register from the set of N accumulation registers.

Τουλάχιστον ένα παράδειγμα υλοποίησης που περιγράφεται στο παρόν παρέχει ένα μέσο αποθήκευσης με δυνατότητα ανάγνωσης από υπολογιστή το οποίο αποθηκεύει με ένα μη προσωρινό τρόπο ένα πρόγραμμα το οποίο περιλαμβάνει τουλάχιστον μια εντολή επεξεργασίας δεδομένων η οποία όταν εκτελείται από μια διάταξη επεξεργασίας δεδομένων προκαλεί: την παραγωγή σημάτων ελέγχου σε απόκριση μιας εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, και την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου, με τη λειτουργία επεξεργασίας δεδομένων να περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης, και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού με το περιεχόμενο του αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης. At least one exemplary embodiment described herein provides a computer-readable storage medium that stores in a non-transitory manner a program that includes at least one data processing instruction that when executed by a data processing device causes: the generation of control signals in response to a data processing instruction, the data processing instruction specifying in a plurality of registers: a first source register, a second source register, and a set of N accumulation registers, and performing a data processing operation in response to the control signals, with data processing operation to include extracting N data items from the contents of the first source register, performing a multiplication of each of the N data items by the contents of the second source register, and applying the result of each multiplication with the content of the corresponding destination register from the set of N accumulation registers.

Τουλάχιστον ένα παράδειγμα υλοποίησης που περιγράφεται στο παρόν παρέχει μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει μέσα για την αποθήκευση πολλαπλών στοιχείων δεδομένων σε καταχωρητές από ένα πλήθος καταχωρητών, μέσα για την παραγωγή σημάτων ελέγχου σε απόκριση μιας εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στο πλήθος των καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, και μέσα για την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου, με τη λειτουργία επεξεργασίας δεδομένων να περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης, και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης. At least one exemplary embodiment described herein provides a data processing arrangement that includes means for storing multiple data items in registers from a plurality of registers, means for generating control signals in response to a data processing command, the data processing command specifying in the plurality of registers: a first source register, a second source register and a set of N accumulation registers, and means for performing a data processing operation in response to the control signals, the data processing operation comprising extracting N data items from contents of the first source register, performing a multiplication of each of the N data items by the contents of the second source register, and applying the result of each multiplication to the contents of a corresponding destination register from the set of N accumulation registers.

Τουλάχιστον ένα παράδειγμα υλοποίησης που περιγράφεται στο παρόν παρέχει μια εικονική μηχανή η οποία παρέχεται από ένα πρόγραμμα υπολογιστή το οποίο εκτελείται από μια διάταξη επεξεργασίας δεδομένων, με την εν λόγω εικονική μηχανή να παρέχει ένα περιβάλλον εκτέλεσης εντολών που αντιστοιχεί σε μια από τις προαναφερθείσες διατάξεις επεξεργασίας δεδομένων. At least one example embodiment described herein provides a virtual machine provided by a computer program executed by a data processing device, said virtual machine providing a command execution environment corresponding to one of the aforementioned data processing devices .

Ορισμένες συγκεκριμένες υλοποιήσεις θα περιγραφούν τώρα αναφορικά με τα σχήματα. Certain specific embodiments will now be described with reference to the figures.

Το Σχήμα 1 απεικονίζει σχηματικά μια διάταξη επεξεργασίας δεδομένων η οποία μπορεί να ενσωματώνει διάφορα παραδείγματα των υφιστάμενων τεχνικών. Η διάταξη επεξεργασίας δεδομένων περιλαμβάνει ένα κύκλωμα επεξεργασίας 12 το οποίο πραγματοποιεί λειτουργίες επεξεργασίας δεδομένων σε στοιχεία δεδομένων σε απόκριση μιας ακολουθίας εντολών τις οποίες εκτελεί. Αυτές οι εντολές ανακτώνται από τη μνήμη 14 στην οποία έχει πρόσβαση η διάταξη επεξεργασίας δεδομένων και, με έναν τρόπο με τον οποίο θα είναι εξοικειωμένο ένα άτομο τυπικής εμπειρίας στην τέχνη, παρέχεται ένα κύκλωμα προσκόμισης 16 για αυτό το σκοπό. Περαιτέρω εντολές που ανακτώνται από το κύκλωμα προσκόμισης 16 μεταβιβάζονται στο κύκλωμα αποκωδικοποίησης 18, το οποίο παράγει σήματα ελέγχου τα οποία διατάσσονται ώστε να ελέγχουν διάφορα ζητήματα της διαμόρφωσης και της λειτουργίας του κυκλώματος επεξεργασίας 12. Δείχνονται επίσης ένα σύνολο καταχωρητών 20 και μια μονάδα φόρτωσης/αποθήκευσης 22. Ένα άτομο τυπικής εμπειρίας στην τέχνη θα είναι εξοικειωμένο με τη γενική διαμόρφωση την οποία αναπαριστά το Σχήμα 1 ενώ η περαιτέρω λεπτομερής περιγραφή αυτής παρακάμπτεται από το παρόν απλά για λόγους συντομίας. Οι καταχωρητές 20, στις υλοποιήσεις που απεικονίζονται στο Σχήμα 1, μπορούν να περιλαμβάνουν χώρο αποθήκευσης για ένα ή και για τα δύο από ένα μέγεθος πολλαπλάσιο ακεραίου 24 και μιας ομάδας δεδομένων 25, η χρήση του οποίου θα περιγράφει σε μεγαλύτερη λεπτομέρεια παρακάτω αναφορικά με ορισμένες ειδικές υλοποιήσεις. Τα δεδομένα που απαιτούνται από το κύκλωμα επεξεργασίας 12 για την εκτέλεση των εντολών, και οι τιμές δεδομένων που παράγονται ως αποτέλεσμα αυτών των εντολών επεξεργασίας δεδομένων, εγγράφονται και διαβάζονται από τη μνήμη 14 μέσω της μονάδας φόρτωσης/αποθήκευσης 22. Ας σημειωθεί επίσης ότι σε γενικές γραμμές η μνήμη 14 στο Σχήμα 1 μπορεί να λαμβάνεται ως ένα παράδειγμα ενός μέσου αποθήκευσης με δυνατότητα ανάγνωσης από υπολογιστή στο οποίο είναι δυνατή η αποθήκευση των εντολών των υφιστάμενων τεχνικών, συνήθως στα πλαίσια μιας προκαθορισμένης ακολουθίας εντολών (ένα «πρόγραμμα»), την οποία το κύκλωμα επεξεργασίας εκτελεί στη συνέχεια. Το κύκλωμα επεξεργασίας μπορεί ωστόσο να έχει πρόσβαση σε ένα τέτοιο πρόγραμμα από ένα πλήθος διαφορετικών πηγών, όπως η RAM, η ROM, μέσω μιας διασύνδεσης δικτύου και ούτω καθεξής. Η παρούσα δημοσιοποίηση περιγράφει διάφορες νέες εντολές τις οποίες μπορεί να εκτελεί το κύκλωμα επεξεργασίας 12 ενώ τα σχήματα τα οποία ακολουθούν παρέχουν περαιτέρω επεξήγηση της φύσης αυτών των εντολών, παραλλαγές στο κύκλωμα επεξεργασίας δεδομένων ώστε να υποστηρίζει την εκτέλεση αυτών των εντολών, και ούτω καθεξής. Figure 1 schematically illustrates a data processing arrangement which may incorporate various examples of the existing techniques. The data processing device includes a processing circuit 12 which performs data processing operations on data elements in response to a sequence of commands which it executes. These commands are retrieved from memory 14 accessed by the data processing device and, in a manner familiar to a person of ordinary skill in the art, a fetch circuit 16 is provided for this purpose. Further instructions retrieved from the fetch circuit 16 are passed to the decode circuit 18, which produces control signals which are arranged to control various aspects of the configuration and operation of the processing circuit 12. Also shown is a set of registers 20 and a load/store unit. 22. A person of ordinary skill in the art will be familiar with the general configuration represented by Figure 1, further detailed description of which is omitted herein simply for the sake of brevity. Registers 20, in the embodiments illustrated in Figure 1, may include storage for one or both of a size multiple of an integer 24 and a group of data 25, the use of which will be described in greater detail below with respect to certain specific implementations. The data required by the processing circuit 12 to execute the instructions, and the data values produced as a result of those data processing instructions, are written to and read from the memory 14 via the load/store unit 22. It should also be noted that in general lines memory 14 in Figure 1 may be taken as an example of a computer-readable storage medium in which the instructions of the existing techniques can be stored, typically within a predetermined sequence of instructions (a "program"), which the processing circuit then executes. Processing circuitry may, however, access such a program from a number of different sources, such as RAM, ROM, via a network interface, and so on. The present disclosure describes various new instructions that the processing circuit 12 can execute while the figures that follow provide further explanation of the nature of these instructions, variations in the data processing circuit to support the execution of these instructions, and so forth.

Το Σχήμα 2 απεικονίζει σχηματικά τη χρήση μιας εντολής προετοιμασίας δεδομένων 32. Η εντολή προετοιμασίας δεδομένων 32 περιλαμβάνει ένα τμήμα λειτουργικού κώδικα (καθορίζοντάς το ως μια εντολή προετοιμασίας δεδομένων), έναν προσδιοριστή καταχωρητή 36 και έναν προσδιοριστή θέσης μνήμης 38. Η εκτέλεση αυτής της εντολής από τη διάταξη επεξεργασίας δεδομένων αυτής της υλοποίησης προκαλεί τον προσδιορισμό μιας ομάδας δεδομένων 40 η οποία αποθηκεύεται σε μια μνήμη 30 (με παραπομπή σε αυτή από την καθορισμένη θέση μνήμης καί, για παράδειγμα να εκτείνεται σε περισσότερες από μια διευθύνσεις, ανάλογα το μέγεθος της καθορισμένης ομάδας δεδομένων) και περιλαμβάνει (σε αυτή την εικονιζόμενη υλοποίηση) δύο στοιχεία δεδομένων b0 και bl (αναφέρονται ως 42 και 44 στο σχήμα). Περαιτέρω, η εκτέλεση της εντολής προκαλεί την αντιγραφή αυτής της ομάδας δεδομένων 40 στον καθορισμένο καταχωρητή και επιπλέον την επανάληψή της σε όλο το εύρος αυτού του καταχωρητή, όπως δείχνεται στο Σχήμα 2 από τις επαναλαμβανόμενες ομάδες δεδομένων 46, 48, 50 και 52, κάθε μια από τις οποίες αποτελείται από τα στοιχεία δεδομένων b0 και b1. Figure 2 schematically illustrates the use of a data preparation instruction 32. The data preparation instruction 32 includes a function code segment (designating it as a data preparation instruction), a register specifier 36, and a memory location specifier 38. The execution of this instruction by the data processing arrangement of this embodiment causes a group of data 40 to be determined which is stored in a memory 30 (referenced to it by the designated memory location and, for example, extending to more than one address, depending on the size of the designated data group ) and includes (in this illustrated embodiment) two data items b0 and bl (referred to as 42 and 44 in the figure). Further, the execution of the instruction causes this group of data 40 to be copied into the designated register and further to be repeated throughout the range of that register, as shown in Figure 2 by the repeating groups of data 46, 48, 50 and 52, each of which consists of data elements b0 and b1.

Το Σχήμα 3 απεικονίζει σχηματικά μια παραλλαγή της υλοποίησης του Σχήματος 2, η οποία επιδεικνύει ότι μια τέτοια εντολή προετοιμασίας δεδομένων μπορεί να προκαλεί την αντιγραφή και επανάληψη ομάδων δεδομένων διαφορετικού μεγέθους. Στο εικονιζόμενο παράδειγμα του Σχήματος 3 η εντολή 60 έχει την ίδια δομή, δηλ. να περιλαμβάνει έναν λειτουργικό κώδικα 62, έναν προσδιοριστή καταχωρητή 64 και μια καθορισμένη θέση μνήμης 66. Figure 3 schematically illustrates a variation of the implementation of Figure 2, which demonstrates that such a data preparation instruction may cause groups of data of different size to be copied and repeated. In the illustrated example of Figure 3 the instruction 60 has the same structure, i.e. comprising an opcode 62, a register specifier 64 and a designated memory location 66.

Η εκτέλεση της εντολής 60 προκαλεί την πρόσβαση στη θέση μνήμης 66 ενώ η ομάδα δεδομένων 68 που είναι αποθηκευμένη εκεί (δηλ. για παράδειγμα ξεκινώντας από αυτή τη θέση μνήμης και εκτεινόμενη σε έναν προκαθορισμένο αριθμό στοιχείων δεδομένων) περιλαμβάνει τα στοιχεία δεδομένων c0, c1, c2 και c3 (τα οποία αναφέρονται ως 70, 72, 74 και 76 στο σχήμα). Αυτή η ομάδα δεδομένων 68 αντιγράφεται και επαναλαμβάνεται σε όλο το εύρος του καταχωρητή προορισμού και δείχνεται από τα επαναλαμβανόμενα αντίγραφα αυτής της ομάδας δεδομένων 78, 80, 82 και 84. Ας σημειωθεί ότι, αναφορικά με το Σχήμα 1 το μέγεθος της ομάδας δεδομένων μπορεί να προκαθορίζεται από μια τιμή που συγκροτείται σε μια αποκλειστική θέση αποθήκευσης 25 στους καταχωρητές 20. Τέλος, θα πρέπει να εκτιμάται ότι τα παραδείγματα των Σχημάτων 2 και 3 δεν περιορίζονται σε κάποιο συγκεκριμένο εύρος ομάδας δεδομένων ή πολλαπλάσια επανάληψης. Ωστόσο, για να εξεταστεί μόλις ένα παράδειγμα το οποίο είναι χρήσιμο σε ένα σύγχρονο πλαίσιο, η επανάληψη θα μπορούσε να πραγματοποιείται σε ένα εύρος 128 bit. Στα πλαίσια των Επεκτάσεων Κλιμακούμενων Διανυσμάτων (Scalable Vector Extensions ή SVE) που παρέχονται από την ARM<®>Limited of Cambridge, Ηνωμένο Βασίλειο, αυτό το εύρος αντιστοιχεί στο μέγεθος κόκκου διανύσματος SVE. Στα πλαίσια των εντολών ASIMD οι οποίες επίσης παρέχονται από την ARM<®>Limited, αυτό αντιστοιχεί στο μέγεθος ενός καταχωρητή ASIMD. Ανάλογα οι παρούσες τεχνικές επιτρέπουν τη φόρτωση και επανάληψη των ακόλουθων τύπων ομάδων: δύο στοιχεία δεδομένων 64 bit, τέσσερα στοιχεία δεδομένων 32 bit, οκτώ στοιχεία δεδομένων 16 bit ή δεκαέξι στοιχεία δεδομένων 8 bit. Execution of instruction 60 causes memory location 66 to be accessed while the group of data 68 stored there (ie, for example starting at this memory location and extending to a predetermined number of data items) includes data items c0, c1, c2 and c3 (which are indicated as 70, 72, 74 and 76 in the figure). This data group 68 is copied and repeated throughout the range of the destination register and is shown by the repeated copies of this data group 78, 80, 82 and 84. Note that, with reference to Figure 1 the size of the data group may be predetermined from a value held in a dedicated storage location 25 in registers 20. Finally, it should be appreciated that the examples of Figures 2 and 3 are not limited to any particular data group range or repetition multiples. However, to consider just one example that is useful in a modern context, the iteration could be performed in a 128-bit range. In the context of Scalable Vector Extensions (SVE) provided by ARM<®>Limited of Cambridge, United Kingdom, this range corresponds to the SVE vector grain size. In the context of ASIMD instructions which are also provided by ARM<®>Limited, this corresponds to the size of an ASIMD register. Accordingly, the present techniques allow the following types of groups to be loaded and repeated: two 64-bit data items, four 32-bit data items, eight 16-bit data items, or sixteen 8-bit data items.

Το Σχήμα 4Α απεικονίζει σχηματικά ένα παράδειγμα εντολής επεξεργασίας δεδομένων και το Σχήμα 4Β δείχνει την υλοποίηση της εκτέλεσης αυτής της εντολής επεξεργασίας δεδομένων σε μια υλοποίηση. Αυτή η εντολή επεξεργασίας δεδομένων περιλαμβάνει ένα λειτουργικό κώδικα 102, ένα προσδιοριστή πρώτου καταχωρητή 104, ένα προσδιοριστή δεύτερου καταχωρητή 106, έναν προσδιοριστή δείκτη 108 και, ως μια προαιρετική παραλλαγή, έναν προσδιοριστή καταχωρητή αποτελεσμάτων 110. Το Σχήμα 4Β απεικονίζει ότι η εκτέλεση αυτής της εντολής προκαλεί την πρόσβαση στις ομάδες δεδομένων στον καταχωρητή Α και στον καταχωρητή Β, όπου όλα τα στοιχεία δεδομένων σε κάθε ομάδα δεδομένων στον καταχωρητή Α, δηλ. στο παρόν παράδειγμα την πρόσβαση στα στοιχεία δεδομένων a0 και a1 στην πρώτη ομάδα δεδομένων 112 και στα στοιχεία δεδομένων a2 και a3 στη δεύτερη ομάδα δεδομένων 114, ενώ στον καταχωρητή Β πραγματοποιείται πρόσβαση μόνο σε ένα επιλεγμένο στοιχείο δεδομένων σε κάθε μια από τις ομάδες δεδομένων 116 και 118, δηλαδή το στοιχείο δεδομένων b1. Συνεπώς, μετά την πρόσβαση σε αυτά τα στοιχεία δεδομένων αυτά μεταβιβάζονται στο λειτουργικό κύκλωμα του κυκλώματος επεξεργασίας, το οποίο αναπαρίσταται στο Σχήμα 4Β από τις μονάδες λειτουργίας 120, 122, 124 και 126 οι οποίες εφαρμόζουν μια λειτουργία επεξεργασίας δεδομένων σε σχέση με τα στοιχεία δεδομένων που λαμβάνονται από τον καταχωρητή Β και τις ομάδες δεδομένων που λαμβάνονται από τον καταχωρητή Α. Όπως προαναφέρθηκε η εντολή 100 μπορεί να προσδιορίζει έναν καταχωρητή αποτελεσμάτων (μέσω του προσδιοριστή 110) και τα αποτελέσματα αυτών των λειτουργιών να εγγράφονται στα αντίστοιχα στοιχεία δεδομένων ενός καταχωρητή αποτελεσμάτων 128. Πράγματι, σε ορισμένες υλοποιήσεις ο καταχωρητής αποτελεσμάτων 128 και ο καταχωρητής Α μπορεί να είναι ο ίδιος καταχωρητής, επιτρέποντας για παράδειγμα την πραγματοποίηση λειτουργιών πολλαπλασιασμού-συσσώρευσης σε σχέση με το περιεχόμενο αυτού του καταχωρητή (όπως δείχνεται σχηματικά στο Σχήμα 4 μέσω του διακεκομμένου βέλους). Ας σημειωθεί επίσης ότι οι καταχωρητές που δείχνονται στο Σχήμα 4Β απεικονίζονται εσκεμμένα ως πιθανώς εκτεινόμενοι (και στις δύο πλευρές) πέρα από το τμήμα στο οποίο πραγματοποιείται πρόσβαση από το παράδειγμα εντολής. Αυτό αντιστοιχεί στο γεγονός ότι σε ορισμένες υλοποιήσεις (όπως οι προαναφερθείσες Επεκτάσεις Κλιμακούμενων Διανυσμάτων (SVE)) το μέγεθος διανύσματος μπορεί να μην προσδιορίζεται. Για παράδειγμα θεωρώντας το Σχήμα 4Β ότι απεικονίζει τη λειτουργία της εντολής για μια ομάδα, για παράδειγμα, δύο στοιχείων δεδομένων 64 bit (b0 και bl1 σε ένα παράδειγμα SVE το μέγεθος διανύσματος για τον προορισμό θα μπορούσε να είναι οποιαδήποτε τιμή από 128 bit έως και 2048 bit (σε βήματα των 128 bit). Figure 4A schematically illustrates an example of a data processing command and Figure 4B shows the implementation of the execution of this data processing command in one embodiment. This data processing instruction includes an opcode 102, a first register specifier 104, a second register specifier 106, a pointer specifier 108, and, as an optional variation, a result register specifier 110. Figure 4B illustrates that the execution of this instruction causes the data groups in register A and register B to be accessed, where all data items in each data group in register A, i.e. in this example data items a0 and a1 are accessed in the first data group 112 and data items a2 and a3 in the second data group 114, while only one selected data item in each of the data groups 116 and 118 is accessed in register B, namely data item b1. Accordingly, after accessing these data elements they are passed to the processing circuit operation circuit, which is represented in Figure 4B by the operation units 120, 122, 124 and 126 which perform a data processing operation with respect to the data elements which received from register B and groups of data received from register A. As mentioned above instruction 100 may specify a result register (via specifier 110) and the results of these operations be written to the corresponding data elements of a result register 128. Indeed, in some implementations the result register 128 and the A register may be the same register, for example allowing multiply-accumulate operations to be performed on the contents of that register (as shown schematically in Figure 4 by the dashed arrow). Note also that the registers shown in Figure 4B are intentionally depicted as potentially extending (on both sides) beyond the portion accessed by the instruction example. This corresponds to the fact that in some implementations (such as the aforementioned Scalar Vector Extensions (SVE)) the vector size may not be specified. For example considering Figure 4B illustrates the operation of the instruction for a group of, say, two 64-bit data items (b0 and bl1 in an example SVE the vector size for the destination could be any value from 128 bits up to 2048 bits (in steps of 128 bits).

Θα πρέπει να εκτιμηθεί ότι μολονότι το παράδειγμα που δείχνεται στο Σχήμα 4Β δίνει ένα συγκεκριμένο παράδειγμα ενός επιλεγμένου (επαναλαμβανόμενου) στοιχείου δεδομένων που χρησιμοποιείται από το περιεχόμενο του καταχωρητή Β, σε γενικές γραμμές είναι σαφώς προτιμώμενο μια ευέλικτη διάταξη επεξεργασίας δεδομένων πολλαπλών σκοπών να διαθέτει τη δυνατότητα οποιοδήποτε στοιχείο δεδομένων στον καταχωρητή Β να χρησιμοποιείται ως είσοδος για οποιαδήποτε από τις μονάδες λειτουργίας 120-126. Τα Σχήματα 5Α και 5Β απεικονίζουν σχηματικά δύο τρόπους με τους οποίους μπορεί να επιτευχθεί αυτό. Το Σχήμα 5Α δείχνει ένα σύνολο τμημάτων αποθήκευσης 130, 132, 134 και 136 τα οποία για παράδειγμα μπορούν να αποθηκεύουν αντίστοιχα στοιχεία δεδομένων σε έναν καταχωρητή, συνδεδεμένο με ένα σύνολο λειτουργικών μονάδων 140, 142, 144 και 146 (οι οποίες μπορούν για παράδειγμα να είναι μικτές μονάδες πολλαπλασιασμού-πρόσθεσης). Οι συνδέσεις μεταξύ των μονάδων αποθήκευσης 130-136 καιτων λειτουργικών μονάδων 140-146 δείχνονται στο Σχήμα 5Α ώστε να είναι τόσο άμεσες όσο και να διοχετεύονται μέσω του πολυπλέκτη 148. Ανάλογα, αυτή η διαμόρφωση προβλέπει ότι το περιεχόμενο οποιοσδήποτε από τις ανεξάρτητες μονάδες αποθήκευσης 130-136 μπορεί να παρέχεται σε οποιαδήποτε από τις λειτουργικές μονάδες 140-146, ως μια πρώτη είσοδος σε κάθε αντίστοιχη λειτουργική μονάδα, ενώ το περιεχόμενο των μονάδων αποθήκευσης 130-136 μπορεί αντίστοιχα να παρέχεται στη δεύτερη είσοδο των λειτουργικών μονάδων 140-146. Το αποτέλεσμα της επεξεργασίας που πραγματοποιείται από τις λειτουργικές μονάδες 140-146 μεταφέρεται στις μονάδες αποθήκευσης 150-156, OL οποίες μπορούν για παράδειγμα να αποθηκεύουν τα αντίστοιχα στοιχεία δεδομένων σε έναν καταχωρητή. Ο πολυπλέκτης 148 και κάθε μια από τις λειτουργικές μονάδες 140-146 ελέγχονται από τα σήματα ελέγχου που απεικονίζονται ώστε να επιτρέπεται η προαναφερθείσα ευέλικτη επιλογή των εισόδων. It should be appreciated that although the example shown in Figure 4B gives a specific example of a selected (repeated) data item used by the contents of register B, in general it is clearly preferred that a flexible multi-purpose data processing arrangement be capable of any data item in register B to be used as an input to any of the functional units 120-126. Figures 5A and 5B schematically illustrate two ways in which this can be achieved. Figure 5A shows a set of storage segments 130, 132, 134 and 136 which for example can store respective data items in a register, connected to a set of functional units 140, 142, 144 and 146 (which can for example be mixed multiplication-addition units). The connections between storage units 130-136 and functional units 140-146 are shown in Figure 5A to be both direct and routed through multiplexer 148. Accordingly, this configuration provides that the content of any of the independent storage units 130- 136 may be provided to any of the functional units 140-146, as a first input to each respective functional unit, while the contents of the storage units 130-136 may correspondingly be provided to the second input of the functional units 140-146. The result of the processing carried out by the operating units 140-146 is transferred to the storage units 150-156, OL which can for example store the corresponding data items in a register. Multiplexer 148 and each of the functional units 140-146 are controlled by the control signals shown to allow the aforementioned flexible selection of inputs.

Το Σχήμα 5Β απεικονίζει σχηματικά μια εναλλακτική διαμόρφωση αυτής του Σχήματος 5Α στην οποία κάθε μια από τις μονάδες αποθήκευσης 160, 162, 164 και 166 συνδέεται απευθείας με κάθε μια από τις λειτουργικές μονάδες 170, 172, 174 και 176, κάθε μια από τις οποίες ελέγχεται από ένα αντίστοιχο σήμα ελέγχου και το αποτέλεσμα των οποίων μεταβιβάζεται στις αντίστοιχες μονάδες αποθήκευσης 180, 182, 184 και 186. Η προσέγγιση που λαμβάνεται από το Σχήμα 5Β αποτρέπει την ανάγκη, και την καθυστέρηση που σχετίζεται με αυτή, χρήσης του πολυπλέκτη 148 του παραδείγματος του Σχήματος 5Β, όμως με αντίτιμο την πιο σύνθετη καλωδίωση που απαιτείται. KaL τα δύο παραδείγματα του Σχήματος 5Α και του Σχήματος 5Β συνεπώς απεικονίζουν την πολυπλοκότητα που μπορεί να προκύπτει όταν γίνεται η προσπάθεια υλοποίησης ενός πλήρως ευέλικτου και διαμορφώσιμου συνόλου μονάδων αποθήκευσης εισόδου, λειτουργικών μονάδων και μονάδων αποθήκευσης εξόδου, συγκεκριμένα στην περίπτωση στην οποία αυξάνεται ο αριθμός των σχετικών στοιχείων δεδομένων. Για παράδειγμα, εξετάζοντας το παράδειγμα του Σχήματος 5Α και διπλασιάζοντας τον αριθμό των μονάδων αποθήκευσης εισόδου, λειτουργικών μονάδων και μονάδων αποθήκευσης εξόδου σε οκτώ κάθε μια, θα είχε ως αποτέλεσμα την ανάγκη για έναν οκταπλό πολυπλέκτη εισόδου. Αφετέρου μια τέτοια οκταπλή υλοποίηση που χρησιμοποιεί την προσέγγιση του Σχήματος 5Β θα απαιτούσε οκτώ διαδρομές από κάθε μονάδα αποθήκευσης εισόδου προς κάθε λειτουργική μονάδα, δηλ. 64 διαδρομές σε σύνολο, όπως και η απαίτηση κάθε λειτουργική μονάδα να μπορεί να λαμβάνει οκτώ διαφορετικές εισόδους και να επιλέγει ανάμεσά τους. Θα γίνει επομένως κατανοητό ότι η προσέγγιση που λαμβάνεται από τις υλοποιήσεις των υφιστάμενων τεχνικών οι οποίες επαναχρησιμοποιούν τα τμήματα δεδομένων (π.χ. ομάδες δεδομένων) σε ένα εύρος καταχωρητή επιτρέπει την επιβολή περιορισμών στην πολλαπλότητα και την πολυπλοκότητα των εισόδων προς τις απαιτούμενες μονάδες ελέγχου. Επιπλέον ωστόσο, θα πρέπει να σημειωθεί ότι στα προαναφερθέντα πλαίσια SVE/ASIMD, η ομαδοποιημένη εντολή στοιχείο προς διάνυσμα του Σχήματος 4Α μπορεί να αναμένεται ότι θα είναι υλοποιήσιμη ως μια μοναδική μικρο-λειτουργία, χωρίς τον επιπλέον λανθάνοντα χρόνο σε σύγκριση με την ισοδύναμη κανονική πράξη διανύσματος, επειδή η επιλογή και η επανάληψη παραμένει εντός ενός κόκκου διανύσματος SVE, ενώ το ASIMD έχει ήδη τους μηχανισμούς για κάτι τέτοιο εντός των 128 bit (π.χ. Figure 5B schematically illustrates an alternative configuration to that of Figure 5A in which each of the storage units 160, 162, 164 and 166 is directly connected to each of the functional units 170, 172, 174 and 176, each of which is controlled by a corresponding control signal and the result of which is passed to the respective storage units 180, 182, 184 and 186. The approach taken by Figure 5B avoids the need, and the delay associated therewith, to use the multiplexer 148 of the example of Figure 5B, but at the cost of the more complex wiring required. KaL the two examples of Figure 5A and Figure 5B therefore illustrate the complexity that can arise when attempting to implement a fully flexible and configurable set of input storage units, functional units and output storage units, specifically in the case where the number of relevant data items. For example, looking at the example of Figure 5A and doubling the number of input storage units, functional units, and output storage units to eight each would result in the need for an eight-fold input multiplexer. On the other hand such an octet implementation using the approach of Figure 5B would require eight paths from each input storage unit to each functional unit, i.e. 64 paths in total, as well as requiring each functional unit to be able to receive eight different inputs and select between them. It will therefore be understood that the approach taken by implementations of the existing techniques which reuse data segments (eg, groups of data) across a register range allows limitations to be imposed on the multiplicity and complexity of inputs to the required control units. Additionally, however, it should be noted that in the aforementioned SVE/ASIMD frameworks, the grouped element-to-vector instruction of Figure 4A can be expected to be implementable as a single micro-operation, without the additional latency compared to the equivalent normal operation. vector, because selection and iteration remains within an SVE vector grain, whereas ASIMD already has the mechanisms for doing so within 128 bits (e.g.

χρησιμοποιώντας την εντολή «FMLA (ανά στοιχείο)»). Ως εκ τούτου η εντολή που δείχνεται στο Σχήμα 4Α μπορεί να αναμένεται ότι είναι πιο αποτελεσματική από μια ακολουθία ανεξάρτητων εντολών επανάληψης (DUP) ακολουθούμενη από μια κανονική πράξη διανύσματος. using the command “FMLA (by item)”). Therefore the instruction shown in Figure 4A can be expected to be more efficient than a sequence of independent repetition (DUP) instructions followed by a normal vector operation.

Τα Σχήματα 6Α και 6Β απεικονίζουν σχηματικά δύο περαιτέρω παραδείγματα της εντολής επεξεργασίας δεδομένων για την οποία εξετάστηκε ένα παράδειγμα αναφορικά με τα Σχήματα 4Α και 4Β. Στο παράδειγμα του Σχήματος 6Α η εντολή 200 περιλαμβάνει ένα λειτουργικό κώδικα 202, έναν πρώτο προσδιοριστή καταχωρητή 204, ένα δεύτερο προσδιοριστή καταχωρητή 206, μια άμεση τιμή δείκτη 208 και έναν προσδιοριστή καταχωρητή αποτελεσμάτων 210. Το κατώτερο τμήμα του Σχήματος 6Α απεικονίζει σχηματικά την εκτέλεση αυτής της εντολής 200, όπου επιλέγεται το καθορισμένο στοιχείο δεδομένων (δείκτης 1) εντός ενός επαναλαμβανόμενου υπο-τμήματος (ομάδα δεδομένων) του καταχωρητή Β και αυτό το στοιχείο δεδομένων πολλαπλασιάζεται με το διάνυσμα που αναπαρίσταται από την αντίστοιχη ομάδα δεδομένων του καταχωρητή Α, για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων οι οποίες συμπληρώνουν το περιεχόμενο του καταχωρητή αποτελεσμάτων. Στο Σχήμα 6Α η πράξη που πραγματοποιείται ανάμεσα στα αντίστοιχα στοιχεία δεδομένων και τις ομάδες δεδομένων δείχνεται από το γενικό λειτουργικό σύμβολο ®το οποίο υποδηλώνει ότι μολονότι το παραπάνω παράδειγμα αφορά σε έναν πολλαπλασιασμό, και άλλες πράξεις είναι δυνατές και εξετάζονται. Figures 6A and 6B schematically illustrate two further examples of the data processing command of which an example was considered with reference to Figures 4A and 4B. In the example of Figure 6A the instruction 200 includes an opcode 202, a first register specifier 204, a second register specifier 206, an immediate pointer value 208, and a result register specifier 210. The lower portion of Figure 6A schematically illustrates the execution of this command 200, where the specified data item (pointer 1) within a repeating sub-segment (data group) of register B is selected and this data item is multiplied by the vector represented by the corresponding data group of register A, to generate corresponding groups of result data which complete the content of the result register. In Figure 6A the operation performed between the corresponding data items and groups of data is shown by the general operation symbol ® which indicates that although the above example concerns a multiplication, other operations are possible and considered.

Οι παρούσες τεχνικές δεν περιορίζονται σε μια τέτοια εντολή επεξεργασίας δεδομένων η οποία προσδιορίζει μόνο ένα διάνυσμα και το Σχήμα 6Β δείχνει ένα παράδειγμα στο οποίο παρέχεται μια εντολή επεξεργασίας δεδομένων 220 η οποία περιλαμβάνει ένα λειτουργικό κώδικα 222, έναν πρώτο προσδιοριστή καταχωρητή 224, ένα δεύτερο προσδιοριστή καταχωρητή 226, έναν τρίτο προσδιοριστή καταχωρητή 228 και έναν προσδιοριστή δείκτη 230. Το κατώτερο τμήμα του Σχήματος 6Β δείχνει, με παρόμοιο τρόπο με αυτόν που δείχνεται στο Σχήμα 6Α, τον τρόπο με τον οποίο το επιλεγμένο στοιχείο δεδομένων (bl) σε έναν πρώτο καταχωρητή (Β) συνδυάζεται με τις ομάδες δεδομένων (διανύσματα) που λαμβάνονται από τους καταχωρητές A και C και παράγεται μια τιμή αποτελέσματος. Απλά για τους σκοπούς επεξήγησης μιας παραλλαγής, ο καταχωρητής αποτελεσμάτων στο παράδειγμα του Σχήματος 6Β δεν προσδιορίζεται στην εντολή 220, αλλά αντίθετα χρησιμοποιείται προσωρινά ένας προεπιλεγμένος (προκαθορισμένος) καταχωρητής αποτελεσμάτων για αυτό το σκοπό. Επιπλέον, μολονότι ο συνδυασμός των τμημάτων δείχνεται στο Σχήμα 6Β και πάλι μέσω του γενικού λειτουργικού συμβόλου , θα πρέπει και πάλι να εκτιμηθεί ότι αυτή η πράξη θα μπορούσε να πάρει ένα πλήθος μορφών ανάλογα τη συγκεκριμένη εντολή που εκτελείται και μολονότι αυτή μπορεί πράγματι να είναι μια πράξη πολλαπλασιασμού, θα μπορούσε επίσης να είναι οποιοσδήποτε άλλος τύπος αριθμητικής πράξης (πρόσθεση, αφαίρεση κλπ.) ή θα μπορούσε επίσης να είναι μια λογική πράξη (AND, XOR, κλπ.). The present techniques are not limited to such a data processing instruction specifying only one vector, and Figure 6B shows an example in which a data processing instruction 220 is provided which includes an operation code 222, a first register specifier 224, a second register specifier 226, a third register designator 228, and a pointer designator 230. The lower portion of Figure 6B shows, in a manner similar to that shown in Figure 6A, how the selected data element (bl) in a first register (B ) is combined with the groups of data (vectors) obtained from the A and C registers and a result value is produced. Simply for the purpose of illustrating a variation, the result register in the example of Figure 6B is not specified in instruction 220, but instead a default (predefined) result register is temporarily used for this purpose. Furthermore, although the combination of parts is shown in Figure 6B again by means of the generic functional symbol , it should again be appreciated that this operation could take a number of forms depending on the particular command being performed and although this may indeed be a multiplication operation, it could also be any other type of arithmetic operation (addition, subtraction, etc.) or it could also be a logic operation (AND, XOR, etc.).

Το Σχήμα 7Α απεικονίζει σχηματικά ένα άλλο παράδειγμα εντολής επεξεργασίας δεδομένων και το Σχήμα 7Β δείχνει την υλοποίηση της εκτέλεσης αυτής της εντολής επεξεργασίας δεδομένων σε μια υλοποίηση. Αυτή η εντολή επεξεργασίας δεδομένων παρέχεται για την υποστήριξη πράξεων στοιχείου προς διάνυσμα για σύνθετους αριθμούς και αναφέρεται στο παρόν ως εντολή FCMLA (fused complex multiply-accumulate ή συνδυασμένη σύνθετη εντολή πολλαπλασιασμού-συσσώρευσης). Όπως δείχνεται στο Σχήμα 7Α το παράδειγμα εντολής FCMLA 220 περιλαμβάνει ένα λειτουργικό κώδικα 222, έναν προσδιοριστή περιστροφής 224, έναν πρώτο προσδιοριστή καταχωρητή (Α) 226, ένα δεύτερο προσδιοριστή καταχωρητή (Β) 228, έναν προσδιοριστή δείκτη 230 και έναν προσδιοριστή καταχωρητή συσσώρευσης 232. Το Σχήμα 7Β εικονίζει ότι η εκτέλεση αυτής της εντολής προκαλεί την πρόσβαση στις ομάδες δεδομένων στον καταχωρητή A και τον καταχωρητή Β, όπου η ομάδα δεδομένων σε αυτή την εντολή ορίζει έναν αριθμό σύνθετων στοιχείων. Ένα σύνθετο στοιχείο αναπαρίσταται από ένα ζεύγος στοιχείων (βλέπε ετικέτα «σύνθετο ζεύγος» στο Σχήμα 7Β). Στο παράδειγμα του Σχήματος 7Β, τα σύνθετα ζεύγη του καταχωρητή Β είναι τα (b3,b2) και (b1,b0), και επιλέγεται το σύνθετο ζεύγος (b3,b2). Τα σύνθετα ζεύγη του καταχωρητή Α είναι (a7,a6), (a5,a4), (a3,a2) και (a1,a0). Τα σύνθετα ζεύγη που επελέγησαν από τον καταχωρητή Α και Β (όλα τα σύνθετα ζεύγη από τον καταχωρητή Α και ένα επιλεγμένο σύνθετο ζεύγος από τις ομάδες δεδομένων του καταχωρητή Β που προσδιορίζεται από το δείκτη 230) μεταβιβάζονται στις σύνθετες συνδυασμένες μονάδες πολλαπλασιασμού-συσσώρευσης (CFMA) 234, 236, 238, 240, όπου κάθε σύνθετο ζεύγος από τον καταχωρητή Α διαμορφώνει μια είσοδο προς κάθε μια από τις μονάδες CFMA αντίστοιχα, ενώ το επιλεγμένο σύνθετο ζεύγος από μια ομάδα δεδομένων στον καταχωρητή Β διαμορφώνει μια άλλη είσοδο στις μονάδες CFMA 234 και 236 ενώ το άλλο επιλεγμένο σύνθετο ζεύγος από την επόμενη ομάδα δεδομένων στον καταχωρητή Β διαμορφώνει μια άλλη είσοδο στις μονάδες CFMA 238 και 240. Τα αντίστοιχα αποτελέσματα των σύνθετων συνδυασμένων πράξεων πολλαπλασιασμού-συσσώρευσης συσσωρεύονται ως αντίστοιχα σύνθετα ζεύγη στον καθορισμένο καταχωρητή συσσώρευσης, κάθε ένα από τα οποία διαμορφώνουν την τρίτη είσοδο σε κάθε μια από τις αντίστοιχες μονάδες CFMA. Η παράμετρος περιστροφής 224 (η οποία προσδιορίζεται προαιρετικά στην εντολή) είναι μια τιμή ελέγχου 2 bit η οποία αλλάζει την πράξη ως ακολούθως (απλά εμφανίζεται το πρώτο ζεύγος, όπου (c1,c0) είναι η τιμή του συσσωρευτή πριν την πράξη): Figure 7A schematically illustrates another example of a data processing command, and Figure 7B shows the implementation of executing this data processing command in one embodiment. This data processing instruction is provided to support element-to-vector operations for complex numbers and is referred to herein as the fused complex multiply-accumulate (FCMLA) instruction. As shown in Figure 7A the example FCMLA instruction 220 includes an opcode 222, a rotation specifier 224, a first register specifier (A) 226, a second register specifier (B) 228, a pointer specifier 230, and an accumulation register specifier 232. Figure 7B illustrates that execution of this instruction causes access to the groups of data in register A and register B, where the group of data in this instruction defines a number of complex elements. A compound element is represented by a pair of elements (see label “complex pair” in Figure 7B). In the example of Figure 7B, the complex pairs of register B are (b3,b2) and (b1,b0), and the complex pair (b3,b2) is selected. The complex pairs of register A are (a7,a6), (a5,a4), (a3,a2) and (a1,a0). The composite pairs selected from register A and B (all composite pairs from register A and a selected composite pair from register B data groups identified by pointer 230) are passed to the composite combined multiply-accumulate (CFMA) units. 234, 236, 238, 240, where each composite pair from register A configures one input to each of the CFMA modules respectively, while the selected composite pair from a group of data in register B configures another input to CFMA modules 234 and 236 while the other selected complex pair from the next group of data in register B forms another input to CFMA units 238 and 240. The corresponding results of the complex combined multiply-accumulate operations are accumulated as corresponding complex pairs in the designated accumulation register, each of which form the third input to each of the respective CFMA units. The rotation parameter 224 (which is optionally specified in the command) is a 2-bit control value that changes the operation as follows (just the first pair is displayed, where (c1,c0) is the value of the accumulator before the operation):

Το Σχήμα 8 δείχνει μια ακολουθία βημάτων τα οποία ακολουθούνται σύμφωνα με τη μέθοδο μιας υλοποίησης. Η ροή ξεκινάει στο βήμα 250 όπου αποκωδικοποιείται μια εντολή φόρτωσης δεδομένων (προετοιμασία) και στο βήμα 260 παράγονται τα αντίστοιχα σήματα ελέγχου. Αυτά τα σήματα ελέγχου προκαλούν στη συνέχεια, στο βήμα 270, τη φόρτωση μιας καθορισμένης ομάδας δεδομένων από τη μνήμη από μια θέση καθορισμένη από την εντολή (βλέπε για παράδειγμα τα Σχήματα 2 και 3 για παραδείγματα αυτού) και με ένα μέγεθος καθορισμένο από τον καταχωρητή ελέγχου. Τα σήματα ελέγχου στη συνέχεια προκαλούν περαιτέρω την επανάληψη της φορτωθείσας ομάδας δεδομένων σε όλο το εύρος του διανύσματος στο βήμα 280 ενός καθορισμένου καταχωρητή προορισμού (προσδιορίζεται στην εντολή φόρτωσης δεδομένων (προετοιμασία)). Η εκτέλεση της εντολής φόρτωσης δεδομένων στη συνέχεια ολοκληρώνεται. Η ροή συνεχίζει στο βήμα 290 όπου αποκωδικοποιείται μια εντολή επεξεργασίας δεδομένων στοιχείου προς διάνυσμα. Αντίστοιχα σήματα ελέγχου παράγονται στη συνέχεια στο βήμα 300 και μετέπειτα στο βήμα 310 η πράξη που προσδιορίζεται από την εντολή στοιχείου προς διάνυσμα πραγματοποιείται στη συνέχεια μεταξύ ενός δεικτοδοτού μενού στοιχείου σε κάθε ομάδα δεδομένων στον πρώτο καταχωρητή που προσδιορίζεται στην εντολή και κάθε στοιχείου δεδομένων σε κάθε ομάδα δεδομένων ενός δεύτερου καταχωρητή που προσδιορίζεται στην εντολή. Figure 8 shows a sequence of steps followed according to the method of one embodiment. Flow begins at step 250 where a load data command (preparation) is decoded and at step 260 the corresponding control signals are generated. These control signals then cause, in step 270, a specified group of data to be loaded from memory from a location specified by the instruction (see for example Figures 2 and 3 for examples of this) and with a size specified by the control register . The control signals then further cause the loaded group of data to be iterated over the full range of the vector in step 280 of a specified destination register (specified in the load data (prepare) command). Execution of the load data command then completes. Flow continues to step 290 where an element-to-vector data processing command is decoded. Corresponding control signals are then generated in step 300 and subsequently in step 310 the operation specified by the item-to-vector instruction is then performed between a menu item pointer in each group of data in the first register specified in the instruction and each data item in each group given a second register specified in the command.

Το Σχήμα 9Α απεικονίζει σχηματικά την εκτέλεση μιας διαφορετικής εντολής επεξεργασίας δεδομένων σύμφωνα με τις παρούσες τεχνικές. Το Σχήμα 9Β δείχνει δύο παραδείγματα μιας τέτοιας εντολής, με το πρώτο 320 να περιλαμβάνει ένα λειτουργικό κώδικα 322, έναν πρώτο προσδιοριστή καταχωρητή 324, ένα δεύτερο προσδιοριστή καταχωρητή 326 και (προαιρετικά) έναν προσδιοριστή καταχωρητή εξόδου 328. Το δεύτερο παράδειγμα εντολής επεξεργασίας δεδομένων 330 που δείχνεται στο Σχήμα 9Β περιλαμβάνει ένα λειτουργικό κώδικα 332, έναν προσδιοριστή καταχωρητή εξόδου 334 και έναν προσδιοριστή καταχωρητή συσσωρευτή 336. Αυτά επεξηγούνται αναφορικά με το Σχήμα 9Α. Ο πρώτος και ο δεύτερος καταχωρητής προέλευσης που προσδιορίζονται από την εντολή επεξεργασίας δεδομένων δείχνονται στο επάνω μέρος του Σχήματος 9Α, κάθε ένας να υποδιαιρείται σε τμήματα στοιχείου δεδομένων ομαδοποιημένα σε λωρίδες. Σε απόκριση της εντολής επεξεργασίας δεδομένων η διάταξη επεξεργασίας δεδομένων (δηλ. το κύκλωμα επεξεργασίας υπό τον έλεγχο των σημάτων ελέγχου που παράγονται από το κύκλωμα αποκωδικοποιητή) ανακτά ένα σύνολο στοιχείων δεδομένων από κάθε έναν από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης. Στο παράδειγμα που δείχνεται στο Σχήμα 9Α ανακτάται ένα σύνολο τεσσάρων στοιχείων δεδομένων από κάθε λωρίδα από τον πρώτο και το δεύτερο καταχωρητή προέλευσης. Αυτά συνδυάζονται ανά ζεύγη στις λειτουργικές μονάδες 340, 342, 344 και 346, οι οποίες διατάσσονται ώστε να πραγματοποιούν πράξεις πολλαπλασιασμού. Τα αποτελέσματα αυτών των πράξεων πολλαπλασιασμού συνδυάζονται στη μονάδα άθροισης 348 και τελικά η τιμή του αποτελέσματος που παράγεται με αυτό τον τρόπο εγγράφεται στην αντίστοιχη λωρίδα ενός καταχωρητή εξόδου. Με άλλα λόγια, εκτελείται μια πράξη «κινητής υποδιαστολής». Η επισήμανση των λωρίδων στο Σχήμα 9Α εικονίζει το γεγονός ότι οι τέσσερις μονάδες πολλαπλασιασμού 340-346 και η μονάδα άθροισης 348 αντιπροσωπεύουν μόνο ένα σύνολο τέτοιων μονάδων που παρέχονται στο κύκλωμα επεξεργασίας της διάταξης επεξεργασίας δεδομένων και αυτές επαναλαμβάνονται αντίστοιχα ώστε να ταυτίζονται με κάθε μια από τις λωρίδες τις οποίες μπορεί να χειρίζεται η διάταξη επεξεργασίας δεδομένων για κάθε καταχωρητή. Ο αριθμός λωρίδων σε κάθε καταχωρητή εσκεμμένα δεν εικονίζεται στο Σχήμα 9Α σε αντιστοιχία με το γεγονός ότι ο αριθμός λωρίδων μπορεί να ορίζεται ελεύθερα ανάλογα το σχετικό πλάτος των στοιχείων δεδομένων, τον αριθμό των στοιχείων δεδομένων σε κάθε λωρίδα και το διαθέσιμο πλάτος καταχωρητών. Μπορεί να παρατηρείται συνεπώς ότι η εντολή συμπεριφέρεται παρόμοια με μια πράξη ίδιου πλάτους στο πλάτος του συσσωρευτή (π.χ. σε ένα παράδειγμα τιμών 8 bit (για παράδειγμα, ακέραιοι) σε λωρίδες 32 bit, συμπεριφέρεται παρόμοια με μια πράξη ακεραίων 32 bit). Ωστόσο, εντός κάθε λωρίδας, αντί της εκτέλεσης ενός πολλαπλασιασμού 32x32, οι λωρίδες προέλευσης 32 bit θεωρούνται ότι αποτελούνται από τέσσερις διακριτές τιμές 8 bit, και μια πράξη κινητής υποδιαστολής πραγματοποιείται κατά μήκος αυτών των δύο «μίνι-διανυσμάτων». Το αποτέλεσμα συσσωρεύεται στη συνέχεια στην αντίστοιχη λωρίδα 32 bit από την τιμή του συσσωρευτή. Θα εκτιμηθεί ότι το σχήμα απεικονίζει σαφώς μόνο την πράξη εντός μιας μοναδικής λωρίδας 32 bit. Εξετάζοντας ένα παράδειγμα ενός μήκους διανύσματος 128 bit, η εντολή ουσιαστικά θα πραγματοποιούσε 32 πράξεις (16 πολλαπλασιασμούς και 16 προσθέσεις), η οποία είναι 3-4 φορές πιο πυκνή από συγκρίσιμες σύγχρονες εντολές. Σε περίπτωση υλοποίησης με μια αρχιτεκτονική η οποία επιτρέπει διανύσματα μεγαλύτερου μήκους, όπως οι Επεκτάσεις Κλιμακούμενων Διανυσμάτων (SVE) που παρέχονται από την ARM<®>Limited of Cambridge, Ηνωμένο Βασίλειο, αυτά τα διανύσματα μεγαλύτερου μήκους θα αύξαναν την ουσιαστική απαρίθμηση πράξεων ανάλογα. Περαιτέρω θα πρέπει να εκτιμηθεί ότι μολονότι δείχνεται ένα συγκεκριμένο παράδειγμα ενός εύρους λωρίδας 32 bit, είναι δυνατοί πολλοί διαφορετικοί συνδυασμοί εύρους (τόσο στην είσοδο όσο και στην έξοδο), π.χ. 16 bit x 16 bit -> 64 bit ή 16 bit χ 16 bit -> 32bit. Προτείνονται επίσης μορφές «ανά στοιχείο» (όπου, για παράδειγμα, μια μοναδική λωρίδα 32 bit επαναλαμβάνεται για έναν από τους τελεστές). Το διακεκομμένο βέλος που συνενώνει τον καταχωρητή εξόδου με το δεύτερο καταχωρητή στο Σχήμα 9Α απεικονίζει σχηματικά το γεγονός ότι ο δεύτερος καταχωρητής μπορεί στην πράξη να είναι ο καταχωρητής εξόδου, κάνοντας δυνατή την πραγματοποίηση μιας πράξης συσσώρευσης σε σχέση με το περιεχόμενο αυτού του καταχωρητή. Επιστρέφοντας στην εξέταση του Σχήματος 9Β, ας σημειωθεί ότι εδώ απεικονίζονται δύο διακριτές εντολές. Σε γενικές γραμμές, η πρώτη εικονιζόμενη εντολή μπορεί να προκαλεί την εκτέλεση όλων των πράξεων που απεικονίζονται στο Σχήμα 9Α, όμως παρέχονται επίσης υλοποιήσεις στις οποίες μόνο η πρώτη εικονιζόμενη εντολή στο Σχήμα 9Β προκαλεί την εκτέλεση των πράξεων πολλαπλασιασμού και άθροισης, ενώ η μετέπειτα πράξη συσσώρευσης που εισάγει το αποτέλεσμα στον καταχωρητή εξόδου και το εφαρμόζει στον καταχωρητή συσσωρευτή μπορεί να εκτελείται από τη δεύτερη εικονιζόμενη εντολή η οποία έχει συγκεκριμένα αυτό το σκοπό. Figure 9A schematically illustrates the execution of a different data processing command in accordance with the present techniques. Figure 9B shows two examples of such an instruction, the first 320 including an opcode 322, a first register specifier 324, a second register specifier 326, and (optionally) an output register specifier 328. The second example data processing instruction 330 which shown in Figure 9B includes an opcode 332, an output register identifier 334, and an accumulator register identifier 336. These are explained with reference to Figure 9A. The first and second source registers identified by the data processing instruction are shown at the top of Figure 9A, each subdivided into data element segments grouped into strips. In response to the data processing command the data processing device (ie, the processing circuitry under control of the control signals generated by the decoder circuitry) retrieves a set of data items from each of the first source register and the second source register. In the example shown in Figure 9A a set of four data items is retrieved from each lane from the first and second source registers. These are combined in pairs in the functional units 340, 342, 344 and 346, which are arranged to perform multiplication operations. The results of these multiplication operations are combined in summing unit 348 and finally the value of the result thus produced is written to the corresponding lane of an output register. In other words, a "floating point" operation is performed. The labeling of the lanes in Figure 9A illustrates the fact that the four multiplying units 340-346 and the summing unit 348 represent only one set of such units provided in the processing circuitry of the data processing device and these are respectively repeated to identify each of the lanes that the data processing device can handle for each register. The number of lanes in each register is intentionally not shown in Figure 9A in accordance with the fact that the number of lanes can be freely defined depending on the relative width of the data elements, the number of data elements in each lane, and the available width of registers. It can therefore be observed that the instruction behaves similarly to an operation of the same width on the width of the accumulator (eg, in an example of 8-bit values (for example, integers) on 32-bit strips, it behaves similarly to a 32-bit integer operation). However, within each strip, instead of performing a 32x32 multiplication, the source 32-bit strips are considered to consist of four distinct 8-bit values, and a floating-point operation is performed across these two "mini-vectors". The result is then accumulated into the corresponding 32-bit lane by the value of the accumulator. It will be appreciated that the figure clearly illustrates only the operation within a single 32-bit strip. Looking at an example of a 128-bit length vector, the instruction would essentially perform 32 operations (16 multiplications and 16 additions), which is 3-4 times denser than comparable modern instructions. If implemented with an architecture that allows longer vectors, such as the Scalable Vector Extensions (SVE) provided by ARM<®>Limited of Cambridge, United Kingdom, these longer vectors would increase the actual operation enumeration accordingly. It should further be appreciated that although a specific example of a 32-bit bandwidth is shown, many different combinations of bandwidths (both input and output) are possible, e.g. 16bit x 16bit -> 64bit or 16bit x 16bit -> 32bit. "Per element" formats (where, for example, a single 32-bit strip is repeated for one of the operands) are also suggested. The dashed arrow joining the output register to the second register in Figure 9A schematically illustrates the fact that the second register may actually be the output register, making it possible to perform an accumulation operation against the contents of that register. Returning to an examination of Figure 9B, note that two distinct commands are depicted here. In general, the first illustrated instruction may cause all of the operations illustrated in Figure 9A to be performed, but embodiments are also provided in which only the first illustrated instruction in Figure 9B causes the multiplication and addition operations to be performed, while the subsequent accumulation operation which enters the result into the output register and applies it to the accumulator register can be performed by the second illustrated instruction which specifically has this purpose.

Το Σχήμα 10 απεικονίζει σχηματικά ορισμένες παραλλαγές σε υλοποιήσεις της εκτέλεσης των εντολών επεξεργασίας δεδομένων που δείχνονται στο Σχήμα 9Β. Εδώ, για λόγους σαφήνειας της επεξήγησης, ο αριθμός των στοιχείων δεδομένων στα οποία πραγματοποιείται πρόσβαση σε κάθε έναν από τους δύο καταχωρητές προέλευσης 350 και 352 μειώνεται στα δύο. Ανάλογα παρέχονται μόνο δύο μονάδες πολλαπλασιασμού 354 και 356 (για κάθε λωρίδα) και μια μονάδα άθροισης 358 (για κάθε λωρίδα). Ανάλογα τη συγκεκριμένη εντολή επεξεργασίας δεδομένων που εκτελείται, το αποτέλεσμα της πράξης «κινητής υποδιαστολής» μπορεί να εγγράφεται σε έναν καθορισμένο καταχωρητή εξόδου 360 (εάν προσδιορίζεται) ή μπορεί εναλλακτικά να εγγράφεται σε έναν καταχωρητή συσσώρευσης 362 (εάν προσδιορίζεται έτσι). Στη δεύτερη περίπτωση, στην οποία ορίζεται ένας καταχωρητής συσσώρευσης, το περιεχόμενο αυτού του καταχωρητή συσσώρευσης μπορεί να λαμβάνεται ως μια επιπλέον είσοδος προς τη μονάδα άθροισης 358, με τρόπο ώστε να είναι δυνατή η εκτέλεση της συνεχιζόμενης συσσώρευσης. Figure 10 schematically illustrates certain variations in implementations of executing the data processing instructions shown in Figure 9B. Here, for clarity of explanation, the number of data elements accessed in each of the two source registers 350 and 352 is reduced to two. Accordingly only two multiplication units 354 and 356 (for each lane) and one summation unit 358 (for each lane) are provided. Depending on the particular data processing instruction being executed, the result of the floating point operation may be written to a designated output register 360 (if specified) or may alternatively be written to an accumulation register 362 (if so specified). In the second case, in which an accumulation register is defined, the contents of that accumulation register may be taken as an additional input to the adder 358, so that continued accumulation can be performed.

Το Σχήμα 11 απεικονίζει σχηματικά ένα πιο σύνθετο παράδειγμα στο οποίο δύο καταχωρητές 128 bit 380 και 382 είναι οι καταχωρητές προέλευσης για τη μια από τις προαναφερθείσες εντολές πράξεων επεξεργασίας δεδομένων «κινητής υποδιαστολής». Κάθε ένας από αυτούς τους καταχωρητές προέλευσης 380 και 382 επεξεργάζεται όσον αφορά σε τέσσερις ανεξάρτητες λωρίδες (λωρίδες 0-3) και το αντίστοιχο περιεχόμενο αυτών των λωρίδων μεταφέρεται σε μνήμες προσωρινής αποθήκευσης 384-398 ώστε το αντίστοιχο περιεχόμενο της ίδιας λωρίδας από τους δύο καταχωρητές προέλευσης να μεταφερθούν σε γειτονικές μνήμες προσωρινής αποθήκευσης. Εντός κάθε μνήμης προσωρινής αποθήκευσης τα στοιχεία δεδομένων του περιεχομένου (τέσσερα στοιχεία δεδομένων σε κάθε μια σε αυτό το παράδειγμα) παρέχουν στη συνέχεια τις αντίστοιχες εισόδους προς ένα σύνολο τεσσάρων μονάδων πολλαπλασιασμού που παρέχονται για κάθε λωρίδα 400, 402, 404 και 406. Η έξοδος αυτών τροφοδοτείται στη συνέχεια σε αντίστοιχες μονάδες άθροισης 408, 410, 412 και 414 και η έξοδος κάθε μιας από αυτές τις μονάδες άθροισης μεταβιβάζεται στην αντίστοιχη λωρίδα ενός καταχωρητή συσσώρευσης 416. Οι αντίστοιχες λωρίδες του καταχωρητή συσσώρευσης 416 παρέχουν το δεύτερο τύπο εισόδου στις μονάδες άθροισης (συσσωρευτές) 408-414. Το Σχήμα 12 δείχνει την ίδια βασική διαμόρφωση με αυτή του Σχήματος 11 και πράγματι τα ίδια υπο-τμήματα αναπαρίστανται με τα ίδια αριθμητικά αναφοράς και δεν περιγράφονται και πάλι εδώ. Η διαφορά μεταξύ του Σχήματος 12 και του Σχήματος 11 είναι ότι μολονότι χρησιμοποιείται το περιεχόμενο κάθε μιας από τις τέσσερις λωρίδες του καταχωρητή 128 bit 380 (καταχωρητής προέλευσης), χρησιμοποιείται μόνο το περιεχόμενο μιας πρώτης λωρίδας από το δεύτερο καταχωρητή προέλευσης 128 bit 382 και αυτό το περιεχόμενο επαναλαμβάνεται σε κάθε μια από τις μονάδες προσωρινής αποθήκευσης 386, 390, 394 και 398. Αυτή η λωρίδα, η οποία επιλέγεται ως η (μόνη) λωρίδα η οποία παρέχει περιεχόμενο από τον καταχωρητή προέλευσης 382 στο παρόν παράδειγμα, προσδιορίζεται από την εντολή. Θα εκτιμηθεί ότι δε συσχετίζεται κάποια σημαντικότητα με τη συγκεκριμένη λωρίδα (λωρίδα 0), η οποία έχει επιλεγεί για την επεξήγηση του παρόντος παραδείγματος και οποιαδήποτε από τις άλλες λωρίδες του καταχωρητή προέλευσης 382 θα μπορούσε εξίσου να προσδιορίζεται. Ο προσδιορισμός της επιλεγμένης λωρίδας πραγματοποιείται από τον ορισμό της τιμής δείκτη στην εντολή, όπως δείχνεται για παράδειγμα στο παράδειγμα εντολής του Σχήματος 4Α. Figure 11 schematically illustrates a more complex example in which two 128-bit registers 380 and 382 are the source registers for one of the aforementioned "floating point" data manipulation instructions. Each of these source registers 380 and 382 is processed in terms of four independent lanes (lanes 0-3) and the respective contents of these lanes are transferred to buffer memories 384-398 so that the corresponding contents of the same lane from the two source registers to be moved to adjacent caches. Within each buffer the content data elements (four data elements each in this example) then provide the corresponding inputs to a set of four multiplier units provided for each lane 400, 402, 404 and 406. The output of these is then fed to respective summing units 408, 410, 412 and 414 and the output of each of these summing units is passed to the corresponding lane of an accumulation register 416. The respective lanes of the accumulation register 416 provide the second type of input to the summing units (accumulators ) 408-414. Figure 12 shows the same basic configuration as Figure 11 and indeed the same sub-parts are represented by the same reference numerals and are not described again here. The difference between Figure 12 and Figure 11 is that although the contents of each of the four lanes of the 128-bit source register 380 (source register) are used, only the contents of a first lane of the second 128-bit source register 382 are used, and this content is repeated in each of the buffer units 386, 390, 394 and 398. This strip, which is selected as the (only) strip which provides content from the source register 382 in the present example, is specified by the command. It will be appreciated that no significance is associated with the particular lane (lane 0) which has been chosen to illustrate the present example, and any of the other lanes of source register 382 could equally well be specified. Determining the selected lane is done by setting the pointer value in the command, as shown for example in the example command of Figure 4A.

Μια περαιτέρω επιλογή στα παραδείγματα που δείχνονται στα Σχήματα 11 και 12 δείχνεται στο Σχήμα 13. Και πάλι τα ίδια υπο-τμήματα επαναχρησιμοποιούνται εδώ, στα οποία δίδονται τα ίδια αριθμητικά αναφοράς, και δεν περιγράφονται και πάλι για λόγους συντομίας. Η διαφορά που δείχνεται στο Σχήμα 13 σε σχέση με τα παραδείγματα των Σχημάτων 11 και 12 είναι ότι οι τέσσερις λωρίδες κάθε ενός από τους καταχωρητές προέλευσης 380 και 382 επεξεργάζονται οι ίδιοι σε δύο ομάδες δεδομένων (αναφέρονται και ως «τεμάχια» στο παρόν, και επισημαίνονται ως τεμάχιο 0 και τεμάχιο 1 στο σχήμα). Αυτό δεν επηρεάζει τον τρόπο με τον οποίο διαχειρίζεται το περιεχόμενο του καταχωρητή 380, με το περιεχόμενο των τεσσάρων λωρίδων του να μεταφέρεται στις μονάδες προσωρινής αποθήκευσης 384, 388, 392 και 396 όπως πριν. Ωστόσο, η εξαγωγή και επανάληψη του περιεχομένου μιας μονής λωρίδας όπως παρουσιάζεται με το παράδειγμα του Σχήματος 12 πραγματοποιείται εδώ σε βάση ομάδας δεδομένων προς ομάδα δεδομένων (σε βάση «τεμάχιο προς τεμάχιο»), ώστε το περιεχόμενο της λωρίδας Ο του καταχωρητή 382 να επαναλαμβάνεται και να μεταφέρεται στις μνήμες προσωρινής αποθήκευσης 394 και 398, μολονότι το περιεχόμενο της λωρίδας 2 στο τεμάχιο 1 επαναλαμβάνεται και μεταφέρεται στις μνήμες προσωρινής αποθήκευσης 386 και 390. Θα πρέπει να σημειωθεί ότι η πράξη που δείχνεται στο Σχήμα 13 μπορεί να θεωρείται ότι είναι ένα συγκεκριμένο παράδειγμα του πιο γενικά εικονιζόμενου Σχήματος 4Β, όπου η «πράξη» σε αυτό το σχήμα η οποία εκτελείται από τις τέσσερις μονάδες επεξεργασίας 120-126 περιλαμβάνει εδώ την πράξη κινητής υποδιαστολής που περιγράφεται. Και πάλι, θα εκτιμηθεί ότι δε συσχετίζεται κάποια σημαντικότητα με τις συγκεκριμένες λωρίδες που επελέγησαν στο παρόν εικονιζόμενο παράδειγμα (λωρίδες 2 και 0, ως οι «πρώτες» λωρίδες κάθε τεμαχίου), με αυτές να έχουν προσδιοριστεί από τον ορισμό μιας τιμής δείκτη στην εντολή, όπως για παράδειγμα δείχνεται στο παράδειγμα εντολής του Σχήματος 4Α. Τέλος ας σημειωθεί ότι της εκτέλεσης της εντολής επεξεργασίας δεδομένων που εικονίζεται στο Σχήμα 13 μπορεί να προηγείται χρήσιμα η εκτέλεση μιας εντολής προετοιμασίας δεδομένων, όπως αυτές που δείχνονται στα Σχήματα 2 και 3 και εξετάζονται παραπάνω, ώστε να προετοιμάζεται κατάλληλα το περιεχόμενο των καταχωρητών προέλευσης. A further option to the examples shown in Figures 11 and 12 is shown in Figure 13. Again the same subsections are reused here, given the same reference numerals, and are not described again for brevity. The difference shown in Figure 13 from the examples of Figures 11 and 12 is that the four lanes of each of the source registers 380 and 382 are themselves processed into two groups of data (also referred to as "chunks" herein, and labeled as block 0 and block 1 in the figure). This does not affect how the contents of register 380 are handled, with the contents of its four lanes being transferred to buffer units 384, 388, 392, and 396 as before. However, extracting and repeating the contents of a single lane as shown by the example of Figure 12 is performed here on a data group by data group basis (on a "chunk by chunk" basis) so that the contents of the O lane of register 382 are repeated and to be transferred to buffers 394 and 398, although the contents of lane 2 in block 1 are repeated and transferred to buffers 386 and 390. It should be noted that the operation shown in Figure 13 may be considered to be a specific example of the more generally illustrated Figure 4B, wherein the "operation" in this figure performed by the four processing units 120-126 includes the floating point operation described herein. Again, it will be appreciated that no significance is attached to the particular strips selected in the present illustrated example (strips 2 and 0, as the "first" strips of each piece), having been determined by setting a pointer value in the command, as for example shown in the command example of Figure 4A. Finally, note that execution of the data processing instruction illustrated in Figure 13 may usefully be preceded by execution of a data preparation instruction, such as those shown in Figures 2 and 3 and discussed above, to properly prepare the contents of the source registers.

Το Σχήμα 14 δείχνει μια ακολουθία βημάτων τα οποία εκτελούνται σύμφωνα με τη μέθοδο μιας υλοποίησης κατά την εκτέλεση μιας εντολής επεξεργασίας δεδομένων για την πραγματοποίηση μιας πράξης κινητής υποδιαστολής όπως αυτές που εξετάζονται παραπάνω αναφορικά με τα Σχήματα 9Α-13. Η ροή ξεκινάει στο βήμα 430 όπου η εντολή αποκωδικοποιείται και στο βήμα 440 παράγονται τα αντίστοιχα σήματα ελέγχου. Στη συνέχεια στο βήμα 450 εξάγονται πολλαπλά στοιχεία δεδομένων από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης που προσδιορίζονται στην εντολή σε βάση λωρίδα προς λωρίδα και στο βήμα 460 αντίστοιχα ζεύγη στοιχείων δεδομένων από τον πρώτο και το δεύτερο καταχωρητή προέλευσης πολλαπλασιάζονται μεταξύ τους σε κάθε λωρίδα ώστε να εκτελείται το πρώτο τμήμα της πράξης κινητής υποδιαστολής. Στη συνέχεια, στο βήμα 470 τα αποτελέσματα των αντίστοιχων πράξεων πολλαπλασιαστή προστίθενται όλα μαζί, και πάλι σε βάση λωρίδα προς λωρίδα, και προστίθενται (στο παρόν παράδειγμα) σε μια τιμή συσσωρευτή η οποία έχει ανακτηθεί από έναν καταχωρητή συσσωρευτή εισόδου ο οποίος επίσης προσδιορίζεται στην εντολή. Figure 14 shows a sequence of steps performed according to the method of one embodiment when executing a data processing instruction to perform a floating point operation such as those discussed above with respect to Figures 9A-13. Flow begins at step 430 where the command is decoded and at step 440 the corresponding control signals are generated. Multiple data items from the first source register and the second source register specified in the command are then extracted in step 450 on a lane-by-lane basis, and in step 460 corresponding pairs of data items from the first and second source registers are multiplied together in each lane to perform the first part of the floating point operation. Next, in step 470 the results of the corresponding multiplier operations are added together, again on a lane-by-lane basis, and added (in the present example) to an accumulator value retrieved from an input accumulator register also specified in the instruction .

Το Σχήμα 15Α απεικονίζει σχηματικά την εκτέλεση μιας εντολής επεξεργασίας δεδομένων η οποία παρέχεται από ορισμένες υλοποιήσεις. Το Σχήμα 15Β δείχνει ένα αντίστοιχο παράδειγμα εντολής. Αυτό το παράδειγμα εντολής 500 περιλαμβάνει ένα λειτουργικό κώδικα 502, έναν πρώτο προσδιοριστή καταχωρητή προέλευσης 504, ένα δεύτερο προσδιοριστή καταχωρητή προέλευσης 506 και έναν προσδιοριστή συνόλου καταχωρητών συσσώρευσης 508. Υλοποιημένοι στο παράδειγμα του Σχήματος 15Α ο πρώτος και ο δεύτερος καταχωρητής προέλευσης 510 και 512 δείχνονται στην κορυφή του σχήματος από τους οποίους σε απόκριση της εκτέλεσης της εντολής επεξεργασίας δεδομένων, εξάγονται στοιχεία δεδομένων. Όλα (και τα τέσσερα) τα στοιχεία δεδομένων εξάγονται από τον πρώτο καταχωρητή προέλευσης 510 ανεξάρτητα, μολονότι τα τέσσερα στοιχεία δεδομένων τα οποία αποτελούν το πλήρες περιεχόμενο του δεύτερου καταχωρητή προέλευσης 512 εξάγονται ως μια βαθμίδα. Το περιεχόμενο του δεύτερου καταχωρητή προέλευσης 512 μεταβιβάζεται σε κάθε μια από τις τέσσερις λειτουργικές μονάδες, δηλαδή τις συνδυασμένες μονάδες πολλαπλασιασμούπρόσθεσης (FMA) 514, 516, 518 και 520. Κάθε ένα από τα τέσσερα στοιχεία δεδομένων που εξάγονται από τον πρώτο καταχωρητή προέλευσης 510 μεταβιβάζονται σε μια αντίστοιχη από τις μονάδες FMA 514-520. Κάθε μια από τις μονάδες FMA 514 και 520 ελέγχεται από αντίστοιχα σήματα ελέγχου, όπως εικονίζεται. Ανάλογα, η εκτέλεση της εντολής επεξεργασίας δεδομένων στο παράδειγμα του Σχήματος 15Α προκαλεί την ταυτόχρονη εκτέλεση τεσσάρων πράξεων πολλαπλασιασμού/συσσώρευσης σε βάση διάνυσμα προς στοιχείο από το κύκλωμα επεξεργασίας δεδομένων (αναπαρίσταται από τις τέσσερις μονάδες FMA). Θα πρέπει να σημειωθεί ότι οι παρούσες τεχνικές δεν περιορίζονται σε μια πολλαπλότητα του τέσσερα, αλλά αυτή έχει βρεθεί να είναι μια καλή ταύτιση για τους λόγους φόρτωσης:υπολογισμού οι οποίοι είναι συνήθως διαθέσιμοι σε τέτοιες σύγχρονες διατάξεις επεξεργασίας. Η έξοδος των μονάδων FMA εφαρμόζεται σε έναν αντίστοιχο καταχωρητή από το σύνολο των καταχωρητών συσσώρευσης που προσδιορίζονται στην εντολή (βλέπε στοιχείο 508 στο Σχήμα 15Β). Επιπλέον, το περιεχόμενο αυτών των τεσσάρων καταχωρητών συσσώρευσης 522, 524, 526 και 528 διαμορφώνει μια άλλη είσοδο σε κάθε μια από τις μονάδες FMA 514-520, ώστε να πραγματοποιείται μια συσσώρευση στο περιεχόμενο κάθε ενός από αυτούς τους καταχωρητές. Figure 15A schematically illustrates execution of a data processing command provided by some embodiments. Figure 15B shows a corresponding command example. This example instruction 500 includes an opcode 502, a first source register identifier 504, a second source register identifier 506, and an accumulation register set identifier 508. Implemented in the example of Figure 15A, the first and second source registers 510 and 512 are shown in FIG. vertex of the schema from which, in response to the execution of the data processing command, data elements are extracted. All (all four) data items are output from the first source register 510 independently, although the four data items that make up the entire contents of the second source register 512 are output as a tier. The contents of the second source register 512 are passed to each of the four functional units, namely the combined multiply-add (FMA) units 514, 516, 518 and 520. Each of the four data items output from the first source register 510 are passed to an equivalent of FMA units 514-520. Each of the FMA units 514 and 520 is controlled by respective control signals, as shown. Accordingly, execution of the data processing instruction in the example of Figure 15A causes four vector-by-element multiply/accumulate operations to be performed simultaneously by the data processing circuitry (represented by the four FMA units). It should be noted that the present techniques are not limited to a multiple of four, but this has been found to be a good match for the load:compute reasons typically available in such modern processing arrangements. The output of the FMA units is applied to a corresponding register from the set of accumulation registers specified in the instruction (see item 508 in Figure 15B). In addition, the contents of these four accumulation registers 522, 524, 526 and 528 form another input to each of the FMA units 514-520 to perform an accumulation on the contents of each of these registers.

Το Σχήμα 16 δείχνει ένα παράδειγμα οπτικής αναπαράστασης του παραδείγματος του Σχήματος 15Α, το οποίο αντιπροσωπεύει ένα απλό παράδειγμα πολλαπλασιασμού πινάκων, όπου ένας υποκείμενος πίνακας Α και ένας υποκείμενος πίνακας Β πρόκειται να πολλαπλασιαστούν μεταξύ τους για τη δημιουργία ενός πίνακα αποτελέσματος C. Στα πλαίσια της προετοιμασίας αυτού μια στήλη (σκιασμένη) του πίνακα Α έχει φορτωθεί στον καταχωρητή νΟ και μια γραμμή (σκιασμένη) του πίνακα Β έχει φορτωθεί στον καταχωρητή ν2. Οι συσσωρευτές για τον πίνακα αποτελέσματος C αποθηκεύονται στους καταχωρητές ν4-ν7. Σημειώστε ότι μολονότι OL τιμές που φορτώνονται από τον πίνακα Α απεικονίζονται ως μια στήλη, οι πίνακες αντιμετατίθενται εύκολα και/ή παρεμβάλλονται ώστε να είναι δυνατή η πραγματοποίηση των συνεχόμενων φορτώσεων διανυσμάτων από κάθε πίνακα προέλευσης. Θα πρέπει να σημειωθεί σε αυτά τα πλαίσια ότι ο πολλαπλασιασμός πινάκων είναι μια πράξη O(n<3>) και συνεπώς οι βοηθητικές εργασίες για την προετοιμασία των δεδομένων του πίνακα για επεξεργασία θα ήταν μια πράξη O(n<2>) και συνεπώς ένα αμελητέο φορτίο για επαρκώς μεγάλες τιμές του n. Μια εντολή που αντιστοιχεί στο παράδειγμα που δείχνεται θα μπορούσε να αναπαρίσταται ως FMA4 ν4-ν7, ν2, ν0[0-3]. Εδώ το FMA4 αναπαριστά την ετικέτα (ή ισοδύναμα το λειτουργικό κώδικα) αυτής της εντολής, μολονότι οι ν4-ν7 είναι το σύνολο των καταχωρητών συσσώρευσης, ν2 είναι ο καταχωρητής προέλευσης από τον οποίο λαμβάνεται το πλήρες περιεχόμενο, μολονότι ο νΟ είναι ο καταχωρητής προέλευσης από τον οποίο λαμβάνεται ένα σύνολο στοιχείων δεδομένων (δεικτοδοτούμενο 0-3). Η εκτέλεση αυτής της εντολής έχει ως αποτέλεσμα στη συνέχεια τις τέσσερις πράξεις: Figure 16 shows an example visual representation of the example of Figure 15A, which represents a simple example of matrix multiplication, where an underlying matrix A and an underlying matrix B are to be multiplied together to create a result matrix C. In preparation thus a column (shaded) of array A is loaded into register ν0 and a row (shaded) of array B is loaded into register ν2. The accumulators for the result array C are stored in registers v4-v7. Note that although OL values loaded from array A are displayed as one column, the arrays are easily transposed and/or interleaved to allow for consecutive vector loads from each source array. It should be noted in this context that matrix multiplication is an O(n<3>) operation and thus the auxiliary tasks of preparing the matrix data for processing would be an O(n<2>) operation and thus a negligible charge for sufficiently large values of n. An instruction corresponding to the example shown could be represented as FMA4 v4-v7,v2,v0[0-3]. Here FMA4 represents the tag (or equivalently the opcode) of this instruction, although v4-v7 are the set of accumulation registers, v2 is the source register from which the full contents are taken, although v0 is the source register from which a set of data items (numbered 0-3) is received. Executing this command then results in the following four operations:

ν4 = ν2*ν0[0], ν4 = ν2*ν0[0],

ν5 = ν2*ν0[1], ν5 = ν2*ν0[1],

ν6 = ν2*ν0[2], και ν6 = ν2*ν0[2], and

ν7 = ν2*ν0[3]. ν7 = ν2*ν0[3].

Το Σχήμα 17 αναπαριστά μια απλούστερη έκδοση των παραδειγμάτων που δείχνονται στο Σχήμα 15Α, όπου σε αυτό το παράδειγμα μόνο δύο στοιχεία δεδομένων προκύπτουν από κάθε έναν από τον πρώτο και το δεύτερο καταχωρητή προέλευσης 540 και 542. Και τα δύο στοιχεία δεδομένων που εξάγονται από τον καταχωρητή 542 μεταβιβάζονται σε κάθε μια από τις μονάδες FMA 544 και 546, μολονότι ένα πρώτο στοιχείο δεδομένων από τον καταχωρητή 540 μεταβιβάζεται στη μονάδα FMA 544 και ένα δεύτερο στοιχείο δεδομένων μεταβιβάζεται στη μονάδα FMA 546. Το περιεχόμενο των καταχωρητών συσσώρευσης 548 και 550 παρέχει μια περαιτέρω είσοδο σε κάθε μια από τις αντίστοιχες μονάδες FMA και το αποτέλεσμα συσσώρευσης εφαρμόζεται σε κάθε έναν από τους αντίστοιχους καταχωρητές συσσώρευσης. Αντίθετα το Σχήμα 18 απεικονίζει ένα παράδειγμα όπου εξάγονται περισσότερα στοιχεία δεδομένων από κάθε έναν από τους καταχωρητές προέλευσης με αυτούς (οκτώ στο παρόν παράδειγμα) να εξάγονται από κάθε έναν από τους καταχωρητές προέλευσης 560 και 562. Το πλήρες περιεχόμενο του καταχωρητή 562 που παρέχεται σε κάθε μια από τις μονάδες FMA 564-578, μολονότι ένα επιλεγμένο αντίστοιχο στοιχείο δεδομένων από τον καταχωρητή 560 παρέχεται ως η άλλη είσοδος. Το αποτέλεσμα των πράξεων πολλαπλασιασμού-πρόσθεσης συσσωρεύονται στους αντίστοιχους καταχωρητές συσσώρευσης 580-594. Figure 17 represents a simpler version of the examples shown in Figure 15A, where in this example only two data items are derived from each of the first and second source registers 540 and 542. Both data items output from the register 542 are passed to each of FMA units 544 and 546, although a first data item from register 540 is passed to FMA unit 544 and a second data item is passed to FMA unit 546. The contents of accumulation registers 548 and 550 provide a further input to each of the corresponding FMA units and the accumulation result is applied to each of the corresponding accumulation registers. In contrast, Figure 18 illustrates an example where more data items are extracted from each of the source registers with them (eight in the present example) being extracted from each of the source registers 560 and 562. The complete contents of register 562 supplied to each one of the FMA units 564-578, although a selected corresponding data item from register 560 is provided as the other input. The result of the multiply-add operations are accumulated in the respective accumulation registers 580-594.

Το Σχήμα 19 δείχνει ένα παράδειγμα που παρέχει περισσότερες λεπτομέρειες για ορισμένες πράξεις πολλαπλασιασμού οι οποίες εκτελούνται σε ένα παράδειγμα. Εδώ κάθε ένας από τους δύο καταχωρητές προέλευσης ν0 και ν2 επεξεργάζονται σε δύο διακριτές ομάδες δεδομένων. OL δύο ομάδες δεδομένων του καταχωρητή νΟ επίσης αναπαριστούν τμήματα του καταχωρητή κατά μήκος των οποίων επαναλαμβάνεται ένα επιλεγμένο στοιχείο δεδομένων, στο παράδειγμα του Σχήματος 19 αυτό να είναι το «πρώτο» στοιχείο δεδομένων κάθε τμήματος, δηλ. τα στοιχεία [0] και [4] αντίστοιχα. Το επιλεγμένο στοιχείο δεδομένων μπορεί να προσδιορίζεται στην εντολή μέσω ενός δείκτη. Συνεπώς, σε ένα πρώτο βήμα στην πράξη δεδομένων που δείχνεται στο Σχήμα 19 το στοιχείο δεδομένων αυτών των δύο ομάδες δεδομένων του καταχωρητή ν0 επαναλαμβάνονται στο εύρος κάθε τμήματος όπως δείχνεται. Έπειτα αυτές παρέχουν τις εισόδους σε τέσσερις πολλαπλασιαστές 600, 602, 604 και 606, μολονότι η άλλη είσοδος παρέχεται από το περιεχόμενο του καταχωρητή ν2. Στη συνέχεια εκτελείται ο πολλαπλασιασμός των αντίστοιχων στοιχείων δεδομένων του ν2 με τα αντίστοιχα στοιχεία δεδομένων του ν0 και τα αποτελέσματα εφαρμόζονται στους καταχωρητές προορισμού ν4-ν7, όπου η υποδιαίρεση σε δύο ομάδες δεδομένων διατηρείται σε αυτούς τους τέσσερις καταχωρητές συσσώρευσης όπως δείχνεται από τους συγκεκριμένους υπολογισμούς που επιση μαίνονται για κάθε ομάδα δεδομένων κάθε καταχωρητή συσσώρευσης. Σημειώστε ότι της εκτέλεσης της εντολής επεξεργασίας δεδομένων που απεικονίζεται στο Σχήμα 19 μπορεί να προηγείται η εκτέλεση μιας εντολής προετοιμασίας δεδομένων, όπως αυτές που δείχνονται στα Σχήματα 2 και 3 και εξετάζονται παραπάνω, ώστε να προετοιμάζεται κατάλληλα το περιεχόμενο των καταχωρητών προέλευσης. Figure 19 shows an example that provides more details on some multiplication operations performed in an example. Here each of the two source registers ν0 and ν2 are processed into two distinct groups of data. OL two groups of data of the register ν also represent segments of the register along which a selected data element is repeated, in the example of Figure 19 this being the "first" data element of each segment, i.e. elements [0] and [4] respectively. The selected data element may be specified in the command by means of a pointer. Therefore, in a first step in the data operation shown in Figure 19 the data element of these two data groups of register v0 are repeated in the range of each segment as shown. These then provide the inputs to four multipliers 600, 602, 604 and 606, although the other input is provided by the contents of register n2. The corresponding data elements of v2 are then multiplied by the corresponding data elements of v0 and the results are applied to the destination registers v4-v7, where the subdivision into two groups of data is maintained in these four accumulation registers as shown by the specific calculations that are also displayed for each data group of each accumulation register. Note that the execution of the data manipulation instruction illustrated in Figure 19 may be preceded by the execution of a data preparation instruction, such as those shown in Figures 2 and 3 and discussed above, to properly prepare the contents of the source registers.

Το Σχήμα 20 δείχνει ένα παράδειγμα στο οποίο το περιεχόμενο δύο καταχωρητών προέλευσης 620 και 622 επεξεργάζεται ως ότι περιέχει στοιχεία δεδομένων σε δύο ανεξάρτητες λωρίδες (λωρίδα 0 και λωρίδα 1). Εντός κάθε λωρίδας ορίζονται δύο υπο-τμήματα και αυτή η «λωριδοποίηση» του περιεχομένου διατηρείται σε όλο τον υπολογισμό δηλ. διαμέσου των μονάδων FMA 624, 626, 628 και 630, και τέλος στους καταχωρητές συσσώρευσης 632 και 634. Figure 20 shows an example in which the contents of two source registers 620 and 622 are processed as containing data elements in two independent lanes (lane 0 and lane 1). Within each lane two subsections are defined and this "striping" of the contents is maintained throughout the calculation ie through the FMA units 624, 626, 628 and 630, and finally to the accumulation registers 632 and 634.

Το Σχήμα 21 δείχνει μια ακολουθία βημάτων τα οποία εκτελούνται σύμφωνα με τη μέθοδο μιας υλοποίησης κατά την επεξεργασία μιας εντολής επεξεργασίας δεδομένων όπως αυτή που περιγράφεται όσον αφορά στα παραδείγματα του Σχήματος 15Α και του Σχήματος 20. Η ροή ξεκινάει στο βήμα 650 όπου η εντολή επεξεργασίας δεδομένων αποκωδικοποιείται και στο βήμα 652 παράγονται τα αντίστοιχα σήματα ελέγχου. Στη συνέχεια στο βήμα 654 εξάγονται Ν στοιχεία δεδομένων από τον πρώτο καταχωρητή προέλευσης που προσδιορίζεται στην εντολή επεξεργασίας δεδομένων, ενώ στο βήμα 656 τα Ν στοιχεία δεδομένων πολλαπλασιάζονται με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης που προσδιορίζεται στην εντολή επεξεργασίας δεδομένων. Στο βήμα 658 οι Ν τιμές αποτελέσματος αυτών των πράξεων πολλαπλασιασμού εφαρμόζονται στη συνέχεια στο περιεχόμενο των Ν αντίστοιχων καταχωρητών συσσώρευσης που προσδιορίζονται στην εντολή επεξεργασίας δεδομένων, θα εκτιμηθεί υπό το φως της προηγούμενης περιγραφής ότι της εκτέλεσης της εντολής όπως περιγράφεται όσον αφορά στο Σχήμα 21, και εξίσου της εκτέλεσης της εντολής όπως περιγράφεται όσον αφορά στο Σχήμα 14, μπορεί επωφελώς να προηγείται η εκτέλεση μιας εντολής προετοιμασίας δεδομένων, όπως αυτές που δείχνονται στα Σχήματα 2 και 3 και εξετάζονται παραπάνω, ώστε να προετοιμάζεται κατάλληλα το περιεχόμενο των καταχωρητών προέλευσης. Figure 21 shows a sequence of steps performed according to the method of one embodiment when processing a data processing command such as that described with respect to the examples of Figure 15A and Figure 20. Flow begins at step 650 where the data processing command is decoded and in step 652 the corresponding control signals are generated. Then in step 654 N data items are extracted from the first source register specified in the data processing instruction, while in step 656 the N data items are multiplied by the contents of the second source register specified in the data processing instruction. In step 658 the N result values of these multiplication operations are then applied to the contents of the N corresponding accumulation registers specified in the data processing instruction, it will be appreciated in light of the foregoing description that the execution of the instruction as described with respect to Figure 21, and as well as the execution of the instruction as described with respect to Figure 14, it may advantageously be preceded by the execution of a data preparation instruction, such as those shown in Figures 2 and 3 and discussed above, to properly prepare the contents of the source registers.

Το Σχήμα 22 απεικονίζει μια υλοποίηση εικονικής μηχανής η οποία μπορεί να χρησιμοποιείται. Μολονότι οι υλοποιήσεις που περιγράφονται παραπάνω σε γενικές γραμμές υλοποιούν τις παρούσες τεχνικές όσον αφορά στις διατάξεις και τις μεθόδους για τη λειτουργία συγκεκριμένου υλικού επεξεργασίας που υποστηρίζει τις εμπλεκόμενες τεχνικές, είναι επίσης δυνατή η παροχή επονομαζόμενων υλοποιήσεων εικονικών μηχανών συσκευών υλικού. Αυτές οι υλοποιήσεις εικονικής μηχανής εκτελούνται σε έναν κεντρικό επεξεργαστή 730 ο οποίος συνήθως εκτελεί ένα κεντρικό λειτουργικό σύστημα 720 το οποίο υποστηρίζει ένα πρόγραμμα εικονικής μηχανής 710. Αυτό μπορεί να απαιτεί την παροχή ενός πιο ισχυρού επεξεργαστή ώστε να υποστηρίζεται μια υλοποίηση εικονικής μηχανής η οποία εκτελείται με μια εύλογη ταχύτητα, όμως μια τέτοια προσέγγιση μπορεί να δικαιολογείται σε ορισμένες περιπτώσεις, όπως όταν είναι επιθυμητή η εκτέλεση κώδικα εσωτερικού σε έναν άλλο επεξεργαστή για λόγους συμβατότητας η επαναχρησιμοποίησης. Το πρόγραμμα εικονικής μηχανής 710 παρέχει μια διασύνδεση προγράμματος εφαρμογής σε ένα πρόγραμμα εφαρμογής 700 η οποία είναι ίδια με τη διασύνδεση προγράμματος εφαρμογής την οποία θα παρείχε το πραγματικό υλικό το οποίο είναι η συσκευή η οποία μοντελοποιείται από το πρόγραμμα εικονικής μηχανής 710. Συνεπώς, είναι δυνατή η εκτέλεση ενός ή περισσότερων παραδειγμάτων της προαναφερθείσας εντολής ελέγχου κατάστασης του επεξεργαστή από εντός του προγράμματος εφαρμογής 700 χρησιμοποιώντας το πρόγραμμα εικονικής μηχανής 710 για τη μοντελοποίηση της αλληλεπίδρασής τους με το υλικό της εικονικής μηχανής. Figure 22 illustrates a virtual machine implementation that may be used. Although the embodiments described above generally implement the present techniques in terms of arrangements and methods for operating specific processing hardware that supports the techniques involved, it is also possible to provide so-called hardware virtual machine implementations. These virtual machine implementations run on a host processor 730 that typically runs a host operating system 720 that supports a virtual machine program 710. This may require providing a more powerful processor to support a virtual machine implementation that runs with a reasonable speedup, but such an approach may be justified in some cases, such as when it is desirable to run internal code on another processor for reasons of compatibility or reusability. The virtual machine program 710 provides an application program interface to an application program 700 that is the same as the application program interface that would be provided by the actual hardware that is the device being modeled by the virtual machine program 710. Therefore, it is possible executing one or more instances of the aforementioned processor status control instruction from within the application program 700 using the virtual machine program 710 to model their interaction with the virtual machine hardware.

Εν συντομία και περιληπτικά παρέχονται μια διάταξη επεξεργασίας δεδομένων, μια μέθοδος λειτουργίας μιας διάταξης επεξεργασίας δεδομένων, ένα μη προσωρινό μέσο αποθήκευσης με δυνατότητα ανάγνωσης από υπολογιστή και μια εντολή. Η εντολή προσδιορίζει έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης. Σε απόκριση της εντολής παράγονται σήματα ελέγχου, προκαλώντας την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης από το κύκλωμα επεξεργασίας, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης και την εφαρμογή ενός αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης. Ως αποτέλεσμα πραγματοποιούνται πολλαπλοί (Ν) πολλαπλασιασμοί με έναν τρόπο ο οποίος ουσιαστικά παρέχει έναν πολλαπλασιαστή Ν φορές το πλάτος καταχωρητή, αλλά χωρίς να απαιτείται το αρχείο καταχωρητών να γίνει Ν φορές μεγαλύτερο. Briefly and concisely provided are a data processing device, a method of operating a data processing device, a non-transitory computer-readable storage medium, and a command. The instruction specifies a first source register, a second source register, and a set of N accumulation registers. Control signals are generated in response to the command, causing the processing circuitry to extract N data items from the contents of the first source register, perform a multiplication of each of the N data items by the contents of the second source register, and apply a result of each multiplying the content of a corresponding destination register by the set of N accumulation registers. As a result, multiple (N) multiplications are performed in a way that effectively provides a multiplier N times the register width, but without requiring the register file to become N times larger.

Στην παρούσα αίτηση, οι λέξεις «διαμορφωμένο για...» ή «διαταγμένο για» χρησιμοποιούνται με τη σημασία ότι ένα στοιχείο μιας συσκευής έχει μια διαμόρφωση ικανή να εκτελεί την καθορισμένη λειτουργία. Σε αυτά τα πλαίσια, μια «διαμόρφωση» σημαίνει μια διάταξη ή έναν τρόπο διασύνδεσης υλικού ή λογισμικού. Για παράδειγμα, η συσκευή μπορεί να έχει ειδικό υλικό το οποίο παρέχει την καθορισμένη λειτουργία ή ένας επεξεργαστής ή άλλη συσκευή επεξεργασίας μπορεί να προγραμματίζεται για την εκτέλεση της λειτουργίας. Οι opoL «διαμορφωμένο για» ή «διαταγμένο για» δεν υπονοούν ότι το στοιχείο της συσκευής πρέπει να αλλάζει με κάποιο τρόπο για την παροχή της καθορισμένης λειτουργίας. In this application, the words "configured for..." or "ordered for" are used to mean that an element of a device has a configuration capable of performing the specified function. In these contexts, a "configuration" means an arrangement or way of interconnecting hardware or software. For example, the device may have special hardware that provides the specified function, or a processor or other processing device may be programmed to perform the function. The opoLs "configured for" or "ordered for" do not imply that the device component must be changed in some way to provide the specified function.

Μολονότι στο παρόν έχουν περιγράφει επεξηγηματικές υλοποιήσεις σε λεπτομέρεια αναφορικά με τα συνοδευτικά σχήματα, θα πρέπει να γίνει κατανοητό ότι η εφεύρεση δεν περιορίζεται σε αυτές ακριβώς τις υλοποιήσεις, και ότι διάφορες αλλαγές, προσθήκες και τροποποιήσεις μπορούν να επιφέρονται σε αυτή από άτομα έμπειρα στην τέχνη χωρίς απόκλιση από το αντικείμενο της εφεύρεσης όπως ορίζεται στις συνημμένες αξιώσεις. Για παράδειγμα, θα μπορούσαν να γίνουν διάφοροι συνδυασμοί των χαρακτηριστικών των εξαρτώμενων αξιώσεων με τα χαρακτηριστικά των ανεξάρτητων αξιώσεων χωρίς απόκλιση από το αντικείμενο της παρούσας εφεύρεσης. Although illustrative embodiments have been described herein in detail with reference to the accompanying figures, it should be understood that the invention is not limited to these particular embodiments, and that various changes, additions, and modifications may be made therein by those skilled in the art without departure from the subject matter of the invention as defined in the appended claims. For example, various combinations of the features of the dependent claims with the features of the independent claims could be made without departing from the scope of the present invention.

Claims (21)

ΑΞΙΩΣΕΙΣ 1. Μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει:1. A data processing device which includes: ένα κύκλωμα αποθήκευσης καταχωρητών με ένα πλήθος καταχωρητών, με κάθε καταχωρητή για την αποθήκευση πολλαπλών στοιχείων δεδομένων,a register storage circuit with a plurality of registers, with each register for storing multiple data items; ένα κύκλωμα αποκωδικοποιητή που αποκρίνεται σε μια εντολή επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στο πλήθος των καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, καιa decoder circuit responsive to a data processing command to generate control signals, the data processing command specifying in the plurality of registers: a first source register, a second source register, and a set of N accumulation registers, and ένα κύκλωμα επεξεργασίας που αποκρίνεται στα σήματα ελέγχου για την εκτέλεση μιας λειτουργίας επεξεργασίας δεδομένων η οποία περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης.a processing circuit responsive to the control signals to perform a data processing operation which includes extracting N data items from the contents of the first source register, performing a multiplication of each of the N data items by the contents of the second source register, and applying the result of each multiplication to the contents of a corresponding destination register from the set of N accumulation registers. 2. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 1, όπου το κύκλωμα επεξεργασίας περιλαμβάνει ένα κύκλωμα διαχείρισης στοιχείων δεδομένων που αποκρίνεται στα σήματα ελέγχου για την παροχή πολλαπλών στιγμιότυπων ενός στοιχείου δεδομένων το οποίο εξάγεται από τον πρώτο καταχωρητή προέλευσης,2. The data processing device as claimed in claim 1, wherein the processing circuitry comprises a data element management circuit responsive to control signals to provide multiple instances of a data element which is extracted from the first source register, όπου η εκτέλεση του πολλαπλασιασμού περιλαμβάνει τον πολλαπλασιασμό των πολλαπλών στιγμιότυπων του στοιχείου δεδομένων με αντίστοιχα τμήματα του περιεχομένου του δεύτερου καταχωρητή προέλευσης.wherein performing the multiplication includes multiplying the multiple instances of the data item by corresponding portions of the contents of the second source register. 3. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 2, όπου το κύκλωμα διαχείρισης στοιχείων δεδομένων αποκρίνεται στα σήματα ελέγχου για την παροχή Μ στιγμιότυπων του στοιχείου δεδομένων, όπου το μέγεθος των Μ στιγμιότυπων είναι μικρότερο από το μέγεθος ενός καταχωρητή από το πλήθος των καταχωρητών.3. The data processing device as claimed in claim 2, wherein the data element management circuit is responsive to the control signals to provide M snapshots of the data element, wherein the size of the M snapshots is less than the size of one register of the plurality of registers. 4. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 3, όπου το κύκλωμα διαχείρισης στοιχείων δεδομένων αποκρίνεται στα σήματα ελέγχου για την παροχή αντίστοιχων Μ στιγμιότυπων για κάθε στοιχείο δεδομένων από ένα σύνολο στοιχείων δεδομένων που εξάγονται από τον πρώτο καταχωρητή προέλευσης, όπου το συνολικό μέγεθος των Μ στιγμιότυπων για το σύνολο των στοιχείων δεδομένων ισούται με το μέγεθος καταχωρητή.4. The data processing device as claimed in claim 3, wherein the data item management circuitry is responsive to the control signals to provide corresponding M snapshots for each data item from a set of data items output from the first source register, wherein the total size of the M snapshots for the set of data items equals the register size. 5. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 4, όπου το σύνολο των στοιχείων δεδομένων δίδεται από ένα επιλεγμένο στοιχείο δεδομένων εντός ενός επαναλαμβανόμενου υπο-τμήματος του μεγέθους καταχωρητή.5. The data processing device as claimed in claim 4, wherein the set of data elements is given by a selected data element within a repeating sub-segment of the register size. 6. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 2, όπου το συνδυασμένο μέγεθος των πολλαπλών στιγμιότυπων του στοιχείου δεδομένων ισούται με το μέγεθος ενός καταχωρητή από το πλήθος των καταχωρητών.6. The data processing device as claimed in claim 2, wherein the combined size of the multiple instances of the data element equals the size of one register of the plurality of registers. 7. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις προηγούμενες αξιώσεις, όπου το Ν βρίσκεται στην περιοχή από 2 έως 8.7. The data processing device as claimed in any of the preceding claims, wherein N is in the range of 2 to 8. 8. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 7, όπου το Ν ισούται με 2.The data processing device as claimed in claim 7, wherein N equals 2. 9. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 7, όπου το Ν ισούται με 4.The data processing device as claimed in claim 7, wherein N equals 4. 10. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις αξιώσεις 1-9, όπου η εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο του αντίστοιχου καταχωρητή προορισμού στη λειτουργία επεξεργασίας δεδομένων περιλαμβάνει την πρόσθεση του αποτελέσματος κάθε πολλαπλασιασμού με το περιεχόμενο του αντίστοιχου καταχωρητή προορισμού.10. The data processing device as claimed in any one of claims 1-9, wherein applying the result of each multiplication to the content of the corresponding destination register in the data processing operation comprises adding the result of each multiplication to the content of the corresponding destination register. 11. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις αξιώσεις 1-9, όπου η εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο του αντίστοιχου καταχωρητή προορισμού στη λειτουργία επεξεργασίας δεδομένων περιλαμβάνει την αφαίρεση του αποτελέσματος κάθε πολλαπλασιασμού από το περιεχόμενο του αντίστοιχου καταχωρητή προορισμού.11. The data processing device as claimed in any of claims 1-9, wherein applying the result of each multiplication to the contents of the respective destination register in the data processing operation comprises subtracting the result of each multiplication from the contents of the respective destination register. 12. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις αξιώσεις 1-9, όπου η εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού στο περιεχόμενο του αντίστοιχου καταχωρητή προορισμού στη λειτουργία επεξεργασίας δεδομένων περιλαμβάνει την αντικατάσταση του περιεχομένου του αντίστοιχου καταχωρητή προορισμού με το αποτέλεσμα κάθε πολλαπλασιασμού.12. The data processing device as claimed in any one of claims 1-9, wherein applying the result of each multiplication to the content of the respective destination register in the data processing operation comprises replacing the content of the respective destination register with the result of each multiplication. 13. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις προηγούμενες αξιώσεις, όπου το σύνολο των Ν καταχωρητών συσσώρευσης είναι καταχωρητές με διαδοχική διευθυνσιοδότηση.13. The data processing device as claimed in any of the preceding claims, wherein all of the N accumulation registers are sequentially addressed registers. 14. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 13, όπου ένας δείκτης ενός πρώτου καταχωρητή συσσώρευσης από το σύνολο των Ν καταχωρητών συσσώρευσης είναι ένας μη αρνητικός ακέραιος πολλαπλάσιος του Ν.14. The data processing device as claimed in claim 13, wherein an index of a first accumulation register of the set of N accumulation registers is a non-negative integer multiple of N. 15. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις προηγούμενες αξιώσεις, όπου τα Ν στοιχεία δεδομένων που εξάγονται από το περιεχόμενο του πρώτου καταχωρητή προέλευσης είναι στοιχεία δεδομένων με διαδοχική διευθυνσιοδότηση.15. The data processing device as claimed in any of the preceding claims, wherein the N data items extracted from the contents of the first source register are sequentially addressed data items. 16. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 15, όπου ένας δείκτης ενός πρώτου στοιχείου δεδομένων από τα Ν στοιχεία δεδομένων που εξάγεται από το περιεχόμενο του πρώτου καταχωρητή προέλευσης είναι ένας μη αρνητικός ακέραιος πολλαπλάσιος του Ν.16. The data processing device as claimed in claim 15, wherein a pointer to a first data item of the N data items extracted from the contents of the first source register is a non-negative integer multiple of N. 17. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις προηγούμενες αξιώσεις, όπου ο πολλαπλασιασμός κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης περιλαμβάνει:17. The data processing device as claimed in any of the preceding claims, wherein multiplying each of the N data items by the contents of the second source register comprises: την εξαγωγή τουλάχιστον ενός πρώτου ζεύγους στοιχείων δεδομένων και ενός δεύτερου ζεύγους στοιχείων δεδομένων από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης,extracting at least a first pair of data items and a second pair of data items from the first source register and the second source register; την εκτέλεση πράξεων πολλαπλασιασμού του τουλάχιστον πρώτου ζεύγους στοιχείων δεδομένων με το δεύτερο ζεύγος στοιχείων δεδομένων,performing multiplication operations of at least the first pair of data elements with the second pair of data elements; τη φόρτωση μιας τιμής συσσωρευτή από έναν καταχωρητή συσσωρευτή εισόδου από το σύνολο των Ν καταχωρητών συσσώρευσης, καιloading an accumulator value from an input accumulator register from the set of N accumulator registers, and την πρόσθεση των αποτελεσμάτων των πράξεων πολλαπλασιασμού με την τιμή του συσσωρευτή.the addition of the results of multiplication operations with the value of the accumulator. 18. Μια μέθοδος λειτουργίας μιας διάταξης επεξεργασίας δεδομένων η οποία περιλαμβάνει:18. A method of operating a data processing device comprising: την παραγωγή σημάτων ελέγχου σε απόκριση μιας εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, καιgenerating control signals in response to a data processing instruction, the data processing instruction specifying in a plurality of registers: a first source register, a second source register, and a set of N accumulation registers, and την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου, με τη λειτουργία επεξεργασίας δεδομένων να περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού με το περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης.performing a data processing operation in response to the control signals, the data processing operation comprising extracting N data items from the contents of the first source register, performing a multiplication of each of the N data items by the contents of the second source register and applying the result of each multiplication to the contents of a corresponding destination register from the set of N accumulation registers. 19. Ένα μέσο αποθήκευσης με δυνατότητα ανάγνωσης από υπολογιστή το οποίο αποθηκεύει με μη προσωρινό τρόπο ένα πρόγραμμα που περιλαμβάνει τουλάχιστον μια εντολή επεξεργασίας δεδομένων η οποία όταν εκτελείται από μια διάταξη επεξεργασίας δεδομένων προ καλέ ί:19. A computer-readable storage medium that stores in a non-transitory manner a program comprising at least one data processing instruction which when executed by a data processing device causes: την παραγωγή σημάτων ελέγχου σε απόκριση μιας εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, καιgenerating control signals in response to a data processing instruction, the data processing instruction specifying in a plurality of registers: a first source register, a second source register, and a set of N accumulation registers, and την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου, με τη λειτουργία επεξεργασίας δεδομένων να περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού με το περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης.performing a data processing operation in response to the control signals, the data processing operation comprising extracting N data items from the contents of the first source register, performing a multiplication of each of the N data items by the contents of the second source register and applying the result of each multiplication to the contents of a corresponding destination register from the set of N accumulation registers. 20. Μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει:20. A data processing device which includes: μέσα για την αποθήκευση πολλαπλών στοιχείων δεδομένων σε καταχωρητές από ένα πλήθος καταχωρητών,means for storing multiple data items in registers from a plurality of registers; μέσα για την παραγωγή σημάτων ελέγχου σε απόκριση μιας εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στο πλήθος των καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα σύνολο Ν καταχωρητών συσσώρευσης, καιmeans for generating control signals in response to a data processing instruction, the data processing instruction specifying in the plurality of registers: a first source register, a second source register, and a set of N accumulation registers, and μέσα για την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου, με τη λειτουργία επεξεργασίας δεδομένων να περιλαμβάνει την εξαγωγή Ν στοιχείων δεδομένων από το περιεχόμενο του πρώτου καταχωρητή προέλευσης, την εκτέλεση ενός πολλαπλασιασμού κάθε ενός από τα Ν στοιχεία δεδομένων με το περιεχόμενο του δεύτερου καταχωρητή προέλευσης και την εφαρμογή του αποτελέσματος κάθε πολλαπλασιασμού με το περιεχόμενο ενός αντίστοιχου καταχωρητή προορισμού από το σύνολο των Ν καταχωρητών συσσώρευσης.means for performing a data processing operation in response to the control signals, the data processing operation comprising extracting N data items from the contents of the first source register, performing a multiplication of each of the N data items by the contents of the second source register and applying the result of each multiplication with the content of a corresponding destination register from the set of N accumulation registers. 21. Μια εικονική μηχανή που παρέχεται από ένα πρόγραμμα υπολογιστή το οποίο εκτελείται σε μια διάταξη επεξεργασίας δεδομένων, με την εν λόγω εικονική μηχανή να παρέχει ένα περιβάλλον εκτέλεσης εντολών σε αντιστοιχία με τη διάταξη επεξεργασίας δεδομένων οποιασδήποτε από τις αξιώσεις 1 έως 17 ή 20.21. A virtual machine provided by a computer program running on a data processing device, said virtual machine providing a command execution environment in accordance with the data processing device of any one of claims 1 to 17 or 20.
GR20170200089U 2017-02-23 2017-02-23 Multiply-accumulation in a data processing apparatus GR20170200089U (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GR20170200089U GR20170200089U (en) 2017-02-23 2017-02-23 Multiply-accumulation in a data processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GR20170200089U GR20170200089U (en) 2017-02-23 2017-02-23 Multiply-accumulation in a data processing apparatus

Publications (1)

Publication Number Publication Date
GR20170200089U true GR20170200089U (en) 2018-10-31

Family

ID=64020750

Family Applications (1)

Application Number Title Priority Date Filing Date
GR20170200089U GR20170200089U (en) 2017-02-23 2017-02-23 Multiply-accumulation in a data processing apparatus

Country Status (1)

Country Link
GR (1) GR20170200089U (en)

Similar Documents

Publication Publication Date Title
KR102492356B1 (en) Arithmetic Expansion in Data Processors
EP3586226B1 (en) Multiply-accumulation in a data processing apparatus
EP3646169B1 (en) Register-based matrix multiplication
KR102584031B1 (en) Element-by-vector operations in data processing units
KR102591988B1 (en) Vector interleaving in data processing units
TWI773783B (en) Apparatus, method, integrated circuit, computer program, and computer-readable storage medium for register-based complex number processing
EP3499362B1 (en) Vector add-with-carry instruction
GR20170200089U (en) Multiply-accumulation in a data processing apparatus
CN110300956B (en) Multiply-accumulate in a data processing apparatus
GR20170200090U (en) Element by vector operations in a data processing apparatus