GR20170200090U - Element by vector operations in a data processing apparatus - Google Patents

Element by vector operations in a data processing apparatus Download PDF

Info

Publication number
GR20170200090U
GR20170200090U GR20170200090U GR20170200090U GR20170200090U GR 20170200090 U GR20170200090 U GR 20170200090U GR 20170200090 U GR20170200090 U GR 20170200090U GR 20170200090 U GR20170200090 U GR 20170200090U GR 20170200090 U GR20170200090 U GR 20170200090U
Authority
GR
Greece
Prior art keywords
data
data processing
source register
register
group
Prior art date
Application number
GR20170200090U
Other languages
Greek (el)
Inventor
Nigel John Stephens
David Hennah Mansell
Grigorios Magklis
Jacob Eapen
Mbou Eyole
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 GR20170200090U priority Critical patent/GR20170200090U/en
Publication of GR20170200090U publication Critical patent/GR20170200090U/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

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 an index. In response to the instruction control signals are generated, causing processing circuitry to perform a data processing operation with respect to each data group in the first source register and the second source register to generate respective result data groups forming a result of the data processing operation. Each of the first source register and the second source register has a size which is an integer multiple at least twice a predefined size of the data group, and each data group comprises a plurality of data elements. The operands of the data processing operation for each data group are a selected data element identified in the data group of the first source register by the index and each data element in the data group of the second source register. A technique for element-by-vector operation which is readily scalable as the register width grows.

Description

ΛΕΙΤΟΥΡΓΙΕΣ ΣΤΟΙΧΕΙΟΥ ΚΑΤΑ ΔΙΑΝΥΣΜΑ ΣΕ ΜΙΑ ΔΙΑΤΑΞΗ ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ ELEMENT-BY-VECTOR OPERATIONS IN A DATA PROCESSING LAYOUT

Η παρούσα δημοσιοποίηση αφορά στην επεξεργασία δεδομένων. Συγκεκριμένα αφορά σε μια διάταξη επεξεργασίας δεδομένων η οποία πραγματοποιεί λειτουργίες στοιχείου κατά διάνυσμα. This disclosure concerns data processing. Specifically, it refers to a data processing device that performs element-by-vector operations.

Μια διάταξη επεξεργασίας δεδομένων μπορεί να απαιτείται για την πραγματοποίηση αριθμητικών πράξεων, OL οποίες μπορούν να περιλαμβάνουν πράξεις πολλαπλασιασμού πινάκων. Αυτές οι πράξεις μπορούν να βρουν εφαρμογή σε ένα πλήθος αντικειμένων. Μια λειτουργία της οποίας μπορεί να απαιτηθεί η υλοποίηση για την υποστήριξη τέτοιων πολλαπλασιασμών πινάκων είναι η δυνατότητα υποστήριξης μιας πράξης που συνδυάζει ένα μοναδικό στοιχείο με ένα ολόκληρο διάνυσμα, για παράδειγμα ο πολλαπλασιασμός όλων των στοιχείων ενός διανύσματος με ένα μοναδικό στοιχείο ενός άλλου διανύσματος. Ωστόσο, οι υφιστάμενες τεχνικές που παρέχουν τέτοια λειτουργικότητα δεν κλιμακώνονται καλά στα μεγάλα διανύσματα. A data processing device may be required to perform arithmetic operations, OL which may include matrix multiplication operations. These operations can be applied to a multitude of objects. One function that may need to be implemented to support such matrix multiplications is the ability to support an operation that combines a single element with an entire vector, for example multiplying all the elements of one vector by a single element of another vector. However, existing techniques that provide such functionality do not scale well to large vectors.

Τουλάχιστον ένα παράδειγμα που περιγράφεται στο παρόν παρέχει μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει: ένα κύκλωμα αποθήκευσης καταχωρητών με ένα πλήθος καταχωρητών, ένα κύκλωμα αποκωδικοποιητή που αποκρίνεται σε μια εντολή επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στο πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη, όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο ενός προκαθορισμένου μεγέθους μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων και ένα κύκλωμα επεξεργασίας που αποκρίνεται στα σήματα ελέγχου για την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε σχέση με κάθε εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων, όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης. At least one example described herein provides a data processing device that includes: a register storage circuit with a plurality of registers, 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 pointer, wherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, while each data group includes a plurality of data elements and processing circuitry responsive to control signals to perform a data processing operation with respect to each said group of data in the first source register and the second source register for generating a of corresponding groups of result data forming a result of the data manipulation operation, where the operands of the data manipulation operation for each said data group are a selected data item identified in the data group of the first source register by the pointer and for each data item in data group of the second source register.

Τουλάχιστον ένα παράδειγμα που περιγράφεται στο παρόν παρέχει μια μέθοδο επεξεργασίας δεδομένων η οποία περιλαμβάνει: την αποκωδικοποίηση μιας εντολής επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη, όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο ενός προκαθορισμένου μεγέθους μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων και την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου σε σχέση με κάθε μια εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων, όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης. At least one example described herein provides a data processing method comprising: decoding a data processing instruction to generate control signals, the data processing instruction specifying in a plurality of registers: a first source register, a second source register, and a pointer, wherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, and each data group includes a plurality of data elements and performing a data processing operation in response to the control signals with respect to each said group of data in the first source register and the second source register to generate corresponding groups of result data forming a result of the data processing operation n, where the operators of the data processing operation for each said data group are a selected data item identified in the data group of the first source register by the pointer and for each data item in the data group of the second source register.

Τουλάχιστον ένα παράδειγμα που περιγράφεται στο παρόν παρέχει ένα μέσο αποθήκευσης με δυνατότητα ανάγνωσης από υπολογιστή το οποίο αποθηκεύει με ένα μη προσωρινό τρόπο ένα πρόγραμμα το οποίο περιλαμβάνει τουλάχιστον μια εντολή επεξεργασίας δεδομένων η οποία όταν εκτελείται από μια διάταξη επεξεργασίας δεδομένων προκαλεί τα εξής: παραγωγή σημάτων ελέγχου σε απόκριση μιας εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη, όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο ενός προκαθορισμένου μεγέθους μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων και την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου σε σχέση με κάθε μια εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων, όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης. 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 pointer, wherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, each data group including a plurality of data items and performing a data processing operation in response to control signals with respect to each said data group in n first source register and the second source register to create respective groups of result data that form a result of the data manipulation operation, wherein the operands of the data manipulation operation for each said data group is a selected data item identified in the data group of the first source register from the pointer and for each data item in the data group of the second source register.

Τουλάχιστον ένα παράδειγμα που περιγράφεται στο παρόν παρέχει μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει: μέσα για την αποθήκευση δεδομένων σε ένα πλήθος καταχωρητών, μέσα για την αποκωδικοποίηση μιας εντολής επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στα μέσα αποθήκευσης δεδομένων: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη, όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο ενός προκαθορισμένου μεγέθους μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων και μέσα για την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου σε σχέση με κάθε μια εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων, όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης. At least one example described herein provides a data processing arrangement comprising: means for storing data in a plurality of registers, means for decoding a data processing command to generate control signals, the data processing command specifying in the storage media data: a first source register, a second source register, and a pointer, wherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, while each data group includes a plurality of data elements and means for performing a data processing operation in response to control signals with respect to each said group of data in the first source register and the second source register for generating corresponding groups of data n results that form a result of the data processing operation, where the operands of the data processing operation for each said data group are a selected data item identified in the data group of the first register sourced by the pointer and for each data item in its data group second source register.

Η παρούσα εφεύρεση θα περιγράφει περαιτέρω, μέσω παραδείγματος μόνο, αναφορικά με τις υλοποιήσεις αυτής όπως εικονίζεται στα συνοδευτικά σχεδιαγράμματα, στα οποία: 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, Figure 3 schematically illustrates a variant of the embodiment of Figure 2,

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

