DE112022003363T5 - DYNAMIC ALLOCATION OF CACHE MEMORY AS RAM - Google Patents
DYNAMIC ALLOCATION OF CACHE MEMORY AS RAM Download PDFInfo
- Publication number
- DE112022003363T5 DE112022003363T5 DE112022003363.0T DE112022003363T DE112022003363T5 DE 112022003363 T5 DE112022003363 T5 DE 112022003363T5 DE 112022003363 T DE112022003363 T DE 112022003363T DE 112022003363 T5 DE112022003363 T5 DE 112022003363T5
- Authority
- DE
- Germany
- Prior art keywords
- cache
- memory
- circuit
- address
- control circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 556
- 230000004044 response Effects 0.000 claims abstract description 54
- 238000000034 method Methods 0.000 claims description 143
- 238000003860 storage Methods 0.000 claims description 31
- 238000011010 flushing procedure Methods 0.000 claims description 2
- 239000000872 buffer Substances 0.000 description 133
- 238000012545 processing Methods 0.000 description 87
- 239000003795 chemical substances by application Substances 0.000 description 84
- 230000008569 process Effects 0.000 description 30
- 238000013461 design Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 19
- 230000008901 benefit Effects 0.000 description 16
- 238000004519 manufacturing process Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 230000036541 health Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 239000000463 material Substances 0.000 description 5
- 230000003542 behavioural effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012806 monitoring device Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241001441724 Tetraodontidae Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 239000004148 curcumin Substances 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Eine Einrichtung schließt eine Cache-Steuerungsschaltung und eine Cache-Speicherschaltung ein, die ferner einen Cache-Speicher mit einer Vielzahl von Cache-Zeilen einschließt. Die Cache-Steuerungsschaltung kann konfiguriert sein, um eine Anforderung zu empfangen, um einen Abschnitt der Cache-Speicherschaltung neu zu positionieren, der aktuell verwendet wird. Diese Anforderung kann einen Adressbereich identifizieren, der einer oder mehreren der Cache-Zeilen entspricht. Die Cache-Steuerungsschaltung kann ferner als Reaktion auf die Anforderung konfiguriert sein, um die eine oder die mehreren cache-Zeilen in den direkt adressierbaren Direktzugriffsspeicher (RAM) umzuwandeln, indem sie die eine oder die mehreren Cache-Zeilen aus Cache-Vorgängen ausschließt.A device includes a cache control circuit and a cache memory circuit further including a cache memory having a plurality of cache lines. The cache control circuit may be configured to receive a request to reposition a portion of the cache memory circuit that is currently in use. This request may identify an address range corresponding to one or more of the cache lines. The cache control circuit may be further configured, in response to the request, to convert the one or more cache lines to the directly addressable random access memory (RAM) by excluding the one or more cache lines from cache operations.
Description
HINTERGRUNDBACKGROUND
TECHNISCHES GEBIETTECHNICAL AREA
Hierin beschriebene Ausführungsformen beziehen sich auf Systems-on-a-Chip (SOCs) und insbesondere auf Verfahren zum Betreiben eines Cache-Speichers.Embodiments described herein relate to systems-on-a-chip (SOCs), and more particularly to methods for operating a cache memory.
BESCHREIBUNG DES STANDS DER TECHNIKDESCRIPTION OF THE STATE OF THE ART
Integrierte Schaltungen (ICs) eines System-on-a-Chip (SOC) schließen im Allgemeinen einen oder mehrere Prozessoren, die als zentrale Verarbeitungseinheiten (CPUs) für ein System dienen, zusammen mit verschiedenen anderen Komponenten, wie Speichersteuerungen und anderen Agenten, ein. Wie hierin verwendet, bezieht sich ein „Agent“ auf eine Funktionsschaltung, die in der Lage ist, ein Ziel für eine Transaktion über eine Busschaltung einzuleiten oder zu sein. Dementsprechend können Universalprozessoren, Grafikprozessoren, Netzwerkschnittstellen, Speichersteuerungen und andere ähnliche Schaltungen als Agenten bezeichnet werden. Wie hierin verwendet, bezieht sich eine „Transaktion“ auf einen Datenaustausch zwischen zwei Agenten über eine oder mehrere Busschaltungen. Transaktionen von einem Agenten zum Lesen von Daten oder Speichern von Daten aus bzw. in einer Speicherschaltung ist eine typische Art von Transaktion und kann große Datenmengen einschließen. Speicherschaltungen können mehrere Taktzyklen verwenden, um auf Daten innerhalb ihrer Speicherzellen zuzugreifen.System-on-a-chip (SOC) integrated circuits (ICs) generally include one or more processors that serve as central processing units (CPUs) for a system, along with various other components, such as memory controllers and other agents. As used herein, an "agent" refers to a functional circuit capable of initiating or being a target for a transaction over a bus circuit. Accordingly, general purpose processors, graphics processors, network interfaces, memory controllers, and other similar circuits may be referred to as agents. As used herein, a "transaction" refers to an exchange of data between two agents over one or more bus circuits. Transactions by an agent to read data or store data from or to a memory circuit is a typical type of transaction and may involve large amounts of data. Memory circuits may use multiple clock cycles to access data within their memory cells.
Cache-Speicher werden häufig in SoCs verwendet, um eine erhöhte Leistung von Prozessoren zu unterstützen, indem Verzögerungen reduziert werden, die mit Transaktionen auf Systemspeicher und/oder nichtflüchtige Speicherspeicher in Zusammenhang stehen. Cache-Speicher können lokale Kopien von Informationen speichern, die auf häufig zugegriffenen Speicheradressen gespeichert sind. Diese lokalen Kopien können kürzere Verzögerungen für den Zugriff auf zwischengespeicherte Werte im Vergleich zum Durchführen eines Speicherzugriffs auf eine Zielspeicheradresse aufweisen. Wenn ein Speicherzugriff auf eine Zieladresse vorgenommen wird, die aktuell nicht zwischengespeichert ist, kann auf den adressierten Speicher zugegriffen werden, und Werte aus einer Vielzahl von sequentiellen Adressen, einschließlich der Zieladresse, werden als eine Gruppe gelesen und können dann zwischengespeichert werden, um zukünftige Zugriffszeiten zu reduzieren. Wenn die zwischengespeicherten Informationen in einer Cache-Zeile ungültig werden oder bestimmt wird, dass auf die zwischengespeicherten Informationen nicht häufig zugegriffen wird, können die zwischengespeicherten Informationen ungültig gemacht und zur Freischaltung markiert werden, wodurch es ermöglicht wird, durch andere Informationen, auf die durch die Prozessoren des SoC zugegriffen wird, überschrieben zu werden.Cache memories are commonly used in SoCs to support increased performance of processors by reducing delays associated with transactions on system memory and/or non-volatile storage memories. Cache memories can store local copies of information stored at frequently accessed memory addresses. These local copies can have shorter delays for accessing cached values compared to performing a memory access to a target memory address. When a memory access is made to a target address that is not currently cached, the addressed memory can be accessed and values from a plurality of sequential addresses, including the target address, are read as a group and can then be cached to reduce future access times. If the cached information in a cache line becomes invalid or it is determined that the cached information is not frequently accessed, the cached information may be invalidated and marked for unlock, allowing it to be overwritten by other information accessed by the SoC's processors.
KURZDARSTELLUNGBRIEF DESCRIPTION
In einer Ausführungsform schließt eine Einrichtung eine Cache-Steuerungsschaltung und eine Cache-Speicherschaltung ein, die ferner einen Cache-Speicher mit einer Vielzahl von Cache-Zeilen einschließt. Die Cache-Steuerungsschaltung kann konfiguriert sein, um eine Anforderung zu empfangen, um einen Abschnitt der Cache-Speicherschaltung neu zu positionieren, der aktuell verwendet wird. Diese Anforderung kann einen Adressbereich identifizieren, der einer oder mehreren der Cache-Zeilen entspricht. Die Cache-Steuerungsschaltung kann auch konfiguriert sein, um als Reaktion auf die Anforderung die eine oder die mehreren Cache-Zeilen in den direkt adressierbaren Direktzugriffsspeicher (RAM) umzuwandeln, indem sie die eine oder die mehreren Cache-Zeilen aus Cache-Vorgängen ausschließt.In one embodiment, a device includes a cache control circuit and a cache memory circuit further including a cache memory having a plurality of cache lines. The cache control circuit may be configured to receive a request to reposition a portion of the cache memory circuit that is currently in use. This request may identify an address range corresponding to one or more of the cache lines. The cache control circuit may also be configured to, in response to the request, convert the one or more cache lines to directly addressable random access memory (RAM) by excluding the one or more cache lines from cache operations.
In einem weiteren Beispiel kann die Cache-Steuerungsschaltung ferner konfiguriert sein, um einen virtuellen Echtzeitkanal für Speichertransaktionen in dem identifizierten Adressbereich zu unterstützen und eine Speichertransaktion zu priorisieren, die über den virtuellen Echtzeitkanal über eine Speichertransaktion empfangen wird, die über einen virtuellen Volumenkanal empfangen wird. In einem Beispiel kann die Cache-Steuerungsschaltung ferner konfiguriert sein, um zu bestimmen, dass der Adressbereich in einem sicheren Zugriffsbereich enthalten ist. Als Reaktion auf die Bestimmung kann die Cache-Steuerungsschaltung weiterhin konfiguriert sein, um eine Speichertransaktion in dem Adressbereich von einem Agenten zu ignorieren, der nicht autorisiert ist, auf den sicheren Zugriffsbereich zuzugreifen.In another example, the cache control circuitry may be further configured to support a real-time virtual channel for memory transactions in the identified address range and to prioritize a memory transaction received over the real-time virtual channel over a memory transaction received over a volume virtual channel. In an example, the cache control circuitry may be further configured to determine that the address range is included in a secure access range. In response to the determination, the cache control circuitry may be further configured to ignore a memory transaction in the address range from an agent that is not authorized to access the secure access range.
In einem anderen Beispiel kann die Cache-Steuerungsschaltung auch konfiguriert sein, um die eine oder die mehreren Cache-Zeilen vor der Umwandlung in den direkt adressierbaren RAM zu spülen. In einem Beispiel kann die Cache-Steuerungsschaltung weiterhin konfiguriert sein, um als Reaktion darauf, dass Daten in einer gültigen Cache-Zeile geschrieben werden, eine Rückschreibanforderung für die gültige Cache-Zeile auszugeben. Die Cache-Steuerungsschaltung kann auch konfiguriert sein, um die eine oder die mehreren Cache-Zeilen aus Rückschreibanforderungen auszuschließen.In another example, the cache control circuitry may also be configured to flush the one or more cache lines prior to conversion to the directly addressable RAM. In an example, the cache control circuitry may be further configured to issue a writeback request for the valid cache line in response to data being written to a valid cache line. The cache control circuitry may also be configured to exclude the one or more cache lines from writeback requests.
In einer Ausführungsform kann die Cache-Steuerungsschaltung weiterhin konfiguriert sein, um eine unterschiedliche Anforderung zu empfangen, um den Abschnitt des Cache-Speichers von dem direkt adressierbaren RAM abzuweisen. Als Reaktion auf die unterschiedliche Anforderung kann die Cache-Steuerungsschaltung weiterhin konfiguriert sein, um die eine oder die mehreren Cache-Zeilen in Cache-Vorgängen einzuschließen, ohne Daten zu kopieren, die in dem direkt adressierbaren RAM gespeichert sind, während die eine oder die mehreren Cache-Zeilen neu zugewiesen wurden. In einer anderen Ausführungsform kann die Cache-Steuerungsschaltung auch konfiguriert sein, um als Reaktion auf eine Speichertransaktion in dem direkt adressierbaren RAM, der nach dem Abweisen des Abschnitts des Cache-Speichers empfangen wird, einen Fehler zu erzeugen.In one embodiment, the cache control circuitry may be further configured to receive a different request to allocate the portion of cache memory from the directly addressable RAM. In response to the different request, the cache control circuitry may be further configured to include the one or more cache lines in cache operations without copying data stored in the directly addressable RAM while the one or more cache lines are being reallocated. In another embodiment, the cache control circuitry may also be configured to generate a fault in response to a memory transaction in the directly addressable RAM received after allocating the portion of cache memory.
KURZBESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS
Die folgende detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nun kurz beschrieben werden.
-
1 veranschaulicht zu zwei Zeitpunkten ein Blockdiagramm einer Ausführungsform eines Systems, das einen Cache-Speicher und eine Adresskarte einschließt. -
2 zeigt ein Blockdiagramm einer Ausführungsform eines Systems, das einen Prozessor, einen Cache-Speicher mit einer Vielzahl von Wegen und eine Adresskarte einschließt. -
3 stellt ein Blockdiagramm einer Ausführungsform des Systems von1 zu zwei unterschiedlichen Zeitpunkten dar. -
4 veranschaulicht ein Blockdiagramm einer Ausführungsform des Systems von1 , das zwei Schreibanforderungen empfängt. -
5 zeigt ein Blockdiagramm einer Ausführungsform eines Systems, das zwei Agenten einschließt, die Speichertransaktionen über einen Netzwerk-Arbiter an einen Cache-Speicher senden. -
6 veranschaulicht ein Blockdiagramm einer Ausführungsform eines Systems, das zwei Agenten, einen vertrauenswürdigen und einen nicht vertrauenswürdigen, einschließt, die Speichertransaktionen an einen Cache-Speicher senden. -
7 zeigt ein Flussdiagramm einer Ausführungsform eines Verfahrens zum erneuten Zuweisen eines Abschnitts eines Cache-Speichersystems an einen direkt adressierbaren Adressbereich. -
8 stellt ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Empfangen einer Speichertransaktion von einem nicht autorisierten Agenten und zum Abweisen eines Abschnitts eines Cache-Speichersystems von einem direkt adressierbaren Adressbereich dar. -
9 veranschaulicht zu zwei Zeitpunkten ein Blockdiagramm einer Ausführungsform eines Systems, in dem ein in einem Systemspeicher befindlicher Puffer einem Cache-Speicher zugewiesen ist. -
10 zeigt zu zwei unterschiedlichen Zeitpunkten ein Blockdiagramm einer Ausführungsform des Systems von9 , bei dem ein Versuch, einen Speicherplatz einem Cache-Speicher zuzuweisen, wiederholt wird. -
11 stellt ein Blockdiagramm einer Ausführungsform eines Systems dar, das einen Prozessorkern und einen DMA einschließt, der einen Puffer einem Cache-Speicher zuweist. -
12 veranschaulicht zu zwei verschiedenen Zeitpunkten ein Blockdiagramm einer Ausführungsform des Systems von9 , bei dem Volumentransaktionen und Echtzeittransaktionen in Verbindung mit einem Puffer und einem Cache-Speicher verwendet werden. -
13 zeigt ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Zuweisen eines Puffers zu einem Cache-Speichersystem. -
14 stellt ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Verwenden von Volumentransaktionen und Echtzeittransaktionen in Verbindung mit einem Puffer und einem Cache-Speicher dar. -
15 veranschaulicht ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Bestimmen einer Cache-Fehlrate beim Zugreifen auf einen Puffer, der einem Cache-Speicher zugewiesen ist. -
16 zeigt verschiedene Ausführungsformen von Systemen, die gekoppelte integrierte Schaltungen einschließen. -
17 stellt ein Blockdiagramm eines beispielhaften computerlesbaren Mediums gemäß einigen Ausführungsformen dar.
-
1 illustrates, at two points in time, a block diagram of one embodiment of a system that includes a cache memory and an address map. -
2 shows a block diagram of one embodiment of a system that includes a processor, a cache memory with a plurality of ways, and an address map. -
3 is a block diagram of an embodiment of the system of1 at two different points in time. -
4 illustrates a block diagram of an embodiment of the system of1 that receives two write requests. -
5 shows a block diagram of an embodiment of a system that includes two agents that send memory transactions to a cache memory via a network arbiter. -
6 illustrates a block diagram of an embodiment of a system that includes two agents, one trusted and one untrusted, that send memory transactions to a cache. -
7 shows a flowchart of an embodiment of a method for reallocating a portion of a cache memory system to a directly addressable address range. -
8th illustrates a flow diagram of one embodiment of a method for receiving a memory transaction from an unauthorized agent and rejecting a portion of a cache memory system from a directly addressable address range. -
9 illustrates, at two points in time, a block diagram of an embodiment of a system in which a buffer located in a system memory is mapped to a cache memory. -
10 shows at two different times a block diagram of an embodiment of the system of9 , in which an attempt to allocate a memory location to a cache memory is repeated. -
11 illustrates a block diagram of one embodiment of a system including a processor core and a DMA that maps a buffer to a cache memory. -
12 illustrates, at two different times, a block diagram of an embodiment of the system of9 , which uses volume transactions and real-time transactions in conjunction with a buffer and a cache memory. -
13 shows a flowchart of an embodiment of a method for allocating a buffer to a cache memory system. -
14 illustrates a flow diagram of one embodiment of a method for using volume transactions and real-time transactions in conjunction with a buffer and a cache memory. -
15 illustrates a flowchart of an embodiment of a method for determining a cache miss rate when accessing a buffer allocated to a cache memory. -
16 shows various embodiments of systems including coupled integrated circuits. -
17 illustrates a block diagram of an example computer-readable medium, in accordance with some embodiments.
Während in dieser Offenbarung beschriebene Ausführungsformen verschiedenen Abänderungen und alternativen Formen unterliegen können, sind spezifische Ausführungsformen davon beispielhaft in den Zeichnungen gezeigt und werden hierin detailliert beschrieben. Es versteht sich jedoch, dass die Zeichnungen und die detaillierte Beschreibung dazu die Ausführungsformen der offenbarten besonderen Form nicht einschränken sollen, sondern dass im Gegenteil alle Modifikationen, Äquivalente und Alternativen, die innerhalb des Wesens und Schutzumfangs der beiliegenden Patentansprüche sind, abgedeckt werden sollen.While embodiments described in this disclosure are susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and are described in detail herein. It is to be understood, however, that the drawings and detailed description thereof are not intended to limit embodiments of the particular form disclosed, but on the contrary, all modifications, equivalents, and alternatives that may be included within the spirit and scope of the appended claims.
DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSFORMENDETAILED DESCRIPTION OF EMBODIMENTS
Transaktionen können in zwei oder mehr Prioritätsebenen klassifiziert werden, wie „Echtzeit“ und „Volumen“. Eine Echtzeittransaktion kann eine höhere Prioritätsstufe als eine Volumentransaktion aufweisen und kann daher schneller durch die Busschaltungen und beliebige Zwischenagenten verarbeitet werden, durch die die Echtzeittransaktion verläuft. Agenten können Echtzeittransaktionen verwenden, um Fristen für den Abschluss der Verarbeitung einzuhalten, deren Nichteinhaltung zu schlechter Leistung, falschen Berechnungen oder sogar zu Systemausfällen führen kann. Zum Beispiel kann die Wiedergabe eines Videos ins Stocken geraten oder fehlerhaft sein, wenn Fristen für niedrige Latenzzeiten nicht eingehalten werden. Die Konkurrenz von anderen Agenten für den Zugriff auf Busschaltungen und Speicherschaltungen ist eine Quelle dafür, solche Fristen für niedrige Latenzzeiten kompliziert zu machen.Transactions can be classified into two or more priority levels, such as "real-time" and "volume". A real-time transaction may have a higher priority level than a volume transaction and can therefore be processed more quickly by the bus circuits and any intermediate agents through which the real-time transaction passes. Agents can use real-time transactions to meet deadlines for completion of processing, failure to meet which can result in poor performance, incorrect calculations, or even system failure. For example, the playback of a video may stall or be corrupted if low-latency deadlines are missed. Competition from other agents for access to bus circuits and memory circuits is one source of complicating such low-latency deadlines.
Cache-Speicher können verwendet werden, um einige der Komplikationen zum Erfüllen der Fristen für niedrige Latenzzeiten abzuschwächen, indem Kopien von Speicherorten gespeichert werden, die näher an einem entsprechenden Agenten liegen, wodurch eine Anzahl von Busschaltungen und/oder Zwischenagenten reduziert wird, die eine Echtzeittransaktion beim Verarbeiten durchlaufen muss. Darüber hinaus kann, wenn eine Vielzahl von Cache-Speichern verfügbar ist, ein gegebener Cache-Speicher durch weniger Agenten abgerufen werden, wodurch eine Wahrscheinlichkeit erhöht wird, dass ein Agent auf den Cache-Speicher zugreifen kann, während Fristen für niedrige Latenzzeiten erfüllt werden. Zwischengespeicherte Werte können jedoch aus einem Cache-Speicher freigegeben werden, wenn nicht häufig auf sie zugegriffen wird und/oder wenn eine Konkurrenz von anderen Agenten zum Zwischenspeichern von Werten im Cache-Speicher vorliegt.Caches can be used to mitigate some of the complications of meeting low-latency deadlines by storing copies of memory locations closer to a corresponding agent, thereby reducing a number of bus circuits and/or intermediate agents that a real-time transaction must traverse when processing. Furthermore, when a plurality of caches are available, a given cache may be accessed by fewer agents, thereby increasing a probability that an agent can access the cache while meeting low-latency deadlines. However, cached values may be released from a cache if they are not frequently accessed and/or if there is contention from other agents to cache values in the cache.
Dementsprechend werden Techniken zum Verwenden von Cache-Speichern zum Speichern von Werten, die für Echtzeittransaktionen verwendet werden und/oder verwendet werden, gewünscht. Hierin werden zwei allgemeine Ansätze zum Verwenden von Cache-Speichern zum Implementieren einer schnelleren Zugriffsspeicherregion vorgestellt. In einem ersten Ansatz kann ein Abschnitt eines Cache-Speichers einem auf Systembus zugänglichen Adressbereich zugewiesen werden, wobei auf den adressierbaren Cache-Speicher auf ähnliche Weise wie auf Direktzugriffsspeicher (RAM) zugegriffen werden kann. Um eine solche Technik zu implementieren, kann eine Steuerungsschaltung verwendet werden, um einen Abschnitt eines Cache-Speichers als RAM zuzuweisen. Cache-Zeilen in dem zugewiesenen Abschnitt des Cache-Speichers werden gespült, und alle verschmutzten Daten (z. B. Daten, die in dem Cache-Speicher modifiziert wurden, ohne entsprechende Speicherorte in einem Systemspeicher zu aktualisieren) werden in den Systemspeicher zurückgeschrieben. Die Cache-Zeilen in dem zugewiesenen Abschnitt sind für den Zugriff über einen einem Speicher zugeordneten Adressbereich aktiviert und werden aus den verfügbaren Cache-Speicherzeilen entfernt. Agenten können dann in der Lage sein, direkt auf den dem Speicher zugeordneten Adressbereich mit Echtzeittransaktionen zuzugreifen, die in einer ähnlichen Zeitdauer wie ein zwischengespeicherter Ort verarbeitet werden können. Da der dem Speicher zugeordnete Adressbereich während der Zuweisung nicht als Teil des Cache behandelt wird, sind in diesem Bereich gespeicherte Werte nicht gefährdet, wenn auf sie nicht über einen längeren Zeitraum zugegriffen werden kann.
In einem zweiten Ansatz wird innerhalb des Systemspeichers ein Puffer zugewiesen, in dem der Puffer zur Verwendung mit Speichertransaktionen mit niedriger Latenz bestimmt ist. Um die Latenz für den Zugriff auf Werte in diesem Puffer zu verringern, kann der Puffer auch im Cache-Speicher zugewiesen werden. In einigen Ausführungsformen kann ein Cache Unterstützung für Daten mit hoher Priorität einschließen, einschließlich Techniken zum Zuordnen einer besonderen Cache-Zeile mit Transaktionen mit niedriger Latenz. Eine solche Unterstützung kann das Einschränken oder Eliminieren von Freigaben für die zugehörigen Cache-Zeilen einschließen. Die Cache-Zuweisung eines großen Puffers (z. B. eines Puffers, der für die Verwendung mit einem Video-Frame, einem anderen Bild, einer Audiodatei usw. bemessen ist) kann jedoch beginnen, Cache-Fehlungen zu erleiden, da Abschnitte des Puffers, die dem Ende des Cache-Zuweisungsprozesses zugewiesen sind, eine höhere Wahrscheinlichkeit der Zuordnung zu Cache-Zeilen aufweisen, die nun durch Abschnitte des Puffers belegt wurden, die zuvor zwischengespeichert wurden. Wenn die Cache-Zuweisung mit einem Ende des Puffers beginnt, erleidet das gegenüberliegende Ende eine höhere Anzahl von Cache-Fehlungen, wodurch die Cache-Fehlungen zunehmen, da Zugriffe auf den Puffer zu den letzten zuzuweisenden Abschnitten hin verschoben werden.In a second approach, a buffer is allocated within system memory, where the buffer is designated for use with low-latency memory transactions. To reduce the latency of accessing values in this buffer, the buffer may also be allocated in cache memory. In some embodiments, a cache may include support for high priority data, including techniques for associating a particular cache line with low-latency transactions. Such support may include limiting or eliminating deals for the associated cache lines. However, cache allocation of a large buffer (e.g., a buffer sized for use with a video frame, another image, an audio file, etc.) may begin to suffer cache misses because portions of the buffer allocated toward the end of the cache allocation process have a higher probability of being allocated to cache lines that are now occupied by portions of the buffer that were previously cached. When cache allocation begins with one end of the buffer, the opposite end suffers a higher number of cache misses, increasing cache misses as accesses to the buffer are shifted toward the last sections to be allocated.
Die offenbarten Techniken versuchen, die Cache-Zuweisung von Abschnitten des Puffers über verschiedene Orte in dem Puffer zu verteilen. Um dies zu erreichen, kann der Puffer logisch in eine Vielzahl von Blöcken unterteilt werden. Es kann dann versucht werden, einen ersten Unterblock aus jedem Block in den Cache zuzuweisen. Anschließend können weitere Versuche vorgenommen werden, einen zweiten Unterblock aus jedem Block in den Cache zuzuweisen. Dies kann für eine Anzahl von Unterblöcken in jedem Block wiederholt werden, bis ein Versuch unternommen wurde, alle Unterblöcke zwischenzuspeichern. Eine solche Technik kann Cache-Fehlungen für verschiedene Unterblockzuweisungen über einen gesamten Puffer hinweg verteilen, sodass die Fehlungen sich nicht zu einem Ende des Puffers zusammendrängen. Wenn zum Beispiel der Puffer zum Verarbeiten eines Bildes verwendet wird, dann können Cache-Fehlungen konsistent auftreten, aber mit einer niedrigeren Konzentration, über die Verarbeitung des gesamten Bildes hinweg anstatt zu einem Beginn der Verarbeitung des Bildes einige Fehlungen aufzuweisen und dann häufigere Fehlungen aufzuweisen, wenn sich die Verarbeitung dem Ende des Bildes nähert. Da Fehlungen häufiger auftreten, können mehr Echtzeittransaktionen erzeugt werden, um die angeforderten Daten aus dem Systemspeicher abzurufen. Das gleichzeitige Verarbeiten einer größeren Anzahl von Echtzeittransaktionen kann eine Wahrscheinlichkeit erhöhen, dass die Fristen für niedrige Latenzzeiten verpasst werden, wodurch die Wahrscheinlichkeit einer schlechten Leistung oder eines Systemausfalls durch einen Benutzer des Systems erhöht wird.
Wie veranschaulicht, kann Cache-Speicherschaltung 105 unter Verwendung einer beliebigen geeigneten Art von Speicherschaltungskonstruktion implementiert werden, wie einem statischen Direktzugriffsspeicher (SRAM), einem dynamischen RAM (DRAM), einem ferroelektrischen RAM (FeRAM oder FRAM), einem magnetoresistiven RAM (MRAM), einem Flash-Speicher und dergleichen. Cache-Speicherschaltung 105 kann unter Verwendung einer beliebigen geeigneten Cache-Struktur organisiert sein, einschließlich der Verwendung mehrerer Arten und/oder Sätze. Cache-Steuerungsschaltung 101 schließt Schaltungen zum Durchführen von Cache-Vorgängen in der Cache-Speicherschaltung 105 ein, wie das Aufrechterhalten von Cache-Tags, das Bestimmen, ob eine Adresse, die sich auf eine Speichertransaktion bezieht, ein Treffer (eine Cache-Zeile entspricht aktuell der Adresse) oder falsch ist (keine Cache-Zeile wurde mit Daten gefüllt, die der Adresse entsprechen), welche die Cache-Zeilenfüllanforderungen als Reaktion auf eine Fehlung, Markierung von Speicherzeilen für die Freischaltung und dergleichen ausgibt. Adresskarte 110 schließt jede geeignete Kombination von Software-, Firmware- und Hardwareschaltungen zum Bestimmen einer physischen Adresse für dem Speicher zugeordnete Register und Speicherschaltungen ein. In einigen Ausführungsformen schließt Adresskarte 110 Übertragungstabellen zum Umwandeln logischer Adressen in physische Adressen ein.As illustrated, cache memory circuit 105 may be implemented using any suitable type of memory circuit design, such as static random access memory (SRAM), dynamic RAM (DRAM), ferroelectric RAM (FeRAM or FRAM), magnetoresistive RAM (MRAM), flash memory, and the like. Cache memory circuit 105 may be organized using any suitable cache structure, including using multiple types and/or sets. Cache control circuit 101 includes circuitry for performing cache operations in cache memory circuit 105, such as maintaining cache tags, determining whether an address related to a memory transaction is a hit (a cache line currently corresponds to the address) or miss (no cache line has been filled with data corresponding to the address), issuing cache line fill requests in response to a miss, marking memory lines for enablement, and the like. Address map 110 includes any suitable combination of software, firmware, and hardware circuitry for determining a physical address for registers and memory circuitry associated with memory. In some embodiments, address map 110 includes translation tables for converting logical addresses to physical addresses.
Wie gezeigt, empfängt Cache-Steuerungsschaltung 101 die Zuweisungsanforderung 145 zum Zeitpunkt t0. Cache-Steuerungsschaltung 101 ist konfiguriert, um Zuweisungsanforderung 145 zu empfangen, um einen Abschnitt der Cache-Speicherschaltung 105, der aktuell verwendet wird, erneut zuzuweisen. Zuweisungsanforderung 145 identifiziert einen der Adressbereiche 115 (z. B. Adressbereich 115b), die einer oder mehreren von Cache-Zeilen 120 bis 127 (z. B. Cache-Zeile 123) entspricht. Cache-Steuerungsschaltung 101 empfängt Zuweisungsanforderung 145 zum Zeitpunkt t0, zu dem die Cache-Speicherschaltung 105 in Verwendung stand, und eine oder mehrere der Cache-Zeilen 120 bis 127 können in Cache-Positionen in einem Systemspeicher (nicht gezeigt) in Verwendung sein. Zuweisungsanforderung 145 kann Adressregion 115b durch Einbeziehung eines Adresswerts angeben, der dem Adressbereich 115b entspricht. In anderen Ausführungsformen können andere Formen von Angaben verwendet werden, um Adressbereich 115b zu identifizieren, wie ein Indexwert, der Adressbereich 115b entspricht.As shown, cache control circuit 101 receives allocation request 145 at time t0. Cache control circuit 101 is configured to receive allocation request 145 to reallocate a portion of cache memory circuit 105 that is currently in use. Allocation request 145 identifies one of address ranges 115 (e.g., address range 115b) that corresponds to one or more of cache lines 120-127 (e.g., cache line 123). Cache control circuit 101 receives allocation request 145 at time t0 at which cache memory circuit 105 was in use, and one or more of cache lines 120-127 may be in use in cache locations in a system memory (not shown). Allocation request 145 may specify address region 115b by including an address value corresponding to address range 115b. In other embodiments, other forms of indication may be used to identify address range 115b, such as an index value corresponding to address range 115b.
Jeder der Adressbereiche 115 kann, wenn aktiv, einer Vielzahl von Adressen entsprechen, die Speicherorten in der Cache-Speicherschaltung 105 entsprechen, wie eine oder mehrere von Cache-Zeilen 120 bis 127. Wenn ein besonderer eines der Adressbereiche 115 aktiv ist, wird/werden die entsprechende Cache-Zeile(n) nicht zum Zwischenspeichern von Daten verwendet, sondern eher als RAM verwendet. Wenn ein Adressbereich inaktiv ist, kann/können die entsprechende Cache-Zeile(n) zum Zwischenspeichern von Datenwerten verwendet werden. Adressen, die einem inaktiven Adressbereich zugeordnet sind, können als illegale Adresse behandelt werden und können daher eine Ausnahme erzeugen, wenn sie in einer Transaktion eingeschlossen werden. Zum Zeitpunkt t0 ist Adressbereich 115b nicht aktiv (wie durch das Hashing in
Als Reaktion auf Zuweisungsanforderung 145 kann Cache-Steuerungsschaltung 101 ferner konfiguriert sein, um zum Zeitpunkt t1 Cache-Zeile 123 in den direkt adressierbaren Speicher (RAM) zu konvertieren, indem sie die Cache-Zeile 123 aus Cache-Vorgängen ausschließt. Cache-Zeile 123 kann dann direkt unter Verwendung von Speichertransaktionen adressiert werden, die an die Positionen innerhalb des Adressbereichs 115b adressiert sind. Zum Beispiel kann das Aktivieren der Adressregion 115b das Modifizieren der Adresskarte 110 einschließen, sodass Transaktionen, die an Positionen innerhalb des Adressbereichs 115b adressiert sind, zu Speicherzellen geleitet werden, die der Cache-Zeile 123 entsprechen. Zusätzlich kann Cache-Steuerungsschaltung 101 ferner eine Angabe einstellen, dass Cache-Zeile 123 nicht verfügbar ist und dass aktuell in Cache-Zeile 123 keine zwischengespeicherten Daten gespeichert sind. Zum Beispiel kann Cache-Steuerungsschaltung 101 ein oder mehrere Bits in einem Cache-Tag einstellen, welcher der Cache-Zeile 123 entspricht, die solche Angaben bereitstellt.In response to allocation request 145, cache control circuitry 101 may be further configured to convert cache line 123 to direct addressable memory (RAM) at time t1 by excluding cache line 123 from cache operations. Cache line 123 may then be directly addressed using memory transactions addressed to locations within address range 115b. For example, activating address region 115b may include modifying address map 110 so that transactions addressed to locations within address range 115b are directed to memory cells corresponding to cache line 123. Additionally, cache control circuitry 101 may further set an indication that cache line 123 is unavailable and that no cached data is currently stored in cache line 123. For example, cache control circuit 101 may set one or more bits in a cache tag corresponding to cache line 123 that provides such information.
Die Verwendung einer solchen Cache-zu-RAM-Technik kann es einem Prozess, der in System 100 ausgeführt wird, ermöglichen, zu einem beliebigen Zeitpunkt, zu dem das System aktiv ist, einen Abschnitt der Cache-Speicherschaltung 105 zur Verwendung als direkt adressierbarer RAM zuzuweisen. Wie zuvor beschrieben, kann eine solche Zuweisung es einem besonderen Agenten ermöglichen, Speicherplatz mit Zugriffszeiten mit niedriger Latenz zur Verwendung mit Daten, die sich auf Transaktionen mit hoher Priorität beziehen, wie Echtzeittransaktionen, zu reservieren. Das Zuweisen dieses Raums in der Cache-Speicherungsschaltung 105 kann ferner verhindern, dass andere Agenten von der Verwendung des zugewiesenen Abschnitts profitieren, bis der besondere Agent die Echtzeittransaktionen beendet hat, und kann den Abschnitt zur Verwendung als Cache-Zeile 123 abweisen.Use of such a cache-to-RAM technique may allow a process executing in system 100 to allocate a portion of cache memory circuitry 105 for use as directly addressable RAM at any time the system is active. As previously described, such an allocation may allow a particular agent to reserve memory space with low latency access times for use with data related to high priority transactions, such as real-time transactions. Allocating this space in cache memory circuitry 105 may further prevent other agents from benefiting from use of the allocated portion until the particular agent has completed real-time transactions, and may relegate the portion for use as cache line 123.
Es wird darauf hingewiesen, dass es sich bei System E100, wie in
Das in
In
Wie gezeigt, schließt Cache-Speicherschaltung 205 Cache-Speicher mit mehreren Wegen 240a - 240d sowie eine Vielzahl von Sätzen 250 bis 257 ein. Prozessor 230 ist konfiguriert, um Speicheranforderungen unter Verwendung von Adresskarte 210 auszugeben, die aktive und inaktive Adressbereiche 215 einschließt. In der veranschaulichten Ausführungsform ist Adressbereich 215 m immer aktiv, wenn System 200 aktiv ist, und kann Adressen für einen Hauptsystemspeicher sowie verschiedene Register einschließen. Wenn Prozessor 230 eine Speicheranforderung an den Systemspeicher ausgibt (z. B. eine Adresse im Adressbereich 215m), wird eine in dem Speicherabruf enthaltene Abrufadresse von der Cache-Steuerungsschaltung 201 verwendet, um zu bestimmen, ob eine Cache-Zeile in der Cache-Speicherschaltung 205 aktuell gültige Werte für die Systemspeicherorte hält, die der Abrufadresse entsprechen. Um eine solche Bestimmung zu treffen, kann Cache-Steuerungsschaltung 201 die Abrufadresse verwenden, um einen besonderen eines der Sätze 250 bis 257 zu identifizieren. Zum Beispiel kann Cache-Steuerungsschaltung 201 mindestens einen Abschnitt der Abrufadresse in einem Hashing-Algorithmus verwenden, um einen besonderen Hash-Wert zu bestimmen. Dieser Hash-Wert kann dann verwendet werden, um einen besonderen der Sätze 250 bis 257 zu identifizieren. Jeder der Sätze 250 bis 257 schließt mindestens eine Cache-Zeile von jedem der Wege 240 ein. Wenn eine Cache-Zeile in einem der Wege 240 für den besonderen Satz gültige Werte hält, die der Abrufadresse entsprechen, dann wird die Speicheranforderung in die Cache-Speicherschaltung 205 zum „Treffer“. Andernfalls ist die Speicheranforderung in der Cache-Speicherschaltung 205 eine „Fehlung“. Die Verwendung mehrerer Wege kann eine gewisse Flexibilität ermöglichen, indem Cache-Steuerungsschaltung 201 abgerufene Werte in Cache-Zeilen der Cache-Speicherschaltung 205 abbildet.As shown, cache memory circuit 205 includes multiple way caches 240a-240d and a plurality of sets 250-257. Processor 230 is configured to issue memory requests using address map 210, which includes active and inactive address ranges 215. In the illustrated embodiment, address range 215m is always active when system 200 is active and may include addresses for main system memory as well as various registers. When processor 230 issues a memory request to system memory (e.g., an address in address range 215m), a fetch address included in the memory fetch is used by cache control circuit 201 to determine whether a cache line in cache memory circuit 205 currently holds valid values for the system memory locations corresponding to the fetch address. To make such a determination, cache control circuit 201 may use the fetch address to identify a particular one of sets 250 through 257. For example, cache control circuit 201 may use at least a portion of the fetch address in a hashing algorithm to determine a particular hash value. This hash value can then be used to identify a particular one of sets 250 through 257. Each of sets 250 through 257 includes at least one cache line from each of ways 240. If a cache line in one of ways 240 holds valid values for the particular set that correspond to the fetch address, then the store request to cache memory circuit 205 is a "hit." Otherwise, the store request to cache memory circuit 205 is a "miss." Using multiple ways can allow some flexibility by allowing cache control circuit 201 to map fetched values into cache lines of cache memory circuit 205.
Wie vorstehend beschrieben, kann Cache-Speicherschaltung 205 einen Zugriff mit niedriger Latenz bereitstellen, der auch als eine höhere Dienstgüte (QoS) bezeichnet wird, und nicht auf den Systemspeicher zugreifen, wie im Adressbereich 215m. Unter gewissen Bedingungen kann Prozessor 230 erforderlich sein, um einen Datenblock mit einer hohen QoS-Frist zu verarbeiten. Da die Verarbeitung von Daten aus dem Systemspeicher die erfolgreiche Verarbeitung der Daten innerhalb der Begrenzungen der hohen QoS-Frist gefährden kann, kann Prozessor 230 Zuweisungsanforderung 245 an die Cache-Steuerungsschaltung 201 senden, um anzufordern, dass ein Abschnitt der Cache-Speicherschaltung 205 neu zugewiesen wird.As described above, cache memory circuitry 205 may provide low latency access, also referred to as a higher quality of service (QoS), and not access system memory, such as in address space 215m. Under certain conditions, processor 230 may be required to process a block of data with a high QoS deadline. Since processing data from system memory may jeopardize the successful processing of the data within the constraints of the high QoS deadline, processor 230 may send allocation request 245 to cache control circuitry 201 to request that a portion of cache memory circuitry 205 be reallocated.
Cache-Steuerungsschaltung 201, wie gezeigt, ist konfiguriert, um Zuweisungsanforderung 245 vom Prozessor 230 zu empfangen, um einen Abschnitt der Cache-Speicherschaltung 205 als direkt adressierbaren Speicher erneut zuzuweisen. Zuweisungsanforderung 245 identifiziert Adressbereich 215b, der zum Zeitpunkt des Empfangens der Zuweisungsanforderung 245 inaktiv ist. Zum Beispiel kann Zuweisungsanforderung 245 einen besonderen Adresswert oder eine andere Art von Angabe einschließen, die Adressbereich 215b identifiziert. Basierend auf der Zuweisungsanforderung 245 ist die Cache-Steuerungsschaltung ferner konfiguriert, um einen Abschnitt von Wegen 240 zum Konvertieren auszuwählen. Wie dargestellt, kann jeder der Wege 240 einem der Adressbereiche 215 entsprechen, einschließlich, wie angegeben, Weg 240b, der Adressbereich 215b entspricht. In anderen Ausführungsformen kann Cache-Speicherschaltung 205 zusätzliche Wege einschließen, sodass zwei oder mehr Wege einem gegebenen Adressbereich zugeordnet werden können. Zuweisungsanforderung 245 kann auch mehr als einen Adressbereich angeben, wie Adressbereiche 215b und 215c. In einigen Ausführungsformen kann der Abschnitt der Wege 240 eine Hälfte oder ein anderer Anteil eines besonderen Weges sein. Beispielsweise kann 240b mehrere Cache-Zeilen in jedem der Sätze 250 bis 257 einschließen, wie zwei Zeilen pro Satz. In solchen Ausführungsformen kann eine der zwei Cache-Zeilen von jedem der Sätze 250 - 257 neu zugewiesen werden, wodurch die Hälfte der Wege 240b zur Verwendung als Cache verbleibt, während die andere Hälfte dem Adressbereich 215b neu zugewiesen ist.Cache control circuitry 201, as shown, is configured to receive allocation request 245 from processor 230 to reallocate a portion of cache memory circuitry 205 as directly addressable memory. Allocation request 245 identifies address range 215b that is inactive at the time allocation request 245 is received. For example, allocation request 245 may include a particular address value or other type of indication that identifies address range 215b. Based on allocation request 245, cache control circuitry is further configured to select a portion of ways 240 to convert. As shown, each of ways 240 may correspond to one of address ranges 215, including, as indicated, way 240b that corresponds to address range 215b. In other embodiments, cache memory circuitry 205 may include additional ways so that two or more ways may be associated with a given address range. Allocation request 245 may also specify more than one address range, such as address ranges 215b and 215c. In some embodiments, the portion of ways 240 may be one half or another portion of a particular way. For example, 240b may include multiple cache lines in each of sets 250-257, such as two lines per set. In such embodiments, one of the two cache lines from each of sets 250-257 may be reallocated, leaving half of ways 240b for use as cache while the other half is reallocated to address range 215b.
Um Weg 240b umzuwandeln, kann Cache-Steuerungsschaltung 201 konfiguriert sein, um jeweilige Angaben in Cache-Tags, die besonderen Cache-Zeilen entsprechen, die in dem ausgewählten Abschnitt von Wegen enthalten sind, einzustellen. Cache-Zeilen 250b bis 257b sind in Weg 240b eingeschlossen und werden, wie gezeigt, für eine Neuzuweisung zu Adressbereich 215b ausgewählt. Durch Hinzufügen jeweiliger Angaben zu Cache-Tags für jede der Cache-Zeilen 250b bis 257b wird die entsprechende Cache-Zeile aus der Verwendung als Cache-Speicher entfernt. Solche Angaben können bewirken, dass Cache-Steuerungsschaltung 201 Cache-Zeilen 250b bis 257b ignoriert, wenn bestimmt wird, ob eine empfangene Speicheranforderung in Cache-Speicherschaltung 205 ein Treffer oder falsch ist, und kann ferner verhindern, dass Cache-Steuerungsschaltung 201 eine Adresse von einer Cache-Fehlung auf eine der Cache-Zeilen 250b bis 257b abbildet. Dementsprechend werden Cache-Zeilen 250b bis 257b effektiv aus der Cache-Speichernutzung entfernt, während diese Angaben in die Cache-Tags gesetzt werden. Cache-Steuerungsschaltung 201 ist ferner konfiguriert, um Cache-Zeilen 250b bis 257b in Weg 240b zur Verwendung in dem identifizierten Adressbereich 215b abzubilden. Adressbereich 215b schließt, wie veranschaulicht, eine Anzahl von Adressen ein, die für die Verwendung mit neu zugewiesenen Cache-Zeilen 250b bis 257b reserviert werden können und daher möglicherweise nicht anderen Speicherorten oder Registern zugeordnet werden. Wenn Adressbereich 215b inaktiv ist, kann ein Versuch, auf diese Adressen zuzugreifen, dazu führen, dass eine Ausnahme erzeugt wird und/oder zu einem Standardwert zurückgekehrt wird. Cache-Steuerungsschaltung 201 kann ferner konfiguriert sein, um jeweilige Echtzeitindikatoren in die Cache-Tags zu setzen, die den besonderen Cache-Zeilen 250b bis 257b entsprechen. Solche Echtzeitindikatoren können angeben, dass Cache-Zeilen 250b bis 257b und daher Adressen im Adressbereich 215b Echtzeittransaktionen mit höheren Prioritäten als Volumentransaktionen zugeordnet sind. Dementsprechend können Speicherzugriffe auf eine der neu zugewiesenen Cache-Zeilen 250b bis 257b als Echtzeittransaktionen behandelt werden, selbst wenn eine Echtzeittransaktion nicht explizit im Speicherzugriff verwendet wird.To convert way 240b, cache control circuit 201 may be configured to set respective indications in cache tags corresponding to particular cache lines included in the selected portion of ways. Cache lines 250b through 257b are included in way 240b and are selected for reassignment to address range 215b as shown. By adding respective indications to cache tags for each of cache lines 250b through 257b, the corresponding cache line is removed from use as a cache. Such indications may cause cache control circuit 201 to ignore cache lines 250b through 257b when determining whether a received store request in cache circuit 205 is a hit or miss, and may further prevent cache control circuit 201 from mapping an address from a cache miss to any of cache lines 250b through 257b. Accordingly, cache lines 250b-257b are effectively removed from cache memory usage while these indications are placed in the cache tags. Cache control circuitry 201 is further configured to map cache lines 250b-257b in path 240b for use in the identified address range 215b. Address range 215b, as illustrated, includes a number of addresses that may be reserved for use with newly allocated cache lines 250b-257b and thus may not be mapped to other memory locations or registers. When address range 215b is inactive, an attempt to access these addresses may result in an exception being generated and/or a default return. Cache control circuitry 201 may be further configured to place respective real-time indicators in the cache tags corresponding to the particular cache lines 250b-257b. Such real-time indicators may indicate that cache lines 250b through 257b, and therefore addresses in the address range 215b, are allocated to real-time transactions with higher priorities than volume transactions. Accordingly, memory accesses to any of the newly allocated cache lines 250b through 257b may be treated as real-time transactions even if a real-time transaction is not explicitly used in the memory access.
Darüber hinaus kann Cache-Steuerungsschaltung 201 ferner konfiguriert sein, um eine oder mehrere der Cache-Zeilen 250b bis 257b in Weg 240b vor Abbildung des Weges 240b zur Verwendung im Adressbereich 215b zu spülen. Da Cache-Speicherschaltung 205 vor Prozessor 230, der Zuweisungsanforderung 245 ausgibt, in Verwendung sein kann, können eine oder mehrere der Cache-Zeilen in Weg 240b verwendet werden, um Speicherorte zwischenzuspeichern, wie Positionen im Adressbereich 215m. Wenn aktuell zwischengespeicherte Werte in den jeweiligen Positionen in Adressbereich 215 m übereinstimmen, können diese Werte einfach gelöscht oder ignoriert werden, wenn die jeweilige Cache-Zeile Adressbereich 215b zugeordnet wird. Wenn jedoch ein in Weg 240b zwischengespeicherter Wert modifiziert wurde, aber noch nicht zurück in Adressbereich 215 m geschrieben wurde, kann ein solcher Wert als „verschmutzt“ bezeichnet werden und ein Spülbefehl ausgegeben werden, der zum Schreiben von verschmutzten Werten zurück an die Systemspeicherorte in Adressbereich 215 m ausgegeben wird. Zum Beispiel schließen Cache-Zeilen 251b, 254b und 257b im veranschaulichten Beispiel verschmutzte Daten ein. Cache-Steuerungsschaltung 201 gibt Spülbefehl 248 aus, um die schmutzigen Werte in diesen Cache-Zeilen zu den entsprechenden Positionen in Adressbereich 215 m zurückzuschreiben. Ein oder mehrere Spülbefehle können vor dem Umwandeln der Cache-Zeilen von Weg 240b an direkt adressierbare Speicherorte in Adressbereich 215b ausgegeben werden.In addition, cache control circuit 201 may be further configured to control one or flush several of the cache lines 250b through 257b in path 240b prior to mapping path 240b for use in address space 215b. Since cache memory circuitry 205 may be in use prior to processor 230 issuing allocation request 245, one or more of the cache lines in path 240b may be used to cache memory locations, such as locations in address space 215m. If currently cached values in the respective locations in address space 215m match, those values may simply be deleted or ignored when the respective cache line is mapped to address space 215b. However, if a value cached in path 240b has been modified but has not yet been written back to address space 215m, such a value may be designated as "dirty" and a flush command issued to write dirty values back to the system memory locations in address space 215m. For example, in the illustrated example, cache lines 251b, 254b, and 257b include dirty data. Cache control circuit 201 issues flush command 248 to write the dirty values in these cache lines back to the corresponding locations in address range 215m. One or more flush commands may be issued prior to converting the cache lines from path 240b to directly addressable locations in address range 215b.
Nach dem Verarbeiten des Datenblocks mit der hohen QoS-Frist kann Prozessor 230 möglicherweise keine sofortige Verwendung für den direkt adressierbaren Speicher mit hoher QoS im Adressbereich 215b aufweisen und kann konfiguriert sein, um eine Anforderung auszugeben, um Weg 240b abzuweisen. Cache-Steuerungsschaltung 201 kann ferner konfiguriert sein, um als Reaktion auf das Empfangen der Anforderung, den direkt adressierbaren Speicher in Adressbereich 215b abzuweisen, um Weg 240b in Cache-Vorgängen einzuschließen. Werte, die im direkt adressierbaren Speicher gespeichert wurden, während Weg 240b erneut zugewiesen wurde, werden als Reaktion auf die Anforderung, den direkt adressierbaren Speicher abzuweisen, nicht erneut zugewiesen. Jegliche Werte, die in Adressbereich 215b während der Neuzuweisung geschrieben werden, können gelöscht oder ignoriert werden und anschließend überschrieben werden, da Weg 240b zur Verwendung in Vorgängen der Cache-Speicherschaltung 205 zurückgegeben wird.After processing the data block with the high QoS deadline, processor 230 may have no immediate use for the high QoS directly addressable memory in address space 215b and may be configured to issue a request to reject way 240b. Cache control circuit 201 may be further configured to, in response to receiving the request to reject the directly addressable memory in address space 215b, include way 240b in cache operations. Values stored in the directly addressable memory while way 240b was being reallocated are not reallocated in response to the request to reject the directly addressable memory. Any values written to address space 215b during the reallocation may be deleted or ignored and subsequently overwritten as way 240b is returned for use in operations of cache memory circuit 205.
Es wird darauf hingewiesen, dass die Verwendung von Wegen 240 der Cache-Speicherschaltung 205, um den Cache-Speicher einem direkt adressierbaren Speicher neu zuzuweisen, mit einer akzeptablen Menge zusätzlicher Logikschaltungen implementiert werden kann, während ein Fortsetzen des Betriebs der Cache-Speicherschaltung 205 mit wenig bis keiner Unterbrechung ermöglicht wird. Das Implementieren der Neuzuweisung des Cache-Speichers auf einer individuellen Cache-Zeilenbasis kann hingegen die zusätzliche einer größeren Logikschaltung erfordern, insbesondere wenn der Cache-Speicher groß ist und/oder viele Sätze und Wege aufweist. Weiteres Begrenzen einer Menge eines Cache-Speichers, der neu zugewiesen werden kann, kann andererseits keine angemessene Auflösung bereitstellen, um zwischen den Anforderungen für hohe QoS-Speicherorte und laufende Cache-Vorgänge zu verwalten. Wenn zum Beispiel eine Neuzuweisung der Cache-Speicherschaltung 205 auf die Hälfte des Cache beschränkt ist, kann die zugewiesene Speichermenge viel größer sein als erforderlich, um die hohen QoS-Daten zu verarbeiten, und ferner eine Kapazität des Cache verringern und möglicherweise eine Effizienz von Agenten, die den Cache nutzen, reduzieren.It is noted that using ways 240 of cache memory circuitry 205 to reallocate cache memory to directly addressable memory may be implemented with an acceptable amount of additional logic circuitry while allowing continued operation of cache memory circuitry 205 with little to no interruption. Implementing reallocation of cache memory on an individual cache line basis, on the other hand, may require the addition of larger logic circuitry, particularly when the cache memory is large and/or has many sets and ways. Further limiting an amount of cache memory that can be reallocated, on the other hand, may not provide adequate resolution to manage between the requirements for high QoS locations and ongoing cache operations. For example, if reallocation of cache memory circuitry 205 is limited to half of the cache, the amount of memory allocated may be much larger than required to handle the high QoS data, and may further reduce a capacity of the cache and potentially reduce an efficiency of agents utilizing the cache.
Es wird auch angemerkt, dass die Ausführungsform von
Die Beschreibung von
Unter Bezugnahme auf
Werte, die in Cache-Zeile 123 geschrieben werden, während sie Adressbereich 115b zugewiesen sind, können gelöscht oder ignoriert werden, wenn die Angabe in dem zugehörigen Cache-Tag gelöscht wird. Da Adressen in Adressbereich 115b möglicherweise nicht an anderer Stelle in Adresskarte 110 implementiert sind, können keine Rückschreibanforderungen ausgegeben werden, um diese Werte zu kopieren. Sofern kein Agent ausdrücklich Adressbereich 115b verwendet, während er aktiv ist, werden die Daten aus Adressbereich 115b zu anderen Positionen in Adresskarte 110 kopiert, die Werte in Adressbereich 115b können verloren sein, wenn die Abweisung abgeschlossen ist.Values written to cache line 123 while assigned to address range 115b may be discarded or ignored when the specification in the associated cache tag is cleared. Because addresses in address range 115b may not be implemented elsewhere in address map 110, no writeback requests may be issued to copy these values. Unless an agent explicitly uses address range 115b while it is active, the data from address range 115b is copied to other locations in address map 110, the values in address range 115b may be lost when the rejection is complete.
Zum Zeitpunkt t1 wird Speichertransaktion 350 von einem Agenten ausgegeben, um auf einen Wert in Adressbereich 115b zuzugreifen. Cache-Steuerungsschaltung 101 ist konfiguriert, um als Reaktion darauf, dass Speichertransaktion 350 nach dem Abweisen von Adressbereich 115b empfangen wird, eine Fehlermeldung 355 zu erzeugen. In einigen Ausführungsformen kann Fehlermeldung 355 erzeugt werden, wenn Speichertransaktion 350 einen Schreibvorgang oder eine Modifikation einer Adresse in Adressbereich 115b einschließt. Andernfalls, wenn Speichertransaktion 350 nur Lesezugriffe auf Adressbereich 115b einschließt, kann Cache-Steuerungsschaltung 101 anstelle oder zusätzlich zur Erzeugung einer Fehlermeldung 355 einen besonderen Standardwert, wie alle Null-Bits oder alle Ein-Bits, an den anfordernden Agenten zurückgeben. Das Erzeugen der Fehlermeldung 355 kann unter Verwendung einer Vielzahl von Techniken implementiert werden. Zum Beispiel kann die Fehlermeldung 355 erzeugt werden, indem ein Ausnahmesignal aktiviert wird, das wiederum einen besonderen Prozess bewirkt, der durch einen oder mehrere Prozessorkerne in dem System 100 auszuführen ist. Das Erzeugen der Fehlermeldung 355 kann das Zurückgeben eines besonderen Wertes einschließen, der dem Agenten angibt, dass die ausgegebene Speichertransaktion 350, welche die Adressregion 115b ausgegeben hat, abgewiesen wurde.At time t1, memory transaction 350 is issued by an agent to access a value in address range 115b. Cache control circuitry 101 is configured to generate an error message 355 in response to receiving memory transaction 350 after rejecting address range 115b. In some embodiments, error message 355 may be generated if memory transaction 350 includes a write or modification of an address in address range 115b. Otherwise, if memory transaction 350 only includes read accesses to address range 115b, cache control circuitry 101 may return a particular default value, such as all zero bits or all one bits, to the requesting agent instead of or in addition to generating an error message 355. Generating error message 355 may be implemented using a variety of techniques. For example, error message 355 may be generated by asserting an exception signal, which in turn causes a special process to be executed by one or more processor cores in system 100. Generating error message 355 may include returning a special value indicating to the agent that the issued memory transaction 350 that issued address region 115b was rejected.
Wie gezeigt, schließt Schreibanforderung 445 eine Schreibanforderung zum Schreiben von Daten in einen oder mehrere Orte ein, die aktuell in Cache-Zeile 121 der Cache-Speicherschaltung 105 zwischengespeichert sind. Auf ähnliche Weise schließt Schreibanforderung 446 eine Schreibanforderung zum Schreiben von Daten in einen oder mehrere Orte in Adressbereich 115b ein, die durch Neuzuweisen der Cache-Zeile 123 von Cache-Speicherschaltung 105 zu Adresskarte 110 implementiert wird. Cache-Steuerungsschaltung 101 ist als Reaktion auf die Schreibanforderung 445 konfiguriert, um eine Rückschreibanforderung 447 für Cache-Zeile 121 auszugeben. Die modifizierten Werte in Cache-Zeile 121 sind in Rückschreibanforderung 447 zusammen mit entsprechenden Zieladressen in einem Systemspeicher eingeschlossen. Rückschreibanforderung 447 bewirkt, dass diese modifizierten Werte an den Zieladressen im Systemspeicher aktualisiert werden. Wenn Cache-Zeile 121 freigegeben und dann unterschiedlichen Adressen im Systemspeicher zugeordnet wird, können die Zieladressen im Systemspeicher immer noch aktuelle Werte aufweisen.As shown, write request 445 includes a write request to write data to one or more locations currently cached in cache line 121 of cache memory circuit 105. Similarly, write request 446 includes a write request to write data to one or more locations in address range 115b, which is implemented by remapping cache line 123 from cache memory circuit 105 to address map 110. Cache control circuit 101 is configured in response to write request 445 to issue a writeback request 447 for cache line 121. The modified values in cache line 121 are included in writeback request 447 along with corresponding destination addresses in system memory. Writeback request 447 causes these modified values to be updated at the destination addresses in system memory. If cache line 121 is freed and then mapped to different addresses in system memory, the target addresses in system memory may still have current values.
Cache-Steuerungsschaltung 101 ist, wie veranschaulicht, ferner konfiguriert, um die Cache-Zeile 123 aus Rückschreibanforderungen auszuschließen. Schreibanforderung 446 kann einen oder mehrere Werte in Adressbereich 115b ändern (einschließlich Cache-Zeile 123). Trotz der Änderung der Werte in Cache-Zeile 123 ist Cache-Steuerungsschaltung 101 konfiguriert, um diese Modifikationen in Bezug auf die Rückschreibbefehle zu ignorieren. Adressbereich 115b, obwohl die Cache-Zeile 123 einschließend, wird als Endpunkt-Speicherziel behandelt. Keine Zieladresse im Systemspeicher entspricht den Adressen in Adressbereich 115b. Dementsprechend können modifizierte Werte, die in Cache-Zeile 123 gespeichert sind, nicht in einer anderen Speicherschaltung als Reaktion auf Schreibanforderung 446 aktualisiert werden.Cache control circuitry 101 is further configured, as illustrated, to exclude cache line 123 from write-back requests. Write request 446 may modify one or more values in address range 115b (including cache line 123). Despite the modification of the values in cache line 123, cache control circuitry 101 is configured to ignore these modifications with respect to the write-back commands. Address range 115b, although including cache line 123, is treated as an endpoint memory destination. No destination address in system memory corresponds to the addresses in address range 115b. Accordingly, modified values stored in cache line 123 may not be updated in another memory circuitry in response to write request 446.
Es wird jedoch darauf hingewiesen, dass sich ein unterschiedlicher Cache-Speicher zwischen Cache-Speicherschaltung 105 und einer Verarbeitungsschaltung befinden kann, die Schreibanforderung 446 ausgibt. Zum Beispiel kann Cache-Speicherschaltung 105 ein L2-Cache sein und die Verarbeitungsschaltung, die Schreibanforderung 446 ausgibt, kann einen L1-Cache einschließen. In einer solchen Ausführungsform kann der L1-Cache mindestens einige Werte zwischenspeichern, die in Adressbereich 115b (z. B. in Cache-Zeile 123) gespeichert sind.However, it should be noted that a different cache may be located between cache memory circuit 105 and processing circuitry issuing write request 446. For example, cache memory circuit 105 may be an L2 cache and the processing circuitry issuing write request 446 may include an L1 cache. In such an embodiment, the L1 cache may cache at least some values stored in address range 115b (e.g., in cache line 123).
Es wird ferner darauf hingewiesen, dass die Ausführungsformen von
Die Verwendung von Echtzeittransaktionen ist vorstehend in verschiedenen Kapazitäten beschrieben, wie sie zusammen mit den offenbarten Techniken verwendet werden. Sowohl Echtzeit- als auch Volumentransaktionen können für Speicheranforderungen verwendet werden, die auf die hierin beschriebenen Cache-basierten Adressbereiche gerichtet sind.
Nun zu
Zu einem ersten Zeitpunkt gibt Agent 530b die Volumenspeichertransaktion 555 mit einem Ziel im Adressbereich 515b aus. Ähnlich wie Adressbereiche 115b und 215b in
Busschaltung 545 schließt einen Satz von Drähten ein, die Cache-Steuerungsschaltung 501 mit Netzwerkarbiterschaltung 540 koppeln. In einigen Ausführungsformen kann Busschaltung 545 eine ausreichende Anzahl von Drähten einschließen, um unabhängige physische Volumen- und Echtzeitkanäle zu unterstützen. Wie gezeigt, schließt Busschaltung 545 jedoch keine solche Anzahl von Drähten ein, und daher werden sowohl Echtzeit- als auch Volumenspeichertransaktionen unter Verwendung des gleichen Satzes von Drähten übertragen, indem virtuelle Volumen- und Echtzeitkanäle genutzt werden, um die jeweiligen QoS-Ebenen für jeden Transaktionstyp zu unterstützen. Dementsprechend verwendet Netzwerkarbiterschaltung 540 ein Priorisierungsschema zum Auswählen zwischen Echtzeit (RT)-Warteschlange 560a und Volumenwarteschlange 565a für eine nächste Transaktion, die über Busschaltung 545 gesendet wird. Zum Beispiel kann Netzwerkarbiterschaltung 540 Transaktionen in der RT-Warteschlange 560a zuerst senden und dann Transaktionen in der Volumenwarteschlange 565a senden, nachdem RT-Warteschlange 560a leer ist. In anderen Ausführungsformen können zusätzliche Überlegungen in den Auswahlprozess eingeschlossen werden, um zu vermeiden, dass Volumenwarteschlange 565a einen vollständigen Zustand erreicht oder einen Volumentransaktionsabriss in Volumenwarteschlange 565a für eine übermäßige Zeitdauer aufweist.Bus circuit 545 includes a set of wires that couple cache control circuit 501 to network arbiter circuit 540. In some embodiments, bus circuit 545 may include a sufficient number of wires to support independent physical volume and real-time channels. However, as shown, bus circuit 545 does not include such a number of wires, and thus both real-time and volume storage transactions are transmitted using the same set of wires, utilizing virtual volume and real-time channels to support the respective QoS levels for each transaction type. Accordingly, network arbiter circuit 540 uses a prioritization scheme to select between real-time (RT) queue 560a and volume queue 565a for a next transaction sent over bus circuit 545. For example, network arbiter circuit 540 may send transactions in RT queue 560a first and then send transactions in volume queue 565a after RT queue 560a is empty. In other embodiments, additional considerations may be included in the selection process to avoid volume queue 565a reaching a full state or having a volume transaction stall in volume queue 565a for an excessive amount of time.
Wie hierin verwendet, ist ein „Kanal“ ein Medium, das verwendet wird, um Informationen zwischen einem Source-Agenten (z. B. einer Prozessorschaltung) und einem Zielagenten (z. B. einer Speicherschaltung) zu übertragen. Ein Kanal kann Drähte (einschließlich Leiterbahnen auf einer Leiterplatte oder integrierter Schaltung) und verschiedene andere Schaltelemente einschließen. In einigen Ausführungsformen kann ein Kanal ferner Antennen und elektromagnetische Wellen einer besonderen Frequenz oder Reichweite von Frequenzen einschließen. Ein „physischer“ Kanal bezieht sich auf die Schaltelemente, die einen Kanal umfassen. Ein „virtueller“ Kanal bezieht sich auf zwei oder mehr unterschiedliche „Kanäle“, die über einen gleichen physischen Kanal implementiert sind. Virtuelle Kanäle können unter Verwendung einer Vielzahl von Techniken implementiert werden. Zum Beispiel kann die Virtualisierung eines Kanals in einer Kanalschnittstelle implementiert werden, indem jeweilige Warteschlangen für jeden virtuellen Kanal eingeschlossen werden. Ein Agent sendet und empfängt Transaktionen über einen gegebenen Kanal unter Verwendung der Warteschlange für den jeweiligen Kanal. Andere Schaltungen können dann die Kanalarbitrierung zwischen den jeweiligen Warteschlangen steuern, um spezifische Transaktionen auszuwählen, die gesendet werden sollen, wenn der Kanal verfügbar ist. In anderen Ausführungsformen kann ein Agent für das Zuordnen verschiedener Transaktionen zu entsprechenden virtuellen Kanälen verantwortlich sein. In solchen Ausführungsformen kann der Agent geeignete Datenstrukturen zum Zuordnen von Transaktionen zu geeigneten virtuellen Kanälen aufrechterhalten und dann arbitrieren, um eine gegebene Transaktion auszuwählen, die gesendet werden soll, wenn der Kanal verfügbar ist.As used herein, a "channel" is a medium used to transmit information between a source agent (e.g., a processor circuit) and a destination agent (e.g., a memory circuit). A channel may include wires (including traces on a circuit board or integrated circuit) and various other circuit elements. In some embodiments, a channel may further include antennas and electromagnetic waves of a particular frequency or range of frequencies. A "physical" channel refers to the circuit elements that comprise a channel. A "virtual" channel refers to two or more different "channels" implemented over a same physical channel. Virtual channels may be implemented using a variety of techniques. For example, virtualization of a channel in a channel interface may be implemented by including respective queues for each virtual channel. An agent sends and receives transactions over a given channel using the queue for the respective channel. Other circuits may then control channel arbitration between the respective queues to select specific transactions to be sent when the channel is available. In other embodiments an agent may be responsible for assigning various transactions to appropriate virtual channels. In such embodiments, the agent may maintain appropriate data structures for assigning transactions to appropriate virtual channels and then arbitrate to select a given transaction to be sent when the channel is available.
Zu einem zweiten Zeitpunkt wählt die Netzwerkarbiterschaltung 540 Speichertransaktion 555 aus der Volumenwarteschlange 565a aus und leitet sie an die Cache-Steuerungsschaltung 501 weiter. Cache-Steuerungsschaltung 501 kann wiederum Speichertransaktion 555 in Volumenwarteschlange 565b stellen, bis die Bandbreite zur Verarbeitung der Speichertransaktion 555 in Adressbereich 515b verfügbar ist. Zwischenzeitlich sendet Agent 530a zu einem dritten Zeitpunkt nach dem zweiten Zeitpunkt Speichertransaktion 550 an Cache-Steuerungsschaltung 501 über Busschaltung 545. Netzwerkarbiterschaltung 540 empfängt Echtzeitspeicherungstransaktion 550 und stellt sie in RT-Warteschlange 560a. Zu einem nachfolgenden vierten Zeitpunkt wird Speichertransaktion 550 durch Netzwerkarbiterschaltung 540 ausgewählt und an Cache-Steuerungsschaltung 501 gesendet, welche die empfangene Speichertransaktion 550 in RT-Warteschlange 560b stellt.At a second time, network arbiter circuit 540 selects memory transaction 555 from volume queue 565a and forwards it to cache control circuit 501. Cache control circuit 501 may in turn place memory transaction 555 in volume queue 565b until bandwidth is available to process memory transaction 555 in address space 515b. Meanwhile, at a third time after the second time, agent 530a sends memory transaction 550 to cache control circuit 501 via bus circuit 545. Network arbiter circuit 540 receives real-time memory transaction 550 and places it in RT queue 560a. At a subsequent fourth time, memory transaction 550 is selected by network arbiter circuit 540 and sent to cache control circuit 501, which places the received memory transaction 550 in RT queue 560b.
In dem veranschaulichten Beispiel befinden sich beide Speichertransaktionen 550 und 555 in RT-Warteschlange 560b bzw. Volumenwarteschlange 565b. Cache-Steuerungsschaltung 501 ist konfiguriert, um die virtuellen Echtzeit- und Volumenkanäle für Speichertransaktionen in Adressbereichen 515a bis 515d zu unterstützen. Dementsprechend priorisiert Cache-Steuerungsschaltung 501 unter Verwendung eines Auswahlschemas, das der Netzwerkarbiterschaltung 540 ähnlich ist, die über den virtuellen Echtzeitkanal empfangene Speichertransaktion 550 gegenüber der über den virtuellen Massenkanal empfangenen Speichertransaktion 550. Zu einem fünften Zeitpunkt, nach dem vierten Zeitpunkt, überspringt Cache-Steuerungsschaltung 501 Speichertransaktion 555, die in Volumenwarteschlange 565b wartet, und wählt stattdessen Speichertransaktion 550 aus, die in RT-Warteschlange 560b wartet. Später, zu einem sechsten Zeitpunkt, erfüllt Speichertransaktion 555 die Auswahlkriterien und wird in Adressbereich 515b verarbeitet.In the illustrated example, both memory transactions 550 and 555 are in RT queue 560b and volume queue 565b, respectively. Cache control circuitry 501 is configured to support the real-time and volume virtual channels for memory transactions in address ranges 515a through 515d. Accordingly, using a selection scheme similar to network arbiter circuitry 540, cache control circuitry 501 prioritizes memory transaction 550 received over the real-time virtual channel over memory transaction 550 received over the bulk virtual channel. At a fifth time, after the fourth time, cache control circuitry 501 skips memory transaction 555 waiting in volume queue 565b and instead selects memory transaction 550 waiting in RT queue 560b. Later, at a sixth time, memory transaction 555 meets the selection criteria and is processed in address range 515b.
Es wird darauf hingewiesen, dass System 500 ein Beispiel zum Hervorheben offenbarter Konzepte ist.
Unter Bezugnahme auf
Systemspeicherkarte 620 schließt, wie veranschaulicht, eine Speicherkarte aller in System 600 enthaltenen Adressbereiche ein. Diese Adressbereiche können in zwei Arten von Sicherheitsbereichen klassifiziert werden: öffentlich zugänglichen Bereich 623 und gesicherten Bereich 627. Der öffentlich zugängliche Bereich schließt alle Speicherbereiche ein, für die ein beliebiger Agent innerhalb von System 600 (einschließlich des vertrauenswürdigen Agenten 630 und des nicht vertrauenswürdigen Agenten 635) Speichertransaktionen ausgeben kann. Der öffentlich zugängliche Bereich kann einen Speicher einschließen, der für die allgemeine Anwendungsnutzung verwendet wird, einschließlich zum Beispiel den Speicher, der zum Verarbeiten von Bildern, Audiodateien und für die Ausführung allgemeiner Anwendungen verwendet wird. Der gesicherte Zugriffsbereich 627 schließt Speicherbereiche ein, die eingeschränkten Zugriff haben. Nur als vertrauenswürdig klassifizierte Agenten, wie der vertrauenswürdige Agent 630, können auf Speicherorte innerhalb des gesicherten Bereichs 627 zugreifen. Eine Speichertransaktion von einem nicht vertrauenswürdigen Agenten zu einer Adresse im gesicherten Zugriffsbereich 627 kann ignoriert werden oder kann zu einer Erzeugung einer Fehlerangabe führen, wie einer Ausnahme.System memory map 620, as illustrated, includes a memory map of all address ranges included in system 600. These address ranges can be classified into two types of security ranges: public access range 623 and secure access range 627. The public access range includes all memory ranges to which any agent within system 600 (including trusted agent 630 and untrusted agent 635) can issue memory transactions. The public access range may include memory used for general application use, including, for example, memory used to process images, audio files, and run general applications. Secure access range 627 includes memory ranges that have restricted access. Only agents classified as trusted, such as trusted agent 630, can access memory locations within secure access range 627. A memory transaction from an untrusted agent to an address in the trusted access range 627 may be ignored or may result in the generation of an error indication, such as an exception.
In dem veranschaulichten Beispiel gibt sowohl der vertrauenswürdige Agent 630 als auch der nicht vertrauenswürdige Agent 635 jeweilige Speichertransaktionen 650 und 655 für eine Zieladresse in Adressbereich 615b an. Um sichere Zugriffsbereiche zu unterstützen, ist Cache-Steuerungsschaltung 601 konfiguriert, um zu bestimmen, dass Adressbereich 615b in dem gesicherten Zugriffsbereich 627 eingeschlossen ist. Als Reaktion auf die Bestimmung ist Cache-Steuerungsschaltung 601 konfiguriert, um Speichertransaktion 655 vom nicht vertrauenswürdigen Agenten 635 zu ignorieren, der nicht autorisiert ist, auf den gesicherten Bereich 627 zuzugreifen. Der vertrauenswürdige Agent 630 ist jedoch berechtigt, auf den gesicherten Bereich 627 zuzugreifen, und daher ist Cache-Steuerungsschaltung 601 konfiguriert, um Speichertransaktion 650 in Adressbereich 615b zu verarbeiten.In the illustrated example, both the trusted agent 630 and the untrusted agent 635 provide respective Memory transactions 650 and 655 for a destination address in address range 615b. To support secure access ranges, cache control circuitry 601 is configured to determine that address range 615b is included in the secured access range 627. In response to the determination, cache control circuitry 601 is configured to ignore memory transaction 655 from untrusted agent 630, which is not authorized to access the secured range 627. However, trusted agent 630 is authorized to access the secured range 627, and therefore cache control circuitry 601 is configured to process memory transaction 650 in address range 615b.
Als Reaktion auf das Empfangen der Speichertransaktion 655 kann Cache-Steuerungsschaltung 601 ferner konfiguriert sein, um eine Fehlerangabe zu erzeugen. Zum Beispiel kann Cache-Steuerungsschaltung 601 einen Fehlercode an den nicht vertrauenswürdigen Agenten 635 zurückgeben, wobei der Fehlercode einen besonderen Wert einschließt, der einen Zugriff auf eine unberechtigte Adresse angibt. Cache-Steuerungsschaltung 601 kann stattdessen oder zusätzlich weiterhin konfiguriert sein, ein oder mehrere Ausnahmesignale, wie eine unzulässige Adressausnahme und/oder eine Sicherheitsverletzungsausnahme, zu aktivieren.In response to receiving the memory transaction 655, cache control circuitry 601 may be further configured to generate an error indication. For example, cache control circuitry 601 may return an error code to the untrusted agent 635, where the error code includes a particular value indicating access to an unauthorized address. Cache control circuitry 601 may instead or additionally be further configured to assert one or more exception signals, such as an illegal address exception and/or a security violation exception.
Es wird darauf hingewiesen, dass es sich bei System 600 lediglich um ein Beispiel handelt. Verschiedene Elemente können aus Gründen der Klarheit aus System 600 weggelassen werden. In anderen Ausführungsformen kann System 600 zusätzliche gesicherte Zugriffsbereiche einschließen. Zum Beispiel kann eine Vielzahl von unterschiedlichen gesicherten Zugriffsbereichen implementiert werden, wobei jeder Bereich einer unterschiedlichen gesicherten Zugriffsstufe entspricht und daher durch unterschiedliche Kombinationen von vertrauenswürdigen Agenten zugänglich ist.It should be noted that system 600 is merely an example. Various elements may be omitted from system 600 for clarity. In other embodiments, system 600 may include additional secured access areas. For example, a plurality of different secured access areas may be implemented, with each area corresponding to a different secured access level and therefore accessible by different combinations of trusted agents.
Die vorstehend in Bezug auf
Nun zu
Bei Block 710 schließt Verfahren 700 das Empfangen, durch Cache-Steuerungsschaltung 101, der Zuweisungsanforderung 145 ein, um einen Abschnitt der Cache-Speicherschaltung 105, der aktuell verwendet wird, einem direkt adressierbaren Speicherplatz neu zuzuweisen. Wie gezeigt, identifiziert Zuweisungsanforderung 145 den inaktiven Adressbereich 115b. Zuweisungsanforderung 145 kann zum Zeitpunkt t0 empfangen werden, zu dem Zeitpunkt, zu dem Cache-Speicherschaltung 105 in Verwendung stand und eine oder mehrere der Cache-Zeilen 120 bis 127 in Verwendung stand, um Cache-Positionen in einem Systemspeicher zwischenzuspeichern. Adressbereich 115b kann durch Einschließen, in Zuweisungsanforderung 145, eines Adresswerts in Adressbereich 115b oder eines Indexwerts, der Adressbereich 115b entspricht, angegeben werden.At
Verfahren 700 schließt in Block 720 ferner, basierend auf dem identifizierten Adressbereich 115b, das Auswählen der Cache-Zeile 123 der Cache-Speicherschaltung 105 zur Umwandlung ein. Wie veranschaulicht, kann Cache-Zeile 123 aufgrund von Software, die in System 100 ausgeführt wird, wie ein Betriebssystem, Adressbereich 115b zugeordnet sein. In anderen Ausführungsformen kann Cache-Zeile 123 Hardcodes an Adressbereich 115b basierend auf einer Schaltungskonstruktion von Systems 100 sein. Obwohl nur eine Cache-Zeile als zur Verwendung in Adressbereich 115b ausgewählt gezeigt ist, kann jede geeignete Anzahl von Cache-Zeilen ausgewählt werden. Zum Beispiel kann, wie unter Bezugnahme auf
Bei Block 730 schließt Verfahren 700 auch das Setzen, durch Cache-Steuerungsschaltung 101, einer jeweiligen Angabe für die ausgewählte Cache-Zeile 123 ein, um Cache-Zeile 123 aus weiteren Cache-Vorgängen auszuschließen. Zum Beispiel kann Cache-Steuerungsschaltung 101 ein besonderes Bit oder eine Gruppe von Bits in ein Cache-Tag setzen, das der Cache-Zeile 123 entspricht, um die Verwendung der Cache-Zeile 123 in Adressbereich 115b anzugeben. Zusätzlich kann Cache-Steuerungsschaltung 101 einen Echtzeitspeicherindikator setzen, der bezeichnet, dass Cache-Zeile 123 Echtzeittransaktionen mit höheren Prioritäten als Volumentransaktionen zugeordnet ist. Eine solche Angabe kann verhindern, dass Cache-Steuerungsschaltung 101 eine Freigabe der Inhalte der Cache-Zeile 123 durchführt, nachdem sie in Adressbereich 115b neu zugewiesen wurde. Eine Echtzeitangabe kann ferner beliebige Transaktionen mit einer Adresse in Adressbereich 115b als Ziel über alle Volumentransaktionen in der Warteschlange für die Cache-Steuerungsschaltung 101 priorisieren.At
In einigen Ausführungsformen kann Verfahren 700 ferner das Spülen der Cache-Zeile 123, durch Cache-Steuerungsschaltung 101, vor dem Setzen der jeweiligen Angabe umfassen. Da Cache-Speicherschaltung 105 vor dem Empfangen der Zuweisungsanforderung 145 verwendet wurde, können gültige Daten in Cache-Zeile 123 zwischengespeichert werden. Wenn ein beliebiger Wert in der zwischengespeicherten Cache-Zeile 123 geändert wurde und diese Änderung nicht in einen Zielort im Systemspeicher zurückgeschrieben wurde, kann ein Flush-Befehl durch Cache-Steuerungsschaltung 101 ausgegeben werden, der Rückschreibanforderungen für jede Position mit modifizierten Werten erzeugt, die aktuell in Cache-Zeile 123 zwischengespeichert sind. Nachdem die Rückschreibanforderungen ausgegeben wurden, kann Cache-Zeile 123 zur Verwendung in Adressbereich 115b verfügbar sein.In some embodiments,
Die Verwendung eines Abschnitts des Cache-Speichers als ein direkt adressierbarer Adressbereich kann einen Speicherbereich mit niedriger Latenz ermöglichen, der von einem besonderen Agenten zum Durchführen von Speicherzugriffen verwendet werden kann, die eine hohe QoS-Frist aufweisen, die möglicherweise nicht durch direkte Adressen an den Systemspeicher erreichbar ist, selbst wenn typische Techniken zum Zwischenspeichern für die Systemspeicherzugriffe verwendet werden. Durch Erzeugen eines Speicherbereichs mit niedriger Latenz unter Verwendung von Cache-Speicherschaltungen kann der besondere Agent in der Lage sein, Daten zu puffern, die in diesem Speicherbereich mit niedriger Latenz verarbeitet werden sollen, ohne dass das Risiko besteht, dass die gepufferten Daten aus dem Cache freigegeben werden, wenn nicht innerhalb eines besonderen Zeitrahmens zugegriffen wird.Using a portion of the cache memory as a directly addressable address range may enable a low latency memory region that can be used by a particular agent to perform memory accesses that have a high QoS deadline that may not be achievable by direct addresses to the system memory, even when typical caching techniques are used for the system memory accesses. By creating a low latency memory region using cache memory circuits, the particular agent may be able to buffer data to be processed in that low latency memory region without risking the buffered data being released from the cache if not accessed within a particular time frame.
Während Adressbereich 115b aktiv ist, können Cache-Zeilen 120 bis 122 und 124 bis 127 für Cache-Vorgänge in Cache-Speicherschaltung 105 verwendet werden. Zum Beispiel können Daten, die an eine besondere Adresse geschrieben werden, die aktuell in Cache-Speicherschaltung 105 zwischengespeichert ist, an die besondere Adresse im Systemspeicher zurückgeschrieben werden. Cache-Zeile 123 wird jedoch nicht für Cache-Vorgänge verwendet. Zum Beispiel werden Daten, die an eine unterschiedliche Adresse geschrieben werden, die sich in Cache-Zeile 123 in Adressbereich 115b befindet, nicht in den Systemspeicher zurückgeschrieben. Stattdessen kann Cache-Zeile 123 als ein Endziel für Daten verwendet werden, die in Adressbereich 115b geschrieben werden.While address range 115b is active, cache lines 120 through 122 and 124 through 127 may be used for caching operations in cache memory circuit 105. For example, data written to a particular address currently cached in cache memory circuit 105 may be written back to the particular address in system memory. However, cache line 123 is not used for caching operations. For example, data written to a different address located in cache line 123 in address range 115b is not written back to system memory. Instead, cache line 123 may be used as a final destination for data written to address range 115b.
Verfahren 700 kann in Block 730 enden oder kann einige oder alle Vorgänge wiederholen. Zum Beispiel kann Verfahren 700 als Reaktion darauf, dass eine andere Zuweisungsanforderung von Cache-Steuerungsschaltung 101 empfangen wird, zu Block 710 zurückkehren. In einigen Ausführungsformen können mehrere Instanzen von Verfahren 700 gleichzeitig durchgeführt werden. Zum Beispiel kann Cache-Steuerungsschaltung 101 in der Lage sein, eine zweite Zuweisungsanforderung zu verarbeiten, während sie weiterhin eine erste Zuweisungsanforderung durchführt. Wenn System 100 mehrere Cache-Steuerungsschaltungen (z. B. für jeweilige Cache-Speicherschaltungen) einschließt, kann jede Cache-Steuerungsschaltung in der Lage sein, Verfahren 700 parallel durchzuführen. Es wird angemerkt, dass das Verfahren von
Unter Bezugnahme auf
Verfahren 800 schließt in Block 810 das Empfangen, durch Cache-Steuerungsschaltung 101, von einem nicht autorisierten Agenten, einer Speichertransaktion für Adressbereich 115b ein. Wie vorstehend in Bezug auf
Bei Block 820 schließt Verfahren 800 als Reaktion auf das Bestimmen, dass Adressbereich 115b Teil eines gesicherten Zugriffsbereichs ist, das Ignorieren, durch Cache-Steuerungsschaltung 101, der Speichertransaktion von dem nicht autorisierten Agenten ein. Wie veranschaulicht, zielt eine in der empfangenen Speichertransaktion enthaltene Adresse auf eine Stelle in Adressbereich 115b ab. Adressbereich 115b kann bestimmt werden, um innerhalb eines sicheren Zugriffsbereichs der Systemspeicherkarte zu liegen, auf den der nicht autorisierte Agent keinen Zugriff hat. Als Reaktion auf diese Bestimmung wird die empfangene Speichertransaktion ignoriert. Wie vorstehend beschrieben, kann eine Fehlermeldung an den nicht autorisierten Agenten zurückgegeben werden und/oder ein Ausnahmesignal geltend gemacht werden, um z. B. einem Betriebssystem anzuzeigen, dass ein unberechtigter Zugriff versucht wurde.At
Bei Block 830 schließt das Verfahren auch das Empfangen, durch Cache-Steuerungsschaltung 101, der Abweisungsanforderung 345 ein, um Cache-Zeile 123 der Cache-Speicherschaltung 105 aus dem direkt adressierbaren Adressbereich 115b abzuweisen. Ein Agent, der Adressbereich 115b verwendete, kann Aktivitäten abschließen, die eine Anforderung initiiert haben, Cache-Zeile 123 Adressbereich 115b neu zuzuweisen. Zum Beispiel kann ein Prozessor die Aktivierung von Adressbereich 115b als Reaktion auf eine Inbetriebnahme einer besonderen Anwendung oder einen Start eines besonderen Prozesses innerhalb einer Anwendung angefordert haben. Sobald die Anwendung oder der Prozess abgeschlossen ist, wird Adressbereich 115b möglicherweise nicht benötigt und kann daher zur Verwendung in Cache-Speicherschaltung 105 zurückgegeben werden, wodurch eine Datenmenge erhöht wird, die zu einem gegebenen Zeitpunkt zwischengespeichert werden kann.At
Verfahren 800 schließt ferner bei Block 840 als Reaktion auf Abweisungsanforderung 345 Cache-Zeile 123 in Cache-Vorgängen ein. Wie veranschaulicht, wird Cache-Zeile 123 an Cache-Speicherschaltung 105 zur Verwendung als Cache-Speicher zurückgegeben. Wenn zum Beispiel ein oder mehrere Bits in einem Cache-Tag, die der Cache-Zeile 123 entsprechen, gesetzt wurden, um Cache-Zeile 123 in Adressbereich 115b einzuschließen, können diese Bits gelöscht werden, um die Cache-Zeile 123 in Cache-Speicherschaltung 105 zurückzugeben. Daten, die in Adressbereich 115b gespeichert sind, während Cache-Zeile 123 neu zugewiesen wurde, können ohne Rückschreiben in eine Systemspeicherschaltung überschrieben werden. Werte, die in Adressbereich 115b gespeichert sind, müssen möglicherweise explizit an andere Speicherorte durch Verwendung jeweiliger Speichertransaktionen kopiert werden, bevor Cache-Zeile 123 abgewiesen wird. Andernfalls können beliebige Werte aus dem Adressbereich 115b nach der Abweisung verloren gehen.
Das Verfahren schließt bei Block 850 ferner das Zurückgeben eines Standardwerts als Reaktion auf eine Leseanforderung für eine Adresse in Adressbereich 115b ein, die nach dem Abweisen der Cache-Zeile 123 der Cache-Speicherschaltung 105 empfangen wurde. Wie veranschaulicht, wird, wenn Speichertransaktion 350 nach Abweisungsanforderung 345 an eine Adresse in Adressbereich 115b gerichtet ist, ein Standardwert, der einen Zugriff auf eine inaktive Adresse angibt, an einen Agenten zurückgegeben, der Speichertransaktion 350 ausgibt.The method further includes, at block 850, returning a default value in response to a read request for an address in address range 115b received after rejecting cache line 123 of cache memory circuit 105. As illustrated, if memory transaction 350 is directed to an address in address range 115b after reject request 345, a default value indicating access to an inactive address is returned to an agent issuing memory transaction 350.
Bei Block 860 schließt Verfahren 800 auch das Erzeugen eines Fehlers durch Cache-Steuerungsschaltung 101 als Reaktion auf eine Schreibanforderung an eine Adresse in Adressbereich 115b ein, die nach der Abweisung empfangen wird. Zusätzlich zu Block 850 oder in einigen Ausführungsformen kann anstelle von Block 850 ein Fehler erzeugt werden, wie die Geltendmachung eines Ausnahmesignals. Ein solcher Fehler kann eine Angabe an einen Überwachungsprozessor, eine Sicherheitsschaltung, eine Ausnahmehandhabungsschaltung oder einen Prozess und/oder andere Hardwareschaltungen oder Softwareprozesse bereitstellen, dass ein Zugriff auf eine inaktive Adresse vorgenommen wurde. In einigen Fällen kann ein solcher Zugriff ein unsachgemäßes Betriebssystem angeben, und ein Wiederherstellungsvorgang kann eingeleitet werden, wie eine Systemrücksetz- oder Ausnahmeroutine.At
In einigen Ausführungsformen kann Verfahren 800 in Block 860 enden oder in anderen Ausführungsformen einige oder alle Vorgänge wiederholen. Zum Beispiel kann Verfahren 800 zu Block 830 zurückkehren, um einen unterschiedlichen Adressbereich als Reaktion auf eine unterschiedliche Abweisungsanforderung abzuweisen. Es wird darauf hingewiesen, dass Vorgänge des Verfahrens 800 in einer anderen Reihenfolge, ganz oder teilweise, durchgeführt werden können. Zum Beispiel können Blöcke 810 und 820 ein oder mehrere Male durchgeführt werden, bevor Block 830 eine Anfangszeit durchgeführt hat. Blöcke 830 bis 860 können ohne Blöcke 810 und 820 durchgeführt werden.In some embodiments,
Die Durchführung verschiedener Vorgänge der Verfahren 700 und 800 kann gleichzeitig oder überlappt durchgeführt werden. Zum Beispiel kann Cache-Steuerungsschaltung 101 konfiguriert sein, um mehrere Adressbereiche gleichzeitig zu verwalten, wodurch unterschiedlichen Prozessorschaltungen ermöglicht wird, in überlappender Weise unterschiedliche direkt adressierbare Adressbereiche zu nutzen. Dementsprechend kann Verfahren 800 ganz oder teilweise durchgeführt werden, während Verfahren 700 fortfährt.The performance of various operations of
fortfahrend mit
Wie veranschaulicht, kann Verarbeitungsschaltung 901 ein Prozessorkern in einem Prozessorkomplex mit einem einzelnen oder mehreren Kernen sein. System 900 kann ein nichtflüchtiges computerlesbares Medium mit darauf gespeicherten Anweisungen einschließen, die durch Verarbeitungsschaltung 901 ausführbar sind, um die nachstehend in Bezug auf
Systemspeicherschaltung 910 und Cache-Speicherschaltung 905 können jeweils eine oder mehrere Typen von RAM einschließen, wie SRAM, DRAM und dergleichen.
Verarbeitungsschaltung 901 ist, wie gezeigt, konfiguriert, um Speicherplätze 935 in Systemspeicherschaltung 910 von System 900 Puffer 915 zuzuweisen. In verschiedenen Ausführungsformen kann Verarbeitungsschaltung 901 und/oder ein anderer Agent in System 900 (nicht veranschaulicht) Puffer 915 verwenden, um Informationen zu verarbeiten, die sich auf eine Anwendung beziehen, die auf System 900 ausgeführt wird. Um eine gewünschte Leistung dieser Anwendung zu erfüllen, kann der Zugriff auf Puffer 915 besondere Dienstgüte(QoS)-Bedürfnisse aufweisen. Um die Wahrscheinlichkeit des Erfüllens der QoS-Bedürfnisse zu erhöhen, ist Verarbeitungsschaltung 901 ferner konfiguriert, um Speicherorte 935 in Cache-Speicherschaltung 905 zuzuweisen. Zugriffe auf Cache-Speicherschaltung 905 können üblicherweise eine höhere QoS-Ebene aufweisen, die auf Systemspeicherschaltung 910 zugreift.
Um Puffer 915 an Cache-Speicherschaltung 905 zuzuweisen, ist Verarbeitungsschaltung 901 konfiguriert, um eine besondere Reihenfolge zum Zuweisen von Speicherplätzen 935 in Cache-Speicherschaltung 905 auszuwählen. Diese besondere Reihenfolge kann eine Gleichförmigkeit der Cache-Fehlraten im Vergleich zu einer linearen Reihenfolge erhöhen. Das Zuweisen von Speicherplätzen 935 in einer linearen Reihenfolge, z. B. beginnend mit dem Zuweisen von Position 935a und fortschreitend, in Reihenfolge, mit Speicherplätzen 935b, 935c, 935d usw. bis zu Speicherplatz 935i, kann dazu führen, dass Cache-Fehlungen für die Speicherplätze am Ende des Puffers 915 häufiger auftreten. Zum Beispiel können Speicherplätze 935 g, 935 h und 935i eine höhere Wahrscheinlichkeit aufweisen, nicht zugewiesen werden zu können, da eine entsprechende Cache-Zeile bereits einem unterschiedlichen anderen Speicherplatz zugewiesen ist. Dementsprechend wird eine besondere Reihenfolge zum Durchführen der Zuweisungen von Speicherplätzen 935 an Cache-Speicherschaltung 905 ausgewählt, die Speicherplätze 935 in einer gleichmäßigeren Weise zuweist, die eine Wahrscheinlichkeit erhöht, dass Positionen am Ende des Puffers 915 erfolgreich der Cache-Speicherschaltung 905 zugewiesen werden können.To allocate
Nachdem die besondere Reihenfolge ausgewählt wurde, ist Verarbeitungsschaltung 901 ferner konfiguriert, um einen der Speicherplätze 935 des Puffers 915 in Cache-Speicherschaltung 905 in der besonderen Reihenfolge zwischenzuspeichern. In einigen Ausführungsformen kann Verarbeitungsschaltung 901 ferner konfiguriert sein, um Teilmengen von Speicherplätzen 935 mit jeweils mehreren Speicherplätzen auszuwählen und zuzuweisen anstatt einzelne Speicherplätze auszuwählen und zuzuweisen.After the particular order is selected,
Als ein Beispiel weist Verarbeitungsschaltung 901 zum Zeitpunkt t0 Puffer 915, einschließlich Speicherplätze 935, in Systemspeicherschaltung 910 zu. Zum Zeitpunkt t1 ist Verarbeitungsschaltung 901 konfiguriert, um basierend auf der besonderen Reihenfolge Puffer 915 in eine Vielzahl von Blöcken zu segmentieren. Diese Vielzahl von Blöcken entspricht Speicherplätzen 935 und weist eine serielle logische Reihenfolge auf, wie gezeigt.As an example, at time t0, processing
Jeder Speicherplatz 935 kann jede geeignete Anzahl von Bytes der Systemspeicherschaltung 910 einschließen, wie ein Byte, sechzehn Bytes, 128 Bytes usw. In einigen Ausführungsformen können unterschiedliche Speicherplätze 935 unterschiedliche Anzahlen von Bytes einschließen. Für dieses Beispiel weist ein Speicherplatz 935 eine gleiche Anzahl von Bytes auf wie eine Cache-Zeile 920. Größen für Speicherplätze 935 können durch Verarbeitungsschaltung 901 basierend auf der besonderen Reihenfolge bestimmt werden. Wie gezeigt, wird Puffer 915 in neun Speicherplätze unterteilt und die besondere Reihenfolge schließt das Zuweisen jedes dritten Speicherplatzes ein, beginnend mit Speicherplatz 935a, dann 935d und dann 935g. Die Reihenfolge kehrt sich zu Speicherplatz 935b, dann 935e und dann 935 h um. Die endgültigen drei Speicherplätze werden dann beginnend mit 935c, dann 935f, und endend mit 935i zugewiesen.Each memory location 935 may include any suitable number of bytes of
Verarbeitungsschaltung 901 ist ferner konfiguriert, um Speicherplätze 935 unter Verwendung eines Inkrements zwischenzuspeichern, das einen der Speicherplätze 935 in der besonderen Reihenfolge auswählt, die sich von der seriellen Reihenfolge unterscheidet. In dem veranschaulichten Beispiel beträgt dieses Inkrement drei, obwohl jede geeignete Anzahl verwendet werden kann. Speicherplatz 935a wird Cache-Zeile 920c zugewiesen, gefolgt von Speicherplatz 935d an Cache-Zeile 920f und dann 935 g, der Cache-Zeile 920 h zugewiesen wird. Cache-Speicherschaltung 905 ist, wie gezeigt, konfiguriert, um einen gegebenen Speicherplatz 935 einer entsprechenden Cache-Zeile 920 basierend auf einer besonderen Systemadresse zuzuordnen, die in dem gegebenen Speicherplatz 935 eingeschlossen ist. Zum Beispiel kann Cache-Speicherschaltung 905 einen Hash der besonderen Adresse oder einen Abschnitt davon durchführen, und der resultierende Hash-Wert wird verwendet, um die besondere Adresse einer entsprechende Cache-Zeile 920 zuzuordnen. Da Cache-Speicherschaltung 905 viel kleiner sein kann als Systemspeicherschaltung 910, können zwei unterschiedliche Systemadressen zu Hash-Werten führen, die derselben Cache-Zeile 920 zugeordnet sind. In einem solchen Fall kann die zweite der beiden Adressen nicht zugewiesen werden.
In dem Beispiel von
Wenn jedoch Speicherplätze 935 in derselben linearen Reihenfolge zugewiesen wurden, wenn Puffer 915 durchlaufen wird, wäre Speicherplatz 935b anstelle von Speicherplatz 935g zugewiesen worden, und Speicherplatz 935f wäre anstelle von Speicherplatz 935 h zugewiesen worden. Dies hätte zu Speicherplätzen 935 g, 935 h und 935i geführt, die alle nicht zugewiesen werden konnten. Wenn der Agent Puffer 915 in diesem Szenario durchläuft, treten drei Cache-Fehlungen in einer Zeile am Ende des Puffers 915 auf, wobei kein Cache-Treffer zwischen den Fehlungen auftritt. Drei Abrufe in Systemspeicherschaltung 910 in einer Zeile könnten zu Verzögerungen führen, da der zweite und der dritte Abruf möglicherweise auf die vorherigen zu verarbeitenden Abrufe warten müssen. Dementsprechend kann das Zuweisen von Puffer 915 unter Verwendung der besonderen Reihenfolge anstelle einer linearen Reihenfolge eine Gesamtzeit zum Durchlaufen des Puffers 915 reduzieren.However, if memory locations 935 were allocated in the same linear order when traversing
Sobald die Zuweisung von Puffer 915 an Cache-Speicherschaltung 905 abgeschlossen ist, kann Verarbeitungsschaltung 901 oder andere Agenten in System 900 auf Cache-Speicherschaltung 905 als einen Pfad mit niedriger Latenz auf Werte zugreifen, die in Puffer 915 gespeichert sind. Positionen 935, die erfolgreich zwischengespeichert wurden, können einen schnelleren Zugriff auf Inhalte des Puffers 915 im Vergleich zu direkten Zugriffen auf Positionen 935 in Systemspeicherschaltung 910 bereitstellen.Once allocation of
Es wird darauf hingewiesen, dass die Ausführungsform von
In der Beschreibung von
Übergehend zu
Wie in
Cache-Zeile 920 k, zum Zeitpunkt t0, wird jedoch Speicherplatz 1035y zugewiesen, der ein Ort in Systemspeicherschaltung 910 sein kann, die nicht Puffer 915 zugeordnet ist. Als Reaktion auf den Fehler beim Zwischenspeichern von Speicherplatz 935b in Cache-Zeile 920k ist Verarbeitungsschaltung 901 konfiguriert, um das Zwischenspeichern des Speicherplatzs 935b zu wiederholen, bevor ein anderer Speicherplatz zwischengespeichert wird. Wie gezeigt, erzeugt Verarbeitungsschaltung 901 eine neue Zuordnungsanforderung an Cache-Speicherplatz 935b. In einigen Ausführungsformen kann Verarbeitungsschaltung 901 eine Verzögerung einer besonderen Zeitdauer oder Anzahl von Anweisungszyklen oder Buszyklen zwischen dem ursprünglichen Versuch, Speicherplatz 935b zuzuweisen, und dem Wiederholungsversuch einschließen.However,
Zum Zeitpunkt t1 kann Speicherplatz 1035y von Cache-Zeile 920 k freigegeben werden, und daher kann Speicherplatz 935b erfolgreich in Cache-Zeile 920k zwischengespeichert werden. Anschließend kann Verarbeitungsschaltung 901 das Zwischenspeichern von Speicherplatz 935e, gefolgt von Speicherplatz 935h, weiter versuchen.At time t1, location 1035y may be freed from
Durch Wiederholen des Cache-Zuweisungsversuchs von Speicherplatz 935b kann Verarbeitungsschaltung 901 eine Anzahl von Speicherplätzen von Puffer 915 erhöhen, die erfolgreich zwischengespeichert werden. Je mehr Speicherplätze von Puffer 915, die in Cache-Speicherschaltung 905 zugewiesen werden können, desto besser die Wahrscheinlichkeit, die QoS-Bedürfnisse der Anwendung zu erfüllen, die Puffer 915 nutzen wird.By repeating the cache allocation attempt of
Es wird festgehalten, dass das in
Das System von
Unter Bezugnahme auf
Prozessorkern 1190 kann ein universeller Prozessor sein, der Rechenvorgänge durchführt. In einigen Ausführungsformen kann Prozessorkern 1190 ein spezieller Verarbeitungskern sein, wie ein Grafikprozessor, ein Audioprozessor oder ein neuronaler Prozessor. Prozessorkern 1190 kann in einigen Ausführungsformen eine Vielzahl von allgemeinen und/oder speziellen Prozessorkernen sowie Hilfsschaltungen zum Verwalten von Leistungssignalen, Taktsignalen, Speicheranforderungen und dergleichen einschließen. DMA-Schaltung 1101 ist, wie dargestellt, konfiguriert, um Speichertransaktionen auszugeben, um Werte zwischen verschiedenen Speicheradressen über eine Speicherkarte des Systems 1100 zu kopieren oder zu verschieben. DMA-Schaltung 1101 kann als eine spezielle Schaltung, eine Universalschaltung, die zum Durchführen solcher Aufgaben programmiert ist, oder eine Kombination davon implementiert sein. DMA-Schaltung 1101 ist mindestens durch Prozessorkern 1190 programmierbar, um mehrere Speichertransaktionen in einer gewünschten Sequenz durchzuführen.
Wie zuvor beschrieben, wählt Verarbeitungsschaltung 901 die besondere Reihenfolge zum Zwischenspeichern von Speicherplätzen von Puffer 915 in Cache-Speicherschaltung 905 aus. Wie in System 1100 gezeigt, wird das Auswählen der besonderen Reihenfolge durch Prozessorkern 1190 durchgeführt, zum Beispiel basierend auf einer Größe von Puffer 915 und/oder einer Verfügbarkeit von Cache-Zeilen in Cache-Speicherschaltung 905. Prozessorkern 1190 ist konfiguriert, um die besondere Reihenfolge in DMA-Schaltung 1101 zu programmieren und DMA-Schaltung 1101 zu verwenden, um einen der Speicherplätze 935 von Puffer 915 in Cache-Speicherschaltung 905 zwischenzuspeichern. Zum Beispiel kann DMA-Schaltung 1101 verschiedene Register einschließen, in die Prozessorkern 1190 Source-Adressen für Positionen 935 und Zieladressen speichern kann, um Speicherplätze 935 in Cache-Speicherschaltung 905 zwischenzuspeichern, einschließlich der Bereitstellung der besonderen Reihenfolge zum Ausgeben von Speichertransaktionen, die einem der Speicherplätze 935 entsprechen.As previously described,
Wie veranschaulicht, ist Prozessorkern 1190 ferner konfiguriert, um eine Cache-Fehlrate in Cache-Speicherschaltung 905 für Speichertransaktionen zu verfolgen, die Zugriffe auf Speicherplätze 935 einschließen. Nachdem Puffer 915 in Cache-Speicherschaltung 905 zugewiesen wurde, kann Prozessorkern 1190 oder ein unterschiedlicher Agent in System 1100 verschiedene Speichertransaktionen ausgeben, die auf einen der Speicherplätze 935 zugreifen. Abhängig davon, wie viele der Speicherplätze 935 erfolgreich der Cache-Speicherschaltung 905 zugewiesen wurden, kann eine besondere Cache-Fehlrate für diese Speichertransaktionen bestimmt werden, die auf Adressen in Speicherplätzen 935 abzielen. Wenn zum Beispiel zehn Prozent von Speicherplätzen 935 nicht zugewiesen werden und auf Speicherplätze 935 gleichmäßig durch einen besonderen Agenten unter Verwendung von Puffer 915 zugegriffen wird, dann würden die Cache-Fehlungen nahezu oder gleich zehn Prozent betragen. Wenn jedoch der besondere Agent auf besondere der Speicherplätze 935 häufiger zugreift als auf andere, dann kann die Cache-Fehlrate höher oder niedriger als zehn Prozent sein, je nachdem, ob die häufiger zugänglichen Speicherplätze erfolgreich zugewiesen wurden.As illustrated,
Als Reaktion auf eine Bestimmung, dass die verfolgte Cache-Fehlrate eine Schwellenwertrate erfüllt, kann Prozessorkern 1190 ferner konfiguriert sein, um die besondere Reihenfolge in DMA-Schaltung 1101 zu modifizieren. Wenn zum Beispiel die Schwellenwertfehlrate 15 % beträgt und die verfolgte Fehlrate 18 % beträgt, kann Prozessorkern 1190 Speicherplätze 935 identifizieren, die nicht zwischengespeichert wurden, sondern häufig Ziel in Speichertransaktionen waren, sowie erfolgreich zwischengespeicherte Speicherplätze 935 identifizieren, die nicht häufig Ziel waren. Eine revidierte Reihenfolge kann die Reihenfolge zum Zuweisen dieser identifizierten Speicherplätze so anpassen, dass die Positionen, auf die häufiger zugegriffen wurde, in der modifizierten Reihenfolge früher zugewiesen werden, und die Positionen, auf die weniger häufig zugegriffen wurde, in Richtung des Endes der modifizierten Reihenfolge bewegt werden. Wenn ein nachfolgender Puffer der Cache-Speicherschaltung 905 zugewiesen werden soll, kann die modifizierte Reihenfolge über der ursprünglichen besonderen Reihenfolge ausgewählt werden. In einigen Ausführungsformen können verschiedene Reihenfolgen bestimmt und besonderen Agenten, Aufgaben, Prozessen und dergleichen zugeordnet werden, sodass eine ausgewählte Reihenfolge zur Zuweisung die Leistung ähnlicher Aufgaben berücksichtigt.In response to a determination that the tracked cache miss rate meets a threshold rate,
In Bezug auf das Bestimmen einer Zuweisungsreihenfolge wurde vorstehend eine Technik offenbart, in der nachfolgende Speicherplätze unter Verwendung eines besonderen Inkrements zwischen aufeinanderfolgenden Positionen ausgewählt werden. In
Nachdem Speicherplätze 935 in jeweilige Blöcke 1130 unterteilt sind, kann Prozessorkern 1190 eine besondere Reihenfolge auswählen, die einen ersten Speicherplatz 935 einer jeweiligen Reihe von Blöcken 1130 der Cache-Speicherschaltung 905 zuweist und dann einen zweiten Speicherplatz 935 der jeweiligen Blöcke 1130 zuweist. Wie gezeigt, schließt Block 1130a den anfänglichen Speicherplatz 935a ein, gefolgt von Speicherplätze 935c und 935c. In ähnlicher Weise schließt Block 1130b den anfänglichen Speicherplatz 935d ein, gefolgt von Speicherplätzen 935e und 935f, während Block 1130c den anfänglichen Speicherplatz 935g einschließt, gefolgt von Speicherplätzen 935 h und 935i.After memory locations 935 are divided into respective blocks 1130,
In einem ersten Durchlauf bewirkt Prozessorkern 1190, dass DMA-Schaltung 1101 den anfänglichen Speicherplatz von jedem der Blöcke 1130, Speicherplätze 935a, 935d und 935g zwischenspeichert. DMA-Schaltung 1101 zwischenspeichert anschließend in einem zweiten Durchlauf einen zweiten Speicherplatz von jedem Block 1130 (Speicherplätze 935b, 935e und 935h), gefolgt von einem dritten Durchlauf, in dem eine dritte Position von jedem Block 1130 (Speicherplätze 935c, 935f und 935i) zwischengespeichert wird.In a first pass,
Wie vorstehend erwähnt, kann Prozessorkern 1190 die besondere Reihenfolge basierend auf einer überwachten Cache-Fehlrate modifizieren. Diese Modifikation kann das Anpassen einer Anzahl von Positionen einschließen, die in jedem Block enthalten sind, eine Anzahl von Positionen, die zu einem Zeitpunkt von jedem Block gespeichert sind, oder eine Reihenfolge zum Zuweisen der Positionen innerhalb jedes Blocks. Zum Beispiel kann Prozessorkern 1190 bestimmen, dass auf Speicherplatz 935e häufiger zugegriffen wird als auf Speicherplatz 935d in Block 1130b. In einer modifizierten Reihenfolge kann der anfängliche Speicherplatz, der aus Block 1130b zugewiesen ist, 935e anstatt 935d sein.As mentioned above,
Es wird darauf hingewiesen, dass es sich bei System 1100 lediglich um ein Beispiel handelt.
Verschiedene Typen von QoS-Ebenen werden in Bezug auf
Nun fortfahrend mit
Zum Zeitpunkt t0 wird Puffer 915 in Cache-Speicherschaltung 905 zwischengespeichert. In der vorliegenden Ausführungsform ist Puffer 915 ein Echtzeitpuffer. Ein „Echtzeitpuffer“, wie hierin verwendet, bezieht sich auf einen Speicherpuffer, in dem Echtzeittransaktionen vorwiegend verwendet werden, um auf die Positionen des Puffers zuzugreifen. Ein Echtzeitpuffer kann mit einem Agenten und/oder einer Aufgabe verwendet werden, bei dem/der ein Ausfall einer besonderen QoS-Nachfrage zu einem unsachgemäßen Betrieb des Agenten oder der Aufgabe führen könnte. Zum Beispiel muss das Verarbeiten eines Frames eines Videos zur Wiedergabe innerhalb einer besonderen Zeitdauer abgeschlossen werden, andernfalls kann die Videowiedergabe einen merklichen Stillstand oder Störungen für den Betrachter hervorrufen.At time t0,
Obwohl Puffer 915 ein Echtzeitpuffer ist, kann die anfängliche Zuweisung von Puffer 915 in den Cache möglicherweise nicht zeitsensitiv sein. Dementsprechend kann das Zwischenspeichern von Speicherplätzen 935 von Puffer 915 unter Verwendung von Volumentransaktionen 1242 über Volumenkanal 1240 durchgeführt werden, um die Vielzahl von Speicherplätzen 935 in Cache-Speicherschaltung 905 zuzuweisen. Wie zum Zeitpunkt t0 gezeigt, wird Volumenkanal 1240 verwendet, um Volumentransaktionen 1242a, 1242b und 1242c zu übertragen, um Speicherplätze 935a, 935d bzw. 935g in Cache-Speicherschaltung 905 zuzuweisen. Während dieser Pufferzuweisungsaufgabe kann der Agent, der beispielsweise Puffer 915, Verarbeitungsschaltung 901 verwenden soll, nicht Werte aufweisen, die zum Lesen aus oder Schreiben in Puffer 915 bereit sind. Dementsprechend können Volumentransaktionen 1242 zum Zuweisen von Puffer 915 verwendet werden.Although
Da Puffer 915 jedoch mit Echtzeittransaktionen verwendet wird, können Volumentransaktionen 1242 eine Angabe mit erfolgreich zwischengespeicherten Speicherplätzen 935 einschließen, die angeben, dass diese zwischengespeicherten Speicherplätze Echtzeittransaktionen zugeordnet sind. Zum Beispiel können Cache-Tags, die jedem erfolgreich zwischengespeicherten Speicherplatz 935 zugeordnet sind, ein besonderes Bit oder eine Gruppe von Bits aufweisen, die angeben, dass die zugehörige Cache-Zeile 920 mit Echtzeittransaktionen verwendet wird. Cache-Zeilen 920 mit den Echtzeitangaben in ihren jeweiligen Cache-Tags können eine höhere Priorität empfangen, wenn Cache-Zeilen zur Freischaltung identifiziert werden. Wenn zum Beispiel eine besondere Anzahl von Cache-Zeilen 920 in Cache-Speicherschaltung 905 die Schwellenwertstufe erreicht, z. B. sich einem gewissen Prozentsatz der maximalen Speicherkapazität nähert, können besondere der Cache-Zeilen 920, auf die nicht häufig zugegriffen wurde, für die Freigabe ausgewählt werden. Cache-Zeilen 920 mit den gesetzten Echtzeitangaben müssen für die Freigabe nicht mehr in Betracht gezogen werden oder können sehr niedrig in einer Reihenfolge platziert werden, um ausgewählt zu werden, z. B. würden andere Cache-Zeilen höhere Wahrscheinlichkeiten aufweisen, um für die Freigabe ausgewählt zu werden.However, because
Cache-Speicherschaltung 905 kann auch eine besondere Bandbreitenmenge zum Abrufen von Daten aus Systemspeicherschaltung 910 als Reaktion auf eine Cache-Fehlung, die einer Echtzeitspeichertransaktion zugeordnet ist, reservieren. Cache-Speicherschaltung 905 kann eine Anzahl von Volumentransaktionen so begrenzen, die zu einem gegebenen Zeitpunkt ausgegeben und aktiv sind, dass Bandbreite verbleibt, um eine Echtzeittransaktion auszugeben. Zum Beispiel können Busschaltungen zwischen Cache-Speicherschaltung 905 und Systemspeicherschaltung 910 eine Credit-basierte Arbiterschaltung einschließen. Um eine ausgegebene Transaktion, die durch diese Arbiterschaltung ausgewählt wird, aufzuweisen, kann Cache-Speicherschaltung 905 möglicherweise eine besondere Anzahl von Bus-Credits aufrechterhalten. In einer solchen Ausführungsform kann Cache-Speicherschaltung 905 die Ausgabe einer Volumentransaktion verzögern, wenn die Anzahl der Bus-Credits bei oder nahe der besonderen Anzahl liegt. Die Volumentransaktion kann gesendet werden, nachdem Cache-Speicherschaltung 905 eine ausreichende Anzahl von Bus-Credits akkumuliert hat.
Zum Zeitpunkt t1 wurde Puffer 915 der Cache-Speicherschaltung 905 zugewiesen. Wie durch den fettgedruckten kursiven Text angegeben, sind Positionen 935f und 935i nicht erfolgreich zwischengespeichert. Zum Beispiel können Speicherplätze 935f und 935i Cache-Zeilen 920i und 920 1 zugeordnet worden sein, die zuvor Speicherplätzen 1235x bzw. 1235y zugewiesen waren. Verarbeitungsschaltung 901 ist ferner konfiguriert, um unter Verwendung der Echtzeittransaktion 1250a auf den erfolgreich zwischengespeicherten Speicherplatz 935c zuzugreifen. Cache-Speicherschaltung 905 kann konfiguriert sein, um Echtzeittransaktion 1250a unter Verwendung von in Cache-Zeile 920a gespeicherten Werten zu verarbeiten.At time t1,
Cache-Speicherschaltung 905 ist konfiguriert, um Abrufanforderungen an Systemspeicherschaltung 910 als Reaktion auf eine Cache-Fehlung, die einer jeweiligen Speichertransaktion zugeordnet ist, zu erzeugen, wobei die erzeugten Abrufanforderungen eine QoS-Ebene aufweisen, die mit der entsprechenden Speichertransaktion kompatibel ist. Zum Beispiel kann Cache-Speicherschaltung 905 Volumenabrufe 1265a und 1265b als Reaktion auf Volumentransaktionen von einem gegebenen Agenten erzeugen. Verarbeitungsschaltung 901 kann ferner konfiguriert sein, um auf den nicht erfolgreich zwischengespeicherten Speicherplatz 935f unter Verwendung der Echtzeittransaktion 1250b zuzugreifen. Cache-Speicherschaltung 905 ist als Reaktion auf eine Cache-Fehlung für Speicherplatz 935f konfiguriert, um Echtzeittransaktion 1250b unter Verwendung eines Echtzeitabrufs 1290 zu erfüllen. Da Cache-Speicherschaltung 905 konfiguriert ist, um Bandbreite für Echtzeitabrufe zu reservieren, kann Echtzeitabruf vor anderen Volumenabrufen, die nicht ausgegeben wurden, verarbeitet werden. Zum Beispiel kann Volumenabruf 1265b in eine Warteschlange gesetzt werden und auf einen Abschluss des Volumenabrufs 1265a warten. Wenn Echtzeitabruf 1290 vor Volumenabruf 1265b erzeugt wird, kann Echtzeitabruf 1290 vor Volumenabruf 1265b verarbeitet werden.
Die Verwendung solcher Echtzeit- und Volumen-QoS-Ebenen kann die Zugriffszeiten für einen Agenten unter Verwendung eines Echtzeitpuffers reduzieren, der dem Cache-Speicher zugewiesen ist. Die Verwendung der Echtzeit-QoS-Ebene kann auch die Speicherzugriffszeiten reduzieren, falls ein Abschnitt des Echtzeitpuffers nicht dem Puffer zugewiesen wird.Using such real-time and volume QoS levels can reduce access times for an agent using a real-time buffer allocated to cache memory. Using the real-time QoS level can also reduce memory access times in case a portion of the real-time buffer is not allocated to the buffer.
Es wird darauf hingewiesen, dass die Ausführungsform von
Die vorstehend in Bezug auf
Übergehend nun zu
Bei Block 1310 schließt Verfahren 1300 das Zuweisen, durch Verarbeitungsschaltung 901, einer Vielzahl von Speicherplätzen 935 in Systemspeicherschaltung 910 zu Puffer 915 ein. Wie gezeigt, kann Verarbeitungsschaltung 901 oder ein unterschiedlicher Agent in System 900 Puffer 915 anfordern, der in Systemspeicherschaltung 910 zur Verwendung mit einem besonderen Prozess oder einer besonderen Aufgabe zugewiesen wird, den/die der Agent zur Durchführung vorbereitet. Zum Beispiel kann die Aufgabe das Verarbeiten eines Bildes, einer Audiodatei, einer Verschlüsselung oder Entschlüsselung einer Datei, einer Analyse von Eingabe von einem Sensor und dergleichen beinhalten. In einigen Ausführungsformen kann Puffer 915 ein Echtzeitpuffer sein, der Echtzeittransaktionen verwendet, um auf Speicherplätze 935 zuzugreifen. Wie zuvor beschrieben, weisen Echtzeittransaktionen eine höhere QoS-Ebene auf als andere Transaktionen, wie Volumentransaktionen.At
Verfahren 1300 schließt ferner bei Block 1320 das Bestimmen einer besonderen Reihenfolge zum Zuweisen von Speicherplätzen 935 in Cache-Speicherschaltung 905 ein. Diese besondere Reihenfolge kann ausgewählt werden, um eine Gleichförmigkeit der Cache-Fehlraten im Vergleich zur Verwendung einer linearen Reihenfolge zu erhöhen. Wie zuvor beschrieben, kann das Zuweisen von Speicherplätzen 935 unter Verwendung einer linearen Reihenfolge zu Speicherplätzen 935 nahe dem Beginn der linearen Reihenfolge führen, die erfolgreich zwischengespeichert werden, während Speicherplätze 935 am Ende der linearen Reihenfolge nicht erfolgreich zwischengespeichert werden, da sie denselben Cache-Zeilen 920 wie zuvor zwischengespeicherten Speicherplätzen 935 zugeordnet werden. Wenn in Puffer 915 auf Daten von Speicherplätzen 935 in derselben Reihenfolge zugegriffen wird, wie sie zugewiesen wurden, würden mehr Cache-Fehlungen erwartet, da sich die Verarbeitung zum Ende der Reihenfolge hin bewegt. Dementsprechend wird die besondere Reihenfolge so ausgewählt, dass das Zwischenspeichern in einer Reihenfolge erfolgt, die versucht, die Cache-Fehlungen während der Verwendung von Puffer 915 gleichmäßig zu verteilen. Dementsprechend können während der Verwendung von Puffer 915 keine Cache-Fehlungen während eines beliebigen besonderen Abschnitts von Pufferzugriffen konzentriert werden.
Bei Block 1330 schließt Verfahren 1300 auch das Zwischenspeichern von Speicherplätzen 935 von Puffer 915 unter Verwendung der besonderen Reihenfolge ein. Nachdem die besondere Reihenfolge zum Zuweisen von Speicherplätzen 935 ausgewählt wurde, beginnt Verarbeitungsschaltung 901 mit dem Zuweisen von Speicherplätzen 935 in Cache-Speicherschaltung 905. In einigen Ausführungsformen, wie in
Verfahren 1300 kann in Block 1330 enden. In einigen Ausführungsformen kann mindestens ein Abschnitt des Verfahrens 1300 wiederholt werden. Zum Beispiel kann Verfahren 1300 als Reaktion auf das Empfangen einer Anforderung zum Zuweisen eines unterschiedlichen Puffers in Systemspeicherschaltung 910 wiederholt werden. In einigen Fällen kann Verfahren 1300 gleichzeitig mit anderen Instanzen des Verfahrens durchgeführt werden. Zum Beispiel können zwei oder mehr Instanzen der Verarbeitungsschaltung 901 oder mehrere Prozess-Threads in einer einzigen Instanz der Verarbeitungsschaltung 901 jeweils Verfahren 1300 unabhängig voneinander durchführen.
Unter Bezugnahme auf
Bei Block 1410 schließt Verfahren 1400 das Verwenden von Volumentransaktionen ein, um die Vielzahl von Positionen in die Cache-Speicherschaltung zuzuweisen. Wie veranschaulicht, muss der Zuweisungsprozess von Puffer 915 keinen kritischen QoS-Bedarf aufweisen. Dementsprechend kann das Zwischenspeichern von Speicherplätzen 935 von Puffer 915 unter Verwendung von Volumentransaktionen 1242 durchgeführt werden, um Speicherplätze 935 in Cache-Speicherschaltung 905 zuzuweisen. Wie zum Zeitpunkt t0 von
Verfahren 1400 schließt auch bei Block 1420 eine Angabe mit erfolgreich zwischengespeicherten Speicherplätzen 935 ein, welche die Verwendung mit Echtzeittransaktionen angeben. Obwohl der Zuweisungsprozess für Puffer 915 möglicherweise keinen Echtzeitbedarf hatte, kann erwartet werden, dass Puffer 915 unter Verwendung von Echtzeittransaktionen zugreift. Dementsprechend kann, wenn ein besonderer Speicherplatz 935 erfolgreich in eine jeweilige Cache-Zeile 920 zwischengespeichert wird, ein entsprechender Cache-Tag für die Cache-Zeile eine Angabe einschließen, dass die zwischengespeicherten Inhalte Echtzeittransaktionen zugeordnet sind. Wie zuvor beschrieben, können solche Hinweise dazu beitragen, die Freigabe von Cache-Zeilen 920, die Puffer 915 zugewiesen wurden, zu vermeiden.
Bei Block 1430 schließt Verfahren 1400 ferner das Zugreifen durch einen Agenten (z. B. Verarbeitungsschaltung 901) ein, der erfolgreich Speicherplätze 935 unter Verwendung von Echtzeittransaktionen zwischengespeichert hat. Nachdem die Zuweisung von Puffer 915 abgeschlossen wurde, kann Verarbeitungsschaltung 901, wie in
Verfahren 1400 bei Block 1440 schließt auch als Reaktion auf eine Cache-Fehlung für eine besondere Position von Speicherplätzen 935 ein, die nicht zwischengespeichert werden konnte, unter Verwendung, durch Cache-Speicherschaltung 905, von Echtzeittransaktionen, um auf den besonderen Speicherplatz 935 in Puffer 915 in Systemspeicherschaltung 910 zuzugreifen. Wie in
Verfahren 1400 kann in Block 1440 enden oder kann in einigen Ausführungsformen ganz oder teilweise wiederholt werden. Block 1430 kann zum Beispiel wiederholt werden, während Verarbeitungsschaltung 901 Verarbeitungswerte in Puffer 915 verarbeitet. In ähnlicher Weise kann Block 1440 wiederholt werden, wenn Verarbeitungsschaltung 901 auf einen Speicherplatz 935 zugreift, der nicht erfolgreich zwischengespeichert wurde. In ähnlicher Weise wie Verfahren 1300 kann Verfahren 1400 gleichzeitig mit anderen Instanzen des Verfahrens 1400 durchgeführt werden.
Fortfahrend nun mit
Bei Block 1510 schließt Verfahren 1500 das Bestimmen der besonderen Reihenfolge unter Verwendung einer gewünschten Cache-Fehlrate für die Vielzahl von Speicherplätzen 935 ein. Wie vorstehend beschrieben, kann die besondere Reihenfolge zum Zuweisen von Puffer 915 mit einem Ziel ausgewählt werden, Cache-Fehlungen über Puffer 915 zu verteilen. Ein Agent, der Puffer 915 (z. B. Verarbeitungsschaltung 901) verwenden wird, kann Daten verarbeiten, die in Puffer 915 unter Verwendung einer linearen Reihenfolge gespeichert werden. Verarbeitungsschaltung 901 kann an einem anfänglichen Speicherplatz wie 935a beginnen und durch Speicherplätze 935 in Sequenz, z. B. 935b, 935c usw., fortfahren, was mit Speicherplatz 935i endet. Wenn Speicherplätze 935 in derselben linearen Reihenfolge zugewiesen werden, können mehr Speicherplätze 935 nicht in Richtung des Endes des Puffers 915 zwischengespeichert werden. Die Verarbeitung von Daten in Puffer 915 in derselben Reihenfolge kann zu einer zunehmenden Cache-Fehlrate beim Verarbeiten von fortschreitender Verarbeitung führen, potenziell zu dem Ende von Puffer 915 hin. Die besondere Reihenfolge kann ausgewählt werden, um Ausfälle von Speicherplätzen 935, die über Puffer 915 zugewiesen werden sollen, so zu verteilen, dass, wenn Puffer 915 verarbeitet wird, eine Spitzenzwischenspeicherfehlrate unter der gewünschten Zwischenspeicherfehlrate bleibt. At block 1510,
Verfahren 1500 schließt bei Block 1520 auch das Zugreifen, durch Verarbeitungsschaltung 901 nach dem Zwischenspeichern, der Vielzahl von Speicherplätzen 935 unter Verwendung einer linearen Reihenfolge ein. Wie beschrieben, kann Verarbeitungsschaltung 901 auf Puffer 915 unter Verwendung einer linearen Reihenfolge zugreifen, die sich von der besonderen Reihenfolge unterscheidet. In anderen Ausführungsformen kann Verarbeitungsschaltung 901 eine unterschiedliche Reihenfolge verwenden, die eine lineare Reihenfolge aufweist. In solchen Ausführungsformen kann die besondere Reihenfolge so gewählt werden, dass sie unterschiedlich ist, einschließlich beispielsweise unter Verwendung einer linearen Reihenfolge, um Speicherplätze 935 zuzuweisen.
Bei Block 1530 schließt das Verfahren ferner das Verfolgen einer Cache-Fehlrate ein, die der Verwendung der besonderen Reihenfolge zugeordnet ist, um die Vielzahl von Speicherplätzen 935 zwischenzuspeichern. Da Verarbeitungsschaltung 901 Puffer 915 verwendet, kann eine beobachtete Cache-Fehlrate verfolgt werden und kann ferner mit der gewünschten Cache-Fehlrate verglichen werden. Wenn die besondere Reihenfolge zum Zuweisen von Speicherplätzen 935 effektiv war, sollte die verfolgte Cache-Fehlrate unter der gewünschten Cache-Fehlrate bleiben, da die Cache-Fehlrate während der gesamten Verarbeitung aller Daten in Puffer 915 konsistent auftreten kann. Durch konsistentes Verteilen der Cache-Fehlungen sollte eine Spitzenzwischenspeicherfehlrate angemessen niedrig bleiben und die gewünschte Cache-Fehlrate nicht überschreiten.At
Verfahren 1500 schließt ferner bei Block 1540 als Reaktion auf das Bestimmen, dass die verfolgte Cache-Fehlrate eine Schwellenwertrate erfüllt, das Anpassen der besonderen Reihenfolge für eine nachfolgende Verwendung ein. Wie veranschaulicht, erreicht, wenn die verfolgte Cache-Fehlrate die gewünschte Cache-Fehlrate erreicht oder überschreitet, das Zuweisen von Puffer 915 unter Verwendung der ausgewählten besonderen Reihenfolge nicht die gewünschten Ergebnisse. Die Schwellenrate kann gleich der gewünschten Cache-Fehlrate sein oder kann basierend auf Gesamtsystembetriebszielen höher oder niedriger eingestellt werden. Um die besondere Reihenfolge anzupassen, können Cache-Fehlungen, die zu dem Zeitpunkt aufgetreten sind, als die Cache-Fehlrate die Schwellenwertrate erfüllte, analysiert werden, um Speicherplätze 935 zu identifizieren, auf die zugegriffen wurde. Eine oder mehrere dieser identifizierten Speicherplätze 935 können ausgewählt werden, um näher an den Beginn einer angepassten Zuweisungsreihenfolge bewegt zu werden. Zusätzlich können auch Speicherplätze 935 identifiziert werden, auf die zu einem Zeitpunkt zugegriffen wurde, als die Cache-Fehlrate niedrig war. Einer oder mehrere dieser Speicherplätze können ausgewählt werden, um in Richtung des Endes der angepassten Zuweisungsreihenfolge verschoben zu werden.
Verfahren 1500 kann in Block 1540 enden oder kann in einigen Ausführungsformen ganz oder teilweise wiederholt werden. Zum Beispiel können Blöcke 1520 und 1530 wiederholt werden, während Verarbeitungsschaltung 901 auf Speicherplätze 935 in Puffer 915 zugreift. Wie für Verfahren 1300 und 1400 beschrieben, kann Verfahren 1500 auch gleichzeitig mit anderen Instanzen des Verfahrens 1500 durchgeführt werden. Außerdem können Verfahren 1300, 1400 und 1500 gleichzeitig durchgeführt werden.
In der veranschaulichten Ausführungsform schließt das System 1600 mindestens eine Instanz eines System-on-Chip (SoC) 1606 ein, das mehrere Typen von Verarbeitungsschaltungen, wie eine zentrale Verarbeitungseinheit (CPU), eine Grafikverarbeitungseinheit (GPU) oder etwas anderes, eine Kommunikations-Fabric und Schnittstellen zu Speichern und Eingabe-/Ausgabevorrichtungen, einschließen kann. In einigen Ausführungsformen schließen ein oder mehrere Prozessoren in dem SoC 1606 mehrere Ausführungsspuren und eine Warteschlange für die Anweisungsausgabe ein. In verschiedenen Ausführungsformen ist SoC 1606 mit einem externen Speicher 1602, Peripheriegeräten 1604 und einer Leistungsversorgung 1608 gekoppelt.In the illustrated embodiment,
Es wird außerdem eine Leistungsversorgung 1608 bereitgestellt, die dem SoC 1606 die Versorgungsspannungen sowie dem Speicher 1602 und/oder den Peripheriegeräten 1604 eine oder mehrere Versorgungsspannungen zuführt. In verschiedenen Ausführungsformen stellt Leistungsversorgung 1608 eine Batterie (z. B. eine wiederaufladbare Batterie in einem Smartphone, einem Laptop- oder Tablet-Computer oder einer anderen Vorrichtung) dar. In einigen Ausführungsformen ist mehr als eine Instanz des SoC 1606 eingeschlossen (und ist auch mehr als ein externer Speicher 1602 eingeschlossen).A
Der Speicher 1602 ist ein beliebiger Speichertyp, wie ein dynamischer Direktzugriffsspeicher (DRAM), ein synchroner DRAM (SDRAM), ein SDRAM mit doppelter Datenrate (DDR, DDR2, DDR3 usw.) (einschließlich mobiler Versionen der SDRAMs, wie mDDR3 usw., und/oder Niedrigleistungsversionen der SDRAMs, wie LPDDR2 usw.), ein RAMBUS DRAM (RDRAM), ein statischer RAM (SRAM) usw. Eine oder mehrere Speichervorrichtungen sind auf eine Leiterplatte gekoppelt, um Speichermodule, wie Single Inline Memory Modules (SIMMs), Dual Inline Memory Modules (DIMMs) usw., zu bilden. Alternativ sind die Vorrichtungen mit einem SoC oder einer integrierten Schaltung in einer Chip-on-Chip-Konfiguration, einer Package-on-Package-Konfiguration oder einer Multichipmodulkonfiguration montiert.The
Die Peripheriegeräte 1604 schließen eine beliebige gewünschte Schaltlogik, abhängig vom Typ des Systems 1600, ein. Zum Beispiel schließen Peripheriegeräte 1604 in einer Ausführungsform Vorrichtungen für verschiedene Typen von drahtloser Kommunikation, wie Wi-Fi, Bluetooth, Mobilfunk, globales Positionsbestimmungssystem usw., ein. In einigen Ausführungsformen schließen die Peripheriegeräte 1604 auch eine zusätzliche Speicherung, einschließlich einer RAM-Speicherung, einer Solid-State-Speicherung oder einer Plattenspeicherung, ein. Die Peripheriegeräte 1604 schließen Benutzerschnittstellenvorrichtungen, wie einen Anzeigebildschirm, einschließlich Berührungsanzeigebildschirmen oder Mehrfachberührungsanzeigebildschirmen, Tastatur- oder andere Eingabevorrichtungen, Mikrofone, Lautsprecher usw., ein.
Wie veranschaulicht, ist System 1600 gezeigt, um Anwendung in einem breiten Spektrum von Bereichen zu finden. Zum Beispiel kann System 1600 als Teil der Chips, Schaltlogik, Komponenten usw. eines Desktop-Computers 1610, Laptop-Computers 1620, Tablet-Computers 1630, Mobilfunk- oder Mobiltelefons 1640 oder Fernsehgeräts 1650 (oder einer Set-Top-Box, die mit einem Fernsehgerät gekoppelt ist) genutzt werden. Ebenfalls veranschaulicht sind eine Smartwatch und eine Gesundheitsüberwachungsvorrichtung 1660. In einigen Ausführungsformen kann eine Smartwatch eine Vielfalt von rechenbezogenen Universalfunktionen einschließen. Zum Beispiel kann die Smartwatch Zugriff auf E-Mail, einen Mobiltelefondienst, einen Benutzerkalender und so weiter bereitstellen. In verschiedenen Ausführungsformen kann eine Gesundheitsüberwachungsvorrichtung eine dedizierte medizinische Vorrichtung sein oder anderweitig eine dedizierte gesundheitsbezogene Funktionalität einschließen. Zum Beispiel kann eine Gesundheitsüberwachungsvorrichtung die Vitalparameter eines Benutzers überwachen, die Nähe eines Benutzers zu anderen Benutzern zum Zweck der epidemiologischen Abstandswahrung, Kontaktverfolgung verfolgen, die Kommunikation im Fall einer Gesundheitsnotlage an einen Notfalldienst bereitstellen und so weiter. In verschiedenen Ausführungsformen kann die vorstehend erwähnte Smartwatch einige oder keine gesundheitsüberwachungsbezogenen Funktionen einschließen. Andere am Körper tragbare Vorrichtungen 1660 werden ebenfalls in Betracht gezogen, wie Vorrichtungen, die um den Hals getragen werden, Vorrichtungen, die an Mützen oder anderer Kopfbekleidung getragen werden, Vorrichtungen, die im menschlichen Körper implantierbar sind, Brillen, die dazu ausgelegt sind, eine Erfahrung einer erweiterten und/oder virtuellen Realität bereitzustellen, und so weiter.As illustrated,
System 1600 kann ferner als Teil eines Cloud-basierten Dienstes/von Cloud-basierten Diensten 1670 verwendet werden. Zum Beispiel können die zuvor erwähnten Vorrichtungen und/oder andere Vorrichtungen auf Rechenressourcen in der Cloud (d. h. entfernt angeordnete Hardware- und/oder Softwareressourcen) zugreifen. Weiters kann System 1600 in einer oder mehreren anderen Vorrichtungen einer Wohnung 1680 als den zuvor erwähnten genutzt werden. Zum Beispiel können Geräte innerhalb der Wohnung Zustände überwachen und erkennen, die Aufmerksamkeit erfordern. Verschiedene Vorrichtungen können innerhalb der Wohnung (z. B. ein Kühlschrank, ein Kühlsystem usw.) den Status der Vorrichtung überwachen und eine Warnung an den Wohnungseigentümer (oder zum Beispiel eine Reparatureinrichtung) bereitstellen, sollte ein bestimmtes Ereignis erkannt werden. Alternativ kann ein Thermostat die Temperatur in der Wohnung überwachen und kann Einstellungen eines Heiz-/Kühlsystems basierend auf einem Verlauf von Reaktionen auf verschiedene Zustände durch den Wohnungseigentümer automatisieren. Ebenfalls in
Es wird darauf hingewiesen, dass die große Vielfalt potenzieller Anwendungen für System 1600 eine Vielfalt von Leistungs-, Kosten- und Leistungsverbrauchsanforderungen einschließen kann. Dementsprechend kann eine skalierbare Lösung vorteilhaft sein, die die Verwendung einer oder mehrerer integrierter Schaltungen ermöglicht, um eine geeignete Kombination von Leistung, Kosten und Stromverbrauch bereitzustellen. Diese und viele andere Ausführungsformen sind möglich und werden in Betracht gezogen. Es wird darauf hingewiesen, dass die in
Wie in Bezug auf
Das nichtflüchtige computerlesbare Speichermedium 1710 kann einen beliebigen von verschiedenen geeigneten Typen von Speichervorrichtungen oder Speicherungsvorrichtungen umfassen. Bei dem nichtflüchtigen computerlesbaren Speichermedium 1710 kann es sich um ein Installationsmedium, z. B. eine CD-ROM, Disketten oder eine Bandvorrichtung; einen Computersystemspeicher oder Direktzugriffsspeicher, wie DRAM, DDR-RAM, SRAM, EDO-RAM, Rambus-RAM usw.; einen nichtflüchtigen Speicher, wie einen Flash-Speicher, Magnetmedien, z. B. eine Festplatte oder eine optische Speicherung; Register oder andere ähnliche Typen von Speicherelementen usw. handeln. Das nichtflüchtige computerlesbare Speichermedium 1710 kann auch andere Typen von nichtflüchtigem Speicher oder Kombinationen davon einschließen. Das nichtflüchtige computerlesbare Speichermedium 1710 kann zwei oder mehr Speichermedien einschließen, die an unterschiedlichen Positionen untergebracht sein können, z. B. in unterschiedlichen Computersystemen, die über ein Netzwerk verbunden sind.The non-transitory computer-
Designinformationen 1715 können unter Verwendung von beliebigen von verschiedenen geeigneten Computersprachen spezifiziert werden, einschließlich Hardwarebeschreibungssprachen, wie ohne Einschränkung: VHDL, Verilog, SystemC, SystemVerilog, RHDL, M, MyHDL usw. Designinformationen 1715 können von dem Halbleiterherstellungssystem 1720 verwendbar sein, um mindestens einen Abschnitt der integrierten Schaltung 1730 herzustellen. Das Format der Designinformationen 1715 kann von mindestens einem Halbleiterherstellungssystem, wie dem Halbleiterherstellungssystem 1720, erkannt werden. In einigen Ausführungsformen können Designinformationen 1715 eine Netzliste einschließen, die Elemente einer Zellbibliothek sowie deren Konnektivität spezifiziert. Eine oder mehrere Zellbibliotheken, die während der Logiksynthese von Schaltungen verwendet werden, die in der integrierten Schaltung 1730 eingeschlossen sind, können auch in Designinformationen 1715 eingeschlossen sein. Solche Zellbibliotheken können Informationen einschließen, die Vorrichtungs- oder Transistorebene-Netzlisten, Maskendesigndaten, Charakterisierungsdaten und dergleichen von Zellen angeben, die in der Zellbibliothek eingeschlossen sind.
Die integrierte Schaltung 1730 kann in verschiedenen Ausführungsformen eine oder mehrere benutzerdefinierte Makrozellen, wie Speicher, Analog- oder Mischsignalschaltungen und dergleichen, einschließen. In solchen Fällen können Designinformationen 1715 Informationen in Bezug auf eingeschlossene Makrozellen einschließen. Solche Informationen können, ohne darauf beschränkt zu sein, eine Schemaerfassungsdatenbank, Maskendesigndaten, Verhaltensmodelle und Netzlisten auf Vorrichtungs- oder Transistorebene einschließen. Wie hierin verwendet, können Maskendesigndaten gemäß dem Grafikdatensystem (GDSII) oder einem beliebigen anderen geeigneten Format formatiert werden.Integrated
Halbleiterherstellungssystem 1720 kann ein beliebiges von verschiedenen geeigneten Elementen einschließen, die konfiguriert sind, um integrierte Schaltungen herzustellen. Dies kann zum Beispiel Elemente zum Abscheiden von Halbleitermaterialien (z. B. auf einem Wafer, was eine Maskierung einschließen kann), Entfernen von Materialien, Ändern der Form abgeschiedener Materialien, Modifizieren von Materialien (z. B. durch Dotieren von Materialien oder Modifizieren dielektrischer Konstanten unter Verwendung von ultravioletter Bearbeitung) usw. einschließen. Halbleiterherstellungssystem 1720 kann auch konfiguriert sein, um verschiedene Tests von hergestellten Schaltungen auf ihren korrekten Betrieb durchzuführen.
In verschiedenen Ausführungsformen ist die integrierte Schaltung 1730 konfiguriert, um gemäß einer durch Designinformationen 1715 spezifizierten Schaltungskonstruktion zu arbeiten, was das Durchführen einer beliebigen der hierin beschriebenen Funktionalität einschließen kann. Zum Beispiel kann die integrierte Schaltung 1730 beliebige von verschiedenen hierin gezeigten oder beschriebenen Elementen einschließen. Ferner kann die integrierte Schaltung 1730 konfiguriert sein, um verschiedene hierin beschriebene Funktionen in Verbindung mit anderen Komponenten durchzuführen.In various embodiments, integrated
Wie hierin verwendet, impliziert ein Ausdruck der Form „Designinformationen, die ein Design einer Schaltung spezifizieren, die konfiguriert ist, um zu ...“ nicht, dass die betreffende Schaltung hergestellt werden muss, damit das Element erfüllt wird. Vielmehr gibt dieser Ausdruck an, dass die Designinformationen eine Schaltung beschreiben, die nach der Fertigung dazu konfiguriert wird, die angegebenen Aktionen auszuführen, oder die spezifizierten Komponenten einzuschließen.As used herein, a phrase of the form "design information specifying a design of a circuit configured to..." does not imply that the circuit in question must be manufactured in order for the element to be satisfied. Rather, this phrase indicates that the design information describes a circuit that, after manufacture, is configured to perform the specified actions or to include the specified components.
Die vorliegende Offenbarung schließt Bezugnahmen auf eine „Ausführungsform" oder Gruppen von „Ausführungsformen“ (z. B. „einige Ausführungsformen“ oder „verschiedene Ausführungsformen“) ein. Ausführungsformen sind verschiedene Implementierungen oder Instanzen der offenbarten Konzepte. Bezugnahmen auf „Ausführungsform“, „eine Ausführungsform“, „eine bestimmte Ausführungsform“ und dergleichen beziehen sich nicht notwendigerweise auf die gleiche Ausführungsform. Eine große Anzahl möglicher Ausführungsformen wird in Betracht gezogen, einschließlich der speziell offenbarten, sowie Modifikationen oder Alternativen, die in das Wesen oder den Schutzumfang der Offenbarung fallen.The present disclosure includes references to an "embodiment" or groups of "embodiments" (e.g., "some embodiments" or "various embodiments"). Embodiments are various implementations or instances of the disclosed concepts. References to "embodiment," "an embodiment," "a particular embodiment," and the like do not necessarily refer to the same embodiment. A wide number of possible embodiments are contemplated, including those specifically disclosed, as well as modifications or alternatives that fall within the spirit or scope of the disclosure.
Diese Offenbarung kann potenzielle Vorteile erörtern, die sich aus den offenbarten Ausführungsformen ergeben können. Nicht alle Implementierungen dieser Ausführungsformen weisen notwendigerweise beliebige oder alle potenziellen Vorteile auf. Ob ein Vorteil für eine bestimmte Implementierung erreicht wird, hängt von vielen Faktoren ab, von denen einige außerhalb des Schutzumfangs dieser Offenbarung liegen. Tatsächlich gibt es eine Reihe von Gründen dafür, warum eine Implementierung, die innerhalb des Schutzumfangs der Ansprüche fällt, möglicherweise einige oder alle der offenbarten Vorteile nicht aufweist. Zum Beispiel könnte eine bestimmte Implementierung eine andere Schaltlogik außerhalb des Schutzumfangs der Offenbarung einschließen, die in Verbindung mit einer der offenbarten Ausführungsformen einen oder mehrere der offenbarten Vorteile aufhebt oder verringert. Des Weiteren könnte auch eine suboptimale Designausführung einer bestimmten Implementierung (z. B. Implementierungstechniken oder -werkzeuge) offenbarte Vorteile aufheben oder verringern. Selbst unter der Annahme einer qualifizierten Implementierung kann die Erreichung von Vorteilen weiterhin von anderen Faktoren, wie den Umgebungsumständen, in denen die Implementierung bereitgestellt wird, abhängen. Zum Beispiel können Eingaben, die einer bestimmten Implementierung bereitgestellt werden, verhindern, dass ein oder mehrere Probleme, die in dieser Offenbarung behandelt werden, bei einer bestimmten Gelegenheit auftreten, wodurch der Vorteil seiner Lösung möglicherweise nicht erreicht wird. Aufgrund des Vorhandenseins möglicher Faktoren außerhalb dieser Offenbarung ist es ausdrücklich beabsichtigt, dass alle hierin beschriebenen potenziellen Vorteile nicht als Anspruchseinschränkungen ausgelegt werden sollen, die erfüllt werden müssen, um eine Verletzung nachzuweisen. Vielmehr soll die Identifizierung solcher potenziellen Vorteile den Typ/die Typen von Verbesserung veranschaulichen, der/die für Designer verfügbar sind, die den Nutzen dieser Offenbarung haben. Dass solche Vorteile in einem erlaubenden Sinn beschrieben werden (z. B. unter der Angabe, dass ein bestimmter Vorteil „auftreten kann“), soll keinen Zweifel daran vermitteln, ob solche Vorteile tatsächlich erreicht werden können, sondern es soll stattdessen die technische Realität anerkannt werden, dass die Erreichung solcher Vorteile häufig von zusätzlichen Faktoren abhängt.This disclosure may discuss potential benefits that may result from the disclosed embodiments. Not all implementations of these embodiments necessarily have any or all of the potential benefits. Whether a benefit is achieved for a particular implementation depends on many factors, some of which are outside the scope of this disclosure. In fact, there are a number of reasons why an implementation that falls within the scope of the claims may not have some or all of the disclosed benefits. For example, a particular implementation might include different circuitry outside the scope of the disclosure. that, when used in conjunction with any of the disclosed embodiments, cancels or reduces one or more of the disclosed benefits. Furthermore, suboptimal design execution of a particular implementation (e.g., implementation techniques or tools) could also cancel or reduce disclosed benefits. Even assuming a qualified implementation, the achievement of benefits may still depend on other factors, such as the environmental circumstances in which the implementation is deployed. For example, inputs provided to a particular implementation may prevent one or more problems addressed in this disclosure from occurring on a particular occasion, thereby potentially failing to achieve the benefit of its solution. Due to the existence of possible factors external to this disclosure, it is expressly intended that any potential benefits described herein should not be construed as claim limitations that must be met to prove infringement. Rather, the identification of such potential benefits is intended to illustrate the type(s) of improvement available to designers who have the benefit of this disclosure. The fact that such advantages are described in a permissive sense (e.g. by stating that a particular advantage "may occur") is not intended to cast doubt as to whether such advantages can actually be achieved, but is instead intended to recognise the technical reality that the achievement of such advantages often depends on additional factors.
Sofern nicht anders angegeben, sind Ausführungsformen nicht einschränkend. Das heißt, dass die offenbarten Ausführungsformen den Schutzumfang von Ansprüchen, die basierend auf dieser Offenbarung formuliert werden, nicht einschränken sollen, selbst wenn nur ein einzelnes Beispiel in Bezug auf ein bestimmtes Merkmal beschrieben wird. Die offenbarten Ausführungsformen sollen veranschaulichend und nicht einschränkend sein, sofern in der Offenbarung keine gegenteiligen Aussagen vorhanden sind. Die Anmeldung soll es somit ermöglichen, dass Ansprüche offenbarte Ausführungsformen sowie die Alternativen, Modifikationen und Äquivalente, die für den Fachmann, der den Nutzen dieser Offenbarung hat, offensichtlich sind, abdecken.Unless otherwise specified, embodiments are not limiting. That is, the disclosed embodiments are not intended to limit the scope of claims made based on this disclosure, even if only a single example is described with respect to a particular feature. The disclosed embodiments are intended to be illustrative and not restrictive, unless otherwise stated in the disclosure. Thus, the application is intended to enable claims to cover disclosed embodiments as well as the alternatives, modifications, and equivalents that would be obvious to one skilled in the art having the benefit of this disclosure.
Zum Beispiel können Merkmale in dieser Anmeldung auf jede geeignete Weise kombiniert werden. Dementsprechend können während der Weiterverfolgung dieser Anwendung (oder einer Anwendung, welche die Priorität dieser beansprucht) neue Ansprüche auf eine beliebige solche Kombination von Merkmalen formuliert werden. Insbesondere können unter Bezugnahme auf die beiliegenden Ansprüche Merkmale aus abhängigen Ansprüchen mit denen anderer abhängiger Ansprüche kombiniert werden, wo dies geeignet ist, einschließlich Ansprüchen, die von anderen unabhängigen Ansprüchen abhängen. In ähnlicher Weise können Merkmale aus jeweiligen unabhängigen Ansprüchen, wo dies geeignet ist, kombiniert werden.For example, features in this application may be combined in any suitable manner. Accordingly, during the prosecution of this application (or an application claiming priority hereto), new claims may be drafted to any such combination of features. In particular, with reference to the appended claims, features from dependent claims may be combined with those of other dependent claims where appropriate, including claims dependent on other independent claims. Similarly, features from respective independent claims may be combined where appropriate.
Während die beiliegenden abhängigen Ansprüche derart formuliert sein können, dass jeder von einem einzigen anderen Anspruch abhängt, werden entsprechend auch zusätzliche Abhängigkeiten in Betracht gezogen. Alle Kombinationen von Merkmalen im abhängigen, die mit dieser Offenbarung übereinstimmen, werden in Betracht gezogen und können in dieser oder einer anderen Anmeldung beansprucht werden. Accordingly, while the appended dependent claims may be drafted such that each depends on a single other claim, additional dependencies are also contemplated. All combinations of features in the dependent that are consistent with this disclosure are contemplated and may be claimed in this or another application.
Zusammengefasst sind Kombinationen nicht auf diejenigen beschränkt, die in den beiliegenden Ansprüchen speziell aufgezählt sind.In summary, combinations are not limited to those specifically recited in the appended claims.
Wo dies geeignet ist, wird auch in Betracht gezogen, dass in einem Format oder einem gesetzlichen Typ formulierte Ansprüche (z. B. Einrichtung) entsprechende Ansprüche eines anderen Formats oder gesetzlichen Typs (z. B. Verfahren) unterstützen sollen.Where appropriate, it is also contemplated that claims formulated in one format or statutory type (e.g. facility) should support corresponding claims in another format or statutory type (e.g. method).
Da diese Offenbarung ein rechtliches Dokument ist, können verschiedene Begriffe und Phrasen einer behördlichen und rechtlichen Auslegung unterliegen. Es wird hiermit bekannt gemacht, dass die folgenden Absätze sowie Definitionen, die in der gesamten Offenbarung bereitgestellt werden, beim Bestimmen, wie basierend auf dieser Offenbarung formulierte Ansprüche auszulegen sind, verwendet werden sollen.Because this disclosure is a legal document, various terms and phrases may be subject to regulatory and legal interpretation. Notice is hereby given that the following paragraphs, as well as definitions provided throughout the disclosure, are to be used in determining how claims made based on this disclosure are to be interpreted.
Bezugnahmen auf eine Singularform eines Elements (d. h. ein Substantiv oder eine Nominalphrase, vor dem/der ein „ein/e/r“ oder „der/die/das“ steht) sollen, sofern der Kontext nicht eindeutig etwas anderes vorschreibt, „ein/e/r oder mehrere“ bedeuten. Eine Bezugnahme auf „ein Element“ in einem Anspruch schließt somit ohne einen Begleitkontext keine zusätzlichen Instanzen des Elements aus. Eine „Vielzahl“ von Elementen bezieht sich auf einen Satz von zwei oder mehr der Elemente.References to a singular form of an element (i.e., a noun or noun phrase preceded by "a" or "the") are intended to mean "one or more" unless the context clearly dictates otherwise. Thus, a reference to "an element" in a claim does not exclude additional instances of the element without an accompanying context. A "plurality" of elements refers to a set of two or more of the elements.
Das Wort „kann/können“ wird hierin in einem erlaubenden Sinn (d. h. das Potenzial aufweisend, in der Lage sein) und nicht in einem obligatorischen Sinn (d. h. muss/müssen) verwendet.The word “may” is used herein in a permissive sense (i.e. having the potential, being able to) and not in an obligatory sense (i.e. must).
Die Begriffe „umfassend“ und „einschließlich“ und Formen davon sind offen und bedeuten „einschließlich, ohne darauf beschränkt zu sein“.The terms “comprehensive” and “including” and forms thereof are open-ended and mean “including, but not limited to.”
Wenn der Begriff „oder“ in dieser Offenbarung in Bezug auf eine Liste von Optionen verwendet wird, wird er im Allgemeinen derart verstanden, dass er in dem einschließenden Sinn verwendet wird, sofern nicht der Kontext etwas anderes vorsieht. Somit ist eine Angabe von „x oder y“ äquivalent zu „x oder y oder beide“ und deckt somit 1) x, aber nicht y, 2) y, aber nicht x, und 3) sowohl x als auch y ab. Andererseits macht eine Phrase, wie „entweder x oder y, aber nicht beide“ deutlich, dass „oder“ im exklusiven Sinn verwendet wird.When the term "or" is used in this disclosure in reference to a list of options, it is generally understood to be used in the inclusive sense unless the context indicates otherwise. Thus, a statement of "x or y" is equivalent to "x or y or both" and thus covers 1) x but not y, 2) y but not x, and 3) both x and y. On the other hand, a phrase such as "either x or y but not both" makes it clear that "or" is used in the exclusive sense.
Eine Angabe von „w, x, y oder z oder eine beliebige Kombination davon“ oder „mindestens eines von ... w, x, y und z“ soll alle Möglichkeiten abdecken, die ein einzelnes Element bis zur Gesamtanzahl von Elementen im Satz beinhalten. Bei dem Satz [w, x, y, z] decken diese Phrasen zum Beispiel jedes einzelne Element des Satzes (z. B. w, aber nicht x, y oder z), beliebige zwei Elemente (z. B. w und x, aber nicht y oder z), beliebige drei Elemente (z. B. w, x und y, aber nicht z) und alle vier Elemente ab. Die Phrase „mindestens eines von ... x, y und z“ bezieht sich somit auf mindestens ein Element des Satzes [w, x, y, z], wodurch alle möglichen Kombinationen in dieser Liste von Elementen abgedeckt werden. Diese Phrase darf nicht derart ausgelegt werden, dass es erforderlich ist, dass mindestens eine Instanz von w, mindestens eine Instanz von x, mindestens eine Instanz von y und mindestens eine Instanz von z vorhanden sind.A statement of "w, x, y, or z, or any combination thereof" or "at least one of ... w, x, y, and z" is intended to cover all possibilities involving a single element up to the total number of elements in the set. For example, for the set [w, x, y, z], these phrases cover any single element of the set (e.g., w, but not x, y, or z), any two elements (e.g., w and x, but not y or z), any three elements (e.g., w, x, and y, but not z), and all four elements. The phrase "at least one of ... x, y, and z" thus refers to at least one element of the set [w, x, y, z], covering all possible combinations in this list of elements. This phrase should not be interpreted to require that at least one instance of w, at least one instance of x, at least one instance of y, and at least one instance of z be present.
Verschiedene „Kennzeichnungen“ können in dieser Offenbarung vor Substantiven oder Substantivphrasen stehen. Sofern nicht der Kontext etwas anderes vorsieht, beziehen sich verschiedene Kennzeichnungen, die für ein Merkmal (z. B. „erste Schaltung“, „zweite Schaltung“, „bestimmte Schaltung“, „gegebene Schaltung“ usw.) verwendet werden, auf verschiedene Instanzen des Merkmals. Zusätzlich implizieren die Kennzeichnungen „erste/r/s“, „zweite/r/s“ und „dritte/r/s“, wenn sie auf ein Merkmal angewendet werden, keinen Typ von Sortierung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben.Various "labels" may appear before nouns or noun phrases in this disclosure. Unless the context indicates otherwise, various labels used for a feature (e.g., "first circuit," "second circuit," "particular circuit," "given circuit," etc.) refer to different instances of the feature. Additionally, the labels "first," "second," and "third," when applied to a feature, do not imply any type of ordering (e.g., spatial, temporal, logical, etc.) unless otherwise specified.
Die Phrase „basierend auf/auf der Grundlage von“ oder wird verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Begriff schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf angegebenen Faktoren basieren oder auf den angegebenen Faktoren sowie anderen, nicht angegebenen Faktoren basieren. Man betrachte die Phrase „A basierend auf B bestimmen“. Diese Phrase gibt an, dass B ein Faktor ist, der verwendet wird, um A zu bestimmen, oder der die Bestimmung von A beeinflusst. Diese Phrase schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie C, basieren kann. Diese Phrase soll auch eine Ausführungsform abdecken, in der A ausschließlich basierend auf B bestimmt wird. Wie hierin verwendet, ist die Phrase „basierend auf/auf der Grundlage von“ gleichbedeutend mit der Phrase „basierend mindestens teilweise auf”.The phrase "based on" or is used to describe one or more factors that influence a determination. This term does not exclude the possibility that additional factors may influence the determination. That is, a determination may be based solely on stated factors, or may be based on the stated factors as well as other, unstated factors. Consider the phrase "determine A based on B." This phrase indicates that B is a factor used to determine A or that influences the determination of A. This phrase does not exclude that the determination of A may also be based on another factor, such as C. This phrase is also intended to cover an embodiment in which A is determined solely based on B. As used herein, the phrase "based on" is synonymous with the phrase "based at least in part on."
Die Phrasen „als Reaktion auf” und „in Reaktion auf” beschreiben einen oder mehrere Faktoren, die eine Wirkung auslösen. Diese Phrase schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Wirkung beeinflussen oder anderweitig auslösen können, entweder gemeinsam mit den angegebenen Faktoren oder unabhängig von den angegebenen Faktoren. Das heißt, eine Wirkung kann ausschließlich als Reaktion auf diese Faktoren erfolgen oder kann als Reaktion auf die angegebenen Faktoren sowie andere, nicht angegebene Faktoren erfolgen. Man betrachte die Phrase „A als Reaktion auf B durchführen“. Diese Phrase gibt an, dass B ein Faktor ist, der die Durchführung von A auslöst oder der ein bestimmtes Ergebnis für A auslöst. Diese Phrase schließt nicht aus, dass ein Durchführen von A auch als Reaktion auf einen anderen Faktor, wie C, erfolgen kann. Diese Phrase schließt auch nicht aus, dass ein Durchführen von A als Reaktion auf B und C gemeinsam erfolgen kann. Diese Phrase soll auch eine Ausführungsform abdecken, in der A ausschließlich basierend auf B durchgeführt wird. Wie hierin verwendet, ist die Phrase „basierend auf” gleichbedeutend mit der Phrase „basierend mindestens teilweise auf“. In ähnlicher Weise ist die Phrase „als Reaktion auf” gleichbedeutend mit der Phrase „mindestens teilweise als Reaktion auf“.The phrases “in response to” and “in response to” describe one or more factors that trigger an effect. This phrase does not exclude the possibility that additional factors may influence or otherwise trigger the effect, either together with the specified factors or independently of the specified factors. That is, an effect may occur solely in response to these factors, or may occur in response to the specified factors as well as other, unspecified factors. Consider the phrase “performing A in response to B.” This phrase indicates that B is a factor that triggers the performance of A or that triggers a particular result for A. This phrase does not exclude that performing A may also occur in response to another factor, such as C. This phrase also does not exclude that performing A may occur in response to B and C together. This phrase is also intended to cover an embodiment in which A is performed based solely on B. As used herein, the phrase “based on” is synonymous with the phrase “based at least in part on.” Similarly, the phrase “in response to” is synonymous with the phrase “at least in part in response to”.
Innerhalb dieser Offenbarung können unterschiedliche Entitäten (die verschiedentlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „konfiguriert“, um eine oder mehrere Aufgaben oder Operationen durchzuführen, beschrieben oder beansprucht werden. Diese Formulierung - [Entität], die konfiguriert ist, um [eine oder mehrere Aufgaben durchzuführen] - wird hierin verwendet, um sich auf eine Struktur (d. h. etwas Physisches) zu beziehen. Insbesondere wird diese Formulierung verwendet, um anzugeben, dass diese Struktur angeordnet ist, um die eine oder die mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „konfiguriert, um“ eine Aufgabe durchzuführen, bezeichnet werden, selbst wenn die Struktur aktuell nicht betrieben wird. Somit bezieht sich eine Entität, die als „konfiguriert, um“ eine Aufgabe durchzuführen, beschrieben oder angegeben wird, auf etwas Physisches, wie eine Vorrichtung, eine Schaltung, ein System mit einer Prozessoreinheit und einem Speicher, der Programmanweisungen speichert, die ausführbar sind, um die Aufgabe zu implementieren, usw. Diese Phrase wird hierin nicht verwendet, um auf etwas nicht Greifbares Bezug zu nehmen.Within this disclosure, various entities (which may be variously referred to as "units,""circuits," other components, etc.) may be described or claimed as being "configured" to perform one or more tasks or operations. This phrase - [entity] configured to [perform one or more tasks] - is used herein to refer to a structure (i.e., something physical). In particular, this phrase is used to indicate that this structure is arranged to perform the one or more tasks during operation. A structure may be referred to as being "configured to" perform a task even if the structure is not currently operating. Thus, an entity described or claimed as being "configured to" perform a task refers to something physical, such as a device, a circuit, a system having a processing unit and a memory storing program instructions executable to implement the task, etc. This phrase is not used herein to refer to anything intangible.
In einigen Fällen können verschiedene Einheiten/Schaltungen/Komponenten hierin als Durchführen eines Satzes von Aufgaben oder Vorgängen beschrieben werden. Es versteht sich, dass diese Entitäten „konfiguriert sind, um“ diese Aufgaben/Operationen durchzuführen, selbst wenn dies nicht spezifisch angegeben ist.In some cases, various entities/circuits/components may be described herein as performing a set of tasks or operations. It is understood that these entities are "configured to" perform these tasks/operations, even if not specifically stated.
Der Begriff „konfiguriert, um“ soll nicht „konfigurierbar, um“ bedeuten. Eine unprogrammierte FPGA würde zum Beispiel nicht als „konfiguriert, um“ eine bestimmte Funktion durchzuführen, betrachtet werden. Diese unprogrammierte FPGA kann jedoch „konfigurierbar, um“ diese Funktion durchzuführen, sein. Nach geeigneter Programmierung kann die FPGA dann als „konfiguriert, um“ die bestimmte Funktion durchzuführen, bezeichnet werden.The term "configured to" is not intended to mean "configurable to." For example, an unprogrammed FPGA would not be considered "configured to" perform a particular function. However, that unprogrammed FPGA may be "configurable to" perform that function. After appropriate programming, the FPGA can then be said to be "configured to" perform the particular function.
Für Zwecke von US-Patentanmeldungen basierend auf dieser Offenbarung soll sich in einem Anspruch, dass eine Struktur „konfiguriert, um“ eine oder mehrere Aufgaben durchzuführen, ist, ausdrücklich nicht auf die Anwendung von 35 U.S.C. § 112(f) für dieses Anspruchselement berufen werden. Wenn sich der Anmelder während des Erteilungsverfahrens einer US-Patentanmeldung basierend auf dieser Offenbarung auf die Anwendung von Abschnitt 112(f) berufen möchte, gibt er Anspruchselemente unter Verwendung des Konstrukts „Mittel zum“ [Durchführen einer Funktion] an.For purposes of U.S. patent applications based on this disclosure, a claim that a structure is "configured to" perform one or more tasks is expressly intended not to invoke the application of 35 U.S.C. § 112(f) for that claim element. If the applicant wishes to invoke the application of section 112(f) during the prosecution of a U.S. patent application based on this disclosure, the applicant shall specify claim elements using the construct "means for" [performing a function].
Verschiedene „Schaltungen“ können in dieser Offenbarung beschrieben werden. Diese Schaltungen oder „Schaltlogik“ bilden Hardware, die verschiedene Typen von Schaltungselementen, wie kombinatorische Logik, getaktete Speicherungsvorrichtungen (z. B. Flip-Flops, Register, Latches usw.), endliche Automaten, Speicher (z. B. Direktzugriffsspeicher, eingebetteten dynamischen Direktzugriffsspeicher), programmierbare logische Anordnungen und so weiter, einschließt. Schaltlogik kann benutzerdefiniert oder aus Standardbibliotheken entnommen sein. In verschiedenen Implementierungen kann Schaltlogik, wie es geeignet ist, digitale Komponenten, analoge Komponenten oder eine Kombination von beiden einschließen. Bestimmte Typen von Schaltungen können allgemein als „Einheiten“ (z. B. eine Decodiereinheit, eine arithmetisch-logische Einheit (ALU), eine Funktionseinheit, eine Speicherverwaltungseinheit (MMU) usw.) bezeichnet werden. Solche Einheiten beziehen sich ebenfalls auf Schaltungen oder Schaltlogik.Various "circuits" may be described in this disclosure. These circuits or "circuit logic" constitute hardware that includes various types of circuit elements, such as combinational logic, clocked storage devices (e.g., flip-flops, registers, latches, etc.), finite state machines, memories (e.g., random access memory, embedded dynamic random access memory), programmable logic arrays, and so on. Circuit logic may be user-defined or taken from standard libraries. In various implementations, circuit logic may include digital components, analog components, or a combination of both, as appropriate. Certain types of circuits may be referred to generally as "units" (e.g., a decoding unit, an arithmetic logic unit (ALU), a functional unit, a memory management unit (MMU), etc.). Such units also refer to circuits or circuit logic.
Die offenbarten Schaltungen/Einheiten/Komponenten und andere Elemente, die in den Zeichnungen veranschaulicht und hierin beschrieben sind, schließen somit Hardwareelemente, wie die im vorstehenden Absatz beschriebenen, ein. In vielen Fällen kann die interne Anordnung von Hardwareelementen innerhalb einer bestimmten Schaltung durch Beschreiben der Funktion dieser Schaltung angegeben werden. Zum Beispiel kann eine bestimmte „Decodiereinheit“ als die Funktion des „Verarbeitens eines Opcodes einer Anweisung und Umleitens dieser Anweisung zu einer oder mehreren einer Vielzahl von Funktionseinheiten“ durchführend beschrieben werden, was bedeutet, dass die Decodiereinheit „konfiguriert ist, um“ diese Funktion durchzuführen. Diese Funktionsangabe ist für den Fachmann auf dem Computergebiet ausreichend, um einen Satz möglicher Strukturen für die Schaltung näher zu bezeichnen.The disclosed circuits/units/components and other elements illustrated in the drawings and described herein thus include hardware elements such as those described in the preceding paragraph. In many cases, the internal arrangement of hardware elements within a particular circuit can be specified by describing the function of that circuit. For example, a particular "decode unit" can be described as performing the function of "processing an opcode of an instruction and redirecting that instruction to one or more of a plurality of functional units," meaning that the decode unit is "configured to" perform that function. This functional specification is sufficient for one skilled in the computer arts to specify a set of possible structures for the circuit.
In verschiedenen Ausführungsformen, wie im vorstehenden Absatz erörtert, können Schaltungen, Einheiten und andere Elemente durch die Funktionen oder Operationen definieren, für deren Implementierung sie konfiguriert sind. Die Anordnung dieser Schaltungen/Einheiten/Komponenten in Bezug aufeinander und die Art und Weise, in der sie interagieren, bilden eine mikroarchitektonische Definition der Hardware, die letztendlich in einer integrierten Schaltung hergestellt oder in ein FPGA programmiert ist, um eine physische Implementierung der mikroarchitektonischen Definition zu bilden. Somit wird die Mikroarchitekturdefinition von dem Fachmann als Struktur erkannt, aus der viele physische Implementierungen abgeleitet werden können, die alle in die breitere Struktur fallen, die durch die Mikroarchitekturdefinition beschrieben wird. Das heißt, dass der Fachmann, dem die gemäß dieser Offenbarung bereitgestellten Mikroarchitekturdefinition präsentiert wird, ohne unangemessenes Experimentieren und durch Anwendung durchschnittlicher Fähigkeiten die Struktur implementieren kann, indem er die Beschreibung der Schaltungen/Einheiten/Komponenten in einer Hardwarebeschreibungssprache (HDL), wie Verilog oder VHDL, codiert. Die HDL-Beschreibung wird häufig in einer Weise ausgedrückt, die als funktional erscheinen kann. Für den Fachmann auf diesem Gebiet ist diese HDL-Beschreibung jedoch die Weise, die verwendet wird, um die Struktur einer Schaltung, Einheit oder Komponente auf die nächste Implementierungsdetailebene zu transformieren. Eine solche HDL-Beschreibung kann die Form von Verhaltenscode (der üblicherweise nicht synthetisierbar ist), Register-Transfer-Sprache-Code (RTL-Code) (der im Gegensatz zu Verhaltenscode üblicherweise synthetisierbar ist) oder Strukturcode (z. B. eine Netzliste, die Logikgatter und deren Konnektivität angibt) annehmen. Die HDL-Beschreibung kann anschließend gegenüber einer Bibliothek von Zellen synthetisiert werden, die für eine gegebene Technologie zur Herstellung integrierter Schaltungen gestaltet ist, und kann aus Gründen der Zeittaktung, Energie und anderen Gründen modifiziert werden, um zu einer endgültigen Designdatenbank zu führen, die an eine Gießerei übermittelt wird, um Masken zu erzeugen und letztendlich die integrierte Schaltung herzustellen. Manche Hardware-Schaltungen oder Abschnitte davon können auch in einem schematischen Editor benutzerdefiniert ausgestaltet und zusammen mit synthetisierter Schaltlogik in das Design der integrierten Schaltung eingegliedert werden. Die integrierten Schaltungen können Transistoren und andere Schaltungselemente (z. B. passive Elemente, wie Kondensatoren, Widerstände, Spulen usw.) einschließen und eine Verbindung zwischen den Transistoren und Schaltungselementen herstellen. Manche Ausführungsformen können mehrere integrierte Schaltungen implementieren, die miteinander gekoppelt sind, um die Hardware-Schaltungen zu implementieren, und/oder diskrete Elemente können in manchen Ausführungsformen verwendet werden. Alternativ kann das HDL-Design zu einer programmierbaren Logikanordnung, wie einer anwenderprogrammierbaren Gatter-Anordnung (FPGA), synthetisiert werden und kann in der FPGA implementiert werden. Dieses Entkoppeln zwischen dem Design einer Gruppe von Schaltungen und der anschließenden Implementierung auf niedriger Ebene dieser Schaltungen führt üblicherweise zu dem Szenario, in dem der Schaltungs- oder Logikdesigner nie einen bestimmten Satz von Strukturen für die Implementierung auf niedriger Ebene angibt, der über eine Beschreibung dessen hinausgeht, wozu die Schaltung konfiguriert ist, da dieser Prozess auf einer anderen Stufe des Schaltungsimplementierungsprozesses durchgeführt wird.In various embodiments, as discussed in the preceding paragraph, circuits, units, and other elements may be defined by the functions or operations they are configured to implement. The arrangement of these circuits/units/components with respect to one another and the manner in which they interact form a microarchitectural definition of the hardware that is ultimately fabricated in an integrated circuit or programmed into an FPGA to form a physical implementation of the microarchitectural definition. Thus, the microarchitectural definition will be recognized by those skilled in the art as a structure from which many physical implementations may be derived, all of which fall within the broader structure described by the microarchitectural definition. That is, those skilled in the art, presented with the microarchitectural definition provided in accordance with this disclosure, may, without undue experimentation and by the exercise of ordinary skill, implement the structure by coding the description of the circuits/units/components in a hardware description language (HDL), such as Verilog or VHDL. The HDL description is often expressed in a manner that may appear functional. However, for those skilled in the art, this HDL description is the manner used to transform the structure of a circuit, device, or component to the next level of implementation detail. Such HDL description may take the form of behavioral code (which is typically not synthesizable), Register Transfer Language (RTL) code (which, unlike behavioral code, is typically synthesizable), or structural code (e.g., a netlist specifying logic gates and their connectivity). The HDL description may then be synthesized against a library of cells designed for a given integrated circuit manufacturing technology, and may be customized for timing, power, and other reasons to result in a final design database that is submitted to a foundry to generate masks and ultimately manufacture the integrated circuit. Some hardware circuits, or portions thereof, may also be customized in a schematic editor and incorporated into the integrated circuit design along with synthesized circuit logic. The integrated circuits may include transistors and other circuit elements (e.g., passive elements such as capacitors, resistors, inductors, etc.) and provide interconnection between the transistors and circuit elements. Some embodiments may implement multiple integrated circuits coupled together to implement the hardware circuits, and/or discrete elements may be used in some embodiments. Alternatively, the HDL design may be synthesized into a programmable logic array, such as a field programmable gate array (FPGA), and may be implemented in the FPGA. This decoupling between the design of a group of circuits and the subsequent low-level implementation of those circuits typically leads to the scenario where the circuit or logic designer never specifies a specific set of structures for the low-level implementation beyond a description of what the circuit is configured to do, since that process is performed at a different stage of the circuit implementation process.
Die Tatsache, dass viele verschiedene Kombinationen auf niedriger Ebene von Schaltungselementen verwendet werden können, um die gleiche Spezifikation einer Schaltung zu implementieren, führt zu einer großen Anzahl von äquivalenten Strukturen für diese Schaltung. Wie angegeben, können diese Schaltungen auf niedriger Ebene gemäß Änderungen in der Herstellungstechnologie, der zur Herstellung der integrierten Schaltung ausgewählten Gießerei, der Bibliothek von Zellen, die für ein bestimmtes Projekt bereitgestellt wird, usw. variieren. In vielen Fällen können die durch verschiedene Designwerkzeuge oder -methodiken zur Herstellung dieser verschiedenen Implementierungen vorgenommenen Auswahlen beliebig sein.The fact that many different low-level combinations of circuit elements can be used to implement the same specification of a circuit results in a large number of equivalent structures for that circuit. As indicated, these low-level circuits may vary according to changes in manufacturing technology, the foundry selected to manufacture the integrated circuit, the library of cells provided for a particular project, etc. In many cases, the choices made by different design tools or methodologies to produce these different implementations may be arbitrary.
Darüber hinaus ist es für eine einzelne Implementierung einer bestimmten Funktionsspezifikation einer Schaltung üblich, für eine gegebene Ausführungsform eine große Anzahl von Vorrichtungen (z. B. Millionen von Transistoren) einzuschließen. Entsprechend macht es das bloße Volumen dieser Informationen undurchführbar, eine vollständige Angabe der Struktur auf niedriger Ebene, die verwendet wird, um eine einzelne Ausführungsform zu implementieren, geschweige denn die enorme Anordnung äquivalenter möglicher Implementierungen bereitzustellen. Aus diesem Grund beschreibt die vorliegende Offenbarung eine Struktur von Schaltungen unter Verwendung der Funktionskurzschrift, die üblicherweise in der Industrie eingesetzt wird.Moreover, it is common for a single implementation of a particular functional specification of a circuit to include a large number of devices (e.g., millions of transistors) for a given embodiment. Accordingly, the sheer volume of this information makes it impractical to provide a complete specification of the low-level structure used to implement a single embodiment, let alone the vast array of equivalent possible implementations. For this reason, the present disclosure describes a structure of circuits using the functional shorthand commonly used in the industry.
Claims (20)
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/462,812 | 2021-08-31 | ||
US17/462,777 US11704245B2 (en) | 2021-08-31 | 2021-08-31 | Dynamic allocation of cache memory as RAM |
US17/462,777 | 2021-08-31 | ||
US17/462,812 US11893251B2 (en) | 2021-08-31 | 2021-08-31 | Allocation of a buffer located in system memory into a cache memory |
PCT/US2022/038644 WO2023033955A1 (en) | 2021-08-31 | 2022-07-28 | Dynamic allocation of cache memory as ram |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112022003363T5 true DE112022003363T5 (en) | 2024-04-11 |
Family
ID=85412738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112022003363.0T Pending DE112022003363T5 (en) | 2021-08-31 | 2022-07-28 | DYNAMIC ALLOCATION OF CACHE MEMORY AS RAM |
Country Status (3)
Country | Link |
---|---|
KR (1) | KR20240034258A (en) |
DE (1) | DE112022003363T5 (en) |
WO (1) | WO2023033955A1 (en) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6789167B2 (en) * | 2002-03-06 | 2004-09-07 | Hewlett-Packard Development Company, L.P. | Method and apparatus for multi-core processor integrated circuit having functional elements configurable as core elements and as system device elements |
US7254676B2 (en) * | 2002-11-15 | 2007-08-07 | Intel Corporation | Processor cache memory as RAM for execution of boot code |
FR2985825B1 (en) * | 2012-01-13 | 2014-12-05 | Commissariat Energie Atomique | SYSTEM AND METHOD FOR CORRESPONDENCE MANAGEMENT BETWEEN A CACHE MEMORY AND A MAIN MEMORY |
US9092341B2 (en) * | 2012-07-10 | 2015-07-28 | International Business Machines Corporation | Methods of cache preloading on a partition or a context switch |
US9323684B2 (en) * | 2014-03-21 | 2016-04-26 | Intel Corporation | Dynamic cache and memory allocation for memory subsystems |
-
2022
- 2022-07-28 DE DE112022003363.0T patent/DE112022003363T5/en active Pending
- 2022-07-28 WO PCT/US2022/038644 patent/WO2023033955A1/en active Application Filing
- 2022-07-28 KR KR1020247006761A patent/KR20240034258A/en unknown
Also Published As
Publication number | Publication date |
---|---|
KR20240034258A (en) | 2024-03-13 |
WO2023033955A1 (en) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150199126A1 (en) | Page migration in a 3d stacked hybrid memory | |
DE102018213430A1 (en) | Accelerator with low latency | |
DE112010005821T5 (en) | context switching | |
DE102013208423A1 (en) | Virtual memory structure for coprocessors having memory allocation limits | |
CN111684427A (en) | Cache control aware memory controller | |
DE112017001700T5 (en) | Processors, procedures, systems, and instructions for retrieving data at the specified cache level with guaranteed completion | |
DE202022002976U1 (en) | Scalable system-on-a-chip | |
US20120215989A1 (en) | Memory protection in a data processing system | |
DE102022107196A1 (en) | Secure direct peer-to-peer storage access request between devices | |
US20240126457A1 (en) | Dynamic Allocation of Cache Memory as RAM | |
DE102022109273A1 (en) | INDEPENDENT ON-CHIP MULTIPLE CIRCUIT | |
DE112021004707T5 (en) | SCALABLE CACHE COHERENCE PROTOCOL | |
DE112016007538T5 (en) | TECHNOLOGY FOR REALIZING A BINARY DISCONTINUED NON-VOLATILE MEMORY EXPRESS DRIVER | |
DE102022104024A1 (en) | TECHNIQUES TO CONFIGURE PARALLEL PROCESSORS FOR DIFFERENT APPLICATION AREAS | |
US9244841B2 (en) | Merging eviction and fill buffers for cache line transactions | |
DE112020006536T5 (en) | Advanced memory communication | |
DE3650584T2 (en) | Arrangement of cache management units | |
DE112022003363T5 (en) | DYNAMIC ALLOCATION OF CACHE MEMORY AS RAM | |
DE112021004758T5 (en) | DSB OPERATION WITH EXCLUDED AREA | |
DE112021004724T5 (en) | Scalable Interrupts | |
DE102021129138A1 (en) | COVER-BASED COMPRESSION WITH LOW COMPLEXITY | |
US11704245B2 (en) | Dynamic allocation of cache memory as RAM | |
DE112022003361T5 (en) | CRITICALITY-INFORMED CACHING POLICIES | |
DE112022003258T5 (en) | PREDICTION CONFIRMATION FOR CACHE SUBSYSTEM | |
DE112022001978T5 (en) | I/O AGENT |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed |