[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE102020118000A1 - Verfahren, systeme, herstellungsartikel und einrichtungen zum verwalten der speicherzuordnung - Google Patents

Verfahren, systeme, herstellungsartikel und einrichtungen zum verwalten der speicherzuordnung Download PDF

Info

Publication number
DE102020118000A1
DE102020118000A1 DE102020118000.4A DE102020118000A DE102020118000A1 DE 102020118000 A1 DE102020118000 A1 DE 102020118000A1 DE 102020118000 A DE102020118000 A DE 102020118000A DE 102020118000 A1 DE102020118000 A1 DE 102020118000A1
Authority
DE
Germany
Prior art keywords
memory
platform
exemplary
virtual
flag
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
DE102020118000.4A
Other languages
English (en)
Inventor
Zigi Walter
Anat Heilper
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.)
Intel Corp
Original Assignee
Intel Corp
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
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102020118000A1 publication Critical patent/DE102020118000A1/de
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/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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

Es sind Verfahren, Einrichtungen, Systeme und Herstellungsartikel offenbart, um die Speicherzuordnung zu verwalten. Eine beispielhafte Einrichtung beinhaltet einen Speicherdetektor zum Scannen einer Plattform nach verfügbarem Speicher. Die beispielhafte Einrichtung beinhaltet außerdem einen Speichergrößenprüfer zum Abrufen eines virtuellen Speicherlayouts, das mit den verfügbaren Speichervorrichtungen assoziiert ist, die mit der Plattform assoziiert sind, und zum Bestimmen, ob virtuelle Adressgrenzen jeweiliger einer verfügbaren Speichervorrichtung eine virtuelle Adresslücke dazwischen erzeugen. Die beispielhafte Einrichtung beinhaltet auch einen Adressenzuweiser zum Neuzuweisen virtueller Adressen mindestens einer der jeweiligen verfügbaren Speichervorrichtungen, um die virtuelle Adresslücke zu entfernen.

