PROGRAM SKIP OPERATION CONTROL SYSTEM

Abstract: A program skip operation control system used in a pre­ fetched processor includes at least a program memory for storing a number of instructions, an instruction register associated to the program memory to fetch an instruction to be executed, and an instruction decoder receiving the content of the instruction register so as to generate a decoded instruc­ tion. An instruction address register is associated to the pro­ gram to memory updateably prefetch an address of an in­ struction to be next fetched from the program memory to the instruction register, so that in the course of execution of the decoded instruction outputted from the instruction decoder, an instruction to be next executed is fetched from the pro­ gram memory to the instruction register. The instruction dec­ oder responds to a skip signal so as to invalidate the decoded instruction and generate a no-opeartion instruction for at least one cycle after a predetermined skip operation has car­ ried out.

Description: Background of the Invention Field of the Invention The present invention relates to a program controlled processor, and more particularly to a program skip operation control system used in a program controlled processor. More specifically, the present invention relates to a program skip operation control system used in a program controlled processor of the instruction prefetch type which includes a program memory and an instruction address register adapted to hold the address of an instruction to be fetched from the program memory, the instruction address register being capable of updating the address of an instruction to that during execution of one instruction the instruction to be next executed is fetched from the program memory. Description of related art A so-called instruction prefetch type microprocessor has been known as one of program controlled processors. This instruction prefetch type microprocessor is so designed that each microinstruction is executed in one or two cycles. For this purpose, when each microinstruction is executed, a microinstruction to be executed next after the microinstruction being executed is fetched from a program memory. To ensure such an operation, an address register associated to the program memory is adapted to updateably prefetch an address of an instruction to be next fetched from the program memory. In this instruction prefetch type microprocessor, branch operations are often required, similarly to other processors. To process such branch operations, the following two methods have been proposed. One of these methods is to break an address already prefetched in on address register as the address of an instruction to be next executed and to newly register a branch address. The other method is to execute an instruction of an address prefetched and then to enter a branch operation. The latter method is called a "delayed branch" hereinafter. In order to carry out the former method, when a branch operation is conditionally or unconditionally established as the result of microinstruction decoding, it is necessary to invalidate the execution of instructions for the period in which the content of the address register already prefetched is rewritten to a branch address. This will lead to decrease in the execution efficiency of a program including a number of branch instructions, In the delayed branch system, on the other hand, after a branch operation is established, an instruction of the address already prefetched is executed. Therefore, a program flow becomes complicated at some degree, but the branch operation itself will not directly decrease the processing efficiency. On the other hand, a program sequence control is generally based either on a first method in which a program address is contained in a microinstruction code without exception, or on a second method in which addresses of microinstructions are controlled by an address generating circuit such as an address counter and an incrementer unless a branch is required, and only branch addresses are included in microinstructions. Comparing the two methods, the latter method is advantageous in a required capacity of a microinstruction storage memory. In an instruction prefetch type microprocessor using the delayed branch system and carrying out the program sequence control with a program counter, when a program skip is performed, the following difficulty has been encountered. Namely, when a program skip condition is established, the processing of the next instruction address already prefetched will be attended with a problem similar to that in the branch processing as mentioned above. In addition, a very complicated interaction will be inevitably required between a modification of a program sequence control line and the content of a microinstruction being currently executed, particularly between the execution of the branched microinstruction and the skip operation. Therefore, a program has been subjected to various and many limitation, or a complicated control mechanism has been required. In fact, however, the program skip operation is very frequently combined with the branch operation. In this circumstance, JP-A-1008738 discloses a branch and interrupt system for a prefetched microprocessor. Specifically, a control of the delayed branch processing and interrupt has been proposed. However, the proposed system still includes such limitations in program and function that it is not allowable to program a branch command after another branch instruction of a program sequence width and that an interrupt operation is limited during execution of the branched command. Therefore, such a general structure is adopted that a program skip operation is carried out by means of internal interrupt. In other words, the proposed system still needs substantial limitation in program or a complicated control for processing a branch command. A prefetched processor according to the preamble of claim 1 is disclosed in GB-A-2 081 944. In this processor the addresses are contained in the microinstruction. In case of a conditional instruction an "estimated" address can be stored in the microinstruction, i.e. it is estimated at which address the program most likely proceeds as a result of a conditional instruction. This address is checked and a no-operation instruction is used instead in case the estimated address is incorrect. However, this processor is not of the delayed branch system so that the problems of the jump instruction or the skip instruction in the delayed branch system will not occur in this processor. The same holds for a flexible computer control unit disclosed in EP-A-0 140 515. It is therefore an object of the invention to dissolve the abovementioned drawbacks in the conventional prefetch processor of the delayed branch type. Another object of the present invention is to provide a method of controlling a skip operation without causing substantial limitation to a program and without requiring a complicated control mechanism. Still another object of the present invention is to provide a program skip operation control system for a prefetched processor of the delayed branch type, which system has overcome the defects of the conventional ones. A further object of the present invention is to provide such a program skip operation control system which can carry out a skip program without modification of a program sequence control system and without requiring controls of a microinstruction memory, an address generating circuit associated thereto and a prefetch address register. A still further object of the present invention is to provide a program sequence control system allowing to enter an interrupt operation during execution of the branched command. These objects are achieved by a prefetched processor as defined in claim 1; the dependent claims are related to further developments of the invention. With the above mentioned arrangement, a skip operation can be controlled simply by invalidating a microinstruction to be executed, without executing a processing similar to an operation such as a branch and a interrupt which are inevitably attended with modification of a program control system, and without additional specific control mechanism. In other words, a prefetched processor can perform a skip operation without substantially decreasing the processing efficiency. In one embodiment, the instruction decoder is adapted to modify the decoded instruction to the no-operation instruction when the predetermined skip operation has been executed. In another embodiment, the instruction register is adapted to generate the no-operation instruction when the predetermined skip operation has been executed. The above and other objects, features and advantages of the present invention will be apparent from the following description of preferred embodiments of the invention with reference to the accompanying drawings. Brief Description of the Drawing Figure 1 is a block diagram of a program sequence control unit which embodies the program skip operation control system in accordance with the present invention; and Figure 2A to 2D are timing charts illustrating various operation modes of the system shown in Figure 1. Description of the Preferred Embodiment Referring to Figure 1, there is shown one embodiment of the program sequence control unit for the instruction prefetch type microprocessor. The shown unit comprises a program memory 10 which is ordinarily provided in a conventional control processing unit for storing a number of microinstructions. This program memory 10 is so adapted that a microinstruction of an address designated by an associated address register 12 is put readable in synchronism with a clock  . The microinstruction thus being readable is fetched in an instruction register 14 in synchronism with a clock  in opposite phase to the clock  . The microinstruction held in the register 14 is fed to an instruction decoder 14. This decoder in turn outputs a decoded instruction to a latch register 18, where it is latched at the timing of the clock  . The decoder 16 is controlled by an interrupt signal INT and a skip signal SKIP so that when it receives either of these control signals, the decoding operation is invalided. The shown control unit also includes an address stack 20, which can be a portion of a stack register provided in a conventional central processing unit. The address stack 20 is adapted to operate in response to the clocks  and  and to output an address data of a location indicated by an associated stack pointer 22, which is in turn controlled by a call signal CALL, the interrupt signal INT and a return signal RET. The address read out from the address stack 20 is transferred through a multiplexor 24 to the address register 12. The multiplexor 24 also receives as input signals the interrupt address INTA and a jump address JA, and is controlled by the interrupt signal INT, the return signal RET, a jump signal JMP, and the return signal RET. Further, the content of the address register 12 is supplied through an incrementer 26 to a latch register 28 operates in synchronism with the clock  . The incremented address latched in the latch register 28 is also supplied to the multiplexor 24 and one input of another multiplexor 30. This multiplexor 30 is connected at its other input to a latch register 32 which is adapted to latch the content of the address register 12 in synchronism with the clock  . Next, operation of the above mentioned program sequence control unit will be explained with reference to the timing charts shown in Figures 2A to 2D illustrating a train of synchronous clocks  and a relation between the clocks , addresses and microinstruction codes. As seen from Figures 2A to 2D, each microinstruction is executed in one cycle of the clock , and each address is also prefetched in one cycle of the clock . In an example shown in Figure 2A, a jump instruction is programmed at the address N (instead of the jump instruction, a call instruction or a return instruction can be programmed). The address N is prefetched through the multiplexor 24 to the address register 12, and then, the microinstruction code of the address N in the program memory 10 is fetched in the instruction register 14 after one cycle. This instruction code is decoded in the instruction decoder 11, and a jump address JA included in the microinstruction code is latched in the latch register 18, and then registered to the address register 12 through the multiplexor 24 controlled to select the jump address JA in accordance with the jump signal JMP. However, the jump address JA is actually fetched in the address register 12 after one instruction cycle from when the microinstruction code of the address N is fetched in the instruction register 14. The reason for this is as follows: When the address N prefetched in the address register 12 is supplied not only to the program memory 10 but also to the incrementer 26, so that the incremented address, i.e., the address N + 1 is latched to the latch register 28 in synchronism with the clock  , i.e., when the instruction of the address N is put readable from the program memory. Thereafter, when the instruction register 14 registers the microinstruction code of the address N in synchronism with the clock  and the decoder 16 outputs the decoded instructions, the address N + 1 in the register 28 is registered in the address register 12 through the multiplexor 24. Accordingly, when the jump address JA is latched in the register 18 in response to the clock  , the address N + 1 is already prefetched in the address register 12, and the program memory 10 is put in a condition capable of reading the address N + 1. When the microinstruction code of the address N + 1 is registered in the instruction register 14 in response to the clock  so that the microinstruction code of the address N + 1 is decoded in the decoder 16, the jump address JA is actually registered in the address register 12 through the multiplexor 24 which is controlled in accordance with the jump signal JMP so as to select the jump address JA. Then, when the microinstruction code of the address N + 1 decoded in the decoder 16 is executed, the program memory 10 is put in a condition capable of reading out an instruction of the jump address JA. Thereafter, the microinstruction of the jump address JA is registered in the instruction register 14, and is decoded by the decoder 16 for execution of the microinstruction. Thus, the branch operation is executed after one instruction cycle delay. In other words, the shown unit is of the delayed branch system. In addition, the shown unit is such that unless the branch operation is required the microinstruction address is controlled by the incrementer 26. Further, a branch instruction is executed without programming a branch instruction code, so that the decrease of the processing efficiency caused by the branch operation is prevented. A conditional jump, an unconditional jump, a call and a return are carried out similarly to the above mentioned operation. But, in the case of the call and the return, the address stack 20 is operated. For example, when the instruction of the address N is a call instruction, after the execution of the instruction of the address N + 1, the program is branched to the jump address JA, and at the same time, a return address N + 2, generated by the incrementer 26 which receives the address N + 1 from the address register 12 at that time, is latched in the latch 28 in response to the clock  and then supplied to the address stack 20 through the multiplexor 30 controlled to select the output of the latch 28 in accordance with the call signal CALL. The return address N + 2 is held in the address stack 20 in response to the clock  under control of the stack pointer 22 which receives the call signal CALL. Similarly, in the case of a return instruction, after the execution of the return instruction, the next instruction is executed. On the other hand, the return address is read out from the address stack 20 in response to the clock  under the control of the stack pointer 22 receiving the return signal RET, and the return address so read out is loaded to the address register 12 through the multiplexor 24 controlled to select the output of the address stick 20 in accordance with the return signal RET. Figure 2B illustrates an example of an interrupt processing. For example, if an interrupt is generated when the address N is prefetched, the address N prefetched in the address register is latched in the register 32 at the clock  and supplied through the multiplexor 30 which is controlled to select the output of the register 32 in accordance with the interrupt signal INT. Then, the address N is saved in the address stack 20 in response to the clock  under control of the stack pointer 22 receiving the interrupt signal INT. On the other hand, the instruction code of the address N fetched in the instruction register 14 after one instruction cycle is modified to a no-operation instruction in the decoder controlled under the interrupt signal INT. And, an interrupt address INTA is loaded to the address register 12 through the multiplexor controlled to select the interrupt address INTA in accordance with the interrupt signal INT, Thus, the interrupt operation is carried out. Figure 2C shows the case that an interrupt is requested when the branch operation is executed. In this case, when the multiplexor 24 receives the jump signal JMP, it does not respond to the interrupt signal INT, so that the interrupt address INTA is registered to the address register 12. Thus, the interrupt is masked when the branch instruction of the address N is being executed, and after the branch has been completed, i.e., when the instruction of the address N + 1 is to be executed, the interrupt is allowed. Thereafter, the operation is carried out similarly to the case of interrupt explained with reference to Figure 2B. Figure 2D illustrates a skip operation in the case that the address N is programmed with a JMP instruction requesting the jump to the same address, i.e., to the address N. As mentioned above, since the system is of the delayed branch type, such an operation would be repeated that after an instruction of the address N + 1 next to the address N is executed, the program is jumped to the address N. Namely, the instructions of the addresses N and N + 1 would be repeatedly executed. In this case, even if the address N + 1 stores a command such as a condition of skip (for example a time counter operation instruction) other than the branch instructions so that when the skip condition is established the next occuring address is modified, since the address N is prefetched and the jump command is executed, the processor cannot get out of the loop defined by the addresses N and N + 1. In this embodiment, however, the instruction decoder 16 is controlled in accordance with the skip signal SKIP to modify the instruction from the instruction register 14 to a no-operation instruction. Thus, as seen from Figure 2D, after the skip operation is executed, when the JMP instruction of the address N is again loaded to the decoder 16, the JMP instruction is modified to a no-operation instruction. As a result, the sequence is changed so that the address N + 2 succeeds the address N + 1. Thus, the skip operation can be controlled (terminated) without modifying or controlling the address system. As seen from the above, the program skip operation of the prefetched microprocessor is not carried out by an internal interrupt. Rather the program skip operation is simply controlled by controlling the instruction decoder without modifying or controlling the program sequence control unit. Thus, the processor can process the skip operation with a very simple construction at a high efficiency. In the above mentioned embodiment, the decoder 16 is controlled to modify the skip instruction to a no-operation instruction. But, as shown by the dotted line in Figure 1, the instruction register 14 can be adapted to respond to the skip signal SKIP so as to output a no-operation instruction in place of the fetched instruction.

