DE112022003363T5 - DYNAMIC ALLOCATION OF CACHE MEMORY AS RAM - Google Patents

DYNAMIC ALLOCATION OF CACHE MEMORY AS RAM Download PDF

Info

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
Application number
DE112022003363.0T
Other languages
German (de)
Inventor
Rohit Natarajan
Jurgen M. Schulz
Christopher D. Shuler
Rohit K. Gupta
Thomas T. Zou
Srinivasa Rangan Sridharan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US17/462,777 external-priority patent/US11704245B2/en
Priority claimed from US17/462,812 external-priority patent/US11893251B2/en
Application filed by Apple Inc filed Critical Apple Inc
Publication of DE112022003363T5 publication Critical patent/DE112022003363T5/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/145Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/1425Protection 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/1441Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security 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 von 1 zu zwei unterschiedlichen Zeitpunkten dar.
  • 4 veranschaulicht ein Blockdiagramm einer Ausführungsform des Systems von 1, 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 von 9, 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 von 9, 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.
The following detailed description refers to the accompanying drawings, which are now briefly described.
  • 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 of 1 at two different points in time.
  • 4 illustrates a block diagram of an embodiment of the system of 1 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 of 9 , 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 of 9 , 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. 1 bis 8, die nachstehend beschrieben sind, veranschaulichen verschiedene Details für diesen Cache-as-RAM-Ansatz.Accordingly, techniques for using caches to store values used and/or utilized for real-time transactions are desired. Two general approaches for using caches to implement a faster access memory region are presented herein. In a first approach, a portion of cache memory may be mapped to a system bus accessible address range, where the addressable cache memory may be accessed in a manner similar to random access memory (RAM). To implement such a technique, a control circuit may be used to map a portion of cache memory as RAM. Cache lines in the mapped portion of cache memory are flushed, and any dirty data (e.g., data modified in cache memory without updating corresponding locations in system memory) is written back to system memory. The cache lines in the mapped portion are enabled for access via a memory mapped address range and are removed from the available cache lines. Agents may then be able to directly access the address space mapped to memory with real-time transactions that can be processed in a similar amount of time as a cached location. Because the address space mapped to memory is not treated as part of the cache during allocation, values stored in this space are not at risk if they cannot be accessed for an extended period of time. 1 to 8 , described below, illustrate various details for this cache-as-RAM approach.

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. 9 bis 13, die später in dieser Offenbarung beschrieben sind, veranschaulichen Details bezüglich dieses verteilten Zwischenspeicherungsansatzes.The disclosed techniques attempt to distribute the cache allocation of portions of the buffer across different locations in the buffer. To achieve this, the buffer may be logically divided into a A cache can be divided into a plurality of blocks. An attempt can then be made to allocate a first sub-block from each block into the cache. Subsequent attempts can then be made to allocate a second sub-block from each block into the cache. This can be repeated for a number of sub-blocks in each block until an attempt has been made to cache all of the sub-blocks. Such a technique can spread cache misses for different sub-block allocations across an entire buffer so that the misses do not cluster toward one end of the buffer. For example, if the buffer is used to process an image, then cache misses can occur consistently, but with a lower concentration, across the processing of the entire image, rather than having a few misses at the beginning of processing the image and then having more frequent misses as processing approaches the end of the image. As misses occur more frequently, more real-time transactions can be generated to retrieve the requested data from system memory. Processing a larger number of real-time transactions simultaneously can increase the likelihood that low-latency deadlines will be missed, thereby increasing the likelihood of poor performance or system failure by a user of the system. 9 to 13 , described later in this disclosure, illustrate details regarding this distributed caching approach.

1 veranschaulicht ein Blockdiagramm einer Ausführungsform eines Cache-Speichersystems zu zwei Zeitpunkten. Wie veranschaulicht, schließt System 100 Cache-Steuerungsschaltung 101, Cache-Speicherschaltung 105 und Adresskarte 110 ein. Cache-Speicherschaltung 105 schließt Cache-Zeilen 120 bis 127 ein. Adresskarte 110 ist mit vier Adressbereichen 115a bis 115d (zusammen Adressbereiche 115) gezeigt. System 100 kann einer Prozessorschaltung entsprechen, wie einem Mikroprozessor, einem Mikrocontroller oder einer anderen Form von System-on-Chip (SoC). System 100 kann auf einer einzigen integrierten Schaltung oder durch Verwendung mehrerer Schaltungselemente implementiert werden, die auf einer Leiterplatte gekoppelt sind. 1 illustrates a block diagram of one embodiment of a cache memory system at two points in time. As illustrated, system 100 includes cache control circuitry 101, cache memory circuitry 105, and address map 110. Cache memory circuitry 105 includes cache lines 120-127. Address map 110 is shown with four address ranges 115a-115d (collectively, address ranges 115). System 100 may correspond to a processor circuit, such as a microprocessor, a microcontroller, or other form of system-on-chip (SoC). System 100 may be implemented on a single integrated circuit or by using multiple circuit elements coupled on a circuit board.

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 1 angegeben) und es können daher innerhalb des Bereichs keine Datenwerte gespeichert werden. Adressbereiche 115c und 115d sind ebenfalls inaktiv, während Adressbereich 115a aktuell aktiv ist. In einigen Ausführungsformen kann Adressbereich 115a einem Hauptsystemspeicher entsprechen und Adressen für alle Speicherorte und dem Speicher zugeordnete Register einschließen, die immer aktiviert sind, wenn System 100 aktiv ist.Each of the address ranges 115, when active, may correspond to a plurality of addresses corresponding to memory locations in the cache memory circuit 105, such as one or more of cache lines 120 through 127. When a particular one of the address ranges 115 is active, the corresponding cache line(s) is/are not used to cache data, but rather is/are used as RAM. When an address range is inactive, the corresponding cache line(s) may be used to cache data values. Addresses associated with an inactive address range may be considered an illegal address. and can therefore generate an exception if they are included in a transaction. At time t0, address range 115b is not active (as determined by hashing in 1 indicated) and therefore no data values can be stored within the range. Address ranges 115c and 115d are also inactive, while address range 115a is currently active. In some embodiments, address range 115a may correspond to a main system memory and may include addresses for all memory locations and registers associated with the memory that are always enabled when system 100 is active.

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 1 veranschaulicht, lediglich um ein Beispiel handelt. Die Veranschaulichung von 1 wurde vereinfacht, um für diese Offenbarung relevante Merkmale hervorzuheben. Verschiedene Ausführungsformen können zusätzliche Elemente und/oder eine andere Konfiguration der Elemente einschließen. Zum Beispiel sind nur acht Cache-Zeilen und vier Adressbereiche gezeigt. Jede geeignete Anzahl von Cache-Zeilen und Adressbereichen kann in anderen Ausführungsformen implementiert werden. Obwohl Adressbereich 115b wie einer einzelnen Cache-Zeile entsprechend gezeigt ist, kann der Adressbereich in anderen Ausführungsformen einer beliebigen geeigneten Anzahl von Cache-Zeilen sowie einem Abschnitt einer Cache-Zeile entsprechen.It is pointed out that System E100, as in 1 illustrated is merely an example. The illustration of 1 has been simplified to emphasize features relevant to this disclosure. Various embodiments may include additional elements and/or a different configuration of the elements. For example, only eight cache lines and four address ranges are shown. Any suitable number of cache lines and address ranges may be implemented in other embodiments. Although address range 115b is shown as corresponding to a single cache line, in other embodiments the address range may correspond to any suitable number of cache lines as well as a portion of a cache line.

Das in 1 veranschaulichte System ist in vereinfachter Darstellung gezeigt. Cache-Speichersysteme können auf verschiedene Weise implementiert werden. Ein weiteres Beispiel eines Systems mit einem Cache-Speicher ist in 2 gezeigt.This in 1 The system illustrated is shown in a simplified representation. Cache memory systems can be implemented in various ways. Another example of a system with a cache memory is shown in 2 shown.

In 2 wird ein Blockdiagramm einer Ausführungsform eines Cache-Speichersystems gezeigt, das die Verwendung von Wegen in einer Cache-Speicherschaltung verwendet. System 200 schließt, wie veranschaulicht, Cache-Steuerungsschaltung 201, Cache-Speicherschaltung 205, Adresskarte 210 und Prozessor 230 ein. Prozessor 230 kann einem allgemeinen Verarbeitungskern oder einer anderen Art von Verarbeitungsschaltung entsprechen, die in der Lage ist, Daten zu verarbeiten und Speicheranforderungen auszugeben. Außer wie nachstehend beschrieben führen Elemente von System 200 Funktionen aus, wie sie für ähnlich genannte und Zahlenelemente von 1 beschrieben sind.In 2 , a block diagram of one embodiment of a cache memory system employing the use of ways in a cache memory circuit is shown. System 200 includes, as illustrated, cache control circuit 201, cache memory circuit 205, address card 210, and processor 230. Processor 230 may correspond to a general processing core or other type of processing circuit capable of processing data and issuing memory requests. Except as described below, elements of system 200 perform functions as described for similarly named and numbered elements of 1 are described.

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 2 eine Darstellung eines Cache-Speichersystems ist. Obwohl nur vier Wege und acht Sätze gezeigt sind, kann in anderen Ausführungsformen jede geeignete Anzahl von Cache-Wegen und Sätzen eingeschlossen sein. Obwohl fünf Adressbereiche dargestellt sind, kann Adresskarte 210 in eine beliebige geeignete Anzahl von Bereichen unterteilt werden.It is also noted that the embodiment of 2 is an illustration of a cache memory system. Although only four ways and eight sets are shown, in other embodiments, any suitable number of cache ways and sets may be included. Although five address ranges are shown, address map 210 may be divided into any suitable number of ranges.

Die Beschreibung von 2 beschrieb eine Abweisung direkt adressierbarer Speicherorte. Die Abweisung eines direkt adressierbaren Speicherbereichs zurück in den Cache-Speicher kann auf verschiedene Weise implementiert werden. 3 zeigt eine solche Art und Weise.The description of 2 described a rejection of directly addressable memory locations. The rejection of a directly addressable memory region back to the cache memory can be implemented in several ways. 3 shows such a way.

Unter Bezugnahme auf 3 wird das System von 1 wiederum zu zwei verschiedenen Zeitpunkten veranschaulicht. System 100, wie unter Bezugnahme auf 1 beschrieben, schließt Cache-Steuerungsschaltung 101, Cache-Speicherschaltung 105 und Adresskarte 110 ein. Zum Zeitpunkt t0 wird Cache-Zeile 123 dem direkt adressierbaren Speicher in Adressbereich 115b zugeordnet und ist daher für Cache-Vorgänge nicht verfügbar. Wie veranschaulicht, ist Cache-Steuerungsschaltung 101 konfiguriert, um z. B. von einem Agenten wie Prozessor 230 in 2 Abweisungsanforderung 345 zu empfangen, um Cache-Zeile 123 von dem direkt adressierbaren Speicher in Adressbereich 115b abzuweisen. Als Reaktion auf die Abweisungsanforderung 345 ist Cache-Steuerungsschaltung 101 ferner konfiguriert, um Cache-Zeile 123 in Cache-Vorgängen einzuschließen, ohne Daten zu kopieren, die in dem direkt adressierbaren Speicher gespeichert sind, während Cache-Zeile 123 in Adressbereich 115b neu zugewiesen wurde. Zum Beispiel kann, wie vorstehend beschrieben, Cache-Steuerungsschaltung 101 eine Angabe in einem zugehörigen Cache-Tag für Cache-Zeile 123 eingestellt haben, um anzugeben, dass Cache-Zeile 123 einem direkt adressierbaren Speicher neu zugeordnet wurde. Um Cache-Zeile 123 abzuweisen, kann Cache-Steuerungsschaltung 101 diese Angabe löschen, wodurch Cache-Zeile 123 aus Adressbereich 115b entfernt wird und Cache-Zeile 123 in nachfolgenden Cache-Vorgängen einschließt.With reference to 3 the system is 1 again illustrated at two different points in time. System 100, as described with reference to 1 includes cache control circuit 101, cache memory circuit 105, and address map 110. At time t0, cache line 123 is mapped to directly addressable memory in address range 115b and is therefore unavailable for caching operations. As illustrated, cache control circuit 101 is configured to be accessed by, for example, an agent such as processor 230 in 2 Reject request 345 to reject cache line 123 from the directly addressable memory in address space 115b. In response to reject request 345, cache control circuit 101 is further configured to include cache line 123 in cache operations without copying data stored in the directly addressable memory while cache line 123 in address space 115b has been reallocated. For example, as described above, cache control circuit 101 may provide an indication in a set the associated cache tag for cache line 123 to indicate that cache line 123 has been remapped to directly addressable memory. To reject cache line 123, cache control circuit 101 may clear this indication, thereby removing cache line 123 from address range 115b and including cache line 123 in subsequent cache operations.

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.

