Browse Prior Art Database

optimization of flush filtering in a processor to optimize branch flush performance.

IP.com Disclosure Number: IPCOM000249310D
Publication Date: 2017-Feb-16
Document File: 2 page(s) / 65K

Publishing Venue

The IP.com Prior Art Database

Abstract

A method for optimization of flush filtering in a processor to optimize branch flush performance is disclosed..

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 51% of the total text.

1

optimization of flush filtering in a processor to optimize branch flush performance.

Disclosed is a method for optimization of flush filtering in a processor to optimize branch flush performance..

In many processors flush filtering is achieved by comparing age tags between all flush sources that are flushing in a given cycle. Also, there may be a pending flush tag used to indication there is a recent flush that is recent enough such that younger flushes may not have been flushed out of the pipelines yet. This occurs when a that flush could be a younger arrives on the next cycle or shortly after and those younger flushes must also be filtered (suppressed). Flushes can be put in two categories branch flushes which are flushes that result from a branch that was mis-predicted and non-branch flushes which are all other flushes and can normally occur from the Load Store Unit (LSU) or from the Instruction Sequencer Unit (ISU).

Optimizing the branch flush filtering is desirable since branch flushes occur with greater frequency then non-branch flushes. In some embodiments, the instructions itag may perform branch filtering. Processors where the itags are 9 bits allows for supporting of up to 256 instructions plus a wrap bit. If the machine is running in simultaneous multi-threading (SMT) mode the 256 instructions are split between the threads.

The following are optimization to improve flush filtering: The first optimization is to compare all of the non-branch flush sources against each1. other and come up with a single non-branch flush itag. This allows for considering only the branch flush itag, a single non-branch itag, a non-branch flush itag, and the pending itag. By doing this, the implementation may adding a cycle of latency to non-branch flushes, but reduces the required number of compares and is able to better optimize the branch flushes for pd and timing. The second optimization is to use the branch itag a cycle before the branch2. executes so tha...