Το Σχήμα 10 απεικονίζει σχηματικά ορισμένες παραλλαγές σε υλοποιήσεις της εκτέλεσης των εντολών επεξεργασίας δεδομένων του Σχήματος 9Β, Figure 10 schematically illustrates certain variations in embodiments of executing 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 δείχνει ένα παράδειγμα υλοποίησης της εκτέλεσης μιας εντολής επεξεργασίας δεδομένων, παρέχοντας περισσότερες λεπτομέρειες ορισμένων συγκεκριμένων πράξεων πολλαπλασιασμού OL οποίες πραγματοποιούνται, Figure 19 shows an example implementation of the execution of a data processing instruction, providing more details of some specific OL 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 device that includes a register storage circuit having a plurality of registers, a decoder circuit responsive to a data processing command to generate control signals, the data processing command specifying in a plurality of registers: a first source register, a second source register and a pointer, wherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, while each group data element includes a plurality of data elements and processing circuitry responsive to control signals to perform a data processing operation with respect to each said group of data in the first source register and the second source register for creating respective groups of result data that form a result of the data manipulation operation, wherein the operands of the data manipulation operation for each said data group is a selected data item identified in the data group of the first source register by the pointer and for each item data in the data group of the second source register.

Η εντολή που παρέχεται με αυτό τον τρόπο προκαλεί την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων στα στοιχεία διανύσματος κάθε ομάδας δεδομένων στον πρώτο καταχωρητή προέλευσης με ένα επιλεγμένο στοιχείο από την αντίστοιχη ομάδα δεδομένων στο δεύτερο καταχωρητή προέλευσης. Η άμεση τιμή δείκτη χρησιμοποιείται για την επιλογή του στοιχείου δεδομένων εντός κάθε ομάδας στοιχείων στον πρώτο καταχωρητή προέλευσης (δηλ. η ίδια θέση στοιχείου σε όλες τις ομάδες). Με άλλα λόγια, η εντολή προκαλεί την πραγματοποίηση μιας λειτουργίας στοιχείου κατά διάνυσμα εντός μιας ομάδας στοιχείων, ενώ ακριβώς η ίδια λειτουργία (συμπεριλαμβανόμενης της επιλογής στοιχείου) επαναλαμβάνεται σε κάθε ομάδα στο διάνυσμα. Αυτό παρέχει έναν αποτελεσματικό μηχανισμό για την υλοποίηση μιας τέτοιας λειτουργίας στοιχείου κατά διάνυσμα, ειδικά όσο αυξάνεται το εύρος του καταχωρητή (δηλ. το μήκος διανύσματος), εφόσον η τεχνική είναι εύκολα κλιμακούμενη. Επιπλέον, θα πρέπει να σημειωθεί ότι μια τέτοια ομαδοποιημένη εντολή στοιχείου κατά διάνυσμα μπορεί σε γενικές γραμμές να αναμένεται ότι θα μπορεί να υλοποιείται ως μια μοναδική μικρο-λειτουργία σε μια διάταξη επεξεργασίας δεδομένων, χωρίς τον επιπλέον λανθάνοντα χρόνο σε σύγκριση με μια ισοδύναμη κανονική λειτουργία διανύσματος, επειδή η επιλογή και επανάληψη των επεξεργασμένων στοιχείων δεδομένων ορίζεται και υλοποιείται στο επίπεδο «ομάδας δεδομένων», το οποίο πράγματι μπορεί να ορίζεται ότι είναι περιορισμένο σε μέγεθος για την οποία είναι δυνατή η υλοποίηση μιας τέτοιας μικρο-λειτουργίας. The command thus provided causes a data manipulation operation to be performed on the vector elements of each data group in the first source register with a selected element from the corresponding data group in the second source register. The direct pointer value is used to select the data element within each element group in the first source register (ie, the same element position in all groups). In other words, the command causes an element-by-vector operation to be performed within a group of elements, while exactly the same operation (including element selection) is repeated on each group in the vector. This provides an efficient mechanism for implementing such element-by-vector operation, especially as the register span (ie, vector length) increases, since the technique is easily scalable. Furthermore, it should be noted that such a grouped element-by-vector instruction can generally be expected to be implementable as a single micro-function in a data processor, without the extra latency compared to an equivalent normal vector function , because the selection and iteration of the processed data elements is defined and implemented at the "data group" level, which indeed can be defined to be limited in size for which it is possible to implement such a micro-function.

Η διάταξη επεξεργασίας δεδομένων μπορεί να διατάσσεται με ένα πλήθος τρόπων για την υποστήριξη της εκτέλεσης αυτής της εντολής επεξεργασίας δεδομένων, όπως συγκεκριμένα ο τρόπος με τον οποίο το επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη διαχειρίζεται και εφαρμόζεται σε κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης. Σε ορισμένες υλοποιήσεις το κύκλωμα επεξεργασίας περιλαμβάνει ένα κύκλωμα διαχείρισης στοιχείων δεδομένων που αποκρίνεται στα σήματα ελέγχου για την παροχή πολλαπλών στιγμιότυπων του επιλεγμένου στοιχείου δεδομένων σε πολλαπλά κυκλώματα λειτουργίας δεδομένων, όπου κάθε κύκλωμα λειτουργίας δεδομένων αποκρίνεται στα σήματα ελέγχου για την πραγματοποίηση της λειτουργίας επεξεργασίας δεδομένων σε σχέση με μια αντίστοιχη ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης. The data processing arrangement may be arranged in a number of ways to support the execution of this data processing instruction, such as how the selected data element identified in the data group of the first source register by the pointer is managed and applied to each data element in the data group of the second source register. In some embodiments the processing circuitry includes a data item management circuit responsive to control signals to provide multiple instances of the selected data item to multiple data operation circuits, wherein each data operation circuit is responsive to the control signals to perform the data processing operation in relation to with a corresponding group of data in the first source register and the second source register.

Μολονότι οι καταχωρητές προέλευσης που χρησιμοποιούνται από την εντολή επεξεργασίας δεδομένων μπορούν να προσδιορίζονται ελεύθερα, και οι παρούσες τεχνικές δεν επιβάλλουν περιορισμούς σε μια μορφή με την οποία πρέπει να ταυτίζονται οι τιμές δεδομένων σε αυτούς, οι παρούσες τεχνικές έχουν παρ' όλα αυτά προσδιορίσει ότι η εκτέλεση της εντολής επεξεργασίας δεδομένων μπορεί να βελτιώνεται εξαναγκάζοντας το περιεχόμενο των καταχωρητών προέλευσης να πάρει μια συγκεκριμένη μορφή από πριν. Ανάλογα σε ορισμένες υλοποιήσεις το κύκλωμα αποκωδικοποίησης αποκρίνεται σε μια εντολή προετοιμασίας δεδομένων για την παραγωγή περαιτέρω σημάτων ελέγχου, με την εντολή προετοιμασίας δεδομένων να προσδιορίζει μια θέση μνήμης και έναν καταχωρητή προορισμού, και όπου το κύκλωμα επεξεργασίας αποκρίνεται στα περαιτέρω σήματα ελέγχου για την ανάκτηση ενός υποκείμενου στοιχείου ομάδας δεδομένων που έχει το προκαθορισμένο μέγεθος από τη θέση μνήμης και τη συμπλήρωση του καταχωρητή προορισμού μέσω επανάληψης του υποκείμενου στοιχείου ομάδας δεδομένων. Με άλλα λόγια οι παρούσες τεχνικές παρέχουν μια άλλη εντολή, μια εντολή προετοιμασίας δεδομένων, διαταγμένη για την ανάκτηση ενός καθορισμένου υποκείμενου στοιχείου ομάδας δεδομένων και την επανάληψή του σε όλο το εύρος του καταχωρητή προορισμού. Ο καταχωρητής προορισμού μπορεί να είναι ο πρώτος καταχωρητής προέλευσης. Συνεπώς, το περιεχόμενο του πρώτου καταχωρητή προέλευσης μπορεί να προετοιμάζεται από την εντολή προετοιμασίας δεδομένων, ώστε το επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη ήδη επαναλαμβάνεται σε αυτή τη θέση σε όλες τις ομάδες δεδομένων του πρώτου καταχωρητή δεδομένων, πριν την εκτέλεση της μετέπειτα εντολής επεξεργασίας δεδομένων. Although the source registers used by the data processing instruction may be freely specified, and the present techniques impose no restrictions on a format in which the data values therein must be identified, the present techniques have nevertheless determined that the execution of the data manipulation instruction can be improved by forcing the content of the source registers to take a certain form beforehand. According to some embodiments, the decoding circuitry is responsive to a data preparation command to produce further control signals, wherein the data preparation command specifies a memory location and a destination register, and wherein the processing circuitry is responsive to the further control signals to retrieve a subject data group element having the predetermined size from the memory location and filling the destination register by iterating the underlying data group element. In other words, the present techniques provide another instruction, a prepare data instruction, ordered to retrieve a specified underlying data group element and iterate over the entire range of the destination register. The destination register can be the first source register. Accordingly, the contents of the first source register may be prepared by the prepare data instruction so that the selected data item identified in the data group of the first source register by the pointer is already repeated at that location in all data groups of the first data register, before executing the subsequent data processing command.

