US5721927A - Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions - Google Patents
Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions Download PDFInfo
- Publication number
- US5721927A US5721927A US08/689,357 US68935796A US5721927A US 5721927 A US5721927 A US 5721927A US 68935796 A US68935796 A US 68935796A US 5721927 A US5721927 A US 5721927A
- Authority
- US
- United States
- Prior art keywords
- instructions
- block
- instruction
- executable
- translated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 230000004044 response Effects 0.000 claims abstract description 4
- 238000013519 translation Methods 0.000 description 30
- 230000003068 static effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Definitions
- the invention relates to computer systems, and, in particular, increasing the performance of verifying binary translated blocks of instructions.
- machine instructions are selected from a set of machine instructions unique to a particular instruction set architecture.
- Computer program statements that have been decoded into machine instructions for a source instruction set computer architecture may undergo a binary translation in order to be executed on a target instruction set computer architecture, such as the reduced instruction-set computer (RISC) architecture or the very long instruction word (VLIW) architecture.
- RISC reduced instruction-set computer
- VLIW very long instruction word
- the machine instructions are typically translated and stored in memory in a separate block of instructions. Each block of instructions consist of a contiguous sequence of non-branch machine-instructions ending with a branch instruction.
- a computer program such as the Untranslated Source program of FIG. 1, typically consists of multiple blocks of instructions stored in a physical static sequence (e.g., BB 1 , BB 2 , BB 3 . . . )
- the order that the blocks of instructions are executed can be different from the static sequence.
- the execution order is determined by the behavior of the branch instructions in the block of instructions.
- the order of execution branches (i.e., transfers) to a separate block of instructions that is separate in the static sequence of the program. Otherwise, the order of execution continues at the block of instructions that immediately follows in the static sequence.
- the branch instruction of BB 1 if the branch instruction of BB 1 is taken, the order of execution branches from BB 1 to BB 3 . BB 2 , therefore, is not executed in the example order of execution.
- BB 1 The block of instructions from which the order of execution continues from is hereinafter referred to as a "predecessor" block of instructions, regardless whether the branch is taken.
- BB 1 would be considered a predecessor block of instructions with respect to BB 3 .
- a predecessor block of instructions needs to obtain a memory address for the translation of a block of instructions that follows in the order of execution.
- the memory address of a translated block of instructions is hereinafter referred to as the translation address.
- the speed of obtaining translation addresses is increased by storing translation addresses in a special section of memory referred to as the Translated Address Table (TAT), such as the one shown in the memory of FIG. 1.
- TAT Translated Address Table
- the alternative look-up routine typically involves searching the contents of a larger data structure in memory, which stores a greater number of translation addresses.
- the translation addresses stored in the TAT are typically indexed by the hash values of the memory addresses for the corresponding block of instructions untranslated (hereinafter referred to as the source addresses).
- the source addresses For the example of using the 12 least significant bits (LSB) of source addresses to index the entries of the TAT. If a particular block of instructions has a source address with the 12 LSB equal to 25, than the translation address for that block of instructions would be stored at the 25th entry of the TAT.
- LSB least significant bits
- the present invention provides a method for enabling a first block of instructions to verify whether the first block of instructions follows a second block of instructions in an order of execution.
- the method includes appending a compare instruction to the first block of instructions.
- the compare instruction compares a first value from the first block of instructions with a second value from the second block of instructions, which precedes the first block of instructions in the order of execution.
- the method further includes appending a branching instruction to the first block of instructions.
- the branching instruction is executed in response to the first value being unequal to the second value.
- the branching instruction when executed, branches to an alternative look-up routine to obtain a block of instructions that follows the second block of instructions in the order of execution.
- FIG. 1 illustrates a computer system capable of implementing one embodiment of the present invention.
- FIG. 2 is a flow diagram describing the steps of implementing one embodiment of the present invention.
- FIG. 3 is a flow diagram describing the steps of performing one embodiment of the present invention.
- a method is described for increasing the performance of verifying whether a binary translated block of instructions follows a predecessor translated block of instructions in the order of execution.
- FIG. 1 Shown in FIG. 1, is a target instruction set computer architecture capable of performing the present invention. Included in the memory of FIG. 1 is the Untranslated Source Program consisting of multiple untranslated blocks of instructions. These blocks of instructions are executable on a separate source instruction set computer architecture.
- the binary translator also shown in the memory of FIG. 1, translates the untranslated blocks of instructions, block by block, so that the instructions are executable on the target instruction set computer architecture.
- the translator translates each untranslated instruction by decoding each untranslated instruction into an opcode and operands.
- the opcode indicates an operation to be performed by the instruction, and the operands identify the memory or register addresses of data to be operated on by the opcode.
- the translator then provides a separate sequence of instructions in place of a decoded instruction's opcode.
- the instructions provided by the translator are selected from the target instruction set computer architecture's instruction set and typically achieve the same operation as the decoded instruction's opcode.
- the translator also translates the memory addresses of the decoded instruction's operands to be compatible with the target computer architecture memory addressing.
- the translator appends to the translated block of instructions additional instructions that enable a translated block of instructions to verify whether it is the correct translated block of instructions following the predecessor block of instructions in the order of execution.
- the translated block of instructions are stored in the area of memory allocated for storing Binary Translated Blocks of Instructions, shown in FIG. 1.
- the memory address for each translated block of instructions i.e., translation address
- the Translation Address Table also shown in the memory of FIG. 1.
- the binary translator, Untranslated Source Program, binary Translated Blocks of Instructions, and the TAT shown stored in the memory can also be stored on other computer-readable mediums, such as magnetic disks or optical disks, accessible via a disk drive. These items may also be stored on a cache memory.
- FIG. 2 a flow diagram is shown describing the steps of translator enabling a translated block of instructions to verify whether it is the correct translated block of instructions following a translated predecessor block of instructions in an order of execution, according to one embodiment of the present invention.
- an untranslated first block of instructions is identified by a program counter during the translation of an untranslated program.
- the binary translator begins translating the untranslated first block instructions into a translated block of instructions that is executable with the target instruction set computer architecture. The translation may be performed dynamically during the execution of the untranslated block of instructions, or statically when the block of instructions is not being executed.
- the translator provides a compare instruction to have the first block of instructions compare its source address with a source address provided by a predecessor block of instructions.
- the source address provided by the predecessor block of instructions is the source address of the block of instructions that should follow the predecessor block of instructions in the order of execution.
- the translator provides to the first block of instructions a branching instruction to branch to an alternative look-up routine if the source address of the first block of instructions is not equal to the source address provided by the predecessor block of instructions.
- the alternative look-up routine is a procedure stored in the binary translator.
- the alternative look-up routine may obtain the translation addresses by searching a larger section of memory allocated to storing translation addresses of binary translated blocks of instructions (hereinafter referred to as the Alternative Translation Address Memory Area) as shown in the memory of FIG. 1.
- the translator sequentially performs a binary translation of each remaining untranslated instruction included in the first block of instructions.
- the translator provides to the first block of instructions, a loading instruction to load the source address of the block of instructions that is to follow the first block of instructions in the order of execution.
- the source address is typically loaded into a memory location that may be a register of a processor, a cache memory location, or a main memory address location.
- the actual source address that is loaded depends on the results of the conditional branch instruction when executing the first block of instructions. If the branch is to be taken, then source address for the block of instructions that is a branch target of the first block of instructions is loaded. Otherwise, the source address of the block for instructions that follows the first block of instructions in the static sequence of the Untranslated Source Program.
- the source address loaded by the first block of instructions can subsequently be used by a second translated block of instructions to verify whether the second translated block of instructions correctly follows the first block of instructions in the order of execution.
- the second translated block of instructions compares its source address with the source address provided by the first block of instructions to perform the verification.
- the translator adds an instruction, to the first block of instructions, to generate an index into the TAT.
- the index is used to obtain the translation address for the block of instructions that is to follow in the order of execution.
- the index generated is a hash value of the source address loaded by the first block of instructions.
- the hash value generated is the 12 LSB of the source address.
- the 12 LSB of the source address is then used to locate an entry in the TAT corresponding to the 12 LSB.
- other hash values may be generated from the source address loaded by the first block of instructions without departing from the scope of the invention.
- the entries of the TAT only include translation addresses.
- the TAT entries do not include source addresses. Therefore, the TAT consumes less memory space.
- the translator provides instructions, to the first block of instructions to use the hash value generated in block 214 and fetch a translation address from the TAT.
- the order of execution continues at the block of instructions corresponding to the translation address obtained from the TAT.
- the translator stores the translated first block of instructions, including the instructions appended to the first translated block of instruction by the Translator in blocks 206-216, in the area of memory allocated for storing Binary Translated blocks of instructions.
- the translation address of the translated first block of instructions is stored in the Alternative Translated Address Memory Area.
- the translation address for the translated first block of instructions may be copied from the Alternative Translated Address Memory Area into the TAT if the translated first block of instructions is considered to be frequently used.
- FIG. 3 a flow diagram is shown describing the steps of a translated block of instructions verifying whether it is the correct translated block of instructions following a translated predecessor block of instructions in an order of execution according to one embodiment of the present invention.
- a first translated block of instructions is executed on the target instruction set computer architecture up to the branch instruction.
- decision block 304 it is determined whether the branch is to be taken. If the branch is to be taken, in block 306 the first translated block of instructions loads the source address for the block of instructions that is a branch target of the first block of instructions. Otherwise, in block 308 the first translated block of instructions loads the source address for the block of instructions that follows the first block in the static sequence of an untranslated source program.
- the translated first block of instructions generates a hash value of the source address chosen in either block 306 or 308 in order to find an entry in the TAT to obtain a translation address of a block of instructions that is expected to follow in the order of execution. If no translation address is stored in the entry of the TAT corresponding to the hash value of the chosen source address, then the TAT provides an address defaulting to the alternative look-up routine.
- execution of the program continues at a second translated block of instructions corresponding to a translation address obtained from the TAT.
- the second translated block of instructions loads a copy of its source address into a register or other memory location.
- the second translated block of instructions compares its source address with the source address provided by the first translated block of instructions.
- the second translated block of instructions does not follow the first block instructions in the order of execution. Therefore, in block 320 the second block of instructions branches into the alternative look-up routine in order to find the correct translated block of instructions that follows the first block of instructions in the order of execution.
- the order in which the second translated block of instructions verifies whether it is the correct block of instructions following the first translated block of instructions in the order of execution can vary from the order described in blocks 302-320 without departing from the scope of the invention.
- the scheduling parallelism may be improved when executed on a multiscalar machine.
- the instructions in the translated predecessor block of instructions which cause the branch into the next block of instructions can be scheduled concurrently with the main body of the translated predecessor block of instructions because validation is necessary prior to branching into the next block of instructions.
Abstract
Description
Claims (14)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/689,357 US5721927A (en) | 1996-08-07 | 1996-08-07 | Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/689,357 US5721927A (en) | 1996-08-07 | 1996-08-07 | Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
US5721927A true US5721927A (en) | 1998-02-24 |
Family
ID=24768092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/689,357 Expired - Lifetime US5721927A (en) | 1996-08-07 | 1996-08-07 | Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions |
Country Status (1)
Country | Link |
---|---|
US (1) | US5721927A (en) |
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852741A (en) * | 1996-05-15 | 1998-12-22 | Philips Electronics North America Corporation | VLIW processor which processes compressed instruction format |
US6031992A (en) * | 1996-07-05 | 2000-02-29 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
GB2348305A (en) * | 1999-03-24 | 2000-09-27 | Int Computers Ltd | Instruction execution mechanism |
US6157951A (en) * | 1997-09-17 | 2000-12-05 | Sony Corporation | Dual priority chains for data-communication ports in a multi-port bridge for a local area network |
US6256313B1 (en) | 1995-01-11 | 2001-07-03 | Sony Corporation | Triplet architecture in a multi-port bridge for a local area network |
US6301256B1 (en) | 1997-09-17 | 2001-10-09 | Sony Corporation | Selection technique for preventing a source port from becoming a destination port in a multi-port bridge for a local area network |
US6308218B1 (en) * | 1997-09-17 | 2001-10-23 | Sony Corporation | Address look-up mechanism in a multi-port bridge for a local area network |
US6363067B1 (en) | 1997-09-17 | 2002-03-26 | Sony Corporation | Staged partitioned communication bus for a multi-port bridge for a local area network |
US6442168B1 (en) | 1997-09-17 | 2002-08-27 | Sony Corporation | High speed bus structure in a multi-port bridge for a local area network |
US6446173B1 (en) | 1997-09-17 | 2002-09-03 | Sony Corporation | Memory controller in a multi-port bridge for a local area network |
US20030093774A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | State-specific variants of translated code under emulation |
US6617879B1 (en) | 1997-09-17 | 2003-09-09 | Sony Corporation | Transparently partitioned communication bus for multi-port bridge for a local area network |
US6738384B1 (en) | 1997-09-17 | 2004-05-18 | Sony Corporation | Technique for optimizing cut-through for broadcast and multi-cast packets in a multi-port bridge for a local area network |
US6763452B1 (en) | 1999-01-28 | 2004-07-13 | Ati International Srl | Modifying program execution based on profiling |
US6779107B1 (en) | 1999-05-28 | 2004-08-17 | Ati International Srl | Computer execution by opportunistic adaptation |
US6789181B1 (en) * | 1999-01-28 | 2004-09-07 | Ati International, Srl | Safety net paradigm for managing two computer execution modes |
US20040181648A1 (en) * | 1996-05-15 | 2004-09-16 | Eino Jacobs | Compressed instruction format for use in a VLIW processor |
US20050086451A1 (en) * | 1999-01-28 | 2005-04-21 | Ati International Srl | Table look-up for control of instruction execution |
US6934832B1 (en) | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
US6941545B1 (en) | 1999-01-28 | 2005-09-06 | Ati International Srl | Profiling of computer programs executing in virtual memory systems |
US6954923B1 (en) | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US6978462B1 (en) | 1999-01-28 | 2005-12-20 | Ati International Srl | Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled |
US7013456B1 (en) | 1999-01-28 | 2006-03-14 | Ati International Srl | Profiling execution of computer programs |
US7047394B1 (en) | 1999-01-28 | 2006-05-16 | Ati International Srl | Computer for execution of RISC and CISC instruction sets |
US20070046432A1 (en) * | 2005-08-31 | 2007-03-01 | Impinj, Inc. | Local processing of received RFID tag responses |
US7254806B1 (en) | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
US7310723B1 (en) * | 2003-04-02 | 2007-12-18 | Transmeta Corporation | Methods and systems employing a flag for deferring exception handling to a commit or rollback point |
US20080216073A1 (en) * | 1999-01-28 | 2008-09-04 | Ati International Srl | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US20080313440A1 (en) * | 2000-03-30 | 2008-12-18 | Transmeta Corporation | Switching to original code comparison of modifiable code for translated code validity when frequency of detecting memory overwrites exceeds threshold |
US7644210B1 (en) | 2000-06-19 | 2010-01-05 | John Banning | Method and system for storing and retrieving a translation of target program instruction from a host processor using fast look-up of indirect branch destination in a dynamic translation system |
US7716452B1 (en) | 1996-08-22 | 2010-05-11 | Kelly Edmund J | Translated memory protection apparatus for an advanced microprocessor |
US7730330B1 (en) | 2000-06-16 | 2010-06-01 | Marc Fleischmann | System and method for saving and restoring a processor state without executing any instructions from a first instruction set |
US7761857B1 (en) | 1999-10-13 | 2010-07-20 | Robert Bedichek | Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts |
US20100293545A1 (en) * | 2008-01-21 | 2010-11-18 | Institute Of Computing Technology Of The Chinese Academy Of Sciences | risc processor device and its instruction address conversion looking-up method |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US8074055B1 (en) | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
US8413162B1 (en) | 2005-06-28 | 2013-04-02 | Guillermo J. Rozas | Multi-threading based on rollback |
US20170286110A1 (en) * | 2016-03-31 | 2017-10-05 | Intel Corporation | Auxiliary Cache for Reducing Instruction Fetch and Decode Bandwidth Requirements |
US10069599B2 (en) | 2002-02-25 | 2018-09-04 | International Business Machines Corporation | Collective network for computer structures |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5167023A (en) * | 1988-02-01 | 1992-11-24 | International Business Machines | Translating a dynamic transfer control instruction address in a simulated CPU processor |
US5287490A (en) * | 1991-03-07 | 1994-02-15 | Digital Equipment Corporation | Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths |
US5560013A (en) * | 1994-12-06 | 1996-09-24 | International Business Machines Corporation | Method of using a target processor to execute programs of a source architecture that uses multiple address spaces |
US5619665A (en) * | 1995-04-13 | 1997-04-08 | Intrnational Business Machines Corporation | Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture |
-
1996
- 1996-08-07 US US08/689,357 patent/US5721927A/en not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5167023A (en) * | 1988-02-01 | 1992-11-24 | International Business Machines | Translating a dynamic transfer control instruction address in a simulated CPU processor |
US5287490A (en) * | 1991-03-07 | 1994-02-15 | Digital Equipment Corporation | Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths |
US5560013A (en) * | 1994-12-06 | 1996-09-24 | International Business Machines Corporation | Method of using a target processor to execute programs of a source architecture that uses multiple address spaces |
US5619665A (en) * | 1995-04-13 | 1997-04-08 | Intrnational Business Machines Corporation | Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture |
Cited By (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6256313B1 (en) | 1995-01-11 | 2001-07-03 | Sony Corporation | Triplet architecture in a multi-port bridge for a local area network |
US20040181648A1 (en) * | 1996-05-15 | 2004-09-16 | Eino Jacobs | Compressed instruction format for use in a VLIW processor |
US5852741A (en) * | 1996-05-15 | 1998-12-22 | Philips Electronics North America Corporation | VLIW processor which processes compressed instruction format |
US8583895B2 (en) | 1996-05-15 | 2013-11-12 | Nytell Software LLC | Compressed instruction format for use in a VLIW processor |
US6031992A (en) * | 1996-07-05 | 2000-02-29 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
US8495337B2 (en) | 1996-08-22 | 2013-07-23 | Edmund Kelly | Translated memory protection |
US8719544B2 (en) | 1996-08-22 | 2014-05-06 | Edmund J. Kelly | Translated memory protection apparatus for an advanced microprocessor |
US20100205413A1 (en) * | 1996-08-22 | 2010-08-12 | Kelly Edmund J | Translated memory protection |
US7716452B1 (en) | 1996-08-22 | 2010-05-11 | Kelly Edmund J | Translated memory protection apparatus for an advanced microprocessor |
US7840776B1 (en) | 1996-08-22 | 2010-11-23 | Kelly Edmund J | Translated memory protection apparatus for an advanced microprocessor |
US8055877B1 (en) | 1996-08-22 | 2011-11-08 | Kelly Edmund J | Translated memory protection apparatus for an advanced microprocessor |
US6301256B1 (en) | 1997-09-17 | 2001-10-09 | Sony Corporation | Selection technique for preventing a source port from becoming a destination port in a multi-port bridge for a local area network |
US6617879B1 (en) | 1997-09-17 | 2003-09-09 | Sony Corporation | Transparently partitioned communication bus for multi-port bridge for a local area network |
US6738384B1 (en) | 1997-09-17 | 2004-05-18 | Sony Corporation | Technique for optimizing cut-through for broadcast and multi-cast packets in a multi-port bridge for a local area network |
US6744728B1 (en) | 1997-09-17 | 2004-06-01 | Sony Corporation & Sony Electronics, Inc. | Data pipeline timing optimization technique in a multi-port bridge for a local area network |
US6751225B1 (en) | 1997-09-17 | 2004-06-15 | Sony Corporation | Port within a multi-port bridge including a buffer for storing routing information for data packets received in the port |
US6446173B1 (en) | 1997-09-17 | 2002-09-03 | Sony Corporation | Memory controller in a multi-port bridge for a local area network |
US6442168B1 (en) | 1997-09-17 | 2002-08-27 | Sony Corporation | High speed bus structure in a multi-port bridge for a local area network |
US6363067B1 (en) | 1997-09-17 | 2002-03-26 | Sony Corporation | Staged partitioned communication bus for a multi-port bridge for a local area network |
US6308218B1 (en) * | 1997-09-17 | 2001-10-23 | Sony Corporation | Address look-up mechanism in a multi-port bridge for a local area network |
US6816490B1 (en) | 1997-09-17 | 2004-11-09 | Sony Corporation | Statistical learning technique in a multi-port bridge for a local area network |
US6157951A (en) * | 1997-09-17 | 2000-12-05 | Sony Corporation | Dual priority chains for data-communication ports in a multi-port bridge for a local area network |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US8788792B2 (en) | 1999-01-28 | 2014-07-22 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architecture on a computer of a second architecture |
US6941545B1 (en) | 1999-01-28 | 2005-09-06 | Ati International Srl | Profiling of computer programs executing in virtual memory systems |
US6954923B1 (en) | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US6978462B1 (en) | 1999-01-28 | 2005-12-20 | Ati International Srl | Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled |
US7013456B1 (en) | 1999-01-28 | 2006-03-14 | Ati International Srl | Profiling execution of computer programs |
US7047394B1 (en) | 1999-01-28 | 2006-05-16 | Ati International Srl | Computer for execution of RISC and CISC instruction sets |
US7065633B1 (en) | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US7069421B1 (en) | 1999-01-28 | 2006-06-27 | Ati Technologies, Srl | Side tables annotating an instruction stream |
US7111290B1 (en) | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
US7137110B1 (en) | 1999-01-28 | 2006-11-14 | Ati International Srl | Profiling ranges of execution of a computer program |
US20050086650A1 (en) * | 1999-01-28 | 2005-04-21 | Ati International Srl | Transferring execution from one instruction stream to another |
US8121828B2 (en) | 1999-01-28 | 2012-02-21 | Ati Technologies Ulc | Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions |
US8074055B1 (en) | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US8065504B2 (en) | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US20080216073A1 (en) * | 1999-01-28 | 2008-09-04 | Ati International Srl | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US6763452B1 (en) | 1999-01-28 | 2004-07-13 | Ati International Srl | Modifying program execution based on profiling |
US6789181B1 (en) * | 1999-01-28 | 2004-09-07 | Ati International, Srl | Safety net paradigm for managing two computer execution modes |
US20050086451A1 (en) * | 1999-01-28 | 2005-04-21 | Ati International Srl | Table look-up for control of instruction execution |
US6826748B1 (en) | 1999-01-28 | 2004-11-30 | Ati International Srl | Profiling program execution into registers of a computer |
GB2348305A (en) * | 1999-03-24 | 2000-09-27 | Int Computers Ltd | Instruction execution mechanism |
US6564373B1 (en) | 1999-03-24 | 2003-05-13 | International Computers Limited | Instruction execution mechanism |
US6779107B1 (en) | 1999-05-28 | 2004-08-17 | Ati International Srl | Computer execution by opportunistic adaptation |
US7254806B1 (en) | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
US8418153B2 (en) | 1999-10-13 | 2013-04-09 | Robert Bedichek | Method for integration of interpretation and translation in a microprocessor |
US20100262955A1 (en) * | 1999-10-13 | 2010-10-14 | Robert Bedichek | Method for integration of interpretation and translation in a microprocessor |
US7761857B1 (en) | 1999-10-13 | 2010-07-20 | Robert Bedichek | Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts |
US7228404B1 (en) | 2000-01-18 | 2007-06-05 | Ati International Srl | Managing instruction side-effects |
US6934832B1 (en) | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
US20080313440A1 (en) * | 2000-03-30 | 2008-12-18 | Transmeta Corporation | Switching to original code comparison of modifiable code for translated code validity when frequency of detecting memory overwrites exceeds threshold |
US8438548B2 (en) | 2000-03-30 | 2013-05-07 | John Banning | Consistency checking of source instruction to execute previously translated instructions between copy made upon occurrence of write operation to memory and current version |
US7904891B2 (en) | 2000-03-30 | 2011-03-08 | John Banning | Checking for instruction invariance to execute previously obtained translation code by comparing instruction to a copy stored when write operation to the memory portion occur |
US8140872B1 (en) | 2000-06-16 | 2012-03-20 | Marc Fleischmann | Restoring processor context in response to processor power-up |
US7730330B1 (en) | 2000-06-16 | 2010-06-01 | Marc Fleischmann | System and method for saving and restoring a processor state without executing any instructions from a first instruction set |
US7644210B1 (en) | 2000-06-19 | 2010-01-05 | John Banning | Method and system for storing and retrieving a translation of target program instruction from a host processor using fast look-up of indirect branch destination in a dynamic translation system |
US20030093774A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | State-specific variants of translated code under emulation |
US10069599B2 (en) | 2002-02-25 | 2018-09-04 | International Business Machines Corporation | Collective network for computer structures |
US8464033B2 (en) | 2003-04-02 | 2013-06-11 | Guillermo J. Rozas | Setting a flag bit to defer event handling to one of multiple safe points in an instruction stream |
US7310723B1 (en) * | 2003-04-02 | 2007-12-18 | Transmeta Corporation | Methods and systems employing a flag for deferring exception handling to a commit or rollback point |
US8019983B1 (en) | 2003-04-02 | 2011-09-13 | Rozas Guillermo J | Setting a flag bit to defer event handling to a safe point in an instruction stream |
US8413162B1 (en) | 2005-06-28 | 2013-04-02 | Guillermo J. Rozas | Multi-threading based on rollback |
US8154385B2 (en) | 2005-08-31 | 2012-04-10 | Impinj, Inc. | Local processing of received RFID tag responses |
US20070046432A1 (en) * | 2005-08-31 | 2007-03-01 | Impinj, Inc. | Local processing of received RFID tag responses |
US20100293545A1 (en) * | 2008-01-21 | 2010-11-18 | Institute Of Computing Technology Of The Chinese Academy Of Sciences | risc processor device and its instruction address conversion looking-up method |
US20170286110A1 (en) * | 2016-03-31 | 2017-10-05 | Intel Corporation | Auxiliary Cache for Reducing Instruction Fetch and Decode Bandwidth Requirements |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5721927A (en) | Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions | |
US5903760A (en) | Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA | |
US5627981A (en) | Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination | |
KR101706496B1 (en) | Systems and methods for preventing unauthorized stack pivoting | |
US8200987B2 (en) | Dynamic object-level code translation for improved performance of a computer processor | |
US7065750B2 (en) | Method and apparatus for preserving precise exceptions in binary translated code | |
US20030149963A1 (en) | Condition code flag emulation for program code conversion | |
JP3571266B2 (en) | Super scalar processor | |
EP2018609B1 (en) | Pre-decoding variable length instructions | |
US8386754B2 (en) | Renaming wide register source operand with plural short register source operands for select instructions to detect dependency fast with existing mechanism | |
US9977674B2 (en) | Micro-operation generator for deriving a plurality of single-destination micro-operations from a given predicated instruction | |
US8578351B2 (en) | Hybrid mechanism for more efficient emulation and method therefor | |
US11314641B2 (en) | Apparatus and method for executing instruction using range information associated with a pointer | |
US7725677B1 (en) | Method and apparatus for improving segmented memory addressing | |
US5634023A (en) | Software mechanism for accurately handling exceptions generated by speculatively scheduled instructions | |
US7065631B2 (en) | Software controllable register map | |
US5974525A (en) | System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized | |
JP3745819B2 (en) | Method and apparatus for implementing non-folding load instructions | |
US9336125B2 (en) | Systems and methods for hardware-assisted type checking | |
KR20070121842A (en) | System and method wherein conditional instructions unconditionally provide output | |
BR102013010540A2 (en) | optimizing registry initialization operations | |
US7200738B2 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
JP2003511787A (en) | Method and apparatus for maintaining context while executing translated instructions | |
US5978900A (en) | Renaming numeric and segment registers using common general register pool | |
US5872989A (en) | Processor having a register configuration suited for parallel execution control of loop processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BARAZ, LEONID;FARBER, YARON;REEL/FRAME:008089/0890;SIGNING DATES FROM 19960731 TO 19960801 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IDAHO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTEL CORPORATION;REEL/FRAME:030747/0001 Effective date: 20111122 |
|
AS | Assignment |
Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038669/0001 Effective date: 20160426 Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGEN Free format text: SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038669/0001 Effective date: 20160426 |
|
AS | Assignment |
Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT, MARYLAND Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038954/0001 Effective date: 20160426 Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038954/0001 Effective date: 20160426 |
|
AS | Assignment |
Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT, CALIFORNIA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:043079/0001 Effective date: 20160426 Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGEN Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:043079/0001 Effective date: 20160426 |
|
AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IDAHO Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT;REEL/FRAME:047243/0001 Effective date: 20180629 |
|
AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IDAHO Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT;REEL/FRAME:050937/0001 Effective date: 20190731 |