# US 7,610,476 B1 · Multiple control sequences per row of microcode ROM

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

- Number: US 7,610,476 B1
- Document ID: US7610476B1
- Status: Granted
- Kind: B1
- Application number: 10/729,331
- Filed: 2003-12-05
- Granted: 2009-10-27
- Earliest claimed: 2003-12-05
- Assignees: Advanced Micro Devices, Inc.
- Inventors: Teik-Chung Tan; Gregory William Smaus
- Web page: https://patentgrep.com/patent/US7610476B1

## CPC

- G06F 9/28: Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
- G06F 9/30145: {Instruction analysis, e.g. decoding, instruction word fields}
- G06F 9/3853: {of compound instructions}
- G06F 9/3854: {Instruction completion, e.g. retiring, committing or graduating}
- G06F 9/3856: {Reordering of instructions, e.g. using queues or age tags}
- G06F 9/3858: {Result writeback, i.e. updating the architectural state or memory}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Various embodiments of methods and systems for storing multiple groups of microcode operations and corresponding control sequences per row of microcode ROM are disclosed. In one embodiment, an integrated circuit may include a microcode ROM coupled to a control sequence logic unit. The microcode ROM may store multiple groups of microcode operations per row. For each group of microcode operations stored in a row, a corresponding control sequence may also be stored in the row. Each group of microcode operations may be included in a microcode routine. The groups of microcode operations stored in a row may be included in the same microcode routine, or some of the groups may be included in different microcode routines.

## Claims

### Claim 1

A microprocessor, comprising:
a microcode ROM, wherein a row in the microcode ROM stores a plurality of groups of microcode operations, wherein a group of the plurality of groups of microcode operations is comprised in a microcode routine, and wherein the row stores an associated control sequence for each of the plurality of groups of microcode operations; and
a control sequence logic unit coupled to the microcode ROM, wherein in response to accessing the group of microcode operations comprised in the microcode routine, the control sequence logic unit is configured to use the control sequence associated with the group of microcode operations to identify an other row storing one or more next groups of microcode operations comprised in the microcode routine.

### Claim 2 (depends on 1)

The microprocessor of claim 1, wherein at least one of the plurality of groups of microcode operations stored in the row is part of a different microcode routine.

### Claim 3 (depends on 1)

The microprocessor of claim 1, wherein the control sequence logic unit is configured to identify which of a plurality of groups of microcode operations stored in the other row of the microcode ROM are comprised in the microcode routine based on information contained in the control sequence associated with the group of microcode operations stored in the row.

### Claim 4 (depends on 3)

The microprocessor of claim 3, wherein if fewer than all of a plurality of groups of microcode operations stored in the other row of the microcode ROM are comprised in the microcode routine, the control sequence logic unit is configured to substitute NOPs for the microcode operations comprised in the groups not comprised in the microcode routine when outputting the row to the scheduler.

### Claim 5 (depends on 1)

The microprocessor of claim 1, wherein if the group of microcode operations comprises at least one branch operation, the control sequence logic unit is configured to identify the next group of microcode operations in the microcode routine dependent on a branch prediction as well as the control sequence associated with the group of microcode operations.

### Claim 6 (depends on 1)

The microprocessor of claim 1, wherein the microcode ROM is divided into a plurality of segments, wherein a same number of groups of microcode operations is stored in each row of a given one of the plurality of segments, and wherein each row in the given one of the plurality of segments stores a different number of groups of microcode operations than each row in each other one of the plurality of segments.

### Claim 7 (depends on 6)

The microprocessor of claim 6, wherein groups of microcode operations stored in a same one of the plurality of segments have a same maximum width.

### Claim 8 (depends on 7)

The microprocessor of claim 7, wherein groups of microcode operations stored in one of the plurality of segments have a maximum width that is different from a maximum width of groups of microcode operations stored in another one of the plurality of segments.

### Claim 9 (depends on 8)

The microprocessor of claim 8, wherein one of the plurality of segments stores one group of microcode operations and one associated control sequence per row.

### Claim 10 (depends on 6)

The microprocessor of claim 6, wherein the control sequence logic unit is configured to identify a position of one or more groups of microcode operations and a position of one or more control sequences dependent on which of the plurality of segments of the microcode ROM stores the one or more groups of microcode operations.

### Claim 11 (depends on 1)

The microprocessor of claim 1, wherein a plurality of groups of microcode operations stored in the other row of the microcode ROM are comprised in the microcode routine and are output during a single access.

