CA1199414A - Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter - Google Patents

Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter

Info

Publication number
CA1199414A
CA1199414A CA000440032A CA440032A CA1199414A CA 1199414 A CA1199414 A CA 1199414A CA 000440032 A CA000440032 A CA 000440032A CA 440032 A CA440032 A CA 440032A CA 1199414 A CA1199414 A CA 1199414A
Authority
CA
Canada
Prior art keywords
instruction
target
source
instructions
register
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
Application number
CA000440032A
Other languages
French (fr)
Inventor
Dale E. Fisk
Robert L. Griffith
Merle E. Homan
George Radin
Waldo J. Richards
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of CA1199414A publication Critical patent/CA1199414A/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS

Abstract

ABSTRACT

If a predetermined field within a source instruction indexes and accesses a body of control information from memory, and if control information designates the field-to-field (register-to-register) mapping, then a skeleton target instruction can be filled in by either selectively copying the fieldsof the source instruction or otherwise computing same. If the mapping is executed by an interposed independent processor then overlapping of such conversion enhances throughput, the independent processor converting multifield instructions for a CPU of a first kind to multifield instructions for a CPU of a second kind without disrupting the logical flow or execution of either source or target instruction streams.

Description

ACCELERATED INSTRUCTION MAPPING EXTERNAL TO SOURCE
A~ TARGET INSTRUCTION STREAMS FOR NEAR REALTIME
INJECTION INTO THE LATTER

Technic ~ Eield This invention relat~s to a new facility realtime format conversion of multifield instructions for a CPU
of a first kind to multifield instructions for a CPU of a second kind by facilities external to the CPU of ihe second kind and without disrupting the logical flow or execution of either source or target instruction streams.

Background Art ~.
Parks et al, U.S. Patent 4,315,321, "Method and Apparatus for Enhancing the Capabilities of a Computing 15 System", issued 9 February 1982, teaches that indicator codes within an activation record can select one of several mutually exclusive microcode sets for interpretin~ a referenced instruction stream. The activationlrecord is manifest in the form of program status word regi~ter bit positions. Parks is concerned with interpretin- or construing the intent of each referenced main memory instruction. Further, the activation record of the process external to the instruction provides the microcode set selection index.

Nutter, U.S. Patent 3,543,24~, "Computer Systems"~
issued 24 November 1970, asserts that if control words, indexed by the OP code portion of a CPU multifield instruction, are used to select the instruction fields and their microcode e~ecution order, then varying f~

instruction widths can be accommodated. Nutter, as does Parks, is concerned with the CPU executing the intent of an external instruction by way of immediate microcode interpretation~ Nutter's control words include masks and switching and shifting circuit control bits by which fields in a source instruction would be selected and reorder~d to form a l'queue'l for immediate microcode execution. Indeed, the field selection is described from the specification, column 5~ line 23, through column 10, line 54, while the mapping of randomly ordered fields in the source word into predetermined positions in a target word is described at column 62, lines 5 through 36. Further, Nutter shows a control word register pair of FIG. 2 as a single register equivalent 15 in FIG. 38. These are discussed at column 24, line 60 through column 31, line 30 in FIGS. 2, 9, and 37.

Other pertinent references include Cassonnet et al, U.S. Patent 3,997,895, "Data Processing System with a Microprogrammed Dispatcher for Working Either in Native 20 or Non-native Mode'l, issued 14 December 1976, and Malcolm et al, U.S. Patent 3,698,007, "Central Processor Unit Having Simulative Interpretation Capability", issued 10 October 1972. Cassonet depicts a microprog ~ammable switch (130) responsive to preselected bit position contents in an external instruction for having control stored microcode sequences interpreted respectively by the arithmetic logic unit (ALU 1317) or emulator unit (EMU 1316).
- Malcolm uses the OP code of the simulated instruction as an index into a set of simulator routines, and provides for storage of a base address to which the OP code index is an offset. Lastly, each instruction references only one operand. This configuration directly executes the intent of the non-native instructions.