3 stellt die Abweisung von Cache-Zeilen aus einem direkt adressierbaren Adressbereich dar. Fortfahrend mit 4 ist System 100 mit Adressbereich 115b, der aktiv ist (unter Verwendung der Cache-Zeile 123), dargestellt und veranschaulicht, wie Cache-Vorgänge und Zugriff auf Adressbereich 115b gleichzeitig gehandhabt werden können. System 100 in 4 zeigt Cache-Steuerungsschaltung 101, die Schreibanforderungen 445 und 446 empfängt. 3 represents the rejection of cache lines from a directly addressable address range. Continuing with 4 System 100 is shown with address space 115b active (using cache line 123) and illustrates how caching and access to address space 115b can be handled simultaneously. System 100 in 4 shows cache control circuit 101 receiving write requests 445 and 446.

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 3 und 4 lediglich Beispiele sind, um offenbarte Konzepte aufzuzeigen. Das in diesen Figuren gezeigte System 100 ist der Klarheit halber vereinfacht. In anderen Ausführungsformen können zusätzliche Elemente eingeschlossen sein, wie ein oder mehrere Agenten, die Speichertransaktionen ausgeben, welche die beschriebenen Vorgänge bewirken. Obwohl 3 und 4 System 100 von 1 nutzen, können die beschriebenen Techniken auf System 200 von 2 angewendet werden.It is further pointed out that the embodiments of 3 and 4 are merely examples to illustrate disclosed concepts. The system 100 shown in these figures is simplified for clarity. In other embodiments, additional elements may be included, such as one or more agents that issue memory transactions that effect the described operations. Although 3 and 4 System 100 by 1 the techniques described can be used on System 200 from 2 be applied.

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. 5 veranschaulicht ein Beispiel dafür, wie die Verwendung von Transaktionen mit unterschiedlichen QoS-Ebenen implementiert werden kann.The use of real-time transactions is described above in various capacities as used in conjunction with the disclosed techniques. Both real-time and volume transactions may be used for memory requests directed to the cache-based address ranges described herein. 5 illustrates an example of how the use of transactions with different QoS levels can be implemented.

Nun zu 5 übergehend wird ein System dargestellt, in dem Arbiter verwendet werden, um Transaktionen über ein Systemnetzwerk zu planen. System 500 schließt Cache-Steuerungsschaltung 501 und Adresskarte 510 ein, die ähnlich in 1, 3 und 4 benannten und beschriebenen Elementen, außer wie nachstehend beschrieben, entsprechen. System 500 schließt ferner Agenten 530a und 530b (zusammen Agenten 530), Netzwerkarbiterschaltung 540 und Busschaltung 545 ein. 5 veranschaulicht einen Fluss von zwei Speichertransaktionen (Speichertransaktionen 550 und 555, die eine Echtzeittransaktion bzw. eine Volumentransaktion sind), die an Adressbereich 515b adressiert sind, der unter Verwendung einer oder mehrerer Cache-Zeilen aus der Cache-Steuerungsschaltung 501 unter Verwendung einer wie vorstehend beschriebenen Technik implementiert wird.now to 5 5 shows a system in which arbiters are used to schedule transactions over a system network. System 500 includes cache control circuit 501 and address card 510, which are similar to 1 , 3 and 4 named and described, except as described below. System 500 further includes agents 530a and 530b (collectively, agents 530), network arbitration circuitry 540, and bus circuitry 545. 5 illustrates a flow of two memory transactions (memory transactions 550 and 555, which are a real-time transaction and a volume transaction, respectively) addressed to address range 515b, which is implemented using one or more cache lines from cache control circuit 501 using a technique as described above.

Zu einem ersten Zeitpunkt gibt Agent 530b die Volumenspeichertransaktion 555 mit einem Ziel im Adressbereich 515b aus. Ähnlich wie Adressbereiche 115b und 215b in 1 und 2 schließt Adressbereich 515b einen Abschnitt eines Cache-Speichers ein, der Cache-Steuerungsschaltung 501 zugeordnet ist. Wie veranschaulicht, wird Speichertransaktion 555 von Netzwerkarbiterschaltung 540 auf ihrem Weg zur Cache-Steuerungsschaltung 501 empfangen. Da Speichertransaktion 555 eine Volumentransaktion ist, stellt Netzwerkarbiterschaltung 540 Speichertransaktion 555 in Volumenwarteschlange 565a ein, bis Busschaltung 545 eine verfügbare Bandbreite aufweist, um Speichertransaktion 555 an Cache-Steuerungsschaltung 501 weiterzuleiten.At a first time, agent 530b issues volume storage transaction 555 with a destination in address range 515b. Similar to address ranges 115b and 215b in 1 and 2 address range 515b includes a portion of cache memory associated with cache control circuit 501. As illustrated, memory transaction 555 is received by network arbiter circuit 540 on its way to cache control circuit 501. Since memory transaction 555 is a volume transaction, network arbiter circuit 540 places memory transaction 555 in volume queue 565a until bus circuit 545 has available bandwidth to forward memory transaction 555 to cache control circuit 501.

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. 5 ist der Klarheit halber vereinfacht. In anderen Ausführungsformen können zusätzliche Elemente eingeschlossen sein, wie zusätzliche Agenten, mehrere Busschaltungen, zugehörige Netzwerkarbiterschaltungen und dergleichen.It is noted that system 500 is an example to highlight disclosed concepts. 5 is simplified for clarity. In other embodiments, additional elements may be included, such as additional agents, multiple bus circuits, associated network arbiter circuits, and the like.

5 zeigt, wie Speichertransaktionen mit unterschiedlichen QoS-Ebenen unter Verwendung der offenbarten Techniken gehandhabt werden können. Die offenbarte Cache-Steuerungsschaltung kann ferner konfiguriert sein, um Adressbereiche zu verwalten, die in unterschiedliche Arten von sicheren Speicherbereichen fallen. Eine Beschreibung einer solchen Ausführungsform wird als Nächstes vorgestellt. 5 shows how memory transactions with different QoS levels can be handled using the disclosed techniques. The disclosed cache control circuitry can be further configured to manage address ranges that fall into different types of secure memory areas. A description of such an embodiment is presented next.

Unter Bezugnahme auf 6 ist eine Ausführungsform eines Systems gezeigt, das Unterstützung für öffentlich zugängliche und gesicherte Speicherbereiche einschließt. System 600 schließt Cache-Steuerungsschaltung 601, Adresskarte 610, Systemspeicherkarte 620, vertrauenswürdigen Agenten 630 und nicht vertrauenswürdigen Agenten 635 ein. Systemspeicherkarte 620 ist, wie gezeigt, in zwei Bereiche unterteilt, den öffentlich zugänglichen Bereich 623 und den gesicherten Bereich 627. Adressbereich 615b in Adresskarte 610 entspricht einem neu zugewiesenen Cache-Speicher, wie vorstehend beschrieben, und wird innerhalb des gesicherten Zugriffbereichs 627 abgebildet. Der vertrauenswürdige Agent 630 und der nicht vertrauenswürdige Agent 635 geben Speichertransaktionen 650 bzw. 655 aus, die beide auf eine Zieladresse in Adressbereich 615b abzielen.With reference to 6 , an embodiment of a system is shown that includes support for publicly accessible and secured memory areas. System 600 includes cache control circuitry 601, address map 610, system memory map 620, trusted agent 630, and untrusted agent 635. System memory map 620 is divided into two areas, as shown, the publicly accessible area 623 and the secured area 627. Address area 615b in address map 610 corresponds to a newly allocated cache memory, as described above, and is mapped within the secured access area 627. The trusted agent 630 and the untrusted agent 635 issue memory transactions 650 and 655, respectively, both targeting a destination address in address area 615b.

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 1 bis 6 beschriebenen Schaltungen und Techniken beschreiben verschiedene Techniken zum erneuten Zuweisen eines Abschnitts eines Cache-Speichers an einen direkt adressierbaren Adressbereich. Eine Vielzahl von Verfahren kann zum Implementieren dieser offenbarten Techniken verwendet werden. Zwei derartige Verfahren werden nachstehend unter Bezugnahme auf 7 bis 8 beschrieben.The above with respect to 1 to 6 describe various techniques for reallocating a portion of a cache memory to a directly addressable address range. A variety of methods may be used to implement these disclosed techniques. Two such methods are described below with reference to 7 to 8 described.

Nun zu 7 übergehend wird ein Flussdiagramm für eine Ausführungsform eines Verfahrens zum erneuten Zuweisen eines Abschnitts einer Cache-Speicherschaltung an einen direkt adressierbaren Adressbereich gezeigt. Verfahren 700 kann von einer Cache-Steuerungsschaltung, wie Cache-Steuerungsschaltungen 101, 201, 501 und 601 in 1, 2, 5 bzw. 6, durchgeführt werden. Verfahren 700 kann durch eine Verarbeitungsschaltung durchgeführt werden, die Software oder Firmware durch Hardware-Schaltungen ausführt, einschließlich beispielsweise Logikgattern oder einer Kombination davon. Unter gemeinsamer Bezugnahme auf 1 und 7 beginnt Verfahren 700 bei Block 710.now to 7 Turning now to FIG. 7, a flowchart is shown for one embodiment of a method for reassigning a portion of a cache memory circuit to a directly addressable address range. Method 700 may be performed by a cache control circuit, such as cache control circuits 101, 201, 501, and 601 in 1 , 2 , 5 or 6 , may be performed. Method 700 may be performed by a processing circuit executing software or firmware through hardware circuits including, for example, logic gates or a combination thereof. With common reference to 1 and 7 Process 700 begins at block 710.

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 block 710, method 700 includes receiving, by cache control circuit 101, allocation request 145 to reallocate a portion of cache memory circuit 105 that is currently in use to a directly addressable memory location. As shown, allocation request 145 identifies inactive address range 115b. Allocation request 145 may be received at time t0, at which time cache memory circuit 105 was in use and one or more of cache lines 120-127 were in use to cache cache locations in system memory. Address range 115b may be specified by including in allocation request 145 an address value in address range 115b or an index value corresponding to address range 115b.

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 2 beschrieben, eine Cache-Speicherschaltung eine Vielzahl von Wegen einschließen, und ein gesamter Weg oder mehrere Wege können zur Verwendung in einem direkt adressierbaren Adressbereich ausgewählt werden.Method 700 further includes, at block 720, selecting cache line 123 of cache memory circuitry 105 for conversion based on identified address range 115b. As illustrated, cache line 123 may be associated with address range 115b due to software executing in system 100, such as an operating system. In other embodiments, cache line 123 may be hardcoded to address range 115b based on circuit design of system 100. Although only one cache line is shown as being selected for use in address range 115b, any suitable number of cache lines may be selected. For example, as described with reference to 2 As described, a cache memory circuit may include a plurality of ways, and an entire way or multiple ways may be selected for use in a directly addressable address range.

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 block 730, method 700 also includes setting, by cache control circuit 101, a respective indication for the selected cache line 123 to exclude cache line 123 from further caching operations. For example, cache control circuit 101 may set a particular bit or group of bits in a cache tag corresponding to cache line 123 to indicate use of cache line 123 in address range 115b. Additionally, cache control circuit 101 may set a real-time memory indicator indicating that cache line 123 is allocated to real-time transactions with higher priorities than volume transactions. Such an indication may prevent cache control circuit 101 from releasing the contents of cache line 123 after it has been reallocated in address range 115b. A real-time indication may further prioritize any transactions with an address in address range 115b as a destination over all volume transactions queued for cache control circuit 101.

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, method 700 may further include flushing cache line 123, by cache control circuitry 101, prior to setting the respective indication. Because cache memory circuitry 105 was used prior to receiving allocation request 145, valid data may be cached in cache line 123. If any value in cached cache line 123 has been changed and that change has not been written back to a destination in system memory, a flush command may be issued by cache control circuitry 101 that generates writeback requests for each location with modified values currently cached in cache line 123. After the writeback requests are issued, cache line 123 may be available for use in address range 115b.

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 7 lediglich ein Beispiel für das Zuweisen eines Abschnitts eines Cache-Speichers als ein direkt adressierbarer Adressbereich ist.Method 700 may end in block 730 or may repeat some or all of the operations. For example, method 700 may return to block 710 in response to receiving another allocation request from cache control circuit 101. In some embodiments, multiple instances of method 700 may be performed concurrently. For example, cache control circuit 101 may be able to process a second allocation request while continuing to perform a first allocation request. If system 100 includes multiple cache control circuits (e.g., for respective cache memory circuits), each cache control circuit may be able to perform method 700 in parallel. It is noted that the method of 7 is merely an example of allocating a portion of cache memory as a directly addressable address range.

