WO2004036416A1 - Processor having multi-bank register and processor control method - Google Patents

Processor having multi-bank register and processor control method Download PDF

Info

Publication number
WO2004036416A1
WO2004036416A1 PCT/JP2002/010832 JP0210832W WO2004036416A1 WO 2004036416 A1 WO2004036416 A1 WO 2004036416A1 JP 0210832 W JP0210832 W JP 0210832W WO 2004036416 A1 WO2004036416 A1 WO 2004036416A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
bank
register
processor
setting
Prior art date
Application number
PCT/JP2002/010832
Other languages
French (fr)
Japanese (ja)
Inventor
Yuko Matsumoto
Original Assignee
Tops Systems Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tops Systems Corporation filed Critical Tops Systems Corporation
Priority to PCT/JP2002/010832 priority Critical patent/WO2004036416A1/en
Priority to AU2002344110A priority patent/AU2002344110A1/en
Priority to JP2004544709A priority patent/JP3958320B2/en
Publication of WO2004036416A1 publication Critical patent/WO2004036416A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file

Definitions

  • the present invention relates to a computing device for computer equipment such as a CPU (Central Processing Unit) or a D
  • SP Digital Signal Processor
  • the present invention relates to a microprocessor implementing an instruction set architecture and a control method thereof.
  • processors used in various devices have been improved in arithmetic processing capacity by techniques such as increasing the clock frequency, with the progress of semiconductor fine processing technology in recent years.
  • the transfer speed between the external memory acting as the main storage device and the processor has also been improved by using various technologies, but due to physical limitations such as the number of connection pins and the response speed of the memory, It has not kept pace with processor performance improvements.
  • the processor consumes an extra number of clocks (usually called latency) when accessing the memory compared to accessing the internal registers.
  • Cache memory is often used in modern processors to bridge this gap in data transfer bandwidth between the processor's internal bus and the bus between memories.
  • a multiprocessor system is known as a method of operating a plurality of processors in cooperation with each other to obtain a high arithmetic processing capability.
  • this multi-processor system in order to coordinate the operations of the processors, it is necessary to guarantee the coherency (consistency) of the data between the cache memories contained in each processor.
  • the coherency is controlled by snubbing (bus snoop) in which the other processors monitor access to the memory of each processor.
  • bus snoop bus snoop
  • a multiprocessor system there is a method of guaranteeing data coherency by using a shared memory system in which memory is shared between processors.
  • a shared memory system the data transfer bandwidth of the bus between the shared memory and the processor is a factor that limits the performance of the multiprocessor system.
  • the Super Pipeline @ Superscaler is a method to improve the computational performance by performing parallel processing at the implementation (implementation) level.
  • VLIW is a technique that improves the processing power by performing parallel processing at the instruction level in a processor that has multiple processing units inside.
  • dynamic scheduling using a rio-ordering buffer that dynamically schedules instructions to be executed may be used.
  • the effect is generally limited to the range of 10 instructions. Therefore, if a cache miss occurs, the instruction execution pipeline will not be able to fill the stall and the benefits of parallel processing will not be fully realized.
  • dynamic scheduling has the problem that the hardware is complicated and the circuit scale becomes enormous.
  • the variables required by the processor to execute the desired software are stored in a register in the processor or in memory on the system. The access to the memory is slower than the access to the registry even if there is a variable for accessing the cache memory, in addition to the cache miss described above.
  • the number of variables required for one program depends on the program, but is generally several tens to one hundred and several tens.
  • Conventional processors often have eight to thirty-two registers, due to limitations in physical implementation and limitations on instruction length in the instruction set architecture that operates the processor. For example, in the case of a two-operand instruction set architecture using 32 registers and two operation targets, 5 bits are used to specify each register and operand among the bits constituting one instruction. Requires 10 bits. Similarly, in the case of a 3-operand that uses 32 registers and stores the operation result in a register different from the operation target, a total of 15 bits are required to specify the operand. An instruction length is obtained by adding a bit indicating an operation code indicating an operation type or the like to these.
  • the instruction length is appropriately set in consideration of these conflicting relationships and the purpose of use.
  • the instruction length is set to 16 bits when the number of register evenings is set small, and the instruction length is set to 32 bits when the number of register evenings is set large.
  • Register renaming is also known as a technique for increasing the number of virtual registers without changing the number of registers in the instruction set.
  • Patent Literature 1 discloses a method of switching each registry evening.
  • Patent Document 1 Japanese Patent Application Laid-Open No. 7-847885 Disclosure of the invention.
  • the present invention provides a processor architecture capable of suppressing the occurrence of latency due to memory access while shortening the instruction length as much as possible and improving arithmetic performance when used alone.
  • the task is to solve at least some of the above problems.
  • the present invention also ensures that the data transfer bandwidth between the processor and the memory can be reduced while guaranteeing memory coherency even in a multiprocessor configuration.
  • the registry in the processor is composed of a plurality of registry banks.
  • the processor architecture is realized by realizing a mechanism in which an arithmetic unit and a memory access device provided in the processor are dynamically connected to the different registry banks.
  • a switch for the register bank and a register for bank designation command such as a register for bank setting or a command for modifying the bank for bank setting are used to provide, for example, 16 bits. With a short instruction length, it is possible to handle many regis- ter evenings.
  • an instruction decoder that decodes an instruction including a register bank designation instruction and a normal instruction to generate a control signal, and performs an arithmetic process based on the control signal from the instruction decoder
  • a computing unit for performing data input / output to / from an external memory based on a signal from the computing unit; and a register accessible from the computing unit and the memory access unit.
  • a bank switch means controlled by a register bank designation control signal generated by the instruction decoder based on the register bank designation command, wherein the arithmetic unit accesses any of the register banks. Puncturing switch means for determining which register bank the memory access means accesses.
  • the register assignment bank designation instruction is used to execute a normal instruction after the register sunset puncture designation instruction by using an operand.
  • a processor having a multi-bank register which is an instruction to switch the evening bank, is provided.
  • the instruction decoder receives a fetched instruction from an instruction storage device provided outside the processor, decodes the instruction, and generates a control signal.
  • the memory access means is a means for providing access to an external memory, and provides access between the memory and the processor by means well known in the art such as an external bus, a cache memory, and an address generator. Any technology that can transfer data can be used. This memory access means provides access between the processor's registry and external memory.
  • Each Regis evening bank contains a number of Regis evenings organized into appropriate unit banks.
  • Each registry bank is distinguished by a bank identifier that is, for example, an appropriate number of bits.
  • a bank identifier and a register address are specified to specify an arbitrary register.
  • other instructions normal instructions
  • the Registrar Bank Designation Instruction contains some form of bank identifier that explicitly designates the bank.
  • this register designation instruction is an instruction having a bank identifier that designates a bank of a source operand / a destination operand of an instruction having two operands (hereinafter referred to as a “bank setting instruction”). can do.
  • the register evening bank designation instruction does not designate only individual registry evenings, for example, those having a general-purpose registry evening, but registers each operand location such as a source operand used together with an opcode, a destination operand, etc. Bank assignment may be specified.
  • This register setting instruction signal is used as a register setting signal by the instruction decoder to operate the arithmetic unit.
  • Instructions to be executed by this processor other than the register instruction Does not include the bank identifier. Such instructions are distinguished from the Registrar Bank designation instructions and are referred to as "ordinary instructions.” Ordinary instructions can use operands. Basically, the operand of the ordinary instruction executed by this processor is assumed to be assigned the registry bank explicitly specified by the register bank instruction until the instruction is reached. Can be. For example, bank 0 is assigned to the source operand, bank 3 to the destination operand, and so on. For this reason, the instruction length of a normal instruction does not need to be particularly long just because the register bank is used.
  • the allocation of the register banks is realized by bank switch means.
  • the bank switch means is controlled by a resister bank designation control command based on a resister bank designation command.
  • the bank switch means is, for example, a register for designating a bank of source operands and destination operands used for all subsequent instructions. This specification may be changed for each operand, or may be the same.
  • the operation of the bank switch means when the register bank designation instruction is not explicitly included can be based on an appropriate default value.
  • the register bank designation instruction is not limited to the instruction that designates the register bank in subroutine units.
  • the bank switch means controls the register bank designation.
  • the memory access means can provide access between the external memory and the register based on an instruction from the instruction decoder.
  • the register bank setting instruction is a register bank setting modifying instruction
  • the register bank setting modifying instruction is controlled by controlling the bank switch means.
  • the instruction may be a bank instruction that switches a register bank to be assigned to a register for the operand of the ordinary instruction immediately after the instruction.
  • a register setting modifier instruction is a modifier that affects only the immediately following instruction. This is an instruction for designating a registry bank having an effect.
  • This Registrar evening bank setting modifier command is also called the Registrar evening bank setting prefix.
  • the register bank setting modifier instruction makes it possible to specify the register bank flexibly in a program, and to secure the flexibility of programming while reducing the instruction length.
  • the register setting instruction when the register setting instruction is immediately before, the instruction length is extended from the instruction length of the normal instruction, and the register setting instruction and the normal instruction immediately after the instruction are extended.
  • One instruction having the specified instruction length can be obtained.
  • the register setting instruction is a register setting modifying instruction
  • the register setting instruction and the normal instruction are combined to form one unit of the instruction.
  • Registrar bank setting qualification instructions alone are not a unit. The reason is that the register setting modifier instruction modifies the register setting for the operand of the next ordinary instruction, and is not an executable instruction by itself.
  • Extending the instruction length means that the operation of the instruction immediately following the register setting instruction can be recognized as an executable instruction that can be executed by modifying it according to the register setting instruction.
  • the register bank setting instruction is a register bank setting instruction.
  • a normal instruction subsequent to the register bank setting instruction it is not necessary to explicitly specify the register bank.
  • the assignment of the register bank based on the register bank designation instruction can be applied to the register bank used by the operand.
  • Regis Evening Bank Setting Instruction Regis Evening A type of bank specification instruction that specifies the bank assignment of operands in a subsequent normal instruction.
  • the Registrar Bank assigned by the Registrar Bank Set instruction is used without specifying the Registrar Bank.
  • the instruction length of a normal instruction is set to a short instruction length similar to that of a processor architecture in which the register bank is not configured as a register bank, and the register bank is set as required.
  • Configuration instructions can be used. This makes it possible to handle a large number of registers while keeping the average instruction length of the entire program composed of multiple instructions short.
  • a multiprocessor system including at least an instruction storage unit, a first processor, a second processor, and an external memory, wherein the first processor An instruction decoder that decodes an instruction including a register bank designation instruction from the instruction storage means and an ordinary instruction to generate a control signal; and the control signal from the instruction decoder.
  • An arithmetic unit for performing an arithmetic process based on the data, a memory access unit for performing input / output with the external memory based on a signal from the arithmetic unit, and accessible from the arithmetic unit and the memory access unit A plurality of register banks each including a register bank; and a register bank specifying control signal generated by the instruction decoder based on the register bank specifying instruction.
  • the register bank designation instruction is used by the operand to control the bank switch means to execute a normal instruction following the register bank designation instruction by using an operand.
  • An instruction for switching a register bank to be assigned to the register, wherein the external memory includes the memory access unit of the first processor and the memory access unit of the second processor.
  • a multiprocessor system is provided that is connected to and accessible from any of the above.
  • This external memory is accessed from at least two processors included in the multiprocessor system.
  • This makes it possible to realize, for example, a multiprocessor system having an SMP (Symmetrical Multiprocessor) configuration, and a multiprocessor configuration in which the CPU and DSP cores are linked.
  • This feature makes it possible to use a registry bank for each processor in a multiprocessor system.
  • a large number of local registers can make up for the gap in data transfer bandwidth due to the bus between the processor and the memory.
  • the registers in each bank can be observed and controlled from software, there is no problem with coherency.
  • the data transfer bandwidth of the bus between the processor and the memory is not lost due to snubbing. For this reason, it is possible to improve the arithmetic performance by increasing the number of processors in the SMP configuration, and to enhance the capability of cooperative processing between the DSP and the CPU incorporating a specific-purpose signal processing arithmetic circuit.
  • the bank switch means is controlled by the register bank designation control signal, and determines whether the arithmetic unit accesses any of the register banks, and the memory access means is It is determined whether any of the other registry banks is to be accessed, and simultaneous access of the arithmetic unit to the registry bank and access to the register bank by the memory access means is possible. can do.
  • simultaneous access not only does the processing capability of each processor constituting a multiprocessor system improve, but it often causes a problem when performing arithmetic processing by linking multiple processors. The number of installed stalls is reduced.
  • the present invention provides such a multiprocessor system, wherein the external memory T JP2002 / 010832
  • At least part of the memory area accessed by the first processor and the memory area accessed by the second processor may be shared.
  • an instruction decoder for generating a control signal by decoding an instruction including a register bank designation instruction and a normal instruction, and performing arithmetic processing based on the control signal from the instruction decoder.
  • a method of controlling a port processor comprising a plurality of register banks and bank switch means for determining which register bank the arithmetic unit and the memory access means respectively access
  • the instruction decoder comprises: Generating a register bank designation control signal based on the register bank designation command;
  • the switch means By controlling the switch means, the register bank assigned to the register used by the operand of the normal instruction after the register bank designation instruction is switched, so that the arithmetic unit accesses any register bank.
  • Controlling the bank switch means by the register bank designation control signal thereby switching the register bank to be allocated to the register used by the operand
  • a method of controlling a processor having a multi-bank register comprising the steps of: controlling whether to access a memory; and executing the normal instruction using an operand.
  • the processor of the present invention switches the registry bank to be accessed by the arithmetic unit and the memory access means according to the register bank designation control signal, and executes the instruction.
  • a control method including the above steps can be performed.
  • the register puncture assigned to the register of the operand of the subsequent instruction is determined, so that such a control method can handle a large number of registers while keeping the instruction length short.
  • the above steps need not always be performed in this order.
  • the program can be executed in various orders as a result of the arrangement of the instructions. Also, some steps may be performed simultaneously, and the frequency of execution of each step may be significantly different.
  • the step of executing the normal instruction using an operand includes accessing the register of a certain register bank by the arithmetic unit and the memory accessing means of a register of another register bank. And a step in which access by and is performed simultaneously.
  • the memory access means can access another registry bank. Both of these accesses are included in the instruction execution step.
  • the range of the execution steps can be defined by time, for example, from the first clock to the last clock required to execute a normal instruction in units of a clock at which the processor operates. In this range, the arithmetic unit and the memory access means can access the registers used by each of the separate register banks in parallel.
  • by dividing the registry window which is a feature of the present invention, into banks, it is possible to access in parallel in this way using a normal registry file. This increases memory access latency. Other operations can be performed even during the time when the execution of the instruction is temporarily stopped, thereby improving the operation processing capability. In addition, the frequency and time of stalls in pipeline processing are reduced.
  • the register bank setting instruction is a register bank setting modifying instruction
  • the register bank setting modifying instruction is controlled by controlling the bank switch means.
  • the instruction may be a switch that switches a register bank assigned to the operand register of the operand of the normal instruction immediately following the normal instruction. it can.
  • the Registrar bank setting modifier instruction is the above-described instruction for designating the Registrar bank which has a modifying effect which affects only the immediately following instruction. Also in the processor control method, the register bank setting modifier instruction enables the register bank to be specified flexibly in the program, and the degree of freedom in programming can be secured while suppressing the instruction length.
  • the instruction length is extended from the instruction length of a normal instruction when the register setting instruction is immediately before, and the instruction setting is immediately followed by the normal instruction immediately after the register setting instruction. May be one instruction having the extended instruction length.
  • the register bank designation instruction is a register bank setting instruction, and a normal instruction subsequent to the register bank designation instruction does not require explicit designation of the register bank designation instruction.
  • a control method is provided in which the assignment of the registry bank based on the register puncture designation instruction is applied to the registry used by the operand.
  • control method of the processor of the present invention can be a control method having a conditional execution switching modifier instruction for controlling an operation of whether or not to execute a later instruction depending on a determination condition.
  • This conditional execution switching modifier instruction may be called a conditional execution prefix.
  • the conditional execution switching qualification instruction is a qualification instruction (prefix) that can switch whether or not to execute a subsequent instruction according to the judgment condition without a branch instruction. The use of this qualifying instruction can reduce the number of branches in the program itself, and has the effect of avoiding stalls caused by branch instructions during parallel processing.
  • control method of the processor of the present invention can be a control method using a register bank designation instruction and the conditional execution switching modification instruction.
  • conditional execution prefix When the conditional execution prefix is used in combination with the register designation instruction of the present invention, it is possible to write a program that can be processed in parallel with almost no stall, so that the instruction speed can be reduced while suppressing the instruction length. However, a fast processor can be realized.
  • the register instruction specifying the register bank and the instruction for conditional execution switching are decoded by a prefix decoder that prefetches the instruction executed by the instruction decoder, and the prefix decoupling is performed based on the instruction.
  • the decoding operation of the instruction decoder can be changed.
  • Each qualifying instruction by itself does not constitute an instruction that the instruction decoder recognizes as an instruction. If the modified instruction read ahead is combined with the instruction immediately following the qualifying instruction to execute the instruction execution step as one instruction, the intended operation can be performed without increasing the execution steps of the instruction. This operation can be performed properly by using a prefix decoder that prefetches instructions.
  • FIG. 1 is a configuration diagram schematically showing a processor according to an embodiment of the present invention.
  • FIG. 2 is an explanatory diagram showing assembler code including a bank designation instruction according to the embodiment of the present invention. '
  • FIG. 3 is an explanatory diagram showing how banks are switched by the assembler code of FIG.
  • FIG. 4 is an explanatory diagram showing an example of realizing a bank designation instruction according to the embodiment of the present invention.
  • FIG. 5 is a functional block diagram showing the configuration of the instruction fetch stage in the example of the processor configuration according to the embodiment of the present invention.
  • FIG. 6 is a functional block level configuration diagram showing the configuration of an instruction decode stage and an instruction execution stage in a processor configuration example according to an embodiment of the present invention.
  • FIG. 7 is a configuration diagram of a function block level showing a configuration of a write-back stage in a processor configuration example according to an embodiment of the present invention.
  • FIG. 8 shows a bank switch in a processor configuration example according to an embodiment of the present invention.
  • FIG. 4 is a configuration diagram of a function block level showing a configuration of a switch unit. BEST MODE FOR CARRYING OUT THE INVENTION
  • FIG. 1 shows an outline of the processor of the present invention.
  • the registers used by the arithmetic unit are grouped into a plurality of units called, for example, n register banks from bank 0 to bank n-1.
  • the bank identifier is used to specify which of these Regis evening banks.
  • the bank identifier is a number having an appropriate number of bits, for example, having a sufficient number of bits to represent n.
  • To specify an arbitrary register in the processor specify a bank identifier and a register address.
  • the operation unit performs an operation based on the instruction decoded by an instruction decoder (not shown).
  • This instruction roughly includes two types of instructions.
  • the first type of instruction is an instruction similar to an instruction in a normal processor.
  • a load instruction for loading data from an external memory (a moniker: L D)
  • a D D an addition for performing an addition
  • S U B a subtraction
  • the second type of instruction is an instruction for switching the register bank to be accessed.
  • These are instructions unique to the present invention, and are called "registration bank designation instructions". With this instruction, it is possible to determine which register bank the arithmetic unit accesses based on the subsequent normal instruction. For example, when the architecture of the processor uses two operands, it is possible to independently specify which register accesses the first operand and the second operand.
  • the format of the Registrar Bank designation instruction for switching the Registrar Bank is not particularly limited. Through 10832
  • Normal stored-program instructions include, for example, an instruction that has an explicit bank identifier as an operand (bank setting instruction) and a prefix that switches the bank indicated by the operand of the immediately following instruction (bank setting modifier instruction). It can also be.
  • Figure 2 shows an example of an instruction in this assembler code for bank switching.
  • Line 202 is one of bank setting instructions, and is a bank set instruction (21st moniker: B S) for specifying a bank to be used in a program thereafter.
  • the first and second operands B0 and B1 of this bank set instruction represent Bank 0 and Bank 1, respectively.
  • line 202 is an instruction that sets the first operand (destination operand) to “bank 0” and sets the second operand (source operand) to “bank 1” in the subsequent program.
  • the bank set instruction exemplified in the row 202 is an instruction constituted by the operation code corresponding to the two-monitor BS and the operand.
  • the bank setting instruction represented by the bank setting instruction allocates a register bank until the next bank setting instruction is explicitly specified.
  • what kind of register bank is set in the instruction line until the bank setting instruction explicitly appears in the program is arbitrary.
  • the bank may not accept such an instruction because the bank is indefinite, assign a certain default value to the bank (for example, all banks are set to 0), perform processing on all the banks in parallel, , And the destination and source operands can be assigned separately.
  • Line 204 in FIG. 2 is a bank setting prefix (mnemonic: BP) that is valid only for the immediately following instruction.
  • the bank setting prefix in this example includes the bank identifier in the opcode itself, not as an operand.
  • the bank setting prefix "BP10" affects only the instruction immediately following it (line 206) and places the destination operand in bank 1, This instruction sets the source operand to bank 0. That is, assuming that i and j are subscripts representing the bank identifier, “BP ij” sets the destination operand of the following instruction to punk i and the source operand to bank j.
  • an operation code and an operand indicating a bank identifier may be used, and may affect only the immediately following instruction line. Since this bank setting prefix affects only the immediately following instruction, it temporarily only overwrites the bank assignment specified by the bank setting instruction described above. In the instruction line where the link setting prefix has no effect (line 2 ⁇ 8), the specification of the bank specification instruction becomes valid again.
  • bank select register (not shown) that holds the current bank setting, and use B0 and B1 as those registers. Can be.
  • the value of the bank select register can be referred to by specifying the program with an explicit instruction.
  • the contents of the backselect registry may be shared as global variables between subroutines, for example, in a program having a subroutine configuration, or may be rewritten as a local variable for each subroutine. If it is a local variable, it can be written out and held in any general-purpose register or external memory configured in the memory bank by an appropriate data transfer instruction. In the architecture of the present invention, instructions for realizing this transfer can be included.
  • FIG. 3 schematically shows the operation of the register bank designation instruction in the program shown in FIG.
  • the instruction in line 206 (ADD) is affected by the bank setting prefix BP10 in the previous line 204; therefore, R1 in bank 1 is used as the source operand, and the bank is used as the destination operand. Using R 21 in 0, write the result of the sum of R 1 and R 21 back to R 21.
  • the instruction in line 208 (SUB) is, as specified by the bank setting instruction in line 202, Using R 2 in bank 0 as the source operand and R 19 in bank 1 as the destination operand, subtract 1 19 from 112 and write the result back to R 19. Row 208 is not affected by the bank setting prefix of row 204. Note that in FIG. 3, the “source register bank” and “destination register bank” indicating the source operand are separately shown on the left and right sides of the figure for understanding, but the register bank having the same register identifier is shown. May point to the same registry bank.
  • the case where the operands are two 2-operand instructions is taken as an example, but when there is only one operand, only the destination operand can be used.
  • a bank setting instruction and a bank setting prefix can be similarly defined even in a three-operand architecture using three operands.
  • the banks that can be switched in this way can be accessed from the arithmetic unit shown in Fig. 1 by switching the banks to be accessed.
  • the external memory is a data transfer device 13 that is a memory access means, an internal bus 14, and an external bus 1. 5 can be accessed. The operation of the data transfer device 13 can be changed by a control signal based on a command.
  • the instruction length of the present invention will be described.
  • the 16 bits may be particularly referred to as one word.
  • FIG. 4 shows the instruction configuration of the present invention in a bit array.
  • the normal instruction 402 in FIG. 4 is, for example, an instruction such as addition (ADD) or subtraction (SUB) described in FIG. This is a normal instruction described earlier as the first type of instruction, and corresponds to row 208 in FIG.
  • the instruction 412 is composed of an 8-bit operation code and two operands of four bits each, and has an instruction length of 16 bits.
  • the instruction with a bank setting modifier 404 in FIG. 4 includes a puncture setting prefix 414 as a bank setting modifier instruction and an instruction 415 following the puncture setting prefix.
  • Instructions 4 15 are normal instructions.
  • the instruction with a bank setting modification 404 is represented by two lines, a row 204 and a row 206.
  • the instruction length is 16 bits for both the bank setting prefix 414 and the instruction 415.
  • the instruction 404 with the bank setting modification is 32 bits (2 words) as a whole.
  • a bank designation instruction is issued by the instruction decoder.
  • the bank setting instruction 406 in FIG. 4 is, for example, a 16-bit bank setting instruction 416, and corresponds to the row 202 in FIG. For example, like a normal instruction, it contains a 4-bit bank setting instruction opcode and two 6-bit bank identifier operands. Based on the bank setting instruction 406, a bank designation instruction is issued by the instruction decoder.
  • the setting of the instruction length of the bank setting instruction and the bank setting modification instruction as described above is particularly suitable when the majority of the operations that do not require the bank specification instruction.
  • the instruction length is increased to 2 words, etc., and usually a short instruction such as 1 word (16 bits) is executed.
  • the instruction length can be shortened in cases other than the case where As a result, it is possible to handle a large number of registers while reducing the program code and the area for implementing the processor.
  • bank allocation should be performed when an instruction is executed before a bank setting instruction explicitly appears.
  • Banks may not accept such orders as indeterminate, nor may default banks For example, it is possible to assign all the banks 0 using the link assignment, to process all the banks in parallel, to assign the destination operand and the source operand separately.
  • the present invention is not limited to the above one-word and two-word instructions.
  • the maximum instruction length can be three words.
  • the second word can be a bank setting prefix and the third word can be a normal instruction, but the first word can be another prefix.
  • the prefix can be, for example, a conditional ediction prefix.
  • the conditional execution prefix is a prefix that does not involve a branch instruction and can switch whether or not to execute a subsequent instruction according to a determination condition. This prefix alone has the effect of reducing branch instructions and avoiding stalls caused by branch instructions during parallel processing.
  • the conditional execution prefix is used in combination with the register designation command of the present invention, it is possible to write a program that can be processed in parallel with almost no stalls. In addition, it is possible to realize a port processor with a high processing speed. Note that if the maximum instruction length is 2 or 3 words and the last word is a register setting prefix, it is recognized as a general illegal instruction and will not be processed.
  • a long instruction length can be assigned only to the instruction related to the register designation instruction to handle many registers.
  • FIG. 5 to 8 show configuration examples 101 of a processor that implements the architecture of the present invention.
  • FIG. 5 shows the instruction fetch stage
  • FIG. 6 shows the instruction decode stage and the instruction execution stage
  • FIG. 7 shows the write back stage and the memory access stage included therein. I have.
  • the instruction fetch stage of FIG. 5 includes an instruction fetch buffer 54 from an instruction storage means (not shown), an instruction fetch unit 52 for loading instructions, and a program counter 5 for counting the number of programs to be executed. And a fetch address unit 56 for generating an address for accessing the instruction storage means based on the value of 8.
  • the instruction decode stage in FIG. 6 includes a main decoder 62 that decodes an instruction loaded as an instruction fetch buffer 54 into microcode (microinstruction) that is a control signal, and a prefix for the main decoder 62. And a prefix decoder 60 that decodes and outputs the same. In this configuration example, each instruction having an instruction length of 16 bits is sent to the decoder in 96-bit units.
  • the main decoder is decoding an instruction
  • the instruction following the instruction is decoded by the prefix decoder 60. That is, the prefix decoder 60 pre-reads the instruction in advance, so that the prefix decoder 60 detects whether the instruction includes the prefix.
  • the prefix decoder 60 When the prefix decoder 60 detects the prefix, it outputs a control signal to the main decoder 62 according to the content of the prefix. With this control signal, the main decoder 60 switches the decoding operation for the instruction after the prefix. As described above, the prefix decoder and the main decoder cooperate to implement the prefix operation. If the prefix is the bank setting prefix of the present invention, the main decoder 62 switches the register bank used for the operand included in the instruction to be decoded immediately thereafter. As a result, the registry that holds the bank allocation of the registry file (bank select registry 66, Fig. 8) is changed. This register is the bank switch means of the present invention. As described above, by using the bank setting prefix, the register bank to which the operand of the following instruction is pointed is switched. In other words, the prefix decoder and the main decoder can generate a MIC instruction which becomes a bank designation instruction.
  • the main decoder decodes the bank setting instruction, rewrites the bank select register, and changes the bank assignment of the register file. As a result, the register bank indicated by the destination operand and the source operand in the subsequent instruction is switched.
  • the instruction decode stage further includes a register file 64 containing a plurality of register banks of the present invention.
  • the registry evening bank is described as a nighttime processing registry evening arranged in four banks.
  • Each register bank has 16 data register banks each having a length of 64 bits that can be specified in a 6-bit field in a normal instruction.
  • the instruction decode stage includes the bank select register 66 as described above (Fig. 8).
  • the bank select register holds the status of the current bank allocation by, for example, a bank set instruction.
  • the instruction execution stage includes a microcode (microinstruction) control unit 610 that specifically executes the instruction decoded in the instruction decode stage, an arithmetic logic unit (ALU), and a multiply-accumulate operation unit (MAU). ) And a data processing unit (DPU).
  • Arithmetic unit 68 executes an arithmetic process specified for the immediate value, the register evening value in any of the register evening banks, etc., based on the micro instruction, and transfers the result to the write-back stage.
  • the instruction decode stage and the instruction execution stage further include the characteristic elements of the present invention.
  • the output from the register file is the source register SRC 0 and SRC 1 and the destination registers DST 0 and DST 1 which are part of the signal 601.
  • the ports of the registry file connected to the registers SRC0 and DST0 are used by ordinary processors. It is connected to the computing unit via the registers SRC0 and DST0.
  • the port of the registry file connected to the registry SRC 1 and DST 1 is a characteristic port of the present invention, and is connected to an external memory (not shown) via the registry SRC 1 and DST 1.
  • the store instruction execution device 620 forms a part of the memory access device of the present invention in cooperation with a memory output device 74 (FIG. 7) described later.
  • the arithmetic unit accesses some register banks of the register file having the register bank configuration via the register SRC0 and DST0, and at the same time, accesses the register banks of the other sections.
  • external memory can be accessed via the registers SR C1 and DST 1.
  • the write-back stage shown in Fig. 7 has a write-back device 72 that writes the output of the arithmetic unit 68 back to the registry file, and writes the output of the arithmetic unit 68 to an external memory (not shown) as data. It has a memory output device 74 including a driver, and a memory input device 76 for reading data from the external memory and loading it into the registry file 64. At this time, since the banks are different, the memory input device 76 can write data to the register file 64 in parallel with the write-back stage. '
  • FIG. 8 shows an example of the configuration of the bank switch means not shown in FIGS. 5 to 7 but used in the processor of the present invention.
  • the bank switch means in this configuration example includes a bank select register 66 and a register SRCB (84) which holds the register puncture assigned to the source operand register included in the SSR (system status register) 82. ) And the destination operand register And a Registrar DSTB (86) that holds the Registrar Bank assigned to the Scanner.
  • the bank select register 66 is a register that holds the registers that are assigned to the source and destination operands in the instruction decode stage.
  • ID.SRCB (84a) and ID.DSTB (86a) Consists of
  • This register assignment is also valid for the immediately following instruction, and it is possible to determine which registry evening punk register in the registry evening file 64 to access for each source operand and destination operand. . This is also written to SSR82 in the registry file at the end of the write-back stage, so that the registry bank allocation as the system status can be retained.
  • the bank specification instruction is a bank setting modification instruction and is combined with the immediately following ordinary instruction to form one instruction.
  • the bank select register 66 is rewritten in the instruction decode stage.
  • the registry bank configured as the registry bank of the present invention.
  • a processor capable of implementing a register evening switch operation by a register evening bank setting instruction and an operation of switching an operand point destination register of a subsequent instruction by a register evening bank setting prefix is provided as specific hardware.
  • the external memory can be accessed even during the arithmetic operation of the arithmetic unit, and the stagnation of the processing due to the latency of the memory can be prevented.
  • a known cache memory can be used for the memory output device 74 and the memory input device 76 to reduce the latency caused by the external memory.
  • a multi-processor configuration can be realized using a plurality of single processors described with reference to FIGS.
  • the individual processors to be cooperated are connected to the instruction storage means.
  • the instruction storage means stores instructions for cooperating the respective multiprocessors.
  • Each processor fetches only the instructions required by each processor at the fetch stage according to the program count of each processor.
  • the instructions of each processor may be the same as those used in the single processor of the present invention, such as a register bank setting instruction or a register bank bank multi-decorative instruction.
  • the external memory may be accessed by several processors.
  • the external memory can be configured as a shared memory system, and a certain data area in the external memory can be shared by a plurality of processors so that the processors can share a register.
  • the external memory with high latency
  • the registry evening of each processor is assigned to a separate registry evening bank, a registry evening sharing values with other processors (hereinafter referred to as a “shared registry evening”) and a registry evening used only by each processor.
  • each processor accesses the register bank including the shared register as a destination operand or a source operand only when performing an operation on the shared register, and accesses the other register banks in other operations, for example. I do.
  • the shared memory is accessed only when the shared registry is rewritten.
  • the processors constituting the multiprocessor operate as described above, only the rewriting result of the register to be shared by the processors is accessed via the shared memory having a large latency. Then, even during the access to the shared memory, the arithmetic unit of each processor can execute an instruction that does not handle the shared register.
  • the multiprocessor system according to the present invention including a plurality of processors, while ensuring data coherency, the multiprocessor system in which operations in each processor are not easily affected by latency due to external memory access. System is realized. Industrial potential
  • the multiprocessor system including a plurality of processors according to the present invention, it is possible to realize a multiprocessor system in which operations in each processor are hardly affected by latency due to external memory access while guaranteeing data coherency.