A class of VLSI implementable computers with reduced instruction sets being driven by a respective data stream and instruction stream from corresponding caches has been described by Radin in "The 801 Minicomputer", appearing in the AC~ Procedings of the Symposium on Architectural Support for Programming Languages and Operating Systems", March 1-3, 1982, in Palo Alto, California, at pages 39-47. A similar CPU
architecture was described by Patterson and Sequin in "RISC 1: a Reduced Instruction Set VLSI Computer", in the IEEE 8th ~nnual ~ymposium on Architec~ure Conference Procedings of May 12-14, 1981, at pages 443-4~9, and in expanded form in IE~E Computer, September 1982 at pages &-20. In this type of machine, instructions are obtained from an "Instruction Cache", and data is obtained rom a separate (data cache), both of which are managed by a LRU
information algorithm. Thus, all fre~uently used functions and data are likely to be found in their respective cache.

Disclosure of the Invention It is an object of this invention to convert multifield source instructions into multifield target machine i ~structions and insert them into a target mac~ine instruction stream without otherwise perturbing the normal target machine instruction execution se~uence. It is a related object to devise an efficient method of mapping the register space and constants of the - source instruction set into that of the target wherein the method does not participate itself in the execution of these instructions. It is still a further object that such a conversion be executed external to the target machine and in near realtime, permitting the target machine to participate in ~mulations without itself being substantially modified.

SA9i~0~6 1 ~99~

The foregoin~ objects are satisfied by a method for transforming source instructions ordinarily executable by a first CPU-type (source machine) into one or more instructions (code words) to be directly injected into the executable code stream of a second CPU-type (target machine). The method steps comprise (a) fetchiny a microins'~uction comprising a control section and a skeleton target CPU instruction from a memory at a location addressed by a predetermined field of said source instruction; (b) filling in the skeleton according to the control section contents by copying or computing from selected fields of said source instructions; and (c) inserting the filled-in target instructions into the target machine instruction stream.

The apparatus of the invention includes a first and-second register; means for loading a source instruction into said first register; means responsive to the OP code contents within said first register for loading a microinstruction control section (control word) into the second register; mapping logic conditioned by the control word in the second register for selectively copying (gating out) or computing from source instruction fields into the skeleton instruction; and means for ~rging the "fleshed out" target instruction into tne counterpart target CPU instruction stream.

The invention is predicated on a number of unexpected observations. These are (1) if a data stream - comprising multiple field source machine instructions i's mapped into the instruction stream of the target machine by an interposed independent processor, it enhances full realtime utilization due to the independent overlapping of such conversion; (2) if the preponderance of the source instruction fields can be used unchanged in the target machine instructions, then reformatting within an r SA979026 f~ ' independent processor can be implemented by register-to-register transfers; (3) if a predetermined field within a source instruction indexes and accesses a word pair from memory, and if one word of the pair is a control section designating the field-to~field (register to-register) mapping, and if the other word of the pair is a skeleton target in truction; it can be filled out by the fields of the source instruction; and (4) if target machine instructions are constructed external to said target machine, then the target machine is less complex and admits faster instruction execution.

Brief Description of the Drawin~s FIG. 1 depicts the fields of an IBM*370 CPU
instruction and its general mapping relation to a target machine instruction;

FIG. 2 depicts the emulator-assist processor (EAP) of the invention in communicating relation with the instruction and data caches of the target machine;

FIG. 3 sets out a bare relation of the source multifield IB~ 370 CPU instruction and the microinstruction, including the skeleton target instruction to be fleshed out through the mapping logic contained within the EAP;

FIG. 4 shows a definition of a microinstruction 25 control section used by the EAP in fleshing out a skeleton target machine instruction;

FIG. 5 is a timing diagram of the major reformatting operations of the EAP; and * Trade mark ~A979026 ~13~

FIG. 6 is a completed field register definition of the EAP set out in FIG. 3.

Best Mode for Car_~_ng out_the I vention ~hile the invention ~oes not reside in the architectu e of either the target or source ~PU
instruction stream generators or receivers, the target CPU does serve as the environment within which the invention is practiced. As the aforementioned Radin and Patterson references exemplify, the new trend in CPU
architecture is the use o~ a reduced instruction set and of independently pipelined instruc~ion and data streams terminating in said CPU. For many years instruction and data reference speeds have been increased by use of least recently used (LRU) managed information caches between the CPU main memory and the target CPU. Thus, the immediately referenced instruction stream is resident in one cache while the immediate reference data stream is referenced in a second. Such a target CPU is shown in FI~. 2.