Description

  • GEBIET DER OFFENBARUNG
  • Die vorliegende Offenbarung betrifft allgemein die Speicherzuweisung und insbesondere Verfahren, Systeme, Herstellungsartikel und Einrichtungen zum Verwalten der Speicherzuordnung.
  • HINTERGRUND
  • In den letzten Jahren hat die Speichernutzung zugenommen, da von Rechenvorrichtungen erwartet wird, eine relativ größere Anzahl von Aufgaben in einer relativ reduzierten Menge an Zeit zu bearbeiten. Scratchpad-Speicher weist beschränkte Kapazität auf, ist aber häufig naheliegend mit dem Prozessor gekoppelt, was einen schnellen und deterministischen Datenabruf ermöglicht. Im Gegensatz dazu bietet Cache-Speicher erheblich mehr Speicherung auf Kosten einer längeren Abrufzeit. Während sich sowohl Scratchpad- als auch Cache-Speicher näher an dem Prozessor befinden als eine größere Massenspeicherung, wie etwa eine dynamische Direktzugriffsspeicherung (DRAM), sind sie gewöhnlich voneinander getrennt.
  • Figurenliste
    • 1 ist eine schematische Veranschaulichung einer beispielhaften Plattform, die ein System-on-Chip beinhaltet.
    • 2A und 2B sind Veranschaulichungen beispielhafter virtueller Speicherabbildlayouts von Scratchpad- und Cache-Speicher.
    • 3 ist eine schematische Veranschaulichung eines beispielhaften Speicheranalysators zum Analysieren und Zuweisen verfügbaren Speichers gemäß Lehren dieser Offenbarung.
    • 4-5 sind Flussdiagramme, die beispielhafte maschinenlesbare Anweisungen repräsentieren, die zum Implementieren des beispielhaften Speicheranalysators der 1 und 3 zum Verwalten der Speicherzuordnung ausgeführt werden können.
    • 6 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die zum Ausführen der Anweisungen der 4-5 strukturiert ist, um den beispielhaften Speicheranalysator der 1 und 3 zu implementieren.
  • Die Figuren sind nicht maßstabsgetreu. Allgemein werden die gleichen Bezugsziffern durchweg durch die Zeichnung(en) und die begleitende geschriebene Beschreibung verwendet, um sich auf dieselben oder ähnliche Teile zu beziehen. Deskriptoren „erster“, „zweiter“, „dritter“ usw. werden hierin verwendet, wenn mehrere Elemente oder Komponenten identifiziert werden, auf die sich möglicherweise getrennt bezogen wird. Insofern nicht anders basierend auf ihrem Verwendungszusammenhang spezifiziert oder verstanden, sollen derartige Deskriptoren nicht irgendeine Bedeutung von Priorität, physischer Reihenfolge oder Anordnung in einer Liste oder zeitlicher Ordnung zuschreiben, sondern werden lediglich als Bezeichnungen verwendet, um sich zum leichteren Verständnis der offenbarten Beispiele auf mehrere Elemente oder Komponenten getrennt zu beziehen. In manchen Beispielen kann der Deskriptor „erster“ verwendet werden, um sich auf ein Element in der ausführlichen Beschreibung zu beziehen, während sich auf dasselbe Element in einem Anspruch mit einem anderen Deskriptor wie etwa „zweiter“ oder „dritter“ bezogen werden kann. In derartigen Fällen sollte verstanden werden, dass derartige Deskriptoren lediglich zur Vereinfachung des Bezugnehmens auf mehrere Elemente oder Komponenten verwendet werden.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Unterschiedliche Speicherarten sind mit unterschiedlichen Eigenschaften assoziiert, wie etwa Speichergröße und Zeit für die Datenoperation (z. B. Abruf, Speicherung usw.). Wie hierin verwendet, ist Scratchpad-Speicher eine Speicherart, die im Vergleich zu anderen Speicherarten eine relativ schnelle Operationszeit aufweist. Wie hierin verwendet, ist Cache-Speicher eine Speicherart, die im Vergleich zu Scratchpad-Speicher eine relativ langsamere Operationszeit aufweist. Der beispielhafte Scratchpad-Speicher und eine oder mehrere andere Arten von Cache-Speicher befinden sich auf einer Plattform, einem Chipsatz und/oder sind Teil einer System-on-Chip(SOC)-Baugruppe. In manchen Beispielen befinden sich andere Speicherarten auf einer oder mehreren separaten Strukturen, auf die über eine oder mehrere Buskommunikationstechniken zugegriffen werden kann. In Bezug auf Größe besitzt Cache-Speicher häufig eine relativ größere Speicherungskapazität als Scratchpad-Speicher. Der größere Cache-Speicher mit der relativ größeren Kapazität ist jedoch teilweise aufgrund dessen, dass sich der Cache-Speicher weiter entfernt vom Prozessor befindet, häufig mit höheren Zugriffslatenzen (z. B. Schreibanforderungen, Leseanforderungen, Ersetzungsanforderungen usw.) assoziiert. Idealerweise sind Datenpuffer (z. B. Datenteile, die Speicheroperationen erfordern, wie etwa Schreibanforderungen, Leseanforderungen usw.), die häufig verwendet werden und dadurch eine schnelle Abrufzeit erfordern, im nächstliegenden kompatiblen Speicherplatz (z. B. Scratchpad-Speicher) zum Prozessor platziert, um Verzögerungen während Rechenaufgaben des Prozessors zu reduzieren.
  • 1 veranschaulicht eine beispielhafte Plattform 100, die ein beispielhaftes SOC 102 beinhaltet. Wie hierin verwendet, beinhaltet die beispielhafte Plattform 100 nicht beschränkend einen Prozessor und Speicher. Die beispielhafte Plattform 100 kann zum Beispiel ein SOC, ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z. B. ein neuronales Netzwerk), eine mobile Einrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, ein DVD-Player, ein CD-Player, ein digitaler Videorekorder, ein Blu-Ray-Player, eine Spielekonsole, ein persönlicher Videorekorder, eine Set-Top-Box, ein Headset oder eine andere tragbare Vorrichtung oder eine beliebige andere Art von Rechenvorrichtung sein. In dem veranschaulichten Beispiel von 1 beinhaltet das SOC 102 einen beispielhaften Prozessor 104, der kommunikativ mit dem Scratchpad-Speicher 106 und einem beispielhaften L1-Cache 108 verbunden ist. Das beispielhafte SOC 102 beinhaltet eine beispielhafte Speicherverwaltungseinheit (MMU) 110 zum Ermöglichen von Speicherverwaltungsoperationen, wie etwa die Verwendung von Direktzugriffsspeicher (RAM), anderen Arten von Cache-Speicher, Scratchpad-Speicher, und/oder anderer Speicherzugriffsbedürfnisse des beispielhaften Prozessors 104. Die vorgenannte Struktur und/oder Software (in Abhängigkeit von der Art der Implementierung zum Verwalten der Speicherzuordnung) von 1 wird kommunikativ durch einen beispielhaften SOC-Bus 112 verbunden (und/oder gekoppelt). Wie oben beschrieben, weist der beispielhafte Scratchpad-Speicher 106 relativ geringe Latenzcharakteristiken im Vergleich zu dem beispielhaften L1-Cache 108 auf und befindet sich typischerweise näherliegend zu dem beispielhaften Prozessor 104 als der beispielhafte L1-Cache 108. Allgemeiner sind SOCs, wie etwa das beispielhafte SOC 102 von 1, im Vergleich zu Zentralverarbeitungseinheiten häufig etwas größer, besitzen aber aufgrund eines höheren Integrationsniveaus den zusätzlichen Vorteil eines geringen Leistungsverbrauchs. Dies macht SOCs für mobiles Computing, wie etwa Datenübertragung, wünschenswert.
  • In manchen Beispielen ist der verfügbare Speicher für das SOC 102 nicht auf den beispielhaften Scratchpad-Speicher 106 und den beispielhaften L1-Cache 108 von 1 beschränkt, da eine oder mehrere zusätzliche und/oder alternative Speicherstrukturen zur Verfügung stehen können. In manchen Beispielen ist das SOC 102 kommunikativ mit einem beispielhaften L2-Cache-Speicher 114, einem dynamischen Direktzugriffsspeicher (DRAM) 116 und/oder einer oder mehreren anderen Speicherstrukturen (nicht gezeigt) verbunden. In manchen Beispielen wird der Speicher hierin als eine Speichervorrichtung (z. B. eine DRAM-Vorrichtung, eine Scratchpad-Speichervorrichtung usw.) bezeichnet. Wie nachstehend ausführlich beschrieben, beinhaltet die beispielhafte Plattform einen beispielhaften Speicheranalysator 300 zum Verwalten der Speicherzuordnung. In manchen Beispielen ist der Speicheranalysator 300 kommunikativ mit dem beispielhaften SOC 102 (z. B. über eine/n oder mehrere Kommunikationsleitungen/-busse) verbunden, während in manchen Beispielen der Speicheranalysator 300 in das beispielhafte SOC 102 integriert ist.
  • Die Speicherleistung hängt zusätzlich zu der Größe der zu speichernden Daten (z. B. einem Datenpuffer) von verschiedenen Konfigurationen des Scratchpad- und Cache-Speichers ab. Herkömmlicherweise sind die virtuellen Cache- und Scratchpad-Speicheradressen nicht kontinuierlich. 2A veranschaulicht ein beispielhaftes virtuelles Speicherlayout 200, in dem Cache-Speicher und Scratchpad-Speicher nicht kontinuierliche virtuelle Speicherzuweisungen belegen (z. B. aufgrund nicht belegter Adressen zwischen ihnen). In dem veranschaulichten Beispiel von 2A beinhaltet das virtuelle Speicherlayout 200 einen beispielhaften ersten Satz virtueller Speicheradressen 202, die dem Scratchpad-Speicher zugewiesen wurden, einen beispielhaften zweiten Satz virtueller Speicheradressen 204, die nicht zugewiesen wurden, und einen beispielhaften dritten Satz virtueller Speicheradressen 206, die dem Cache-Speicher (z. B. L1-Cache, L2-Cache usw.) zugewiesen wurden. Wie hierin verwendet, bezieht sich eine virtuelle Adressgrenze auf den Trennungspunkt zwischen zwei Sätzen virtueller Speicheradressen (z. B. zwischen dem beispielhaften ersten Satz virtueller Speicheradressen 202 und dem beispielhaften zweiten Satz virtueller Speicheradressen 204). Zusätzlich bezieht sich eine virtuelle Adresslücke auf einen Satz virtueller Speicheradressen, die noch nicht zugewiesen wurden (z. B. den beispielhaften zweiten Satz virtueller Speicheradressen 204). In manchen Beispielen werden virtuelle Speicherzuweisungen durch eine oder mehrere Komponenten der beispielhaften Plattform 100 während des Einschaltens zugewiesen, wie etwa durch die beispielhafte MMU 110 zugewiesen. In manchen Beispielen finden virtuelle Speicherzuweisungen auf willkürliche Weise oder auf zufällige Weise statt.
  • Während des Betriebs der beispielhaften Plattform 100 passt ein Datenpuffer (z. B. eine Anforderung zu dem/durch den beispielhaften Prozessor 104, Daten zu manipulieren oder zuzuweisen) möglicherweise nicht in den verfügbaren Scratchpad-Speicher, der mit dem beispielhaften ersten Satz virtueller Speicheradressen 202 assoziiert ist. Solche Verhältnisse können durch die beispielhafte Plattform 100 auf unterschiedliche Weise behandelt werden. In manchen Beispielen platziert die MMU 110 den Datenpuffer vollständig innerhalb des dritten Satzes von Speicheradressen 206, die mit dem Cache-Speicher assoziiert sind. Dieser Ansatz überbeansprucht jedoch den beschränkten Speicher innerhalb des Cache und nutzt spezielle Speicherarten und ihre entsprechenden Charakteristiken nicht aus. Ein zweiter Ansatz, der durch die beispielhafte Plattform 100 (z. B. durch die beispielhafte MMU 110) durchgeführt wird, partitioniert den Datenpuffer in (a) einen Abschnitt, der innerhalb des verfügbaren ersten Satzes virtueller Speicheradressen 202, die mit dem Scratchpad-Speicher assoziiert sind, passen kann, und (b) den beispielhaften dritten Satz virtueller Speicheradressen 206, der in den Cache-Speicher „überläuft“. Obwohl dieser beispielhafte Ansatz die speziellen vorteilhaften Charakteristiken ausnutzt, die mit dem Scratchpad-Speicher assoziiert sind, erfordert er eine spezielle Behandlung (z. B. Software-Behandlung), wodurch die Komplexität erhöht wird und potenziell die Vorteile des Scratchpad-Speichers beschränkt werden. Als Reaktion auf das Detektieren einer Überlaufbedingung muss die beispielhafte Plattform 100 (und/oder Komponenten davon) zum Beispiel virtuelle Offsetadressen berechnen, die von der Grenze der Scratchpad-Adressen zu der Eintrittsgrenze der Cache-Adressen springen. Anders ausgedrückt muss die beispielhafte Plattform 100 virtuelle Offsetadressen berechnen, die über den beispielhaften zweiten Satz virtueller Speicheradressen 204, die keinem Speicher zugewiesen wurden, springen.
  • Hierin offenbarte Beispiele ermöglichen eine nahtlose Abbildung von Scratchpad-Speicher und Cache-Speicher, um Plattformressourcen zu vermeiden und/oder anderweitig zu unterdrücken, die versuchen, mit einem Sprung assoziierte Adressberechnungen (z. B. einen Sprung über den beispielhaften zweiten Satz virtueller Speicheradressen 204) durchzuführen. Es versteht sich jedoch, dass das virtuelle Speicherlayout verfügbarer Speichervorrichtungen in manchen Beispielen ohne eine virtuelle Adresslücke vorkonfiguriert ist. Solche vorkonfigurierten virtuellen Speicherlayouts gestatten dadurch eine effizientere Speicheroperation der Plattform. 2B veranschaulicht ein beispielhaftes virtuelles Speicherlayout 250, in dem Cache-Speicher und Scratchpad-Speicher kontinuierliche virtuelle Speicherzuweisungen belegen. In dem veranschaulichten Beispiel von 2B beinhaltet das virtuelle Speicherlayout 250 einen beispielhaften ersten Satz virtueller Speicheradressen 252, die nicht zugewiesen wurden (z. B. eine virtuelle Speicherlücke), einen beispielhaften zweiten Satz virtueller Speicheradressen 254, die dem Scratchpad-Speicher (z. B. der Scratchpad-Speichervorrichtung) zugewiesen wurden, und einen beispielhaften dritten Satz virtueller Speicheradressen 256, die dem Cache-Speicher (z. B. einer Cache-Speichervorrichtung wie etwa einer LI-Cache-Vorrichtung, einer L2-Cache-Vorrichtung usw.) zugewiesen wurden. Obwohl das veranschaulichte Beispiel von 2B eine spezielle Reihenfolge von Speicherarten des virtuellen Speicherlayouts 250 zeigt, sind hierin offenbarte Beispiele nicht darauf beschränkt. Andere Reihenfolgen, Arten und/oder Mengen von Speicher können in dem beispielhaften virtuellen Speicherlayout 250 ohne Beschränkung repräsentiert sein. Wie hierin verwendet, gewährleistet eine nahtlose Abbildung des Scratchpad- und Cache-Speichers, dass die jeweiligen virtuellen Adressen kontinuierlich sind. Dies ermöglicht eine optimale Speicherungsnutzung sowohl des Scratchpad- als auch Cache-Speichers, während weiterhin einfache Softwareabrufverfahren verwendet werden, was gewährleistet, dass die Vorteile des Scratchpad-Speichers verbleiben. Dies verhindert außerdem eine Notwendigkeit, dass eine oder mehrere Berechnungen virtueller Speicheradressen durch die beispielhafte Plattform 100 durchgeführt werden (z. B. Verhinderung virtueller Speicheroffsetberechnungen oder Sprungadressenberechnungen).
  • 3 ist eine schematische Veranschaulichung des beispielhaften Speicheranalysators 300 zum Verwalten der Speicherzuordnung (z. B. in einem SOC). Wie oben beschrieben, kann sich der beispielhafte Speicheranalysator 300 in der beispielhaften Plattform 100 befinden, wie etwa innerhalb des beispielhaften SOC 102, oder kann sich kommunikativ extern zu dem beispielhaften SOC 102 befinden. Andere beispielhafte Konfigurationen beinhalten jedoch unter anderem, dass der beispielhafte Speicheranalysator 300 innerhalb des beispielhaften SOC 102 integriert ist, innerhalb eines Chipsatzes integriert ist oder über einen Bus, der sich extern zum SOC befindet, kommunikativ mit dem SOC verbunden ist.
  • In dem veranschaulichten Beispiel von 3 ist der Speicheranalysator 300 kommunikativ mit einem beispielhaften Eingangsdatenpuffer 302 und einem unbeständigen Speicher 304 verbunden, der einen beispielhaften Scratchpad-Speicher 306 und einen beispielhaften Cache-Speicher 308 beinhaltet. Der beispielhafte Speicheranalysator 300 von 3 beinhaltet außerdem einen beispielhaften Speicherdetektor 310, einen beispielhaften Speichergrößenprüfer 312 und einen beispielhaften Adressenzuweiser 314. Die vorgenannte Struktur und/oder Software (in Abhängigkeit von der Art der Implementierung zum Verwalten der Speicherzuordnung) von 3 wird kommunikativ durch einen beispielhaften Speicheranalysatorbus 316 verbunden (und/oder zwischenverbunden).
  • Im Betrieb ruft der beispielhafte Speicherdetektor 310 verfügbare Daten, die eine oder mehrere Speicheroperationen (z. B. zu speichernde Daten, zu lesende Daten usw.) erfordern, ab und/oder empfängt diese anderweitig. In manchen Beispielen sollen die Daten (manchmal hierin als ein Datenpuffer bezeichnet) in dem beispielhaften unbeständigen Speicher 304 gespeichert/aus diesem ausgelesen werden. Der beispielhafte Speicherdetektor 310 bestimmt verfügbaren virtuellen Speicher (hierin als Kandidatenspeicher bezeichnet), der mit der beispielhaften Plattform 100 assoziiert ist. In manchen Beispielen scannt der Speicherdetektor 310 die Plattform 100 nach Speicher-Speicherungsvorrichtungen, während in anderen Beispielen die verfügbaren Speicher-Speicherungsvorrichtungen schon abgebildet sind und/oder anderweitig im virtuellen Speicher zugewiesen sind (z. B. eine virtuelle Speicheradresse aufweisen, die auf eine Weise abgebildet ist, die mit dem veranschaulichten Beispiel von 2A oder 2B konsistent ist). In manchen Beispielen wird eine Plattform mit einem vorkonfigurierten Satz von Speichervorrichtungen hergestellt, wobei derartige Speichervorrichtungen schon auf ein virtuelles Speicherlayout abgebildet wurden. In dem Fall, dass die Plattform Hardwareänderungen erfährt, wie etwa Hinzufügungen zu dem Speicher durch einen Endbenutzer (z. B. mehr DRAM) und/oder Änderungen oder Entfernung des Speichers, dann reagiert der beispielhafte Speicherdetektor 310 jedoch auf derartige Plattformänderungen.
  • Als Reaktion darauf, dass der beispielhafte Speicherdetektor 310 Kandidatenspeicher identifiziert, der mit der Plattform assoziiert ist, erhält der beispielhafte Speichergrößenprüfer 312 Speicherkonfigurationsinformationen. In manchen Beispielen ruft der Speichergrößenprüfer 312 ein bestehendes virtuelles Speicherlayout ab, das mit der beispielhaften Plattform 100 assoziiert ist, wie etwa das beispielhafte virtuelle Speicherlayout 200 von 2A oder das beispielhafte virtuelle Speicherlayout 250 von 2B. Der beispielhafte Speichergrößenprüfer 312 bestimmt, ob zwei oder mehr Speichervorrichtungen entsprechende virtuelle Adressen aufweisen, die nicht kontinuierlich sind. In dem Fall des beispielhaften Speicherlayouts 200 von 2A weist der beispielhafte Adressenzuweiser 314 den beispielhaften ersten Satz virtueller Speicheradressen 202 erneut zu, sodass er mit dem beispielhaften dritten Satz virtueller Speicheradressen 206 kontinuierlich ist. In manchen Beispielen setzt der beispielhafte Adressenzuweiser 314 ein erstes Flag nach der ersten Neuzuweisung der virtuellen Adressen (z. B. des beispielhaften ersten Satzes virtueller Speicheradressen 202) mindestens einer Speichervorrichtung. Sobald die Speicheradressen des beispielhaften Scratchpad-Speichers 306 mit den Speicheradressen des beispielhaften Cache-Speichers 308 kontinuierlich sind (z. B. 2B), ermöglicht der beispielhafte Speicherdetektor 310 die Speicherzuordnung.
  • Nachdem die Speicherzuordnung durch den beispielhaften Speicherdetektor 310 ermöglicht ist, bestimmt der beispielhafte Speichergrößenprüfer 312 die Kompatibilität zwischen dem Kandidatenspeicher und dem beispielhaften Eingangsdatenpuffer 302. In manchen Beispielen bezieht sich „Kompatibilität“ auf Speichergrößencharakteristiken hinsichtlich Eingangsdatenmengen, bei denen der Kandidatenspeicher (z. B. Scratchpad-Speicher) und der beispielhafte Eingangsdatenpuffer 302 aufgrund der Größe inkompatibel sind (z. B. überschreiten die Eingangsdaten einer Speicherungskapazität des Scratchpad-Speichers). In manchen Verhältnissen identifiziert der beispielhafte Speicherdetektor 310 einen neuen Kandidatenspeicher, der mit der Plattform assoziiert ist, bis ein kompatibler Kandidatenspeicher gefunden wird. In manchen Beispielen identifiziert der Speicherdetektor 310 mindestens einen neuen oder alternativen Speicher, der mit der Plattform assoziiert ist und die Gesamtheit oder einen Teil der Eingangsdatenpufferinhalte aufnehmen (z. B. speichern) kann. Falls beispielsweise ein erster Kandidatenspeicher (z.B. Scratchpad) durch den beispielhaften Speicherdetektor 310 identifiziert wird, aber der Scratchpad nicht groß genug ist, um die Gesamtheit der Eingangsdatenpufferinhalte aufzunehmen, dann identifiziert der Speicherdetektor 310 einen oder mehrere zusätzliche Speicher zum Speichern des Rests der Eingangsdatenpufferinhalte. Anders ausgedrückt können der zusätzliche Speicher und der Scratchpad-Speicher in Kombination die Menge/Größe der Eingangsdaten aufnehmen. Der beispielhafte Adressenzuweiser 314 arbeitet mit der beispielhaften MMU 110, um den beispielhaften Eingangsdatenpuffer 302 zu dem Kandidatenspeicher zuzuweisen. In manchen Beispielen gibt es mehrere beispielhafte Eingangsdatenpuffer 302, die nacheinander durch den beispielhaften Speicherdetektor 310 detektiert werden, nachdem jeder einem Kandidatenspeicher zugewiesen wurde.
  • In manchen Beispielen (a) fand mindestens eine Speicheroperationsanforderung statt, in der (b) der beispielhafte Speicherdetektor 310 Kandidatenspeicher identifiziert hat, der mit der Plattform 100 assoziiert ist, und (c) virtuelle Speicheradressen zugewiesen wurden, um kontinuierliche Werte von einem ersten Speicher zu einem zweiten Speicher (oder mehr) zu ermöglichen (z. B. erste Speicheradressen, die mit einer ersten Speichervorrichtung assoziiert sind, die numerisch fortlaufend mit zweiten Speicheradressen sind, mit einer zweiten Speichervorrichtung, die numerisch fortlaufend mit einer dritten Speicheradresse sind usw.). Anders ausgedrückt, in manchen Beispielen hat der Speicheranalysator 300 die beispielhafte Plattform 100 analysiert, um ein beispielhaftes virtuelles Speicherabbild auf eine Weise zu erzeugen, die mit dem Beispiel 2 konsistent ist, in der die virtuellen Adressen kontinuierlich sind. In solchen Verhältnissen bestimmt der beispielhafte Speicheranalysator, ob eine Speicheroperation schon stattgefunden hat, und bestimmt, ob eine solche Neuzuweisung stattgefunden hat. Falls dem so ist, ist dann eine Wiederholung einer derartigen Analyse der beispielhaften Plattform 100 unnötig. In manchen Beispielen setzt der Speicheranalysator 300 ein Flag, falls eine derartige Analyse schon stattgefunden hat, und falls dem so ist, verhindert er eine derartige Neuanalyse in einem Bestreben, Rechenressourcen zu bewahren und/oder eine Geschwindigkeit zu verbessern, mit der Speicheroperationen stattfinden.
  • In dem Fall, dass der beispielhafte Speicheranalysator 300 bestimmt, dass eine Analyse der beispielhaften Plattform 100 schon stattgefunden hat und eine entsprechende Speicherneuabbildung stattgefunden hat, um zu veranlassen, dass virtuelle Speicheradressen auf fortlaufende Weise vorliegen (siehe z. B. 2B), dann verhindert, umgeht und/oder anderweitig unterdrückt der beispielhafte Speicheranalysator 300, dass eine oder mehrere Standardprozessordirektiven zum Berechnen von Sprungoffsetadressen ausgeführt werden. Mit anderen Worten beinhaltet typische Prozessorfirmware oder Firmware der MMU 110 einen Standardsatz von Anweisungen zum Erzeugen von Offsetsprungberechnungen, die ermöglichen, dass unterschiedliche Speichervorrichtungen Datenpufferinhalte speichern/darauf zugreifen (z. B. um Datenüberlauf aufzunehmen, wenn eine der Speichervorrichtungen nicht groß genug ist, um alle Eingangsdaten zu speichern). Da solche virtuellen Adressen schon auf eine kontinuierliche Weise neu konfiguriert wurden, sind solche Sprungberechnungen jedoch nicht mehr notwendig und können untersagt werden, um Rechenressourcen während Laufzeitinstanzen als Reaktion auf Speicheroperationsanforderungen zu bewahren.
  • Während eine beispielhafte Art der Implementierung der Plattform 100 von 1 und des beispielhaften Speicheranalysators 300 von 3 in den 1, 2A, 2B und 3 veranschaulicht ist, können eines/einer/eine oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in den 1, 2A, 2B und 3 veranschaulicht sind, kombiniert, geteilt, neu angeordnet, weggelassen, eliminiert und/oder auf beliebige andere Weise implementiert werden. Ferner können das beispielhafte SOC 102, der beispielhafte Prozessor 104, der beispielhafte Scratchpad 106, der beispielhafte L1-Cache 108, die beispielhafte MMU 110, die beispielhafte Plattform 100, der beispielhafte Speicherdetektor 310, der beispielhafte Speichergrößenprüfer 312, der beispielhafte Adressenzuweiser 314 und/oder allgemeiner der beispielhafte Speicheranalysator 300 der 1 und 3 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. Zusätzlich können das beispielhafte SOC 102, der beispielhafte Prozessor 104, der beispielhafte Scratchpad 106, der beispielhafte L1-Cache 108, die beispielhafte MMU 10, die beispielhafte Plattform 100, der beispielhafte Speicherdetektor 310, der beispielhafte Speichergrößenprüfer 312, der beispielhafte Adressenzuweiser 314 und/oder allgemeiner der beispielhafte Speicheranalysator 300 der 1 und 3 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. Somit könnten zum Beispiel beliebige des beispielhaften SOC 102, des beispielhaften Prozessors 104, des beispielhaften Scratchpad 106, des beispielhaften L1-Caches 108, der beispielhaften MMU 110, der beispielhaften Plattform 100, des beispielhaften Speicherdetektors 310, des beispielhaften Speichergrößenprüfers 312, des beispielhaften Adressenzuweisers 314 und/oder allgemeiner des beispielhaften Speicheranalysators 300 der 1 und 3 durch eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, einen oder mehrere programmierbare Prozessoren, eine oder mehrere programmierbare Steuerungen, eine oder mehrere Grafikverarbeitungseinheiten (GPU(s)), einen oder mehrere Digitalsignalprozessoren (DSP(s)), eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASIC(s)), eine oder mehrere programmierbare Logikvorrichtungen (PLD(s)) und/oder eine oder mehrere feldprogrammierbare Logikvorrichtungen (FPLD(s)) implementiert werden. Ferner könnten beliebige des beispielhaften SOC 102, des beispielhaften Prozessors 104, des beispielhaften Scratchpad 106, des beispielhaften L1-Caches 108, der beispielhaften MMU 110, der beispielhaften Plattform 100, des beispielhaften Speicherdetektors 310, des beispielhaften Speichergrößenprüfers 312, des beispielhaften Adressenzuweisers 314 und/oder allgemeiner des beispielhaften Speicheranalysators 300 der 1 und 3 durch eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, einen oder mehrere programmierbare Prozessoren, eine oder mehrere programmierbare Steuerungen, eine oder mehrere Grafikverarbeitungseinheiten (GPU(s)), einen oder mehrere Digitalsignalprozessoren (DSP(s)), eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASIC(s)), eine oder mehrere programmierbare Logikvorrichtungen (PLD(s)) und/oder eine oder mehrere feldprogrammierbare Logikvorrichtungen (FPLD(s)) implementiert werden. Wenn gelesen wird, dass beliebige der Einrichtungs- und Systemansprüche dieses Patents eine reine Software- und/oder Firmwareimplementierung abdecken, ist zumindest eine/eines/einer des beispielhaften SOC 102, des beispielhaften Prozessors 104, des beispielhaften Scratchpad 106, des beispielhaften L1-Caches 108, der beispielhaften MMU 110, der beispielhaften Plattform 100, des beispielhaften Speicherdetektors 310, des beispielhaften Speichergrößenprüfers 312, des beispielhaften Adressenzuweisers 314 und/oder allgemeiner des beispielhaften Speicheranalysators 300 der 1 und 3 hiermit ausdrücklich so definiert, dass er/sie/es eine nichtflüchtige computerlesbare Speicherungsvorrichtung oder Speicherungsplatte beinhaltet, wie etwa einen Speicher, eine DVD (Digital Versatile Disk), eine CD (Compact Disk), eine Blu-Ray-Disk usw., einschließlich der Software und/oder Firmware. Des Weiteren kann die beispielhafte Plattform 100 von 1 und/oder der beispielhafte Speicheranalysator 300 von 3 ein/en/e oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu den oder anstelle der in 1 und 3 veranschaulichten beinhalten und/oder kann mehr als eine/s von einer/m beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen beinhalten. Wie hierin verwendet, schließt der Ausdruck „in Kommunikation“, einschließlich Variationen davon, eine direkte Kommunikation und/oder indirekte Kommunikation über eine oder mehrere zwischenliegende Komponenten ein und erfordert keine direkte physische (z. B. verdrahtete) Kommunikation und/oder konstante Kommunikation, sondern beinhaltet stattdessen zusätzlich eine selektive Kommunikation mit periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder einmalige Ereignisse.
  • Flussdiagramme, die beispielhafte Hardwarelogik, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren der beispielhaften Plattform 100 von 1 und/oder des beispielhaften Speicheranalysators 300 der 1 und 3 repräsentieren, sind in den 4-5 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder (ein) Teil(e) eines ausführbaren Programms zur Ausführung durch einen Computerprozessor sein, wie etwa den Prozessor 612, der in der beispielhaften Prozessorplattform 600 gezeigt ist, die im Folgenden in Verbindung mit 6 besprochen wird. Das Programm kann in Software umgesetzt sein, die auf einem nichtflüchtigen computerlesbaren Speicherungsmedium gespeichert ist, wie etwa einer CD-ROM, einer Diskette, einer Festplatte, einer DVD, einer Blu-Ray-Disk oder einem mit dem Prozessor 612 assoziierten Speicher, aber das gesamte Programm und/oder Teile davon könnten alternativ dazu durch eine Vorrichtung, bei der es sich nicht um den Prozessor 612 handelt, ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Obwohl das beispielhafte Programm unter Bezugnahme auf die in den 4- 5 veranschaulichten Flussdiagramme beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren der beispielhaften Plattform 10 und des beispielhaften Speicheranalysators 300 verwendet werden. Beispielsweise kann die Reihenfolge der Ausführung der Blöcke geändert werden und/oder manche der beschriebenen Blöcke können geändert, entfernt oder kombiniert werden. Zusätzlich oder alternativ dazu können beliebige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (z. B. eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die so strukturiert sind, dass sie eine entsprechende Operation ohne die Ausführung von Software oder Firmware durchführen.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können in einem komprimierten Format und/oder einem verschlüsselten Format und/oder einem fragmentierten Format und/oder einem kompilierten Format und/oder einem ausführbaren Format und/oder einem paketisierten Format usw. gespeichert werden. Maschinenlesbare Anweisungen, wie hierin beschrieben, können als Daten (z. B. Teile von Anweisungen, Code, Repräsentationen von Code usw.) gespeichert werden, die zum Erstellen, Herstellen und/oder Erzeugen von maschinenausführbaren Anweisungen genutzt werden können. Beispielsweise können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speicherungsvorrichtungen und/oder Rechenvorrichtungen (z. B. Servern) gespeichert werden. Die maschinenlesbaren Anweisungen können Installation und/oder Modifikation und/oder Anpassung und/oder Aktualisierung und/oder Kombinieren und/oder Ergänzen und/oder Konfigurieren und/oder Entschlüsselung und/oder Dekomprimierung und/oder Entpacken und/oder Verteilung und/oder Neuzuordnung und/oder Kompilierung usw. erfordern, um sie durch eine Rechenvorrichtung und/oder eine andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Beispielsweise können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert werden, die individuell komprimiert, verschlüsselt und auf separaten Rechenvorrichtungen gespeichert sind, wobei die Teile nach ihrer Entschlüsselung, Dekomprimierung und Kombination einen Satz ausführbarer Anweisungen bilden, die ein Programm, wie etwa das hierin beschriebene, implementieren.
  • Bei einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert werden, in dem sie durch einen Computer gelesen werden können, aber einen Zusatz einer Bibliothek (z. B. einer DLL (Dynamic Link Library)), eines SDK (Software Development Kit), einer Anwendungsprogrammierungsschnittstelle (API) usw. erfordern, um die Anweisungen auf einer speziellen Rechenvorrichtung oder anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen möglicherweise konfiguriert werden (z. B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet werden usw.), bevor die maschinenlesbaren Anweisungen und/oder das (die) entsprechende(n) Programm(e) vollständig oder teilweise ausgeführt werden können. Somit sollen die offenbarten maschinenlesbaren Anweisungen und/oder das (die) entsprechende(n) Programm(e) derartige maschinenlesbare Anweisungen und/oder Programm(e) ungeachtet des speziellen Formats oder Zustands der maschinenlesbaren Anweisungen und/oder Programm(e) einschließen, wenn sie gespeichert oder anderweitig im Ruhezustand oder im Transit sind.
  • Die hier beschriebenen maschinenlesbaren Anweisungen können durch eine beliebige vergangene, gegenwärtige oder zukünftige Befehlssprache, Skriptsprache, Programmiersprache usw. repräsentiert werden. Zum Beispiel können die maschinenlesbaren Anweisungen unter Verwendung einer beliebigen der folgenden Sprachen repräsentiert werden: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
  • Wie oben erwähnt, können die beispielhaften Prozesse der 4-5 unter Verwendung von ausführbaren Anweisungen (z. B. computer- und/oder maschinenlesbaren Anweisungen) implementiert werden, die auf einem nichtflüchtigen Computer und/oder maschinenlesbaren Medium gespeichert sind, wie etwa einem Festplattenlaufwerk, einem Flash-Speicher, einem Nurlesespeicher, einer Compact Disk, einer Digital Versatile Disk, einem Cache, einem Direktzugriffsspeicher und/oder einer beliebigen anderen Speicherungsvorrichtung oder Speicherungsplatte, auf der Informationen für eine beliebige Dauer (z. B. für längere Zeiträume, permanent, kurzzeitig, zum temporären Puffern und/oder zum Cachen der Informationen) gespeichert sind. Wie hierin verwendet, wird der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich so definiert, dass er eine beliebige Art von computerlesbarer Speicherungsvorrichtung und/oder Speicherungsplatte beinhaltet und das Propagieren von Signalen ausschließt und Übertragungsmedien ausschließt.
  • „Beinhaltend“ und „umfassend“ (und alle Formen und Zeitformen davon) werden hierin als offene Begriffe verwendet. Wann auch immer ein Anspruch eine beliebige Form von „beinhalten“ und „umfassen“ (z. B. umfasst, beinhaltet, umfassend, beinhaltend, aufweisend usw.) als eine Präambel oder in einer Anspruchsrezitation einer beliebigen Art einsetzt, soll somit verstanden werden, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Rezitation zu fallen. Wie hierin verwendet, wenn der Ausdruck „mindestens“ als der Übergangsausdruck in zum Beispiel einer Präambel eines Anspruchs verwendet wird, ist er auf die gleiche Art und Weise offen, wie der Begriff „umfassend“ und „beinhaltend“ offen ist. Der Begriff „und/oder“, wenn er zum Beispiel in einer Form wie etwa A, B und/oder C verwendet wird, bezieht sich auf eine beliebige Kombination oder Teilmenge von A, B, C, wie etwa (1) A alleine, (2) B alleine, (3) C alleine, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C. Wie hierin im Zusammenhang der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, wird beabsichtigt, dass sich die Phrase „mindestens eines von A und B“ auf Implementierungen bezieht, einschließlich ein beliebiges von (1) mindestens eines von A, (2) mindestens eines von B und (3) mindestens eines von A und mindestens eines von B. Wie hierin im Zusammenhang der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, wird gleichermaßen beabsichtigt, dass sich die Phrase „mindestens eines von A oder B“ auf Implementierungen bezieht, einschließlich (1) mindestens eines von A, (2) mindestens eines von B und (3) mindestens eines von A und mindestens eines von B. Wie hierin im Zusammenhang der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Handlungen, Aktivitäten und/oder Schritten verwendet, wird beabsichtigt, dass sich die Phrase „mindestens eines von A und B“ auf Implementierungen bezieht, einschließlich ein beliebiges von (1) mindestens eines von A, (2) mindestens eines von B und (3) mindestens eines von A und mindestens eines von B. Wie hierin im Zusammenhang der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Handlungen, Aktivitäten und/oder Schritten verwendet, wird gleichermaßen beabsichtigt, dass sich die Phrase „mindestens eines von A oder B“ auf Implementierungen bezieht, einschließlich ein beliebiges von (1) mindestens eines von A, (2) mindestens eines von B und (3) mindestens eines von A und mindestens eines von B.
  • Wie hierin verwendet, schließen Bezüge im Singular (z. B. „ein“, „eine“, „erste/r/s“, „zweite/r/s“ usw.) keine Mehrzahl aus. Der Begriff „eine“ Entität, wie hierin verwendet, bezieht sich auf eine oder mehrere dieser Entität. Die Begriffe „ein“ (oder „eine“), „ein oder mehrere“ und „mindestens ein“ können hierin austauschbar verwendet werden. Obwohl einzeln aufgelistet können ferner mehrere Mittel, Elemente oder Verfahrenshandlungen durch z. B. eine einzige Einheit oder einen einzigen Prozessor implementiert werden. Zusätzlich dazu, obwohl einzelne Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, können diese möglicherweise kombiniert werden, und der Einschluss in verschiedenen Beispielen oder Ansprüchen deutet nicht an, dass eine Kombination von Merkmalen nicht machbar und/oder vorteilhaft ist.
  • Das Programm 400 von 4 beinhaltet Block 402, in dem der beispielhafte Speicheranalysator 300 bestimmt, ob es eine Speicheroperationsanforderung gibt. In manchen Beispielen bestimmt der beispielhafte Speicheranalysator 300, dass es keine Speicheroperationsanforderung gibt, und wartet (z. B. führt eine Schleife durch), bis eine solche Anforderung detektiert wird. In anderen Beispielen bestimmt der beispielhafte Speicheranalysator 300, dass es eine Speicheroperationsanforderung gibt (Block 402), wobei der beispielhafte Speicheranalysator 300 bestimmt, ob eine frühere virtuelle Speicheradressenneuzuweisung und/oder eine Plattformrekonfiguration stattgefunden hat (Block 404). Beispielsweise bestimmt der Speicheranalysator 300, ob der beispielhafte Adressenzuweiser 314 eine Adressenneuzuweisung (z. B. Neuabbilden virtueller Speicheradressen, sodass sie fortlaufend sind) und/oder eine Plattformrekonfiguration zu einer früheren Gelegenheit (z. B. externer Speicher hinzugefügt) durchgeführt hat (Block 404).
  • In manchen Beispielen detektiert der beispielhafte Speicheranalysator 300 keine derartige frühere virtuelle Speicherneuzuweisung und/oder erste Plattformrekonfiguration (Block 404). In anderen Beispielen detektiert der beispielhafte Speicheranalysator 300, dass eine zusätzliche Plattformrekonfiguration (z. B. externer Speicher hinzugefügt) nach mindestens einer früheren Plattformrekonfiguration stattgefunden hat, und erzeugt ein zweites Flag. Der beispielhafte Speicherdetektor 310 ruft ab, identifiziert und/oder anderweitig empfängt einen Kandidatenspeicher, wie etwa den beispielhaften Scratchpad-Speicher 306 und/oder den beispielhaften Cache-Speicher 308 von 3 (Block 406). Der beispielhafte Speicherdetektor 310 erhält auch die aktuellen Speicherkonfigurationsinformationen des Kandidatenspeichers (Block 408), um zu bestimmen, ob die virtuellen Adressen des Scratchpad- und Cache-Speichers nicht kontinuierlich (z. B. 2A) oder kontinuierlich sind (z. B. 2B).
  • 5 veranschaulicht zusätzliche Einzelheiten, die mit dem Erhalten der Speicherkonfigurationsinformationen von Block 408 assoziiert sind. In dem veranschaulichten Beispiel von 5 ruft der beispielhafte Speichergrößenprüfer 312 das virtuelle Speicherlayout ab (Block 502). Der beispielhafte Speichergrößenprüfer 312 bestimmt, ob der beispielhafte Scratchpad-Speicher 306 und der beispielhafte Cache-Speicher 308 in dem beispielhaften Kandidatenspeicher nicht kontinuierliche Adressen aufweisen (Block 504). Falls dem so ist, weist der beispielhafte Adressenzuweiser 314 die virtuelle Speicheradresse des beispielhaften Scratchpad-Speichers 306 neu zu, um kontinuierliche virtuelle Adressen mit dem beispielhaften Cache-Speicher 308 zu erzeugen, und setzt ein erstes Flag (Block 506). In anderen Beispielen detektiert der beispielhafte Speichergrößenprüfer 312 ein zweites Flag (z. B. neue Plattformrekonfiguration) und der beispielhafte Adressenzuweiser 314 weist die virtuellen Speicheradressen mindestens einer der jeweiligen Speichervorrichtungen neu zu. Sobald dem beispielhaften Scratchpad-Speicher 306 und dem Cache-Speicher 308 kontinuierliche virtuelle Adressen zugewiesen wurden, ermöglicht der beispielhafte Speicherdetektor 310 eine Speicherabbildung (Block 508) und kehrt zum Programm 400 von 4 zurück. Es versteht sich, dass der beispielhafte Scratchpad-Speicher 306 und der beispielhafte Cache-Speicher 308 vorkonfiguriert werden können, um in manchen Beispielen kontinuierliche virtuelle Adressen aufzuweisen (z. B. 2B). In diesem Beispiel detektiert der beispielhafte Speichergrößenprüfer 312, dass die virtuelle Speichervorrichtungskonfiguration keine virtuelle Adresslücke enthält (Block 504), und geht dazu über, die Speicherabbildung zu ermöglichen (Block 508).
  • Zu dem veranschaulichten Beispiel von 4 zurückkehrend bestimmt der beispielhafte Speichergrößenprüfer 312, ob der beispielhafte Eingangsdatenpuffer 302 mit dem identifizierten beispielhaften Kandidatenspeicher kompatibel ist (Block 410), und falls dem so ist, dann weist der beispielhafte Adressenzuweiser 314 den Kandidatenspeicher so zu, dass er mit dem beispielhaften Eingangsdatenpuffer 302 zu verwenden ist (Block 412) (z. B. wird erachtet, dass der in dieser Iteration analysierte Kandidatenspeicher groß genug ist, um die Größe des Eingangsdatenpuffers aufzunehmen). In manchen Beispielen kehrt das Programm 400 von 4 zu Block 406 zurück, um einen anderen beispielhaften Kandidatenspeicher zu identifizieren, falls der anfängliche Kandidatenspeicher und der Eingangsdatenpuffer nicht kompatibel sind (z. B. nicht groß genug ist, um die Eingangsdatengröße aufzunehmen). Der beispielhafte Speicherdetektor 310 bestimmt auch, ob ein anderer beispielhafter Eingangsdatenpuffer 302 gespeichert werden muss (Block 414). In manchen Beispielen identifiziert der beispielhafte Speicherdetektor 310 zusätzliche Speichervorrichtungen, die zum Verarbeiten von Eingangsdaten verwendet werden könnten. Selbst wenn beispielsweise eine zuvor evaluierte Kandidatenspeichervorrichtung groß genug ist, um eine Größe der Eingangsdaten aufzunehmen, könnte es eine oder mehrere zusätzliche Kandidatenspeichervorrichtungen der Plattform geben. Falls demnach die zusätzlichen Kandidatenspeichervorrichtungen der Plattform auch auf eine kontinuierliche Adressierungsweise im virtuellen Adressraum angeordnet sind, dann können größere Eingangsdatenanforderungen ohne eine Notwendigkeit, Sprungoffsetadresswerte zu berechnen, behandelt werden. Demnach identifiziert der beispielhafte Speicherdetektor 310 die zusätzlichen Speicherungsoptionen, die noch nicht analysiert wurden (Block 414), und die Steuerung kehrt zu Block 406 zurück. In anderen Beispielen detektiert der beispielhafte Speicherdetektor 310 keine anderen Eingangsdatenpuffer (Block 414), und die Steuerung geht zu Block 416 über.
  • In manchen Beispielen detektiert der beispielhafte Speicheranalysator 300 mehrere Speicheroperationsanforderungen. Sobald der beispielhafte Speicherdetektor 310 keine anderen Eingangsdatenpuffer detektiert (Block 414) oder der beispielhafte Speicheranalysator 300 bestimmt, dass eine frühere virtuelle Speicheradressenneuzuweisung und/oder Plattformrekonfiguration stattgefunden hat (Block 404), verhindert, umgeht und/oder anderweitig unterdrückt der beispielhafte Speicheranalysator 300, dass eine oder mehrere Standardprozessordirektiven zum Berechnen von Sprungoffsetadressen ausgeführt werden (Block 416). Der beispielhafte Speicheranalysator 300 ermöglicht eine Speicheroperation (z. B. ein Lesen, ein Schreiben, ein Speicher-Swap usw.) und kehrt zu Block 402 zurück (Block 418).
  • 6 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 600, die zum Ausführen der Anweisungen der 4-5 strukturiert ist, um die beispielhafte Plattform 100 von 1 und den beispielhaften Speicheranalysator 300 der 1 und 3 zu implementieren. Die Prozessorplattform 600 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z. B. ein neuronales Netzwerk), eine mobile Einrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, ein DVD-Player, ein CD-Player, ein digitaler Videorekorder, ein Blu-Ray-Player, eine Spielekonsole, ein persönlicher Videorekorder, eine Set-Top-Box, ein Headset oder eine andere tragbare Vorrichtung oder eine beliebige andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 600 des veranschaulichten Beispiels beinhaltet einen Prozessor 612. Der Prozessor 612 des veranschaulichten Beispiels ist Hardware. Der Prozessor 612 kann zum Beispiel durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, einen oder mehrere Mikroprozessoren, eine oder mehrere GPUs, DSPs oder Steuerungen von einer beliebigen gewünschten Familie oder einem beliebigen gewünschten Hersteller implementiert werden. Der Hardwareprozessor kann eine halbleiterbasierte (z. B. siliziumbasierte) Vorrichtung sein. In diesem Beispiel implementiert der Prozessor das beispielhafte SOC 102, den beispielhaften Prozessor 104, den beispielhaften Scratchpad 106, den beispielhaften L1-Cache 108, die beispielhafte MMU 110 und/oder allgemeiner die beispielhafte Plattform 100 von 1. Zusätzlich implementiert in diesem Beispiel der Prozessor 612 den beispielhaften Eingangsdatenpuffer 302, den beispielhaften unbeständigen Speicher 304, der aus dem beispielhaften Scratchpad-Speicher 306 und dem beispielhaften Cache-Speicher 308 besteht, den beispielhaften Speicherdetektor 310, den beispielhaften Speichergrößenprüfer 312, den beispielhaften Adressenzuweiser 314 und/oder allgemeiner den beispielhaften Speicheranalysator 300 von 3.
  • Der Prozessor 612 des veranschaulichten Beispiels beinhaltet einen lokalen Speicher 613 (z. B. einen Cache). Der Prozessor 612 des veranschaulichten Beispiels befindet sich über einen Bus 618 in Kommunikation mit einem Hauptspeicher, der einen unbeständigen Speicher 614 und einen beständigen Speicher 616 beinhaltet. Der unbeständige Speicher 614 kann durch SDRAM (Synchronous Dynamic Random Access Memory - synchroner dynamischer Direktzugriffsspeicher), DRAM (dynamischer Direktzugriffsspeicher), RDRAM® (RAMBUS® dynamischer Direktzugriffsspeicher) und/oder eine beliebige andere Art von Direktzugriffsspeicher-Vorrichtung implementiert werden. Der beständige Speicher 616 kann durch Flash-Speicher und/oder eine beliebige andere gewünschte Art von Speichervorrichtung implementiert werden. Ein Zugriff auf den Hauptspeicher 614, 616 wird durch eine Speichersteuerung gesteuert.
  • Die Prozessorplattform 600 des veranschaulichten Beispiels beinhaltet auch eine Schnittstellenschaltung 620. Die Schnittstellenschaltung 620 kann durch eine beliebige Art von Schnittstellenstandard implementiert werden, wie etwa eine Ethernet-Schnittstelle, einen USB (Universal Serial Bus), eine Bluetooth®-Schnittstelle, eine Nahfeldkommunikations(NFC)-Schnittstelle und/oder eine PCI-Express-Schnittstelle.
  • Bei dem veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 622 mit der Schnittstellenschaltung 620 verbunden. Die eine oder die mehreren Eingabevorrichtungen 622 gestatten einem Benutzer, Daten und/oder Befehle in den Prozessor 612 einzugeben. Die eine oder die mehreren Eingabevorrichtungen können zum Beispiel durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert werden.
  • Eine oder mehrere Ausgabevorrichtungen 624 sind auch mit der Schnittstellenschaltung 620 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtungen 1024 können zum Beispiel durch Anzeigevorrichtungen (z. B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhren(CRT)-Anzeige, eine IPS(In-Place Switching)-Anzeige, einen Touchscreen usw.), eine taktile Ausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert werden. Die Schnittstellenschaltung 620 des veranschaulichten Beispiels beinhaltet somit typischerweise eine Grafiktreiberkarte, einen Grafiktreiberchip und/oder einen Grafiktreiberprozessor.
  • Die Schnittstellenschaltung 620 des veranschaulichten Beispiels beinhaltet auch eine Kommunikationsvorrichtung, wie etwa einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Haus-Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle zum Ermöglichen des Austauschs von Daten mit externen Maschinen (z.B. Rechenvorrichtungen einer beliebigen Art) über das Netzwerk 626. Die Kommunikation kann zum Beispiel über eine Ethernet-Verbindung, eine DSL(Digital Subscriber Line)-Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Line-of-Site-System, ein Zellulartelefonsystem usw. stattfinden.
  • Die Prozessorplattform 600 des veranschaulichten Beispiels beinhaltet auch eine oder mehrere Massenspeicherungsvorrichtungen 628 zum Speichern von Software und/oder Daten. Beispiele für derartige Massenspeicherungsvorrichtungen 628 beinhalten Diskettenlaufwerke, Festplatten, CD-Laufwerke, Blu-Ray-Disk-Laufwerke, RAID(Redundant Array of Independent Disks)-Systeme und DVD(Digital Versatile Disk)-Laufwerke.
  • Die maschinenausführbaren Anweisungen 632 der 4-5 können in der Massenspeicherungsvorrichtung 628, im unbeständigen Speicher 614, im beständigen Speicher 616 und/oder auf einem entfernbaren nichtflüchtigen computerlesbaren Speicherungsmedium, wie etwa einer CD oder DVD, gespeichert werden.
  • Aus dem Vorstehenden wird ersichtlich, dass beispielhafte Verfahren, Einrichtungen und Herstellungsartikel offenbart wurden, die eine Kommunikation zwischen Teilprozessen eines Speicherverwaltungssystems erleichtern, um Eingangsdatenpuffer nahtlos auf verfügbaren Scratchpad- und Cache-Speicher abzubilden. In manchen Beispielen warnen hierin offenbarte dynamische kommunikative Prozesse einen Prozessor über einen nicht kontinuierlichen Scratchpad- und Cache-Speicher, sodass korrigierende Maßnahmen vor einer traditionellen Speicherabbildung ausgeführt werden können. Hinsichtlich einer herkömmlichen Speicherabbildung kann der Eingangsdatenpuffer beispielsweise alleinig im Cache-Speicher gespeichert oder zwischen dem Scratchpad- und Cache-Speicher geteilt werden, was zu einer Überbeanspruchung des Cache-Speichers und unnötig komplizierter Softwareimplementierung führt, die virtuelle Adresssprungberechnungen bei jeder Instanz einer Speicheroperation erfordert. Die offenbarten Verfahren, Einrichtungen, Systeme und Herstellungsartikel verbessern die Effizienz der Verwendung einer Rechenvorrichtung, indem eine Übernutzung von Cache-Speicher und komplizierte Softwareimplementierungen zum Behandeln der Datenpufferspeicherung verhindert werden. Die offenbarten Verfahren, Einrichtungen, Systeme und Herstellungsartikel sind dementsprechend auf eine oder mehrere Verbesserungen der Funktionsweise eines Computers ausgerichtet.
  • Hierin sind beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel zum Verwalten von Speicherzuordnung offenbart. Weitere Beispiele und Kombinationen davon beinhalten das Folgende:
  • Beispiel 1 beinhaltet eine Einrichtung zum Reduzieren der Speicherzugriffsoperationszeit, wobei die Einrichtung Folgendes umfasst: einen Speicherdetektor zum Scannen einer Plattform nach verfügbaren Speichervorrichtungen, einen Speichergrößenprüfer zum Abrufen eines virtuellen Speicherlayouts, das mit den verfügbaren Speichervorrichtungen assoziiert ist, die mit der Plattform assoziiert sind, und zum Bestimmen, ob virtuelle Adressgrenzen jeweiliger verfügbarer Speichervorrichtungen eine virtuelle Adresslücke dazwischen erzeugen, und einen Adressenzuweiser zum Neuzuweisen virtueller Adressen einer ersten der jeweiligen verfügbaren Speichervorrichtungen, um die virtuelle Adresslücke zu entfernen.
  • Beispiel 2 beinhaltet die Einrichtung wie in Beispiel 1 definiert, wobei die verfügbaren Speichervorrichtungen einen Scratchpad-Speicher und/oder einen Level-Eins(L1)-Cache und/oder einen Level-Zwei(L2)-Cache und/oder einen dynamischen Direktzugriffsspeicher (DRAM) beinhalten.
  • Beispiel 3 beinhaltet die Einrichtung wie in Beispiel 2 definiert, wobei das virtuelle Speicherlayout der verfügbaren Speichervorrichtungen ohne eine virtuelle Adresslücke vorkonfiguriert werden kann.
  • Beispiel 4 beinhaltet die Einrichtung wie in Beispiel 1 definiert, wobei der Speichergrößenprüfer ausgelegt ist zum Identifizieren einer zweiten verfügbaren Speichervorrichtung, wenn eine Größe der Eingangsdaten eine Kapazität der ersten der jeweiligen verfügbaren Speichervorrichtungen überschreitet.
  • Beispiel 5 beinhaltet die Einrichtung wie in Beispiel 1 definiert, wobei der Adressenzuweiser ausgelegt ist zum Setzen eines ersten Flags als Reaktion auf das Neuzuweisen der virtuellen Adressen zu einer ersten Zeit.
  • Beispiel 6 beinhaltet die Einrichtung wie in Beispiel 5 definiert, die ferner einen Speicheranalysator zum Verhindern einer Neuanalyse der Plattform als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit beinhaltet, wenn das erste Flag gesetzt ist.
  • Beispiel 7 beinhaltet die Einrichtung wie in Beispiel 5 definiert, wobei der Speicheranalysator ausgelegt ist zum Verhindern einer Sprungadressenberechnung als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit, wenn das erste Flag gesetzt ist.
  • Beispiel 8 beinhaltet die Einrichtung wie in Beispiel 7 definiert, wobei der Speicheranalysator ausgelegt ist zum Neuanalysieren der Plattform und Erzeugen eines zweiten Flags als Reaktion auf eine Speichervorrichtungsrekonfiguration der Plattform.
  • Beispiel 9 beinhaltet die Einrichtung wie in Beispiel 8 definiert, wobei der Speichergrößenprüfer ausgelegt ist zum Detektieren des zweiten Flags nach der Speichervorrichtungsrekonfiguration der Plattform, wobei das zweite Flag veranlassen soll, dass der Adressenzuweiser virtuelle Adressen mindestens einer der jeweiligen verfügbaren Speichervorrichtungen neu zuweist, um die virtuelle Adresslücke zu entfernen.
  • Beispiel 10 beinhaltet ein computerimplementiertes Verfahren zum Reduzieren der Speicherzugriffsoperationszeit, wobei das Verfahren Folgendes umfasst: Scannen, durch Ausführen einer Anweisung mit mindestens einem Prozessor, einer Plattform nach verfügbaren Speichervorrichtungen, Abrufen, durch Ausführen einer Anweisung mit mindestens dem Prozessor, eines virtuellen Speicherlayouts, das mit den verfügbaren Speichervorrichtungen assoziiert ist, die mit der Plattform assoziiert sind, und Bestimmen, durch Ausführen einer Anweisung mit mindestens dem Prozessor, ob virtuelle Adressgrenzen jeweiliger verfügbarer Speichervorrichtungen eine virtuelle Adresslücke dazwischen erzeugen, und Neuzuweisen, durch Ausführen einer Anweisung mit mindestens dem Prozessor, virtueller Adressen einer ersten der jeweiligen verfügbaren Speichervorrichtungen, um die virtuelle Adresslücke zu entfernen.
  • Beispiel 11 beinhaltet das computerimplementierte Verfahren wie in Beispiel 10 definiert, das ferner beinhaltet Identifizieren einer zweiten verfügbaren Speichervorrichtung, wenn eine Größe der Eingangsdaten eine Kapazität der ersten der jeweiligen verfügbaren Speichervorrichtungen überschreitet.
  • Beispiel 12 beinhaltet das computerimplementierte Verfahren wie in Beispiel 10 definiert, das ferner beinhaltet Setzen eines ersten Flags als Reaktion auf das Neuzuweisen der virtuellen Adressen zu einer ersten Zeit.
  • Beispiel 13 beinhaltet das computerimplementierte Verfahren wie in Beispiel 11 definiert, das ferner beinhaltet Verhindern einer Neuanalyse der Plattform als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit, wenn das erste Flag gesetzt ist.
  • Beispiel 14 beinhaltet das computerimplementierte Verfahren wie in Beispiel 11 definiert, das ferner beinhaltet Verhindern einer Sprungadressenberechnung als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit, wenn das erste Flag gesetzt ist.
  • Beispiel 15 beinhaltet das computerimplementierte Verfahren wie in Beispiel 14 definiert, das ferner beinhaltet Neuanalysieren der Plattform und Erzeugen eines zweiten Flags als Reaktion auf eine Speichervorrichtungsrekonfiguration der Plattform.
  • Beispiel 16 beinhaltet das computerimplementierte Verfahren wie in Beispiel 15 definiert, das ferner beinhaltet Detektieren des zweiten Flags nach der Speichervorrichtungsrekonfiguration der Plattform, wobei das zweite Flag veranlassen soll, dass der Adressenzuweiser virtuelle Adressen mindestens einer der jeweiligen verfügbaren Speichervorrichtungen neu zuweist, um die virtuelle Adresslücke zu entfernen.
  • Beispiel 17 beinhaltet ein nichtflüchtiges computerlesbares Speicherungsmedium, das computerlesbare Anweisungen umfasst, die bei ihrer Ausführung veranlassen, dass mindestens ein Prozessor zumindest Folgendes ausführt: Scannen einer Plattform nach verfügbaren Speichervorrichtungen, Abrufen eines virtuellen Speicherlayouts, das mit den verfügbaren Speichervorrichtungen assoziiert ist, die mit der Plattform assoziiert sind, Bestimmen, ob virtuelle Adressgrenzen jeweiliger verfügbarer Speichervorrichtungen eine virtuelle Adresslücke dazwischen erzeugen, und Neuzuweisen virtueller Adressen einer ersten der jeweiligen verfügbaren Speichervorrichtungen, um die virtuelle Adresslücke zu entfernen.
  • Beispiel 18 beinhaltet das nichtflüchtige computerlesbare Speicherungsmedium wie in Beispiel 17 definiert, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor eine zweite verfügbare Speichervorrichtung identifiziert, wenn eine Größe der Eingangsdaten eine Kapazität der ersten der jeweiligen der verfügbaren Speichervorrichtungen überschreitet.
  • Beispiel 19 beinhaltet das nichtflüchtige computerlesbare Speicherungsmedium wie in Beispiel 17 definiert, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor ein erstes Flag als Reaktion auf das Neuzuweisen der virtuellen Adressen zu einer ersten Zeit setzt.
  • Beispiel 20 beinhaltet das nichtflüchtige computerlesbare Speicherungsmedium wie in Beispiel 19 definiert, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor eine Neuanalyse der Plattform als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit verhindert, wenn das erste Flag gesetzt ist.
  • Beispiel 21 beinhaltet das nichtflüchtige computerlesbare Speicherungsmedium wie in Beispiel 19 definiert, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor eine Sprungadressenberechnung als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit verhindert, wenn das erste Flag gesetzt ist.
  • Beispiel 22 beinhaltet das nichtflüchtige computerlesbare Speicherungsmedium wie in Beispiel 21 definiert, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor die Plattform neu analysiert und ein zweites Flag als Reaktion auf eine Speichervorrichtungsrekonfiguration der Plattform erzeugt.
  • Beispiel 23 beinhaltet das nichtflüchtige computerlesbare Speicherungsmedium wie in Beispiel 22 definiert, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor das zweite Flag nach der Speichervorrichtungsrekonfiguration der Plattform detektiert, wobei das zweite Flag veranlassen soll, dass der Adressenzuweiser virtuelle Adressen mindestens einer der jeweiligen verfügbaren Speichervorrichtungen neu zuweist, um die virtuelle Adresslücke zu entfernen.
  • Obwohl gewisse beispielhafte Verfahren, Einrichtungen und Herstellungsartikel hier offenbart wurden, ist der Schutzumfang dieses Patents nicht darauf beschränkt. Vielmehr deckt dieses Patent alle Verfahren, Einrichtungen und Herstellungsartikel ab, die angemessen in den Schutzumfang der Ansprüche dieses Patents fallen.
  • Die folgenden Ansprüche werden hiermit durch diesen Bezug in die ausführliche Beschreibung aufgenommen, wobei jeder Anspruch alleine als eine separate Ausführungsform der vorliegenden Offenbarung dasteht.