Το πολλαπλάσιο ακεραίου, το οποίο ορίζει το λόγο μεγέθους μεταξύ κάθε ενός από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης και το προκαθορισμένο μέγεθος μιας ομάδας δεδομένων (τουλάχιστον δύο φορές αυτό το προκαθορισμένο μέγεθος), μπορεί να ορίζεται με διάφορους τρόπους και να διατηρείται στη διάταξη επεξεργασίας δεδομένων, όμως σε ορισμένες υλοποιήσεις το κύκλωμα αποθήκευσης καταχωρητών περιλαμβάνει έναν καταχωρητή ελέγχου για την αποθήκευση μιας ένδειξης του πολλαπλάσιου ακεραίου. The integer multiple, which defines the size ratio between each of the first source register and the second source register and the default size of a data group (at least twice that default size), can be defined in various ways and is held in data processing device, but in some embodiments the register storage circuit includes a control register for storing an indication of the multiple integer.

Περαιτέρω, οι παρούσες τεχνικές προβλέπουν ότι μπορεί να παρέχεται μια ειδική εντολή ελέγχου η οποία θα επιτρέπει την τροποποίηση αυτού του πολλαπλάσιου ακεραίου, ενώ σε ορισμένες υλοποιήσεις το κύκλωμα αποκωδικοποίησης αποκρίνεται σε μια εντολή ελέγχου για την τροποποίηση της ένδειξης του πολλαπλάσιου ακεραίου μέχρι μια προκαθορισμένη μέγιστη τιμή για τη διάταξη επεξεργασίας δεδομένων. Further, the present techniques provide that a special control command may be provided which will allow this multiple integer to be modified, and in some embodiments the decoding circuit is responsive to a control command to modify the indication of the integer multiple up to a predetermined maximum value for the data processing device.

Το αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων μπορεί να χρησιμοποιείται με διάφορους τρόπους, όμως σε ορισμένες υλοποιήσεις η εντολή επεξεργασίας δεδομένων περαιτέρω προσδιορίζει έναν καταχωρητή αποτελέσματος στο πλήθος των καταχωρητών, και το κύκλωμα επεξεργασίας περαιτέρω αποκρίνεται στα σήματα ελέγχου για την εφαρμογή του αποτελέσματος της λειτουργίας επεξεργασίας δεδομένων στον καταχωρητή αποτελέσματος. Το κύκλωμα επεξεργασίας μπορεί να αποκρίνεται στα σήματα ελέγχου για την αποθήκευση του αποτελέσματος της λειτουργίας επεξεργασίας δεδομένων στον καταχωρητή αποτελέσματος. Εναλλακτικά, το κύκλωμα επεξεργασίας μπορεί να αποκρίνεται στα σήματα ελέγχου για την εφαρμογή του αποτελέσματος της λειτουργίας επεξεργασίας δεδομένων στο δεύτερο καταχωρητή προέλευσης. Με άλλα λόγια, ο δεύτερος καταχωρητής προέλευσης μπορεί να παρέχει έναν καταχωρητή συσσώρευσης. The result of the data processing operation may be used in a variety of ways, but in some embodiments the data processing instruction further specifies a result register in the plurality of registers, and the processing circuitry is further responsive to control signals to apply the result of the data processing operation to result register. The processing circuit may be responsive to the control signals to store the result of the data processing operation in the result register. Alternatively, the processing circuit may be responsive to the control signals to apply the result of the data processing operation to the second source register. In other words, the second source register may provide an accumulation register.

Η λειτουργία επεξεργασίας δεδομένων μπορεί να λαμβάνει το περιεχόμενο μόνο του πρώτου καταχωρητή προέλευσης και του δεύτερου καταχωρητή προέλευσης (και η άμεση τιμή δείκτη) ως τελεστή της, όμως δεν περιορίζεται σε αυτούς τους τελεστές και σε ορισμένες υλοποιήσεις η εντολή επεξεργασίας δεδομένων περαιτέρω προσδιορίζει τουλάχιστον έναν περαιτέρω καταχωρητή προέλευσης στο πλήθος των καταχωρητών, όπου το κύκλωμα επεξεργασίας αποκρίνεται στα σήματα ελέγχου για την πραγματοποίηση της λειτουργίας επεξεργασίας δεδομένων όσον αφορά περαιτέρω σε κάθε εν λόγω ομάδα δεδομένων στον τουλάχιστον ένα περαιτέρω καταχωρητή για τη δημιουργία των αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν το αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων, και όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων περαιτέρω αποτελούν κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του τουλάχιστον ενός περαιτέρω καταχωρητή προέλευσης. The data manipulation operation may take the contents of only the first source register and the second source register (and the immediate pointer value) as its operand, but is not limited to these operands, and in some implementations the further data manipulation instruction specifies at least one further source register in the plurality of registers, wherein the processing circuit is responsive to the control signals to perform the data processing operation with respect to further in each said group of data in the at least one further register to create the corresponding groups of result data that form the result of the operation data processing, and wherein the operators of the data processing operation for each said data group further constitute each data item in the data group of the at least one further source register.

Αυτός ο περαιτέρω καταχωρητής προέλευσης μπορεί να παίζει ένα πλήθος ρόλων στη λειτουργία επεξεργασίας δεδομένων. Σε ορισμένες υλοποιήσεις το κύκλωμα επεξεργασίας αποκρίνεται στα σήματα ελέγχου για τη συσσώρευση του αποτελέσματος της λειτουργίας επεξεργασίας δεδομένων με το προηγούμενο περιεχόμενο στον τουλάχιστον ένα περαιτέρω καταχωρητή προέλευσης. This further source register can play a number of roles in the data processing operation. In some embodiments the processing circuit is responsive to the control signals to accumulate the result of the data processing operation with the previous content in the at least one further source register.

Η λειτουργία επεξεργασίας δεδομένων μπορεί να είναι μια αριθμητική πράξη, για παράδειγμα μπορεί να είναι μια πράξη πολλαπλασιασμού. Η λειτουργία επεξεργασίας δεδομένων μπορεί να είναι μια πράξη κινητής υποδιαστολής η οποία περιλαμβάνει: την εξαγωγή τουλάχιστον ενός πρώτου στοιχείου δεδομένων και ενός δεύτερου στοιχείου δεδομένων από κάθε έναν από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης, την εκτέλεση πράξεων πολλαπλασιασμού σε συνδυασμό τουλάχιστον πρώτων ζευγών στοιχείων δεδομένων και δεύτερων ζευγών στοιχείων δεδομένων και την άθροιση των αποτελεσμάτων των πράξεων πολλαπλασιασμού. The data processing operation may be an arithmetic operation, for example it may be a multiplication operation. The data processing operation may be a floating point operation which includes: extracting at least one first data item and one second data item from each of the first source register and the second source register, performing multiplication operations on a combination of at least first pairs data items and second pairs of data items and summing the results of the multiplication operations.

Σε ορισμένες υλοποιήσεις οι πράξεις πολλαπλασιασμού περιλαμβάνουν τον πολλαπλασιασμό σε συνδυασμό των πρώτων ζευγών στοιχείων δεδομένων, των δεύτερων ζευγών στοιχείων δεδομένων, των τρίτων ζευγών στοιχείων δεδομένων και των τέταρτων ζευγών στοιχείων δεδομένων. In some embodiments the multiplication operations include multiplying a combination of the first data item pairs, the second data item pairs, the third data item pairs, and the fourth data item pairs.