Unter Bezugnahme auf 8 ist ein Flussdiagramm für eine Ausführungsform eines Verfahrens zum Betreiben und Abweisen eines direkt adressierbaren Adressbereichs gezeigt, der einen Abschnitt eines Cache-Speichers verwendet. In ähnlicher Weise wie Verfahren 700 kann Verfahren 800 durch eine Cache-Steuerungsschaltung, wie Cache-Steuerungsschaltung 101, 201, 501 und 601, durchgeführt werden, wie in 1, 2, 5 bzw. 6 gezeigt. Verfahren 800 kann auch durch eine Verarbeitungsschaltung durchgeführt werden, die Software oder Firmware durch eine Hardware-Schaltung oder eine Kombination davon ausführt. Unter Bezugnahme auf 1, 3 und 8 beginnt das Verfahren 800 in Block 810 mit Cache-Zeile 123, die bereits Adressbereich 115b neu zugewiesen ist.With reference to 8th , a flow chart is shown for one embodiment of a method for operating and disabling a directly addressable address range using a portion of a cache memory. In a similar manner to method 700, method 800 may be performed by a cache control circuit, such as cache control circuit 101, 201, 501, and 601, as shown in 1 , 2 , 5 or 6 Method 800 may also be performed by a processing circuit executing software or firmware through a hardware circuit or a combination thereof. Referring to 1 , 3 and 8th the method 800 begins in block 810 with cache line 123 already reassigned to address range 115b.

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 6 beschrieben, kann eine Systemspeicherkarte für System 100 einen öffentlich zugänglichen Bereich und einen oder mehrere gesicherte Bereiche einschließen. Verschiedene Agenten können versuchen, auf Adressbereich 115b zuzugreifen, von denen einige autorisiert sein können, auf einen oder mehrere der sicheren Bereiche zuzugreifen, während andere Agenten möglicherweise keine Berechtigung haben, auf alle Adressen zuzugreifen, außer auf diejenigen im öffentlich zugänglichen Bereich.Method 800 includes receiving, at block 810, by cache control circuit 101 from an unauthorized agent, a memory transaction for address range 115b. As described above with respect to 6 As described, a system memory map for system 100 may include a publicly accessible area and one or more secured areas. Various agents may attempt to access address range 115b, some of which may be authorized to access one or more of the secure areas, while other agents may not have authorization to to access all addresses except those in the publicly accessible area.

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 block 820, method 800 includes, in response to determining that address range 115b is part of a secure access range, ignoring, by cache control circuitry 101, the memory transaction from the unauthorized agent. As illustrated, an address included in the received memory transaction targets a location in address range 115b. Address range 115b may be determined to be within a secure access range of the system memory card to which the unauthorized agent does not have access. In response to this determination, the received memory transaction is ignored. As described above, an error message may be returned to the unauthorized agent and/or an exception signal may be asserted, e.g., to indicate to an operating system that unauthorized access was attempted.

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 block 830, the method also includes receiving, by cache control circuit 101, the deny request 345 to deny cache line 123 of cache memory circuit 105 from the directly addressable address space 115b. An agent that was using address space 115b may complete activities that initiated a request to reassign cache line 123 to address space 115b. For example, a processor may have requested activation of address space 115b in response to startup of a particular application or start of a particular process within an application. Once the application or process is completed, address space 115b may not be needed and therefore may be returned for use in cache memory circuit 105, thereby increasing an amount of data that may be cached at a given time.

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.Method 800 further includes cache line 123 in cache operations at block 840 in response to reject request 345. As illustrated, cache line 123 is returned to cache memory circuitry 105 for use as a cache. For example, if one or more bits in a cache tag corresponding to cache line 123 were set to include cache line 123 in address range 115b, those bits may be cleared to return cache line 123 to cache memory circuitry 105. Data stored in address range 115b while cache line 123 was being reallocated may be overwritten without being written back to a system memory circuitry. Values stored in address range 115b may need to be explicitly copied to other memory locations using respective memory transactions before cache line 123 is rejected. Otherwise, any values from the address range 115b may be lost after rejection.

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 block 860, method 800 also includes generating an error by cache control circuit 101 in response to a write request to an address in address range 115b received after the rejection. In addition to block 850, or in some embodiments instead of block 850, an error may be generated, such as asserting an exception signal. Such an error may provide an indication to a monitoring processor, security circuit, exception handling circuit or process, and/or other hardware circuits or software processes that an access to an inactive address has been made. In some cases, such an access may indicate an improper operating system, and a recovery operation may be initiated, such as a system reset or exception routine.

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, method 800 may end in block 860, or in other embodiments, may repeat some or all of the operations. For example, method 800 may return to block 830 to reject a different address range in response to a different rejection request. Note that operations of method 800 may be performed in a different order, in whole or in part. For example, blocks 810 and 820 may be performed one or more times before block 830 has performed an initial time. Blocks 830 through 860 may be performed without blocks 810 and 820.

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 methods 700 and 800 may be performed simultaneously or in an overlapping manner. For example, cache control circuit 101 may be configured to manage multiple address ranges simultaneously. thereby enabling different processor circuits to utilize different directly addressable address ranges in an overlapping manner. Accordingly, method 800 may be performed in whole or in part while method 700 continues.

1 bis 8 zeigen verschiedene Ausführungsformen einer Cache-as-RAM-Technik, bei der ein Abschnitt eines Cache-Speichers einem Systembus zugänglichen Adressbereich zugewiesen ist, wodurch ein Speicherbereich mit niedriger Latenz für einen gegebenen Agenten oder eine gegebene Gruppe von Agenten ermöglicht wird. 9 bis 15, die nachstehend beschrieben sind, stellen eine verteilte Puffertechnik dar, bei der ein Puffer innerhalb des Systemspeichers zugewiesen wird und dann unter Verwendung einer besonderen Reihenfolge in einen Cache-Speicher zugewiesen wird, der versucht, Cache-Fehlungen über eine Gesamtheit des Puffers zu verteilen. 1 to 8 show various embodiments of a cache-as-RAM technique in which a portion of cache memory is mapped to a system bus accessible address space, thereby enabling a low latency memory space for a given agent or group of agents. 9 to 15 , described below, represent a distributed buffering technique in which a buffer is allocated within system memory and then allocated into a cache using a special ordering that attempts to distribute cache misses across the entirety of the buffer.

fortfahrend mit 9 ist ein Blockdiagramm einer Ausführungsform eines Systems, das einen Cache-Speicher einschließt, zu zwei Zeitpunkten veranschaulicht. Wie gezeigt, schließt System 900 Verarbeitungsschaltung 901, Cache-Speicherschaltung 905 und Systemspeicherschaltung 910 ein. Cache-Speicherschaltung 905 schließt Cache-Zeilen 920a bis 920 h (gemeinsam Cache-Zeilen 920) ein. Systemspeicherschaltung 910 ist mit neun Speicherplätzen 935a bis 935i (gemeinsam Positionen 935) gezeigt. System 900 kann einem Prozessor entsprechen, wie einem Mikroprozessor, einem Mikrocontroller oder einer anderen Form von System-on-Chip (SoC). System 900 kann auf einer einzigen integrierten Schaltung oder durch Verwendung mehrerer Schaltungselemente implementiert werden, die auf einer Leiterplatte gekoppelt sind.continuing with 9 1 is a block diagram of one embodiment of a system including a cache memory, illustrated at two points in time. As shown, system 900 includes processing circuitry 901, cache memory circuitry 905, and system memory circuitry 910. Cache memory circuitry 905 includes cache lines 920a through 920h (collectively, cache lines 920). System memory circuitry 910 is shown with nine memory locations 935a through 935i (collectively, locations 935). System 900 may correspond to a processor, such as a microprocessor, a microcontroller, or other form of system-on-chip (SoC). System 900 may be implemented on a single integrated circuit or by using multiple circuit elements coupled on a circuit board.

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 9 bis 15 beschriebenen Vorgänge durchzuführen. Ein solches nichtflüchtiges computerlesbares Medium kann nichtflüchtige Speicherschaltungen einschließen, die in der Systemspeicherschaltung 910 eingeschlossen und/oder damit gekoppelt sind. Die nichtflüchtigen Speicherschaltungen können zum Beispiel Flash-Speicherarrays, ein Festkörperlaufwerk, ein Festplattenlaufwerk, ein Universal-Serial-Bus (USB) -Laufwerk, optische Plattenlaufwerke, Diskettenlaufwerke und dergleichen einschließen. As illustrated, processing circuitry 901 may be a processor core in a single or multiple core processor complex. System 900 may include a non-transitory computer-readable medium having stored thereon instructions executable by processing circuitry 901 to perform the functions described below with respect to 9 to 15 Such a non-transitory computer-readable medium may include non-volatile memory circuitry included in and/or coupled to the system memory circuitry 910. The non-volatile memory circuitry may include, for example, flash memory arrays, a solid state drive, a hard disk drive, a universal serial bus (USB) drive, optical disk drives, floppy disk drives, and the like.

Systemspeicherschaltung 910 und Cache-Speicherschaltung 905 können jeweils eine oder mehrere Typen von RAM einschließen, wie SRAM, DRAM und dergleichen.System memory circuit 910 and cache memory circuit 905 may each include one or more types of RAM, such as SRAM, DRAM, and the like.

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.Processing circuitry 901 is shown configured to allocate memory locations 935 in system memory circuitry 910 of system 900 to buffers 915. In various embodiments, processing circuitry 901 and/or another agent in system 900 (not illustrated) may use buffers 915 to process information related to an application executing on system 900. To meet a desired performance of that application, access to buffers 915 may have particular quality of service (QoS) needs. To increase the likelihood of meeting the QoS needs, processing circuitry 901 is further configured to allocate memory locations 935 in cache memory circuitry 905. Accesses to cache memory circuitry 905 may typically have a higher QoS level that accesses system memory circuitry 910.

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 buffer 915 to cache memory circuit 905, processing circuit 901 is configured to select a particular order for allocating memory locations 935 in cache memory circuit 905. This particular order may increase uniformity of cache miss rates compared to a linear order. Allocating memory locations 935 in a linear order, e.g., starting with allocating location 935a and progressing, in order, with memory locations 935b, 935c, 935d, etc. up to memory location 935i, may result in cache misses occurring more frequently for the memory locations at the end of buffer 915. For example, memory locations 935g, 935h, and 935i may have a higher probability of being unallocated because a corresponding cache line is already allocated to a different other memory location. Accordingly, a particular order for performing the allocations of memory locations 935 to cache memory circuit 905 is selected that allocates memory locations 935 in a more uniform manner that increases a probability that locations at the end of buffer 915 can be successfully allocated to cache memory circuit 905.

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, processing circuitry 901 is further configured to cache one of the memory locations 935 of buffer 915 in cache memory circuitry 905 in the particular order. In some embodiments, processing circuitry 901 may be further configured to submenu 935 memory locations, each with multiple memory locations, instead of selecting and assigning individual memory locations.

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 circuitry 901 allocates buffers 915, including memory locations 935, in system memory circuitry 910. At time t1, processing circuitry 901 is configured to segment buffers 915 into a plurality of blocks based on the particular order. This plurality of blocks corresponds to memory locations 935 and has a serial logical order, as shown.

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 system memory circuitry 910, such as one byte, sixteen bytes, 128 bytes, etc. In some embodiments, different memory locations 935 may include different numbers of bytes. For this example, a memory location 935 has an equal number of bytes as a cache line 920. Sizes for memory locations 935 may be determined by processing circuitry 901 based on the particular order. As shown, buffer 915 is divided into nine memory locations, and the particular order includes allocating every third memory location starting with memory location 935a, then 935d, and then 935g. The order reverses to memory location 935b, then 935e, and then 935h. The final three memory locations are then allocated starting with 935c, then 935f, and ending with 935i.

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.Processing circuitry 901 is further configured to cache memory locations 935 using an increment that selects one of the memory locations 935 in the particular order, which differs from the serial order. In the illustrated example, this increment is three, although any suitable number may be used. Memory location 935a is assigned to cache line 920c, followed by memory location 935d to cache line 920f, and then 935g is assigned to cache line 920h. Cache memory circuitry 905 is configured, as shown, to map a given memory location 935 to a corresponding cache line 920 based on a particular system address included in the given memory location 935. For example, cache memory circuitry 905 may hash the particular address or a portion thereof, and the resulting hash value is used to map the particular address to a corresponding cache line 920. Because cache memory circuit 905 may be much smaller than system memory circuit 910, two different system addresses may result in hash values associated with the same cache line 920. In such a case, the second of the two addresses may not be assigned.