Claims (25)

  1. Einrichtung zum Reduzieren der Speicherzugriffsoperationszeit, wobei die Einrichtung Folgendes umfasst: einen Speicherdetektor zum Scannen einer Plattform nach verfügbaren Speichervorrichtungen; einen Speichergrößenprüfer zum: Abrufen eines virtuellen Speicherlayouts, das mit den verfügbaren Speichervorrichtungen assoziiert ist, die mit der Plattform assoziiert sind, und Bestimmen, ob virtuelle Adressgrenzen jeweiliger verfügbarer Speichervorrichtungen eine virtuelle Adresslücke dazwischen erzeugen; und einen Adressenzuweiser zum Neuzuweisen virtueller Adressen einer ersten der jeweiligen verfügbaren Speichervorrichtungen, um die virtuelle Adresslücke zu entfernen.
  2. Einrichtung nach Anspruch 1, wobei die verfügbaren Speichervorrichtungen einen Scratchpad-Speicher und/oder einen Level-Eins(L1)-Cache und/oder einen Level-Zwei(L2)-Cache und/oder einen dynamischen Direktzugriffsspeicher (DRAM) beinhalten.
  3. Einrichtung nach Anspruch 1 oder 2, wobei das virtuelle Speicherlayout der verfügbaren Speichervorrichtungen ohne eine virtuelle Adresslücke vorkonfiguriert werden kann.
  4. Einrichtung nach einem der Ansprüche 1, 2 oder 3, wobei der Speichergrößenprüfer ausgelegt ist zum Identifizieren einer zweiten verfügbaren Speichervorrichtung, wenn eine Größe der Eingangsdaten eine Kapazität der ersten der jeweiligen der verfügbaren Speichervorrichtungen überschreitet.
  5. Einrichtung nach Anspruch 1, wobei der Adressenzuweiser ausgelegt ist zum Setzen eines ersten Flags als Reaktion auf das Neuzuweisen der virtuellen Adressen zu einer ersten Zeit.
  6. Einrichtung nach Anspruch 5, die ferner einen Speicheranalysator zum Verhindern einer Neuanalyse der Plattform als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit beinhaltet, wenn das erste Flag gesetzt ist.
  7. Einrichtung nach Anspruch 5, wobei der Speicheranalysator ausgelegt ist zum Verhindern einer Sprungadressenberechnung als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit, wenn das erste Flag gesetzt ist.
  8. Einrichtung nach Anspruch 7, wobei der Speicheranalysator ausgelegt ist zum Neuanalysieren der Plattform und Erzeugen eines zweiten Flags als Reaktion auf eine Speichervorrichtungsrekonfiguration der Plattform.
  9. Einrichtung nach Anspruch 8, wobei der Speichergrößenprüfer ausgelegt ist zum Detektieren des zweiten Flags nach der Speichervorrichtungsrekonfiguration der Plattform, wobei das zweite Flag veranlassen soll, dass der Adressenzuweiser virtuelle Adressen mindestens einer der jeweiligen verfügbaren Speichervorrichtungen neu zuweist, um die virtuelle Adresslücke zu entfernen.
  10. Computerimplementiertes Verfahren zum Reduzieren der Speicherzugriffsoperationszeit, wobei das Verfahren Folgendes umfasst: Scannen, durch Ausführen einer Anweisung mit mindestens einem Prozessor, einer Plattform nach verfügbaren Speichervorrichtungen; Abrufen, durch Ausführen einer Anweisung mit mindestens dem Prozessor, eines virtuellen Speicherlayouts, das mit den verfügbaren Speichervorrichtungen assoziiert ist, die mit der Plattform assoziiert sind; Bestimmen, durch Ausführen einer Anweisung mit mindestens dem Prozessor, ob virtuelle Adressgrenzen jeweiliger verfügbarer Speichervorrichtungen eine virtuelle Adresslücke dazwischen erzeugen; und Neuzuweisen, durch Ausführen einer Anweisung mit mindestens einem Prozessor, virtueller Adressen einer ersten der jeweiligen verfügbaren Speichervorrichtungen, um die virtuelle Adresslücke zu entfernen.
  11. Computerimplementiertes Verfahren nach Anspruch 10, das ferner beinhaltet Identifizieren einer zweiten verfügbaren Speichervorrichtung, wenn eine Größe der Eingangsdaten eine Kapazität der ersten der jeweiligen verfügbaren Speichervorrichtungen überschreitet.
  12. Computerimplementiertes Verfahren nach einem der Ansprüche 10 bis 11, das ferner beinhaltet Setzen eines ersten Flags als Reaktion auf das Neuzuweisen der virtuellen Adressen zu einer ersten Zeit.
  13. Computerimplementiertes Verfahren nach einem der Ansprüche 10 bis 12, das ferner beinhaltet Verhindern einer Sprungadressenberechnung als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit, wenn das erste Flag gesetzt ist.
  14. Computerimplementiertes Verfahren nach Anspruch 13, das ferner beinhaltet Neuanalysieren der Plattform und Erzeugen eines zweiten Flags als Reaktion auf eine Speichervorrichtungsrekonfiguration der Plattform.
  15. Computerimplementiertes Verfahren nach Anspruch 14, das ferner beinhaltet Detektieren des zweiten Flags nach der Speichervorrichtungsrekonfiguration der Plattform, wobei das zweite Flag veranlassen soll, dass der Adressenzuweiser virtuelle Adressen mindestens einer der jeweiligen verfügbaren Speichervorrichtungen neu zuweist, um die virtuelle Adresslücke zu entfernen.
  16. Computerlesbares Speicherungsmedium, das computerlesbare Anweisungen umfasst, die bei ihrer Ausführung veranlassen, dass mindestens ein Prozessor zumindest Folgendes ausführt: Scannen einer Plattform nach verfügbaren Speichervorrichtungen; Abrufen eines virtuellen Speicherlayouts, das mit den verfügbaren Speichervorrichtungen assoziiert ist, die mit der Plattform assoziiert sind; Bestimmen, ob virtuelle Adressgrenzen jeweiliger verfügbarer Speichervorrichtungen eine virtuelle Adresslücke dazwischen erzeugen; und Neuzuweisen virtueller Adressen einer ersten der jeweiligen verfügbaren Speichervorrichtungen, um die virtuelle Adresslücke zu entfernen.
  17. Computerlesbares Medium nach Anspruch 16, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor eine zweite verfügbare Speichervorrichtung identifiziert, wenn eine Größe der Eingangsdaten eine Kapazität der ersten der jeweiligen der verfügbaren Speichervorrichtungen überschreitet.
  18. Computerlesbares Medium nach einem der Ansprüche 16 bis 17, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor ein erstes Flag als Reaktion auf das Neuzuweisen der virtuellen Adressen zu einer ersten Zeit setzt.
  19. Computerlesbares Medium nach Anspruch 18, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor eine Sprungadressenberechnung als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit verhindert, wenn das erste Flag gesetzt ist.
  20. Computerlesbares Medium nach Anspruch 19, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor die Plattform neu analysiert und ein zweites Flag als Reaktion auf eine Speichervorrichtungsrekonfiguration der Plattform erzeugt.
  21. Computerlesbares Medium nach Anspruch 20, wobei die Anweisungen bei ihrer Ausführung veranlassen, dass der mindestens eine Prozessor das zweite Flag nach der Speichervorrichtungsrekonfiguration der Plattform detektiert, wobei das zweite Flag veranlassen soll, dass der Adressenzuweiser virtuelle Adressen mindestens einer der jeweiligen verfügbaren Speichervorrichtungen neu zuweist, um die virtuelle Adresslücke zu entfernen.
  22. Einrichtung zum Reduzieren der Speicherzugriffsoperationszeit, wobei die Einrichtung Folgendes umfasst: Mittel zum Scannen einer Plattform nach verfügbaren Speichervorrichtungen; Mittel zum Prüfen zum: Abrufen eines virtuellen Speicherlayouts, das mit den verfügbaren Speichervorrichtungen assoziiert ist, die mit der Plattform assoziiert sind, und Bestimmen, ob virtuelle Adressgrenzen jeweiliger verfügbarer Speichervorrichtungen eine virtuelle Adresslücke dazwischen erzeugen; und Mittel zum Zuweisen, um virtuelle Adressen einer ersten der jeweiligen verfügbaren Speichervorrichtungen neu zuzuweisen, um die virtuelle Adresslücke zu entfernen.
  23. Einrichtung nach Anspruch 22, wobei das Zuweisungsmittel ausgelegt ist zum Setzen eines ersten Flags als Reaktion auf das Neuzuweisen der virtuellen Adressen zu einer ersten Zeit.
  24. Einrichtung nach Anspruch 23, die ferner Mittel zum Analysieren beinhaltet, um eine Sprungadressenberechnung als Reaktion auf eine Speicheroperationsanforderung zu einer zweiten Zeit zu verhindern, wenn das erste Flag gesetzt ist.
  25. Einrichtung nach Anspruch 24, wobei das Analysemittel ausgelegt ist zum Neuanalysieren der Plattform und Erzeugen eines zweiten Flags als Reaktion auf eine Speichervorrichtungsrekonfiguration der Plattform.
