Hybrid polymorphic inline cache and branch target buffer prediction units for indirect branch prediction for emulation environments
    2.
    发明授权
    Hybrid polymorphic inline cache and branch target buffer prediction units for indirect branch prediction for emulation environments 有权
    用于仿真环境的间接分支预测的混合多态内联高速缓存和分支目标缓冲区预测单元

    公开(公告)号:US09317292B2

    公开(公告)日:2016-04-19

    申请号:US14068044

    申请日:2013-10-31

    IPC分类号: G06F9/38 G06F9/455

    摘要: Branch instructions are managed in an emulation environment that is executing a program. A plurality of slots in a Polymorphic Inline Cache is populated. A plurality of entries is populated in a branch target buffer residing within an emulated environment in which the program is executing. When an indirect branch instruction associated with the program is encountered, a target address associated with the instruction is identified from the indirect branch instruction. At least one address in each of the slots of the Polymorphic Inline Cache is compared to the target address associated with the indirect branch instruction. If none of the addresses in the slots of the Polymorphic Inline Cache matches the target address associated with the indirect branch instruction, the branch target buffer is searched to identify one of the entries in the branch target buffer that is associated with the target address of the indirect branch instruction.

    摘要翻译: 分支指令在正在执行程序的仿真环境中进行管理。 填充多形体内联高速缓存中的多个时隙。 多个条目填充在驻留在程序正在执行的仿真环境中的分支目标缓冲器中。 当遇到与程序相关联的间接分支指令时,从间接分支指令识别与指令相关联的目标地址。 将多形态内联高速缓存的每个时隙中的至少一个地址与与间接分支指令相关联的目标地址进行比较。 如果多形态内联高速缓存的时隙中的任何地址都不匹配与间接分支指令相关联的目标地址,则搜索分支目标缓冲区以识别与目标地址相关联的分支目标缓冲器中的一个条目 间接分支指令。

    Binary translation using raw binary code with compiler produced metadata

    公开(公告)号:US11886848B2

    公开(公告)日:2024-01-30

    申请号:US17664969

    申请日:2022-05-25

    IPC分类号: G06F8/41

    CPC分类号: G06F8/443 G06F8/447

    摘要: A method, system, and computer-readable medium for binary translation cause a binary translator to combine raw binary code and compiler-produced metadata associated with a compiled program module. The binary translator is caused to further reconcile, using the compiler-produced metadata, original compiler-produced control flow information with how lower-level machine instructions comprise a control flow in the raw binary code, and original compiler-produced aliasing information with how lower-level machine instructions access the memory locations described by the aliasing information according to predetermined criteria. The binary translator further caused to prevent, copy propagation of values in temporary variables for decimal computations beyond offsets in the machine instructions where the temporary variables are killed. The binary translator further caused to remove identified dead store instructions, and to generate a new compiled program module comprising an optimized version of the compiled program module having strict compatibility to an original version of the compiled program module.

    Branch target buffer for emulation environments

    公开(公告)号:US11003453B2

    公开(公告)日:2021-05-11

    申请号:US16716916

    申请日:2019-12-17

    摘要: Branch instructions are managed in an emulation environment that is executing a program. A plurality of slots in a Polymorphic Inline Cache is populated. A plurality of entries is populated in a branch target buffer residing within an emulated environment in which the program is executing. When an indirect branch instruction associated with the program is encountered, a target address associated with the instruction is identified from the indirect branch instruction. At least one address in each of the slots of the Polymorphic Inline Cache is compared to the target address associated with the indirect branch instruction. If none of the addresses in the slots of the Polymorphic Inline Cache matches the target address associated with the indirect branch instruction, the branch target buffer is searched to identify one of the entries in the branch target buffer that is associated with the target address of the indirect branch instruction.

    Eliminating dead stores
    7.
    发明授权

    公开(公告)号:US11593080B1

    公开(公告)日:2023-02-28

    申请号:US17644813

    申请日:2021-12-17

    IPC分类号: G06F8/41

    摘要: Dataflow optimization by dead store elimination focusing on logically dividing a contiguous storage area into different portions by use to allow a different number and type of dataflow and dead store techniques on each portion. A first storage portion, containing the storage for control flow related metadata, is split from a remaining storage portion. Liveness analysis is executed on the first storage portion using bitvectors with each bit representing four bytes. The remaining storage portion, containing the temporary storage for computational values, is processed using a deadness-range-based dataflow analysis. IN and OUT sets for each basic block are generated by processing blocks GEN and KILL sets by performing a backwards intersection dataflow analysis. Stores that write to the set of dead ranges in the IN sets of blocks are eliminated as dead stores.

    HEXADECIMAL FLOATING POINT MULTIPLY AND ADD INSTRUCTION

    公开(公告)号:US20220283818A1

    公开(公告)日:2022-09-08

    申请号:US17194740

    申请日:2021-03-08

    IPC分类号: G06F9/38 G06F9/30 G06F9/345

    摘要: An instruction to perform an operation selected from a plurality of operations configured for the instruction is executed. The executing includes determining a value of a selected operand of the instruction. The determining the value is based on a control of the instruction and includes reading the selected operand of the instruction from a selected operand location to obtain the value of the selected operand, based on the control having a first value, and using a predetermined value as the value of the selected operand, based on the control having a second value. The value and another selected operand of the instruction are multiplied to obtain a product. An arithmetic operation is performed using the product and a chosen operand of the instruction to obtain an intermediate result. A result from the intermediate result is obtained and placed in a selected location.

    VECTOR PACK AND UNPACK INSTRUCTIONS

    公开(公告)号:US20220276866A1

    公开(公告)日:2022-09-01

    申请号:US17186756

    申请日:2021-02-26

    IPC分类号: G06F9/30

    摘要: Vector pack and unpack instructions are described. An instruction to perform a conversion between one decimal format and another decimal format is executed, in which the one decimal format or the other decimal format is a zoned decimal format. The executing includes obtaining a value from at least one register specified using the instruction. At least a portion of the value is converted from the one decimal format to the other decimal format different from the one decimal format to provide a converted result. A result obtained from the converted result is written into a single register specified using the instruction.

    Hexadecimal floating point multiply and add instruction

    公开(公告)号:US11531546B2

    公开(公告)日:2022-12-20

    申请号:US17194740

    申请日:2021-03-08

    IPC分类号: G06F9/38 G06F9/30 G06F9/345

    摘要: An instruction to perform an operation selected from a plurality of operations configured for the instruction is executed. The executing includes determining a value of a selected operand of the instruction. The determining the value is based on a control of the instruction and includes reading the selected operand of the instruction from a selected operand location to obtain the value of the selected operand, based on the control having a first value, and using a predetermined value as the value of the selected operand, based on the control having a second value. The value and another selected operand of the instruction are multiplied to obtain a product. An arithmetic operation is performed using the product and a chosen operand of the instruction to obtain an intermediate result. A result from the intermediate result is obtained and placed in a selected location.