Mapping between registers used by multiple instruction sets
First Claim
1. Apparatus for processing data comprising:
- a plurality of registers configured to store data values to be processed;
processing circuitry coupled to said plurality of registers and configured to perform data processing operations upon data values stored in said plurality of registers;
an instruction decoder coupled to said processing circuitry and responsive to a stream of program instructions to control said processing circuitry to perform said data processing operations;
whereinsaid instruction decoder is responsive to program instructions of a first instruction set to control said processing circuitry to perform said data processing operations using N-bit architectural registers provided by said plurality of registers, where N is a positive integer value;
said instruction decoder is responsive to program instructions of a second instruction set to control said processing circuitry to perform said data processing operations using M-bit architectural registers provided by said plurality of registers, where M is a positive integer value different from N and at least some of said plurality of registers are shared by program instructions of said first instruction set and program instructions of said second instruction set;
said instruction decoder is configured to decode a register specifying field within a program instruction of said first instruction set when determining which of said plurality of registers to access as part of a first set of N-bit architectural registers presented for use by program instructions of said first instruction set;
said instruction decoder is configured to decode a register specifying field within a program instruction of said second instruction set when determining which of said plurality of registers to access as part of a second set of M-bit architectural registers presented for use by program instructions of said second instruction set; and
said instruction decoder is configured to provide a first mapping between values of said register specifying field within program instructions of said first instruction set and said plurality of registers and a second mapping between values of said register specifying field within program instructions of said second instruction set and said plurality of registers, said first mapping is different from said second mapping and said first mapping and said second mapping are configured so each register of said first set has a predetermined one-to-one mapping to a register of said second set, shares with said register of said second set a shared part of a common register within said plurality of registers, an unshared part of said common register being unaccessible using instructions of said first instruction set, and stores a value that is accessible using a register of said second set, wherein said apparatus when executing program instructions of said first instruction set is configured to operate in a plurality of exception states and said instruction decoder is configured to decode said register specifying field within a program instruction of said first instruction set together with a current exception state of said plurality of exception states when determining which of said plurality of registers to access and a group of registers within said first set corresponding to a common value of said register specifying field within said program instruction of said first instruction set and different exception states are a banked group of registers,wherein within said banked group of registers a value of a least significant bit of said register specifying field within said program instruction of said first instruction set is common with a value of a least significant bit of said register specifying field within said program instruction of said second instruction set,wherein said instruction decoder is configured to provide said first mapping and said second mapping wherein, for a portion of said registers of said second set corresponding to a sequence of incrementing values of said register specifying field within said program instruction of said second instruction set, corresponding values of said register specifying field within said program instruction of said first instruction set alternate between two values.
1 Assignment
0 Petitions
Accused Products
Abstract
A processor 4 is provided which supports a first instruction set specifying 32-bit architectural registers and a second instruction set specifying 64-bit architectural registers. Each of these instruction sets is presented with its own set of architectural registers for use. The first set of registers presented to the first instruction set has a one-to-one mapping to the second set of registers presented to this second instruction set. The registers which are provided in hardware are 64-bit registers. In some embodiments, when executing program instructions of the first instruction set, only the least significant portion of these 64-bit registers are accessed and manipulated with the remaining most significant portion of the registers being left unaltered. Register specifying fields within instructions of the first instruction set are decoded together with a current exception mode to determine which architectural register to use whereas the second instruction set uses register specifying fields without a dependence upon exception mode to determine which architectural register are to be used.
15 Citations
22 Claims
-
1. Apparatus for processing data comprising:
-
a plurality of registers configured to store data values to be processed; processing circuitry coupled to said plurality of registers and configured to perform data processing operations upon data values stored in said plurality of registers; an instruction decoder coupled to said processing circuitry and responsive to a stream of program instructions to control said processing circuitry to perform said data processing operations;
whereinsaid instruction decoder is responsive to program instructions of a first instruction set to control said processing circuitry to perform said data processing operations using N-bit architectural registers provided by said plurality of registers, where N is a positive integer value; said instruction decoder is responsive to program instructions of a second instruction set to control said processing circuitry to perform said data processing operations using M-bit architectural registers provided by said plurality of registers, where M is a positive integer value different from N and at least some of said plurality of registers are shared by program instructions of said first instruction set and program instructions of said second instruction set; said instruction decoder is configured to decode a register specifying field within a program instruction of said first instruction set when determining which of said plurality of registers to access as part of a first set of N-bit architectural registers presented for use by program instructions of said first instruction set; said instruction decoder is configured to decode a register specifying field within a program instruction of said second instruction set when determining which of said plurality of registers to access as part of a second set of M-bit architectural registers presented for use by program instructions of said second instruction set; and said instruction decoder is configured to provide a first mapping between values of said register specifying field within program instructions of said first instruction set and said plurality of registers and a second mapping between values of said register specifying field within program instructions of said second instruction set and said plurality of registers, said first mapping is different from said second mapping and said first mapping and said second mapping are configured so each register of said first set has a predetermined one-to-one mapping to a register of said second set, shares with said register of said second set a shared part of a common register within said plurality of registers, an unshared part of said common register being unaccessible using instructions of said first instruction set, and stores a value that is accessible using a register of said second set, wherein said apparatus when executing program instructions of said first instruction set is configured to operate in a plurality of exception states and said instruction decoder is configured to decode said register specifying field within a program instruction of said first instruction set together with a current exception state of said plurality of exception states when determining which of said plurality of registers to access and a group of registers within said first set corresponding to a common value of said register specifying field within said program instruction of said first instruction set and different exception states are a banked group of registers, wherein within said banked group of registers a value of a least significant bit of said register specifying field within said program instruction of said first instruction set is common with a value of a least significant bit of said register specifying field within said program instruction of said second instruction set, wherein said instruction decoder is configured to provide said first mapping and said second mapping wherein, for a portion of said registers of said second set corresponding to a sequence of incrementing values of said register specifying field within said program instruction of said second instruction set, corresponding values of said register specifying field within said program instruction of said first instruction set alternate between two values. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 20, 21, 22)
-
-
10. Apparatus for processing data comprising:
-
a plurality of register means for storing data values to be processed; processing means for performing data processing operations upon data values stored in said plurality of register means; instruction decoding means for controlling said processing means to perform said data processing operations in response to a stream of program instructions;
whereinsaid instruction decoding means is responsive to program instructions of a first instruction set to control said processing means to perform said data processing operations using N-bit architectural register means provided by said plurality of register means, where N is a positive integer value; said instruction decoding means is responsive to program instructions of a second instruction set to control said processing means to perform said data processing operations using M-bit architectural register means provided by said plurality of register means, where M is a positive integer value different from N and at least some of said plurality of register means are shared by program instructions of said first instruction set and program instructions of said second instruction set; said instruction decoding means is configured to decode a register specifying field within a program instruction of said first instruction set when determining which of said plurality of register means to access as part of a first set of N-bit architectural register means presented for use by program instructions of said first instruction set; said instruction decoding means is configured to decode a register specifying field within a program instruction of said second instruction set when determining which of said plurality of register means to access as part of a second set of M-bit architectural register means presented for use by program instructions of said second instruction set; and said instruction decoding means is configured to provide a first mapping between values of said register specifying field within program instructions of said first instruction set and said plurality of register means and a second mapping between values of said register specifying field within program instructions of said second instruction set and said plurality of register means, said first mapping is different from said second mapping and said first mapping and said second mapping are configured so each register means of said first set has a predetermined one-to-one mapping to a register means of said second set, shares with said register means of said second set a shared part of a common register means within said plurality of register means, an unshared part of said common register means being unaccessible using instructions of said first instruction set, and stores a value that is accessible using a register means of said second set, wherein said apparatus when executing program instructions of said first instruction set is configured to operate in a plurality of exception states and said instruction decoder is configured to decode said register specifying field within a program instruction of said first instruction set together with a current exception state of said plurality of exception states when determining which of said plurality of registers to access and a group of registers within said first set corresponding to a common value of said register specifying field within said program instruction of said first instruction set and different exception states are a banked group of registers, wherein within said banked group of registers a value of a least significant bit of said register specifying field within said program instruction of said first instruction set is common with a value of a least significant bit of said register specifying field within said program instruction of said second instruction set, wherein said instruction decoder is configured to provide said first mapping and said second mapping wherein, for a portion of said registers of said second set corresponding to a sequence of incrementing values of said register specifying field within said program instruction of said second instruction set, corresponding values of said register specifying field within said program instruction of said first instruction set alternate between two values.
-
-
11. A method of processing data comprising the steps of:
-
storing data values to be processed in a plurality of registers; performing data processing operations upon data values stored in said plurality of registers; decoding a stream of program instructions to control said performing of said data processing operations;
whereinsaid decoding is responsive to program instructions of a first instruction set to control said performing of said data processing operations using N-bit architectural registers provided by said plurality of registers, where N is a positive integer value; said decoding is responsive to program instructions of a second instruction set to control said performing of said data processing operations using M-bit architectural registers provided by said plurality of registers, where M is a positive integer value different from N and at least some of said plurality of registers are shared by program instructions of said first instruction set and program instructions of said second instruction set; said decoding decodes a register specifying field within a program instruction of said first instruction set when determining which of said plurality of registers to access as part of a first set of N-bit architectural registers presented for use by program instructions of said first instruction set; said decoding decodes a register specifying field within a program instruction of said second instruction set when determining which of said plurality of registers to access as part of a second set of M-bit architectural registers presented for use by program instructions of said second instruction set; and said decoding provides a first mapping between values of said register specifying field within program instructions of said first instruction set and said plurality of registers and a second mapping between values of said register specifying field within program instructions of said second instruction set and said plurality of registers, said first mapping is different from said second mapping and said first mapping and said second mapping configured so each register of said first set has a predetermined one-to-one mapping to a register of said second set, shares with said register of said second set a shared part of a common register within said plurality of registers, an unshared part of said common register being unaccessible using instructions of said first instruction set, and stores a value that is accessible using a register of said second set, wherein when executing program instructions of said first instruction set, operating in one of a plurality of exception states and said decoding decodes said register specifying field within a program instruction of said first instruction set together with a current exception state of said plurality of exception states when determining which of said plurality of registers to access, and a group of registers within said first set corresponding to a common value of said register specifying field within said program instruction of said first instruction set and different exception states being a banked group of registers, wherein within said banked group of registers a value of a least significant bit of said register specifying field within said program instruction of said first instruction set is common with a value of a least significant bit of said register specifying field within said program instruction of said second instruction set, wherein said decoding provides said first mapping and said second mapping wherein, for a portion of said registers of said second set corresponding to a sequence of incrementing values of said register specifying field within said program instruction of said second instruction set, corresponding values of said register specifying field within said program instruction of said first instruction set alternate between two values. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
Specification