WO1999027439A1 - Systeme informatique - Google Patents

Systeme informatique Download PDF

Info

Publication number
WO1999027439A1
WO1999027439A1 PCT/JP1998/005230 JP9805230W WO9927439A1 WO 1999027439 A1 WO1999027439 A1 WO 1999027439A1 JP 9805230 W JP9805230 W JP 9805230W WO 9927439 A1 WO9927439 A1 WO 9927439A1
Authority
WO
WIPO (PCT)
Prior art keywords
entry
instruction
stack
written
pointer
Prior art date
Application number
PCT/JP1998/005230
Other languages
English (en)
French (fr)
Inventor
Hajime Seki
Original Assignee
Hajime Seki
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 Hajime Seki filed Critical Hajime Seki
Priority to EP98954765A priority Critical patent/EP1035471A1/en
Priority to KR1020007005482A priority patent/KR20010032275A/ko
Priority to EA200000546A priority patent/EA200000546A1/ru
Priority to CA002310369A priority patent/CA2310369A1/en
Priority to AU11747/99A priority patent/AU745449B2/en
Publication of WO1999027439A1 publication Critical patent/WO1999027439A1/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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Definitions

  • the present invention relates to a computer system having a novel configuration for processing a program described in a machine language of a stack machine at a high speed.
  • the execution of instructions is basically performed in the order of the program (in-order). That is, the operation instruction in the stack machine instructs an operation such as popping the operand 'source' data from the stack, executing the operation, and pushing the operation result onto the operand 'stack.
  • the program written as such a chain of instructions is executed sequentially.
  • the present invention has been made in order to solve the above problems, and has an accurate
  • the purpose is to provide a computer system that processes programs written in the machine language of a stack machine more efficiently out-of-order while guaranteeing exception handling. Disclosure of the invention
  • the computer system includes a data cache and an integrated register file in which data is written to each entry, and an integrated register for each entry so that the address of the file entry is written.
  • An advance queue consisting of a stack consisting of a 'stack and a completion pointer' stack, and an instruction queue consisting of a FIFO queue in which the contents of individual instructions are written to each entry.
  • an operation unit adapted to execute the operation, and a load Z store unit capable of accessing the data cache and the integrated register file.
  • the forward pointer stack and the integrated register file are operated according to the contents of the instruction, and the contents of the instruction are written to the instruction queue. I'm wearing At this time, the stack operation on the operand's stack included in the instruction is similarly applied to the forward pointer stack.
  • one unregistered integrated register is allocated to one entry of the file to hold the data, and Push the entry's address onto the forward-pointing stack.
  • an arithmetic instruction is the content of writing and all necessary source data are in the integrated register, there is an entry that has already been written in the file, and if the arithmetic unit is available, the operation Start execution. If the execution of the operation is completed normally, the result of the operation is written to the entry of the integrated register file which is the destination. Completion of the instruction held in the entry at the head of the instruction queue is possible, and if so, the entry at the head of the instruction queue is completed. Completion pointer that reproduces the behavior of the forward pointer stack when the retained instruction is decoded based on the contents.Manipulates the stack, removes the first entry from the instruction queue, and completes by pop operation. The pointer of the pointer is lost in the pointer's stack. The entry of the file entry is deallocated. BRIEF DESCRIPTION OF THE FIGURES
  • FIG. 1 is a block diagram showing a basic configuration of a preferred computer system according to the present invention
  • FIG. 2 is a diagram showing a configuration of a forward pointer / stack and a completion pointer / stack
  • FIG. FIG. 4 is a diagram showing a detailed configuration of each entry of an integrated register file in the first embodiment of the invention
  • FIG. 4 is a diagram showing a configuration of an instruction queue
  • FIG. 5 is a detail of each entry of an instruction queue.
  • FIGS. 6 to 12 show a forward pointer for each cycle, a stack, a completion pointer, a stack, an instruction queue, and an integrated register.
  • FIG. 13 is a diagram specifically showing the contents of the program.
  • FIG. 14 is a diagram showing the detailed configuration of each entry of the integrated register file in the second embodiment of the present invention, which will be described later.
  • FIGS. FIG. 13 is an explanatory diagram specifically showing contents of a forward pointer stack, a completion pointer stack, an instruction queue, and an integrated register file in each operation example of the second embodiment of the invention.
  • the embodiment of the computer according to the present invention described below executes basic instructions of a stack machine defined by a Java Virtual Machine (Java VM) by hardware. That is, the data word length is set to 32 bits, and operations such as word / store and arithmetic / logic operation are performed in units of the data word. Thus, for example, an arithmetic operation between double words produces a two-word operation result based on four-word source 'data by combining two words.
  • a stack in which data is pushed / popped in units of words is referred to as a word stack in order to distinguish it from a pointer stack described later.
  • Java VM originally contains complex instructions that are not assumed to be executed by hardware
  • the following embodiment of the computer system according to the present invention executes the following basic instructions by hardware. It shall be.
  • Fig. 1 is a block diagram of a computer system.
  • 10 is an instruction cache
  • 11 is a data 'cache
  • 20 is an instruction fetch' unit
  • 21 is an instruction decode 'setting unit
  • 3 is a forward pointer
  • 3 a is the forward pointer 'Stack history file
  • 4 is the complete pointer stack
  • 5 is the instruction queue
  • 6 is the integrated register
  • 7 is the free list
  • 8 0 and 8 1 are the arithmetic units 0 and 8, respectively.
  • 1, 8 2 indicates a branch unit
  • 8 3 indicates a load Z store unit.
  • Instruction fetch 'unit is provided with a program counter (not shown) (p C register), and fetches instructions from the instruction cache, the instruction decode' pass setting unit. It is also responsible for branch prediction and branch execution.
  • p C register program counter
  • the instruction decode 'setting unit' decodes the instruction passed from the instruction fetch 'unit, and executes the forward pointer' stack, instruction queue, and integration register described later so that the operations and the like included in the instruction are executed by data driving. Generates various signals for setting star files, etc.
  • the pointer stack consists of a stack in which the address of the entry in the unified register file is written to each entry.
  • the state where the word 'stack' is «, wordl, word2, word3, word4 (the right end is the stack top) means that in the computer system according to the present invention, the pointer 'stack' is .. ..., ⁇ a),
  • the computer system of the present invention has two pointer stacks, an advanced pointer stack (APS; Advanced Pointer Stack) and a completed pointer stack (CPS; Completed Pointer Stack).
  • APS Advanced Pointer Stack
  • CPS Completed Pointer Stack
  • a forward pointer 'stack' (hereinafter referred to as APS) and an integrated register are read.
  • APS forward pointer 'stack'
  • the forward pointer stack reflects the stack operation by all the decoded 'set' instructions.
  • the completion pointer 'stack (hereinafter referred to as CPS) reflects the stack operation by all completed instructions in program order.
  • CPS completion pointer 'stack
  • the computer system of the present invention enables out-of-order execution based on the principle of data drive.
  • the completion pointer stack is executed in-order to guarantee accurate exception handling. It exists to compose the state of the case.
  • each pointer stack has a circular buffer structure, and has two registers called a push pointer and a bottom pointer.
  • the push 'pointer points up one level in the top-level entry that holds the address of the entry in the unified register.
  • the bottom 'pointer points to the lowest entry that holds the address of the entry in the unified register' file '.
  • FIG. 2 is an explanatory diagram showing the relationship between each pointer 'stack' and each push 'pointer and bottom' pointer in the computer system of this embodiment.
  • push pointers are provided for each of the APS and the CPS, and are named PP-OF-APS and PP-OF-CPS, respectively.
  • only one bottom 'pointer is provided, which is shared by APS and CPS. This is named BP—OF—PS.
  • a comparison circuit is provided between the APS and the CPS as many as the number of entries, and the contents are compared between the entries at the same entry address of the APS and the CPS (horizontally arranged in FIG. 2). It has become so.
  • Operand included in the instruction An integrated register that is allocated in response to a push operation for one word on the stack. Writes the address of one entry in the file to the APS entry PP-OF-APS. It adds 1 to the value of APS. Conversely, one is subtracted from the value of PP OF APS in response to a pop operation for one word on the operand 'stack included in the instruction. The same applies to CPS and PP—OF_CPS.
  • the integrated register indicated by the matching contents of the two pointer stacks' one word of data written to the file entry Can be stored in the data cache. At that time, 1 is added to the value of BP_OF_PS.
  • the data stored in the data cache (Spill) is loaded (Fill) into the integrated register file, the data for one word stored in the last (Spill) is free-restored. Allocate one entry of the integrated register file registered in the list, write its data, and write the data of the integrated register. Write, BP_OF—subtracts 1 from the value of PS.
  • the computer system of this embodiment is provided with a forward pointer 'stack history file (hereinafter referred to as "APS history file”) in order to enable speculative execution based on branch prediction.
  • APS history file a forward pointer 'stack history file
  • Each entry in the APS history file can be written with the contents of all the APS entries and the PP-OF-APS.
  • CRF Consolidated Register File
  • FIG. 3 is an explanatory diagram showing a detailed configuration of each entry 6 (i) of the CRF 6 in the first embodiment.
  • i is the address of the entry.
  • Each entry 6 (i) of CRF 6 is a data field 61 (i), a write completion flag (WCF) field 62 (i), and a color (C, Color) field 6 3 (i) and the busy bit (BB) field 64 (i).
  • the actual hardware configuration of the CRF is a set of register files provided for each field described above.
  • the data 'field of each entry of the C R F is configured to write one word of data.
  • the WCF field is set to 1 if the data has been completely written to the data field, and 0 if not.
  • the C field is allocated to correspond to the push operation included in the entry instruction of the CRF, or data for avoiding underflow and mouth. In the case of Fill, it is distinguished whether it is allocated or not. In the former case, a branch tag is further written. In this embodiment, as described later, the branch tag has a certain relationship with the address of the entry in the APS history file.
  • the BB field is written as 1 if the entry of the CRF is allocated to hold data, and 0 if it is not allocated. It has become.
  • the free list (in the following, indicated by FL) is a memory for holding the address of a CRF entry that is free, that is, is not allocated (the BB field is 0). Has a circular FIFO queue configuration.
  • the addresses of all the entries in the CRF are registered in the FL.
  • the address of the free CRF entry is extracted from FL.
  • the address of that entry is registered in FL.
  • the instruction queue (indicated by IQ below) is a memory that holds instructions that have been set to be executed or completed, and has a circular FIFO queue configuration.
  • FIG. 4 is an explanatory diagram showing the configuration of the IQ.
  • IQ 5 Each entry is numbered 0, 1, 2, ... in order from the bottom.
  • the IQ 5 entry with a vertical line indicates the instruction waiting to be executed or completed. Shall be held.
  • the IQ has two registers, named setup pointer / completion pointer.
  • the setting pointer indicates the entry to which the contents of the next instruction to be decoded are written.
  • the completion pointer indicates the entry of the next instruction to be completed. Completion By subtracting the value of the setting pointer from the value of the pointer, you can see how many entries are available in the IQ. In the initial state, the values of the setting pointer and the completion pointer are both 0.
  • FIG. 5 is an explanatory diagram showing a detailed configuration of each entry 5 (i) of IQ5.
  • i is the address of the entry.
  • Each entry 5 (i) in IQ 5 has an operation 'field 500 (i), an operand' field 501 (i), a first source 'field 501 (i), 1 Write complete flag (WCF1) field 5 1 1 (i), 2nd source field 5 2 0 (i), 2nd write complete flag (WCF 2) field 5 2 1 (i) , Third source 'field 530 (i), third write completion flag (WCF 3) field 531 (i), fourth source' field 540 (i), fourth write completion flag ( WCF 4) field 5 4 1 (i), first destination 'field 55 (i), second destination' field 56 (i), branch tag (BT) field 57 (i), and execute It consists of the state (S; State) field 58 (i).
  • the operation 'build' of each entry in the IQ is configured to be written with an operation code.
  • the operand 'field of each IQ entry is such that this operand is written for instructions whose operands follow the operation code.
  • Each of the first to fourth source 'fields of each IQ entry is written with the address of the CRF entry allocated to hold the source' data.
  • each of the first and second destinations 'finaled' of each entry of the IQ the address of the newly allocated entry of the C R F is written in accordance with the setting of 'decode instruction'. Operands For instructions that include a push operation on the stack, the address of the CRF entry allocated to hold the data to be pushed by the instruction is written in the order in which it is pushed.
  • the first to fourth WCF fields are provided corresponding to the first to fourth source fields, respectively.
  • the WCF 1 field 1 is written to the entry of the CRF indicated in the 1st source 'field if data writing has been completed, and 0 has been written otherwise. The same applies to the second to fourth WCF fields and the source field.
  • the IQ has a comparison circuit for each source 'field of each entry, and compares the address of the CRF entry where data is to be written with the contents of each source' field to find a matching source.
  • 'It has a function to set 1 to the WCF field corresponding to the' field.
  • the BT field of each IQ entry relates to speculative execution based on branch prediction.
  • the branch tag written to the BT field is the address of the entry in the APS history file.
  • the S field contains information such as unexecuted, executed, normal termination, and occurrence of an exception event, depending on the execution status of the instruction written in that entry. Has become.
  • the computer system includes an arithmetic unit 0 and an arithmetic unit 1, each of which is configured to execute arithmetic instructions such as an arithmetic and logic operation, a data type conversion operation, and a comparison operation sent from the IQ. It has the ability to execute and can operate independently and in parallel with each other.
  • each operation unit as a pipeline, provide more operation units, or specify a type of operation to be executed for each operation unit.
  • the branch unit has a function of processing a conditional branch instruction sent from the IQ, determining the presence or absence of a branch, and notifying the instruction fetch unit.
  • the load / store unit (hereinafter referred to as LSU) has a function of performing address calculation, and can access the data cache and the CRF.
  • the LSU has a register (vars register), not shown, that holds a pointer to the first oral variable.
  • the storage area of the first local variable is in the data cache or CRF, but the corresponding address value in the data cache is written in the vars register. I have.
  • the LSU calculates the address using the value of the vars register, and determines whether the storage area of the target local variable is data cache or CRF. Is determined, and the storage area is accessed. If the storage area is determined to be on the CRF, the address of the entry of the CRF to be accessed is read from the APS.
  • the LSU includes a queue (not shown) for storing load / store instructions in the order of the program, together with the address of the entry in the instruction queue, the target variable name and data.
  • This queue has an associative function, and it can execute load instructions out-of-order by verifying data 'access dependencies by comparing variable names. .
  • the storage area of the local variable is in the data cache or CRF.
  • the variable data is stored in the above key. Read from you. Execution of the store instruction is performed in-order in the completion stage, as described later, to ensure correct exception handling.
  • the LSU executes the load Z store instruction indicated in the program, and at the bottom of the stack held in CRF according to the availability of APS, CPS, and CRF to avoid overflow and underflow.
  • the data is automatically stored (Spill) / loaded (Fill) with the data cache.
  • the overflow / underflow of APS, CPS, and CRF are controlled by the following mechanism. Avoided by the mechanism.
  • the two pointers Stores (Spill) the data of one word written in the entry of the CRF indicated by the contents of the entry indicated by the matching BP-OF_PS into the data cache and sets 1 to the value of the BP-OF-PS.
  • the BB field of the entry of the above CRF is changed to 0, and the address of the entry is registered in FL.
  • the last one word of data (Spill) is retrieved from the data cache, and the FL Allocate one entry of the free CRF registered in the, and write it in its data field.
  • WCF and BB fields shall be 1.
  • the address of the assigned CRF entry is written below the entry indicated by BP-OF-PS of the APS and CPS, respectively, and the value of BP-OF-PS is set to 1 from the value of BP-OF-PS. pull.
  • the LSU has a buffer for storing data once. It is also possible to adopt a configuration in which data of an appropriate number of words is stored.
  • the computer system of this embodiment processes instructions in four stages: (1) instruction fetch, (2) instruction decode, setting, (3) execution, and (4) completion. For the time being, for the sake of simplicity, the operation will be described for each stage assuming that one instruction can be decoded and set in one cycle.
  • the instruction fetch unit fetches the instruction from the instruction cache and determines the address of the next instruction to be fetched.
  • the next instruction is normally fetched from the next address value.However, if the fetched instruction is an unconditional branch instruction, or if it is predicted to be branched by a conditional branch instruction, if the branch prediction is missed, or if an exception occurs. If it occurs, change the address value to be fetched.
  • the instruction is decoded, the forward pointer 'stack' (APS) and the integrated register 'file' (CRF) are manipulated according to the instruction content, and the instruction content is written to the instruction queue (IQ).
  • APS forward pointer 'stack'
  • CRF integrated register 'file'
  • the vicinity of the stack top of the word stack in the conventional stack 'machine' is reproduced by the pointer 'stack' and the CRF. The same applies.
  • one free CRF entry registered in FL must be Allocate to keep the data, and push the address of that entry to APS.
  • operand If the instruction is followed by an operand, write this operand in the operand 'field. In the BT field, write the branch tag sent from the instruction decode 'setting unit. For S field, unconditional branch instruction, operand of immediate data 'stack Instruction is executed if the instruction is a push instruction to the stack or an operation instruction of the operand 'stack' that does not make a copy on the stack (pop, pop2, swap in the Java VM), and it is not executed otherwise. .
  • the source address is the address of the CRF entry allocated to hold the copy source data.
  • the number of words that should be pop-pushed to the operand's stack (or the number of words to be copied in the case of the operand's operation instruction) is fixed. It is possible to know which of the first to fourth source 'fields, the first to fourth WCF fields and the first and second destination' fields is valid.
  • the contents are written to the IQ at the same time as the LSU, along with the address of the IQ entry where the write is performed. send.
  • Unexecuted instructions held in IQ are processed data driven. Therefore, the instruction execution order is out-of-order.
  • the operation in the execution stage is described below for each type of instruction.
  • LSU handles outgoing order instructions out-of-order.
  • operand 'data popped Adore to calculate the carry out such a load instruction of on the stack (j ava ialoa4 in VM laload, faload, daload, aaload , baload, caload, saload) to the contents of the writing, effective If there is an entry in which the WCF field corresponding to the source field is all 1 (all data has been written to the CRF), access the CRF together with the address of the entry. Send the resulting source data to the LSU. The LSU calculates the address based on the source 'data sent and attempts to execute the load.
  • variable data When the variable data is obtained by the LSU, the variable data is written to the data field of the destination CRF entry, and the WCF field is changed to 1.
  • the IQ compares the address of the destination CRF entry in each source 'field in the source' field, and sets the WCF field corresponding to the matching source 'field to 1.
  • Is to be compared with the contents to be written If the above operation ends normally, the S field of the IQ entry holding the load instruction is changed to normal end.
  • the store instruction is to be written, and the WCF fields corresponding to valid source 'fields are all 1 (all the source' data has been written to the CRF) If there is an entry, the source obtained by accessing the CRF along with the address of the entry. Data is sent to the LSU.
  • the entry where the operation instruction is the write content and the WCF field corresponding to the valid source field is all 1s (the source's data is all written in the CRF) If there is an available operation unit, the contents of the entry are sent to the available operation unit along with the address of the entry and the source data obtained by accessing the CRF, and executed.
  • the operation result is written to the data field of the entry of the destination CRF, and the WCF field is written. Change the code to 1.
  • the comparison of the address of the CRF entry in the IQ and the change of the WCF field are performed in the same manner as in the case of the load instruction described above. If the above operation ends normally, the S field of the IQ entry holding the operation instruction is changed to normal end.
  • the operation in the execution stage does nothing.
  • the contents of the operand 'stack operation instruction to be copied on the stack are written and the WCF field corresponding to the valid source' field is set to 1. If there is an entry (all of the source's data has been written to the CRF), the data is read from the entry of the CRF indicated in the valid source field, and is read from the corresponding destination. Write to the data field of the CRF entry shown in the 'Options' field and change the WCF field to 1.
  • the matching of the address of the entry of the CRF in the IQ and the change of the WCF field are performed in the same manner as in the case of the above-described command.
  • the S field of the IQ entry holding the operation instruction of the operand stack is changed to the normal termination.
  • the unexecuted instruction held in the IQ is processed from the one that has become executable, so the instruction execution order is out-of-order.
  • the execution units of the arithmetic units 0 and 1, the branch unit, and the load / store unit operate independently and in parallel with each other.
  • the information is written to the S field of the IQ entry holding the instruction, and the exception vector is notified to the instruction fetch unit.
  • the CPS and CRF are operated based on the contents of the instruction written in the entry, and the completion pointer Add 1 to the value.
  • the CPS is manipulated to reproduce the behavior of the APS when the instruction is decoded. That is, in the case of an instruction including a pop Z push operation, the same contents of the valid source 'build' are sequentially popped from the cps, and the contents of the valid destination 'field are sequentially pushed to the CPS.
  • the operand 'stack' operation instructions that do not make a copy on the stack
  • the operand 'operation to be performed on the stack can be performed on the CPS in exactly the same way.
  • the In the case of an operand 'stack manipulation instruction' that makes a copy on the stack refer to the valid source's field and the valid destination 'field to decode that instruction's settings.
  • the operations performed on the APS are reproduced in the CPS.
  • the BB field is changed to 0 in the entry of the CRF in which the entry address is popped from the CPS in accordance with the operation for the CPS described above, and the entry address is changed to the FL. register.
  • the S field can be stored, or the LSU will store the store instruction in the LSU. Indicate the address of the current entry and request that the actual store be performed. This ensures that data is stored in-order. Further, the operations for CPS and CRF are performed in the same manner as above, and 1 is added to the value of the completion pointer.
  • the instruction held in the IQ entry excluded from the queue is completed. Since all instructions that have been 'decoded' before that instruction have completed, the instruction will be completed in-order.
  • dload [A] (Load double precision floating point data corresponding to variable name [A])
  • dload [B] (Load double precision floating point data corresponding to variable name [B]) dadd (Double precision floating point Addition between data)
  • dup_xl creates a copy of the word at the top of the stack and interrupts the third word from the top
  • the obtained addition data is converted to single precision, and thereafter, calculation is performed in single precision.
  • FIG. 6 to FIG. 12 are explanatory diagrams showing, for each cycle, the operation of processing the program in the computer system of the first embodiment. The detailed operation will be described below with reference to this figure.
  • the configuration of each entry of CRF 6 and IQ 5 is the same as that of FIGS. 3 and 5, respectively. Blank areas in Figs. 6 to 12 mean that it is not necessary to pay attention to the contents of the field.
  • Blank areas in Figs. 6 to 12 mean that it is not necessary to pay attention to the contents of the field.
  • a hyphen and a number corresponding to each cycle are added to the end of the code of each part.
  • FIGS. 6 to 12 it is assumed that the entries of APS, CPS, IQ and CRF are assigned addresses from the bottom in the order of 0, 1, 2,.
  • LSU initiates access to variable A.
  • the latency is two cycles.
  • LSU starts accessing variable ⁇ .
  • the latency is two cycles.
  • the LSU sends two words ⁇ ⁇ -1 and A-1 2 that make up the data of variable ⁇ , so write them to the data fields of CRF entries 6 (0) and 6 (1), respectively, and write the WCF field To 1
  • the addresses ⁇ 0> and ⁇ 1> of the CRF entry are collated in each source 'field. In this case, the instruction is written at the same timing.
  • the second source 'field matches, so the WCF 1, 2 fields of the same entry are set to 1. (For the WCF fields 3 and 4, the WCF field of the corresponding entry of the CRF in the 6-2 state is read and sent as described in (3—A). So this is written.)
  • the contents of the above instruction are written to IQ entry 5 (3).
  • the addresses ⁇ 4> and ⁇ 5> of the CRF entry popped from ⁇ S are the first and second source fields, respectively, and ⁇ 6> pushed to APS is the first destination.
  • the WCF field is read out in each of the entries 6 (4) and 6 (5) of the CRF in the state of 6-3, and is sent to the respective fields of the WCFs 1 and 2 of the IQ.
  • the LSU sends the two words B-1 and B-2 that make up the data of variable B. Write them in the data fields of entries 6 (2) and 6 (3) of the CRF, respectively, and write the WCF field. To 1
  • each source 'field matches the address ⁇ 2>, ⁇ 3> of the CRF entry.
  • Each field of WCF 3 and 4 of the same entry is 1.
  • the execution of the instruction written to the IQ entry 5 (1) is completed normally, so the S field of 5 (1) is changed to 1 meaning normal termination. I do.
  • the S field becomes 1
  • the CPS (and CRF) is manipulated based on the contents of 5 (0). That is, ⁇ 0> and ⁇ 1> written in the destination 'field of entry 5 (0) of IQ are pushed to CPS, and CPS becomes 414.
  • 1 is added to the value of the completion pointer to be 1, and the instruction of 5 (0) is completed.
  • the entry 5 (2) in which the arithmetic instruction is written has all the WCF fields set to 1, so the contents of this entry 5 (2) are Address 2 and C RF 6 (0), 6 (1), 6 Send it to the operation unit 0 together with the source 'data written in each entry of (2) and 6 (3) to start the operation. It is assumed that the latency of this operation is two cycles.
  • the instruction dup_xl changes the word 'stack force (as it grows to the right) ...., wordl, word2 when it is in a state like word.
  • the operand ' is a stack operation instruction that creates a copy of one word on the stack. Assignment, change the APS with ⁇ 6> and ⁇ 7> from the bottom as shown in 3-5 to ⁇ 8>, ⁇ 6>, and ⁇ 7> as shown in 3-6.
  • the contents of the above instruction are written to IQ entry 5 (5).
  • the address ⁇ 7> of the CRF entry allocated to hold the copy source data is set to the first source field, and the newly allocated CRF to hold the copy data is set.
  • the address ⁇ 8> of the first entry is written in the first destination field.
  • the WC is entered in entry 6 (7) of the CRF in the state 6_5.
  • the F field is read and sent to the IQ WCF 1 field. In addition, add 1 to the value of the setting pointer to make it 6;
  • LSU initiates access to variable T.
  • the latency is two cycles.
  • the two words (A + B) -1 and (A + B) _2 that make up the operation result are sent.
  • the IQ matches the addresses ⁇ 4> and ⁇ 5> of the CRF entry in each source 'build', but in this case, the first and second source 'fields of the IQ entry 5 (3) Since each field matches, the WCF 1 and 2 fields of the same entry are set to 1.
  • the contents of the above instruction are written to IQ entry 5 (6).
  • the addresses ⁇ 6> and ⁇ 7> of the CRF entries popped from the APS are placed in the first and second source fields, respectively, and the ⁇ 9> pushed to the APS is placed in the first destination field.
  • the WCF field is read in each of the entries 6 (6) and 6 (7) of the CRF in the state 6-6 and sent to the WCF 1 and 2 fields of the IQ, respectively.
  • entry 5 (3) in which the arithmetic instruction is written has all the valid WCF fields set to 1, so the contents of entry 5 (3) are It is sent to the operation unit 0 together with the source data written in each of the address 3 and the CRF 6 (4) and 6 (5) to start the operation. It is assumed that the latency of this operation is two cycles.
  • the IQ checks the address ⁇ 7> of the CRF entry in each source 'field.
  • the instruction is executed at the same time as the first source and field of IQ entry 5 (5).
  • the WCF1 field of 5 (5) and the WCF2 field of 5 (6) are set to 1.
  • the WCF 1 field of (5) (6) the WCF field of CRF entry 6 (6) in state 6-6 is read and sent as described in (7—A). So this is the call I will be absorbed.
  • the S field becomes 1, and the CPS and CRF are manipulated based on the contents of 5 (2). That is, ⁇ 0>, ⁇ 1>, ⁇ 2>, and ⁇ 3> written in the source's final field of IQ entry 5 (2) are popped from the CPS and written to the destination 'field. ⁇ 4> and ⁇ 5> are pushed to the CPS, and the CPS becomes 417. Entry 'Address is changed from CPS. For each of the 6 (0), 6 (1), 6 (2) and 6 (3) entries in the CRF, change the BB field to 0. The addresses ⁇ 0>, ⁇ 1>, ⁇ 2>, and ⁇ 3> of the CRF entry are registered in FL. Further, 1 is added to the value of the completion pointer to be 3, and the instruction of 5 (2) is completed.
  • Operand An operation instruction that pops two words of source data from the stack, performs an operation, and pushes the operation result of one word. Therefore, pop ⁇ 8> and ⁇ 9> from APS and register them in FL. Allocated free CRF entry 6 (10) is allocated to hold the operation result, and the address ⁇ 10> of the entry is pushed to the APS, and the APS becomes as 3-8.
  • the above instruction is stored in IQ entry 5 (7).
  • the address ⁇ 8> and ⁇ 9> of the CRF entry popped from the AP are placed in the first and second source fields, respectively, and the ⁇ 10> pushed to the AP is placed in the first destination field. Is written in.
  • the WCF field is read by each entry of 6 (8) and 6 (9) of the CRF in the state of 6-7, and is sent to the WCF 1 and 2 fields of IQ, respectively. In addition, add 1 to the value of the setting pointer to make it 8.
  • the operation result (A + B) of one word will be sent, so the data field of entry 6 (6) of the CRF will be Write and change the WCF field to 1.
  • the IQ matches the CRF entry address ⁇ 6> in each source 'field, but in this case it matches in the first source' field of IQ entry 5 (6), so Set the WCF 1 field of the same entry to 1.
  • the operand 5 (5) in which the operand 'stack operation instruction is written such that a copy is created on the stack is written because the effective WCF field is 1 Perform a copy of. That is, data is read from the entry 6 (7) of the CRF, written to the data 'field of the entry 6 (8) of the CRF, and the WCF field is changed to 1.
  • the IQ matches the address ⁇ 8> of the CRF entry in each source 'field, in which case the instruction is written at the same timing and the first source field of entry 5 (7) of IQ Field, the WCF 1 field of the same entry is set to 1. (For the WCF 2 field, as described in (8-A), the WCF field of CRF entry 6 (9) in the 6-7 state is read out and sent, so this is written. Change the S field of IQ entry 5 (5) to 1 which means normal termination.
  • the S field is 0, so that nothing is performed as the operation of the completion stage.
  • the contents of the above instruction are written to IQ entry 5 (8).
  • the address ⁇ 10> of the CRF entry popped from the APS is written in the first source 'field.
  • the WCF field is read out at the entry 6 (10) of the CRF in the state 6_8, and is sent to the WCF1 builder of the IQ.
  • set the value of the setting pointer to 1 (1 to 9).
  • entry 5 (6) in which the arithmetic instruction is written has all valid WCF fields set to 1, so the contents of this entry 5 (6) are The operation unit together with the source data written in the address 6 of that entry and the entries 6 (6) and 6 (7) of the CRF G1 to start the calculation. It is assumed that the latency of this operation is 10 cycles.
  • the S field becomes 1, and the CPS and CRF are operated based on the contents of 5 (3). That is, ⁇ 4> and ⁇ 5> written in the source field of IQ entry 5 (3) are popped from the CPS, and ⁇ 6> written in the destination field is pushed to the CPS.
  • the CPS will be like 4-9. Entry 'Change the BB field to 0 for each of the 6 (4) and 6 (5) entries of the CRF whose address is popped from the CP. Register the addresses ⁇ 4> and ⁇ 5> of the CRF entry in FL. Further, 1 is added to the value of the completion pointer to be 4, and the instruction of 5 (3) is completed.
  • the CPS (and CRF) is manipulated based on the contents of 5 (4). That is, ⁇ 7> written in the destination 'field of the entry 5 (4) of the IQ is pushed to the CPS, and the CPS becomes as shown in 4-10. Further, 1 is added to the value of the completion pointer to be 5, and the instruction of 5 (4) is completed.
  • the entry 5 (7) in which the operation instruction is written has all the valid WCF fields set to 1, so the contents of this entry 5 (7) are Entry address 7 and. It is sent to the operation unit 0 together with the source 'data written in each of the entries 6 (8) and 6 (9) of RF to start the operation. It is assumed that the latency of this operation is two cycles.
  • the S field becomes 1, and the CPS and CRF are operated based on the contents of 5 (6). That is, ⁇ 6> and ⁇ 7> written in the source of IQ entry 5 (6) are popped from the CPS, and ⁇ 9> written in the destination field is bushed to the CPS. And the CPS will look like 4-19. Entry address is popped from CPS In each of CRF entries 6 (6) and 6 (7), the BB Change the field to 0. The addresses ⁇ 6> and ⁇ 7> of the entry of the CRF are registered in the FL. In addition, 1 is added to the value of the completion pointer to 7 and the instruction of 5 (6) is completed.
  • entry 5 (8) For an IQ in the 5-20 state, entry 5 (8), where the store instruction is written, has a valid WCF field of 1, so the CRF entry 6 (10 Send the source data written in) to the LSU. 5 Change the S field in (8) to 1 which means that the store is executable.
  • the S field becomes 1, and the CPS and CRF are operated based on the contents of 5 (7). That is, ⁇ 8> and ⁇ 9> written in the source field of the IQ entry 5 (7) are popped from the CPS, and ⁇ 10> written in the destination field is changed to the CP. S And the CPS looks like 4—2 1 Entry address is popped from CPS For each 6 (8), 6 (9) entry in the CRF, change the BB field to 0. The addresses ⁇ 8> and ⁇ 9> of the CRF entry are registered in the FL. Further, 1 is added to the value of the completion pointer to 8 and the instruction of 5 (7) is now completed.
  • speculative execution based on branch prediction can be realized.
  • a PS history file is provided to enable speculative execution.
  • branch prediction is incorrect, cancel the instruction sent to the operation unit, branch unit and LSU execution unit based on the branch tag attached to the instruction decoded after the conditional branch instruction.
  • Match the forking tag in the C field in the CRF, and for each matching entry Then, the BB field is changed to 0, the address of the entry is registered in the FL, and the value of the IQ setting pointer is rewritten to the address next to the entry in which the conditional branch instruction is written, thereby obtaining the condition.
  • Decode after branch instruction ' ⁇ Invalidates the set instruction.
  • the contents written in the APS history file when the conditional branch instruction is decoded are copied to the APS entry and the PP-OF-APS whose contents do not match the CPS entry at the same address. And resume processing from the instruction at the correct location.
  • the computer system of the present invention by using the APS history file, it is possible to reconstruct the state at each time when the conditional branch instruction is decoded and the branch prediction is performed. Speculative execution based on branch prediction is possible.
  • the computer system of the present invention can be configured so that a plurality of instructions can be simultaneously decoded and set.
  • the order of fetching the address of the free CRF entry from the FL for allocation is determined, and how many words should be popped and how many words should be pushed in each instruction. It is possible to understand multiple stack operations and decode and set multiple instructions at the same time.
  • the stack operation for CPS in each instruction is strictly determined in advance, simultaneous completion of a plurality of instructions can be realized more easily.
  • Simultaneous decoding 'settings z The more instructions that can be completed, the more complicated the instruction decoding' setting unit and other control circuits, and the number of ports in each register that constitutes IQ and CRF ' Each entry A larger amount of hardware is required in terms of the number of comparison circuits provided for each source 'field, the number of operation units, and the number of buses connecting the components.
  • the decode 'setting is divided into two stages, and in the first half of the stage, the contents of a plurality of instructions to be simultaneously decoded' set are converted into an integrated format.
  • a simple configuration is also possible.
  • the contents of the APS before setting are Vietnamese s2, si, s0 (the right end is the top of the stack), and the contents of the free list, which constitutes the FIFO queue, are (in the order of retrieval) It is written as ⁇ ).
  • the second embodiment is different from the first embodiment in the method of processing the operand 'stack operation instruction.
  • the computer system of the second embodiment is different from the first embodiment in that Although the structure of the entry of the Isle (CRF) 6 is different, the basic structure of the computer system, and the forward pointer 'Stack (APS) 3, Completion Pointer' stack (CPS) 4, and the instruction queue (IQ) 5 The configuration is the same.
  • FIG. 14 is an explanatory diagram showing a detailed configuration of each entry 6 (i) of the CRF 6 in the second embodiment.
  • i is the address of the entry.
  • Each entry 6 (i) of CRF 6 is a data field 6 1 (i), a write completion flag (WCF) field 62 (i), and a color (C, Color) field 6 3 (i ), The business bit (BB) field 64 (i), and the number of reference (NR) field 65 (i).
  • the data 'field and the WCF, C, and BB fields of each entry of the CRF are the same as in the first embodiment.
  • the NR field is made to write the number of entries in the CPS that hold the address of the entry in the CRF.
  • the store (Spill) is performed as follows. In this case, the contents of the entry indicated by BP—OF—PS must match in the APS and the CPS, but the two pointers that match in the stack are the contents of the entry indicated by BP—OF—PS.
  • Store (Spill) one word of data written in the entry of the indicated CRF in the data cache, and add 1 to the value of BP-OF-PS. Furthermore, in the above CRF entry, the NR field Subtract 1 from the value of C. As a result, if the value becomes 0, the BB field of the entry of the CRF is changed to 0, and the address of the entry is registered in the FL.
  • the fill of one word data from the data cache to the CRF is performed as follows. That is, one word of data stored at the end (Spill) is extracted from the data cache, a free CRF entry registered in FL is allocated to the data cache, and written in the data 'field. Each field of WCF, NR, and BB shall be 1. Further, the address of the allocated entry of the CRF is written below the entry indicated by BP-OF-PS of APS and CPS, respectively, and 1 is subtracted from the value of BP-OF-PS.
  • the computer system of the second embodiment is almost the same as that of the first embodiment. However, the differences between the computer system of the first embodiment and those of the first embodiment are described below. The operation of the computer system according to the embodiment will be described.
  • the operation to be performed on the operand' stack is performed in exactly the same way for the CPS even if the instruction creates a copy on the stack.
  • the CPS is operated to reproduce the operation of the APS when the 'Decode' is set.
  • the entry address is popped from the CPS.
  • the BB field is changed to 0 only when the value of the NR field becomes 0, and the entry is changed.
  • 'Register the address in FL.
  • the configuration of each entry of CRF 6 and IQ 5 is the same as that of FIGS. 14 and 5, respectively.
  • a blank area in Fig. 15 to Fig. 21 means that it is not necessary to pay attention to the contents of the field.
  • a hyphen and a numeral corresponding to each cycle are added at the end of the code of each part, and FIGS. 6 to 12 show operation examples in the first embodiment.
  • the letter 'a' is appended to distinguish it from the sign.
  • the computer system of the present invention is not limited to the above-described embodiment, and various embodiments having different configurations in detail exist. For example, you can:
  • IQ is configured so that source data is also written to each entry.
  • source 'data is written at the same timing as the corresponding WCF field becomes 1.
  • register 'base superscalar' architecture a similar intent can be found in the register 'base superscalar' architecture.
  • the instruction set includes both a stack type instruction and a register type instruction, is also feasible.
  • the integrated register 'file entry' address is written to each entry provided corresponding to the register number, and the forward register 'matching'.
  • Table and Completion Register A configuration that has a 'Mating' table.For stack type instructions, advance Z completion pointer 'Manipulate the stack, and for register type instructions, access the advance / completion register' Mapping 'table. I do.
  • the computer system of the present invention processes a program described in a machine language of a stack machine out-of-order while guaranteeing accurate exception processing.
  • efficient processing can be performed by parallel processing and their pipelining.
  • speculative execution based on branch prediction and decoding with multiple instructions per cycle can be set to complete Z can further increase the speed.

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)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Description