Abstract

It is possible to handle a plenty of registers without increasing the instruction length and eliminate stalls in the pipeline processing. A processor (100) includes an instruction decoder, a calculation unit (12), memory access means (13, etc.) for inputting/outputting data to/from an external memory (19), a plurality of register banks (11) each having the calculation unit and a register accessible from the memory access means, and bank switch means for controlling which of the register banks is accessed by the calculation unit and which of the register banks is accessed by the memory access means according to a register bank specification control signal from the instruction decoder based on the register bank specification instruction. A multi-processor system using the processor (100) and a method for controlling the processor (100) are also disclosed.

Description

マルチバンクレジス夕を有するプロセッサおよびプロセヅサの制御方法  Processor having multi-bank register and method of controlling processor
技術分野 Technical field
本発明は、 コンピュータ機器の演算装置である C P U (中央演算装置) や D 明  The present invention relates to a computing device for computer equipment such as a CPU (Central Processing Unit) or a D
S P (デジタルシグナルプロセッサ) などのプロセッサのアーキテクチャに関 細 Details on processor architecture such as SP (Digital Signal Processor)
し、 特に命令セッ トアーキテクチャを実装するマイクロプロセッサ及びその制 御方法に関する。 More particularly, the present invention relates to a microprocessor implementing an instruction set architecture and a control method thereof.
背景技術 Background art
様々な機器に用いられているプロセッサ、 特にマイクロプロセッサは、 近年 の半導体微細加工技術の進歩を背景に、 クロック周波数を高める等の手法によ つて演算処理能力の向上が図られている。 一方、 主記憶装置として働く外部メ モリとプロセッサの間の転送速度も各種の技術を利用することにより向上して いるが、 接続ピンの数やメモリの応答速度などの物理的な制約があり、 プロセ ヅサの性能向上には追いついていない。 このため、 プロセッサは、 メモリへの アクセス時には、内部レジス夕へのアクセスに比べて余分なクロック数 (通常、 レイテンシ一と呼ばれている) を消費してしまう。 プロセッサの内部バスとメ モリ間のバスとの間にあるこのようなデ一夕転送バンド幅のギヤヅプを埋める ために、 最近のプロセッサではキャッシュメモリがよく用いられている。  Processors used in various devices, especially microprocessors, have been improved in arithmetic processing capacity by techniques such as increasing the clock frequency, with the progress of semiconductor fine processing technology in recent years. On the other hand, the transfer speed between the external memory acting as the main storage device and the processor has also been improved by using various technologies, but due to physical limitations such as the number of connection pins and the response speed of the memory, It has not kept pace with processor performance improvements. As a result, the processor consumes an extra number of clocks (usually called latency) when accessing the memory compared to accessing the internal registers. Cache memory is often used in modern processors to bridge this gap in data transfer bandwidth between the processor's internal bus and the bus between memories.
また、 複数のプロセッサを連携動作させて、 全体として高い演算処理能力を 得る手法として、 マルチプロセッサシステムが知られている。 このマルチプロ セヅサシステムにおいては、 各プロセッサの演算を連携させるために、 それそ れに内蔵されるキャッシュメモリ間のデータにコヒ一レンシ一 (一貫性) を保 証しなければならない。 キャッシュメモリをそれそれ備えた複数のプロセッサによりマルチプロセヅ サシステムを構築する場合には、 各プロセッサのメモリへのアクセスを他のプ 口セッサが監視するスヌ一ビング (バススヌ一プ) によって上記コヒ一レンシ 一を保証する方法が知られている。 しかし、 このスヌ一ビングは、 プロセッサ とメモリ間のバスのデ一夕転送ノ ンド幅を低下させてしまう作用を有している。 したがって、 マルチプロセッサシステムを用いても、 使用するプロセッサ数に 比例してシステム全体での演算性能を向上させることは困難である。 In addition, a multiprocessor system is known as a method of operating a plurality of processors in cooperation with each other to obtain a high arithmetic processing capability. In this multi-processor system, in order to coordinate the operations of the processors, it is necessary to guarantee the coherency (consistency) of the data between the cache memories contained in each processor. When a multiprocessor system is constructed with a plurality of processors each having a cache memory, the coherency is controlled by snubbing (bus snoop) in which the other processors monitor access to the memory of each processor. Methods to guarantee one are known. However, this snubbing has the effect of reducing the data transfer node width of the bus between the processor and the memory. Therefore, even with a multiprocessor system, it is difficult to improve the computational performance of the entire system in proportion to the number of processors used.
マルチプロセッサシステムでは、 プロセヅサ間でメモリを共有する共有メモ リシステムを用いてデータのコヒ一レンシ一を保証する方法もある。 しかし共 有メモリシステムでは、 共有メモリとプロセッサ間のバスのデータ転送バンド 幅が、 マルチプロセッサシステムの性能を制限する要因となる。  In a multiprocessor system, there is a method of guaranteeing data coherency by using a shared memory system in which memory is shared between processors. However, in a shared memory system, the data transfer bandwidth of the bus between the shared memory and the processor is a factor that limits the performance of the multiprocessor system.
プロセッサ単体での演算処理能力の向上を並列処理を用いて高める手法とし て、 スーパーパイプラインやスーパ一スケーラ、 VLIW (Very Long Instruction Word) といった方法が知られている。 スーパ一パイプラインゃス一パースケ一 ラはインプリメンテーション (実装) レベルで並列処理を行なうことにより演 算処理能力を向上させる手法である。 VLIWは、 内部に演算器を複数備えたプロ セッサにおいて命令レベルで並列処理を行なうことにより、 演算処理能力を向 上させる手法である。 いずれの並列処理方法においても、 本来順次実行するプ ログラムを並列して処理させるために、 必然的に、 命令、 オペランド、 制御と いった面からの依存関係が避けられない。 例えば、 メモリからレジス夕へのデ —夕転送命令であるロード命令と、 そのデータがロードされている当該レジス 夕をオペランドとする演算命令との間には、 強い依存関係が生じてしまう。 こ のロード命令においては、 キャッシュにロードされるデ一夕が無い場合 (キヤ ヅシュミスが発生した場合) には外部メモリへのアクセスを伴う。 この例のよ うに、 前述の依存関係は大きなレイテンシ一を伴う可能性がある。 その場合に は、 命令実行パイプラインがストールし、 並列処理本来の演算性能が得られな くなつてしまうという問題がある。 As methods for increasing the processing power of a single processor using parallel processing, methods such as a super pipeline, a super scaler, and a VLIW (Very Long Instruction Word) are known. The Super Pipeline @ Superscaler is a method to improve the computational performance by performing parallel processing at the implementation (implementation) level. VLIW is a technique that improves the processing power by performing parallel processing at the instruction level in a processor that has multiple processing units inside. In any parallel processing method, in order to execute programs that are originally executed sequentially in parallel, inevitably dependencies in terms of instructions, operands, and control are inevitable. For example, there is a strong dependency between a load instruction that is a data transfer instruction from a memory to a register and an operation instruction that uses the register as an operand to which the data is loaded. In this load instruction, when there is no data to be loaded into the cache (when a cache miss occurs), access to the external memory is involved. As in this example, the dependencies described above can have significant latencies. In that case, the instruction execution pipeline stalls, and the original operation performance of parallel processing cannot be obtained. There is a problem of getting burned.
この並列処理の問題を解決するためには、 実行する命令を動的にスケジュ一 リングするリオ一ダリングバッファを用いたダイナミックスケジユーリングが 用いられる場合もある。 しかし、 この場合であっても、 その効果があるのは、 一般的には、 1 0数命令の範囲に限定されてしまう。 したがって、 キャッシュ ミスが発生した場合には、 命令実行パイプラインがストールを埋め切れず、 並 列処理の利点が十分には発揮されない。 また、 ダイナミックスケジユーリング にはハードウェアが複雑で回路規模が膨大になってしまうという問題もある。 プロセッサが所望のソフトウエアを実行する際に必要とする変数は、 プロセ ヅサ内のレジス夕あるいはシステム上のメモリに置かれる。 メモリへのァクセ スは、 前述のキャッシュミスの場合はもとより、 キヤヅシュメモリにアクセス する変数が存在している場合であっても、レジス夕へのアクセスに比べて遅い。  In order to solve this problem of parallel processing, dynamic scheduling using a rio-ordering buffer that dynamically schedules instructions to be executed may be used. However, even in this case, the effect is generally limited to the range of 10 instructions. Therefore, if a cache miss occurs, the instruction execution pipeline will not be able to fill the stall and the benefits of parallel processing will not be fully realized. In addition, dynamic scheduling has the problem that the hardware is complicated and the circuit scale becomes enormous. The variables required by the processor to execute the desired software are stored in a register in the processor or in memory on the system. The access to the memory is slower than the access to the registry even if there is a variable for accessing the cache memory, in addition to the cache miss described above.
1つのプログラムに必要とされる変数の数は、プログラムに依存するものの、 一般的には、 数十から百数十程度である。 従来のプロセッサでは、 物理的な実 装上の制限や、 プロセッサを動作させる命令セットアーキテクチャ上での命令 長の制限から、 8〜3 2個のレジス夕を実装する例が多い。 例えば、 レジスタ を 3 2個用いて演算の対象を 2つ用いる 2オペランドの命令セットァーキテク チヤとした場合には、 一命令を構成するビットのうち、 各レジス夕やオペラン ドの特定に 5ビット、 計 1 0ビットを必要とする。 同じくレジス夕を 3 2個用 いて演算結果を演算の対象と異なるレジス夕に格納する 3オペランドの場合に は、 オペランドの特定に計 1 5ビットを必要とする。 これらに、 演算のタイプ などを示すオペコードを示すビットを加えたものが命令長となる。  The number of variables required for one program depends on the program, but is generally several tens to one hundred and several tens. Conventional processors often have eight to thirty-two registers, due to limitations in physical implementation and limitations on instruction length in the instruction set architecture that operates the processor. For example, in the case of a two-operand instruction set architecture using 32 registers and two operation targets, 5 bits are used to specify each register and operand among the bits constituting one instruction. Requires 10 bits. Similarly, in the case of a 3-operand that uses 32 registers and stores the operation result in a register different from the operation target, a total of 15 bits are required to specify the operand. An instruction length is obtained by adding a bit indicating an operation code indicating an operation type or the like to these.
ここで、 命令長が長くなるとプログラム用のメモリサイズ、 およびメモリと プロセッサの間においてプログラムの実行に用いるバスバンド幅をともに増や す必要が生じる。 したがって、 一般に、 プロセッサ内部のインプリメンテ一シ ョンの点からは、 命令長を短くすることが演算性能を向上させるために有効で ある。 Here, as the instruction length increases, it becomes necessary to increase both the memory size for the program and the bus bandwidth used for executing the program between the memory and the processor. Therefore, in general, from the point of implementation inside the processor, it is effective to shorten the instruction length to improve arithmetic performance. is there.
一方、 レジス夕数を増やすと、 キャッシュメモリや外部メモリへのアクセス を減らすことが可能となる。 さらに、 外部メモリとレジス夕とのデ一夕転送を 行なうロード命令ゃストァ命令を削減することができるので、 プログラムのス テツプの数が減少する。 これらから、 扱えるレジス夕数を増加させると、 演算 性能の低下が防止できるという側面もあるが、 レジスタを指定するために、 命 令長は長くなつてしまう。  On the other hand, by increasing the number of registrations, it is possible to reduce access to cache memory and external memory. Further, since the number of load instructions and store instructions for performing an overnight transfer between the external memory and the register can be reduced, the number of program steps is reduced. Thus, increasing the number of registers that can be handled also has the effect of preventing the performance of the computation from deteriorating, but the instruction length increases because the registers are specified.
実際のプロセッサのアーキテクチャにおいては、 これらの相反する関係と使 用目的等を考慮して、 命令長が適宜設定されている。 典型的には、 レジス夕数 を少なく設定する場合には、 命令長は 1 6ビットとされ、 レジス夕数を多く設 定する場合には、 命令長は 3 2ビットとされる。  In the actual processor architecture, the instruction length is appropriately set in consideration of these conflicting relationships and the purpose of use. Typically, the instruction length is set to 16 bits when the number of register evenings is set small, and the instruction length is set to 32 bits when the number of register evenings is set large.
また、 命令セット上のレジスタ数はそのままで仮想的なレジス夕数を増やす テクニックとして 「レジスタリネーミング」 が知られている。  “Register renaming” is also known as a technique for increasing the number of virtual registers without changing the number of registers in the instruction set.
さらに、 レジス夕の有効活用を目的として、 個々のレジス夕ごとに切り換え を行なう手法が、 例えば特許文献 1に開示されている。  Further, for the purpose of making effective use of a registry evening, for example, Patent Literature 1 discloses a method of switching each registry evening.
特許文献 1 :特開平 7— 8 4 7 8 5号公報 発明の開示 .  Patent Document 1: Japanese Patent Application Laid-Open No. 7-847885 Disclosure of the invention.
発明が解決しょうとする課題 Problems the invention is trying to solve
本発明は、 プロセッサ単体で使用する際には、 命令長を可能な限り短くして 演算性能を高めつつ、 メモリアクセスによるレイテンシ一の発生を抑えること ができるプロセッサァ一キテクチャを提供することにより、 上記問題の少なく ともいくつかを解決することを課題とする。  The present invention provides a processor architecture capable of suppressing the occurrence of latency due to memory access while shortening the instruction length as much as possible and improving arithmetic performance when used alone. The task is to solve at least some of the above problems.
これに加えて、 本発明は、 マルチプロセッサ構成においても、 メモリのコヒ 一レンシ一を保証しつつ、 プロセッサとメモリ間のデータ転送バンド幅がスヌ In addition to this, the present invention also ensures that the data transfer bandwidth between the processor and the memory can be reduced while guaranteeing memory coherency even in a multiprocessor configuration.
—ピングによって低下することを防止することができるプロセヅサァーキテク チヤを提供することにより、 上記問題の少なくともいくつかを解決することを 課 とする。 課題を解決するための手段 —Processor technology that can prevent degradation due to ping The task is to solve at least some of the above problems by providing chars. Means for solving the problem
本発明では、プロセヅサ内のレジス夕が複数のレジス夕バンクに構成される。 そして、 そのプロセッサに備えられた演算装置およびメモリアクセス装置が、 それぞれ異なる上記レジス夕バンクに動的に接続される機構を実現することに より、 上記プロセッサアーキテクチャを実現する。 本発明では、 全般に、 レジ ス夕バンクのスイッチ手段と、 レジス夕バンク設定命令、 またはレジス夕バン ク設定修飾命令などからなるレジス夕バンク指定命令とを用いることにより、 例えば 1 6ビット等の短い命令長で、 数多くのレジス夕を扱うことを可能にし ている。  In the present invention, the registry in the processor is composed of a plurality of registry banks. The processor architecture is realized by realizing a mechanism in which an arithmetic unit and a memory access device provided in the processor are dynamically connected to the different registry banks. In the present invention, in general, the use of a switch for the register bank and a register for bank designation command such as a register for bank setting or a command for modifying the bank for bank setting are used to provide, for example, 16 bits. With a short instruction length, it is possible to handle many regis- ter evenings.
具体的には、 本発明では、 レジス夕バンク指定命令と通常の命令とを含む命 令をデコードして制御信号を生成する命令デコーダと、 該命令デコーダからの 該制御信号に基づいて演算処理を行なう演算器と、 該演算器の信号に基づいて 外部メモリとの間でデ一夕入出力を行なうメモリアクセス手段と、 該演算器お よび該メモリアクセス手段からアクセス可能なレジスタをそれそれ備えた複数 のレジス夕バンクと、 前記レジスタバンク指定命令に基づいて前記命令デコー ダが生成するレジス夕バンク指定制御信号により制御されるバンクスイッチ手 段であって、 該演算器がどのレジス夕バンクにアクセスするかを定め、 かつ、 該メモリアクセス手段がどのレジス夕バンクにアクセスするかを定めるパンク スイッチ手段とを備えてなり、 該レジス夕バンク指定命令は、 該バンクスィ ヅ チ手段を制御することにより、 該レジス夕パンク指定命令より後にある通常の 命令をオペランドを用いて実行するために、 該オペランドが用いるレジス夕に 割り当てるレジス夕バンクを切り換える命令である、 マルチバンクレジス夕を 有するプロセッサが提供される。 命令デコーダは、 本プロセッザの外部に備えられている命令記憶装置からフ エッチされた命令を受け取りデコードして制御信号を生成する。 また、 メモリ アクセス手段とは、外部メモリとのアクセスを提供する手段であり、外部バス、 キャッシュメモリ、 アドレス生成器等の当分野で周知の手段によってメモリと プロセッサのアクセスを提供し、 デ一夕の転送が可能な任意の技術とすること ができる。 このメモリアクセス手段は、 プロセッサのレジス夕と外部メモリと のアクセスを提供する。 Specifically, in the present invention, an instruction decoder that decodes an instruction including a register bank designation instruction and a normal instruction to generate a control signal, and performs an arithmetic process based on the control signal from the instruction decoder A computing unit for performing data input / output to / from an external memory based on a signal from the computing unit; and a register accessible from the computing unit and the memory access unit. A bank switch means controlled by a register bank designation control signal generated by the instruction decoder based on the register bank designation command, wherein the arithmetic unit accesses any of the register banks. Puncturing switch means for determining which register bank the memory access means accesses. By controlling the bank switch means, the register assignment bank designation instruction is used to execute a normal instruction after the register sunset puncture designation instruction by using an operand. A processor having a multi-bank register, which is an instruction to switch the evening bank, is provided. The instruction decoder receives a fetched instruction from an instruction storage device provided outside the processor, decodes the instruction, and generates a control signal. The memory access means is a means for providing access to an external memory, and provides access between the memory and the processor by means well known in the art such as an external bus, a cache memory, and an address generator. Any technology that can transfer data can be used. This memory access means provides access between the processor's registry and external memory.
それそれのレジス夕バンクは、 適当な単位のバンクにまとめられている複数 のレジス夕を含んでいる。 各レジス夕バンクは、 例えば適当なビット数の数字 であるようなバンク識別子によって区別される。 本発明では複数のレジス夕バ ンクが含まれているプロセッサが用いられるため、 任意のレジス夕を特定する には、 バンク識別子とレジス夕アドレスとを指定する。 しかし、 本プロセッサ で実行される各命令においては、 詳細を後述するように、 バンクを切り換える ためのバンク設定命令やバンク設定修飾命令を用いることにより、 それら以外 の命令 (通常の命令) においては、 バンク識別子を指定する必要が無い。  Each Regis evening bank contains a number of Regis evenings organized into appropriate unit banks. Each registry bank is distinguished by a bank identifier that is, for example, an appropriate number of bits. In the present invention, since a processor including a plurality of register banks is used, a bank identifier and a register address are specified to specify an arbitrary register. However, in each instruction executed by this processor, as will be described in detail later, by using a bank setting instruction for switching banks and a bank setting modifying instruction, other instructions (normal instructions) are used. There is no need to specify a bank identifier.
レジス夕バンク指定命令は、 明示的にバンクを指定するバンク識別子を何ら かの形で含むものである。 例えば、 このレジス夕バンク指定命令は、 オペラン ド数 2の命令のソースオペランドゃデスティネーションオペランドのバンクを 指定するバンク識別子をオペランドとして持つような命令 (本明細書において 「バンク設定命令」 という) とすることができる。 このレジス夕バンク指定命 令は、 例えば汎用レジス夕のあるもの、 といった個々のレジス夕のみを指定す るものではなく、 オペコードと共に用いられるソースオペランドゃデスティネ ーシヨンオペランドといったオペランドの位置ごとにレジス夕バンクの割り当 てを指定するものとすることができる。 このレジス夕バンク指定命令は命令デ コーダによりレジス夕バンク指定制御信号となって演算器を動作させる。  The Registrar Bank Designation Instruction contains some form of bank identifier that explicitly designates the bank. For example, this register designation instruction is an instruction having a bank identifier that designates a bank of a source operand / a destination operand of an instruction having two operands (hereinafter referred to as a “bank setting instruction”). can do. The register evening bank designation instruction does not designate only individual registry evenings, for example, those having a general-purpose registry evening, but registers each operand location such as a source operand used together with an opcode, a destination operand, etc. Bank assignment may be specified. This register setting instruction signal is used as a register setting signal by the instruction decoder to operate the arithmetic unit.
本プロセッサで実行される命令のうち、 レジス夕バンク指定命令以外のもの は、 バンク識別子を含まない。 このような命令をレジス夕バンク指定命令と区 別して、 「通常の命令」 と呼ぶ。通常の命令は、 オペランドを用いるものとする ことができる。 本プロセッサで実行される通常の命令のオペランドには、 基本 的には、 その命令に到達するまでにレジス夕バンク指定命令によって明示的に 指定されたレジス夕バンクが割り当てられているものとすることができる。 例 えば、 ソースオペランドにはバンク 0、 デスティネーションオペランドにはバ ンク 3、 というように割り当てられる。 このため、 通常の命令の命令長は、 レ ジス夕バンクを用いるからといって特に長くする必要はない。 Instructions to be executed by this processor other than the register instruction Does not include the bank identifier. Such instructions are distinguished from the Registrar Bank designation instructions and are referred to as "ordinary instructions." Ordinary instructions can use operands. Basically, the operand of the ordinary instruction executed by this processor is assumed to be assigned the registry bank explicitly specified by the register bank instruction until the instruction is reached. Can be. For example, bank 0 is assigned to the source operand, bank 3 to the destination operand, and so on. For this reason, the instruction length of a normal instruction does not need to be particularly long just because the register bank is used.
このレジスタバンクの割り当ては、バンクスィツチ手段によって実現される。 バンクスイッチ手段は、 レジス夕バンク指定命令に基づくレジス夕バンク指定 制御命令によって制御される。 このバンクスイッチ手段は、 例えば、 それ以降 の全ての命令に用いられるソースオペランドやデスティネーションオペランド のバンクを指定するレジス夕である。 この指定は、 オペランドごとに変更して も良く、 同じであっても良い。 なお、 レジス夕バンク指定命令が明示的に含ま れていない際のバンクスィツチ手段の動作は、 適当な既定値に基づいているも のとすることができる。 また、 レジス夕バンク指定命令は、 サブルーチン単位 でレジス夕バンクを指定するような命令には限られない。  The allocation of the register banks is realized by bank switch means. The bank switch means is controlled by a resister bank designation control command based on a resister bank designation command. The bank switch means is, for example, a register for designating a bank of source operands and destination operands used for all subsequent instructions. This specification may be changed for each operand, or may be the same. The operation of the bank switch means when the register bank designation instruction is not explicitly included can be based on an appropriate default value. The register bank designation instruction is not limited to the instruction that designates the register bank in subroutine units.
本発明のようにして、 必要に応じて付加的な命令による切り換えを行って複 数のレジス夕バンクを用いると、通常の命令に用いる命令長を短く保ったまま、 多数のレジス夕を使用することができる。 このようにして多数のレジス夕を使 用できるために、 これまでキヤッシュメモリを用いて行なわれてきたように、 デー夕の局所性を利用したメモリアクセス頻度の抑制も可能になる。 しかも、 キャッシュメモリに比べてレジス夕のほうが転送バンド幅を大きくとることが できる。 レジス夕をより多く利用した方が、 キャッシュメモリを多用するより 高速な演算が可能となる。  As in the present invention, when a plurality of register banks are used by switching with additional instructions as needed, a large number of register banks are used while keeping the instruction length used for ordinary instructions short. be able to. Since a large number of registry keys can be used in this way, it is possible to reduce the frequency of memory access using locality of data, as has been done with cache memory. In addition, the transfer bandwidth can be larger in the case of the registry than in the case of the cache memory. The more regis- ters are used, the faster the operation that uses more cache memory becomes.
本発明において、 前記バンクスイッチ手段は、 前記レジス夕バンク指定制御 2 In the present invention, the bank switch means controls the register bank designation. Two
8 信号により制御され、 前記演算器が前記レジス夕バンクのいずれかへァクセス するかを定めるとともに、 前記メモリアクセス手段が他のいずれかの前記レジ ス夕パンクへアクセスするかを定めるものであり、 前記演算器によるレジス夕 へのアクセスと前記メモリアクセス手段によるレジス夕へのアクセスとの同時 アクセスが可能とすることができる。 8 to determine whether the arithmetic unit accesses any of the register banks and to determine whether the memory access means accesses any of the other register banks. Simultaneous access to the registry by the arithmetic unit and access to the registry by the memory access means can be enabled.
この構成により、 演算装置に接続されるレジス夕パンクと異なるレジス夕バ ンクをメモリアクセス装置に接続することができる。 このように構成すれば、 演算命令とメモリアクセス命令によるメモリとレジスタ間のデータ転送を並行 して行うことが可能となる。 プロセッサがあるレジス夕バンクのレジス夕を用 いる演算の処理中に、 別のレジス夕バンクに対するメモリからのデ一夕を読込 んだり、 演算結果が格納されているレジス夕バンク内のデ一夕をメモリに格納 する、 という処理をソフトウェアから明示的に行うことができる。 その結果、 口一ド命令と演算命令とのデータの依存関係に起因するパイプラインのスト一 ルによるプロセッサの処理性能の低下を、 簡便なハードウエア構成で容易に押 さえることができる。 なお、 メモリアクセス手段は命令デコーダからの命令に 基づいて外部メモリとレジス夕とのアクセスを提供するものとすることができ る。  With this configuration, it is possible to connect a register bank different from a register bank connected to the arithmetic unit to the memory access device. With this configuration, data transfer between the memory and the register by the operation instruction and the memory access instruction can be performed in parallel. The processor reads data from the memory for another registry bank while processing an operation using a registry bank in one registry bank, or reads data from a memory in the registry bank where the calculation results are stored. The process of storing in a memory can be explicitly performed by software. As a result, with a simple hardware configuration, it is possible to easily suppress a decrease in the processing performance of the processor due to the pipeline stall caused by the data dependency between the executed instruction and the operation instruction. Note that the memory access means can provide access between the external memory and the register based on an instruction from the instruction decoder.
本発明のプロセッサにおいて、 前記レジス夕バンク指定命令は、 レジス夕バ ンク設定修飾命令であり、 前記レジス夕バンク設定修飾命令は、 前記バンクス ィッチ手段を制御することにより、 該レジス夕バンク設定修飾命令の直後にあ る通常の命令をオペランドを用いて実行するために、 該直後にある通常の命令 の該オペランドについてのレジス夕に割り当てるレジス夕バンクを切り換える ロ卩令とすることができる,  In the processor according to the present invention, the register bank setting instruction is a register bank setting modifying instruction, and the register bank setting modifying instruction is controlled by controlling the bank switch means. In order to execute the ordinary instruction immediately following the operand using the operand, the instruction may be a bank instruction that switches a register bank to be assigned to a register for the operand of the ordinary instruction immediately after the instruction.
この場合、 レジス夕バンク設定修飾命令がそれに後続する直後の命令のみの オペランドについてのレジス夕に割り当てるレジス夕バンクを切り換える。 つ まり、 レジス夕バンク設定修飾命令とは、 直後の命令にのみ影響する修飾する 作用を有するようなレジス夕バンクを指定するための命令である。 このレジス 夕バンク設定修飾命令は、 レジス夕バンク設定プリフィクスとも呼ぶ。 レジス 夕バンク設定修飾命令により、 プログラム中で柔軟にレジス夕バンクの指定を することが可能となり、 命令長を抑えつつプログラミングの自由度を確保する ことができる。 In this case, the register bank to be assigned to the register for the operand of only the instruction immediately following the register bank setting modifier instruction is switched. In other words, a register setting modifier instruction is a modifier that affects only the immediately following instruction. This is an instruction for designating a registry bank having an effect. This Registrar evening bank setting modifier command is also called the Registrar evening bank setting prefix. The register bank setting modifier instruction makes it possible to specify the register bank flexibly in a program, and to secure the flexibility of programming while reducing the instruction length.
本発明では、 前記レジス夕バンク設定修飾命令が直前にある場合には命令長 が通常の命令の命令長から延長されて、 該レジス夕バンク設定修飾命令と直後 の該通常の命令とが該延長された命令長を有する一命令になるようにするもの とできる。 ここで、 レジス夕バンク指定命令がレジス夕バンク設定修飾命令で あるときには、 そのレジス夕バンク設定修飾命令と通常の命令とが組み合わせ て構成されて命令の一単位となる。 レジス夕バンク設定修飾命令のみでは一単 位にはならない。 なぜなら、 レジス夕バンク設定修飾命令は直後にある通常の 命令のオペランドについてのレジス夕を修飾するもので、 それのみでは実行可 能な命令ではないからである。  In the present invention, when the register setting instruction is immediately before, the instruction length is extended from the instruction length of the normal instruction, and the register setting instruction and the normal instruction immediately after the instruction are extended. One instruction having the specified instruction length can be obtained. Here, when the register setting instruction is a register setting modifying instruction, the register setting instruction and the normal instruction are combined to form one unit of the instruction. Registrar bank setting qualification instructions alone are not a unit. The reason is that the register setting modifier instruction modifies the register setting for the operand of the next ordinary instruction, and is not an executable instruction by itself.
命令長を延長することとは、 レジス夕バンク設定修飾命令の直後の命令の動 作を、 そのレジス夕バンク設定修飾命令に従って修飾して実行する動作を実行 可能な一命令として認識させることの出来る命令セットアーキテクチャを構成 すること、 あるいはそういう命令セットアーキテクチャをデコードし得るデコ ーダを構成することであり、 単に形式的に命令の区切りを変更するだけではな い。 また、 アセンブラコードを一行に記載することと直接に対応するものでも ない。  Extending the instruction length means that the operation of the instruction immediately following the register setting instruction can be recognized as an executable instruction that can be executed by modifying it according to the register setting instruction. To construct an instruction set architecture, or to construct a decoder that can decode such an instruction set architecture, rather than merely formally changing the delimiter between instructions. Nor does it correspond directly to putting assembler code on one line.
これら本発明のプロセッサにおいて、 前記レジス夕バンク指定命令がレジス 夕バンク設定命令であり、 該レジス夕バンク設定命令より後にある通常の命令 においては、 明示的なレジス夕バンクの指定を必要とせずに、 前記オペランド が用いるレジス夕に対して該レジス夕バンク指定命令に基づくレジス夕バンク の割り当てが適用されることができる。 レジス夕バンク設定命令は、 レジス夕 バンク指定命令の一種であり、 その後の通常の命令におけるオペランドのバン クの割り当てを指定する。 それより後にある通常の命令においては、 レジス夕 バンクを特に指定することなく、 レジス夕バンク設定命令によって割り当てら れたレジス夕バンクが用いられる。 In these processors of the present invention, the register bank setting instruction is a register bank setting instruction. In a normal instruction subsequent to the register bank setting instruction, it is not necessary to explicitly specify the register bank. The assignment of the register bank based on the register bank designation instruction can be applied to the register bank used by the operand. Regis Evening Bank Setting Instruction, Regis Evening A type of bank specification instruction that specifies the bank assignment of operands in a subsequent normal instruction. In the normal instructions that follow, the Registrar Bank assigned by the Registrar Bank Set instruction is used without specifying the Registrar Bank.
このようなレジス夕バンク設定命令を用いると、 通常の命令の命令長を、 レ ジス夕がレジス夕バンクに構成されていないプロセッサアーキテクチャと同様 の短い命令長としておいて、 必要に応じてレジスタバンク設定命令を用いるこ とができる。 これにより、 複数の命令から構成されるプログラム全体の平均命 令長を短く保ちつつ、 多数のレジス夕を扱うことが可能となる。  When such a register bank setting instruction is used, the instruction length of a normal instruction is set to a short instruction length similar to that of a processor architecture in which the register bank is not configured as a register bank, and the register bank is set as required. Configuration instructions can be used. This makes it possible to handle a large number of registers while keeping the average instruction length of the entire program composed of multiple instructions short.
本発明の別の態様として、 命令記憶手段と、 第 1のプロセッサと、 第 2のプ . 口セヅサと、 外部メモリとを少なくとも備えてなるマルチプロセヅサシステム であって、 該第 1のプロセッサおよび該第 2のプロセッサは、 該命令記憶手段 からのレジス夕バンク指定命令と、 通常の命令とを含む命令をデコードして制 御信号を生成する命令デコーダと、 該命令デコーダからの該制御信号に基づい て演算処理を行なう演算器と、 該演算器の信号に基づいて該外部メモリとの間 でデ一夕入出力を行なうメモリアクセス手段と、 該演算器および該メモリァク セス手段からアクセス可能なレジス夕をそれぞれ備えた複数のレジス夕バンク と、 前記レジスタバンク指定命令に基づいて前記命令デコ―ダが生成するレジ ス夕バンク指定制御信号により制御されるバンクスィツチ手段であって、 該演 算器がどのレジス夕バンクにアクセスするかを定め、 かつ、 該メモリアクセス 手段がどのレジス夕バンクにアクセスするかを定めるバンクスィツチ手段とを それそれ備えてなり、 該レジス夕バンク指定命令は、 該バンクスイッチ手段を 制御することにより、 該レジス夕バンク指定命令より後にある通常の命令をォ ぺランドを用いて実行するために、 該オペランドが用いるレジス夕に割り当て るレジス夕バンクを切り換える命令であり、 該外部メモリは、 該第 1のプロセ ヅサの該メモリアクセス手段と、 該第 2のプロセッサの該メモリアクセス手段 とのいずれからもアクセス可能に接続されている、 マルチプロセッサシステム が提供される。 According to another aspect of the present invention, there is provided a multiprocessor system including at least an instruction storage unit, a first processor, a second processor, and an external memory, wherein the first processor An instruction decoder that decodes an instruction including a register bank designation instruction from the instruction storage means and an ordinary instruction to generate a control signal; and the control signal from the instruction decoder. An arithmetic unit for performing an arithmetic process based on the data, a memory access unit for performing input / output with the external memory based on a signal from the arithmetic unit, and accessible from the arithmetic unit and the memory access unit A plurality of register banks each including a register bank; and a register bank specifying control signal generated by the instruction decoder based on the register bank specifying instruction. Bank switch means to be controlled, the bank switch means determining which register bank the arithmetic unit accesses, and the bank switch means determining which register bank the memory access means accesses. The register bank designation instruction is used by the operand to control the bank switch means to execute a normal instruction following the register bank designation instruction by using an operand. An instruction for switching a register bank to be assigned to the register, wherein the external memory includes the memory access unit of the first processor and the memory access unit of the second processor. A multiprocessor system is provided that is connected to and accessible from any of the above.
この外部メモリは、 マルチプロセッサシステムを構成する少なくとも二つ含 まれるプロセッサからアクセスされる。 これにより、 例えば、 S M P (Symmetrical Multiprocessor) 構成のマルチプロセッサシステム、 C P Uコ ァと D S Pコアとを連携させるマルチプロセッサの構成を実現することができ る。 本特徴により、 マルチプロセッサシステムを構成する各プロセッサにおい てレジス夕バンクを用いることが可能となる。 プロセッサとメモリ間のバスに よるデータ転送バンド幅のギャップを数多くのローカルレジス夕で補うことを 可能としている。 また、 各バンクのレジスタは、 ソフトウェアから観測および 制御可能であるため、 デ一夕のコヒ一レンシ一の問題は発生しない。 従って、 プロセッサとメモリ間のバスのデ一夕転送バンド幅は、 スヌ一ビングのために 失われることは無い。 このため、 S M P構成でプロセッサ数を増やして演算性 能を向上させることや、 特定目的の信号処理用演算回路を内蔵する D S Pと C P Uとの連携処理の能力を高めることが可能となる。  This external memory is accessed from at least two processors included in the multiprocessor system. This makes it possible to realize, for example, a multiprocessor system having an SMP (Symmetrical Multiprocessor) configuration, and a multiprocessor configuration in which the CPU and DSP cores are linked. This feature makes it possible to use a registry bank for each processor in a multiprocessor system. A large number of local registers can make up for the gap in data transfer bandwidth due to the bus between the processor and the memory. In addition, since the registers in each bank can be observed and controlled from software, there is no problem with coherency. Thus, the data transfer bandwidth of the bus between the processor and the memory is not lost due to snubbing. For this reason, it is possible to improve the arithmetic performance by increasing the number of processors in the SMP configuration, and to enhance the capability of cooperative processing between the DSP and the CPU incorporating a specific-purpose signal processing arithmetic circuit.
このようなマルチプロセッサシステムにおいて、前記バンクスイツチ手段は、 前記レジス夕バンク指定制御信号により制御され、 前記演算器が前記レジス夕 バンクのいずれかへアクセスするかを定めるとともに、 前記メモリアクセス手 段が他のいずれかの前記レジス夕バンクへアクセスするかを定めるものであり、 前記演算器によるレジス夕へのアクセスと前記メモリアクセス手段によるレジ ス夕へのアクセスとの同時アクセスが可能であるものとすることができる。 同時アクセスを用いると、 マルチプロセッサシステムを構成する各プロセヅ サの処理能力が向上するだけでなく、 複数のプロセッサを連携させて演算処理 を行なう場合にしばしば問題となる、 プロセッサ間のデータ転送に起因するス トールが減少する。  In such a multiprocessor system, the bank switch means is controlled by the register bank designation control signal, and determines whether the arithmetic unit accesses any of the register banks, and the memory access means is It is determined whether any of the other registry banks is to be accessed, and simultaneous access of the arithmetic unit to the registry bank and access to the register bank by the memory access means is possible. can do. When simultaneous access is used, not only does the processing capability of each processor constituting a multiprocessor system improve, but it often causes a problem when performing arithmetic processing by linking multiple processors. The number of installed stalls is reduced.
本発明では、 このようなマルチプロセッサシステムであって、 前記外部メモ T JP2002/010832 The present invention provides such a multiprocessor system, wherein the external memory T JP2002 / 010832
12 リにおいて前記第 1のプロセッサがアクセスするメモリ領域と、 前記第 2のプ 口セヅサがアクセスするメモリ領域との少なくとも一部が共有されているもの とすることができる。 At least part of the memory area accessed by the first processor and the memory area accessed by the second processor may be shared.
いわゆる共有メモリを用いた場合であっても、 レジス夕数を増やすことによ り、 データの局所性を用いたデ一夕のキャッシングと同様の効果で、 プロセヅ ザとメモリ間に必要とされるデータ転送を少なくすることができる。 これによ り、 マルチプロセヅサシステムで共有メモリを用いた場合であっても、 メモリ バンクを用いない場合に比べて演算性能が向上する。  Even in the case of using a so-called shared memory, increasing the number of registrations is required between the processor and the memory with the same effect as data caching using locality of data. Data transfer can be reduced. As a result, even when the shared memory is used in the multiprocessor system, the operation performance is improved as compared with the case where the memory bank is not used.
本発明の他の態様として、 レジス夕バンク指定命令と通常の命令とを含む命 令をデコードして制御信号を生成する命令デコーダと、 該命令デコーダからの 該制御信号に基づいて演算処理を行なう演算器と、 該演算器の信号に基づいて 外部メモリとの間でデ一夕入出力を行なうメモリアクセス手段と、 該演算器お よび該メモリアクセス手段からアクセス可能なレジス夕をそれそれ備えた複数 のレジス夕バンクと、 該演算器および該メモリアクセス手段がそれぞれどのレ ジス夕バンクにアクセスするかを定めるバンクスィツチ手段とを備えてなるプ 口セヅサの制御方法であって、 該命令デコーダが該レジス夕バンク指定命令に 基づいてレジス夕バンク指定制御信号を生成するステップと、 該レジスタバン ク指定制御信号により該バンクスイッチ手段を制御することにより、 該レジス 夕バンク指定命令より後にある通常の命令のオペランドが用いるレジス夕に割 り当てるレジス夕バンクを切り換えて、 該演算器がどのレジス夕バンクにァク セスするかを制御するステップと、 該レジスタバンク指定制御信号により該バ ンクスィツチ手段を制御することにより、 該オペランドが用いるレジス夕に割 り当てるレジス夕バンクを切り換えて、 該メモリアクセス手段がどのレジス夕 バンクにアクセスするかを制御するステップと、 該通常の命令をオペランドを 用いて実行するステップとを含むマルチバンクレジス夕を有するプロセヅサの 制御方法が提供される。 本発明のプロセッサは、 レジス夕バンク指定制御信号により、 演算器やメモ リアクセス手段がアクセスするレジス夕バンクを切り換え、 その命令を実行す る。 これを適切に行なうには、 上記各ステップを含む制御方法を行なうことが できる。 これにより、 その後の命令のオペランドのレジス夕に割り当てられる レジス夕パンクが定められるので、 このような制御方法によって命令長を短く 保って多くのレジス夕を扱うことが可能となる。 According to another aspect of the present invention, there is provided an instruction decoder for generating a control signal by decoding an instruction including a register bank designation instruction and a normal instruction, and performing arithmetic processing based on the control signal from the instruction decoder. An arithmetic unit, a memory access unit for performing data input / output with an external memory based on a signal from the arithmetic unit, and a register accessible from the arithmetic unit and the memory access unit. A method of controlling a port processor comprising a plurality of register banks and bank switch means for determining which register bank the arithmetic unit and the memory access means respectively access, wherein the instruction decoder comprises: Generating a register bank designation control signal based on the register bank designation command; By controlling the switch means, the register bank assigned to the register used by the operand of the normal instruction after the register bank designation instruction is switched, so that the arithmetic unit accesses any register bank. Controlling the bank switch means by the register bank designation control signal, thereby switching the register bank to be allocated to the register used by the operand, and A method of controlling a processor having a multi-bank register, comprising the steps of: controlling whether to access a memory; and executing the normal instruction using an operand. The processor of the present invention switches the registry bank to be accessed by the arithmetic unit and the memory access means according to the register bank designation control signal, and executes the instruction. In order to appropriately perform this, a control method including the above steps can be performed. As a result, the register puncture assigned to the register of the operand of the subsequent instruction is determined, so that such a control method can handle a large number of registers while keeping the instruction length short.
なお、 上記の各ステップは、 必ずしもこの順序を保って行なう必要はない。 プログラムの各命令の配列等の結果として、 様々な順序で実行されることがで きる。 また、 同時に行なわれるステップがあったり、 各ステップの実行頻度が 大きく異なっていても良い。  The above steps need not always be performed in this order. The program can be executed in various orders as a result of the arrangement of the instructions. Also, some steps may be performed simultaneously, and the frequency of execution of each step may be significantly different.
この制御方法において、 該通常の命令を、 オペランドを用いて実行する前記 ステツプが、あるレジス夕バンクのレジス夕への前記演算器によるアクセスと、 他のレジスタバンクのレジス夕への前記メモリアクセス手段によるアクセスと が同時に行なわれるステップを含むものとすることができる。  In this control method, the step of executing the normal instruction using an operand includes accessing the register of a certain register bank by the arithmetic unit and the memory accessing means of a register of another register bank. And a step in which access by and is performed simultaneously.
演算器があるレジス夕バンクにアクセスする際に、 メモリアクセス手段は、 他のレジス夕バンクにアクセスすることができる。 これらのアクセスはともに 命令の実行ステップに含まれている。 この実行ステップの範囲は、 例えば、 プ 口セッサが動作するクロックを単位として、 通常の命令を実行するのに要する 最初のクロックから最後のクロックまでというように、 時間によって定めるこ とが出来る。 この範囲において、 演算器とメモリアクセス手段は、 別々のレジ ス夕バンクのそれそれが用いるレジス夕に並行してアクセスすることができる。 従来のプロセヅサにおいては、 この演算器がレジス夕にアクセスすることと、 メモリにアクセスすることとを並行して行なうために、 マルチポートのレジス 夕ファイルを用いる必要があった。 しかし、 本発明の特徴であるレジス夕をバ ンクに分けることによって、 通常のレジス夕ファイルでこのように並行にァク セスすることが可能となる。 これにより、 メモリアクセスのレイテンシ一が命 令実行を一時停止させる時間においても他の演算を行なうことが可能となり、 演算処理能力が向上する。 また、 パイプライン処理のストールの頻度や時間が 減少する。 When the arithmetic unit accesses a certain registry bank, the memory access means can access another registry bank. Both of these accesses are included in the instruction execution step. The range of the execution steps can be defined by time, for example, from the first clock to the last clock required to execute a normal instruction in units of a clock at which the processor operates. In this range, the arithmetic unit and the memory access means can access the registers used by each of the separate register banks in parallel. In the conventional processor, it was necessary to use a multi-port register file in order for the arithmetic unit to access the register and the memory in parallel. However, by dividing the registry window, which is a feature of the present invention, into banks, it is possible to access in parallel in this way using a normal registry file. This increases memory access latency. Other operations can be performed even during the time when the execution of the instruction is temporarily stopped, thereby improving the operation processing capability. In addition, the frequency and time of stalls in pipeline processing are reduced.
本発明のプロセヅザの制御方法において、 前記レジス夕バンク指定命令は、 レジス夕バンク設定修飾命令であり、 前記レジス夕バンク設定修飾命令は、 前 記バンクスィッチ手段を制御することにより、 該レジス夕バンク設定修飾命令 の直後にある通常の命令をオペランドを用いて実行するために、 該直後にある 通常の命令の該オペランドについての該ォペランドのレジス夕に割り当てるレ ジス夕バンクを切り換える命令とすることができる。  In the processor control method according to the present invention, the register bank setting instruction is a register bank setting modifying instruction, and the register bank setting modifying instruction is controlled by controlling the bank switch means. In order to execute the normal instruction immediately after the setting modification instruction using the operand, the instruction may be a switch that switches a register bank assigned to the operand register of the operand of the normal instruction immediately following the normal instruction. it can.
レジス夕バンク設定修飾命令は、 直後の命令にのみ影響する修飾する作用を 有するようなレジス夕バンクを指定するための前述した命令である。 プロセッ ザの制御方法においても、 レジス夕バンク設定修飾命令により、 プログラム中 で柔軟にレジス夕バンクの指定をすることが可能となり、 命令長を抑えつつプ ログラミングの自由度を確保することができる。  The Registrar bank setting modifier instruction is the above-described instruction for designating the Registrar bank which has a modifying effect which affects only the immediately following instruction. Also in the processor control method, the register bank setting modifier instruction enables the register bank to be specified flexibly in the program, and the degree of freedom in programming can be secured while suppressing the instruction length.
本発明のプロセッサの制御方法は、 前記レジス夕バンク設定修飾命令が直前 にある場合には命令長が通常の命令の命令長から延長されて、 該レジス夕バン ク設定修飾命令と直後の該通常の命令とが該延長された命令長を有する一命令 になるものであってもよい。  In the control method of the processor according to the present invention, the instruction length is extended from the instruction length of a normal instruction when the register setting instruction is immediately before, and the instruction setting is immediately followed by the normal instruction immediately after the register setting instruction. May be one instruction having the extended instruction length.
また、 この制御方法において、 前記レジス夕バンク指定命令がレジスタバン ク設定命令であり、 前記レジスタバンク指定命令より後にある通常の命令にお いては、 明示的なレジス夕バンクの指定を必要とせずに、 前記オペランドが用 いるレジス夕に対して該レジス夕パンク指定命令に基づくレジス夕バンクの割 り当てが適用される制御方法が提供される。  In this control method, the register bank designation instruction is a register bank setting instruction, and a normal instruction subsequent to the register bank designation instruction does not require explicit designation of the register bank designation instruction. In addition, a control method is provided in which the assignment of the registry bank based on the register puncture designation instruction is applied to the registry used by the operand.
レジス夕バンク指定命令を有することで、 通常の命令にはバンク識別子を含 めずに、 短い命令長を保つことが可能となる。 レジス夕バンク指定命令もこの 命令長に合わせることで、 アーキテクチャ全体の最大命令長を短く保って多く のレジス夕を取り扱うことが可能となる。 By having a register bank designation instruction, it is possible to maintain a short instruction length without including a bank identifier in ordinary instructions. By matching the register length instruction to this instruction length, the maximum instruction length of the entire architecture can be kept short and many Will be able to handle the Regis evening.
本発明のプロセッサの制御方法は、 別の態様として、 判定条件によって後に ある命令を実行するかしないかの動作を制御する条件付実行切り換え修飾命令 を有する制御方法とすることができる。  As another mode, the control method of the processor of the present invention can be a control method having a conditional execution switching modifier instruction for controlling an operation of whether or not to execute a later instruction depending on a determination condition.
この条件付実行切り換え修飾命令とは、 コンデイショナルェグゼキューショ ンプリフィクスということもある。 この条件付実行切り替え修飾命令とは、 分 岐命令を伴わずに、 判定条件に応じてその後の命令を実行するかしないかを切 り換えることの出来る修飾命令 (プリフィクス) である。 この修飾命令を用い ると、 プログラム自体の分岐を削減することができ、 並列処理時の分岐命令に 伴うストールを回避できる効果がある。  This conditional execution switching modifier instruction may be called a conditional execution prefix. The conditional execution switching qualification instruction is a qualification instruction (prefix) that can switch whether or not to execute a subsequent instruction according to the judgment condition without a branch instruction. The use of this qualifying instruction can reduce the number of branches in the program itself, and has the effect of avoiding stalls caused by branch instructions during parallel processing.
また、 本発明のプロセッサの制御方法は、 レジス夕バンク指定命令と、 前記 条件付実行切り換え修飾命令とを用いる制御方法とすることができる。  Further, the control method of the processor of the present invention can be a control method using a register bank designation instruction and the conditional execution switching modification instruction.
コンディショナルェグゼキューシヨンプリフィクスと本発明のレジス夕バン ク指定命令を組み合わせて用いると、 ほとんどストールなく並列処理すること が出来るプログラムを記述することが出来るので、 命令長を抑えつつ、 処理速 度が速いプロセッサを実現することが出来る。  When the conditional execution prefix is used in combination with the register designation instruction of the present invention, it is possible to write a program that can be processed in parallel with almost no stall, so that the instruction speed can be reduced while suppressing the instruction length. However, a fast processor can be realized.
さらに、 本発明の制御方法でレジス夕バンク指定修飾命令や条件付実行切り 換え修飾命令は、 命令デコーダにより実行される命令を先読みするプリフイク スデコーダによってデコードされ、 該修飾命令に基づいて該プリフィクスデコ —ダが生成する命令デコーダ制御信号に応じて、 該命令デコーダのデコード動 作が変更されるものとすることが出来る。 各修飾命令はそれ自身のみでは命令 デコーダが命令として認識する一命令を構成するものではない。 先読みした修 飾命令がその修飾命令の直後の命令と組み合わされて一命令として命令の実行 ステップを行なえば、 命令の実行ステツプを増やさずに目的とする動作が可能 となる。 この動作は、 命令を先読みするプリフィクスデコーダを用いることで 適切に実行することが出来る。 なお、 本出願全体を通じて、 「同時」 という表現を用いているが、 これは、 コ ンピュー夕分野で通常用いられるクロックパルスによる時刻の単位ゃ数ク口ヅ クからなるステップにおいて実質的に同時刻といい得る範囲内で 2以上の事象 が起きたり重なったりしているという意味である。 ずれたタイミングで行なわ れても次のクロヅクパルスまでに対象となっている二つの事象が行われること、 あるステップ開始から終了までに対象となっている二つの事象が起きて終了す ること、 対象となっている事象同士の期間に重なりがあること、 などが含まれ る。 これらの意味で両事象が実質的に同時であると認められれば 「同時」 に該 当するものとする。 図面の簡単な説明 Furthermore, in the control method according to the present invention, the register instruction specifying the register bank and the instruction for conditional execution switching are decoded by a prefix decoder that prefetches the instruction executed by the instruction decoder, and the prefix decoupling is performed based on the instruction. In accordance with the instruction decoder control signal generated by the instruction decoder, the decoding operation of the instruction decoder can be changed. Each qualifying instruction by itself does not constitute an instruction that the instruction decoder recognizes as an instruction. If the modified instruction read ahead is combined with the instruction immediately following the qualifying instruction to execute the instruction execution step as one instruction, the intended operation can be performed without increasing the execution steps of the instruction. This operation can be performed properly by using a prefix decoder that prefetches instructions. Note that the expression “simultaneous” is used throughout the present application, but this is substantially the same in a step consisting of a unit of time by a clock pulse generally used in the computer field, and a step composed of several clocks. This means that two or more events have occurred or overlapped within the range that can be said. Even if it is performed at a shifted timing, the two events of interest are performed by the next clock pulse.The two events of interest occur and end between the start and end of a certain step. , And that there is an overlap in the periods of the events. In these senses, if both events are considered to be substantially simultaneous, they shall be considered "simultaneously." BRIEF DESCRIPTION OF THE FIGURES
図 1は、 本発明の実施の形態のプロセッサの概略を示す構成図である。  FIG. 1 is a configuration diagram schematically showing a processor according to an embodiment of the present invention.
図 2は、 本発明の実施の形態のバンク指定命令を含むアセンブラコードを示 す説明図である。 '  FIG. 2 is an explanatory diagram showing assembler code including a bank designation instruction according to the embodiment of the present invention. '
図 3は、 図 2のアセンブラコードによるバンク切り換えの様子を示す説明図 である。  FIG. 3 is an explanatory diagram showing how banks are switched by the assembler code of FIG.
図 4は、 本発明の実施の形態のバンク指定命令の実現例を表わす説明図であ る。  FIG. 4 is an explanatory diagram showing an example of realizing a bank designation instruction according to the embodiment of the present invention.
図 5は、 本発明の実施の形態によるプロセッサ構成例における命令フェッチ ステージの構成を示す機能プロヅクレベルの構成図である。  FIG. 5 is a functional block diagram showing the configuration of the instruction fetch stage in the example of the processor configuration according to the embodiment of the present invention.
図 6は、 本発明の実施の形態によるプロセッサ構成例における命令デコード ステージおよび命令実行ステージの構成を示す機能プロックレベルの構成図で ある。  FIG. 6 is a functional block level configuration diagram showing the configuration of an instruction decode stage and an instruction execution stage in a processor configuration example according to an embodiment of the present invention.
図 7は、 本発明の実施の形態によるプロセヅサ構成例におけるライ トバック ステージの構成を示す機能プロックレベルの構成図である。  FIG. 7 is a configuration diagram of a function block level showing a configuration of a write-back stage in a processor configuration example according to an embodiment of the present invention.
図 8は、 本発明の実施の形態によるプロセヅサ構成例におけるバンクスィヅ チ手段の構成を示す機能プロックレベルの構成図である。 発明を実施するための最良の形態 FIG. 8 shows a bank switch in a processor configuration example according to an embodiment of the present invention. FIG. 4 is a configuration diagram of a function block level showing a configuration of a switch unit. BEST MODE FOR CARRYING OUT THE INVENTION
[ァ一キテクチャの実施の形態]  [Embodiment of the architecture]
以下、 図面を参照して本発明の実施の形態を説明する。  Hereinafter, embodiments of the present invention will be described with reference to the drawings.
図 1に本発明のプロセッサの概略を示す。 演算器が使用するレジス夕は、 本 発明では、 例えばバンク 0からバンク n— 1までの n個のレジス夕バンクと呼 ばれる複数の単位にまとめられている。 このレジス夕バンクのいずれのバンク であるかを指定するには、 バンク識別子を用いる。 バンク識別子は適当なビッ ト数を有している数字であり、 例えば、 nを表現するのに十分なビット数を有 している。 プロセッサ内にある任意のレジス夕を特定するには、 バンク識別子 とレジス夕アドレスとを指定する。  FIG. 1 shows an outline of the processor of the present invention. In the present invention, the registers used by the arithmetic unit are grouped into a plurality of units called, for example, n register banks from bank 0 to bank n-1. The bank identifier is used to specify which of these Regis evening banks. The bank identifier is a number having an appropriate number of bits, for example, having a sufficient number of bits to represent n. To specify an arbitrary register in the processor, specify a bank identifier and a register address.
演算器は、 命令デコーダ (図示せず) によってデコードされた命令に基づい て演算を実行する。 この命令には、 大別して 2種類の命令が含まれている。 命令の第 1の種類は、 通常のプロセッサにおける命令と同様の命令である。 例えば、外部メモリからデ一夕をロードするロード命令(二一モニック: L D )、 加算を行なう加算 (A D D ) や減算 (S U B ) 等、 プロセッサの分野で周知の 命令が含まれる。 本明細書ではこの命令を 「通常の命令」 と呼ぶ。  The operation unit performs an operation based on the instruction decoded by an instruction decoder (not shown). This instruction roughly includes two types of instructions. The first type of instruction is an instruction similar to an instruction in a normal processor. For example, there are instructions well-known in the processor field, such as a load instruction for loading data from an external memory (a moniker: L D), an addition for performing an addition (A D D), and a subtraction (S U B). This instruction is referred to herein as a "normal instruction".
命令の第 2の種類は、 アクセスするレジスタバンクを切り換える為の命令で ある。 これらは、 本発明に特有の命令であり、 レジス夕バンク指定命令と呼ん でいる。 この命令によって、 それ以降の通常の命令に基づいて演算器がァクセ スするレジス夕バンクがいずれであるか、 を決定することができる。 例えば、 プロセッサのアーキテクチャがオペランドを 2つ用いるものである場合におい て、 第 1のオペランドと第 2のオペランドがいずれのレジス夕をアクセスする ものであるかを独立して指定することができる。 このレジス夕バンクを切り換 えるためのレジス夕バンク指定命令は、 特にその形式を問うものではない。 通 10832 The second type of instruction is an instruction for switching the register bank to be accessed. These are instructions unique to the present invention, and are called "registration bank designation instructions". With this instruction, it is possible to determine which register bank the arithmetic unit accesses based on the subsequent normal instruction. For example, when the architecture of the processor uses two operands, it is possible to independently specify which register accesses the first operand and the second operand. The format of the Registrar Bank designation instruction for switching the Registrar Bank is not particularly limited. Through 10832
18 常のストア一ドプログラム方式の命令として、 例えば、 明示的なバンク識別子 をオペランドとして有する命令 (バンク設定命令) や、 直後に後続する命令の オペランドが示すバンクを切り換えるプリフィクス (バンク設定修飾命令) と することもできる。 18 Normal stored-program instructions include, for example, an instruction that has an explicit bank identifier as an operand (bank setting instruction) and a prefix that switches the bank indicated by the operand of the immediately following instruction (bank setting modifier instruction). It can also be.
このバンク切り換えのためのアセンブラコ一ドにおける命令の例を図 2に示 す。 行 2 0 2は、 バンク設定命令の一つであり、 それ以降のプログラムで用い るバンクを指定するバンクセヅト命令 (二一モニック : B S ) である。 このバ ンクセヅト命令の第 1および第 2オペランドである B 0および B 1は、 それそ れバンク 0とバンク 1を表わす。 つまり、 行 2 0 2は、 以降のプログラムにお いて、第 1オペランド (デスティネーションオペランド)を「バンク 0」とし、 かつ、 第 2オペランド (ソースオペランド) を 「バンク 1」 に設定する命令で ある。 このように、 行 2 0 2に例示されるバンクセット命令は、 この二一モニ ヅク B Sに対応するォペコ一ドと、 上記オペランドによって構成される命令で ある。 このバンクセット命令を代表とするバンク設定命令は、 次にバンク設定 命令が明示的に指定されるまでのレジス夕バンクを割り当てる。 なお、 バンク 設定命令が明示的にプログラムに現れるまでの命令行においてどのようなレジ ス夕バンクの設定が行なわれるかは任意である。 バンクが不定であるとしてそ のような命令を受け付けないようにすること、 バンクに何らかの既定値を割り 当てるたり (例えば全てバンク 0とする)、全てのバンクに対して並列して処理 することや、 デスティネーションオペランドとソースオペランドをそれぞれ別 に割り当てること、 などが可能である。  Figure 2 shows an example of an instruction in this assembler code for bank switching. Line 202 is one of bank setting instructions, and is a bank set instruction (21st moniker: B S) for specifying a bank to be used in a program thereafter. The first and second operands B0 and B1 of this bank set instruction represent Bank 0 and Bank 1, respectively. In other words, line 202 is an instruction that sets the first operand (destination operand) to “bank 0” and sets the second operand (source operand) to “bank 1” in the subsequent program. . As described above, the bank set instruction exemplified in the row 202 is an instruction constituted by the operation code corresponding to the two-monitor BS and the operand. The bank setting instruction represented by the bank setting instruction allocates a register bank until the next bank setting instruction is explicitly specified. In addition, what kind of register bank is set in the instruction line until the bank setting instruction explicitly appears in the program is arbitrary. The bank may not accept such an instruction because the bank is indefinite, assign a certain default value to the bank (for example, all banks are set to 0), perform processing on all the banks in parallel, , And the destination and source operands can be assigned separately.
図 2の行 2 0 4は、 直後に後続する命令に対してのみ有効なバンク設定プリ フィクス (ニーモニック : B P ) である。 この例に記載のバンク設定プリフィ クスは、 オペランドとしてではなく、 オペコードそれ自体にバンク識別子を内 包している。 バンク設定プリフィクス 「B P 1 0」 は、 その直後に後続する命 令 (行 2 0 6 ) にのみ影響し、 デスティネーションオペランドをバンク 1に、 ソースオペランドをバンク 0にする命令である。 つまり、 i , jをバンク識別 子を表わす添え字とすると、 「B P i j」は、後続する命令のデステイネ一ショ ンオペランドをパンク iに、 ソースオペランドをバンク jに設定する。 もちろ ん、 前述のバンクセット命令のように、 オペコードと、 バンク識別子を表わす オペランドとを用いるようなものであって直後の命令行のみに影響するもので も良い。 このバンク設定プリフィクスは、 直後の命令にしか影響しないため、 前述のバンク設定命令で指定されたバンクの割り当てを一時的にのみ上書きす る。 そして、 ノ ンク設定プリフィクスが影響しなくなる命令行 (行 2◦ 8 ) で は、 バンク指定命令の指定が再び有効となる。 Line 204 in FIG. 2 is a bank setting prefix (mnemonic: BP) that is valid only for the immediately following instruction. The bank setting prefix in this example includes the bank identifier in the opcode itself, not as an operand. The bank setting prefix "BP10" affects only the instruction immediately following it (line 206) and places the destination operand in bank 1, This instruction sets the source operand to bank 0. That is, assuming that i and j are subscripts representing the bank identifier, “BP ij” sets the destination operand of the following instruction to punk i and the source operand to bank j. Of course, like the bank set instruction described above, an operation code and an operand indicating a bank identifier may be used, and may affect only the immediately following instruction line. Since this bank setting prefix affects only the immediately following instruction, it temporarily only overwrites the bank assignment specified by the bank setting instruction described above. In the instruction line where the link setting prefix has no effect (line 2◦8), the specification of the bank specification instruction becomes valid again.
なお、 バンク設定命令においては、 その時点でのバンクの設定を保持してい るバンクセレクトレジス夕 (図示せず) というレジスタを用意しておいて、 B 0および B 1をそれらのレジスタとすることができる。 そしてバンクセレクト レジス夕の値は、 明示的な命令によってプログラムの指定により参照すること が可能である。 バクセレクトレジス夕の内容は、 例えばサブルーチン構成のプ ログラムにおいては、 グロ一バル変数としてサブルーチン間で共有されていて も、 ローカル変数としてサブルーチンごとに書き換えられても良い。 ローカル 変数である場合には、 適当なデ一夕転送命令によって、 メモリバンクに構成さ れたいずれかの汎用レジス夕や外部メモリ等に書き出して保持されることがで きる。 本発明のアーキテクチャにおいては、 この転送を実現する命令を含んで いることができる。  For the bank setting instruction, prepare a register called the bank select register (not shown) that holds the current bank setting, and use B0 and B1 as those registers. Can be. The value of the bank select register can be referred to by specifying the program with an explicit instruction. The contents of the backselect registry may be shared as global variables between subroutines, for example, in a program having a subroutine configuration, or may be rewritten as a local variable for each subroutine. If it is a local variable, it can be written out and held in any general-purpose register or external memory configured in the memory bank by an appropriate data transfer instruction. In the architecture of the present invention, instructions for realizing this transfer can be included.
図 3に、 図 2に示したプログラムにおけるレジス夕バンク指定命令の動作を 模式的に示す。 行 2 0 6の命令 (AD D ) は、 直前の行 2 0 4におけるバンク 設定プリフィクス; B P 1 0の影響を受けるため、 ソースオペランドとしてバン ク 1にある R 1を用い、 デスティネーションオペランドとしてバンク 0にある R 2 1を用いて、 R 1と R 2 1の和の結果を R 2 1に書き戻す。 行 2 0 8の命 令 (S U B ) は、 行 2 0 2におけるバンク設定命令で指定されているように、 ソースオペランドとしてバンク 0にある R 2を用い、 デスティネーションオペ ランドとしてバンク 1にある R 1 9を用いて、 11 2から1 1 9を減算してその 結果を R 1 9に書き戻す。 行 2 0 8には、 行 2 0 4のバンク設定プリフィクス は影響しない。 なお、 図 3ではソースオペランドを示す 「ソースレジス夕一バ ンク」 と 「デスティネーションレジスターバンク」 とを理解のために図の左右 に分けて記載しているが、 同じレジス夕識別子のレジス夕バンクは、 同じレジ ス夕バンクを指し示しているものとすることができる。 FIG. 3 schematically shows the operation of the register bank designation instruction in the program shown in FIG. The instruction in line 206 (ADD) is affected by the bank setting prefix BP10 in the previous line 204; therefore, R1 in bank 1 is used as the source operand, and the bank is used as the destination operand. Using R 21 in 0, write the result of the sum of R 1 and R 21 back to R 21. The instruction in line 208 (SUB) is, as specified by the bank setting instruction in line 202, Using R 2 in bank 0 as the source operand and R 19 in bank 1 as the destination operand, subtract 1 19 from 112 and write the result back to R 19. Row 208 is not affected by the bank setting prefix of row 204. Note that in FIG. 3, the “source register bank” and “destination register bank” indicating the source operand are separately shown on the left and right sides of the figure for understanding, but the register bank having the same register identifier is shown. May point to the same registry bank.
以上のように、 バンク指定命令を用いて、 一連の命令のシーケンスから構成 される任意のプログラムにおいて、 少ない命令数でソースオペランドゃデステ イネ一シヨンオペランドのポイントするバンクを切り換えることが可能となる。 また、 直後の命令にのみ有効なバンク設定プリフィクス等を用いることで、 柔 軟にバンクを切り換えることが可能となる。  As described above, it is possible to switch the bank pointed by the source operand to the destination operand with a small number of instructions in an arbitrary program composed of a sequence of instructions using the bank designation instruction. In addition, by using a bank setting prefix that is valid only for the immediately following instruction, it is possible to switch banks flexibly.
また、 オペランドが 2つの 2オペランド命令である場合を例としているが、 オペランドが 1つのみの場合にはデスティネーションオペランドのみを利用す ることができる。 また、 オペランドを 3つ用いる 3オペランドのァ一キテクチ ャであっても同様にバンク設定命令やバンク設定プリフィクスを定義すること が可能である。  Also, the case where the operands are two 2-operand instructions is taken as an example, but when there is only one operand, only the destination operand can be used. In addition, a bank setting instruction and a bank setting prefix can be similarly defined even in a three-operand architecture using three operands.
このようにして切り換えられるバンクは、 図 1における演算器からはァクセ スするバンクを切り換えることにより、 また、 外部メモリとはメモリアクセス 手段であるデータ転送装置 1 3、 内部バス 1 4、 外部バス 1 5によってァクセ スすることができる。 デ一夕転送装置 1 3の動作は、 命令に基づく制御信号に よって変更することができる。  The banks that can be switched in this way can be accessed from the arithmetic unit shown in Fig. 1 by switching the banks to be accessed. The external memory is a data transfer device 13 that is a memory access means, an internal bus 14, and an external bus 1. 5 can be accessed. The operation of the data transfer device 13 can be changed by a control signal based on a command.
次に、 本発明の命令長について説明する。 以下、 1 6ビットを特に 1ワード と呼ぶことがある。  Next, the instruction length of the present invention will be described. Hereinafter, the 16 bits may be particularly referred to as one word.
図 4に本発明の命令構成をビット配列にして示す。 図 4の通常の命令 4 0 2 とは、 例えば、 図 2に説明した加算 (AD D ) や減算 (S U B ) 等の命令であ り、 先に第 1の種類の命令として説明した通常の命令であり、 図 2における行 2 0 8に対応している。 例えば、 この命令 4 1 2は、 8ビットのオペコードと 各 4ビヅトの二つのオペランドによって構成され、 1 6ビヅトの命令長を有し ている。 FIG. 4 shows the instruction configuration of the present invention in a bit array. The normal instruction 402 in FIG. 4 is, for example, an instruction such as addition (ADD) or subtraction (SUB) described in FIG. This is a normal instruction described earlier as the first type of instruction, and corresponds to row 208 in FIG. For example, the instruction 412 is composed of an 8-bit operation code and two operands of four bits each, and has an instruction length of 16 bits.
また、 図 4のバンク設定修飾つき命令 4 0 4は、 バンク設定修飾命令である パンク設定プリフィクス 4 1 4と、それに後続する命令 4 1 5から構成される。 命令 4 1 5は通常の命令である。 図 2においては、 バンク設定修飾つき命令 4 0 4は行 2 0 4と行 2 0 6の 2行で表現されている。 命令長は、 バンク設定プ リフィクス 4 1 4、 命令 4 1 5ともに 1 6ビットであり、 バンク設定修飾つき 命令 4 0 4は全体としては 3 2ビット (2ワード) である。 このバンク設定修 飾つき命令 4 0 4に基づいて、 バンク指定命令が命令デコーダで発行される。 また、 図 4のバンク設定命令 4 0 6とは、 例えば 1 6ビヅトのバンク設定命 令 4 1 6であり、 図 2における行 2 0 2に対応する。 例えば、 通常の命令と同 様に、 4ビットのバンク設定命令オペコードと、 各 6ビットのバンク識別子ォ ペランド 2つを含む。 バンク設定命令 4 0 6に基づいて、 バンク指定命令が命 令デコーダで発行される。  The instruction with a bank setting modifier 404 in FIG. 4 includes a puncture setting prefix 414 as a bank setting modifier instruction and an instruction 415 following the puncture setting prefix. Instructions 4 15 are normal instructions. In FIG. 2, the instruction with a bank setting modification 404 is represented by two lines, a row 204 and a row 206. The instruction length is 16 bits for both the bank setting prefix 414 and the instruction 415. The instruction 404 with the bank setting modification is 32 bits (2 words) as a whole. Based on this instruction with bank setting modification 404, a bank designation instruction is issued by the instruction decoder. The bank setting instruction 406 in FIG. 4 is, for example, a 16-bit bank setting instruction 416, and corresponds to the row 202 in FIG. For example, like a normal instruction, it contains a 4-bit bank setting instruction opcode and two 6-bit bank identifier operands. Based on the bank setting instruction 406, a bank designation instruction is issued by the instruction decoder.
以上に示したようなバンク設定命令やバンク設定修飾命令の命令長の設定は、 バンク指定命令が必要でない演算が大部分を占める場合に特に好適である。 つ まり、 バンク指定命令が発行されるときは命令長を 2ワード等に長くして、 通 常は 1ワード ( 1 6ビット) 等の短い命令を実行することにすれば、 レジス夕 バンクの切り換えを要する場合以外の命令長を短くできる。 これにより、 プロ グラムコ一ドの短縮や、プロセッサの実装における面積の縮小が可能としつつ、 多数のレジス夕が扱える。  The setting of the instruction length of the bank setting instruction and the bank setting modification instruction as described above is particularly suitable when the majority of the operations that do not require the bank specification instruction. In other words, when a bank designation instruction is issued, the instruction length is increased to 2 words, etc., and usually a short instruction such as 1 word (16 bits) is executed. The instruction length can be shortened in cases other than the case where As a result, it is possible to handle a large number of registers while reducing the program code and the area for implementing the processor.
なお、 バンク設定命令が明示的に現れるまでに何らかの命令が実行される場 合にどのようなバンクの割り当てを行なうかは、 特に限定されない。 バンクは 不定であるとしてそのような命令を受け付けないようにすることや、 既定のバ ンクの割り当てを用いて例えば全てバンク 0を割り当てること、 全てのバンク に対して並列して処理すること、 デスティネーションオペランドとソースオペ ランドをそれそれ別々に割り当てること、 などが可能である。 It should be noted that there is no particular limitation on what kind of bank allocation should be performed when an instruction is executed before a bank setting instruction explicitly appears. Banks may not accept such orders as indeterminate, nor may default banks For example, it is possible to assign all the banks 0 using the link assignment, to process all the banks in parallel, to assign the destination operand and the source operand separately.
本発明は、 以上のような 1ワードと 2ヮ一ドの命令のみで構成されるものに 限られない。 例えば、 最大命令長を 3ワードとすることができる。 この場合、 第 2ワードがバンク設定プリフィクス、 第 3ワードが通常の命令とすることが できるが、 第 1ワードは他のプリフィクスとすることが出来る。 このプリフィ クスとしては、 例えばコンディショナルエダゼキューシヨンプリフィクスとす ることができる。このコンデイショナルェグゼキュ一シヨンプリフィクスとは、 分岐命令を伴わずに、 判定条件に応じてその後の命令を実行するかしないかを 切り換えることの出来るプリフィクスである。 このプリフィクスは、 これのみ で、 分岐命令を削減することができ、 並列処理時の分岐命令に伴うストールを . 回避できる効果がある。 また、 コンデイショナルェグゼキューシヨンプリフィ クスと本発明のレジス夕バンク指定命令を組み合わせて用いると、 ほとんどス トールなく並列処理することが出来るプログラムを記述することが出来るので、 命令長を抑えつつ、処理速度が速いプ口セッサを実現することが出来る。なお、 最大命令長が 2ワードや 3ワードであるときに最終ワードがレジス夕設定プリ フィクスであると、 一般不当命令であると認識されて演算処理されない。  The present invention is not limited to the above one-word and two-word instructions. For example, the maximum instruction length can be three words. In this case, the second word can be a bank setting prefix and the third word can be a normal instruction, but the first word can be another prefix. The prefix can be, for example, a conditional ediction prefix. The conditional execution prefix is a prefix that does not involve a branch instruction and can switch whether or not to execute a subsequent instruction according to a determination condition. This prefix alone has the effect of reducing branch instructions and avoiding stalls caused by branch instructions during parallel processing. When the conditional execution prefix is used in combination with the register designation command of the present invention, it is possible to write a program that can be processed in parallel with almost no stalls. In addition, it is possible to realize a port processor with a high processing speed. Note that if the maximum instruction length is 2 or 3 words and the last word is a register setting prefix, it is recognized as a general illegal instruction and will not be processed.
以上のように、 本発明により、 プログラム全体の命令長を短く保ちつつ、 レ ジス夕指定命令にかかわる命令にのみより長い命令長を割り当てて、 多くのレ ジス夕を扱うことできる。  As described above, according to the present invention, while keeping the instruction length of the entire program short, a long instruction length can be assigned only to the instruction related to the register designation instruction to handle many registers.
[プロセッサ構成例]  [Processor configuration example]
図 5〜8に、 本発明のアーキテクチャを実装するプロセッサの構成例 1 0 1 を、 機能ブロックレベルの構成図を各部分ごとに示す。 図 5は、 命令フェッチ ステージ、 図 6は命令デコードステージと命令実行ステージ、 図 7はライ トバ ヅクステージとその中に含まれるメモリアクセスステージをそれそれ表わして いる。 5 to 8 show configuration examples 101 of a processor that implements the architecture of the present invention. FIG. 5 shows the instruction fetch stage, FIG. 6 shows the instruction decode stage and the instruction execution stage, and FIG. 7 shows the write back stage and the memory access stage included therein. I have.
図 5の命令フェッチステージは、 命令記憶手段 (図示せず) から命令フエヅ チブバヅファ 5 4を含み、 命令をロードする命令フェッチユニット 5 2と、 進 行するプログラムのカウントをしているプログラムカウン夕 5 8の値に基づい て、 命令記憶手段をアクセスするアドレスを生成するフヱツチアドレスュニヅ ト 5 6とからなる。  The instruction fetch stage of FIG. 5 includes an instruction fetch buffer 54 from an instruction storage means (not shown), an instruction fetch unit 52 for loading instructions, and a program counter 5 for counting the number of programs to be executed. And a fetch address unit 56 for generating an address for accessing the instruction storage means based on the value of 8.
図 6の命令デコードステージは、 命令フェッチプバッファ 5 4としてロード される命令を制御信号であるマイクロコード (マイクロ命令) へとデコードす るメインデコーダ 6 2と、 そのメインデコーダ 6 2に対してプリフィクスをデ コードして出力するプリフィクスデコーダ 6 0とを含むデコーダを有する。 本 構成例では、 1 6ビットの命令長を有する各命令が 9 6ビット単位でデコーダ に送られる。 メインデコーダがある命令をデコードしている時に、 その命令の 後に続く命令はプリフィクスデコーダ 6 0でデコードされる。 つまり、 プリフ イクスデコーダ 6 0は、 事前に命令の先読みを行なうことにより、 プリフイク スデコーダ 6 0は命令がプリフィクスを含むものかどうかを検出する。 このプ リフィクスデコーダ 6 0がプリフィクスを検出すると、 そのプリフィクスの内 容に応じて、メインデコーダ 6 2に制御信号を出力する。この制御信号により、 メインデコーダ 6 0は、 当該プリフィクスの後の命令についてのデコードの動 作を切り換える。 このように、 プリフィクスデコーダとメインデコーダは、 協 働してプリフィクスの動作を実現する。 そして、 このプリフィクスが本発明の バンク設定プリフィクスであれば、 メインデコーダ 6 2は直後にデコ一ドする 命令に含まれるオペランドに用いられるレジス夕のバンクを切り換える。 その 結果、 レジス夕ファイルのバンク割り当てを保持しているレジス夕 (バンクセ レクトレジス夕 6 6、 図 8 ) が変更される。 このレジス夕が本発明のバンクス ィツチ手段となる。このように、バンク設定プリフィクスを用いることにより、 後続する命令のオペランドのボイントするレジス夕バンクが切り換えられる。 つまり、 プリフィクスデコーダとメインデコーダは、 バンク指定命令となるマ ィク口命令を生成することができる。 The instruction decode stage in FIG. 6 includes a main decoder 62 that decodes an instruction loaded as an instruction fetch buffer 54 into microcode (microinstruction) that is a control signal, and a prefix for the main decoder 62. And a prefix decoder 60 that decodes and outputs the same. In this configuration example, each instruction having an instruction length of 16 bits is sent to the decoder in 96-bit units. When the main decoder is decoding an instruction, the instruction following the instruction is decoded by the prefix decoder 60. That is, the prefix decoder 60 pre-reads the instruction in advance, so that the prefix decoder 60 detects whether the instruction includes the prefix. When the prefix decoder 60 detects the prefix, it outputs a control signal to the main decoder 62 according to the content of the prefix. With this control signal, the main decoder 60 switches the decoding operation for the instruction after the prefix. As described above, the prefix decoder and the main decoder cooperate to implement the prefix operation. If the prefix is the bank setting prefix of the present invention, the main decoder 62 switches the register bank used for the operand included in the instruction to be decoded immediately thereafter. As a result, the registry that holds the bank allocation of the registry file (bank select registry 66, Fig. 8) is changed. This register is the bank switch means of the present invention. As described above, by using the bank setting prefix, the register bank to which the operand of the following instruction is pointed is switched. In other words, the prefix decoder and the main decoder can generate a MIC instruction which becomes a bank designation instruction.
バンク設定プリフィクスではなくバンクセヅト命令等のバンク設定命令によ る場合には、 メインデコーダでそのバンク設定命令がデコードされて、 バンク セレクトレジス夕を書き換えて、 レジス夕ファイルのバンク割り当てを変更す る。 これにより、 以後の命令におけるデスティネーションオペランドとソース オペランドが指し示すレジス夕バンクが切り換わる。  When a bank setting instruction such as a bank set instruction is used instead of the bank setting prefix, the main decoder decodes the bank setting instruction, rewrites the bank select register, and changes the bank assignment of the register file. As a result, the register bank indicated by the destination operand and the source operand in the subsequent instruction is switched.
命令デコードステージにはさらに、 本発明の複数のレジス夕バンクを含むレ ジス夕ファイル 64が含まれている。 本実施の形態では、 レジス夕バンクは 4 個のバンクに整理されているデ一夕処理用レジス夕として記載されている。 各 レジス夕バンクは、 通常の命令において 6ビットのフィールドで指定可能な 6 4ビヅト長を有するデ一夕レジス夕を 16本備えている。  The instruction decode stage further includes a register file 64 containing a plurality of register banks of the present invention. In the present embodiment, the registry evening bank is described as a nighttime processing registry evening arranged in four banks. Each register bank has 16 data register banks each having a length of 64 bits that can be specified in a 6-bit field in a normal instruction.
命令デコードステージには、 前述のように、 バンクセレクトレジス夕 66が 含まれている (図 8)。 このバンクセレクトレジス夕は、例えばバンクセヅト命 令による現在のバンク割り当てのステータスを保持している。  The instruction decode stage includes the bank select register 66 as described above (Fig. 8). The bank select register holds the status of the current bank allocation by, for example, a bank set instruction.
命令実行ステージには、 命令デコ一ドステージでデコ一ドされた命令を具体 的に実行するマイクロコード (マイクロ命令) 制御装置 610と、 演算論理ュ ニット (ALU) と、 積和演算ユニット (MAU) と、 デ一夕プロセスュニヅ ト (DPU) とを含んでなる演算器 68が含まれている。 演算器 68は、 マイ クロ命令に基づいて、 イミディエイ ト値、 いずれかのレジス夕バンク内のレジ ス夕値等に指定された演算処理を実行して、ライ トバックステージに受け渡す。 命令デコードステージと命令実行ステージには、 さらに、 本発明の特徴的な 要素が含まれている。 レジス夕ファイルからの出力は信号 601の一部である ソースレジス夕 SRC 0と SRC 1、 デスティネーションレジスタ DST 0と DS T 1が用いられる。 このうち、 レジス夕 SRC0および DST 0に接続さ れたレジス夕ファイルの各ポートは、 通常のプロセッサにおいて用いられるも のであり、レジス夕 SRC 0および D ST 0を介して演算器と接続されている。 一方、 レジス夕 SRC 1および D S T 1に接続されたレジス夕ファイルのポ一 トは本発明の特徴的なポートであり、 レジス夕 SRC 1および D ST 1を介し て外部メモリ (図示せず) への出力となるストア命令実行装置 620に接続さ れている。 本構成例では SRC 1および DST 1の二つのレジス夕を記載して いるが、 本発明は、 このようなレジス夕を少なくとも一つ有していれば良い。 このストア命令実行装置 620は、 後述するメモリ出力装置 74 (図 7) と協 働して本発明のメモリアクセス装置の一部をなすものである。 これにより、 レ ジス夕バンク構成を有するレジス夕ファイルの一部のレジスタバンクに対して レジス夕 SRC 0および D ST 0を介して演算器がアクセスし、 同時に、 他の —部のレジス夕バンクに対しては、 レジス夕 SR C 1および D S T 1を介して 外部メモリがアクセスすることができる。 なお、 以上の記載ではマイクロ命令 を用いるプロセヅサ構成を説明したが、 ハードワイアード構成としても実現可 能である。 The instruction execution stage includes a microcode (microinstruction) control unit 610 that specifically executes the instruction decoded in the instruction decode stage, an arithmetic logic unit (ALU), and a multiply-accumulate operation unit (MAU). ) And a data processing unit (DPU). Arithmetic unit 68 executes an arithmetic process specified for the immediate value, the register evening value in any of the register evening banks, etc., based on the micro instruction, and transfers the result to the write-back stage. The instruction decode stage and the instruction execution stage further include the characteristic elements of the present invention. The output from the register file is the source register SRC 0 and SRC 1 and the destination registers DST 0 and DST 1 which are part of the signal 601. Of these ports, the ports of the registry file connected to the registers SRC0 and DST0 are used by ordinary processors. It is connected to the computing unit via the registers SRC0 and DST0. On the other hand, the port of the registry file connected to the registry SRC 1 and DST 1 is a characteristic port of the present invention, and is connected to an external memory (not shown) via the registry SRC 1 and DST 1. Is connected to the store instruction execution device 620 which outputs the data. In the present configuration example, two registrations of SRC 1 and DST 1 are described, but the present invention only needs to have at least one such registration. The store instruction execution device 620 forms a part of the memory access device of the present invention in cooperation with a memory output device 74 (FIG. 7) described later. As a result, the arithmetic unit accesses some register banks of the register file having the register bank configuration via the register SRC0 and DST0, and at the same time, accesses the register banks of the other sections. On the other hand, external memory can be accessed via the registers SR C1 and DST 1. In the above description, the processor configuration using the microinstruction has been described. However, a hardwired configuration can also be realized.
図 7のライ トバックステージは、 演算器 68の出力をレジス夕ファイルへと ライ トバックするライ トバック装置 72や、 演算器 68の出力をデ一夕として 外部メモリ (図示せず) に書き出す 3状態ドライバーを含むメモリ出力装置 7 4、 当該外部メモリ内からデ一夕を読み出してレジス夕ファイル 64にロード するメモリ入力装置 76を有している。 この時、 バンクが異なるので、 メモリ 入力装置 76は、 ライ トバックステージと並行してレジス夕ファイル 64にデ —夕を書き込むことが出来る。'  The write-back stage shown in Fig. 7 has a write-back device 72 that writes the output of the arithmetic unit 68 back to the registry file, and writes the output of the arithmetic unit 68 to an external memory (not shown) as data. It has a memory output device 74 including a driver, and a memory input device 76 for reading data from the external memory and loading it into the registry file 64. At this time, since the banks are different, the memory input device 76 can write data to the register file 64 in parallel with the write-back stage. '
図 8に、 図 5〜7に記載されていないが本発明のプロセッサで用いられるバ ンクスィッチ手段の構成例を示す。 本構成例のバンクスイッチ手段は、 バンク セレクトレジス夕 66と、 SSR (システムステータスレジス夕) 82中に含 まれている、 ソースオペランドのレジス夕に割り当てられるレジス夕パンクを 保持するレジス夕 SRCB (84) と、 デスティネーションオペランドのレジ ス夕に割り当てられるレジス夕バンクを保持するレジス夕 DSTB (86) と から構成されている。 バンクセレクトレジスタ 66は、 命令デコードステージ におけるソースオペランドとデスティネーションオペランドのそれそれのレジ ス夕に割り当てられるレジス夕バンクを保持するレジス夕 I D. SRCB (8 4a) と ID. DSTB (86 a) からなる。 FIG. 8 shows an example of the configuration of the bank switch means not shown in FIGS. 5 to 7 but used in the processor of the present invention. The bank switch means in this configuration example includes a bank select register 66 and a register SRCB (84) which holds the register puncture assigned to the source operand register included in the SSR (system status register) 82. ) And the destination operand register And a Registrar DSTB (86) that holds the Registrar Bank assigned to the Scanner. The bank select register 66 is a register that holds the registers that are assigned to the source and destination operands in the instruction decode stage. ID.SRCB (84a) and ID.DSTB (86a) Consists of
まず、 バンク指定命令がバンク設定命令である場合についてこれらのバンク スィツチ手段の動作について説明する。 メインデコーダ 62からの直接書き換 えられるレジス夕 ID. SRCB (84 a) と ID. DSTB (86 a) は、 命令実行ステージを経ることなく書き換えられる。 このため、 これらは最新の レジス夕バンクを保持しており、 レジスタ , リード時に使用される。 同じレジ ス夕バンクの割り当ては、 制御レジス夕のレジス夕ファイル中の S SR 82の 中にある SRCB (84) と DSTB (86) にもその後に書き込まれる。 こ のように動作させると、 命令デコ一ドステージの終了時には既にその命令に含 まれるレジス夕バンクの割り当てが反映されるため、 例えば 1クロックといつ た短時間でレジス夕バンクの割り当てが可能となり、 直後の命令についてもこ のレジス夕バンクの割り当てが有効となり、 レジス夕ファイル 64にあるどの レジス夕パンクのレジス夕にアクセスするかを、 ソースオペランド、 デスティ ネ一シヨンオペランドごとに定めることができる。 また、 ライ トバックステ一 ジの終了とともにレジス夕ファイル中の S SR82にもこれが書き込まれるの で、 システムステータスとしてのレジス夕バンクの割り当ての保持が可能とな る。  First, the operation of these bank switch means when the bank designation instruction is a bank setting instruction will be described. The register ID.SRCB (84a) and ID.DSTB (86a) that can be directly rewritten from the main decoder 62 can be rewritten without going through the instruction execution stage. Therefore, they hold the latest register bank and are used for register and read. The same registry bank assignments are subsequently written to SRCB (84) and DSTB (86) in SSR 82 in the control registry file. With this operation, at the end of the instruction decode stage, the assignment of the register bank included in the instruction is already reflected, so the register bank can be allocated in a short time, for example, one clock. This register assignment is also valid for the immediately following instruction, and it is possible to determine which registry evening punk register in the registry evening file 64 to access for each source operand and destination operand. . This is also written to SSR82 in the registry file at the end of the write-back stage, so that the registry bank allocation as the system status can be retained.
次に、 バンク指定命令がバンク設定修飾命令であり、 直後の通常の命令と組 み合わせて一命令となる場合について説明する。 この場合には、 その直後の命 令にしかバンク設定修飾命令の作用が及ばないので、 S SR 82'にレジスタバ ンクの一時的な割り当てを書き込む必要が無い。 そこで、 命令デコードステ一 ジでバンクセレクトレジス夕 66を書き換えるが、 その書き込まれた内容は命 2002/010832 Next, a case will be described in which the bank specification instruction is a bank setting modification instruction and is combined with the immediately following ordinary instruction to form one instruction. In this case, it is not necessary to write the temporary assignment of the register bank to the SSR 82 'because the bank setting modification instruction only affects the instruction immediately following it. Therefore, the bank select register 66 is rewritten in the instruction decode stage. 2002/010832
27 令実行ステージ、 ライ トバックステージと伝えられることは無い。 このように して、 バンク設定修飾命令の直後にある通常の命令にのみ有効な一時的なバン クの割り当てが実現する。 There is no mention of the 27 command execution stage or the writeback stage. In this way, a temporary bank assignment that is valid only for the normal instruction immediately after the bank setting modification instruction is realized.
以上のようなプロセッサの構成によって、 本発明のレジス夕バンク構成され たレジス夕バンクを用いることができる。 つまり、 レジス夕バンク設定命令に よるレジス夕切り換え動作や、 レジス夕バンク設定プリフィクスにより後続命 令のオペランドボイント先のレジスタを切り換える動作を実装し得るプロセヅ ザが、 具体的なハードウェアとして提供される。 また、 演算器の演算中であつ ても外部メモリにアクセスすることができ、 メモリのレイテンシ一に起因する 処理の停滞を防止するこどができる。  With the configuration of the processor as described above, it is possible to use the registry bank configured as the registry bank of the present invention. In other words, a processor capable of implementing a register evening switch operation by a register evening bank setting instruction and an operation of switching an operand point destination register of a subsequent instruction by a register evening bank setting prefix is provided as specific hardware. . In addition, the external memory can be accessed even during the arithmetic operation of the arithmetic unit, and the stagnation of the processing due to the latency of the memory can be prevented.
なお、 図には示していないが、 メモリ出力装置 7 4やメモリ入力装置 7 6に は、 周知のキヤヅシュメモリを用いて、 外部メモリに起因するレイテンシ一を 削減することができる。 図 1〜図 7を用いて説明した単体のプロセッサを複数用いて、 マルチプロセ ッサ構成を実現することができる。 この際、 協働させる個々のプロセッサは命 令記憶手段に接続されている。 この命令記憶手段はそれそれのマルチプロセッ サを協働させる命令を記憶している。 各プロセッサは、 個々のプロセッサの持 つプログラムカウン夕に応じて、 フェツチステージでそれそれのプロセッサ自 身が必要とする命令のみをフェッチする。 この各プロセッサの命令には、 本発 明の単体のプロセヅサで用いられるのと同様のレジス夕バンク設定命令や、 レ ジス夕バンク ί多飾命令とすることができる。  Although not shown in the figure, a known cache memory can be used for the memory output device 74 and the memory input device 76 to reduce the latency caused by the external memory. A multi-processor configuration can be realized using a plurality of single processors described with reference to FIGS. At this time, the individual processors to be cooperated are connected to the instruction storage means. The instruction storage means stores instructions for cooperating the respective multiprocessors. Each processor fetches only the instructions required by each processor at the fetch stage according to the program count of each processor. The instructions of each processor may be the same as those used in the single processor of the present invention, such as a register bank setting instruction or a register bank bank multi-decorative instruction.
また、 外部メモリは、 いくつかのプロセッサからアクセスされるものでも良 い。 すなわち、 外部メモリを共有メモリシステムとして構成し、 外部メモリ中 のあるデ一夕領域を複数のプロセヅサで共有してプロセヅサ間でレジス夕を共 有することができる。 この構成では、 レイテンシ一が大きい外部メモリにァク セスするため、 例えば、 各プロセッサのレジス夕うち他のプロセッサと値を共 有するレジス夕 (以下 「共有レジス夕」 という) と、 各プロセッサのみで用い るレジス夕とを別々のレジス夕バンクに割り当てることができる。 各プロセヅ サは、 例えば、 共有レジス夕に対する演算をするときのみ、 その共有レジス夕 を含むレジス夕バンクをデスティネーションオペランドまたはソースオペラン ドとしてアクセスし、他の演算ではそれ以外のレジス夕バンクにアクセスする。 そして、共有レジス夕が書き換えられたときのみ、共有メモリにアクセスする。 このようにマルチプロセッサを構成する各プロセヅサが動作すると、 各プロセ ヅサで共有すべきレジス夕の書き換え結果のみが、 レイテンシ一の大きな共有 メモリを介してアクセスされる。そして、その共有メモリへのアクセスの間も、 各プロセッサの演算器は、 共有レジス夕を扱わない命令を実行できる。 このよ うに、 本発明における複数のプロセッサからなるマルチプロセヅサシステムで は、 データのコヒ一レンシ一を保証しつつ、 各プロセッサにおける演算が外部 メモリアクセスによるレイテンシ一の影響を受けにくいマルチプロセッサシス テムが実現する。 産業上の利用の可能性 Also, the external memory may be accessed by several processors. In other words, the external memory can be configured as a shared memory system, and a certain data area in the external memory can be shared by a plurality of processors so that the processors can share a register. In this configuration, the external memory with high latency For example, the registry evening of each processor is assigned to a separate registry evening bank, a registry evening sharing values with other processors (hereinafter referred to as a “shared registry evening”) and a registry evening used only by each processor. be able to. For example, each processor accesses the register bank including the shared register as a destination operand or a source operand only when performing an operation on the shared register, and accesses the other register banks in other operations, for example. I do. Then, the shared memory is accessed only when the shared registry is rewritten. When the processors constituting the multiprocessor operate as described above, only the rewriting result of the register to be shared by the processors is accessed via the shared memory having a large latency. Then, even during the access to the shared memory, the arithmetic unit of each processor can execute an instruction that does not handle the shared register. As described above, in the multiprocessor system according to the present invention including a plurality of processors, while ensuring data coherency, the multiprocessor system in which operations in each processor are not easily affected by latency due to external memory access. System is realized. Industrial potential
本発明のプロセッサ構成によって、 命令長を短く保ったまま、 多数のレジス 夕を用いることができる。 また、 メモリのレイテンシ一に起因する処理の停滞 を防止することができる。  With the processor configuration of the present invention, many registers can be used while keeping the instruction length short. In addition, it is possible to prevent stagnation of processing due to memory latency.
本発明における複数のプロセヅサからなるマルチプロセッサシステムでは、 データのコヒーレンシ一を保証しつつ、 各プロセヅサにおける演算が外部メモ リアクセスによるレイテンシ一の影響を受けにくいマルチプロセッサシステム を実現することができる。  In the multiprocessor system including a plurality of processors according to the present invention, it is possible to realize a multiprocessor system in which operations in each processor are hardly affected by latency due to external memory access while guaranteeing data coherency.