In dem Beispiel von 9 werden Speicherplätze 935b, 935f und 935i Cache-Zeilen 920h, 920e bzw. 920c zugeordnet. Diese drei Cache-Zeilen 920 wurden jedoch bereits Speicherplätzen 935a, 935 h und 935g zugewiesen. Dementsprechend werden Speicherplätze 935b, 935f und 935i nicht zugewiesen. Wie durch den kursiv fettgedruckten Text in Puffer 915 gezeigt, werden Speicherplätze, die nicht zugewiesen werden konnten, in Puffer 915 verteilt. Wenn Inhalte von Puffer 915 dann von einem Agenten in logischer Reihenfolge beginnend an Speicherplatz 935a durchlaufen werden, treten Cache-Fehlungen nacheinander auf, die durch zwei oder mehr Cache-Treffer getrennt sind, bevor sie die nächste Cache-Fehlung erreichen.In the example of 9 locations 935b, 935f, and 935i are mapped to cache lines 920h, 920e, and 920c, respectively. However, these three cache lines 920 have already been mapped to locations 935a, 935h, and 935g. Accordingly, locations 935b, 935f, and 935i are unmapped. As shown by the bold italicized text in buffer 915, locations that could not be mapped are distributed throughout buffer 915. As contents of buffer 915 are then traversed by an agent in logical order starting at location 935a, cache misses occur one after another separated by two or more cache hits before reaching the next cache miss.

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 buffer 915, memory location 935b would have been allocated instead of memory location 935g, and memory location 935f would have been allocated instead of memory location 935h. This would have resulted in memory locations 935g, 935h, and 935i all being unallocated. When the agent traverses buffer 915 in this scenario, three cache misses occur in a line at the end of buffer 915, with no cache hit occurring between the misses. Three fetches into system memory circuit 910 in a line could result in delays because the second and third fetches may have to wait for the previous fetches to be processed. Accordingly, allocating buffer 915 using the particular order instead of a linear order may reduce an overall time to traverse buffer 915.

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 buffer 915 to cache memory circuitry 905 is complete, processing circuitry 901 or other agents in system 900 may access cache memory circuitry 905 as a low latency path to values stored in buffer 915. Locations 935 that are successfully cached may provide faster access to contents of buffer 915 compared to direct accesses to locations 935 in system memory circuitry 910.

Es wird darauf hingewiesen, dass die Ausführungsform von 9 lediglich ein Beispiel ist. 9 schließt nur Elemente zum Beschreiben der offenbarten Techniken ein. In anderen Ausführungsformen können zusätzliche Elemente eingeschlossen sein. Zum Beispiel können eine oder mehrere Busschaltungen, Speicherverwaltungseinheiten und dergleichen in anderen Ausführungsformen eingeschlossen sein. Die Anzahl der Cache-Zeilen und Speicherplätze ist der Klarheit halber beschränkt. In anderen Ausführungsformen kann jede geeignete Anzahl von Cache-Zeilen und Speicherplätzen eingeschlossen sein.It is pointed out that the embodiment of 9 is merely an example. 9 includes only elements for describing the disclosed techniques. In other embodiments, additional elements may be included. For example, one or more Bus circuits, memory management units, and the like may be included in other embodiments. The number of cache lines and memory locations is limited for clarity. In other embodiments, any suitable number of cache lines and memory locations may be included.

In der Beschreibung von 9 wird ein Fehler, um eine Position eines Puffers erfolgreich zuzuweisen, kurz erörtert. Wenn eine besondere Position in dem Puffer einer Cache-Zeile zugeordnet wird, die bereits einer unterschiedlichen Position in dem Puffer zugewiesen wurde, schlägt die Zuweisung fehl. In einigen Ausführungsformen kann eine besondere Position in einem Puffer einer Cache-Zeile zugeordnet werden, die aktuell einer unterschiedlichen Position im Systemspeicher zugewiesen ist, die nicht mit dem Puffer in Zusammenhang steht. Es wird nun eine Technik zum Handhaben eines solchen Falles vorgestellt.In the description of 9 A failure to successfully allocate a location of a buffer is briefly discussed. If a particular location in the buffer is allocated to a cache line that has already been allocated to a different location in the buffer, the allocation fails. In some embodiments, a particular location in a buffer may be allocated to a cache line that is currently allocated to a different location in system memory that is not associated with the buffer. A technique for handling such a case is now presented.

Übergehend zu 10 wird ein Blockdiagramm einer Ausführungsform des Systems 900 von 9 wieder zu zwei Zeitpunkten veranschaulicht. Wie gezeigt, ist System 900 das gleiche wie in 9 gezeigt, außer dass die Cache-Speicherschaltung mit vier zusätzlichen Cache-Zeilen, Cache-Zeilen 920i bis 9201, gezeigt ist. Wie vorstehend erwähnt, ist Cache-Speicherschaltung 905 der Klarheit halber mit einer begrenzten Anzahl von Cache-Zeilen in 9 gezeigt. In verschiedenen Ausführungsformen kann Cache-Speicherschaltung 905 jede geeignete Anzahl von Cache-Zeilen einschließen, einschließlich beispielsweise zusätzlicher Cache-Zeilen neben den zwölf in 10 gezeigten. Verarbeitungsschaltung 901 ist gezeigt, als sie Speicherplätze 935b, 935e und 935 h von Puffer 915 in Cache-Speicherschaltung 905 zuweist. Zum Zeitpunkt t0 versucht Verarbeitungsschaltung 901, Speicherplatz 935b in Cache-Zeile 920k zuzuweisen.Transitional to 10 is a block diagram of an embodiment of the system 900 of 9 again illustrated at two points in time. As shown, System 900 is the same as in 9 except that the cache memory circuit is shown with four additional cache lines, cache lines 920i through 9201. As mentioned above, for clarity, cache memory circuit 905 is shown with a limited number of cache lines in 9 In various embodiments, cache memory circuitry 905 may include any suitable number of cache lines, including, for example, additional cache lines besides the twelve shown in 10 Processing circuit 901 is shown allocating memory locations 935b, 935e, and 935h from buffer 915 into cache memory circuit 905. At time t0, processing circuit 901 attempts to allocate memory location 935b in cache line 920k.

Wie in 9 gezeigt, wurde Speicherplatz 935b Cache-Zeile 920 h zugeordnet, die zuvor Speicherplatz 935g von Puffer 915 zugewiesen worden war. In der Ausführungsform von 10 kann Speicherplatz 935b weiter Cache-Zeile 920k zugeordnet werden. Zum Beispiel kann Cache-Speicherschaltung 905 assoziativ gesetzt sein und eine Vielzahl von Wegen einschließen, sodass eine gegebene Systemspeicheradresse zwei oder mehr Cache-Zeilen 920 zugeordnet werden kann. Dementsprechend kann Cache-Zeile 920k auf einem Weg sein, der sich von Cache-Zeile 920 h unterscheidet, und kann daher eine alternative Cache-Zeile bereitstellen, in der Speicherplatz 935b zugewiesen werden soll.As in 9 shown, memory location 935b was allocated to cache line 920h, which had previously been allocated to memory location 935g of buffer 915. In the embodiment of 10 memory location 935b may be further mapped to cache line 920k. For example, cache memory circuitry 905 may be set associatively and include a plurality of ways so that a given system memory address may be mapped to two or more cache lines 920. Accordingly, cache line 920k may be on a way that is different from cache line 920h and may therefore provide an alternate cache line in which to map memory location 935b.

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, cache line 920k, at time t0, is allocated to memory location 1035y, which may be a location in system memory circuitry 910 that is not allocated to buffer 915. In response to the failure to cache memory location 935b in cache line 920k, processing circuitry 901 is configured to retry caching memory location 935b before caching another memory location. As shown, processing circuitry 901 generates a new allocation request to cache memory location 935b. In some embodiments, processing circuitry 901 may include a delay of a particular amount of time or number of instruction cycles or bus cycles between the original attempt to allocate memory location 935b and the retry attempt.

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 cache line 920k, and therefore location 935b may be successfully cached into cache line 920k. Processing circuitry 901 may then continue to attempt caching location 935e, followed by location 935h.

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 memory location 935b, processing circuit 901 can increase a number of memory locations of buffer 915 that are successfully cached. The more memory locations of buffer 915 that can be allocated in cache memory circuit 905, the better the likelihood of meeting the QoS needs of the application that will utilize buffer 915.

Es wird festgehalten, dass das in 10 gezeigte System 900 ein Beispiel zum Demonstrieren der offenbarten Techniken ist. Es werden nur Elemente zur Beschreibung dieser Techniken veranschaulicht. Wie vorstehend beschrieben, können zusätzliche Elemente in anderen Ausführungsformen eingeschlossen sein, wie zusätzliche Cache-Zeilen und Speicherplätze sowie zusätzliche Verarbeitungsschaltungen und andere Bus- und Speicherverwaltungsschaltungen.It is noted that the 10 is an example for demonstrating the disclosed techniques. Only elements describing these techniques are illustrated. As described above, additional elements may be included in other embodiments, such as additional cache lines and memory locations, as well as additional processing circuitry and other bus and memory management circuitry.

Das System von 9 beschreibt eine Verarbeitungsschaltung als Durchführen vieler der Handlungen, die dem Zwischenspeichern von Speicherplätzen in eine Cache-Speicherschaltung zugeordnet sind. Verschiedene Typen von Verarbeitungsschaltungen können verwendet werden, um solche Handlungen durchzuführen. Eine solche Verarbeitungsschaltung schließt eine Direktspeicherzugriffsschaltung (DMA-Schaltung) ein, wie in 11 gezeigt.The system of 9 describes a processing circuit as performing many of the acts associated with caching memory locations into a cache memory circuit. Various types of processing circuits may be used to perform such acts. One such processing circuit includes a direct memory access (DMA) circuit as in 11 shown.

Unter Bezugnahme auf 11 ist eine Ausführungsform eines Systems dargestellt, das eine DMA-Schaltung zum Zwischenspeichern eines Puffers eines Systemspeichers in einem Cache-Speicher einschließt. System 1100 schließt Prozessorkern 1190 ein, der mit DMA-Schaltung 1101 gekoppelt ist, die weiterhin mit Cache-Speicherschaltung 905 und einer Systemspeicherschaltung 910 gekoppelt ist. In verschiedenen Ausführungsformen können DMA-Schaltung 1101, Prozessorkern 1190 oder eine Kombination beider der Verarbeitungsschaltung 901 von 9 und 10 entsprechen.With reference to 11 is shown an embodiment of a system that includes a DMA circuit for temporarily storing a buffer of a system memory in a cache memory System 1100 includes processor core 1190 coupled to DMA circuitry 1101, which is further coupled to cache memory circuitry 905 and a system memory circuitry 910. In various embodiments, DMA circuitry 1101, processor core 1190, or a combination of both may be coupled to processing circuitry 901 of 9 and 10 are equivalent to.

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.Processor core 1190 may be a general purpose processor that performs computational operations. In some embodiments, processor core 1190 may be a special purpose processing core, such as a graphics processor, an audio processor, or a neural processor. Processor core 1190 may include, in some embodiments, a plurality of general purpose and/or special purpose processor cores, as well as auxiliary circuitry for managing power signals, clock signals, memory requests, and the like. DMA circuit 1101 is illustrated as configured to issue memory transactions to copy or move values between various memory addresses via a memory card of system 1100. DMA circuit 1101 may be implemented as a special purpose circuit, a general purpose circuit programmed to perform such tasks, or a combination thereof. DMA circuit 1101 is programmable, at least by processor core 1190, to perform multiple memory transactions in a desired sequence.

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, processing circuitry 901 selects the particular order for caching locations from buffer 915 into cache memory circuitry 905. As shown in system 1100, selecting the particular order is performed by processor core 1190, for example, based on a size of buffer 915 and/or an availability of cache lines in cache memory circuitry 905. Processor core 1190 is configured to program the particular order into DMA circuitry 1101 and use DMA circuitry 1101 to cache one of the locations 935 from buffer 915 into cache memory circuitry 905. For example, DMA circuitry 1101 may include various registers into which processor core 1190 may store source addresses for locations 935 and destination addresses to cache memory locations 935 in cache memory circuitry 905, including providing the particular order for issuing memory transactions corresponding to one of the memory locations 935.

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, processor core 1190 is further configured to track a cache miss rate in cache memory circuitry 905 for memory transactions that include accesses to memory locations 935. After buffer 915 is allocated in cache memory circuitry 905, processor core 1190 or a different agent in system 1100 may issue different memory transactions that access one of the memory locations 935. Depending on how many of the memory locations 935 were successfully allocated to cache memory circuitry 905, a particular cache miss rate may be determined for those memory transactions that target addresses in memory locations 935. For example, if ten percent of memory locations 935 are unallocated and memory locations 935 are accessed evenly by a particular agent using buffer 915, then the cache misses would be close to or equal to ten percent. However, if the particular agent accesses particular ones of the memory locations 935 more frequently than others, then the cache miss rate may be higher or lower than ten percent, depending on whether the more frequently accessed memory locations were successfully allocated.

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, processor core 1190 may be further configured to modify the particular order in DMA circuitry 1101. For example, if the threshold miss rate is 15% and the tracked miss rate is 18%, processor core 1190 may identify memory locations 935 that were not cached but were frequently targeted in memory transactions, as well as successfully cached memory locations 935 that were not frequently targeted. A revised order may adjust the order for allocating these identified memory locations so that the more frequently accessed locations are allocated earlier in the modified order and the less frequently accessed locations are moved toward the end of the modified order. When a subsequent buffer is to be allocated to cache memory circuitry 905, the modified order may be selected over the original particular order. In some embodiments, different orders may be determined and assigned to particular agents, tasks, processes, and the like, such that a selected order for assignment takes into account the performance of similar tasks.

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 11 ist eine Technik veranschaulicht, die Teilungspuffer 915 in eine Vielzahl von Blöcken 1130a bis 1130c (zusammen Blöcke 1130) mit jeweiligen Reihen zusammenhängender Speicherplätze 935 einschließt. Die neun veranschaulichten Speicherplätze 935 sind in drei Blöcke 1130 unterteilt, wobei jeder Block 1130 drei aufeinanderfolgende Speicherplätze 935 einschließt. Obwohl Blöcke 1130 gezeigt sind, um eine gleiche Anzahl von Speicherplätze 935 pro Block einzuschließen, kann in anderen Ausführungsformen die Anzahl der Speicherplätze 935, die in jedem Block 1130 eingeschlossen sind, variieren. Zum Beispiel kann eine Verwendung für Puffer 915 bekannt sein, und basierend auf der bekannten Verwendung können besondere Speicherplätze 935 oder Gruppen von Positionen dafür bekannt sein, dass auf sie selten zugegriffen wird, während andere dafür bekannt sind, dass auf sie häufiger zugegriffen wird. Eine Anzahl von Speicherplätzen 935, die jedem Block zugewiesen ist, kann daher so angepasst werden, dass zum Beispiel ein anfänglicher Speicherplatz 935 für jeden Block eine Position ist, von der bekannt ist, dass auf sie häufiger zugegriffen wird.With respect to determining an allocation order, a technique has been disclosed above in which subsequent memory locations are selected using a particular increment between consecutive positions. In 11 A technique is illustrated which divides the partition buffer 915 into a plurality of blocks 1130a to 1130c (collectively blocks 1130) each having rows of contiguous memory locations 935. The nine illustrated memory locations 935 are divided into three blocks 1130, with each block 1130 including three consecutive memory locations 935. Although blocks 1130 are shown to include an equal number of memory locations 935 per block, in other embodiments the number of memory locations 935 included in each block 1130 may vary. For example, a use for buffers 915 may be known, and based on the known use, particular memory locations 935 or groups of locations may be known to be infrequently accessed while others are known to be accessed more frequently. A number of memory locations 935 assigned to each block may therefore be adjusted such that, for example, an initial memory location 935 for each block is a location known to be accessed more frequently.

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, processor core 1190 may select a particular order that allocates a first memory location 935 to a respective series of blocks 1130 of cache memory circuit 905 and then allocates a second memory location 935 of the respective blocks 1130. As shown, block 1130a includes initial memory location 935a, followed by memory locations 935c and 935c. Similarly, block 1130b includes initial memory location 935d, followed by memory locations 935e and 935f, while block 1130c includes initial memory location 935g, followed by memory locations 935h and 935i.

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, processor core 1190 causes DMA circuit 1101 to cache the initial memory location of each of blocks 1130, memory locations 935a, 935d, and 935g. DMA circuit 1101 then caches a second memory location of each block 1130 (memory locations 935b, 935e, and 935h) in a second pass, followed by a third pass in which a third location of each block 1130 (memory locations 935c, 935f, and 935i) is cached.

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, processor core 1190 may modify the particular order based on a monitored cache miss rate. This modification may include adjusting a number of locations included in each block, a number of locations stored at one time by each block, or an order for allocating the locations within each block. For example, processor core 1190 may determine that memory location 935e is accessed more frequently than memory location 935d in block 1130b. In a modified order, the initial memory location allocated from block 1130b may be 935e rather than 935d.

Es wird darauf hingewiesen, dass es sich bei System 1100 lediglich um ein Beispiel handelt. 11 wurde der Klarheit halber vereinfacht. Obwohl neun Speicherplätze und drei Blöcke gezeigt sind, kann Puffer 915 jede geeignete Anzahl von Speicherplätzen einschließen, und diese Positionen können in jede geeignete Anzahl von Blöcken unterteilt werden. Eine Anzahl von Positionen, die in jedem Block eingeschlossen sind, kann zwischen Blöcken variieren. Zusätzlich kann eine Anzahl von Positionen von jedem Block, die zu einer gegebenen Zeit zugewiesen werden, zwischen den Durchläufen variieren.Please note that System 1100 is only an example. 11 has been simplified for clarity. Although nine memory locations and three blocks are shown, buffer 915 may include any suitable number of memory locations, and these locations may be divided into any suitable number of blocks. A number of locations included in each block may vary between blocks. In addition, a number of locations of each block allocated at a given time may vary between runs.

Verschiedene Typen von QoS-Ebenen werden in Bezug auf 1 bis 8 erörtert. Transaktionen, die zum Zwischenspeichern eines Puffers aus einem Systemspeicher in einen Cache-Speicher verwendet werden, können auch unterschiedliche QoS-Ebenen für unterschiedliche Aufgaben verwenden. 12 veranschaulicht die Verwendung von Volumen- und Echtzeittransaktionen mit den offenbarten Techniken.Different types of QoS levels are defined in relation to 1 to 8 discussed. Transactions used to cache a buffer from system memory to cache memory can also use different QoS levels for different tasks. 12 illustrates the use of volume and real-time transactions with the disclosed techniques.

Nun fortfahrend mit 12 ist eine Ausführungsform von System 900 aus 9 und 10 zu zwei unterschiedlichen Zeitpunkten während einer Pufferzuweisung zum Zwischenspeichern und während der Verwendung des zugewiesenen Puffers gezeigt. System 900 schließt die Elemente ein, wie zuvor in 9 und 10 gezeigt. Zusätzlich sind Cache-Speicherschaltung 905 und Systemspeicherschaltung 910 konfiguriert, um Volumen- und Echtzeitkanäle 1240 bzw. 1245 zu unterstützen. In einigen Ausführungsformen können Volumen- und Echtzeitkanäle 1240 und 1245 separate physische Verbindungen zwischen verschiedenen Agenten und Speicherschaltungen verwenden, um die jeweiligen Transaktionen abzuschließen. In anderen Ausführungsformen wird mindestens ein Abschnitt des Echtzeitkanals 1245 und des Volumenkanals 1240 gemeinsam genutzt und kann in einigen Ausführungsformen als virtuelle Volumen- und Echtzeitkanäle implementiert werden, wie vorstehend beschrieben.Now continuing with 12 is an embodiment of System 900 from 9 and 10 at two different times during a buffer allocation for caching and during use of the allocated buffer. System 900 includes the elements as previously described in 9 and 10 . Additionally, cache memory circuitry 905 and system memory circuitry 910 are configured to support volume and real-time channels 1240 and 1245, respectively. In some embodiments, volume and real-time channels 1240 and 1245 may use separate physical connections between different agents and memory circuitry to complete the respective transactions. In other embodiments, at least a portion of real-time channel 1245 and volume channel 1240 are shared and may be implemented as virtual volume and real-time channels, as described above, in some embodiments.

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, buffer 915 is cached in cache memory circuit 905. In the present embodiment, buffer 915 is a real-time buffer. A "real-time buffer" as used herein refers to a memory buffer in which real-time transactions are primarily used to access the buffer's locations. A real-time buffer may be used with an agent and/or task that may experience a failure of a particular QoS requirement. question could lead to improper operation of the agent or task. For example, processing a frame of a video for playback must be completed within a specific amount of time, otherwise the video playback may cause noticeable stalling or disruption to the viewer.

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 buffer 915 is a real-time buffer, the initial allocation of buffer 915 into the cache may not be time sensitive. Accordingly, caching of storage locations 935 of buffer 915 may be performed using volume transactions 1242 over volume channel 1240 to allocate the plurality of storage locations 935 in cache memory circuit 905. As shown at time t0, volume channel 1240 is used to transmit volume transactions 1242a, 1242b, and 1242c to allocate storage locations 935a, 935d, and 935g in cache memory circuit 905, respectively. During this buffer allocation task, the agent that is to use buffer 915, processing circuit 901, for example, may not have values ready to be read from or written to buffer 915. Accordingly, volume transactions 1242 may be used to allocate buffer 915.

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 buffer 915 is used with real-time transactions, volume transactions 1242 may include an indication with successfully cached memory locations 935 indicating that those cached memory locations are associated with real-time transactions. For example, cache tags associated with each successfully cached memory location 935 may include a particular bit or group of bits indicating that the associated cache line 920 is used with real-time transactions. Cache lines 920 with the real-time indications in their respective cache tags may receive higher priority when identifying cache lines for release. For example, when a particular number of cache lines 920 in cache memory circuitry 905 reach the threshold level, e.g., approaching a certain percentage of maximum memory capacity, particular ones of the cache lines 920 that have not been frequently accessed may be selected for release. Cache lines 920 with the real-time indications set may no longer be considered for deallocation or may be placed very low in an order to be selected, e.g., other cache lines would have higher probabilities of being selected for deallocation.

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.Cache memory circuitry 905 may also reserve a particular amount of bandwidth for retrieving data from system memory circuitry 910 in response to a cache miss associated with a real-time memory transaction. Cache memory circuitry 905 may limit a number of volume transactions that are issued and active at a given time such that bandwidth remains to issue a real-time transaction. For example, bus circuitry between cache memory circuitry 905 and system memory circuitry 910 may include a credit-based arbiter circuit. To have an issued transaction selected by this arbiter circuitry, cache memory circuitry 905 may maintain a particular number of bus credits. In such an embodiment, cache memory circuitry 905 may delay issuing a volume transaction when the number of bus credits is at or near the particular number. The volume transaction may be sent after cache memory circuitry 905 has accumulated a sufficient number of bus credits.

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, buffer 915 has been allocated to cache memory circuitry 905. As indicated by the bold italic text, locations 935f and 935i have not been successfully cached. For example, locations 935f and 935i may have been mapped to cache lines 920i and 9201 that were previously mapped to locations 1235x and 1235y, respectively. Processing circuitry 901 is further configured to access the successfully cached location 935c using real-time transaction 1250a. Cache memory circuitry 905 may be configured to process real-time transaction 1250a using values stored in cache line 920a.

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.Cache memory circuitry 905 is configured to generate fetch requests to system memory circuitry 910 in response to a cache miss associated with a respective memory transaction, wherein the generated fetch requests have a QoS level compatible with the corresponding memory transaction. For example, cache memory circuitry 905 may generate volume fetches 1265a and 1265b in response to volume transactions from a given agent. Processing circuitry 901 may be further configured to access the unsuccessfully cached memory location 935f using real-time transaction 1250b. Cache memory circuitry 905 is configured in response to a cache miss for memory location 935f to satisfy real-time transaction 1250b using a real-time fetch 1290. Because cache memory circuitry 905 is configured to reserve bandwidth for real-time fetches, real-time fetches may be prioritized over other volume fetches that have not been issued. For example, volume retrieval 1265b may be queued and await completion of volume retrieval 1265a. If real-time retrieval 1290 is generated before volume retrieval 1265b, real-time retrieval 1290 may be processed before volume retrieval 1265b.

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 12 nur ein Beispiel zu Demonstrationszwecken ist. Zur Klarheit wurden in 12 dargestellte Zahlenelemente minimiert. Trotz der veranschaulichten Anzahl von Speicherplätzen und Cache-Zeilen kann jede geeignete Anzahl von Speicherplätzen und Cache-Zeilen in anderen Ausführungsformen eingeschlossen sein. Obwohl nur Echtzeit- und Volumentransaktionen gezeigt sind, kann jede geeignete Anzahl von QoS-Ebenen in anderen Ausführungsformen verwendet werden.It is pointed out that the embodiment of 12 is only an example for demonstration purposes. For clarity, 12 numerical elements shown are minimized. Despite the illustrated number of memory locations and cache lines, any suitable number of memory locations and cache lines may be included in other embodiments. Although only real-time and volume transactions are shown, any suitable number of QoS levels may be used in other embodiments.

Die vorstehend in Bezug auf 9 bis 12 beschriebenen Schaltungen, Prozesse und Techniken beschreiben verschiedene Techniken zum Zuweisen eines Puffers, der sich in einem Systemspeicher befindet, zu einem Cache-Speicher. Es kann eine Vielzahl von Verfahren verwendet werden, um diese verschiedenen Techniken zu implementieren. Drei derartige Verfahren werden nachstehend unter Bezugnahme auf 13 bis 15 beschrieben.The above with respect to 9 to 12 describe various techniques for allocating a buffer located in a system memory to a cache memory. A variety of methods may be used to implement these various techniques. Three such methods are described below with reference to 13 to 15 described.