### Claim 12

A computer system, comprising:
a system memory; and
a microprocessor coupled to the system memory, comprising:
a microcode ROM, wherein a row in the microcode ROM stores a plurality of groups of microcode operations, wherein one of the plurality of groups of microcode operations is comprised in a particular microcode routine, and wherein the row stores an associated control sequence for each of the plurality of groups of microcode operations; and
a control sequence logic unit coupled to the microcode ROM, wherein in response to accessing the group of microcode operations comprised in the microcode routine, the control sequence logic unit is configured to use the control sequence associated with the group of microcode operations to identify an other row storing one or more next groups of microcode operations comprised in the microcode routine.

### Claim 13 (depends on 12)

The computer system of claim 12, wherein at least one of the plurality of groups of microcode operations stored in the row is part of a different microcode routine.

### Claim 14 (depends on 12)

The computer system of claim 12, wherein the control sequence logic unit is configured to identify which of a plurality of groups of microcode operations stored in the other row of the microcode ROM are comprised in the microcode routine, based on information contained in the control sequence associated with the group of microcode operations stored in the row.

### Claim 15 (depends on 14)

The computer system of claim 14, wherein if fewer than all of a plurality of groups of microcode operations stored in the other row of the microcode ROM are comprised in the microcode routine, the control sequence logic unit is configured to substitute NOPs for the microcode operations comprised in the groups not comprised in the microcode routine when outputting the row to the scheduler.

### Claim 16 (depends on 12)

The computer system of claim 12, wherein if the group of microcode operations comprises at least one branch operation, the control sequence logic unit is configured to identify the next group of microcode operations in the microcode routine dependent on branch prediction as well as the control sequence associated with the group of microcode operations.

### Claim 17 (depends on 12)

The computer system of claim 12, wherein the microcode ROM is divided into a plurality of segments, wherein a same number of groups of microcode operations is stored in each row of any of the plurality of microcode ROM segments, and wherein the number of groups of microcode operations stored in a row in one of the plurality of microcode ROM segments differs from the number of groups of microcode operations stored in a row in another one of the plurality of microcode ROM segments.

### Claim 18 (depends on 17)

The computer system of claim 17, wherein groups of microcode operations stored in any one of the plurality of microcode ROM segments have a same maximum width.

### Claim 19 (depends on 18)

The computer system of claim 18, wherein groups of microcode operations stored in one of the plurality of microcode ROM segments have a maximum width that is different from a maximum width of groups of microcode operations stored in another one of the plurality of microcode ROM segments.

### Claim 20 (depends on 19)

The computer system of claim 19, wherein one of the plurality of microcode ROM segments stores one group of microcode operations and one associated control sequence per row.

### Claim 21 (depends on 17)

The computer system of claim 17, wherein the control sequence logic unit is configured to identify a position of one or more groups of microcode operations within a row and their associated control sequences dependent on which of the plurality of segments of the microcode ROM stores the one or more groups of microcode operations.

### Claim 22 (depends on 12)

The computer system of claim 12, wherein a plurality of groups of microcode operations stored in the other row of the microcode ROM and comprised in the microcode routine are output during a single access.

### Claim 23

A method, comprising:
storing a plurality of groups of microcode operations and a plurality of control sequences in a row in a microcode ROM, wherein each of the plurality of control sequences is associated with a respective one of the groups of microcode operations; and
in response to accessing one of the plurality of groups of microcode operations, using the one of the plurality of control sequences associated with that one of the plurality of groups to identify a next group of microcode operations to output from the microcode ROM.

### Claim 24 (depends on 23)

The method of claim 23, further comprising identifying the next group of microcode operations based on one or more branch predictions as well as the one of the plurality of control sequences if the one of the plurality of groups of microcode operations includes one or more branch operation.

### Claim 25 (depends on 23)

The method of claim 23, further comprising substituting NOPs for one or more groups of microcode instructions stored in a same row as the next group of microcode operations dependent on the one of the plurality of control sequences.

### Claim 26 (depends on 25)

The method of claim 25, wherein the groups of microcode operations comprised in the microcode routine and the NOPs are output as a single line.

### Claim 27

A system, comprising:
a microcode ROM, wherein a row in the microcode ROM stores a plurality of groups of microcode operations and wherein the row stores an associated control sequence for each of the plurality of groups; and
means for accessing a control sequence associated with one of the plurality of groups of microcode operations and responsively accessing a next group of microcode operations stored in the microcode ROM.