DE102020118000.4A 2019-08-13 2020-07-08 Verfahren, systeme, herstellungsartikel und einrichtungen zum verwalten der speicherzuordnung Pending DE102020118000A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/539,496 US11347551B2 (en) 2019-08-13 2019-08-13 Methods, systems, articles of manufacture and apparatus to manage memory allocation
US16/539,496 2019-08-13

Publications (1)

Publication Number Publication Date
DE102020118000A1 true DE102020118000A1 (de) 2021-02-18

Family

ID=68695217

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020118000.4A Pending DE102020118000A1 (de) 2019-08-13 2020-07-08 Verfahren, systeme, herstellungsartikel und einrichtungen zum verwalten der speicherzuordnung

Country Status (4)

Country Link
US (1) US11347551B2 (de)
JP (1) JP2021034017A (de)
CN (1) CN112395217A (de)
DE (1) DE102020118000A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347551B2 (en) 2019-08-13 2022-05-31 Intel Corporation Methods, systems, articles of manufacture and apparatus to manage memory allocation
CN113742131B (zh) * 2020-05-29 2024-04-19 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机程序产品
US20220207411A1 (en) * 2020-12-28 2022-06-30 Advanced Micro Devices, Inc. Clustering of machine learning (ml) functional components

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4760374A (en) * 1984-11-29 1988-07-26 Advanced Micro Devices, Inc. Bounds checker
US6675278B1 (en) * 2000-04-19 2004-01-06 Motorola, Inc. Method and apparatus for managing memory
US6751718B1 (en) * 2001-03-26 2004-06-15 Networks Associates Technology, Inc. Method, system and computer program product for using an instantaneous memory deficit metric to detect and reduce excess paging operations in a computer system
US7421539B1 (en) * 2004-05-18 2008-09-02 Sun Microsystems, Inc. Method and system for concurrent garbage collection and mutator execution
US7620793B1 (en) * 2006-08-28 2009-11-17 Nvidia Corporation Mapping memory partitions to virtual memory pages
US8738840B2 (en) * 2008-03-31 2014-05-27 Spansion Llc Operating system based DRAM/FLASH management scheme
US11347551B2 (en) 2019-08-13 2022-05-31 Intel Corporation Methods, systems, articles of manufacture and apparatus to manage memory allocation