Typica~ ly, the target machine (CPU) l is organized to permit hndependent memory access for the data and instructions. Eacl. access path is served by an independent cache. Thus, instruction cache 5 is accessed by address line 9 with the information 25 therefrom being read over path 11, 13, and 21. Likewise, data cache 7 is accessed over address line 17 and its contents read by target CPU 1 over path 19. However, during realtime instruction translation, data cache 7 writably terminates instruction streams from source CPUs. This means that the data cache is the node from which the source instruction streams are accessed. In this regard, an IBM System 370 CPU is an illustrative i, ~

SA979026 /~\ ~

multifield instruction stre,am source whose instructions can be locally stored in data cache 7. A complete description of IBM 370 host architecture is set out in G.M. Amdahl et al, U.S. Patent 3~400~371~ issued 3 5 September 1968~

An apparatus embodiment of the invention is in the form of an emulator assist processor ~EAP) 3 accessing data cache 7 by way of address path 17a and read path l9a and the instruc-tion cache 5 by way of address path 9 and read path lla. The conversion output from the EAP is to target CPU machine 1 over path 15~ merge 13, and line 21.

With these factors in mind reference should be made to FIG. 1 depicting the fields of an IBM 370 CPU
i5 instruction and its general mapping relations to a target machine instruction. Instructions in the IBM 370 System computers consist of 2, 4, or 6 bytes and can contain up to 3 addresses. Five distinctive formats are used depending on the location of various operands required. The formats include:

l. RR (register/register) instructions. The operands R1 and R2 are CPU general registers. The result is placed in Rj.
2. RX ~register/index) instructions. A first operand is located in R1 while the other is in main - memory. The effective memory address is X2 + B2 + D2 where X2 and B2 denote the contents of general registers being used as index and base registers respectively, and D2 is a relative address or "displacement" contained in the instruction. The result is placed in R1.

;; ~

