WO1999045463A1 - Processeur de donnees - Google Patents

Processeur de donnees Download PDF

Info

Publication number
WO1999045463A1
WO1999045463A1 PCT/JP1998/000885 JP9800885W WO9945463A1 WO 1999045463 A1 WO1999045463 A1 WO 1999045463A1 JP 9800885 W JP9800885 W JP 9800885W WO 9945463 A1 WO9945463 A1 WO 9945463A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
execution
result
past
execution result
Prior art date
Application number
PCT/JP1998/000885
Other languages
English (en)
French (fr)
Inventor
Yoshio Miki
Original Assignee
Hitachi, Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi, Ltd. filed Critical Hitachi, Ltd.
Priority to US09/623,182 priority Critical patent/US6810474B1/en
Priority to PCT/JP1998/000885 priority patent/WO1999045463A1/ja
Publication of WO1999045463A1 publication Critical patent/WO1999045463A1/ja

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Definitions

  • the present invention relates to an information processing apparatus that performs a predetermined operation in accordance with a programmed instruction word, and particularly to a technique for reducing the processing time of the information processing apparatus when there is a dependency of reference data between instructions. . Background art
  • a desired information processing operation is performed by performing an operation specified by a programmed instruction word.
  • the reading of an instruction word and the execution of an operation follow the order of the instruction words. Therefore, a subsequent instruction that attempts to refer to data generated by a preceding instruction in a program must execute the preceding instruction. I have to wait for the end. This is a limitation that subsequent instructions cannot overtake preceding instructions, no matter how fast, due to so-called data dependence.
  • the execution result of the preceding instruction is predicted by some predicting means, and the time reduction beyond the above limit is not performed unless execution of the subsequent instruction is started based on the prediction.
  • the method of executing instructions based on prediction is called speculative execution or speculative execution, and the following techniques are known for the speculative execution method of instructions with data dependence described here. I have.
  • Reference 1 The technology disclosed in terns, Vol. E79-D No. 11 November 1996, pages 1523-1532 “(hereinafter referred to as” Reference 1 ") is used to transfer data from a memory outside the information processing device to a register inside the information processing device.
  • the instruction to read data predict the address in memory where the data to be loaded is stored, that is, the load address.
  • the mouth address is the reference information that is indispensable for execution. Generally, the mouth address itself or the information necessary for the mouth address calculation is generated by the preceding instruction, and the load instruction is generated.
  • an instruction refers to it.
  • the execution time of a load instruction is generally long, and it is desirable to start execution of the load instruction as soon as possible.
  • the technique disclosed in Reference 1 when a load instruction is read into an information processing device, the address stored in the information processing device is used as a key in the past to use the load instruction.
  • a cache-like storage mechanism that can search for the mouth-to-door address is provided, and the low-door address is predicted without waiting for the execution of the preceding instruction that actually determines the mouth-to-door address.
  • the loading operation from the memory starts based on this loading address.
  • low door address calculation not based on the prediction is also performed in parallel.
  • Document 5 when a storage device for storing past instruction execution results is provided in information processing, and when an instruction is read into an information processing device or when an instruction is about to be executed. Then, the past execution result is output as the prediction of the current execution. If the following instruction has a data dependency, execution starts speculatively when this prediction result is output. In this way, instructions having a data dependency are speculatively executed in sequence as a series of instructions. In these technologies, the original instruction execution result and the predicted result are all collated, and if they do not match, the instruction is re-executed from the instruction with the data dependence immediately after the mismatch. In other words, all speculatively executed results based on the prediction are discarded, and instruction execution is restarted. Disclosure of the invention
  • the techniques disclosed in the above-mentioned references 1 to 5 require a storage unit for storing past calculation results. Since the capacity stores the operation result corresponding to the instruction, it is assumed that a storage means having a scale of a so-called instruction cache is required. In the case of a general information processing device, it is more effective to increase the number of instruction and data caches to shorten the processing time. Therefore, even if a storage device used for predicting instruction execution is provided in a device with a limited area, generally, securing the capacity of the instruction cache and data cache is given priority. Therefore, the storage means used for predicting instruction execution must be small.
  • a first object of the present invention is to avoid contention between arithmetic units when speculatively executing a subsequent instruction having a data dependency without using an original arithmetic unit.
  • a second object of the present invention is to provide a technique for securing a high prediction validity rate even by using a small-scale execution result storage means.
  • the first object is solved by the following means.
  • a history arithmetic unit that outputs the past instruction execution result as it is as the execution result of the instruction
  • an instruction issue circuit that issues an instruction whose operand is the same as the past value to the history arithmetic unit. Is omitted. As a result, contention between arithmetic units can be avoided.
  • the second object is solved by the following means.
  • a guard cache that stores the instruction address of the instruction with a low predicted corrective rate is provided in the history cache that stores the past operation result, and the instruction of the address registered in the card cache is restored. Suppress registration in the history cache You.
  • the history cache holds instructions with a high prediction validity ratio, and a high prediction validity ratio can be ensured even if a small-scale execution result storage unit is used.
  • FIG. 1 is an information processing apparatus showing an embodiment of the present invention.
  • FIG. 2 is a flowchart showing the operation of the information processing apparatus according to the present invention.
  • FIG. 3 is a configuration diagram of the instruction execution management buffer.
  • FIG. 4 is a circuit diagram of a register map circuit.
  • FIG. 5 is a circuit diagram of the state update circuit.
  • FIG. 6 is an explanatory diagram showing the operation of the instruction issuing circuit.
  • FIG. 7 is a circuit diagram of the instruction issuing circuit.
  • FIG. 8 is a circuit diagram of the instruction issuing circuit.
  • FIG. 9 is a circuit diagram of the instruction writing circuit.
  • FIG. 10 is a circuit diagram of the address decoder.
  • FIG. 11 is a circuit diagram of an empty entry management circuit.
  • FIG. 12 is a circuit diagram of a completion circuit.
  • FIG. 13 is a circuit diagram of the st circuit.
  • FIG. 14 is a circuit diagram of the result cell.
  • Figure 15 is a circuit diagram of RAI and RBI.
  • FIG. 16 is a circuit diagram of an instruction buffer unit storage element.
  • Figure 17 is a circuit diagram of the history cache.
  • FIG. 18 is an instruction format diagram.
  • FIG. 19 is a circuit diagram of RAI and RB1 in a modification of the embodiment.
  • FIG. 20 shows an instruction execution management buffer according to a modification of the embodiment. BEST MODE FOR CARRYING OUT THE INVENTION
  • FIG. Fig. 1 is a block diagram of the information processing device.
  • a command word for controlling the information processing device is read from the main storage device 108 by a command cache 107.
  • the main storage device 108 is composed of a semiconductor memory or the like, and stores an instruction word and data necessary for executing the instruction.
  • the structure and function of the instruction cache 107 are techniques commonly used in microprocessors and the like, and have no deep relation to the content of the present invention.
  • the signal line 201 is an address line for transmitting the address of the instruction word to be read by the instruction cache to the main memory, and the instruction word is stored in the instruction cache 107 via the signal line 200.
  • the address of the instruction executed by the information processing device is indicated by the program counter 110.
  • the address is represented by 32 bits, and one instruction word uses 32 bits. Assuming that the instruction word is always aligned in the main memory 108 at every 4-byte (32-bit) boundary, 30 bits are required to indicate one instruction word. For this reason, the program counter 110 is realized by a 30-bit register.
  • the contents of the program counter 110 are output as an instruction address 202 every clock cycle, and an instruction word corresponding to this address is output to the signal line 203 of the instruction cache 107.
  • the value of the program counter 110 is normally updated by +1 by the adder 130. However, when the branch instruction is executed by the ALU 109 and the address of the instruction to be executed is changed, the address of the new instruction enters the program counter 110 by the selector 114.
  • the instruction decoder 113 decodes the instruction word output on the signal line 203.
  • the instruction address 202 is delayed by the latch 112 by an amount corresponding to the processing time of the instruction cache 107 and the instruction decoder 113, and becomes an input to the instruction execution management buffer 115.
  • the instruction word is represented by 32 bits as shown in Fig. 18, and the first oped field 1801 indicates the type of instruction, and the ALU number 204 which identifies the operation unit used by the instruction decoder 113. It is decoded.
  • the RT field 1802 indicates the number of the register where the operation result is stored.
  • the instruction decoder 113 only extracts the field and outputs it as an RT number 205.
  • the RA field 1803 and the RB field 1804 are the numbers of the registers (operand registers) having the input values (operands) of the operation according to the instruction word.
  • the instruction decoder 113 only extracts fields as in the case of the RT field 1802, and outputs them as RA numbers 206 and RB numbers 207, respectively.
  • X field 1805 is used for instruction extension and is not used in the present embodiment.
  • the instruction decoder 113 sets the long latency signal 208 to the logical value ' ⁇ ' when the operation indicated by the oped field 1801 is a load instruction.
  • the long latency signal 208 means that an operation result is assigned a predicted value in the operation of the instruction execution management buffer 115 described later, and is a signal for distinguishing an instruction to be subjected to this operation. Therefore, the setting of the long latency signal 208 to “ ⁇ ” is not limited to the case of the load instruction, and the extension is performed so that the long latency signal 208 is set to “ ⁇ ” by other instructions. Is also possible.
  • the history cache 111 is a cache that receives an instruction address as an input and outputs a calculation result of the instruction executed in the past. This is one of the main roles played in the present invention. Although the detailed structure will be described later, the 32 bits of the instruction address 202 are assigned 0-31 bit addresses from the most significant bit, and up to 10 bits from 20 bits to 29 bits are allocated. for And refers to a memory in which past calculation results are stored. Bits 0 to 19 of the instruction address 202 are used as tag bits when referencing the history cache 111, and are used to determine the validity of the data stored in the history cache 111.
  • the instruction cache hit signal 209 is set to the logical value ⁇ , and the predicted value of the instruction execution result is executed.
  • the update of the history cache 111 is as follows.
  • the address of the instruction executed by the ALU 109 is input to the history cache 111 as the execution end instruction address 212, and the execution result is input to the history cache 111 as ALU-DATA 211. Except for the detailed control inside the history cache 111, which will be described later, in principle, all the correspondence between the result calculated by the ALU 109 and the instruction address is registered in the history cache 111.
  • the execution result comparison unit 116 compares the predicted execution result of the instruction with the actual execution result by the ALU 109.
  • the instruction execution prediction result is output from the history cache 111 as an execution result prediction 210, and is output from the instruction execution management buffer 115 as an end prediction 214.
  • the values of the execution result prediction 210 and the end prediction 214 have the same contents.
  • the original instruction execution end result is output to ALU-DATA 211 and compared by the execution result comparison unit 116.
  • the execution result comparison unit 116 is substantially composed of only a comparator, and outputs a logical value “ ⁇ ” to the invariant detection signal 213 when the end prediction 214 matches the ALU-DATA 211.
  • connection relationship between the ALU 109 and the instruction execution management buffer 115 is as follows.
  • 226 and 227 indicate the numbers of the operand registers RA and RB of the issued instruction, respectively.
  • 228 identifies the type of arithmetic unit used by the issued instruction.
  • 229 the target register of the instruction, the signal indicating the RT number, 230, the signal indicating that the instruction execution is speculatively executed, and 231, which instruction in the instruction execution management buffer 115 is issued. This is an ID signal for identifying whether or not the operation has been performed.
  • Reference numeral 117 denotes an arithmetic unit which is abbreviated to a historical evaluation unit, and is a unit unique to the present invention.
  • the function simply outputs the instruction execution prediction result as it is as the operation result as HEU-DATA 215, and outputs it as it is without any logical operation for other input / output signals as described later. Just do it.
  • the Regisu File 118 has 32 32-bit registers. Operand register number is given as operand request 119 from AL No. 109, and the register content of the corresponding register number is returned as operand data 120.
  • the instruction execution management buffer 115 updates the contents of the register file 118.
  • the instruction execution management buffer 115 transfers the instruction from the instruction decoder 113 (this transfer is referred to as instruction dispatch) until the instruction execution result is completely determined (this determination is called completion). ), Manages all information related to instruction execution described later. Completion-capable instructions output a value to one of the registers.
  • the register number is the completion register number 216, and the data is output to the register file 118 as completion data 217. Is done.
  • the information processing apparatus roughly includes the following operation modes.
  • One is a mode that waits for the end of the preceding instruction that has a data dependency like the ordinary processor, and executes the following instruction after the end.
  • This one is called normal mode.
  • the second is to compare the instruction execution result with the execution prediction result. In this mode, the prediction result is assumed to be the calculation result without performing the calculation of.
  • This second mode is defined as the invariant propagation mode. In other words, if all input data is predicted, that is, the same as the past execution result, the instruction currently focused on should also generate the same result as the past, and the actual operation is omitted. The operation is based on the idea that it is possible.
  • the third mode is a mode in which subsequent instructions are speculatively executed based on the execution prediction result, similarly to the method of using the execution result prediction in the conventional technology. This is called the speculation execution mode.
  • the prediction result is also used in the invariant propagation mode, but it differs from the speculation execution mode in that there is a guarantee that it matches the actual execution result.
  • the three modes are realized as the functions of the instruction execution management buffer 115 of FIG. 1, and the instruction execution of the entire information processing apparatus is controlled according to the flowchart of FIG.
  • the instruction address is input to the history cache 111, and the predicted execution result of the instruction is retrieved (2001, 2002).
  • the instruction address is not registered in the history cache, but in such a case, only the normal mode can be used, and a description thereof will be omitted.
  • the instruction is decoded by the instruction decoder 113, and if long latency is required such as a load instruction, the speculative execution mode is executed (2003).
  • the advantage of speculative execution is that the execution of the subsequent instruction can be started without waiting for the end of the original instruction execution.
  • the execution result comparison unit 116 outputs an invariant detection signal 213 and waits in the instruction execution management buffer 115. The following instruction is notified that the operation result matches the predicted result. If all the operands of the waiting instruction are the same as the predicted result, the result of execution of the waiting instruction should be the same as the predicted result according to the principle described above. Specifically, the waiting instruction is transferred to HEU117, and the predicted result is used as the execution result.
  • the above is the description of the operation of the information processing apparatus according to the present embodiment in the normal mode, the speculative mode, and the invariable propagation mode.
  • the information processing apparatus according to the present invention based on the idea that if the value predicted based on the past history is valid, the subsequent instruction referring to the value will also output the same result as the past. Then, the execution result based on the prediction is obtained by the method of invariant propagation without using the operation unit that should be used originally. This alleviates congestion in the arithmetic units.
  • FIG. 3 is a configuration diagram of the instruction execution management buffer 115.
  • Instruction buffer 3 00 constitutes a buffer for waiting for an instruction before execution.
  • the instruction buffer section 300 includes the following memory elements for storing instruction configuration information.
  • RBI (301a, 301b, 301c, 301d) stores the position information in the instruction buffer 300 in which the instruction for generating the value of the operand register RB is stored.
  • 58 (3033, 30313, 303 (, 303d) stores the predicted execution result.
  • RB (304a, 304b. 304c, 304d) stores the register number of the operand register RA.
  • RA (305a, 305b) , 305c, 305d) store the register number of the operand register RB, and
  • ALU # (306a, 306b, 306c, 306d) indicates the arithmetic unit used by the instruction decoded by the instruction decoder 113.
  • St (307a, 307b, 307c, 307d) has a floodabit corresponding to the state to manage the state of the stored instruction.
  • TA (Result (308a, 308b, 308c, 308d)
  • TA Stores the instruction execution result TA (309a, 309b, 309c, 309d) stores the instruction's target register number
  • One vertical column for example, RBI 301a, RAI 302a, ER 303a, RB 304a, RA 305a, ALU # 306a, st 307a, result 308a, and TA 309a are used to store one instruction, so the example shown in Fig. 3 is used.
  • the storable instruction number is not limited particularly in the present invention can be extended to an arbitrary number of instructions.
  • the instruction writing circuit 310 stores the ALL) number 204, RT number 205, RA number 206, RB number 207, and prediction result 218 sent from the instruction decoder 113 and the history cache 111 to the instruction execution management buffer 115 in the instruction buffer section. Write to 300.
  • the prediction result 218 is the result from the history cache 111 in FIG. This is a bundle of the line result prediction 210 and the instruction address 219 output from the latch 112.
  • the instruction writing circuit 310 sets a write-req signal to logical “1” and notifies the address decoder 311 that there is a write request.
  • RBI (301a, 301b, 301c, 301d) and RAI (302a, 302b, 302c, 302d).
  • the RT number 205, RA number 206, and RB number 207 are input to the instruction writing circuit 310 and also to the register circuit 312, and the register indicated by the RA number and BR number is assigned to any preceding instruction.
  • the result of the conversion to the instruction ID is returned to the instruction writing circuit 310 as Rid 352 and Rbid 353.
  • the instruction IDs stored in RBI (301a, 301b, 301c, 301d) and RAI (302a, 302b, 302c, 302d) are Raid 352 and Rbid 353.
  • the empty entry management circuit 313 manages the empty space of the instruction buffer unit 300.
  • the empty entry management circuit 313 determines the position information of the empty instruction buffer unit 300 based on the information as to whether or not there are instructions stored in all sts (307a, 307b, 307c, 307d). Output as Instruction ID 355.
  • the status update circuit 314 updates the completion availability information indicated by st (307a, 307b, 307c, 307d) every time an execution result is returned from the HEU 117 and the ALU 109.
  • the ID of the executed instruction position information in the instruction buffer unit 300
  • the ALU end signal 221 is returned as the ⁇ end signal 220, the ALU end signal 221 and all the RBIs (301a, 301b, 301c, 301d) and RAI (302a, 302b, 302c, 302d).
  • the RB then RAI updates the flag indicating that the operand managed by itself is ready. .
  • Instruction issuing circuit 315 is all
  • FIG. 4 is a circuit diagram of the register map circuit 312.
  • the basic operations of the register map circuit 312 are the following two.
  • One is registration of the RT number 205, which is changed by the execution of the instruction.
  • Tawrite 356 is set to the logical value ' ⁇ ', it means that a new instruction is registered in the instruction execution management buffer 115, and the contents of the target register (RT) will be changed by the instruction in the future.
  • the instruction ID 355 indicates an empty area in the instruction buffer section 300, and the logic gates 400, 401, and 402 decode the 3-bit instruction ID so that any one of the 4-bits becomes “ ⁇ ”. .
  • the reason for decoding to 4 bits is that four instructions can be stored in the instruction buffer unit 300.
  • the write clock is generated by the logic gates 403, 404, 405, 406.
  • the decoded instruction ID is 450, 451, 452, or 453, and the RT number 205 is one of the flip-flops 407, 408, 409, and 410 and the flip-flop 411, Recorded in one of 412, 413, 414.
  • the above is the registration of the RT number.
  • the register map circuit 312 also has an operand register number conversion function. Operand register numbers are entered as RA number 206 and RB number 207. Assuming that the RA number 206 matches the number held by the flip-flop 408, the match is detected by the comparator 416, and the RAhit 351 is set to “ ⁇ ”. This detection signal further controls the selector 424 and outputs “2” to the Raid 352. This means that the second instruction rewrites the operand register indicated by RA number 206 as the positional relationship in the instruction buffer unit 300.
  • the relationship between the flip-flop 408, the comparator 416, and the selector 424 described above is similar to that of the other flip-flops, comparators, Selector set (407, 4i5, 423) (409, 417, 425) (410, 418, 426) (411, 419, 427) (412, 420, 428) (413, 421, 429) (414, 422) , 430). Therefore, the input operand register number is converted to the instruction ID of the instruction that rewrites it (the position information of the instruction buffer unit 300). If there is no corresponding information in the above search, RAhit 351, Rbhit 35 4 becomes '0'.
  • FIG. 5 is a circuit diagram of the state update circuit 314.
  • the instruction ID from HEU 117 is the HEU end signal 220, the predicted value as the execution result is in HEU-DATA 215, and the HEU speculative execution signal if the instruction issued to HEU is speculative. Issue 221 is returned.
  • the end signal 220 is checked by the logic gates 500 and 501 to be non-zero. This means that the signal from HEU 117 is valid.
  • the output signal 550 of the logic gate 501 is used for two purposes. First, it becomes the clock for the latches 502, 503, and 504, and latches the signal from the # 117.
  • the ALU end signal 223 sent from the ALU 109 is a logical gate 507, 508. Detects a non-zero and produces an output signal 552.
  • the output signal 552 is a clock of the latches 509, 510, 511, 512.
  • ALU speculative execution signal 224 Force 0 '(513)
  • the instruction execution result has no predictive element, and the instruction can be completed. This condition is determined by the logic gate 513 and distributed by the demultiplexer 514.
  • the logic gate 515 executes the so-called normal execution when the instruction terminated by the ALU is not speculative execution and does not match the result of the past, and generates a signal 555 assuming that the instruction can be completed. .
  • Signals 550, 553, 554, 5 55, and 556 all indicate the factors generating the operands generated by ALU 109 or ⁇ 117, summarized in bundled line 359, RBK301a, 301b, 30ic, 3 Old), Used to change the status flags in the RAI (302a, 302b, 302c, 302d).
  • FIG. 6 is a table showing the relationship between the state of an instruction waiting in the instruction execution management buffer 115 and the operation of the instruction issuing circuit 315.
  • D determined indicates that the operand has already been determined when the instruction is dispatched from the instruction decoy 113 to the instruction execution management buffer 115.
  • Specification confirmed means that one of the data-dependent preceding instructions, including itself, was executed speculatively, indicating that the contents of the operand may be incorrect.
  • “Invariant” means that the result of the ALU execution matches the predicted result, or the predicted value is output as the execution result in the HEU as it is, and the operand is determined.
  • Normal confirmation means a state in which the operand has been confirmed by any means other than “D confirmation”, “speculation confirmation”, or “invariant confirmation”.
  • the operand is either determined at the time of dispatch (D determined) or is determined after the preceding instruction is completed (normally determined). Life to ALU Only the operation that issues the command is performed.
  • the state of “speculation only” in the table is added.
  • the present invention is characterized in that an invariable state is provided in the condition of operand determination. By issuing instructions to the HEU instead of using them, ALU contention and congestion can be avoided.
  • FIG. 7 is a circuit diagram of the instruction issuing circuit 315.
  • the issuable condition determination circuits 700a, 700b, 700c, and 700d respectively correspond to four instructions that can be stored in the instruction buffer unit 300, and are the same as the internal circuits. Therefore, only 700a will be described.
  • the logic gates 701, 702, and 703 define the conditions under which the instruction can be issued from the operand definite conditions (7513, 7523, 7533, 7543) and (75113, 75213, 75313, 754 & :) input from the IRA. judge. That is, if two operands are determined by any of the factors, an instruction can be issued.
  • the logical gate 704 determines that the issued flag held by st (307a, 307b, 307c, 307d) is '0'. , An issue signal 780a is generated. If the instruction to be issued is a long-latency instruction, it is issued to both ALU 109 and HEU 117, so a double-issue signal 779a is generated from the long-latency signal 759, and the operand is determined. When the speculative determination and the invariant determination are included in the factors, the speculative execution signal 781a and the invariable execution signal 782a are generated by the logic gates 705, 706, 707, and 708.
  • Issue signals 780a, 780b, 780c, and 780d are encoded into three bits 778a, 778b, and 778c with priority by logical gates 709, 710, and 711.
  • the logic gates 712, 713, 714, 715, 716, 717 indicate whether the arithmetic unit of the ALU 109 or the HEU 117 is used, the ALU selection 775 and the HEU selection 776, and That instruction execution is speculative
  • the generated speculation state signal 777 is generated. Since the issued instruction changes its state in the instruction buffer 300, it outputs a signal 369 for setting the issued flag to the instruction buffer unit 300.
  • the schematic continues from Figure 8.
  • ALU # (759c, 760, 761, 762), RA (763, 764, 765, 766) based on the signals 778a, 778b, 778c indicating the instruction to be issued is selected by the selection circuit 718 in FIG. ), RB (767, 768, 769, 770) and ER (771, 772, 773, 774) are selected from each of the four, and based on the ALU selection signal 775 and HEU selection signal 776. To determine the issuer.
  • FIG. 9 is a circuit diagram of the instruction writing circuit 310. This circuit does not have a complicated logical function, only writes information on the instruction dispatched from the instruction decoder 113 to the instruction buffer unit 300. In this embodiment, instructions other than the target register number 0 are valid.
  • the non-zero condition examined logic gate one DOO 900, c the second signal to generate a Tawrite 356 and write- req 350 is the same signal.
  • Other signals are also latched by the latches 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911 and then output as signals for writing to the instruction buffer unit 300.
  • RAI and RBI are not given as instruction information, so Raid 352 and Rbid 353 are used as information of the instruction ID that the instruction should wait for, respectively.
  • RA hit 351 and Rbhit 354 mean that the search was successful in the search of the register map circuit 312. Therefore, if no hit has occurred, the operand has already been determined, and this is a signal that sets the D determination flag of RAI and RBI described later to “ ⁇ ”.
  • the initial values of the instruction writing circuit 310 ii st (307a, 307b, 307c, 307d) ci: RAl (302a, 302b, 302c, 302d) and RBI (301a, 301b, 301c, 301d) are determined.
  • the signal 234 is set directly to the long latency flag in st (307a, 307b, 307c, 307d) n. Is done. Although not shown as a circuit diagram, the flag of st, isuue has been completed, completion is possible, and the RS busy flag is initialized to ' ⁇ . Also, the speculation confirmation flag, normal confirmation flag, and invariant confirmation flag of RAI and RB1 are initialized to '0'.
  • FIG. 10 is a circuit diagram of the address decoder 311.
  • the empty entry management circuit 313 indicates a writable position of the instruction buffer unit 300 with a 3-bit bundle.
  • the logic gates 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, and 1008 decode these 3-bit signals, and any one of the write signals 1100, 1101, 1102, and 1103 becomes '1'. '.
  • the writing signals 1100 to 1103 are collectively described as a bundled line 1104 due to space limitations.
  • the circuit diagram of the empty entry management circuit 313 is shown in FIG.
  • the RS busy flag in st (307a, 307b, 307c, 307d) is always output as signals 1106, 1107, 1108, and 1109.
  • FIG. 12 is a circuit diagram of the completion circuit 316.
  • the complete decision circuit 1200 inputs the st (307a, 307b, 307c, 307d) force of the instruction buffer U300 and the held state information (755, 756, 757, 758). Select the instruction whose reset enable flag is' ⁇ . At this time, since there is a possibility that multiple compliable flags have been set, the priorities are set, and only one of the selection signals 1250, 1251, 1252, and 1253 becomes ⁇ . .
  • the instruction information selection circuit 1201 includes a target register (360, 361, 362, 363) and an operation result (364, 365, 366, 367) in the instruction information held in the instruction buffer unit 300.
  • the selection signals 1250, 1251, 1252, and 1253 are generated according to the selection signals 1250, 1251, 1252, and 1253. Select The selection result is collected into the logical gate 1203 for the target register and output as the completion register number 216. The operation result is collected in the logical gate 1204 and output as the completion data 217.
  • the instruction buffer reset circuit 1202 generates a signal 368 for resetting the RS busy flag held at st (308a, 308b, 308c, 308d) to "0" for the completed instruction.
  • FIG. 13 is a circuit diagram of st (307a, 307b, 307c, 307d) in the instruction buffer unit 300. Structurally, four instructions are the same circuit.
  • the long latency flag holding circuit 1300 holds a long latency flag indicating that the waiting instruction is a long latency instruction. Since this flag information is an attribute of the instruction and cannot be rewritten in particular, the information is retained by a normal latch.
  • the completion enable flag 1301 is set to “ ⁇ ” by the state update circuit 314 when it becomes possible to complete the instruction.
  • the initial value is set to '0' by the instruction writing circuit 310, and ' ⁇ ' is forcibly rewritten using the signal line 357.
  • the issued flag 1302 has the same circuit as the complete flag 1301.
  • the initial value is '0', and ' ⁇ ' is set when an instruction is issued by the instruction issuing circuit 315. Also, when the execution of the instruction is completed, it is reset to '0' by the state update circuit 314. This means that the speculatively executed instruction may be issued again when the prediction is incorrect. Because.
  • the RS busy flag 1303 indicates that the entry in the instruction buffer is in use. Reset to '0' when the instruction completes.
  • FIG. 14 is a circuit diagram of the result (308a, 308b, 308c, 308d). The four circuits are the same except that the address decoder 1400 differs depending on the position in the instruction buffer unit 300. Here, an example of result 308a is shown.
  • State update A signal 358 sent from the new circuit 314 is a bundle consisting of an instruction ID 1450 indicating the position of the instruction in which the operation result is completed in the instruction buffer 300 and result data 1451 which is data of the execution result of the instruction.
  • the state update circuit 314 may process up to two instructions from the ALU 109 t HEU 117 (one write to the result always), and terminate with the instruction ID 1454 of the instruction terminated by the ALU and ⁇ 117
  • the instruction ID 1455 of the executed instruction and the data 1452 and 1453 from each become the components of the bundle.
  • data is considered as 32 bits.
  • the role of the result is only to hold data, and when the address decoder 1400 decodes a request to write to the result 308a, a write clock 1456 is generated.
  • the data is selected by the selector 1401 and stored in the latch 1402.
  • the circuit of these eight circuits is all the same and the RAI 302a
  • the RAI 302a consists of a latch 1504 that holds the instruction ID waiting for completion as an operand, a D confirmation flag 1503, a normal confirmation flag 1500, a speculation confirmation flag 1501, and an invariable confirmation flag 1502.
  • the status update circuit 314 outputs the instruction ID of the completed instruction to the signal line 359. There are up to two instructions to be completed, one by the ALU 109 and one by the HEU 117. This instruction ID is The contents of the switch 1504 are compared with the comparators 1505 and 1506. If they match, the normal decision flag 1500, the speculation decision flag 1501, and the invariable decision flag 1502 are written. Output from the status update circuit. Rewrite to the contents.
  • the circuit diagram of Fig. 16 is shown in Chohachi (3093, 30913, 309 309, [ ⁇ (3053, 30513, 305 305 O, RB (304a, 304b, 304c, 304n, ALU # (306a, 306b, 306c, 306d ), ER (303a. 303b, 303c, 303d). Since all 20 circuits are the same, TA 309a will be described as an example.
  • the target register number 950 is composed of 5 bits, and the register number is taken into the latch 1600 when the write selection signal 1100 is “ ⁇ ”.
  • the instruction execution management buffer 115 causes the following instruction having a data dependency relationship to wait until the preceding instruction ends.
  • the ALU 109 sends the result to the instruction execution management buffer 115, and the succeeding instruction is issued to the ALU 109 or the HEU 117 when all necessary operands are obtained.
  • the execution result of ALU 109 is compared by execution result comparison unit 116, and when they match, the subsequent instruction is issued to HEU 117.
  • the HEU 117 is an arithmetic unit that simply outputs the past execution result of an instruction as a result, and does not substantially execute the instruction.
  • an instruction having a long execution time such as a load instruction is issued to both the ALU and the HEU without waiting for the end of the preceding instruction in the instruction execution management buffer 115.
  • an instruction is issued on ⁇ , subsequent instructions continue to be executed in HEU. If the execution result of the load instruction in the ALU matches the prediction, all subsequent instructions executed in the HEU can be completed. If they do not match, execute again. In this way, if the prediction based on the past history is valid for a certain instruction, the succeeding instruction is also likely to have the past history as it is as the execution result. ALU congestion caused by speculatively executing the subsequent instruction using the ALU after predicting the execution result of an instruction is reduced.
  • Instruction address 202 is composed of 32 bits. If the instruction word is aligned on a 4-byte boundary, one instruction can be addressed in 30 bits. 0 bit As for the high-order bits, bits 0 to 19 are divided into a tag part 1750 and a 20-29 bit set address part 1751.
  • the data memory 1700 is a two-port memory capable of simultaneous reading / writing. When a set address 1751 is input, the contents stored in the memory are output as the execution prediction result 210.
  • the tag memory 1701 is also a 2-port memory that can be read / written at the same time.
  • tag information corresponding to the high order of the instruction address appears on the output 1752.
  • the tag information is compared with the high order of the instruction address by the comparator 1704. If the tag information matches, a tag match signal 1753 is output.
  • the flag section 1703 stores a bit indicating the validity of the tag information read by the set address 1751.
  • the logical value “ ⁇ ” is valid, and when both the previous tag match signal 1753 and the read flag information 1754 are “'”, the history cache hit signal 209 is output.
  • the instruction execution result prediction signal 225 output from the instruction execution management buffer 115 when an instruction is issued is composed of an instruction address 212 and a prediction data part 214.
  • the address of the instruction completed by ALU 109 is input to history cache 111 as instruction address 212 of execution end, and the data of the execution result is input as ALU-DATA 211.
  • the instruction address is separated into a tag section 1755 and a set address section 1756 as in the case of cache read.
  • the performance management memory 1705 includes a performance recording unit 1706 and an evening management unit 1707.
  • the predicted result corresponding to the set address 1756 is read out from the result recording unit 1706 as a numerical value, and the comparator 1708 checks whether it is '0'.
  • the matching result is output as the low performance signal 1757.
  • the upper instruction address is read from the tag management unit 1707, and the predicted actual information read by the comparator 1709 is read by the instruction It is verified whether it is related to the dress 212.
  • the output of comparator 1709 is output as proven signal 1758. When these two signals are both “'”, a Guard cache write signal 1759 is generated.
  • the Guard cache 1709 is a fully-associative associative memory. When the instruction address 212 is registered, “ ⁇ ” is output to the output 1760, and “0” is output otherwise.
  • the Guard cache write signal is 1759, the instruction address 212 is registered.
  • the logic gates 1710 and 1711 generate write signals 1761 for the data memory 1700, the tag memory 1702, and the performance management memory 1705.
  • the write signal 1761 is 1 '
  • the contents of ALU-DATA 211 which is the execution result of the instruction, are written to the data memory 1700, and the tag 1755 of the memory address is written to the tag memory 1701, and at the same time, the flag is written.
  • ' ⁇ is written in the section 1703.
  • the result recording unit 1706 of the result management memory 1705 increments the value held by the invariant detection signal 213 when the power is 1 ', and writes the value 1 when it is' 0'.
  • the tag section 1755 of the instruction address is written in the tag management section 1707.
  • “ ⁇ ” is output at the output 1760, so that the write signal 1761 to the data memory 1700, tag memory 1702, and result management memory 1705 is “0”. Becomes Therefore, the execution result of the instruction whose address is registered in the Guard cache 1709 is not written in the data memory 1700.
  • the history cache 111 described above is organized as follows from the viewpoint of operation.
  • the instruction execution result is returned from the ALU, if the instruction is already registered in the history cache and the predicted result is not good (actual value is 0), the instruction address is stored in the Guard cache. be registered. The instruction address registered in the Guard cache is once again stored in the data memory 1700. W
  • speculative execution based on prediction is performed only for an instruction type having a long execution latency such as a load instruction.
  • an instruction type having a long execution latency such as a load instruction.
  • the instructions waiting in the instruction execution management buffer include instructions that are waiting for the execution of already issued instructions and those that are waiting for the issuance and execution of preceding instructions that have not been issued. up order exists. It is considered that the latter instruction has a long waiting time until it is executed.
  • this type of instruction is also subjected to speculative execution based on prediction.
  • the instruction issuing circuit 315 sends the target register number of the instruction to be issued and the instruction ID which is the position information of the issued instruction in the instruction buffer unit 300 to the issue end signal 370. Then, it is transmitted to the state update circuit 314 and the register map circuit 312.
  • the status update circuit 314 notifies the instruction ID of the issued instruction to the entire RAI (302a, 302b, 302c, 302d) and RBI (301a, 301b, 301c, 301d).
  • RAI (302a, 302b, 302c, 302d) i RBI (30ia, 301b, 301c, 301d) indicates that the preceding instruction has already been issued to the circuit shown in Fig. 15 as shown in Fig.
  • Instruction issuing circuit 315 Examines the contents of the issued state holding circuit of the instruction to be issued, and issues instructions speculatively unless both RAI and RBI have already been issued. In some instructions, the preceding instruction may have been issued before being registered in the instruction execution management buffer.
  • the issue end signal 370 is also input to the register map circuit 312, and the instruction issue circuit 315 notifies the target register number of the issued instruction.
  • the operand register of the instruction to be registered in the instruction execution management buffer if the preceding instruction has already been issued, “'” is returned to the RA issued signal 371 and the RB issued signal 372.
  • the instruction writing circuit 310 sets the issued state holding circuit to “ ⁇ ” when writing the instruction to the instruction buffer unit 300. In this way, it is possible to make an instruction that is a target of speculative execution based on prediction a long-time instruction that stays in the instruction execution management buffer.
  • the execution result is predicted based on the past history, and when the execution result matches the actual execution result, the subsequent instruction is not speculatively executed by the ALU but is processed by the HEU.
  • the subsequent instruction is not speculatively executed using the same ALU in the prior art from using the ALU and hindering the execution of other instructions due to ALU congestion.
  • the history cache can be unduly used by instructions with a low prediction correctness ratio. Prevents the use of a flash. As described above, the instruction can be executed without waiting for the completion of the execution of the preceding instruction, and the entire processing time is reduced.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

明 細 書
情報処理装置 技術分野
' 本発明はプログラムされた命令語に従い所定の動作を行う情報処理装 置に係り、 特に命令語間に参照データの依存関係が存在する場合におい て、 情報処理装置の処理時間を短縮する技術に関する。 背景技術
マイクロプロセッサに代表される情報処理装置では、 プログラムされ た命令語によって指定される演算を実施することにより、 所望の情報処 理動作を実施する。 命令語の読み込みならびに演算の実行は命令語の順 序に従うのが原則であり、 このことからプログラム上、 先行する命令に よって生成されるデータを参照しょう とする後続命令は、 先行命令の実 行終了を待たねばならない。 これは、 いわゆるデータ依存によって後続 命令はどんなに速く とも先行命令を追い越すことができないという制限 である。
情報処理装置の処理時間短縮化の観点からは、 何らかの予測手段によ つて先行命令の実行結果を予測し、 その予測に基づいて後続命令の実行 を開始しない限り上述の制限を越えた時間短縮は不可能である。 この例 に限らず、 予測に基づいて命令実行する方式は投機的な実行、 あるいは 投機実行と呼ばれ、 ここで述べたデータ依存関係のある命令の投機実行 方式については次の技術が知られている。
まず、 "IBM Journal of R&D, Vol.37 No.4 July 1993年発行 頁 547- 564 "および EICE Transaciton on Information and Sys terns, Vol. E79-D No. 11 November 1996年発行 頁 1523 - 1532 " ( 以下 「文献 1」 という。 ) に開示されている技術は、 情報処理装置外部 のメモリから情報処理装置内部のレジスタへデータを読み込む口一 ド命 令に関して、 ロー ドすべきデータが格納されているメモリ上のァ ドレス、 すなわちロー ドア ドレスを予測する。 ロー ド命令にとって口一 ドア ドレ スは実行に不可欠な参照情報であり、 一般には口一 ドア ドレスそのもの、 もしく は口一 ドア ドレス計算に必要な情報が先行命令によつて生成され、 ロー ド命令がそれを参照するという関係にある。 また、 ロー ド命令の実 行時間は一般に長く、 少しでも早く ロー ド命令の実行開始をすることが 望ま しい。 文献 1 に開示されている技術では、 ロー ド命令が情報処理装 置に読み込まれた際にその口一 ド命令の格納されているァ ドレスをキー として、 過去にその口一ド命令が使用した口一 ドア ドレスを検索可能な キヤッシュ的な記憶機構を設け、 実際に口一 ドア ドレスを確定する先行 命令の実行終了を待たずに、 ロー ドア ドレスを予測する。 このロー ドア ドレスに基づいてメモリからのロー ド動作は開始する。 一方、 当該予測 に基づかないロー ドア ドレス計算も並行して実行される。 この 2系統に よる口一 ドア ドレス計算結果は照合され、 一致した場合には予測に基づ いてメモリからのロー ドを先行した分だけ全体の処理時間が短縮される。 一致しない場合は本来のロー ド命令の実行時間となる。 なお、 ロー ド命 令によって口一 ドされるデータを参照する命令は投機的に実行されるこ となく、 ロー ドア ドレス予測の正当性が判定されるまで実行が待たされ る。
文献 1 では予測する内容がロー ドア ドレスに限定されており、 ロー ド した結果を参照する命令等を投機的に実行する点については開示されて いない。 この点に関して、 一般の命令についてその演算結果を予測し、 その予測された演算結果を参照する後続命令を投機実行するように拡張 された技 力 '24th International Symposium on Computer Arch itecture ( ISCA) 1997年開催、 会議録 頁 194 - 205 ", " 29th Annual IEEE/ACM International Symposium on Microarchitecture ( M ICRO-29) 頁 226 - 237" (以下 「文献 2」 という。 ) 、 特開昭 60 12983 9号公報 (以下 「文献 3」 という。 ) 、 特開昭 62-84340号公報 (以下 「 文献 4」 という。 ) 、 特開平 187634号公報 (以下 「文献 5」 という。 ) に示されている。 文献 2乃至 5に開示されている技術はいずれも過去 の命令実行結果を格納する記憶装置を情報処理内に設け、 命令が情報処 理装置内に読み込まれた際、 あるいは実行されよう と したときに、 過去 の実行結果を今回の実行の予測として出力する。 もし、 後続命令にデー タ依存関係がある場合には、 この予測結果が出力された時点で投機的に 実行が開始する。 このように、 データ依存関係のある命令は一つながり の命令系列として順に投機実行されていく。 これらの技術では本来の命 令実行結果と予測結果は全て照合され、 もし一致しなかった場合には、 不一致の発生した直後のデータ依存がある命令から再実行される。 つま り、 予測に基づいて投機的に実行された結果は全て破棄され、 命令実行 が再びやり直される。 発明の開示
上述のように、 上記文献 1乃至 5に開示されている実行結果を予測し データ依存関係のある後続命令を投機実行する情報処理装置では、 投機 実行の際に演算器が使用され、 もし予測がはずれた際には再度同じ演算 器が使用される。 従って、 演算器の使用頻度が増大し、 演算器の競合に よる処理時間低下をまねく危険性がある。 この問題点については、 上記 文献 1乃至 5では検討されておらず、 本願発明者の検討の結果、 見出さ れたものである。
また、 上記文献 1乃至 5に開示されている技術では、 過去の演算結果 を格納する記憶手段が必要である。 その容量は命令に対応してその演算 結果を格納することから、 いわゆる命令キヤ ッシュ程度の規模を持つ記 憶手段が必要であると想定される。 一般的な情報処理装置の場合、 命令 キヤ ッシュゃデータキヤ ッ シュを増設する方が処理時間短縮には効果的 である。 従って、 面積の限られた装置内に、 命令実行の予測に用いる記 憶手段を設けるとしても、 一般的には、 命令キャ ッ シュやデータキヤ ッ シュの容量を確保することの方が優先されるため、 命令実行の予測に用 いる記憶手段は小規模なものにならざるを得ない。
そこで、 本発明の第 1 の目的は、 データ依存関係のある後続命令を投 機的に実行する際に、 本来の演算器を使用せず、 演算器競合を回避する ことにある。
また、 本発明の第 2の目的は、 小規模な実行結果の記憶手段を用いて も、 高い予測正当率を確保する技術を提供することにある。
上記第 1 の目的は、 次の手段により解決される。 すなわち、 過去の命 令実行結果をそのままその命令の実行結果として出力する履歴演算器と、 オペラン ドが過去の値と同一の命令を履歴演算器に発行する命令発行回 路を設け、 投機実行そのものを省略する。 これにより演算器の競合を回 避できる。
上記第 2の目的は、 次の手段により解決される。 すなわち、 過去の演 算結果を格納する履歴キヤ ッ シュ内に予測正当率の低い命令の命令ァ ド レスを格納するガー ドキヤ ッシュを設け、 カー ドキヤ ッシュに登録され ているァ ドレスの命令が再び履歴キヤ ッシュに登録されることを抑止す る。 これにより履歴キヤ ッシュには予測正当率の高い命令が保持されこ ととなり、 小規模な実行結果の記憶手段を用いても、 高い予測正当率を 確保することができる。 図面の簡単な説明
第 1図は、 本発明の実施の形態を示す情報処理装置である。
第 2図は、 本発明による情報処理装置の動作を示すフローチヤ一卜で ある。
第 3図は、 命令実行管理バッファの構成図である。
第 4図は、 レジスタマップ回路の回路図である。
第 5図は、 状態更新回路の回路図である。
第 6図は、 命令発行回路の動作を示す説明図である。
第 7図は、 命令発行回路の回路図である。
第 8図は、 命令発行回路の回路図である。
第 9図は、 命令書き込み回路の回路図である。
第 1 0図は、 ァ ドレスデコーダの回路図である。
第 1 1図は、 空きェン ト リ 一管理回路の回路図である。
第 1 2図は、 コンプリーショ ン回路の回路図である。
第 1 3図は、 st回路の回路図である。
第 1 4図は、 resultセルの回路図である。
第 1 5図は、 RAI, RBI の回路図である。
第 1 6図は、 命令バッファ部記憶素子の回路図である。
第 1 7図は、 履歴キャ ッシュの回路図である。
第 1 8図は、 命令フォーマツ ト図である。
第 1 9図は、 実施形態の変形例における RAI, RB1 の回路図である。 第 2 0図は、 実施形態の変形例における命令実行管理バッファである。 発明を実施するための最良の形態
まず、 第 1 図を用いて本発明の一実施形態である情報処理装置を説明 する。 第 1 図は情報処理装置のブロ ック図である。 情報処理装置を制 御する命令語は命令キヤッシュ 107 によって、 主記憶装置 108から読み 込まれる。 主記憶装置 108 は半導体メモリ等で構成され、 命令語および 命令実行に必要なデータが格納されている。 命令キャッ シュ 107の構造 ならびに機能はマイクロプロセッサ等で一般に使用されている技術であ り、 本発明の内容と深く 関連がないため詳細な説明は省略する。 信号線 2 01 は命令キヤ ッシュが読み込むべき命令語のァ ドレスを主記憶装置に伝 えるァ ドレス線であり、 命令語は信号線 200を経由して命令キャ ッシュ 1 07内に格納される。 この情報処理装置が実行する命令のァ ドレスはプロ グラムカウンタ 110 によって示される。 この実施形態ではァ ドレスを 32 ビッ トで表し、 1命令語は 32 ビッ トを使用するものとする。 命令語は主 記憶装置 108 内で 4バイ ト(32 ビッ ト)毎の境界に必ず整列されていると すると、 1命令語を指示すのには 30 ビッ ト必要である。 このことから、 プログラムカウンタ 110 は 30 ビッ トのレジスタで実現される。 プロダラ ムカウンタ 110の内容は毎クロックサイクル毎に命令ァ ドレス 202 とし て出力され、 このア ドレスに対応する命令語が命令キャ ッシュ 107の信 号線 203へ出力される。 プログラムカウンタ 110の値は通常加算器 130 によって + 1つづ更新される。 ただし、 ALU 109 にて分岐命令が実行さ れ、 実行すべき命令のァ ドレスが変更される際には、 セレクタ 114 によ つて新しい命令のァ ドレスがプログラムカウンタ 110 に入る。
命令デコーダ 113 は信号線 203 に出力された命令語をデコー ドする。 また、 命令ア ドレス 202 はラ ッチ 112 によって、 命令キヤ ッシュ 107 と 命令デコーダ 113の処理時間相当分遅延され、 命令命令実行管理バッフ マ 115の入力となる。 命令語は第 1 8図に示すように 32 ビッ 卜で表現さ れ、 最初の oped フィ ール ド 1801 は命令の種別を表し命令デコーダ 113 によつて使用する演算器を識別する ALU番号 204 にデコー ドされる。 RT フィールド 1802 は演算結果が格納される レジスタの番号を表す。 命令デ コーダ 113 はフィールドの切り出しだけを行い、 RT番号 205 として出力 する。 また、 RA フィールド 1803および RBフィ ールド 1804は命令語に よる演算の入力値 (オペラン ド) を持つレジスタ (オペラン ドレジスタ ) の番号である。 命令デコーダ 113 は RTフィールド 1802 と同様にフィ —ルドの切り出しだけを行い、 それぞれ RA番号 206 と RB番号 207 とし て出力する。 Xフィールド 1805 は命令の拡張のために用い、 本実施の形 態では利用しない。 また命令デコーダ 113 は oped フィ 一ルド 1801 によ つて示される演算がロー ド命令であるときに長レイテンシ信号 208を論 理値 ' Γ にセッ 卜する。 この長レイテンシ信号 208 は後に述べる命令実行 管理バッファ 115 の動作において、 演算結果に予測値を充てることを意 味しており、 この動作の対象となる命令を区別する信号である。 したが つて、 長レイテンシ信号 208が ' Γ にセッ 卜されるのはロー ド命令による 場合に限られず、 他の命令によつても長レイテンシ信号 208が' Γ にセッ 卜されるよう拡張することも可能である。
履歴キヤ ッシュ 111 は、 命令ァ ドレスを入力と し、 その命令の過去に 実行された際の演算結果を出力するキヤ ッシュである。 本発明において 主要な役割を果たすものの一つである。 詳細な構造は後に説明するが、 命令ア ドレス 202の 32 ビッ トは上位より 0 - 31 のビッ 卜ア ドレスが割り 当てられており、 この 20 ビッ トから 29 ビッ トまでの 10 ビッ トまでを用 いて過去の演算結果が格納されたメモリを参照する。 命令ァ ドレス 202 の 0 ビッ トから 19 ビッ トまでは履歴キヤ ッシュ 111 を参照する際のタグ ビッ トと して用いられ、 履歴キャ ッシュ 111 内に格納されているデータ の有効性判定に用いる。 命令ァ ドレス 202 に該当する命令が命令キヤ ッ シュ 111 に格納されていた場合には命令キヤ ッ シュ ヒ ッ ト信号 209 が論 理値 ' Γ にセッ トされ、 命令実行結果の予測値が実行結果予測 210 に出力 される。 履歴キャ ッシュ 111 の更新は次の通りである。 ALU 109で実行 された命令のァ ドレスは実行終了命令ァ ドレス 212、 実行結果は ALU-DA TA 211 として履歴キャ ッシュ 111 に入力される。 後述する履歴キヤ ッ シ ュ 111 内部での詳細な制御を除き、 原則的に ALU 109 で計算された結果 と命令ァ ドレスとの対応は全て履歴キャ ッシュ 111への登録対象になる。 ただし、 不変検出信号 213が論理値 ' Γをとるとき、 命令実行は予測通り 実行されたものとして、 履歴キヤッシュ 111への登録は抑止される。 実行結果比較ュニッ ト 116 は命令の実行予測結果と実際の ALU 109 に よる実行結果とを比較する。 命令の実行予測結果は履歴キャッシュ 111 から実行結果予測 210 として出力され、 命令実行管理バッファ 115から 終了予測 214 として出力される。 着目 している命令に関しては実行結果 予測 210 と終了予測 214の値は同一内容である。 一方、 本来の命令実行 終了結果は ALU- DATA 211 に出力され、 実行結果比較ュニッ ト 116 にて 比較される。 実行結果比較ユニッ ト 116 は実質的に比較器のみから構成 され、 終了予測 214 と ALU- DATA 211 とが一致するときに不変検出信号 213 に論理値' Γを出力する。
ALU 109 と命令実行管理バッファ 115 との接続関係は次のとおりであ る。 226, 227 はそれぞれ発行される命令のオペラン ドレジスタ RA, RBの 番号を示す信号、 228 は発行される命令が使用する演算器の種類を識別す る信号、 229 は命令のタ一ゲッ ト レジス夕 RTの番号を示す信号、 230 は 命令実行が投機的に実行されることを示す信号、 そして 231 は命令実行 管理バッファ 115 内のどの命令が発行されたかを識別する ID信号である。
ΗΕϋ 117 は履歴評価ユニッ ト(Histrical Evaluation Unit)を略し て命名した演算ュニッ トであり、 本発明独自のュニッ トである。 機能は 単に、 命令の実行予測結果をそのまま演算結果と して HEU- DATA 215 と して出力するだけであり、 後述するように他の入出力信号に関しても論 理的な演算なしで、 そのまま出力するだけである。
レジス夕ファイル 118 は 32 ビッ 卜のレジスタを 3 2本備えている。 AL ϋ 109 からオペラン ドレジスタ番号がオペラン ド要求 119 と して与えら れ、 該当する レジスタ番号のレジスタ内容をオペラン ドデータ 120 と し て返す。 レジスタファイル 118の内容を更新するのは命令実行管理バッ ファ 115 である。 命令実行管理バッファ 115 は命令デコーダ 113から命 令が転送され (この転送を命令のディ スパッチと呼ぶ) 、 命令の実行結 果が完全に確定するまでの間 (この確定をコンプリ一ショ ンと呼ぶ) 、 後述する命令実行に関する全ての情報を管理する。 コンプリーショ ン可 能な命令は、 いずれかのレジスタに値を出力する訳であり、 そのレジス 夕番号がコンプリ一ショ ンレジスタ番号 216 と して、 データがコンプリ —ショ ンデータ 217 としてレジスタファイル 118 に出力される。
以上が本発明の実施形態の概略構成の説明である。
次に、 第 2図のフローチヤ一 トを用いて本実施形態の情報処理装置を 動作面から説明する。
本実施形態の情報処理装置には大別して次の動作モ一 ドが存在する。 一つは、 通常のプロセッサと同様にデータ依存関係のある先行命令の終 了を待ち、 その終了の後に後続命令を実行するモー ドである。 このモ一 ドを通常モー ドと呼ぶ。 二つ目は命令実行結果を実行の予測結果と比較 し、 もし全てのオペラン ドが予測と同一 (オペラン ドを生成する命令の 実行結果が予測通り) である命令については、 通常の演算器での演算を 行わずに予測結果をあたかも演算結果であるとするモー ドである。 この 二番目のモー ドを不変伝播モー ドと定義する。 つま り、 全ての入力デ一 夕が予測、 すなわち過去の実行結果と同じであった場合には、 いま着目 している命令も過去と同じ結果を生成するはずであり、 実質的な演算は 省略可能であるという考えに基づく動作である。 三つ目のモー ドは従来 技術における実行結果予測の利用法と同様に、 実行予測結果に基づいて 後続命令を投機的に実行するモー ドである。 これを投機実行モー ドと呼 ぶ。 不変伝播モー ドでも予測結果を利用するが、 実際の実行結果と一致 する保証がある点が投機実行モー ドと異なる点である。
以上、 3つのモー ドは第 1 図の命令実行管理バッファ 1 1 5 の機能とし て実現され、 第 2図のフローチヤ一 卜にしたがって情報処理装置全体の 命令実行が制御される。 まず、 履歴キャ ッシュ 1 1 1 に命令ア ドレスが入 力され、 命令の実行予測結果が取り出される( 2 0 0 1, 2 0 0 2 )。 無論、 履歴 キヤ ッ シュに当該命令ァ ドレスが登録されていない場合も存在するが、 そのような場合には通常モー ドしかありえないため、 それについての説 明は省略する。 命令は命令デコーダ 1 1 3でデコー ドされ、 もしロー ド命 令のように長いレイテンシを要する場合には投機実行モー ドを実行する( 2 00 3 )。 投機実行の利点は本来の命令実行終了を待たずに後続命令の実行 が開始できることにあり、 命令実行サイクル数、 つま り レイテンシが長 い命令でなければ投機実行の効果が少ない。 そこで、 2 0 0 3 において、 長 レイテンシを要する命令であるか否かを判断し、 長レイテンシの場合に は投機実行モー ドを実行するように制御する。 これにより、 投機実行の 効果の少ない短レイテンシ命令が投機的実行されることによる演算器の 混雑が解消される。 長レンテンシでない命令は必ず ALL) 109 にて実行さ れ、 その実行結果は実行結果比較ュニッ ト 116で履歴キヤ ッシュ 111 の 出力結果と照合される( 2004 )。 両者が一致しない場合には、 実行結果の 予測情報を活用することは不可能であり、 後続命令はオペラン ドが計算 済みになったことを検知して命令実行を開始する(2005 )。 これが先に述 ベた通常モー ドに相当する。 第 2図のフローチヤ一 卜上 2004の分岐に戻 り、 命令実行結果と予測結果が一致した時には、 実行結果比較ュニッ ト 1 16 から不変検出信号 213が出力され、 命令実行管理バッファ 115 内で待 機している後続命令に、 演算結果と予測結果が一致していることが伝え られる。 もし、 待機している命令のオペラン ド全てが予測結果と同じで ある場合には、 先に述べた原理により、 その待機している命令の実行結 果も予測と同じものになるはずである。 具体的には待機していた命令は H EU 117 に転送され、 予測結果をそのまま実行結果とする。 この結果をさ らに命令実行管理バッファ 115 内でオペラン ドとして待っている命令が 存在する場合には、 やはり HEU 117 に転送される。 このように、 一旦、 実際の演算結果と予測結果が一致すると、 その演算結果をオペラン ドと している命令も予測通りの結果になる可能性があり、 いずれかのオペラ ン ドが変化する命令に遭遇するまで、 上記の連鎖反応的動作は継続可能 である。 この、 一連の動作を不変伝播( 2006 )と呼び、 不変伝播によって HEU 117の機能だけで演算を実質的に完了することができる。 不変伝播 によってえられた実行結果 (予測結果に等しい) は真の実行結果と等し いため、 レジスタファイル 118 に反映することが可能である(2007)。 長レイテンシ命令の場合には投機実行モー ドの動作が行われる( 2003 )。 投機実行モー ドでは予測による実行結果の正当性が確認される前に後続 W
12
命令の実行を開始する。 つま り、 長レイテンシ命令は命令実行管理バッ ファ 115から ALU 109 と HEU 117の両方に転送される( 2009 )。 このよ う に命令実行管理バッ フ ァ 115から ALU 109あるいは HEU 117へ命令 が転送されることを命令発行と呼ぶ。 HEU 117からは予測に基づく結果 が実行結果であると、 先の不変伝播と同様の経路で命令実行管理バッフ ァ 115内で待機している命令に伝えられる。 以降は先に述べた連鎖反応 的不変伝播動作が繰り返される( 2008 )。 ただし、 投機実行モー ドではた とえ不変伝播によって予測に基づく計算結果が求まろう とも、 真の結果 と して考えることはできない。 つま り、 長レイテンシ命令は ALU 109 と HEU 117の両方に発行されている訳であるから、 ALU 109での実行が終 了した時点で予測が正しかったか否かを判定することができる(2010)。 この判定は実行結果比較ュニッ ト 116にて実施される。 もし、 予測と真 の実行結果が一致した場合には(2010)、 投機的な不変伝播動作が全て正 しかったことを意味し、 当該、 長レイテンシ命令と、 不変伝播によって 予測結果を実行結果とした命令は全て、 コンプリーショ ン可能となる(20 11)。 さらに、 予測と真の実行結果が不一致の場合には、 データ依存関係 のある全命令を ALU 109にて再実行する(2012)。
以上が、 本実施形態における情報処理装置の通常モー ド、 投機モー ド、 不変伝播モー ドの動作説明である。 本発明による情報処理装置では、 過 去の履歴に基づいて予測した値が正当な場合には、 その値を参照する後 続命令もまた、 過去と同じ結果を出力するであろう という考えに基づき、 本来使用すべき演算器を用いない不変伝播なる方法にて予測に基づく実 行結果を求める。 これにより、 演算器の混雑が緩和される。
次に、 上述の情報処理装置の動作を実現する各部詳細を説明する。
第 3図は命令実行管理バッファ 115の構成図である。 命令バッファ部 3 00 は実行前の命令を待機させるためのバッファを構成している。 命令バ ッ フ ァ部 300 は命令の構成情報を格納する以下のメモリ素子から成る。 R BI(301a, 301b, 301c, 301d)はオペラ ン ドレジスタ RBの値を生成する命 令が格納されている、 命令バッファ 300 内の位置情報を格納する。 RAK 302a, 302b, 302c, 302d) ii RBI と同じ物理的構成を持ち、 オペラ ン ドレ ジスタ RA の値を生成する命令が格納されている、 命令バッファ 300の位 置情報(これを命令 10 と定義する)を格納する。 58(3033, 30313, 303(, 3 03d)は予測される実行結果を格納する。 RB( 304a, 304b.304c, 304d)は オペラ ン ドレジスタ RAのレジスタ番号を格納する。 RA(305a, 305 b, 305 c, 305 d)はオペラン ドレジスタ RBのレジスタ番号を格納する。 ALU#(30 6a, 306 b, 306 c, 306 d)は命令デコーダ 113でデコ一 ドされた命令が使用 する演算器を識別する番号を格納する。 st( 307a, 307b, 307c, 307d)は 格納されている命令の状態を管理するために、 状態に対応したフラダビ ッ 卜を持つ。 result( 308a, 308b, 308c, 308d)は命令の実行結果が格納 される。 TA( 309a, 309b, 309c, 309d)にはは命令のターゲッ ト レジスタ 番号が格納される。 縦 1列の例えば RBI 301a, RAI 302a, ER 303a, RB 304a, RA 305a, ALU# 306a, st 307a, result 308a, TA 309aは一命 令分を格納するのに用いられる。 したがって、 第 3図に示した例では 4 命令を命令バッファ部 300 に格納することができる。 この格納可能な命 令数は特に本発明で限定されるものではなく、 任意の命令数に拡張可能 である。
命令書き込み回路 310 は命令デコーダ 113および履歴キヤッシュ 111 から命令実行管理バッファ 115へ送られてきた ALL)番号 204, RT番号 20 5, RA番号 206, RB番号 207,予測結果 218を命令バッ フ ァ部 300 に書き 込む。 ここで、 予測結果 218 は、 第 1 図の履歴キヤ ッシュ 111 からの実 行結果予測 210 とラ ッチ 112から出力される命令ァ ドレス 219を束ねた 束線である。 命令書き込みの際、 命令書き込み回路 310は write- req信 号を論理的' 1'にセッ 卜 し、 書き込み要求があることをア ドレスデコーダ 311 に伝える。 また、 RBI(301a, 301b, 301c, 301d)および RAI( 302a, 3 02b, 302c, 302d)へ格納するデータを生成する。 つま り、 RT番号 205, R A番号 206, RB番号 207は命令書き込み回路 310に入力されると同時に レジスタまぷ回路 312へも入力され、 RA番号、 BR番号で示される レジス 夕がどの先行命令によつて生成されるのかを命令 IDへの変換結果が Rai d 352, Rbid 353と して命令書き込み回路 310へ返される。 RBI(301a, 301 b, 301c, 301d)および RAI(302a, 302b, 302c, 302d)に格納される命 令 IDはこの Raid 352, Rbid 353である。 命令バッファ部 300の空き を管理するのは、 空きエン ト リ一管理回路 313である。 空きエン ト リ一 管理回路 313は全 st(307a, 307b, 307c, 307d )に示される格納している 命令があるか否かの情報を基に、 空いている命令バッファ部 300の位置 情報を命令 ID 355 と して出力する。
状態更新回路 314は HEU 117 と ALU 109から実行結果が返される毎 に、 st(307a, 307b, 307c, 307d)で示されるコンプリーショ ン可否情報 を更新する。 また、 実行結果が返されるときには実行した命令の ID (命 令バッファ部 300内の位置情報) が ΗΕϋ終了信号 220, ALU終了信号 221 として返され、 全 RBI (301a, 301b, 301c, 301d)および RAI ( 302a, 302 b, 302c, 302d)に告知される。 後述するように、 RBし RAI は告知された命 令 IDがオペラン ドを生成する命令と して待っていたものであれば、 自己 で管理しているオペラン ドの準備完了を示すフラグを更新する。
命令発行回路 315は全
Figure imgf000016_0001
a, 302b, 302c, 302d)の保持する状態を調べ、 命令を実行するのに必要な オペラン ドが揃った命令を ALU 109または HEU 117へ転送する。
次に命令実行管理バッファ 115を構成する各部分の詳細を説明する。 第 4図はレジスタマツプ回路 312の回路図である。 レジスタマップ回 路 312の基本動作は次の二つである。 一つは命令実行によつて変更され る RT番号 205の登録である。 Tawrite 356が論理値 ' Γに設定される ときは、 新しい命令が命令実行管理バッファ 115 に登録されることを意 味し、 その命令によってターゲッ ト レジスタ(RT)の内容が将来変化する ことになる。 命令 ID 355は命令バッファ部 300内の空き領域を示して おり、 論理ゲ一 ト 400, 401, 402は 3 ビッ ト表現の命令 IDを 4 ビッ 卜の いづれかが' Γ となるよう、 デコー ドする。 4 ビッ 卜にデコー ドする理由 は命令バッファ部 300に 4命令格納可能であることに対応する。 書き込 み用クロックは論理ゲー ト 403, 404, 405, 406によって生成される。 デ コー ドされた命令 ID 450, 451, 452, 453のいずれか一つ力 Γであり、 RT番号 205はフ リ ップフロ ップ 407, 408, 409, 410のいづれか一個所と フ リ ップフロップ 411, 412, 413, 414のいづれか一個所に記録される。 以上が RT番号の登録である。
レジスタマップ回路 312は他にオペラ ン ドレジスタ番号変換機能を持 つ。 オペラ ン ドレジスタ番号は RA番号 206および RB番号 207と して入 力される。 仮に、 RA番号 206がフ リ ップフロップ 408の保持している番 号に一致しているとすると、 その一致は比較器 416にて検出され、 RAhi t 351 に ' Γがセッ トされる。 この検出信号はさ らにセレクタ 424を制 御し、 Raid 352に" 2"を出力する。 これは、 命令バッファ部 300内の位 置関係として 2番めの命令が R A番号 206で示されたオペラン ドレジスタ を書き換えるという ことを意味する。 以上説明したフ リ ップフロップ 408 と比較器 416 とセレクタ 424の関係は他のフリ ップフロップ、 比較器、 セレクタの組( 407, 4i5, 423 )(409, 417, 425)(410, 418, 426)(411, 41 9, 427 )(412, 420, 428)(413, 421, 429)(414, 422, 430)にぉぃても同 様である。 したがって、 入力されたオペラン ドレジスタ番号はそれを書 き換える命令の命令 ID (命令バッ フ ァ部 300 の位置情報)に変換され、 も し、 上記の検索にて該当する情報がないときには RAhit 351, Rbhit 35 4 は' 0 ' になる。
第 5図は状態更新回路 314の回路図である。 HEU 117からは HEU終了 信号 220 と して命令 IDカ 、 HEU-DATA 215 には実行結果と しての予測値 が、 また HEU に発行された命令が投機的である場合には HEU投機実行信 号 221 が返される。 ΗΕϋ終了信号 220 は論理ゲー ト 500, 501 によって、 非 0であることがチヱ ックされる。 これは HEU 117 からの信号が有効で あることを意味する。 論理ゲ一 ト 501 の出力信号 550 は二つの用途に使 用され、 まず、 ラ ッチ 502, 503, 504のクロックとなり、 ΗΕϋ 117から の信号をラ ッチする。 また、 予測に基づきオペラン ドが決定したことも 意味する信号であるため、 その決定根拠を知らせるために、 全 RBI(301a, 3011:, 301 3011)ぉょび
Figure imgf000018_0001
, 30213, 302 302(1)へラ ッチ 502で ラッチされている命令 ID 359 と共に配信される。 ΗΕϋ-DATA 215 は一 旦ラ ッチ 503 にラ ッチされ、 result(308a, 308b, 308c, 308d)へ格納さ れる。 このとき、 いずれの result に格納されるか識別するために、 命令 ID 359 もあわせて束線 358 と して配信される。 HEU投機実行信号 221 は 終了結果が投機的予測に基づいていることを意味する。 論理ゲー ト 505 は HEU投機実行信号 221 の否定と出力信号 550 の ANDを生成する。 生成 された信号はデマルチプレクサ 506 によって、 命令 IDが示す位置の com plete可信号 357を ' Γ にセッ トする。
ALU 109から送られてく る ALU終了信号 223 は論理ゲー ト 507, 508 で非 0が検出され、 出力信号 552が生成される。 出力信号 552はラ ッチ 509, 510, 511, 512のク ロ ックとなる。 ALU投機実行信号 224力 0'のと き(513)命令実行結果は予測的要素がなく 、 命令のコンプリ 一 トが可能で ある。 この条件を論理ゲー ト 513にて判定し、 デマルチプレクサ 514で 分配する。 論理ゲー ト 515 は ALUで終了した命令が投機実行でなく 、 過 去の予測結果と一致しないとき、 いわゆる普通に実行し、 命令のコンプ リ一 卜が可能になったと して信号 555を生成する。 信号 550, 553, 554, 5 55, 556はすべて ALU 109または ΗΕϋ 117で生成されたオペラン ドの生 成要因を示しており、 束線 359にまとめられ、 RBK301a, 301b, 30ic, 3 Old), RAI ( 302a, 302b, 302c, 302 d)内の状態フラグを変更するのに用い られる。
次に第 6図、 第 7図、 第 8図を用いて命令発行回路 315の動作と回路 を説明する。 第 6図は命令実行管理バッファ 115で待機中の命令の状態 と命令発行回路 315の動作との関連を示す表である。 表の中で" D確定" とは命令デコ一夕 113から命令実行管理バッファ 115へ命令をディ スパ ツチする際に既にオペラ ン ドが確定していたことを表す。 "投機確定"と は自身を含むデータ依存関係のある先行命令のいずれかが、 投機的に実 行されたことを意味し、 オペラン ドの内容が誤っている可能性を示して いる。 " 不変確定" とは ALUで実行した結果が予測結果と一致していた 力、、 も しく は HEUで予測値をそのまま実行結果として出力して、 決定し たオペラン ドであることを意味する。 " 通常確定" とは" D確定" , " 投機確定" 、 " 不変確定" のいずれでもない手段でオペラン ドが確定し た状態を意味する。 一般的なプロセッサの実行ではオペラン ドはディ ス パッチ時に既に確定しているか (D確定) 、 先行命令が終了して確定す るか (通常確定) であるから表の四隅の状態、 すなわち、 単に ALUへ命 令発行する動作だけが行われる。 投機実行可能な従来技術では表の" 投 機のみ" の状態が付加されるが、 本発明ではオペラン ド確定の条件に不 変確定の状態を設けた点に特徴があり、 これにより、 ALUを使用せずに代 わりに HEUへ命令発行することで、 ALUの競合、 混雑を回避できる。
第 7図は命令発行回路 315の回路図である。 発行可能条件判定回路 70 0a, 700b, 700c, 700dはそれぞれ命令バッファ部 300において格納可能 な 4命令に対応しており、 内部回路と しては同一であるため、 700aのみ について説明する。 論理ゲ一 卜 701, 702, 703は IRAから入力されるオペ ラン ドの確定条件(7513, 7523, 7533, 7543)と(75113, 75213, 75313, 754& :)とから命令発行可能である条件を判定する。 すなわち、 二つのオペラ ン ドがいずれかの要因にて確定した場合に命令発行可能となる。 但し、 す でに発行済みの命令は再度発行できないため、 st(307a, 307b, 307c, 30 7d)の保持している発行済みフラグが' 0'であることが論理ゲー ト 704に て判定され、 発行信号 780aが生成される。 また、 発行しょう とする命令 が長レイテンシの命令である場合には、 ALU 109 と HEU 117の両方に発 行するため、 長レイテンシ信号 759から二重発行信号 779aが生成される, オペラン ドの決定要因の中に投機確定、 不変確定が含まれている場合に は論理ゲ一 ト 705, 706, 707, 708にて投機実行信号 781aと不変実行信号 782aとが生成される。
この命令発行回路では複数の命令が発行可能であつたとしても 1命令 だけを発行する。 発行信号 780a, 780 b, 780c, 780dは論理ゲー ト 709, 7 10, 711によって優先順位付きの 3 ビッ ト 778a, 778b, 778cにェンコ一 ドされる。 また、 論理ゲ一 ト 712, 713, 714, 715, 716, 717によって、 AL U 109 と HEU 117のどちらの演算器が使用されるかを識別する信号、 AL U選択 775 と HEU選択 776、 および命令実行が投機的に行われることを 示す投機状態信号 777 を生成する。 発行された命令は命令バッファ 300 内での状態が変化するので、 発行済みフラグをセッ トする信号 369を命 令バッファ部 300に出力する。 回路図は第 8図に続く。 第 8図の選択回 路 718 は発行すべき命令がどの命令かを示す信号 778a, 778b, 778c に基 づき ALU# ( 759 c, 760, 761, 762 ), RA ( 763, 764, 765, 766 ), RB ( 767, 768, 769, 770 ), ER (771, 772, 773, 774)のそれぞれ四つから一つを選 択し、 さ らに、 ALU選択信号 775, HEU選択信号 776 に基づいて発行先を 決定する。
第 9図は命令書き込み回路 310 の回路図である。 この回路は命令デコ ーダ 113からディ スパッチされてきた命令に関する情報を命令バッファ 部 300 に書き込むだけで、 複雑な論理的機能を持たない。 この実施形態 ではターゲッ 卜 レジスタ番号 0以外の命令が有効である。 この非 0条件 を論理ゲ一 ト 900が調べ、 Tawrite 356 と write- req 350を生成する c この二信号は同一の信号である。 他の信号もラ ッチ 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911 に一旦ラッチされた後に命令バッファ 部 300へ書き込むための信号と して出力される。 ただし、 RAI, RBI に書 き込む数値は命令の情報としては与えられないため、 Raid 352, Rbid 353をそれぞれ命令が待機すべき命令 IDの情報として用いる。 また、 RA hit 351 と Rbhit 354 はレジスタマップ回路 312 の検索において検索 がヒ ッ ト したことを意味している。 したがって、 ヒ ッ ト しなかった場合 にはオペラン ドが既に確定していることになり、 後述する RAI, RBI の D 確定フラグを ' Γにセッ 卜する信号となる。 このように、 命令書き込み回 ¾ 310 ii st(307a, 307b, 307c, 307d)ci: RAl (302a, 302b, 302c, 302 d), RBI (301a, 301b, 301c, 301d)の初期値を決定する。 また、 st( 307a, 307b, 307c, 307d)n 内の長ティテンシ一フラグは信号 234が直接セッ ト される。 回路図として示してはいないが、 st のフラグである、 isuue済 み、 コンプリー ト可は 0に RS使用中フラグは ' Γ に初期化する。 また、 R AI, RB1 の投機確定フラグ、 通常確定フラグ、 不変確定フラグは' 0' に初 期化する。
第 1 0図はア ドレスデコーダ 311 の回路図である。 空きエン ト リ一管 理回路 313 は 3 ビッ トの束線で命令バッファ部 300 の書き込み可能な位 置を示す。 論理ゲ— ト 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008 はこの 3 ビッ 卜の信号をデコー ドし、 書き込み信号 1100, 1101, 11 02, 1103のいずれか一つが' 1' となるようにデコ一 ドする。 書き込み信 号 1100〜1103 は紙面の都合上、 束線 1104 にまとめて表記する。 空きェ ン ト リ一管理回路 313の回路図は第 1 1 図に示されている。 st( 307a, 30 7b, 307c, 307d)内部の RS使用中フラグは信号 1106, 1107, 1108, 1109 として常に出力されている。 これらの信号は束線 1105 と して空きェン ト リー管理回路 313の入力となる。 したがって、 いずれかのフラグ力 0' に なると命令 I Dを 3 ビッ 卜にェンコ一 ドしたかたちで出力する。 命令バッ ファ部 300 に空きが無いときには命令 ID 355 は 0になる。
第 1 2図はコンプリーショ ン回路 316 の回路図である。 コンプリー ト 決定回路 1200 は命令ノくッファき U 300の st( 307a, 307b, 307c, 307d)力、' 保持している状態情報(755, 756, 757, 758 )を入力し、 この中でコンプリ 一 ト可フラグが' Γ となっている命令を選択する。 このとき、 複数のコン プリ一 ト可フラグ力 Γ になっている可能性があるため、 優先順位がつけ られ、 選択信号 1250, 1251, 1252, 1253のいずれか一つだけが' Γ にな る。 命令情報選択回路 1201 は命令バッファ部 300が保持している命令情 報のなかで、 ターゲッ ト レジスタ ( 360, 361, 362, 363 ) と演算結果であ る result ( 364, 365, 366, 367 )を選択信号 1250, 1251 , 1252, 1253 に従 つて選択する。 選択結果はターゲッ ト レジスタに関しては論理ゲ一 ト 120 3 に集約されコンプリーショ ンレジスタ番号 216 と して出力される。 演算 結果については、 論理ゲー ト 1204 に集約され、 コンプリ ーショ ンデータ 217 と して出力される。 命令バッファ リセッ ト回路 1202 はコンプリー ト した命令について、 st( 308a, 308b, 308c, 308d)に保持されている RS使 用中フラグを' 0' にリセッ トするための信号 368を生成する。
第 1 3図は命令バッファ部 300 内の st(307a, 307b, 307c, 307d)の回 路図である。 構造的には 4命令分は同じ回路である。 長レイテンシーフ ラグ保持回路 1300 は、 待機している命令が長レイテンシー命令であるこ と示す長レイテンシ一フラグを保持する。 このフラグ情報は命令の属性 であり、 特に書き換えられないため、 通常のラ ッチでこの情報を保持す る。 コンプリー ト可フラグ 1301 は状態更新回路 314 によって、 命令のコ ンプリ一 卜が可能になつた際に ' Γ にセッ 卜される。 初期値は命令書き込 み回路 310 により ' 0' に設定され、 ' Γ は保持している値を信号線 357を 使って強制的に書き換える。 発行済みフラグ 1302 はコンプリー ト可フラ グ 1301 と同じ回路で構成される。 初期値は' 0'であり、 命令発行回路 31 5 によって命令が発行されたときに ' Γがセッ トされる。 また、 命令の実 行が終了したときには、 状態更新回路 314 によって' 0' にリセッ 卜される' これは、 投機的に実行された命令は予測がはずれた際に再び命令発行さ れることがあるからである。 RS使用中フラグ 1303 は命令バッファ部の エン ト リ一が使用中であることを示す。 命令がコンプリ一 トすると' 0' に リセッ トされる。
第 1 4図は result( 308a, 308b, 308c, 308d)の回路図である。 4つの 回路はァ ドレスデコーダ 1400が命令バッファ部 300 内の位置によって異 なるだけで他は同じである。 こ こでは result 308aの例を示す。 状態更 新回路 314から送られる信号 358は演算結果が終了した命令の命令バッ ファ 300内での位置を表す命令 ID 1450 と命令の実行結果のデータであ る結果データ 1451から成る束線である。 また、 状態更新回路 314では A LU 109 t HEU 117からの最大 2命令が処理されることがあり (result への書き込みは必ず 1つ) 、 ALUで終了した命令の命令 ID 1454 と ΗΕϋ 117で終了した命令の命令 ID 1455 さ らにそれぞれからのデータ 1452, 1453が束線の構成要素となる。 この実施形態における情報処理装置では データを 32 ビッ トで考える。 resultの役割はデータを保持するだけで あり、 ア ドレスデコ一タ 1400にて、 result 308aへの書き込み要求で あることがデコー ドされると、 書き込みクロ ック 1456が生成される。 デ —タはセレクタ 1401で選択され、 ラッチ 1402に格納される。
^ 1 5 ¾(i AI(302a, 302b, 302 c, 302d), RB 1(301 a, 301b, 301c, 30 Id)の回路図である。 この 8個の回路はすべて同じであり、 RAI 302aを 例にして説明する。 RAI 302aはオペラン ドとして終了を待っている命令 IDを保持するラ ッチ 1504 と D確定フラグ 1503,通常確定フラグ 1500, 投機確定フラグ 1501,不変確定フラグ 1502 とから構成されている。 状態 更新回路 314は終了した命令の命令 IDを信号線 359に出力する。 終了す る命令は ALU 109によるものと HEU 117によるものの最大 2命令存在す る。 この命令 IDはラ ッチ 1504の内容と比較器 1505, 1506で比較され、 一致した場合には通常確定フラグ 1500,投機確定フラグ 1501,不変確定 フラグ 1502の書き込み トラ ンジスタ 1507, 1508, 1509, 1511, 1512を 開き、 それぞれのフラグが保持している内容を状態更新回路から出力さ れた内容に書き換える。
第 1 6図の回路図は丁八(3093, 30913, 309 309 , [^(3053, 30513, 30 5 305 O, RB(304a, 304b, 304c, 304 n, ALU#(306a, 306b, 306c, 306d ), ER(303a. 303b, 303c, 303d)の回路図であり、 20個の回路は全て同じ であるため、 例として TA 309a を説明する。 ターゲッ ト レジスタ番号 9 50 は 5 ビッ 卜で構成されており、 書き込みの選択信号 1100が ' Γのとき にラ ッチ 1600へレジスタ番号を取り込む。
以上説明した回路により、 命令実行管理バッファ 115 はデータ依存関 係のある後続命令を先行命令の終了まで待機させる。 先行命令が終了す ると、 ALU 109 は結果を命令実行管理バッファ 115へ送り、 後続命令は 必要なオペラン ドが全て揃った時点で、 ALU 109 または HEU 117へ発行 される。 この一連の動作において、 ALU 109 の実行結果が実行結果比較 ユニッ ト 116 で比較され、 一致したときには、 後続命令が HEU 117へ発 行される。 HEU 117 は命令の過去の実行結果をそのまま結果と して出力 するだけの演算器であり、 実質的な命令実行は省略される。 この他に、 · ロー ド命令のように実行時間の長い命令は命令実行管理バッファ 115で 先行命令の終了を待つことなく ALU と HEUの両方に発行される。 ΗΕϋ に 命令が発行されると、 後続命令も HEU にて実行され続ける。 もし、 ロー ド命令の ALU における実行結果が予測と一致した場合には、 HEUで実行 された後続命令はすべてコンプリ一ト可能となる。 一致しない場合には 再度実行し直す。 このように、 過去の履歴に基づく予測がある命令に対 して正当であった場合には、 後続命令もまた、 過去の履歴がそのまま実 行結果になる可能性が高く 、 従来技術のように、 ある命令の実行結果を 予測した後、 後続命令を ALUを使って投機的に実行することにより発生 する ALUの混雑は緩和される。
次に履歴キヤ ッシュ 111 の回路を第 1 7図を使って説明する。 命令ァ ドレス 202 は 32 ビッ 卜で構成される。 命令語は 4バイ ト境界に整列され ていると 30 ビッ 卜で 1 命令をァ ドレスすることができる。 0 ビッ トを最 上位ビッ 卜とすると、 0〜 19 ビッ トがタグ部分 1750、 20 - 29 ビッ 卜力 セッ トア ドレス部分 1751 に分けられる。 データメモリ 1700 は同時読み 出し/書き込み可能な 2ポ一 卜メモリであり、 セッ トア ドレス 1751 が入 力されると、 メモ リ に格納されている内容を実行予測結果 210 と して出 力する。 タグメモリ 1701 もまた同時に読み出し/書き込み可能な 2ポ一 トメモ リ である。 タグ部 1702 にセッ トア ドレス 1751 が入力されると、 命令ァ ドレスの上位に相当するタグ情報が出力 1752 に現れる。 タグ情報 は比較器 1704で命令ア ドレスの上位と比較され、 一致した場合には、 タ グー致信号 1753 が出力される。 フラグ部 1703 はセッ トア ドレス 1751 によって読み出されるタグ情報の有効性を示すビッ トが格納されている。 こ こでは論理値' Γが有効であり、 先のタグ一致信号 1753 と読み出され たフラグ情報 1754が共に' Γであるとき、 履歴キヤ ッ シュヒッ ト信号 20 9 が出力される。
以上が履歴キャ ッ シュの読み出しに関する説明である。 命令実行管理 バッファ 115から命令発行の際に出力される命令実行結果予測信号 225 は命令ァ ドレス 212 と予測のデータ部である 214から構成されている。 A LU 109で終了した命令のァ ドレスは履歴キャ ッシュ 111 に実行終了の命 令ア ドレス 212 と して入力され、 実行結果のデータは ALU-DATA 211 と して入力される。 命令ァ ドレスはキャ ッ シュ読み出しのときと同様にタ グ部 1755 とセッ トア ドレス部 1756 とに分離される。 実績管理メモリ 17 05 は実績記録部 1706 と夕グ管理部 1707 とから構成さる。 実績記録部 1 706からはセッ トァ ドレス 1756 に対応する予測実績が数値として読み出 され、 比較器 1708で' 0'であるか否かが照合される。 照合結果は低実績 信号 1757 と して出力される。 一方、 タグ管理部 1707からは命令ア ドレ ス上位が読み出され、 比較器 1709 にて読み出した予測実績情報が命令ァ ドレス 212 に関するものであるかどうかが検証される。 比較器 1709 の出 力は実績あり信号 1758 と して出力される。 この 2信号が両方ともに ' Γ であるとき、 Guardキヤ ッ シュ書き込み信号 1759 が生成される。
Guardキャ ッシュ 1709 はフルァソシァティ ブの連想メモリであり、 命 令ア ドレス 212が登録されているときには出力 1760 に ' Γがそうでない ときには' 0'が出力される。 また、 Guardキャ ッ シュ書き込み信号 1759 力 Γのときには、 命令ア ドレス 212を登録する。 論理ゲ一 ト 1710, 171 1 はデ一タメモリ 1700, タグメモリ 1702,実績管理メモリ 1705 に対する 書き込み信号 1761 を生成する。 書き込み信号 1761 力 1'のとき、 デ一 タメモリ 1700 には命令の実行結果である ALU-DATA 211 の内容が書き 込まれ、 タグメモリ 1701 にはメモリ ア ドレスのタグ部 1755が書き込ま れ、 同時にフラグ部 1703 には ' Γが書き込まれる。 実績管理メモリ 170 5の実績記録部 1706 は不変検出信号 213力 1'のときには保持されてい る値を +1 し、 ' 0'のときには一 1 された値を書き込む。 タグ管理部 1707 には命令ァ ドレスのタグ部 1755が書き込まれる。 Guardキャ ッシュ 170 9 に命令ア ドレス 212が登録されているときには、 出力 1760 に ' Γが出 力されるので、 データメモリ 1700, タグメモリ 1702,実績管理メモリ 17 05 に対する書き込み信号 1761 は' 0' となる。 従って、 Guardキャ ッ シュ 1709 にそのァ ドレスが登録されている命令の実行結果はデータメモリ 17 00 に書き込まれない。
以上述べた履歴キヤ ッ シュ 111 を動作の観点から整理すると次のよう になる。 命令実行結果が ALUから返されたときに、 その命令が履歴キヤ ッシュに既に登録されており、 かつ予測実績が良くないとき (実績値が 0のとき) 、 その命令ア ドレスは Guardキャ ッシュに登録される。 一旦、 Guardキャッシュに登録された命令ァ ドレスは再びデ一タメモリ 1700 に W
26
登録されることはない。 また、 履歴キャ ッ シュに既に登録されており、 かつ予測正当の実績が良い命令については、 Guardキャ ッ シュに登録さ れていない限りデータメモリ 1700 の更新に使用される。 当然、 履歴キヤ ッシュに登録されていなかった命令の場合にはデータメモリ 1700 に登録 される。 このように、 予測動作にとって不利益な命令を Guardキヤ ッシ ュ 1709 で管理することにより、 より少ないキヤ ッ シュ資源で高い予測正 当率を得ることができる。
上述の実施形態では、 ロー ド命令のように実行レイテンシが長い命令 種に限って、 予測に基づく投機実行をおこなう。 しかし、 命令デコー ド から命令実行終了までを命令のレイテンシと考えると、 命令実行管理バ ッファ内で長く停留する可能性のある命令も予測に基づく投機実行对象 とすることが望ま しい。 つま り、 命令実行管理バッファ内で待機してい る命令には、 すでに発行済みの命令の実行終了を待機している命令と、 未だ発行されていない先行命令の発行および実行終了を待機している up 令とが存在する。 後者の命令は実行されるまでに待機させられる時間が 長いと考えられ、 ここに述べる実施形態の変形例ではこの種の命令も予 測に基づく投機実行の対象とする。 具体的には、 第 1 9図に示すように、 命令発行回路 315 は発行する命令のターゲッ ト レジスタ番号と発行され る命令の命令バッファ部 300 内の位置情報である命令 IDを発行終了信号 370 と して、 状態更新回路 314 とレジスタマップ回路 312へ伝達する。 状態更新回路 314 は発行された命令の命令 IDを RAI (302a, 302 b, 302c, 302d)と RBI(301a, 301b, 301c, 301d)全体に通告する。 RAI(302a, 302 b, 302c, 302d) i RBI(30ia, 301b, 301c, 301d)は第 2 0図に示すよう に第 1 5図に示した回路に先行命令が既に発行されたことを示す、 発行5 済み状態保持回路 1503を追加することで実現できる。 命令発行回路 315 は発行しょう とする命令の発行済み状態保持回路内容を調べ、 RAI, RBI が共に発行済みである場合を除いて、 投機的に命令を発行する。 また、 命令によっては命令実行管理バッファに登録される前に先行命令が発行 済みになつている場合がある。 発行終了信号 370はレジスタマップ回路 3 12にも入力され、 発行済み命令のターゲッ 卜 レジスタ番号が命令発行回 路 315によって通告される。 もし、 命令実行管理バッファに登録しょう とする命令のオペラン ドレジスタに関して、 その先行命令が既に発行済 みの場合には RA発行済み信号 371, RB発行済み信号 372に ' Γが返され る。 先行命令がすでに発行済みの命令に関して、 命令書き込み回路 310 は命令バッファ部 300に命令を書き込む際に、 発行済み状態保持回路を' Γにセッ 卜する。 このように、 予測に基づく投機実行の対象となる命令 を命令実行管理バッファ内に停留する時間の長い命令とすることも可能 である。
本発明によれば、 過去の履歴に基づいて実行結果を予測し、 実際の実 行結果と一致したとき、 後続の命令を ALUにて投機的に実行するのでは なく 、 HEUで処理する。 これにより、 従来技術において同じ ALUを用い て投機実行されていた後続命令により ALUが使用され、 ALU混雑によつ て他の命令実行が阻害されることが防止できる。
さ らに、 履歴キャ ッ シュ内に予測の正当率を管理する実績管理メモリ と正当率の低い命令を記録する Guardキャ ッシュを設けることにより、 予測正当率の低い命令によつて不当に履歴キヤ ッ シュが使用されること を防止する。 以上により、 命令実行が先行命令の実行終了を待たずに実 行でき、 全体の処理時間が短縮される。

Claims

請 求 の 範 囲
1 . 命令を実行する演算器と、
上記命令の過去の実行結果を格納する格納装置と、
上記命令の上記演算器での実行結果と、 格納されている上記命令の過 去の実行結果との一致比較をする装置とを有する情報処理装置において、 先行命令の上記演算器での命令実行結果と、 上記格納装置に格納され ている上記先行命令の過去の実行結果とがー致する場合に、 上記先行命 令とデータ依存関係のある後続命令を上記演算器で実行せずに、 上記格 納装置に格納されている上記後続命令の過去の実行結果を出力する装置 を有することを特徴とする情報処理装置。
2 . 命令を実行する演算器と、
上記命令の過去の実行結果を格納する格納装置と、
上記命令の上記演算器での実行結果と、 格納されている上記命令の過 去の実行結果との一致比較をする装置とを有する情報処理装置において、 先行命令が所定の命令であるか否かを判断する手段と、
上記先行命令が所定の命令である場合に、 上記先行命令とデータ依存 関係のある後続命令を上記演算器で実行せずに、 上記格納装置に格納さ れている上記後続命令の過去の実行結果を出力する装置、
とを有することを特徴とする情報処理装置。
3 . 上記所定の命令は、 その命令実行サイクル数に応じて決定されるこ とを特徴とする特許請求の範囲第 2項に記載の情報処理装置。
4 . 命令を実行する演算器と、
上記命令の過去の実行結果を格納する格納装置と、
上記命令の上記演算器での実行結果と、 格納されている上記命令の過 去の実行結果との一致比較をする装置とを有する情報処理装置において、 上記命令の上記演算器での実行結果と上記命令の過去の実行結果との 一致頻度を記録する装置を有することを特徴とする情報処理装置。
5 . 上記一致頻度が基準値以下の命令の演算器での実行結果が上記格納 装置に格納されることを禁止する装置とを有することを特徴とする特許 請求の範囲第 4項に記載の情報処理装置。
6 . 命令を実行する演算器と、
上記命令の過去の実行結果を格納する第 1 の格納装置と、
上記命令の上記演算器での実行結果と、 格納されている上記命令の過 去の実行結果との一致比較をする装置とを有する情報処理装置において、 上記命令の上記演算器での実行結果と上記命令の過去の実行結果との 一致頻度を記録する装置と、
上記一致頻度が基準値以下の命令を格納する第 2の格納装置、 とを有することを特徴とする情報処理装置。
7 . 上記第 2の格納装置に格納された命令の上記演算器での実行結果が 上記第 1 の格納装置に書き込まれることを禁止する装置とを有すること を特徴とする特許請求の範囲第 6項に記載の情報処理装置。
8 . 命令を実行する演算器と、
上記命令の過去の実行結果を格納する格納装置と、
格納された上記命令の過去の実行結果を出力する装置と、
実行待ちの上記命令を保持する装置と、
上記実行待ちの上記命令が上記保持装置に停留する時間の長短を判断 する装置と、
上記演算器又は格納された上記命令の過去の実行結果を出力する装置 の何れかに命令の発行をする装置、
とを有し、 上記命令発行装置は、 上記実行待ちの上記命令が上記保持装置に停留 する時間の長い場合には、 上記命令の過去の実行結果を出力する装置に 命令を発行することを特徴とする情報処理装置。
9 . 上記実行待ちの上記命令が上記保持装置に停留する時間の長短を判 断する装置は、 上記実行待ちの上記命令に先行する命令が上記命令発効 装置により発行されているか否かを判断する装置であることを特徴とす る特許請求の範囲第 8項に記載の情報処理装置。
PCT/JP1998/000885 1998-03-04 1998-03-04 Processeur de donnees WO1999045463A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US09/623,182 US6810474B1 (en) 1998-03-04 1998-03-04 Information processor
PCT/JP1998/000885 WO1999045463A1 (fr) 1998-03-04 1998-03-04 Processeur de donnees

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP1998/000885 WO1999045463A1 (fr) 1998-03-04 1998-03-04 Processeur de donnees

Publications (1)

Publication Number Publication Date
WO1999045463A1 true WO1999045463A1 (fr) 1999-09-10

Family

ID=14207706

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP1998/000885 WO1999045463A1 (fr) 1998-03-04 1998-03-04 Processeur de donnees

Country Status (2)

Country Link
US (1) US6810474B1 (ja)
WO (1) WO1999045463A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100423893B1 (ko) * 2001-01-10 2004-03-24 삼성전자주식회사 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬
WO2005093562A1 (ja) * 2004-03-29 2005-10-06 Kyoto University データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体
WO2009032545A2 (en) * 2007-08-31 2009-03-12 Microsoft Corporation Resource selector, including for use in handheld devices

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8195896B2 (en) * 2008-06-10 2012-06-05 International Business Machines Corporation Resource sharing techniques in a parallel processing computing system utilizing locks by replicating or shadowing execution contexts
TW201124910A (en) * 2009-08-13 2011-07-16 Sony Corp Data processing device, data processing method, program conversion processing device, and program conversion processing method
DE102013205166A1 (de) * 2013-03-22 2014-09-25 Robert Bosch Gmbh Verfahren zum Erzeugen einer Einwegfunktion
US9110814B2 (en) * 2013-08-30 2015-08-18 Think Silicon Ltd Device and method for eliminating complex operations in processing systems based on caching
US9658851B2 (en) 2013-08-30 2017-05-23 Think Silicon Sa Device and method for approximate memoization
CN109213694B (zh) 2017-06-30 2023-04-25 伊姆西Ip控股有限责任公司 用于缓存管理的方法和设备
US11455171B2 (en) * 2019-05-29 2022-09-27 Gray Research LLC Multiported parity scoreboard circuit

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03161831A (ja) * 1989-11-20 1991-07-11 Matsushita Electric Ind Co Ltd 演算装置
JPH07219771A (ja) * 1994-02-04 1995-08-18 Hitachi Ltd 命令プロセッサ
JPH09134287A (ja) * 1995-11-07 1997-05-20 Toshiba Corp マイクロプロセッサ及びそのロードアドレス予想方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60129839A (ja) * 1983-12-19 1985-07-11 Hitachi Ltd 情報処理装置
JPH0760384B2 (ja) * 1985-05-07 1995-06-28 株式会社日立製作所 命令実行方法およびデータ処理装置
JP2667851B2 (ja) * 1988-01-22 1997-10-27 株式会社日立製作所 情報処理装置
US5136696A (en) * 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5522052A (en) * 1991-07-04 1996-05-28 Matsushita Electric Industrial Co. Ltd. Pipeline processor for processing instructions having a data dependence relationship
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
US5864697A (en) * 1996-06-28 1999-01-26 Texas Instruments Incorporated Microprocessor using combined actual and speculative branch history prediction
US6016540A (en) * 1997-01-08 2000-01-18 Intel Corporation Method and apparatus for scheduling instructions in waves

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03161831A (ja) * 1989-11-20 1991-07-11 Matsushita Electric Ind Co Ltd 演算装置
JPH07219771A (ja) * 1994-02-04 1995-08-18 Hitachi Ltd 命令プロセッサ
JPH09134287A (ja) * 1995-11-07 1997-05-20 Toshiba Corp マイクロプロセッサ及びそのロードアドレス予想方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100423893B1 (ko) * 2001-01-10 2004-03-24 삼성전자주식회사 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬
WO2005093562A1 (ja) * 2004-03-29 2005-10-06 Kyoto University データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体
US8055885B2 (en) 2004-03-29 2011-11-08 Japan Science And Technology Agency Data processing device for implementing instruction reuse, and digital data storage medium for storing a data processing program for implementing instruction reuse
WO2009032545A2 (en) * 2007-08-31 2009-03-12 Microsoft Corporation Resource selector, including for use in handheld devices
WO2009032545A3 (en) * 2007-08-31 2009-05-07 Microsoft Corp Resource selector, including for use in handheld devices

Also Published As

Publication number Publication date
US6810474B1 (en) 2004-10-26

Similar Documents

Publication Publication Date Title
US7984274B2 (en) Partial load/store forward prediction
US6907520B2 (en) Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US9430235B2 (en) Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US5142634A (en) Branch prediction
US8799590B2 (en) System enabling transactional memory and prediction-based transaction execution method
US7203817B2 (en) Power consumption reduction in a pipeline by stalling instruction issue on a load miss
US8255670B2 (en) Replay reduction for power saving
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US7111126B2 (en) Apparatus and method for loading data values
EP1296229B1 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
EP1145110B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
JP3494484B2 (ja) 命令処理装置
US7849293B2 (en) Method and structure for low latency load-tagged pointer instruction for computer microarchitechture
JP3678443B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
KR20020097149A (ko) 종속성 체인을 발행 또는 재발행할 수 있는 스케줄러
US6912650B2 (en) Pre-prefetching target of following branch instruction based on past history
US8468325B2 (en) Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
WO1999045463A1 (fr) Processeur de donnees
JP2001092657A (ja) 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
US5875326A (en) Data processing system and method for completing out-of-order instructions
US11507379B2 (en) Managing load and store instructions for memory barrier handling
US6754813B1 (en) Apparatus and method of processing information for suppression of branch prediction
US7603545B2 (en) Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching
US6282629B1 (en) Pipelined processor for performing parallel instruction recording and register assigning
WO2002029556A2 (en) Incorporating local branch history when predicting multiple conditional branch outcomes

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CN JP KR US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

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

Ref document number: 09623182

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: KR

122 Ep: pct application non-entry in european phase