Claims

請 求 の 範 囲 The scope of the claims
1 . レジス夕バンク指定命令と通常の命令とを含む命令をデコードして制御 信号を生成する命令デコーダと、  1. an instruction decoder for decoding an instruction including a register instruction and a normal instruction to generate a control signal;
該命令デコーダからの該制御信号に基づいて演算処理を行なう演算器と、 該演算器の信号に基づいて外部メモリとの間でデータ入出力を行なうメモリ アクセス手段と、  An arithmetic unit that performs arithmetic processing based on the control signal from the instruction decoder; a memory access unit that performs data input / output with an external memory based on the signal of the arithmetic unit;
該演算器および該メモリアクセス手段からアクセス可能なレジス夕をそれそ れ備えた複数のレジス夕バンクと、  A plurality of register banks each provided with a register accessible from the arithmetic unit and the memory access means;
前記レジス夕バンク指定命令に基づいて前記命令デコ―ダが生成するレジス 夕バンク指定制御信号により制御されるバンクスイッチ手段であって、 該演算 器がどのレジス夕バンクにアクセスするかを定め、 かつ、 該メモリアクセス手 段がどのレジス夕バンクにアクセスするかを定めるバンクスィツチ手段と を備えてなり、  Bank switch means controlled by a register bank designation control signal generated by the instruction decoder based on the register bank designation command, wherein the arithmetic unit determines which register bank to access, and Bank switch means for determining which register bank the memory access means accesses.
該レジス夕バンク指定命令は、該バンクスィツチ手段を制御することにより、 該レジス夕バンク指定命令より後にある通常の命令をオペランドを用いて実行 するために、 該オペランドが用いるレジス夕に割り当てるレジス夕バンクを切 り換える命令である、 マルチバンクレジス夕を有するプロセッサ。  The register setting command is executed by controlling the bank switch means to execute a normal instruction following the register setting instruction using an operand. A processor with a multi-bank register, which is an instruction to switch banks.
2 . 前記バンクスイッチ手段は、 前記レジスタバンク指定制御信号により制 御され、 前記演算器が前記レジスタバンクのいずれかへアクセスするかを定め るとともに、 前記メモリアクセス手段が他のいずれかの前記レジス夕バンクへ アクセスするかを定めるものであり、  2. The bank switch means is controlled by the register bank designation control signal, determines whether the arithmetic unit accesses one of the register banks, and sets the memory access means to any one of the other registers. It decides whether to access Evening Bank,
前記演算器によるレジス夕へのアクセスと前記メモリアクセス手段によるレ ジス夕へのアクセスとの同時アクセスが可能である、 請求の範囲第 1項に記載 のプロセッサ。  2. The processor according to claim 1, wherein access to the register by the arithmetic unit and access to the register by the memory access unit can be performed simultaneously.
3 . 前記レジス夕バンク指定命令は、 レジス夕バンク設定修飾命令であり、 前記レジス夕バンク設定修飾命令は、 前記バンクスィツチ手段を制御するこ とにより、 該レジス夕バンク設定修飾命令の直後にある通常の命令をオペラン ドを用いて実行するために、 該直後にある通常の命令の該オペランドについて のレジス夕に割り当てるレジス夕バンクを切り換える命令である、 請求の範囲 第 1項または第 2項に記載のプロセッサ。 3. The register setting command is a register setting command, and the register setting command is for controlling the bank switch means. The instruction for switching the register bank assigned to the register for the operand of the normal instruction immediately following the ordinary instruction immediately following the register setting instruction for the operand using the operand. The processor according to claim 1 or 2, wherein
4 . 前記レジス夕バンク設定修飾命令が直前にある場合には命令長が通常の 命令の命令長から延長されて、 該レジス夕バンク設定修飾命令と直後の該通常 の命令とが該延長された命令長を有する一命令になる、 請求の範囲第 3項に記 載のプロセッサ。 ·4. If the register setting instruction is immediately before, the instruction length is extended from the instruction length of the normal instruction, and the register setting modifying instruction and the immediately following normal instruction are extended. The processor according to claim 3, wherein the processor has one instruction length. ·
5 . 前記レジス夕バンク指定命令はレジス夕バンク設定命令であり、 該レジス夕バンク設定命令より後にある通常の命令においては、 明示的なレ ジス夕バンクの指定を必要とせずに、 前記オペランドが用いるレジス夕に対し て該レジス夕バンク指定命令に基づくレジス夕バンクの割り当てが適用され る、 請求の範囲第 1項または第 2項に記載のプロセヅサ。 5. The register bank setting instruction is a register bank setting instruction. In a normal instruction subsequent to the register bank setting instruction, the operand does not need to be explicitly specified and the operand is set. 3. The processor according to claim 1 or 2, wherein the allocation of a registry bank based on the registry bank designation instruction is applied to a registry bank to be used.
6 . 命令記憶手段と、 第 1のプロセッサと、 第 2のプロセッサと、 外部メモ リとを少なくとも備えてなるマルチプロセヅサシステムであって、  6. A multiprocessor system comprising at least an instruction storage means, a first processor, a second processor, and an external memory,
該第 1のプロセヅサおよび該第 2のプロセッサは、  The first processor and the second processor include:
該命令記憶手段からのレジス夕バンク指定命令と、 通常の命令とを含む命令 をデコ一ドして制御信号を生成する命令デコーダと、  An instruction decoder for decoding an instruction including a register instruction from the instruction storage means and an instruction including a normal instruction to generate a control signal;
該命令デコーダからの該制御信号に基づいて演算処理を行なう演算器と、 該演算器の信号に基づいて該外部メモリとの間でデ一夕入出力を行なうメモ リアクセス手段と、  An arithmetic unit for performing arithmetic processing based on the control signal from the instruction decoder; memory access means for performing input / output with the external memory based on a signal from the arithmetic unit;
該演算器および該メモリアクセス手段からアクセス可能なレジス夕をそれそ れ備えた複数のレジス夕バンクと、  A plurality of register banks each provided with a register accessible from the arithmetic unit and the memory access means;
前記レジス夕バンク指定命令に基づいて前記命令デコーダが生成するレジス 夕バンク指定制御信号により制御されるバンクスイッチ手段であって、 該演算 器がどのレジス夕バンクにアクセスするかを定め、 かつ、 該メモリアクセス手 段がどのレジス夕バンクにアクセスするかを定めるバンクスィツチ手段と をそれそれ備えてなり、 Bank switch means controlled by a register / bank designation control signal generated by the instruction decoder based on the register / bank designation instruction, wherein the arithmetic unit determines which register / bank to access, and Memory access hand Bank switching means for determining which registry bank the dan will access,
該レジス夕バンク指定命令は、該バンクスィヅチ手段を制御することにより、 該レジス夕バンク指定命令より後にある通常の命令をオペランドを用いて実行 するために、 該オペランドが用いるレジス夕に割り当てるレジス夕バンクを切 り換える命令であり、  By controlling the bank switch means, the register bank designation instruction is used to execute a normal instruction subsequent to the register bank designation instruction using an operand. Command to switch between
該外部メモリは、 該第 1のプロセヅサの該メモリアクセス手段と、 該第 2の プロセッサの該メモリアクセス手段とのいずれからもアクセス可能に接続され ている、 マルチプロセッサシステム。  The multiprocessor system, wherein the external memory is connected so as to be accessible from both the memory access unit of the first processor and the memory access unit of the second processor.
7 . 前記バンクスイッチ手段は、 前記レジス夕バンク指定制御信号により制 御され、 前記演算器が前記レジス夕バンクのいずれかへアクセスするかを定め るとともに、 前記メモリアクセス手段が他のいずれかの前記レジス夕バンクへ アクセスするかを定めるものであり、 7. The bank switch means is controlled by the register bank designation control signal, and determines whether the arithmetic unit accesses one of the register banks, and the memory access means determines whether to access any of the other banks. Determines whether to access the Regis Evening Bank,
前記演算器によるレジス夕へのアクセスと前記メモリアクセス手段によるレ ジス夕へのアクセスとの同時アクセスが可能である、 請求の範囲第 6項に記載 のマルチプロセッサシステム。  7. The multiprocessor system according to claim 6, wherein an access to the register by the arithmetic unit and an access to the register by the memory access unit can be performed simultaneously.
8 . 請求の範囲第 6項または第 7項に記載のマルチプロセッサシステムであ つて、 前記外部メモリにおいて前記第 1のプロセッサがアクセスするメモリ領 域と、 前記第 2のプロセッサがアクセスするメモリ領域との少なくとも一部が 共有されているマルチプロセッサシステム。  8. The multiprocessor system according to claim 6, wherein the external memory has a memory area accessed by the first processor and a memory area accessed by the second processor. A multiprocessor system in which at least part of is shared.
9 . レジス夕バンク指定命令と通常の命令とを含む命令をデコ一ドして制御 信号を生成する命令デコーダと、 該命令デコ一ダからの該制御信号に基づ 、て 演算処理を行なう演算器と、 該演算器の信号に基づいて外部メモリとの間でデ —夕入出力を行なうメモリアクセス手段と、 該演算器および該メモリアクセス 手段からアクセス可能なレジスタをそれそれ備えた複数のレジスタバンクと、 該演算器および該メモリアクセス手段がそれそれどのレジス夕バンクにァクセ スするかを定めるバンクスィ ヅチ手段とを備えてなるプロセヅザの制御方法で あって、 9. An instruction decoder for decoding an instruction including a register instruction and a normal instruction to generate a control signal, and an operation for performing an arithmetic operation based on the control signal from the instruction decoder Unit, memory access means for inputting / outputting data to / from an external memory based on a signal from the arithmetic unit, and a plurality of registers each including registers accessible from the arithmetic unit and the memory access means A bank, and the arithmetic unit and the memory access means are accessed by each of the registry banks. A processor control method comprising: a bank switch means for determining whether to perform
該命令デコーダが該レジス夕バンク指定命令に基づいてレジス夕バンク指定 制御信号を生成するステツプと、  A step in which the instruction decoder generates a register setting control signal based on the register setting instruction;
該レジス夕バンク指定制御信号により該バンクスィ ヅチ手段を制御すること により、 該レジスタバンク指定命令より後にある通常の命令のオペランドが用 いるレジス夕に割り当てるレジス夕バンクを切り換えて、 該演算器がどのレジ ス夕バンクにアクセスするかを制御するステップと、  By controlling the bank switch means with the register bank designation control signal, the register bank assigned to the register bank used by the operand of the normal instruction after the register bank designation instruction is switched, and Controlling whether to access the registry bank;
該レジス夕バンク指定制御信号により該バンクスイツチ手段を制御すること により、 該オペランドが用いるレジス夕に割り当てるレジス夕バンクを切り換 えて、 該メモリアクセス手段がどのレジス夕バンクにアクセスするかを制御す るステップと、  By controlling the bank switch means with the register setting signal, the register bank assigned to the register used by the operand is switched to control which register bank the memory access means accesses. Steps
該通常の命令をオペランドを用いて実行するステップと  Executing the normal instruction using the operands;
を含むマルチバンクレジス夕を有するプロセッサの制御方法。  A method of controlling a processor having a multi-bank register including the following.
1 0 . 該通常の命令をオペランドを用いて実行する前記ステップは、  1 0. The step of executing the normal instruction using an operand includes:
あるレジス夕バンクのレジス夕への前記演算器によるアクセスと、 他のレジ ス夕バンクのレジス夕への前記メモリアクセス手段によるアクセスとが同時に 行なわれるステップを含むものである、 請求の範囲第 9項に記載のマルチバン クレジス夕を有するプロセヅサの制御方法。  10. The method according to claim 9, further comprising the step of simultaneously performing access by a computing unit to a registry evening of a certain registry evening bank and access by a memory access unit to a registry evening of another registry evening bank. A method for controlling a processor having the multi-bank credit card described in the above.
1 1 . 前記レジスタバンク指定命令は、 レジス夕バンク設定修飾命令であり、 前記レジス夕バンク設定修飾命令は、 前記バンクスイッチ手段を制御するこ とにより、 該レジスタバンク設定修飾命令の直後にある通常の命令をオペラン ドを用いて実行するために、 該直後にある通常の命令の該オペランドについて の該オペランドのレジス夕に割り当てるレジス夕バンクを切り換える命令であ る、 請求の範囲第 9項または第 1 0項に記載のプロセッサの制御方法。  11. The register bank designating instruction is a register bank setting modifying instruction, and the register bank setting modifying instruction is provided immediately after the register bank setting modifying instruction by controlling the bank switch means. 10. The instruction according to claim 9, wherein the instruction for switching the register bank assigned to the register of the operand of the operand of the ordinary instruction immediately after the instruction is executed in order to execute the instruction using the operand. 10. The method for controlling a processor according to item 10.
1 2 . 前記レジスタバンク設定修飾命令が直前にある場合には命令長が通常 の命令の命令長から延長されて、 該レジス夕バンク設定修飾命令と直後の該通 常の命令とが該延長された命令長を有する一命令になる、 請求の範囲第 1 1項 に記載のプロセッサの制御方法。 1 2. If the register bank setting modifier instruction is immediately before, the instruction length is usually 11. The instruction according to claim 11, wherein the instruction length of the register instruction is extended from the instruction length of the instruction, and the register instruction for setting the register bank and the ordinary instruction immediately after become one instruction having the extended instruction length. How to control the processor.
1 3 . 前言 3レジス夕バンク指定命令は、 レジス夕バンク設定命令であり、 前記レジス夕バンク指定命令より後にある通常の命令においては、 明示的な レジス夕バンクの指定を必要とせずに、 前記オペランドが用いるレジス夕に対 して該レジス夕バンク指定命令に基づくレジスタバンクの割り当てが適用され る、 請求の範囲第 9項または第 1 0項に記載のプロセッサの制御方法。  1 3. The 3rd Registrar Bank Designating Instruction is a Registrar Evening Bank Setting Instruction, and the normal instruction after the above Registrar Evening Bank Specifying Instruction does not require explicit designation of the Registrar Evening Bank, 10. The processor control method according to claim 9, wherein the register bank assignment based on the register bank designation instruction is applied to a register bank used by the operand.
PCT/JP2002/010832 2002-10-18 2002-10-18 Processor having multi-bank register and processor control method WO2004036416A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2002/010832 WO2004036416A1 (en) 2002-10-18 2002-10-18 Processor having multi-bank register and processor control method
AU2002344110A AU2002344110A1 (en) 2002-10-18 2002-10-18 Processor having multi-bank register and processor control method
JP2004544709A JP3958320B2 (en) 2002-10-18 2002-10-18 Processor having multi-bank register and method for controlling processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2002/010832 WO2004036416A1 (en) 2002-10-18 2002-10-18 Processor having multi-bank register and processor control method

