← Back to Patent Explorer
US5758114A Expired / Lapsed US ⏱️ 0.0 years remaining

High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor

Assignee: Advanced Micro Devices Inc
•
Filing: 1997-05-28
•
Granted: 1998-05-26
•
Expires: 2017-05-28
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An instruction alignment unit is provided which transfers a fixed number of instructions from an instruction cache to each of a plurality of decode units. The instructions are selected from a quantity of bytes according to a predecode tag generated by a predecode unit. The predecode tag includes start-byte bits that indicate which bytes within the quantity of bytes are the first byte of an instruction. The instruction alignment unit independently scans a plurality of groups of instruction bytes, selecting start bytes and a plurality of contiguous bytes for each of a plurality of issue positions. Initially, the instruction alignment unit selects a group of issue positions for each of the plurality of groups of instructions. The instruction alignment unit then shifts and merges the independently produced issue positions to produce a final set of issue positions for transfer to a plurality of decode units.

Inventors

  • 👤 William M. Johnson
  • 👤 David B. Witt
  • 👤 Thang Tran

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 17:24
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3802; G06F9/3816; G06F9/30145; G06F9/30149; G06F9/30152; G06F9/3818; G06F9/382

Claims Analysis

Total Claims: 25
Claim 1
Independent Claim 330 words
An instruction alignment unit for transferring instructions from an instruction cache to a plurality of decode units, comprising: an input port configured to transfer a plurality of groups of instruction bytes; a first instruction channelling unit coupled to said input port wherein said first instruction channelling unit is configured to select a first plurality of instruction bytes from a first of said plurality of groups of instruction bytes transferred by said input port; a second instruction channelling unit coupled to said input port wherein said second instruction channelling unit is configured to select a second plurality of instruction bytes from a second of said plurality of groups of instruction bytes transferred by said input port, wherein said second instruction channelling unit is configured to select said second plurality of instruction bytes concurrently with and independently of said first instruction channelling unit selecting said first plurality of instruction bytes; a third instruction channelling unit coupled to said first instruction channelling unit and to said second instruction channelling unit wherein said third instruction channelling unit is configured to merge said first plurality of instruction bytes and said second plurality of instruction bytes into a merged plurality of instruction bytes to form a merged set of variable byte length instructions; an output port coupled to said third instruction channelling unit wherein said output port is configured to transfer a plurality of instruction bytes to said plurality of decode units; and a control unit coupled to said first, second and third instruction channelling units and configured to control said first second and third instruction channelling units in response to predecode information indicative of a starting position at said input port of each instruction forming said merged set of variable byte-length instructions; wherein said third instruction channelling unit is further configured to shift said second plurality of instruction bytes by a number of byte positions which is dependent upon a number of start bytes within said first of said plurality of groups of instruction bytes.
Claim 2
Dependent Claim 330 words
An instruction alignment unit for transferring instructions from an instruction cache to a plurality of decode units, comprising: an input port configured to transfer a plurality of groups of instruction bytes; a first instruction channelling unit coupled to said input port wherein said first instruction channelling unit is configured to select a first plurality of instruction bytes from a first of said plurality of groups of instruction bytes transferred by said input port; a second instruction channelling unit coupled to said input port wherein said second instruction channelling unit is configured to select a second plurality of instruction bytes from a second of said plurality of groups of instruction bytes transferred by said input port, wherein said second instruction channelling unit is configured to select said second plurality of instruction bytes concurrently with and independently of said first instruction channelling unit selecting said first plurality of instruction bytes; a third instruction channelling unit coupled to said first instruction channelling unit and to said second instruction channelling unit wherein said third instruction channelling unit is configured to merge said first plurality of instruction bytes and said second plurality of instruction bytes into a merged plurality of instruction bytes to form a merged set of variable byte length instructions; an output port coupled to said third instruction channelling unit wherein said output port is configured to transfer a plurality of instruction bytes to said plurality of decode units; and a control unit coupled to said first, second and third instruction channelling units and configured to control said first second and third instruction channelling units in response to predecode information indicative of a starting position at said input port of each instruction forming said merged set of variable byte-length instructions; wherein said third instruction channelling unit is further configured to shift said second plurality of instruction bytes by a number of byte positions which is dependent upon a number of start bytes within said first of said plurality of groups of instruction bytes.
Claim 3
Dependent Claim 49 words
The instruction alignment unit as recited in claim 1 wherein said input port is further configured to transfer a plurality of groups of instruction bytes which are stored in a plurality of blocks of memory, and wherein said plurality of blocks of memory are stored in said instruction cache.
Claim 4
Dependent Claim 57 words
The instruction alignment unit as recited in claim 2 wherein said input port is further configured to transfer a plurality of groups of instruction bytes which are stored in a plurality of blocks of memory wherein a first of said plurality of blocks of memory and a second of said plurality of blocks of memory are contiguous.
Claim 5
Independent Claim 208 words
A method for selecting variable length instructions from a plurality of groups of instruction bytes comprising: detecting predecode information indicative of positions of starting bytes among said plurality of groups of instruction bytes; selecting, in response to said predecode information, a first plurality of instruction bytes comprising a first start byte and a fixed number of contiguous bytes from one of said plurality of groups of instructions; selecting, in response to said predecode information, a second plurality of instruction bytes comprising a second start byte and said fixed number of contiguous bytes from another of said plurality of groups of instructions concurrently with and independently of said selecting said first plurality of instruction bytes; shifting said second plurality of instruction bytes by a number of bytes dependent upon a number of start bytes within said one of said plurality of groups of instructions, thereby creating a shifted plurality of instruction bytes; and merging said first plurality of instruction bytes with said shifted plurality of instruction bytes thereby creating a merged plurality of instruction bytes to form a merged set of instructions, wherein said merging is performed such that said shifted plurality of instruction bytes follow said first plurality of instruction bytes within said merged plurality of instruction bytes.
Claim 6
Independent Claim 208 words
A method for selecting variable length instructions from a plurality of groups of instruction bytes comprising: detecting predecode information indicative of positions of starting bytes among said plurality of groups of instruction bytes; selecting, in response to said predecode information, a first plurality of instruction bytes comprising a first start byte and a fixed number of contiguous bytes from one of said plurality of groups of instructions; selecting, in response to said predecode information, a second plurality of instruction bytes comprising a second start byte and said fixed number of contiguous bytes from another of said plurality of groups of instructions concurrently with and independently of said selecting said first plurality of instruction bytes; shifting said second plurality of instruction bytes by a number of bytes dependent upon a number of start bytes within said one of said plurality of groups of instructions, thereby creating a shifted plurality of instruction bytes; and merging said first plurality of instruction bytes with said shifted plurality of instruction bytes thereby creating a merged plurality of instruction bytes to form a merged set of instructions, wherein said merging is performed such that said shifted plurality of instruction bytes follow said first plurality of instruction bytes within said merged plurality of instruction bytes.
Claim 7
Dependent Claim 31 words
The instruction alignment unit as recited in claim 1 wherein said first instruction channelling unit, said second instruction channelling unit, and said third instruction channelling unit further comprise pluralities of multiplexors.
Claim 8
Dependent Claim 37 words
The instruction alignment unit as recited in claim 5 wherein said first plurality of instruction bytes, said second plurality of instruction bytes, and said plurality of instruction bytes transferred by said output port are equal in number.
Claim 9
Dependent Claim 54 words
The instruction alignment unit as recited in claim 6 wherein said merged plurality of instruction bytes comprises said first plurality of instruction bytes followed by said second plurality of instruction bytes, such that said second plurality of instruction bytes have been shifted by the number of bytes in said first plurality of instruction bytes.
Claim 10
Dependent Claim 27 words
The instruction alignment unit as recited in claim 7 wherein said plurality of instruction bytes transferred by said output port is said merged plurality of instruction bytes.
Claim 11
Dependent Claim 30 words
The instruction alignment unit as recited in claim 8 wherein said control unit is configured to direct said first instruction channelling unit to select said first plurality of instruction bytes.
Claim 12
Dependent Claim 31 words
The instruction alignment unit as recited in claim 9 wherein said control unit is further configured to direct said second instruction channelling unit to select said second plurality of instruction bytes.
Claim 13
Dependent Claim 31 words
The instruction alignment unit as recited in claim 10 wherein said control unit is further configured to direct said third instruction channelling unit to select said merged plurality of instruction bytes.
Claim 14
Dependent Claim 56 words
The instruction alignment unit as recited in claim 11 wherein said control unit further comprises a control input port, and wherein said control unit is further configured to direct said first instruction channelling unit, said second instruction channelling unit, and said third instruction channelling unit according to said predecode information provided on said control input port.
Claim 15
Dependent Claim 46 words
The instruction alignment unit as recited in claim 12 wherein said information provided on said predecode control input port is start byte and end byte bits identifying start instruction bytes and end instruction bytes within said plurality of groups of instruction bytes of said input port.
Claim 16
Dependent Claim 56 words
The instruction alignment unit as recited in claim 13 wherein said control unit is further configured to direct said first instruction channelling unit to select a byte within said first of said plurality of groups of instruction bytes to be included in said first plurality of instruction bytes, and wherein said byte is a start byte.
Claim 17
Dependent Claim 44 words
The instruction alignment unit as recited in claim 14 wherein said control unit is further configured to direct said first instruction channelling unit to select a plurality of bytes contiguous to said start byte to be included in said first plurality of instruction bytes.
Claim 18
Dependent Claim 31 words
The instruction alignment unit as recited in claim 15 wherein said output port is configured to transfer said byte and said contiguous bytes to one of said plurality of decode units.
Claim 19
Dependent Claim 54 words
The instruction alignment unit as recited in claim 1 further comprising a fourth instruction channelling unit coupled to said input port wherein said fourth instruction channelling unit is further configured to select a third plurality of instruction bytes from a third of said plurality of groups of instruction bytes transferred by said input port.
Claim 20
Dependent Claim 59 words
The instruction alignment unit as recited in claim 17 further comprising a fifth instruction channelling unit coupled to said fourth instruction channelling unit wherein said fifth instruction channelling unit is configured to shift said third plurality of instruction bytes by the number of bytes in said first plurality of instruction bytes, thereby forming a shifted plurality of instruction bytes.
Claim 21
Dependent Claim 110 words
The instruction alignment unit as recited in claim 18 further comprising a sixth instruction channelling unit coupled to said fifth instruction channelling unit and further coupled to said third instruction channelling unit wherein said sixth instruction channelling unit is configured to merge said merged plurality of instruction bytes and said shifted plurality of instruction bytes into a second merged plurality of instruction bytes, and wherein said second merged plurality of instruction bytes is said merged plurality of instruction bytes followed by said third plurality of instruction bytes, such that said shifted plurality of instruction bytes is further shifted by the number of bytes in said second plurality of instruction bytes.
Claim 22
Dependent Claim 27 words
The instruction alignment unit recited in claim 19 wherein said plurality of instruction bytes transferred by said output port is said second merged plurality of instruction bytes.
Claim 23
Dependent Claim 22 words
The method as recited in claim 4 further comprising transferring said merged plurality of instruction bytes to a plurality of decode units.
Claim 24
Dependent Claim 306 words
An instruction alignment unit for transferring instructions from an instruction cache to a plurality of decode units, comprising: a first instruction channelling unit coupled to an input port wherein said first instruction channelling unit is configured to select a first plurality of instruction bytes from a first of a plurality of groups of instruction bytes transferred by said input port; a second instruction channelling unit coupled to said input port wherein said second instruction channelling unit is configured to select a second plurality of instruction bytes from a second of said plurality of groups of instruction bytes transferred by said input port, wherein said second instruction channelling unit is configured to select said second plurality of instruction bytes concurrently with and independently of said first instruction channelling unit selecting said first plurality of instruction bytes; a third instruction channelling unit coupled to said first instruction channelling unit and to said second instruction channelling unit wherein said third instruction channelling unit is configured to merge said first plurality of instruction bytes and said second plurality of instruction bytes into a merged plurality of instruction bytes to form a merged set of variable byte length instructions, and wherein said third instruction channelling unit is configured to transfer a plurality of instruction bytes to said plurality of decode units; and a control unit coupled to said first, second and third instruction channelling units and configured to control said first, second and third instruction channelling units in response to predecode information indicative of a starting position of each instruction forming said merged set of variable byte-length instructions; wherein said third instruction channelling unit is further configured to shift said second plurality of instruction bytes by a number of byte positions which is dependent upon a number of start bytes within said first of said plurality of groups of instruction bytes.
Claim 25
Dependent Claim 306 words
An instruction alignment unit for transferring instructions from an instruction cache to a plurality of decode units, comprising: a first instruction channelling unit coupled to an input port wherein said first instruction channelling unit is configured to select a first plurality of instruction bytes from a first of a plurality of groups of instruction bytes transferred by said input port; a second instruction channelling unit coupled to said input port wherein said second instruction channelling unit is configured to select a second plurality of instruction bytes from a second of said plurality of groups of instruction bytes transferred by said input port, wherein said second instruction channelling unit is configured to select said second plurality of instruction bytes concurrently with and independently of said first instruction channelling unit selecting said first plurality of instruction bytes; a third instruction channelling unit coupled to said first instruction channelling unit and to said second instruction channelling unit wherein said third instruction channelling unit is configured to merge said first plurality of instruction bytes and said second plurality of instruction bytes into a merged plurality of instruction bytes to form a merged set of variable byte length instructions, and wherein said third instruction channelling unit is configured to transfer a plurality of instruction bytes to said plurality of decode units; and a control unit coupled to said first, second and third instruction channelling units and configured to control said first, second and third instruction channelling units in response to predecode information indicative of a starting position of each instruction forming said merged set of variable byte-length instructions; wherein said third instruction channelling unit is further configured to shift said second plurality of instruction bytes by a number of byte positions which is dependent upon a number of start bytes within said first of said plurality of groups of instruction bytes.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-05-25 2001-11-24 2002-05-26 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-05-25 2005-11-24 2006-05-26 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-05-25 2009-11-24 2010-05-26 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag