DE60027395T2 - Befehlsschleifenspuffer - Google Patents

Befehlsschleifenspuffer Download PDF

Info

Publication number
DE60027395T2
DE60027395T2 DE60027395T DE60027395T DE60027395T2 DE 60027395 T2 DE60027395 T2 DE 60027395T2 DE 60027395 T DE60027395 T DE 60027395T DE 60027395 T DE60027395 T DE 60027395T DE 60027395 T2 DE60027395 T2 DE 60027395T2
Authority
DE
Germany
Prior art keywords
cache
loop
branch
register
address
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.)
Expired - Lifetime
Application number
DE60027395T
Other languages
English (en)
Other versions
DE60027395D1 (de
Inventor
Timothy D. Dallas Anderson
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Application granted granted Critical
Publication of DE60027395D1 publication Critical patent/DE60027395D1/de
Publication of DE60027395T2 publication Critical patent/DE60027395T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT

Description

  • Diese Erfindung betrifft das Gebiet von integrierten Schaltungen und ist insbesondere auf eine Mikroprozessor- und Digitalsignalprozessor-Architektur gerichtet.
  • Wie auf dem Fachgebiet gut bekannt ist, haben Fortschritte in der Technologie der Fertigung von integrierten Schaltungen und im Schaltungsentwurf sowie in der Schaltungsarchitektur den weit verbreiteten Einsatz von befehlsprogrammierbaren Logikvorrichtungen in einem breiten Bereich von elektronischen Systemen ermöglicht. Der Umfang von modernen digitalen Systemen liegt in einem Größenbereich, der von in der Hand gehaltenen Systemen, wie z. B. drahtlosen Telephonen und persönlichen digitalen Assistenten (PDAs), bis zu Computersystemen im großen Maßstab reicht, und in einem Funktonalitätsbereich, der von eingebetteten Steuervorrichtungen bis zu Superrechenanwendungen reicht. Die programmierbaren Logikvorrichtungen, die in solchen Systemen enthalten sind, können Universalvorrichtungen wie z. B. Mikroprozessoren oder Vorrichtungen, die sich für bestimmte Arten von Befehlsausführung besonders eignen, wie z. B. Digitalsignalprozessoren (DSPs) sein; für die Zwecke der folgenden Beschreibung werden Vorrichtungen dieser Arten allgemein als Zentraleinheiten oder CPUs bezeichnet.
  • Auf dem Fachgebiet werden CPUs grundsätzlich in Verbindung mit einem Direktzugriffsspeicher (RAM) für die Speicherung von Datenoperanden und Ergebnissen und auch für die Speicherung der Programmbefehle, die die gewünschte Datenverarbeitung lenken, implementiert. In relativ großen und komplexen Systemen erfordern die notwendigen Speicherressourcen die Verwendung eines externen RAM (relativ zur CPU) in Anbetracht dessen, dass chipinterne Speicherressourcen notwendigerweise ziemlich begrenzt sind. Die Verwendung eines externen Speichers führt natürlich im Allgemeinen zu einer verringerten Leistung aufgrund der Overhead-Operationen, die für den Zugriff auf den externen Speicher erforderlich sind, und aufgrund von Bandbreitenbegrenzungen in der Datenübertragung zwischen dem externen Speicher und der CPU. Außerdem ist die bei der Verwendung des externen Speichers verbrauchte Leistung typischerweise viel größer als diejenige, die für einen chipinternen Speicher in der CPU erforderlich ist, hauptsächlich aufgrund von Signalansteueranforderungen zwischen Chips.
  • Folglich verwenden viele moderne Mikroprozessor- und DSP-Architekturen nun Cache-Speichersysteme, um die Leistung zu verbessern und den Leistungsverbrauch des gesamten Systems zu verringern. Grundsätzlich werden Cache-Speicher durch kleine Hochgeschwindigkeitsspeicher implementiert, die sowohl physikalisch (d. h. chipintern oder durch einen speziellen Bus mit kurzer Reichweite wie z. B. einen "Rückseiten"-Cache-Bus verbunden) als auch logisch (d. h. erfordern nicht die Verwendung einer allgemeinen Schnittstellenschaltung, von Busmastering und dergleichen) "näher" an der CPU liegen. Der Cache-Speicher speichert Daten und Befehlscodes, für die die CPU eine relativ hohe Zugriffswahrscheinlichkeit hat, auf der Basis von bestimmten Annahmen. Viele Cache-Speicher beruhen beispielsweise auf der Annahme, dass auf Datenoperanden und Befehls-Operationscodes häufig der Reihe nach zugegriffen wird, in welchem Fall die zugehörige CPU die Cache-Speicher in Blöcken (d. h. Cache-Zeilen) auf der Basis einer geholten Speicheradresse lädt. Zugriffe auf den Cache werden typischerweise durch die CPU ausgeführt, die die Speicheradresse eines zu holenden Datenoperanden oder Befehls mit den Adressen der aktuellen Einträge im Cache vergleicht, um festzustellen, ob das Ziel des Holens aus dem Cache abgerufen werden kann oder auf dieses statt dessen vom externen Speicher zugegriffen werden muss. Viele Strategien für die Speicherung, den Zugriff und die Aktualisierung von Cache-Speichern sowie die Anordnung von Cache-Speichern in mehreren Ebenen sind auf dem Fachgebiet gut bekannt.
  • Viele modernen CPU-Architekturen, insbesondere jene der Harvard-Architekturklasse, in denen ein Daten- und Programmspeicher voneinander getrennt sind, umfassen separate Cache-Speicher für Daten und Befehle. Tatsächlich wird der Begriff Harvard-Architektur nun häufig in Verbindung mit CPUs mit einem einzelnen Hauptspeicher, jedoch mit separaten Daten- und Befehls-Caches verwendet. Diese Trennung von Daten- und Befehls-Caches nutzt die verschiedenen Datenpfade und vielleicht verschiedene Punkte in der Befehlspipeline, durch die Befehle und Datenoperanden geholt werden, wobei somit eine effiziente Cache-Nutzung zumindest auf einer unteren Ebene (z. B. des Cache der Ebene 1) bereitgestellt wird.
  • Selbst mit der Bereitstellung eines separaten Befehls-Cache kann die Bestimmung, welche Befehle im Befehls-Cache gespeichert werden sollen, bei Versuchen in Richtung der Maximierung der Cache-"Treffer"-Rate (d. h. des Prozentsatzes von Holvorgängen, die aus dem Cache ausgeführt werden), variieren. Eine hohe Cache-Trefferrate verbessert natürlich die Leistung der CPU und die Leistungseffizienz des Systems. Andere Faktoren neben der Cache-Trefferrate sind in dieser Hinsicht jedoch wichtig; beispielsweise kann sich ein signifikanter Leistungsverbrauch aus dem häufigen Neuladen des Cache aus dem Speicher ergeben.
  • Als Hintergrund umfassen frühere CPUs einen "Blockwiederholungs"-Befehl in ihrem Befehlssatz, in Reaktion auf den die CPU einen Befehlsschleifenpuffer mit dem angegebenen Block lädt. Ein Beispiel einer solchen früheren CPU ist die 320C54x-Familie von Digitalsignalprozessoren, die von Texas Instruments Incorporated erhältlich ist.
  • Eine weitere herkömmliche Vorgehensweise für die Verwendung eines Befehls-Cache ist im US-Patent Nr. 5 579 493 beschrieben, in dem das von der CPU ausgeführte Programm einen "Wiederholungs"-Befehl umfasst, der ein Modul des Programms identifiziert, das wiederholt ausgeführt werden soll. In diesem US-Patent Nr. 5 579 493 wird der wiederholte Block von Befehlen in einem Befehlspuffer gespeichert, was Holvorgänge der identifizierten Befehle vielmehr aus dem Befehlspuffer als aus dem Speicher ermöglicht, wobei folglich Leistung eingespart wird. Diese Vorgehensweise erfordert jedoch auch die Verwendung eines speziellen Befehls (des "Wiederholungs"-Befehls), was natürlich die Verwendung des Merkmals für den Programmierer nicht-transparent macht.
  • Als weiterer Hintergrund ist eine weitere herkömmliche Befehls-Cache-Methode im US-Patent Nr. 4 626 988 beschrieben. Diese Methode speichert jeden geholten Befehl in einem Look-Ahead-Befehlsholpuffer. Bei der Ausführung einer Schleife tritt die Befehlsholeinheit in eine Schleifenbetriebsart ein, in der Befehle aus dem Puffer geholt werden. Jeder geholte Befehl muss jedoch zur Vorbereitung auf den möglichen Eintritt in die Schleifenbetriebsart im Puffer gespeichert werden.
  • US-A-5 920 890 offenbart ein Cache-Speichersystem mit verteiltem Kennzeichen, in dem ein Schleifen-Cache in einem Datenverarbeitungssystem zum Liefern von Befehlen zu einer CPU verwendet wird, um das Zugreifen auf einen Hauptspeicher zu vermeiden. Ob im Schleifen-Cache gespeicherte Befehle zur CPU geliefert werden können, wird durch ein verteiltes Kennzeichen bestimmt, das der durch die CPU berechneten Befehlsadresse zugeordnet ist. Die Befehlsadresse umfasst einen LCACHE-Indexabschnitt, einen ITAG-Abschnitt und ein GTAG. Der LCACHE-Index wählt entsprechende Stellen in jeder einer ITAG-Matrix, einer Befehlsmatrix und einer Matrix von gültigen Bits aus. Ein gespeicherter GTAG-Wert wird ungeachtet dessen gewählt, worauf der LCACHE-Index zeigt. Der GTAG-Abschnitt der Befehlsadresse wird mit dem gespeicherten GTAG-Wert verglichen. Der ITAG-Abschnitt der Befehlsadresse wird mit dem indizierten ITAG der ITAG-Matrix verglichen. Wenn sich sowohl GTAG als auch ITAG positiv vergleichen lassen, wird der Befehl vielmehr aus dem Schleifen-Cache zur CPU als aus dem Hauptspeicher geliefert.
  • Daher ist es eine Aufgabe der vorliegenden Erfindung, eine Architektur für eine befehlsprogrammierbare Logikvorrichtung wie z. B. einen Mikroprozessor oder Digitalsignalprozessor zu schaffen, in der die Anzahl von Zugriffen auf einen Befehlsspeicher verringert oder minimiert wird.
  • Die vorliegende Erfindung schafft einen befehlsprogrammierten Prozessor, wie in Anspruch 1 der beigefügten Ansprüche beansprucht.
  • Ausführungsformen der Erfindung, die in den begleitenden Zeichnungen gezeigt sind, betreffen eine solche Vorrichtung, in der ein chipinterner Befehlspuffer für die Speicherung von Befehlen für kleine Programmschleifen effizient verwen det wird. Der Befehlspuffer wird automatisch in einer Weise verwendet, die für den Programmierer transparent ist. Die dargestellte Vorrichtung ist in der Lage, den Befehlspuffer für verschachtelte Programmschleifen zu verwenden.
  • Die vorliegende Erfindung kann durch einen Schleifen-Cache implementiert werden, vorzugsweise auf einem Chip mit der Zentraleinheit (CPU) und parallel mit dem Befehls-Cache-Speicher niedrigster Ebene implementiert werden. Im Schleifen-Cache speichert ein Basisadressenregister eine Basisadresse einer Folge von Holadressen, für die Befehle in Einträgen einer Verzweigungs-Cache-Registerdatei gespeichert werden können. Gültige Bits werden für jeden Eintrag der Verzweigungs-Cache-Registerdatei aufrechterhalten, um anzugeben, ob der entsprechende Registerdateieintrag einen gültigen Befehl enthält. Beim Ausführen des Befehlsholvorgangs wählt ein Multiplexierer entweder die Ausgabe des Befehls-Cache-Speichers oder die Ausgabe der Verzweigungs-Cache-Registerdatei in Abhängigkeit davon aus, ob der geholte Befehl in der Verzweigungs-Cache-Registerdatei gültig vorhanden ist; eine Steuerlogik sperrt auch Lesevorgänge aus dem Befehls-Cache-Speicher für Treffer in der Verzweigungs-Cache-Registerdatei.
  • Gemäß einem Beispiel der Erfindung wird die Verzweigungs-Cache-Registerdatei im Fall einer Rückwärtsverzweigung, die die aktuellen Inhalte der Befehlsregisterdatei verfehlt, geladen.
  • Gemäß einem weiteren Beispiel der Erfindung wird die Verzweigungs-Cache-Registerdatei für eine Schleife geladen, die mit einer Rückwärtsverzweigung beginnt, die zweimal in Folge genommen wurde, wobei keine zwischengeschaltete Rückwärtsverzweigung auftritt.
  • Arten zur Ausführung der Erfindung werden nun nur beispielhaft mit Bezug auf die begleitenden Zeichnungen beschrieben, in denen:
  • 1 ein elektrisches Diagramm in Blockform eines Systems auf Digitalsignalprozessorbasis der bevorzugten Ausführungsformen der Erfindung ist;
  • 2 ein elektrisches Diagramm in Blockform von einem Befehls-Cache erster Ebene und einer Befehlspufferfunktion im Digitalsignalprozessor von 1 der bevorzugten Ausführungsformen der Erfindung ist;
  • 3 ein Speicherabbild einer Folge von Befehlen ist, welches Abschnitte eines Programmspeichers darstellt, die innerhalb einer Verzweigungs-Cache-Registerdatei im Befehls-Cache erster Ebene und der Befehlspufferfunktion von 2 gemäß einer ersten bevorzugten Ausführungsform der Erfindung gehalten werden;
  • 4 ein elektrisches Diagramm in Blockform ist, das die Konstruktion eines Schleifen-Cache gemäß der ersten bevorzugten Ausführungsform der Erfindung darstellt;
  • 5 ein Ablaufdiagramm ist, das die Operation des Schleifen-Cache von 4 gemäß der ersten bevorzugten Ausführungsform der Erfindung darstellt;
  • 6 ein Speicherabbild einer Folge von Befehlen ist, welches Abschnitte eines Programmspeichers darstellt, der innerhalb einer Verzweigungs-Cache-Registerdatei im Befehls-Cache erster Ebene und der Befehlspufferfunktion von 2 gemäß einer zweiten bevorzugten Ausführungsform der Erfindung gehalten werden;
  • 7 ein elektrisches Diagramm in Blockform ist, das die Konstruktion eines Schleifen-Cache gemäß der zweiten bevorzugten Ausführungsform der Erfindung darstellt; und
  • 8 ein Ablaufdiagramm ist, das die Operation des Schleifen-Cache von 7 gemäß der zweiten bevorzugten Ausführungsform der Erfindung darstellt.
  • Wie für den Fachmann unter Bezug auf die folgende Beschreibung ersichtlich wird, kann die vorliegende Erfindung in Verbindung mit einem breiten Bereich von befehlsprogrammierbaren Logikvorrichtungen und Systemen mit solchen Logikvorrichtungen implementiert werden. Ein Beispiel von solchen Logikvor richtungen ist ein Digitalsignalprozessor (DSP), in Verbindung mit dem die bevorzugten Ausführungsformen der vorliegenden Erfindung beschrieben werden. Für Fachleute ist jedoch leicht zu verstehen, dass die vorliegende Erfindung auch vorteilhaft in einem Universal-Mikroprozessor oder in anderen anwendungsspezifischen Prozessoren wie z. B. Graphikprozessoren, befehlsprogrammierbaren spezifischen Logikfunktionen und dergleichen verwirklicht werden kann. Es wird natürlich in Betracht gezogen, dass die vorliegende Erfindung, wie nachstehend beansprucht, einen Schutzbereich besitzt, der ausreicht, um diese und andere alternative Implementierungen einzuschließen.
  • Mit Bezug auf die begleitenden Zeichnungen ist 1 ein Blockdiagramm, das die Konstruktion eines elektronischen Systems 1, einschließlich eines Digitalsignalprozessors (DSP) 2 der bevorzugten Ausführungsformen der vorliegenden Erfindung, darstellt. In diesem Beispiel ist der DSP 2 als 32-Bit-Acht-Wege-VLIW-Pipelineprozessor, einschließlich einer Doppeldatenpfad-Zentraleinheit 3, verwirklicht.
  • Die Zentraleinheit 3 umfasst eine Befehlsholeinheit 10, eine Befehlsverteilungseinheit 11 und eine Befehlsdecodierungseinheit 12 zum Einleiten und Steuern der simultanen Befehlsausführung in Pipelineweise über die zwei Datenpfade. Funktional rufen die Befehlsholeinheit 10, die Befehlsverteilungseinheit 11 und die Befehlsdecodierungseinheit 12 Befehle aus dem Programmspeicher (nachstehend genauer beschrieben) ab, decodieren die Befehle und liefern Steuersignale zu den Funktionseinheiten in den Datenpfaden, um die Ausführung der Befehle zu bewirken. Nicht weniger als acht 32-Bit-Befehle können in jedem Befehlszyklus ausgeführt werden, wobei die Verarbeitung simultan in jedem der zwei Datenpfade der Zentraleinheit 3 stattfindet.
  • Ein erster Datenpfad der Zentraleinheit 3 umfasst vier Funktionsausführungseinheiten, die in diesem Beispiel als L1-Einheit 22, S1-Einheit 23, M1-Einheit 24 und D1-Einheit 25 bezeichnet sind. Diese Ausführungseinheiten 22, 23, 24, 25 sind jeweils in Verbindung mit der Registerdatei 21 betreibbar. Der zweite Datenpfad ist ähnlich konstruiert und umfasst vier Funktionsausführungseinheiten, die als L2-Einheit 32, S2-Einheit 33, M2-Einheit 34 und D2-Einheit 35 bezeichnet sind und jeweils mit der Registerdatei 31 gekoppelt sind. Jede der Registerdateien 21, 31 in diesem Beispiel umfasst sechzehn 32-Bit-Universalregister, die in Abhängigkeit vom Befehl für Daten, als Datenadressenzieger oder als Bedingungsregister verwendet werden können.
  • In dieser beispielhaften Implementierung der vorliegenden Erfindung sind die L-Funktionseinheiten 22, 32 arithmetische und logische Einheiten zum Durchführen von Operationen wie z. B. arithmetischen und Vergleichsoperationen mit 32 und 40 Bits, Bit- und Normierungszählungen und logischen 32-Bit-Operationen. Die S-Funktionseinheiten 23, 33 sind arithmetische und logische Einheiten zum Durchführen von arithmetischen und logischen 32-Bit-Operationen, Schiebe- und Bitfeld-Operationen, Konstantenerzeugung, Verzweigung und Registerübertragungen zu und von den Steuerregistern 13. Die M-Funktionseinheiten 24, 34 sind Multiplizierer für 16 × 16 Bits, die in Digitalsignal-Verarbeitungsoperationen, die Multiplikationen und Summierungen beinhalten, besonders nützlich sind. Die D-Funktionseinheiten 25, 35 sind arithmetische Einheiten zum Durchführen von 32-Bit-Additionen und -Subtraktionen und der Berechnung von linearen und zyklischen 32-Bit-Adressen. Außerdem, wie durch 1 angedeutet, umfasst die Zentraleinheit Querregisterpfade, die ermöglichen, dass die L1-Einheit 22, die S1-Einheit 23 und die M1-Einheit 24 Operanden von der Registerdatei 31 empfangen, und ermöglichen, dass die L2-Einheit 32, die S2-Einheit 33 und die M2-Einheit 34 Operanden von der Registerdatei 21 empfangen.
  • Die Zentraleinheit 3 umfasst ferner Steuerregister 13 und eine Steuerlogik (nicht dargestellt), die ihre Konfiguration und Operation steuern. Die Zentraleinheit 3 umfasst auch Spezialfunktionen wie z. B. eine Testlogik (nicht dargestellt), eine Emulationslogik 16 und eine Unterbrechungslogik 17 zum Steuern dieser herkömmlichen Funktionen.
  • Die Zentraleinheit 3 ist mit dem Programmspeicher (auch als Befehlsspeicher bezeichnet) durch das L1I-Cache- und Befehlspuffersystem 38 gekoppelt, das gemäß den bevorzugten Ausführungsformen der Erfindung konstruiert ist. Insbe sondere legt in diesem Beispiel die Befehlsholeinheit 10 eine oder mehrere Adressen mit zweiunddreißig Bits an das L1I-Cache- und Befehlspuffersystem 38 an und empfängt entsprechende Befehlscodes davon (z. B. über einen 256-Bit-Befehlsbus), um die Befehlsholoperation zu vollenden. Die spezielle Konstruktion des L1I-Cache- und Befehlspuffersystems 38 gemäß den bevorzugten Ausführungsformen der Erfindung wird nachstehend genauer beschrieben. Im DSP 2 von 1 ist das L1I-Cache- und Befehlspuffersystem 38 bidirektional mit dem L2-Speicher und vereinheitlichten Cache 40 gekoppelt, von dem (oder durch den) Befehlscodes geholt werden können, wenn sie nicht im L1I-Cache- und Befehlspuffersystem 38 vorhanden sind.
  • Auf der Datenseite ist jeder von den zwei Datenpfade der Zentraleinheit 3 bidirektional mit dem L1D-Daten-Cache 36 gekoppelt, der als Cache erster Ebene für Daten arbeitet. Gemäß den bevorzugten Ausführungsformen der Erfindung ist der L1D-Daten-Cache 36 als assoziativer Zwei-Weg-Mengencache mit beispielsweise einer 32-Byte-Zeilengröße organisiert. Der L1D-Daten-Cache 36 ist wiederum bidirektional mit dem L2-Speicher und vereinheitlichten Cache 40 gekoppelt; im Fall eines Fehlgriffs im L1D-Daten-Cache 36 fordert der L1D-Daten-Cache 36 eine Cache-Zeile von Daten vom L2-Speicher und vereinheitlichten Cache 40 an.
  • Der L2-Speicher und vereinheitlichte Cache 40 im DSP 2 gemäß den bevorzugten Ausführungsformen der Erfindung ist auf dem Chip mit der Zentraleinheit 3 implementiert und ist in diesem Beispiel ein vereinheitlichter Speicher, der durch Software konfiguriert werden kann. Die auswählbare Konfiguration definiert die Größe des vereinheitlichten (d. h. sowohl Programm als auch Daten) Cache der Ebene zwei im Gegensatz zur Größe von speicherabgebildeten Direktzugriffspeicher-Sektoren (RAM-Sektoren) innerhalb des L2-Speichers und vereinheitlichten Cache 40. Die Konfiguration des L2-Speichers und vereinheitlichten Cache 40 kann beispielsweise durch Setzen von Steuerbits in den Steuerregistern 13 definiert werden. In dem Umfang, in dem er als Cache konfiguriert ist, speichert der L2-Speicher und vereinheitlichte Cache 40 simultan dieselben Spei cherplätze wie im L1I-Cache- und Befehlspuffer 38 und L1D-Daten-Cache 36 gespeichert sind, sowie zusätzliche Speicherplatzinhalte; in diesem Beispiel "durchschnüffelt" der L2-Speicher und vereinheitlichte Cache 40 den L1D-Daten-Cache 36, um festzustellen, ob er modifizierte Versionen der Inhalte seiner eigenen Speicherplätze enthält, um die Cache-Kohärenz sicherzustellen.
  • Indem ein Cache- oder RAM-Zugriff durch die Zentraleinheit 3 ein Fehlgriff in Bezug auf den L2-Speicher und vereinheitlichten Cache 40 ist, leitet der L2-Speicher und vereinheitlichte Cache 40 die angeforderte Speicheradresse zur erweiterten DMA-Steuereinheit 5 weiter, die über die Schnittstelle 4 des externen Speichers des DSP 2 den erforderlichen Lese- oder Schreibzugriff auf den externen Direktzugriffsspeicher (RAM) 42 durchführt, der in Form eines synchronen SRAM, asynchronen SRAM oder synchronen DRAM vorliegen kann; der Speicherplatz, auf den zugegriffen wird, wird dann in den L2-Speicher und vereinheitlichten Cache 40 und in Caches niedrigerer Ebene, wenn geeignet, geschrieben. Über gepufferte serielle Mehrkanalports 80 , 81 steuert die erweiterte DMA-Steuereinheit 5 auch die Übertragung von Daten zum und vom L2-Speicher und vereinheitlichten Cache 40 und somit zur und von der Zentraleinheit 3 jeweils in Bezug auf Eingabe/Ausgabe-Vorrichtungen 440 , 441 . Die Hauptrechnerport-Schnittstelle 7 ist auch mit der erweiterten DMA-Steuereinheit 5 gekoppelt, durch die eine Hauptrechner-Zentraleinheit 50 mit dem DSP 2 kommunizieren kann.
  • Andere Funktionen liegen auch innerhalb des DSP 2 vor, wie erwünscht. In diesem Beispiel ist eine Abschaltlogik 6 vorgesehen, um die Aktivität der Zentraleinheit, eine Peripheriegerätaktivität und eine Taktsynchronisationsaktivität eines Phasenregelkreises (PLL) anzuhalten, um den Leistungsverbrauch zu verringern. Programmierbare Zeitgeber 410 , 411 sind auch in diesem Beispiel vorgesehen, um zu ermöglichen, dass der DSP 2 steuereinheitsartige Funktionen bewirkt.
  • Mit Bezug nun auf 2 wird die Konstruktion des L1I-Cache und Befehlspuffers 38 gemäß den bevorzugten Ausführungsformen der vorliegenden Erfindung nun im Einzelnen beschrieben. Es wird natürlich in Betracht gezogen, dass alternative Ausführungen der Konstruktion des L1I-Cache und Befehlspuffers 38 für Fachleute mit Bezug auf diese Patentbeschreibung ersichtlich werden, und daher ist es selbstverständlich, dass diese und andere solche Ausführungen innerhalb des Schutzbereichs der vorliegenden Erfindung liegen.
  • In dem Beispiel von 2 gemäß den bevorzugten Ausführungsformen der vorliegenden Erfindung ist der L1I-Cache und Befehlspuffer 38 als herkömmlicher Programm-Cache der Ebene 1 parallel zum Schleifen-Cache 62 angeordnet. Auf der Seite des Programm-Cache der Ebene 1 ist der L1I-Kennzeichen-RAM 54 ein Cache-Kennzeichenspeicher zum Speichern von Abschnitten der Speicheradressen, für die die Inhalte im L1I-Daten-RAM 60 im L1I-Cache- und Befehlspuffer 38 gehalten werden. Der L1I-Kennzeichen-RAM 54 ist mit dem Kennzeichen-Komparator 52 gekoppelt, der eine Holadresse von der Befehlsholeinheit 10 in der Zentraleinheit 3 an einem anderen Eingang empfängt. Der Kennzeichen-Komparator 52 ist wirksam, um die von der Befehlsholeinheit 10 empfangene Holadresse mit den aktuellen Inhalten des L1I-Kennzeichen-RAM 54 zu vergleichen, um festzustellen, ob die Holadresse einem der im L1I-Kennzeichen-RAM 54 gespeicherten Kennzeichen entspricht (d. h. einem Cache-"Treffer" im L1I-Daten-RAM 60 entspricht). Der Kennzeichen-Komparator 52 präsentiert die Ergebnisse dieses Vergleichs der L1I-Steuerlogik im L1I-Cache- und Befehlspuffer 38, die die Operation des L1I-Daten-RAM 60 dementsprechend steuert.
  • Der L1I-Daten-RAM 60 ist ein zweckorientierter Programm-Cache-Speicher, der in diesem Beispiel die Inhalte von Speicherplätzen entsprechend den im L1I-Kennzeichen-RAM 54 gespeicherten Kennzeichenadressen enthält. Die spezielle Konstruktion und Anordnung des L1I-Daten-RAM 60 kann irgendeiner herkömmlichen Cache-Speicherarchitektur entsprechen, einschließlich assoziativer Mehrweg-Mengen-Cache-Anordnungen. Gemäß den bevorzugten Ausführungsformen der Erfindung und hauptsächlich aufgrund ihrer Verwendung als Befehls-Cache in einem Digitalsignalprozessor ist jedoch der L1I-Daten-RAM 60 ein Cache mit Direktabbildung. Die Anordnung mit Direktabbildung ist in DSP-Architekturen aufgrund der Tendenz des DSP-Codes, dass er aus kleinen und engen Programmschleifen besteht, die selten "kollidieren", besonders nützlich. Als Bei spiel kann der L1I-Daten-RAM 60 eine Kapazität von 4k Bytes aufweisen, die als vierundsechzig Cache-Zeilen mit jeweils vierundsechzig Bytes angeordnet sind. In diesem Fall umfasst der L1I-Kennzeichen-RAM 54 vierundsechzig Kennzeicheneinträge, einen für jede Cache-Zeile im L1I-Daten-RAM 60; vorzugsweise umfasst der L1I-Kennzeichen-RAM 54 auch ein gültiges Bit für jeden der Cache-Einträge, obwohl das gültige Bit alternativ anderswo angeordnet sein kann (wie z. B. im L1I-Daten-RAM 60 oder sogar in der L1I-Steuerlogik, 58), falls dies so erwünscht ist.
  • Der L1I-Daten-RAM 60 umfasst auch einen Port, der mit dem L2-Speicher und vereinheitlichten Cache 40 gekoppelt ist. Diese Verbindung ermöglicht das erneute Laden des L1I-Daten-RAM 60 aus dem L2-Speicher und vereinheitlichten Cache 40 mit Cache-Zeilen, die Befehlsholadressen entsprechen, die die Kennzeichen im L1I-Kennzeichen-RAM 54 "verfehlen". Dieses Laden wird unter der Steuerung der L1I-Steuerlogik 58 durch die Ausgabe einer Speicheradresse an den L2-Speicher und vereinheitlichten Cache 40 (und wenn ein "Fehlgriff" auf dieser Ebene auftritt, an den externen RAM 42 über die Schnittstelle 4 des externen Speichers 4) ausgeführt, in Reaktion worauf die Speicherplatzinhalte in den L1I-Daten-RAM 60 geschrieben werden.
  • Gemäß den bevorzugten Ausführungsformen der Erfindung wird die Ausgabe des L1I-Daten-RAM 60, die einen Befehls-Operationscode in Reaktion auf die Holadresse von der Holeinheit 10 darstellt, sowohl im Cache-Fehlgriffs- als auch Cache-Trefferfall an einen Eingang des Multiplexierers 64 angelegt.
  • Wie vorstehend angegeben, ist der Schleifen-Cache 62 im L1I-Cache- und Befehlspuffer 38 parallel zum L1I-Daten-RAM 60 vorgesehen. Gemäß den bevorzugten Ausführungsformen der Erfindung ist der Schleifen-Cache 62 ein Befehlspuffer-Untersystem zum Speichern der Inhalte von Speicherplätzen, die Befehlsholadressen entsprechen, auf die wiederholt zugegriffen wird, wie z. B. in einer kleinen Programmschleife. Um einen signifikanten Nutzen zu schaffen, ist der Schleifen-Cache 62 so konstruiert, dass Zugriffe auf diesen signifikant weniger Leistung verbrauchen als Zugriffe auf einen anderen Programmspeicher, ein schließlich Zugriffen auf den L1I-Daten-RAM 60 (und natürlich Zugriffen auf den L2-Speicher und vereinheitlichten Cache 40, und natürlich den externen Speicher 42). In dieser Hinsicht ist die Kapazität des Schleifen-Cache 62 vorzugsweise relativ klein und seine Speicheranordnung liegt in Form einer Registerdatei vor, auf die indizierte Zugriffe durchgeführt werden. Die detaillierte Konstruktion des Schleifen-Cache 62 gemäß bevorzugten Ausführungsformen der Erfindung wird nachstehend genauer beschrieben.
  • In seiner allgemeinen Konstruktion weist der Schleifen-Cache 62 einen Eingang auf, der zum Empfangen der Holadresse und von entsprechenden Steuersignalen von der Befehlsholeinheit 10 der Zentraleinheit 3 gekoppelt ist; solche Steuersignale können beispielsweise ein Signal, das angibt, dass die Holadresse gültig ist, umfassen. Der Schleifen-Cache 62 liefert ein Lesesteuersignal auf der Leitung RD zum L1I-Daten-RAM 60. Der Schleifen-Cache 62 besitzt auch einen Ausgang zum Übergeben eines Befehls-Operationscodes, der der Holadresse entspricht, im Fall eines "Treffers" mit dieser an einen Eingang des Multiplexierers 64. Der Schleifen-Cache 62 besitzt auch einen Steuersignalausgang, der die Leitung SEL und folglich den Auswahlsteuereingang des Multiplexierers 64 ansteuert, um die Auswahl entweder der Ausgabe des L1I-Daten-RAM 60 oder des Schleifen-Cache 62 selbst zum Anlegen an die Holeinheit 10 in Reaktion auf den Vergleich der Holadresse mit den im Schleifen-Cache 62 gespeicherten Adressen zu steuern. Außerdem besitzt der Schleifen-Cache 62 einen Dateneingang, der mit dem Ausgang des L1I-Daten-RAM 60 gekoppelt ist, durch welchen der Schleifen-Cache 62 mit den Inhalten von Speicherplätzen geladen werden kann.
  • In seiner allgemeinen Operation gemäß den bevorzugten Ausführungsformen der vorliegenden Erfindung empfängt der Schleifen-Cache 62 die Holadresse von der Holeinheit 10 und vergleicht diese Holadresse effektiv mit einem Bereich von Adressen, für die der Schleifen-Cache 62 gerade die entsprechenden Inhalte enthält. Wenn die Holadressen übereinstimmen, übergibt der Schleifen-Cache 62 ein Lesesperrsignal auf der Leitung RD an den L1I-Daten-RAM 60, um seine Operation auszuschließen (und folglich Leistung zu sparen), zu Gunsten des Schleifen- Cache 62 selbst, der den geholten Befehls-Operationscode an den Multiplexierer 64 übergibt und den Multiplexierer 64 steuert, um diese Ausgabe zum Anlegen an die Holeinheit 10 auszuwählen. Außerdem kann der Schleifen-Cache 62 auch ein Steuersignal zum L1I-Kennzeichen-RAM 54 liefern, um Kennzeichenlesevorgänge bei einem Treffer des Schleifen-Cache 62 durch die Holadresse zu sperren. Wenn andererseits die Holadresse nicht innerhalb des Bereichs von Adressen, die innerhalb des Schleifen-Cache 62 gespeichert sind, liegt, aktiviert der Schleifen-Cache 62 ein Lesefreigabesignal auf der Leitung RD für den L1I-Daten-RAM 60 (ob die Inhalte gerade im L1I-Daten-RAM 60, im L2-Speicher und vereinheitlichten Cache 40 oder im externen RAM 42 gespeichert sind) und steuert den Multiplexierer 64, um die Ausgabe des L1I-Daten-RAM 60 zum Anlegen an die Holeinheit 10 auszuwählen.
  • Wie vorstehend angemerkt, wird die Datenausgabe des L1I-Daten-RAM 60 auch an einen Eingang des Schleifen-Cache 62 angelegt, so dass Speicherplätze im Schleifen-Cache 62 mit den Inhalten der Speicherplätze geladen werden können. Die Bestimmung, wann der Schleifen-Cache 62 geladen werden soll und von welchen Speicherplätzen, wird nun in Verbindung mit den bevorzugten Ausführungsformen der Erfindung beschrieben.
  • Gemäß einer ersten bevorzugten Ausführungsform der vorliegenden Erfindung arbeitet der Schleifen-Cache 62 gemäß einer Methode, die hierin als "Schleifenfront-Cache" bezeichnet wird, in der eine Registerdatei im Schleifen-Cache 62 im Fall irgendeiner Rückwärtsverzweigung, die ein Fehlgriff in Bezug auf den Schleifen-Cache 62 ist, geladen wird, wonach Holvorgänge an diesen vielmehr auf den Schleifen-Cache 62 als den L1I-Daten-RAM 60 zugreifen. In der ersten bevorzugten Ausführungsform der Erfindung sieht das Schleifenfront-Cache-Verfahren signifikante Leistungseinsparungen vor, einschließlich in Programmsequenzen, die verschachtelte Schleifen beinhalten.
  • Die Aufmerksamkeit wird auf 3 gelenkt, durch die die Operation des Schleifenfront-Cache gemäß dieser ersten bevorzugten Ausführungsform der Erfindung in Bezug auf eine Speicherabbilddarstellung eines Beispiels einer Folge von Befehlen beschrieben wird, die als Folge von Cache-Zeilen angeordnet ist (wobei es selbstverständlich ist, dass jede Cache-Zeile wahrscheinlich mehrere Befehle enthält). In dem Beispiel von 3 umgibt die äußere Schleife 66 die innere Schleife 68, wobei der Abschnitt des Codes der äußeren Schleife, der der inneren Schleife 68 vorangeht, durch den Prolog 66p dargestellt ist, und der Abschnitt des Codes der äußeren Schleife, der der inneren Schleife 68 nachfolgt, durch den Epilog 66e dargestellt ist. Die Kapazität C62 des Schleifen-Cache 62 ist in 3 dargestellt, die die Anzahl von zusammenhängenden Cache-Zeilen, einschließlich des Prologs 66p, der inneren Schleife 68 und eines Abschnitts des Epilogs 66e, abdeckt.
  • Gemäß dieser ersten Ausführungsform der Erfindung wird der Schleifen-Cache 62, wie vorstehend angegeben, bei jeder Rückwärtsverzweigung, die ein Fehlgriff ist, geladen. In dem Beispiel von 3 wird der Schleifen-Cache ursprünglich mit den durch die Kapazität C62 angegebenen Inhalten beim ersten Auftreten der Rückwärtsverzweigung vom Ende des Epilogs 66e geladen; dies umfasst die Gesamtheit der inneren Schleife 68. Mit Bezug auch auf 2 wird das Holen von jedem Befehl innerhalb des Prologs 66p und innerhalb der inneren Schleife 68 (sowie innerhalb des oberen Abschnitts des Epilogs 66e) folglich vielmehr aus dem Schleifen-Cache 62 als auch dem L1I-Daten-RAM 60 durchgeführt, was signifikante Leistung für jeden Zugriff spart, insbesondere wenn die Schleifenzählwerte für die Schleifen 66, 68 groß sind.
  • Mit Bezug nun auf 4 wird nun die Konstruktion des Schleifen-Cache 62 gemäß dieser ersten bevorzugten Ausführungsform der vorliegenden Erfindung, die den Schleifenfront-Cache implementiert, im Einzelnen beschrieben. Der Schleifen-Cache 62 umfasst ein Basisadressenregister 70, das einen Dateneingang, der die Holadresse von der Holeinheit 10 empfängt, und einen Steuereingang, der von der Schleifen-Cache-Steuerlogik 74 angesteuert wird, aufweist; das Basisadressenregister 70 arbeitet effektiv als Cache-Kennzeichenspeicher mit einzelnem Eintrag, wie nachstehend in Bezug auf die Operation des Schleifen-Cache 62 beschrieben wird. Ein Datenausgang des Basisadressenregisters 70 und die Holadresse von der Holeinheit 10 werden an komplementäre Eingänge des Addierers 72 angelegt, der ein digitales Ausgangssignal auf den Leitungen INDX entsprechend der Differenz zwischen der aktuellen Holadresse und den aktuellen Inhalten des Basisadressenregisters 70 und durch die Anzahl von Bytes pro Cache-Zeile geteilt, erzeugt. Diese Division kann durch einfaches Auswählen der höchstwertigen Bits der Ausgabe der Subtraktion durch den Addierer 72 ausgeführt werden, in dem bevorzugten Fall, in dem die Anzahl von Bytes pro Cache-Zeile eine Potenz von Zwei (z. B. 32) ist. Die Leitungen INDX, die diesen Indexwert übertragen, werden an die Schleifen-Cache-Steuerlogik 74 und auch als Adresseneingang an die Verzweigungs-Cache-Registerdatei 76 angelegt.
  • Die Verzweigungs-Cache-Registerdatei 76 im Schleifen-Cache 62 gemäß dieser ersten bevorzugten Ausführungsform der Erfindung ist als indizierter Satz von N Registern jeweils zum Speichern einer Cache-Zeile von Befehls-Operationscodes angeordnet, wobei sich der Wert N auf die Tiefe des Schleifenfront-Cache bezieht. Die optimale Tiefe N des Schleifen-Cache 62 hängt von den Besonderheiten der Cache-Architektur sowie von der Art des dadurch auszuführenden Codes ab. Für die Zwecke der Leistungseffizienz ist es erwünscht, dass N relativ klein gehalten wird (z. B. zweiunddreißig oder weniger), da ein signifikanter Vorteil mit nicht mehr als vier Einträgen erhalten werden kann; in jedem Fall muss der Wert von N nicht einer Potenz von Zwei entsprechen. Der Adresseneingang der Verzweigungs-Cache-Registerdatei 76 empfängt den Indexwert vom Addierer 72 in Reaktion auf den eines der Register der Verzweigungs-Cache-Registerdatei 76 für einen Lese- oder Schreibzugriff in Abhängigkeit vom Zustand von Steuersignalen, die von der Schleifen-Cache-Steuerlogik 74 erzeugt werden und an die Steuereingänge R/W der Verzweigungs-Cache-Registerdatei 76 angelegt werden, ausgewählt wird. Der Dateneingang D empfängt Daten vom L1I-Daten-RAM 60 zum Speichern im ausgewählten Register während Schreibzugriffen und der Datenausgang Q wird an den Multiplexierer 64 angelegt, um die Inhalte des ausgewählten Registers während Lesezugriffen zu übergeben.
  • Die Schleifen-Cache-Steuerlogik 74 steuert die Operation des Schleifen-Cache 62 in Reaktion auf den durch den Addierer 72 auf den Leitungen INDX übergebenen Indexwert und in Reaktion auf ein Steuersignal, das auf der Leitung BW übergeben wird und das angibt, ob die aktuelle Holadresse eine Rückwärtsverzweigung ist. Die Operation der Schleifen-Cache-Steuerlogik 74 hängt auch vom Zustand von gültigen Bits entsprechend den Einträgen in der Verzweigungs-Cache-Registerdatei 76 ab, wobei solche gültigen Bits im Register 75 innerhalb der Schleifen-Cache-Steuerlogik 74 selbst gespeichert werden.
  • Gemäß dem Beispiel dieser ersten bevorzugten Ausführungsform der Erfindung, die in 4 dargestellt ist, wird das Steuersignal auf der Leitung BW durch die Rückwärtsverzweigungs-Erfassungslogik 78 innerhalb des Schleifen-Cache 62 selbst erzeugt. In diesem Beispiel umfasst die Rückwärtsverzweigungs-Erfassungslogik 78 ein Register 79 für das letzte Holen, das die vorherige Holadresse speichert; im Betrieb speichert das Register 79 für das letzte Holen die aktuelle Holadresse von der Holeinheit 10, während es seine aktuellen Inhalte entsprechend der vorherigen Holadresse an einen Eingang des Komparators 80 übergibt. Der andere Eingang des Komparators 80 empfängt die aktuelle Holadresse von der Holeinheit 10, wie in 4 gezeigt, und aktiviert ein Signal auf der Leitung BW in Reaktion darauf, dass die aktuelle Holadresse geringer als oder gleich der vorherigen Holadresse ist, die im Register 79 für das letzte Holen gespeichert ist.
  • Alternativ kann die Leitung BW ein Steuersignal übertragen, das von der Befehlsholeinheit 10 selbst in der Zentraleinheit 3 erzeugt wird und das angibt, dass die aktuelle Holadresse einer Rückwärtsverzweigung entspricht. In diesem Fall liegt natürlich die Rückwärtsverzweigungs-Erfassungslogik 78 nicht innerhalb des Schleifen-Cache 62 vor, sondern ist statt dessen innerhalb der Zentraleinheit 3 vorgesehen.
  • Die Schleifen-Cache-Steuerlogik 74 steuert, wie vorstehend angegeben, die Operation des Schleifen-Cache 62 in Reaktion auf das Steuersignal auf der Leitung BW, in Reaktion auf den Wert, der vom Addierer 72 auf den Leitungen INDX übergeben wird, und in Reaktion auf den Zustand der gültigen Bits im Re gister 75. Diese Steuerung wird durch Steuersignale, die an die Steuereingänge R/W der Verzweigungs-Cache-Registerdatei 76 angelegt werden, und das Steuersignal auf der Leitung SEL, das an den Auswahleingang des Multiplexierers 64 (2) angelegt wird, bewirkt. Außerdem gibt die Schleifen-Cache-Steuerlogik 74 Lesevorgänge aus dem L1I-Daten-RAM 60 durch ein Steuersignal auf der Leitung RD frei und sperrt diese. Es wird in Erwägung gezogen, dass die Schleifen-Cache-Steuerlogik 74 leicht von Fachleuten mit Bezug auf diese Patentbeschreibung verwirklicht werden kann, beispielsweise durch eine Kombinations- oder sequentielle Logik, die zum Ausführen der nachstehend beschriebenen Operation des Schleifen-Cache 62 geeignet ist.
  • Mit Bezug nun auf 5 wird nun die Operation des Schleifen-Cache 62 unter der Steuerung der Schleifen-Cache-Steuerlogik 74 gemäß dieser ersten bevorzugten Ausführungsform der Erfindung im Einzelnen beschrieben. Wie in 5 gezeigt, wird die Operation des Schleifen-Cache 62 im Prozess 81 durch das Löschen des gültigen Bits im Register 75 für den Indexwert 0 (der der Basisadresse entspricht) initialisiert. Im Prozess 82 empfängt der Schleifen-Cache 62 eine neue Holadresse von der Befehlsholeinheit 10 der Zentraleinheit 3.
  • Beim Empfang der neuen Holadresse im Prozess 82 trifft die Schleifen-Cache-Steuerlogik 74 zuerst eine Entscheidung 83, um effektiv festzustellen, ob die Holadresse ein "Treffer" in Bezug auf den Schleifen-Cache 62 ist. Die Entscheidung 83 wird vom Addierer 72 getroffen, der einen digitalen Wert auf den Leitungen INDX entsprechend der Differenz zwischen den aktuellen Inhalten des Basisadressenregisters 70 (die der niedrigsten Speicheradresse entsprechen, die aktuell in der Verzweigungs-Cache-Registerdatei 76 gespeichert ist) und der im Prozess 82 empfangenen Holadresse, dividiert durch die Anzahl von Bytes pro Cache-Zeile, erzeugt. Die Schleifen-Cache-Steuerlogik 74 vergleicht diesen Wert auf den Leitungen INDX mit Null und mit der Tiefe N des Schleifen-Cache 62, um festzustellen, ob die Holadresse innerhalb des Bereichs von Adressen liegt, die im Schleifen-Cache 62 gespeichert sind. Außerdem testet die Schleifen-Cache-Steuerlogik 74 das gültige Bit für den Indexwert 0 im Register 75, um festzustellen, ob die Verzweigungs-Cache-Registerdatei 76 einen gültigen Befehlscode besitzt, der in ihrem anfänglichen Eintrag entsprechend den Inhalten des Basisadressenregisters 70 gespeichert ist; wenn nicht, enthält die Verzweigungs-Cache-Registerdatei 76 keine gültigen Befehls-Operationscodes und die Holadresse kann daher nicht einem Treffer des Schleifen-Cache 62 entsprechen. Wie aus dem Vorangehenden ersichtlich, speichert der Schleifen-Cache 62 vielmehr einen sequentiellen Satz von Cache-Zeilen als Cache-Zeilen mit nicht-sequentiellen Kennzeichenadressen.
  • Im Fall, dass die Holadresse den Schleifen-Cache 62 verfehlt (d. h. die Entscheidung 83 NEIN ist), trifft die Schleifen-Cache-Steuerlogik 74 als nächstes die Entscheidung 85, um festzustellen, ob die aktuellen Holadresse auf eine Rückwärtsverzweigung hinweist. Die Entscheidung 85 kann durch die Operation der Rückwärtsverzweigungs-Erfassungslogik 78 getroffen werden, die die aktuelle Holadresse mit den Inhalten des Registers 79 für das letzte Holen vergleicht und auf der Leitung BW dementsprechend ein Signal erzeugt; alternativ kann die Entscheidung 85 durch die Zentraleinheit 3 selbst getroffen werden, wobei das Ergebnis zur Schleifen-Cache-Steuerlogik 74 auf der Leitung BW übertragen wird. Im Fall, dass die aktuelle Holadresse sowohl ein "Fehlgriff' als auch keine Rückwärtsverzweigung ist (Entscheidung 85 ist NEIN), gibt die Schleifen-Cache-Steuerlogik 74 das Lesen des gewünschten Befehls-Operationscodes aus dem L1I-Daten-RAM 60 durch Aktivieren eines Signals auf der Leitung RD frei und steuert auch den Multiplexierer 64, um die Ausgabe des L1I-Daten-RAM 60 auszuwählen, durch das geeignete Signal auf der Leitung SEL; diese Operationen sind in 5 durch den Prozess 86 gezeigt. Die Steuerung geht dann zurück zum Prozess 82, um auf den Empfang der nächsten Holadresse von der Befehlsholeinheit 10 zu warten.
  • Andererseits ist der Schleifen-Cache 62, wie vorstehend erörtert, betriebsfähig, um das Laden der Verzweigungs-Cache-Registerdatei 76 im Fall eines Holvorgangs, der ein Cache-Fehlgriff ist, der jedoch einer Rückwärtsverzweigung entspricht, zu beginnen. Mit Rückbezug auf 5 führt die Schleifen-Cache-Steuerlogik 74, wenn die aktuelle Holadresse den Schleifen-Cache 62 verfehlt (d. h. die Entscheidung 83 NEIN ist), aber einer Rückwärtsverzweigung entspricht (die Entscheidung 85 ist JA), den Prozess 88 aus, um das Laden der Verzweigungs-Cache-Registerdatei 76 einzuleiten. Im Prozess 88 gibt die Schleifen-Cache-Steuerlogik 74 ein Steuersignal an das Basisadressenregister 70 aus, um das Speichern der aktuellen Holadresse darin als Basisadresse zu veranlassen. Außerdem setzt die Schleifen-Cache-Steuerlogik 74 das gültige Bit für den Indexwert 0 und löscht alle anderen gültigen Bits im Register 75. Die Schleifen-Cache-Steuerlogik 74 führt dann den Prozess 90 durch Aktivieren eines Signals auf der Leitung RD, um das Lesen des gewünschten Befehls-Operationscodes aus dem L1I-Daten-RAM 60 freizugeben, und durch Steuern des Multiplexierers 64, um die Ausgabe des L1I-Daten-RAM 60 auszuwählen, durch. Außerdem gibt die Schleifen-Cache-Steuerlogik 74 ein Schreibsteuersignal an den Steuereingang R/W der Verzweigungs-Cache-Registerdatei 76 aus, so dass der am Ausgang des L1I-Daten-RAM 60 und folglich am D-Eingang der Verzweigungs-Cache-Registerdatei 76 bereitgestellte Operationscode in ihren Eintrag[0] geladen wird (d. h. entsprechend der Basisadresse, die einen Indexwert von 0 besitzt). Die Steuerung geht dann zurück zum Prozess 82, um auf die nächste Holadresse zu warten.
  • Mit Rückbezug auf die Entscheidung 83 trifft die Schleifen-Cache-Steuerlogik 74 beim Empfang einer Holadresse, die innerhalb des Bereichs N der im Basisadressenregister 70 gespeicherten Basisadresse liegt (d. h. die Entscheidung 83 ist JA), als nächstes die Entscheidung 91 durch, um festzustellen, ob das gültige Bit, das dem digitalen Wert auf den Leitungen INDX entspricht (d. h. der Differenz zwischen der Holadresse und der Basisadresse), gesetzt ist. Wenn nicht (die Entscheidung 91 ist NEIN), ist der dem aktuellen Indexwert auf den Leitungen INDX entsprechende Eintrag nicht der korrekte Operationscode. Der Prozess 92 wird dann durch den Schleifen-Cache 62 unter der Steuerung der Schleifen-Cache-Steuerlogik 74 durch Freigeben des Lesens des gewünschten Operationscodes aus dem L1I-Daten-RAM 60 (über die Leitung RD) und durch Laden der Ausgabe des L1I-Daten-RAM 60 in die Verzweigungs-Cache-Registerdatei 76 an ihrem Eintrag entsprechend dem aktuellen Indexwert auf den Leitungen INDX durchgeführt; die Schleifen-Cache-Steuerlogik 74 setzt dann auch das gültige Bit im Re gister 75 entsprechend dem aktuellen Indexwert. Außerdem steuert die Schleifen-Cache-Steuerlogik 74 den Multiplexierer 64, um die Ausgabe des L1I-Daten-RAM 60 auszuwählen, durch das geeignete Signal auf der Leitung SEL, wobei somit der gewünschte Befehls-Operationscode zur Zentraleinheit 3 weitergeleitet wird.
  • Wenn andererseits das gültige Bit im Register 75 für den aktuellen Indexwert auf den Leitungen INDX gesetzt ist (die Entscheidung 91 ist JA), speichert der Schleifen-Cache 62 tatsächlich den aktuell gültigen Operationscode für den Befehl, der durch die im Prozess 82 empfangene Holadresse adressiert wird. Die Schleifen-Cache-Steuerlogik 74 führt dann den Prozess 94 durch, um den Operationscode aus dem Eintrag der Verzweigungs-Cache-Registerdatei 76 zu holen, der durch den Indexwert auf den Leitungen INDX angegeben wird, indem ein Lesesteuersignal an den Steuereingang R/W der Verzweigungs-Cache-Registerdatei 76 angelegt wird. Dieses Lesen der Verzweigungs-Cache-Registerdatei 76 wird mit Ausschluss des L1I-Daten-RAM 60 durchgeführt, indem die Schleifen-Cache-Steuerlogik 74 ein Sperrsignal auf der Leitung RD anlegt; dieses Sperren eines Lesezugriffs auf den L1I-Daten-RAM 60 spart signifikante Leistung, wobei einer der wichtigen Vorteile der vorliegenden Erfindung geschaffen wird. Wie vorstehend angegeben, kann der L1I-Kennzeichen-RAM 54 auch durch die Schleifen-Cache-Steuerlogik 74 bei einem JA-Ergebnis der Entscheidung 91 gesperrt werden, um zusätzliche Leistung zu sparen, indem Kennzeichenadressen-Lesevorgänge für Treffer des Schleifen-Cache 62 verhindert werden. Im Prozess 94 steuert die Schleifen-Cache-Steuerlogik 74 auch den Multiplexierer 64 durch ein Signal auf der Leitung SEL, um den Schleifen-Cache 62 zum Anlegen an seinen Ausgang auszuwählen, so dass der in der Verzweigungs-Cache-Registerdatei 76 gespeicherte Operationscode an die Befehlsholeinheit 10 übergeben wird.
  • Gemäß dem Verfahren der Operation des Schleifen-Cache 62, wie in 5 gezeigt, wird der Schleifen-Cache 62 mit Befehls-Operationscodes in Reaktion auf eine Rückwärtsverzweigung geladen, die ein Fehlgriff in Bezug auf den Schleifen-Cache 62 ist. Dieses Laden geschieht durch die Entscheidungen 83, 85, wobei zuerst ein Fehlgriff durch eine Rückwärtsverzweigung erfasst wird (die Entscheidungen 83, 85 sind NEIN bzw. JA). Der erste Eintrag der Verzweigungs-Cache-Registerdatei 76 wird dann mit dem Operationscode der Basisadresse im Prozess 90 geladen, wobei das Basisadressenregister 70 die Basisadresse speichert und wobei alle gültigen Bits im Register 75 abgesehen vom ersten Eintrag im Prozess 88 gelöscht werden. Die nächsten aufeinander folgenden sequentiellen Befehlsholvorgänge laden die Verzweigungs-Cache-Registerdatei 76 mit Operationscodes durch die Operation der Entscheidung 83 (die JA ist), der Entscheidung 91 (NEIN) und des Prozesses 92, bis das Ende der Verzweigungs-Cache-Registerdatei 76 erreicht ist. Zu irgendeinem nachfolgenden Zeitpunkt, zu dem ein "Treffer" des Schleifen-Cache 62 vorkommt (die Entscheidung 83 ist JA), da die gültigen Bits im Register 75 alle in den Iterationen des Prozesses 92 gesetzt wurden, werden die Befehls-Operationscodes vielmehr aus der Verzweigungs-Cache-Registerdatei 76 als aus dem L1I-Daten-RAM 60 gelesen (im Prozess 94), wobei folglich Leistung gespart wird, die sich ansonsten aus solchen Zugriffen ergeben würde. Diese Operation fährt selbst im Fall von verschachtelten Schleifen fort, wie z. B. in 3 gezeigt, wobei berücksichtigt wird, dass jede der Holadressen des Prologs 66p und der inneren Schleife 68 "Treffern" im Schleifen-Cache 62 entspricht (die Entscheidungen 83 und 91 sind beide JA); der Rückwärtsverzweigungsbefehl am Ende der inneren Schleife 68 verursacht kein erneutes Laden der Verzweigungs-Cache-Registerdatei 76, da dieser Rückwärtsverzweigungsbefehl auch ein Treffer ist.
  • Dieser Operationszustand und die Inhalte der Verzweigungs-Cache-Registerdatei 76 bleiben bis zum Holen des nächsten Rückwärtsverzweigungsbefehls, der ein Ziel hat, das nicht einem der Speicherplätze in der Verzweigungs-Cache-Registerdatei 76 entspricht, intakt; mit anderen Worten, bis für einen gegebenen Holbefehl die Entscheidung 83 NEIN ist und die Entscheidung 85 JA ist. Im Beispiel von 3 verursachen diejenigen Befehlsholvorgänge nahe dem Ende des Epilogs 66e der äußeren Schleife, die nicht in der Verzweigungs-Cache-Registerdatei 76 gespeichert sind (d. h. für die die Entscheidung 83 NEIN ist), kein erneutes Laden der Verzweigungs-Cache-Registerdatei 76, da diese Befehle keine Rückwärtsverzweigungen sind (d. h. die Entscheidung 85 ist in jedem Fall NEIN). Die Operationscodes für diesen Endabschnitt des Epilogs 66e werden einfach aus dem L1I-Daten-RAM 60 im Prozess 86 gelesen. Das Holen der Rückwärtsverzweigung nach dem letzten Befehl des Epilogs 66e ist tatsächlich eine Rückwärtsverzweigung, aber da dieses Holen ein "Treffer" des Schleifen-Cache 62 ist, ist die Entscheidung 83 JA und das Holen aus dem Verzweigungs-Cache-Registerfeld 76 über den Prozess 94 fährt fort.
  • Diese erste bevorzugte Ausführungsform der Erfindung schafft folglich den wichtigen Vorteil eines verringerten Leistungsverbrauchs durch Beseitigen der Notwendigkeit eines Zugriffs auf einen Programm-Cache-Speicher der Ebene Eins für Befehle, die sich innerhalb einer kleinen engen Programmschleife befinden. In Anwendungen wie z. B. DSP-Routinen, in denen solche Schleifen vorherrschen, können die gesamten Leistungseinsparungen signifikant sein. Außerdem erfordert die Operation dieser bevorzugten Ausführungsform der Erfindung weder spezielle Befehle oder die Änderung des Programms noch werden alle Befehls-Operationscodes automatisch geholt und geladen.
  • Obwohl diese Schleifenfront-Cache-Methode gemäß dieser ersten bevorzugten Ausführungsform der Erfindung diesen Vorteil eines verringerten Leistungsverbrauchs schafft und in einer Weise, in der die Befehls-Operationscodes der Schleife in den Schleifen-Cache 62 während des ersten Rückkehrdurchlaufs durch die Schleife geladen werden, stellt die Schleifenfront-Cache-Methode gewisse Begrenzungen dar. Wenn für das Beispiel von verschachtelten Schleifen die Summe der Cache-Zeilen, die für den Prolog 66p und die innere Schleife 68 erforderlich sind, die Schleifen-Cache-Kapazität C62 übersteigt, liegen mit Bezug auf 3 Befehle in der inneren Schleife 68 nicht im Schleifen-Cache 62 vor, was den Gesamtvorteil für einen signifikanten Abschnitt der verschachtelten Schleifenzyklen verringert (d. h. die Befehle des Prologs 66p befinden sich im Schleifen-Cache 62, obwohl nur 1/m so häufig auf sie zugegriffen wird wie auf die Befehle der inneren Schleife 68, wobei m die Schleifenanzahl der inneren Schleife 68 ist). Wenn der Prolog 66p selbst die Schleifen-Cache-Kapazität C62 übersteigt, "konkurriert" der Schleifen-Cache 62 ferner zwischen der Oberseite der inneren Schleife 68 und der Oberseite der äußeren Schleife 66. Noch ferner werden viele Holpakete im Schleifen-Cache 62 gespeichert, die nur einmal ausgeführt werden, was die Leistungseinsparungen unter einigen Umständen verschlechtern kann.
  • Eine zweite bevorzugte Ausführungsform der vorliegenden Erfindung, die hierin als "Schleifenend-Cache" bezeichnet wird, wendet sich diesen Begrenzungen auf Kosten des Erfordernisses, dass jede Schleife zweimal vom Programm-Cache-Speicher der Ebene Eins aus ausgeführt wird, bevor sie in den Schleifen-Cache geladen wird. zu. Im Allgemeinen lädt die Schleifenend-Cache-Methode den Schleifen-Cache für Rückwärtsverzweigungen, die den Schleifen-Cache verfehlen (wie im Schleifenfront-Cache), jedoch nur in dem Fall, in dem der Rückwärtsverzweigungsfehlgriff zweimal in einer Reihe aufgetreten ist. Der Begriff "zweimal in einer Reihe" bezieht sich auf das Holen derselben Rückwärtsverzweigung zweimal, wobei kein weiterer Rückwärtsverzweigungs-Holvorgang dazwischen stattfindet.
  • Mit Bezug nun auf 6 ist wieder die Folge von Befehlen, die vorher hierin in Bezug auf 3 erörtert wurde, dargestellt, wobei die äußere Schleife 66 einen Prolog 66p, der zur inneren Schleife 68 führt, und einen Epilog 66e, der der inneren Schleife 68 nachläuft, aufweist. Gemäß dem Schleifenend-Cache dieser zweiten bevorzugten Ausführungsform der Erfindung entspricht die Oberseite des Schleifen-Cache vielmehr der Oberseite der inneren Schleife 68 als der Oberseite der äußeren Schleife 66. Dies ergibt sich aus der Rückwärtsverzweigung zur Oberseite der inneren Schleife 68, die zweimal in einer Reihe vorkommt, während die Rückwärtsverzweigung zur Oberseite der äußeren Schleife 66 nicht zweimal in einer Reihe vorkommt (da ein oder mehrere Fälle der Rückwärtsverzweigung der inneren Schleife 68 notwendigerweise zwischen aufeinander folgenden Rückwärtsverzweigungen der äußeren Schleife 66 vorkommen). Die Inhalte des Schleifen-Cache 62' gemäß dieser zweiten Ausführungsform der Erfindung, die die Kapazität C62' von 7 belegen, beginnen daher immer mit der und umfas sen die innere Schleife 68 und können auch einen Teil oder alles des Epilogs 66e umfassen (und können sogar Befehle jenseits der äußeren Schleife 66 umfassen).
  • Mit Bezug nun auf 7 wird nun die Konstruktion des Schleifen-Cache 62' gemäß dieser zweiten bevorzugten Ausführungsform der vorliegenden Erfindung beschrieben. Wie aus der folgenden Beschreibung ersichtlich ist, umfasst der Schleifen-Cache 62' mehrere ähnliche Elemente, wie innerhalb des vorstehend beschriebenen Schleifen-Cache 62 enthalten.
  • Der Schleifen-Cache 62' arbeitet, um auf Einträge in der Verzweigungs-Cache-Registerdatei 176 in Abhängigkeit von einer aktuellen Holadresse, die von der Befehlsholeinheit 10 in der Zentraleinheit 3 empfangen wird, zuzugreifen (zu lesen oder zu schreiben). Wie in der vorher beschriebenen Ausführungsform der vorliegenden Erfindung ist die Verzweigungs-Cache-Registerdatei 176 in diesem Beispiel ein indizierter Satz von N Registern, wobei jede Registerstelle oder jeder Registereintrag eine vollständige Cache-Zeile von Befehls-Operationscodes speichert. Der Wert N bezieht sich auf die Tiefe des Schleifenend-Caches, der vom Schleifen-Cache 62' implementiert wird. Gemäß dieser zweiten bevorzugten Ausführungsform der Erfindung weist die Verzweigungs-Cache-Registerdatei 176 einen Adresseneingang auf, der zum Empfangen eines Indexwerts vom Indexregister 182 gekoppelt ist, in Reaktion auf den ein Eintrag der Verzweigungs-Cache-Registerdatei 176 für einen Lese- oder Schreibzugriff unter der Steuerung von Signalen, die durch die Schleifen-Cache-Steuerlogik 174 an ihren Steuereingang R/W angelegt werden, ausgewählt wird. Der Dateneingang D der Verzweigungs-Cache-Registerdatei 176 empfängt wie vorher Operationscodedaten vom L1I-Daten-RAM 60 und der Datenausgang Q der Verzweigungs-Cache-Registerdatei 176 wird an einen Eingang des Multiplexierers 64 angelegt, durch welchen die Inhalte des ausgewählten Eintrages an die Zentraleinheit 3 übergeben werden können.
  • Das Register 168 für die nächste Kandidatenadresse im Schleifen-Cache 62' besitzt einen Dateneingang, der die Holadresse von der Holeinheit 10 empfängt, und besitzt einen Ausgang, der mit einem Eingang des Komparators 173 und mit einem Dateneingang des Basisadressenregisters 170 gekoppelt ist. Das Basisad ressenregister 170 besitzt einen Ausgang, der mit einem Eingang des Komparators 172 verbunden ist. Jedes des Registers 168 für die nächste Kandidatenadresse und des Basisadressenregisters 170 besitzt einen Steuereingang, der durch die Schleifen-Cache-Steuerlogik 174 angesteuert wird (wobei eine solche Verbindung in 7 nicht gezeigt ist). Die Komparatoren 172, 173 besitzen jeweils einen zweiten Eingang, der die Holadresse direkt von der Holeinheit 10 empfängt. An sich vergleicht der Komparator 172 die aktuelle Holadresse mit den aktuellen Inhalten des Basisadressenregisters 170, während der Komparator 173 die aktuelle Holadresse mit den aktuellen Inhalten des Registers 168 für die nächste Kandidatenadresse vergleicht. Die Ausgaben der Komparatoren 172, 173 werden zur Schleifen-Cache-Steuerlogik 174 jeweils auf den Leitungen EQF, EQN weitergeleitet.
  • Die aktuelle Holadresse aus der Holeinheit 10 wird auch von der Rückwärtsverzweigungs-Erfassungslogik 178 empfangen, die feststellt, ob die aktuelle Holadresse eine Rückwärtsverzweigung ist; das Ergebnis dieser Feststellung wird zur Schleifen-Cache-Steuerlogik 174 über die Leitung BW weitergeleitet. Die Rückwärtsverzweigungs-Erfassungslogik 178 ist ähnlich wie die Rückwärtsverzweigungs-Erfassungslogik 78 im vorstehend beschriebenen Schleifen-Cache 62 von 4 konstruiert. Alternativ kann ein Signal auf der Leitung BW durch die Holeinheit 10 in der Zentraleinheit 3 selbst erzeugt werden, was den Bedarf für die Rückwärtsverzweigungs-Erfassungslogik 178 im Schleifen-Cache 62' beseitigen würde.
  • Wie nachstehend beschrieben wird, arbeitet der Schleifen-Cache 62' auch in Reaktion darauf, ob die aktuelle Holadresse von der Holeinheit 10 relativ zur vorherigen Holadresse in einer Abfolge liegt. Gemäß dieser bevorzugten Ausführungsform der Erfindung umfasst der Schleifen-Cache 62' daher eine sequentielle Holerfassungslogik 180 zum Durchführen dieser Feststellung und aktiviert im Fall, dass die aktuelle Holadresse die nächste in der Folge von der vorherigen Holadresse ist, ein Signal auf der Leitung SEQ, das an die Schleifen-Cache-Steuerlogik 174 angelegt wird. Die sequentielle Holerfassungslogik 180 kann so konstruiert werden, dass sie ein Register zum Speichern der vorherigen Holadresse und eine Kombinationslogik, die das Signal auf der Leitung SEQ in Reaktion auf die Differenz zwischen den Inhalten dieses Registers und der aktuellen Holadresse erzeugt, die sich um Eins unterscheidet (d. h. in einer Abfolge liegen), umfasst. Effektiv aktiviert die sequentielle Holerfassungslogik 180 ein Signal in Reaktion auf die Wahrheit der Beziehung: A – B = 1wobei sich A auf die aktuelle Holadresse bezieht und sich B auf die vorherige Holadresse bezieht. Diese Gleichung kann für die Zwecke der Erleichterung dieses Vergleichs reduziert werden durch: A + (–B) = 1wobei –B das Zweier-Komplement oder arithmetische Komplement der vorherigen Holadresse in einer Darstellung mit einem Vorzeichenbit ist. Es ist natürlich bekannt, dass sich eine Zweierkomplementdarstellung eines digitalen Werts mit negativem Vorzeichen von einem bitweisen Komplement dieses Werts um Eins unterscheidet; mit anderen Worten, diese Beziehung kann ausgedrückt werden als: A + (~B + 1) = 1
  • Wobei ~B das Einer-Komplement oder bitweise Komplement der vorherigen Holadresse ist. Diese Beziehung ist natürlich reduzierbar zu: A + ~B = 0
  • Mit anderen Worten, wenn die aktuelle Holadresse plus das bitweise Komplement der vorherige Holadresse gleich Null ist (d. h. das Zweier-Komplement von negativer Null, das durch lauter 1-en dargestellt ist), ist die aktuelle Holadresse die nächste sequentielle Adresse der vorherigen Holadresse. Das US-Patent Nr. 5 600 583, herausgegeben am 4. Februar 1997, gemeinsam hiermit erteilt und durch diesen Hinweis hierin aufgenommen, beschreibt eine Logikschaltung zum effizienten Feststellen, ob die Summe von zwei digitalen Werten gleich Null list; eine sequentielle Holerfassungslogik 180 gemäß dieser bevorzugten Ausführungs form der Erfindung kann in der im US-Patent Nr. 5 600 583 beschriebenen Weise konstruiert werden, um diesen Vergleich durchzuführen.
  • Alternativ kann die Zentraleinheit 3 selbst ein Signal auf der Leitung SEQ erzeugen, das zur Schleifen-Cache-Steuerlogik 174 weitergeleitet wird, um anzugeben, dass die aktuelle Holadresse die nächste in der Reihe von der vorherigen Holadresse ist.
  • Der Schleifen-Cache 62' gemäß dieser Ausführungsform der Erfindung umfasst ferner ein Indexregister 182, das eine Rücksetzeingabe von der Schleifen-Cache-Steuerlogik 174 auf der Leitung LD0 empfängt. Das Indexregister 182 weist einen Ausgang auf, der an den Adresseneingang der Verzweigungs-Cache-Registerdatei 176 und auch an die Schleifen-Cache-Steuerlogik 174 zur Abfrage seiner Inhalte angelegt wird. Diese Ausgabe des Indexregisters 182 wird auch an einen Eingang des Addierers 183 übergeben, an dessen anderen Eingang eine festverdrahtete "1" angelegt wird und dessen Ausgang mit dem Eingang des Indexregisters 182 gekoppelt ist, so dass jede Operation des Addierers 183 die Inhalte des Indexregisters 182 inkrementiert, um seine Inhalte für die nächste Holadressenoperation zu aktualisieren. Ein Steuersignal (nicht dargestellt) von der Schleifen-Cache-Steuerlogik 174 steuert das Speichern von Werten im Indexregister 182.
  • Die Schleifen-Cache-Steuerlogik 174 gemäß dieser bevorzugten Ausführungsform der Erfindung umfasst ein Register 175 für gültiges Bit zum Speichern eines gültigen Bits, das jedem Eintrag der Verzweigungs-Cache-Registerdatei 176 zugeordnet ist. Jedes gültige Bit gibt, wenn es gesetzt ist, an, dass die Inhalte des zugehörigen Eintrags der Verzweigungs-Cache-Registerdatei 176 einen gültigen Operationscode für die zugehörige Holadresse enthalten. Die Schleifen-Cache-Steuerlogik 174 umfasst auch ein Flag LFLAG, das, wenn es gesetzt ist, angibt, dass der jüngste Holvorgang der Adresse, die gerade im Basisadressenregister 170 gespeichert ist, ein "Treffer" in Bezug auf den Schleifen-Cache 62' war.
  • Wie vorher, steuert die Schleifen-Cache-Steuerlogik 174 die Operation des Schleifen-Cache 62' durch Steuersignale, die an Steuereingänge R/W der Verzweigungs-Cache-Registerdatei 176 angelegt werden, durch das Steuersignal auf der Leitung SEL, das an den Auswahleingang des Multiplexierers 64 (2) angelegt wird, und durch Steuern der Speicherung von Werten im Register 168 für die nächste Kandidatenadresse, im Basisadressenregister 170 und im Indexregister 182. Wie im Fall des vorstehend beschriebenen Schleifen-Cache 62 gibt die Schleifen-Cache-Steuerlogik 174 auch Lesevorgänge des L1I-Daten-RAM 60 frei und sperrt diese durch Ausgeben von Steuersignalen auf der Leitung RD. Es wird in Erwägung gezogen, dass die Schleifen-Cache-Steuerlogik 174 leicht durch Fachleute mit Bezug auf diese Patentbeschreibung realisiert werden kann, beispielsweise durch eine Kombinations- oder sequentielle Logik, die zum Ausführen der Operation des Schleifen-Cache 62' geeignet ist, wie nun in Bezug auf 8 beschrieben wird.
  • Für die Zwecke dieser Beschreibung wird die Operation des Schleifen-Cache 62' von einem Anfangszustand aus beschrieben, in dem alle gültigen Bits im Register 175 gelöscht sind und in dem das Flag LFLAG auch gelöscht ist. Dieser Zustand entspricht der Bedingung, unter der keine gültigen Operationscodes in der Verzweigungs-Cache-Registerdatei 176 gespeichert sind und unter der noch keine Rückwärtsverzweigungsbefehle ausgeführt wurden, beispielsweise bei der anfänglichen Ausführung eines ersten Programms nach dem Rücksetzen. Wie aus der folgenden Beschreibung ersichtlich ist, entspricht dieser Zustand auch effektiv jenem, in dem eine Schleife verlassen wurde und in diese nicht erneut eingetreten wird. Die folgende Beschreibung der Operation des Schleifen-Cache 62' wird für eine beispielhafte Folge präsentiert, die das Laden der Verzweigungs-Cache-Registerdatei 176, gefolgt von der Ausführung von Befehlen von der Verzweigungs-Cache-Registerdatei 176, umfasst.
  • Im Prozess 184 wird eine neue Holadresse vom Schleifen-Cache 62' von der Befehlsholeinheit 10 der Zentraleinheit 3 empfangen. Wie in 7 gezeigt, wird diese neue Holadresse vom Register 168 für die nächste Kandidatenadresse durch eine Eingabe vom Komparator 172 und durch die Rückwärtsverzweigungs-Erfassungslogik 178 und die sequentielle Holerfassungslogik 180 empfangen (aber noch nicht in dieses geladen) (in diesem Beispiel, in dem die Zentraleinheit 3 selbst nicht die Rückwärtsverzweigungs- und sequentiellen Holsteuersignale auf den Leitungen BW und SEQ erzeugt).
  • Der Schleifen-Cache 62' trifft als nächstes die Entscheidung 185 durch die Operation der Rückwärtsverzweigungs-Erfassungslogik 178 oder alternativ durch Empfangen eines Signals auf der Leitung BW von der Zentraleinheit 3, um festzustellen, ob die aktuelle Holadresse eine Rückwärtsverzweigung darstellt. Wenn nicht (die Entscheidung 185 ist NEIN), wie durch ein inaktives Signal auf der Leitung BW angegeben, das von der Schleifen-Cache-Steuerlogik 174 empfangen wird, geht die Steuerung zur Entscheidung 187. Der Komparator 172 vergleicht die aktuelle Holadresse mit den aktuellen Inhalten des Basisadressenregisters 170 und aktiviert ein aktives Signal auf der Leitung EQF, wenn die zwei Adressen gleich sind. Die Schleifen-Cache-Steuerlogik 174 fragt den Zustand der Leitung EQF vom Komparator 172 sowie den Zustand des dem Eintrag 0 in Register 175 zugeordneten gültigen Bits ab. Wenn entweder die Leitung EQF inaktiv ist oder das gültige Bit für den Eintrag 0 gelöscht ist (die Entscheidung 187 ist NEIN), entspricht die aktuelle Holadresse nicht der Basisadresse der Verzweigungs-Cache-Registerdatei 176, für die deren Inhalte gültig sind. Die Steuerung geht dann in diesem Fall zur Entscheidung 189.
  • Wie vorstehend angemerkt, empfängt die sequentielle Holerfassungslogik 180 die aktuelle Holadresse und stellt fest, ob diese Holadresse zur vorherigen Holadresse sequentiell ist, wobei sie die Leitung SEQ aktiviert, wenn dies der Fall ist. Die Entscheidung 189 wird von der Schleifen-Cache-Steuerlogik 174 getroffen, die den Zustand der Leitung SEQ von der sequentiellen Holerfassungslogik 180 (oder von der Zentraleinheit 3, wenn sie von dieser erzeugt wird) abfragt und den Zustand des Flag LFLAG und die Inhalte des Indexregisters 182 abfragt. Wenn die aktuelle Holadresse kein sequentieller Holvorgang ist (die Leitung SEQ ist inaktiv) oder das Flag LFLAG gelöscht ist oder die Inhalte des Indexregisters 182 größer als oder gleich der Kapazität N der Verzweigungs-Cache-Registerdatei 176 sind, führt die Entscheidung 189 ein NEIN-Ergebnis zurück. Dies entspricht dem Ereignis eines Cache-Fehlgriffs des Schleifen-Cache 62'. Der Prozess 190 wird dann durch die Schleifen-Cache-Steuerlogik 174 durchgeführt, die einen Lesevorgang des L1I-Daten-RAM 60 über ein aktives Signal auf der Leitung RD freigibt; die Schleifen-Cache-Steuerlogik 174 bewirkt auch, dass der Multiplexierer 64 die Ausgabe des L1I-Daten-RAM 60 als geholten Operationscode verwendet, indem sie das geeignete Signal auf der Leitung SEL ausgibt. Die Schleifen-Cache-Steuerlogik 174 löscht das Flag LFLAG 177, das angibt, dass die letzte Holadresse einem Fehlgriff entsprach. Die Steuerung geht dann zum Prozess 184 zum Empfangen der nächsten Holadresse zurück.
  • Beim Empfang einer Holadresse, die eine Rückwärtsverzweigung ist (die Entscheidung 185 ist JA), führt die Schleifen-Cache-Steuerlogik 174 dann die Entscheidung 191 aus, um festzustellen, ob die aktuelle Holadresse gleich den Inhalten der Basisadresse 170 ist, und wenn das gültige Bit im Register 175 für den Indexwert von 0 gesetzt ist (d. h. die Basisadresse). Wenn keine dieser Bedingungen erfüllt ist (d. h. die Entscheidung 191 ist NEIN), geht die Steuerung zur Entscheidung 193. Zur Erläuterung, wie vorstehend angemerkt, lädt das Schleifenend-Cache-Verfahren, das durch den Schleifen-Cache 62' gemäß dieser zweiten bevorzugten Ausführungsform der vorliegenden Erfindung verkörpert wird, effektiv die Verzweigungs-Cache-Registerdatei 176 nur beim zweiten Durchlauf durch eine Schleife. Bei dem in 8 gezeigten Betriebsverfahren führt die Entscheidung 191 ein NEIN-Ergebnis für jeden des ersten und des zweiten Falls der durch die Entscheidung 185 bestimmten Rückwärtsverzweigung zurück und, wie aus der folgenden Beschreibung ersichtlich ist, führt ein JA-Ergebnis für den dritten und den anschließenden Fall dieser Rückwärtsverzweigung zurück.
  • Mit Bezug auf 7 vergleicht der Komparator 173 die Inhalte des Registers 168 für die nächste Kandidatenadresse mit der aktuellen Holadresse, wobei er ein aktives Signal auf der Leitung EQN ausgibt, wenn die zwei Werte gleich sind. Der Zustand der Leitung EQN wird von der Schleifen-Cache-Steuerlogik 174 in der Entscheidung 193 (8) abgefragt. Im Fall, dass die durch die aktuelle Holadresse dargestellte Rückwärtsverzweigung für den ersten Fall genommen wird, ist die aktuelle Holadresse nicht gleich dem Inhalt des Registers 168 für die nächste Kandidatenadresse und die Entscheidung 193 führt daher ein NEIN-Ergebnis zurück. Die Steuerung geht dann zum Prozess 194, in dem die Schleifen-Cache-Steuerlogik 174 bewirkt, dass das Register 168 für die nächste Kandidatenadresse die aktuelle Holadresse speichert; dies legt effektiv die aktuelle Holadresse als Kandidaten für eine mögliche Speicherung ihrer Folge in der Verzweigungs-Cache-Registerdatei 176 fest (wenn die Schleife ein zweites Mal ausgeführt wird). Der Befehls-Operationscode für die aktuelle Holadresse wird freigegeben, damit er vom L1I-Daten-RAM 60 gelesen wird und an die Holeinheit 10 angelegt wird, indem Signale auf den Leitungen RD und SEL aktiviert werden, und das Flag LFLAG wird auch gelöscht, beides im Prozess 194. Die Steuerung geht dann wieder zum Prozess 184, um auf die nächste Holadresse zu warten.
  • In dem Umfang, in dem zwischengeschaltete Adressen nach der Kandidatenholadresse der Reihe nach geholt werden, werden die Holvorgänge weiterhin aus dem L1I-Daten-RAM 60 durchgeführt (über den Prozess 190). Beim Empfang des zweiten aufeinander folgenden Falls einer Rückwärtsverzweigung (die Entscheidung 185 ist JA), für die die Holadresse noch nicht gleich der Basisadresse ist (die Entscheidung 191 ist NEIN), jedoch gleich den Inhalten des Registers 168 für die nächste Kandidatenadresse ist, gibt der Komparator 173 ein aktives Signal auf der Leitung EQN aus, in welchem Fall die Entscheidung 193 ein JA-Ergebnis zurückführt. Die Steuerung geht dann zum Prozess 196, in dem die Schleifen-Cache-Steuerlogik 174 auf das Holen des zweiten Falls dieser Rückwärtsverzweigung antwortet. Wenn eine andere Rückwärtsverzweigung zwischen dem Zeitpunkt des ersten und des zweiten Falls einer Rückwärtsverzweigung erfasst worden wäre, würde der zweite Fall natürlich behandelt werden, als ob er ein erster Fall wäre (wobei die Entscheidung 193 ein NEIN zurückführt), da die zwischengeschaltete Rückwärtsverzweigungs-Holadresse im Register 168 für die nächste Kandidatenadresse gespeichert werden würde.
  • Im Prozess 196 bewirkt die Schleifen-Cache-Steuerlogik 174, dass die aktuelle Holadresse, die gleich den Inhalten des Registers 168 für die nächste Kandidatenadresse ist, im Basisadressenregister 170 gespeichert wird. Die Schleifen-Cache-Steuerlogik 174 gibt auch ein aktives Signal auf der Leitung LD0 aus, das die Inhalte des Indexregisters 182 auf Null zurücksetzt (und einen Nullindexwert an den Adresseneingang der Verzweigungs-Cache-Registerdatei 176 anlegt). Im Register 175 wird das gültige Bit für den Eintrag 0 gesetzt (da seine Inhalte mit dem korrekten Operationscode geschrieben werden) und die gültigen Bits für alle anderen Einträge werden gelöscht. Der Speicherplatz, der der aktuellen Holadresse im L1I-Daten-RAM 60 entspricht, wird gelesen (die Leitung RD ist aktiv) und seine Inhalte an den Dateneingang der Verzweigungs-Cache-Registerdatei 176 zusammen mit einem Lesesteuersignal am Steuereingang R/W angelegt, was diesen Operationscode im 0. Eintrag der Verzweigungs-Cache-Registerdatei 176 speichert. Die Schleifen-Cache-Steuerlogik 174 bewirkt, dass der Multiplexierer 64 die Ausgabe des L1I-Daten-RAM 60 als geholten Operationscode verwendet, indem das geeignete Signal auf der Leitung SEL ausgegeben wird. Das Flag LFLAG wird gesetzt, das angibt, dass diese Schleife nun einem Treffer des Schleifen-Cache 62' entspricht. Der Addierer 183 inkrementiert dann die Inhalte des Indexregisters 182 zur Vorbereitung auf die nächste Holadresse im Prozess 184.
  • Beim Empfang der Holadressen für sequentielle Befehle für die zweimal empfangene Rückwärtsverzweigung (d. h. für diejenigen Befehle innerhalb der Schleife) führen die Entscheidungen 185 und 187 NEIN-Ergebnisse zurück (da diese Adressen in einer Abfolge liegen, aber nicht die aktuell im Basisadressenregister 170 gespeicherte Adresse sind, welches die Rückwärtsverzweigungsadresse ist). Da jedoch diese Holadressen in der Schleife in einer Abfolge liegen (Leitung SEQ aktiv), wobei das Flag LFLAG gesetzt ist (vom Prozess 196), und solange sich die Holadresse innerhalb der Kapazität der Verzweigungs-Cache-Registerdatei 176 befindet (wobei die Inhalte des Indexregisters 182 geringer als N sind), führt die Entscheidung 189 ein JA-Ergebnis zurück. Die Schleifen-Cache-Steuerlogik 174 fragt dann das gültige Bit des Registers 175 entsprechend dem aktuellen Indexwert in der Entscheidung 199 ab, um festzustellen, ob der entsprechende Eintrag der Verzweigungs-Cache-Registerdatei 176 den gültigen Operationscode für die aktuelle Holadresse enthält. Wenn nicht (die Entscheidung 199 ist NEIN), wie es z. B. für diesen zweiten Durchlauf durch die Schleife der Fall ist, geht die Steuerung zum Prozess 200, in dem das gültige Bit im Register 175 für den aktuellen Indexwert gesetzt wird; die Inhalte des L1I-Daten-RAM 60, die der aktuellen Holadresse entsprechen, werden gelesen (Leitung RD aktiv), an die Zentraleinheit 3 angelegt (wobei die Leitung SEL bewirkt, dass der Multiplexierer 64 den L1I-Daten-RAM 60 auswählt) und in den entsprechenden Eintrag der Verzweigungs-Cache-Registerdatei 176 geladen. Das Indexregister 182 wird dann durch den Addierer 183 zur Vorbereitung auf die nächste Holadresse, die im Prozess 184 empfangen wird, inkrementiert.
  • Diese Sequenz wird dann für den Rest der Schleife wiederholt, wobei die Verzweigungs-Cache-Registerdatei 176 mit Operationscodes geladen wird, bis die Schleife durch ein nicht-sequentielles Holen oder dadurch, dass die Schleifenlänge die Kapazität der Verzweigungs-Cache-Registerdatei 176 überschreitet (d, h. die Entscheidung 189 ist NEIN), verlassen wird oder bis ein Rückwärtsverzweigungsbefehl erfasst wird (die Entscheidung 185 ist JA). Bei der Erfassung einer Rückwärtsverzweigung und wenn die erfasste Verzweigung dieselbe Rückwärtsverzweigung wie jene ist, für die die Schleife in der Verzweigungs-Cache-Registerdatei 176 gespeichert ist, wie dadurch bestimmt, dass die aktuelle Holadresse gleich den Inhalten des Basisadressenregisters 170 für das gesetzte gültige Bit 0 ist, führt die Entscheidung 191 ein JA-Ergebnis zurück. Die Steuerung geht dann zum Prozess 198, in dem das Register 168 für die nächste Kandidatenadresse den aktuellen Holadressenwert lädt (oder gegebenenfalls erneut lädt); diese Operation schließt das erneute Laden der Verzweigungs-Cache-Registerdatei 176 abgesehen von zwei aufeinander folgenden verschiedenen Rückwärtsverzweigungen aus. Da die aktuelle Rückwärtsverzweigung wieder an der Oberseite beginnt, wird außerdem das Indexregister 182 auf Null zurückgesetzt, um die korrekte Adresse zur Verzweigungs-Cache-Registerdatei 176 für das Holen an der Oberseite der Schleife zu liefern. Dieser 0. Eintrag der Verzweigungs-Cache-Registerdatei 176 wird dann durch Aktivieren eines Lesesteuersignals am Steuereingang R/W gelesen und seine Ausgabe an den Multiplexierer 64 angelegt und unter der Steuerung eines Signals auf der Leitung SEL von der Schleifen-Cache-Steuerlogik 174 ausgewählt. Um den Leistungsverbrauch zu sparen, sperrt die Schleifen-Cache-Steuerlogik 174 die Leseoperation des L1I-Daten-RAM 60 durch Deaktivieren der Leitung RD; falls erwünscht, kann außerdem ein ähnliches Sperrsignal an den L1I-Kennzeichen-RAM 54 angelegt werden, um zusätzliche Leistung zu sparen, indem Lesevorgänge an diesem verhindert werden. Der Prozess 174 beendet damit, dass das Flag LFLAG gesetzt wird (wenn es nicht bereits gesetzt ist) und der Addierer 183 die Inhalte des Indexregisters 182 zur Vorbereitung auf die nächste Holadresse, die im Prozess 184 empfangen wird, inkrementiert.
  • Aufeinander folgende Holvorgänge der Befehle in der gespeicherten Schleife können dann vielmehr von der Verzweigungs-Cache-Registerdatei 176 als vom L1I-Daten-RAM 60 durchgeführt werden. Da diese Holvorgänge keine Rückwärtsverzweigungen sind (die Entscheidung 185 ist NEIN) und nicht von der Oberseite der Schleife stammen (die Entscheidung 187 ist NEIN), sondern aufeinander folgende Holvorgänge sind, wobei das Flag LFLAG gesetzt ist, führt die Entscheidung 189 ein JA-Ergebnis zurück, solange der Holvorgang innerhalb der Kapazität der Verzweigungs-Cache-Registerdatei 176 liegt. Da die Verzweigungs-Cache-Registerdatei 176 mit diesen Befehlen geladen wird, für die das gültige Bit im Register 175 gesetzt ist, führt die Entscheidung 199 ein JA-Ergebnis zurück und die Steuerung geht zum Prozess 202. In diesem Fall bewirkt die Schleifen-Cache-Steuerlogik 174 einen Lesevorgang des Operationscodes aus der Verzweigungs-Cache-Registerdatei 176 von dem Eintrag, der den aktuellen Inhalten des Indexregisters 182 entspricht, während der L1I-Daten-RAM 60 vom Durchführen des Lesevorgangs gesperrt wird; der Multiplexierer 64 wird auch gesteuert, um die Ausgabe der Verzweigungs-Cache-Registerdatei 176 zum Anlegen des Operationscodes an die Zentraleinheit 3 auszuwählen. Die Inhalte des Indexregisters 182 werden wieder inkrementiert, wobei auf die nächste Holadresse im Prozess 184 gewartet wird.
  • Die Operation des Schleifen-Cache 62' gemäß dieser zweiten bevorzugten Ausführungsform der Erfindung ermöglicht auch das Holen von Befehlen aus der Verzweigungs-Cache-Registerdatei 176 im Fall, dass eine Schleife mindestens zweimal ausgeführt wurde, aber dann in diese als nächstes in sequentieller Weise (und nicht von einer Rückwärtsverzweigung, sondern vielmehr von der Entscheidung 185, die ein NEIN-Ergebnis zurückführt) eingetreten wird. Dies geschieht durch die Operation der Entscheidung 187, die für einen beliebigen Befehl einer Holadresse gleich den Inhalten des Basisadressenregisters 170, für die das gültige Bit im Register 175 für den Eintrag 0 gesetzt ist, die Steuerung an den Prozess 198 überträgt, um das Holen des Operationscodes aus der Verzweigungs-Cache-Registerdatei 176 zu bewirken, selbst wenn in die Schleife nicht von einer Rückwärtsverzweigung eingetreten wird. Die Operation geht von diesem Punkt an in der vorstehend beschriebenen Weise vorwärts weiter.
  • Wie im Fall des Schleifen-Cache 62 gemäß der ersten bevorzugten Ausführungsform der Erfindung schafft die Operation des Schleifen-Cache 62' gemäß dieser zweiten bevorzugten Ausführungsform der Erfindung signifikante Vorteile in der Operation einer programmierbaren Logikvorrichtung wie z. B. eines Digitalsignalprozessors oder Mikroprozessors. Insbesondere wird in Betracht gezogen, dass eine signifikante Leistungsverringerung bei der Ausführung von Schleifen erhalten wird, indem die Operationscode-Holvorgänge vielmehr von einer Registerdatei als von einem Cache-Speicher höherer Ebene durchgeführt werden können. Ferner wird die die Operationscodes enthaltende Registerdatei nur geladen, wenn es geeignet ist, und kein spezieller Blockwiederholungsbefehl ist erforderlich.
  • Ferner verringert der Schleifenend-Cache gemäß dieser zweiten bevorzugten Ausführungsform der Erfindung die Möglichkeit einer "Kollision" (d. h. das wiederholte und ineffiziente erneute Laden des Schleifen-Cache), die gemäß der Schleifenfront-Cache-Methode der ersten bevorzugten Ausführungsform der Erfindung vorkommen kann; außerdem wird die Verzweigungs-Cache-Registerdatei nicht mit Operationscode für Schleifen geladen, die nur einmal ausgeführt wer den. Der Schleifenend-Cache erfordert natürlich einen zusätzlichen Durchlauf durch die Schleife, um die Verzweigungs-Cache-Registerdatei zu laden, es wird jedoch in Erwägung gezogen, dass viele Codefolgen, insbesondere jene, die von DSPs durchgeführt werden, Schleifen verwenden, die viele Male ausgeführt werden, und an sich wird nicht in Betracht gezogen, dass dieser zusätzliche Durchlauf den Vorteil der vorliegenden Erfindung signifikant begrenzt.
  • Daher wird in Betracht gezogen, dass die vorliegende Erfindung bedeutende Leistungseinsparungen in programmierbaren Vorrichtungen schafft. Zur Simulation gemäß einem Satz von DSP-Bewertungen wird beispielsweise in Erwägung gezogen, dass die Trefferraten für Registerdateien mit zweiunddreißig Cache-Zeileneinträgen gemäß dem Schleifenfront-Cache im Durchschnitt in einer Größenordnung von 85 % liegen können, während Trefferraten für den Schleifenend-Cache im Durchschnitt in einer Größenordnung von 80 % liegen können; es wurde festgestellt, dass der Schleifenend-Cache höhere Trefferraten für kleinere Registerdateien aufweist.
  • Obwohl die vorliegende Erfindung gemäß ihren bevorzugten Ausführungsformen beschrieben wurde, wird natürlich in Betracht gezogen, dass Modifikationen an und Alternativen zu diesen Ausführungsformen, wie z. B. Modifikationen und Alternativen, die die Vorteile und Vorzüge dieser Erfindung erhalten, für übliche Fachleute mit Bezug auf diese Patentbeschreibung und ihre Zeichnungen ersichtlich sind. Es wird in Betracht gezogen, dass solche Modifikationen und Alternativen innerhalb des Schutzbereichs dieser Erfindung, wie anschließend hierin beansprucht, liegen.

Claims (4)

  1. Befehlsprogrammierbarer Prozessor (1), der umfasst: einen Programmspeicher (60) zum Speichern von Befehls-Operationscodes; eine Zentraleinheit (3), die eine oder mehrere Ausführungseinheiten zum Ausführen von Datenverarbeitungsbefehlen sowie eine Befehlsholeinheit (10), um für den Programmspeicher eine Holadresse bereitzustellen, um von diesem einen einer Holadresse entsprechenden Befehls-Operationscode zu holen, enthält; und einen Schleifen-Cache (62), der mit der Befehlsholeinheit gekoppelt ist und eine Verzweigungs-Cache-Registerdatei (76) mit mehreren Speicherplätzen zum Speichern von Befehlscodes, einen Dateneingang, der mit dem Ausgang des Programmspeichers gekoppelt ist, und einen Datenausgang enthält; einen Multiplexierer (64), der einen mit einem Ausgang des Programmspeichers gekoppelten ersten Eingang, einen mit dem Datenausgang der Verzweigungs-Cache-Registerdatei gekoppelten zweiten Eingang, einen Auswahleingang und einen mit der Befehlsholeinheit der Zentraleinheit gekoppelten Ausgang besitzt; und eine Schleifen-Cache-Steuerlogik (74), die einen ersten Steuerausgang, der mit einem Steuereingang des Programmspeichers gekoppelt ist, einen zweiten Steuerausgang, der mit dem Auswahleingang des Multiplexierers gekoppelt ist, und einen dritten Steuerausgang, der mit der Verzweigungs-Cache-Registerdatei gekoppelt ist, um Schreibvorgänge in die Datei und Lesevorgänge aus der Datei zu steuern, besitzt, wobei die Schleifen-Cache-Steuerlogik (74) den Multiplexierer in der Weise steuert, dass er den Ausgang der Verzweigungs-Cache-Registerdatei auswählt und ein Lesen des Programmspeichers in Reaktion auf einen Schleifen-Cache-Treffer, der angibt, dass die Holadresse einem der in der Verzweigungs-Cache-Registerdatei gespeicherten Befehlscodes entspricht, sperrt, wobei der Ausgang des Programmspeichers auch mit einem Dateneingang der Verzweigungs-Cache-Registerdatei gekoppelt ist und die Schleifen-Cache-Steuerlogik einen Eingang zum Empfangen eines Rückwärtsverzweigungssignals besitzt, das angibt, dass eine Holadresse einer Rückwärtsverzweigung entspricht, wobei die Schleifen-Cache-Steuerlogik außerdem die Verzweigungs-Cache-Registerdatei steuert, um einen an ihrem Dateneingang vom Programmspeicher empfangenen Befehlscode in Reaktion auf den Empfang des Rückwärtsverzweigungssignals in Kombination mit der Holadresse, die keinem der in der Verzweigungs-Cache-Registerdatei gespeicherten Befehlscodes entspricht, zu speichern; dadurch gekennzeichnet, dass die Schleifen-Cache-Steuerlogik ferner ein Basisadressenregister (70) zum Speichern einer Basisholadresse enthält; und die Schleifen-Cache-Steuerlogik (62) einen Schleifen-Cache-Treffer bestimmt, falls die Differenz zwischen der Holadresse und der Basisholadresse größer oder gleich null und kleiner als die Anzahl der mehreren Speicherplätze in der Verzweigungs-Cache-Registerdatei ist.
  2. Prozessor nach Anspruch 1, bei dem die Schleifen-Cache-Steuerlogik (74) ferner umfasst: einen Indexkomparator (72), der einen ersten Eingang, der mit dem Basisadressenregister gekoppelt ist, einen zweiten Eingang, der mit der Befehlsholeinheit gekoppelt ist, um von dieser die Holadresse zu empfangen, und einen Ausgang, der mit einem Adresseneingang der Verzweigungs-Cache-Registerdatei gekoppelt ist, um einen Indexwert bereitzustellen, der einer Differenz zwischen der Holadresse und der Basisholadresse entspricht, der mit der Schleifen-Cache-Steuerlogik gekoppelt ist, um einen Schleife-Cache-Treffer zu bestimmen, aufweist.
  3. Prozessor nach Anspruch 1, bei dem die Schleifen-Cache-Steuerlogik ferner umfasst: ein Register (168) für den nächsten Kandidaten, das in Reaktion auf den Empfang eines Rückwärtsverzweigungssignals in Kombination mit der Holadresse, die keinem der in der Verzweigungs-Cache-Registerdatei gespeicherten Befehlscodes entspricht, eine Holadresse speichert; wobei das Basisadressenregister mit dem Register für den nächsten Kandidaten gekoppelt ist und die Inhalte des Registers für den nächsten Kandidaten als eine Basisholadresse in Reaktion auf die Tatsache speichert, dass die Schleifen-Cache-Steuerlogik ein Rückwärtsverzweigungssignal in Kombination mit der den Inhalten des Registers für den nächsten Kandidaten entsprechenden Holadresse empfängt; und wobei die Schleifen-Cache-Steuerlogik die Verzweigungs-Cache-Registerdatei so steuert, dass sie einen an seinem Dateneingang von dem Programmspeicher empfangenen Befehlscode in Reaktion auf die Tatsache speichert, dass sie ein Rückwärtsverzweigungssignal in Kombination mit der den Inhalten des Registers für den nächsten Kandidaten entsprechenden Holadresse empfängt.
  4. Prozessor nach Anspruch 3, bei dem die Schleifen-Cache-Steuerlogik ferner umfasst: ein Indexregister (182), das einen mit einem Adresseneingang der Verzweigungs-Cache-Registerdatei gekoppelten Ausgang besitzt und mit einem Inkrementierer gekoppelt ist, um die Inhalte des Indexregisters jeweils zu inkrementieren, wenn der Schleifen-Cache eine Holadresse empfängt; ein Register (175) für gültiges Bit, das mehrere Bitplätze besitzt, wovon jeder einem Speicherplatz der Verzweigungs-Cache-Registerdatei zugeordnet ist und wovon jeder angibt, ob die Inhalte seines zugeordneten Speicherplatzes der Verzweigungs-Cache-Registerdatei einen gültigen Befehlscode enthalten; wobei die Schleifen-Cache-Steuerlogik außerdem einen Eingang besitzt, um ein sequentielles Holsignal (SEQ) zu empfangen, das angibt, dass die Holadresse von der Befehlsholeinheit in einer Abfolge mit einer vorhergehenden Holadresse steht; und wobei die Schleifen-Cache-Steuerlogik die Verzweigungs-Cache-Registerdatei steuert, um einen Befehlscode, der von dem Programmspeicher an seinem Dateneingang empfangen wird, an einem Speicherplatz, der durch die Inhalte des Indexregisters angegeben wird, in Reaktion auf den Empfang des sequentiellen Holsignals und auf den Bitplatz des Registers für gültiges Bit, der angibt, dass der dem Inhalt des Indexregisters entsprechende Speicherplatz keinen gültigen Befehlscode enthält, zu speichern.
DE60027395T 1999-11-30 2000-11-29 Befehlsschleifenspuffer Expired - Lifetime DE60027395T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16826099P 1999-11-30 1999-11-30
US168260P 1999-11-30

Publications (2)

Publication Number Publication Date
DE60027395D1 DE60027395D1 (de) 2006-05-24
DE60027395T2 true DE60027395T2 (de) 2007-02-01

Family

ID=22610771

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60027395T Expired - Lifetime DE60027395T2 (de) 1999-11-30 2000-11-29 Befehlsschleifenspuffer

Country Status (3)

Country Link
EP (1) EP1107110B1 (de)
JP (1) JP2001195302A (de)
DE (1) DE60027395T2 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7360023B2 (en) 2003-09-30 2008-04-15 Starcore, Llc Method and system for reducing power consumption in a cache memory
US9772851B2 (en) * 2007-10-25 2017-09-26 International Business Machines Corporation Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9183155B2 (en) 2013-09-26 2015-11-10 Andes Technology Corporation Microprocessor and method for using an instruction loop cache thereof
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
CN108845832B (zh) * 2018-05-29 2023-05-30 西安微电子技术研究所 一种提高处理器主频的流水线细分装置
CN112230992B (zh) * 2019-07-15 2023-05-23 杭州中天微系统有限公司 一种包含分支预测循环的指令处理装置、处理器及其处理方法
CN117524287B (zh) * 2024-01-04 2024-03-22 合肥奎芯集成电路设计有限公司 内存芯片自测试电路和内存芯片自测试方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951679A (en) * 1996-10-31 1999-09-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods for issuing successive iterations of a short backward branch loop in a single cycle
US5893142A (en) * 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
US5920890A (en) * 1996-11-14 1999-07-06 Motorola, Inc. Distributed tag cache memory system and method for storing data in the same

Also Published As

Publication number Publication date
JP2001195302A (ja) 2001-07-19
EP1107110A2 (de) 2001-06-13
EP1107110B1 (de) 2006-04-19
EP1107110A3 (de) 2003-05-07
DE60027395D1 (de) 2006-05-24

Similar Documents

Publication Publication Date Title
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE4218003C2 (de) Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69233313T2 (de) Hochleistungsarchitektur für RISC-Mikroprozessor
DE69721961T2 (de) Mikroprozessor mit einem Nachschreibcachespeicher
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69332663T2 (de) Datenprozessor mit einem Cachespeicher
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE112013005188B4 (de) Prozessor und vefrahren zur vektorisierung von zusammengeführten, mehrfach geschachtelten schleifen
DE69636416T2 (de) Mikroprozessor ausgelegt zum erkennen eines unterprogramm-aufrufs einer dsp-routine und zum ansteuern eines dsp, diese routine auszuführen
DE60316151T2 (de) Zugriff zum breiten speicher
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE112011100715T5 (de) Hardware-hilfs-thread
DE3131341A1 (de) "pufferspeicherorganisation"

Legal Events

Date Code Title Description
8364 No opposition during term of opposition