G06F9/323

APPLICATION SPECIFIC INSTRUCTION-SET PROCESSOR (ASIP) ARCHITECTURE HAVING SEPARATED INPUT AND OUTPUT DATA PORTS

The invention provide an application specific instruction-set processor (ASIP) that uses a Very Long Instruction Word (VLIW) for executing atomic application specific instructions. The ASIP includes one or more units for executing a first set of atomic application specific instructions for receiving a first set of data across a plurality of input data ports in a first operation specified in an instruction word. Further, the one or more units execute a second set of atomic application specific instructions for outputting a second set of data across a plurality of output data ports in a second operation specified in the instruction word, wherein an input data port of the plurality of input data ports and a corresponding output data port of the plurality of output data ports share a same address location and are specified as operands in the instruction word. Thus, the first operation and the second operation can occur simultaneously.

Executing system call vectored instructions in a multi-slice processor

Executing system call vectored (SCV) instructions in a multi-slice processor including receiving, by an instruction fetch unit, a SCV instruction, wherein the SCV instruction is a system call from an operating system; sending the SCV instruction to a branch issue queue; determining, by the branch issue queue, that the SCV instruction is next-to-complete; issuing the SCV instruction to a branch resolution unit; and executing the SCV instruction by the branch resolution unit.

AN APPARATUS AND METHOD FOR CONTROLLING INSTRUCTION EXECUTION BEHAVIOUR
20180225120 · 2018-08-09 ·

An apparatus and method are provided for controlling instruction execution behaviour. The apparatus includes a set of data registers for storing data values, and a set of bounded pointer storage elements, where each bounded pointer storage element stores a pointer having associated range information indicative of an allowable range of addresses when using that pointer. A control storage element stores a current instruction context, and that current instruction context is used to influence the behaviour of at least one instruction executed by processing circuitry, that at least one instruction specifying a pointer reference for a required pointer, where the pointer reference is within at least a first subset of values (in one embodiment the behaviour is influenced irrespective of the value of the required pointer). In particular, when the current instruction context identifies a default state, the processing circuitry uses the pointer reference to identify one of the data registers whose stored data value forms the required pointer. However, when the current instruction context identifies a bounded pointer state, the processing circuitry instead uses the pointer reference to identify one of the bounded pointer storage elements whose stored pointer forms the required pointer. This allows an instruction set to be provided that can be used for both bounded pointer aware code and bounded pointer unaware code, without significantly increasing the pressure on instruction set encoding space.

BRANCH TYPE LOGGING IN LAST BRANCH REGISTERS

An example processor that includes a decoder, an execution circuit, a counter, and a last branch recorder (LBR) register. The decoder may decode a branch instruction for a program. The execution circuit may be coupled to the decoder, where the execution circuit may execute the branch instruction. The counter may be coupled to the execution circuit, where the counter may store a cycle count. The LBR register coupled to the execution circuit, where the LBR register may include a counter field to store a first value of the counter when the branch instruction is executed and a type field to store type information indicating a type of the branch instruction.

ANALYSIS AND CONTROL OF CODE FLOW AND DATA FLOW
20180211046 · 2018-07-26 · ·

Technologies are provided in embodiments to analyze and control execution flow. At least some embodiments include decompiling object code of a software program on an endpoint to identify one or more branch instructions, receiving a list of one or more modifications associated with the object code, and modifying the object code based on the list and the identified one or more branch instructions to create new object code. The list of one or more modifications is based, at least in part, on telemetry data related to an execution of corresponding object code on at least one other endpoint. In more specific embodiments, a branch instruction of the one or more branch instructions is identified based, at least in part, on an absence of an instruction in the object code that validates the branch instruction.

Kick-started run-to-completion processing method that does not involve an instruction counter
10031755 · 2018-07-24 · ·

A pipelined run-to-completion processor includes no instruction counter and only fetches instructions either: as a result of being prompted from the outside by an input data value and/or an initial fetch information value, or as a result of execution of a fetch instruction. Initially the processor is not clocking. An incoming value kick-starts the processor to start clocking and to fetch a block of instructions from a section of code in a table. The input data value and/or the initial fetch information value determines the section and table from which the block is fetched. A LUT converts a table number in the initial fetch information value into a base address where the table is found. Fetch instructions at the ends of sections of code cause program execution to jump from section to section. A finished instruction causes an output data value to be output and stops clocking of the processor.

CONDITIONAL BRANCH TO AN INDIRECTLY SPECIFIED LOCATION

An instruction to perform a conditional branch to an indirectly specified location is executed. A branch address is obtained from a location in memory, the location in memory designated by the instruction. A determination is made, based on a condition code of another instruction, whether a branch is to occur, and a branch to the branch address is performed, based on determining the branch is to occur.

Hardware assisted branch transfer self-check mechanism
10025930 · 2018-07-17 · ·

Embodiments of the present disclosure are directed to a self-check application to determine whether an indirect branch execution is permissible for an executable application. The self-check application uses one or more parameters received from an execution profiling module to determine whether the indirect branch execution is permitted by one or more self-check policies.

REDUCED SAVE AND RESTORE INSTRUCTIONS FOR CALL-CLOBBERED REGISTERS
20180196676 · 2018-07-12 ·

A method and associated computer program product are disclosed for generating an executable file from an object file, the object file being associated with an architecture having a predefined calling convention designating one or more call-clobbered registers. The method comprises identifying, from a first annotation included in the object file with a function call instruction, at least one restore instruction that follows the function call instruction, the function call instruction associated with a predefined function of the object file. The at least one restore instruction corresponds to at least one of the one or more call-clobbered registers. The method further comprises determining, based on at least a first list of registers that are referenced by the predefined function, the first list being included in the object file, whether to eliminate the at least one restore instruction.

Hardware-based run-time mitigation of conditional branches

A method includes, in a processor, processing a sequence of pre-compiled instructions by an instruction pipeline of the processor. A first block of instructions is identified in the instructions flowing via the pipeline. The first block includes a conditional branch instruction that conditionally diverges execution of the instructions into at least first and second flow-control traces that differ from one another in multiple instructions and converge at a given instruction that is again common to the first and second flow-control traces. A second block of instructions, which is logically equivalent to the first block but replaces the first and second flow-control traces by a single flow-control trace, is created by the processor at runtime. The pipeline is caused to execute the second block instead of the first block.