Σε ορισμένες υλοποιήσεις η εντολή επεξεργασίας δεδομένων περαιτέρω προσδιορίζει έναν καταχωρητή συσσώρευσης στο πλήθος των καταχωρητών και η λειτουργία επεξεργασίας δεδομένων είναι μια πράξη κινητής υποδιαστολής και συσσώρευσης η οποία περαιτέρω περιλαμβάνει: τη φόρτωση μιας τιμής συσσωρευτή από τον καταχωρητή συσσωρευτή, την άθροιση των αποτελεσμάτων των πράξεων πολλαπλασιασμού με την τιμή συσσωρευτή και την αποθήκευση ενός αποτελέσματος της άθροισης στον καταχωρητή συσσωρευτή. In some embodiments the data processing instruction further specifies an accumulation register in the plurality of registers and the data processing operation is a floating point and accumulation operation further comprising: loading an accumulator value from the accumulator register, summing the results of the multiplication operations with the accumulator value and storing a result of the sum in the accumulator register.

Σε ορισμένες υλοποιήσεις η λειτουργία επεξεργασίας δεδομένων είναι μια πράξη πολλαπλασιασμού-συσσώρευσης. In some embodiments the data processing operation is a multiply-accumulate operation.

Σε ορισμένες υλοποιήσεις το στοιχείο δεδομένων σε κάθε μια εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης είναι ένα ζεύγος τιμών δεδομένων που αντιπροσωπεύουν ένα σύνθετο αριθμό και η λειτουργία επεξεργασίας δεδομένων είναι ένας πολλαπλασιασμός-συσσώρευση σύνθετων αριθμών. Με άλλα λόγια ένα «σύνθετο ζεύγος» (αναπαρίσταται από δύο ανεξάρτητες τιμές δεδομένων) μπορεί να επεξεργάζεται ως στοιχείο δεδομένων από τις παρούσες τεχνικές, με τρόπο ώστε οι περιγραφείσες λειτουργίες στοιχείου με διάνυσμα να μπορούν επίσης να εφαρμόζονται σε σύνθετους αριθμούς. Μια αποκλειστική αντίστοιχη εντολή μπορεί συνεπώς να παρέχεται επίσης για τον προσδιορισμό σύνθετων στοιχείων τα οποία πρόκειται να υπόκεινται στη λειτουργία επεξεργασίας δεδομένων που ενεργεί στις σύνθετες τιμές (για παράδειγμα ένας πολλαπλασιασμός συσσώρευση σύνθετων αριθμών). In some implementations the data element in each said group of data in the first source register and the second source register is a pair of data values representing a complex number and the data processing operation is a multiply-accumulate complex number. In other words a "complex pair" (represented by two independent data values) can be processed as a data element by the present techniques, such that the described vector element operations can also be applied to complex numbers. A dedicated matching command can therefore also be provided to specify complex elements which are to be subjected to the data processing operation acting on the complex values (for example a multiplication accumulation of complex numbers).

Σε ορισμένες υλοποιήσεις η εντολή επεξεργασίας δεδομένων περαιτέρω προσδιορίζει μια παράμετρο περιστροφής, όπου το κύκλωμα επεξεργασίας αποκρίνεται στην παράμετρο περιστροφής για την πραγματοποίηση του πολλαπλασιασμού-συσσώρευσης σύνθετων αριθμών χρησιμοποιώντας μια επιλεγμένη αντιμετάθεση των τιμών δεδομένων και των προσήμων τους τα οποία υπόκεινται στη λειτουργία επεξεργασίας δεδομένων. Το γεγονός αυτό προσδίδει ευελιξία στο πλήθος πράξεων σύνθετων αριθμών οι οποίες μπορούν να εκτελούνται μέσω της εντολής επεξεργασίας δεδομένων και για παράδειγμα επιτρέπει την παροχή προσήμων στις υποκείμενες τιμές δεδομένων σύνθετων ζευγών, και ακόμη για κάθε αντιμετάθεση περιστροφής των προσήμων των τιμών δεδομένων σύνθετων ζευγών ώστε να είναι άμεσα διαθέσιμα στον προγραμματιστή. In some embodiments the data processing instruction further specifies a rotation parameter, wherein the processing circuitry is responsive to the rotation parameter to perform the multiply-accumulate of complex numbers using a selected permutation of the data values and their signs which are subject to the data processing operation. This fact lends flexibility to the number of complex number operations that can be performed via the data manipulation command and for example allows providing signs to the underlying complex pair data values, and even for any rotation permutation of the signs of the complex pair data values to be readily available to the developer.

Σε ορισμένες υλοποιήσεις η λειτουργία επεξεργασίας δεδομένων είναι μια λογική πράξη. In some implementations the data processing operation is a logical operation.

Τουλάχιστον ένα παράδειγμα υλοποίησης που περιγράφεται στο παρόν παρέχει μια μέθοδο επεξεργασίας δεδομένων η οποία περιλαμβάνει: την αποκωδικοποίηση μιας εντολής επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη, όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο από ένα προκαθορισμένο μέγεθος μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων και την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου σε σχέση με κάθε μια εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων, όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης. At least one exemplary embodiment described herein provides a data processing method comprising: decoding a data processing instruction to generate control signals, the data processing instruction specifying in a plurality of registers: a first source register, a second source register and a pointer, wherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, and each data group includes a plurality of data items and performing an operation processing data in response to the control signals with respect to each said group of data in the first source register and the second source register to generate respective groups of result data forming a result of the processing operation of data, wherein the operands of the data processing operation for each said data group are a selected data item identified in the data group of the first source register by the pointer and for each data item in the data group of the second source register.

Τουλάχιστον ένα παράδειγμα υλοποίησης που περιγράφεται στο παρόν παρέχει ένα μέσο αποθήκευσης με δυνατότητα ανάγνωσης από υπολογιστή το οποίο αποθηκεύει με ένα μη προσωρινό τρόπο ένα πρόγραμμα το οποίο περιλαμβάνει τουλάχιστον μια εντολή επεξεργασίας δεδομένων η οποία όταν εκτελείται από μια διάταξη επεξεργασίας δεδομένων προκαλεί τα εξής: την παραγωγή σημάτων ελέγχου σε απόκριση της εντολής επεξεργασίας δεδομένων, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη, όπου κάθε<'>ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο από ένα προκαθορισμένο μέγεθος μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων και την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου σε σχέση με κάθε μια εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων, όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης. At least one example 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 following: to produce control signals in response to the data processing instruction, the data processing instruction specifying in a plurality of registers: a first source register, a second source register, and a pointer, wherein each of the first source register and the second source register having a size which is an integer multiple of at least twice a predetermined size of a data group, each data group including a plurality of data items and performing a data processing operation in response to control signals with respect to each said group group of data in the first source register and the second source register to create respective groups of result data that form a result of the data processing operation, wherein the operands of the data processing operation for each said data group is a selected data item identified in the data group of the first source register by the pointer and for each data item in the data group of the second source register.

Τουλάχιστον ένα παράδειγμα υλοποίησης που περιγράφεται στο παρόν παρέχει μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει μέσα για την αποθήκευση δεδομένων σε ένα πλήθος καταχωρητών, μέσα για την αποκωδικοποίηση μιας εντολής επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στα μέσα για την αποθήκευση δεδομένων: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο από ένα προκαθορισμένο μέγεθος μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων και μέσα για την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου σε σχέση με κάθε μια εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων, όπου OL τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης. At least one example embodiment described herein provides a data processing device that includes means for storing data in a plurality of registers, means for decoding a data processing command to generate control signals, the data processing command specifying in the means for the data storage: a first source register, a second source register and a pointer where each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, while each data group includes a plurality of data elements and means for performing a data processing operation in response to control signals with respect to each said data group in the first source register and the second source register for generating respective n groups of result data forming a result of the data processing operation, where OL operands of the data processing operation for each said data group is a selected data item identified in the data group of the first source register from the pointer and for each data item in the group data of the second source register.

Τουλάχιστον ένα παράδειγμα υλοποίησης που περιγράφεται στο παρόν παρέχει μια εικονική μηχανή η οποία παρέχεται από ένα πρόγραμμα υπολογιστή το οποίο εκτελείται σε μια διάταξη επεξεργασίας δεδομένων, με την εν λόγω εικονική μηχανή να παρέχει ένα περιβάλλον εκτέλεσης εντολών που αντιστοιχεί σε μια από τις προαναφερθείσες διατάξεις επεξεργασίας δεδομένων. At least one example embodiment described herein provides a virtual machine that is provided by a computer program running on 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 on.

