Method and apparatus for queue issue pointer

Data processing: database and file management or data structures – Database design – Data structure types

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C711S108000, C707S793000

Reexamination Certificate

active

06826573

ABSTRACT:

FIELD OF THE INVENTION
The field of invention relates to processor technology generally; and more specifically, to methods and apparati that may be used for an instruction fetch unit.
BACKGROUND
Processors are used in computing systems and are implemented within a semiconductor chip. Processors execute instructions in order implement a software program. The instructions used to implement a software program are stored in a memory structure (e.g., an L1 cache, L2 cache and/or system memory) and fetched by the processor prior to their being executed. Each instruction has a corresponding address that is used to obtain the instruction from a particular memory structure location.
FIG. 1
shows a circuit
100
associated with the portion of a processor that fetches instructions. Array
108
has a series of locations
101
00
through
101
n
that each store an instruction address (e.g., instruction addresses ADDRESS
1
, ADDRESS
2
or ADDRESS
3
). Array
108
serves as a temporary holding place for up to n instruction addresses. The instruction addresses waiting in array
108
have been determined by other logic (not shown in
FIG. 1
) that determines or otherwise identifies which instructions (from the range of instructions supported by the processor) should be fetched by the processor.
Each instruction address within array
108
has a corresponding RABid value. The RABid value is data structure used to identify which array location
101
00
through
101
n
a particular instruction address is stored in. For example, ADDRESS
1
has a corresponding RABid value of “02” which reflects the fact that ADDRESS
1
is stored in array location
101
02
. Similarly, ADDRESS
2
has a corresponding RABid value of “04” which reflects the fact that ADDRESS
2
is stored in array location
101
04
and ADDRESS
3
has a corresponding RABid value of “00” which reflects the fact that ADDRESS
3
is stored in array location
101
00
.
For each address offered at input node
102
b
, the address's corresponding RABid value is used to control which array location
101
00
through
101
n
will be used to store the address. For example, as seen in
FIG. 1
, the RABid value is used to select (via the select node
102
a
) which multiplexor
102
output is enabled for a particular address at input
102
b
. As another example (not shown in FIG.
1
), the multiplexor
102
and its outputs
102
c
could be respectively replaced with write logic and address/data buses. In this example, the RABid value is used to generate a write address that corresponds to the proper array location. The address is written into the proper array location via the address/data buses.
Eventually an address within array
108
“issues” as an instruction fetch. That is, when the proper moment arrives for an address within array
108
to be used as an instruction fetch from the processor, the proper address is read or otherwise received from its location within array
108
and directed to a memory structure address bus. Array control circuit
107
determines when a particular address is to be issued from the array
108
. That is, array control circuit
107
controls: 1) which address is read from array
108
; and 2) when the particular address is read from the array
108
.
As a basic example, array control circuit
107
stores each “active” RABid (i.e., a RABid currently having an address in its corresponding array
108
location) in a first-in-first-out (FIFO) queue
103
. The queue
103
typically has a depth
106
equal to the number “n” of array
108
locations. This allows the array control circuit
107
to successfully order the issuing of instruction addresses from array
108
in instances where array
108
is filled.
The RABids are stored in the queue
103
in the order in which they are used to store addresses in array
108
. For example, if ADDRESS, was first to arrive at input
102
b
followed by ADDRESS
2
and then ADDRESS
3
, the queue
103
stores the RABids in the following order: RABid:
02
, RABid:
04
, RABid:
00
. Thus RABid:
02
is serviced before RABid:
04
and RABid:
04
is serviced before RABid:
00
.
When a RABid is serviced from queue
103
, its value is used to issue the RABid's corresponding instruction address. That is, RABid:
02
will be used to issue ADDRESS
1
from array location
101
2
, RABid:
04
will be used to issue ADDRESS
2
from array location
101
04
and RABid:
00
will be used to issue ADDRESS
3
from array location
101
00
. This is accomplished by directing each RABid value from queue
103
to a unit that controls the issuing of address from array
108
. For example, as seen in
FIG. 1
, the RABid is coupled to the selection control
104
a
of a multiplexor
104
. Alternatively (not shown in FIG.
1
), the multiplexor
104
and its inputs
104
a, b
could be respectively replaced with read logic and address/data buses. In this example, the RABid value from queue
103
is used to generate a read address that corresponds to the proper array location. The address is read from the proper array location via the address/data buses. The number of outstanding issues are controlled by queue control circuit
105
. When an instruction is successfully fetched, the RABid value used for its address is returned to array control circuit
107
. Thus, if the current number of outstanding issues is at its maximum allowable value, the queue control circuit
105
can trigger the servicing of the next RABid in queue
103
upon the return of a previously serviced RABid value.


REFERENCES:
patent: 3349375 (1967-10-01), Seeber et al.
patent: 4532606 (1985-07-01), Phelps
patent: 4682284 (1987-07-01), Schrofer
patent: 4691279 (1987-09-01), Danilenko et al.
patent: 4729093 (1988-03-01), Mothersole et al.
patent: 5325522 (1994-06-01), Vaughn
patent: 5423048 (1995-06-01), Jager
patent: 5450560 (1995-09-01), Bridges et al.
patent: 5497477 (1996-03-01), Trull
patent: 5581775 (1996-12-01), Katz et al.
patent: 5592432 (1997-01-01), Vishlitzky et al.
patent: 5809280 (1998-09-01), Chard et al.
patent: 5822560 (1998-10-01), Pflum
patent: 5930359 (1999-07-01), Kempe et al.
patent: 5948060 (1999-09-01), Gregg et al.
patent: 6012134 (2000-01-01), McInerney et al.
patent: 6061777 (2000-05-01), Cheong et al.
patent: 6098166 (2000-08-01), Leibholz et al.
patent: 6173369 (2001-01-01), Nguyen et al.
patent: 6185660 (2001-02-01), Mulla et al.
patent: 6226763 (2001-05-01), Fu et al.
patent: 6240483 (2001-05-01), Gutta et al.
patent: 6292810 (2001-09-01), Richards
patent: 6363474 (2002-03-01), McCulley et al.
patent: 6381678 (2002-04-01), Fu et al.
IBM Technical Disclosure Bulletin, “Content-Addressable Memory Cell Having Only Six Transistors”, vol. 26, Issue 8, pp. 4208-4209, Jan. 1984.
IBM Technical Disclosure Bulletin, “Content-Addressable Memory Structures”, vol. 31, Issue 10, pp. 461-466, Mar. 1, 1989.
IBM Technical Disclosure Bulletin, “High Performance Static Content-Addressable Memory Cell”, vol. 32, Issue 3A, pp. 478-479, Aug. 1, 1989.
IBM Technical Disclosre Bulletin, “Contents Addressable Memory”, vol. 30, Issue 10, pp. 164-168, Mar. 1, 1988.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and apparatus for queue issue pointer does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method and apparatus for queue issue pointer, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for queue issue pointer will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3363791

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.