WO1998054640A1 - Unroll of instructions in a micro-controller - Google Patents
Unroll of instructions in a micro-controller Download PDFInfo
- Publication number
- WO1998054640A1 WO1998054640A1 PCT/SE1998/000978 SE9800978W WO9854640A1 WO 1998054640 A1 WO1998054640 A1 WO 1998054640A1 SE 9800978 W SE9800978 W SE 9800978W WO 9854640 A1 WO9854640 A1 WO 9854640A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- instruction
- generating
- address field
- unroll
- pos
- Prior art date
Links
- 238000006467 substitution reaction Methods 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims description 24
- 238000001514 detection method Methods 0.000 claims 2
- 230000004913 activation Effects 0.000 description 8
- 238000001994 activation Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000003213 activating effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000009849 deactivation Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/3017—Runtime instruction translation, e.g. macros
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
Definitions
- the present invention relates to execution of instructions in a processor, and more particularly to apparatus and methods for increasing execution speed in a programmable processor by avoiding the occurrence of instruction branching within programs and micro-programs. It is known that one way of improving overall instruction execution speed of a programmable processor is to prefetch the instructions before they are needed for execution, and to store them in a local memory device from which they will be retrieved when needed. Another known technique for speeding overall instruction execution speed is to use pipelined instruction execution, in which the execution of each instruction is divided up into a series of sequential steps. This permits a higher utilization of hardware resources in the processor, because during the time allotted to each step, any resources not being used by a first instruction may be utilized for performing one of the steps of a subsequent instruction. Consequently, overall instruction throughput is higher than it would be if each instruction could not begin any part of its execution until a preceding instruction had entirely completed its execution.
- a first template instruction is stored, and a generating apparatus is used to generate a predetermined number of instructions, wherein each generated instruction is based on the first template instruction.
- the generated instructions are supplied to the processor when the generating apparatus is activated, and instructions received from an alternative instruction source are supplied to the processor when the generating apparatus is not activated.
- a substitute address field is stored, and the step of generating each instruction includes substituting the substitute address field in place of an address field in the first template instruction.
- the stored substitute address field is adjusted (e.g., incremented or decremented) after generating each instruction.
- the step of generating each instruction includes substituting the substitute address field in place of an address field in the first template instruction only if a substitution control signal is asserted.
- a first template instruction is stored, and a second template instruction is stored.
- a generating apparatus is used to generate a number of instructions including a first instruction based on the first template instruction and a second instruction based on the second template instruction. The generating apparatus is repeatedly operated until a predetermined number of instructions have been generated.
- a first substitution control signal is stored, and the generating apparatus substitutes the substitute address field in place of an address field in the first template instruction only if the first substitution control signal is asserted.
- the generating apparatus generates each second instruction by substituting the substitute address field in place of an address field in the second template instruction.
- the stored substitute address field is adjusted (e.g., incremented or decremented) after generating each first instruction and after generating each second instruction.
- first and second substitution control signals are stored.
- the generating apparatus substitutes the substitute address field in place of an address field in the first template instruction only if the first substitution control signal is asserted, and substitutes the substitute address field in place of an address field in the second template instruction only if the second substitution control signal is asserted.
- FIG. 1 is a block diagram showing the pertinent components of a microprogrammed processor in accordance with an embodiment of the invention
- FIG. 2 is a block diagram of an embodiment of an unroll unit in accordance with the invention
- FIG. 3 is a block diagram showing, in greater detail, some components of the exemplary embodiment of the unroll unit in accordance with the invention
- FIG. 4 is a block diagram showing, in greater detail, some components of the exemplary embodiment of the unroll unit in accordance with the invention.
- FIG. 5 illustrates an exemplary microinstruction format for use with the invention
- FIG. 6 illustrates a three word microinstruction format for activating an unroll unit in accordance with an embodiment of the invention
- FIGS. 7a and 7b illustrate, respectively, a block diagram of an exemplary processor architecture, and a flowchart for utilizing an unroll unit to perform a data move operation;
- FIGS. 8a and 8b illustrate, respectively, a block diagram of an exemplary processor architecture, and a flowchart for utilizing an unroll unit to perform a data transfer operation
- FIGS. 9a and 9b illustrate, respectively, a block diagram of an exemplary processor architecture, and a flowchart for utilizing an unroll unit to perform a data search operation.
- the invention is embodied in an apparatus and techniques for dynamically generating a sequence of program instructions that would otherwise have been coded as a loop (i.e., a code segment including one or more conditional branch instructions that cause execution of the loop to be repeated until a condition is satisfied) .
- a loop i.e., a code segment including one or more conditional branch instructions that cause execution of the loop to be repeated until a condition is satisfied.
- the invention is applied to eliminating loops that would otherwise occur in the microcode that interprets assembly language instructions in a microprogrammed architecture.
- inventive techniques described herein may readily applied to eliminating program loops in other types of processor architectures at levels that may or may not be characterized as a microprogramming level.
- the architecture that is presented to the programmer is one that is controlled by a series of assembly language instructions.
- each assembly language instruction 101 is actually translated by an assembler to microcode translator 103 into a sequence of one or more microinstructions 105.
- Each microinstruction is converted into a sequence of control signals 109 by a microcode decoder 107.
- the control signals 109 determine the operation of the various microprocessor hardware resources 111.
- Such resources may include such components as an arithmetic logic unit (ALU) , assembly language program counter, address registers, status registers, and various addressable data registers.
- ALU arithmetic logic unit
- This list is by no means intended to be exhaustive, but merely illustrative of the types of well-known processor- related components that might be included in the microprocessor hardware resources 111. The design and selection of such components to effect useful processor architectures is well-known, and is therefore not described here in detail .
- the set of microinstructions for emulating the processor architecture seen by the programmer is stored in an addressable microcode storage unit 113, which may be, for example, a read only memory (ROM) , or other suitable memory device.
- ROM read only memory
- the microcode storage unit 113 is shown to be part of the assembler to microcode translator 103. It will be recognized, however, that the processor need not be physically embodied in this manner.
- Part of the operation of the assembler to microcode translator 103 is to determine a microaddress for retrieving a next microinstruction from the microcode storage unit 113.
- this microaddress may be based, in part, on an operation code (not shown) that is included in one field of an assembler instruction 101.
- a next microaddress address may also be a function of one or more fields in a presently executed microinstruction.
- Such conditions may include, for example, whether an overflow condition has been generated by an ALU in the microprocessor hardware resources 111, whether a "1" has been shifted out of a shift register, whether a zero-re"sult has been generated at the ALU output, and the like. Again, this list is merely intended to be illustrative, and is not to be construed as exhaustive.
- a particular assembler instruction 101 will designate a same operation to be repeated for a set number of times and/or for a range of source and/or destination addresses. In conventional processors, this would require that one or more microinstructions be written as a loop that includes a branch back to a loop entry point . As explained in the BACKGROUND section of this disclosure, this branching within the microcode can be detrimental to processor performance.
- the architecture of the processor may include an execution pipeline that allows parts of microinstructions to be executed in parallel, thereby making more efficient use of the microprocessor hardware resources 111. Any branch operation in the pipeline can cause the pipeline to have to be reloaded.
- the processor cannot perform useful work (i.e., useful from the point of view of producing tangible results in connection with assembler instructions) during the time interval that it takes to reload the pipeline, the overall throughput of the processor is reduced whenever a loop of microinstructions is to be repeated.
- this problem is eliminated by the inclusion of an unroll unit 117 in the assembler to microcode translator 103.
- the unroll unit 117 dynamically generates a sequence of microinstructions that cause the microprocessor hardware resources 111 to execute a desired operation that would otherwise have been implemented by a microcode loop.
- a multiplexer 119 is also provided, having one input coupled to the output of the microcode storage unit 113, and another input coupled to the output of the unroll unit 117.
- the output of the multiplexer 119 supplies microinstructions to the microcode decoder 107.
- the multiplexer 119 is controlled so that the output of the unroll unit 117 will appear at the output of the multiplexer 119.
- the multiplexer 119 is controlled to route the output of the microcode storage unit 113 to the microcode decoder 107.
- the sequence of microinstructions generated by the unroll unit 117 is characterized by the fact that it does not include any loops. Rather, the sequence of microinstructions will continue to be generated and executed until either a predetermined number of microinstructions has been generated, or alternatively until a predetermined condition is satisfied. Because loops are eliminated, even if the architecture of the processor includes a microinstruction pipeline or other microinstruction queuing mechanism, the need for reloading the pipeline or queue as a result of a microinstruction branch back to a loop entry point will be avoided.
- the unroll unit 117 includes three registers, the contents of which may be used as a basis for generating up to three different microinstruction words to be supplied to the by the unroll unit 117 to the multiplexer 119.
- the three registers are the POS 1 register 201, the POS 2 register 203 and the POS 3 register 205.
- Microinstructions typically include one or more fields for designating one of a plurality of addressable sources and/or destinations.
- the microprocessor hardware resources 111 include a bank of addressable registers, and each microinstruction may designate one of the registers (a "destination register") for receiving a data item, and up to two of the registers ("source registers") for supplying data items to be used during a specified micro-operation.
- the two microinstruction fields for designating source registers are herein referred to as SrcA and SrcB fields.
- the microinstruction field for designating a destination register is herein referred to as a Dest field.
- the unroll unit 117 further includes an unroll register, herein designated UNRREG 207.
- the UNRREG 207 is initialized with a starting register address.
- the data appearing at the output of the UNRREG 207 may be inserted into any of the SrcA, SrcB and Dest fields of any microinstructions based on the contents of the POS 1 register 201 or the POS 2 register 203.
- substitution of the UNRREG 207 value for the value actually appearing in a field stored in the POS 1 register 201 or the POS 2 register 203 is performed by POS 1 substitution logic 209 and the POS 2 substitution logic 211, respectively, under the control of bits stored in a POS 1 control register 213 and a POS 2 control register 215, respectively.
- there is no substitution logic provided for the POS 3 register 205 so the contents of this register may not be altered whenever they are inserted into the generated sequence of microinstructions.
- substitution logic may be provided in alternative embodiments, should such inclusion be beneficial for the particular processor architecture under consideration.
- the UNRREG 207 is preferably a counter register, capable of being incremented or decremented. This feature allows a stream of microinstructions to be generated that will utilize a sequence of registers in performing a repeated operation. Incrementing the UNRREG 207 is controlled by signals designated POS 1 INCREMENT and POS 2 INCREMENT. Decrementing the UNRREG 207 is controlled by signals designated POS 1 DECREMENT and POS 2 DECREMENT. When none of these signals is asserted, the UNRREG 207 is left unchanged (unless a CARRY bit 221 is added to the least significant bit of the UNRREG 207, as will be explained in detail below) . The generation of these signals will be described in greater detail below.
- the UNRREG 207 may be incremented or decremented after a microinstruction is generated based on either the POS 1 register 201 or the POS 2 register 203. This allows a next generated microinstruction to address a different source and/or destination field.
- the substitution of the UNRREG 207 value for the value actually appearing in a source and/or destination field stored in the POS 1 register 201 or the POS 2 register 203 is performed by POS 1 substitution logic 209 and the POS 2 substitution logic 211, respectively, under the control of bits stored in a POS 1 control register 213 and a POS 2 control register 215, respectively.
- the exemplary POS 1 control register 213 is a 6-bit wide register. Three of the bits are designated DEST, SRC-A and SRC-B.
- the exemplary POS 2 control register 215 is a 5- bit wide register, including two bits designated DEST and SRC-A. Asserting any of these bits (e.g., setting any of these bits equal to a "1") causes the POS 2 substitution logic 211 to replace the corresponding field (i.e., Dest, SrcA) from the output of the POS 2 register 203 with the contents of the UNRREG 207.
- the remaining fields in the POS 2 control register 215 will be described below. It is noted that the decision not to include a SRC-B control bit in the POS 2 control register 215 is merely a design choice, and is not compelled by any aspect of the invention. To the contrary, alternative embodiments of the invention could easily provide the capability for substituting the contents of the UNRREG 207 for a SrcB field in the output of the POS 2 register 203.
- Each of the POS 1 and POS 2 control registers, 213 and 215, includes a bit designated INC/DEC.
- the INC/DEC bit controls whether the UNRREG 207 will be incremented or alternatively decremented after generation of a microinstruction that utilized the contents of the UNRREG 207. This will be described in greater detail below.
- a desired source or destination operand is the same size as a register in which it is (or is to be) contained (e.g., a 32-bit operand contained in a 32-bit wide register)
- the above-described addressing strategy works.
- one register may contain several of these smaller operands, thereby creating the need for a finer level of operand addressability.
- the UNRVL register 217 serves this purpose.
- the UNRVL register 217 is five bits wide, which, when concatenated with a Dest, SrcA or SrcB field of a generated microinstruction, permits any of thirty-two bits within an addressed register to be specified.
- a microinstruction is generated by either the POS 1 substitution logic 209 or the POS 2 substitution logic 211, which generated microinstruction utilizes this finer granularity (e.g., bit-level) of addressing, it is not desirable to always increment or decrement the UNRREG 207 as described above, because the next microinstruction to be generated may need to address a different set of bits within the same register.
- this problem is solved by providing a bit, designated VL (for "variable length"), in each of the POS 1 and POS 2 control registers, 213 and 215. Asserting (e.g., setting to a logic "1") the VL bit in either of the POS 1 or POS 2 control registers, 213 and 215, disables the normal incrementing or decrementing of the UNRREG 207 after generation of a corresponding POS 1- or POS 2 -related microinstruction. Instead, the UNRVL register 217 is adjusted by adding to it a value stored in an UNRVLINC register 219. The UNRREG 207 is, in turn, incremented whenever a CARRY bit 221 is generated as a result of the UNRVL register 217 adjustment operation.
- VL for "variable length”
- the UNRREG 207 is subsequently incremented or decremented. In some cases, however, it is desired to generate a microinstruction having a SrcA field that designates, say, a register x, and a SrcB or Dest field that designates a register x+1.
- a SrcA field designates, say, a register x
- SrcB or Dest field designates a register x+1.
- the desired fields e.g., the SrcA and SrcB fields, or the SrcA and Dest fields
- the unroll unit 117 further includes elements and connections that enable a sequence of microinstructions, each specifying x and x+1 addresses, to be generated based on the contents of the POS 1 register 201, where the value of x is incremented or decremented for each microinstruction in the sequence. More particularly, as shown in FIG. 3, the output of the UNRREG 207 is coupled to one input of a SrcA substitution multiplexer 309, so that when the SRC-A bit in the POS 1 control register 213 is asserted, the output of the UNRREG 207 will replace the bits being emanated from the SRC-A field of the POS 1 register 201.
- each of the DEST and SRC-B fields of the POS 1 register 201 supply data to one input of a respective Dest and SrcB substitution multiplexer 307 and 311.
- the other (substitute) input of each of the Dest and SrcB substitution multiplexers 307 and 311 receives an output of an UNRREG multiplexer 305.
- One input of the UNRREG multiplexer 305 receives an unmodified output from the UNRREG 207, so when it is desired to substitute only a same value for one or more fields in a generated microinstruction, the contents of the UNRREG 207 may be passed through to the substitute inputs of any of the Dest and SrcB substitution multiplexers 307 and 311.
- a second input of the UNRREG multiplexer 305 receives an output of a summing circuit 303.
- One input of the summing circuit 303 receives data from the output of the UNRREG 207.
- a second input of the summing circuit 303 receives an output from an increment/decrement multiplexer 301, whose two inputs are tied to constants 1 and -1, respectively. Selection of one of the inputs of the increment/decrement multiplexer 301 is controlled by the INC/DEC bit located in the POS 1 control register 213. Selection of whether the UNRREG multiplexer 305 will supply the unmodified or the adjusted value of the UNRREG 207 output is controlled by another bit, designated I/D 1: ⁇ T, in the POS 1 control register 213 (the abbreviation "I/D 1:ST" stands for "increment/decrement after first substitution") . Asserting the bit in the I/D 1 : ST bit causes the UNRREG multiplexer 305 to supply the adjusted value of UNRREG 207 to the substitute inputs of the Dest and SrcB substitution multiplexers 307 and 311.
- the POS 2 substitution logic 211 includes a Dest substitution multiplexer 401 and a SrcA substitution multiplexer 403, each of which has a first input connected to receive an output from a respective one of the DEST and SRC-A fields of the POS 2 register 203, and a second (substitution) input coupled directly to the output of the UNRREG 207.
- this is merely a design choice, and is not mandated by any aspect of the invention.
- the POS 2 control register further includes a bit, designated USE POS 3. Assertion of the USE POS 3 bit causes an unroll output multiplexer 223 to include the output of the POS 3 register 205 in its sequence of generated microinstructions.
- the unroll output multiplexer 223 will successively select, with each next clock cycle, microinstructions based on outputs from the POS 1 register 201, the POS 2 register 203 and the POS 3 register 205 in a round robin fashion.
- the unroll output multiplexer 223 will cause a sequence of microinstructions to be generated based only on the contents of the POS 1 and POS 2 registers 201 and 203 (these two different types of microinstructions will alternate on a clock-by-clock basis) .
- the microcode decoder 107 is capable of receiving and decoding up to two microinstructions in one clock cycle.
- the unroll unit 117 is designed so that, when the USE POS 3 bit in the POS 2 control register 215 is not asserted, two microinstructions (one based on the contents of the POS 1 register 201, and another based on the contents of the POS 2 register 203) are supplied at the output of the unroll unit 117 with each clock cycle.
- an odd number of microinstructions were initially indicated in the UNRCOUNT register 229, then only one microinstruction is generated during the last cycle of unroll activation.
- the unroll unit 117 then alternates between supplying two microinstructions (one based on the contents of the POS 1 register 201, and another based on the contents of the POS 2 register 203) during a first clock cycle and then supplying a single microinstruction (based on the contents of the POS 3 register 205) during a second clock cycle, so that three microinstructions are generated every two clock cycles. In one embodiment, however, no POS 3 microinstruction is generated after the final POS 1 and POS 2 microinstructions are generated. Also in this embodiment, the UNRCOUNT register 229 is decremented once for every POS 1 or POS 2 microinstruction that is generated.
- the UNRCOUNT register 229 must be initialized to designated only the desired number of POS 1- and POS 2- based instructions to be generated, without including the number of POS 3 -based microinstructions to be generated. It was mentioned above that whether the UNRREG
- POS 1 DECREMENT POS 2 DECREMENT
- POS 1 INCREMENT POS 1 INCREMENT
- POS 2 INCREMENT POS 2 INCREMENT
- the POS 1 DECREMENT and POS 2 DECREMENT signals are logically OR'ed together by an OR gate 225, the output of which is supplied to a "Decrement” input of the UNRREG 207.
- the POS 1 INCREMENT and POS 2 INCREMENT signals are logically OR'ed together by an OR gate 227, the output of which is supplied to an "Increment” input of the UNRREG 207.
- the DEST, SRC-A and SRC-B outputs of the POS 1 control register 213 are supplied to respective inputs of an OR gate 313, so that the output of the OR gate 313 will be asserted whenever any of the DEST, SRC-A and SRC-B bits are asserted.
- the output of the OR gate 313 is supplied to an input of each of a POS
- a second input of the POS 1 increment AND gate 315 receives the output of the INC/DEC field of the POS 1 control register 213, since a increment is to occur when this bit is asserted.
- the INC/DEC bit of the POS 1 control register 213 is inverted by an inverter 319, the output of which is supplied to a second input of the POS 1 decrement AND gate 317.
- a third input of each of the POS 1 increment AND gate 315 and the POS 1 decrement AND gate 317 is coupled to receive a POS 1 clock signal 321.
- the output of the POS 1 increment AND gate 315 supplies the POS 1 INCREMENT signal
- the output of the POS 1 decrement AND gate 317 supplies the POS 1 DECREMENT signal.
- the POS 2 INCREMENT and POS 2 DECREMENT signals are generated in a similar fashion.
- the INC/DEC bit of the POS 2 control register 215 is inverted by an inverter 411, the output of which is supplied to a second input of the POS 2 decrement AND gate 409.
- a third input of each of the POS 2 increment AND gate 407 and the POS 2 decrement AND gate 409 is coupled to receive a POS 2 clock signal 413.
- the output of the POS 2 increment AND gate 407 supplies the POS 2 INCREMENT signal
- the output of the POS 2 decrement AND gate 409 supplies the POS 2 DECREMENT signal.
- the exemplary microinstruction 501 includes a Micro Control Order (MCO) field 503, a Condition (Cond) field 505, an Arithmetic, Logic and Shift Operation (ALSO) field 507, a Destination (Dest) field 509, a Source-A (SrcA) field 511, a Source-B (SrcB) field 513, a microaddress field 515, and possible other fields 517.
- MCO Micro Control Order
- Cond Condition
- ALSO Arithmetic, Logic and Shift Operation
- Dest Destination
- SrcA Source-A
- SrcB Source-B
- microinstruction 501 the width and encoding of the various exemplary fields
- some embodiments of the invention may pertain to microinstructions having additional fields that are not defined here, and/or may pertain to microinstructions that omit one or more of the exemplary fields.
- the MCO field 503 designates operations that affect the flow of control of microinstructions, such as various types of conditional and unconditional jump instructions.
- a conditional jump is specified, the condition that is to be tested is specified by the Cond field 505.
- the microaddress that is the target of the jump is specified by the microaddress field 515.
- the ALSO field 507 designates which arithmetic, logic or shift operation is to be performed by hardware in the microprocessor hardware resources 111.
- the addresses of operands for the specified operation may be designated by the SrcA and SrcB fields 511, 513. If a result is to be stored, the destination address may be designated by the Dest field 509.
- the microinstruction 501 may include other fields 517 for specifying other operations, addresses, immediate constants, and the like.
- the microprogrammer To activate the unroll function, the microprogrammer must code a particular sequence of microinstructions to be stored in the microcode storage unit 113.
- each of the UNRREG 207, UNRVL register 217, UNRVLINC register 219, POS 1 control register 213, POS 2 control register 215, and POS 3 register 205 are directly addressable using normal microinstructions. Consequently, the microprogrammer must be sure that any of these registers that are to be used during a particular unroll activation are initialized to desired values.
- POS 1 and POS 2 control registers 213 and 215 are mandatory, since these registers are used whenever the unroll unit 117 is activated.
- any of the UNRREG 207, UNRVL register 217, UNRVLINC register 219, and POS 3 register 205 may not be used during an unroll activation, in which case they do not have to be initialized.
- the contents of this register determine the maximum number of microinstructions that will be generated during this activation of the unroll unit 117, including any POS 3 -based instructions to be generated. (As will be explained in detail below, it is possible that fewer than the maximum number of microinstructions will be generated before the unroll unit 117 is deactivated.)
- writing a value to the UNRCOUNT register 229 sets a flag (not shown) that enables subsequent activation of the unroll unit 117. Whenever the unroll unit 117 is deactivated, this flag is reset.
- the unroll function is started by including, in the microcode sequence to be executed out of the microcode storage unit 113, a three word microinstruction 601, as shown in FIG. 6.
- the first word 603 of the microinstruction 601 has its MCO field 503 set to indicate a "Load Unroll Buffer" operation.
- the microaddress field 515 in the first word 603 also includes an address (herein designated "Label") that is stored into a Jump Target Address First-in- first-out storage device (JTAF) 121.
- JTAF Jump Target Address First-in- first-out storage device
- the JTAF 121 stores target addresses for conditional jumps in the microcode.
- the address at the head of the JTAF 121 is removed from the JTAF 121, and used as an address for fetching a next microinstruction from the microcode storage unit 113. If the jump is not taken, the address stored in the JTAF 121 is not needed. Assertion of the "jump not taken" signal, therefore, causes the address to be removed from the JTAF 121 without being used.
- the use of the JTAF 121 when the unroll unit 117 is activated will be discussed below with respect to deactivation of the unroll unit 117.
- the unroll unit 117 has no need for any other fields in the first word 603 of the three word microinstruction 601, so the word may be discarded from the microcode decoder 107 without generating any control signals for use by the microprocessor hardware resources
- the second and third words 605, 607 of the three word microinstruction 601 are then retrieved from the microcode storage unit 113, and supplied directly to the unroll unit 117.
- the second word 605 is stored into the POS 1 register 201, and the third word 607 is stored in to the POS 2 register 203.
- the assembler to microcode translator 103 then stops retrieving microinstructions from the microcode storage unit 113, and, assuming that the flag has been set to indicate that the UNRCOUNT register 229 has been initialized, causes the unroll unit 117 to begin generating microinstructions, as described above.
- the unroll unit 117 will wait for that initialization to occur.
- the multiplexer 119 is also controlled to route the output of the unroll unit 117 to the microcode decoder 107.
- the unroll unit 117 includes an UNRCOUNT register 229, the contents of which designate a maximum number of microinstructions that will be generated by the unroll unit 117.
- UNRCOUNT register 229 the contents of which designate a maximum number of microinstructions that will be generated by the unroll unit 117.
- the multiplexer 119 is controlled so that the fetched microinstructions will be supplied to the microcode decoder 107.
- the unroll unit 117 it is not always necessary for the unroll unit 117 to generate the maximum number of microinstructions indicated in the UNRCOUNT register 229. Instead, the unroll operation can be deactivated by generating a microinstruction that causes a micro jump to be executed.
- the target address for the micro jump is the Label that was stored in the JTAF 121 when the unroll unit 117 was first activated. In the case of a pipelined machine, any microinstructions that had been delivered to the microcode decoder 107 after the one that caused the micro jump to be taken will be flushed from the pipeline.
- At least one of the POS 1 or POS 2 registers, 201 and 203 should have its MCO field 503 encoded to indicate an operation herein referred to as " [if Cond] interrupt unroll.”
- the Cond field 505 may be encoded to indicate an "always true” condition, so that a branch will always be taken whenever the microinstruction is executed.
- the " [if Cond] interrupt unroll” operation generates the "jump taken” signal whenever, upon executing the generated microinstruction, a designated condition is satisfied and the jump is taken in the flow of microprogram execution. As explained above, the "jump taken” signal will flush the Label from the JTAF 121.
- the "[if Cond] interrupt unroll” operation differs from non-unroll-related micro jump instructions, however, in that it does not generate the "jump not taken” signal if the condition specified in the Cond field 505 is not fulfilled. As a consequence, the Label stored in the JTAF 121 will remain in the JTAF 121.
- any next instructions that had been supplied to the microcode decoder by the unroll unit 117 will be flushed, and the pipeline will be reloaded with new microinstructions retrieved from the microcode storage unit 113, beginning at the jump target address.
- conditional micro jumps are included in the sequence of microinstructions generated by the unroll unit 117, but the designated condition is never satisfied, so that the micro jump is not taken by the time the last generated microinstruction is executed, a potential problem exists because the jump target address stored in the JTAF 121 will not be removed. (It will be recalled that the "[if Cond] interrupt unroll" operation only generates a "jump taken signal” when the condition is satisfied; it does not generate a "jump not taken” signal when the condition is not satisfied, so there is no signal for clearing the jump target address from the JTAF 121 under these circumstances . )
- the microinstructions stored in the POS 1, POS 2 and POS 3 registers 201, 202 and 203 each have an MCO field 503 that is either encoded as a "No op" (i.e., no operation) or as an " [if Cond] interrupt unroll” operation, which was described above. Neither of these microcode operations has the possibility of generating a "jump not taken" signal, which would clear an unused jump target address from the JTAF 121. Therefore, another microcode operation is provided, herein referred to as "[if Cond] go to label".
- This microinstruction which is typically coded by a microprogrammer when it is expected that a microprogram will be executed out of the microcode storage unit 113, rather than from the unroll unit 117, issues the signal "jump taken” when a designated condition is satisfied, and it also issues the signal "jump not taken” when the designated condition is not satisfied.
- a jump target address stored in the JTAF 121 will be cleared upon execution of the " [if Cond] go to label” instruction.
- the MCO field 503 of that last microinstruction is forced, by hardware, to be encoded as an " [if Cond] go to label” operation.
- the Cond field 505 is set to a value of "always false” . This will cause the last microinstruction, when executed, to issue the "jump not taken” signal (thereby clearing the Label from the JTAF 121) without actually taking a micro jump. If, however, the MCO field 503 of the last microinstruction would otherwise have been an " [if Cond] interrupt unroll", then the Cond field 505 of the last microinstruction is left as it was originally encoded by the microprogrammer.
- FIG. 7a illustrates the pertinent components of a computer architecture. These components include an addressable data store 701, whose output supplies data to a SrcA input of an ALU 703. For this example, it is not important what the source of a SrcB operand for the ALU 703 is.
- the address for the data store 701 is supplied by a summing unit 713, one input of which is supplied by an address register 711, and the other input of which is supplied by an index register 709.
- the output of the index register 709 also supplies an address for an addressable register file 707.
- FIG. 7b illustrates a flowchart for performing the above-described "move" operation.
- each block represents one microinstruction.
- Blocks shown in dotted lines represent microinstructions that are fetched and executed out of the microcode storage unit 113.
- the blocks shown in solid lines are microinstructions which are generated by the unroll unit 117 in accordance with principles described in detail above.
- the UNRCOUNT register is the UNRCOUNT register
- step 753 the POS 1 and POS 2 control registers 213 and 215 are initialized to ensure that no substitution will occur when the unroll unit 117 is activated.
- the POS 2 control register 215 is further initialized so that the USE POS 3 bit asserted. This step can be omitted if it is known that the POS 1 and POS 2 control registers 213 and 215 were initialized in this manner by some earlier operation.
- the POS 3 register 205 is loaded with a value that represents a microinstruction that will do no more than increment the index register 709. It should be recognized that the microinstruction loaded into the POS 3 register 205 is not executed at this time. This does not occur until after the unroll unit 117 is activated. Rather, the step of loading the POS 3 register 205 is merely an initializing step, in preparation for activating the unroll unit 117. Next, the unroll unit 117 is activated (step 757) . Because the routine will not include any branch instructions, the microaddress field 515 of this microinstruction need not be initialized to anything in particular.
- the next two microinstructions are then fetched from the microcode storage unit 113 and loaded into the POS 1 register 201 and the POS 2 register, respectively (steps 759 and 761) .
- the POS 1 register 201 therefore will contain a microinstruction that reads the addressed location of the data store 701, routes this data through the ALU 703, and loads it into the working register 705.
- the POS 2 register will contain a microinstruction that stores the contents of the working register 705 into the addressed location of the register file 707.
- the unroll unit 117 then begins generating microinstructions that are supplied to the microcode decoder 107 for execution.
- the first two generated microinstructions are based on the POS 1 and POS 2 registers 201 and 203.
- the third microinstruction to be generated is based on the POS 3 register 205 because the USE POS 3 bit in the POS 2 control register 215 has been asserted.
- the fourth generated microinstruction will again be based on the contents of the POS 1 register 201, and the pattern repeats.
- the contents of the UNRCOUNT register 229 are decremented, and the unroll unit 117 is deactivated when the contents of the UNRCOUNT register 229 go to zero, as described in detail above .
- the effect of the generated microinstructions is a repetitive three-step operation in which the working register is first loaded from the addressed location of the data store (step 763), the addressed location of the register file 707 is loaded from the working register 705
- FIG. 8a illustrates the pertinent components of a computer architecture. These components include an addressable data register file 801, whose output supplies data to a SrcA input of an ALU 803. For this example, it is not important what the source of a
- SrcB operand for the ALU 803 is.
- the address 805 for the data register file 801 is supplied by a SrcA field from an executing microinstruction.
- FIG. 8b illustrates a flowchart for performing the above-described "transfer" operation.
- step 851 the address of the first data register in the data register file 801 is written into the UNRREG 207.
- the number of registers to be transferred are loaded 'into the UNRCOUNT register 229 (step 853 ) . This count derives from the fact that, as will be seen below, one microinstruction is needed for each word to be transferred.
- the POS 1 and POS 2 control registers 213 and 215 are each initialized to designate that the contents of the UNRREG 207 will be substituted for all microinstructions based on the POS 1 register 201 and the POS 2 register 203.
- the INC/DEC bit is set to "increment". Because only one substitution will be performed for each generated microinstruction, there is no need to assert the I/D 1:ST bit.
- the USE POS 3 bit is not asserted, since it is not desired to generate any microinstructions based on the contents of the POS 3 register 205.
- the unroll unit 117 is activated (step 8 57) . Because the routine will not include any branch instructions, the microaddress field 515 of this microinstruction need not be initialized to anything in particular. As described earlier, the next two microinstructions are then fetched from the microcode storage unit 113 and loaded into the POS 1 register 201 and the POS 2 register, respectively (steps 857 and 859) .
- the POS 1 register 201 therefore will contain a microinstruction that reads the addressed location of the data register file 801, routes this data through the ALU 803, and loads it into the first signal sending output buffer 807.
- the POS 2 register will contain a microinstruction that reads the addressed location of the data register file 801, routes this data through the ALU 803, and loads it into the second signal sending output buffer 809.
- the unroll unit 117 then begins generating microinstructions that are supplied to the microcode decoder 107 for execution.
- the first two generated microinstructions are based on the POS 1 and POS 2 registers 201 and 203.
- the third microinstruction to be generated is again based on the POS 1 register 201 because the USE POS 3 bit in the POS 2 control register 215 has not been asserted.
- the pattern then repeats.
- the contents of the UNRCOUNT register 229 are decremented.
- the UNRREG 207 is incremented, so that successive addresses will be substituted for successively generated microinstructions.
- the unroll unit 117 is deactivated when the contents of the UNRCOUNT register 229 go to zero, as described in detail above.
- the effect of the generated microinstructions is a repetitive two-step operation in which the first signal sending output buffer 807 is first loaded from the addressed location of the data register file 801 (step 863) and the second signal sending output buffer 809 is loaded from the next addressed location (which is one more than the previously addressed location because the UNRREG 207 has been incremented) of the data register file 801 (step 865) . This pattern repeats until the number of requested microinstructions (as designated by the initial contents of the UNRCOUNT register 229) has been generated. It will be observed that, again, the generated sequence of microinstructions does not contain any branch instructions.
- FIG. 9a illustrates the pertinent components of a computer architecture. These components include an addressable data store 901, whose output supplies data to a SrcA input of an ALU 903. A SrcB input of the ALU 903 can be supplied with an operand by a comparison register (C-reg) 905. The address for the data store 901 is supplied by a first pointer register (PRl) 907.
- PRl first pointer register
- PRl 907 are to contain the address of the first location in the data store 901 to be compared. After a match is found, the relevant pointer value is retained in PRl 907, and a micro jump to a location, "FOUND IT", is to take place. If no match is found, the contents of PRl 907 are to be decreased by one, the test repeated.
- PR2 The contents of a second pointer register (PR2) indicate the address of the last location in the data store 901 to be compared.
- FIG. 9b illustrates a flowchart for performing the above-described "search” operation. Beginning with step 951, the address of the first location to be compared is written into PRl 907. In order to make sure that the contents of PRl 907 are initialized properly, a conditional micro jump instruction is executed, whereby a jump to the address indicated by the label "END" is performed if the contents of PRl 907 are less than the contents of PR2 909 (step 953) .
- the UNRCOUNT register 229 is loaded with the quantity 2 x (PRl - PR2 + 1) , where (PRl - PR2 + 1) represents the maximum number of words to be searched, and the factor of 2 derives from the fact that a maximum of two microinstructions will need to be generated for each one search that is performed.
- the POS 1 and POS 2 control registers 213 and 215 are each initialized to designate that no substitution of source or destination fields will occur for microinstructions based on either of the POS 1 or POS 2 registers, 201 and 203.
- the USE POS 3 bit is not asserted, since it is not desired to generate any microinstructions based on the contents of the POS 3 register 205.
- the unroll unit 117 is then activated (step 959) . Because the routine will include a branch instructions, the microaddress field 515 of this microinstruction should be set equal to the label "FOUND IT" . As described earlier, the next two microinstructions are then fetched from the microcode storage unit 113 and loaded into the POS 1 register 201 and the POS 2 register, respectively (steps 961 and 963) . In this case, the POS 1 register 201 will contain a microinstruction that reads the addressed location (based on the contents of PRl 907) of the data store 901, and routes this data to the SrcA input of the ALU 903.
- This same microinstruction also routes the contents of the C-reg 905 to the SrcB input of the ALU 903, and causes the ALU to perform a compare operation.
- This same microinstruction further specifies that a micro jump is to occur if the EQUAL indicator 911 of the ALU is asserted.
- the POS 2 register will contain a microinstruction that decrements the PRl 907, in preparation for a next comparison.
- the unroll unit 117 then begins generating microinstructions that are supplied to the microcode decoder 107 for execution.
- the first two generated microinstructions are based on the POS 1 and POS 2 registers 201 and 203.
- the third microinstruction to be generated is again based on the POS 1 register 201 because the USE POS 3 bit in the POS 2 control register 215 has not been asserted.
- the pattern then repeats. With each generated microinstruction, the contents of the UNRCOUNT register 229 are decremented.
- the unroll unit 117 will be deactivated no later than when the contents of the UNRCOUNT register 229 go to zero, as described in detail above.
- the effect of the generated microinstructions is a repetitive two-step operation in which, first, the addressed location of the data store 901 is compared with the contents of the C-reg 905 (step 965) , and a conditional jump is performed. If a match occurs, the unroll unit 117 will be deactivated as a result of a micro jump to the address stored in the JTAF 121. In this case, the address is designated by the label "FOUND IT", and microinstructions for performing desired operations when a match occurs would be executed out of the microcode storage unit 113 (step 971) .
- the second microinstruction is generated and executed, which decrements the contents of PRl 907 in preparation for the next comparison operation. In the event that no match is ever found, this pattern will be repeated until the number of requested microinstructions (as designated by the initial contents of the UNRCOUNT register 229) has been generated, at which point the unroll unit 117 will be deactivated, and the next instruction fetched from the microcode storage unit 113 and executed (step 969) .
Abstract
Description
Claims
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU76821/98A AU7682198A (en) | 1997-05-29 | 1998-05-26 | Unroll of instructions in a micro-controller |
DE19882414T DE19882414T1 (en) | 1997-05-29 | 1998-05-26 | Unrolling commands in a microcontroller |
GB9927921A GB2340639B (en) | 1997-05-29 | 1998-05-26 | Unroll of instructions in a micro-controller |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/864,888 US5828875A (en) | 1997-05-29 | 1997-05-29 | Unroll of instructions in a micro-controller |
US08/864,888 | 1997-05-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO1998054640A1 true WO1998054640A1 (en) | 1998-12-03 |
Family
ID=25344295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/SE1998/000978 WO1998054640A1 (en) | 1997-05-29 | 1998-05-26 | Unroll of instructions in a micro-controller |
Country Status (5)
Country | Link |
---|---|
US (1) | US5828875A (en) |
AU (1) | AU7682198A (en) |
DE (1) | DE19882414T1 (en) |
GB (1) | GB2340639B (en) |
WO (1) | WO1998054640A1 (en) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038659A (en) * | 1997-11-12 | 2000-03-14 | International Business Machines Corporation | Method for using read-only memory to generate controls for microprocessor |
EP0997815A3 (en) * | 1998-10-29 | 2004-05-26 | Texas Instruments Incorporated | Interactive translation system and method |
JP3110404B2 (en) * | 1998-11-18 | 2000-11-20 | 甲府日本電気株式会社 | Microprocessor, software instruction speed-up method therefor, and recording medium recording control program therefor |
US6519768B1 (en) * | 1999-03-04 | 2003-02-11 | International Computers Limited | Instruction translation method |
US7600673B2 (en) * | 1999-08-09 | 2009-10-13 | First Data Corporation | Systems and methods for performing transactions at a point-of-sale |
US20050015280A1 (en) * | 2002-06-11 | 2005-01-20 | First Data Corporation | Health care eligibility verification and settlement systems and methods |
US6886742B2 (en) | 1999-08-09 | 2005-05-03 | First Data Corporation | Systems and methods for deploying a point-of sale device |
US20040148203A1 (en) * | 2002-10-08 | 2004-07-29 | First Data Corporation | Systems and methods for verifying medical insurance coverage |
MXPA02001382A (en) * | 1999-08-09 | 2004-07-16 | First Data Corp | Point of sale payment terminal. |
US7086584B2 (en) * | 1999-08-09 | 2006-08-08 | First Data Corporation | Systems and methods for configuring a point-of-sale system |
US8751250B2 (en) | 1999-08-09 | 2014-06-10 | First Data Corporation | Health care eligibility verification and settlement systems and methods |
US6827260B2 (en) * | 1999-08-09 | 2004-12-07 | First Data Corporation | Systems and methods for utilizing a point-of-sale system |
US7613653B2 (en) | 1999-12-30 | 2009-11-03 | First Data Corporation | Money order debit from stored value fund |
WO2002005195A1 (en) | 2000-07-11 | 2002-01-17 | First Data Corporation | Wide area network person-to-person payment |
US7376587B1 (en) | 2000-07-11 | 2008-05-20 | Western Union Financial Services, Inc. | Method for enabling transfer of funds through a computer network |
US7398252B2 (en) | 2000-07-11 | 2008-07-08 | First Data Corporation | Automated group payment |
US7266533B2 (en) | 2000-12-15 | 2007-09-04 | The Western Union Company | Electronic gift greeting |
US7130817B2 (en) | 2000-12-15 | 2006-10-31 | First Data Corporation | Electronic gift linking |
US7103577B2 (en) | 2001-03-31 | 2006-09-05 | First Data Corporation | Systems and methods for staging transactions, payments and collections |
US7165052B2 (en) | 2001-03-31 | 2007-01-16 | First Data Corporation | Payment service method and system |
WO2002079939A2 (en) | 2001-03-31 | 2002-10-10 | First Data Corporation | Electronic identifier payment system and methods |
US7117183B2 (en) | 2001-03-31 | 2006-10-03 | First Data Coroporation | Airline ticket payment and reservation system and methods |
US7184989B2 (en) | 2001-03-31 | 2007-02-27 | First Data Corporation | Staged transactions systems and methods |
US8150763B2 (en) | 2001-03-31 | 2012-04-03 | The Western Union Company | Systems and methods for staging transactions, payments and collections |
US9853759B1 (en) | 2001-03-31 | 2017-12-26 | First Data Corporation | Staged transaction system for mobile commerce |
GB2374950B (en) * | 2001-04-23 | 2005-11-16 | Imagination Tech Ltd | Expanded functionality of processor operations within a fixed width instruction encoding |
US6552625B2 (en) | 2001-06-01 | 2003-04-22 | Microchip Technology Inc. | Processor with pulse width modulation generator with fault input prioritization |
US6604169B2 (en) | 2001-06-01 | 2003-08-05 | Microchip Technology Incorporated | Modulo addressing based on absolute offset |
US6728856B2 (en) | 2001-06-01 | 2004-04-27 | Microchip Technology Incorporated | Modified Harvard architecture processor having program memory space mapped to data memory space |
US20020184566A1 (en) | 2001-06-01 | 2002-12-05 | Michael Catherwood | Register pointer trap |
US6601160B2 (en) | 2001-06-01 | 2003-07-29 | Microchip Technology Incorporated | Dynamically reconfigurable data space |
US6552567B1 (en) | 2001-09-28 | 2003-04-22 | Microchip Technology Incorporated | Functional pathway configuration at a system/IC interface |
US20040021483A1 (en) * | 2001-09-28 | 2004-02-05 | Brian Boles | Functional pathway configuration at a system/IC interface |
US8244632B2 (en) | 2001-10-26 | 2012-08-14 | First Data Corporation | Automated transfer with stored value |
US8374962B2 (en) | 2001-10-26 | 2013-02-12 | First Data Corporation | Stored value payouts |
US6670569B2 (en) | 2001-11-08 | 2003-12-30 | First Data Corporation | Mail handling equipment and methods |
JP3779602B2 (en) | 2001-11-28 | 2006-05-31 | 松下電器産業株式会社 | SIMD operation method and SIMD operation device |
US8190530B2 (en) | 2002-01-30 | 2012-05-29 | Visa U.S.A. Inc. | Method and system for providing multiple services via a point-of-sale portal architecture |
US7596529B2 (en) | 2002-02-13 | 2009-09-29 | First Data Corporation | Buttons for person to person payments |
CN1675640A (en) * | 2002-06-11 | 2005-09-28 | 第一数据公司 | Value processing network and methods |
US8032452B2 (en) | 2002-11-06 | 2011-10-04 | The Western Union Company | Multiple-entity transaction systems and methods |
US7831519B2 (en) * | 2003-12-17 | 2010-11-09 | First Data Corporation | Methods and systems for electromagnetic initiation of secure transactions |
US7707110B2 (en) * | 2004-05-04 | 2010-04-27 | First Data Corporation | System and method for conducting transactions with different forms of payment |
US7219832B2 (en) | 2004-06-17 | 2007-05-22 | First Data Corporation | ATM machine and methods with currency conversion capabilities |
US20060015708A1 (en) * | 2004-07-14 | 2006-01-19 | Boggs Darrell D | Microprocessor with branch target determination in decoded microinstruction code sequence |
US7917395B2 (en) | 2004-09-28 | 2011-03-29 | The Western Union Company | Wireless network access prepayment systems and methods |
US7641109B2 (en) | 2005-05-18 | 2010-01-05 | The Western Union Company | Money transfer cards, systems and methods |
US8152054B2 (en) | 2004-10-19 | 2012-04-10 | The Western Union Company | Money transfer systems and methods |
US7813982B2 (en) * | 2004-11-08 | 2010-10-12 | First Data Corporation | Unit-based prepaid presentation instrument accounts and methods |
US20060174230A1 (en) * | 2005-01-31 | 2006-08-03 | Honeywell International Inc. | Methods for hosting general purpose computer languages on speical purpose systems |
US8672220B2 (en) | 2005-09-30 | 2014-03-18 | The Western Union Company | Money transfer system and method |
US7392940B2 (en) | 2005-05-18 | 2008-07-01 | The Western Union Company | In-lane money transfer systems and methods |
US8345931B2 (en) * | 2006-02-10 | 2013-01-01 | The Western Union Company | Biometric based authorization systems for electronic fund transfers |
US7933835B2 (en) | 2007-01-17 | 2011-04-26 | The Western Union Company | Secure money transfer systems and methods using biometric keys associated therewith |
US8818904B2 (en) | 2007-01-17 | 2014-08-26 | The Western Union Company | Generation systems and methods for transaction identifiers having biometric keys associated therewith |
US8504473B2 (en) | 2007-03-28 | 2013-08-06 | The Western Union Company | Money transfer system and messaging system |
US7783571B2 (en) | 2007-05-31 | 2010-08-24 | First Data Corporation | ATM system for receiving cash deposits from non-networked clients |
US8565723B2 (en) * | 2007-10-17 | 2013-10-22 | First Data Corporation | Onetime passwords for mobile wallets |
US8095113B2 (en) * | 2007-10-17 | 2012-01-10 | First Data Corporation | Onetime passwords for smart chip cards |
US8346611B2 (en) * | 2009-04-21 | 2013-01-01 | First Data Corporation | Systems and methods for pre-paid futures procurement |
US11321144B2 (en) | 2019-06-29 | 2022-05-03 | Intel Corporation | Method and apparatus for efficiently managing offload work between processing units |
US10983796B2 (en) | 2019-06-29 | 2021-04-20 | Intel Corporation | Core-to-core end “offload” instruction(s) |
US11372711B2 (en) | 2019-06-29 | 2022-06-28 | Intel Corporation | Apparatus and method for fault handling of an offload transaction |
US11030000B2 (en) | 2019-06-29 | 2021-06-08 | Intel Corporation | Core advertisement of availability |
US11016766B2 (en) | 2019-06-29 | 2021-05-25 | Intel Corporation | Apparatus and method for compiler hints for inter-core offload |
US11182208B2 (en) | 2019-06-29 | 2021-11-23 | Intel Corporation | Core-to-core start “offload” instruction(s) |
US10929129B2 (en) * | 2019-06-29 | 2021-02-23 | Intel Corporation | Apparatus and method for modifying addresses, data, or program code associated with offloaded instructions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0275170A2 (en) * | 1987-01-12 | 1988-07-20 | Oki Electric Industry Company, Limited | Instruction decoder |
US5404473A (en) * | 1994-03-01 | 1995-04-04 | Intel Corporation | Apparatus and method for handling string operations in a pipelined processor |
US5465361A (en) * | 1990-09-10 | 1995-11-07 | The Regents Of The University Of California | Microcode linker/loader that generates microcode sequences for MRI sequencer by modifying previously generated microcode sequences |
WO1997013194A1 (en) * | 1995-10-06 | 1997-04-10 | Advanced Micro Divices, Inc. | Risc86 instruction set |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4097920A (en) * | 1976-12-13 | 1978-06-27 | Rca Corporation | Hardware control for repeating program loops in electronic computers |
FR2557712B1 (en) * | 1983-12-30 | 1988-12-09 | Trt Telecom Radio Electr | PROCESSOR FOR PROCESSING DATA BASED ON INSTRUCTIONS FROM A PROGRAM MEMORY |
US4858115A (en) * | 1985-07-31 | 1989-08-15 | Unisys Corporation | Loop control mechanism for scientific processor |
US5038282A (en) * | 1988-05-11 | 1991-08-06 | Massachusetts Institute Of Technology | Synchronous processor with simultaneous instruction processing and data transfer |
US5121498A (en) * | 1988-05-11 | 1992-06-09 | Massachusetts Institute Of Technology | Translator for translating source code for selective unrolling of loops in the source code |
US5680600A (en) * | 1989-10-13 | 1997-10-21 | Texas Instruments Incorporated | Electronic circuit for reducing controller memory requirements |
JPH04102926A (en) * | 1990-08-22 | 1992-04-03 | Nec Corp | Development optimizing system for repeating loop |
JP3102027B2 (en) * | 1990-11-20 | 2000-10-23 | 日本電気株式会社 | Nesting management mechanism for loop control |
US5303355A (en) * | 1991-03-27 | 1994-04-12 | Motorola, Inc. | Pipelined data processor which conditionally executes a predetermined looping instruction in hardware |
JPH07160585A (en) * | 1993-12-13 | 1995-06-23 | Hitachi Ltd | Low power data processor |
JPH07200292A (en) * | 1993-12-28 | 1995-08-04 | Mitsubishi Electric Corp | Pipeline system processor |
JPH0863355A (en) * | 1994-08-18 | 1996-03-08 | Mitsubishi Electric Corp | Program controller and program control method |
US5727194A (en) * | 1995-06-07 | 1998-03-10 | Hitachi America, Ltd. | Repeat-bit based, compact system and method for implementing zero-overhead loops |
-
1997
- 1997-05-29 US US08/864,888 patent/US5828875A/en not_active Expired - Lifetime
-
1998
- 1998-05-26 WO PCT/SE1998/000978 patent/WO1998054640A1/en active Application Filing
- 1998-05-26 AU AU76821/98A patent/AU7682198A/en not_active Abandoned
- 1998-05-26 DE DE19882414T patent/DE19882414T1/en not_active Ceased
- 1998-05-26 GB GB9927921A patent/GB2340639B/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0275170A2 (en) * | 1987-01-12 | 1988-07-20 | Oki Electric Industry Company, Limited | Instruction decoder |
US5465361A (en) * | 1990-09-10 | 1995-11-07 | The Regents Of The University Of California | Microcode linker/loader that generates microcode sequences for MRI sequencer by modifying previously generated microcode sequences |
US5404473A (en) * | 1994-03-01 | 1995-04-04 | Intel Corporation | Apparatus and method for handling string operations in a pipelined processor |
WO1997013194A1 (en) * | 1995-10-06 | 1997-04-10 | Advanced Micro Divices, Inc. | Risc86 instruction set |
Also Published As
Publication number | Publication date |
---|---|
GB2340639B (en) | 2002-05-29 |
DE19882414T1 (en) | 2000-06-15 |
GB2340639A (en) | 2000-02-23 |
US5828875A (en) | 1998-10-27 |
GB9927921D0 (en) | 2000-01-26 |
AU7682198A (en) | 1998-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5828875A (en) | Unroll of instructions in a micro-controller | |
US5442756A (en) | Branch prediction and resolution apparatus for a superscalar computer processor | |
US5293592A (en) | Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline | |
US6338136B1 (en) | Pairing of load-ALU-store with conditional branch | |
US5850543A (en) | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return | |
US5006980A (en) | Pipelined digital CPU with deadlock resolution | |
EP0352103B1 (en) | Pipeline bubble compression in a computer system | |
US5321823A (en) | Digital processor with bit mask for counting registers for fast register saves | |
US6609194B1 (en) | Apparatus for performing branch target address calculation based on branch type | |
US6438679B1 (en) | Multiple ISA support by a processor using primitive operations | |
JPH0785223B2 (en) | Digital computer and branch instruction execution method | |
US5131086A (en) | Method and system for executing pipelined three operand construct | |
US6611909B1 (en) | Method and apparatus for dynamically translating program instructions to microcode instructions | |
US20090024842A1 (en) | Precise Counter Hardware for Microcode Loops | |
US5023828A (en) | Microinstruction addressing in high-speed CPU | |
US6230261B1 (en) | Method and apparatus for predicting conditional branch instruction outcome based on branch condition test type | |
EP1050804A1 (en) | Execution of instruction loops | |
US5276824A (en) | Data processor having a multi-stage instruction pipe and selection logic responsive to an instruction decoder for selecting one stage of the instruction pipe | |
EP1974254B1 (en) | Early conditional selection of an operand | |
EP0889395B1 (en) | Pipeline processor capable of reducing branch hazards with small-scale circuit | |
US6604191B1 (en) | Method and apparatus for accelerating instruction fetching for a processor | |
US5590293A (en) | Dynamic microbranching with programmable hold on condition, to programmable dynamic microbranching delay minimization | |
JP4613168B2 (en) | Instruction alignment method and apparatus | |
US5737562A (en) | CPU pipeline having queuing stage to facilitate branch instructions | |
US20050144427A1 (en) | Processor including branch prediction mechanism for far jump and far call instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM GW HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG |
|
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
ENP | Entry into the national phase |
Ref document number: 9927921 Country of ref document: GB Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref document number: 1999500579 Country of ref document: JP |
|
RET | De translation (de og part 6b) |
Ref document number: 19882414 Country of ref document: DE Date of ref document: 20000615 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 19882414 Country of ref document: DE |
|
122 | Ep: pct application non-entry in european phase | ||
NENP | Non-entry into the national phase |
Ref country code: CA |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8607 |