-
Hintergrund
-
Das Vorliegende betrifft integrierte Schaltungssysteme und insbesondere Verfahren und Vorrichtungen zur Verbesserung der Leistungsfähigkeit integrierter Schaltungssysteme unter Verwendung von programmierbarer Logik.
-
Programmierbare Logikschaltungen können durch einen Benutzer programmiert werden, um eine gewünschte benutzerdefinierte Logikfunktion zu implementieren. In einem typischen Szenario verwendet ein Logikentwickler computergestützte Entwurfswerkzeuge, um eine benutzerdefinierte Logikschaltung zu entwerfen. Wenn der Entwurfsprozess beendet ist, erzeugen die computergestützten Entwurfswerkzeuge Konfigurationsdaten. Die Konfigurationsdaten werden dann in Konfigurationsspeicherelemente geladen, die die programmierbaren Logikschaltungen zum Durchführen der Funktionen der benutzerdefinierten Logikschaltung konfigurieren.
-
Programmierbare Einrichtungen können zum Coverarbeiten in Big-Data- oder Fast-Data-Anwendungen verwendet werden. Programmierbare Einrichtungen können zum Beispiel bei Anwendungsbeschleunigungsaufgaben in einem Rechenzentrum verwendet werden und können während des Rechenzentrumbetriebs umprogrammiert werden, um unterschiedliche Aufgaben durchzuführen. Programmierbare Logik ist jedoch nicht verwendet worden, um adaptive Speicherlösungen in einer integrierten Schaltung oder einem integrierten Schaltungs-Package zu ermöglichen. Bestehende Lösungen zum Entwickeln einer Anwendung, die programmierbare Logik wirksam einsetzt, basieren auf einem High-Level-Synthese(HLS)-Entwurfsfluss, der eine Hardwarebeschreibung basierend auf einem High-Level-Synthese-Quellcode erzeugt. Derartige Lösungen erfordern jedoch, dass die Anwendungsentwickler die zugrundeliegende Hardwarearchitektur verstehen und die gesamte Anwendung unter Verwendung des HLS-Werkzeugflusses abbilden.
-
Es liegt in diesem Zusammenhang, dass die hierin beschriebenen Ausführungsformen entstehen.
-
Figurenliste
-
- 1 ist ein Diagramm eines veranschaulichenden Systems, das einen Prozessor und assoziierte konfigurierbare Speicherassistenzschaltungen gemäß einer Ausführungsform beinhaltet.
- 2 ist ein Diagramm eines veranschaulichenden Systems, das mehrere CPU-Cluster und assoziierte konfigurierbare Speicherassistenzschaltungen gemäß einer Ausführungsform beinhaltet.
- 3 ist ein Diagramm eines programmierbaren Logikschaltkreises gemäß einer Ausführungsform.
- 4 ist ein Diagramm eines Schaltungsentwurfssystems, das zum Entwerfen integrierter Schaltungen verwendet werden kann, gemäß einer Ausführungsform.
- 5 ist ein Diagramm von veranschaulichenden CAD-Werkzeugen (CAD: Computer-Aided Design - computergestützter Entwurf), die in einem Schaltungsentwurfssystem gemäß einer Ausführungsform verwendet werden können.
- 6 ist ein Flussdiagramm von veranschaulichenden Schritten zum Implementieren konfigurierbarer Speicherassistenzschaltungen zur Kompilierzeit gemäß einer Ausführungsform.
- 7 ist ein Flussdiagramm von veranschaulichenden Schritten zum Laden einer Anwendung und zum selektiven Programmieren der konfigurierbaren Speicherassistenzschaltungen zur Laufzeit gemäß einer Ausführungsform.
- 8 ist ein Diagramm eines veranschaulichenden Systems, das zum Ausführen mehrerer Anwendungen verwendet werden kann, die jeweils Speicherdienste nutzen, die zu unterschiedlichen konfigurierbaren Speicherassistenzschaltungen abgebildet sind, gemäß einer Ausführungsform.
-
Ausführliche Beschreibung
-
Die vorliegenden Ausführungsformen betreffen integrierte Schaltungssysteme und insbesondere Entwurfswerkzeuge für integrierte Schaltungen, die dazu ausgelegt sind, Speicherzugriffsmuster, die durch einen Prozessor durchgeführt werden, zu identifizieren und die identifizierten Speicherzugriffsmuster mit einer ausgewählten Speicherzugriffsvorlage in einer Bibliothek mit vorbestimmten Speicherzugriffsvorlagen abzugleichen. Die ausgewählte Speicherzugriffsvorlage kann dann parametrisiert und synthetisiert werden, um eine Konfigurationsdatei für eine programmierbare Speicherassistenzschaltung zu erzeugen, die zum Beschleunigen von Speicherzugriffsoperationen für den Prozessor verwendet wird.
-
Während der Laufzeit kann ein Betriebssystem eine Anwendung laden, die durch die Speicherassistenzschaltung beschleunigt werden kann. Das Betriebssystem kann die Kompatibilität zwischen der erforderlichen Speicherassistenzschaltung und den aktuellen Hardwareressourcen auf dem System bestimmen, Laufzeitentscheidungen zur Abbildung von Speicherzugriffsanforderungen zu verfügbaren Speicherassistenzschaltungen treffen und verschiedene Arbeitslasten priorisieren. Dieses Verfahren ermöglicht Anwendungsentwicklern, programmierbare Speicherassistenzschaltungen zur Verbesserung der Leistungsfähigkeit auszunutzen, ermöglicht In-System-Upgrades und kann auch bei der Verbesserung der Speichersicherheit helfen.
-
Der Fachmann wird erkennen, dass die vorliegende Ausführungsbeispiele ohne manche oder alle dieser spezifischen Einzelheiten in die Praxis umgesetzt werden können. In anderen Fällen sind allgemein bekannte Operationen nicht im Einzelnen beschrieben worden, um die vorliegenden Ausführungsformen nicht unnötig unklar zu machen.
-
1 ist ein Diagramm eines veranschaulichenden Systems, wie etwa eines Systems 92, das einen Prozessor 80, einen Eingabe-Ausgabe(EA)-Schaltkreis 84 und assoziierte konfigurierbare Speicherassistenzschaltungen beinhaltet. Der Prozessor 80 kann eine Zentralverarbeitungseinheit (CPU: Central Processing Unit), eine Grafikverarbeitungseinheit (GPU: Graphics Processing Unit), ein Digitalsignalprozessor (DSP), ein Netzwerkprozessor oder andere geeignete Arten von Verarbeitungsschaltkreis sein. Allgemein kann das System 92 einen oder mehrere Prozessoren beinhalten, wie durch die Auslassungspunkte 81 angegeben.
-
Das System 92 kann ferner einen Cache-Speicher, wie etwa einen Level-1(L1)-Cache-Speicher 82-1, einen Level-2(L2)-Cache-Speicher 82-2 und einen Level-3(L3)-Cache-Speicher 82-3, beinhalten. Allgemein kann das System 92 beliebige geeignete Levels von Cache-Speicher beinhalten, wie durch die Auslassungspunkte 101 angegeben. Der L1-Speicher 82-1 ist allgemein näher am Prozessor 80 gebaut als der L2-Speicher 82-2, somit findet das Zugreifen auf den L1-Speicher 82-1 gewöhnlich schneller als das Zugreifen auf den L2-Speicher 82-2 statt. Gleichermaßen ist der L2-Speicher 82-2 allgemein näher am Prozessor 80 gebaut als der L3-Speicher 82-3, somit findet das Zugreifen auf den L2-Speicher 82-2 gewöhnlich schneller als das Zugreifen auf den L3-Speicher 82-3 statt. Der Speicher 82 kann zum temporären Speichern von Daten verwendet werden, sodass anschließende Anforderungen vom Prozessor 80 schneller angeboten werden können, im Gegensatz zu Abrufen der Daten aus einem Hauptspeicher, der bezüglich des Cache-Speichers viel langsamer ist.
-
Gemäß einer Ausführungsform kann das System 92 konfigurierbare Speicherassistenzschaltungen beinhalten, um zu erleichtern, wie der Prozessor 80 mit den verschiedenen Speicher-Caches interagiert. In dem Beispiel von 1 können Operationen am L1-Speicher 82-1 optional unter Verwendung einer konfigurierbaren L1-Speicherassistenzschaltung 100-1 beschleunigt werden; Operationen am L2-Speicher 82-2 können optional unter Verwendung einer konfigurierbaren L2-Speicherassistenzschaltung 100-2 beschleunigt werden; und Operationen am L3-Speicher 82-3 können funktionsfähig unter Verwendung einer Speicherassistenzschaltung 100-3 beschleunigt werden. Die Speicherassistenzschaltungen 100 können unter Verwendung eines programmierbaren („Soft“) Logikschaltkreises implementiert werden und werden manchmal als rekonfigurierbare, adaptierbare oder anpassbare Speicherassistenzschaltungen bezeichnet. Die Speicherassistenzschaltungen 100 können basierend auf Anwendungsnutzungsprofilen dynamisch rekonfiguriert werden.
-
Die Komponenten des Systems 92 können als Teil eines einzelnen integrierten Schaltungs-Die (als ein Systemauf-Chip oder „SoC“ (System-on-Chip)), als mehrere integrierte Schaltungschips in einem einzelnen Mehrchip-Package, als Teile verschiedener Packages auf einer Leiterplatte, als Teile verschiedener Leiterplatten in einem verteilten System usw. ausgebildet sein. Im Allgemeinen kann das System 92 ein digitales System oder ein hybrides System sein, das sowohl digitale als auch analoge Teilsysteme beinhaltet. Das System 92 kann in einer breiten Vielfalt von Anwendungen als Teil eines größeren Rechensystems verwendet werden, das unter anderem Folgendes beinhalten kann: ein Rechenzentrum, ein Computer-Networking-System, ein Daten-Networking-System, ein Digitalsignalverarbeitungssystem, ein Grafikverarbeitungssystem, ein Videoverarbeitungssystem, ein Computervisionsverarbeitungssystem, eine zellulare Basisstation, ein virtuelles Realitätssystem oder erweitertes Realitätssystem, eine Netzwerkfunktionenvirtualisierungsplattform, ein künstliches neuronales Netzwerk, ein autonomes Fahrsystem, eine Kombination von zumindest manchen dieser Systeme und/oder andere geeignete Arten von Rechensystemen.
-
Das System 92 kann mehr als einen Prozessor oder mehr als eine CPU beinhalten. 2 ist ein Diagramm, das das System 92 mit mehreren CPU-Clustern 200 darstellt. Wie in 2 dargestellt, kann das System 92 einen ersten CPU-Cluster 200-1 und einen zweiten CPU-Cluster 200-2 beinhalten. Der erste CPU-Cluster 200-1 kann eine erste CPU 80A und eine zweite CPU 80B beinhalten. Die erste CPU 80A kann auf einen L1-Cache 82A-1 zugreifen, der durch eine Speicherassistenzschaltung 100A-1 beschleunigt wird. Die zweite CPU 80B kann auf einen L1-Cache 82B-1 zugreifen, der durch eine Speicherassistenzschaltung 100B-1 beschleunigt wird. Jeder L1-Cache ist allgemein einer einzigen CPU dediziert. Beide CPUs 80A und 80B können auf den L2-Cache 82-2 zugreifen, der durch die Speicherassistenzschaltung 100-2 beschleunigt wird (d. h. der L2-Cache 82-2 kann zwischen den CPUs 80A und 80B gemeinsam genutzt werden).
-
Der zweite CPU-Cluster 200-2 kann eine oder mehrere zusätzliche CPUs beinhalten. In dem Beispiel von 2 können beide CPU-Cluster 200-1 und 200-2 auf den L3-Cache 82-3 zugreifen, der durch die Speicherassistenzschaltung 100-3 beschleunigt wird (d. h. der L3-Cache 82-3 kann zwischen mindestens zwei verschiedenen CPU-Clustern gemeinsam genutzt werden). Die Anordnung von 2, bei der die beiden CPUs im Cluster 200-1 einen gemeinsamen L2-Cache gemeinsam nutzen und bei der zwei verschiedene CPU-Cluster einen gemeinsamen L3-Cache gemeinsam nutzen, ist lediglich veranschaulichend. Falls gewünscht, kann ein L2-Cache einer einzelnen CPU dediziert sein oder kann zwischen drei oder mehr CPUs oder zwei oder mehr CPU-Clustern gemeinsam genutzt werden, ein L3-Cache kann zwischen drei oder mehr CPU-Clustern gemeinsam genutzt werden usw.
-
Wie oben beschrieben, können die Speicherassistenzschaltungen, die zwischen der Speicher-Cache-Hierarchie der Prozessoren verteilt sind, unter Verwendung eines programmierbaren Logikschaltkreises implementiert werden. Wie in 3 dargestellt, kann eine Speicherassistenzschaltung 100 eine programmierbare Logik 18 beinhalten und Vernetzungsressourcen 16, wie etwa globale und lokale vertikale und horizontale leitfähige Leitungen und Busse, können zum Routen von Signalen innerhalb der Schaltung 100 verwendet werden. Die Vernetzungsressourcen 16 beinhalten feste Interconnects (leitfähige Leitungen) und programmierbare Interconnects (d. h. programmierbare Verbindungen zwischen jeweiligen festen Interconnects). Die programmierbare Logik 18 kann einen kombinatorischen und sequenziellen Logikschaltkreis beinhalten. Die programmierbare Logik 18 kann dazu ausgelegt sein, eine benutzerdefinierte Logikfunktion durchzuführen. Die programmierbare Logik 18 kann in Gebiete mit Funktionsblöcken organisiert sein, die manchmal als Logikarrayblöcke („LABs“) bezeichnet werden. Funktionsblöcke, wie etwa LABs, können kleinere programmierbare Gebiete (z. B. Logikelemente, konfigurierbare Logikblöcke oder adaptive Logikmodule) beinhalten, die Eingangssignale empfangen und benutzerdefinierte Funktionen an den Eingangssignalen durchführen, um Ausgangssignale zu erzeugen.
-
Die programmierbare Logik 18 kann Speicherelemente 20 enthalten, die mit Konfigurationsdaten (auch Programmierdaten genannt) geladen werden können. Nachdem sie geladen sind, können die Speicherelemente 20 jeweils ein entsprechendes statisches Steuerungsausgangssignal bereitstellen, das den Zustand einer assoziierten Logikkomponente in der programmierbaren Logik 18 steuert. Typischerweise werden die Speicherelementausgangssignale zum Steuern der Gates von Metalloxidhalbleiter(MOS)-Transistoren verwendet. Manche der Transistoren können p-Kanal-Metalloxidhalbleiter(PMOS)-Transistoren sein. Viele dieser Transistoren können n-Kanal-Metalloxidhalbleiter(NMOS)-Durchlasstransistoren in programmierbaren Komponenten, wie etwa Multiplexern, sein. Wenn ein Speicherelementausgang High ist, wird ein NMOS-Durchlasstransistor, der durch dieses Speicherelement gesteuert wird, eingeschaltet, um Logiksignale von seinem Eingang zu seinem Ausgang durchzulassen. Wenn der Speicherelementausgang Low ist, ist der Durchlasstransistor ausgeschaltet und lässt keine Logiksignale durch.
-
Ein typisches Speicherelement 20 wird aus einer Anzahl von Transistoren gebildet, die dazu ausgelegt sind, kreuzgekoppelte Inverter zu bilden. Andere Anordnungen (z. B. Zellen mit mehr verteilten inverterartigen Schaltungen) können auch verwendet werden. Bei einem geeigneten Ansatz wird eine integrierte CMOS(Complementary Metal-Oxide-Semiconductor - komplementärer Metalloxidhalbleiter)-Schaltungstechnologie verwendet, um die Speicherelemente 20 zu bilden, somit sind CMOS-basierte Speicherelementimplementierungen hierin als ein Beispiel beschrieben. Im Zusammenhang von programmierbaren integrierten Schaltungen speichern die Speicherelemente Konfigurationsdaten und werden daher manchmal als Konfigurations-Direktzugriffsspeicher(CRAM)-Zellen bezeichnet.
-
Es kann eine Herausforderung sein, einen integrierten Schaltungsentwurf, der programmierbare Logik beinhaltet, zu entwerfen und zu implementieren. Schaltungsentwickler verwenden daher allgemein Logikentwurfssysteme, die auf CAD(Computer-Aided Design)-Werkzeugen basieren, um beim Entwerfen von Logikschaltungen unterstützt zu werden. Ein Logikentwurfssystem kann einem Logikentwickler dabei helfen, komplexe Schaltungen für ein System zu entwerfen und zu testen. Ein veranschaulichendes Schaltungsentwurfssystem 300 gemäß einer Ausführungsform ist in 4 dargestellt. Das Schaltungsentwurfssystem 300 kann auf einem Rechengerät für einen integrierten Schaltungsentwurf implementiert werden. Das System 300 kann zum Beispiel auf einem oder mehreren Prozessoren ansässig sein, wie etwa Personal-Computer, Arbeitsstationen usw. Der eine oder die mehreren Prozessoren können unter Verwendung eines Netzwerks (z. B. eines lokalen oder großflächigen Netzwerks) verknüpft sein. Der Speicher in diesen Computern oder externe Speicher- und Speicherungseinrichtungen, wie etwa interne und/oder externe Festplatten, können zum Speichern von Anweisungen und Daten verwendet werden.
-
Softwarebasierte Komponenten, wie etwa computergestützte Entwurfswerkzeuge 320 und Datenbanken 330, befinden sich auf dem System 300. Während des Betriebs wird ausführbare Software, wie etwa die Software der computergestützten Entwurfswerkzeuge 320, auf dem einen oder den mehreren Prozessoren des Systems 300 ausgeführt. Die Datenbanken 330 werden zum Speichern von Daten für den Betrieb des Systems 300 verwendet. Allgemein können Software und Daten auf nichtflüchtigen computerlesbaren Speicherungsmedien (z. B. greifbaren computerlesbaren Speicherungsmedien) gespeichert sein. Der Softwarecode kann manchmal als Software, Daten, Programmanweisungen, Anweisungen, Scripts oder Code bezeichnet werden. Die nichtflüchtigen computerlesbaren Speicherungsmedien können Computerspeicherchips wie etwa Nurlesespeicher (ROM: Read-Only Memory), beständigen Speicher wie etwa beständigen Direktzugriffsspeicher (NVRAM: Non-Volatile Random-Access Memory), ein oder mehrere Festplattenlaufwerke (z. B. magnetische Laufwerke oder Festkörperlaufwerke), ein oder mehrere entfernbare Flash-Laufwerke oder andere entfernbare Medien, CDs (Compact Discs), DVDs (Digital Versatile Discs), Blu-Ray-Discs (BDs), andere optische Medien, Disketten, Bänder oder eine oder mehrere beliebige andere geeignete Speicher- oder Speicherungseinrichtungen beinhalten.
-
Auf den nichtflüchtigen computerlesbaren Speicherungsmedien gespeicherte Software kann auf dem System 300 ausgeführt werden. Wenn die Software des Systems 300 installiert ist, weist die Speicherung des Systems 300 Anweisungen und Daten auf, die bewirken, dass das Rechengerät im System 300 verschiedene Verfahren oder Prozesse ausführt. Wenn diese Prozesse durchgeführt werden, ist das Rechengerät dazu ausgelegt, die Funktionen des Schaltungsentwurfssystems 300 zu implementieren.
-
Die CAD(Computer Aided Design)-Werkzeuge 320, von denen manche oder alle manchmal zusammengefasst als ein CAD-Werkzeug, ein Schaltungsentwurfswerkzeug oder ein EDA(Electronic Design Automation - elektronische Entwurfsautomatisierung)-Werkzeug bezeichnet werden, können durch einen einzigen Anbieter oder durch mehrere Anbieter bereitgestellt werden. Die Werkzeuge 320 können als eine oder mehrere Suites von Werkzeugen (z. B. eine Compiler-Suite zum Durchführen von Aufgaben, die mit dem Implementieren eines Schaltungsentwurfs assoziiert sind) und/oder als eine oder mehrere separate Softwarekomponenten (Werkzeuge) bereitgestellt werden. Die Datenbank(en) 330 können eine oder mehrere Datenbanken beinhalten, auf die nur ein spezielles Werkzeug oder spezielle Werkzeuge zugreifen, und können eine oder mehrere gemeinsam genutzte Datenbanken beinhalten. Auf gemeinsam genutzte Datenbanken können mehrere Werkzeuge zugreifen. Ein erstes Werkzeug kann zum Beispiel Daten für ein zweites Werkzeug in einer gemeinsam genutzten Datenbank speichern. Das zweite Werkzeug kann auf die gemeinsam genutzte Datenbank zugreifen, um die durch das erste Werkzeug gespeicherten Daten abzurufen. Dies ermöglicht einem Werkzeug, Informationen zu einem anderen Werkzeug weiterzugeben. Werkzeuge können auch Informationen untereinander weitergeben, ohne Informationen in einer gemeinsam genutzten Datenbank zu speichern, falls gewünscht.
-
Die veranschaulichenden computergestützten Entwurfswerkzeuge 320, die in einem Schaltungsentwurfssystem, wie etwa dem Schaltungsentwurfssystem 300 von 4, verwendet werden können, um programmierbare Speicherassistenzschaltungen 100 zu entwerfen, sind in 5 dargestellt. Der Entwurfsprozess kann mit der Formulierung von Funktionsspezifikationen des integrierten Schaltungsentwurfs (z. B. eine Funktions- oder Verhaltensbeschreibung des integrierten Schaltungsentwurfs) beginnen. Ein Schaltungsentwickler kann den funktionellen Betrieb eines gewünschten Schaltungsentwurfs unter Verwendung von Entwurfs- und Einschränkungseingabewerkzeugen 464 spezifizieren.
-
Die Entwurfs- und Einschränkungseingabewerkzeuge 464 können verwendet werden, um einem Schaltungsentwickler zu ermöglichen, einen gewünschten Schaltungsentwurf unter Verwendung eines beliebigen geeigneten Formats bereitzustellen. Die Entwurfs- und Einschränkungseingabewerkzeuge 464 können zum Beispiel Werkzeuge beinhalten, die dem Schaltungsentwickler ermöglichen, einen Schaltungsentwurf unter Verwendung von Wahrheitstabellen einzugeben. Wahrheitstabellen können unter Verwendung von Textdateien oder Timing-Diagrammen spezifiziert werden und können aus einer Bibliothek importiert werden. Die Wahrheitstabellen-Schaltungsentwurfs- und -Einschränkungseingabe kann für einen Teil einer großen Schaltung oder für eine gesamte Schaltung verwendet werden.
-
Als ein anderes Beispiel können die Entwurfs- und Einschränkungseingabewerkzeuge 464 ein schematisches Erfassungswerkzeug beinhalten. Ein schematisches Erfassungswerkzeug kann dem Schaltungsentwickler ermöglichen, integrierte Schaltungsentwürfe aus Bestandteilen, wie etwa Logikgattern und Gruppen von Logikgattern, visuell zu konstruieren. Bibliotheken mit vorbestehenden integrierten Schaltungsentwürfen können verwendet werden, um zu ermöglichen, dass ein gewünschter Teil eines Entwurfs mit den schematischen Erfassungswerkzeugen importiert wird.
-
Falls gewünscht, können die Entwurfs- und Einschränkungseingabewerkzeuge 464 dem Schaltungsentwickler ermöglichen, dem Schaltungsentwurfssystem 300 einen Schaltungsentwurf-Softwareanwendungscode unter Verwendung einer Hardwarebeschreibungssprache, wie etwa Verilog HDL (Verilog Hardware Description Language - Verilog-Hardwarebeschreibungssprache), VHDL (Very High Speed Integrated Circuit Hardware Description Language - sehr schnelle Hardwarebeschreibungssprache für integrierte Schaltungen), SystemVerilog, oder einer Schaltungsbeschreibungssprache höherer Ebene, wie etwa OpenCL, Systeme, C/C++, um nur einige zu nennen, bereitzustellen. Blöcke von Code können aus benutzerverwalteten oder kommerziellen Bibliotheken importiert werden, falls gewünscht.
-
Nachdem der Entwurf unter Verwendung der Entwurfs- und Einschränkungseingabewerkzeuge 464 eingegeben wurde, können Verhaltenssimulationswerkzeuge 472 verwendet werden, um die Funktionalität des Schaltungsentwurfs zu simulieren. Falls die Funktionalität des Entwurfs unvollständig oder fehlerhaft ist, kann der Schaltungsentwickler Änderungen am Schaltungsentwurf unter Verwendung der Entwurfs- und Einschränkungseingabewerkzeuge 464 vornehmen. Der funktionelle Betrieb des neuen Schaltungsentwurfs kann unter Verwendung der Verhaltenssimulationswerkzeuge 472 verifiziert werden, bevor Syntheseoperationen unter Verwendung der Werkzeuge 474 durchgeführt wurden. Simulationswerkzeuge, wie etwa die Verhaltenssimulationswerkzeuge 472, können auch bei anderen Stufen im Entwurfsfluss verwendet werden, falls gewünscht (z. B. nach der Logiksynthese). Die Ausgabe der Verhaltenssimulationswerkzeuge 472 kann dem Schaltungsentwickler in einem beliebigen geeigneten Format (z. B. Wahrheitstabellen, Timing-Diagrammen usw.) bereitgestellt werden.
-
Sobald der funktionelle Betrieb des Schaltungsentwurfs als zufriedenstellend bestimmt wurde, können die Logiksynthese- und Optimierungswerkzeuge 474 eine Netzliste auf Gate-Ebene des Schaltungsentwurfs zum Beispiel unter Verwendung von Gates aus einer speziellen Bibliothek erzeugen, die sich auf einen angezielten Prozess bezieht, der durch eine Fertigungsanlage unterstützt wird, die zum Produzieren der integrierten Schaltung ausgewählt wurde. Alternativ dazu können die Logiksynthese- und Optimierungswerkzeuge 474 eine Netzliste auf Gate-Ebene des Schaltungsentwurfs unter Verwendung von Gates einer angezielten programmierbaren Logikschaltung erzeugen.
-
Die Logiksynthese- und Optimierungswerkzeuge 474 können den Entwurf optimieren, indem geeignete Auswahlen von Hardware zum Implementieren unterschiedlicher Logikfunktionen im Schaltungsentwurf basierend auf den Schaltungsentwurfsdaten und Einschränkungsdaten, die durch den Logikentwickler unter Verwendung der Werkzeuge 464 eingegeben werden, vorgenommen werden. Als ein Beispiel können die Logiksynthese- und Optimierungswerkzeuge 474 eine Mehrebenen-Logikoptimierungs- und Technologieabbildung basierend auf der Länge eines Kombinationspfades zwischen Registern im Schaltungsentwurf und entsprechenden Timing-Einschränkungen, die durch den Logikentwickler unter Verwendung der Werkzeuge 464 eingegeben wurden, durchführen.
-
Nach der Logiksynthese und der Optimierung unter Verwendung der Werkzeuge 474 kann das Schaltungsentwurfssystem Werkzeuge verwenden, wie etwa Platzierungs-, Routing- und physische Synthesewerkzeuge 476, um physische Entwurfsschritte (Layoutsyntheseoperationen) durchzuführen. Die Werkzeuge 476 können verwendet werden, um zu bestimmen, wo jedes Gate der Netzliste auf Gate-Ebene, die durch die Werkzeuge 474 produziert wird, zu platzieren ist. Falls zum Beispiel zwei Zähler miteinander interagieren, können die Werkzeuge 476 diese Zähler in angrenzenden Gebieten platzieren, um Interconnect-Verzögerungen zu reduzieren oder um Timing-Anforderungen, die die maximal zugelassene Interconnect-Verzögerung spezifizieren, zu erfüllen. Die Werkzeuge 476 erzeugen ordnungsgemäße und effiziente Implementierungen von Schaltungsentwürfen für eine beliebige angezielte integrierte Schaltung (z. B. für eine gegebene programmierbare integrierte Schaltung, wie etwa ein feldprogrammierbares Gate-Array (FPGA)).
-
Werkzeuge, wie etwa die Werkzeuge 474 und 476, können Teil einer Compiler-Suite sein (z. B. Teil einer Suite von Compiler-Werkzeugen, die durch einen Anbieter für programmierbare Logikeinrichtungen bereitgestellt werden). Bei gewissen Ausführungsformen können Werkzeuge, wie etwa die Werkzeuge 474, 476 und 478, auch Timing-Analysewerkzeuge, wie etwa Timing-Schätzer, beinhalten. Dies ermöglicht den Werkzeugen 474 und 476, Leistungsfähigkeitsanforderungen (z. B. Timing-Anforderungen) zu erfüllen, bevor die integrierte Schaltung tatsächlich produziert wird.
-
Nachdem eine Implementierung des gewünschten Schaltungsentwurfs unter Verwendung der Werkzeuge 476 erzeugt wurde, kann die Implementierung des Entwurfs unter Verwendung von Analysewerkzeugen 478 analysiert und getestet werden. Die Analysewerkzeuge 478 können zum Beispiel Timing-Analysewerkzeuge, Leistung-Analysewerkzeuge oder formelle Verifizierungswerkzeuge beinhalten, um nur einige zu nennen.
-
Nachdem zufriedenstellende Optimierungsoperationen unter Verwendung der Werkzeuge 320 abgeschlossen wurden, und in Abhängigkeit von der angezielten integrierten Schaltungstechnologie, können die Werkzeuge 320 eine Layoutbeschreibung auf Maskenebene oder Konfigurationsdaten zum Programmieren des Soft-Logikschaltkreises (z. B. zum Programmieren der rekonfigurierbaren Speicherassistenzschaltungen) erzeugen.
-
5 ist ein Flussdiagramm veranschaulichender Schritte zum Verwenden der Werkzeuge 320, um einen Entwurf für ein integriertes Schaltungssystem der in den 1 und 2 dargestellten Art zu kompilieren. Bei Schritt 600 können die Werkzeuge 320 einen Quellcode erhalten. Der Quellcode wird manchmal als eine Entwurfs- oder Verhaltensspezifikation bezeichnet, die in Form eines Softwareanwendungsquellcodes (z. B. C-Codes, C++-Codes, SystemC-Codes, OpenCL-Codes usw.) bereitgestellt wird. Der Quellcode kann in die Entwurfs- und Einschränkungseingabewerkzeuge 464 von 5 eingegeben werden.
-
Bei Schritt 602 können die Werkzeuge 320 den Quellcode in eine entsprechende Objektdatei umwandeln und die Objektdatei mit Laufzeitbibliotheksdateien kombinieren, um eine ausführbare Datei (manchmal als eine „ausführbare Binärdatei“ bezeichnet) zu erzeugen. Die ausführbare Datei kann Programmanweisungen beinhalten, die eine gegebene CPU oder einen gegebenen Prozessor anleiten, eine Reihe von Aufgaben durchzuführen.
-
Bei Schritt 604 können die Werkzeuge 320 Möglichkeiten zur Speicherassistenz identifizieren, indem Kandidatenspeicherdienstmuster im Quellcode detektiert werden. Es soll zum Beispiel ein Szenario angenommen werden, in dem der Quellcode eine Videoanwendung mit einem definierten Stride-Muster implementiert, das zweidimensionale (2D) Blöcke von 20x10 Pixeln aus einem High-Definition-Bild (z. B. einem Videoeinzelbild mit 1920x1080 Pixeln) greift. Die Werkzeuge 320 können dieses spezielle 2D-Stride-Muster als einen potenziellen Kandidaten zur Speicherdienstbeschleunigung identifizieren.
-
Bei Schritt 606 können die Werkzeuge 320 das bei Schritt 604 identifizierte Kandidatenspeicherdienstmuster mit einer entsprechenden Speicherdienstvorlage (z. B. einer Speicherdienstvorlage mit einem ähnlichen Verhalten wie das Kandidaten-Stride-Muster) in einer Bibliothek mit vorbestimmten Speicherdienstvorlagen abgleichen. Bei dem Videoanwendungsbeispiel können die Werkzeuge 320 eine Speichervorabrufvorlage mit einer 2D-Stride-Fähigkeit aus der Bibliothek mit vorbestimmten Speicherdienstvorlagen auswählen.
-
Bei Schritt 608 können die Werkzeuge 320 Schlüsselparameter aus dem Quellcode extrahieren und die ausgewählte Speicherdienstvorlage parametrisieren. Bei dem Videoanwendungsbeispiel können die Werkzeuge 320 Grenzen und die Schrittgröße, die mit dem 2D-Stride-Muster assoziiert sind, identifizieren. Falls gewünscht, kann dieser Extraktionsschritt gleichzeitig mit dem Schritt 604 vor dem Schritt 606 durchgeführt werden. Die ausgewählte Speichervorabrufvorlage kann dann unter Verwendung der identifizierten Grenz- und Schrittgrößeninformationen (als ein Beispiel) parametrisiert werden. Dies ist lediglich veranschaulichend. Unterschiedliche Speicherdienstvorlagen können unter Verwendung verschiedener Arten von Parametern und einer beliebigen geeigneten Anzahl von extrahierten Parametern konfiguriert werden. Die Speicherdienstvorlagen können basierend auf den Anwendungsnutzungsprofilen dynamisch rekonfiguriert werden.
-
Bei Schritt 610 können die Werkzeuge 320 die parametrisierte Speicherdienstvorlage verwenden, um eine entsprechende Konfigurationsdatei zum Konfigurieren einer Speicherassistenzschaltung zu erzeugen. Die Konfigurationsdatei (manchmal als ein Konfigurationsbitstrom bezeichnet) kann anwendungsspezifische Speicheranforderungen beinhalten, wie etwa die erforderliche Speichergröße und Leistungsfähigkeitseinschränkungen, die diktieren würden, was für ein Speicher-Cache-Level benötigt wird. Eine Speicherassistenzschaltung, die unter Verwendung der auf diese Weise erzeugten Konfigurationsdatei konfiguriert wird, kann dabei helfen, dass die CPU eine beliebige Speicherinstandhaltungsoperation, die durch die aktuelle Anwendung benötigt wird, beschleunigt, und kann erhebliche Leistungsfähigkeitsvorteile erbringen.
-
Bei Schritt 612 können die bei Schritt 602 erzeugte ausführbare Datei und die bei Schritt 610 erzeugte Konfigurationsdatei optional kombiniert werden, um eine kompilierte Anwendungsdatei zu bilden. Dies bezeichnet das Ende der Kompilierzeitoperationen.
-
Das oben beschriebene Beispiel der Videoanwendung, das unter Verwendung einer 2D-Speichervorabrufvorlage beschleunigt werden kann, ist lediglich veranschaulichend. Die Bibliothek mit vorbestimmten Speicherdienstvorlagen kann Vorlagen einer Vielfalt potenzieller Speicherdienstarten beinhalten. Beispielsweise kann die 2D-Speichervorabrufoperation, die sequenzielle 2D-Blöcke von Daten greift, eine Unterkategorie einer breiteren „Speicherverschiebungs“-Kategorie sein. Eine Zeigerverfolgungsoperation ist ein anderes Beispiel für eine Unterkategorie der Speicherverschiebungsdienste und kann das Identifizieren von Speicherorten, die zum Zeigen zu Datenorten verwendet werden, das Extrahieren von Informationen aus diesen Orten und dann das Vorabrufen der entsprechenden Daten beinhalten. Allgemein können Speicherverschiebungsdienste Operationen enthalten, die das Verschieben von Speicherdaten zwischen Prozessorspeicherhierarchien (z. B. zwischen der CPU und den unterschiedlichen Leveln eines Cache-Speichers), das Verschieben von Speicherdaten zwischen der CPU und einem externen Speicher, zwischen der CPI und Festplatten, zwischen der CPU und einer Netzwerkspeicherung, zwischen der CPU und einem assoziierten Eingabe-Ausgabe-Schaltkreis usw. beinhalten. Die Bibliothek mit vorbestimmten Speicherdienstvorlagen kann eine beliebige geeignete Anzahl und Art von Speicherverschiebungsvorlagen beinhalten.
-
Eine andere Kategorie von Speicherdiensten ist „Speicherbarriere“-Operationen, die allgemein das Überwachen und/oder Steuern eines Zugriffs auf spezielle Speicherorte beinhalten. Ein Beispiel für einen Speicherbarrieredienst ist Anwendungsisolation, die verhindert, dass eine Anwendung auf einen Speicher und auf Ressourcen zugreift, die anderen Anwendungen zugewiesen sind. Ein anderes Beispiel für einen Speicherbarrieredienst ist Anwendungsspeicherschutz, der verhindert, dass andere Anwendungen auf einen geschützten Speicherraum einer Anwendung zugreifen. Die Bibliothek mit vorbestimmten Speicherdienstvorlagen kann eine beliebige geeignete Anzahl und Art von Speicherbarrierevorlagen beinhalten.
-
Eine andere Speicherdienstkategorie kann „Speicherwartung“-Operationen sein, die allgemein das Regeln der Richtlinien einer Speicherhierarchie eines Prozessors beinhalten. Ein Beispiel für einen Speicherwartungsdienst ist das Setzen einer Cache-Ersetzungsrichtlinie, die die Zuweisung von Daten in der Speicherhierarchie bestimmt und die Datenpriorität bestimmt, wenn Konflikte auftreten. Ein anderes Beispiel für einen Speicherwartungsdienst ist das Setzen einer Scrubbing-Richtlinie, die die Notfallsicherheitsmaßnahmen zum Löschen aller Daten an einem speziellen Speicherort bestimmt. Die Bibliothek mit vorbestimmten Speicherdienstvorlagen kann eine beliebige geeignete Anzahl und Art von Speicherwartungsvorlagen beinhalten.
-
Noch eine andere Speicherdienstkategorie kann „Speicherberechnungs“-Operationen sein, die allgemein das Durchführen von (arithmetischen) Berechnungen an Daten, die auf dem Cache-Speicher gespeichert sind, oder Daten, die in den Cache-Speicher eingehen, beinhalten. Beispiele für Speicherberechnungsoperationen beinhalten das Berechnen des Mittelwerts für eine Gruppe von Datenblöcken, das Durchführen eines Abgleichalgorithmus an einer Gruppe von Datenblöcken (z. B. durch Abgleichen der Daten mit einem vorbestimmten Muster), das Berechnen von Schätzungen aus einer Gruppe von Datenblöcken (z. B. durch das Durchführen einer Datenextrapolation oder Regressionsanalyse) usw. Die Bibliothek mit vorbestimmten Speicherdienstvorlagen kann eine beliebige geeignete Anzahl und Art von Speicherberechnungsvorlagen beinhalten.
-
Die verschiedenen Arten oder Kategorien von oben beschriebenen Speicherdienstoperationen (z. B. Speicherverschiebung, Speicherbarriere, Speicherwartung und Speicherberechnung) sind lediglich veranschaulichend und sollen nicht den Schutzumfang der vorliegenden Ausführungsformen beschränken. Die Bibliothek mit vorbestimmten Speicherdienstvorlagen kann Vorlagen für eine beliebige Anzahl von Speicherdienstkategorien und -unterkategorien beinhalten. Die Bibliothek kann zum Beispiel Speicherbarrierevorlagen beinhalten, wie etwa eine Anwendungsisolationsvorlage zum Ermöglichen einer ersten Art von Speicherbarriereoperation und eine Anwendungsspeicherschutzvorlage zum Ermöglichen einer zweiten Art von Speicherbarriereoperation. Als ein anderes Beispiel kann die Bibliothek ferner Speicherwartungsvorlagen beinhalten, wie etwa eine Cache-Ersetzungsvorlage zum Ermöglichen einer ersten Art von Speicherwartungsoperation und eine Scrubbing-Vorlage zum Ermöglichen einer zweiten Art von Speicherwartungsoperation. Als noch ein anderes Beispiel kann die Bibliothek ferner Speicherberechnungsvorlagen beinhalten, wie etwa eine Datenmittelungsvorlage, eine Datenabgleichvorlage, eine Datenschätzungsvorlage usw. Eine beliebige Speicherassistenzschaltung auf dem System 92 kann dazu programmiert sein, eine oder mehrere Kategorien von Speicherdiensten durchzuführen.
-
Allgemein kann der Prozess von 6 verwendet werden, um eine ausführbare Datei zum Ausführen einer beliebigen Anzahl von Anwendungen zu erzeugen und eine Konfigurationsdatei zum Programmieren einer beliebigen Anzahl von rekonfigurierbaren Speicherassistenzschaltungen zu erzeugen, die zum Durchführen und Beschleunigen der durch die Anwendungen erforderlichen Speicherdienste verwendet werden.
-
7 ist ein Flussdiagramm von veranschaulichenden Schritten zum Laden einer Anwendung und zum selektiven Programmieren der konfigurierbaren Speicherassistenzschaltungen zur Laufzeit gemäß einer Ausführungsform. Bei Schritt 700 kann ein Betriebssystem (OS) zum Ausführen eines Systems, wie etwa des Systems 92 von 1 oder 2, eine Anwendungsstartanforderung empfangen. Ein Benutzer kann zum Beispiel einen Anwendungsstart (z. B. durch das Klicken eines Desktop-Icons) initiieren.
-
Sobald die Anwendung initiiert ist, kann das Betriebssystem die Anwendung abfragen, um bei Schritt 702 Informationen zu sammeln. Das Betriebssystem kann zum Beispiel Anwendungsressourcenanforderungen sammeln, wie etwa Anwendungsspeicheranforderungen, Eingabe-Ausgabe-Ressourcenanforderungen und Speicherassistenzschaltung-Ressourcenanforderungen.
-
Bei Schritt 704 kann das Betriebssystem die Anwendungsressourcenanforderungen (d. h. Speicherassistenzschaltung-Ressourcenanforderungen) zu einem Speicherassistenzscheduler weiterleiten. Der Speicherassistenzscheduler kann manchmal als Teil des Betriebssystems angesehen werden und kann dazu ausgelegt sein, eine Vielfalt von Operationen durchzuführen, die dabei helfen, die Anwendungsressourcenanforderungen zu einer oder mehreren Speicherassistenzschaltungen im System 92 abzubilden.
-
Bei Schritt 706 kann der Speicherassistenzscheduler die Anwendungsressourcenanforderungen überprüfen, um zu bestimmen, wie viele Speicherassistenzschaltungen benötigt werden (z. B. wie viele programmierbare Logikelemente benötigt werden, um die benötigte Speicherdienstbeschleunigung durchzuführen), um den benötigten Ort jeder Speicherassistenzschaltung zu bestimmen (d. h. ob jede Speicherassistenzschaltung mit einem L1-, L2- oder L3-Cache assoziiert sein sollte) usw.
-
Bei Schritt 708 kann der Speicherassistenzscheduler die bestehenden Hardwareressourcen im System 92 beurteilen, um zu bestimmen, welche Arten von Speicherassistenzschaltungen verfügbar sind (d. h. ob eine L1-Cache-Speicherassistenzschaltung vorhanden ist und wie viele Logikelemente sie anbietet, ob eine L2-Cache-Speicherassistenzschaltung vorhanden ist und wie viele Logikelemente sie anbietet oder ob eine L3-Cache-Speicherassistenzschaltung vorhanden ist und wie viele Logikelemente sie anbietet), und um den Status jeder verfügbaren Speicherassistenzschaltung zu bestimmen (d. h. ob jede Speicherassistenzschaltung gegenwärtig durch eine andere Anwendung verwendet wird und welche Anwendungen schon auf diesen „beschäftigten“ Speicherassistenzschaltungen ausgeführt werden). Der Ausdruck „verfügbar“ bedeutet, dass eine benötigte Speicherassistenzschaltung physisch vorhanden ist, aber eine verfügbare Speicherassistenzschaltung kann entweder beschäftigt und eine oder mehrere andere Anwendungen versorgend sein oder inaktiv (d. h. gegenwärtig keine Anwendung versorgend) sein. Der Ausdruck „nicht verfügbar“ bedeutet, dass das System 92 nicht die notwendige Hardware aufweist, um die erforderlichen Anwendungsressourcenanforderungen zu erfüllen.
-
Bei Schritt 710 kann der Speicherassistenzscheduler das Betriebssystem darüber benachrichtigen, ob die durch die gegenwärtig initiierende Anwendung benötigten Ressourcen verfügbar sind. Falls die erforderlichen Anwendungsressourcen tatsächlich verfügbar sind, kann der Speicherassistenzscheduler ferner Informationen darüber bereitstellen, ob die verfügbare(n) Speicherassistenzschaltung(en) gegenwärtig durch eine oder mehrere andere Anwendungen verwendet wird (werden).
-
Als Reaktion auf das Empfangen der Verfügbarkeits- und Statusinformationen vom Speicherassistenzscheduler kann das Betriebssystem entweder (1) die Anwendung mit den verfügbaren und zuvor inaktiven Speicherassistenzschaltungen starten, (2) die bestehenden Anwendungen neu priorisieren, um eine oder mehrere beschäftigte Speicherassistenzschaltungen verfügbar zu machen, oder (3) nur die Anwendung ohne die erforderlichen Speicherassistenzschaltungen starten. Das Starten der Anwendung mit allen erforderlichen Speicherassistenzressourcen wird die optimale Leistungsfähigkeit anbieten. Das Starten der Anwendung ohne die erforderlichen Speicherassistenzressourcen wird bewirken, dass die Anwendung eine relativ niedrige Leistungsfähigkeit aufweist.
-
Bei gewissen Ausführungsformen kann das System 92 dazu ausgelegt sein, mehrere Anwendungen parallel auszuführen. Bei derartigen Szenarios ist es möglich, dass sich die gegenwärtig ausgeführten Anwendungen um die Speicherassistenzschaltungsressourcen, die auf dem System 92 verfügbar sind, bewerben. Um einen potenziellen Konflikt zu vermeiden, kann das Betriebssystem die durch jede Anwendung angeforderten Speicherdienste priorisieren und zu entsprechenden Speicherassistenzschaltungsressourcen abbilden.
-
8 ist ein Diagramm des Systems 92, das zum Ausführen mehrerer Anwendungen verwendet werden kann, die jeweils Speicherdienste nutzen, die zu unterschiedlichen konfigurierbaren Speicherassistenzschaltungen abgebildet sind, gemäß einer Ausführungsform. Wie in 8 dargestellt, kann das System 92 gleichzeitig mindestens eine Sicherheitseingrenzungsanwendung, eine Videosuchanwendung und eine Datenbankanwendung unterstützen. Die Sicherheitseingrenzungsanwendung kann einen L1-Speicherbarrieredienst erfordern. Die Videosuchanwendung kann einen L1-Speicherberechnungsdienst und einen L2-Speichervorabrufdienst erfordern. Die Datenbankanwendung kann einen L1-Speicherberechnungsdienst, einen L2-Speichervorabrufdienst und einen L3-Speicherwartungsdienst erfordern.
-
Ein Speicherassistenzscheduler, wie etwa der Speicherassistenzscheduler 800, kann dazu ausgelegt sein, die mit jeder Anwendung assoziierten Speicherdienstanforderungen zu entsprechenden verfügbaren Speicherassistenzhardwareressourcen im System 92 abzubilden. In dem Beispiel von 8 kann der Speicherassistenzscheduler 800 den durch die Sicherheitseingrenzungsanwendung angeforderten L1-Speicherbarrieredienst zu einer Speicherassistenzschaltung 100A-1 abbilden (wie durch einen Pfeil 810 angegeben). Da sie auf diese Weise konfiguriert ist, kann die Sicherheitseingrenzungsanwendung unter Verwendung der CPU-A ausgeführt werden und die Speicherassistenzschaltung 100A-1 kann eine Anwendungsisolation oder einen Anwendungsspeicherschutz für den L1-Cache 82A-1 durchführen.
-
Der Speicherassistenzscheduler 800 kann ferner den L1-Speicherberechnungsdienst und den L2-Speichervorabrufdienst, die durch die Videosuchanwendung angefordert werden, zu einer Speicherassistenzschaltung 100B-1 (wie durch einen Pfeil 812 angegeben) bzw. einer Speicherassistenzschaltung 100AB-2 (wie durch einen Pfeil 814 angegeben) abbilden. Da sie auf diese Weise konfiguriert ist, kann die Videosuchanwendung unter Verwendung der CPU-B ausgeführt werden und die Speicherassistenzschaltung 100B-1 kann Datenberechnungsoperationen für den L1-Cache 82B-1 durchführen, während die Speicherassistenzschaltung 100AB-2 Speichervorabrufoperationen am L2-Cache 82AB-2 durchführen kann. Der L2-Cache 82AB-2 kann zwischen der CPU-A und der CPU-B gemeinsam genutzt werden.
-
Der Speicherassistenzscheduler 800 kann auch den L1-Speicherberechnungsdienst, den L2-Speichervorabrufdienst und den L3-Speicherwartungsdienst, die durch die Datenbankanwendung angefordert werden, zu einer Speicherassistenzschaltung 100C-1 (wie durch einen Pfeil 816 angegeben), einer Speicherassistenzschaltung 100CD-2 (wie durch einen Pfeil 818 angegeben) bzw. einer Speicherassistenzschaltung 100-3 (wie durch einen Pfeil 820 angegeben) abbilden. Da sie auf diese Weise konfiguriert ist, kann die Datenbankanwendung unter Verwendung der CPU-C ausgeführt werden und die Speicherassistenzschaltung 100C-1 kann Datenberechnungsoperationen für den L1-Cache 82C-1 durchführen, während die Speicherassistenzschaltung 100CD-2 Speichervorabrufoperationen am L2-Cache 82CD-2 durchführen kann und während die Speicherassistenzschaltung 100-3 Cache-Ersetzungs- oder Scrubbing-Richtlinien für den L3-Cache 82-3 setzen kann (als Beispiele). Der L2-Cache 82CD-2 kann zwischen der CPU-C und der CPU-D gemeinsam genutzt werden. Der L3-Cache 82-3 kann zwischen der CPU-A, der CPU-B, der CPU-C und der CPU-D gemeinsam genutzt werden.
-
Das Beispiel von 8, in dem das System 92 gleichzeitig drei unterschiedliche Anwendungen unterstützt, die jeweils ihren eigenen Satz von angeforderten Speicherdiensten aufweisen, die unter Verwendung entsprechender Speicherassistenzschaltungen bei verschiedenen Leveln der Speicherhierarchie beschleunigt werden, ist lediglich veranschaulichend. Falls gewünscht, kann das System 92 auch einen separaten Pool von Speicherassistenzschaltungen beinhalten, die dazu ausgelegt sind, eine oder mehrere CPUs zu versorgen. Mehrere Speicherassistenzschaltungen aus diesem Pool können zum Beispiel effizient zugeordnet werden, um eine einzelne CPU zu versorgen. Allgemein kann das System 92 dazu ausgelegt sein, eine beliebige Anzahl von Anwendungen zu unterstützen, die jeweils einen oder mehrere Speicherdienste anfordern können, die durch verfügbare Speicherassistenzhardwareressourcen im System 92 beschleunigt werden können. Die verschiedenen Speicherassistenzschaltungen, die zum Beschleunigen der erforderlichen Speicherdienste für jede Anwendung verwendet werden, werden unter Verwendung von Konfigurationsdaten programmiert, die unter Verwendung der Werkzeuge 320 erzeugt werden (siehe z. B. den in der 6 dargestellten Prozess, bei dem jeder angeforderte Speicherdienst mit einer entsprechenden Vorlage in der Bibliothek mit vorbestimmten Speicherdienstvorlagen abgeglichen werden kann).
-
Obwohl die Verfahren von Operationen in einer spezifischen Reihenfolge beschrieben wurden, sollte verstanden werden, dass andere Operationen zwischen beschriebenen Operationen durchgeführt werden können, beschriebene Operationen so angepasst werden können, dass sie zu leicht unterschiedlichen Zeiten auftreten, oder beschriebene Operationen in einem System verteilt sein können, das ein Auftreten der Verarbeitungsoperationen mit verschiedenen Intervallen, die mit der Verarbeitung assoziiert sind, gestattet, solange die Verarbeitung der übergelagerten Operationen auf eine gewünschte Weise durchgeführt wird.
-
Das Vorstehende ist lediglich für die Prinzipien dieser Erfindung veranschaulichend und verschiedene Modifikationen können durch Fachleute vorgenommen werden. Die vorstehenden Ausführungsformen können individuell oder in einer beliebigen Kombination implementiert werden.