Also Published As

Publication number Publication date
US20190370072A1 (en) 2019-12-05
JP2021034017A (ja) 2021-03-01
US11347551B2 (en) 2022-05-31
CN112395217A (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
DE112013007780B3 (de) Vorrichtung, nicht flüchtiges, maschinenlesbares medium und verfahren zur gemeinsamen nutzung von virtuellem speicher
DE112013007658B4 (de) Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE69802836T2 (de) Anwendungsprogramierungsschnittstelle zum ermöglichen der zuordnung eines physikalischen speichers in einem virtuellen speicher zur steuerung von anwendungsprogrammen
DE112017003294B4 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE102020118000A1 (de) Verfahren, systeme, herstellungsartikel und einrichtungen zum verwalten der speicherzuordnung
DE102020102783A1 (de) Verfahren und einrichtungen zum verbessern einer leistungsdatensammlung einer hochleistungsberechnungsanwendung
DE112012000635T5 (de) Dynamische Speicherverwaltung in einer virtualisierten Datenverarbeitungsumgebung
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE102018209205A1 (de) Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
DE112015000430T5 (de) Einheitliche Speichersysteme und -verfahren
DE112006003081T5 (de) Leistungspriorisierung in Multithreadprozessoren
DE102020119519A1 (de) Verfahren und einrichtungen zum ermöglichen einer "out-of-order"-pipeline-ausführung der statischen abbildung einer arbeitslast
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE112012004629T5 (de) Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene
DE112010004784T5 (de) Effizientes Laden von Daten in den Speicher eines Rechnersystems
DE112012006665T5 (de) Wählbare Grafik-Controller zur Ausgabenanzeige
DE102014103056A1 (de) Ein-Chip-System und Verfahren des Betreibens desselben
DE112020004661T5 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE112010004972T5 (de) Domänenbasiertes Cache-Kohärenzprotokoll
DE102019114027A1 (de) Verfahren und Vorrichtungen zur Optimierung dynamischer Speichervergaben in mehrstufigen Speichersystemen
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE112014000340T5 (de) Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern
DE112020000865T5 (de) Speicherverwaltungssystem