Übergehend nun zu 13 wird ein Flussdiagramm für eine Ausführungsform eines Verfahrens zum Zwischenspeichern eines Puffers, der sich in einem Systemspeicher befindet, in eine Cache-Speicherschaltung gezeigt. In verschiedenen Ausführungsformen kann Verfahren 1300 durch Verarbeitungsschaltung 901 in 9, 10 und 12 als Teil des Prozesses zum Zwischenspeichern von Puffer 915 in Cache-Speicherschaltung 905 durchgeführt werden. Zum Beispiel kann Verarbeitungsschaltung 901 ein nichtflüchtiges, computerlesbares Medium mit darauf gespeicherten Programmanweisungen einschließen (oder darauf zugreifen), die durch die Verarbeitungsschaltung ausführbar sind, um die unter Bezugnahme auf 13 beschriebenen Vorgänge zu veranlassen. Unter gemeinsamer Bezugnahme auf 9 und 13 beginnt Verfahren 1300 bei Block 1310.Transitioning now to 13 , a flowchart is shown for one embodiment of a method for caching a buffer located in a system memory into a cache memory circuit. In various embodiments, method 1300 may be performed by processing circuit 901 in 9 , 10 and 12 as part of the process of caching buffer 915 in cache memory circuit 905. For example, processing circuit 901 may include (or access) a non-transitory computer-readable medium having stored thereon program instructions executable by the processing circuit to perform the functions described with reference to 13 With joint reference to 9 and 13 Process 1300 begins at block 1310.

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 block 1310, method 1300 includes allocating, by processing circuitry 901, a plurality of memory locations 935 in system memory circuitry 910 to buffer 915. As shown, processing circuitry 901 or a different agent in system 900 may request buffer 915 to be allocated in system memory circuitry 910 for use with a particular process or task that the agent is preparing to perform. For example, the task may include processing an image, an audio file, encrypting or decrypting a file, analyzing input from a sensor, and the like. In some embodiments, buffer 915 may be a real-time buffer that uses real-time transactions to access memory locations 935. As previously described, real-time transactions have a higher level of QoS than other transactions, such as volume transactions.

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.Method 1300 further includes, at block 1320, determining a particular order for allocating memory locations 935 in cache memory circuitry 905. This particular order may be selected to increase uniformity of cache miss rates compared to using a linear order. As previously described, allocating memory locations 935 using a linear order may result in memory locations 935 near the beginning of the linear order being successfully cached, while memory locations 935 at the end of the linear order are not successfully cached because they are mapped to the same cache lines 920 as previously cached memory locations 935. If data from memory locations 935 in buffer 915 is accessed in the same order as it was allocated, more cache misses would be expected as processing moves toward the end of the order. Accordingly, the particular order is selected such that caching occurs in an order that attempts to evenly distribute cache misses during use of buffer 915. Accordingly, cache misses may not be concentrated during any particular portion of buffer accesses during use of buffer 915.

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 10 gezeigt, kann Verfahren 130 ein erneutes Wiederholen einschließen, als Reaktion auf einen Ausfall, um einen besonderen Speicherplatz 935 (z. B. Speicherplatz 935b) zwischenzuspeichern, wobei Speicherplatz 935b zwischengespeichert wird, bevor ein unterschiedlicher Speicherplatz 935, wie Speicherplatz 935e, zwischengespeichert wird. At block 1330, method 1300 also includes caching memory locations 935 from buffer 915 using the particular order. After the particular order for allocating memory locations 935 is selected, processing circuit 901 begins allocating memory locations 935 in cache memory circuit 905. In some embodiments, as in 10 shown, method 130 may include repeating again in response to a failure to cache a particular memory location 935 (e.g., memory location 935b), wherein memory location 935b is cached before a different memory location 935, such as memory location 935e, is cached.

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.Method 1300 may end in block 1330. In some embodiments, at least a portion of method 1300 may be repeated. For example, method 1300 may be repeated in response to receiving a request to allocate a different buffer in system memory circuit 910. In some cases, method 1300 may be performed concurrently with other instances of the method. For example, two or more instances of processing circuit 901, or multiple process threads within a single instance of processing circuit 901, may each perform method 1300 independently of one another.

Unter Bezugnahme auf 14 wird ein Flussdiagramm für eine Ausführungsform eines Verfahrens zum Verwenden verschiedener QoS-Ebenen mit einem Puffer veranschaulicht, der in eine Cache-Speicherschaltung zugewiesen wird. In ähnlicher Weise wie Verfahren 1300 kann Verfahren 1400 durch Verarbeitungsschaltung 901 in 9, 10 und 12 durchgeführt werden. Wie vorstehend beschrieben, kann Verarbeitungsschaltung 901 ein nichtflüchtiges computerlesbares Medium mit darauf gespeicherten Programmanweisungen einschließen (oder darauf zugreifen), die durch Verarbeitungsschaltung 901 ausführbar sind, um die unter Bezugnahme auf 14 beschriebenen Vorgänge zu veranlassen. Unter gemeinsamer Bezugnahme auf 12 und 14 beginnt Verfahren 1400 bei Block 1410.With reference to 14 14 illustrates a flow chart for one embodiment of a method for using different QoS levels with a buffer allocated in a cache memory circuit. In a similar manner to method 1300, method 1400 may be performed by processing circuit 901 in 9 , 10 and 12 As described above, processing circuitry 901 may include (or access) a non-transitory computer-readable medium having stored thereon program instructions executable by processing circuitry 901 to perform the functions described with reference to 14 With joint reference to 12 and 14 Procedure 1400 begins at block 1410.

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 12 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.At block 1410, method 1400 includes using volume transactions 1242 to allocate the plurality of locations in the cache memory circuit. As illustrated, the allocation process of buffer 915 may not have a critical QoS requirement. Accordingly, caching of storage locations 935 of buffer 915 may be performed using volume transactions 1242 to allocate storage locations 935 in cache memory circuit 905. As at time t0 of 12 As shown, volume channel 1240 is used to transfer volume transactions 1242a, 1242b, and 1242c to allocate memory locations 935a, 935d, and 935g, respectively, in cache memory circuit 905.

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.Method 1400 also includes, at block 1420, an indication of successfully cached memory locations 935 indicating use with real-time transactions. Although the allocation process for buffer 915 may not have had a real-time need, buffer 915 may be expected to be accessed using real-time transactions. Accordingly, when a particular memory location 935 is successfully cached into a respective cache line 920, a corresponding cache tag for the cache line may include an indication that the cached contents are associated with real-time transactions. As previously described, such indications may help avoid deallocation of cache lines 920 allocated to buffer 915.

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 12 gezeigt, auf einen der Speicherplätze 935 unter Verwendung von Echtzeittransaktionen 1250a und 1250b zugreifen. Echtzeittransaktion 1250a trifft auf Cache-Zeile 920a, wo Speicherplatz 935c zwischengespeichert wurde. Wenn Echtzeittransaktion 1250a eine Leseanforderung einschließt, können Daten aus Cache-Zeile 920a, die einer angeforderten Adresse entsprechen, von Cache-Speicherschaltung 905 an Verarbeitungsschaltung 901 unter Verwendung einer Echtzeittransaktion gesendet werden.At block 1430, method 1400 further includes accessing by an agent (e.g., processing circuit 901) that has successfully cached storage locations 935 using real-time transactions. After the allocation of buffer 915 is completed, processing circuit 901 may, as in 12 shown, access one of memory locations 935 using real-time transactions 1250a and 1250b. Real-time transaction 1250a encounters cache line 920a where memory location 935c has been cached. If real-time transaction 1250a includes a read request, data from cache line 920a corresponding to a requested address may be sent from cache memory circuit 905 to processing circuit 901 using a real-time transaction.

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 12 gezeigt, ist Echtzeittransaktion 1250b auf Speicherplatz 935f gerichtet. Speicherplatz 935f konnte jedoch nicht erfolgreich in Cache-Speicherschaltung 905 zwischengespeichert werden. Dementsprechend erzeugt Cache-Speicherschaltung 905 Echtzeitabruf 1290 an Systemspeicherschaltung 910 und gibt diesen aus, um Werte von Speicherplatz 935f abzurufen. Wenn entweder die Volumenabrufe 1265a und 1265b, die auch durch Cache-Speicherschaltung 905 erzeugt werden, nicht ausgegeben wurden, wenn Echtzeitabruf 1290 bereit ist, kann Echtzeitabruf 1290 vor den nicht ausgegebenen Volumenabrufen priorisiert werden.Method 1400 at block 1440 also includes, in response to a cache miss for a particular location of memory locations 935 that could not be cached, using, by cache memory circuitry 905, real-time transactions to access the particular location 935 in buffer 915 in system memory circuitry 910. As in 12 As shown, real-time transaction 1250b is directed to memory location 935f. However, memory location 935f could not be successfully cached in cache memory circuit 905. Accordingly, cache memory circuit 905 generates and issues real-time fetch 1290 to system memory circuit 910 to retrieve values from memory location 935f. If either volume fetches 1265a and 1265b, also generated by cache memory circuit 905, have not been issued when real-time fetch 1290 is ready, real-time fetch 1290 may be prioritized over the unissued volume fetches.

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.Method 1400 may end in block 1440 or may be repeated in whole or in part in some embodiments. For example, block 1430 may be repeated while processing circuit 901 stores processing values in buffer 915. Similarly, block 1440 may be repeated if processing circuit 901 accesses a memory location 935 that was not successfully cached. Similarly to method 1300, method 1400 may be performed concurrently with other instances of method 1400.

Fortfahrend nun mit 15 ist ein Flussdiagramm für eine Ausführungsform eines Verfahrens zum Auswählen und Anpassen einer besonderen Reihenfolge zum Zuweisen eines Puffers zu einer Cache-Speicherschaltung veranschaulicht. Wie für Verfahren 1300 und 1400 beschrieben, kann Verfahren 1400 durch Verarbeitungsschaltung 901 in 9, 10 und 12 durchgeführt werden. Wie beschrieben, kann Verarbeitungsschaltung 901 ein nichtflüchtiges computerlesbares Medium mit darauf gespeicherten Programmanweisungen einschließen (oder darauf zugreifen), die durch Verarbeitungsschaltung 901 ausführbar sind, um die unter Bezugnahme auf 15 beschriebenen Vorgänge zu veranlassen. Unter gemeinsamer Bezugnahme auf 12 und 15 beginnt Verfahren 1500 bei Block 1510.Continuing now with 15 is a flowchart for one embodiment of a method for selecting and adjusting a particular order for allocating a buffer to a cache memory circuit. As described for methods 1300 and 1400, method 1400 may be performed by processing circuit 901 in 9 , 10 and 12 As described, processing circuitry 901 may include (or access) a non-transitory computer-readable medium having stored thereon program instructions executable by processing circuitry 901 to perform the functions described with reference to 15 With joint reference to 12 and 15 Procedure 1500 begins at block 1510.

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, method 1500 includes determining the particular order using a desired cache miss rate for the plurality of memory locations 935. As described above, the particular order for allocating buffer 915 may be selected with a goal of distributing cache misses across buffer 915. An agent that will use buffer 915 (e.g., processing circuitry 901) may process data stored in buffer 915 using a linear order. Processing circuitry 901 may begin at an initial memory location such as 935a and proceed through memory locations 935 in sequence, e.g., 935b, 935c, etc., ending with memory location 935i. If memory locations 935 are allocated in the same linear order, more memory locations 935 may not be cached toward the end of buffer 915. Processing data in buffer 915 in the same order may result in an increasing cache miss rate as processing progresses, potentially toward the end of buffer 915. The particular order may be selected to distribute misses of memory locations 935 to be allocated across buffer 915 such that when buffer 915 is processed, a peak cache miss rate remains below the desired cache miss rate.

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.Method 1500 also includes, at block 1520, accessing, by processing circuitry 901 after caching, the plurality of storage locations 935 using a linear order. As described, processing circuitry 901 may access buffers 915 using a linear order that is different from the particular order. In other embodiments, processing circuitry 901 may use a different order that includes a linear order. In such embodiments, the particular order may be chosen to be different, including, for example, using a linear order to allocate storage locations 935.

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 block 1530, the method further includes tracking a cache miss rate associated with using the particular order to cache the plurality of memory locations 935. Since processing circuitry 901 uses buffers 915, an observed cache miss rate may be tracked and may be further compared to the desired cache miss rate. If the particular order for allocating memory locations 935 was effective, the tracked cache miss rate should remain below the desired cache miss rate because the cache miss rate may occur consistently throughout the processing of all data in buffer 915. By distributing cache misses consistently, a peak cache miss rate should remain reasonably low and not exceed the desired cache miss rate.

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.Method 1500 further includes, at block 1540, in response to determining that the tracked cache miss rate meets a threshold rate, adjusting the particular order for subsequent use. As illustrated, if the tracked cache miss rate meets or exceeds the desired cache miss rate, allocating buffers 915 using the selected particular order does not achieve the desired results. The threshold rate may be equal to the desired cache miss rate, or may be set higher or lower based on overall system operating goals. To adjust the particular order, cache misses that occurred at the time when the cache miss rate met the threshold rate may be analyzed to identify memory locations 935 that were accessed. One or more of these identified memory locations 935 may be selected to be moved closer to the beginning of an adjusted allocation order. Additionally, memory locations 935 that were accessed at a time when the cache miss rate was low may also be identified. One or more of these locations can be selected to be moved toward the end of the customized allocation order.

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.Method 1500 may end in block 1540 or may be repeated in whole or in part in some embodiments. For example, blocks 1520 and 1530 may be repeated while processing circuitry 901 accesses storage locations 935 in buffer 915. As described for methods 1300 and 1400, method 1500 may also be performed concurrently with other instances of method 1500. Additionally, methods 1300, 1400, and 1500 may be performed concurrently.

