Hintergrund der ErfindungBackground of the invention
1. Gebiet
der Erfindung1st area
the invention
Die
Erfindung bezieht sich auf das Gebiet von Speicher-Systemen und
insbesondere auf den seitenweisen Betrieb bzw. den Seitenmodus von Speichersystemen.The
The invention relates to the field of memory systems and
in particular, the page mode or page mode of storage systems.
2. Beschreibung des Standes
der Technik2. Description of the state
of the technique
Speicher-Systeme
enthalten typischerweise dynamische Speicher mit wahlfreiem Zugriff
(DRAM) vom einen oder anderen Typ. DRAM können asynchrone DRAM umfassen,
synchrone DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR SDRAM),
SyncLink DRAM (SLDRAM), Rambus-DRAM (RDRAM) etc. Im Allgemeinen
sind DRAM-Speicher in einer Matrix von Speicherstellen aufgebaut,
die in Reihen und Spalten angeordnet sind. Um auf eine bestimmte
Speicherstelle in dem DRAM Zugriff zu erhalten (z.B. zum Lesen oder Schreiben),
empfängt
der DRAM eine Reihen-Adresse, welche die Reihe auswählt, in
der sich die Speicherstelle befindet, und eine Spalten-Adresse,
welche die Spalte auswählt,
in der sich die Speicherstelle befindet. Jede Speicherstelle kann
in der Lage sein, ein oder mehr Bits zu speichern. Die Reihen- und
Spalten-Adressen werden typischerweise auf einen Satz von Adressen-Leitungen
gemultiplext. Auf diese Weise kann auf eine DRAM-Speicherstelle
zugegriffen werden durch Übertragen
der Reihen-Adresse auf den Adressen-Leitungen und anschließendes Übertragen
der Spalten-Adresse auf den Adressen-Leitungen.Memory Systems
typically contain dynamic random access memory
(DRAM) of one type or another. DRAM may include asynchronous DRAM,
synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM),
SyncLink DRAM (SLDRAM), Rambus DRAM (RDRAM) etc. In general
DRAM memories are built in a matrix of memory locations,
which are arranged in rows and columns. To be on a specific
Memory location in the DRAM (e.g., for reading or writing),
receives
the DRAM selects a row address which selects the row in
where the location is, and a column address,
which selects the column,
in which the storage location is located. Each location can
to be able to store one or more bits. The series and
Column addresses are typically on a set of address lines
multiplexed. This way, you can access a DRAM location
accessed by transfer
the row address on the address lines and then transmitting
the column address on the address lines.
Um
eine verkürzte
Wartezeit bzw. Verzögerung
("latency") zu ermöglichen,
wenn auf mehrere Speicherstellen in der gleichen Reihe nacheinander zugegriffen
wird, unterstützen
die meisten DRAMs einen seitenweisen Betrieb bzw. Seitenmodus. Beim Seitenmodus
wird die Reihen-Adresse an den DRAM und danach die Spalten-Adresse der ersten
Speicherstelle übertragen,
auf die zugegriffen werden soll. Um auf weitere Speicherstellen
in derselben Reihe zuzugreifen, werden dann die Spalten-Adressen der
weiteren Speicherstellen übermittelt,
ohne die Reihen-Adresse erneut zu übertragen. Dadurch kann auf
die weiteren Speicherstellen in einer kürzeren Zeit zugegriffen werden,
als auf die anfängliche
Speicherstelle, da die Reihen-Adresse nicht jedes Mal erneut übertragen
werden muss. Die durch eine Reihen-Adresse ausgewählten Speicherstellen
werden hier als eine "Seite" bezeichnet. Das
Halten der Seite im ausgewählten
bzw. geöffneten
Zustand, so dass lediglich Spalten-Adressen verwendet werden, um auf
andere Speicherstellen in derselben Seite zuzugreifen, wird als
Offenhalten der Seite bezeichnet, und das Deselektieren der Reihe,
so dass eine neue Reihen-Adresse für den Zugriff auf eine andere
Speicherstelle übertragen
werden kann, wird als Schließen
der Seite bezeichnet. DRAMs, wie zum Beispiel SDRAMs beinhalten
Bänke von
Reihen und Spalten. In solchen DRAMs kann die Seite aus einer Reihe
innerhalb einer Bank bestehen. Eine Seite wurde hier zwar unter
Bezugnahme auf DRAMs beschrieben, eine Seite kann sich aber auch
auf Speicherstellen in irgendeinem Speicher beziehen, die eine Speicherstelle
für einen
Zugriff in Abhängigkeit
von einer Reihen-Adresse und einer Spalten-Adresse selektiert.Around
a shortened one
Waiting time or delay
to allow ("latency")
when multiple memory locations in the same row are accessed sequentially
will support
Most DRAMs perform page mode or page mode. In page mode
is the row address to the DRAM and then the column address of the first
Transfer memory location,
to be accessed. To more storage locations
in the same row, then the column addresses of the
transmitted to further storage locations,
without retransmitting the row address. This can be up
the more memory locations are accessed in a shorter time,
than on the initial one
Location because the row address does not retransmit every time
must become. The memory locations selected by a row address
are referred to here as a "page". The
Keep the page in the selected one
or opened
State, so only column addresses are used to
accessing other locations in the same page is called
Keeping the page open, and deselecting the row,
giving a new row address for accessing another one
Transfer storage location
can be, is called closing
the page designates. DRAMs, such as SDRAMs include
Benches of
Rows and columns. In such DRAMs, the page can be out of a row
within a bank. One page was indeed under here
Reference to DRAMs described a page may as well
refer to memory locations in any memory which is a memory location
for one
Access dependent
selected from a row address and a column address.
Der
Seitenmodus ist jedoch nicht ohne Nachteil. Der Seitenmodus wird
insbesondere durch das Halten der Seite innerhalb des DRAM im selektierten Zustand
gehemmt. Bei asynchronen DRAMs wird die Reihe selektiert durch Aktivieren
eines Reihen-Adressen-Impuls-Signals (RAS) und Senden der Reihen-Adresse auf den Adressen-Leitungen.
Bei synchronen DRAMs wird ein Aktivierungsbefehl zusammen mit der
Reihen-Adresse an den DRAM übertragen.
In Abhängigkeit
von der Reihen-Adresse liest der DRAM die Seite in eine temporäre Speicherstelle,
die mit dem DRAM-Speicher gekoppelt ist (beispielsweise dem Leseverstärker, der
zum Lesen der Daten in den Speicherstellen oder in einer anderen getakteten
Speichervorrichtung verwendet wird). Die Seite verbleibt so lange
in dem temporären
Speicher wie die Seite geöffnet
ist (z.B. so lange wie das Adressen-Impuls-Signal RAS in einem asynchronen DRAM
aktiviert bleibt oder bis in einem synchronen DRAM ein Befehl gesendet
wird, die Reihe zu schließen).
Dadurch wird, wenn ein Zugriff auf eine Speicherstelle in einer
anderen Seite erfolgen soll, der Zugriff verzögert, während die vorhergehende Seite
geschlossen wird (durch ein „Deassert"-Adressen-Impuls-Signal
RAS oder durch Senden des Befehls, die Seite zu schließen). Die
verlaufende Zeit, während die
vorangehende Seite geschlossen wird, verlängert die Verzögerung für diesen
Zugriff im Vergleich dazu, wenn die Seite mit der Vervollständigung
des vorgehenden Zugriffs geschlossen worden wäre.Of the
However, page mode is not without its disadvantage. The page mode becomes
in particular by holding the page within the DRAM in the selected state
inhibited. For asynchronous DRAMs, the row is selected by activating
a row address strobe signal (RAS) and sending the row address on the address lines.
For synchronous DRAMs, an activation command is used together with the
Transfer row address to the DRAM.
Dependent on
from the row address, the DRAM reads the page into a temporary memory location,
which is coupled to the DRAM memory (for example, the sense amplifier, the
for reading the data in the memory locations or in another clocked one
Storage device is used). The page stays that way
in the temporary
Memory like the page opened
is (for example, as long as the address pulse signal RAS in an asynchronous DRAM
remains active or sent a command in a synchronous DRAM
will close the series).
This will, when accessing a memory location in a
other side, the access is delayed while the previous page
is closed (by a "Deassert" address pulse signal
RAS or by sending the command to close the page). The
running time while the
closed previous page, extends the delay for this
Access compared to when the page with the completion
the previous access would have been closed.
Typischerweise
sind Speicher-Controller so konfiguriert, um einen Seitenmodus zu
ermöglichen oder
zu deaktivieren, und können
auf unterschiedliche Strategien für den Seitenmodus programmiert werden.
Die existierenden Mechanismen erlauben jedoch keine Feinzugriffs-Steuerung
darüber,
ob eine Seite, die mit einem bestimmten Speicherzugriff korrespondiert,
in geöffnetem
Zustand beibehalten werden soll oder nicht. Dadurch werden Seiten
regelmäßig geschlossen,
auch wenn es vorteilhaft. wäre,
diese im geöffneten
Zustand zu halten, und die Seiten werden regelmäßig in geöffnetem Zustand gehalten, auch
wenn es vorteilhaft wäre,
diese zu schließen.typically,
Memory controllers are configured to enter a page mode
allow or
to disable, and can
be programmed to different strategies for the page mode.
However, the existing mechanisms do not allow fine-access control
about that,
whether a page that corresponds to a specific memory access
in open
State should be maintained or not. This will become pages
regularly closed,
even if it is advantageous. would,
these in the open
Condition, and the pages are regularly kept open, too
if it were beneficial
to close this.
Zusammenfassung
der ErfindungSummary
the invention
Die
oben genannten Probleme werden zum überwiegenden Teil gelöst durch
ein System mit einem Agent und einem Speicher-Controller, wie hier beschrieben.
Der Agent kann Transaktionen initiieren, die auf einen Speicher
gerichtet sind, an den der Speicher-Controller gekoppelt ist (der
Speicher kann z.B. eine Art von DRAM sein). Speicher-Transaktionen
können
eine Seiten-Hinweis-Angabe enthalten. Die Seiten-Hinweis-Angabe
wird während
der Transaktion durch den Agent übermittelt
und kann einen Hinweis enthalten, ob die durch die Transaktion adressierte
Seite offengehalten oder geschlossen werden soll. In anderen Worten
kann die Angabe einen Hinweis durch den Agent hinsichtlich des Schließens oder
des Offenhaltens der Seite darstellen. Ein Agent kann anzeigen,
dass die Seite offengehalten werden soll, wenn eine zusätzliche
Transaktion oder Transaktionen innerhalb der gleichen Seite des
Speichers wahrscheinlich sind (z.B. wenn der Agent selbst zusätzliche
Transaktionen innerhalb derselben Seite übermittelt oder übermitteln
wird). In solchen Fällen
kann der Agent mittels der Seiten-Hinweis-Angabe anzeigen, dass
die betreffende Seite geöffnet bleiben
soll. Die zusätzlichen
Transaktionen können Seitenmodus-Hinweis-Verzögerungen
erfahren. In anderen Fällen
kann der Agent anzeigen, dass die Seite geschlossen werden soll.
Zusätzliche
Transaktionen oder Seiten können
die für
das Schließen
der Seite erforderliche Verzögerung
nicht erfahren, wenn die Seite in Reaktion auf den Seiten-Hinweis
geschlossen wird. Dadurch kann in dem System aufgrund des effizienteren
Einsatzes des Seitenmodus eine Verringerung der gesamten Speicher-Verzögerung realisiert
werden.The
above problems are solved by the majority
a system with an agent and a memory controller as described herein.
The agent can initiate transactions that are in memory
to which the memory controller is coupled (the
Memory can e.g. a kind of DRAM). Memory transactions
can
include a page hint indication. The page hint
is during
the transaction is submitted by the agent
and may contain an indication of whether the one addressed by the transaction
Page to be kept open or closed. In other words
the indication may be an indication by the agent regarding closing or
of keeping the page open. An agent can show
that the page should be kept open if an additional
Transaction or transactions within the same page of the
Memory are likely (e.g., if the agent itself is additional
Transmit or transmit transactions within the same page
becomes). In such cases
the agent can use the page hint indication to indicate that
the page in question remains open
should. The additional
Transactions can cause page mode hint delays
Experienced. In other cases
the agent can indicate that the page should be closed.
additional
Transactions or pages can
the for
the closing
the page required delay
Do not learn if the page in response to the page hint
is closed. This can be due to the more efficient in the system
Using the page mode realized a reduction in the total memory delay
become.
Der
Speicher-Controller kann eine Seiten-Hinweis-Angabe empfangen. Beim
Zugreifen auf die Speicherstelle(n) in dem Speicher in Reaktion
auf die Speicher-Transaktion,
kann der Speicher-Controller in Abhängigkeit von der Seiten-Hinweis-Angabe die Seite
im geöffneten
Zustand beibehalten oder schließen.
Auf diese Weise wird eine Feinzugriffs-Steuerung zur Verfügung gestellt
darüber,
welche Seiten in geöffnetem
Zustand bleiben und welche Seiten geschlossen werden. Das heißt, dass
jeder Agent auf der Basis von Transaktion zu Transaktion entscheiden
kann, ob bestimmte Seiten geöffnet bleiben
sollen oder geschlossen werden sollen. Da der anfragende Agent über Informationen
verfügen kann,
ob zusätzliche
Transaktionen für
diese Seite wahrscheinlich sind, und eine entsprechende Seiten-Hinweis-Angabe übermitteln
kann, können
Seiten häufiger
geöffnet
bleiben, wenn es vorteilhaft ist, dies zu tun und die Seiten können häufiger geschlossen
werden, wenn es vorteilhaft ist, dies zu tun.Of the
Memory controller can receive a page hint indication. At the
Accessing the memory location (s) in the memory in response
on the store transaction,
The memory controller may page depending on the page hint indication
in the open
Maintain or close state.
In this way, a fine-access control is provided
about that,
which pages in open
State and which pages are closed. It means that
Each agent will decide on a transaction-by-transaction basis
can see if certain pages remain open
should or should be closed. Because the requesting agent has information
can have,
whether additional
Transactions for
this page is likely, and submit a corresponding page hint indication
can, can
Pages more often
open
stay if it is beneficial to do so and the pages can be closed more frequently
if it is beneficial to do so.
Allgemein
formuliert wird ein System betrachtet, das einen Agent und einen
Speicher-Controller umfasst. Der Agent ist so konfiguriert, dass
er eine erste Transaktion initiiert und eine Seiten-Hinweis-Angabe
während
der ersten Transaktion übermittelt.
Die Seiten-Hinweis-Angabe zeigt an, ob eine durch die erste Transaktion
adressierte Seite geöffnet
bleiben soll oder nicht. Der Speicher-Controller ist zum Empfangen der Seiten-Hinweis-Angabe
gekoppelt und so konfiguriert, dass er die Seite in einem an den
Speicher-Controller gekoppelten Speicher in Abhängigkeit von der Seiten-Hinweis-Angabe
geöffnet halten
kann.Generally
formulated is considered a system that has an agent and a
Memory controller includes. The agent is configured to
he initiates a first transaction and a page hint indication
while
the first transaction.
The page hint indication indicates whether one by the first transaction
addressed page opened
should stay or not. The memory controller is to receive the page hint indication
coupled and configured so that it fits the page in one of the
Memory controller coupled memory depending on the page hint indication
keep it open
can.
Außerdem wird
ein Agent beschrieben. Der Agent umfasst einen Schaltkreis, der
so konfiguriert ist, dass er eine erste Transaktion initiiert und
eine Seiten-Hinweis-Angabe
während
der ersten Transaktion übermittelt.
Die Seiten-Hinweis-Angabe zeigt an, ob eine durch die erste Transaktion
adressierte Seite geöffnet
bleiben soll oder nicht.In addition, will
an agent described. The agent includes a circuit that
is configured to initiate a first transaction and
a page hint
while
the first transaction.
The page hint indication indicates whether one by the first transaction
addressed page opened
should stay or not.
Darüber hinaus
wird ein Speicher-Controller betrachtet, der eine Wartereihe und
einen daran gekoppelten Schaltkreis umfasst. Die Wartereihe ist eingerichtet,
um eine erste Transaktion und eine zu der ersten Transaktion korrespondierende
Seiten-Hinweis-Angabe
zu empfangen. Die Seiten-Hinweis-Angabe zeigt an, ob eine durch
die erste Transaktion adressierte Seite geöffnet bleiben soll oder nicht.
Der Schaltkreis ist so konfiguriert, dass er mit einem durch die
erste Transaktion adressierten Speicher kommuniziert, wobei der
Schaltkreis konfiguriert ist, um die Seite in Abhängigkeit
von der Seiten-Hinweis-Angabe wahlweise geöffnet zu halten.Furthermore
Consider a memory controller that has a queue and
comprises a circuit coupled thereto. The queue is set up,
a first transaction and one corresponding to the first transaction
Side Note specification
to recieve. The page hint indication indicates whether a through
the first transaction addressed page should remain open or not.
The circuit is configured to go with one through the
first transaction addressed memory communicates with the
Circuit is configured to the side in dependence
from the page hint indication optionally kept open.
Es
wird ferner eine Vorrichtung beschrieben, wobei eine erste Transaktion
und eine korrespondierende Seiten-Hinweis-Angabe empfangen werden. Die
Seiten-Hinweis-Angabe
zeigt an, ob eine durch die erste Transaktion adressierte Seite
geöffnet bleiben
soll oder nicht. Die Seite wird in Reaktion auf die Seiten-Hinweis-Angabe
wahlweise im geöffneten
Zustand gehalten.It
Furthermore, a device is described, wherein a first transaction
and a corresponding page hint indication. The
Side Note specification
indicates whether a page addressed by the first transaction
stay open
should or not. The page will be in response to the page hint indication
optionally in the open
Condition kept.
Kurze Beschreibung
der ZeichnungenShort description
the drawings
Andere
Aufgaben und Vorteile der Erfindung werden aus der folgenden Beschreibung
offenbar unter Bezugnahme auf die beigefügten Zeichnungen, wobei:Other
Objects and advantages of the invention will become apparent from the following description
apparently with reference to the accompanying drawings, in which:
1 ist
ein Blockdiagramm einer Ausführungsform
eines Systems. 1 Figure 10 is a block diagram of one embodiment of a system.
2 ist
ein Blockdiagramm einer Ausführungsform
eines Adressen-Abschnitts eines in 1 gezeigten
Bus. 2 is a block diagram of one embodiment of an address portion of an in 1 shown bus.
3 ist
ein Blockdiagramm einer Ausführungsform
eines Speicher-Controllers. 3 Figure 12 is a block diagram of one embodiment of a memory controller.
4 ist
ein Flussdiagramm, das den Betrieb einer Ausführungsform eines in 3 gezeigten Kanal-Steuerungs-Schaltkreises
während
der Bearbeitung einer Transaktion zeigt. 4 FIG. 4 is a flowchart illustrating the operation of one embodiment of an in 3 shown channel control circuit during processing of a transaction.
5 ist
ein Flussdiagramm, das den Betrieb einer Ausführungsform eines DMA-Agent zeigt. 5 FIG. 10 is a flowchart showing the operation of one embodiment of a DMA agent. FIG.
6 ist
ein Flussdiagramm, das den Betrieb einer Ausführungsform eines Prozessor-Agent zeigt. 6 FIG. 10 is a flowchart illustrating the operation of one embodiment of a processor agent. FIG.
7 ist
ein Blockdiagramm einer Ausführungsform
eines Agent. 7 is a block diagram of one embodiment of an agent.
8 ist
ein Blockdiagramm einer Ausführungsform
eines Datenträger-Mediums. 8th FIG. 10 is a block diagram of one embodiment of a data carrier medium. FIG.
Die
vorliegende Erfindung kann in alternativen Ausführungsformen dargestellt werden
sowie unterschiedlichen Modifikationen unterzogen werden, so dass
besondere Ausführungsformen
der Erfindung nur als Beispiel in den Zeichnungen gezeigt und nachfolgend
im Detail beschrieben werden. Es ist jedoch selbstverständlich,
dass die Zeichnungen und die detaillierte Beschreibung nicht dazu
dienen soll, die vorliegende Erfindung auf diese bestimmten beschriebenen
Ausführungsformen
zu beschränken, sondern
nach der gegenteiligen Intention sämtliche Modifikationen, Äquivalenten
und Alternativen abzudecken, die unter den Erfindungsgedanken fallen und
innerhalb des Schutzbereichs der vorliegenden Erfindung liegen,
wie er durch die beigefügten
Ansprüche
definiert ist.The
The present invention may be illustrated in alternative embodiments
as well as undergo various modifications, so that
special embodiments
the invention shown only as an example in the drawings and below
will be described in detail. It is self-evident
that the drawings and the detailed description are not
to serve, the present invention described in this particular
embodiments
to restrict, but
according to the contrary intention, all modifications, equivalents
and to cover alternatives that fall under the inventive concept and
are within the scope of the present invention,
as he is attached by the
claims
is defined.
Detaillierte Beschreibung
der bevorzugten AusführungsformenDetailed description
of the preferred embodiments
Überblick über das SystemOverview of the system
In 1 ist
ein Blockdiagramm einer Ausführungsform
eines System 10 gezeigt. Es sind auch andere Ausführungsformen
möglich
und werden betrachtet. Bei der in 1 gezeigten
Ausführungsform umfasst
das System 10 Prozessoren 12A–12B, einen L2-Cache 14,
einen Speicher-Controller 16, ein Paar von Eingabe/Ausgabe
(I/O)-Brücken 20A–20B sowie
Eingabe/Ausgabe-Schnittstellen 22A–22D. Das System 10 kann
einen Bus 24 zum Verbinden der verschiedenen Komponenten
des Systems 10 umfassen. Wie in 1 dargestellt,
kann der Bus 24 insbesondere Entscheidungs-Leitungen 28 umfassen,
einen Adressen-Bus 30, Antwort-Leitungen 32, einen
Daten-Bus 34 und eine Zeitsignal-Leitung oder Zeitsignal-Leitungen 36.
Wie in 1 dargestellt, ist jeder der Prozessoren 12A–12B,
der L2-Cache 14, der Memory-Controller 16 und
die Eingabe/Ausgabe-Brücken 20A–20B an
den Bus 24 gekoppelt. Dadurch kann bei der dargestellten
Ausführungsform
jeder der Prozessoren 12A–12B, der L2-Cache 14,
der Speicher-Controller 16 und die Eingabe/Ausgabe-Brücken 20A–20B ein
Agent auf dem Bus 24 sein. Insbesondere kann jeder Agent
an die Zeitsignal-Leitungen) 36 und die Leitungen innerhalb
des Bus 24 gekoppelt sein, welche die Signale tragen, die
der betreffende Agent abtastet. und/oder treibt. Die Eingabe/Ausgabe-Brücke 20A ist
an die Eingabe/Ausgabe-Schnittstellen 22A–22B gekoppelt
und die Eingabe/Ausgabe-Brücke 20B ist
an die Eingabe/Ausgabe-Schnittstellen 22C–22D gekoppelt.
Der L2-Cache 14 ist an den Speicher-Controller 16 gekoppelt,
der seinerseits an einen Speicher 26 gekoppelt ist.In 1 is a block diagram of one embodiment of a system 10 shown. Other embodiments are possible and contemplated. At the in 1 In the embodiment shown, the system comprises 10 processors 12A - 12B , an L2 cache 14 , a memory controller 16 , a pair of input / output (I / O) bridges 20A - 20B as well as input / output interfaces 22A - 22D , The system 10 can a bus 24 for connecting the various components of the system 10 include. As in 1 shown, the bus can 24 in particular decision lines 28 include, an address bus 30 , Answer lines 32 , a data bus 34 and a time signal line or time signal lines 36 , As in 1 represented is each of the processors 12A - 12B , the L2 cache 14 , the memory controller 16 and the input / output bridges 20A - 20B to the bus 24 coupled. Thereby, in the illustrated embodiment, each of the processors 12A - 12B , the L2 cache 14 , the memory controller 16 and the input / output bridges 20A - 20B an agent on the bus 24 be. In particular, each agent can be connected to the time signal lines) 36 and the wires inside the bus 24 be coupled, which carry the signals that the agent in question scans. and / or drives. The input / output bridge 20A is to the input / output interfaces 22A - 22B coupled and the input / output bridge 20B is to the input / output interfaces 22C - 22D coupled. The L2 cache 14 is to the memory controller 16 coupled, in turn, to a memory 26 is coupled.
Allgemein
ausgedrückt
können
die Agenten an den Transaktionen auf dem Bus 24 partizipieren. Der
hier verwendete Begriff "Agent" bezieht sich auf eine
Vorrichtung, die in der Lage ist, auf dem Bus zu kommunizieren.
Der Agent kann ein anfragender Agent sein, wenn der Agent in der
Lage ist, Transaktionen auf dem Bus zu initiieren, und der Agent
kann ein antwortender Agent sein, wenn der Agent in der Lage ist,
auf Transaktionen zu antworten, die von einem anfragenden Agent
initiiert wurden. Ein bestimmter Agent kann die Fähigkeit
besitzen, sowohl ein anfragender Agent als auch ein antwortender Agent
zu sein. Ferner stellt eine "Transaktion" eine Kommunikation
auf den Bus dar. Die Transaktion kann einen Adressen-Transfer und
optional einen Daten-Transfer beinhalten. Transaktionen können sowohl
Lese-Transaktionen
(Transfer von Daten von dem antwortenden Agent an den anfragenden
Agent) als auch Schreib-Transaktionen (Transfer von Daten von dem
anfragenden Agent an den antwortenden Agent) sein. Transaktionen
können
ferner unterschiedliche Kohärenz-Befehle
beinhalten, die einen Transfer von Daten beinhalten können oder
nicht.Generally speaking, the agents can participate in the transactions on the bus 24 participate. The term "agent" as used herein refers to a device capable of communicating on the bus. The agent may be a requesting agent when the agent is capable of initiating transactions on the bus, and the agent may be a responding agent when the agent is able to respond to transactions made by a requesting agent were initiated. A particular agent may have the ability to be both a requesting agent and a responding agent. Further, a "transaction" represents communication on the bus. The transaction may include an address transfer and optionally a data transfer. Transactions can be both read transactions (transfer of data from the answering agent to the requesting agent) and write transactions (transfer of data from the requesting agent to the answering agent). Transactions may also include different coherency commands, which may or may not involve a transfer of data.
Transaktionen
auf den Bus. 24 können
auf Speicherstellen in dem Speicher 26 ("Speicher-Transaktionen") gerichtet sein.
Der Speicher-Controller 16 ist der antwortende Agent für die Speicher-Transaktionen,
sofern die Speicher-Transaktionen
nicht den L2-Cache 14 betreffen, wobei in diesem Fall der
L2-Cache 14 der antwortende Agent sein kann. Bei anderen
Ausführungsformen
kann auch kein L2-Cache 14 vorgesehen sein und der Speicher-Controller 16 kann
der antwortende Agent für
alle Speicher-Transaktionen sein.Transactions on the bus. 24 can access memory locations in the memory 26 ("Storage Transactions"). The memory controller 16 is the answering agent for the memory transactions unless the memory transactions are the L2 cache 14 In this case, the L2 cache 14 the answering agent can be. In other embodiments, no L2 cache can also be used 14 be provided and the memory controller 16 can be the answering agent for all storage transactions.
Speicher-Transaktionen
können
eine Seiten-Hinweis-Angabe umfassen. Die Seiten-Hinweis-Angabe kann durch den anfragenden
Agent während
der Transaktion übermittelt
werden und ein Hinweis dafür
sein, ob die durch die Transaktion adressierte Seite geöffnet bleiben
oder geschlossen werden. Mit anderen Worten kann die Seiten-Hinweis-Angabe
ein Hinweis durch den anfragenden Agent hinsichtlich des Schließens oder
des Offenhaltens der Seite sein. Beispielsweise kann ein Agent anzeigen,
dass die Seite geöffnet
bleiben soll, wenn eine zusätzliche
Transaktion oder Transaktionen innerhalb derselben Seite des Speichers wahrscheinlich
sind. Ein anfragender Agent kann beispielsweise mehrere Transaktionen
durchführen,
um auf einen Datenblock zuzugreifen, der größer ist als die Datenmenge,
die in einer Transaktion übertragbar
ist, und kann dadurch bald die zusätzlichen. Transaktionen durchführen, um
auf den gesamten Datenblock zuzugreifen. Ein anfragender Agent kann
eine Wartereihe von ausgehenden Transaktionen beinhalten, und der anfragende
Agent kann die Wartereihe überprüfen; um
festzustellen, ob sich in der Wartereihe zusätzliche Transaktionen befinden,
welche dieselbe Seite betreffen, wie eine bereits initiierte Transaktion.
Ein anfragender Agent kann sich in einem Zustand befinden, in dem
es wahrscheinlich ist, dass zusätzliche Transaktionen
derzeit nicht in der Wartereihe aufgereiht werden (z.B. ein Prozessor
stellt fest, dass er sich in einer Schleife befindet und dadurch
bei nachfolgenden Iterationen der Schleife Transaktionen zu nahegelegenen
Adressen erzeugt werden). Bei irgendeinem dieser oder anderen Fällen kann
der anfragende Agent über
die Seiten-Hinweis-Angabe anzeigen, dass die Seite geöffnet bleiben
soll: Die zusätzlichen
Transaktionen erfahren dann keine durch den Seitenmodus bedingte
Verzögerungen.
In anderen Fällen
kann der Agent anzeigen, dass die Seite geschlossen werden soll.
Wenn die Seite in Reaktion auf diesen Hinweis geschlossen wird,
erfahren zusätzliche
Transaktionen auf andere Seiten eine für das Schließen der
Seite erforderliche Verzögerung: Aufgrund
der effizienteren Anwendung des Seitenmodus, kann das System 10 eine
Verringerung der gesamten Speicher-Verzögerung realisieren.Memory transactions may include a page hint indication. The page hint indication may be transmitted by the requesting agent during the transaction and may indicate whether the page addressed by the transaction is left open or closed. In other words, the page hint indication may be an indication by the requesting agent regarding the closing or keeping open of the page. For example, an agent may indicate that the page should remain open when An additional transaction or transactions within the same page of the store are likely. For example, a requesting agent may perform multiple transactions to access a data block that is larger than the amount of data that is transferable in a transaction, and may soon become the additional. Perform transactions to access the entire data block. A requesting agent may include a queue of outgoing transactions, and the requesting agent may check the queue; to determine if there are any additional queues in the queue that are related to the same page as an already initiated transaction. A requesting agent may be in a state where it is likely that additional transactions will not currently be queued (eg, a processor finds itself in a loop and thereby proximate transactions on subsequent iterations of the loop Addresses are generated). In any of these or other cases, the requesting agent may indicate, through the page hint indication, that the page should remain open: the additional transactions will not experience any page mode delays. In other cases, the agent may indicate that the page should be closed. If the page is closed in response to this alert, additional transactions to other pages will experience a delay to close the page: due to the more efficient use of page mode, the system may 10 realize a reduction of the total memory delay.
Der
Speicher-Controller 16 kann die Seiten-Hinweis-Angabe empfangen.
Beim Zugreifen auf die Speicherstelle(n) in Reaktion auf die Speicher-Transaktion
kann der Speicher-Controller 16 die Seite in Reaktion auf
die Seiten-Hinweis-Angabe schließen oder in dem geöffneten
Zustand beibehalten. Auf diese Weise wird eine Feinzugriffs-Steuerung
bereitgestellt, welche Seiten offen zu halten sind und welche Seiten
zu schließen
sind. Das heißt,
dass jeder anfragende Agent auf der Basis von Transaktion zu Transaktion
anzeigen kann, ob bestimmte Seiten offengehalten oder geschlossen
werden sollen. Da der anfragende Agent Informationen darüber haben kann,
ob eine zusätzliche
Transaktion zu der betreffenden Seite wahrscheinlich ist oder nicht,
und eine entsprechende Seiten-Hinweis-Angabe übermitteln kann, können Seiten
häufiger
offengehalten werden, wenn es vorteilhaft ist, dies zu tun, und
Seiten können
häufiger
geschlossen gehalten werden, wenn es vorteilhaft ist, dies zu tun.The memory controller 16 can receive the page hint indication. When accessing the memory location (s) in response to the memory transaction, the memory controller may 16 close the page in response to the page hint indication or keep it in the open state. In this way, a fine access control is provided which pages to keep open and which pages to close. That is, each requesting agent can indicate, on a transaction-by-transaction basis, whether certain pages should be kept open or closed. Since the requesting agent may have information about whether an additional transaction to the page in question is likely or not and may provide a corresponding page hint indication, pages may be more frequently kept open if it is beneficial to do so, and pages can be kept closed more frequently if it is beneficial to do so.
In
einer Ausführungsform
kann die Seiten-Hinweis-Angabe während
der Adressen-Phase der
Transaktion übermittelt
werden. Bei anderen Ausführungsformen
kann die Seiten-Hinweis-Angabe während
der Daten-Phase oder zu irgendeinem anderen Zeitpunkt in der Transaktion übermittelt
werden. Bei einer Ausführungsform
kann die Seiten-Hinweis-Angabe ein Signal sein, das bestätigt "asserted" werden kann, um
die Seite anzuzeigen, die geöffnet bleiben
soll. Das Signal kann "deasserted" werden, um anzuzeigen,
dass die Seite geschlossen werden soll. In anderen Ausführungsformen
kann der Seiten-Hinweis in die Befehls-Signale auf dem Bus 24 codiert
werden (z.B. die während
der Adressen-Phase übermittelten
Befehls-Signale) oder in irgendeiner anderen geeigneten Form von
dem anfragenden Agent an den Speicher-Controller 16 übermittelt
werden.In one embodiment, the page hint indication may be communicated during the address phase of the transaction. In other embodiments, the page hint indication may be communicated during the data phase or at some other time in the transaction. In one embodiment, the page hint indication may be a signal that can be asserted to indicate the page that is to remain open. The signal may be deasserted to indicate that the page should be closed. In other embodiments, the page hint may be in the command signals on the bus 24 encoded (eg, the command signals transmitted during the address phase) or in any other suitable form from the requesting agent to the memory controller 16 be transmitted.
Der
Bus 24 kann ein geteilter Transaktions-Bus sein, wie in
der dargestellten Ausführungsform.
Ein geteilter Transaktions-Bus trennt die Adressen- und Daten-Abschnitte jeder
Transaktion und erlaubt es, den Adressen-Abschnitt (bezogen auf
die Adressen-Phase und den Daten-Abschnitt (bezogen auf die Daten-Phase)
unabhängig
voneinander zu übermitteln
bzw. zu bearbeiten. Bei der dargestellten Ausführungsform wird der Adressen-Bus 30 und
der Daten-Bus 34 (unter Verwendung von Signalen auf den
Ausgleichs-Leitungen 28) unabhängig voneinander abgearbeitet.
Jede Transaktion beinhaltet sowohl Adressen als auch Daten und beinhaltet
dadurch einen Ausgleich für
den Adressen-Bus 30, eine Adressen-Phase auf dem Adressen-Bus 30,
einen Ausgleich für
den Daten-Bus 34, und eine Daten-Phase auf dem Daten-Bus 34.
Zusätzlich
können
kohärente Transaktionen
eine Antwort-Phase auf den Antwort-Leitungen 32 zum Kommunizieren
von Kohärenz-Informationen
nach der Adressen-Phase beinhalten. Weiter unten werden zusätzliche
Details bezüglich
einer Ausführungsform
des Bus 24 angegeben. Das Bus-Zeitsignal CLK auf der/den
Zeitsignal-Leitungen 36 definiert den Zeitsignal-Zyklus
für den
Bus 24.The bus 24 may be a shared transaction bus, as in the illustrated embodiment. A shared transaction bus separates the address and data portions of each transaction and allows the address portion (related to the address phase and the data portion (related to the data phase) to be independently transmitted In the illustrated embodiment, the address bus becomes 30 and the data bus 34 (using signals on the equalization lines 28 ) processed independently. Each transaction includes both addresses and data, thereby balancing the address bus 30 , an address phase on the address bus 30 , compensation for the data bus 34 , and a data phase on the data bus 34 , Additionally, coherent transactions may have a response phase on the response lines 32 for communicating coherency information after the address phase. Further below, additional details regarding an embodiment of the bus will be provided 24 specified. The bus time signal CLK on the time signal lines 36 defines the time signal cycle for the bus 24 ,
Der
Bus 24 kann als Leitung ausgebildet sein. Der Bus 24 kann
irgendeine geeignete Signal-Technik verwenden. Beispielsweise kann
in einer Ausführungsform
die differenzielle Signal-Technik für eine Signal-Übermittlung
mit hoher Geschwindigkeit verwendet werden. In anderen Ausführungsformen kann
eine andere Signal-Technik verwendet werden (z.B. TTL, CMOS, GTL,
HSTL etc.).The bus 24 can be designed as a line. The bus 24 can use any suitable signal technique. For example, in one embodiment, the differential signal technique may be used for high speed signal transmission. In other embodiments, a different signal technique may be used (eg, TTL, CMOS, GTL, HSTL, etc.).
Die
Prozessoren 12A–12B können für irgendeine
Architektur von Instruktions-Sätzen
ausgebildet sein und Programme ausführen, die gemäß dieser
Architektur von Instruktions-Sätzen
geschrieben sind. Exemplarische Instruktions-Satz-Architekturen
können
die MEPS-Instruktions-Satz-Architektur beinhalten (einschließlich des
MIPS-3D und der MIPS
MDMX-anwendungsspezifischen Erweiterungen), die IA-32- oder IA-64-Instruktions-Satz-Architekturen
von Intel Corp. entwickelt, die PowerPC-Instruktions-Satz-Architektur, die Alpha-Instruktionssatz-Architektur,
die ARM-Instruktions-Satz-Architektur
oder irgendeine andere Instruktions-Satz-Architektur.The processors 12A - 12B may be designed for any instruction set architecture and execute programs written in instruction sets according to this architecture. Exemplary instruction set architectures may include the MEPS instruction set architecture (including the MIPS-3D and the MIPS MDMX application-specific extensions), the Intel Corp. IA-32 or IA-64 instruction set architectures. developed the PowerPC-In construction set architecture, the Alpha Instruction Set Architecture, the ARM Instruction Set Architecture or any other Instruction Set Architecture.
Der
L2-Cache 14 ist ein Hochgeschwindigkeits-Cache-Speicher.
Der L2-Cache 14 wird als "L2" bezeichnet,
da die Prozessoren 12A–12B Caches mit
dem internen Level 1 ("L1") unterstützen. Wenn Ll-Caches
in den Prozessoren 12A–12B nicht
enthalten sind, kann der L2-Cache 14 ein L1-Cache sein. Wenn
ferner Cache-Speicher
unterschiedlicher Level in den Prozessoren 12A–12B enthalten
sind, kann der L2-Cache 14 ein Cache höheren Levels sein als L2. Der
L2-Cache 14 kann irgendeine Organisation benutzen, einschließlich der
direkten Abbildung, dem assoziativen Satz und der vollständig assoziativen Organisationen.
In einer bestimmten Ausführungsform
kann der L2-Cache 14 ein 512-Kbyte-4-Wege Assoziativ-Satz-Cache
sein mit 32 Bit-Cache-Leitungen. Ein Assoziativ-Satz-Cache ist
ein in multiplen Sätzen
angeordneter Cache, wobei jeder Satz zwei oder mehr Einträge aufweist.
Ein Abschnitt der Adresse (der "Index") wird verwendet,
um einen dieser Sätze
zu selektieren (das heißt
jedes Kodieren des Index selektiert einen unterschiedlichen Satz). Die
Einträge
in dem selektierten Satz sind dazu geeignet, die Cache-Leitung zu
speichern, auf welche die Adresse zugreift. Jeder der Einträge innerhalb des
Satzes wird bezeichnet als ein "Weg" des Satzes. Der
Bereich der Adresse, der nach der Entfernung des Index (und des
Offset innerhalb der Cache-Leitung)
verbleibt, wird als "Kennzeichen" bezeichnet und ist
in jedem Eintrag gespeichert, um die Cache-Leitung in diesem Eintrag
zu identifizieren. Die gespeicherten Kennzeichen werden mit dem
korrespondierenden Kennzeichen-Abschnitt
der Adresse einer Speicher-Transaktion verglichen, um festzustellen,
ob die Speicher-Transaktion den Cache trifft oder verfehlt, und
wird verwendet, um den Weg zu selektieren, auf dem der Treffer erfasst
wird (wenn ein Treffer detektiert wird).The L2 cache 14 is a high-speed cache memory. The L2 cache 14 is called "L2" because the processors 12A - 12B Support caches with internal level 1 ("L1"). If ll caches in the processors 12A - 12B not included can be the L2 cache 14 be an L1 cache. Also, if cache levels of different levels in the processors 12A - 12B may contain the L2 cache 14 be a higher level cache than L2. The L2 cache 14 can use any organization, including direct mappings, associative sentences and fully associative organizations. In a particular embodiment, the L2 cache may be 14 be a 512 kbyte 4 way associative sentence cache with 32 Bit cache lines. An associative set cache is a multi-sentence cache, each set having two or more entries. A portion of the address (the "index") is used to select one of these sentences (that is, each coding of the index selects a different sentence). The entries in the selected set are suitable for storing the cache line accessed by the address. Each of the entries within the sentence is referred to as a "way" of the sentence. The portion of the address remaining after the removal of the index (and the offset within the cache line) is referred to as a "tag" and is stored in each entry to identify the cache line in that entry. The stored tags are compared with the corresponding tag portion of the address of a memory transaction to determine if the memory transaction hits or misses the cache, and is used to select the path on which the hit is detected (if a hit is detected).
Der
Speicher-Controller 16 ist konfiguriert, um auf den Speicher 26 in
Reaktion auf die Speicher-Transaktionen zuzugreifen, die auf dem
Bus 24 empfangen werden. Der Speicher-Controller 16 empfängt ein
Treffer-Signal vom L2-Cache 14, und wenn in dem L2-Cache 14 ein
Treffer für
eine Speicher-Transaktion detektiert wird, antwortet der Speicher-Controller 16 nicht
auf diese Memory-Transaktion. Wenn durch den L2-Cache 14 eine
Verfehlung festgestellt wird, oder die Speicher-Transaktion nicht durch den Cache zu
bearbeiten ist, kann der Speicher-Controller 16 auf den
Speicher 26 zugreifen, um eine Lese- oder Schreib-Operation
durchzuführen. Der
Speicher-Controller 16 kann ausgebildet sein, um auf irgendeinen
aus der Vielzahl von Speichertypen zuzugreifen. Beispielsweise kann
der Speicher-Controller 16 für synchrone dynamische Speicher
mit wahlfreiem Zugriff (SDRAM) und insbesondere für SDRAM
mit doppelter Datenrate (DDR) ausgebildet sein. Alternativ kann
der Speicher-Controller ausgebildet sein für DRAM, Rambus DRAM (RDRAM),
SRAM oder irgendeine andere geeignete Speichervorrichtung.The memory controller 16 is configured to access the memory 26 in response to the memory transactions that are on the bus 24 be received. The memory controller 16 receives a hit signal from the L2 cache 14 , and if in the L2 cache 14 a hit for a memory transaction is detected, the memory controller responds 16 not on this memory transaction. If through the L2 cache 14 If a misconduct is detected or the memory transaction can not be processed by the cache, the memory controller may 16 on the memory 26 access to perform a read or write operation. The memory controller 16 may be configured to access any of the plurality of memory types. For example, the memory controller 16 be designed for synchronous dynamic random access memory (SDRAM) and in particular for double data rate (DDR) SDRAM. Alternatively, the memory controller may be configured for DRAM, Rambus DRAM (RDRAM), SRAM, or any other suitable memory device.
Die
Eingabe/Ausgabe-Brücken 20A–20B verbinden
eine oder mehrere Eingabe/Ausgabe-Schnittstellen (z.B. Eingabe/Ausgabe-Schnittstellen 22A–22B für die Eingabe/Ausgabe-Brücke 20A und
die Eingabe/Ausgabe-Schnittstellen 22C–22D für die Eingabe/Ausgabe 20B)
mit dem Bus 24. Die Eingabe/Ausgabe-Brücken 20A–20B können dazu dienen,
die elektrische Ladung auf den Bus 24 zu reduzieren, wenn
mehr als eine Eingabe/Ausgabe-Schnittstelle 22A–22B durch
diese Eingabe/Ausgabe-Brücke überbrückt wird.
Generell führt
die Eingabe/Ausgabe-Brücke 20A Transaktionen
auf dem Bus 24 für
die Eingabe/Ausgabe-Schnittstellen 22A–22B durch und leitet
die an eine Eingabe/Ausgabe-Schnittstelle 22C–22D gerichteten
Transaktionen von dem Bus 24 an die Eingabe/Ausgabe-Schnittstelle 22C–22D weiter.
In einer Implementierung kann die Eingabe/Ausgabe-Brücke 20A eine Brücke zu einer
PCI-Schnittstelle (z.B. Eingabe/Ausgabe-Schnittstelle 22A) und zu
einer "Lightning-Data-Transport
(LTD)"-Eingabe/Ausgabe-Struktur
sein, die von Advanced Micro Devices Inc. entwickelt wurde (z.B.
die Eingabe/Ausgabe-Schnittstelle 22B.
Andere Eingabe/Ausgabe-Schnittstellen können durch die Eingabe/Ausgabe-Brücke 20B überbrückt sein. Andere
Implementierungen können
irgendeine Kombination von Eingabe/Ausgabe-Schnittstellen unter Verwendung
irgendeiner Kombination von Eingabe/Ausgabe-Brücken überbrücken. Die Eingabe/Ausgabe-Schnittstellen 22A–22D können einen oder
mehrere serielle Schnittstellen beinhalten, Personal Memory Computer
Card International Association (PCMCIA)-Schnittstellen, Ethernet-Schnittstellen (z.B.
Media Access Control Level Interfaces), Peripheral Component Interconnect
(PCI)-Schnittstellen, LDT-Schnittstellen etc.The input / output bridges 20A - 20B connect one or more input / output interfaces (eg input / output interfaces) 22A - 22B for the input / output bridge 20A and the input / output interfaces 22C - 22D for input / output 20B ) by bus 24 , The input / output bridges 20A - 20B can serve the electric charge on the bus 24 reduce if more than one input / output interface 22A - 22B is bridged by this input / output bridge. Generally, the input / output bridge performs 20A Transactions on the bus 24 for the input / output interfaces 22A - 22B and forwards the to an input / output interface 22C - 22D directed transactions from the bus 24 to the input / output interface 22C - 22D further. In one implementation, the input / output bridge 20A a bridge to a PCI interface (eg, input / output interface 22A) and a "Lightning Data Transport (LTD)" input / output structure developed by Advanced Micro Devices Inc. (eg, the input I / O interface 22B , Other input / output interfaces may be through the input / output bridge 20B be bridged. Other implementations may bridge any combination of input / output interfaces using any combination of input / output bridges. The input / output interfaces 22A - 22D may include one or more serial ports, Personal Memory Computer Card International Association (PCMCIA) interfaces, Ethernet interfaces (eg, Media Access Control Level Interfaces), Peripheral Component Interconnect (PCI) interfaces, LDT interfaces, etc.
Es
ist festzustellen, dass das System 10 und insbesondere
die Prozessoren 12A–12B,
der L2-Cache 14, der Speicher-Controller 16, die
Eingabe/Ausgabe-Schnittstellen 22A–22B, die Eingabe/Ausgabe-Brücken 20A–20B und
der Bus 24 in einem einzigen integrierten Schaltkreis integriert
sein können, wie
zum Beispiel als eine „system
on a chip configuration".
Der Speicher 26 kann auch in einer weiteren Konfiguration integriert
sein. Alternativ kann eine oder mehrere Komponenten als separate
integrierte Schaltkreise implementiert sein oder sämtliche
Komponenten können
je nach Bedarf als separate integrierte Schaltkreise implementiert
sein. Es kann jeder Integrationsgrad verwendet werden.It should be noted that the system 10 and in particular the processors 12A - 12B , the L2 cache 14 , the memory controller 16 , the input / output interfaces 22A - 22B , the input / output bridges 20A - 20B and the bus 24 may be integrated into a single integrated circuit, such as a "system on a chip configuration." The memory 26 can also be integrated in another configuration. Alternatively, one or more components may be implemented as separate integrated circuits, or all components may be implemented as separate integrated circuits as needed. Any degree of integration can be used.
Es
ist festzustellen, dass, obwohl in der dargestellten Ausführungsform
ein geteilter Transaktions-Bus mit separatem Ausgleich für den Adressen- und
Daten-Bus verwendet wird, andere Ausführungsformen mit nicht-geteilten
Transaktions-Bussen mit einem einzigen Ausgleich für Adressen
und Daten und/oder ein geteilter Transaktions-Bus verwendet werden
kann, bei dem der Daten-Bus nicht explizit ausgeglichen wird. Je
nach Wahl des Designs kann entweder ein zentrales Ausgleichs-Schema
oder ein verteiltes Ausgleichs-Schema verwendet werden. Es ist festzustellen,
dass, obwohl 1 Eingabe/Ausgabe-Schnittstellen 22A–22D darstellt,
die über
die Eingabe/Ausgabe-Brücken 20A–20B an
den Bus 24 gekoppelt sind, andere Ausführungsformen ein oder mehrere
Eingabe/Ausgabe-Schnittstellen umfassen können, die direkt an den Bus 24 gekoppelt
sind, falls gewünscht.It should be noted that although in the dar embodiment, a split transaction bus with separate balance for the address and data bus is used, other embodiments with non-shared transaction buses with a single address and data balance and / or a shared transaction bus may be used, where the data bus is not explicitly balanced. Depending on the design choice, either a central compensation scheme or a distributed compensation scheme can be used. It should be noted that, though 1 Input / output interfaces 22A - 22D represents that over the input / output bridges 20A - 20B to the bus 24 coupled, other embodiments may include one or more input / output interfaces directly to the bus 24 coupled, if desired.
In 2 ist
ein Blockdiagramm gezeigt, das exemplarisch Signale darstellt, wie
sie auf dem Adressen-Bus 30 liegen können. Andere Ausführungsformen
sind möglich
und werden betrachtet. Bei der dargestellten Ausführungsform
beinhaltet der Adressen-Bus 30 Adressen-Leitungen, die
verwendet werden, um die Adresse der Transaktion (Addr[39:5]) bereitzustellen
und ein Satz von Bytes (A_BYEN[31:0]) ermöglicht es anzuzeigen, welche Bytes
auf dem Daten-Bus 34 während
der Transaktion gelesen oder geschrieben werden, und ein Befehl (A_CMD[2:0])
wird verwendet, um die durchzuführende
Transaktion (Lesen, Schreiben etc.) anzuzeigen, eine Transaktions-ID
(A_ID[9:0]) wird verwendet, um die Transaktion zu identifizieren,
ein Satz von Attributen (A_ATTR[n:0]) sowie ein Seiten-Hinweis-Signal (A_PAGE_HINT).In 2 a block diagram is shown exemplifying signals as they appear on the address bus 30 can lie. Other embodiments are possible and contemplated. In the illustrated embodiment, the address bus includes 30 Address lines that are used to provide the address of the transaction (Addr [39: 5]) and a set of bytes (A_BYEN [31: 0]) allows to indicate which bytes on the data bus 34 are read or written during the transaction, and a command (A_CMD [2: 0]) is used to indicate the transaction to be performed (read, write, etc.), a transaction ID (A_ID [9: 0]) is used to identify the transaction, a set of attributes (A_ATTR [n: 0]) and a page hint signal (A_PAGE_HINT).
Die
Transaktions-ID kann verwendet werden, um die Adressen- und Daten-Phasen
der Transaktion zu verbinden. Insbesondere kann der antwortende
Agent den auf der Transaktions-ID gelieferten Wert als die Transaktions-ID
für die
Daten-Phase verwenden. Dementsprechend kann die Transaktions-ID
ein Kennzeichen für
die Transaktion sein. Ein Abschnitt der Transaktions-ID ist ein
Agent-Identifizierer, der den anfragenden Agent identifiziert. Der Agent-Identifizierer
kann beispielsweise auf den Bits 9:6 der Transaktions-ID liegen.
Jeder Agent ist einem unterschiedlichen Agent-Identifizierer zugeordnet.The
Transaction ID can be used to handle the address and data phases
to join the transaction. In particular, the answering one
Agent the value supplied on the transaction ID as the transaction ID
for the
Use data phase. Accordingly, the transaction ID
a license plate for
to be the transaction. A section of the transaction ID is a
Agent identifier that identifies the requesting agent. The agent identifier
may be on bits 9: 6 of the transaction ID, for example.
Each agent is associated with a different agent identifier.
Der
Satz von Attributen kann jeden Satz von zusätzlichen Attributen beinhalten,
der in der Adressen-Phase übermittelt
werden sollen. Beispielsweise können
die Attribute einen Cache-Fähigkeits-Indikator
umfassen, der anzeigt, ob die Transaktion in einem Cache innerhalb
des anfragenden Agents verarbeitet werden kann oder nicht, einen
Kohärenz-Indikator,
der anzeigt, ob die Transaktion kohärent durchzuführen ist
oder nicht, und einen Cachefähigkeits-Indikator
für den
L2-Cache 14. Je nach Bedarf können andere Ausführungsformen
mehr, weniger oder andere Attribute verwenden.The set of attributes may include any set of additional attributes to be transmitted in the address phase. For example, the attributes may include a cache capability indicator indicating whether or not the transaction can be processed in a cache within the requesting agent, a coherency indicator indicating whether the transaction is coherent or not, and a Cache capability indicator for the L2 cache 14 , As needed, other embodiments may use more, fewer, or different attributes.
Das
Seite-Hinweis-Signal kann verwendet werden, um die Seite-Hinweis-Angabe
für die
Transaktion zu übermitteln.
Das Signal kann "asserted" werden, um anzuzeigen,
dass die Seite geöffnet
bleiben soll, und das Signal kann "deasserted" werden, um anzuzeigen, dass die Seite
geschlossen werden soll, oder umgekehrt. Dadurch kann das Seite-Hinweis-Signal
unter mehreren mit dem Bus 24 gekoppelten Agenten aufgeteilt
werden. Ein Signal wird generell als bestätigt bzw. "asserted" definiert, wenn es auf einem niedrigen
Spannungsniveau ist ("active low") oder wenn es auf
einem hohen Spannungsniveau liegt ("active high"). Bei unterschiedlichen Signalen kann
ein Signal für
eine Differenz zwischen unterschiedlichen Signalpaaren bestätigt bzw. "asserted" werden und für andere
Differenzen "deasserted" werden. Wie oben
erwähnt,
können
andere Ausführungsformen
die Seite-Hinweis-Angabe in die Befehls-Signale (A_CMD) codieren.
Andere Ausführungsformen
können
die Seite-Hinweis-Angabe in die Attribute (A_ATTR) codieren.The page hint signal may be used to convey the page hint indication for the transaction. The signal may be "asserted" to indicate that the page should remain open, and the signal may be "deasserted" to indicate that the page is about to be closed, or vice versa. This allows the page-hint signal to be among several with the bus 24 be split coupled agents. A signal is generally defined as asserted when it is at a low voltage level ("active low") or when it is at a high voltage level ("active high"). In the case of different signals, a signal for a difference between different signal pairs can be confirmed or "asserted" and "deasserted" for other differences. As mentioned above, other embodiments may encode the page hint indication into the command signals (A_CMD). Other embodiments may encode the page hint indication into the attributes (A_ATTR).
Speicher-ControllerMemory controller
In 3 ist
ein Blockdiagramm einer Ausführungsform
des Speicher-Controllers 16 gezeigt. Andere Ausführungsformen
sind möglich
und werden betrachtet. Bei der in 3 gezeigten
Ausführungsform
beinhaltet der Speicher-Controller 16 eine Transaktions-Wartereihe 40 sowie
Kanal-Steuer-Schaltkreise 42A–42B. Die Transaktions-Wartereihe 40 ist
zum Kommunizieren an den Bus 24 gekoppelt und ist an die
Kanal-Steuerungs-Schaltkreise 42A–42B gekoppelt. Jeder
der Kanal-Steuerungs-Schaltkreise 42A–42B ist
an den betreffenden Speicherkanal 44A–44B gekoppelt. Der
Kanal-Steuerungs-Schaltkreis 42A umfasst ein Konfigurations-Register 46A sowie
einen Offene-Seite-Puffer 48A ("open page buffer"). Dementsprechend umfasst der Kanal-Steuerungs-Schaltkreis 42B ein
Konfigurations-Register 46B und
einen Offene-Seite-Puffer 48B ("open Page buffer").In 3 FIG. 10 is a block diagram of one embodiment of the memory controller. FIG 16 shown. Other embodiments are possible and contemplated. At the in 3 In the embodiment shown, the memory controller includes 16 a transaction queue 40 and channel control circuits 42A - 42B , The transaction queue 40 is to communicate with the bus 24 and is connected to the channel control circuits 42A - 42B coupled. Each of the channel control circuits 42A - 42B is to the relevant memory channel 44A - 44B coupled. The channel control circuit 42A includes a configuration register 46A and an open-side buffer 48A ("open page buffer"). Accordingly, the channel control circuit includes 42B a configuration register 46B and an open-side buffer 48B ("open page buffer").
Die
Transaktions-Wartereihe 40 enthält mehrere Einträge, wobei
jeder Eintrag konfiguriert ist, um zu einer Transaktion korrespondierende
Informationen zu speichern. Die Transaktions-Wartereihe 40 kann
einen Steuerungs-Schaltkreis umfassen, der Einträge zu den auf dem Bus 24 initiierten
Speicher-Transaktionen veranlasst. Die Transaktions-Wartereihe 40 nimmt
die Transaktions-Information für
die Speicher-Transaktionen von dem Bus 24 in die zugewiesenen
Einträge
auf. In 3 werden zum Beispiel mehrere
Felder für
die beiden exemplarischen Einträge
innerhalb der Transaktions-Wartereihe 40 dargestellt. Die
Felder beinhalten ein Gültigkeits-Bit,
die Adresse der Transaktion, das Befehls-Feld, die Seite-Hinweis-Angabe, die Transaktions-ID
der Transaktion, die Daten für
die Transaktion und das Daten-Gültigkeits-Bit.
Andere Ausführungsformen
können
für jede
Transaktion unterschiedliche, zusätzliche oder alternative Informationen
speichern.The transaction queue 40 contains several entries, each entry being configured to store information corresponding to a transaction. The transaction queue 40 may include a control circuit that has entries to those on the bus 24 initiated memory transactions. The transaction queue 40 takes the transaction information for the memory transactions from the bus 24 in the assigned entries. In 3 For example, there will be multiple fields for the two exemplary entries within the transaction queue 40 shown. The fields include a validity bit, the address of the transaction, the command field, the page hint indication, the transaction i ons-ID of the transaction, the data for the transaction and the data validity bit. Other embodiments may store different, additional, or alternative information for each transaction.
Der
Steuerungs-Schaltkreis in der Transaktions-Wartereihe 40 weist
die Transaktionen zu einem der Kanal-Steuerungs-Schaltkreise 42A–42B für den Zugriff
auf den Speicher 26 zu. Bei der dargestellten Ausführungsform
ist der Speicher 26 in zwei Abschnitte unterteilt, auf
die durch unterschiedliche Kanäle 44A–44B zugegriffen
wird. Andere Ausführungsformen
können
mehr oder weniger Kanäle
aufweisen. Der Bereich der Speicher-Adresse ist über nicht-gezeigte Konfigurations-Register auf die
Kanäle
abgebildet (und kann auf mehrere auf einem Kanal ausgewählte Chips
abgebildet sein, etc.). Auf der Basis der Adresse der Transaktion
kann der Steuerungs-Schaltkreis dadurch feststellen, welchem Kanal-Steuerungsschaltkreis 42A–42B die
Transaktion zugewiesen wurde.The control circuit in the transaction queue 40 directs the transactions to one of the channel control circuits 42A - 42B for accessing the memory 26 to. In the illustrated embodiment, the memory is 26 divided into two sections, through which different channels 44A - 44B is accessed. Other embodiments may include more or fewer channels. The area of the memory address is mapped to the channels via non-shown configuration registers (and may be mapped to multiple chips selected on a channel, etc.). Based on the address of the transaction, the control circuit can thereby determine which channel control circuit 42A - 42B the transaction has been assigned.
Der
Kanal-Steuerungs-Schaltkreis 42A–42B empfängt die
Transaktions-Schnittstellen mit dem Speicher, der an den entsprechenden
Speicher-Kanal gekoppelt ist, und führt das durch die Transaktion spezifizierte
Lesen oder Schreiben durch. Generell kann die Bildung einer Schnittstelle
mit dem Speicher das Übermitteln
der Reihen-Adresse,
das Übermitteln
der Spalten-Adresse und das Übermitteln
oder Empfangen von Daten umfassen. Zusätzlich kann der Kanal-Steuerungs-Schaltkreis 42A–42B die durch
die Transaktion adressierte Seite geöffnet halten oder die Seite
schließen.
Hier wird eine Seite als durch eine Transaktion "adressiert" bezeichnet, wenn die Reihen-Adresse der Transaktion
mit der Reihen-Adresse der entsprechenden Seite übereinstimmt. Der Kanal-Steuerungs-Schaltkreis 42A–42B empfängt die
zu der Transaktion entsprechende Seiten-Hinweis-Angabe und kann
auf der Grundlage der Seiten-Hinweis-Angabe die Seite im geöffneten
Zustand halten oder die Seite schließen.The channel control circuit 42A - 42B receives the transaction interfaces with the memory coupled to the corresponding memory channel and performs the read or write specified by the transaction. In general, the formation of an interface with the memory may include transmitting the row address, transmitting the column address, and transmitting or receiving data. In addition, the channel control circuit 42A - 42B keep the page addressed by the transaction open or close the page. Here, a page is said to be "addressed" by a transaction if the row address of the transaction matches the row address of the corresponding page. The channel control circuit 42A - 42B receives the page hint indication corresponding to the transaction and, based on the page hint indication, can keep the page open or close the page.
Bei
einer Ausführungsform
können
die Kanal-Steuerungs-Schaltkreise 42A–42B mit einer Seitenmodus-Policy
(über die
Konfigurations-Register 46A–46B) programmierbar
sein. Die verfügbaren Seitenmodus-Policys
beinhalten eine Hinweis-Policy, bei der die in der Transaktion mitgelieferte
Seiten-Hinweis-Angabe verwendet wird, um festzustellen, ob die Seite
geöffnet
bleiben oder geschlossen werden soll. Nach Bedarf können andere
Seitenmodus-Policys implementiert werden, bei denen die Seiten-Hinweis-Angabe
verwendet werden kann oder nicht. Beispielsweise kann in einer Ausführungsform eine
Seite-Schließen-Policy
und eine Policy zum Überprüfen der
CAS-Zeit (Spalten-Adressen-Impuls-Zeit) implementiert werden. Bei
der Seite-Schließen-Policy
wird die Seite nach jeder Transaktion geschlossen und die Seiten-Hinweis-Angabe wird
nicht verwendet. Bei der Policy zum Überprüfen der CAS-Zeit des Spalten-Adressen-Impulses
(CAS) überprüft der Kanal-Steuerungs-Schaltkreis 42A–42B die
Transaktions-Wartereihe 40 zu dem Zeitpunkt, an dem die
Spalten-Adresse der Transaktion zu übermitteln ist, um festzustellen,
ob sich für dieselbe
Seite eine weitere Transaktion in der Wartereihe befindet. Wenn
das der Fall ist, kann die Seite offengehalten werden. Andernfalls
kann die Seite geschlossen werden. Die Policy zum Überprüfen der CAS-Zeit
kann die Seiten-Hinweis-Angabe nicht verwenden. Andererseits kann
die Policy zum Überprüfen der
CAS-Zeit die Seiten-Hinweis-Angabe verwenden, um festzustellen,
dass die Seite geöffnet bleiben
soll, wenn sich für
dieselbe Seite keine Transaktionen in der Wartereihe befinden, aber
die Seiten-Hinweis-Angabe anzeigt, dass die Seite geöffnet bleiben
soll.In one embodiment, the channel control circuits 42A - 42B with a page mode policy (via the configuration tab 46A - 46B ) be programmable. The available page mode policies include a hint policy that uses the page hint information provided in the transaction to determine if the page should be left open or closed. As required, other page mode policies may be implemented where the page hint indication may or may not be used. For example, in one embodiment, a page-closing policy and a policy for checking the CAS time (column address-pulse-time) may be implemented. The page-closing policy closes the page after each transaction and does not use the page hint. The column address pulse (CAS) CAS time check policy checks the channel control circuitry 42A - 42B the transaction queue 40 at the time that the column address of the transaction is to be transmitted to determine if there is another transaction in queue for the same page. If that is the case, the page can be kept open. Otherwise, the page can be closed. The policy for checking the CAS time can not use the page hint. On the other hand, the CAS time check policy may use the page hint indication to determine that the page should remain open if there are no transactions in the queue for the same page, but the page hint indication indicates that the page should remain open.
Bei
einer Ausführüngsform
können
auf jedem Speicher-Kanal Mehrfach-Chip-Setektoren unterstützt werden. Die Chip-Selektoren
können
an unterschiedliche Speicher-Chips oder -Module gekoppelt sein (z.B.
dual in Reihenverbindung mit Speicher-Modulen oder DIMMs) und können die
Chips oder Module in Reaktion auf eine bestimmte Speicher-Transaktion
selektieren. Die in den Konfigurations-Registern 46A–46B programmierte
Seitenmodus-Policy kann für
jede Chip-Auswahl eine separate Policy beinhalten, sodass die Policy
auf der Basis einer Chip-Auswahl variieren kann (das heißt, eine Chip-Auswahl
kann einer Seitenmodus-Policy zugeordnet werden, während eine
andere Chip-Auswahl einer unterschiedlichen Seitenmodus-Policy zugeordnet
werden kann, etc.). Zusätzlich
können
die Seitenmodus-Policys für
jeden Kanal durch zweckmäßiges Programmieren
der entsprechenden Konfigurations-Register 46A–46B unterschiedlich
sein. Die Konfigurations-Register 46A–46B sind grundsätzlich über Software
zugänglich
(z.B. auf den Prozessoren 12A–12B ausgeführte Instruktionen),
sodass sie durch Software programmiert werden können. Beispielsweise können die
Konfigurations-Register 46A–46B auf bestimmte
Adressen innerhalb des auf dem Bus 24 verfügbaren Adressen-Bereichs
abgebildet werden, und die Lade- und Speicher-Instruktionen an diese
Adressen können
verwendet werden, um auf den Konfigurations-Registern 46A–46B zu
lesen und zu schreiben.In one embodiment, multiple chip selectors may be supported on each memory channel. The chip selectors may be coupled to different memory chips or modules (eg, dual in series with memory modules or DIMMs) and may select the chips or modules in response to a particular memory transaction. The in the configuration registers 46A - 46B programmed page mode policy may include a separate policy for each chip selection so that the policy may vary based on a chip selection (ie, one chip selection may be assigned to a page mode policy, while another chip selection may be one) different page mode policy can be assigned, etc.). In addition, the page mode policies for each channel can be programmed by appropriately programming the appropriate configuration registers 46A - 46B be different. The configuration registers 46A - 46B are basically accessible via software (eg on the processors 12A - 12B executed instructions) so that they can be programmed by software. For example, the configuration registers 46A - 46B to certain addresses within the on the bus 24 available address range and the load and store instructions to these addresses can be used to access the configuration registers 46A - 46B to read and write.
Die
Kanal-Steuerungs-Schaltkreise 42A–42B können die
Offene-Seite-Puffer 48A–48B verwenden, um
die Seiten ausfindig zu machen, die derzeit auf dem entsprechenden
Speicher-Kanälen 44A–44B geöffnet sind.
Die Offene-Seite-Puffer 48A-48B können für jeden Speicher-Abschnitt
einen Puffer-Eintrag enthalten, die gleichzeitig eine offene Seite
haben können
(z.B. jede Bank einer Chip-Auswahl oder jede Chip-Auswahl in Abhängigkeit
von der Konfiguration). Jeder Eintrag kann anzeigen, ob eine Seite
geöffnet
ist oder nicht, und kann die Seite anzeigen (z.B. durch Speichern
der Reihen-Adresse). Vor der Ausführung einer Aktivität entsprechend
einer Transaktion auf dem Speicher-Kanal 44A–44B, kann
der Kanal-Steuerungs-Schaltkreis 42A–42B den
Offene-Seite-Puffer 48A-48B überprüfen, um festzustellen, ob die
Seite bereits geöffnet
ist. Wenn das der Fall ist, kann der Kanal-Steuerungs-Schaltkreis 42A–42B mit
der Übertragung
der Spalten-Adresse der Transaktion fortfahren (z.B. mit einem Lese-
oder Schreib-Befehl in einem SDRAM oder durch Bestätigen des
Spalten-Adressen-Impulses (CAS) in einem asynchronen DRAM), ohne Übertragung
der Reihen-Adresse der Transaktion. Wenn die Seite nicht bereits
geöffnet
ist und eine andere Seite in dem Speicher geöffnet ist, auf die zugegriffen werden
soll (z.B. in derselben Bank und Chip-Auswahl für SDRAM oder in derselben Chip-Auswahl
für einen
asynchronen DRAM), dann schließt
der Kanal-Steuerungs-Schaltkreis 42A–42B die
offene Seite und fährt
anschließend
mit dem Übertragen
der Reihen-Adresse der Transaktion fort. Wenn die Seite nicht bereits
geöffnet
ist, aber der Speicher, auf den zugegriffen werden soll, noch keine
geöffnete
Seite hat, dann fährt
der Kanal-Steuerungs-Schaltkreis 42A–42B mit dem Übertragen
der Reihen-Adresse der Transaktion fort. Wenn der Kanal-Steuerungs-Schaltkreis 42A–42B die
Seite nach einer Transaktion geöffnet
hält, dann
aktualisiert der Kanal-Steuerungs-Schaltkreis 42A–42B den
Offene-Seite-Puffer 48A mit der Reihen-Adresse der Transaktion.The channel control circuits 42A - 42B can use the open-side buffers 48A - 48B use to locate the pages currently on the corresponding memory channels 44A - 44B are open. The open-side buffers 48A-48B For each memory section, a buffer entry may be included which may simultaneously have an open page (eg, each bank of a chip selection or each chip selection depending on the configuration). Each entry can indicate if one Page is open or not, and can display the page (eg by saving the row address). Before executing an activity corresponding to a transaction on the memory channel 44A - 44B , the channel control circuit 42A - 42B the open-side buffer 48A-48B Check to see if the page is already open. If that is the case, the channel control circuit 42A - 42B continue to transfer the column address of the transaction (eg, with a read or write command in an SDRAM or by asserting the column address strobe (CAS) in an asynchronous DRAM) without transferring the row address of the transaction. If the page is not already open and another page is open in the memory to be accessed (eg in the same bank and chip select for SDRAM or in the same chip select for an asynchronous DRAM), then the channel closes. control circuit 42A - 42B the open page and then proceed to transfer the row address of the transaction. If the page is not already open, but the memory to be accessed does not yet have an open page, then the channel control circuit will move 42A - 42B with transferring the row address of the transaction. When the channel control circuit 42A - 42B keeps the page open after a transaction, then updates the channel control circuit 42A - 42B the open-side buffer 48A with the row address of the transaction.
Wenn
zusätzlich
zum Schließen
von Seiten in demselben Speicher-Abschnitt eine weitere Seite geöffnet werden
soll, können
die Kanal-Steuerungs-Schaltkreise 42A–42B auch aus anderen Gründen Seiten
schließen.
Beispielsweise wenn in dem Speicher-Abschnitt eine Auffrischung
des Speicherinhalts bzw. ein "refresh" durchgeführt werden soll,
kann die Seite für
diesen Speicher-Abschnitt geschlossen werden.If, in addition to closing pages in the same memory section, another page is to be opened, the channel control circuits may 42A - 42B also close sides for other reasons. For example, if a refresh of the memory contents or a "refresh" is to be performed in the memory section, the page for this memory section can be closed.
Es
ist zu bemerken, dass bei Ausführungsformen,
die einen L2-Cache 14 verwenden, die Transaktions-Wartereihe 40 konfiguriert
werden kann, um eine Transaktion zu annullieren, wenn ein L2-Treffer-Signal
vom L2-Cache 14 während
der Transaktion bestätigt
wird. Einige Ausführungsformen
können
ein Interventions-Protokoll für
kohärente Transaktionen
verwenden, wobei ein kohärenter Agent
die Daten auf den Bus 24 für eine Transaktion liefert,
wenn der kohärente
Agent ein ausreichendes Verfügungsrecht über die
Daten besitzt (z.B. ein modifiziertes oder exklusives).. In solchen
Ausführungsformen
kann die Transaktions-Wartereihe 40 konfiguriert werden,
um eine Transaktion zu annullieren, wenn ein Kohärenz-Agent die Daten liefern
soll.It should be noted that in embodiments having an L2 cache 14 use the transaction queue 40 can be configured to cancel a transaction if an L2 hit signal from the L2 cache 14 during the transaction is confirmed. Some embodiments may use a coherent transaction intervention protocol wherein a coherent agent puts the data on the bus 24 for a transaction when the coherent agent has sufficient control over the data (eg, a modified or exclusive). In such embodiments, the transaction queue 40 be configured to cancel a transaction when a coherency agent is to deliver the data.
4 zeigt
ein Flussdiagramm, das den Betrieb einer Ausführungsform eines Kanal-Steuerungs-Schaltkreises 42A–42B für die Feststellung darstellt,
ob eine Seite während
eines Speicher-Zugriffs für
eine Transaktion geöffnet
bleiben soll oder nicht. Andere Ausführungsformen sind möglich und werden
betrachtet. Während
die in 4 gezeigten Blöcke
zum leichteren Verständnis
in einer bestimmten Reihenfolge dargestellt sind, kann auch irgendeine
andere geeignete Reihenfolge verwendet werden. Ferner können einige
Blöcke
parallel durch kombinatorische logische Schaltkreise in den Kanal-Steuerungs-Schaltkreisen 42A–42B ausgeführt werden. 4 FIG. 12 is a flowchart illustrating the operation of one embodiment of a channel control circuit. FIG 42A - 42B for determining whether or not a page should remain open during a memory access for a transaction. Other embodiments are possible and contemplated. While the in 4 For ease of understanding, blocks shown in a particular order may also be used, any other suitable order may be used. Further, some blocks may be connected in parallel by combinatorial logic circuits in the channel control circuits 42A - 42B be executed.
Das
Flussdiagramm in 4 stellt allgemein die Feststellung
dar, ob eine Seite geöffnet.
bleiben soll oder nicht. Diese Feststellung kann zu jeder Zeit vorgenommen
werden, beispielsweise können
einige Ausführungsformen
die Feststellung zu einem Zeitpunkt machen, an dem die Spalten-Adresse
für den Speicher-Zugriff
entsprechend der Transaktion zu übertragen
ist. Dieser Zeitpunkt kann für SDRAM-Speicher geeignet
sein, da eine Seite mit einem Selbst-Vorspannungs-Befehl ("auto precharge command") als Teil des Lese-
oder Schreib-Befehls geschlossen werden kann, mit dem die Spalten-Adresse übertragen
wird. Es können
auch Seiten mit einem expliziten Vorspannungs-Befehl geschlossen
werden, der unabhängig
von einem Lese- oder Schreib-Befehl gesendet wird, wie das vorgenommen
wird, wenn eine Seite geöffnet
bleiben und später
geschlossen werden soll, um eine andere Seite zu öffnen oder
den Speicherinhalt des entsprechenden Speicher-Abschnitts aufzufrischen
("refresh"). Bei asynchronen
DRAMs kann die Seite durch "deassert" des RAS-Signals
geschlossen werden. Andere günstige
Zeitpunkte während
des Speicher-Zugriffs, die für
das Feststellen geeignet ist, ob die Seite geöffnet bleiben oder die Seite
geschlossen werden soll, kann den Anfang des Speicher-Zugriffs beinhalten
(wenn die Transaktion an den Kanal-Steuerungs-Schaltkreis 42A–42B geleitet
wird) etc.The flowchart in 4 Generally, it is the determination of whether a page is open. should stay or not. This determination may be made at any time, for example, some embodiments may make the determination at a time when the column address for memory access is to be transmitted according to the transaction. This timing may be suitable for SDRAM memory because a page may be closed with a self-precharge command as part of the read or write command used to transmit the column address. It is also possible to close pages with an explicit bias command sent independently of a read or write command, as is done when one page is left open and later closed to open another page To refresh the memory contents of the corresponding memory section ("refresh"). For asynchronous DRAMs, the page can be closed by deasserting the RAS signal. Other favorable times during the memory access, which is suitable for determining whether the page should remain open or the page should be closed, may include the beginning of the memory access (if the transaction is to the channel control circuit 42A - 42B is directed) etc.
Der
Kanal-Steuerungs-Schaltkreis 42A–42B kann feststellen,
ob die Seitenmodus-Policy
in dem Konfigurations-Register 46A–46B der Seiten-Hinweis-Policy
entspricht, bei der die in der Transaktion enthaltene Seiten-Hinweis-Angabe
verwendet wird, um festzustellen, ob die Seite geöffnet bleiben
oder geschlossen werden soll (Entscheidungsblock 50). Wenn
die Seitenmodus-Policy nicht der Seiten-Hinweis-Policy entspricht,
kann der Kanal-Steuerungs-Schaltkreis 42A–42B auf
der Basis der selektierten Policy (Block 52) feststellen,
ob die Seite geöffnet
bleiben soll oder ob die Seite zu schließen ist.The channel control circuit 42A - 42B can determine if the page mode policy is in the configuration tab 46A - 46B is the page hint policy, which uses the page hint specified in the transaction to determine if the page should be left open or closed (decision block 50 ). If the page mode policy does not conform to the page hint policy, the channel control circuit may 42A - 42B based on the selected policy (Block 52 ) determine whether the page should remain open or whether the page should be closed.
Wenn
die Seitenmodus-Policy der Seiten-Hinweis-Policy entspricht, überprüft der Kanal-Steuerungs-Schaltkreis 42A–42B die
Seiten-Hinweis-Angabe von der entsprechenden Transaktion, um festzustellen,
ob die Seite geöffnet
bleiben oder geschlossen werden soll (Entscheidungsblock 54). Wenn
die Seiten-Hinweis-Angabe anzeigt, dass die Seite geöffnet bleiben
soll, hält
der Kanal-Steuerungs-Schaltkreis 42A–42B die Seite in
geöffnetem Zustand
(Block 56). Wenn die Seiten-Hinweis-Angabe anzeigt, dass die Seite geschlossen
werden soll, wird die Seite geschlossen (Block 58).If the page mode policy matches the page hint policy, the channel control circuit will check 42A - 42B the page hint indication of the appropriate transaction to determine if the page remains open or to be closed (decision block 54 ). If the page hint indication indicates that the page should remain open, the channel control circuit will stop 42A - 42B the page in the opened state (block 56 ). If the page hint indication indicates that the page should be closed, the page will be closed (block 58 ).
In 5 ist
ein Flussdiagramm gezeigt, das den Betrieb eines exemplarischen
Agents zum Ermitteln einer Seiten-Hinweis-Angabe für eine Transaktion
darstellt. Die Seiten-Hinweis-Angabe in der dargestellten Ausführungsform
kann insbesondere ein Signal sein, das bestätigt bzw. "asserted" wird, um anzuzeigen, dass die Seite
geöffnet
bleiben soll, und das "deasserted" wird, um anzuzeigen,
dass die Seite geschlossen werden soll. Wie oben erwähnt, können andere
Ausführungsformen
die Seiten-Hinweis-Angabe auf andere Weise übertragen, wobei ein Flussdiagramm ähnlich dem
in 5 gezeigten Flussdiagramm verwendet werden kann.
Der exemplarische Agent in 5 führt eine
Reihe von Transaktionen für einen
direkten Speicher-Zugriff (DMA) durch. Der Agent kann eine DMA-Maschine
sein oder beispielsweise eine der Eingabe/Ausgabe-Brücken 20A–20B, welche
die DMA-Transaktionen
von einer Vorrichtung an eine Eingabe/Ausgabe-Schnittstelle 22A–22D weiterleitet.
Andere Ausführungsformen
sind möglich und
werden betrachtet. Bei der in 5 gezeigten Ausführungsform
sind mehrere Blöcke
zum leichteren Verständnis
in einer bestimmten Reihenfolge dargestellt. Es kann jedoch auch
irgendeine andere Reihenfolge verwendet werden. Ferner können die
Blöcke
parallel durch kombinatorische, logische Schaltkreise innerhalb
des Agents ausgeführt
werden.In 5 FIG. 3 is a flowchart illustrating the operation of an exemplary agent for determining a page hint indication for a transaction. Specifically, the page hint indication in the illustrated embodiment may be a signal that is asserted to indicate that the page is to remain open and that is deasserted to indicate that the page is being closed should. As noted above, other embodiments may otherwise transfer the page hint indication, with a flowchart similar to that of FIG 5 shown flowchart can be used. The exemplary agent in 5 performs a number of direct memory access (DMA) transactions. The agent may be a DMA engine or, for example, one of the input / output bridges 20A - 20B directing the DMA transactions from a device to an input / output interface 22A - 22D forwards. Other embodiments are possible and contemplated. At the in 5 In the embodiment shown, several blocks are shown in a particular order for ease of understanding. However, any other order may be used. Further, the blocks may be executed in parallel by combinatorial logic circuits within the agent.
Wenn
die Transaktion die letzte in einer Reihe von Transaktionen ist,
mit der eine bestimmte Seite adressiert wird (Entscheidungsblock 60),
dann kann der Agent die Transaktion mit dem "deasserted" Seiten-Hinweis-Signal übermitteln
(Block 62). Im allgemeinen beinhaltet eine Serie von Transaktionen
in einem DMA fortlaufende Adressen. Deshalb kann eine Untermenge
der Reihe von Transaktionen eine bestimmte Seite adressieren, gefolgt
von einer weiteren Untermenge von Transaktionen, die eine andere Seite
betreffen. Dementsprechend kann es vorteilhaft sein, die Seite zu
schließen,
wenn die letzte zu dieser Seite adressierte Transaktion übertragen
wurde, um die Verzögerung
zu verringern, wenn sich die neu adressierte Seite in dem gleichen
Speicher-Abschnitt befindet (oder um die Verzögerung für einige andere Transaktionen
zu verringern, welche diesen Speicher-Abschnitt betreffen). Es ist
festzustellen, dass der Agent zur Ausführung der Entscheidung in Block 60 über die
Information verfügt,
welcher Teil der Transaktions-Adressen verwendet wird, um die Reihen-Adresse
zu bilden. Bei Bedarf ist in anderen Ausführungsformen die Entscheidung
des Blocks 60 nicht enthalten, und kann dadurch das Seiten-Hinweis-Signal
für jede
Transaktion in dem direkten Speicher-Zugriff (DMA) in dem Entscheidungsblock 64 bestätigen, wie
nachfolgend beschrieben wird.If the transaction is the last in a series of transactions addressing a particular page (decision block 60 ), then the agent can transmit the transaction with the "deasserted" page hint signal (block 62 ). In general, a series of transactions in a DMA include consecutive addresses. Therefore, a subset of the series of transactions may address a particular page, followed by another subset of transactions that affect another page. Accordingly, it may be advantageous to close the page if the last transaction addressed to this page has been transmitted to reduce the delay if the newly addressed page is in the same memory section (or the delay for some other transactions to reduce, which concern this memory section). It should be noted that the agent to execute the decision in block 60 has the information about which part of the transaction addresses is used to form the row address. If necessary, in other embodiments, the decision of the block 60 not contain, and thereby the page hint signal for each transaction in the direct memory access (DMA) in the decision block 64 confirm as described below.
Wenn
die Transaktion die letzte Transaktion des direkten Speicher-Zugriffs
DMA (Entscheidungsblock 64) ist, kann der Agent die Transaktion
mit dem "deasserted" Seiten-Hinweis-Signal übermitteln (Block 62).
Da die Transaktion die letzte Transaktion ist, kann dem Agent keine
Information vorliegen, ob irgendwelche zusätzlichen Transaktionen dieselbe Seite
adressieren. Deshalb kann es vorteilhaft sein, die Seite zu schließen, um
eine Verzögerung
für andere
Transaktionen zu verringern, welche diesen Speicher-Abschnitt betreffen.If the transaction is the last transaction of direct memory access DMA (decision block 64 ), the agent can transmit the transaction with the "deasserted" page hint signal (block 62 ). Since the transaction is the last transaction, the agent can not have any information as to whether any additional transactions are addressing the same page. Therefore, it may be advantageous to close the page to reduce delay for other transactions involving this memory section.
Wenn
die Transaktion nicht die letzte Transaktion des direkten Speicher-Zugriffs
DMA ist (und optional nicht die letzte Adresse in der aktuellen
Seite ist), kann der Agent die Transaktion mit dem bestätigten Seiten-Hinweis-Signal übermitteln
(Block 66). In diesem Fall liegt dem Agent die Information
zusätzlicher
Transaktionen vor, welche dieselbe Seite betreffen, und es kann
deshalb vorteilhaft sein, die Seite geöffnet zu halten, um die Verzögerung für diese
zusätzlichen
Transaktionen zu verringern.If the transaction is not the last transaction of direct memory access DMA (and optionally not the last address in the current page), the agent may transmit the transaction with the acknowledged page hint signal (block 66 ). In this case, the agent has the information of additional transactions concerning the same page, and it may therefore be advantageous to keep the page open in order to reduce the delay for these additional transactions.
6 zeigt
ein Flussdiagramm, das den Betrieb eines weiteren exemplarischen
Agents zum Bestimmen der Seiten-Hinweis-Angabe für eine Transaktion darstellt.
Bei der dargestellten Ausführungsform
kann die Seiten-Hinweis-Angabe ein Signal sein, das bestätigt bzw. "asserted" wird, um anzuzeigen,
dass die Seite geöffnet
bleiben soll, und "deasserted" wird, um anzuzeigen,
dass die Seite geschlossen werden soll. Wie oben erwähnt, können andere
Ausführungsformen
die Seiten-Hinweis-Angabe
auf andere Weise übermitteln,
und es können ähnliche
Flussdiagramme, wie das in 6 gezeigte Flussdiagramm,
verwendet werden. Der in 6 gezeigte exemplarische Agent
kann ein Prozessor-Agent (z.B. Prozessoren 12A oder 12B in 1) sein.
je nach Bedarf können
andere Arten von Agenten eine ähnliche
Betriebsweise verwenden. Bei der in 6 dargestellten
Ausführungsform
sind mehrere Blöcke
zum leichteren Verständnis
in einer bestimmten Reihenfolge dargestellt. Es kann jedoch auch
eine andere Reihenfolge verwendet werden. Ferner können die
Blöcke
parallel durch einen kombinatorischen, logischen Schaltkreis innerhalb
des Agents ausgeführt
werden. 6 FIG. 12 is a flowchart illustrating the operation of another exemplary agent for determining the page hint indication for a transaction. FIG. In the illustrated embodiment, the page hint indication may be a signal that is asserted to indicate that the page should remain open and be deasserted to indicate that the page should be closed. As mentioned above, other embodiments may convey the page hint indication in other ways, and flowcharts similar to those in FIG 6 shown flow chart used. The in 6 The exemplary agent shown may be a processor agent (eg, processors 12A or 12B in 1 ) be. as needed, other types of agents may use a similar mode of operation. At the in 6 In the illustrated embodiment, several blocks are shown in a particular order for ease of understanding. However, a different order may be used. Further, the blocks may be executed in parallel by a combinatorial logic circuit within the agent.
Ein
Prozessor-Agent kann eine Wartereihe für Transaktionen umfassen, die
auf den Bus 24 zu übermitteln
sind. Der Prozessor-Agent kann die Wartereihe überprüfen, um festzustellen, ob sich
weitere Transaktionen in der Wartereihe befinden, welche dieselbe
Seite adressieren (Entscheidungsblock 70). Wenn sich zusätzliche
Transaktionen in der Wartereihe befinden, kann die Transaktion mit
dem bestätigten
("asserted") Seiten-Hinweis-Signal übermittelt werden
(Block 72). Beispielsweise kann der Prozessor-Agent die
Ergebnisse aus der Überprüfung der Wartereihe
verwenden, wobei in dem Zeitsignal-Zyklus durch den Prozessor-Agent
die Entscheidung gewonnen wird, die Adressen-Phase der Transaktion durchzuführen, um
das Seiten-Hinweis-Signal zu bestätigen ("assert") oder zu "deassert" das Seiten-Hinweis-Signal.A processor agent may include a queue for transactions that are on the bus 24 to be transmitted. The processor agent can check the queue to see if there are more transactions in the queue that are addressing the same page (decision block 70 ). If additional transactions are in the queue, the transaction can be confirmed with the transmitted ("asserted") page hint signal (block 72 ). For example, the processor agent may use the results of the check queue, and in the time signal cycle, the processor agent decides to perform the address phase of the transaction to confirm the page hint signal (" assert ") or" deasserts "the page hint signal.
Ein
Prozessor-Agent kann auch konfiguriert sein, um festzustellen, ob
ein sich wiederholendes Muster von Transaktionen wahrscheinlich
ist. Beispielsweise kann ein Prozessor-Agent feststellen, dass er
sich in einer Schleife eines Codes befindet, wodurch zusätzliche
Transaktionen für
dieselbe Seite(n) wie die aktuellen Transaktionen wahrscheinlicher
sind, als wenn keine Schleife ausgeführt würde. Wenn der Prozessor-Agent
ein sich wiederholendes Muster von Transaktionen feststellt (Entscheidungsblock 74),
dann kann der Prozessor-Agent die Transaktion mit dem bestätigten Seiten-Hinweis-Signal übermitteln
(Block 72), selbst wenn sich keine anderen Transaktionen
für dieselbe
Seite als die Transaktion in der Wartereihe befinden. In anderen
Fällen kann
der Prozessor-Agent die Transaktion mit dem "deasserted" Seiten-Hinweis-Signal übermitteln (Block 76).A processor agent may also be configured to determine if a repeating pattern of transactions is likely. For example, a processor agent may discover that it is in a loop of code, which makes additional transactions for the same page (s) as the current transactions more likely than if no loop were executed. When the processor agent detects a repeating pattern of transactions (decision block 74 ), then the processor agent can transmit the transaction with the acknowledged page hint signal (block 72 ) even if there are no other transactions on the same page as the transaction in the queue. In other cases, the processor agent may transmit the transaction with the deasserted page hint signal (Block 76 ).
Während die 5 und 6 die
Verwendung der Seiten-Hinweis-Angabe durch bestimmte Agenten darstellen,
kann ein beliebiger Agent die Seiten-Hinweis-Angabe auch auf irgendeine
andere geeignete Weise verwenden.While the 5 and 6 may represent the use of page hint indication by certain agents, any agent may also use the page hint indication in any other suitable manner.
7 ist
ein Blockdiagramm eines exemplarischen Agents 80. Andere
Ausführungsformen
sind möglich
und werden betrachtet. Bei der in 7 dargestellten
Ausführungsform
beinhaltet der Agent 80 eine Transaktions-Wartereihe 82,
die an einen Bus-Schnittstellen-Schaltkreis 84 gekoppelt
ist. Der Bus-Schnittstellen-Schaltkreis 84 ist
seinerseits an den Bus 24 gekoppelt. 7 is a block diagram of an exemplary agent 80 , Other embodiments are possible and contemplated. At the in 7 The embodiment includes the agent 80 a transaction queue 82 connected to a bus interface circuit 84 is coupled. The bus interface circuit 84 is in turn to the bus 24 coupled.
Die
Transaktions-Wartereihe 82 kann allgemein die Transaktionen
speichern, die durch den Agent 80 auf dem Bus 24 zu
initiieren sind. Die Transaktions-Wartereihe 82 kann die
Transaktionen empfangen, die durch den Agent 80 intern
generiert werden (z.B. ein Prozessor-Agent kann Transaktionen in Reaktion
auf das Ausführen
von Lade- und Speicher-Instruktionen generieren), oder die Transaktions-Wartereihe 82 kann
die Transaktionen von einer anderen externen Quelle empfangen (z.B.
eine Eingabe/Ausgabe-Brücke 20A–20B kann
Transaktionen von Vorrichtungen empfangen, die mit Eingabe/Ausgabe-Schnittstellen 22A-22D)
verbunden sind.The transaction queue 82 can generally store the transactions made by the agent 80 on the bus 24 to initiate. The transaction queue 82 can receive the transactions made by the agent 80 generated internally (eg, a processor agent may generate transactions in response to the execution of load and store instructions), or the transaction queue 82 can receive the transactions from another external source (eg an input / output bridge) 20A - 20B can receive transactions from devices connected to input / output interfaces 22A - 22D ) are connected.
Der
Bus-Schnittstellen-Schaltkreis 84 umfasst den Schaltkreis
zum Kontaktieren des Bus 24. Der Bus-Schnittstellen-Schaltkreis 84 kann
insbesondere Transaktionen auf den Bus übertragen, die das Bestätigen oder
Deklarieren ("assertion" oder "deassertion") des Seiten-Hinweis-Signals
während der
Adressen-Phase der Transaktionen umfasst.The bus interface circuit 84 includes the circuit for contacting the bus 24 , The bus interface circuit 84 In particular, it may transmit transactions to the bus that involve asserting or declaring ("assertion" or "deasserting") the page hint signal during the address phase of the transactions.
8 zeigt
ein Blockdiagramm eines Träger-Mediums 300 mit
einer Datenbank, die das System 10 repräsentiert. Allgemein ausgedrückt, kann ein
Träger-Medium
Speicher-Medien umfassen, wie z.B. magnetische oder optische Medien,
Disk oder CD-ROM, flüchtige
oder nicht-flüchtige
Speicher-Medien, wie z.B. RAM (z.B. SDRAM, RDRAM, SRAM etc.), ROM
etc., sowie Übertragungs-Medien
oder Übertragungs-Signale,
wie z.B. elektrische, elektromagnetische oder digitale Signale,
die über
ein Kommunikations-Medium befördert
werden, wie z.B. ein Netzwerk und/oder drahtlose Verbindung. 8th shows a block diagram of a carrier medium 300 with a database containing the system 10 represents. Generally speaking, a carrier medium may include storage media such as magnetic or optical media, disk or CD-ROM, volatile or non-volatile storage media such as RAM (eg, SDRAM, RDRAM, SRAM, etc.), ROM etc., as well as transmission media or transmission signals, such as electrical, electromagnetic or digital signals carried over a communication medium, such as a network and / or wireless connection.
Im
Allgemeinen kann die Datenbank des Systems 10, die sich
auf dem Träger-Medium 300 befindet,
eine Datenbank sein, die durch ein Programm gelesen werden kann
und direkt oder indirekt verwendet wird, um die Hardware zu fabrizieren,
die das System 10 umfasst. Die Datenbank kann beispielsweise
eine Verhaltens-Level-Beschreibung oder eine Register-Transfer-Level-Beschreibung
(RTL-Beschreibung ("behavioral-level
description" oder "register-transfer
level") der Hardware-Funktionalität in einer
höheren
Programmiersprache ("high
level design language (HDL)")
sein, wie z.B. Verflog oder VHDL. Die Beschreibung kann durch ein
Synthese-Werkzeug gelesen werden, das die Beschreibung zusammensetzen
kann, um eine Netzliste ("netlist") zu erzeugen, die
eine Liste von Steuerelementen aus einer Synthese-Bibliothek umfasst.
Die Netzliste enthält
einen Satz von Steuerelementen, die auch die Funktionalität der Hardware
repräsentiert,
die das System 10 umfasst. Die Netzliste kann anschließend platziert
und geleitet werden, um einen Datensatz zu erzeugen, der die geometrischen
Gestaltungen beschreibt, die auf die Masken anzuwenden sind. Anschließend können die
Masken in unterschiedlichen Schritten zur Herstellung von Halbleitern
verwendet werden, um einen Halbleiter-Schaltkreis oder Halbleiter-Schaltkreise
entsprechend dem System 10 zu erzeugen. Nach Bedarf kann
die Datenbank auf dem Träger-Medium 300 alternativ
die Netzliste sein (mit oder ohne Synthese-Bibliothek).In general, the database of the system 10 that are on the carrier medium 300 is a database that can be read by a program and used, directly or indirectly, to fabricate the hardware that makes up the system 10 includes. The database may include, for example, a behavior level description or a register transfer level (RTL) description ("behavioral-level description" or "register-transfer level") of the hardware functionality in a high-level programming language ("high level The description can be read by a synthesis tool that can assemble the description to produce a netlist that contains a list of controls from a The Netlist contains a set of controls that also represents the functionality of the hardware that the system provides 10 includes. The netlist may then be placed and routed to produce a dataset describing the geometric shapes to be applied to the masks. Subsequently, the masks may be used in different steps to fabricate semiconductors to form a semiconductor circuit or semiconductor circuits according to the system 10 to create. As needed, the database can be on the carrier medium 300 alternatively be the netlist (with or without synthesis library).
Während das
Träger-Medium 300 eine
Repräsentierung
des Systems 10 enthält,
können
andere Ausführungsformen
je nach Bedarf eine Repräsentierung
irgendeines Bereichs des Systems enthalten, einschließlich irgendeiner
Kombination aus einem Agent, einem Speicher-Controller, einem Bus, Speicher
etc.While the carrier medium 300 a representation of the system 10 As desired, other embodiments may include representation of any portion of the system as needed, including any combination of agent, memory controller, bus, memory, etc.
Mit
dem vollständigen
Studium der vorliegenden Offenbarung sind für den Fachmann in der betreffenden
Technologie zahlreiche Variationen und Modifikationen offensichtlich.
Es ist beabsichtigt, dass die folgenden Ansprüche so zu interpretieren sind,
dass sie alle solche Variationen und Modifikationen einbeziehen.With the full study of the present disclosure, those skilled in the art will appreciate technology involved numerous variations and modifications. It is intended that the following claims be interpreted to embrace all such variations and modifications.