Claims: A prefetched processor comprising at least a program memory (10) for storing a number of instructions, an instruction register (14) associated to the program memory (10) to fetch an instruction to be executed, and instruction decoder (16) receiving the content of the instruction register (14) so as to generate a decoded instruction and generating a jump destination address when decoding a jump instruction, and an instruction address register (12) associated to the program memory (10) to updateably fetch an address of an instruction to be next fetched from the program memory (10) to the instruction register (14), so that in the course of execution of the decoded instruction out-putted from the instruction decoder (14), an instruction to be next executed is fetched from the program memory (10) to the instruction register (14), said decoder being capable of generating a no-operation instruction characterized in that said processor is of the delayed branch type, wherein in the course of execution of a branch instruction, an instruction next to said branch instruction is executed before said destination address is stored in said address register (12), wherein a skip condition instruction is interposed next to said jump instruction, and a skip signal is generated to said decoder (16) if a skip condition is fulfilled as a result of an execution of said skip condition instruction so that said decoder generates said no-operation instruction for at least one cycle even if said decoder (16) receives said jump instruction. A processor as claimed in claim 1, further including an address memory (20) controlled by an associated memory controller (22) to supplying address data, an address generating circuit receiving the content of the address register to generate an address of an instruction to be next executed, and a first multiplexer (24) receiving the output of the address memory (20), the output of the address generating circuit, a jump address and an interrupt address and controlled by a control signal to output a selected one of the input addresses to the address register (12). A processor as claimed in claim 2, wherein the first multiplexer (24) is adapted such that when the multiplexer receives a jump signal (JMP) so as to selectively output the jump address to the address register (12), it does not respond to an interrupt signal (INT), so that the jump operation will be preferentially executed. A processor as claimed in claim 2, further including a latch register (32) latching the content of the address register (12), and a second multiplexer (30) receiving the output of the address generating circuit (26, 28) and the content of the latch register (30) and controlled to selectively supplying one of the input addresses to the address memory (20). A processor as claimed in claim 4, wherein the second multiplexer (30) is controlled to selectively output the address generated by the address generating circuit (26, 28) to the address memory (20) when a call operation is requested. A processor as claimed in claim 4, wherein the second multiplexer (30) is controlled to selectively output the content of the latch register (32) to the address memory (20) when an interrupt operation is requested. A processor as claimed in claim 4, wherein the address generating circuit includes an incrementer (26) receiving the output of said address register (12) and a second latch register (28) receiving the output of the incrementer.

Inventors: NUKIYAMA, TOMOJI C/O NEC CORPORATION
Applicants: NEC CORPORATION
Application year: 1986
Main classification: G06F9
IPC codes: G06F9