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 PDFInfo
- 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
Links
- 230000000694 effects Effects 0.000 title claims description 20
- 238000000034 method Methods 0.000 title claims description 7
- 230000004044 response Effects 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000010348 incorporation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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/1441—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent 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
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)
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)
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)
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)
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)
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 |
-
1996
- 1996-12-16 US US08/767,449 patent/US5864692A/en not_active Expired - Lifetime
-
1997
- 1997-12-12 WO PCT/US1997/022643 patent/WO1998027485A1/en active Application Filing
Patent Citations (6)
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)
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 |