US5812810A - Instruction coding to support parallel execution of programs - Google Patents
Instruction coding to support parallel execution of programs Download PDFInfo
- Publication number
- US5812810A US5812810A US08/270,185 US27018594A US5812810A US 5812810 A US5812810 A US 5812810A US 27018594 A US27018594 A US 27018594A US 5812810 A US5812810 A US 5812810A
- Authority
- US
- United States
- Prior art keywords
- instructions
- instruction
- computer
- memory
- execution
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Lifetime
Links
- 230000001419 dependent effect Effects 0.000 claims abstract description 27
- 230000008707 rearrangement Effects 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 16
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims 5
- 230000000717 retained effect Effects 0.000 abstract 1
- 230000008859 change Effects 0.000 description 31
- 238000012546 transfer Methods 0.000 description 16
- 238000004590 computer program Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 108091035710 E-box Proteins 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000011010 flushing procedure Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 239000010454 slate Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- 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 or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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 or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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 or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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 or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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 or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Definitions
- This invention relates generally to computer systems and more particularly to parallel processing of computer program instructions.
- computer systems generally include at least one central processing unit (CPU), a memory, and some type of mass storage device such as a disk drive.
- CPU central processing unit
- a typical computer operates by reading and executing program instructions which have been read from a mass storage device and placed in the memory. Through a combination of user interaction and program execution, the user is typically provided a desired result.
- a computer program is a series of instructions which are usually written by a person skilled in the art of computer programming.
- the programs are typically written in a so called high level programming language such as "C”, "Pascal”, or “Fortran”.
- High level programming languages are languages whose instructions are easily read and understood by a person with training in the particular language.
- a compiler which is written for one of several high level programming languages, reads the high level program instructions and converts them into so called machine instructions.
- Machine instructions are instructions that are readable and executable by a central processor (CPU). When a user invokes a program, the CPU will cause the compiled instructions to be read into the memory and executed.
- a branch occurs when a section of instructions needs to be skipped or when a section of instructions located in a different part of the program needs to be executed.
- An example of a situation where a section of code will be skipped is illustrated by the so called “goto" programming step.
- the "goto” is used to execute a set of instructions which does not immediately succeed the instruction which has just been executed.
- the instructions beginning at the destination of the goto instruction are executed in serial fashion.
- a typical central processing unit includes several processing stages which make up a so called pipelined system.
- the processing stages normally associated with a typical central processing unit include a so called Instruction cache (I-cache), one or more so called Execution boxes (E-box), a so called Cache box (C-box), and various logic circuits to control the flow and issue of program instructions from the I-cache to the E-boxes.
- I-cache Instruction cache
- E-box Execution boxes
- C-box so called Cache box
- the purpose of providing a piplelined system is to avoid the latency delays associated with completely processing a single instruction before fetching the next instruction. Processing a single instruction may require many clock cycles. Rather than have one clock cycle only be useful for processing one instruction, pipelined systems allow that the processing of instructions be broken down into smaller discrete operations providing for a portion of many instructions to be processed simultaneously. Generally, the discrete operations include reading instructions into the instruction cache, reading an instruction from the instruction cache and issuing the instruction to the execution box, and executing the instructions accordingly. This method of pipelining instructions results in a faster more efficient central processor.
- a major obstacle in the way of parallel execution of many instructions is the organizational structure of conventional computer programs. As compiled, conventional computer programs present a linearly or sequentially ordered set of instructions which must be executed in the order presented to insure production of a correct or expected result. Although the computer hardware may be capable in some respect of executing more than one instruction at a time, taking a group of sequentially dependent instructions and executing them in parallel most often produces incorrect results since one instruction is often dependent on the completion of the instruction sequentially preceding it.
- a method of operating a computer system includes the steps of adding a first type of information to a set of linearly dependent computer instructions with the added information corresponding to the order in which the computer instructions are arranged.
- the method further includes the step of rearranging the set of linearly dependent computer instructions into a set of non-linearly dependent instructions which permits reconstruction of the set linearly dependent set of instructions from the rearranged instructions.
- additional information is added to the rearranged instructions.
- the additional information is added to the rearranged instructions, they are provided to a computer processor which executes a several of the instructions simultaneously.
- general purpose computer programs can be executed by processors having parallel processing capabilities while achieving the same results or outputs as would be achieved by executing the general purpose program in a linear fashion, one instruction at a time. Additionally the speed at which the general purpose program is executed is substantially increased since the program can now be executed on a parallel processor which permits multiple issue and execution of computer instructions during a common processor cycle.
- a computer system includes means for providing from a first set of computer instructions arranged in a linearly dependent order, a second set of computer instructions.
- the second set of computer instructions is a nonlinearly dependent rearrangement of the first set of computer instructions.
- means are provided for executing several of the second set of computer instructions simultaneously.
- FIG. 1 is a block diagram of a computer system capable of executing several instructions during each process cycle.
- FIG. 2 is a diagram of the storage registers included in instruction monitor and control unit of the computer system in FIG. 1.
- FIG. 3 is a diagram of the data transfers which take place in the instruction monitor and control unit of FIG. 2 when a branch or jump instruction is committed.
- FIG. 4 is a diagram of the data transfers which take place in the instruction monitor and control unit of FIG. 2 when a exception or interrupt is committed.
- FIG. 5 is a diagram of the data transfers which take place in the instruction monitor and control unit of FIG. 2 when a return from exception or interrupt is performed.
- FIG. 6 is a block diagram of memory reference instruction controller of the computer system of FIG. 1.
- a computer system 10 is shown to include a program counter (PC) 12, an instruction cache (I-Cache) 14, a plurality of execution boxes (E-boxes) 18a-18n, a cache box (C-box) 13, memory ordering exception signal lines 11, and a memory 19.
- PC program counter
- I-Cache instruction cache
- E-boxes execution boxes
- C-box cache box
- exception signal lines 11 memory ordering exception signal lines 11
- memory 19 memory 19.
- Instruction monitor and control unit 16 and memory reference instruction controller 16 provide a computer having multiple E-boxes with the ability to execute general purpose computer programs while taking full advantage of the parallel nature of the computer.
- the instruction monitor and control unit 16 is off the critical path of moving instructions through the processor and therefore does not slow down processing.
- the memory reference instruction controller 15 is on the path of moving date through the processor 18 but it is not on the cache or memory read path. Instruction monitor and control unit 16 and memory reference instruction controller 15 will be described in detail below.
- the high level program will be used as an input to a compilation process whereby the instructions are translated into machine readable code and are then rearranged such that the linear dependency described above is alleviated.
- logical program This set of instructions, or so called “logical program”, is usually provided as the output of a so called compiler which translates high level computer programming language instructions into a set of executable or machine readable instructions.
- compiler which translates high level computer programming language instructions into a set of executable or machine readable instructions.
- the computer processor In order to guarantee that the program operate properly and produce expected results, the computer processor must execute the instructions in sequential order as supplied by the compiler.
- the physical program would be a totally random rearrangement of instructions. However, there are certain rules which must be adhered to during rearrangement which will ensure proper results during execution. During rearrangement, additional information is added to each computer instruction. The information added to each instruction is enough to allow reconstruction of the logical program from the physical program. According to one embodiment of the present invention, the information added to each computer instruction is a serial number representing the order in which the instructions should be executed.
- the serialization will be done using a modular numbering scheme. For example, if 10 bits are available to store the serial number for each instruction then the instructions would be numbered form 0 to 1023 in a repeating pattern. It should be noted that in any interval in the sequence of operations, that is less than 1/2 the modulus (in this case 512), the operations are linearly ordered and uniquely identified by the serial numbers. It follows therefore that in any interval of operations which includes less than 512 operations, the order of these instructions can be randomized and the correct sequential order could be determined by the associated serial number.
- serial number 6 For example, operation M which has a corresponding serial number of 4 has been reordered to the position previously occupied by instruction O (serial number 6). This represents a move of two positions which less than 1/2 the modulus or four. If a rearrangement of more than four positions was allowed, then it would not be possible to correctly determine the logical order of the instructions during execution.
- the serial numbers are used to determine whether the next instruction to be executed logically precedes or follows the instruction which has just been executed. The usefulness of this information will be discussed later. To determine whether a next instruction logically follows or precedes a current instruction, a binary add of the 2's compliment of the serial number of the present instruction and
- the serial number of the next instruction is performed. If the sign bit of the result indicates a positive result, then the next instruction logically follows the current instruction. Conversely, if the sign bit of the result is negative then the next instruction logically precedes the current instruction. So, for example, if the serial number of the current instruction had the value of 4 (100) and the serial number of the next instruction had the value of 2 (010), a binary add of 2 with the 2's compliment of 4 (100) would result in a binary value of 110 which represents a value of -2 thereby indicating that next instruction logically precedes the current instruction.
- serial numbers from 0-7 was chosen for simplicity of illustration and is not a limitation of the present invention.
- the only limitation on the range of serial numbers is the number of available bits for each instruction. For example, using serial numbers in the range of 0-1023 (or 10 bits) allows for rearrangement of instructions up to 512 positions from their original position in the logical program. This would allow considerable amount of rearrangement of instructions.
- a second piece of information which is added to each VLIW instruction is a so called "commit" number.
- the commit number is used during execution of the physical program to indicate how much of the actual logical program has been completed at a particular point during execution of the physical program. The importance of this information will be discussed later.
- VLIW which includes instructions having serial numbers 20, 23, and 26 will have a commit number of 20.
- an additional rule is established which must be applied during rearrangement of the logical program in order to guarantee proper logical results while executing the physical program.
- the rule is a so called "Register Data Precedence" (RDP) rule.
- RDP Registered Data Precedence
- an instruction needs data from a register which is supplied to the register from a previous instruction, the receiving instruction cannot be reordered in the physical program to occur prior to the instruction which places the required data in the register.
- RDP Registered Data Precedence
- a portion of a logical program may contain the instruction sequence as shown.
- the instruction sequence includes individual instructions 20 through 28. Instruction 20 is a so called "load” instruction. This instruction would cause the data at a memory address ADDR1 to be placed into register R1.
- Instruction 21 is a so called “add” instruction. This instruction would cause the data in registers R1 and R2 to be added together and place the result in register R3.
- Instruction 22 is so called “store” instruction. This instruction would cause the data in register R3 to be placed in memory at an address ADDR2. It can be seen that in order for the correct data to be stored in address ADDR2, instruction 22 should not be executed before instruction 21 which likewise should not be executed before instruction 20. As a result, a rearrangement of the instruction set in Table 1 may look like the instruction set in Table 3. It can be seen that instructions 20, 23, and 26 may be executed in parallel since they are mutually independent instructions. Likewise instructions 21 and 27 may be executed in parallel as well as instructions 22, 24 and 28.
- register data precedence only applies to references to registers and does not apply to data passing through memory.
- Memory references are here reordered arbitrarily with any reordering problems being handled by memory reference instruction controller 15 (FIG. 1). Additionally, branch instructions and memory references can be executed out of order and in accordance with the present invention, the proper logical result is assured.
- instruction monitor and control unit 50 is shown to further include three storage registers, a control transfer image register 51, an origin register 52, and a control package register 53.
- Control transfer image register 51 includes storage for all information associated with instructions which might cause a so called "control flow change".
- a control flow change instruction is a branch or jump instruction, exception, or interrupt. Branch and jump instructions are identified by decoding the instruction while exception conditions are detected by logic during the course of executing an instruction and are signalled back to the instruction monitor and control unit 16 (FIG. 1). An interrupt is signalled by an external agent such as an input/output device.
- register 51 is used to store information regarding the most relevant control flow change.
- a control flow change is identified when an opcode of a branch is executed and the conditions for branching are satisfied or when a jump is executed, or an exception is signalled on any instruction, or an interrupt is signalled.
- no control flow change is forced immediately (i.e., the value of the program counter is not changed immediately).
- instructions do not actually execute until they are committed. In the case of a branch or jump, this is important, since there may be an instruction that logically preceded the jump which has not yet been encountered (i.e. issued to an E-box).
- Register 51 stores the serial number, the so called “target program counter address” (target PC), and the so called “target serial number”, as well as the type of control flow change and a valid bit in storage locations 51a-51e respectively.
- the target program counter address is the address at which instructions will begin executing when the control flow operation is actually executed.
- the target serial number is the serial number associated with the instruction that is the logical target of the control flow change. This instruction and those that logically follow it should properly be executed.
- register 61 in particular the target PC 61b, is copied to origin register 62 and to the PC 64 while the target serial number 61c is copied to the start serial number field 63a of the control package which is made valid by setting its corresponding valid bit 63b.
- the control transfer image 61 is also made invalid by setting its corresponding valid bit 61e to 0.
- execution of the instructions now begins at the target PC previously loaded into the control transfer image and now also residing in the PC 64. In this way, a branch or jump is taken in what might be known as a conventional manner. If the control flow change was an exception or an interrupt, a similar procedure is followed.
- control flow change that has committed is an exception or interrupt
- the serial number 71a previously stored in the control transfer image to identify the precise logical point of exception or interrupt
- the type field 71d of the control transfer image are reported to the operating system.
- the contents of origin register 72 is also reported to the operating system.
- the information from the control transfer image i.e. the target PC 71b
- the target PC 71b in this case, will describe the entry point to an interrupt or exception service routine which will now be executing.
- the contents of control package register 73 have been made invalid by setting valid bit 73b to 0.
- Performing a jump or branch, exception, or interrupt can be thought of as moving to a different segment leg in the physical program and beginning execution from that point. At this point, execution of instructions begins at a new program counter location.
- each instruction encountered after beginning execution at the new PC address is not necessarily executed.
- each instruction's serial number is compared to the start serial number which has been stored in the control package register 53a. If the serial number of the instruction encountered is less than the serial number stored in control package register 53a and valid bit 53b is set to the value 1, then the instruction is ignored. This prevents executing instructions which logically should not properly be executed because they logically precede the entry point of the control flow change. Once all instructions having serial numbers which require that they be ignored have been exhausted, the valid bit 53b of control package register is set to zero. This condition is satisfied when the commit number of the currently executing group of instructions equals or exceeds (modularly) the value stored in the start serial field 53a.
- a control flow change is an exception or an interrupt as opposed to a branch or a jump
- the mechanism for transferring operation of instructions to a new location is the same a described above for a branch or a jump.
- the code executed will be the exception or interrupt handler which is usually part of the operating system. The exception or interrupt will perform its task, whatever that task is, and then execution will return to the exact point in the program where it left.
- the first consideration on returning from an exception or interrupt is the serial number of the instruction to return to.
- a value is placed back in the start serial number field 83a of the control package 83.
- An example of when to re-execute, upon return, the instruction which caused the interrupt or exception is a so called "page fault".
- a page fault can occur when an attempt is made to access a certain page of memory only to discover that the page is not in memory.
- the serial number which was reported to the operating system when the exception was detected is placed back in the start serial number field 83a. If the instruction which caused the exception is to be considered completed, the same procedure is followed however, the serial number that was reported is incremented by one (modularly) and placed in start serial number field 83a of the control package. In either event, the valid bit 83b is set to make this start serial number valid.
- Another value that was reported, when the exception was taken, and saved while the exception handler was operating, is the value from the origin register 72 (FIG. 4). That saved value is put back in the origin register 82 thereby restoring the origin register to the state it was in at the time the exception was taken.
- the origin register 62 gets loaded when a jump is actually performed (i.e. is committed). As can be seen in FIG. 3, the origin register 62 is loaded with the value from the target PC 61b. The origin register 62 may also be loaded when originally entering the program as if there were a return from exception or interrupt. If the origin register 62 had been loaded when originally entering the program, the value in the origin register would be the address of the physical entry point into the program.
- the origin must point to a location which precedes all uncommitted instructions.
- the reason for this rule is that if an exception occurs, which could happen at any instruction, the origin indicates where execution begins upon return from the exception. That location needs to be early enough so that every instruction that logically follows the one that caused the exception will be encountered. In fact, the instruction that caused the exception is the last committed instruction.
- the return from exception or interrupt is a matter of taking the information that was captured when the exception was taken and putting it back.
- the important thing is what address at which to start fetching instructions. That address is the origin that was reported to the operating system and then put back in the PC 84 (FIG. 5).
- the origin is the origin that was reported to the operating system and then put back in the PC 84 (FIG. 5).
- execution resumes it is possible to get another exception. So, in case another exception occurs, there must be a suitable value in the origin register.
- memory reference instruction controller 90 is shown to include write buffer 92, read buffer 94, compare units 96a and 96b and exception signal generator 98, coupled to compare units 96a and 96b via signal lines 91 and 93 respectively. Since, as described above, many instructions may be executing in parallel and further, may be executing out of order, it is necessary to be able to resolve memory references which occur out of order. That is, if for example a load instruction is done prior to a store instruction which intended to provide the information for the load instruction, it is imperative to sort out and make sure that the load instruction does actually obtain the correct data from memory. This function is provided by the memory reference instruction controller 90.
- the memory reference instruction controller 90 does not interfere with reads from the cache so that the address that is to be read, as soon as it's generated, goes to the cache which is followed by a data lookup and a data return to the E-box (FIG. 1).
- the back-end logic 90 does not interfere with these operations, it does monitor all that is going on, and receives a copy of the address supplied to the cache. Even in the event of a cache miss, reads can be done from memory with the back-end logic monitoring the reads and not interfering therewith.
- the memory reference instruction controller 90 is however on the path of and is active in any writes to memory or cache.
- the two primary pieces of logic included in the back-end logic are the read buffer 94 and the write buffer 92.
- the read buffer 94 monitors all loads (i.e. reads from cache or memory) that are executed by the processor.
- the read buffer is a memory with records allocated for the storage of information concerning load instructions.
- the read buffer 94 receives information that there was a load instruction in the form of the load instruction's serial number and the address to be accessed by the load instruction. This information is stored in a record within the read buffer 94. In fact, the read buffer 94 monitors and records every load that is executed.
- the read buffer Since the read buffer is of a limited size, it is necessary to be able to flush or empty the buffer on occasion to avoid overflowing the read buffer's memory. Flushing the read buffer can occur in either one of two ways. The first method of flushing the read buffer is accomplished using the commit numbers associated with instructions.
- the read buffer When there is control flow change, the read buffer is emptied. At that point, none of the information in the read buffer is needed. The reason for this is, at that point, the only thing that is in the read buffer is the uncommitted instructions. Since execution has "jumped" to a new location, those instructions in the read buffer are instructions that never should have been executed in the first place so they can be discarded without consequence.
- Write buffer 92 actually has a similar function to read buffer 94. All store instructions (i.e., writes to cache or memory) actually go to the back-end logic, they do not go directly to the cache or to the memory. During each store instruction, the serial number and the address of the memory location along with the data to be written is supplied to the write buffer. So, the write buffer has all of the information needed to later place the information in memory.
- the write buffer records this information in a way which is very similar to manner in which the read buffer records its information. That is, the write buffer is a memory with a limited amount of storage for recording information about store instructions. Every store that is executed, is recorded in an entry in the write buffer. Like the read buffer, the write buffer has limited storage and must be flushed periodically. Also like the read buffer, the write buffer is flushed when store instructions are committed but, here, the instructions are not simply discarded.
- the write buffer when the instruction is committed, the data from the store instruction is actually placed in the memory or in the cache.
- a particular store instruction has committed, it is known that the write to memory should really take place and that is when it is written into memory or cache, and not before. Basically, any stores to memory are held in the write buffer until it is known that the operation should actually be performed.
- the commit number associated with them gets transmitted to the write buffer and compared with the serial numbers of all the records stored in the write buffer. Every bufferred write instruction that has a serial number equal to, or preceding, the commit number transmitted from the E-boxes is released to memory.
- the bufferred writes are released to memory in order, by serial number. Since the writes are released to memory in logical order, different writes to the same address that were logically supposed to be in a certain order, but were physically executed in the reverse order are sorted out. That is, the instructions went into the write buffer in backwards order, but in fact, they were sorted into the correct order when they finally went into memory.
- a compare operation is performed for every load instruction and for every store instruction. For every load operation a compare is performed by compare logic 96b between the current load instruction and everything that is stored in the write buffer. The compare is performed to find cases when the address for the load instruction matches an address that is stored in the write buffer. A match implies a store to this address was performed recently and the processor is trying to do a load from the same address. Once an address match is found, the serial numbers of the matching instructions are examined to see if the store in the write buffer is logically earlier than the load that is currently being executed. If the store in the write buffer is logically earlier, the new load instruction that is being processed and being stored in the read buffer should be returning the data that was stored via the store instruction with the earlier serial number.
- a memory ordering exception is a special type of exception that is declared by asserting a signal on dedicated signal line 11 (FIG. 1) and is used to indicate that memory ordering exception has occurred.
- Signal line 11 is actually a plurality of signal lines which carry the serial number of the instruction which caused the exception, back to the instruction monitor and control unit 16 (FIG. 1).
- the serial number of the instruction causing the exception is transmitted from compare units 96a or 96b via signal lines 91 or signal lines 93 respectively (depending on whether a load or store instruction caused the exception) to exception signal generator 98.
- Exception signal generator in turn passes the serial number of the exception causing instruction, along with signals indicating that an exception has occurred, back to instruction monitor and control unit 16 (FIG. 1).
- the load instruction is the causing instruction. Declaring this exception puts it in competition with all the other control flow changes that may have been declared. As far as the processor is concerned, there is nothing special about this exception so it is arbitrated in the instruction monitor and control unit as described above with other control flow changes.
- the causing instruction i.e. the load in this case
- the load instruction In order for the exception to be committed, the causing instruction (i.e. the load in this case) must have committed. That is, when load instruction commits, the store instruction that has the data which is the object of the load instruction is logically earlier so it must have committed previously. Therefore, the data has gone to memory and the cache. Now, when the load is executed over again, it will get the correct data. By taking the exception on the load, memory and the cache are forced to be brought up to date enough such that the load can get the correct data.
- each store instruction that is issued is recorded in the write buffer. Additionally, every store instruction must be compared to everything that is stored the read buffer. The compare is done in order to determine if there are load instructions in the read buffer that represent loads that are logically later than the store instruction presently executing. Like load instructions, a compare is done to determine if there is an address match between the currently executing store instruction and any load instruction in the read buffer. If there is a match, the serial number of the store instruction is compared to the serial number of the matching load instruction. If the serial number of the load instruction is logically later than the serial number of the store instruction, the load instruction could not possibly have returned the correct data since the store instruction which was to have placed the data in memory for the load instruction is just now executing.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
Description
TABLE 1 ______________________________________ Logical Program ______________________________________ 1 STOR ADDR20, R0 2 ADD R0, R1, R20 . . . 20 LD ADDR1, R1 21 ADD R1, R2, R3 22 STOR ADDR2, R3 23 LD ADDR3, R5 24 ADD R5, R6, R7 25 STOR ADDR4, R7 26 LD ADDR5, R9 27 ADD R9, R10, R11 28 STOR ADDR6, R11 . . . n STOR ADDR50, R10 ______________________________________
TABLE 2 ______________________________________ 1INSTRUCTION A 0 INSTRUCTION C 2 2INSTRUCTION B 1 INSTRUCTION E 4 3 INSTRUCTION C 2INSTRUCTION B 1 4 INSTRUCTION D 3INSTRUCTION A 0 5 INSTRUCTION E 4 INSTRUCTION D 3 6 INSTRUCTION F 5 INSTRUCTION H 7 7 INSTRUCTION G 6 INSTRUCTION G 6 8 INSTRUCTION H 7 INSTRUCTION L 3 9 INSTRUCTION I 0 INSTRUCTION F 5 10INSTRUCTION J 1INSTRUCTION J 1 11 INSTRUCTION K 2 INSTRUCTION I 0 12 INSTRUCTION L 3 INSTRUCTION K 2 13 INSTRUCTION M 4 INSTRUCTION N 5 14 INSTRUCTION N 5 INSTRUCTION P 7 15 INSTRUCTION O 6 INSTRUCTION M 4 16 INSTRUCTION P 7 INSTRUCTION O 6 17INSTRUCTION Q 0 INSTRUCTION S 2 18INSTRUCTION R 1INSTRUCTION R 1 19 INSTRUCTION S 2INSTRUCTION Q 0 20 INSTRUCTION T 3 INSTRUCTION T 3 21 INSTRUCTION U 4 INSTRUCTION V 5 22 INSTRUCTION V 5 INSTRUCTION U 4 23 INSTRUCTION W 6 INSTRUCTION W 6 24 INSTRUCTION X 7 INSTRUCTION X 7 25INSTRUCTION Y 0INSTRUCTION Z 1 26INSTRUCTION Z 1 INSTRUCTION BB 3 27 INSTRUCTION AA 2INSTRUCTION Y 0 28 INSTRUCTION BB 3 INSTRUCTION AA 2 29 INSTRUCTION CC 4 INSTRUCTION DD 5 30 INSTRUCTION DD 5 INSTRUCTION FF 7 31 INSTRUCTION EE 6 INSTRUCTION CC 4 32 INSTRUCTION FF 7 INSTRUCTION EE 6 ______________________________________
TABLE 3 ______________________________________ Physical Program Serial # Instruction Commit # ______________________________________ . . . 20 LD ADDR1, R1 20 23 LD ADDR3, R5 20 26 LD ADDR5, R9 20 A 21 ADD R1, R2, R3 21 27 ADD R9, R10, R11 21 22 STOR ADDR2, R3 23 24 ADD R5, R6, R7 24 B 28 STOR ADDR6, R11 24 25 STOR ADDR4, R7 28 . . . ______________________________________
Claims (14)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/270,185 US5812810A (en) | 1994-07-01 | 1994-07-01 | Instruction coding to support parallel execution of programs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/270,185 US5812810A (en) | 1994-07-01 | 1994-07-01 | Instruction coding to support parallel execution of programs |
Publications (1)
Publication Number | Publication Date |
---|---|
US5812810A true US5812810A (en) | 1998-09-22 |
Family
ID=23030269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/270,185 Expired - Lifetime US5812810A (en) | 1994-07-01 | 1994-07-01 | Instruction coding to support parallel execution of programs |
Country Status (1)
Country | Link |
---|---|
US (1) | US5812810A (en) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001048598A1 (en) * | 1999-12-23 | 2001-07-05 | Intel Corporation | Mechanism for handling failing load check instructions |
US20010043610A1 (en) * | 2000-02-08 | 2001-11-22 | Mario Nemirovsky | Queueing system for processors in packet routing operations |
US20010052053A1 (en) * | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
US6334139B1 (en) * | 1997-06-12 | 2001-12-25 | Mitsubishi Denki Kabushiki Kaisha | Agent system |
US20020016883A1 (en) * | 2000-02-08 | 2002-02-07 | Enrique Musoll | Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memory management |
US20020018486A1 (en) * | 2000-02-08 | 2002-02-14 | Enrique Musoll | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrrupts |
US20020021707A1 (en) * | 2000-02-08 | 2002-02-21 | Nandakumar Sampath | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
US20020037011A1 (en) * | 2000-06-23 | 2002-03-28 | Enrique Musoll | Method for allocating memory space for limited packet head and/or tail growth |
US20020039368A1 (en) * | 2000-02-08 | 2002-04-04 | Enrique Musoll | Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing |
US20020054603A1 (en) * | 2000-02-08 | 2002-05-09 | Enrique Musoll | Extended instruction set for packet processing applications |
US20020071393A1 (en) * | 2000-02-08 | 2002-06-13 | Enrique Musoll | Functional validation of a packet management unit |
US20020083173A1 (en) * | 2000-02-08 | 2002-06-27 | Enrique Musoll | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US20030110417A1 (en) * | 2001-12-10 | 2003-06-12 | Adrian Jascau | Method of executng a program on a computer, and computer program product |
US20040015878A1 (en) * | 2001-04-10 | 2004-01-22 | Fujitsu Limited | Reordering controller, reordering method and storage apparatus |
USRE38679E1 (en) * | 1996-02-07 | 2004-12-28 | Mitsubishi Denki Kabushiki Kaisha | Data processor and method of processing data |
US20050138607A1 (en) * | 2003-12-18 | 2005-06-23 | John Lu | Software-implemented grouping techniques for use in a superscalar data processing system |
US20060036705A1 (en) * | 2000-02-08 | 2006-02-16 | Enrique Musoll | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7032226B1 (en) | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US20080162884A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Computer processing system employing an instruction schedule cache |
US20080201556A1 (en) * | 2007-02-16 | 2008-08-21 | Via Technologies, Inc. | Program instruction rearrangement methods in computer |
US7502876B1 (en) | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
US20100145969A1 (en) * | 2008-12-05 | 2010-06-10 | Stmicroelectronics (Beijing) R&D Co., Ltd. | Reduced power load/store queue searching mechanism |
EP2202637A1 (en) * | 2008-12-25 | 2010-06-30 | STMicroelectronics (Beijing) R&D Co. Ltd. | Reduced power load/store queue searching mechanism |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
US5021945A (en) * | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
US5202975A (en) * | 1990-06-11 | 1993-04-13 | Supercomputer Systems Limited Partnership | Method for optimizing instruction scheduling for a processor having multiple functional resources |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
US5261067A (en) * | 1990-04-17 | 1993-11-09 | North American Philips Corp. | Method and apparatus for providing synchronized data cache operation for processors in a parallel processing system |
-
1994
- 1994-07-01 US US08/270,185 patent/US5812810A/en not_active Expired - Lifetime
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
US5021945A (en) * | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
US5261067A (en) * | 1990-04-17 | 1993-11-09 | North American Philips Corp. | Method and apparatus for providing synchronized data cache operation for processors in a parallel processing system |
US5202975A (en) * | 1990-06-11 | 1993-04-13 | Supercomputer Systems Limited Partnership | Method for optimizing instruction scheduling for a processor having multiple functional resources |
Non-Patent Citations (8)
Title |
---|
Hennessy et al "Computer Architecture A Quantitative Approach", 1990, p. 264. |
Hennessy et al Computer Architecture A Quantitative Approach , 1990, p. 264. * |
Jefferson, Virtual Time, 1985, pp. 404 425. * |
Jefferson, Virtual Time, 1985, pp. 404-425. |
Lightner et al., The Metaflow Lightning Chipset, 1991, pp. 13 18. * |
Lightner et al., The Metaflow Lightning Chipset, 1991, pp. 13-18. |
Popescu et al., The Metaflow Architecture, 1991, pp. 10 13, 63 73. * |
Popescu et al., The Metaflow Architecture, 1991, pp. 10-13, 63-73. |
Cited By (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE38679E1 (en) * | 1996-02-07 | 2004-12-28 | Mitsubishi Denki Kabushiki Kaisha | Data processor and method of processing data |
US6334139B1 (en) * | 1997-06-12 | 2001-12-25 | Mitsubishi Denki Kabushiki Kaisha | Agent system |
GB2375201A (en) * | 1999-12-23 | 2002-11-06 | Intel Corp | Mechanism for handling failing load check instructions |
WO2001048598A1 (en) * | 1999-12-23 | 2001-07-05 | Intel Corporation | Mechanism for handling failing load check instructions |
GB2375201B (en) * | 1999-12-23 | 2004-08-25 | Intel Corp | Mechanism for handling failing load check instructions |
US6598156B1 (en) | 1999-12-23 | 2003-07-22 | Intel Corporation | Mechanism for handling failing load check instructions |
US20060159104A1 (en) * | 2000-02-08 | 2006-07-20 | Mario Nemirovsky | Queueing system for processors in packet routing operations |
US7551626B2 (en) | 2000-02-08 | 2009-06-23 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US8081645B2 (en) | 2000-02-08 | 2011-12-20 | Mips Technologies, Inc. | Context sharing between a streaming processing unit (SPU) and a packet management unit (PMU) in a packet processing environment |
US20020054603A1 (en) * | 2000-02-08 | 2002-05-09 | Enrique Musoll | Extended instruction set for packet processing applications |
US7139901B2 (en) | 2000-02-08 | 2006-11-21 | Mips Technologies, Inc. | Extended instruction set for packet processing applications |
US20020083173A1 (en) * | 2000-02-08 | 2002-06-27 | Enrique Musoll | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7877481B2 (en) | 2000-02-08 | 2011-01-25 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US20020021707A1 (en) * | 2000-02-08 | 2002-02-21 | Nandakumar Sampath | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
US7765554B2 (en) | 2000-02-08 | 2010-07-27 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US20020018486A1 (en) * | 2000-02-08 | 2002-02-14 | Enrique Musoll | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrrupts |
US7715410B2 (en) | 2000-02-08 | 2010-05-11 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US20020016883A1 (en) * | 2000-02-08 | 2002-02-07 | Enrique Musoll | Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memory management |
US20010052053A1 (en) * | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
US7649901B2 (en) | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US20060036705A1 (en) * | 2000-02-08 | 2006-02-16 | Enrique Musoll | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7155516B2 (en) | 2000-02-08 | 2006-12-26 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7042887B2 (en) | 2000-02-08 | 2006-05-09 | Mips Technologies, Inc. | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
US7058064B2 (en) | 2000-02-08 | 2006-06-06 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US7058065B2 (en) | 2000-02-08 | 2006-06-06 | Mips Tech Inc | Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing |
US7644307B2 (en) | 2000-02-08 | 2010-01-05 | Mips Technologies, Inc. | Functional validation of a packet management unit |
US7076630B2 (en) | 2000-02-08 | 2006-07-11 | Mips Tech Inc | Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management |
US20060153197A1 (en) * | 2000-02-08 | 2006-07-13 | Nemirovsky Mario D | Queueing system for processors in packet routing operations |
US20010043610A1 (en) * | 2000-02-08 | 2001-11-22 | Mario Nemirovsky | Queueing system for processors in packet routing operations |
US7082552B2 (en) | 2000-02-08 | 2006-07-25 | Mips Tech Inc | Functional validation of a packet management unit |
US20020039368A1 (en) * | 2000-02-08 | 2002-04-04 | Enrique Musoll | Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing |
US20020071393A1 (en) * | 2000-02-08 | 2002-06-13 | Enrique Musoll | Functional validation of a packet management unit |
US20070256079A1 (en) * | 2000-02-08 | 2007-11-01 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7165257B2 (en) | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7197043B2 (en) | 2000-02-08 | 2007-03-27 | Mips Technologies, Inc. | Method for allocating memory space for limited packet head and/or tail growth |
US20070168748A1 (en) * | 2000-02-08 | 2007-07-19 | Mips Technologies, Inc. | Functional validation of a packet management unit |
US7280548B2 (en) | 2000-02-08 | 2007-10-09 | Mips Technologies, Inc. | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
US7661112B2 (en) | 2000-06-23 | 2010-02-09 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US7065096B2 (en) | 2000-06-23 | 2006-06-20 | Mips Technologies, Inc. | Method for allocating memory space for limited packet head and/or tail growth |
US7502876B1 (en) | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
US20020037011A1 (en) * | 2000-06-23 | 2002-03-28 | Enrique Musoll | Method for allocating memory space for limited packet head and/or tail growth |
US20060225080A1 (en) * | 2000-06-23 | 2006-10-05 | Mario Nemirovsky | Methods and apparatus for managing a buffer of events in the background |
US7032226B1 (en) | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
WO2002082278A1 (en) * | 2001-04-04 | 2002-10-17 | Mips Technologies, Inc. | Cache write bypass system |
US20040015878A1 (en) * | 2001-04-10 | 2004-01-22 | Fujitsu Limited | Reordering controller, reordering method and storage apparatus |
US20030110417A1 (en) * | 2001-12-10 | 2003-06-12 | Adrian Jascau | Method of executng a program on a computer, and computer program product |
US7757230B2 (en) * | 2001-12-10 | 2010-07-13 | Aladdin Europe Gmbh | Method of executing a program on a computer, and computer program product |
US20050138607A1 (en) * | 2003-12-18 | 2005-06-23 | John Lu | Software-implemented grouping techniques for use in a superscalar data processing system |
US7401328B2 (en) * | 2003-12-18 | 2008-07-15 | Lsi Corporation | Software-implemented grouping techniques for use in a superscalar data processing system |
US20080162884A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Computer processing system employing an instruction schedule cache |
US7454597B2 (en) | 2007-01-02 | 2008-11-18 | International Business Machines Corporation | Computer processing system employing an instruction schedule cache |
US8082421B2 (en) * | 2007-02-16 | 2011-12-20 | Via Technologies, Inc. | Program instruction rearrangement methods in computer |
US20080201556A1 (en) * | 2007-02-16 | 2008-08-21 | Via Technologies, Inc. | Program instruction rearrangement methods in computer |
US20100145969A1 (en) * | 2008-12-05 | 2010-06-10 | Stmicroelectronics (Beijing) R&D Co., Ltd. | Reduced power load/store queue searching mechanism |
US8291200B2 (en) | 2008-12-05 | 2012-10-16 | Stmicroelectronics (Beijing) R&D Co., Ltd. | Reduced power load/store queue searching by comparing subsets of address bits and enabling second subset comparison based on first subset comparison result |
EP2202637A1 (en) * | 2008-12-25 | 2010-06-30 | STMicroelectronics (Beijing) R&D Co. Ltd. | Reduced power load/store queue searching mechanism |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5812810A (en) | Instruction coding to support parallel execution of programs | |
US5717883A (en) | Method and apparatus for parallel execution of computer programs using information providing for reconstruction of a logical sequential program | |
CN101495968B (en) | Hardware acceleration for a software transactional memory system | |
US5781752A (en) | Table based data speculation circuit for parallel processing computer | |
US5297281A (en) | Multiple sequence processor system | |
US3735363A (en) | Information processing system employing stored microprogrammed processors and access free field memories | |
US4982402A (en) | Method and apparatus for detecting and correcting errors in a pipelined computer system | |
KR100334479B1 (en) | Methods and apparatus for reordering load operations in a computer processing system | |
US7219185B2 (en) | Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache | |
JP2937485B2 (en) | Method and apparatus for detecting and executing traps in a superscalar processor | |
US20080077782A1 (en) | Restoring a register renaming table within a processor following an exception | |
US5590309A (en) | Storage protection cache and backing storage having system control element data cache pipeline and storage protection bits in a stack array with a stack directory for the stack array | |
EP0565705B1 (en) | Out of order job processing method and apparatus | |
US8332590B1 (en) | Multi-stage command processing pipeline and method for shared cache access | |
JPS5991547A (en) | Collector | |
JPH0668726B2 (en) | Register management system | |
JPS60179851A (en) | Data processor | |
GB2443298A (en) | Cache memory with tag memory bypass circuit | |
US5832202A (en) | Exception recovery in a data processing system | |
US6829719B2 (en) | Method and apparatus for handling nested faults | |
US3603934A (en) | Data processing system capable of operation despite a malfunction | |
JPS58121457A (en) | Information processing device | |
JPH1040103A (en) | Information processing system having register/remapping structure and its method | |
US20050262389A1 (en) | Stack type snapshot buffer handles nested interrupts | |
JP2783285B2 (en) | Information processing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: DIGITAL EQUIPMENT CORPORATION, MASSACHUSETTS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SAGER, DAVID J.;REEL/FRAME:007087/0394 Effective date: 19940622 |
|
AS | Assignment |
Owner name: ACCO USA, INC., ILLINOIS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DRZEWIECKI, JAMES J.;D'AMORE, MICHAEL J.;REEL/FRAME:007134/0125 Effective date: 19940815 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: COMPAQ INFORMATION TECHNOLOGIES GROUP, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DIGITAL EQUIPMENT CORPORATION;COMPAQ COMPUTER CORPORATION;REEL/FRAME:012447/0903;SIGNING DATES FROM 19991209 TO 20010620 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: CHANGE OF NAME;ASSIGNOR:COMPAQ INFORMANTION TECHNOLOGIES GROUP LP;REEL/FRAME:014102/0224 Effective date: 20021001 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |