WO1998027485A1 - Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions - Google Patents

Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions Download PDF

Info

Publication number
WO1998027485A1
WO1998027485A1 PCT/US1997/022643 US9722643W WO9827485A1 WO 1998027485 A1 WO1998027485 A1 WO 1998027485A1 US 9722643 W US9722643 W US 9722643W WO 9827485 A1 WO9827485 A1 WO 9827485A1
Authority
WO
WIPO (PCT)
Prior art keywords
address space
address
access
memory
speculative
Prior art date
Application number
PCT/US1997/022643
Other languages
French (fr)
Inventor
Paolo Faraboschi
Alberto Such-Vicente
Original Assignee
Hewlett-Packard Company
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 Hewlett-Packard Company filed Critical Hewlett-Packard Company
Publication of WO1998027485A1 publication Critical patent/WO1998027485A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/3842Speculative instruction execution
    • 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/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Definitions

  • This invention relates to computers which utilize instruction level parallelism and, more particularly, to computer systems which employ speculative execution of instructions for improved performance.
  • Instruction level parallel processing involves execution in parallel of low level machine operations, such as memory loads and stores, integer additions and floating point multiplications.
  • Processors for implementing instruction level parallelism typically include multiple execution units and are controlled by very long instruction words (VLIW's). Each VLIW specifies the operations that are to be executed in a single cycle.
  • the source program is typically written in a high level language without attention to operations that can be performed in parallel.
  • the conversion of a source program to machine code which utilizes instruction level parallelism involves scheduling of operations which can be executed in parallel.
  • the scheduling function may be performed by a compiler or by the processor itself. When scheduling is performed by the processor, the processor hardware may become complex. When scheduling is performed by the compiler, the processor simply executes the operations contained in the VLIW. Instruction level parallel processing is described by J.A. Fisher et al in Science. Vol.
  • each execution unit should perform an operation as often as possible.
  • the execution units of the processor may be fully utilized during computation-intensive portions of a program, but other portions of the program may not require all the resources of the processor. In this case, instructions that appear later in the program may be scheduled for execution in parallel with earlier instructions, if the operands necessary for execution are available. Because branch instructions are usually present in the program, it may not be possible to determine in advance whether an instruction will require execution. However, if resources of the processor are otherwise idle, the performance of the processor may be improved by executing instructions speculatively, even though execution of those instructions may later be determined to be unnecessary. Execution of an instruction that follows a branch instruction before execution of the branch instruction is known as speculative execution. If the program ultimately requires execution of the instruction that was executed speculatively, an improvement in performance is obtained. If execution of the speculative instruction was not required, the result is discarded.
  • Speculative execution produces certain effects that must be accounted for in the operation of the processor. For example, if an error condition is generated during execution of the speculative instruction, the error condition should not be reported until a determination is made whether execution of the speculative instruction was required. This avoids processing an error for an instruction which is later discarded. Speculative execution is discussed by M.D. Smith et al in "Efficient Superscalar Performance Through Boosting", ASPLOS V, October, 1 992, pp. 248-259; S. A. Mahike et al, "Sentinel Scheduling for VLIW and Superscalar Processors", ASPLOS V,
  • speculative execution may produce unacceptable external effects.
  • a speculative memory access operation may accidentally address the region of the address space to which the I/O device is mapped and may cause undesired effects in the I/O device.
  • the undesired effect may be produced simply by accessing a particular address.
  • the I/O device is a printer, a speculative memory access operation may potentially cause a pen to be activated or an alarm to be sounded. It will be understood that a variety of different effects may be produced.
  • a computer system comprises a central processing unit (CPU) for executing conventional instructions and speculative instructions, and a memory controller coupled to a system bus.
  • the CPU includes means responsive to an access operation by one of the instructions for generating a speculative instruction bit and a corresponding access address.
  • the access address represents a location in a global address space which
  • SUBSTITUTE SHEET (RULE 28) includes a first address space and a second address space.
  • the speculative instruction bit is asserted when the corresponding access address is generated by a speculative instruction.
  • the memory controller discards the access operation when the speculative instruction bit is asserted and the access address is in the second address space. Otherwise, the memory controller accesses the address space. Thus, the speculative instruction is prevented from accessing the second address space.
  • the first address space comprises a memory address space and the second address space comprises an I/O address space.
  • the computer system may further comprise a memory coupled to the system bus and mapped to the memory address space, and an I/O device coupled to the system bus and mapped to the I/O address space. The speculative instruction is prevented from accessing the I/O device.
  • the first address space comprises a dedicated memory space and the second address space comprises a shared memory space that may be accessed by another processor in a multiprocessor system.
  • the computer system may further comprise a memory coupled to the system bus.
  • the memory has a dedicated area mapped to the dedicated memory space and a shared area mapped to the shared memory space. The speculative instruction is prevented from accessing the shared memory space.
  • the memory controller may include a table containing addresses of the second address space and means for comparing the access address with the addresses of the second address space. The access operation is discarded when the address matches one of the addresses in the second address space and the speculative instruction bit is asserted.
  • a method for protecting memory-mapped devices from side effects of speculative instructions in a computer system includes a CPU for executing conventional instructions and speculative instructions, and a memory controller for accessing an address space, including a first address space and a second address space, in response to an access address generated by the CPU.
  • the CPU generates a speculative instruction bit and a corresponding access address in response to an access operation by one of the instructions.
  • the CPU asserts the speculative instruction bit when the corresponding access address is generated by a speculative instruction.
  • the memory controller discards the access operation when the speculative instruction bit is asserted and the access address is in the second address space.
  • the memory controller performs the access operation when the speculative instruction bit is not asserted or when the access address is in the first address space.
  • FIG. 1 is a block diagram of a first example of a computer system suitable for incorporation of the present invention
  • FIG. 2 is a block diagram of an example of the CPU shown in FIG. 1 ;
  • FIG. 3 is a flow diagram that schematically represents the operation of a very long instruction word compiler
  • FIG. 4 is a schematic representation of a very long instruction word
  • FIG. 5 is a schematic representation of a lookup table contained in the memory controller of FIG. 1 ;
  • FIG. 6 is a flow chart that illustrates the operations performed by the memory controller during an access operation by the CPU; and FIG . 7 is a block diagram of a second example of a computer system suitable for incorporation of the present invention.
  • FIG. 1 A block diagram of an example of a memory-mapped computer system suitable for incorporation of the present invention is shown in FIG. 1 .
  • a computer system 1 0 includes a CPU 1 2 coupled by an external bus 1 4 to a memory controller 20.
  • the external bus 1 4 includes address and data lines, and as discussed below, a dismissible load (DLD) line 22 which carries a DLD bit.
  • the external bus 14 may include additional control lines (not shown) which are not relevant to the present invention.
  • the memory controller 20 is coupled via a system bus 26 to a memory 30 and to an I/O device 32.
  • the system bus 26 includes address lines by which the memory controller may address a location in memory 30 or I/O device 32 and data lines for passing data between memory controller 20 and memory 30 or I/O device 32.
  • the memory 30 is typically a random access memory which contains instructions and data for a program being executed.
  • the I/O device 32 may be any type of computer peripheral device or specialized device. In one example, the I/O device 32
  • the computer system 1 0 has a memory-mapped configuration, wherein the CPU 1 2 can access a global address space.
  • the global address space is divided into address spaces assigned to each of the devices attached to system bus 26.
  • the global address space may include a memory address space and an I/O address space.
  • the memory 30 is mapped to the memory address space, and the I/O device 32 is mapped to the I/O address space.
  • SUBSTITUTE SHEET PLE 26 the I/O address space.
  • Other devices may be attached to the system bus 26 and may be mapped to other regions of the global address space.
  • the memory controller 20 converts the address supplied by the CPU 1 2 on external bus 1 4 to an address suitable for accessing memory 30, I/O 32 or other devices connected to system bus 26.
  • FIG. 2 A block diagram of an example of the CPU 1 2 is shown in FIG. 2.
  • the CPU 1 2 employs a very long instruction word (VLIW) architecture.
  • a memory 50 typically an instruction cache, issues very long instruction words containing one or more instructions to an instruction decoder (not shown) .
  • the instruction decoder decodes each instruction and controls the operation of an execution block.
  • the execution block may include a register file 60 and several execution units, such as a load/store unit 62, a floating point adder 64, a floating point multiplier 66 and an integer ALU 68.
  • the memory 50 supplies wide instruction words 70 for execution of multiple operations in parallel.
  • the register file 60 supplies operands to and stores results from execution units 62, 64, 66 and 68.
  • An application program is typically written for sequential execution without consideration of the VLIW architecture of the processor.
  • the instructions of the application program are converted to VLIW words by a compiler as shown in FIG . 3.
  • An application program 1 00 is input to compiler 1 02, which schedules operations and outputs machine code 1 04 in the form of VLIW words.
  • the compiler 1 02 schedules operations in parallel for high utilization of the execution clusters. Operations are scheduled when the operands necessary for execution are available. Thus, instructions that appear later in the program may be scheduled earlier, or moved up, if the necessary operands are available.
  • the compiler attempts to schedule instructions so as to avoid delays because of execution latencies. For example, an operation that requires several cycles to execute is scheduled earlier, so that the result will be available as soon as it is needed.
  • a speculative instruction is one which follows a branch instruction. Until the branch instruction is executed, it cannot be determined with certainty whether execution of the speculative instruction will be required. If execution of the speculative instruction is required, performance is enhanced by executing it in parallel with other instructions. If execution of a speculative instruction is not required, little is lost because the execution unit would have been idle anyway. The probability of correctly selecting the speculative instruction for execution can be increased analyzing the program and its operation.
  • VLIW word 1 20 An example of a VLIW word 1 20 is shown in FIG. 4.
  • the VLIW word contains instructions which specify the operations to be performed in a single cycle.
  • an instruction 1 22 specifies an operation to be performed by a first execution unit
  • an instruction 1 24 specifies an operation to be performed by a second execution unit
  • an instruction 1 26 specifies an operation to be performed by a third execution unit, and so on, up to the maximum number of operations that can be performed in a single cycle.
  • the number of instructions in the VLIW word is variable and in some cases may specify a single operation or a no-op.
  • the instructions in the VLIW instruction word 1 20 are supplied by the memory 50 via the instruction decoder to the appropriate execution units 62, 64, 66 and 68.
  • the compiler 1 02 includes with each instruction in the VLIW instruction word 1 20 an indicator, typically a bit 1 30, as to whether the instruction is a conventional (non-speculative) instruction or a speculative instruction.
  • instructions 1 22 and 1 26 are conventional instructions and instruction 1 24 is a speculative instruction, as indicated by the respective states of bit 1 30 in each instruction.
  • SUBSTITUTE SHEET (RULE Execution of the speculative instruction may involve a variety of different operations.
  • One of the operations that may be executed speculatively is a memory access operation, such as a memory load operation or a memory write operation.
  • the memory access operations may occur when the data required by the speculative instruction is not contained in CPU 1 2, thus necessitating access to memory 30 (FIG. 1 ) .
  • a memory access operation during speculative execution is acceptable.
  • the speculative instruction may generate an address that falls within the I/O address space to which I/O device 32 is mapped. As indicated above, the accessing of an address in the I/O address space may cause undesired effects in I/O device 32. The effects are undesired because subsequent program execution may indicate that the result of the speculatively-executed instruction should be discarded and that the effect produced in the I/O device 32 was incorrect.
  • the CPU 1 2 provides a dismissible load (DLD) bit to memory controller 20 on DLD line 22.
  • the DLD bit is synchronous with a corresponding address supplied by the CPU 1 2 to memory controller 20 on the address lines of external bus 1 4.
  • the DLD bit indicates whether the instruction that generated the corresponding address is a conventional instruction or a speculative instruction, as indicated by bit 1 30 in the instruction. When the DLD bit is asserted, a speculative instruction is indicated.
  • the memory controller 20 contains a record of the address space allocation between memory 30 and I/O device 32, as well as any other devices that may be mapped to the global address space.
  • the memory controller 20 may, for example, include a table indicating regions of the address space mapped to I/O devices and regions of the address space mapped to memory.
  • more than one I/O device and more than one memory may be connected to system bus 26.
  • Each device, such as an I/O device, memory or other device, connected to system bus 26 may be mapped to a continuous region or to discontinuous regions of the global memory space.
  • I/O device A is mapped to address space A01 -A09
  • I/O device B is mapped to address space A30-A39.
  • Memory A is mapped to address space A1 0-A29
  • memory B is mapped to address space A40-A79. It will be understood that different address ranges and different numbers of address spaces will be utilized in different applications.
  • step 200 memory controller 220 waits for a memory access operation by CPU 1 2.
  • the memory controller 20 determines in step 202 whether the DLD bit is asserted. As indicated above, assertion of the DLD bit indicates that the memory access operation was generated by a speculative instruction. When the DLD bit is not asserted, indicating a conventional instruction, the access operation is performed normally in step 204.
  • the memory controller provides the requested address to the memory 30 or to the I/O device 32, and a read or write operation is performed. The memory controller 20 then returns to step 200 to wait for another access operation.
  • the corresponding access address on external bus 14 is compared with table 1 40 in step 208. If the access address is determined in step 210 to fall within the I/O address space (addresses A01 -A09 or A30-A39 in the example of FIG. 5), the access operation is discarded in step 21 2 and a value of 0 is returned by the memory controller 20 to the CPU 1 2 on the data lines of external bus 1 4. More specifically, discarding the access operation means that the memory controller 20 does not address the I/O address space and thus does not access I/O device 32. This insures that
  • step 21 0 If the access address is determined in step 21 0 not to fall within the I/O address space (i.e. the access address falls within the memory address space), the access operation is executed normally in step 204. Thus, a speculative load operation is permitted if the access address falls within the memory address space.
  • FIG. 7 A second example of a computer system suitable for incorporation of the present invention is shown in FIG. 7. Like elements in FIGS. 1 and 7 have the same reference numerals.
  • a computer system 300 has a multiprocessing architecture.
  • CPU 1 2 accesses a memory 302 via a memory controller 20 and system bus 26.
  • the memory 302 includes a dedicated area 31 0 and a shared area 31 2.
  • the dedicated area 31 0 is accessible only by CPU 1 2.
  • the shared area 31 2 is accessible by CPU 1 2 and by a CPU 320 connected to system bus 26 via a memory controller 322.
  • One or more additional CPU's may have access to shared area 31 2 .
  • the accessing of shared area 31 2 of memory 302 by a speculative access instruction being executed by CPU 1 2 may produce undesired side effects in CPU 320 or any other CPU that can access shared area 31 2. For example, accessing a particular location in shared area 31 2 may trigger an action in CPU 320. Because the instruction is speculative, such effects are undesired.
  • the memory controller 20 contains a table of the addresses corresponding to shared area 31 2.
  • the access address is compared with the addresses of shared area 31 2.
  • SUBSTITUTE SHEET (RULE 28) When the speculative access operation provides an address in shared area 31 2, that access operation is discarded. When the speculative access operation accesses an address in dedicated area 31 0, the access operation is executed. Also, when the DLD bit is not asserted, indicating a conventional instruction, the access operation is executed. Thus, speculative instructions are prevented from accessing shared area 31 2.
  • the DLD bit may be used to prevent a speculative instruction from accessing a portion of a global address space.
  • the speculative instruction may access a first address space but is prevented from accessing a second address space within the global address space.
  • the DLD bit is not asserted, indicating a conventional instruction, either the first address space or the second address space may be accessed. Thus, undesired side effects of speculative execution are prevented.
  • the invention has been described in connection with VLIW processor architectures. However, the invention may be utilized in any processor architecture that uses speculative instructions.

Abstract

A computer system includes a CPU for executing conventional instructions and speculative instructions, and a memory controller coupled to a system bus. In response to an access operation by one of the instructions, the CPU generates a speculative instruction bit and a corresponding access address. The access address represents a location in a global address space which includes a first address space and a second address space. The speculative instruction bit is asserted when the corresponding access address is generated by a speculative instruction. The memory controller discards the access operation when the speculative instruction bit is asserted and the access address is in the second address space. Thus, the speculative instruction is prevented from accessing the second address space. In one embodiment, the computer system includes a memory coupled to the system bus and mapped to the first address space, and an I/O device coupled to the system bus and mapped to the second address space. The speculative instruction is prevented from accessing the I/O device.

Description

METHOD AND APPARATUS FOR PROTECTING
MEMORY-MAPPED DEVICES FROM SIDE EFFECTS
OF SPECULATIVE INSTRUCTIONS
Field of the Invention
This invention relates to computers which utilize instruction level parallelism and, more particularly, to computer systems which employ speculative execution of instructions for improved performance.
Background of the Invention
One of the approaches to improving microprocessor performance is instruction level parallel processing. Instruction level parallel processing involves execution in parallel of low level machine operations, such as memory loads and stores, integer additions and floating point multiplications. Processors for implementing instruction level parallelism typically include multiple execution units and are controlled by very long instruction words (VLIW's). Each VLIW specifies the operations that are to be executed in a single cycle. The source program is typically written in a high level language without attention to operations that can be performed in parallel. The conversion of a source program to machine code which utilizes instruction level parallelism involves scheduling of operations which can be executed in parallel. The scheduling function may be performed by a compiler or by the processor itself. When scheduling is performed by the processor, the processor hardware may become complex. When scheduling is performed by the compiler, the processor simply executes the operations contained in the VLIW. Instruction level parallel processing is described by J.A. Fisher et al in Science. Vol.
SUBSTITUTE SHEFT {RULE 28) 253, September 1 3, 1 991 , pp. 1 233-1 241 and by B. Ramakrishna et al in the Journal of Supercomputin , Vol. 7, 1 993, pp. 9-50.
For maximum utilization of a processor having multiple execution units, each execution unit should perform an operation as often as possible. The execution units of the processor may be fully utilized during computation-intensive portions of a program, but other portions of the program may not require all the resources of the processor. In this case, instructions that appear later in the program may be scheduled for execution in parallel with earlier instructions, if the operands necessary for execution are available. Because branch instructions are usually present in the program, it may not be possible to determine in advance whether an instruction will require execution. However, if resources of the processor are otherwise idle, the performance of the processor may be improved by executing instructions speculatively, even though execution of those instructions may later be determined to be unnecessary. Execution of an instruction that follows a branch instruction before execution of the branch instruction is known as speculative execution. If the program ultimately requires execution of the instruction that was executed speculatively, an improvement in performance is obtained. If execution of the speculative instruction was not required, the result is discarded.
Speculative execution produces certain effects that must be accounted for in the operation of the processor. For example, if an error condition is generated during execution of the speculative instruction, the error condition should not be reported until a determination is made whether execution of the speculative instruction was required. This avoids processing an error for an instruction which is later discarded. Speculative execution is discussed by M.D. Smith et al in "Efficient Superscalar Performance Through Boosting", ASPLOS V, October, 1 992, pp. 248-259; S. A. Mahike et al, "Sentinel Scheduling for VLIW and Superscalar Processors", ASPLOS V,
SUBSTITUTE SHEET (ROLE 26} October, 1 992, pp. 238-247 and by A. Rogers et al, "Software Support for Speculative Loads", ASPLOS V, October, 1 992, pp. 38- 50.
When a processor is connected to I/O devices or to other processors, speculative execution may produce unacceptable external effects. For example, when the processor uses a memory-mapped architecture and an I/O device is mapped to a region of the address space, a speculative memory access operation may accidentally address the region of the address space to which the I/O device is mapped and may cause undesired effects in the I/O device. The undesired effect may be produced simply by accessing a particular address. For example, if the I/O device is a printer, a speculative memory access operation may potentially cause a pen to be activated or an alarm to be sounded. It will be understood that a variety of different effects may be produced. Although execution of the speculative instruction may later be determined to be unnecessary, the effect produced in the I/O device cannot be undone. Thus, such side effects are unacceptable. Addressing of the I/O device by a speculative memory access operation is not intended by the programmer. Instead, such a speculative memory access operation occurs accidentally as a result of the compiler making the operation speculative.
Summary of the Invention
According to a first aspect of the invention, a computer system comprises a central processing unit (CPU) for executing conventional instructions and speculative instructions, and a memory controller coupled to a system bus. The CPU includes means responsive to an access operation by one of the instructions for generating a speculative instruction bit and a corresponding access address. The access address represents a location in a global address space which
SUBSTITUTE SHEET (RULE 28) includes a first address space and a second address space. The speculative instruction bit is asserted when the corresponding access address is generated by a speculative instruction. The memory controller discards the access operation when the speculative instruction bit is asserted and the access address is in the second address space. Otherwise, the memory controller accesses the address space. Thus, the speculative instruction is prevented from accessing the second address space.
In a first embodiment, the first address space comprises a memory address space and the second address space comprises an I/O address space. The computer system may further comprise a memory coupled to the system bus and mapped to the memory address space, and an I/O device coupled to the system bus and mapped to the I/O address space. The speculative instruction is prevented from accessing the I/O device.
In a second embodiment, the first address space comprises a dedicated memory space and the second address space comprises a shared memory space that may be accessed by another processor in a multiprocessor system. The computer system may further comprise a memory coupled to the system bus. The memory has a dedicated area mapped to the dedicated memory space and a shared area mapped to the shared memory space. The speculative instruction is prevented from accessing the shared memory space.
The memory controller may include a table containing addresses of the second address space and means for comparing the access address with the addresses of the second address space. The access operation is discarded when the address matches one of the addresses in the second address space and the speculative instruction bit is asserted.
According to another aspect of the invention, a method for protecting memory-mapped devices from side effects of speculative instructions in a computer system is provided. The computer system includes a CPU for executing conventional instructions and speculative instructions, and a memory controller for accessing an address space, including a first address space and a second address space, in response to an access address generated by the CPU. According to the method, the CPU generates a speculative instruction bit and a corresponding access address in response to an access operation by one of the instructions. The CPU asserts the speculative instruction bit when the corresponding access address is generated by a speculative instruction. The memory controller discards the access operation when the speculative instruction bit is asserted and the access address is in the second address space. The memory controller performs the access operation when the speculative instruction bit is not asserted or when the access address is in the first address space.
Brief Description of the Drawings
For a better understanding of the present invention, reference is made to the accompanying drawings, which are incorporated herein by reference and in which:
FIG. 1 is a block diagram of a first example of a computer system suitable for incorporation of the present invention;
FIG. 2 is a block diagram of an example of the CPU shown in FIG. 1 ;
FIG. 3 is a flow diagram that schematically represents the operation of a very long instruction word compiler;
FIG. 4 is a schematic representation of a very long instruction word;
FIG. 5 is a schematic representation of a lookup table contained in the memory controller of FIG. 1 ;
FIG. 6 is a flow chart that illustrates the operations performed by the memory controller during an access operation by the CPU; and FIG . 7 is a block diagram of a second example of a computer system suitable for incorporation of the present invention.
Detailed Description
A block diagram of an example of a memory-mapped computer system suitable for incorporation of the present invention is shown in FIG. 1 . A computer system 1 0 includes a CPU 1 2 coupled by an external bus 1 4 to a memory controller 20. The external bus 1 4 includes address and data lines, and as discussed below, a dismissible load (DLD) line 22 which carries a DLD bit. The external bus 14 may include additional control lines (not shown) which are not relevant to the present invention. The memory controller 20 is coupled via a system bus 26 to a memory 30 and to an I/O device 32. The system bus 26 includes address lines by which the memory controller may address a location in memory 30 or I/O device 32 and data lines for passing data between memory controller 20 and memory 30 or I/O device 32. The memory 30 is typically a random access memory which contains instructions and data for a program being executed. The I/O device 32 may be any type of computer peripheral device or specialized device. In one example, the I/O device 32 may be a printer.
The computer system 1 0 has a memory-mapped configuration, wherein the CPU 1 2 can access a global address space. The global address space is divided into address spaces assigned to each of the devices attached to system bus 26. Thus, the global address space may include a memory address space and an I/O address space. The memory 30 is mapped to the memory address space, and the I/O device 32 is mapped to the I/O address space. When the CPU 1 2 performs a memory access operation, it issues an address in the memory address space. Similarly, when the CPU performs an I/O operation, it issues an address in
SUBSTITUTE SHEET PLE 26) the I/O address space. Other devices may be attached to the system bus 26 and may be mapped to other regions of the global address space. The memory controller 20 converts the address supplied by the CPU 1 2 on external bus 1 4 to an address suitable for accessing memory 30, I/O 32 or other devices connected to system bus 26.
A block diagram of an example of the CPU 1 2 is shown in FIG. 2. The CPU 1 2 employs a very long instruction word (VLIW) architecture. A memory 50, typically an instruction cache, issues very long instruction words containing one or more instructions to an instruction decoder (not shown) . The instruction decoder decodes each instruction and controls the operation of an execution block. The execution block may include a register file 60 and several execution units, such as a load/store unit 62, a floating point adder 64, a floating point multiplier 66 and an integer ALU 68. The memory 50 supplies wide instruction words 70 for execution of multiple operations in parallel. The register file 60 supplies operands to and stores results from execution units 62, 64, 66 and 68.
An application program is typically written for sequential execution without consideration of the VLIW architecture of the processor. The instructions of the application program are converted to VLIW words by a compiler as shown in FIG . 3. An application program 1 00 is input to compiler 1 02, which schedules operations and outputs machine code 1 04 in the form of VLIW words. The compiler 1 02 schedules operations in parallel for high utilization of the execution clusters. Operations are scheduled when the operands necessary for execution are available. Thus, instructions that appear later in the program may be scheduled earlier, or moved up, if the necessary operands are available. Furthermore, the compiler attempts to schedule instructions so as to avoid delays because of execution latencies. For example, an operation that requires several cycles to execute is scheduled earlier, so that the result will be available as soon as it is needed.
Despite such efforts at scheduling execution of operations in parallel, one or more execution units may be idle unless instructions are executed speculatively. A speculative instruction is one which follows a branch instruction. Until the branch instruction is executed, it cannot be determined with certainty whether execution of the speculative instruction will be required. If execution of the speculative instruction is required, performance is enhanced by executing it in parallel with other instructions. If execution of a speculative instruction is not required, little is lost because the execution unit would have been idle anyway. The probability of correctly selecting the speculative instruction for execution can be increased analyzing the program and its operation.
An example of a VLIW word 1 20 is shown in FIG. 4. The VLIW word contains instructions which specify the operations to be performed in a single cycle. Thus, an instruction 1 22 specifies an operation to be performed by a first execution unit, an instruction 1 24 specifies an operation to be performed by a second execution unit, an instruction 1 26 specifies an operation to be performed by a third execution unit, and so on, up to the maximum number of operations that can be performed in a single cycle. The number of instructions in the VLIW word is variable and in some cases may specify a single operation or a no-op. The instructions in the VLIW instruction word 1 20 are supplied by the memory 50 via the instruction decoder to the appropriate execution units 62, 64, 66 and 68. The compiler 1 02 includes with each instruction in the VLIW instruction word 1 20 an indicator, typically a bit 1 30, as to whether the instruction is a conventional (non-speculative) instruction or a speculative instruction. In the example of FIG. 4, instructions 1 22 and 1 26 are conventional instructions and instruction 1 24 is a speculative instruction, as indicated by the respective states of bit 1 30 in each instruction.
SUBSTITUTE SHEET (RULE Execution of the speculative instruction may involve a variety of different operations. One of the operations that may be executed speculatively is a memory access operation, such as a memory load operation or a memory write operation. The memory access operations may occur when the data required by the speculative instruction is not contained in CPU 1 2, thus necessitating access to memory 30 (FIG. 1 ) . A memory access operation during speculative execution is acceptable. However, for a variety of reasons, the speculative instruction may generate an address that falls within the I/O address space to which I/O device 32 is mapped. As indicated above, the accessing of an address in the I/O address space may cause undesired effects in I/O device 32. The effects are undesired because subsequent program execution may indicate that the result of the speculatively-executed instruction should be discarded and that the effect produced in the I/O device 32 was incorrect.
To avoid such undesired side effects of speculative execution, the CPU 1 2 provides a dismissible load (DLD) bit to memory controller 20 on DLD line 22. The DLD bit is synchronous with a corresponding address supplied by the CPU 1 2 to memory controller 20 on the address lines of external bus 1 4. The DLD bit indicates whether the instruction that generated the corresponding address is a conventional instruction or a speculative instruction, as indicated by bit 1 30 in the instruction. When the DLD bit is asserted, a speculative instruction is indicated.
The memory controller 20 contains a record of the address space allocation between memory 30 and I/O device 32, as well as any other devices that may be mapped to the global address space. The memory controller 20 may, for example, include a table indicating regions of the address space mapped to I/O devices and regions of the address space mapped to memory. In general, more than one I/O device and more than one memory may be connected to system bus 26. Each device, such as an I/O device, memory or other device, connected to system bus 26 may be mapped to a continuous region or to discontinuous regions of the global memory space. In the example of FIG. 5, I/O device A is mapped to address space A01 -A09, and I/O device B is mapped to address space A30-A39. Memory A is mapped to address space A1 0-A29, and memory B is mapped to address space A40-A79. It will be understood that different address ranges and different numbers of address spaces will be utilized in different applications.
A flow chart of the operations performed by memory controller 20 in controlling memory access operations is shown in FIG. 6. In step 200, memory controller 220 waits for a memory access operation by CPU 1 2. Upon receiving a memory access operation, the memory controller 20 determines in step 202 whether the DLD bit is asserted. As indicated above, assertion of the DLD bit indicates that the memory access operation was generated by a speculative instruction. When the DLD bit is not asserted, indicating a conventional instruction, the access operation is performed normally in step 204. The memory controller provides the requested address to the memory 30 or to the I/O device 32, and a read or write operation is performed. The memory controller 20 then returns to step 200 to wait for another access operation.
When the DLD bit is determined in step 202 to be asserted, the corresponding access address on external bus 14 is compared with table 1 40 in step 208. If the access address is determined in step 210 to fall within the I/O address space (addresses A01 -A09 or A30-A39 in the example of FIG. 5), the access operation is discarded in step 21 2 and a value of 0 is returned by the memory controller 20 to the CPU 1 2 on the data lines of external bus 1 4. More specifically, discarding the access operation means that the memory controller 20 does not address the I/O address space and thus does not access I/O device 32. This insures that
SUBSTITUTE SHEET (RULE 2 no undesired side effects can occur in I/O device 32.
If the access address is determined in step 21 0 not to fall within the I/O address space (i.e. the access address falls within the memory address space), the access operation is executed normally in step 204. Thus, a speculative load operation is permitted if the access address falls within the memory address space.
A second example of a computer system suitable for incorporation of the present invention is shown in FIG. 7. Like elements in FIGS. 1 and 7 have the same reference numerals. A computer system 300 has a multiprocessing architecture. CPU 1 2 accesses a memory 302 via a memory controller 20 and system bus 26. The memory 302 includes a dedicated area 31 0 and a shared area 31 2. The dedicated area 31 0 is accessible only by CPU 1 2. The shared area 31 2 is accessible by CPU 1 2 and by a CPU 320 connected to system bus 26 via a memory controller 322. One or more additional CPU's (not shown) may have access to shared area 31 2 .
The accessing of shared area 31 2 of memory 302 by a speculative access instruction being executed by CPU 1 2 may produce undesired side effects in CPU 320 or any other CPU that can access shared area 31 2. For example, accessing a particular location in shared area 31 2 may trigger an action in CPU 320. Because the instruction is speculative, such effects are undesired.
The procedure described above in connection with preventing undesired effects in an I/O device may be utilized to prevent speculative instructions from accessing the shared area 31 2. More particularly, the memory controller 20 contains a table of the addresses corresponding to shared area 31 2. When the DLD bit is set, indicating that the corresponding address was generated by a speculative instruction, the access address is compared with the addresses of shared area 31 2.
SUBSTITUTE SHEET (RULE 28) When the speculative access operation provides an address in shared area 31 2, that access operation is discarded. When the speculative access operation accesses an address in dedicated area 31 0, the access operation is executed. Also, when the DLD bit is not asserted, indicating a conventional instruction, the access operation is executed. Thus, speculative instructions are prevented from accessing shared area 31 2.
In general, the DLD bit may be used to prevent a speculative instruction from accessing a portion of a global address space. When the DLD bit is asserted, the speculative instruction may access a first address space but is prevented from accessing a second address space within the global address space. When the DLD bit is not asserted, indicating a conventional instruction, either the first address space or the second address space may be accessed. Thus, undesired side effects of speculative execution are prevented.
The invention has been described in connection with VLIW processor architectures. However, the invention may be utilized in any processor architecture that uses speculative instructions.
While there have been shown and described what are at present considered the preferred embodiments of the present invention, it will be obvious to those skilled in the art that various changes and modifications may be made therein without departing from the scope of the invention as defined by the appended claims.
SUBSTITUTE SHEET (RULE 28)

Claims

CLAIMSWhat is claimed is:
1 . A computer system comprising: a central processing unit (CPU) for executing conventional instructions and speculative instructions, said CPU including means responsive to an access operation by one of said instructions for generating a speculative instruction bit and a corresponding access address, said access address representing a location in a global address space which includes a first address space and a second address space, said speculative instruction bit being asserted when the corresponding access address is generated by a speculative instruction; and a memory controller coupled to a system bus and responsive to said access address and said speculative instruction bit for discarding said access operation when said speculative instruction bit is asserted and said access address is in said second address space and for otherwise accessing said address space, wherein said speculative instruction is prevented from accessing said second address space.
2. A computer system as defined in claim 1 wherein said CPU includes means for generating said speculative instruction bit on a unique signal line.
3. A computer system as defined in claim 1 wherein said memory controller includes a table containing addresses of said second address space and means for comparing said access address with the addresses of said second address space, said access operation being discarded
SUBSTITUTE SHEET (RULE 28) when said access address matches one of the addresses of said second address space and said speculative instruction bit is asserted.
4. A computer system as defined in claim 1 wherein said CPU includes a data cache and means for generating said speculative instruction bit when said access address bypasses said data cache.
5. A computer system as defined in claim 1 wherein said first address space comprises a memory address space and wherein said second address space comprises an I/O address space.
6. A computer system as defined in claim 5 further comprising a memory coupled to said system bus and mapped to said memory address space, and an I/O device coupled to said system bus and mapped to said I/O address space, wherein said speculative instruction is prevented from accessing said I/O device.
7. A computer system as defined in claim 1 wherein said first address space comprises a dedicated memory space and wherein said second address space comprises a shared memory space that may be accessed by another processor in a multiprocessor system.
8. A computer system as defined in claim 7 further comprising a memory coupled to said system bus, said memory having a dedicated area mapped to said dedicated memory space and a shared area mapped to said shared memory space, whereby said speculative instruction is prevented from accessing said shared memory space.
9. A method for protecting memory-mapped devices from side effects
SUBSTITUTE SHEET (RULE 28) of certain speculative instructions in a computer system including a central processing unit (CPU) for executing conventional instructions and speculative instructions, and a memory controller for accessing a global address space, including a first address space and a second address space, in response to an access address generated by said CPU, comprising the steps of: said CPU generating a speculative instruction bit and a corresponding access address in response to an access operation by one of said instructions; said CPU asserting said speculative instruction bit when the corresponding access address is generated by a speculative instruction; said memory controller discarding said access operation when said speculative instruction bit is asserted and said access address is in said second address space; and said memory controller performing said access operation when said speculative instruction bit is not asserted or when said access address is in said first address space.
1 0. A method as defined in claim 9 wherein said memory controller includes a table containing addresses of said second address space and wherein the step of discarding said access operation includes comparing said access address with the addresses of said second address space and discarding said access operation when said access address matches one of the addresses of said second address space and said speculative instruction bit is asserted.
1 1 . A computer system comprising: a memory coupled to a system bus; an I/O device coupled to said system bus;
SUBSTITUTE SHEET (RULE 28) a central processing unit (CPU) for executing non-speculative instructions and speculative instructions which may subsequently be discarded, said CPU including means responsive to an access operation by one of said instructions for generating a speculative instruction bit and a corresponding access address, said access address representing a location in a global address space which includes a memory address space and an I/O address space, said memory being mapped to said memory address space and said I/O device being mapped to said I/O address space, said speculative instruction bit being asserted when the corresponding access address is generated by a speculative instruction; and a memory controller coupled to said system bus and responsive to said access address and said speculative instruction bit for discarding said access operation when said speculative instruction bit is asserted and said access address is in said I/O address space and for performing said access operation when said speculative instruction bit is not asserted or when said access address is in said memory address space, wherein said speculative instruction is prevented from accessing said I/O device.
1 2. A computer system as defined in claim 1 1 wherein said memory controller includes a table containing addresses of said I/O address space and means for comparing said access address with the addresses of said I/O address space in said table, said access operation being discarded when said access address matches one of the addresses of said I/O address space and said speculative instruction bit is asserted.
SUBSTITUTE SHEET (RULE 28)
PCT/US1997/022643 1996-12-16 1997-12-12 Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions WO1998027485A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/767,449 1996-12-16
US08/767,449 US5864692A (en) 1996-12-16 1996-12-16 Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions

Publications (1)

Publication Number Publication Date
WO1998027485A1 true WO1998027485A1 (en) 1998-06-25

Family

ID=25079521

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1997/022643 WO1998027485A1 (en) 1996-12-16 1997-12-12 Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions

Country Status (2)

Country Link
US (1) US5864692A (en)
WO (1) WO1998027485A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1471421A1 (en) * 2003-04-24 2004-10-27 STMicroelectronics Limited Speculative load instruction control
EP1962184A1 (en) * 2007-02-22 2008-08-27 Samsung Electronics Co., Ltd. Processor and method of performing speculative load operations of the processor
EP3264317A1 (en) * 2016-06-29 2018-01-03 Arm Ltd Permission control for contingent memory access program instruction

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69430018T2 (en) * 1993-11-05 2002-11-21 Intergraph Corp Instruction cache with associative crossbar switch
US5819079A (en) * 1995-09-11 1998-10-06 Intel Corporation Instruction fetch on demand for uncacheable memory which avoids memory mapped I/O side effects in a processor with speculative instruction fetch
JPH10333977A (en) * 1997-05-28 1998-12-18 Oki Electric Ind Co Ltd Micro controller
US6145030A (en) * 1998-03-27 2000-11-07 Intel Corporation System for managing input/output address accesses at a bridge/memory controller
US6260190B1 (en) * 1998-08-11 2001-07-10 Hewlett-Packard Company Unified compiler framework for control and data speculation with recovery code
US6453463B1 (en) * 1999-06-07 2002-09-17 Sun Microsystems, Inc. Method and apparatus for providing finer marking granularity for fields within objects
US7089404B1 (en) 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US6282626B1 (en) * 1999-07-15 2001-08-28 3Com Corporation No stall read access-method for hiding latency in processor memory accesses
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6766447B1 (en) * 2000-01-25 2004-07-20 Dell Products L.P. System and method of preventing speculative reading during memory initialization
US6711671B1 (en) * 2000-02-18 2004-03-23 Hewlett-Packard Development Company, L.P. Non-speculative instruction fetch in speculative processing
US6738893B1 (en) * 2000-04-25 2004-05-18 Transmeta Corporation Method and apparatus for scheduling to reduce space and increase speed of microprocessor operations
US6895527B1 (en) * 2000-09-30 2005-05-17 Intel Corporation Error recovery for speculative memory accesses
US7707583B2 (en) * 2004-05-20 2010-04-27 Sap Ag Robust sharing of runtime systems
EP2115583A2 (en) * 2007-01-30 2009-11-11 Nema Labs Ab Speculative throughput computing
US8209509B2 (en) * 2008-05-13 2012-06-26 Atmel Corporation Accessing memory in a system with memory protection
US8825933B2 (en) 2011-11-30 2014-09-02 Andes Technology Corporation Bus apparatus with default speculative transactions and non-speculative extension
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US20140164738A1 (en) * 2012-12-07 2014-06-12 Nvidia Corporation Instruction categorization for runahead operation
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
EP2866138B1 (en) * 2013-10-23 2019-08-07 Teknologian tutkimuskeskus VTT Oy Floating-point supportive pipeline for emulated shared memory architectures
JP6726136B2 (en) 2017-06-22 2020-07-22 ルネサスエレクトロニクス株式会社 Data access device and access error notification method
GB2574270B (en) * 2018-06-01 2020-09-09 Advanced Risc Mach Ltd Speculation-restricted memory region type

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3742458A (en) * 1970-09-30 1973-06-26 Yokogawa Electric Works Ltd Memory protection system providing fixed, conditional and free memory portions corresponding to ranges of memory address numbers
US4087856A (en) * 1976-06-30 1978-05-02 International Business Machines Corporation Location dependence for assuring the security of system-control operations
WO1995032460A1 (en) * 1994-05-25 1995-11-30 Intel Corporation Guarded memory system and method
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
EP0735488A1 (en) * 1995-03-29 1996-10-02 Kabushiki Kaisha Toshiba Multi-program execution controlling apparatus and method
EP0742512A2 (en) * 1995-05-10 1996-11-13 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
US5708843A (en) * 1995-10-18 1998-01-13 Intel Corporation Method and apparatus for handling code segment violations in a computer system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3742458A (en) * 1970-09-30 1973-06-26 Yokogawa Electric Works Ltd Memory protection system providing fixed, conditional and free memory portions corresponding to ranges of memory address numbers
US4087856A (en) * 1976-06-30 1978-05-02 International Business Machines Corporation Location dependence for assuring the security of system-control operations
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
WO1995032460A1 (en) * 1994-05-25 1995-11-30 Intel Corporation Guarded memory system and method
EP0735488A1 (en) * 1995-03-29 1996-10-02 Kabushiki Kaisha Toshiba Multi-program execution controlling apparatus and method
EP0742512A2 (en) * 1995-05-10 1996-11-13 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1471421A1 (en) * 2003-04-24 2004-10-27 STMicroelectronics Limited Speculative load instruction control
US7406581B2 (en) 2003-04-24 2008-07-29 Stmicroelectronics Limited Speculative instruction load control
EP1962184A1 (en) * 2007-02-22 2008-08-27 Samsung Electronics Co., Ltd. Processor and method of performing speculative load operations of the processor
US8443174B2 (en) 2007-02-22 2013-05-14 Samsung Electronics Co., Ltd. Processor and method of performing speculative load operations of the processor
EP3264317A1 (en) * 2016-06-29 2018-01-03 Arm Ltd Permission control for contingent memory access program instruction
WO2018001643A1 (en) * 2016-06-29 2018-01-04 Arm Limited Permission control for contingent memory access program instruction
CN109313693A (en) * 2016-06-29 2019-02-05 Arm有限公司 For the admissions control of accidental memory access program instruction
US10824350B2 (en) 2016-06-29 2020-11-03 Arm Limited Handling contingent and non-contingent memory access program instructions making use of disable flag

Also Published As

Publication number Publication date
US5864692A (en) 1999-01-26

Similar Documents

Publication Publication Date Title
US5864692A (en) Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US8539485B2 (en) Polling using reservation mechanism
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
EP0747816B1 (en) Method and system for high performance multithread operation in a data processing system
US5875464A (en) Computer system with private and shared partitions in cache
JP3609603B2 (en) Method and system for monitoring performance within a multithreaded processor
US6484254B1 (en) Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
US6549985B1 (en) Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor
US9311095B2 (en) Using register last use information to perform decode time computer instruction optimization
US20140047219A1 (en) Managing A Register Cache Based on an Architected Computer Instruction Set having Operand Last-User Information
EP0130467A2 (en) Efficient trace method adaptable to multiprocessors
US5561774A (en) Parallel processing type processor system with trap and stall control functions
US20080046713A1 (en) Overriding processor configuration settings
WO1998027486A1 (en) Method and apparatus for storing and expanding programs for vliw processor architectures
US20140108768A1 (en) Computer instructions for Activating and Deactivating Operands
US6665708B1 (en) Coarse grained determination of data dependence between parallel executed jobs in an information processing system
US5694553A (en) Method and apparatus for determining the dispatch readiness of buffered load operations in a processor
US6820254B2 (en) Method and system for optimizing code using an optimizing coprocessor
Zhang URSIM reference manual
US7584464B2 (en) Software processing method and software processing system
US6775740B1 (en) Processor having a selector circuit for selecting an output signal from a hit/miss judgement circuit and data from a register file
US8886917B1 (en) Switching to core executing OS like codes upon system call reading greater than predetermined amount of data
JPH0744401A (en) Logic integrated circuit and its data processing system
EP0633521A1 (en) Microprocessor including circuit for generating signal used for tracing executed instruction stream
KR910007028B1 (en) Pipeline processing method in data processing system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP

AL Designated countries for regional patents

Kind code of ref document: A1

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

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