Το Σχήμα 2 απεικονίζει σχηματικά τη χρήση μιας εντολής προετοιμασίας δεδομένων 32. Η εντολή προετοιμασίας δεδομένων 32 περιλαμβάνει ένα τμήμα λειτουργικού κώδικα (καθορίζοντάς το ως μια εντολή προετοιμασίας δεδομένων), έναν προσδιοριστή καταχωρητή 36 και έναν προσδιοριστή θέσης μνήμης 38. Η εκτέλεση αυτής της εντολής από τη διάταξη επεξεργασίας δεδομένων αυτής της υλοποίησης προκαλεί τον προσδιορισμό μιας ομάδας δεδομένων 40 η οποία αποθηκεύεται σε μια μνήμη 30 (με παραπομπή σε αυτή από την καθορισμένη θέση μνήμης και, για παράδειγμα να εκτείνεται σε περισσότερες από μια διευθύνσεις, ανάλογα το μέγεθος της καθορισμένης ομάδας δεδομένων) και περιλαμβάνει (σε αυτή την εικονιζόμενη υλοποίηση) δύο στοιχεία δεδομένων b0 και b1 (αναφέρονται ως 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 (referred to by the designated memory location and, for example, spanning more than one address, depending on the size of the designated data group ) and includes (in this illustrated embodiment) two data elements b0 and b1 (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. Η εκτέλεση της εντολής 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. Figure 3 schematically illustrates a variant 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 instruction 60 has the same structure, i.e., to include an opcode 62, a register identifier 64, and a designated memory location 66. Execution of instruction 60 causes memory location 66 to be accessed and stored while data group 68 there (ie, for example starting at this memory location and extending to a predetermined number of data elements) includes data elements c0, c1, c2 and c3 (referred to 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 OL οποίες εφαρμόζουν μια λειτουργία επεξεργασίας δεδομένων σε σχέση με τα στοιχεία δεδομένων που λαμβάνονται από τον καταχωρητή Β και τις ομάδες δεδομένων που λαμβάνονται από τον καταχωρητή Α. Όπως προαναφέρθηκε η εντολή 100 μπορεί να προσδιορίζει έναν καταχωρητή αποτελεσμάτων (μέσω του προσδιοριστή 110) και τα αποτελέσματα αυτών των λειτουργιών να εγγράφονται στα αντίστοιχα στοιχεία δεδομένων ενός καταχωρητή αποτελεσμάτων 128. Πράγματι, σε ορισμένες υλοποιήσεις ο καταχωρητής αποτελεσμάτων 128 και ο καταχωρητής Α μπορεί να είναι ο ίδιος καταχωρητής, επιτρέποντας για παράδειγμα την πραγματοποίηση λειτουργιών πολλαπλασιασμού-συσσώρευσης σε σχέση με το περιεχόμενο αυτού του καταχωρητή (όπως δείχνεται σχηματικά στο Σχήμα 4 μέσω του διακεκομμένου βέλους). Ας σημειωθεί επίσης ότι οι καταχωρητές που δείχνονται στο Σχήμα 4Β απεικονίζονται εσκεμμένα ως πιθανώς εκτεινόμενοι (και σας δύο πλευρές) πέρα από το τμήμα στο οποίο πραγματοποιείται πρόσβαση από το παράδειγμα εντολής. Αυτό αντιστοιχεί στο γεγονός ότι σε ορισμένες υλοποιήσεις (όπως οι προαναφερθείσες Επεκτάσεις Κλιμακούμενων Διανυσμάτων (SVE)) το μέγεθος διανύσματος μπορεί να μην προσδιορίζεται. Για παράδειγμα θεωρώντας το Σχήμα 4Β ότι απεικονίζει τη λειτουργία της εντολής για μια ομάδα, για παράδειγμα, δύο στοιχείων δεδομένων 64 bit (b0 και b1) σε ένα παράδειγμα 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. Therefore, after accessing these data elements they are passed to the processing circuit operation circuit, which is represented in Figure 4B by the OL operation units 120, 122, 124 and 126 which perform a data processing operation with respect to the data elements that 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 (both sides) beyond the portion accessed by the example instruction. 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 as illustrating the operation of the instruction for a group of, say, two 64-bit data items (b0 and b1) 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, οι οποίες μπορούν για παράδειγμα να αποθηκεύουν τα αντίστοιχα στοιχεία δεδομένων σε έναν καταχωρητή. Ο πολυπλέκτης 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 contents 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 performed by the functional units 140-146 is transferred to the storage units 150-156, which may 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Β, όμως με αντίτιμο την πιο σύνθετη καλωδίωση που απαιτείται. Και τα δύο παραδείγματα του Σχήματος 5Α και του Σχήματος 5Β συνεπώς απεικονίζουν την πολυπλοκότητα που μπορεί να προκύπτει όταν γίνεται η προσπάθεια υλοποίησης ενός πλήρως ευέλικτου και διαμορφώσιμου συνόλου μονάδων αποθήκευσης εισόδου, λειτουργικών μονάδων και μονάδων αποθήκευσης εξόδου, συγκεκριμένα στην περίπτωση στην οποία αυξάνεται ο αριθμός των σχετικών στοιχείων δεδομένων. Για παράδειγμα, εξετάζοντας το παράδειγμα του Σχήματος 5Α και διπλασιάζοντας τον αριθμό των μονάδων αποθήκευσης εισόδου, λειτουργικών μονάδων και μονάδων αποθήκευσης εξόδου σε οκτώ κάθε μια, θα είχε ως αποτέλεσμα την ανάγκη για έναν οκταπλό πολυπλέκτη εισόδου. Αφετέρου μια τέτοια οκταπλή υλοποίηση που χρησιμοποιεί την προσέγγιση του Σχήματος 5Β θα απαιτούσε οκτώ διαδρομές από κάθε μονάδα αποθήκευσης εισόδου προς κάθε λειτουργική μονάδα, δηλ. 64 διαδρομές σε σύνολο, όπως και η απαίτηση κάθε λειτουργική μονάδα να μπορεί να λαμβάνει οκτώ διαφορετικές εισόδους και να επιλέγει ανάμεσά τους. Θα γίνει επομένως κατανοητό ότι η προσέγγιση που λαμβάνεται από τις υλοποιήσεις των υφιστάμενων τεχνικών οι οποίες επαναχρησιμοποιούν τα τμήματα δεδομένων (π.χ. ομάδες δεδομένων) σε ένα εύρος καταχωρητή επιτρέπει την επιβολή περιορισμών στην πολλαπλότητα και την πολυπλοκότητα των εισόδων προς τις απαιτούμενες μονάδες ελέγχου. Επιπλέον ωστόσο, θα πρέπει να σημειωθεί ότι στα προαναφερθέντα πλαίσια SVE/ASIMD, η ομαδοποιημένη εντολή στοιχείο προς διάνυσμα του Σχήματος 4Α μπορεί να αναμένεται ότι θα είναι υλοποιήσιμη ως μια μοναδική μικρο-λειτουργία, χωρίς τον επιπλέον λανθάνοντα χρόνο σε σύγκριση με την ισοδύναμη κανονική πράξη διανύσματος, επειδή η επιλογή και η επανάληψη παραμένει εντός ενός κόκκου διανύσματος SVE, ενώ το ASIMD έχει ήδη τους μηχανισμούς για κάτι τέτοιο εντός των 128 bit (π.χ. χρησιμοποιώντας την εντολή «FMLA (ανά στοιχείο)»). Ως εκ τούτου η εντολή που δείχνεται στο Σχήμα 4Α μπορεί να αναμένεται ότι είναι πιο αποτελεσματική από μια ακολουθία ανεξάρτητων εντολών επανάληψης (DUP) ακολουθούμενη από μια κανονική πράξη διανύσματος. 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. Both the 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, particularly in the case where the number of relevant data elements. 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 (eg using the 'FMLA (per element)' instruction). 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) εντός ενός επαναλαμβανόμενου υπο-τμήματος (ομάδα δεδομένων) του καταχωρητή Β και αυτό το στοιχείο δεδομένων πολλαπλασιάζεται με το διάνυσμα που αναπαρίσταται από την αντίστοιχη ομάδα δεδομένων του καταχωρητή A, για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων οι οποίες συμπληρώνουν το περιεχόμενο του καταχωρητή αποτελεσμάτων. Στο Σχήμα 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). Τα σύνθετα ζεύγη που επελέγησαν από τον καταχωρητή Α και Β () μεταβιβάζονται στις σύνθετες συνδυασμένες μονάδες πολλαπλασιασμού-συσσώρευσης (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 composite pairs of register B are (b3,b2) and (b1,b0), and the composite 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 () are passed to composite combined multiply-accumulate (CFMA) units 234, 236, 238, 240, where each composite pair from register A forms an input to each of the CFMA units respectively, while the selected composite pair from one data group in register B forms another input to CFMA units 234 and 236 while the other selected composite pair from the next data group in register B forms another input to CFMA units 238 and 240. corresponding results of the complex combined multiply-accumulate operations are accumulated as corresponding complex pairs in the specified accumulation register, each of which forms the third input to each of the corresponding 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 χ 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. 16 bit x 16 bit -> 64 bit or 16 bit x 16 bit -> 32 bit. "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 that 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 πραγματοποιείται εδώ σε βάση ομάδας δεδομένων προς ομάδα δεδομένων (σε βάση «τεμάχιο προς τεμάχιο»), ώστε το περιεχόμενο της λωρίδας 0 του καταχωρητή 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 also rage as piece 0 and piece 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 ("chunk by chunk") so that the contents of lane 0 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 the execution of the data processing instruction illustrated in Figure 13 may be usefully 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.

Το Σχήμα 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. Στα πλαίσια της προετοιμασίας αυτού μια στήλη (σκιασμένη) του πίνακα Α έχει φορτωθεί στον καταχωρητή ν0 καί μια γραμμή (σκιασμένη) του πίνακα Β έχει φορτωθεί στον καταχωρητή M2. Οι συσσωρευτές για τον πίνακα αποτελέσματος C αποθηκεύονται στους καταχωρητές ν4-ν7. Σημειώστε ότι μολονότι οι τιμές που φορτώνονται από τον πίνακα Α απεικονίζονται ως μια στήλη, οι πίνακες αντιμετατίθενται εύκολα και/ή παρεμβάλλονται ώστε να είναι δυνατή η πραγματοποίηση των συνεχόμενων φορτώσεων διανυσμάτων από κάθε πίνακα προέλευσης. Θα πρέπει να σημειωθεί σε αυτά τα πλαίσια ότι ο πολλαπλασιασμός πινάκων είναι μια πράξη Ο(n<3>) και συνεπώς οι βοηθητικές εργασίες για την προετοιμασία των δεδομένων του πίνακα για επεξεργασία θα ήταν μια πράξη Ο(n<2>) και συνεπώς ένα αμελητέο φορτίο για επαρκώς μεγάλες τιμές του n. Μια εντολή που αντιστοιχεί στο παράδειγμα που δείχνεται θα μπορούσε να αναπαρίσταται ως FMA4 ν4-ν7, ν2, ν0[0-3]. Εδώ το FMA4 αναπαριστά την ετικέτα (ή ισοδύναμα το λειτουργικό κώδικα) αυτής της εντολής, μολονότι οι ν4-ν7 είναι το σύνολο των καταχωρητών συσσώρευσης, ν2 είναι ο καταχωρητής προέλευσης από τον οποίο λαμβάνεται το πλήρες περιεχόμενο, μολονότι ο ν0 είναι ο καταχωρητής προέλευσης από τον οποίο λαμβάνεται ένα σύνολο στοιχείων δεδομένων (δεικτοδοτούμενο 0-3). FI εκτέλεση αυτής της εντολής έχει ως αποτέλεσμα στη συνέχεια τις τέσσερις πράξεις: 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 n0 and a row (shaded) of array B is loaded into register M2. The accumulators for the result array C are stored in registers v4-v7. Note that although the values loaded from array A are displayed as a column, the arrays are easily permuted and/or interleaved to allow 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 content is taken, although v0 is the source register from which a set of data items (numbered 0-3) is received. FI execution of this command then results in the 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 επεξεργάζονται σε δύο διακριτές ομάδες δεδομένων. Οι δύο ομάδες δεδομένων του καταχωρητή νΟ επίσης αναπαριστούν τμήματα του καταχωρητή κατά μήκος των οποίων επαναλαμβάνεται ένα επιλεγμένο στοιχείο δεδομένων, στο παράδειγμα του Σχήματος 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. The two groups of data of register V0 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. The flow begins at step 650 where the data processing command is decoded and in step 652 the corresponding control signals are produced. 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 likewise the execution of the instruction as described with respect to Figure 14, 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 pointer. Control signals are generated in response to the command, causing the processing circuitry to perform a data manipulation operation with respect to each group of data in the first source register and the second source register to generate corresponding groups of result data which form a result of the data manipulation operation . Each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, and each data group includes a plurality of data items. The operators of the data processing operation for each said data group are a selected data item identified in the data group of the first source register by the pointer and for each data item in the data group of the second source register. A technique for element-by-vector operation that can scale easily by increasing register width.

Στην παρούσα αίτηση, οι λέξεις «διαμορφωμένο για...» ή «διαταγμένο για» χρησιμοποιούνται με τη σημασία ότι ένα στοιχείο μιας συσκευής έχει μια διαμόρφωση ικανή να εκτελεί την καθορισμένη λειτουργία. Σε αυτά τα πλαίσια, μια «διαμόρφωση» σημαίνει μια διάταξη ή έναν τρόπο διασύνδεσης υλικού ή λογισμικού. Για παράδειγμα, η συσκευή μπορεί να έχει ειδικό υλικό το οποίο παρέχει την καθορισμένη λειτουργία ή ένας επεξεργαστής ή άλλη συσκευή επεξεργασίας μπορεί να προγραμματίζεται για την εκτέλεση της λειτουργίας. Οι όροι «διαμορφωμένο για» ή «διαταγμένο για» δεν υπονοούν ότι το στοιχείο της συσκευής πρέπει να αλλάζει με κάποιο τρόπο για την παροχή της καθορισμένης λειτουργίας. 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 terms "configured for" or "intended for" do not imply that the device element must be changed in any 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 (24)

ΑΞΙΩΣΕΙΣ 1. Μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει:1. A data processing device which includes: ένα κύκλωμα αποθήκευσης καταχωρητών που έχει ένα πλήθος καταχωρητών,a register storage circuit having a plurality of registers; ένα κύκλωμα αποκωδικοποιητή που αποκρίνεται σε μια εντολή επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στο πλήθος των καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη,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 pointer; όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης να έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο από ένα προκαθορισμένο μέγεθος μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων, καιwherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, each data group including a plurality of data elements, and ένα κύκλωμα επεξεργασίας που αποκρίνεται στα σήματα ελέγχου για την εκτέλεση μιας λειτουργίας επεξεργασίας δεδομένων η οποία περιλαμβάνει την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε σχέση με κάθε εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων,a processing circuit responsive to the control signals to perform a data processing operation which includes performing a data processing operation with respect to each said group of data in the first source register and the second source register to generate corresponding groups of result data forming a result of the data processing operation, όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης.wherein the operators of the data processing operation for each said data group are a selected data item identified in the data group of the first source register by the pointer and for each data item in the data group of the second source register. 2. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 1, όπου το κύκλωμα επεξεργασίας περιλαμβάνει ένα κύκλωμα διαχείρισης στοιχείων δεδομένων που αποκρίνεται στα σήματα ελέγχου για την παροχή πολλαπλών στιγμιότυπων του επιλεγμένου στοιχείου δεδομένων προς πολλαπλά κυκλώματα λειτουργίας δεδομένων, όπου κάθε κύκλωμα λειτουργίας δεδομένων αποκρίνεται στα σήματα ελέγχου για την πραγματοποίηση της λειτουργίας επεξεργασίας δεδομένων σε σχέση με μια αντίστοιχη ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης.2. The data processing device as claimed in claim 1, wherein the processing circuitry comprises a data item management circuit responsive to control signals for providing multiple snapshots of the selected data item to multiple data operation circuits, each data operation circuit being responsive to the signals control for performing the data processing operation with respect to a corresponding group of data in the first source register and the second source register. 3. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 1 ή στην αξίωση 2, όπου το κύκλωμα αποκωδικοποιητή αποκρίνεται σε μια εντολή προετοιμασίας δεδομένων για την παραγωγή περαιτέρω σημάτων ελέγχου, με την εντολή προετοιμασίας δεδομένων να προσδιορίζει μια θέση μνήμης και έναν καταχωρητή προορισμού,3. The data processing device as claimed in claim 1 or claim 2, wherein the decoder circuit is responsive to a data preparation command to produce further control signals, the data preparation command specifying a memory location and a destination register, και όπου το κύκλωμα επεξεργασίας αποκρίνεται στα περαιτέρω σήματα ελέγχου για την ανάκτηση ενός υποκείμενου στοιχείου ομάδας δεδομένων που έχει το προκαθορισμένο μέγεθος από τη θέση μνήμης και τη συμπλήρωση του καταχωρητή προορισμού μέσω επανάληψης του υποκείμενου στοιχείου ομάδας δεδομένων.and wherein the processing circuit is responsive to the further control signals for retrieving an underlying data group element having the predetermined size from the memory location and populating the destination register by repeating the underlying data group element. 4. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 3, όπου ο καταχωρητής προορισμού είναι ο πρώτος καταχωρητής προέλευσης.4. The data processing device as claimed in claim 3, wherein the destination register is the first source register. 5. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε προηγούμενη αξίωση, όπου το κύκλωμα αποθήκευσης καταχωρητών περιλαμβάνει έναν καταχωρητή ελέγχου για την αποθήκευση μιας ένδειξης του πολλαπλάσιου ακεραίου.5. The data processing device as claimed in any preceding claim, wherein the register storage circuit includes a control register for storing an indication of the multiple integer. 6. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 5, όπου το κύκλωμα αποκωδικοποιητή αποκρίνεται σε μια εντολή ελέγχου για την τροποποίηση της ένδειξης του πολλαπλάσιου ακεραίου έως μια προκαθορισμένη μέγιστη τιμή για τη διάταξη επεξεργασίας δεδομένων.6. The data processing device as claimed in claim 5, wherein the decoder circuit is responsive to a control command to modify the indication of the multiple integer to a predetermined maximum value for the data processing device. 7. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε προηγούμενη αξίωση, όπου η εντολή επεξεργασίας δεδομένων περαιτέρω προσδιορίζει έναν καταχωρητή αποτελεσμάτων στο πλήθος των καταχωρητών,7. The data processing device as claimed in any preceding claim, wherein the data processing command further specifies a result register in the plurality of registers, και το κύκλωμα επεξεργασίας αποκρίνεται περαιτέρω στα σήματα ελέγχου για την εφαρμογή του αποτελέσματος της λειτουργίας επεξεργασίας δεδομένων στον καταχωρητή αποτελεσμάτων.and the processing circuit is further responsive to the control signals to apply the result of the data processing operation to the result register. 8. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 7, όπου το κύκλωμα επεξεργασίας αποκρίνεται στα σήματα ελέγχου για την αποθήκευση του αποτελέσματος της λειτουργίας επεξεργασίας δεδομένων στον καταχωρητή αποτελεσμάτων.8. The data processing device as claimed in claim 7, wherein the processing circuit is responsive to the control signals to store the result of the data processing operation in the result register. 9. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις αξιώσεις 1-6, όπου το κύκλωμα επεξεργασίας αποκρίνεται στα σήματα ελέγχου για την εφαρμογή του αποτελέσματος της λειτουργίας επεξεργασίας δεδομένων στο δεύτερο καταχωρητή προέλευσης.9. The data processing device as claimed in any one of claims 1-6, wherein the processing circuit is responsive to the control signals for applying the result of the data processing operation to the second source register. 10. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε προηγούμενη αξίωση,10. The data processing arrangement as claimed in any preceding claim, όπου η εντολή επεξεργασίας δεδομένων περαιτέρω προσδιορίζει τουλάχιστον έναν περαιτέρω καταχωρητή προέλευσης στο πλήθος των καταχωρητών,wherein the data processing instruction further specifies at least one further source register in the plurality of registers; όπου το κύκλωμα επεξεργασίας αποκρίνεται στα σήματα ελέγχου για την πραγματοποίηση της λειτουργίας επεξεργασίας δεδομένων σε περαιτέρω σχέση με κάθε μια από τις εν λόγω ομάδες δεδομένων στον τουλάχιστον έναν περαιτέρω καταχωρητή προέλευσης για τη δημιουργία των αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν το αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων, καιwherein the processing circuit is responsive to the control signals to further perform the data processing operation with respect to each of said data groups in at least one further source register to generate the corresponding result data groups that form the result of the data processing operation; and όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων περαιτέρω περιλαμβάνουν κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του τουλάχιστον ενός περαιτέρω καταχωρητή προέλευσης.wherein the data processing operation operators for each said data group further include each data item in the data group of the at least one further source register. 11. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 10, όπου το κύκλωμα επεξεργασίας αποκρίνεται στα σήματα ελέγχου για τη συσσώρευση του αποτελέσματος της λειτουργίας επεξεργασίας δεδομένων με το προηγούμενο περιεχόμενο στον τουλάχιστον ένα περαιτέρω καταχωρητή προέλευσης.11. The data processing device as claimed in claim 10, wherein the processing circuit is responsive to the control signals for accumulating the result of the data processing operation with the previous content in the at least one further source register. 12. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις αξιώσεις 1-11, όπου η λειτουργία επεξεργασίας δεδομένων είναι μια αριθμητική πράξη.12. The data processing device as claimed in any of claims 1-11, wherein the data processing operation is an arithmetic operation. 13. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 12, όπου η λειτουργία επεξεργασίας δεδομένων είναι μια πράξη πολλαπλασιασμού.The data processing device as claimed in claim 12, wherein the data processing operation is a multiplication operation. 14. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 12, όταν εξαρτάται από την αξίωση 8, όπου η λειτουργία επεξεργασίας δεδομένων είναι μια πράξη κινητής υποδιαστολής η οποία περιλαμβάνει:14. The data processing device as claimed in claim 12, when dependent on claim 8, wherein the data processing operation is a floating point operation comprising: την εξαγωγή τουλάχιστον ενός πρώτου στοιχείου δεδομένων και ενός δεύτερου στοιχείου δεδομένων από κάθε έναν από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης,extracting at least one first data item and one second data item from each of the first source register and the second source register; την εκτέλεση πράξεων πολλαπλασιασμού του τουλάχιστον πρώτου ζεύγους στοιχείων δεδομένων με το δεύτερο ζεύγος στοιχείων δεδομένων, καιperforming multiplication operations of at least the first pair of data items by the second pair of data items, and την άθροιση των αποτελεσμάτων των πράξεων πολλαπλασιασμού.the sum of the results of the multiplication operations. 15. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 14, όπου οι πράξεις πολλαπλασιασμού περιλαμβάνουν τον πολλαπλασιασμό μαζί του πρώτου ζεύγους στοιχείων δεδομένων, του δεύτερου ζεύγους στοιχείων δεδομένων, του τρίτου ζεύγους στοιχείων δεδομένων και του τέταρτου ζεύγους στοιχείων δεδομένων.The data processing device as claimed in claim 14, wherein the multiplication operations include multiplying together the first pair of data items, the second pair of data items, the third pair of data items and the fourth pair of data items. 16. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 14 ή την αξίωση 15, όπου η εντολή επεξεργασίας δεδομένων περαιτέρω προσδιορίζει έναν καταχωρητή συσσώρευσης στο πλήθος καταχωρητών ενώ η λειτουργία επεξεργασίας δεδομένων είναι μια λειτουργία κινητής υποδιαστολής και συσσώρευσης η οποία περαιτέρω περιλαμβάνει:16. The data processing device as claimed in claim 14 or claim 15, wherein the data processing instruction further specifies an accumulation register in the plurality of registers while the data processing operation is a floating point and accumulation operation further comprising: τη φόρτωση μιας τιμής συσσωρευτή από τον καταχωρητή συσσωρευτή,loading an accumulator value from the accumulator register, την άθροιση των αποτελεσμάτων των πράξεων πολλαπλασιασμού με την τιμή συσσωρευτή, και την αποθήκευση ενός αποτελέσματος της άθροισης με τον καταχωρητή συσσωρευτή.summing the results of the multiplication operations with the accumulator value, and storing a result of the addition with the accumulator register. 17. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 12, όταν εξαρτάται από την αξίωση 8, όπου η λειτουργία επεξεργασίας δεδομένων είναι μια πράξη πολλαπλασιασμούσυσσώρευσης.The data processing device as claimed in claim 12, when dependent on claim 8, wherein the data processing operation is a multiply-accumulate operation. 18. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 17, όπου το στοιχείο δεδομένων σε κάθε εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης είναι ένα ζεύγος τιμών δεδομένων που αντιπροσωπεύουν ένα σύνθετο αριθμό ενώ η λειτουργία επεξεργασίας δεδομένων είναι μια πράξη πολλαπλασιασμούσυσσώρευσης σύνθετων αριθμών.18. The data processing device as claimed in claim 17, wherein the data item in each said group of data in the first source register and the second source register is a pair of data values representing a complex number while the data processing operation is a multiply accumulate operation complex numbers. 19. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται στην αξίωση 18, όπου η εντολή επεξεργασίας δεδομένων περαιτέρω προσδιορίζει μια παράμετρο περιστροφής, όπου το κύκλωμα επεξεργασίας αποκρίνεται στην παράμετρο περιστροφής για την εκτέλεση του πολλαπλασιασμού-της συσσώρευσης σύνθετων αριθμών χρησιμοποιώντας μια επιλεγμένη αντιμετάθεση των τιμών δεδομένων και των πρόσημων τους τα οποία υποβάλλονται στη λειτουργία επεξεργασίας δεδομένων.19. The data processing device as claimed in claim 18, wherein the data processing command further specifies a rotation parameter, wherein the processing circuit is responsive to the rotation parameter to perform complex number multiplication-accumulation using a selected permutation of the data values and of their marks which are submitted to the data processing function. 20. Η διάταξη επεξεργασίας δεδομένων όπως αξιώνεται σε οποιαδήποτε από τις αξιώσεις 1-11, όπου η λειτουργία επεξεργασίας δεδομένων είναι μια λογική πράξη.20. The data processing device as claimed in any of claims 1-11, wherein the data processing operation is a logical operation. 21. Μια μέθοδος επεξεργασίας δεδομένων η οποία περιλαμβάνει:21. A data processing method which includes: την αποκωδικοποίηση μιας εντολής επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει σε ένα πλήθος καταχωρητών: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη,decoding a data processing instruction to generate control signals, the data processing instruction specifying in a plurality of registers: a first source register, a second source register, and a pointer; όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο ενός προκαθορισμένου μεγέθους μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων, καιwherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, each data group including a plurality of data elements, and την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου σε σχέση με κάθε εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων,performing a data processing operation in response to the control signals with respect to each said group of data in the first source register and the second source register to generate corresponding groups of result data forming a result of the data processing operation; όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης.wherein the operators of the data processing operation for each said data group are a selected data item identified in the data group of the first source register by the pointer and for each data item in the data group of the second source register. 22. Ένα μέσο αποθήκευσης με δυνατότητα ανάγνωσης από υπολογιστή το οποίο αποθηκεύει με μη προσωρινό τρόπο ένα πρόγραμμα που περιλαμβάνει τουλάχιστον μια εντολή επεξεργασίας δεδομένων η οποία όταν εκτελείται από μια διάταξη επεξεργασίας δεδομένων προκαλεί:22. 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 pointer; όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο από ένα προκαθορισμένο μέγεθος μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων, καιwherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, and each data group includes a plurality of data elements, and την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου σε σχέση με κάθε εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων,performing a data processing operation in response to the control signals with respect to each said group of data in the first source register and the second source register to generate corresponding groups of result data forming a result of the data processing operation; όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης.wherein the operators of the data processing operation for each said data group are a selected data item identified in the data group of the first source register by the pointer and for each data item in the data group of the second source register. 23. Μια διάταξη επεξεργασίας δεδομένων η οποία περιλαμβάνει:23. A data processing arrangement comprising: μέσα για την αποθήκευση δεδομένων σε ένα πλήθος καταχωρητών,means for storing data in a plurality of registers, μέσα για την αποκωδικοποίηση μιας εντολής επεξεργασίας δεδομένων για την παραγωγή σημάτων ελέγχου, με την εντολή επεξεργασίας δεδομένων να προσδιορίζει στα μέσα αποθήκευσης δεδομένων: έναν πρώτο καταχωρητή προέλευσης, ένα δεύτερο καταχωρητή προέλευσης και ένα δείκτη,means for decoding a data processing instruction to generate control signals, the data processing instruction specifying in the data storage means: a first source register, a second source register, and a pointer; όπου κάθε ένας από τον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης έχει ένα μέγεθος το οποίο είναι ένα πολλαπλάσιο ακεραίου τουλάχιστον διπλάσιο ενός προκαθορισμένου μεγέθους μιας ομάδας δεδομένων, ενώ κάθε ομάδα δεδομένων περιλαμβάνει ένα πλήθος στοιχείων δεδομένων, καιwherein each of the first source register and the second source register has a size which is an integer multiple of at least twice a predetermined size of a data group, each data group including a plurality of data elements, and μέσα για την πραγματοποίηση μιας λειτουργίας επεξεργασίας δεδομένων σε απόκριση των σημάτων ελέγχου, σε σχέση με κάθε εν λόγω ομάδα δεδομένων στον πρώτο καταχωρητή προέλευσης και το δεύτερο καταχωρητή προέλευσης για τη δημιουργία αντίστοιχων ομάδων δεδομένων αποτελεσμάτων που διαμορφώνουν ένα αποτέλεσμα της λειτουργίας επεξεργασίας δεδομένων,means for performing a data processing operation in response to the control signals, with respect to each said group of data in the first source register and the second source register for generating corresponding groups of result data forming a result of the data processing operation; όπου οι τελεστές της λειτουργίας επεξεργασίας δεδομένων για κάθε εν λόγω ομάδα δεδομένων είναι ένα επιλεγμένο στοιχείο δεδομένων που προσδιορίζεται στην ομάδα δεδομένων του πρώτου καταχωρητή προέλευσης από το δείκτη και για κάθε στοιχείο δεδομένων στην ομάδα δεδομένων του δεύτερου καταχωρητή προέλευσης.wherein the operators of the data processing operation for each said data group are a selected data item identified in the data group of the first source register by the pointer and for each data item in the data group of the second source register. 24. Μια εικονική μηχανή που παρέχεται από ένα πρόγραμμα υπολογιστή το οποίο εκτελείται σε μια διάταξη επεξεργασίας δεδομένων, με την εν λόγω εικονική μηχανή να παρέχει ένα περιβάλλον εκτέλεσης εντολών σε αντιστοιχία με τη διάταξη επεξεργασίας δεδομένων οποιασδήποτε από τις αξιώσεις 1 έως 20 ή 23.24. 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 20 or 23.
GR20170200090U 2017-02-23 2017-02-23 Element by vector operations in a data processing apparatus GR20170200090U (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GR20170200090U GR20170200090U (en) 2017-02-23 2017-02-23 Element by vector operations in a data processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GR20170200090U GR20170200090U (en) 2017-02-23 2017-02-23 Element by vector operations in a data processing apparatus

Publications (1)

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

Family

ID=64020749

Family Applications (1)

Application Number Title Priority Date Filing Date
GR20170200090U GR20170200090U (en) 2017-02-23 2017-02-23 Element by vector operations in a data processing apparatus

Country Status (1)

Country Link
GR (1) GR20170200090U (en)

Similar Documents

Publication Publication Date Title
KR102492356B1 (en) Arithmetic Expansion in Data Processors
KR102425668B1 (en) Multiplication-Accumulation in Data Processing Units
KR102584031B1 (en) Element-by-vector operations in data processing units
CN110058886A (en) System and method for calculating the scalar product of the nibble in two blocks operation numbers
CN109992243A (en) System, method and apparatus for matrix manipulation
KR102591988B1 (en) Vector interleaving in data processing units
EP3499362B1 (en) Vector add-with-carry instruction
GR20170200090U (en) Element by vector operations in a data processing apparatus
GR20170200089U (en) Multiply-accumulation in a data processing apparatus