SA97'3026
3. RS (register/storage) instructions. Two operands are in general registers, a third is in main memory.
4. SI (storage/immediate~ instructions. In this case, one operand is in main memory while the other is located within a predetermined ra ~e of contiguous bit positions of the instruction itself. This is an immediate operand as opposed to the usual operand address.
5. SS ~storage/storage~ instructions. Both operands are in main memory. The address as specified by the instructions are typically the initial addresses of two operand fields whose length is L bytes.

With reference IO FIG. 1, the 370 instruction depicts an operation code field, typically of one byte followed by a pair of operands L1, L2 and a pair of base-plus-displacement addresses, namely ~1' D1 and B2, and D2. These are to be mapped into a target machine instruction of 32 bits. The target instruction format includes an OP code field occupying bit positions 0-5, an RT field designating the register used to receive the result of a~instruction in the positions 6-10, while the RA field in positions 11-15 is the name of the register used for the first operand. Depending on llstruction type, the second half of the instruction could include, in positions 16-20, the name of the register used as a second operand, in positions 21-25 the immediate field specifying the operation to be executed by a controller named in an adjacent field of bit positions 26-29. The remaining bit position contents define internal bus operation instructions.

'' SA97C~ 6 Referring now to FIG. 3, when taken together with ~IG. 2, it is apparent that when data cache 7 is addressed over path 17a, the contents consisting of a source instruc~ion, are transmitted over path l9a and loaded into register 25. The OP code of the source instruction, accesses instruction cache 5 by way o~
address register 27 actuating path 9a. Responsively a microinstruction control section is transmitted to register 23 over path lla. Each microinstruction may cause a subsequent microinstruction to be accessed so that each source inskruction is replaced by an EAP
microcode routine. A microcode instruction consists of a control section and a skeleton target instruction. The skeleton target instruction may have zeroed and/or meaningful register and displacement fields. Control information specifies how fields from the source instruction should be merged into the zeroed fields of the skeleton instruction by the EAP. During emulation, the EAP passes these completed target instructions to the target CPU to be executed. The target CPU executes these instructions normally, except that its instruction address register (not shown) remains fixed and the target CPU makes no attempt to fetch instructions. This parenthetically is termed cycle stealing. During emulation, ~he target CPU waits for the EAP to give it instructions to execute instead of fetching instructions itself. One way of terminating the translation for any specific source instruction can be upon EAP detection of a zeroed instruction field or a stop bit embedded in a ~ -30 predetermined bit position within a microcode sequence.

In executing translation, the target CPU
initializes the EAP registers 27. A suitable state change is made in the target CPU. The first source instruction is fetched into the EAP internal register 25. The OP code portion of the source instruction forms SA9790~6 the address to the first microcode instruction for this particular source instruction operation. The microcode instruction is then fetched froM the instruction cache.
The skeleton target instruction portion of the microinstruction has its zeroed fields filled in from the appropriate fields of 370 instructions. The completed target instruction is then sent to the target machine for execution. Each microinstruction may either link to another microinstruction to be so processed, or it may be the last of a series for the current source instruction. This process is singularly repeated for each 370 or source instruction that is fetched.
Significantly, each valid target instruction re~uires a microcode instruction of two words from the instruction cache. These are the control word and the skeleton target instruction. These are fetched consecutively with the OP code selected control word being first.

Referring now to FIG. 4, there is shown the emulator micro control section format. The format of the 32 bits that make up the control section is allocated as follows:
OP is the command to be executed in the EAP, R is the substitution control for the RT and RA target machine register fields. D is the substitution control for the displaceme ~ field and the RB target machine register field. C controls the condition codes while NI is the address of the next instruction to be executed by the EAP. If NI is 0, then the EAP will fe-tch and emulate the next System 370 instructioll from the data cache, otherwise it will access the instruction cache again' according to the content of the NI. This is aptly drawn in the FIG. 6 enhancement of the EAP 3 shown in FIG. 3.
~Note in the micro instruction formatted at register 23 in FIG. 6, an alternative to a 0 next instruction address for terminating the EAP fetch from the instruction cache 27 can be by way of a LAST bit position which is set when the last instruction has been fetched in a sequence from the instruction cache.

Referring now to FIG. 5, there is shown a timing diagram of the major reformatting operations of the ~AP
in overlap rel~tion (pipelining) to increase throughput.
~hile such pipelining is not the object of this invention, it is e~ident that significant performance throughput can be obtained. ;

The register transforma-tion technique between the source and target register spaces provides significant performance gains. For example, because of the pipelining and merging of reformatted instructions from the EAP into the target machine instruction stream, the target machine which might normally execute instructions only every other cycle would permit execution to ta~e place every cycle. This permits the EAP to cause repetitive functions to be executed in the target machine at the full execution rate.

Advantageously, the EAP can be operated in a subroutine mode whenever a sequence o~ source instructions do not require register space mapping. In this mode, ~the EAP receives regular target machine instruc~ions, instead of microinstructions from the instruction cache and the target machine again runs at full speed. The subroutine mode is terminable when the target machine is asked to execute an instruction which indicates the resumption of translation mode.

The embodiment heretofore described presupposes formation by the EAP of a complete target machine instruction by merging data extracted from the source instruction with the skeleton instruction from the instruction cache. This is illustrated in FIGS. 2, 3 and i SA979~26 ~2
6. One modification involves intercepting the skeleton target instruction and substituting fields in the complete target machine instruction before passing it into the target CPU, rather than merging it on the fly.

While the invention is particularly described with reference to a preferred embodiment, it is to be appreciated that the method focuses on dynamic register field substitution on the fly. Source instruction strings generated from CPU's other than the IBM System 370 are certainly contemplated.

In order to avoid EAP bottlenecking, a multiple cache target machine is desirable for performance advantages.
r

Claims (7)

The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
1. A method for converting a source CPU
multifield instruction obtained from memory as data into one or more target CPU multifield instructions to be directly injected into the executable code word stream of a target CPU type; comprising the steps of:

fetching a microinstruction and at least one skeleton target instruction from the memory at a location indexed by a predetermined field of said source instruction;

filling in the skeleton target instruction according to the microinstruction contents by copying or computing from selected fields of said source instruction into the skeleton instruction;
and inserting said filled-in target instruction into the CPU instruction stream.
2. A method according to claim 1 wherein each fetched microinstruction includes an address portion which, if non-zero, designates a memory location of a successive microinstruction to be fetched from the memory or, if zero, indicates termination of the microinstruction code word sequence.
3. A method according -to claim 1 wherein the steps of fetching, filling-in, and inserting are performed in time overlap relation.
4. A translator for use with a dual cache processing unit for converting instructions stored in the first of two caches as data into counterpart code words executable by the processing unit, the translator comprising:

means for fetching an instruction from the first cache;

means for fetching a microinstruction and a skeleton code word from the second cache at a location determined by the operating code portion of the fetched instruction; and means for filling in the skeleton code word according to the microinstruction with the fields of the fetched instruction and applying the filled-in code word to the processing unit for execution.
5. A translator according to claim 4, characterized in that the fetching means include means for cycle steal accessing the second cache and cycle steal access to instruction execution cycles of the processing unit.
6. An apparatus for format-converting multi field source instructions stored in a data cache into target instructions and inserting them into an instruction stream obtained from an instruction cache without otherwise perturbing target machine instruction execution, comprising:

a first and a second register;

means for accessing the data cache and loading a source instruction into said first register, said source instruction including an OP field;

means responsive to the OP field contents within said first register for cycle steal accessing a skeleton instruction from the instruction cache and loading a control word into the second register;

mapping logic conditioned by the control word in the second register for selectively copying or gating out source instruction fields from the first register into the skeleton instruction; and means for cycle stealing the target machine and merging the formatted target instruction into the counterpart instruction stream.
7. In combination with at least one source and one target CPU of dissimilar executable instruction formats, an apparatus for translating multifield instructions from the source into a target CPU format and for injecting the translated instructions into the directly executable target CPU instructions stream, each source instruction having at least one OP field, comprising:

memory means;

means responsive to each multifield source.
instruction for fetching a body of control information and skeleton target instructions from said memory means at a location indexed by the source instruction OP field;

means for filling in the fields of the fetched skeleton target instructions by either selectively copying source instruction fields or otherwise computing their contents according to the fetched body of control information; and means for merging the filled in target instructions into the executable instruction stream of the target CPU.
CA000440032A 1982-10-22 1983-10-20 Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter Expired CA1199414A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/US1982/001496 WO1984001635A1 (en) 1982-10-22 1982-10-22 Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter
US82/01496 1982-10-22

Publications (1)

Publication Number Publication Date
CA1199414A true CA1199414A (en) 1986-01-14

Family

ID=22168301

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000440032A Expired CA1199414A (en) 1982-10-22 1983-10-20 Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter

Country Status (6)

Country Link
US (1) US4587612A (en)
EP (2) EP0124517A1 (en)
JP (1) JPS59501684A (en)
CA (1) CA1199414A (en)
DE (1) DE3366762D1 (en)
WO (1) WO1984001635A1 (en)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6017539A (en) * 1983-07-11 1985-01-29 Hitachi Ltd Emulation system
JPS6133546A (en) * 1984-07-25 1986-02-17 Nec Corp Information processor
DE3650602T2 (en) * 1985-04-08 1997-06-12 Hitachi Ltd Data processing system
US4794522A (en) * 1985-09-30 1988-12-27 International Business Machines Corporation Method for detecting modified object code in an emulator
US4807124A (en) * 1986-09-26 1989-02-21 Performance Semiconductor Corporation Register addressing system for efficient microroutine sharing and optimization
US4841476A (en) * 1986-10-06 1989-06-20 International Business Machines Corporation Extended floating point operations supporting emulation of source instruction execution
US4811215A (en) * 1986-12-12 1989-03-07 Intergraph Corporation Instruction execution accelerator for a pipelined digital machine with virtual memory
US4992934A (en) * 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
JPH01503181A (en) * 1987-03-24 1989-10-26 インシグニア・ソリューションズ・リミテッド Computer
US5280626A (en) * 1987-12-02 1994-01-18 Hitachi, Ltd. Multi-process emulator suitable for testing software under multi-process environments
US5822578A (en) * 1987-12-22 1998-10-13 Sun Microsystems, Inc. System for inserting instructions into processor instruction stream in order to perform interrupt processing
US5167023A (en) * 1988-02-01 1992-11-24 International Business Machines Translating a dynamic transfer control instruction address in a simulated CPU processor
US4951195A (en) * 1988-02-01 1990-08-21 International Business Machines Corporation Condition code graph analysis for simulating a CPU processor
JP2752076B2 (en) * 1988-02-23 1998-05-18 株式会社東芝 Programmable controller
US4879676A (en) * 1988-02-29 1989-11-07 Mips Computer Systems, Inc. Method and apparatus for precise floating point exceptions
CA2002201C (en) * 1988-12-06 1999-04-27 John Charles Goettelmann Translation technique
US5077657A (en) * 1989-06-15 1991-12-31 Unisys Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor
CA2019299C (en) * 1989-06-22 2002-01-15 Steven Frank Multiprocessor system with multiple instruction sources
US5430862A (en) * 1990-06-29 1995-07-04 Bull Hn Information Systems Inc. Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution
US5197132A (en) * 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
US5446851A (en) * 1990-08-03 1995-08-29 Matsushita Electric Industrial Co., Ltd. Instruction supplier for a microprocessor capable of preventing a functional error operation
JPH05189574A (en) * 1991-07-23 1993-07-30 Internatl Business Mach Corp <Ibm> Method and apparatus for supporting plurality of commands in rendering constituent element
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
DE69329778T2 (en) * 1992-09-29 2001-04-26 Seiko Epson Corp SYSTEM AND METHOD FOR HANDLING LOADS AND / OR STORES IN A SUPER-SCALAR MICROPROCESSOR
WO1994027214A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding sequences of guest instructions for a host computer
AU6629894A (en) * 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5392408A (en) * 1993-09-20 1995-02-21 Apple Computer, Inc. Address selective emulation routine pointer address mapping system
US5574887A (en) * 1993-09-20 1996-11-12 Apple Computer, Inc. Apparatus and method for emulation routine pointer prefetch
US5408622A (en) * 1993-09-23 1995-04-18 Apple Computer, Inc. Apparatus and method for emulation routine control transfer via host jump instruction creation and insertion
GB2289354B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
GB2307072B (en) * 1994-06-10 1998-05-13 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
GB2299492B (en) 1995-03-28 1999-12-22 Sony Uk Ltd Automation of signal processing apparatus
US5758140A (en) * 1996-01-25 1998-05-26 International Business Machines Corporation Method and system for emulating instructions by performing an operation directly using special-purpose register contents
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
EP0862111B1 (en) * 1997-02-27 2010-07-21 International Business Machines Corporation Dynamic conversion between different instruction codes by recombination of instruction elements
US5898885A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native stack-based instruction within a computer system
US5875336A (en) * 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US5898850A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native mode-sensitive instruction within a computer system
US5933629A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for detecting microbranches early
US5864690A (en) * 1997-07-30 1999-01-26 Integrated Device Technology, Inc. Apparatus and method for register specific fill-in of register generic micro instructions within an instruction queue
US6009261A (en) * 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6075937A (en) * 1998-03-18 2000-06-13 International Business Machines Corporation Preprocessing of stored target routines for controlling emulation of incompatible instructions on a target processor and utilizing target processor feedback for controlling non-sequential incompatible instruction emulation
JPH11296381A (en) * 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd Virtual machine and compiler
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US6647395B1 (en) * 1999-11-01 2003-11-11 Kurzweil Cyberart Technologies, Inc. Poet personalities
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
KR20020028814A (en) * 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 Java hardware accelerator using microcode engine
US7711926B2 (en) 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US20030093774A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton State-specific variants of translated code under emulation
US7092869B2 (en) * 2001-11-14 2006-08-15 Ronald Hilton Memory address prediction under emulation
US20030093649A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton Flexible caching of translated code under emulation
US7707389B2 (en) 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
DE102004005123B4 (en) * 2004-02-02 2005-12-22 Siemens Ag Arrangement for the translation of virtual instructions in a data processing unit
US7770050B2 (en) * 2006-05-03 2010-08-03 Sony Computer Entertainment Inc. Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code
US7792666B2 (en) * 2006-05-03 2010-09-07 Sony Computer Entertainment Inc. Translation block invalidation prehints in emulation of a target system on a host system
US7813909B2 (en) * 2006-05-03 2010-10-12 Sony Computer Entertainment Inc. Register mapping in emulation of a target system on a host system
US20080052530A1 (en) * 2006-02-16 2008-02-28 International Business Machines Corporation System and method to provide CPU smoothing of cryptographic function timings
WO2007130807A2 (en) * 2006-05-03 2007-11-15 Sony Computer Entertainment Inc. Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code
US8060356B2 (en) 2007-12-19 2011-11-15 Sony Computer Entertainment Inc. Processor emulation using fragment level translation
US9811893B2 (en) 2008-11-04 2017-11-07 The United States Of America, As Represented By The Secretary Of The Navy Composable situational awareness visualization system
KR101394780B1 (en) * 2012-08-08 2014-05-15 인텔 코포레이션 Isa bridging including support for call to overidding virtual functions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3544969A (en) * 1967-11-27 1970-12-01 Standard Computer Corp Language independent computer
US3543245A (en) * 1968-02-29 1970-11-24 Ferranti Ltd Computer systems
US3698007A (en) * 1970-11-30 1972-10-10 Honeywell Inc Central processor unit having simulative interpretation capability
JPS5060151A (en) * 1973-09-26 1975-05-23
FR2253430A5 (en) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
FR2253435A5 (en) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4084235A (en) * 1975-04-14 1978-04-11 Honeywell Information Systems Inc. Emulation apparatus
US4096568A (en) * 1976-09-24 1978-06-20 Sperry Rand Corporation Virtual address translator
GB2002553A (en) * 1977-08-10 1979-02-21 Itek Corp High speed, real-time computer emulator
US4315321A (en) * 1978-06-16 1982-02-09 The Kardios Systems Corporation Method and apparatus for enhancing the capabilities of a computing system
US4245302A (en) * 1978-10-10 1981-01-13 Magnuson Computer Systems, Inc. Computer and method for executing target instructions

Also Published As

Publication number Publication date
EP0109567A3 (en) 1984-08-22
EP0109567B1 (en) 1986-10-08
EP0109567A2 (en) 1984-05-30
JPS59501684A (en) 1984-10-04
US4587612A (en) 1986-05-06
WO1984001635A1 (en) 1984-04-26
EP0124517A1 (en) 1984-11-14
DE3366762D1 (en) 1986-11-13

Similar Documents

Publication Publication Date Title
CA1199414A (en) Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter
US4569016A (en) Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4415969A (en) Macroinstruction translator unit for use in a microprocessor
EP0352103B1 (en) Pipeline bubble compression in a computer system
JP3741551B2 (en) Data processing device
US4514803A (en) Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof
Strecker VAX-11/780-A virtual address extension to the DEC PDP-11 family
JPS6339931B2 (en)
US4325121A (en) Two-level control store for microprogrammed data processor
EP0148975B1 (en) Internal bus system for a primitive instruction set machine
US4731736A (en) Method and apparatus for coordinating execution of an instruction by a selected coprocessor
US4750110A (en) Method and apparatus for executing an instruction contingent upon a condition present in another data processor
US5021991A (en) Coprocessor instruction format
JP2840604B2 (en) Method and apparatus for specifying operands for instructions executed on a microcode CPU
EP0525831B1 (en) Method and apparatus for enabling a processor to coordinate with a coprocessor in the execution of an instruction which is in the intruction stream of the processor.
US4821231A (en) Method and apparatus for selectively evaluating an effective address for a coprocessor
EP0130381A2 (en) Mechanism for implementing one machine cycle executable branch-on-any-bit-in-any-register instructions in a primitive instruction set computing system
Tzafestas et al. Real Time Microcomputer Control of Industrial Processes
US4914578A (en) Method and apparatus for interrupting a coprocessor
US5034879A (en) Programmable data path width in a programmable unit having plural levels of subinstruction sets
US5590293A (en) Dynamic microbranching with programmable hold on condition, to programmable dynamic microbranching delay minimization
US4994961A (en) Coprocessor instruction format
US4975837A (en) Programmable unit having plural levels of subinstruction sets where a portion of the lower level is embedded in the code stream of the upper level of the subinstruction sets
JPS623336A (en) Conditional branch system
US4758978A (en) Method and apparatus for selectively evaluating an effective address for a coprocessor

Legal Events

Date Code Title Description
MKEX Expiry