# US 10,372,458 B2 · Method and apparatus for a self-clocked, event triggered superscalar processor

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,458 B2
- Document ID: US10372458B2
- Status: Granted
- Kind: B2
- Application number: 14/676,461
- Filed: 2015-04-01
- Published: 2016-10-06
- Granted: 2019-08-06
- Earliest claimed: 2015-04-01
- Assignees: Huawei Technologies Co., Ltd.
- Applicants: Huawei Technologies Co., Ltd.
- Inventors: Yiqun Ge; Wuxian Shi
- Web page: https://patentgrep.com/patent/US10372458B2

## CPC

- G06F 9/3814: {Implementation provisions of instruction buffers, e.g. prefetch buffer; banks}
- G06F 9/30105: {Register structure}
- G06F 9/3557: {using program counter as base address}
- G06F 9/3824: {Operand accessing}
- G06F 9/3836: {Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution}
- G06F 9/3838: {Dependency mechanisms, e.g. register scoreboarding}
- G06F 9/3842: {Speculative instruction execution}
- G06F 9/3851: {from multiple instruction streams, e.g. multistreaming}
- G06F 9/3856: {Reordering of instructions, e.g. using queues or age tags}
- G06F 9/38585: {with result invalidation, e.g. nullification}
- G06F 9/3861: {Recovery, e.g. branch miss-prediction, exception handling (error detection or correction G06F11/00)}
- G06F 9/3869: {Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking}
- G06F 9/3871: {Asynchronous instruction pipeline, e.g. using handshake signals between stages}
- G06F 9/3885: {using a plurality of independent parallel functional units}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A superscalar processor, for out of order self-timed execution, comprising a plurality of independent self-timed function units, having corresponding instruction queues for holding instructions to be executed by the function unit. The processor further comprising an instruction dispatcher configured for inputting instructions in program counter order; and determining an appropriate function unit for execution of the instruction and a resource management unit configured for monitoring the function units and signaling availability of the appropriate function unit, wherein the dispatcher only dispatches the instruction to the appropriate function unit in response to the availability signal from the resource management unit.

## Claims

### Claim 1

A processor comprising:
a plurality of parallel self-timed function units;
an instruction dispatcher configured to dispatch one or more instructions to one or more of the function units in a program counter order, the instruction dispatcher further configured to tag at least one of the one or more instructions with a dependent function unit identifier configured to identify a particular function unit for execution of a subsequent instruction; and
a plurality of event logic circuits, each of the plurality of event logic circuits being associated with a function unit of the plurality of function units, each event logic circuit being configured to trigger operation of the function unit to generate an instruction execution result in response to receiving, at the function unit, a dispatched instruction;
wherein at least one of the execution results is generated in an order different from the program counter order, and
wherein the execution result generated by the instruction tagged with the dependent function unit identifier is used as an operand by the particular function unit identified by the dependent function unit identifier in execution of the subsequent instruction.

### Claim 2 (depends on 1)

The processor of claim 1, wherein the function units are interconnected to share the execution results.

### Claim 3 (depends on 2)

The processor of claim 2, including a data memory controller connected to read the execution results; and a plurality of load address FIFO queues each assigned to respective address generation function units.

### Claim 4 (depends on 3)

The processor of claim 3, wherein the data memory controller is further configured to check if every load address conflicts with a pending store address.

### Claim 5 (depends on 3)

The processor of claim 3, wherein a resource manager triggers a store address to the memory controller.

### Claim 6 (depends on 1)

The processor of claim 1, wherein the instruction dispatcher is further configured to:
fetch instructions in program counter order; and
determine a target function unit for execution of a fetched instruction.

### Claim 7 (depends on 1)

The processor of claim 1, further including a resource manager configured to:
monitor function units; and
determine availability of target function units.

### Claim 8 (depends on 7)

The processor of claim 7, wherein the resource manager is connected to control commitment of execution results.

### Claim 9 (depends on 8)

The processor of claim 8, wherein the resource manager is self-clocked.

### Claim 10 (depends on 7)

The processor of claim 7, wherein the instruction dispatcher is further configured to:
request, from the resource manager, allocation of the target function unit; and
upon receipt of the allocation, dispatch the instruction to the target function unit.

### Claim 11 (depends on 7)

The processor of claim 7, wherein the resource manager is further configured to flag the unavailability of the target function unit when the target function unit is allocated to an instruction.

### Claim 12 (depends on 11)

The processor of claim 11, wherein the resource manager is further configured to unallocate an allocated function unit once the resource manager commits an execution result of the allocated function unit to a register file or memory.

### Claim 13 (depends on 12)

The processor of claim 12, wherein the resource manager is configured to maintain a FIFO queue, wherein an earliest allocated function unit is at a head of the FIFO queue and a later allocated function unit is at a tail of the FIFO queue.

### Claim 14 (depends on 13)

The processor of claim 13, wherein the FIFO queue comprises a plurality of subfields associated with an allocated function unit and wherein the subfields are in a same FIFO order as the allocated function units.

### Claim 15 (depends on 7)

The processor of claim 7, wherein the resource manager is event triggered.

### Claim 16 (depends on 7)

The processor of claim 7, wherein the resource manager is self-clocked.

### Claim 17 (depends on 1)

The processor of claim 1, wherein the instruction dispatcher includes a scoreboard for maintaining a history of dispatched instructions.

### Claim 18 (depends on 1)

The processor of claim 1, wherein the function unit includes an instruction buffer and the instruction is dispatched to the instruction buffer of a target function unit.

### Claim 19 (depends on 1)

The processor of claim 1, wherein the processor is implemented in a network element.
