US5740461A - Data processing with multiple instruction sets - Google Patents

Data processing with multiple instruction sets Download PDF

Info

Publication number
US5740461A
US5740461A US08/735,046 US73504696A US5740461A US 5740461 A US5740461 A US 5740461A US 73504696 A US73504696 A US 73504696A US 5740461 A US5740461 A US 5740461A
Authority
US
United States
Prior art keywords
bit
instruction
program
instruction set
program instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US08/735,046
Inventor
David Vivian Jaggar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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
US case filed in Delaware District Court litigation Critical https://portal.unifiedpatents.com/litigation/Delaware%20District%20Court/case/1%3A19-cv-02083 Source: District Court Jurisdiction: Delaware District Court "Unified Patents Litigation Data" by Unified Patents is licensed under a Creative Commons Attribution 4.0 International License.
Assigned to ADVANCED RISC MACHINES LIMITED reassignment ADVANCED RISC MACHINES LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: JAGGAR, DAVID VIVIAN
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Priority to US08/735,046 priority Critical patent/US5740461A/en
Application granted granted Critical
Publication of US5740461A publication Critical patent/US5740461A/en
Assigned to ARM LIMITED reassignment ARM LIMITED CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: ADVANCED RISC MACHINES LIMITED
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders

Definitions

  • This invention relates to the field of data processing. More particularly, this invention relates to data processing utilizing multiple sets of program instruction words.
  • Data processing systems utilize a processor core operating under control of program instruction words, which when decoded serve to generate control signals to control the different elements within the processor core to perform the necessary functions to achieve the processing specified in the program instruction word.
  • a typical processor core will have data pathways of a given bit width that limit the length of the data words that can be manipulated in response to a given instruction.
  • the trend in the field of data processing has been for a steady increase in these data pathway widths, e.g. a gradual move from 8-bit architectures to 16-bit, 32-bit and 64-bit architectures.
  • the instruction sets have increased in the number of instructions possible (in both the CISC and RISC philosophies) and the bit length of those instructions.
  • a problem with migration towards increased architecture widths is the desire to maintain backward compatibility with program software written for preceding generations of machines.
  • One way of addressing this has been to provide the new system with a compatibility mode.
  • the VAX11 computers of Digital Equipment Corporation have a compatibility mode that enables them to decode the instructions for the earlier PDP11 computers. Whilst this allows the earlier program software to be used, such use is not taking full advantage of the increased capabilities of the new processing system upon which it is running, e.g. perhaps only multiple stage 16-bit arithmetic is being used when the system in fact has the hardware to support 32-bit arithmetic.
  • An object of the invention is to address the abovementioned problems.
  • the invention provides apparatus for processing data, said apparatus comprising:
  • processor core having N-bit data pathways and being responsive to a plurality of core control signals
  • first decoding means for decoding X-bit program instruction words from a first permanent instruction set to generate said core control signals to trigger processing utilizing said N-bit data pathways;
  • an instruction set switch for selecting either a first processing mode using said first decoding means upon received program instruction words or a second processing mode using said second decoding means upon received program instruction words.
  • the invention recognises that in a system having a wide standard X-bit instruction set and N-bit data pathways (e.g. a 32-bit instruction set operating on 32-bit data pathways), the full capabilities of the X-bit instruction set are often not used in normal programming.
  • An example of this would be a 32-bit branch instruction.
  • This branch instruction might have a 32 megabyte range that would only very occasionally be used.
  • the branch would only be for a few instructions and most of the bits within the 32-bit instruction would be carrying no information.
  • Many programs written using the 32-bit instruction set would have a low code density and utilize more program storage space than necessary.
  • the invention addresses this problem by providing a separate permanent Y-bit instruction set, where Y is less than X, that still operates on the full N-bit data pathways.
  • Y is less than X
  • code density is increased for those applications not requiring the sophistication of the X-bit instruction set.
  • Another advantage of this arrangement is that since fewer bytes of program code will be run per unit time when operating with the Y-bit instruction set, less stringent demands are place upon the data transfer capabilities of the memory systems storing the program code. This reduces complexity and cost.
  • the invention also moves in the opposite direction to the usual trend in the field.
  • the trend is that with each new generation of processors, more instructions are added to the instructions sets with the instruction sets becoming wider to accommodate this.
  • the invention starts with a wide sophisticated instruction set and then adds a further narrower instruction set (with less space for large numbers of instructions) for use in situations where the full scope of the wide instruction set is not required.
  • first instruction set and the second instruction set may be completely dependent.
  • said second instruction set provides a subset of operations provided by said first instruction set.
  • the second instruction set is a sub-set of the first instruction set enables more efficient operation since the hardware elements of the processor core may be set out more readily to suit both instruction sets.
  • the instruction set switch could be a hardware type switch set by some manual intervention.
  • said instruction set switch comprises means responsive to an instruction set flag, said instruction set flag being setable under user program control.
  • Enabling the instruction set switch to be used to switch between the first instruction set and the second instruction set under software control is a considerable advantage.
  • a programmer may utilise the second instruction set with its Y-bit program instruction words for reasons of increased code density for the majority of a program and temporarily switch to the first instruction set with its X-bit program instruction words for those small portions of the program requiring the increased power and sophistication of the first instruction set.
  • said processor core comprises a program status register for storing currently applicable processing status data and a saved program status register, said saved program status register being utilized to store processing status data associated with a main program when a program exception occurs causing execution of an exception handling program, said instruction set flag being part of said processing status data.
  • Providing the instruction set flag as part of the programming status data ensures that it is saved when an exception occurs.
  • a single exception handler can handle exceptions from both processing modes and can be allowed access to the saved instruction set flag within the saved program status register should this be significant in handling the exception.
  • the exception handler can be made to use either instruction set to improve either its speed or code density as the design constraints require.
  • said processor core comprises a program counter register and a program counter incrementer for incrementing a program counter value stored within said program counter register to point to a next program instruction word, said program counter incrementer applying a different increment step in said first processing mode than in said second processing mode.
  • the shorter program instruction words of the second instruction set cannot contain as much information as those of the first instruction set. In order to accommodate this it is preferred that the spaces saved within the second instruction set by reducing the operand range that may be specified within a program instruction word.
  • said processor core is coupled to a memory system by a Y-bit data bus, such that program instruction words from said second instruction set require a single fetch cycle and program instruction words from said first instruction set require a plurality of fetch cycles.
  • the first decoding means and the second decoding means may be completely separate. However, in preferred embodiments of the invention said second decoding means reuses at least a part of said first decoding means.
  • the re-use of at least part of the first decoding means by the second decoding means reduces the overall circuit area. Furthermore, since the first instruction set is generally less complicated then the second instruction set and is driving the same processor core, there will be a considerable amount of the second decoding means that it is possible to re-use.
  • the invention provides a method of processing data, said method comprising the steps of:
  • FIG. 1 schematically illustrates a data processing apparatus incorporating processor core and a memory system
  • FIG. 2 schematically illustrates an instruction and instruction decoder for a system having a single instruction set
  • FIG. 3 illustrates an instruction pipeline and instruction decoders for use in a system having two instruction sets
  • FIG. 4 illustrates the decoding of an X-bit program instruction word
  • FIGS. 5 and 6 illustrate the mapping of Y-bit program instruction words to X-bit program instruction words
  • FIG. 7 illustrates an X-bit instruction set
  • FIG. 8 illustrates a Y-bit instruction set
  • FIG. 9 illustrates the processing registers available to the first instruction set and the second instruction set.
  • FIG. 1 illustrates a data processing system (that is formed as part of an integrated circuit) comprising a processor core 2 coupled to a Y-bit memory system 4.
  • Y is equal to 16.
  • the processor core 2 includes a register bank 6, a Booths multiplier 8, a barrel shifter 10, a 32-bit arithmetic logic unit 12 and a write data register 14. Interposed between the processor core 2 and the memory system 4 is an instruction pipeline 16, an instruction decoder 18 and a read data register 20.
  • a program counter incrementer 24 serves to increment the program counter value within the program counter register 22 as each instruction is executed and a new instruction must be fetched for the instruction pipeline 16.
  • the processor core 2 incorporates N-bit data pathways (in this case 32-bit data pathways) between the various functional units.
  • N-bit data pathways in this case 32-bit data pathways
  • instructions within the instruction pipeline 16 are decoded by the instruction decoder 18 which produces various core control signals that are passed to the different functional elements within the processor core 2.
  • the different portions of the processor core conduct 32-bit processing operations, such as 32-bit multiplication, 32-bit addition and 32-bit logical operations.
  • the register bank 6 includes a current programming status register 26 and a saved programming status register 28.
  • the current programming status register 26 holds various condition and status flags for the processor core 2. These flags may include processing mode flags (e.g. system mode, user mode, memory abort mode etc.) as well as flags indicating the occurrence of zero results in arithmetic operations, carries and the like.
  • the saved programming status register 28 (which may be one of a banked plurality of such saved programming status registers) is used to temporarily store the contents of the current programming status register 26 if an exception occurs that triggers a processing mode switch. In this way, exception handling can be made faster and more efficient.
  • an instruction set flag T is supplied to the instruction decoder 18 and the program counter incrementer 24.
  • This instruction set flag T is set, the system operates with the instructions of the second instruction set (i.e. Y-bit program instruction words, in this case 16-bit program instruction words).
  • the instruction set flag T controls the program counter incrementer 24 to adopt a smaller increment step when operated with the second instruction set. This is consistent with the program instruction words of the second instruction set being smaller and so more closely spaced within the memory locations of the memory system 4.
  • the memory system 4 is a 16-bit memory system connected via 16-bit data buses to the read data register 20 and the instruction pipeline 16.
  • Such 16-bit memory systems are simpler and inexpensive relative to higher performance 32-bit memory systems.
  • 16-bit program instruction words can be fetched in a single cycle.
  • 32-bit instructions from the second instruction set are to be used (as indicated by the instruction set flag T)
  • two instruction fetches are required to recover a single 32-bit instruction for the instruction pipeline 16.
  • the required program instruction words Once the required program instruction words have been recovered from the memory system 4, they are decoded by the instruction decoder 18 and initiate 32-bit processing within the processor core 2 irrespective of whether the instructions are 16-bit instructions or 32-bit instructions.
  • the instruction decoder 18 is illustrated in FIG. 1 as a single block. However, in order to deal with more than one instruction set, the instruction decoder 18 has a more complicated structure as will be discussed in relation to FIGS. 2 and 3.
  • FIG. 2 illustrates the instruction pipeline 16 and an instruction decoder 18 for coping with a single instruction set.
  • the instruction decoder 18 includes only a first decoding means 30 that is operative to decode 32-bit instructions.
  • This decoding means 30 decodes the first instruction set (the ARM instruction set) utilising a programmable logic array (PLA) to produce a plurality of core control signals 32 that are fed to the processor core 2.
  • the program instruction word which is currently decoded i.e. yields the current the core control signals 32
  • Functional elements within the processor core 2 e.g. the Booths multiplier 8 or the register bank 6) read operands needed for their processing operation directly from this instruction register 34.
  • a feature of the operation of such an arrangement is that the first decoding means 30 requires certain of its inputs (the P bits shown as solid lines emerging from the PipeC pipeline stage) early in the clock cycle in which the first decoding means operates. This is to ensure that the core control signals 32 are generated in time to drive the necessary elements within the processor core 2.
  • the first decoding means 30 is a relatively large and slow programmable logic array structure and so such timing considerations are important.
  • FIG. 3 illustrates the system of FIG. 2 modified to deal with decoding a first instruction set and a second instruction set.
  • the system operates as described in relation to FIG. 2.
  • the instruction set flag T indicates that the instructions in the instruction pipeline 16 are from the second instruction set, a second decoding means 36 becomes active.
  • This second decoding means decodes the 16-bit instructions (the Thumb instructions) utilising a fast PLA 38 and a parallel slow PLA 40.
  • the fast PLA 38 serves to map a subset (Q bits) of the bits of the 16-bit Thumb instructions to the P bits of the corresponding 32-bit ARM instructions that are required to drive the first decoding means 30. Since a relatively small number of bits are required to undergo this mapping, the fast PLA 38 can be relatively shallow and so operate quickly enough to allow the first decoding means sufficient time to generate the core control signals 32 in response to the contents of PipeC.
  • the fast PLA 38 can be considered to act to "fake" the critical bits of a corresponding 32-bit instruction for the first decoding means without spending any unnecessary time mapping the full instruction.
  • the full 32-bit instruction is still required by the processor core 2 if it is to be able to operate without radical alterations and significant additional circuit elements.
  • the slow PLA 40 connected in parallel serves to map the 16-bit instruction to the corresponding 32-bit instruction and place this into the instruction register 34. This more complicated mapping may take place over the full time it takes the fast PLA 38 and the first decoding means 30 to operate.
  • the important factor is that the 32-bit instruction should be present within the instruction register 34 in sufficient time for any operands to be read therefrom in response to the core control signals 32 acting upon the processor core 2.
  • the overall action of the system of FIG. 3 when decoding the second instruction set is to translate 16-bit instructions from the second instruction set to 32-bit instructions from the first instruction set as they progress along the instruction pipeline 16.
  • This is rendered a practical possibility by making the second instruction set a subset of a first instruction set so as to ensure that there is a one to one mapping of instructions from the second instructions set into instructions within the first instruction set.
  • the provision of the instruction set flag T enables the second instruction set to be non-orthogonal to the first instruction set. This is particularly useful in circumstances where the first instruction set is an existing instruction set without any free bits that could be used to enable an orthogonal further instruction set to be detected and decoded.
  • FIG. 4 illustrates the decoding of a 32-bit instruction. At the top of FIG. 4 successive processing clock cycles are illustrated in which a fetch operation, a decode operation and finally an execute operation performed. If the particular instruction so requires (e.g. a multiply instruction), then one or more additional execute cycles may be added.
  • a 32-bit instruction 42 is composed of a plurality of different fields. The boundaries between these fields will differ fop differing instructions as will be shown later in FIG. 7.
  • bits within the instruction 42 require decoding within a primary decode phase. These P bits are bits 4 to 7, 20 and 22 to 27. These are the bits that are required by the first decoding means 30 and that must be "faked" by the fast PLA 38. These bits must be applied to the first decoding means and decoded thereby to generate appropriate core control signals 32 by the end of the first part of the decode cycle. Decoding of the full instruction can, if necessary, take as long as the end of decode cycle. At the end of the decode cycle, operands within the instruction are read from the instruction register 34 by the processor 2 during the execute cycle. These operands may be register specifiers, offsets or other variables.
  • FIG. 5 shows the mapping of an example of 16-bit instruction to a 32-bit instruction.
  • the thick lines originate from the Q bits within the 16-bit instruction that require mapping into the P bits within the 32-bit instruction so that they may be applied to the first decoding means 30. It will be seen that the majority of these bits are either copied straight across or involve a simple mapping.
  • the operands Rn', Rd and Immediate within the 16-bit instruction require padding at their most significant end with zeros to fill the 32-bit instruction. This padding is needed as a result of the 32-bit instruction operands having a greater range than the 16-bit instruction operands.
  • the 32-bit instruction allows considerably more flexibility than the subset of that instruction that is represented by the 16-bit instruction.
  • the 32-bit instructions are preceded by condition codes Cond that renders the instruction conditionally executable.
  • the 16-bit instructions do not carry any condition codes in themselves and the condition codes of the 32-bit instructions to which they are mapped are set to a value of "1110" that is equivalent to the conditional execution state "always".
  • FIG. 6 illustrates another such instruction mapping.
  • the 16-bit instruction in this case is a different type of Load/Store instruction to that illustrated in FIG. 5. However, this instruction is still a subset of the single data transfer instruction of the 32-bit instruction set.
  • FIG. 7 schematically illustrates the formats of the eleven different types of instruction for the 32-bit instruction set. These instructions are in turn:
  • FIG. 8 illustrates the 16-bit instruction set that is provided in addition to the 32-bit instruction set.
  • the instructions highlighted within this instruction set are those illustrated in FIGS. 5 and 6 respectively.
  • the instructions within this 16-bit instruction set have been chosen such that they may all be mapped to a single 32-bit instruction and so form a subset of the 32-bit instruction set.
  • the 16-bit instruction set has reduced operand ranges compared to the 32-bit instruction set.
  • the 16-bit instruction set uses a subset of the registers 6 (see FIG. 1) that are provided for the full 32-bit instruction set.
  • FIG. 9 illustrates the subset of registers that are used by the 16-bit instruction set.