明 細 書 計算機システム 技術分野
本発明は、 スタックマシンの機械語で記述されたプログラムを高速で 処理する新規な構成の計算機システムに関するものである。 背景技術
従来、 スタックマシンにおいては、 命令の実行は、 基本的にプロダラ ム上の順序通り ( in-order ) に行われるものであった。 すなわち、 スタ ックマシンにおける演算命令は、 オペランド 'スタックからソース'デ一 タをポップし、 演算を実行し、 その演算結果をオペランド ' ·スタックに プッシュするというような動作を指示するものであるが、 このような命 令の連鎖として書かれたプログラムを逐次的に実行するのである。
このような従来のスタックマシンにおいては、 命令をプログラム上の 順序通り ( in-order ) に実行するので、 制御構造が単純なもので済むと いう利点があるが、 処理速度が制約を受けるという問題点があった。
そこで、 スタックマシンの機械語で記述されたプログラムを out-of-orderで処理するような計算機方式が考案された。 例えば、 日本特 公平 2— 2 6 0 0 8 2号、 米国特許第 5 5 2 2 0 5 1号や、 米国特許第 5 3 3 3 3 2 0号及ぴ米国特許第 5 7 6 5 0 1 4号におけるプロセッサ 要素がある。 これらの明細書に示されるプロセッサは、 処理性能の向上 という点で十分ではない上に、 正確な例外処理を保証する上で問題があ つた。
本発明は、 上記問題点を解決するため創案されたものであり、 正確な 例外処理を保証しつつ、 スタックマシンの機械語で記述されたプロダラ ムを out-of-order でより効率的に処理する計算機システムを提供するこ とを目的としている。 発明の開示
本発明による計算機システムは、 データ 'キャッシュと、 各々のェン トリにデータが書き込まれるようになっている統合レジスタ 'ファイル と、 各々のェントリに統合レジスタ.ファイルのェントリのァドレスが 書き込まれるようになっているスタックの構成となっている前進ボイン タ 'スタック及び完了ポインタ 'スタックと、 各々のエントリに個々の命 令の内容が書き込まれるようになつている F I F Oキューの構成となつ ている命令キューと、演算を実行するようになっている演算ュニッ 卜と、 デ—タ.キヤッシュ及び統合レジスタ 'ファイルにアクセスできるように なっているロード Zストァ'ュニッ卜とを具備する。
従来のスタックマシンにおいて、スタックが ...... , wordl, word2, word3, word4 (右端がスタック トップ) となっている状態は、 本発明による計 算機システムにおいて、 ポインタ 'スタックが ......, < a > , 〈b〉 , < c > ,
〈d〉 (右端がスタック トップ) で、 エントリ 'アドレスが 〈a〉 , 〈b〉 , 〈c〉 及び 〈d〉 である統合レジスタ.ファイルの各エントリに、 それ ぞれ wordl, word2, word3 及び word4 が保持されている状態に対応す る。
本発明の計算機システムにおいては、 命令がデコードされるごとに、 その命令の内容に応じて前進ボインタ ·スタック及び統合レジスタ ·ファ ィルを操作すると共にその命令の内容を命令キューに書き込むようにな つている。 この際、 命令に含まれるオペランド'スタックに対するスタ ック操作が、 前進ポインタ ·スタックに対して同様に適用される。 ここ で、 1語のデータのオペランド♦スタックへのプッシュ操作を、 本発明 の計算機システムにおいてエミュレートするには、 割り付けられていな い統合レジスタ 'ファイルの 1ェントリをそのデータを保持すべく割り 付け、 そのェントリのァドレスを前進ボインタ ·スタックにプッシュす ればよい。
即ち、 オペランド 'スタックに対するポップ操作を含む命令がデコ一 ドされた場合には、 ポップすべき語数と同じ数だけ統合レジスタ ·ファ ィルのェントリのァドレスを前進ポィンタ.スタックからポップする。 オペランド 'スタックに対するプッシュ操作を含む命令がデコードされ た場合には、 プッシュすべき語数と同じ数だけ割り付けられていない統 合レジスタ 'ファイルのェントリを割り付け、 上記割り付けた統合レジ スタ 'ファイルのェントリのァドレスを前進ポインタ.スタックにプッシ ュする。 さらに、 デコードされた命令の内容を、 ポップ/プッシュ操作 を伴う命令の場合にはポップ Zプッシュされる統合レジスタ ·ファイル のェントリのァドレスと共に、命令キューに書き込むようになっている。 命令キューに保持されている未実行の命令は、 データ駆動 (各々の動 作が、 必要なすべてのソース 'データが揃い実行可能となった時点で実 行されること) の原理に基づき out-of-order で処理されるようになって いる。
例えば、 命令キューにおいて、 演算命令を書き込みの内容とし、 必要 なソース'データが全て統合レジスタ.ファイルに書き込み済みとなって いるエントリがあり、 演算ユニットが利用できる状態であれば、 その演 算の実行を開始する。 演算の実行が正常に終了すれば、 演算結果をデス ティネーションである統合レジスタ 'ファイルのェントリに書き込む。 命令キューの先頭のェントリにおいて保持されている命令の完了が可 能である、 あるいはそうなると、 その命令キューの先頭のエントリの内 容に基づき、 保持されている命令がデコードされた際の前進ボインタ- スタックの動作を再現すベく完了ポインタ ·スタックを操作し、 命令キ ユーからその先頭のェントリを除外し、 ポップ操作によって完了ボイン タ 'スタックにおけるァドレスの保持が無くなった統合レジスタ.フアイ ルのェントリの割り付けを解除するようになっている。 図面の簡単な説明
第 1図は、 本発明にかかる好ましい計算機システムの基本構成を示す ブロック図、 第 2図は、 前進ポインタ ·スタック及び完了ポインタ ·スタ ックの構成を示す図、 第 3図は、 後述する本発明第 1実施例における統 合レジスタ ·ファイルの各々のェントリの詳細な構成を示す図、 第 4図 は、 命令キューの構成を示す図、 第 5図は、 命令キューの各々のェント リの詳細な構成を示す図、 第 6図〜第 1 2図は、 本発明第 1実施例にお ける一動作例の、 サイクル毎の前進ポインタ ·スタック、 完了ポインタ · スタック、 命令キュー及び統合レジスタ *ファイルの内容を具体的に示 した説明図、 第 1 3図は、 本発明第 1実施例において、 1サイクル当り 3命令までデコードできるような構成をとる場合に、 プログラムがどの ように変換されるかを具体的に示す図表、 第 1 4図は、 後述する本発明 第 2実施例における統合レジスタ 'ファイルの各々のェントリの詳細な 構成を示す図、 第 1 5図〜第 2 1図は、 本発明第 2実施例における一動 作例の、サイクル毎の前進ボインタ ·スタック、完了ボインタ 'スタック、 命令キュ一及び統合レジスタ ·フアイルの内容を具体的に示した説明図 である。 発明を実施するための最良の形態
以下に、 本発明にかかる好ましい計算機システムについて、 図面を参 照しながら説明する。 なお、 以下に述べる本発明による計算機 · の実施例は、 Java Virtual Machine (Java VM) で規定されるスタックマ シンの基本的な命令をハードウエアで実行するものである。 すなわち、 データ語長を 32 ビットとして、 これを単位に口一ド /ストァ及ぴ算術 論理演算等の演算を行う。従って、例えば、倍長語の間での算術演算は、 2語づっ合せて 4語のソース'データをもとに 2語の演算結果を生ずる。 従来のスタックマシンにおける、 語の単位でデータがプッシュ/ポッ プされるようになつているスタックは、 後述するボインタ.スタックと 区別するために、 以降では、 ワード ·スタックと呼ぶことにする。
Java VM にはもともとハードウエアで実行することを想定していない 複雑な命令が含まれるが、 以下に述べる本発明による計算機システムの 実施例は、 次のような基本的な命令をハードウ アで実行するものとす る。
( a ) 即値データのオペランド'スタックへのプッシュ命令
bipush, sipush, aconst null, iconst ml, iconst <i>, fconst く f>, lconst〈1〉, dconstく d〉
( b ) 変数データのオペランド 'スタックへのロード命令
ldcl, ldc2, iload, iloadく n〉, fload, fload—く n〉, aload, aload— <n>, ldc2w, Iload, Iload— <n>, dload, dload <n>, iaload, laload, faload, daload, aaload, baload, caload, saload
( c ) オペランド 'スタック上のデータの変数へのストァ命令
istore, istore 、n>, fstore, fstore く n>, astore, astore—く n>, lstore, lstore <n>, dstore, dstore—く n>, iastore, lastore, fastore, dastore, aastore, bastore, castore, sastore
( d ) 演算命令
( d - 1 ) 算術演算命令 iadd, ladd, fadd, dadd, isub, Isub, fsub, dsub, imul, Imul, finul, dmul, idiv, Idiv, fdiv, ddiv, irem, lrem, frem, drem, ineg, lneg, fiieg, dneg
( d— 2 ) 論理演算命令
ishl, ishr, iushr, lshl, lshr, lushr, iand, land, ior, lor, ixor, lxor
( d— 3 ) 変換演算命令
i21, ilf, i2d, 12i, 12f, 12d, f2i, f21, fid, d2i, d21, d2f, int2byte, int2char, int2short
( d— 4 ) 比較演算命令
lcmp, fcmpl, fcmpg, dcmpl, dcmpg
( e ) オペランド 'スタックの操作命令
pop, pop2, dup, dup2, duo xl, dup2 xl, dup_x2, dup2 x2, swap
( f ) 分岐命令
ifeq, ifiiull, iflt, ifle, ifiie, ifiionnull, ifgt, ifge, ii icmpeq, if icmpne, if icmplt, if icmpgt, ii icmple, ii lcmpge, goto, goto w
以降、 特にことわらない限り、 「命令」 とは上に挙げた命令のいずれ かを意味するものとする。
以下に、 オペランド 'スタックの操作命令の処理方法の異なる、 第 1 及ぴ第 2の 2つの実施例について説明する。
まず、 本発明第 1実施例の計算機システムについて説明する。
第 1図は計算機システムのプロック図であって、 1 0は命令キヤッシ ュ、 1 1はデータ'キャッシュ、 2 0は命令フェッチ 'ユニット、 2 1は 命令デコード '設定ユニット、 3は前進ポインタ,スタック、 3 aは前進 ポインタ 'スタック履歴ファイル、 4は完了ポインタ ·スタック、 5は命 令キュ一、 6は統合レジスタ.ファイル、 7はフリー.リスト、 8 0及ぴ 8 1は各々演算ユニット 0及び 1、 8 2は分岐ユニット、 8 3はロード Zストア ·ユニットを表している。
次に、 本発明第 1実施例の計算機システムの各構成要素ごとにその詳 細な構成を説明する。
(A) 命令フユツチ.ュニット
命令フェッチ 'ユニットは、 図示してないプログラムカウンタ (pC レ ジスタ) を具備しており、 命令キャッシュから命令をフェッチし、 命令 デコード '設定ユニットに渡す。 分岐の予測や分岐の実行も担う。
(B) 命令デコード ·設定ユニット
命令デコード '設定ュニットは、 命令フェッチ'ュニットから渡された 命令のデコードを行い、 命令に含まれる演算等がデータ駆動で実行され るように、 後述する前進ポインタ 'スタック、 命令キュ一及び統合レジ スタ ·ファイル等を設定するための各種信号を発生する。
(C) ボインタ 'スタック
ポインタ ·スタックは、 各々のェントリに統合レジスタ ·ファイルのェ ントリのァドレスが書き込まれるようになつているスタックの構成とな つている。
従来のスタックマシンにおいて、 ワード'スタックが ......, wordl, word2, word3, word4 (右端がスタック トップ) となっている状態は、 本 発明による計算機システムにおいて、 ポインタ 'スタックが ....., <a ) ,
<b> , < c) , <d> (右端がスタック トップ) で、 エントリ 'ァドレス カ 〈a〉 , 〈b〉 , 〈c〉 及び 〈d〉 である統合レジスタ 'ファイルの各ェ ントリに、 それぞれ wordl, word2, word3 及び word4 が保持されてい る状態に対応する。
本発明の計算機システムは、 前進ポインタ 'スタック (A P S ; Advanced Pointer Stack) と完了ポインタ 'スタック (CP S ; Completed Pointer Stack) の 2つのポィンタ 'スタックを具備する。
本発明の計算機システムにおいては、 個々の命令がデコードされるご とに、 前進ポインタ 'スタック (以下では A P Sで示す) 及び統合レジ スタ ·ファイルを操作すると共に命令の内容を命令キューに書き込むこ とにより、 命令に含まれる演算等がデータ駆動で実行されるべく設定さ れる。 すなわち、 前進ポインタ ·スタックはデコード '設定済みの全ての 命令によるスタック操作を反映している。
他方、 完了ポインタ 'スタック (以下では C P Sで示す) は、 プログ ラム上の順番で完了済みの全ての命令によるスタック操作を反映するも のである。 本発明の計算機システムはデータ駆動の原理に基づく out-of-order実行を可能とするものである 、完了ポインタ ·スタックは、 正確な例外処理を保証するため、 プログラムが in-order で実行された場 合の状態を構成するために存在するものである。
ポインタ.スタック及び統合レジスタ 'ファイルのェントリ数は限られ たものであるので、 ワード'スタックが成長すると、 ポインタ 'スタック 及び統合レジスタ 'ファイルを用いてスタック ·トップ近傍の部分しか保 持できない。 本実施例の計算機システムにおいては、 ワード'スタック の残りの部分はデータ'キャッシュに格納されるようになっている。 そ のため、 各ボインタ 'スタックは循環型のバッファの構成となっており、 プッシュ ·ポインタとボトム ·ボインタと呼ぶ 2つのレジスタが各々存在 する。 プッシュ 'ポインタは、 統合レジスタ.ファイルのエントリのアド レスを保持する最上位のェントリの 1つ上を示す。 ボトム'ポインタは、 統合レジスタ 'ファイルのェントリのァドレスを保持する最下位のェン トリを示す。 ボトム'ボインタの値からプッシュ ·ボインタの値を引くこ とで、 ポインタ ·スタックに何エントリの空きがあるかがわかる。 初期 状態においては、 プッシュ ·ボインタ及ぴボトム 'ボインタの各々の値は 共に 0となっている。
第 2図は、 本実施例の計算機システムにおける各ポインタ 'スタック と各プッシュ 'ポインタ及ぴボトム 'ボインタの関係を示す説明図であ る。 2つのポィンタ 'スタック A P S 3及び C P S 4は同数のェントリ を有し、 各ポインタ'スタックで各々のエントリに下から順に 0、 1、 2、 · · · とアドレスが付けられているものとする。 縦線が施されている ェントリは統合レジスタ 'ファイルのェントリのァドレスを保持してい るものとする。 第 2図に示すように、 プッシュ ·ポインタは、 A P S及 ぴ C P Sの各々に対して設けられており、 それぞれ PP— OF— APS 及ぴ PP— OF— CPS と名付けている。 他方、 ボトム'ポインタは 1つだけ設けら れており、 これが A P S及び C P Sで共用される。 これを BP— OF— PS と名付けている。
A P Sと C P Sの間には、 エントリの数だけ比較回路が設けられてお り、 A P S及び C P Sの同じエントリ ·アドレスにある (第 2図におい て水平に並ぶ)ェントリの間でその内容が比較されるようになっている。 命令に含まれるオペランド'スタックに対する 1語分のプッシュ操作 に対応して割り付けられる統合レジスタ.ファイルの 1エントリのアド レスを A P Sの PP— OF— APS で示されるェン ト リ に書き込み、 PP OF APS の値に 1を加えるようになつている。 逆に、 命令に含まれ るオペランド'スタックに対する 1語分のポップ操作に対応して、 PP OF APS の値から 1を引くようになつている。 C P Sと PP— OF_CPS に関しても同様である。
BP OF PS で示されるエントリの内容が A P Sと C P Sで一致する場 合には、 その 2つのボインタ ·スタックで一致する内容で示される統合 レジスタ 'ファイルのェントリに書き込まれている 1語分のデータをデ 一タ'キャッシュにストァ (Spill)することができる。 その際、 BP_OF_PS の値に 1を加えるようになつている。 逆に、 データ ·キャッシュにス ト ァ (Spill) したデータを統合レジスタ 'ファイルにロード (Fill) する場 合には、 最後にストア (Spill) した 1語分のデータに対し、 フリー-リ ストに登録されている統合レジスタ ·ファイルの 1ェントリを割り付け てそのデータを書き込み、 その統合レジスタ.ファイルのェントリのァ ドレスを A P S及ぴ C P Sの BP— OF_PS で示されるェントリの 1つ下 に各々書き込み、 BP_OF— PSの値から 1を引くようになっている。
本実施例の計算機システムは、 分岐予測に基づく投機的実行を可能に するために、 前進ポインタ 'スタック履歴ファイル (以下では 「A P S 履歴ファイル」 と記す) を具備する。 A P S履歴ファイルの各々のェン トリには、 A P Sの全ェントリ及ぴ PP— OF— APS の内容が書き込めるよ うになっている。
( D ) 統合レジスタ 'ファイル (C R F ; Consolidated Resister File) 統合レジスタ'ファイル (以下では C R Fで示す) は、 従来のスタツ クマシンにおけるヮード 'スタックの内容を、 順序不同で保持するもの である。
第 3図は、 本第 1実施例における、 C R F 6の各々のエントリ 6 (i) の詳細な構成を示す説明図である。 ここで、 iはエントリのアドレスで ある。 C R F 6の各々のエントリ 6 (i)はデータ ·フィールド 6 1 (i)、 書 込み完了フラグ (WC F, Write Completion Flag) フィールド 6 2 (i)、 カラー (C, Colour) ブイ一ルド 6 3 (i)及びビジービット (B B ) フィ ールド 6 4 (i)から成っている。
実際の C R Fのハードウェア上の構成は、 上述の各フィールド別に設 けられたレジスタ ·ファイルの集合体である。
C R Fの各々のェントリのデータ'フィールドは、 1語分のデータが 書き込まれる構成となっている。
C R Fの各々のエントリにおいて、 W C Fフィールドは、 データ 'フ ィールドにデータの書き込みが完了していれば 1、 完了していなければ 0が書き込まれているようになっている。 CRFの各々のエントリにおいて、 Cフィールドは、 その C RFのェ ントリカ 命令に含まれるプッシュ操作に対応して割り付けられたもの であるのか、 アンダ一フ口一回避のためのデータ.キヤッシュからの口 一ド(Fill)の際に割り付けられたものであるのかの区別、 前者の場合に はさらに分岐タグが書き込まれるようになつている。 本実施例において は、 後述するように、 分岐タグは A P S履歴ファイルのエントリのアド レスと一定の関係にある。
CRFの各々のエントリにおいて、 B Bフィールドは、 その C R Fの エントリがデータを保持すベく割り付けられている状態であれば 1、 割 り付けられていない状態であれば 0が書き込まれているようになってい る。
(E) フリー'リス ト (F L)
フリー ·リス ト (以下では F Lで示す) は、 フリーな、 即ち、 割り付 けられていない (B Bフィールドが 0である) C R Fのエントリのアド レスを保持するためのメモリであり、 本実施例においては、 循環型の F I F Oキューの構成となっている。
初期状態においては、 C RFの全てのェントリのァドレスが F Lに登 録されている。 C RFのフリーなェントリを割り付ける必要がある場合 に、 F Lからフリーな C RFのエントリのアドレスが取り出される。 逆 に、 C R Fのあるエントリの割り付けが解除されれば、 そのエントリの ァドレスが F Lに登録されるようになっている。
( F ) 命令キュ一 1 Q ; Instruction Queue;
命令キュー (以下では I Qで示す) は、 実行または完了を待っている デコ一ド'設定済の命令を保持するメモリであり、 循環型の F I F Oキ ユーの構成となっている。
第 4図は、 I Qの構成を示す説明図である。 第 4図において、 I Q 5 の各々のエントリは下から順に 0、 1、 2、 · · ·とア ドレスが付けられ ているものとし、 縦線が施されている I Q 5のエントリは、 実行または 完了を待っている命令を保持しているものとする。 I Qは、 設定ポイン タ /完了ボインタと名付けた二つのレジスタを具備する。 設定ボインタ は、 次にデコード '設定される命令の内容を書き込むべきエント リを示 す。 完了ポインタは、 次に完了されるべき命令のエントリを示す。 完了 ポィンタの値から設定ボインタの値を引くことで、 I Qに何ェントリの 空きがあるかがわかる。 初期状態においては、 設定ポインタ及ぴ完了ポ インタの値は共に 0となっている。
第 5図は、 I Q 5の各々のエント リ 5 (i)の詳細な構成を示す説明図 である。 ここで、 iはエント リのア ドレスである。 I Q 5の各々のェン ト リ 5 (i)はオペレーショ ン'フィールド 5 0 0 (i)、 オペランド'フィ一 ルド 5 0 1 (i)、 第 1 ソース 'フィールド 5 1 0 (i)、 第 1書込み完了フラ グ(WC F 1 ) フィールド 5 1 1 (i)、第 2ソ一ス ·フィ一ルド 5 2 0 (i)、 第 2書込み完了フラグ (W C F 2 ) フィールド 5 2 1 (i)、 第 3ソース' フィールド 5 3 0 (i)、 第 3書込み完了フラグ (W C F 3 ) フィールド 5 3 1 (i)、第 4ソース'フィ一ルド 5 4 0 (i)、第 4書込み完了フラグ(W C F 4 ) フィールド 5 4 1 (i)、 第 1デスティネーシヨン'フィールド 5 5 (i)、 第 2デスティネーション 'フィールド 5 6 (i)、 分岐タグ (B T ) フィールド 5 7 (i)、 及び実行状態 ( S ; State) フィールド 5 8 (i)から 成っている。
I Qの各々のェント リのオペレーシヨン 'ブイ一ルドはオペレーショ ン-コ一ドが書き込まれる構成となっている。
I Qの各々のェント リのオペランド 'フィールドは、 オペレーション. コードに続いてオペランドが示されるような命令の場合に、 このオペラ ンドが書き込まれるようになっている。 I Qの各々のェントリの第 1〜第 4ソース'フィールドの各々は、 ソ 一ス'データを保持すべく割り付けられている C R Fのェントリのアド レスが書き込まれるようになっている。 オペランド 'スタックに対する ポップ操作を含む命令の場合には、 命令によりポップされるべきデータ を保持すべく割り付けられている C R Fのエントリのアドレスが、 ポッ プされる順に書き込まれるようになっている。
I Qの各々のェントリの第 1〜第 2デスティネーション'フィーノレド の各々は、 命令のデコード '設定に伴い、 新たに割り付けられる C R F のェントリのァドレスが書き込まれるようになっている。 オペランド' スタックに対するプッシュ操作を含む命令の場合には、 命令によりプッ シュされるべきデータを保持すべく割り付けられる C R Fのェントリの ァドレスが、 プッシュされる順に書き込まれるようになつている。
I Qの各々のェントリにおいて、 第 1〜第 4の各 W C Fフィールドは 各々第 1〜第 4ソース ·フィ一ルドに対応して設けられている。 WC F 1フィールドは第 1ソース'フィールドに示される C R Fのェントリに データの書き込みが完了していれば 1、 完了していなければ 0が書き込 まれているようになっている。 第 2〜第 4の W C Fフィールド、 ソース •フィールドに関しても同様である。
I Qは、 各ェントリのソース'フィールドごとに比較回路を備えてお り、 データの書き込みが行われる C R Fのエントリのアドレスを各ソー ス'ブイ一ルドの内容と比較して、 一致するソ一ス 'フィールドに対応す る WC Fフィールドに 1を立てるような機能を有する。
I Qの各々のエントリの B Tフィールドは、 分岐予測に基づく投機的 実行に係るもので、 本実施例においては、 後述するように、 B Tブイ一 ルドに書き込まれる分岐タグは A P S履歴ファイルのェントリのァドレ スと一定の関係にある。 I Qの各々のエントリにおいて、 Sフィールドは、 そのエントリに書 き込まれている命令の実行状態に応じて、未実行、実行済み、正常終了、 例外事象発生等の情報が書き込まれているようになっている。
( G ) 演算ュニット
本実施例の計算機システムは、 演算ユニット 0及び演算ユニット 1を 具備しており、 その各々は、 I Qより送られてくる算術論理演算、 デー タ ·タイプの変換演算、 比較演算等の演算命令を実行する機能を有し、 互いに独立に並行して動作することができるようになっている。
本発明の計算機システムにおいては、 各々の演算ュニットをパイプラ イン化したり、 より多くの演算ユニットを具備したり、 演算ユニットご とに実行する演算の種類を特定した構成とすることも可能である。
( H) 分岐ュニット
分岐ユニットは、 I Qより送られてくる条件分岐命令を処理し、 分岐 の有無を確定して、 命令フェッチ 'ュニッ トに通知する機能を有する。
( I ) ロード/ストア 'ユニッ ト ( L S U ; Load/Store Unit)
ロード/ス トア 'ユニット (以下では L S Uで示す) は、 ア ドレス計 算を行う機能を有し、 データ 'キヤッシュ及ぴ C R Fにアクセスするこ とができるようになっている。
L S Uは、 最初の口一カル変数へのポィンタを保持する図示してない レジスタ ( vars レジスタ) を具備する。 本実施例の計算機システムに おいては、 最初のローカル変数の格納域はデータ'キヤッシュあるいは C R Fにあるが、 vars レジスタには、 データ'キャッシュにおける相当 するアドレス値が書き込まれているようになっている。 すなわち、 全て あるいは一部のロー力ル変数の実際の格納域が C R Fにある場合でも、 各々のローカル変数に、 全てのローカル変数をデータ'キャッシュにス トァ (Spill) したと仮定した場合のデータ'キャッシュにおけるァドレ ス値を対応させることができるので、 ロード Zストァ命令の処理におい て、 LSUは vars レジスタの値を用いてアドレス計算を行い、 対象と なるローカル変数の格納域がデ一タ'キャッシュか CRFかを判定し、 その格納域にアクセスする。 格納域が CRFにあると判定された場合に は、 アクセスすべき CRFのエントリのアドレスは AP Sから読み出さ れる。
ロード ストァ命令が命令デコード '設定ュニットでデコードされる と、 その内容が、 命令キューに書き込まれると同時に、 LSUにも送ら れるようになっている。
LSUは、 プログラム上の順番で、 ロード/ス トア命令を命令キュー のェントリのァドレス、 対象となる変数名及ぴデータと共に蓄える図示 してないキューを具備する。 このキューは連想機能を備えており、 変数 名を照合してデータ 'アクセスの依存性の検証を行うことにより、 ロー ド命令の実行を out-of-order で行うことができるようになつている。 本 実施例の計算機システムにおいては、 ローカル変数の格納域はデータ · キヤッシュあるいは C RFにあるが、 上記キュ一にすでに同じ変数名の 書き込みがあるローカル変数のロード命令の場合、 変数データは上記キ ユーより読み出される。 ストア命令の実行は、 正確な例外処理を保証す るために、後述するように、完了ステージにおいて in-orderで行われる。
LSUは、 プログラム中に示されるロード Zストア命令を実行すると 共に、 オーバーフロー アンダーフローの回避のため、 AP S、 C P S 及び C RFの空きに応じて、 C RFに保持されているスタックの最下位 にあたるデータをデータ ·キヤッシュとの間で自動的にストァ(Spill)/ ロード(Fill)するようになっている。
本発明第 1実施例の計算機システムにおいては、 AP S、 CP S及 ぴ C R Fのオーバーフロー/アンダーフローは以下に示すようなメカ二 ズムにより回避される。
AP S、 C P Sあるいは CRFの空きが一定量以下になると、 オーバ ーフ口一を回避するために以下のような制御動作が随時行われるように なっている。
すなわち、 AP Sが C RFのエントリのアドレスを一定量以上保持し ていない場合、 あるいは、 BP— OF— PS で示されるエントリの内容が A P Sと CPSで一致しない場合、 以上の条件が解消するまでの間、 命令シ —ケンスの流れを停止するよう命令フェッチ.ュニットに信号が送られ る。
逆に、 AP Sが CR Fのエントリのアドレスを一定量以上保持してお り、 BP_OF— PS で示されるエントリの内容が AP Sと C P Sで一致する 場合には、 その 2つのポインタ 'スタックで一致する BP一 OF_PS で示さ れるェントリの内容で示される CRFのェントリに書き込まれている 1 語分のデ一タをデータ 'キャッシュにストア (Spill) し、 BP— OF— PS の 値に 1を加える。 さらに、 上記 CRFのエントリの B Bフィールドを 0 に変更し、 そのエントリのアドレスを F Lに登録する。
AP S、 C P S及ぴ CRFの空きがいずれも一定量以上になると、 ァ ンダーフローを回避するために、 最後にストア (Spill) した 1語分のデ ータをデータ ·キャッシュから取り出し、 それに F Lに登録されている フリ一な C R Fの 1エントリを割り付け、 そのデ一タ.フィ一ルドに書 き込む。 WCF、 BBの各フィールドは 1 とする。 さらに、 その割り付 けられた C R Fのェン ト リのァ ドレスを、 A P S及ぴ C P Sの BP— OF— PS で示されるェントリの 1つ下に各々書き込み、 BP— OF— PS の 値から 1を引く。
また、 C R Fとデータ 'キヤッシュの間の Spill/Fill の動作を効率的に 行うために、 L S Uがデータをいつたん蓄えるバッファを備え、 この中 に適当な語数のデータを溜めておくような構成とすることも可能であ る。
ついで、 本発明第 1実施例の計算機システムの動作を説明する。
本実施例の計算機システムは命令を、 ①命令フェッチ、 ②命令デコー ド ' ·設定、 ③実行、 ④完了の 4ステージで処理する。 当分の間、 説明を 簡単にするため、 1サイクルで 1つの命令をデコ一ド'設定 Z完了でき るものとして、 以下に各ステージごとに動作内容を説明する。
① 命令フェッチ 'ステージ
このステ一ジでは、 命令フェッチ.ュニッ トが命令キヤッシュから命 令を取り出すと共に、 次にフェッチする命令のアドレスを決定する。 次 に命令をフェッチするのは通常次ァドレス値からであるが、 フェッチし た命令が無条件分岐命令であるか、 条件分岐命令で分岐すると予測した 場合、 分岐予測が外れた場合、 あるいは例外が発生した場合には、 フエ ツチするァドレス値を変更する。
② 命令デコ一ド '設定ステージ
このステージでは、 命令をデコードして、 命令の内容に応じて前進ポ インタ'スタック (A P S ) 及ぴ統合レジスタ 'ファイル (C R F ) を操 作すると共に命令の内容を命令キュー ( I Q ) に書き込むことにより、 命令に含まれる演算等がデータ駆動で実行されるべく設定する。以下に、 設定動作を詳細に説明する。
本発明の計算機システムにおいては、 従来のスタック 'マシンにおけ るワード ·スタックのスタック トップ近傍がポインタ 'スタックと C R F によって再現されるが、 命令に含まれるオペランド 'スタックに対する スタック操作が、 A P Sに対して同様に適用される。
1語のデータのオペランド'スタックへのプッシュ操作をエミュレー 卜するには、 F Lに登録されているフリーな C R Fの 1ェントリをその データを保持すべく割り付け、 そのェントリのァドレスを A P Sにプッ シュすればよレ、。
オペランド.スタックの操作命令 (java VM における pop, pop2, dup, dup2, dup_xl, dup2_xl, dup_x2, dup2_x2, swap) の場合、 基本的には、 ォ ぺランド ' ·スタックに対して行うべき操作を A P Sに対して同様に行え ばよい。 本第 1実施例においては、 スタック上でコピーを作成するよう なオペランド 'スタックの操作命令 ( Java VM における dup, dup2, dup_xl, dup2_xl, dup_x2, dup2_x2 ) の場合には、 コピ一 'データを保持 すべく F Lに登録されているフリーな C R Fのエントリを割り付け、 そ のェントリのァドレスを A P Sの適切なェントリに書き込むようになつ ている。
命令のデコード '設定に伴い新たに割り付けられる C R Fのェントリ においては、 B Bフィールドに 1を立て、 Cフィールドには命令デコ一 ド-設定ュニットから送られてくる分岐タグを書き込む。 即値データの プッシュ命令の場合には、 データがすでに得られているので、 データ' ブイールドにそのデータを書き込み、 W C Fフィールドに 1を立てる。 それ以外の場合には、 データはデコード ' ·設定の時点では得られていな いので、 WC Fフィールドを 0としておく。
デコードされた命令の内容をプログラム上の順番で I Qに保持してお くために、 その命令の内容を I Qの設定ボインタで示されるェントリに 書き込み、 設定ポインタの値に 1を加える。 すなわち、 オペレーション 'フィールドにオペレーション'コードを書き込み、 ォペレ一ション'コ
―ドに続いてオペランドが示されるような命令の場合には、 オペランド 'フィールドにこのオペランドを書き込む。 B Tフィ一ルドには命令デ コード'設定ユニットから送られてくる分岐タグを書き込む。 Sフィー ルドに関しては、 無条件分岐命令、 即値データのオペランド 'スタック へのプッシュ命令あるいはスタック上でコピーを作成することのないォ ぺランド'スタックの操作命令 (Java VM における pop, pop2, swap) の 場合は実行済みとし、 その他の命令の場合は未実行としておく。
オペランド 'スタックに対するポップ操作を含む命令の場合には、 ポ ップすべき語数と同じ数だけ A P Sからポップされる C R Fのェントリ のアドレスを、 その順で第 1〜第 4ソース ·フィールドに書き込む。 こ の際、 ェントリ 'ァドレスがポップされる C R Fのェントリの各々で W C Fフィールドを読み出し、 I Qの対応する W C Fフィ一ルドに送る。 オペランド ' ·スタックに対するプッシュ操作を含む命令の場合には、 プッシュすべき語数と同じ数だけ A P Sにプッシュされる C R Fのェン トリのァドレスを、 その順で第 1〜第 2デステイネ一ション'フィ一ル ドに書き込む。
本第 1実施例においては、 スタック上でコピーを作成するようなオペ ランド 'スタックの操作命令の場合には、 コピ一元となるデータを保持 すべく割り付けられている C R Fのェントリのアドレスをソース'フィ ールドに、 コピー'データを保持すべく新たに割り付けられる C R Fの ェントリのァドレスをデスティネ一ション 'フィールドに、 一定の対応 関係のもとに書き込む。
命令の種類に応じて、 オペランド'スタックに対してポップ プッシ ュすべき語数 (オペランド 'スタックの操作命令の場合には、 作成する コピーの語数) は決まっているので、 オペレーション 'フィールドの内 容によって、 第 1〜第 4ソース 'フィールド、 第 1〜第 4の W C Fフィ ールド及ぴ第 1〜第 2デスティネーション'フィールドのうちのいずれ が有効であるかを知ることができる。
ロード/ストア命令の場合には、 その内容を、 I Qに書き込むと同時 に、 その書き込みが行われる I Qのェントリのァドレスと共に L S Uに 送る。
③ 実行ステージ
I Qに保持されている未実行の命令は、 データ駆動で処理される。 従 つて、 命令実行順序は out-of-orderになる。 以下に、 命令の種類ごとに、 実行ステージにおける動作を説明する。
( a ) 即値データのオペランド 'スタックへのプッシュ命令
実行ステージにおける動作としては、 何も行わない。
( b ) 変数データのオペランド 'スタックへのロード命令
I Qの、 ロード命令を書き込みの内容とするエントリに関しては、 同 じ内容が命令デコード '設定ステージにおいて L S Uに送られている。
L S Uでは、 送られてきた口一ド命令を out-of-order で処理するように なっている。
I Qにおいて、 オペランド 'スタック上のデータをポップしてァドレ ス計算を行うようなロード命令 (java VMにおける ialoa4 laload, faload, daload, aaload, baload, caload, saload) を書き込みの内容とし、 有効なソ一 ス.フィールドに対応する W C Fフィールドが全て 1 となっている (ソ —ス 'データが全て C R Fに書き込み済みとなっている) エントリがあ れば、 そのェントリのァドレスと共に C R Fをアクセスして得られるソ ース 'データを L S Uに送る。 L S Uは送られてきたソース'データをも とにアドレス計算を行い、 ロードの実行を試みる。
L S Uで変数データが得られると、 デスティネーションである C R F のェントリのデータ 'フィールドに変数データを書き込み、 W C Fフィ 一ルドを 1に変更する。 その上、 I Qにおいて各ソース'フィールドで 上記デスティネーションである C R Fのェントリのァドレスを照合し、 一致するソース 'フィールドに対応する W C Fブイ一ルドを 1とする。 この際、 同じタイミングで命令が書き込まれる I Qのェントリにおいて は、 その書き込まれる内容と比較するようになっている。 以上の動作が 正常に終了すれば、 そのロード命令を保持している I Qのェントリの S フィールドを正常終了に変更する。
( c) オペランド 'スタック上のデータの変数へのストァ命令
I Qにおいて、 ス トア命令を書き込みの内容とし、 有効なソース'フ ィ一ルドに対応する WC Fフィ一ルドが全て 1 となっている (ソース' データが全て CRFに書き込み済みとなっている) エントリがあれば、 そのェントリのア ドレスと共に CRFをアクセスして得られるソース. データを L SUに送る。
オペランド 'スタック上のデータをポップしてァドレス計算を行うよ つなストァ命令 (Java VM ίこお る lastore, lastore, fastore, dastore, aastore, bastore, castore, sastore) の場合、 L SUは送られてきたソース' データをもとにァ ドレス計算を行う。
以上の動作が正常に終了すれば、 そのストァ命令を保持している I Q のェント リの Sフィ一ルドをス トァ実行可能に変更する。
正確な例外処理を保証するために、 実際のストァの実行は完了ステー ジにおいて行う。
( d) 演算命令
I Qにおいて、 演算命令を書き込みの内容とし、 有効なソース ·フィ —ルドに対応する WC Fフィールドが全て 1となっている (ソース'デ —タが全て CRFに書き込み済みとなっている) エントリがあり、 利用 可能な状態の演算ュニットがあれば、 そのェントリの内容をそのェント リのァドレス及び C RFをアクセスして得られるソース'データと共に 利用可能な演算ュニットに送り実行させる。
演算の実行が正常に終了すれば、 デスティネーションである CRFの エント リのデータ'フィールドに演算結果を書き込み、 WC Fフィール ドを 1に変更する。 その上、 I Qにおける C R Fのエントリのア ドレス の照合及ぴ WC Fブイ一ルドの変更を、 上述のロード命令の場合と同様 に行う。 以上の動作が正常に終了すれば、 その演算命令を保持している I Qのェントリの Sフィールドを正常終了に変更する。
(e) オペランド 'スタックの操作命令
スタック上でコピーを作成することのないオペランド'スタックの操 作命令に関しては、実行ステージにおける動作としては、何も行わない。 本第 1実施例においては、 I Qにおいて、 スタック上でコピーを作成 するようなオペランド 'スタックの操作命令を書き込みの内容とし、 有 効なソース'フィールドに対応する WC Fフィールドが全て 1となって いる (ソース'データが全て C RFに書き込み済みとなっている) ェン トリがあれば、 その有効なソース ·フィールドに示される C RFのェン トリからデータを読み出し、 これを対応するデステイネ一ション'フィ ールドに示される C RFのェントリのデータ.フィールドに書き込み、 WC Fフィールドを 1に変更する。 その上、 I Qにおける CRFのェン トリのァドレスの照合及ぴ WC Fフィールドの変更を、 上述の口一ド命 令の場合と同様に行う。 以上の動作が正常に終了すれば、 そのオペラン ド.スタックの操作命令を保持している I Qのェントリの Sフィ一ルド を正常終了に変更する。
( f ) 分岐命令
無条件分岐命令に関しては、 実行ステージにおける動作としては、 何 も行わない。
I Qにおいて、 条件分岐命令を書き込みの内容とし、 有効なソース- フィールドに対応する WCFフィールドが全て 1 となっている (ソース 'データが全て CRFに書き込み済みとなっている) ェントリがあれば、 そのェントリの内容をそのェントリのァドレス及び C RFをアクセスし て得られるソース ·データと共に分岐ュニットに送り実行させる。
分岐ュニットにおいて条件式の計算が正常に終了すれば、 その結果を 分岐先ァドレスと共に命令フェッチ'ュニッ トに通知する。 以上の動作 が正常に終了すれば、 その条件分岐命令を保持している I Qのェントリ の Sフィールドを正常終了に変更する。
以上のように、 I Qに保持されている未実行の命令は、 実行可能とな つたものから処理されるので、 命令実行順序は out-of-order になる。 ま た、 演算ユニット 0, 1、 分岐ユニット及びロードノストア.ユニッ ト の各実行ュニットは互いに独立に並行して動作する。
ある命令の処理において例外事象が発生した場合には、 その情報を、 その命令を保持している I Qのェントリの Sフィールドに書き込むと共 に、 命令フェッチ'ュニットに例外べクタを通知する。
④ 完了ステージ
ある命令が完了できるためには、 プログラム上の順番でその命令より も前にある命令が全て完了していなくてはならない。
I Qの完了ポィンタで示されるェントリにおいて、 Sフィールドが実 行済み/正常終了である、 あるいはそうなると、 そのエントリに書き込 まれている命令の内容に基づいて C P S及び C R Fを操作し、 完了ボイ ンタの値に 1を加える。
C P Sは、 命令がデコード '設定された際の A P Sの動作を再現すベ く操作される。すなわち、ポップ Zプッシュ操作を含む命令の場合には、 有効なソース 'ブイ一ルドの内容と同じものを順に c p sからポップし、 有効なデスティネーション'フィ一ルドの内容を順に C P Sにプッシュ する。 スタック上でコピーを作成することのないオペランド 'スタック の操作命令の場合には、 オペランド 'スタックに対して行うべき操作を C P Sに対して全く同様に行えばよレ、。 本第 1実施例においては、 スタ ック上でコピーを作成するようなオペランド 'スタックの操作命令の場 合には、 有効なソース'フィ一ルド及ぴ有効なデスティネーション'フィ ールドを参照して、 その命令のデコード '設定の際に A P Sに対して行 われた操作が C P Sにおいて再現される。
本第 1実施例においては、 上述の C P Sに対する操作に伴い、 ェント リ ·アドレスが C P Sからポップされる C R Fのェントリでは、 B Bフ ィ一ルドを 0に変更し、 そのェントリ '了ドレスを F Lに登録する。
I Qの完了ボインタで示されるェントリにおいて、 ストァ命令が書き 込まれている場合には、 Sフィールドがス トア実行可能である、 あるい はそうなると、 L S Uに、 上記ス トア命令を保持している I Qのェント リのア ドレスを示して、 実際のス トアの実行を依頼する。 こうすれば、 データが in-order でス トアされることが保証できる。 さらに、 C P S及 び C R Fに対する操作を上と同様に行い、 完了ボインタの値に 1を加え る。
以上のように、 完了ポインタの値に 1が加えられることによって、 キ ユーから除外された I Qのェントリに保持されていた命令は、 完了した ことになる。 その命令よりも前にデコード '設定された命令はすべて完 了しているので、 命令の完了は in-orderで行われることになる。
I Qの完了ポインタで示されるェントリにおいて、 Sフィールドが例 外事象発生である、 あるいはそうなった場合には、 その時点における C P S及ぴ C R Fによって、 プログラムが in-orderで実行された場合の例 外発生時点の状態が構成されるので、 正確な例外処理が可能である。 例 外事象の発生した命令以降にデコ一ド ' ·設定された命令を全てキャンセ ルするには、 キャンセルされるべき命令が書き込まれている I Qのェン トリの有効なデスティネーション,フィールドに示される C R Fのェン トリの各々に対して、 その B Bフィールドを◦に戻し、 そのエントリ ' アドレスを F Lに登録することによって、 割り付けを解除し、 完了ボイ ンタの値に 1を加えたものを設定ポインタに書き込むことによって、 キ ヤンセルされるべき命令を保持している I Qのェントリを全てキューか ら除外すればよい。
以上が、 本発明第 1実施例の計算機システムの動作についての全般的 な説明であるが、 ついで、 具体的な動作例について説明する。
いま、 本第 1実施例の計算機システムで、 以下のようなプログラムを 実行することを考えよう。
dload [A] (変数名 [A]に対応する倍精度浮動小数点データの口一ド) dload [B] (変数名 [B]に対応する倍精度浮動小数点データのロード) dadd (倍精度浮動小数点データ間の加算)
d2f (倍精度浮動小数点データの単精度浮動小数点データへの変
' 換)
fload [T] (変数名 [T]に対応する単精度浮動小数点データのロード) dup_xl (スタック トップの語のコピ一を作成し、 先頭から 3語目に 割り込ませる)
fdiv (単精度浮動小数点データ間の除算)
fsub (単精度浮動小数点データ間の減算)
fstore [X] (スタックトップにある単精度浮動小数点データの変数名
[X]に対応する格納域へのストア)
以上のプログラムは、 X=T- (A+B) /T の計算を行うものであるが、 A と Bのデータが倍精度で与えられ、 この間の加算を倍精度のまま実行し て、 得られた加算データを単精度に変換して、 以降は単精度で計算を行 う、 とレヽぅものである。
第 6図〜第 1 2図は、 本第 1実施例の計算機システムにおいて、 上記 プログラムを処理する際の動作をサイクル毎に示した説明図であり、 以 下ではこの図をもとに詳細な動作を説明する。 第 6図〜第 1 2図におい て、 CRF 6及び I Q 5の各エントリの構成は、 それぞれ第 3図、 第 5 図のものと同じである。 第 6図〜第 1 2図で空白となっている箇所は、 そのフィールドの内容に留意する必要が無いことを意味する。 時系列で 各構成要素の内容を示すために、 各部の符号の後尾にハイフンと各サイ クルに対応する数字を添えている。 また、 第 6図〜第 1 2図において、 AP S、 C P S、 I Q及ぴ CRFの各エントリは下から順に 0、 1、 2、 〜 のようにアドレスが付けられているものとする。
本動作例においては、 説明を簡単にするため、 変数データは全てデー タ ·キヤッシュに格納され、 C R Fとデ一タ 'キヤッシュの間の Spill/Fill の動作は行わないものとする。従って、 BP_OF一 PSの値は終始 0である。 また、 本動作例においては、 当初、 AP S、 C P S, I Q及び CRF は初期化されており、 F Lに CRFの全てのェントリのァドレスが順に 〈0〉 , 〈1〉 , 〈2〉 , 〈3〉 ····と書き込まれていて、 この順で取り出 されるものとする。
以下に、 各サイクルにおける動作を、 (A) 命令デコード '設定、 (B) 実行及ぴ (C) 完了の各ステージに分けて詳細に説明する。
(1 -A) 第 1サイクルの命令デコード '設定ステージ
命令 dload [A] のデコード '設定を行う。 倍長語の変数データのオペ ランド'スタックへのロード命令であるので、 F Lに登録されているフ リーな CRFの 2ェントリ 6 (0)、 6 (1)をそのデータを保持すべく割り 付け、 そのエントリのア ドレス 〈0〉 , 〈 1〉 を AP Sにプッシュし、 AP Sは 3— 1のようになる。
CRFの 6 (0)、 6 (1)の各エントリにおいては、 BBフィールドに 1 を立て、 WC F及び Cの各フィールドには 0を書き込み、 CRFは 6— 1のようになる。 ここで、 本動作例においては、 終始分岐タグとして命 令デコード '設定ュニットから 0が送られてくるものとする。
設定ポインタの値は 0であるので、 I Qのエントリ 5 (0)に上記命令 の内容を書き込み、 I Qは 5— 1のようになる。 この際、 AP Sにプッ シュされる C R Fのエントリのア ドレス 〈0〉 , 〈1〉 を各々第 1、 第 2デスティネーション ·フィールドに書き込んでいる。 さらに、 設定ポ インタの値に 1を加え 1にする。 ここで、 本動作例においては、 I Qの Sフィールドには、 命令が未実行であれば 0、 実行済み 正常終了ある いはストァ命令におけるストァ実行可能であれば 1が書き込まれるもの とする。
I Qのェントリ 5 (0)に書き込まれるものと同じ上記命令の内容を、
I Qのェントリのアドレス 0と共に L S Uに送る。
(1 -B) 第 1サイクルの実行ステージ
当初の I Qにおいては、 実行可能な命令が書き込まれているェントリ は存在しないので、 実行ステージの動作としては何も行われない。
( 1一 C) 第 1サイクルの完了ステージ
当初の I Qの完了ボインタが示すェントリ 5 (0)において、 命令はま だ書き込まれていないため、 完了ステージの動作としては何も行われな レ、。
(2 - A) 第 2サイクルの命令デコード '設定ステージ
命令 dload [B] のデコード '設定を行う。 倍長語の変数データのオペ ランド'スタックへのロード命令であるので、 F Lに登録されているフ リーな CRFの 2エントリ 6 (2)、 6 (3)をそのデータを保持すべく割り 付け、 そのエントリのアドレス 〈2〉 , 〈3〉 を AP Sにプッシュし、 AP Sは 3— 2のようになる。
〇尺 の6 (2)、 6 (3)の各エントリにおいては、 BBフィールドに 1 を立て、 WC F及び Cの各フィールドには 0を書き込み、 CRFは 6— 2のようになる。
設定ポインタの値は 1であるので、 I Qのェントリ 5 (1)に上記命令 の内容を書き込み、 I Qは 5— 2のようになる。 この際、 AP Sにプッ シュされる C R Fのエントリのア ドレス 〈2〉 , 〈3〉 を各々第 1、 第 2デスティネーション'フィ一ルドに書き込んでいる。 さらに、 設定ポ インタの値に 1を加え 2にする。
I Qのエントリ 5 (1)に書き込まれるものと同じ上記命令の内容を、 I Qのェントリのァドレス 1と共に L SUに送る。
(2— B) 第 2サイクルの実行ステージ
L S Uは変数 Aのアクセスを開始する。 レイテンシは 2サイクルであ るとする。
(2 -C) 第 2サイクルの完了ステージ
5一 1の状態にある I Qの完了ボインタが示すェントリ 5 (0)におい て、 Sフィールドは 0であるので、 完了ステージの動作としては何も行 われない。
(3— A) 第 3サイクルの命令デコード '設定ステージ
命令 dadd のデコード '設定を行う。 オペランド ·スタックから 4語の ソース'データをポップして演算を行い、 倍長語の演算結果をプッシュ する演算命令であるので、 AP Sから 〈0〉 , 〈1〉 , 〈2〉 , 〈3〉 をポ ップし、 F Lに登録されているフリーな C RFの 2ェントリ 6 (4)、 6 (5) を演算結果を保持すべく割り付け、そのエントリのァドレス 〈4〉,〈5〉 を A P Sにプッシュし、 A P Sは 3— 3のようになる。
CRFの6 (4)、 6 (5)の各エントリにおいては、 BBフィールドに 1 を立て、 WC F及び Cの各フィ一ルドには 0を書き込む。
設定ポインタの値は 2であるので、 I Qのエントリ 5 (2)に上記命令 の内容を書き込む。 この際、 AP Sからポップされる CRFのエント リ のアドレス 〈0〉 , 〈1〉 , 〈2〉 , 〈3〉 を各々第 1〜第 4ソース'フィ 一ルドに、 AP Sにプッシュされる 〈4〉 , 〈5〉 を各々第 1、 第 2デ スティネーシヨン 'フィールドに書き込んでいる。 また、 6— 2の状態 にある CRFの 6 (0)、 6 (1)、 6 (2)、 6 (3)の各エントリで WC Fフィ —ルドを読み出し、 それぞれ I Qの WC F 1〜4の各フィールドに送つ ている。 さらに、 設定ポインタの値に 1を加え 3にする。
(3— Β) 第 3サイクルの実行ステージ
L S Uは変数 Βのアクセスを開始する。 レイテンシは 2サイクルであ るとする。
L S Uから変数 Αのデータを構成する 2語 Α— 1、 A一 2 が送られてく るので、 C R Fのエントリ 6 (0)、 6 (1)のデータ.フィールドに各々書 き込み、 WC Fフィールドを 1に変更する。 その上、 I Qにおいて各ソ —ス'フィールドで C R Fのエントリのアドレス 〈0〉 , 〈1〉 を照合す るが、 この場合、 同じタイミングで命令が書き込まれる I Qのエントリ 5 (2)の第1、 第 2ソース 'フィールドで一致するので、 同じエントリの WC F 1、 2の各フィールドを 1 とする。 (WC F 3、 4の各フィ一ル ドについては、 (3— A) で説明したように 6— 2の状態にある CRF の対応するェントリの WCFフィ一ルドが読み出され送られてくるの で、 これが書き込まれる。)
以上のように I Qのェントリ 5 (0)に書き込まれた命令の実行が正常 に終了するので、 5 (0)の Sフィールドを正常終了を意味する 1に変更 する。
(3— C) 第 3サイクルの完了ステージ
5一 2の状態にある I Qの完了ボインタが示すェントリ 5 (0)におい て、 Sフィールドは 0であるので、 完了ステージの動作としては何も行 われない。 (4— A) 第 4サイクルの命令デコード '設定ステージ 命令 d2f のデコード '設定を行う。 オペランド 'スタックから 2語の ソース ·データをポップして変換演算を行い、 1語の演算結果をプッシ ュする演算命令であるので、 AP Sから 〈4〉 , 〈5〉 をポップし、 F Lに登録されているフリーな CRFのェントリ 6 (6)を演算結果を保持 すべく割り付け、そのェントリのァドレス 〈6〉 を AP Sにプッシュし、 AP Sは 3— 4のようになる。
C R Fのェントリ 6 (6)においては、 B Bフィールドに 1を立て、 W C F及び Cの各フィールドには 0を書き込む。
設定ポインタの値は 3であるので、 I Qのエントリ 5 (3)に上記命令 の内容を書き込む。 この際、 ΛΡ Sからポップされる CRFのエントリ のアドレス 〈4〉 , 〈5〉 を各々第 1、 第 2ソース.フィ一ルドに、 AP Sにプッシュされる 〈6〉 を第 1デスティネーション 'フィールドに書 き込んでいる。 また、 6— 3の状態にある CRFの 6 (4)、 6 (5)の各ェ ントリで WC Fフィールドを読み出し、 それぞれ I Qの WC F 1、 2の 各ブイ一ルドに送っている。 さらに、 設定ポインタの値に 1を加え 4に する。
(4-B) 第 4サイクルの実行ステージ
L SUから変数 Bのデータを構成する 2語 B— 1、 B— 2が送られてくる ので、 C R Fのエントリ 6 (2)、 6 (3)のデータ.フィールドに各々書き 込み、 WC Fフィールドを 1に変更する。 その上、 I Qにおいて各ソー ス'フィールドで C R Fのエントリのアドレス 〈2〉 , 〈3〉 を照合する 力 この場合、 I Qのエントリ 5 (2)の第 3、 第 4ソース 'フィールドで 一致するので、同じェントリの WC F 3、 4の各フィ一ルドを 1とする。 以上のように I Qのェントリ 5 (1)に書き込まれた命令の実行が正常 に終了するので、 5 (1)の Sブイールドを正常終了を意味する 1に変更 する。
(4— C) 第 4サイクルの完了ステージ
5 - 3の状態にある I Qの完了ボインタが示すェントリ 5 (0)におい て、 Sフィールドが 1 となったので、 5 (0)の内容に基づいて C P S (及 び CRF) を操作する。 すなわち、 I Qのエントリ 5 (0)のデスティネ ーシヨン'フィールドに書き込まれている 〈0〉 , 〈1〉 を C P Sにプッ シュし、 CP Sは 4一 4のようになる。 さらに、 完了ポインタの値に 1 を加え 1 とし、 これで、 5 (0)の命令は完了したことになる。
(5— A) 第 5サイクルの命令デコード '設定ステージ
命令 fload [T] のデコード '設定を行う。 1語の変数データのオペラ ンド 'スタックへの口一ド命令であるので、 F Lに登録されているフリ —な C RFのェントリ 6 (7)をそのデータを保持すべく割り付け、 その エントリのアドレス 〈7〉 を A P Sにプッシュし、 AP Sは 3 _ 5のよ うになる。
C R Fのエントリ 6 (7)においては、 B Bフィールドに 1を立て、 W
CF及び Cの各フィールドには 0を書き込む。
設定ポインタの値は 4であるので、 I Qのエントリ 5 (4)に上記命令 の内容を書き込む。 この際、 AP Sにプッシュされる CRFのエントリ のアドレス 〈7〉 を第 1デスティネーション 'フィールドに書き込んで いる。 さらに、 設定ポインタの値に 1を加え 5にする。
I Qのェントリ 5 (4)に書き込まれるものと同じ上記命令の内容を、 I Qのェントリのァドレス 4と共に L SUに送る。
(5-B) 第 5サイクルの実行ステージ
5— 4の状態にある I Qにおいて、 演算命令が書き込まれているェン トリ 5 (2)は WC Fフィールドが全て 1となっているので、 このェント リ 5 (2)の内容をそのェントリのァドレス 2及び C RFの 6 (0)、 6 (1)、 6 (2)、 6 (3)の各ェントリに書き込まれているソ一ス'データと共に演 算ュニット 0に送り演算を開始させる。 この演算のレイテンシは 2サイ クルであるとする。
( 5— C ) 第 5サイクルの完了ステージ
5一 4の状態にある I Qの完了ボインタが示すェントリ 5 ( 1)におい て、 Sフィールドが 1となったので、 5 (1)の内容に基づいて C P S (及 び C R F ) を操作する。 すなわち、 I Qのエントリ 5 (1)のデスティネ —シヨン 'フィールドに書き込まれている 〈2〉 , 〈3〉 を C P Sにプッ シュし、 C P Sは 4一 5のようになる。 さらに、 完了ポインタの値に 1 を加え 2とし、 これで、 5 (1)の命令は完了したことになる。
( 6— A) 第 6サイクルの命令デコード '設定ステージ
命令 dup— xl のデコード '設定を行う。 命令 dup_xl は、 ワード 'スタ ック力 (右方向に成長するものとして) ...., wordl, word2のような状態 であるとき、 これを ...., word2, wordl, word2 と変えるような、 スタック 上で 1語のコピーを作成するオペランド 'スタックの操作命令であるの で、 F Lに登録されているフリ一な C R Fのェントリ 6 (8)をコピ一'デ —タを保持すべく割り付け、 3— 5のように下から 〈6〉 , 〈7〉 とな つている状態の A P Sを 3— 6のように 〈8〉 , 〈6〉 , 〈7〉 と変える。
C R Fのェントリ 6 (8)においては、 B Bフィールドに 1を立て、 W C F及ぴ Cの各フィールドには 0を書き込む。
設定ポインタの値は 5であるので、 I Qのェントリ 5 (5)に上記命令 の内容を書き込む。 この際、 コピー元となるデータを保持すべく割り付 けられている C R Fのエントリのア ドレス 〈7〉 を第 1 ソース'フィ一 ルドに、 コピー'データを保持すベく新たに割り付けられる C R Fのェ ントリのアドレス 〈8〉 を第 1デスティネーション'フィ一ルドに書き 込んでいる。 また、 6 _ 5の状態にある C R Fのエントリ 6 (7)で W C Fフィールドを読み出し、 I Qの WC F 1フィールドに送っている。 さ らに、 設定ポインタの値に 1を加え 6にする。
(6— B) 第 6サイクルの実行ステージ
L S Uは変数 Tのアクセスを開始する。 レイテンシは 2サイクルであ るとする。
演算ュニット 0で 5 (2)の演算命令の実行が正常に終了すれば、 演算 結果を構成する 2語 (A+B)— 1、 (A+B)_2 が送られてくるので、 CRF のェントリ 6 (4)、 6 (5)のデータ.フィ一ルドに各々書き込み、 WC F フィールドを 1に変更する。 その上、 I Qにおいて各ソース 'ブイ一ル ドで C R Fのエントリのアドレス 〈4〉 , 〈5〉 を照合するが、 この場 合、 I Qのエントリ 5 (3)の第 1、 第 2ソース'フィ一ルドで一致するの で、 同じエントリの WCF 1、 2の各フィールドを 1とする。
以上のように I Qのェントリ 5 (2)に書き込まれた命令の実行が正常 に終了するので、 5 (2)の Sフィールドを正常終了を意味する 1に変更 する。
(6 -C) 第 6サイクルの完了ステージ
5一 5の状態にある I Qの完了ボインタが示すェントリ 5 (2)におい て、 Sフィールドは 0であるので、 完了ステージの動作としては何も行 われない。
(7—A) 第 7サイクルの命令デコード '設定ステージ
命令 fdiv のデコード '設定を行う。 オペランド 'スタックから 2語の ソース 'データをポップして演算を行い、 1語の演算結果をプッシュす る演算命令であるので、 AP Sから 〈6〉 , 〈7〉 をポップし、 F Lに 登録されているフリーな CRFのェントリ 6 (9)を演算結果を保持すベ く割り付け、 そのエントリのアドレス 〈9〉 を A P Sにプッシュし、 A PSは 3— 7のようになる。 C RFのェントリ 6 (9)においては、 B Bフィ一ルドに 1を立て、 W C F及び Cの各フィールドには 0を書き込む。
設定ポインタの値は 6であるので、 I Qのエントリ 5 (6)に上記命令 の内容を書き込む。 この際、 AP Sからポップされる CRFのエントリ のアドレス 〈6〉 , 〈7〉 を各々第 1、 第 2ソース'フィールドに、 AP Sにプッシュされる 〈9〉 を第 1デスティネーション 'フィールドに書 き込んでいる。 また、 6— 6の状態にある CRFの 6 (6)、 6 (7)の各ェ ントリで WC Fフィールドを読み出し、 それぞれ I Qの WCF 1、 2の 各フィ一ルドに送っている。 さらに、 設定ポインタの値に 1を加え 7に する。
(7 -B) 第 7サイクルの実行ステージ
5— 6の状態にある I Qにおいて、 演算命令が書き込まれているェン トリ 5 (3)は有効な WC Fフィールドが全て 1 となっているので、 この エントリ 5 (3)の内容をそのェントリのァドレス 3及ぴ CRFの 6 (4)、 6 (5)の各ェントリに書き込まれているソース 'データと共に演算ュニッ ト 0に送り演算を開始させる。 この演算のレイテンシは 2サイクルであ るとする。
LSUから変数 Tのデータが送られてくるので、 CRFのェントリ 6 (7)のデータ'フィ一ルドに書き込み、 WCFフィ一ルドを 1に変更する。 その上、 I Qにおいて各ソ一ス 'フィールドで C RFのエントリのアド レス 〈7〉 を照合するが、 この場合、 I Qのエントリ 5 (5)の第 1 ソー ス,フィールド及ぴ同じタイミングで命令が書き込まれる 5 (6)の第 2ソ 一ス'フィールドで一致するので、 5 (5)の WCF 1フィ一ルド及び 5 (6) の WCF 2フィールドを 1 とする。 (5 (6)の WCF 1フィールドにつレヽ ては、 (7— A) で説明したように 6— 6の状態にある C R Fのェント リ 6 (6)の WC Fフィールドが読み出され送られてくるので、 これが書 き込まれる。)
以上のように I Qのェントリ 5 (4)に書き込まれた命令の実行が正常 に終了するので、 5 (4)の Sフィールドを正常終了を意味する 1に変更 する。
(7 -C) 第 7サイクルの完了ステージ
5 - 6の状態にある I Qの完了ボインタが示すェントリ 5 (2)におい て、 Sフィールドが 1となったので、 5 (2)の内容に基づいて C P S及 ぴ CRFを操作する。 すなわち、 I Qのエントリ 5 (2)のソース'フィ一 ノレドに書き込まれている 〈0〉 , 〈1〉 , 〈2〉 , 〈3〉 を CP Sからポッ プし、 デスティネーション 'フィールドに書き込まれている 〈4〉,〈5〉 を C P Sにプッシュし、 C P Sは 4一 7のようになる。 エントリ 'ア ド レスが C P Sからボップされる CRFの 6 (0)、 6 (1)、 6 (2)、 6 (3)の 各エントリでは、 BBフィールドを 0に変更する。 CRFのエントリの ア ドレス 〈0〉 , 〈1〉 , 〈2〉 , 〈3〉 を F Lに登録する。 さらに、 完了 ポインタの値に 1を加え 3とし、 これで、 5 (2)の命令は完了したこと になる。
(8-A) 第 8サイクルの命令デコード ·設定ステージ
命令 fsub のデコード '設定を行う。 オペランド 'スタックから 2語の ソース ·データをポップして演算を行い、 1語の演算結果をプッシュす る演算命令であるので、 AP Sから 〈8〉 , 〈9〉 をポップし、 F Lに 登録されているフリーな CRFのェントリ 6 (10)を演算結果を保持すベ く割り付け、 そのエントリのア ドレス 〈1 0〉 を A P Sにプッシュし、 AP Sは 3— 8のようになる。
CRFのェントリ 6 (10)においては、 B Bフィ一'ルドに 1を立て、 W CF及び Cの各フィールドには 0を書き込む。
設定ポインタの値は 7であるので、 I Qのエントリ 5 (7)に上記命令 の内容を書き込む。 この際、 AP Sからポップされる CRFのエントリ のアドレス 〈8〉 , 〈9〉 を各々第 1、 第 2ソース.フィールドに、 AP Sにプッシュされる 〈1 0〉 を第 1デスティネーション 'フィールドに 書き込んでいる。 また、 6— 7の状態にある CRFの 6 (8)、 6 (9)の各 エントリで WC Fフィールドを読み出し、 それぞれ I Qの WC F 1、 2 の各フィールドに送っている。 さらに、 設定ポインタの値に 1を加え 8 にする。
(8— B) 第 8サイクルの実行ステージ
演算ュニット 0で 5 (3)の変換演算命令の実行が正常に終了すれば、 1語の演算結果 (A+B) が送られてくるので、 CRFのエントリ 6 (6) のデータ.フィールドに書き込み、 WC Fフィールドを 1に変更する。 その上、 I Qにおいて各ソース'フィールドで C RFのェントリのァド レス 〈6〉 を照合するが、 この場合、 I Qのエントリ 5 (6)の第 1ソー ス'フィ一ルドで一致するので、 同じエントリの WC F 1フィールドを 1とする。
以上のように I Qのェントリ 5 (3)に書き込まれた命令の実行が正常 に終了するので、 5 (3)の Sフィールドを正常終了を意味する 1に変更 する。
5— 7の状態にある I Qにおいて、 スタック上でコピーを作成するよ うなオペランド 'スタックの操作命令が書き込まれているェントリ 5 (5) は有効な WC Fフィールドが 1となっているので、 データのコピーを実 行する。 すなわち、 CRFのエントリ 6 (7)からデータを読み出し、 こ れを C RFのェントリ 6 (8)のデータ 'フィールドに書き込み、 WC Fフ ィ一ルドを 1に変更する。 その上、 I Qにおいて各ソース'フィールド で C R Fのエントリのアドレス 〈8〉 を照合するが、 この場合、 同じタ ィミングで命令が書き込まれる I Qのエントリ 5 (7)の第 1 ソース ·フィ ールドで一致するので、同じエントリの WC F 1フィ一ルドを 1とする。 (WC F 2フィールドについては、 (8—A) で説明したように 6— 7 の状態にある CRFのェントリ 6 (9)の WC Fブイ一ルドが読み出され 送られてくるので、 これが書き込まれる。) I Qのエントリ 5 (5)の Sフ ィールドを正常終了を意味する 1に変更する。
(8 -C) 第 8サイクルの完了ステージ
5 - 7の状態にある I Qの完了ポィンタが示すェントリ 5 (3)におい て、 Sフィールドは 0であるので、 完了ステージの動作としては何も行 われない。
(9一 A) 第 9サイクルの命令デコード '設定ステージ
命令 fstore [X] のデコード '設定を行う。 スタック トップにある 1語 のデータのストア命令であるので、 AP Sから 〈1 0〉 をポップし、 A P Sは 3— 9のようになる。
設定ボインタの値は 8であるので、 I Qのェントリ 5 (8)に上記命令 の内容を書き込む。 この際、 AP Sからポップされる CRFのエントリ のアドレス 〈10〉 を第 1 ソース'フィールドに書き込んでいる。 また、 6 _ 8の状態にある C R Fのェントリ 6 (10)で WC Fフィールドを読み 出し、 I Qの WC F 1ブイ一ルドに送っている。 さらに、 設定ポインタ の値に 1を力 (1え 9にする。
I Qのェントリ 5 (8)に書き込まれるものと同じ上記命令の内容を、
I Qのェントリのァドレス 8と共にし SUに送る。
(9— B) 第 9サイクルの実行ステージ
5— 8の状態にある I Qにおいて、 演算命令が書き込まれているェン トリ 5 (6)は有効な WC Fブイ一ルドが全て 1 となっているので、 この ェントリ 5 (6)の内容をそのェントリのァドレス 6及び CRFの 6 (6)、 6 (7)の各ェントリに書き込まれているソース'データと共に演算ュニッ ト 1に送り演算を開始させる。 この演算のレイテンシは 1 0サイクルで あるとする。
(9一 C) 第 9サイクルの完了ステージ
5 - 8の状態にある I Qの完了ボインタが示すェントリ 5 (3)におい て、 Sフィールドが 1となったので、 5 (3)の内容に基づいて C P S及 び CRFを操作する。 すなわち、 I Qのエントリ 5 (3)のソース'フィー ルドに書き込まれている 〈4〉 , 〈5〉 を C P Sからポップし、 デステ イネーシヨン'フィールドに書き込まれている 〈6〉 を C P Sにプッシ ュし、 C P Sは 4一 9のようになる。 エントリ 'アドレスが C P から ポップされる C R Fの 6 (4)、 6 (5)の各エントリでは、 B Bフィールド を 0に変更する。 C RFのエントリのアドレス 〈4〉 , 〈5〉 を F Lに 登録する。 さらに、 完了ポインタの値に 1を加え 4とし、 これで、 5 (3) の命令は完了したことになる。
(1 0— C) 第 1 0サイクルの完了ステージ
5 - 9の状態にある I Qの完了ボインタが示すェントリ 5 (4)におい て、 Sフィールドが 1であるので、 5 (4)の内容に基づいて C P S (及 び CRF) を操作する。 すなわち、 I Qのエントリ 5 (4)のデスティネ ーシヨン'フィールドに書き込まれている 〈7〉 を CP Sにプッシュし、 CP Sは 4— 1 0のようになる。 さらに、 完了ポインタの値に 1を加え 5とし、 これで、 5 (4)の命令は完了したことになる。
(1 1一 C) 第 1 1サイクルの完了ステージ
5— 1 0の状態にある I Qの完了ポインタが示すェントリ 5 (5)にお いて、 Sフィールドが 1であるので、 5 (5)の内容に基づいて C P S (及 び CRF) を操作する。 すなわち、 (6— A) における A P Sの動作が 再現され、 C P Sは 4— 1 1のようになる。 さらに、 完了ポインタの値 に 1を加え 6とし、 これで、 5 (5)の命令は完了したことになる。 (1 8— B) 第 1 8サイクルの実行ステージ
演算ュニット 1で 5 (6)の演算命令の実行が正常に終了すれば、 1語 の演算結果 (A+B)/T が送られてくるので、 CRFのエントリ 6 (9)の データ'フィールドに書き込み、 WC Fフィールドを 1に変更する。 そ の上、 I Qにおいて各ソース 'フィールドで CRFのエントリのァドレ ス 〈9〉 を照合するが、 この場合、 I Qのエントリ 5 (7)の第 2ソース- フィールドで一致するので、 同じエントリの WC F 2フィールドを 1と する。
以上のように I Qのェントリ 5 (6)に書き込まれた命令の実行が正常 に終了するので、 5 (6)の Sフィールドを正常終了を意味する 1に変更 する。
(1 9一 B) 第 1 9サイクルの実行ステージ
5一 1 8の状態にある I Qにおいて、 演算命令が書き込まれているェ ントリ 5 (7)は有効な WC Fフィールドが全て 1 となっているので、 こ のエントリ 5 (7)の内容をそのェントリのア ドレス 7及び。 R Fの 6 (8)、 6 (9)の各ェントリに書き込まれているソース'データと共に演算 ュニット 0に送り演算を開始させる。 この演算のレイテンシは 2サイク ルであるとする。
(1 9一 C) 第 1 9サイクルの完了ステージ
5— 1 8の状態にある I Qの完了ボインタが示すェントリ 5 (6)にお いて、 Sフィールドが 1 となったので、 5 (6)の内容に基づいて C P S 及び CRFを操作する。 すなわち、 I Qのエントリ 5 (6)のソース.フィ 一ルドに書き込まれている 〈6〉 , 〈7〉 を C P Sからポップし、 デス ティネーシヨン'フィールドに書き込まれている 〈9〉 を C P Sにブッ シュし、 C P Sは 4— 1 9のようになる。 エントリ ·アドレスが C P S からポップされる CRFの 6 (6)、 6 (7)の各エントリでは、 BBブイ一 ルドを 0に変更する。 C R Fのエント リのアドレス 〈6〉 , 〈7〉 を F Lに登録する。 さらに、 完了ポインタの値に 1を加え 7とし、 これで、 5 (6)の命令は完了したことになる。
(20 -B) 第 20サイクルの実行ステージ
演算ユニッ ト 0で 5 (7)の演算命令の実行が正常に終了すれば、 1語 の演算結果 T-(A+B)/T が送られてくるので、 C R Fのエントリ 6 (10) のデータ'フィールドに書き込み、 WCFフィールドを 1に変更する。 その上、 I Qにおいて各ソース 'ブイ一ノレドで CRFのェントリのァ ド レス 〈1 0〉 を照合するが、 この場合、 I Qのエントリ 5 (8)の第 1 ソ ース'フィールドで一致するので、 同じエントリの WC F 1フィールド を 1 とする。
以上のように I Qのェントリ 5 (7)に書き込まれた命令の実行が正常 に終了するので、 5 (7)の Sフィールドを正常終了を意味する 1に変更 する。
(21—B) 第 21サイクルの実行ステージ
5— 20の状態にある I Qにおいて、 ストァ命令が書き込まれている エントリ 5 (8)は有効な WC Fフィールドが 1となっているので、 I Q のェントリのアドレス 8と共に C RFのェントリ 6 (10)に書き込まれて いるソース'データを L SUに送る。 5 (8)の Sフィールドをストァ実行 可能を意味する 1に変更する。
(21 -C) 第 21サイクルの完了ステージ
5 - 20の状態にある I Qの完了ポィンタが示すェントリ 5 (7)にお いて、 Sフィ一ルドが 1となったので、 5 (7)の内容に基づいて C P S 及ぴ CRFを操作する。 すなわち、 I Qのェントリ 5 (7)のソース'フィ —ルドに書き込まれている 〈8〉 , 〈9〉 を C P Sからポップし、 デス ティネ一シヨン'フィールドに書き込まれている 〈1 0〉 を CP Sにプ ッシュし、 C P Sは 4— 2 1のようになる。 エントリ ·アドレスが C P Sからポップされる CRFの 6 (8)、 6 (9)の各エントリでは、 BBブイ —ルドを 0に変更する。 C R Fのエントリのアドレス 〈8〉 , 〈9〉 を F Lに登録する。 さらに、完了ボインタの値に 1を加え 8とし、 これで、 5 (7)の命令は完了したことになる。
(22-C) 第 21サイクルの完了ステージ
5 - 21の状態にある I Qの完了ポィンタが示すェントリ 5 (8)にお いては、 ストア命令が書き込まれており、 Sフィールドが 1となったの で、 L S Uに I Qのエントリのアドレス 8を示して、 データ'キヤッシ ュへのス トアの実行を依頼する。 さらに、 5 (8)の内容に基づいて C P S及び CRFを操作する。 すなわち、 I Qのエントリ 5 (8)のソース'フ ィ一ルドに書き込まれている 〈1 0〉 を C P Sからポップし、 C P Sは 4一 22のようになる。 エントリ .アドレスが C P Sからポップされる C R Fのエントリ 6 (10)では、 BBフィールドを 0に変更する。 CRF のエントリのアドレス 〈1 0〉 を F Lに登録する。 さらに、 完了ポイン タの値に 1を加え 9とし、 これで、 5 (8)の命令は完了したことになる。 以上で、 本第 1実施例の計算機システムにおいて X=T-(A+B)/T の計 算が完了したことになる。
本発明の計算機システムにおいては、 分岐予測に基づく投機的実行を 実現することができる。 A PS履歴ファイルは、 投機的実行を可能にす るために具備されるものである。条件分岐命令がデコードされるごとに、 A P S履歴ファイルの 1 ェン ト リ に A P Sの全ェン ト リ及び PP— OF— APS の内容を書き込むようになつている。 以下に、 本実施例の 計算機システムにおいて、 分岐予測に基づく投機的実行がどのように行 われるかについて説明する。
前述のように、 本実施例の計算機システムにおいては、 命令デコード •設定ステージにおいて、 命令をデコードして、 命令の内容に応じて A ? 及ぴじ!^ を操作すると共に、 命令の内容を I Qに書き込むように なっている。 初期状態から命令が流れ始め最初の条件分岐命令がデコ一 ドされるまでの間、 デコードされる命令に分岐タグとして 0を付し、 こ の分岐タグ 0を、 命令の内容が書き込まれる I Qのエントリの B Tフィ —ルド、 及び、 割り付けられる C R Fのエントリの Cフィールドに書き 込む。
最初の条件分岐命令がデコードされ分岐予測が行われる際に、 分岐時 点の状態を保存するために、 A P Sの全ェントリ及び PP— OF— APS の内 容を A P S履歴ファイルのアドレス 0のエントリに書き込む。 上記の分 岐予測に基づいた命令の流れにおいては、 分岐タグとして 1を付し、 I
Q及ぴ C R Fの設定を行う。
2つ目の条件分岐命令がデコードされた時に、 最初の条件分岐命令が 未確定である場合、 あるいは確定して予測が当たっていた場合には、 A P Sの全エントリ及び PP— OF— APS の内容を A P S履歴ファイルのアド レス 1のェントリに書き込む。 2段目の分岐予測に基づいた命令の流れ においては、 分岐タグとして 2を付し、 I Q及び C R Fの設定を行う。 分岐予測が当たり続ければ以後同様に処理が進み、 A P S履歴フアイ ルへの書き込みはアドレス順に行われる。 また、 A P S履歴ファイルの アドレス n のエントリに書き込みが行われてから次に書き込みが行わ れるまでの間にデコードされる命令には分岐タグとして n+1 を付すも のとする。
分岐予測が外れた場合には、 その条件分岐命令以降にデコ一ドされた 命令に付された分岐タグをもとに、 演算ユニット、 分岐ユニット及び L S Uの各実行ユニットに送られた命令をキャンセルし、 C R Fにおいて Cフィ一ルドで分岐タグを照合してその一致するェントリの各々に対し て、 その B Bフィールドを 0に変更して、 そのエントリのアドレスを F Lに登録し、 I Qの設定ポインタの値をその条件分岐命令が書き込まれ ているェントリの次のァドレスに書き換えることによって、 その条件分 岐命令以降にデコード ' ·設定された命令を無効とする。 さらに、 同じェ ントリ 'アドレスにある C P Sのェントリとその内容が一致しない A P Sの各ェントリ及び PP一 OF— APS に、 その条件分岐命令がデコードされ た際に A P S履歴ファイルに書き込まれた内容をコピーして、 正しい位 置の命令から処理を再開する。
以上のように、 本発明の計算機システムにおいては、 A P S履歴ファ ィルを用いることによって、 条件分岐命令がデコ一ドされ分岐予測が行 われる各々の時点の状態を再構成することができるので、 分岐予測に基 づく投機的実行が可能である。
以上では、 説明を簡単にするため、 1サイクルで同時にデコード '設 定/完了できる命令は高々 1つまでとして説明してきた。 本発明の計算 機システムにおいては、 同時に複数の命令をデコード '設定 Z完了でき る構成とすることができる。 すなわち、 F Lが F I F Oキューの構成と なっていれば、 割り付けのためにフリ一な C R Fのェントリのァドレス を F Lから取り出す順番は決まっており、 各命令における何語ポップし 何語プッシュするかというようなスタック操作の内容を把握して、 同時 に複数の命令をデコード ' ·設定することができる。 また、 命令の完了の 動作においては、 各命令における C P Sに対するスタック操作があらか じめ厳密に決められているので、 より容易に複数命令の同時完了を実現 することができる。
同時にデコード '設定 z完了できる命令の数を多くするほど、 命令デ コード '設定ユニットその他の制御回路が複雑になると共に、 I Qや C R Fを構成する各レジスタ 'ファイルのポ一トの数や I Qの各ェントリ のソ一ス'フィールドごとに設けられる比較回路の数、 演算ュニッ トの 数、 さらに構成要素間を結合するバスの数などの点で、 より多量のハ一 ドウユアが必要となる。
本発明の計算機システムにおいては、 デコ一ド '設定を 2つのステー ジに分けて行うこととし、 その前半のステージにおいて、 同時にデコー ド '設定する複数の命令の内容を統合した形式に変換するような構成と することも可能である。
たとえば、 1サイクル当り 3命令までデコード '設定できるような構 成をとる場合、 前述の X=T- (A+B) /T を計算するプログラムは第 1 3図 の図表に示されるような内容に変換される。第 1 3図の図表の各段には、 同時にデコード '設定される 3つの命令に基づく、 PP_OF— APS の増分、 A P Sの操作内容及び I Qの 3ェントリに書き込まれるべき設定内容を 示している。 ここでは、 設定前の A P Sの内容を ..... s2, si, s0 (右端が スタック トップ)、 F I F Oキユーの構成となっているフリー.リストの 内容を (取り出される順に) fl, β, β ..... として記述しており、 デコ一 ド '設定の後半のステージにおいて、 それぞれ対応する C R Fのェント リ 'ァ ドレスが A P S Z I Qに書き込まれるよ うになつている。 PP_OF_APS の増分の欄で示されるように A P Sのスタック トツプの位 置が移動するが、 A P Sの操作内容の欄では、 この移動後のスタック ト ップの位置が右端に対応している。また、 WC'は「変化なし(No Change)」 を意味する。 ついで、 本発明第 2実施例の計算機システムについて説明する。
第 2実施例は、 オペランド 'スタックの操作命令の処理方法が、 第 1 実施例と異なる。
第 2実施例の計算機システムは、 第 1実施例とは、 統合レジスタ-フ アイル (CRF) 6のエントリの構成が異なるが、 計算機システムの基 本構成、 及び、 前進ポインタ 'スタック (AP S) 3、 完了ポインタ'ス タック (CP S) 4、 命令キュー ( I Q) 5の構成は同様である。
第 1 4図は、 本第 2実施例における、 CRF 6の各々のェントリ 6 (i) の詳細な構成を示す説明図である。 ここで、 iはエントリのアドレスで ある。 CRF 6の各々のエントリ 6 (i)はデータ.フィールド 6 1 (i)、 書 込み完了フラグ (WC F, Write Completion Flag) フィールド 62 (i)、 カラ一 (C, Colour) フィールド 6 3 (i)、 ビジ一ビッ ト (BB) フィー ルド 64 (i)、 及び参照数 (N R, Number of Reference) フィールド 6 5 (i)から成っている。
C R Fの各々のエントリの、 デ一タ'フィールド及び WC F、 C、 B Bの各フィールドは第 1実施例と同様である。
C R Fの各々のエントリにおいて、 NRフィ一ノレドは、 その CRFの ェントリのァドレスを保持している C P Sのェントリの数が書き込まれ ているようになつている。
すなわち、 C R Fとデータ.キャッシュの間の Spill/Fill の動作及び命 令の完了に基づく CP Sに対する操作に伴い、 CRFの関係するェント リにおいて、 そのェントリのァドレスを保持する C P Sのェントリの数 の更新を行うようになっている。
第 2実施例においては、 C R Fからデータ ·キャッシュへの 1語のデ
—タのストア (Spill) は以下のように行われる。 この場合、 BP— OF— PS で示されるェントリの内容が A P Sと C P Sで一致していなければなら ないが、 その 2つのポインタ 'スタックで一致する BP— OF— PS で示され るェントリの内容で示される CRFのェントリに書き込まれている 1語 分のデータをデータ'キャッシュにストア (Spill) し、 BP— OF— PS の値 に 1を加える。 さらに、 上記 C R Fのエントリにおいて, NRフィール ドの値から 1を引く。 その結果、 その値が 0になれば、 その C R Fのェ ントリの B Bフィールドを 0に変更し、 そのェントリのァドレスを F L に登録する。
逆に、データ'キヤッシュから C R Fへの 1語のデータの口一ド(Fill) は以下のように行われる。 すなわち、 最後にストア (Spill) した 1語分 のデータをデータ ·キヤッシュから取り出し、 それに F Lに登録されて いるフリーな C R Fの 1ェントリを割り付け、 そのデータ'フィールド に書き込む。 W C F、 N R、 B Bの各フィールドは 1 とする。 さらに、 その割り付けられた C R Fのェントリのアドレスを、 A P S及ぴ C P S の BP— OF— PS に示されるエントリの 1つ下に各々書き込み、 BP— OF— PS の値から 1を引く。
命令の処理においても、 本第 2実施例の計算機システムは第 1実施例 と概ね同様であるが、 以下に、 各ステージごとに第 1実施例との相違を 明確にすることにより、 本第 2実施例の計算機システムの動作を説明す る。
① 命令フェッチ 'ステージ
第 1実施例と同様。
② 命令デコード ·設定ステージ 以下の点を除き、 第 1実施例と同様。
·命令のデコード '設定に伴い新たに割り付けられる C R Fのエントリ において、 N Rフィールドに 0を書き込む。
•オペランド 'スタックの操作命令の場合、 オペランド 'スタックに対し て行うべき操作を A P Sに対して全く同様に行う。 その命令の内容を I Qに書き込む際に、 Sフィールドは実行済みとする。 また、 スタック上 でコピーを作成するようなオペランド 'スタックの操作命令 ( Java VM における dup, dup2, dup_xl, dup2 xl, dup 及び dup2 x2 )の場合にも、 F Lに登録されているフリーな C R Fのェントリを新たに割り付けるこ とはしないので、 ソース'フィールド及びデステイネ一ション'フィ一ル ドへの書き込みは必要ない。
③ 実行ステージ
以下の点を除き、 第 1実施例と同様。
'オペランド '·スタックの操作命令に関しては、 スタック上でコピ一を 作成するような命令の場合も、 実行ステージにおける動作としては、 何 も行わなレ、。
④ 完了ステージ
以下の点を除き、 第 1実施例と同様。
•オペランド '·スタックの操作命令の完了においては、 スタック上でコ ピ一を作成するような命令の場合も、 オペランド 'スタックに対して行 うべき操作を C P Sに対して全く同様に行う (命令がデコ一ド '設定さ れた際の A P Sの動作を再現すべく C P Sが操作される、 という観点か らは第 1実施例と同様)。
•命令の完了に基づく C P Sに対する操作に伴い、 関係する CRFのェ ントリの NRフィールドの値を増減させる。 すなわち、 エントリ 'アド レスが C P Sにプッシュされる C R Fのェントリでは NRフィールドの 値を 0から 1に変更し、 スタック上でコピ一を作成するようなオペラン ド 'スタックの操作命令の完了に伴いェントリ 'Ύドレスが C P S上でコ ピーされる C RFのェントリでは N Rフィ一ルドの値に 1を加え、 ェン トリ 'アドレスが C P Sからポップされる C RFのェントリでは N Rフ ィ一ルドの値から 1を引く。
•命令の完了に基づく C P Sに対する操作に伴い、 エントリ 'ァドレス が C P Sからポップされる C R Fのエントリでは、 NRフィールドの値 が 0になった場合にのみ、 B Bフィールドを 0に変更し、 そのエントリ 'アドレスを F Lに登録する。
以上が、 本第 2実施例の計算機システムの動作についての全般的な説 明である。
第 1 5図〜第 2 1図は、 本第 2実施例の計算機システムにおいて、 前 述の X=T- (A+B)/T の計算を行うプログラムを処理する際の動作をサイ クル毎に示した説明図であり、 図中 C R F 6及び I Q 5の各ェントリの 構成は、 それぞれ第 1 4図、 第 5図のものと同じである。 第 1 5図〜第 2 1図で空白となっている箇所は、 そのフィールドの内容に留意する必 要が無いことを意味する。 時系列で各構成要素の内容を示すために、 各 部の符号の後尾にハイフンと各サイクルに対応する数字、 及び、 第 1実 施例における動作例を示す第 6図〜第 1 2図における符号と区別するた めに文字 ' a 'を添えている。 本発明の計算機システムは、 上述の実施例に限られるものではなく、 細部の構成の異なる様々な実施例が存在する。 たとえば、 次のようなも のをあげることができる。
① I Qが各々のェントリにソース ·データも書き込まれるような構成と なっており、 I Qにおいて、 対応する WC Fフィールドに 1が立つのと 同じタイミングでソース 'データを書き込むようにしたもの。
②各実行ュニッ トの入力段にリザべーション'ステ一ションを設けた構 成とし、 命令デコード'設定ステージにおいて、 個々の命令の内容を I Qに書き込むと共にそれぞれ適切なリザべーション'ステーションへ送 るようにしたもの (L S Uに関しては、 リザべ一シヨン'ステーション と共にストァ'バッファを備えた構成としてもよい)。
③整数データ用 Z浮動小数点データ用、 あるいは 32 ビッ ト'データ用 / 64 ビッ ト'データ用というようにデータ型別に C R F及びフリー ·リ ストを備え、 さらに、 それぞれに対応してひと揃いの実行ユニットを設 けたもの。
これらの実施例の多くは、 レジスタ 'ベースのスーパースカラ'ァ一キ テクチヤにおいて同様な主旨のものを見出すことのできるものである。 命令セットがスタック型の命令及びレジスタ型の命令を共に含むよう な、 本発明に基づく計算機システムも実現可能である。 すなわち、 前進 ポインタ'スタック及び完了ボインタ ·スタックに加えて、 レジスタ番号 にそれぞれ対応して設けられた各ェントリに統合レジスタ 'ファイルの エントリ 'ァドレスが書き込まれるようになっている前進レジスタ 'マツ ビング'テーブル及び完了レジスタ 'マツビング 'テーブルを具備する構 成とし、 スタック型の命令に関しては前進 Z完了ポインタ 'スタックを 操作し、 レジスタ型の命令に関しては前進/完了レジスタ 'マッピング' テーブルをアクセスするようにする。 この場合、 前進ポインタ 'スタツ ク履歴ファイルの代わりに、 各々のェントリに前進ポインタ 'スタック 及び前進レジスタ'マツビング'テーブル双方の内容が書き込まれるよう になっている前進履歴ファイルを具備する必要がある。 産業上の利用可能性
以上のように、 本発明の計算機システムは、 正確な例外処理を保証し つつ、 スタックマシンの機械語で記述されたプログラムを out-of-order で処理するものであるが、 複数の演算ュニットによる並列処理やそれら のパイプライン化によつて効率的な処理を行うことが可能であるという 利点がある。
また、 分岐予測に基づく投機的実行や、 1サイクル当り複数命令のデ コード'設定 Z完了の可能な構成とすることにより、 さらなる高速化が 可能である。

Claims

請 求 の 範 囲 1. データ'キャッシュ (1 1 ) と
各々のェントリにデータが書き込まれるようになっている統合レジス タ 'ファイル (6) と
各々のエントリに上記統合レジスタ.ファイル (6) のエントリのァ ドレスが書き込まれるようになっているスタックの構成となっている前 進ポインタ 'スタック (3) と
各々のェントリに個々の命令の内容が書き込まれるようになつている F I FO (First In First Out) キューの構成となっている命令キュー (5) と
演算を実行するようになっている演算ユニット (80, 8 1) と 上記データ'キヤッシュ (1 1)及び上記統合レジスタ 'ファイル (6) にアクセスできるようになつている口一ド ストァ.ュニッ ト (83) とを具備し、
オペランド 'スタックに対するポップ操作を含む命令がデコ一ドされ た場合には、 ポップすべき語数と同じ数だけ上記統合レジスタ 'フアイ ノレ (6) のエントリのア ドレスを上記前進ポインタ 'スタック (3) 力 らポップし、
オペランド 'スタックに対するプッシュ操作を含む命令がデコ一ドさ れた場合には、 プッシュすべき語数と同じ数だけ割り付けられていない 上記統合レジスタ 'ファイル (6) のエントリを割り付け、 上記割り付 けた上記統合レジスタ 'ファイル (6) のエントリのアドレスを上記前 進ポインタ 'スタック (3) にプッシュし、
デコードされた命令の内容を、 ポップ Zプッシュ操作を伴う命令の場 合にはポップ/プッシュされる上記統合レジスタ 'ファイル (6) のェ ントリのアドレスと共に、 上記命令キュー (5 ) に書き込み、
上記命令キュー (5 ) に保持されている未実行の命令をデータ駆動の 原理に基づき処理するようになっている、 スタックマシンの機械語で記 述されたプログラムを実行する計算機システム。
2 . 各々のエントリに上記統合レジスタ 'ファイル (6 ) のエントリの ァドレスが書き込まれるようになつているスタックの構成となっている 完了ポインタ 'スタック (4 ) を具備し、
上記命令キュ一 (5 ) の先頭のエントリにおいて保持されている命令 の完了が可能である、 あるいはそうなると、 上記命令キュ一 (5 ) の上 記先頭のエントリの内容に基づき、 上記保持されている命令がデコード された際の上記前進ポインタ 'スタック (3 ) の動作を再現すべく上記 完了ポインタ 'スタック (4 ) を操作し、 上記命令キュ一 (5 ) から上 記先頭のェントリを除外し、
ポップ操作によって上記完了ポインタ ·スタック (4 ) におけるアド レスの保持が無くなった上記統合レジスタ 'ファイル (6 ) のエントリ の割り付けを解除するようになっている請求項 1記載の計算機システ ム。
3 . 割り付けられていない上記統合レジスタ 'ファイル (6 ) のェント リのァドレスを保持するフリー ·リストを具備し、
初期状態においては、 上記統合レジスタ 'ファイル (6 の全てのェ ントリのァドレスが上記フリー 'リストに登録されており、
上記統合レジスタ 'ファイル (6 ) のエントリを割り付ける必要があ る場合に、 上記フリー ·リス トカゝら割り付けられていない上記統合レジ スタ 'ファイル (6 ) のエントリのアドレスを取り出し、
割り付けが解除された上記統合レジスタ ·ファイル (6 ) のエントリ のァドレスを上記フリ一'リストに登録するようになっている請求項 2 記載の計算機システム。
4.上記前進ポインタ 'スタック(3)と上記完了ポインタ 'スタック(4) が循環型のバッファの構成となっており、
上記前進ポインタ 'スタック (3) 及び上記完了ポインタ ·スタック (4) で、 上記統合レジスタ 'ファイル (6) のエント リのア ドレスを 保持する最下位のェント リの内容が一致する場合には、 上記前進ボイン タ 'スタック (3) 及び上記完了ポインタ 'スタック (4) において上記 最下位のエント リにおける上記統合レジスタ .ファイル (6) のェント リのァ ドレスの保持を解除し、 上記一致する内容で示される上記統合レ ジスタ 'ファイル (6) のエントリに書き込まれているデータを上記デ ータ 'キャッシュ ( 1 1 ) にストア (Spill) することができるようにな つており、
上記データ'キャッシュ ( 1 1 ) に最後にス トア (Spill) したデータ に対し、 割り付けられていない上記統合レジスタ 'ファイル (6) の 1 エントリを割り付け、 上記データを書き込み、 上記前進ポインタ'スタ ック (3) 及ぴ上記完了ポインタ 'スタック (4) において、 上記統合 レジスタ 'ファイル (6) のエントリのア ドレスを保持する最下位のェ ントリの 1つ下のェントリに上記データが書き込まれる上記統合レジス タ-ファイル (6) のエント リのア ドレスを保持させることによって、 上記最後にス トア (Spill) したデータの上記統合レジスタ 'ファイル(6) へのロード (Fill) を行えるようになつている請求項 2記載の計算機シ ステム。
5. 各々のエントリに上記前進ポインタ 'スタック (3) の内容が書き 込まれるようになつている前進ポインタ ·スタック履歴ファイル (3 a) を具備し、
上記統合レジスタ 'ファイル (6) が各々のエントリに分岐タグも書 き込まれるような構成となっており、
命令のデコードの際に、 割り付けられる上記統合レジスタ 'ファイル ( 6 ) のエントリに分岐タグを書き込むようになっており、
条件分岐命令がデコードされるごとに、 上記前進ボインタ ·スタック 履歴ファイル (3 a ) の 1エントリに上記前進ポインタ 'スタック (3 ) の内容を書き込み、 分岐タグを変更して、 分岐予測に基づく投機的実行 を行い、
分岐予測が外れた場合には、 その条件分岐命令以降にデコードされた 命令を無効にし、 上記条件分岐命令以降にデコ一ドされた命令に付した 分岐タグが書き込まれている上記統合レジスタ 'ファイル (6 ) のェン トリの割り付けを解除し、 上記条件分岐命令がデコードされた際に書き 込みの行われた上記前進ポインタ ·スタック履歴ファイル (3 a ) のェ ントリの内容を、 上記前進ポインタ 'スタック (3 ) にコピーして、 正 しい位置の命令から処理を再開することによって、
分岐予測に基づく投機的実行を行うようになっている請求項 2記載の 計算機システム。
6 . 上記フリー 'リストが F I F Oキューの構成となっており、
同時に複数の命令をデコードし、 上記前進ポインタ 'スタック (3 ) の操作、 上記統合レジスタ 'ファイル (6 ) のエントリの割り付け及び 上記命令キュー (5 ) の連続する複数のエントリへの命令の内容の書き 込みを行う機能と、
同時に上記命令キュー (5 ) の連続する複数のエントリに書き込まれ ている内容に基づき、 上記完了ポインタ 'スタック (4 ) の操作及び上 記統合レジスタ 'ファイル (6 ) のエントリの割り付けの解除を行う機 能を有する請求項 3記載の計算機、
PCT/JP1998/005230 1997-11-20 1998-11-19 Systeme informatique WO1999027439A1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
EP98954765A EP1035471A1 (en) 1997-11-20 1998-11-19 Computer system
KR1020007005482A KR20010032275A (ko) 1997-11-20 1998-11-19 계산기 시스템
EA200000546A EA200000546A1 (ru) 1997-11-20 1998-11-19 Компьютерная система
CA002310369A CA2310369A1 (en) 1997-11-20 1998-11-19 Computer system
AU11747/99A AU745449B2 (en) 1997-11-20 1998-11-19 Computer system

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP9/362473 1997-11-20
JP36247397 1997-11-20
JP28211898 1998-10-05
JP10/282118 1998-10-05

Publications (1)

Publication Number Publication Date
WO1999027439A1 true WO1999027439A1 (fr) 1999-06-03

Family

ID=26554476

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP1998/005230 WO1999027439A1 (fr) 1997-11-20 1998-11-19 Systeme informatique

Country Status (7)

Country Link
EP (1) EP1035471A1 (ja)
KR (1) KR20010032275A (ja)
CN (1) CN1279782A (ja)
AU (1) AU745449B2 (ja)
CA (1) CA2310369A1 (ja)
EA (1) EA200000546A1 (ja)
WO (1) WO1999027439A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061475A1 (en) * 2000-02-14 2001-08-23 Chicory Systems, Inc. Transforming a stack-based code sequence to a register based code sequence
WO2001061476A2 (en) * 2000-02-14 2001-08-23 Chicory Systems, Inc. System including cpu and code translator for translating code from a second instruction set to a first instruction set
WO2002029507A2 (en) * 2000-10-05 2002-04-11 Arm Limited Hardware instruction translation within a processor pipeline

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US20020083309A1 (en) * 2000-12-21 2002-06-27 Sun Microsystems, Inc. Hardware spill/fill engine for register windows
GB2377288A (en) * 2001-07-06 2003-01-08 Digital Comm Technologies Ltd Executing branch instructions of a stack based program on a register based processor
WO2006133597A1 (en) * 2005-06-15 2006-12-21 Intel Corporation Using transacted writes and caching mechanism to improve write performance in multi-level cell flash memoty

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS622330A (ja) * 1985-06-27 1987-01-08 Nec Corp 演算例外命令アドレス割出装置
JPH02260082A (ja) * 1989-03-31 1990-10-22 Hajime Seki 計算機方式

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
JPH0383134A (ja) * 1989-08-28 1991-04-09 Matsushita Electric Ind Co Ltd スタック管理方法
US5696955A (en) * 1994-06-01 1997-12-09 Advanced Micro Devices, Inc. Floating point stack and exchange instruction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS622330A (ja) * 1985-06-27 1987-01-08 Nec Corp 演算例外命令アドレス割出装置
JPH02260082A (ja) * 1989-03-31 1990-10-22 Hajime Seki 計算機方式

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061475A1 (en) * 2000-02-14 2001-08-23 Chicory Systems, Inc. Transforming a stack-based code sequence to a register based code sequence
WO2001061476A2 (en) * 2000-02-14 2001-08-23 Chicory Systems, Inc. System including cpu and code translator for translating code from a second instruction set to a first instruction set
WO2001061476A3 (en) * 2000-02-14 2002-05-02 Chicory Systems Inc System including cpu and code translator for translating code from a second instruction set to a first instruction set
WO2002029507A2 (en) * 2000-10-05 2002-04-11 Arm Limited Hardware instruction translation within a processor pipeline
WO2002029507A3 (en) * 2000-10-05 2003-05-22 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline

Also Published As

Publication number Publication date
CA2310369A1 (en) 1999-06-03
KR20010032275A (ko) 2001-04-16
EP1035471A1 (en) 2000-09-13
AU745449B2 (en) 2002-03-21
CN1279782A (zh) 2001-01-10
EA200000546A1 (ru) 2001-04-23
AU1174799A (en) 1999-06-15

Similar Documents

Publication Publication Date Title
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
JP4485198B2 (ja) Javaアクセラレータを備えたプロセッサシステム
JP3871884B2 (ja) 記憶からロードへの転送のための機構
US5889982A (en) Method and apparatus for generating event handler vectors based on both operating mode and event type
US9092215B2 (en) Mapping between registers used by multiple instruction sets
US5452426A (en) Coordinating speculative and committed state register source data and immediate source data in a processor
US6119223A (en) Map unit having rapid misprediction recovery
JPH05224928A (ja) データ処理装置
US20050262329A1 (en) Processor architecture for executing two different fixed-length instruction sets
GB2317469A (en) Data processing system register control
EP0855648A2 (en) Data processing with parallel or sequential execution of program instructions
JPH0496825A (ja) データ・プロセッサ
GB2317467A (en) Input operand control in data processing systems
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
JP3866920B2 (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
JP3789583B2 (ja) データ処理装置
US6449712B1 (en) Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JP3751402B2 (ja) データ精度モード表示器を備えたマルチパイプライン・マイクロプロセッサ
JPH11345122A (ja) プロセッサ
WO1999027439A1 (fr) Systeme informatique
JP3345787B2 (ja) データ処理装置
JP3701203B2 (ja) 計算機システム
US5841999A (en) Information handling system having a register remap structure using a content addressable table
JP2002229779A (ja) 情報処理装置

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 98811324.4

Country of ref document: CN

AK Designated states

Kind code of ref document: A1

Designated state(s): AU BG BR CA CN CU CZ HU ID IL IS JP KR MX NO NZ PL SG SK TR UA US VN

AL Designated countries for regional patents

Kind code of ref document: A1

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

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
ENP Entry into the national phase

Ref document number: 2310369

Country of ref document: CA

Ref document number: 2310369

Country of ref document: CA

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 1020007005482

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 11747/99

Country of ref document: AU

WWE Wipo information: entry into national phase

Ref document number: 1998954765

Country of ref document: EP

Ref document number: 200000546

Country of ref document: EA

WWE Wipo information: entry into national phase

Ref document number: 09530959

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 1998954765

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020007005482

Country of ref document: KR

WWG Wipo information: grant in national office

Ref document number: 11747/99

Country of ref document: AU

WWW Wipo information: withdrawn in national office

Ref document number: 1998954765

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Ref document number: 1020007005482

Country of ref document: KR