Publications (1)

Publication Number Publication Date
WO2004036416A1 true WO2004036416A1 (en) 2004-04-29

Family

ID=32104835

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2002/010832 WO2004036416A1 (en) 2002-10-18 2002-10-18 Processor having multi-bank register and processor control method

Country Status (3)

Country Link
JP (1) JP3958320B2 (en)
AU (1) AU2002344110A1 (en)
WO (1) WO2004036416A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5696353A (en) * 1979-12-12 1981-08-04 Mitsubishi Electric Corp Multiprocessor control device
JPH03141434A (en) * 1989-06-19 1991-06-17 Nec Corp Microcomputer
JPH0535472A (en) * 1990-10-31 1993-02-12 Hitachi Ltd Microcomputer
US5680641A (en) * 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62154166A (en) * 1985-12-27 1987-07-09 Matsushita Electric Ind Co Ltd Microcomputer
JPH04195226A (en) * 1990-11-22 1992-07-15 Toshiba Corp Parallel processing microprocessor
JP3511529B2 (en) * 1994-09-13 2004-03-29 松下電器産業株式会社 Complex arithmetic processing unit
JPH1011352A (en) * 1996-06-19 1998-01-16 Hitachi Ltd Data processor and its register address converting method
JPH1091430A (en) * 1996-09-13 1998-04-10 Matsushita Electric Ind Co Ltd Instruction decoding device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5696353A (en) * 1979-12-12 1981-08-04 Mitsubishi Electric Corp Multiprocessor control device
JPH03141434A (en) * 1989-06-19 1991-06-17 Nec Corp Microcomputer
JPH0535472A (en) * 1990-10-31 1993-02-12 Hitachi Ltd Microcomputer
US5680641A (en) * 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath

Also Published As

Publication number Publication date
AU2002344110A1 (en) 2004-05-04
JP3958320B2 (en) 2007-08-15
JPWO2004036416A1 (en) 2006-02-16

Similar Documents

Publication Publication Date Title
US7941585B2 (en) Local scratchpad and data caching system
US20040193837A1 (en) CPU datapaths and local memory that executes either vector or superscalar instructions
EP0996057A1 (en) Data processor
JP2816248B2 (en) Data processor
JP2000222206A (en) Data processor
JP2011508918A (en) An integrated processor architecture for handling general and graphics workloads
JP3543181B2 (en) Data processing device
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
TWI764966B (en) A data processing apparatus and method for controlling vector memory accesses
JPH0496825A (en) Data processor
JP3789583B2 (en) Data processing device
JP2002544587A (en) Digital signal processor calculation core
JP7048612B2 (en) Vector generation instruction
KR100974401B1 (en) Method and apparatus for swapping the contents of address registers
JP2556182B2 (en) Data processing device
JP4528993B2 (en) Processor having multi-bank register and method for controlling processor
JP3958320B2 (en) Processor having multi-bank register and method for controlling processor
US11449336B2 (en) Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof
JP2522048B2 (en) Microprocessor and data processing device using the same
JP2877468B2 (en) Electronic computer
JP3147884B2 (en) Storage device and information processing device
JP2696578B2 (en) Data processing device
JPH1091434A (en) Method for using quick decoding instruction and data processing system
JP3102399B2 (en) Data processing apparatus and method
JP2002163104A (en) Microcomputer

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

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

AL Designated countries for regional patents

Kind code of ref document: A1

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

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2004544709

Country of ref document: JP

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established
32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: COMMUNICATION PURSUANT TO RULE 69 EPC (EPO FORM 1205A OF 050905)

122 Ep: pct application non-entry in european phase