Abstract

A data processing system is described utilising two instruction sets. Both instruction sets control processing using full N-bit data pathways within a processor core 2. One instruction set is a 32-bit instruction set and the other is a 16-bit instruction set. Both instruction sets are permanently installed and have associated instruction decoding hardware 30, 36, 38.

Description

RELATED APPLICATIONS
This is a continuation of application Ser. No. 08/308,836, filed on Sep. 19, 1994 now abandoned.
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to the field of data processing. More particularly, this invention relates to data processing utilizing multiple sets of program instruction words.
2. Description of the Prior Art
Data processing systems utilize a processor core operating under control of program instruction words, which when decoded serve to generate control signals to control the different elements within the processor core to perform the necessary functions to achieve the processing specified in the program instruction word.
A typical processor core will have data pathways of a given bit width that limit the length of the data words that can be manipulated in response to a given instruction. The trend in the field of data processing has been for a steady increase in these data pathway widths, e.g. a gradual move from 8-bit architectures to 16-bit, 32-bit and 64-bit architectures. At the same time as this increase in data pathway width, the instruction sets have increased in the number of instructions possible (in both the CISC and RISC philosophies) and the bit length of those instructions. As an example, there has been a move from the use of 16-bit architectures with 16-bit instruction sets to the use of 32-bit architectures with 32-bit instruction sets.
A problem with migration towards increased architecture widths is the desire to maintain backward compatibility with program software written for preceding generations of machines. One way of addressing this has been to provide the new system with a compatibility mode. For example, the VAX11 computers of Digital Equipment Corporation have a compatibility mode that enables them to decode the instructions for the earlier PDP11 computers. Whilst this allows the earlier program software to be used, such use is not taking full advantage of the increased capabilities of the new processing system upon which it is running, e.g. perhaps only multiple stage 16-bit arithmetic is being used when the system in fact has the hardware to support 32-bit arithmetic.
Another problem associated with such changes in architecture width is that the size of computer programs using the new increased bit width instruction sets tends to increase (a 32-bit program instruction word occupies twice the storage space of a 16-bit program instruction word). Whilst this increase in size is to some extent offset by a single instruction being made to specify an operation that might previously have needed more than one of the shorter instructions, the tend is still for increased program size.
An approach to dealing with this problem is to allow a user to effectively specify their own instruction set. The IBM370 computers made by International Business Machines Corporation incorporate a writable control store using which a user may set up their own individual instruction set mapping instruction program words to desired actions by the different portions of the processor core. Whilst this approach gives good flexibility, it is difficult to produces high speed operation and the writable control store occupies a disadvantageously large area of an integrated circuit. Furthermore, the design of an efficient bespoke instruction set is a burdensome task for a user.
It is also known to provide systems in which a single instruction set has program instruction words of differing lengths. An example of this approach is the 6502 microprocessor produced by MOS Technology. This processor uses 8-bit operation codes that are followed by a variable number of operand bytes. The operation code has first to be decoded before the operands can be identified and the instruction effected. This requires multiple memory fetches and represents a significant constraint on system performance compared with program instructions words (i.e. operation code and any operands) of a constant known length.
SUMMARY OF THE INVENTION
An object of the invention is to address the abovementioned problems.
Viewed from one aspect the invention provides apparatus for processing data, said apparatus comprising:
(i) a processor core having N-bit data pathways and being responsive to a plurality of core control signals;
(ii) first decoding means for decoding X-bit program instruction words from a first permanent instruction set to generate said core control signals to trigger processing utilizing said N-bit data pathways;
(iii) second decoding means for decoding Y-bit program instruction words from a second permanent instruction set to generate said core control signals to trigger processing utilizing said N-bit data pathways, Y being less than X; and
(iv) an instruction set switch for selecting either a first processing mode using said first decoding means upon received program instruction words or a second processing mode using said second decoding means upon received program instruction words.
The invention recognises that in a system having a wide standard X-bit instruction set and N-bit data pathways (e.g. a 32-bit instruction set operating on 32-bit data pathways), the full capabilities of the X-bit instruction set are often not used in normal programming. An example of this would be a 32-bit branch instruction. This branch instruction might have a 32 megabyte range that would only very occasionally be used. Thus, in most cases the branch would only be for a few instructions and most of the bits within the 32-bit instruction would be carrying no information. Many programs written using the 32-bit instruction set would have a low code density and utilize more program storage space than necessary.
The invention addresses this problem by providing a separate permanent Y-bit instruction set, where Y is less than X, that still operates on the full N-bit data pathways. Thus, the performance of the N-bit data pathways is utilized whilst code density is increased for those applications not requiring the sophistication of the X-bit instruction set.
There is a synergy in the provision of the two permanent instruction sets. The user is allowed the flexibility to alter the instruction set they are using to suit the circumstances of the program, with both instruction sets being efficiently implemented by the manufacturer (critical in high performance systems such as RISC processors where relative timings are critical) and without sacrificing the use of the N-bit data pathways.
Another advantage of this arrangement is that since fewer bytes of program code will be run per unit time when operating with the Y-bit instruction set, less stringent demands are place upon the data transfer capabilities of the memory systems storing the program code. This reduces complexity and cost.
The invention also moves in the opposite direction to the usual trend in the field. The trend is that with each new generation of processors, more instructions are added to the instructions sets with the instruction sets becoming wider to accommodate this. In contrast, the invention starts with a wide sophisticated instruction set and then adds a further narrower instruction set (with less space for large numbers of instructions) for use in situations where the full scope of the wide instruction set is not required.
It will be appreciated that the first instruction set and the second instruction set may be completely dependent. However, in preferred embodiments of the invention said second instruction set provides a subset of operations provided by said first instruction set.
Providing that the second instruction set is a sub-set of the first instruction set enables more efficient operation since the hardware elements of the processor core may be set out more readily to suit both instruction sets.
When an instruction set of program instruction words of an increased bit length has been added to an existing program instruction set, it is possible to ensure that the program instruction words from the two instruction sets are orthogonal. However, the instruction set switch allows this constraint to be avoided and permits systems in which said second instruction set is non-orthogonal to said first instruction set.
The freedom to use non-orthogonal instruction sets eases the task of the system designer and enables other aspects of the instruction set design to be more effectively handled.
The instruction set switch could be a hardware type switch set by some manual intervention. However, in preferred embodiments of the invention said instruction set switch comprises means responsive to an instruction set flag, said instruction set flag being setable under user program control.
Enabling the instruction set switch to be used to switch between the first instruction set and the second instruction set under software control is a considerable advantage. For example, a programmer may utilise the second instruction set with its Y-bit program instruction words for reasons of increased code density for the majority of a program and temporarily switch to the first instruction set with its X-bit program instruction words for those small portions of the program requiring the increased power and sophistication of the first instruction set.
The support of two independent instruction sets may introduce additional complication into the system. In preferred embodiments of the invention said processor core comprises a program status register for storing currently applicable processing status data and a saved program status register, said saved program status register being utilized to store processing status data associated with a main program when a program exception occurs causing execution of an exception handling program, said instruction set flag being part of said processing status data.
Providing the instruction set flag as part of the programming status data ensures that it is saved when an exception occurs. In this way, a single exception handler can handle exceptions from both processing modes and can be allowed access to the saved instruction set flag within the saved program status register should this be significant in handling the exception. Furthermore, the exception handler can be made to use either instruction set to improve either its speed or code density as the design constraints require.
In order to deal with the differing bit lengths of the different instruction sets, preferred embodiments of the invention provide that said processor core comprises a program counter register and a program counter incrementer for incrementing a program counter value stored within said program counter register to point to a next program instruction word, said program counter incrementer applying a different increment step in said first processing mode than in said second processing mode.
It will be appreciated that the shorter program instruction words of the second instruction set cannot contain as much information as those of the first instruction set. In order to accommodate this it is preferred that the spaces saved within the second instruction set by reducing the operand range that may be specified within a program instruction word.
In preferred embodiments of the invention said processor core is coupled to a memory system by a Y-bit data bus, such that program instruction words from said second instruction set require a single fetch cycle and program instruction words from said first instruction set require a plurality of fetch cycles.
The use of a Y-bit data bus and memory system allows a less expensive total system to be built whilst still enabling a single fetch cycle for each program instruction word for at least the second instruction set.
The first decoding means and the second decoding means may be completely separate. However, in preferred embodiments of the invention said second decoding means reuses at least a part of said first decoding means.
The re-use of at least part of the first decoding means by the second decoding means reduces the overall circuit area. Furthermore, since the first instruction set is generally less complicated then the second instruction set and is driving the same processor core, there will be a considerable amount of the second decoding means that it is possible to re-use.
Viewed from another aspect the invention provides a method of processing data, said method comprising the steps of:
(i) selecting either a first processing mode or a second processing mode for a processor core having N-bit data pathways and being responsive to a plurality of core control signals;
(ii) in said first processing mode, decoding X-bit program instruction words from a first permanent instruction set to generate said core control signals to trigger processing utilizing said N-bit data pathways; and
(iii) in said second processing mode, decoding Y-bit program instruction words from a second permanent instruction set to generate said core control signals to trigger processing utilizing said N-bit data pathways, Y being less than X.
The above, and other objects, features and advantages of this invention will be apparent from the following detailed description of illustrative embodiments which is to be read in connection with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 schematically illustrates a data processing apparatus incorporating processor core and a memory system;
FIG. 2 schematically illustrates an instruction and instruction decoder for a system having a single instruction set;
FIG. 3 illustrates an instruction pipeline and instruction decoders for use in a system having two instruction sets;
FIG. 4 illustrates the decoding of an X-bit program instruction word;
FIGS. 5 and 6 illustrate the mapping of Y-bit program instruction words to X-bit program instruction words;
FIG. 7 illustrates an X-bit instruction set;
FIG. 8 illustrates a Y-bit instruction set; and
FIG. 9 illustrates the processing registers available to the first instruction set and the second instruction set.
DESCRIPTION OF THE PREFERRED EMBODIMENTS
FIG. 1 illustrates a data processing system (that is formed as part of an integrated circuit) comprising a processor core 2 coupled to a Y-bit memory system 4. In this case, Y is equal to 16.
The processor core 2 includes a register bank 6, a Booths multiplier 8, a barrel shifter 10, a 32-bit arithmetic logic unit 12 and a write data register 14. Interposed between the processor core 2 and the memory system 4 is an instruction pipeline 16, an instruction decoder 18 and a read data register 20. A program counter register 22, which is part of the processor core 2, is shown addressing the memory system 4. A program counter incrementer 24 serves to increment the program counter value within the program counter register 22 as each instruction is executed and a new instruction must be fetched for the instruction pipeline 16.
The processor core 2 incorporates N-bit data pathways (in this case 32-bit data pathways) between the various functional units. In operation, instructions within the instruction pipeline 16 are decoded by the instruction decoder 18 which produces various core control signals that are passed to the different functional elements within the processor core 2. In response to these core control signals, the different portions of the processor core conduct 32-bit processing operations, such as 32-bit multiplication, 32-bit addition and 32-bit logical operations.
The register bank 6 includes a current programming status register 26 and a saved programming status register 28. The current programming status register 26 holds various condition and status flags for the processor core 2. These flags may include processing mode flags (e.g. system mode, user mode, memory abort mode etc.) as well as flags indicating the occurrence of zero results in arithmetic operations, carries and the like. The saved programming status register 28 (which may be one of a banked plurality of such saved programming status registers) is used to temporarily store the contents of the current programming status register 26 if an exception occurs that triggers a processing mode switch. In this way, exception handling can be made faster and more efficient.
Included within the current programming status register 26 is an instruction set flag T. This instruction set flag is supplied to the instruction decoder 18 and the program counter incrementer 24. When this instruction set flag T is set, the system operates with the instructions of the second instruction set (i.e. Y-bit program instruction words, in this case 16-bit program instruction words). The instruction set flag T controls the program counter incrementer 24 to adopt a smaller increment step when operated with the second instruction set. This is consistent with the program instruction words of the second instruction set being smaller and so more closely spaced within the memory locations of the memory system 4.
As previously mentioned, the memory system 4 is a 16-bit memory system connected via 16-bit data buses to the read data register 20 and the instruction pipeline 16. Such 16-bit memory systems are simpler and inexpensive relative to higher performance 32-bit memory systems. Using such a 16-bit memory system, 16-bit program instruction words can be fetched in a single cycle. However, if 32-bit instructions from the second instruction set are to be used (as indicated by the instruction set flag T), then two instruction fetches are required to recover a single 32-bit instruction for the instruction pipeline 16.
Once the required program instruction words have been recovered from the memory system 4, they are decoded by the instruction decoder 18 and initiate 32-bit processing within the processor core 2 irrespective of whether the instructions are 16-bit instructions or 32-bit instructions.
The instruction decoder 18 is illustrated in FIG. 1 as a single block. However, in order to deal with more than one instruction set, the instruction decoder 18 has a more complicated structure as will be discussed in relation to FIGS. 2 and 3.
FIG. 2 illustrates the instruction pipeline 16 and an instruction decoder 18 for coping with a single instruction set. In this case, the instruction decoder 18 includes only a first decoding means 30 that is operative to decode 32-bit instructions. This decoding means 30 decodes the first instruction set (the ARM instruction set) utilising a programmable logic array (PLA) to produce a plurality of core control signals 32 that are fed to the processor core 2. The program instruction word which is currently decoded (i.e. yields the current the core control signals 32) is also held within an instruction register 34. Functional elements within the processor core 2 (e.g. the Booths multiplier 8 or the register bank 6) read operands needed for their processing operation directly from this instruction register 34.
A feature of the operation of such an arrangement is that the first decoding means 30 requires certain of its inputs (the P bits shown as solid lines emerging from the PipeC pipeline stage) early in the clock cycle in which the first decoding means operates. This is to ensure that the core control signals 32 are generated in time to drive the necessary elements within the processor core 2. The first decoding means 30 is a relatively large and slow programmable logic array structure and so such timing considerations are important.
The design of such programmable logic array structures to perform instruction decoding is conventional within the art. A set of inputs are defined together with the desired outputs to be generated from those inputs. Commercially available software is then used to devise a PLA structure that will generate the specified set of outputs from the specified set of inputs.
FIG. 3 illustrates the system of FIG. 2 modified to deal with decoding a first instruction set and a second instruction set. When the first instruction set is selected by the instruction set flag T, then the system operates as described in relation to FIG. 2. When the instruction set flag T indicates that the instructions in the instruction pipeline 16 are from the second instruction set, a second decoding means 36 becomes active.
This second decoding means decodes the 16-bit instructions (the Thumb instructions) utilising a fast PLA 38 and a parallel slow PLA 40. The fast PLA 38 serves to map a subset (Q bits) of the bits of the 16-bit Thumb instructions to the P bits of the corresponding 32-bit ARM instructions that are required to drive the first decoding means 30. Since a relatively small number of bits are required to undergo this mapping, the fast PLA 38 can be relatively shallow and so operate quickly enough to allow the first decoding means sufficient time to generate the core control signals 32 in response to the contents of PipeC. The fast PLA 38 can be considered to act to "fake" the critical bits of a corresponding 32-bit instruction for the first decoding means without spending any unnecessary time mapping the full instruction.
However, the full 32-bit instruction is still required by the processor core 2 if it is to be able to operate without radical alterations and significant additional circuit elements. With the time critical mapping having been taken care of by the fast PLA 38, the slow PLA 40 connected in parallel serves to map the 16-bit instruction to the corresponding 32-bit instruction and place this into the instruction register 34. This more complicated mapping may take place over the full time it takes the fast PLA 38 and the first decoding means 30 to operate. The important factor is that the 32-bit instruction should be present within the instruction register 34 in sufficient time for any operands to be read therefrom in response to the core control signals 32 acting upon the processor core 2.
It will be appreciated that the overall action of the system of FIG. 3 when decoding the second instruction set is to translate 16-bit instructions from the second instruction set to 32-bit instructions from the first instruction set as they progress along the instruction pipeline 16. This is rendered a practical possibility by making the second instruction set a subset of a first instruction set so as to ensure that there is a one to one mapping of instructions from the second instructions set into instructions within the first instruction set.
The provision of the instruction set flag T enables the second instruction set to be non-orthogonal to the first instruction set. This is particularly useful in circumstances where the first instruction set is an existing instruction set without any free bits that could be used to enable an orthogonal further instruction set to be detected and decoded.
FIG. 4 illustrates the decoding of a 32-bit instruction. At the top of FIG. 4 successive processing clock cycles are illustrated in which a fetch operation, a decode operation and finally an execute operation performed. If the particular instruction so requires (e.g. a multiply instruction), then one or more additional execute cycles may be added.
A 32-bit instruction 42 is composed of a plurality of different fields. The boundaries between these fields will differ fop differing instructions as will be shown later in FIG. 7.
Some of the bits within the instruction 42 require decoding within a primary decode phase. These P bits are bits 4 to 7, 20 and 22 to 27. These are the bits that are required by the first decoding means 30 and that must be "faked" by the fast PLA 38. These bits must be applied to the first decoding means and decoded thereby to generate appropriate core control signals 32 by the end of the first part of the decode cycle. Decoding of the full instruction can, if necessary, take as long as the end of decode cycle. At the end of the decode cycle, operands within the instruction are read from the instruction register 34 by the processor 2 during the execute cycle. These operands may be register specifiers, offsets or other variables.
FIG. 5 shows the mapping of an example of 16-bit instruction to a 32-bit instruction. The thick lines originate from the Q bits within the 16-bit instruction that require mapping into the P bits within the 32-bit instruction so that they may be applied to the first decoding means 30. It will be seen that the majority of these bits are either copied straight across or involve a simple mapping. The operands Rn', Rd and Immediate within the 16-bit instruction require padding at their most significant end with zeros to fill the 32-bit instruction. This padding is needed as a result of the 32-bit instruction operands having a greater range than the 16-bit instruction operands.
It will be seen from the generalised form of the 32-bit instruction given at the bottom of FIG. 5, that the 32-bit instruction allows considerably more flexibility than the subset of that instruction that is represented by the 16-bit instruction. For example, the 32-bit instructions are preceded by condition codes Cond that renders the instruction conditionally executable. In contrast, the 16-bit instructions do not carry any condition codes in themselves and the condition codes of the 32-bit instructions to which they are mapped are set to a value of "1110" that is equivalent to the conditional execution state "always".
FIG. 6 illustrates another such instruction mapping. The 16-bit instruction in this case is a different type of Load/Store instruction to that illustrated in FIG. 5. However, this instruction is still a subset of the single data transfer instruction of the 32-bit instruction set.
FIG. 7 schematically illustrates the formats of the eleven different types of instruction for the 32-bit instruction set. These instructions are in turn:
1. Data processing PSR transfer;
2. Multiply;
3. Single data swap;
4. Single data transfer;
5. Undefined;
6. Block data transfer;
7. Branch;
8. Co-processor data transfer;
9. Co-processor data operation; and
10. Co-processor register transfer.
11. Software interrupt.
A full description of this instruction set may be found in the Data Sheet of the ARM6 processor produced by Advanced RISC Machines Limited. The instruction highlighted within FIG. 7 is that illustrated in FIGS. 5 and 6.
FIG. 8 illustrates the 16-bit instruction set that is provided in addition to the 32-bit instruction set. The instructions highlighted within this instruction set are those illustrated in FIGS. 5 and 6 respectively. The instructions within this 16-bit instruction set have been chosen such that they may all be mapped to a single 32-bit instruction and so form a subset of the 32-bit instruction set.
Passing in turn between each of the instructions in this instruction set, the formats specify the following:
______________________________________                                    
Format 1:                                                                 
        Op = 0, 1. Both ops set the condition code flags.                 
        0: ADD Rd, Rs, #Immediate3                                        
        1: SUB Rd, Rs, #Immediate3                                        
Format 2:                                                                 
        Op = 0, 1. Both ops set the condition code flags.                 
        0: ADD Rd, Rm, Rn                                                 
        1: SUB Rd, Rm, Rn                                                 
Format 3:                                                                 
        3 opcodes. Used to build large immediates.                        
        1 = ADD Rd, Rd, #Immediate 8<<8                                   
        2 = ADD Rd, Rd, #Immediate 8<<16                                  
        3 = ADD Rd, Rd, #Immediate 8<<24                                  
Format 4:                                                                 
        Op gives 3 opcodes, all operations are MOVS Rd, Rs                
        SHIFT                                                             
        #Immediate5, where SHIFT is                                       
        0 is LSL                                                          
        1 is LSR                                                          
        2 is ASR                                                          
        Shifts by zero as defined on ARM.                                 
Format 5:                                                                 
        Op1*8 + Op2 gives 32 ALU opcodes, Rd = Rd op Rn. All              
        operations set the condition code flags.                          
        The operations are                                                
        AND, OR, EOR, BIC (AND NOT), NEGATE, CMP,                         
        CMN, MUL, TST, TEQ, MOV, MVN (NOT), LSL, LSR,                     
        ASR, ROR                                                          
        Missing ADC, SBC, MULL                                            
        Shifts by zero and greater than 31 as defined on ARM              
        8 special opcodes, LO specifies Reg 0-7, HI specifies a           
        register 8-15                                                     
        SPECIAL is CPSR or SPSR                                           