1 bis 8 veranschaulichen Schaltungen und Verfahren für ein System, das einen Abschnitt eines Cache-Speichers zur Verwendung als ein direkt adressierbarer Adressbereich neu zuweist. 9 bis 15 stellen Schaltungen und Techniken zum Zwischenspeichern eines Puffers dar, der sich in einem Systemspeicher in einer Cache-Speicherschaltung befindet. Jede Ausführungsform der offenbarten Systeme kann in einer oder mehreren von einer Vielfalt von Computersystemen, wie einem Desktop-Computer, Laptop-Computer, Smartphone, Tablet, einer am Körper tragbaren Vorrichtung und dergleichen, eingeschlossen sein. In einigen Ausführungsformen können die vorstehend beschriebenen Schaltungen auf einem System-on-Chip (SoC) oder einer anderen Art von integrierter Schaltung implementiert sein. Ein Blockdiagramm, das eine Ausführungsform des Computersystems 1600 veranschaulicht, ist in 16 veranschaulicht. Computersystem 1600 kann in einigen Ausführungsformen jede der offenbarten Ausführungsformen, wie Systeme 100, 200, 500, 600, 900 oder 1100, einschließen. 1 to 8 illustrate circuits and methods for a system that reallocates a portion of cache memory for use as a directly addressable address range. 9 to 15 illustrate circuits and techniques for caching a buffer located in a system memory in a cache memory circuit. Each embodiment of the disclosed systems may be included in one or more of a variety of computer systems, such as a desktop computer, laptop computer, smartphone, tablet, wearable device, and the like. In some embodiments, the circuits described above may be implemented on a system-on-chip (SoC) or other type of integrated circuit. A block diagram illustrating an embodiment of the computer system 1600 is shown in 16 Computer system 1600 may include any of the disclosed embodiments, such as systems 100, 200, 500, 600, 900, or 1100, in some embodiments.

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, system 1600 includes at least one instance of a system-on-chip (SoC) 1606, which may include multiple types of processing circuitry, such as a central processing unit (CPU), a graphics processing unit (GPU), or others, a communications fabric, and interfaces to memories and input/output devices. In some embodiments, one or more processors in SoC 1606 include multiple execution lanes and an instruction issue queue. In various embodiments, SoC 1606 is coupled to external memory 1602, peripherals 1604, and a power supply 1608.

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 power supply 1608 is also provided that supplies the supply voltages to the SoC 1606 and one or more supply voltages to the memory 1602 and/or peripherals 1604. In various embodiments, power supply 1608 represents a battery (e.g., a rechargeable battery in a smartphone, laptop or tablet computer, or other device). In some embodiments, more than one instance of the SoC 1606 is included (and more than one external memory 1602 is also included).

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 memory 1602 is any type of memory, such as dynamic random access memory (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR, DDR2, DDR3, etc.) (including mobile versions of SDRAMs such as mDDR3, etc., and/or low power versions of SDRAMs such as LPDDR2, etc.), RAMBUS DRAM (RDRAM), static RAM (SRAM), etc. One or more memory devices are coupled to a circuit board to form memory modules such as single inline memory modules (SIMMs), dual inline memory modules (DIMMs), etc. Alternatively, the devices are mounted with a SoC or integrated circuit in a chip-on-chip configuration, a package-on-package configuration, or a multi-chip module configuration.

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.Peripherals 1604 include any desired circuitry depending on the type of system 1600. For example, in one embodiment, peripherals 1604 include devices for various types of wireless communication, such as Wi-Fi, Bluetooth, cellular, global positioning system, etc. In some embodiments, peripherals 1604 also include additional storage, including RAM storage, solid state storage, or disk storage. Peripherals 1604 include user interface devices, such as a display screen, including touch display screens or multi-touch display screens, keyboard or other input devices, microphones, speakers, etc.

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 is shown to find application in a wide range of areas. For example, system 1600 may be utilized as part of the chips, circuitry, components, etc. of a desktop computer 1610, laptop computer 1620, tablet computer 1630, cellular or mobile phone 1640, or television 1650 (or a set-top box coupled to a television). Also illustrated are a smart watch and a health monitoring device 1660. In some embodiments, a smart watch may include a variety of general purpose computing-related functions. For example, the smart watch may provide access to email, cellular service, a user calendar, and so on. In various embodiments, a health monitoring device may be a dedicated medical device or otherwise include dedicated health-related functionality. For example, a health monitoring device may monitor a user's vital signs, track a user's proximity to other users for the purpose of epidemiological distancing, contact tracing, provide communication to emergency services in the event of a health emergency, and so on. In various embodiments, the aforementioned smartwatch may include some or no health monitoring-related functionality. Other wearable devices 1660 are also contemplated, such as devices worn around the neck, devices worn on hats or other headwear, devices implantable in the human body, glasses designed to provide an augmented and/or virtual reality experience, and so on.

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 16 veranschaulicht ist die Anwendung des Systems 1600 auf verschiedene Transportmodi 1690. Zum Beispiel kann System 1600 in den Steuer- und/oder Unterhaltungssystemen von Flugzeugen, Zügen, Bussen, Mietautos, Personenkraftwagen, Wasserfahrzeugen, von Privatbooten bis zu Kreuzfahrtschiffen, (Miet- oder eigenen) Rollern und so weiter verwendet werden. In verschiedenen Fällen kann System 1600 verwendet werden, um eine automatisierte Führung (z. B. selbstfahrende Fahrzeuge), eine allgemeine Systemsteuerung und etwas anderes bereitzustellen.System 1600 may further be used as part of a cloud-based service(s) 1670. For example, the aforementioned devices and/or other devices may access computing resources in the cloud (i.e., remotely located hardware and/or software resources). Furthermore, system 1600 may be used in one or more other devices of a residence 1680 than those previously mentioned. For example, devices within the residence may monitor and detect conditions that require attention. Various devices within the residence (e.g., a refrigerator, a cooling system, etc.) may monitor the status of the device and provide an alert to the residence owner (or, for example, a repair facility) should a particular event be detected. Alternatively, a thermostat may monitor the temperature in the residence and may automate settings of a heating/cooling system based on a history of responses to various conditions by the residence owner. Also in 16 illustrated is the application of system 1600 to various modes of transportation 1690. For example, system 1600 may be used in the control and/or entertainment systems of airplanes, trains, buses, rental cars, passenger vehicles, watercraft, from private boats to cruise ships, scooters (rental or owned), and so on. In various cases, system 1600 may be used to provide automated guidance (e.g., self-driving vehicles), general system control, and others.

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 16 veranschaulichten Vorrichtungen und Anwendungen nur veranschaulichend sind und nicht einschränkend sein sollen. Andere Vorrichtungen sind möglich und werden in Betracht gezogen.It is noted that the wide variety of potential applications for system 1600 may include a variety of performance, cost, and power consumption requirements. Accordingly, a scalable solution that enables the use of one or more integrated circuits to provide an appropriate combination of performance, cost, and power consumption may be advantageous. These and many other embodiments are possible and are contemplated. It is noted that the 16 The devices and applications illustrated are illustrative only and are not intended to be limiting. Other devices are possible and are contemplated.

Wie in Bezug auf 16 offenbart, kann Computersystem 1600 eine oder mehr integrierte Schaltungen einschließen, die innerhalb eines Personalcomputers, Smartphones, Tablet-Computers oder einer anderen Art von Rechenvorrichtung eingeschlossen sind. Ein Prozess zum Entwerfen und Herstellen einer integrierten Schaltung unter Verwendung von Designinformationen ist nachstehend in 17 dargestellt.As with regard to 16 As disclosed, computer system 1600 may include one or more integrated circuits encapsulated within a personal computer, smartphone, tablet computer, or other type of computing device. A process for designing and manufacturing an integrated circuit using design information is described below in 17 shown.

17 ist ein Blockdiagramm, das ein Beispiel für ein nichtflüchtiges computerlesbares Speichermedium, das Schaltungskonstruktionsinformationen speichert, gemäß einigen Ausführungsformen veranschaulicht. Die Ausführungsform von 17 kann in einem Prozess genutzt werden, um integrierte Schaltungen zu entwerfen und herzustellen, zum Beispiel beliebige der Systeme 100, 200, 500, 600, 900 oder 1100, wie in 1 - 15 gezeigt und beschrieben. In der veranschaulichten Ausführungsform ist Halbleiterherstellungssystem 1720 konfiguriert, um die auf dem nichtflüchtigen computerlesbaren Speichermedium 1710 gespeicherten Designinformationen 1715 zu verarbeiten und die integrierte Schaltung 1730 (z. B. System 100) basierend auf den Designinformationen 1715 herzustellen. 17 is a block diagram illustrating an example of a non-transitory computer-readable storage medium storing circuit design information, in accordance with some embodiments. The embodiment of 17 can be used in a process to design and manufacture integrated circuits, for example, any of the systems 100, 200, 500, 600, 900 or 1100 as in 1 - 15 shown and described. In the illustrated embodiment, semiconductor manufacturing system 1720 is configured to process the design information 1715 stored on the non-transitory computer-readable storage medium 1710 and to manufacture the integrated circuit 1730 (e.g., system 100) based on the design information 1715.

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-readable storage medium 1710 may comprise any of various suitable types of storage devices or storage devices. The non-transitory computer-readable storage medium 1710 may be an installation medium, e.g., a CD-ROM, floppy disks, or tape device; a computer system memory or random access memory, such as DRAM, DDR-RAM, SRAM, EDO-RAM, Rambus-RAM, etc.; a non-volatile memory, such as flash memory, magnetic media, e.g., a hard disk or optical storage; registers or other similar types of storage elements, etc. The non-transitory computer-readable storage medium 1710 may also comprise other types of non-volatile memory. cher or combinations thereof. The non-transitory computer-readable storage medium 1710 may include two or more storage media that may be located in different locations, e.g., in different computer systems connected via a network.

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.Design information 1715 may be specified using any of various suitable computer languages, including hardware description languages, such as without limitation: VHDL, Verilog, SystemC, SystemVerilog, RHDL, M, MyHDL, etc. Design information 1715 may be usable by semiconductor manufacturing system 1720 to manufacture at least a portion of integrated circuit 1730. The format of design information 1715 may be recognized by at least one semiconductor manufacturing system, such as semiconductor manufacturing system 1720. In some embodiments, design information 1715 may include a netlist specifying elements of a cell library as well as their connectivity. One or more cell libraries used during logic synthesis of circuits included in integrated circuit 1730 may also be included in design information 1715. Such cell libraries may include information specifying device or transistor level netlists, mask design data, characterization data, and the like of cells included in the cell library.

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 circuit 1730 may, in various embodiments, include one or more user-defined macrocells, such as memory, analog or mixed-signal circuits, and the like. In such cases, design information 1715 may include information related to included macrocells. Such information may include, but is not limited to, a schematic capture database, mask design data, behavioral models, and device or transistor level netlists. As used herein, mask design data may be formatted according to the Graphics Data System (GDSII) or any other suitable format.

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.Semiconductor manufacturing system 1720 may include any of various suitable elements configured to manufacture integrated circuits. This may include, for example, elements for depositing semiconductor materials (e.g., on a wafer, which may include masking), removing materials, changing the shape of deposited materials, modifying materials (e.g., by doping materials or modifying dielectric constants using ultraviolet processing), etc. Semiconductor manufacturing system 1720 may also be configured to perform various tests of manufactured circuits for proper operation.

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 circuit 1730 is configured to operate according to a circuit design specified by design information 1715, which may include performing any of the functionality described herein. For example, integrated circuit 1730 may include any of various elements shown or described herein. Furthermore, integrated circuit 1730 may be configured to perform various functions described herein in conjunction with other components.

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)