MOV         HI, LO (move hidden register to visible                       
            register)                                                     
MOV         LO, HI (move visible register to hidden                       
            register)                                                     
MOV         HI, HI (eg procedure return)                                  
MOVS        HI, HI (eg exception return)                                  
MOVS        HI, LO (eg interrupt return, could be SUBS,                   
            HI, HI, #4)                                                   
MOV         SPECIAL, LO (MSR)                                             
MOV         LO, SPECIAL (MRS)                                             
CMP         HI, HI (stack limit check)                                    
8 free opcodes                                                            
Format 6:                                                                 
        Op gives 4 opcodes. All operations set the condition              
        code flags                                                        
        0: MOV Rd, #Immediate 8                                           
        1: CMP Rs, #Immediate 8                                           
        2: ADD Rd, Rd, #Immediate 8                                       
        It is possible to trade ADD for ADD Rd, Rs, #Immediate5           
Format 7:                                                                 
        Loads a word PC + Offset (256 words, 1024 bytes). Note            
        the offset must be word aligned.                                  
        LDR Rd,  PC, #+1024!                                              
        This instruction is used to access the next literal               
        pool, to load constants, addresses etc.                           
Format 8:                                                                 
        Load and Store Word from SP (r7) + 256 words (1024                
        bytes)                                                            
        Load and Store Byte from SP (r7) + 256 bytes                      
        LRD Rd,  SP, #+1024!                                              
        LDRB Rd,  SP, #+256!                                              
        These instructions are for stack and frame access.                
Format 9:                                                                 
        Load and Store Word (or Byte), signed 3 bit Immediate             
        Offset (Post Inc/Dec), Forced Writeback                           
        L is Load/Store, U is Up/Down (add/subtract offset), B            
        is Byte/Word                                                      
        LDR {B} Rd,  Rb!, #+/-Offset3                                     
        STR {B} Rd,  Rb!, #+/-Offset3                                     
        These instructions are intended for array access                  
        The offset encodes 0-7 for bytes and 0, 4-28 for                  
        words                                                             
Format 10:                                                                
        Load and Store Word (or Byte) with signed Register                
        Offset (Pre Inc/Dec), No writeback                                
        L is Load/Store, U is Up/Down (add/subtract offset), B            
        is Byte/Word                                                      
LDR         Rd,  Rb, +/-Ro, LSL#2!                                        
STR         Rd,  Rb, +/-Ro, LSL#2!                                        
LDRB        Rd,  Rb, +/-Ro!                                               
STRB        Rd,  Rb, +/-Ro!                                               
        These instructions are intended for base + offset                 
        pointer access, and combined with the 8-bit MOV, ADD,             
        SUB give fairly quick immediate offset access.                    
Format 11:                                                                
        Load and Store Word (or Byte) with signed 5 bit                   
        Immediate Offset (Pre Inc/Dec), No Writeback                      
        L is Load/Store B is Byte/Word                                    
        LDR {B} Rd,  Rb, #+Offset5!                                       
        STR {B} Rd,  Rb, #+Offset5!                                       
        These instructions are intended for structure access              
        The offset encodes 0-31 for bytes and 0, 4-124 for                
        words                                                             
Format 12:                                                                
        Load and Store Multip1e (Forced Writeback)                        
        LDMIA Rb|, {Rlist}                                                
        STMIA Rb|, {Rlist}                                                
        Rlist specify registers r0-r7                                     
        A sub-class of these instructions are a pair of                   
        subroutine call and return instructions.                          
        For LDM if r7 is the base and bit 7 is set in rlist, the          
        PC is loaded                                                      
        For STM if r7 is the base and bit 7 is set in rlist, the          
        LR is stored                                                      
        If r7 is used as the base register, sp is used instead            
        In both cases a Full Descending Stack is implemented ie           
        LDM is like ARM's LDMFD, STM is like ARM's STMFD                  
        So for block copy, use r7 as the end pointer                      
        If r7 is not the base, LDM and STM is like ARMs                   
        LDMIA, STMIA                                                      
Format 13:                                                                
        Load address. This instruction adds an 8 bit unsigned             
        constant to either the PC or the stack pointer and                
        stores the results in the destination register.                   
ADD         Rd, sp, + 256 bytes                                           
ADD         Rd, pc, + 256 words (1024 bytes)                              
        The SP bit indicates if the SP or the PC is the source.           
        If SP is the source, and r7 is specified as the                   
        destination register, SP is used as the destination               
        register.                                                         
Format 14:                                                                
        Conditional branch, +/- 128 bytes, where cond defines             
        the condition code (as on ARM) cond = 15 encodes as SWI           
        (only 256, should be plenty).                                     
Format 15:                                                                
        Sets bits 22:12 of a long branch and link. MOV lr,                
        #offset << 12.                                                    
Format 16:                                                                
        Performs a long branch and link. Operation is SUB                 
        newlr, pc, #4; ORR pc, oldlr, #offset <<1. newlr and              
        oldlr mean the lr register before and after the                   
        operation.                                                        
______________________________________                                    
As previously mentioned, the 16-bit instruction set has reduced operand ranges compared to the 32-bit instruction set. Commensurate with this, the 16-bit instruction set uses a subset of the registers 6 (see FIG. 1) that are provided for the full 32-bit instruction set. FIG. 9 illustrates the subset of registers that are used by the 16-bit instruction set.
Although illustrative embodiments of the invention have been described in detail herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various changes and modifications can be effected therein by one skilled in the art without departing from the scope and spirit of the invention as defined by the appended claims.

Claims (15)

I claim:
1. Embedded apparatus for processing data, said embedded apparatus comprising:
(i) a processor core having N-bit data path rays that receive a plurality of core control signals determined by either decoded X-bit program instruction words in a first permanent instruction set, or decoded Y-bit program instruction words in a second permanent instruction set, where Y is less than X, the second permanent instruction set corresponding to a subset of the first permanent instruction set and having subset elements of a type providing common functionality and higher code density with respect to said first permanent instruction set, the processor core adapted to perform N-bit data processing operations in response to the determined core control signals;
(ii) a first decoder that is coupled to the N-bit data pathways of the processor core, and that receives selected X-bit program instruction words of the first permanent instruction set including all fixed length X-bit program instruction words specifying N-bit data processing operations, and decodes the X-bit instruction words to generate said core control signals to cause the processor core to perform the specified N-bit data processing operations using said N-bit data pathways;
(iii) a second decoder that is coupled to the N-bit data pathways of the processor core, and that receives selected. Y-bit program instruction words of the second permanent instruction set including all fixed length Y-bit program instruction words specifying N-bit data processing operations, and decodes the Y-bit instruction words to generate said core control signals to cause the N-bit data processing operations using said N-bit data pathways; and
(iv) an instruction set switch coupled to said first decoder and to said second decoder for selecting either a first processing mode using said first decoder to decode received program instruction words or a second processing mode using said second decoder to decode said same received program instruction words, the instruction set switch being responsive to an instruction set flag, the instruction set flag being settable in real time under program control.
2. Apparatus as claimed in claim 1, wherein said second instruction set is non-orthogonal to said first instruction set.
3. Apparatus as claimed in claim 1, wherein said instruction set switch selects either said first processing mode or said second processing mode in response to an instruction set flag, said instruction set flag being setable under user program control.
4. Apparatus as claimed in claim 3, wherein said processor core comprises a program status register for storing currently applicable processing status data and a saved program status register, said saved program status register being utilized to store processing status data associated with a main program when a program exception occurs causing execution of an exception handling program, said instruction set flag being part of said processing status data.
5. Apparatus as claimed in claim 1 wherein said processor core comprises a program counter register and a program counter incrementer for incrementing a program counter value stored within said program counter register to point to a next program instruction word, said program counter incrementer incrementing said program counter value by a first increment step in said first processing mode; and by a second increment step in said second processing mode, said second increment step less than said first increment step.
6. Apparatus as claimed in claim 1, wherein at least one program instruction word within said second instruction set has a reduced operand range compared to a corresponding program instruction word within said first instruction set.
7. Apparatus as claimed in claim 1, further comprising:
(v) a memory system coupled to said processor core and to said first decoder and said second decoder by a Y-bit data pathway, and adapted to store and to provide to said decoders X-bit program instruction words of said first instruction set, and Y-bit program instruction words of said second instruction set, such that Y-bit program instruction words from said second instruction set require a single fetch cycle and X-bit program instruction words from said first instruction set require a plurality of fetch cycles.
8. Apparatus as claimed in claim 1, wherein said second decoder reuses at least a part of said first decoder.
9. Apparatus as claimed in claim 1, wherein said apparatus is an integrated circuit.
10. A method of processing data, said method comprising the steps of:
(i) selecting either a first processing mode or a second processing mode of an embedded processor core having N-bit data pathways that receive a plurality of core control signals determined by either decoded X-bit program instruction words in a first permanent instruction set or decoded Y-bit program instruction words in a second permanent instruction set, where Y is less than X, the second permanent instruction set corresponding to a subset of the first permanent instruction set and having subset elements of a type providing common functionality and higher code density with respect to said first permanent instruction set;
(ii) in said first processing mode, decoding received program instruction words as X-bit program instruction words from said first permanent instruction set including all fixed length X-bit program instruction words specifying N-bit data processing operations to generate core control signals, and providing said control signals to said processor core to cause said processor core to perform said specified N-bit data processing operations using said N-bit data pathways
(iii) in said second processing mode, decoding received program instruction words as Y-bit program instruction words from said second permanent instruction set including all fixed length Y-bit program instruction words specifying N-bit data processing operations to generate core control signals, and providing said control signals to said processor core to cause said processor core to perform said specified N-bit data processing operations using said N-bit data pathways; and
(iv) selecting, by an instruction set switch, either said first processing mode or said second processing mode, the instructions set switch being responsive to an instruction set flag, the instruction set flag being settable in real time under program control.
11. Apparatus as claimed in claim 1, wherein said second decoder decodes said Y-bit program instruction words by mapping a Y-bit program instruction word into a first X-bit program instruction word and providing said first X-bit program instruction word to said first decoder to decode said first X-bit program instruction word.
12. Apparatus as claimed in claim 1, wherein said second decoder comprises:
a first programmable logic array that receives a first subset of bits in a Y-bit program instruction word, maps said first subset of bits into a corresponding subset of bits in an X-bit program instruction word, and provides the corresponding subset of bits of said X-bit program instruction word to the first decoder for decoding into core control signals;
a second programmable logic array that receives said Y-bit program instruction word, and maps said Y-bit program instruction word to said corresponding X-bit instruction word, outputting said corresponding X-bit instruction word to an instruction register by a time said corresponding X-bit instruction word is read therefrom by said processor core in response to said core control signals.
13. The method of claim 10, further comprising:
storing a program counter value indicating a current program instruction word to be fetched;
in said first processing mode, incrementing said program counter value by a first increment step, and fetching an X-bit program instruction word in correspondence to said first increment step; and,
in said second processing mode, incrementing said program counter value by a second increment step, said second increment step being less than said first increment step, and fetching a Y-bit program instruction word in correspondence to said second increment step.
14. The method of claim 10, wherein the step (iii) comprises the substeps of:
mapping a Y-bit program instruction word into a first X-bit program instruction word; and,
decoding said first X-bit program instruction word to said first decoder to generate said core control signals thereform.
15. The method of claim 10, wherein step (iii) comprises the substep of:
mapping a first subset of bits in a Y-bit program instruction word, maps said first subset of bits into a corresponding subset of bits in an X-bit program instruction word and decoding the corresponding subset of bits of said X-bit program instruction into core control signals; and,
mapping said Y-bit program instruction word to said corresponding X-bit instruction word, and outputting said corresponding X-bit instruction word at a substantially same time as said corresponding X-bit instruction word is processed in response to said core control signals.
US08/735,046 1994-05-03 1996-10-22 Data processing with multiple instruction sets Expired - Lifetime US5740461A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08/735,046 US5740461A (en) 1994-05-03 1996-10-22 Data processing with multiple instruction sets

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB9408765A GB2289353B (en) 1994-05-03 1994-05-03 Data processing with multiple instruction sets
GB9408765 1994-05-03
US30883694A 1994-09-19 1994-09-19
US08/735,046 US5740461A (en) 1994-05-03 1996-10-22 Data processing with multiple instruction sets

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US30883694A Continuation 1994-05-03 1994-09-19

Publications (1)

Publication Number Publication Date
US5740461A true US5740461A (en) 1998-04-14

Family

ID=10754489

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/735,046 Expired - Lifetime US5740461A (en) 1994-05-03 1996-10-22 Data processing with multiple instruction sets

Country Status (13)

Country Link
US (1) US5740461A (en)
EP (3) EP1296225A3 (en)
JP (3) JP3173793B2 (en)
KR (2) KR100327776B1 (en)
CN (2) CN1089460C (en)
DE (2) DE69530520T2 (en)
GB (1) GB2289353B (en)
IL (1) IL113153A (en)
IN (1) IN190632B (en)
MY (1) MY113751A (en)
RU (1) RU2137183C1 (en)
TW (1) TW242184B (en)
WO (1) WO1995030188A1 (en)

Cited By (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5938759A (en) * 1997-08-20 1999-08-17 Fujitsu Limited Processor instruction control mechanism capable of decoding register instructions and immediate instructions with simple configuration
US6002876A (en) * 1996-09-27 1999-12-14 Texas Instruments Incorporated Maintaining code consistency among plural instruction sets via function naming convention
US6079010A (en) * 1998-03-31 2000-06-20 Lucent Technologies Inc. Multiple machine view execution in a computer system
US6219774B1 (en) * 1995-06-07 2001-04-17 Intel Corporation Address translation with/bypassing intermediate segmentation translation to accommodate two different instruction set architecture
US6230259B1 (en) * 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6327650B1 (en) * 1999-02-12 2001-12-04 Vsli Technology, Inc. Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
US20020052999A1 (en) * 2000-09-08 2002-05-02 Jahnke Steven R. Multiple transaction bus system
US20020066083A1 (en) * 1998-12-08 2002-05-30 Patel Mukesh K. Java virtual machine hardware for RISC and CISC processors
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
US6408386B1 (en) 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US6434690B1 (en) * 1995-05-02 2002-08-13 Hitachi, Ltd. Microprocessor having a DSP and a CPU and a decoder discriminating between DSP-type instructions and CUP-type instructions
US6438679B1 (en) * 1997-11-03 2002-08-20 Brecis Communications Multiple ISA support by a processor using primitive operations
US20020156996A1 (en) * 2001-04-18 2002-10-24 Mips Technologies, Inc. Mapping system and method for instruction set processing
WO2002097609A2 (en) * 2001-05-31 2002-12-05 Arm Limited Unhandled operation handling in multiple instruction set systems
US20020188825A1 (en) * 2001-05-31 2002-12-12 Seal David James Data processing using multiple instruction sets
US20030041231A1 (en) * 2001-08-10 2003-02-27 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US6549999B2 (en) 1998-03-11 2003-04-15 Matsushita Electric Industrial Co., Ltd. Data processor
US20030225998A1 (en) * 2002-01-31 2003-12-04 Khan Mohammed Noshad Configurable data processor with multi-length instruction set architecture
US6662087B1 (en) * 2000-01-03 2003-12-09 Spx Corporation Backward compatible diagnostic tool
US6678818B1 (en) * 1999-05-03 2004-01-13 Stmicroelectronics S.A. Decoding next instruction of different length without length mode indicator change upon length change instruction detection
US20040015896A1 (en) * 2001-05-31 2004-01-22 Dornan Christopher Bentley Program instruction interpretation
US20040019880A1 (en) * 2002-07-25 2004-01-29 Rose Andrew Christopher Write-through caching a java local variable within a register of a register bank
US20040193828A1 (en) * 2003-03-26 2004-09-30 Arm Limited Memory recycling in computer systems
US20050067099A1 (en) * 2003-09-26 2005-03-31 Walton Scott G. Method and apparatus for producing an ion-ion plasma continuous in time
US20050081022A1 (en) * 2001-06-18 2005-04-14 Mips Technologies, Inc. Method and apparatus for saving and restoring processor register values and allocating and deallocating stack memory
US6904517B2 (en) 2000-11-27 2005-06-07 Arm Limited Data processing apparatus and method for saving return state
US6907515B2 (en) 2001-05-31 2005-06-14 Arm Limited Configuration control within data processing systems
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US20050177707A1 (en) * 2003-10-31 2005-08-11 Mips Technologies, Inc. Method and apparatus for recoding instructions
US20050210226A1 (en) * 2004-03-18 2005-09-22 Arm Limited Function calling mechanism
US20060026404A1 (en) * 2004-07-27 2006-02-02 Texas Instruments Incorporated Method and system to construct a data-flow analyzer for a bytecode verfier
US7000094B2 (en) 2000-10-05 2006-02-14 Arm Limited Storing stack operands in registers
US7003652B2 (en) 2000-10-05 2006-02-21 Arm Limited Restarting translated instructions
US7076771B2 (en) 2000-12-01 2006-07-11 Arm Limited Instruction interpretation within a data processing system
US20060155524A1 (en) * 2004-12-07 2006-07-13 Guethner Russell W Instructions to load and store containing words in a computer system emulator with host word size larger than that of the emulated machine
US7096345B1 (en) 2003-09-26 2006-08-22 Marvell International Ltd. Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof
US7149878B1 (en) 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US20070005857A1 (en) * 2005-07-01 2007-01-04 Samsung Electronics Co., Ltd. Bus system and method of arbitrating the same
US20070118724A1 (en) * 2000-10-10 2007-05-24 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
WO2007071417A1 (en) * 2005-12-23 2007-06-28 Koninklijke Kpn N.V. Processor lock
US7278137B1 (en) 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
US20070266196A1 (en) * 2004-09-16 2007-11-15 Nec Corporation Information Processing Apparatus Having Multiple Processing Units Sharing Multiple Resources
US7437532B1 (en) 2003-05-07 2008-10-14 Marvell International Ltd. Memory mapped register file
US7493470B1 (en) 2001-12-07 2009-02-17 Arc International, Plc Processor apparatus and methods optimized for control applications
US20090064132A1 (en) * 2007-08-28 2009-03-05 Red Hat, Inc. Registration process for determining compatibility with 32-bit or 64-bit software
US20090064133A1 (en) * 2007-08-28 2009-03-05 Red Hat, Inc. Provisioning for 32-bit or 64-bit systems
US20090187744A1 (en) * 2008-01-23 2009-07-23 Peter Richard Greenhalgh Data processing apparatus and method for pre-decoding instructions
US20090187742A1 (en) * 2008-01-23 2009-07-23 Arm Limited Instruction pre-decoding of multiple instruction sets
US20090187743A1 (en) * 2008-01-23 2009-07-23 Arm Limited Data processing apparatus and method for instruction pre-decoding
US20090249033A1 (en) * 2008-01-23 2009-10-01 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US20100017580A1 (en) * 2008-01-23 2010-01-21 Peter Richard Greenhalgh Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US20100125720A1 (en) * 2008-11-14 2010-05-20 Jan Sheng-Yuan Instruction mode identification apparatus and method
US7802080B2 (en) 2004-03-24 2010-09-21 Arm Limited Null exception handling
US20100287359A1 (en) * 2009-05-11 2010-11-11 Mips Technologies, Inc. Variable register and immediate field encoding in an instruction set architecture
US7930526B2 (en) 2004-03-24 2011-04-19 Arm Limited Compare and branch mechanism
USRE43248E1 (en) 1994-06-10 2012-03-13 Arm Limited Interoperability with multiple instruction sets
US20120233443A1 (en) * 2001-10-29 2012-09-13 Julien Sebot Processor to execute shift right merge instructions
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US20140281274A1 (en) * 2013-03-16 2014-09-18 Intel Corporation Shared memory interleavings for instruction atomicity violations
US8848532B2 (en) 2010-04-15 2014-09-30 Huawei Technologies Co., Ltd. Method and system for processing data
US20150309943A1 (en) * 2014-04-23 2015-10-29 SK Hynix Inc. Memory control unit and data storage device including the same
US9965320B2 (en) 2013-12-27 2018-05-08 Intel Corporation Processor with transactional capability and logging circuitry to report transactional operations
US10007520B1 (en) * 2016-02-25 2018-06-26 Jpmorgan Chase Bank, N.A. Systems and methods for using alternate computer instruction sets
US10120688B2 (en) 2016-11-15 2018-11-06 Andes Technology Corporation Data processing system and method for executing block call and block return instructions
US10545772B2 (en) 2014-03-18 2020-01-28 International Business Machines Corporation Architectural mode configuration
US10747582B2 (en) 2014-03-18 2020-08-18 International Business Machines Corporation Managing processing associated with selected architectural facilities

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
GB2329495B (en) * 1996-06-10 2000-09-20 Lsi Logic Corp An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US5905893A (en) * 1996-06-10 1999-05-18 Lsi Logic Corporation Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
GB2349252B (en) * 1996-06-10 2001-02-14 Lsi Logic Corp An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US6012138A (en) * 1997-12-19 2000-01-04 Lsi Logic Corporation Dynamically variable length CPU pipeline for efficiently executing two instruction sets
EP1050796A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics S.A. A decode unit and method of decoding
GB2367915B (en) * 2000-10-09 2002-11-13 Siroyan Ltd Instruction sets for processors
EP1324191A1 (en) * 2001-12-27 2003-07-02 STMicroelectronics S.r.l. Processor architecture, related system and method of operation
US7194601B2 (en) 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
US6983359B2 (en) 2003-08-13 2006-01-03 Via-Cyrix, Inc. Processor and method for pre-fetching out-of-order instructions
EP1687713A1 (en) * 2003-10-24 2006-08-09 Microchip Technology Incorporated Method and system for alternating instructions sets in a central processing unit
US8914619B2 (en) * 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions
GB2484489A (en) * 2010-10-12 2012-04-18 Advanced Risc Mach Ltd Instruction decoder using an instruction set identifier to determine the decode rules to use.
CN102360281B (en) * 2011-10-31 2014-04-02 中国人民解放军国防科学技术大学 Multifunctional fixed-point media access control (MAC) operation device for microprocessor
CN104991759B (en) * 2015-07-28 2018-01-16 成都腾悦科技有限公司 A kind of variable order collection microprocessor and its implementation
CN111090465B (en) * 2019-12-19 2022-08-19 四川长虹电器股份有限公司 Decoding system and decoding method for RV32IC instruction set

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2016755A (en) * 1978-03-13 1979-09-26 Motorola Inc Instruction set modifier register
US4274138A (en) * 1976-07-31 1981-06-16 Tokyo Shibaura Denki Kabushiki Kaisha Stored program control system with switching between instruction word systems
US4338663A (en) * 1978-10-25 1982-07-06 Digital Equipment Corporation Calling instructions for a data processing system
EP0306920A2 (en) * 1987-09-07 1989-03-15 Nec Corporation Data processor having expanded operating functions
EP0324308A2 (en) * 1988-01-11 1989-07-19 International Business Machines Corporation Method and system for decoding plural incompatible format instructions
US4876639A (en) * 1983-09-20 1989-10-24 Mensch Jr William D Method and circuitry for causing sixteen bit microprocessor to execute eight bit op codes to produce either internal sixteen bit operation or internal eight bit operation in accordance with an emulation bit
US5327566A (en) * 1991-07-12 1994-07-05 Hewlett Packard Company Stage saving and restoring hardware mechanism
US5404472A (en) * 1988-11-11 1995-04-04 Hitachi, Ltd. Parallel processing apparatus and method capable of switching parallel and successive processing modes
US5420992A (en) * 1991-03-11 1995-05-30 Silicon Graphics, Inc. Backward-compatible computer architecture with extended word size and address space
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6133546A (en) * 1984-07-25 1986-02-17 Nec Corp Information processor
DE3650602T2 (en) * 1985-04-08 1997-06-12 Hitachi Ltd Data processing system
JPS62262146A (en) * 1986-05-09 1987-11-14 Hitachi Ltd Processor
JPH0476626A (en) * 1990-07-13 1992-03-11 Toshiba Corp Microcomputer
GB2284492B (en) * 1993-12-06 1998-05-13 Graeme Roy Smith Improvements to computer control units

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4274138A (en) * 1976-07-31 1981-06-16 Tokyo Shibaura Denki Kabushiki Kaisha Stored program control system with switching between instruction word systems
GB2016755A (en) * 1978-03-13 1979-09-26 Motorola Inc Instruction set modifier register
US4338663A (en) * 1978-10-25 1982-07-06 Digital Equipment Corporation Calling instructions for a data processing system
US4876639A (en) * 1983-09-20 1989-10-24 Mensch Jr William D Method and circuitry for causing sixteen bit microprocessor to execute eight bit op codes to produce either internal sixteen bit operation or internal eight bit operation in accordance with an emulation bit
EP0306920A2 (en) * 1987-09-07 1989-03-15 Nec Corporation Data processor having expanded operating functions
EP0324308A2 (en) * 1988-01-11 1989-07-19 International Business Machines Corporation Method and system for decoding plural incompatible format instructions
US5404472A (en) * 1988-11-11 1995-04-04 Hitachi, Ltd. Parallel processing apparatus and method capable of switching parallel and successive processing modes
US5420992A (en) * 1991-03-11 1995-05-30 Silicon Graphics, Inc. Backward-compatible computer architecture with extended word size and address space
US5327566A (en) * 1991-07-12 1994-07-05 Hewlett Packard Company Stage saving and restoring hardware mechanism
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline

Cited By (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE43248E1 (en) 1994-06-10 2012-03-13 Arm Limited Interoperability with multiple instruction sets
US6434690B1 (en) * 1995-05-02 2002-08-13 Hitachi, Ltd. Microprocessor having a DSP and a CPU and a decoder discriminating between DSP-type instructions and CUP-type instructions
US20060224859A1 (en) * 1995-05-02 2006-10-05 Hiroshi Ohsuga Microcomputer
US7363466B2 (en) 1995-05-02 2008-04-22 Renesas Technology Corp. Microcomputer
US20080294873A1 (en) * 1995-05-02 2008-11-27 Hiroshi Ohsuga Microcomputer
US7558944B2 (en) 1995-05-02 2009-07-07 Renesas Technology Corp. Microcomputer
US6408386B1 (en) 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US6219774B1 (en) * 1995-06-07 2001-04-17 Intel Corporation Address translation with/bypassing intermediate segmentation translation to accommodate two different instruction set architecture
US6584558B2 (en) 1995-06-07 2003-06-24 Intel Corporation Article for providing event handling functionality in a processor supporting different instruction sets
US6002876A (en) * 1996-09-27 1999-12-14 Texas Instruments Incorporated Maintaining code consistency among plural instruction sets via function naming convention
US5938759A (en) * 1997-08-20 1999-08-17 Fujitsu Limited Processor instruction control mechanism capable of decoding register instructions and immediate instructions with simple configuration
US6230259B1 (en) * 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6438679B1 (en) * 1997-11-03 2002-08-20 Brecis Communications Multiple ISA support by a processor using primitive operations
US8443173B2 (en) 1998-03-11 2013-05-14 Panasonic Corporation Method for instructing a data processor to process data
US20070150704A1 (en) * 1998-03-11 2007-06-28 Matsushita Electric Industrial Co., Ltd. Data processor
US8650386B2 (en) 1998-03-11 2014-02-11 Panasonic Corporation Data processor including an operation unit to execute operations in parallel
US20100146244A1 (en) * 1998-03-11 2010-06-10 Panasonic Corporation Method for instructing a data processor to process data
US7979676B2 (en) 1998-03-11 2011-07-12 Panasonic Corporation Method for instructing a data processor to process data
US7664934B2 (en) 1998-03-11 2010-02-16 Panasonic Corporation Data processor decoding instruction formats using operand data
US6549999B2 (en) 1998-03-11 2003-04-15 Matsushita Electric Industrial Co., Ltd. Data processor
US7194602B2 (en) 1998-03-11 2007-03-20 Matsushita Electric Industrial Co., Ltd. Data processor
US20030172251A1 (en) * 1998-03-11 2003-09-11 Matsushita Electric Industrial Co., Ltd. Data processor
US6079010A (en) * 1998-03-31 2000-06-20 Lucent Technologies Inc. Multiple machine view execution in a computer system
US8185882B2 (en) 1998-12-08 2012-05-22 Nazomi Communications Inc. Java virtual machine hardware for RISC and CISC processors
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US7080362B2 (en) 1998-12-08 2006-07-18 Nazomi Communication, Inc. Java virtual machine hardware for RISC and CISC processors
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US20020066083A1 (en) * 1998-12-08 2002-05-30 Patel Mukesh K. Java virtual machine hardware for RISC and CISC processors
US6327650B1 (en) * 1999-02-12 2001-12-04 Vsli Technology, Inc. Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor
US6678818B1 (en) * 1999-05-03 2004-01-13 Stmicroelectronics S.A. Decoding next instruction of different length without length mode indicator change upon length change instruction detection
US6662087B1 (en) * 2000-01-03 2003-12-09 Spx Corporation Backward compatible diagnostic tool
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
US6775732B2 (en) * 2000-09-08 2004-08-10 Texas Instruments Incorporated Multiple transaction bus system
US20020052999A1 (en) * 2000-09-08 2002-05-02 Jahnke Steven R. Multiple transaction bus system
US7134119B2 (en) 2000-10-05 2006-11-07 Arm Limited Intercalling between native and non-native instruction sets
US20020108103A1 (en) * 2000-10-05 2002-08-08 Nevill Edward Colles Intercalling between native and non-native instruction sets
US7003652B2 (en) 2000-10-05 2006-02-21 Arm Limited Restarting translated instructions
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
US7000094B2 (en) 2000-10-05 2006-02-14 Arm Limited Storing stack operands in registers
US8473718B2 (en) 2000-10-10 2013-06-25 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US20070118724A1 (en) * 2000-10-10 2007-05-24 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US7509480B2 (en) 2000-10-30 2009-03-24 Mips Technology, Inc. Selection of ISA decoding mode for plural instruction sets based upon instruction address
US20070094482A1 (en) * 2000-10-30 2007-04-26 Mips Technologies, Inc. Boundary address registers for selection of ISA mode
US7149878B1 (en) 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US6904517B2 (en) 2000-11-27 2005-06-07 Arm Limited Data processing apparatus and method for saving return state
US7076771B2 (en) 2000-12-01 2006-07-11 Arm Limited Instruction interpretation within a data processing system
US7711926B2 (en) 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US20020156996A1 (en) * 2001-04-18 2002-10-24 Mips Technologies, Inc. Mapping system and method for instruction set processing
US20020188825A1 (en) * 2001-05-31 2002-12-12 Seal David James Data processing using multiple instruction sets
WO2002097609A3 (en) * 2001-05-31 2003-12-31 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
US6965984B2 (en) 2001-05-31 2005-11-15 Arm Limited Data processing using multiple instruction sets
US20040015896A1 (en) * 2001-05-31 2004-01-22 Dornan Christopher Bentley Program instruction interpretation
US20020188826A1 (en) * 2001-05-31 2002-12-12 Rose Andrew Christopher Unhandled operation handling in multiple instruction set systems
US7162611B2 (en) 2001-05-31 2007-01-09 Arm Limited Unhandled operation handling in multiple instruction set systems
WO2002097609A2 (en) * 2001-05-31 2002-12-05 Arm Limited Unhandled operation handling in multiple instruction set systems
US7089539B2 (en) 2001-05-31 2006-08-08 Arm Limited Program instruction interpretation
US6907515B2 (en) 2001-05-31 2005-06-14 Arm Limited Configuration control within data processing systems
US7739484B2 (en) 2001-06-18 2010-06-15 Mips Technologies, Inc. Instruction encoding to indicate whether to store argument registers as static registers and return address in subroutine stack
US20050081022A1 (en) * 2001-06-18 2005-04-14 Mips Technologies, Inc. Method and apparatus for saving and restoring processor register values and allocating and deallocating stack memory
US7281123B2 (en) 2001-06-18 2007-10-09 Mips Technologies, Inc. Restoring register values from stack memory using instruction with restore indication bit and de-allocation frame size stack pointer offset
US20080028195A1 (en) * 2001-06-18 2008-01-31 Mips Technologies, Inc. Method and Apparatus for Saving and Restoring Processor Register Values and Allocating and Deallocating Stack Memory
US20030041231A1 (en) * 2001-08-10 2003-02-27 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US7107439B2 (en) 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US9170814B2 (en) 2001-10-29 2015-10-27 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US9189237B2 (en) 2001-10-29 2015-11-17 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US9182985B2 (en) 2001-10-29 2015-11-10 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US9182988B2 (en) 2001-10-29 2015-11-10 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US10146541B2 (en) 2001-10-29 2018-12-04 Intel Corporation Processor to execute shift right merge instructions
US10732973B2 (en) 2001-10-29 2020-08-04 Intel Corporation Processor to execute shift right merge instructions
US9218184B2 (en) 2001-10-29 2015-12-22 Intel Corporation Processor to execute shift right merge instructions
US9170815B2 (en) 2001-10-29 2015-10-27 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US20120233443A1 (en) * 2001-10-29 2012-09-13 Julien Sebot Processor to execute shift right merge instructions
US20130007417A1 (en) * 2001-10-29 2013-01-03 Julien Sebot Processor to execute shift right merge instructions
US9152420B2 (en) 2001-10-29 2015-10-06 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US9182987B2 (en) 2001-10-29 2015-11-10 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US8745358B2 (en) * 2001-10-29 2014-06-03 Intel Corporation Processor to execute shift right merge instructions
US9189238B2 (en) 2001-10-29 2015-11-17 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US8782377B2 (en) * 2001-10-29 2014-07-15 Intel Corporation Processor to execute shift right merge instructions
US7493470B1 (en) 2001-12-07 2009-02-17 Arc International, Plc Processor apparatus and methods optimized for control applications
US7278137B1 (en) 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
US8166450B2 (en) 2001-12-26 2012-04-24 Synopsys, Inc. Methods and apparatus for compiling instructions for a data processor
US20080320246A1 (en) * 2001-12-26 2008-12-25 Fuhler Richard A Methods and apparatus for compiling instructions for a data processor
US20030225998A1 (en) * 2002-01-31 2003-12-04 Khan Mohammed Noshad Configurable data processor with multi-length instruction set architecture
US20040019880A1 (en) * 2002-07-25 2004-01-29 Rose Andrew Christopher Write-through caching a java local variable within a register of a register bank
US7131118B2 (en) 2002-07-25 2006-10-31 Arm Limited Write-through caching a JAVA® local variable within a register of a register bank
US8176286B2 (en) 2003-03-26 2012-05-08 Edward Colles Nevill Memory recycling in computer systems
US20040193828A1 (en) * 2003-03-26 2004-09-30 Arm Limited Memory recycling in computer systems
US7437532B1 (en) 2003-05-07 2008-10-14 Marvell International Ltd. Memory mapped register file
US7558942B1 (en) 2003-05-07 2009-07-07 Marvell International Ltd. Memory mapped register file and method for accessing the same
US8078828B1 (en) 2003-05-07 2011-12-13 Marvell International Ltd. Memory mapped register file
US7882332B1 (en) 2003-05-07 2011-02-01 Marvell International Ltd. Memory mapped register file
US7568083B1 (en) 2003-05-07 2009-07-28 Marvell International Ltd. Memory mapped register file and method for accessing the same
US20050067099A1 (en) * 2003-09-26 2005-03-31 Walton Scott G. Method and apparatus for producing an ion-ion plasma continuous in time
US7730285B1 (en) 2003-09-26 2010-06-01 Marvell International Ltd. Data processing system with partial bypass reorder buffer and combined load/store arithmetic logic unit and processing method thereof
US7096345B1 (en) 2003-09-26 2006-08-22 Marvell International Ltd. Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof
US7707389B2 (en) 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
US20050177707A1 (en) * 2003-10-31 2005-08-11 Mips Technologies, Inc. Method and apparatus for recoding instructions
US20050210226A1 (en) * 2004-03-18 2005-09-22 Arm Limited Function calling mechanism
US7647489B2 (en) 2004-03-18 2010-01-12 Arm Limited Function calling mechanism with embedded index for a handler program and an embedded immediate value for passing a parameter
US7802080B2 (en) 2004-03-24 2010-09-21 Arm Limited Null exception handling
US7930526B2 (en) 2004-03-24 2011-04-19 Arm Limited Compare and branch mechanism
US20060026404A1 (en) * 2004-07-27 2006-02-02 Texas Instruments Incorporated Method and system to construct a data-flow analyzer for a bytecode verfier
US20060026571A1 (en) * 2004-07-27 2006-02-02 Texas Instruments Incorporated Method and system of control flow graph construction
US7757223B2 (en) 2004-07-27 2010-07-13 Texas Instruments Incorporated Method and system to construct a data-flow analyzer for a bytecode verifier
US7624382B2 (en) * 2004-07-27 2009-11-24 Texas Instruments Incorporated Method and system of control flow graph construction
US7650453B2 (en) 2004-09-16 2010-01-19 Nec Corporation Information processing apparatus having multiple processing units sharing multiple resources
US20070266196A1 (en) * 2004-09-16 2007-11-15 Nec Corporation Information Processing Apparatus Having Multiple Processing Units Sharing Multiple Resources
US20060155524A1 (en) * 2004-12-07 2006-07-13 Guethner Russell W Instructions to load and store containing words in a computer system emulator with host word size larger than that of the emulated machine
US7406406B2 (en) * 2004-12-07 2008-07-29 Bull Hn Information Systems Inc. Instructions to load and store containing words in a computer system emulator with host word size larger than that of emulated machine
US20080208562A1 (en) * 2004-12-07 2008-08-28 Bull Hn Information Systems Inc. Instructions providing new functionality for utilization by a target system program of host system container words during computer system emulation with host word size larger than that of the emulated machine
US7689403B2 (en) * 2004-12-07 2010-03-30 Bull Hn Instructions providing new functionality for utilization by a target system program of host system container words during computer system emulation with host word size larger than that of the emulated machine
US20070005857A1 (en) * 2005-07-01 2007-01-04 Samsung Electronics Co., Ltd. Bus system and method of arbitrating the same
US7418535B2 (en) 2005-07-01 2008-08-26 Samsung Electronics Co., Ltd. Bus system and method of arbitrating the same
US7707340B2 (en) 2005-07-01 2010-04-27 Samsung Electronics Co., Ltd. Bus system and method of burst cycle conversion
US20090037706A1 (en) * 2005-12-23 2009-02-05 Koninklijke Kpn N.V. Processor Lock
US7975131B2 (en) 2005-12-23 2011-07-05 Koninklijke Kpn N.V. Processor lock
WO2007071417A1 (en) * 2005-12-23 2007-06-28 Koninklijke Kpn N.V. Processor lock
US9652210B2 (en) 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US20090064132A1 (en) * 2007-08-28 2009-03-05 Red Hat, Inc. Registration process for determining compatibility with 32-bit or 64-bit software
US20090064133A1 (en) * 2007-08-28 2009-03-05 Red Hat, Inc. Provisioning for 32-bit or 64-bit systems
US10095498B2 (en) 2007-08-28 2018-10-09 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US8832679B2 (en) * 2007-08-28 2014-09-09 Red Hat, Inc. Registration process for determining compatibility with 32-bit or 64-bit software
US20090187742A1 (en) * 2008-01-23 2009-07-23 Arm Limited Instruction pre-decoding of multiple instruction sets
US7925867B2 (en) 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US20090187744A1 (en) * 2008-01-23 2009-07-23 Peter Richard Greenhalgh Data processing apparatus and method for pre-decoding instructions
US20090187743A1 (en) * 2008-01-23 2009-07-23 Arm Limited Data processing apparatus and method for instruction pre-decoding
US20090249033A1 (en) * 2008-01-23 2009-10-01 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US7925866B2 (en) 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US20100017580A1 (en) * 2008-01-23 2010-01-21 Peter Richard Greenhalgh Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US7917735B2 (en) 2008-01-23 2011-03-29 Arm Limited Data processing apparatus and method for pre-decoding instructions
US8037286B2 (en) 2008-01-23 2011-10-11 Arm Limited Data processing apparatus and method for instruction pre-decoding
US20100125720A1 (en) * 2008-11-14 2010-05-20 Jan Sheng-Yuan Instruction mode identification apparatus and method
US9274796B2 (en) * 2009-05-11 2016-03-01 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
US20180173531A1 (en) * 2009-05-11 2018-06-21 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
US20100287359A1 (en) * 2009-05-11 2010-11-11 Mips Technologies, Inc. Variable register and immediate field encoding in an instruction set architecture
US20160147535A1 (en) * 2009-05-11 2016-05-26 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
US10776114B2 (en) * 2009-05-11 2020-09-15 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
CN101887357A (en) * 2009-05-11 2010-11-17 美普思科技有限公司 Variable register in the instruction set architecture and digital section coding immediately
US9928065B2 (en) * 2009-05-11 2018-03-27 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
CN101887357B (en) * 2009-05-11 2015-09-09 Arm海外金融有限公司 Variable register in instruction set architecture and immediate code field
US8848532B2 (en) 2010-04-15 2014-09-30 Huawei Technologies Co., Ltd. Method and system for processing data
US9875108B2 (en) * 2013-03-16 2018-01-23 Intel Corporation Shared memory interleavings for instruction atomicity violations
US20140281274A1 (en) * 2013-03-16 2014-09-18 Intel Corporation Shared memory interleavings for instruction atomicity violations
US9965320B2 (en) 2013-12-27 2018-05-08 Intel Corporation Processor with transactional capability and logging circuitry to report transactional operations
US10545772B2 (en) 2014-03-18 2020-01-28 International Business Machines Corporation Architectural mode configuration
US10552175B2 (en) 2014-03-18 2020-02-04 International Business Machines Corporation Architectural mode configuration
US10747582B2 (en) 2014-03-18 2020-08-18 International Business Machines Corporation Managing processing associated with selected architectural facilities
US10747583B2 (en) 2014-03-18 2020-08-18 International Business Machines Corporation Managing processing associated with selected architectural facilities
US11023256B2 (en) 2014-03-18 2021-06-01 International Business Machines Corporation Architectural mode configuration
US11029974B2 (en) 2014-03-18 2021-06-08 International Business Machines Corporation Architectural mode configuration
US20150309943A1 (en) * 2014-04-23 2015-10-29 SK Hynix Inc. Memory control unit and data storage device including the same
US9652403B2 (en) * 2014-04-23 2017-05-16 SK Hynix Inc. Memory control unit and data storage device including the same
US10007520B1 (en) * 2016-02-25 2018-06-26 Jpmorgan Chase Bank, N.A. Systems and methods for using alternate computer instruction sets
US10120688B2 (en) 2016-11-15 2018-11-06 Andes Technology Corporation Data processing system and method for executing block call and block return instructions

Also Published As

Publication number Publication date
DE69502098D1 (en) 1998-05-20
DE69530520D1 (en) 2003-05-28
EP0813144B1 (en) 2003-04-23
KR100327776B1 (en) 2002-03-15
EP0813144A3 (en) 1998-01-14
EP0758464A1 (en) 1997-02-19
CN1147307A (en) 1997-04-09
EP1296225A3 (en) 2007-07-25
GB9408765D0 (en) 1994-06-22
CN1395168A (en) 2003-02-05
JP2006079652A (en) 2006-03-23
DE69530520T2 (en) 2003-12-24
IL113153A (en) 1998-07-15
CN1089460C (en) 2002-08-21
EP1296225A2 (en) 2003-03-26
DE69502098T2 (en) 1998-08-06
KR100315739B1 (en) 2002-02-28
JP3173793B2 (en) 2001-06-04
RU2137183C1 (en) 1999-09-10
MY113751A (en) 2002-05-31
TW242184B (en) 1995-03-01
KR970703011A (en) 1997-06-10
CN1174313C (en) 2004-11-03
WO1995030188A1 (en) 1995-11-09
EP0758464B1 (en) 1998-04-15
IN190632B (en) 2003-08-16
JPH09512652A (en) 1997-12-16
IL113153A0 (en) 1995-06-29
GB2289353A (en) 1995-11-15
JP2002366348A (en) 2002-12-20
EP0813144A2 (en) 1997-12-17
GB2289353B (en) 1997-08-27

Similar Documents

Publication Publication Date Title
US5740461A (en) Data processing with multiple instruction sets
US5568646A (en) Multiple instruction set mapping
US6505290B1 (en) Method and apparatus for interfacing a processor to a coprocessor
US5781457A (en) Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
EP0427245B1 (en) Data processor capable of simultaneously executing two instructions
US6105125A (en) High speed, scalable microcode based instruction decoder for processors using split microROM access, dynamic generic microinstructions, and microcode with predecoded instruction information
JPH09505427A (en) Processing system with word aligned branch targets
US5742801A (en) Microprocessor to which additional instructions are added and instructions addition method thereof
US5881279A (en) Method and apparatus for handling invalid opcode faults via execution of an event-signaling micro-operation
JPH07120284B2 (en) Data processing device
KR960011683A (en) Microprocessors that execute instructions with operand fields, including parts used as part of opcode
CA1254661A (en) Method and means for instruction combination for code compression
US4677545A (en) Microprocessor having macro-rom and main program queues
US5754810A (en) Specialized millicode instruction for certain decimal operations
US4812989A (en) Method for executing machine language instructions
CA1250666A (en) Central processing unit for a digital computer
Salcic et al. A Verilog Example: Pipelined Simp
WO2002010913A1 (en) System with microcode multi-way branching capability
JPH01184534A (en) Operand access control system

Legal Events

Date Code Title Description
AS Assignment

Owner name: ADVANCED RISC MACHINES LIMITED, UNITED KINGDOM

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:JAGGAR, DAVID VIVIAN;REEL/FRAME:007155/0051

Effective date: 19940830

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: ARM LIMITED, ENGLAND

Free format text: CHANGE OF NAME;ASSIGNOR:ADVANCED RISC MACHINES LIMITED;REEL/FRAME:009436/0231

Effective date: 19980521

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12