Einrichtung, umfassend: eine Cache-Speicherschaltung, die einen Cache-Speicher mit einer Vielzahl von Cache-Zeilen einschließt; und eine Cache-Steuerungsschaltung, die konfiguriert ist zum: Empfangen einer Anforderung, einen Abschnitt der Cache-Speicherschaltung, der aktuell verwendet wird, neu zuzuweisen, wobei die Anforderung einen Adressbereich identifiziert, der einer oder mehreren der Vielzahl von Cache-Zeilen entspricht; und als Reaktion auf die Anforderung, Umwandeln der einen oder mehreren Cache-Zeilen in direkt adressierbare Direktzugriffsspeicher (RAM) durch Ausschließen der einen oder mehreren Cache-Zeilen aus Cache-Vorgängen.Apparatus comprising: a cache memory circuit including a cache memory having a plurality of cache lines; and a cache control circuit configured to: receive a request to reallocate a portion of the cache memory circuit that is currently in use, the request identifying an address range corresponding to one or more of the plurality of cache lines; and in response to the request, converting the one or more cache lines to directly addressable random access memory (RAM) by excluding the one or more cache lines from caching operations. Einrichtung nach Anspruch 1, wobei die Cache-Steuerungsschaltung ferner konfiguriert ist zum: Unterstützen eines virtuellen Echtzeitkanals für Speichertransaktionen in dem identifizierten Adressbereich; und Priorisieren einer Speichertransaktion, die über den virtuellen Echtzeitkanal empfangen wird, über eine Speichertransaktion, die über einen virtuellen Volumenkanal empfangen wird.Facility according to Claim 1 wherein the cache control circuit is further configured to: support a real-time virtual channel for memory transactions in the identified address range; and prioritize a memory transaction received over the real-time virtual channel over a memory transaction received over a volume virtual channel. Einrichtung nach Anspruch 1, wobei die Cache-Steuerungsschaltung ferner konfiguriert ist zum: Bestimmen, dass der Adressbereich in einem sicheren Zugriffsbereich eingeschlossen ist; und als Reaktion auf die Bestimmung, Ignorieren einer Speichertransaktion in dem Adressbereich von einem Agenten, der nicht autorisiert ist, auf den sicheren Zugriffsbereich zuzugreifen.Facility according to Claim 1 wherein the cache control circuit is further configured to: determine that the address range is included in a secure access range; and in response to the determination, ignoring a memory transaction in the address range from an agent that is not authorized to access the secure access range. Einrichtung nach Anspruch 1, wobei die Cache-Steuerungsschaltung weiterhin konfiguriert ist, um die eine oder die mehreren Cache-Zeilen zu spülen, bevor die eine oder die mehreren Cache-Zeilen in den direkt adressierbaren RAM umgewandelt werden.Facility according to Claim 1 wherein the cache control circuit is further configured to flush the one or more cache lines before converting the one or more cache lines to the directly addressable RAM. Einrichtung nach Anspruch 1, wobei die Cache-Steuerungsschaltung ferner konfiguriert ist zum: als Reaktion darauf, dass Daten in einer gültigen Cache-Zeile geschrieben werden, Ausgeben einer Rückschreibanforderung für die gültige Cache-Zeile; und Ausschließen der einen oder der mehreren Cache-Zeilen aus Rückschreibanforderungen.Facility according to Claim 1 wherein the cache control circuit is further configured to: in response to data being written to a valid cache line, output a Writeback request for the valid cache line; and excluding the one or more cache lines from writeback requests. Einrichtung nach Anspruch 1, wobei die Cache-Steuerungsschaltung ferner konfiguriert ist zum: Empfangen einer unterschiedlichen Anforderung, um den Abschnitt des Cache-Speichers von dem direkt adressierbaren RAM abzuweisen; und als Reaktion auf die unterschiedliche Anforderung, Einschließen der einen oder mehreren Cache-Zeilen in Cache-Vorgängen, ohne Daten zu kopieren, die in dem direkt adressierbaren RAM gespeichert sind, während die eine oder die mehreren cache-Leitungen neu zugewiesen wurden.Facility according to Claim 1 wherein the cache control circuit is further configured to: receive a different request to declassify the portion of cache memory from the directly addressable RAM; and in response to the different request, including 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. Einrichtung nach Anspruch 6, wobei die Cache-Steuerungsschaltung weiterhin konfiguriert ist, 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.Facility according to Claim 6 wherein the cache control circuit is further configured to generate an error in response to a memory transaction in the directly addressable RAM received after rejecting the portion of the cache memory. Verfahren, umfassend: Empfangen, durch eine Cache-Steuerungsschaltung, einer Anforderung, einen Abschnitt einer Cache-Speicherschaltung, die aktuell verwendet wird, einem direkt adressierbaren Adressbereich neu zuzuweisen, wobei die Anforderung einen inaktiven Adressbereich identifiziert; basierend auf dem identifizierten Adressbereich, Auswählen einer oder mehrerer Cache-Zeilen der Cache-Speicherschaltung, um umzuwandeln; und Setzen, durch die Cache-Steuerungsschaltung, einer jeweiligen Angabe für eine der ausgewählten Cache-Zeilen, um die ausgewählten Cache-Zeilen von weiteren Cache-Vorgängen auszuschließen.A method comprising: receiving, by a cache control circuit, a request to reassign a portion of a cache memory circuit that is currently in use to a directly addressable address range, the request identifying an inactive address range; based on the identified address range, selecting one or more cache lines of the cache memory circuit to convert; and setting, by the cache control circuit, a respective indication for one of the selected cache lines to exclude the selected cache lines from further caching operations. Verfahren nach Anspruch 8, wobei das Setzen der jeweiligen Angabe das Setzen, durch die Cache-Steuerungsschaltung, eines Echtzeitspeicherindikators einschließt, wobei der Echtzeitspeicherindikator angibt, dass die ausgewählten Cache-Zeilen Echtzeittransaktionen mit höheren Prioritäten als Volumentransaktionen zugeordnet sind.Procedure according to Claim 8 , wherein setting the respective indication includes setting, by the cache control circuit, a real-time storage indicator, the real-time storage indicator indicating that the selected cache lines are associated with real-time transactions having higher priorities than volume transactions. Verfahren nach Anspruch 8, ferner umfassend, als Reaktion auf das Bestimmen, dass der identifizierte Adressbereich Teil eines gesicherten Zugriffsbereichs ist, Ignorieren, durch die Cache-Steuerungsschaltung, einer Speichertransaktion für den identifizierten Adressbereich von einem Agenten, der nicht autorisiert ist, auf den gesicherten Zugriffsbereich zuzugreifen.Procedure according to Claim 8 further comprising, in response to determining that the identified address range is part of a secured access range, ignoring, by the cache control circuitry, a memory transaction for the identified address range from an agent that is not authorized to access the secured access range. Verfahren nach Anspruch 8, ferner umfassend, durch die Cache-Steuerungsschaltung, Spülen der ausgewählten Cache-Zeilen vor dem Setzen der jeweiligen Angaben.Procedure according to Claim 8 further comprising, by the cache control circuit, flushing the selected cache lines prior to setting the respective indications. Verfahren nach Anspruch 8, wobei Daten, die an eine besondere Adresse geschrieben werden, die aktuell in der Cache-Speicherschaltung zwischengespeichert ist, an die besondere Adresse in einem Systemspeicher zurückgeschrieben werden; und wobei Daten, die an eine unterschiedliche Adresse geschrieben werden, die sich in dem identifizierten Adressbereich befindet, nicht an den Systemspeicher zurückgeschrieben werden.Procedure according to Claim 8 wherein data written to a particular address currently cached in the cache memory circuit is written back to the particular address in a system memory; and wherein data written to a different address located in the identified address range is not written back to the system memory. Verfahren nach Anspruch 8, ferner umfassend: Empfangen, durch die Cache-Steuerungsschaltung, einer unterschiedlichen Anforderung, um den Abschnitt der Cache-Speicherschaltung von dem direkt adressierbaren Adressbereich abzuweisen; und als Reaktion auf die unterschiedliche Anforderung, Einschließen der ausgewählten Cache-Zeilen in Cache-Vorgängen, wobei Daten, die in dem direkt adressierbaren Adressbereich gespeichert sind, während die ausgewählten Cache-Zeilen neu zugewiesen wurden, ohne Rückschreibvorgang in eine Systemspeicherschaltung überschrieben werden.Procedure according to Claim 8 further comprising: receiving, by the cache control circuit, a different request to declassify the portion of the cache memory circuit from the directly addressable address space; and in response to the different request, including the selected cache lines in cache operations, wherein data stored in the directly addressable address space while the selected cache lines were being reallocated is overwritten without a write-back operation to a system memory circuit. Verfahren nach Anspruch 13, ferner umfassend das Zurückgeben, durch die Cache-Steuerungsschaltung, eines Standardwerts als Reaktion auf eine Leseanforderung für eine Adresse in dem direkt adressierbaren Adressbereich, der nach dem Zuweisen des Abschnitts der Cache-Speicherschaltung empfangen wird.Procedure according to Claim 13 further comprising returning, by the cache control circuit, a default value in response to a read request for an address in the directly addressable address range received after allocating the portion of the cache memory circuit. System, umfassend: eine Cache-Speicherschaltung, die einen Cache-Speicher mit einer Vielzahl von Wegen einschließt; einen Prozessor, der konfiguriert ist, um Speicheranforderungen unter Verwendung einer Adressenkarte auszugeben, die aktive und inaktive Adressbereiche einschließt; und eine Cache-Steuerungsschaltung, die konfiguriert ist zum: Empfangen einer Anforderung von dem Prozessor, um einen Abschnitt des Cache-Speichers als direkt adressierbaren Speicher neu zuzuweisen, wobei die Anforderung einen inaktiven Adressbereich identifiziert; basierend auf der Anforderung, Auswählen eines Abschnitts der Wege, um umzuwandeln; und Zuordnen des ausgewählten Abschnitts von Wegen zur Verwendung in dem identifizierten Adressbereich.A system comprising: a cache memory circuit including a cache memory having a plurality of ways; a processor configured to issue memory requests using an address map including active and inactive address ranges; and a cache control circuit configured to: receive a request from the processor to reallocate a portion of the cache memory as directly addressable memory, the request identifying an inactive address range; based on the request, selecting a portion of the ways to convert; and allocating the selected portion of ways for use in the identified address range. System nach Anspruch 15, wobei zum Umwandeln des ausgewählten Abschnitts von Wegen die Cache-Steuerungsschaltung konfiguriert ist, um jeweilige Angaben in Cache-Tags, die besonderen Cache-Zeilen entsprechen, die in dem ausgewählten Abschnitt enthalten sind, zu setzen, wobei die jeweiligen Angaben die besonderen Cache-Zeilen aus der Verwendung als Cache-Speicher entfernen.System according to Claim 15 , wherein the cache control circuit is configured to convert the selected section of paths is to set respective indications in cache tags corresponding to particular cache lines contained in the selected section, the respective indications removing the particular cache lines from use as cache storage. System nach Anspruch 16, wobei die Cache-Steuerungsschaltung weiterhin konfiguriert ist, um jeweilige Echtzeitindikatoren in den Cache-Tags, die den besonderen Cache-Zeilen entsprechen, zu setzen, wobei die Echtzeitindikatoren angeben, dass die besonderen Cache-Zeilen Echtzeittransaktionen mit höheren Prioritäten als Volumentransaktionen zugeordnet sind.System according to Claim 16 wherein the cache control circuitry is further configured to set respective real-time indicators in the cache tags corresponding to the particular cache lines, the real-time indicators indicating that the particular cache lines are associated with real-time transactions having higher priorities than volume transactions. System nach Anspruch 15, wobei die Cache-Steuerungsschaltung ferner konfiguriert ist, um als Reaktion auf das Empfangen einer Anforderung, den direkt adressierbaren Speicher abzuweisen, den ausgewählten Abschnitt von Wegen in Cache-Vorgängen einzuschließen, wobei Daten, die in dem direkt adressierbaren Speicher gespeichert sind, während der ausgewählte Abschnitt von Wegen neu zugewiesen wurde, als Reaktion auf die Anforderung, den direkt adressierbaren Speicher abzuweisen, nicht verschoben wird.System according to Claim 15 wherein the cache control circuit is further configured to include the selected portion of ways in caching operations in response to receiving a request to allocate the directly addressable memory, wherein data stored in the directly addressable memory while the selected portion of ways is being reallocated is not moved in response to the request to allocate the directly addressable memory. System nach Anspruch 15, wobei die Cache-Steuerungsschaltung weiterhin konfiguriert ist, um Cache-Zeilen im ausgewählten Abschnitt von Wegen vor dem Zuordnen des ausgewählten Abschnitts von Wegen zur Verwendung in dem identifizierten Adressbereich zu spülen.System according to Claim 15 wherein the cache control circuit is further configured to flush cache lines in the selected portion of ways prior to allocating the selected portion of ways for use in the identified address range. System nach Anspruch 15, wobei der Abschnitt der Wege eine Hälfte eines besonderen Weges ist.System according to Claim 15 , where the section of paths is one half of a special path.
DE112022003363.0T 2021-08-31 2022-07-28 DYNAMIC ALLOCATION OF CACHE MEMORY AS RAM Pending DE112022003363T5 (en)

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)

* Cited by examiner, † Cited by third party
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

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