DE10110578B4 - Hierarchisches Prioritätsfilter mit integrierter Serialisierung - Google Patents

Hierarchisches Prioritätsfilter mit integrierter Serialisierung Download PDF

Info

Publication number
DE10110578B4
DE10110578B4 DE10110578A DE10110578A DE10110578B4 DE 10110578 B4 DE10110578 B4 DE 10110578B4 DE 10110578 A DE10110578 A DE 10110578A DE 10110578 A DE10110578 A DE 10110578A DE 10110578 B4 DE10110578 B4 DE 10110578B4
Authority
DE
Germany
Prior art keywords
entry
sub
entries
filter
storage device
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 - Fee Related
Application number
DE10110578A
Other languages
English (en)
Other versions
DE10110578A1 (de
Inventor
Jens Dr. Leenstra
Antje Müller
Jürgen Pille
Dieter Wendel
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE10110578A1 publication Critical patent/DE10110578A1/de
Application granted granted Critical
Publication of DE10110578B4 publication Critical patent/DE10110578B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control

Landscapes

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

Abstract

Verfahren zur Bestimmung des Eintrags mit der höchsten Priorität in einem Pufferspeicher, gekennzeichnet durch folgende Schritte:
Betrieb von einer Vielzahl von Prioritäts-Unterfilter-Schaltkreisen (18a, 18b, 18c, 18d), wobei jeder von diesen einen disjunkten Unterbereich der Gesamtheit der Einträge abdeckt und jeder den Eintrag mit der höchsten Priorität innerhalb des Unterbereichs auswählt;
Auswahl desjenigen Eintrags, der zum Teilbereich mit der höchsten Priorität gehört.

Description

  • 1. HINTERGRUND DER ERFINDUNG
  • 1.1 GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft Speichervorrichtungen in Computersystemen, im Besonderen ein Verfahren zur Bestimmung des Eintrags mit der höchsten Prioritäat in einem Pufferspeicher hierarchisches Prioritätsfilterverfahren und einer Speichervorrichtung, die in der Lage ist, im Verlauf der Verarbeitung von Programmanweisungen in einem Computersystem wiederholt allokiert und deallokiert zu werden. Also ein verbessertes Verfahren und System zum Betrieb von Systemspeichervorrichtungen und insbesondere Pufferspeicher, die im Prozessor in umlaufender Weise betrieben werden.
  • Obgleich die vorliegende Erfindung ein breites Anwendungsgebiet besitzt, weil die Verbesserung bzw. Optimierung von Speicherstrategien ein sehr allgemeines Ziel in der Computertechnik und insbesondere der Systemarchitektur darstellt, soll sie im Zusammenhang mit dem Stand der Technik auf einem speziellen Anwendungsgebiet beschrieben und diskutiert werden, nämlich im Kontext des Betriebs eines sogenannten Anweisungsfensterpuffers (instruction window buffer, in der Literatur auch als „Reservation Station/Reorder Buffer" (Buchungs-/Umordnungspuffer) bezeichnet), im Folgenden als IWB bezeichnet, welcher gewöhnlich in den meisten modernen Computersystemen vorhanden ist, um eine parallele Verarbeitung von Anweisungen durch mehrere Verarbeitungseinheiten zu ermöglichen. Solche Prozessoren werden hier als „Außer-Reihe-Prozessoren" (out-of-order processors) bezeichnet.
  • In vielen modernen „Außer-Reihe-Prozessoren" wird ein solcher IWB benutzt, um alle Anweisungen und/oder Registerinhalte zu speichern, bevor die berechneten Ergebnisse ausgegeben werden. Während des Festschreibens wird der IWB-Eintrag gelöscht und kann von einer neuen Anweisung überschrieben werden. Wenn die Ergebnisse spekulativ über eine Verzweigungsanweisung mit unbekanntem Ziel hinaus berechnet wurden, können sie, sobald sich die Verzweigungsvoraussage sich als falsch erweist, einfach dadurch verworfen werden, dass diese Einträge aus dem Puffer gelöscht und mit neuen korrekten Anweisungen überschrieben werden. Dies ist eine der Voraussetzungen für die „außer-Reihe"-Verarbeitung (out-of-order processing).
  • Oft haben solche Puffer 32, 64 oder 128 Einträge, die sequentiell angeordnet sind. Üblicherweise werden sie in umlaufender Weise als sogenannte Wrap-Around-Puffer (Umlaufpuffer) genutzt, wobei eine Folge von gültigen Einträgen über das Pufferende hinausreicht und am Pufferanfang weitergeführt wird, d. h. vom Pufferende zum Pufferanfang umläuft.
  • Einer der Hauptparameter, der die Leistung der Prozessoren beeinflusst, ist die Puffergröße: Ein großer Puffer kann viel mehr Anweisungen und Ergebnisse enthalten und somit „außer-Reihe"-Verarbeitung in größerem Ausmaß zulassen. Ein Entwurfsziel besteht deshalb darin, einen großen Puffer zu haben. Dieses Ziel steht jedoch im Widerspruch zu anderen Entwurfsanforderungen wie Zykluszeit, Pufferfläche usw. Wird z. B. der Puffer zu groß gewählt, dann verringert der für eine so große Zahl von Speicherpositionen erforderliche Verwaltungsaufwand die Leistung dieses Puffers.
  • Oft werden solche Puffer nach dem FIFO-Prinzip betrieben: Der erste gespeicherte Eintrag wird als erster zur Weiterverarbeitung ausgegeben.
  • Insbesondere und mit besonderem Bezug auf die vorliegende Erfindung wird nach dem Stand der Technik ein nachgeschaltetes Prioritätsfilter benutzt, um den ältesten zur Ausführung bereiten Eintrag in diesem Puffer zu ermitteln und diesen als Nächsten auszuführen. Dies ist notwendig, weil der Pufferbereich, der für die Folge der auszuwertenden gültigen Einträge steht, während des Betriebs nicht an einer festen Position im Puffer bleibt. Dieser Bereich lässt sich bildhaft mit einem Wurm vergleichen: Er besteht aus einem Stück ohne Lücken zwischen den Einträgen, er bewegt sich, zieht sich zusammen oder dehnt sich aus während des Betriebs.
  • Ein Anweisungsfensterpuffer nach dem Stand der Technik, wie in der US-Patentschrift Nr. 5,923,900 A „Circular Buffer With N Sequential Real And Virtual Entry Positions For Selectively Inhibiting N Adjacent Entry Positions Including The Virtual Entry Positions" offengelegt, wird gemäß folgender Schemata betrieben:
    Um die Anweisungswarteschlange zu verwalten, werden die Anweisungen während der Zuteilungsphase der Reihe nach in den Puffer geschrieben, dann „außer-Reihe" ausgeführt – Absetzphase – und der Reihe nach wieder in die Register der jeweiligen Architektur zurückgeschrieben – Festschreibephase.
  • Sobald alle Ursprungsdaten für eine Anweisung vorhanden sind, wird sie ausführbar, was durch ein Gültigkeitsbit (valid bit) vb angezeigt wird. Es können mehrere Anweisungen zu gleicher Zeit gültig sein; eine davon, d. h. die älteste, wird von einem Prioritätsfilter ausgewählt, das Anweisungsfilter (instruction filter) genannt und mit if abgekürzt wird, und die Daten werden an die Anweisungsausführungseinheit (instruction execution unit) ieu gesendet. Nach Abschluss der Ausführung wird das Gültigkeitsbit von einem Ausführungsbit (execution bit) ebn überschrieben, dessen aktiver Zustand als niedriger Signalpegel definiert ist, sodass die nächste gültige Anweisung ausgewählt werden kann. Alternativ könnte das Gültigkeitsbit vb nach dem Senden der Daten an die Ausführungseinheit abgeschaltet werden, statt ein Ausführungsbit zu haben.
  • Der Umlaufpuffer nach dem Stand der Technik verfügt über ein Fenster der aktiven Einträge. Einträge außerhalb des Fensters werden ignoriert. Dies geschieht z. B., indem das Aktivitätsfensterbit (active window bit) awb das am Filtereingang anliegende Gültigkeitsbit vb mit Null überschreibt. Im normalen Modus hat – im Gegensatz zum Wrap-Around-Modus – der nächste zu schreibende Eintrag einen höheren Feldindex als der älteste Eintrag im Fenster der aktiven Einträge. Im Wrap-Around-Modus verhält es sich umgekehrt. Zur Behandlung beider Fälle durchsucht das Filter den sogenannten auseinandergefalteten Datenvektor vb(0:127), wobei vb(64:127) ein Duplikat von vb(0:63) ist. Dieser virtuelle Vektor sorgt dafür, dass der älteste Eintrag immer den niedrigsten Feldindex sowohl im normalen als auch im Wrap-Around-Modus hat.
  • Nun wieder auf das von der vorliegenden Erfindung angegangene Problem bezogen: Entscheidet man sich beim Entwurf einer Architektur für einen größeren Fensterpuffer, so ergibt sich eine höhere Wahrscheinlichkeit dafür, eine gültige Anweisung im Fenster der aktiven Einträge zu finden, zugleich erhöht sich aber auch der Umfang des oben erwähnten Prioritätsfilters, das den duplizierten, d. h. auseinandergefalteten Datenbereich durchsuchen muss, wenn der Wrap-Around-Fall abgedeckt werden muss.
  • Überschreitet der IWB eine bestimmte Größe, dann wird dieses Filter selbst zu dem Element, das die Leistung begrenzt.
  • Ein wesentlicher Fortschritt hin zu größeren IWB-Speichern erfordert daher eine andere Technik für das Prioritätsfilter, um die Gesamtleistung der Anweisungsverarbeitung zu steigern.
  • Es ist daher das Ziel der vorliegenden Erfindung, die Effizienz der Pufferbenutzung zu erhöhen.
  • 2. ÜBERBLICK UND VORTEILE DER ERFINDUNG
  • Dieses Ziel der Erfindung wird durch die in den beigefügten unabhängigen Ansprüchen (PA 1, 8 und 15 bis 17) genannten Merkmale erreicht. Weitere vorteilhafte Anordnungen und Ausführungsarten der Erfindung sind in den jeweiligen Unteransprüchen dargestellt.
  • Gemäß den grundlegenden Prinzipien der vorliegenden Erfindung wird ein neuartiges Schema eines hierarchischen Prioritätsfilters vorgeschlagen, das kleine und schnelle "Unterfilter" benutzt, die jeweils nur auf einen im Vorhinein festgelegten disjunkten Teilbereich der Puffereinträge wirken. Jedes dieser Unterfilter bestimmt den ältesten Eintrag. Die logische ODER-Verknüpfung der Filtereingänge, die parallel zu dieser Bestimmung stattfindet, erzeugt ein zusätzliches Ausgangssignal, das es ermöglicht, den insgesamt ältesten Eintrag mit Hilfe einer einfachen nachgeschalteten Auswahllogik zu ermitteln. Die gesamte Filterschaltung hat einen geringen Implementierungsflächenbedarf und ist wesentlich schneller als eine einzelne Filterschaltung, die alle Einträge verarbeitet.
  • Darüber hinaus ergibt sich eine beachtliche Leistungssteigerung und Flächenersparnis aus der Tatsache, dass sich die zusätzlichen "ODER"-Stufen mit geringem Aufwand implementieren lassen. Die ODER-Stufen werden als Bestandteil des gesamten Unterfilters unter Benutzung einer dynamischen ODER-Struktur implementiert. Die Eingänge eines dynamischen ODER-Gatters sind die jeweiligen Unterbereiche der Filtereinträge.
  • Da eine solche ODER-Stufe außerdem parallel zum Filter selbst geschaltet ist, hat sie vernachlässigbare Auswirkungen auf Last und Laufzeitverzögerung.
  • Daher lässt sich der Fensterpuffer ohne Einschränkung durch die Leistung des Prioritätsfilters weiter vergrößern.
  • Falls das Puffermerkmal des Wrap-Around-Modus unterstützt werden soll, gehört es zu den Konzepten der Erfindung, dass eine zweite Anordnung oder Gruppe von "ODER"-Stufen eingeführt wird, die im Wrap-Around-Fall, wie er weiter oben beschrieben ist, benutzt werden. D. h., bei einem Puffer mit 64 Einträgen bearbeitet eine Gruppe vorteilhafterweise die Einträge 0 bis 63, während die zweite Gruppe die virtuellen Einträge 64 bis 127 bearbeitet.
  • Darüber hinaus kann das erfindungsgemäße Prinzip der "ODER"-Verknüpfung von Unterbereichen oder "Unterugruppen" mit nachfolgender Prioritätsauswahl aus den Ergebnissen auf seine mehrfache Anwendung ausgeweitet werden. Dieses Prinzip kann mehrfach hintereinander angewendet werden. Somit ist das erfindungsgemäße Verfahren stufenlos skalierbar und läßt sich perfekt zur Behandlung größerer Zahlen von Einträgen, d. h. mehrerer hundert, anpassen, wenn dies unter irgendeinem architekturbezogenen Gesichtspunkt erforderlich sein sollte.
  • Zusätzlich und gemäß einem zweiten Aspekt der vorliegenden Erfindung kann das vorgeschlagene Implementierungsprinzip leicht ausgeweitet werden, sodass es die Serialisierung abdeckt, welche in jeder beliebigen Implementierung eines IWB von vorrangigem Interesse ist. Gemäß der Erfindung wird die Serialisierung in die Gesamtimplementierung des Filters integriert, um die Erfordernis einer besonderen externen Logik zu überwinden.
  • Dies wird erreicht, wie im Folgenden zusammengefasst: Für jeden Eintrag existiert ein Aktivitätsfensterbit awb, das benutzt wird, um den Zustand des Eintrags anzuzeigen – ob er belegt werden soll oder ob er zum Überschreiben frei ist, wie in der US-Patentschrift Nr. 5,923,900 A vorgeschlagen.
  • Zunächst wird das Aktivitätsfensterbitfeld awb ODER-verknüpft mit dem Gültigkeitsbitfeld vb, das anzeigt, dass ein Eintrag zum Absetzen bereit ist, und dem Ausführungsbitfeld ebn, das anzeigt, dass ein Eintrag noch nicht abgesetzt worden ist, was zu dem sogenannten effektiven Gültigkeitsbitfeld (effective valid bit string) evb führt.
  • Gemäß der vorliegenden Erfindung wird dieses Bitfeld evb "ODER"-verknüpft mit einem Serialisierungsbitfeld F – Markierungsbits, die auf „Ein" geschaltet sind, wenn die zugehörige Anweisung vor allen anderen folgenden jüngeren Anweisungen ausgeführt werden muss, oder im Normalfall der nicht erfolgenden Serialisierung auf „Aus" geschaltet sind. Diese "ODER"-Verknüpfung erfolgt am Eingang des Prioritätsfilters, das bereits oben erwähnt worden ist. Dadurch wird jeder Eintrag mit eingeschaltetem evb oder mit eingeschalteter Serialisierung für das Filter als "aktiv" markiert und kann dadurch ausgewählt werden, während die Einträge nach demjenigen mit eingeschalteter Serialisierung nicht ausgeführt werden können, weil sie jünger sind. Dies garantiert, dass die jüngeren Einträge erst ausgewählt werden können, nachdem die serialisierte Anweisung abgeschlossen ist.
  • Die serialisierte Anweisung ist aus Sicht des Filters auch dann aktiv, wenn das evb-Bit nicht aktiv ist. Um zu verhindern, dass dieser Eintrag ausgewählt und an die Ausführungseinheit gesendet wird, wird eine zusätzliche "UND"-Verknüpfung zwischen dem Filterausgang und dem evb-Bit benötigt. So kann die Anweisung nur dann ausgeführt werden, wenn sowohl das evb-Gültigkeitsbit als auch das Serialisierungsbit auf „Ein" geschaltet, d. h. aktiv sind. Nach Ausführung der serialisierten Anweisung setzt eine Steuerlogik F zurück – z. B. sobald die Anweisung festgeschrieben ist – und ermöglicht die Ausführung aller folgenden Anweisungen.
  • Diese Integration in das Filter erfordert nur zwei zusätzliche Stufen. Ihre Auswirkung auf die Leistung über die gesamte Laufzeitverzögerung im Prioritätsfilter ist daher gering.
  • Die vorliegende Erfindung wird durch Beispiele veranschaulicht und ist nicht beschränkt auf die Gestalt der Figuren der begleitenden Zeichnungen, von denen
  • 1 ein Blockdiagramm ist, das die wesentlichen logischen Schaltkreise darstellt, die in einer bevorzugten Ausführungsart des erfindungsgemäßen Prioritätsfilters benutzt werden, angewandt auf den Betrieb mit einem Anweisungsfensterpuffer (IWB) und basierend auf der Erzeugung von 4 Untergruppen und dem Abdecken des Wrap-Around-Falls,
  • 2 eine schematische Darstellung ist, welche die Funktion der einfach zu implementierenden dynamischen "ODER"-Stufen zeigt,
  • 3 bis 6 Blockdiagramme sind, welche den Betrieb des erfindungsgemäßen Prioritätsfilters mit integrierter Serialisierung in einer Abfolge von vier verschiedenen Situationen zeigt, beginnend mit einer ausgewählten Situation in 3 und von da ausgehend in der Weiterentwicklung.
  • 4. BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSART
  • Unter allgemeiner Bezugnahme auf die Figuren und nun mit besonderem Bezug auf 1 besitzt ein Anweisungsfensterpuffer, der als Ganzes mit dem Referenzzeichen 10 bezeichnet ist, beispielhaft 64 Einträge, d. h. die Einträge 0 bis 63.
  • Dieser Puffer ist logisch in vier Unterfenster 12a, 12b, 12c und 12d aufgeteilt. Die Einträge selbst und ihre Inhalte sind nicht von vorrangigem Interesse für die vorliegende Erfindung und daher nicht in der Zeichnung abgebildet.
  • Jedes Unterfenster 12 wird von kleinen Filtern überwacht, deren Eingang der auseinandergefaltete Gültigkeitsbit-Vektor des Unterfensters darstellt, um so den Fall des Wrap-Around abzudecken. Das Auseinanderfalten des Gültigkeitsbit-Vektors ergibt 128 anstatt 64 zu verwaltende Speicherpositionen, wie es nach dem Stand der Technik wohl bekannt ist. Falls der Wrap-Around-Fall nicht abgedeckt würde, wären insgesamt nur 64 Speicherstellen zu verwalten.
  • Für die sachgemäße Bearbeitung der Einträge zum Zweck der „außer-Reihe"-Ausführung werden für jeden Eintrag drei verschiedene Markierungsbits benutzt: ebn-Bit: Auf „Ein" geschaltet, wenn die Anweisung gespeichert, d. h. in den IWB geschrieben wird, wodurch sie Teil des Fensters der aktiven Einträge des IWB wird, oder wenn sie erneut an eine Anweisungsausführungseinheit (IEU) übergeben werden muss, auf „Aus" geschaltet, wenn sie an eine Ausführungseinheit übergeben worden ist.
  • awb-Bit: Auf „Ein" geschaltet, wenn die Anweisung in den IWB gespeichert wird, wodurch sie Teil des Fensters der aktiven Einträge des IWB wird, auf „Aus" geschaltet, wenn die Anweisung durch den Festschreibevorgang aus dem IWB entfernt wird.
  • vb-Bit: Auf „Ein" geschaltet, wenn alle Ursprungsdaten für die Anweisung verfügbar sind, auf „Aus" geschaltet, wenn Urprungsdaten nicht zur Verfügung stehen.
  • Diese Bits stellen einen Bitfeld-Kontrollvektor dar, der am linken Rand der Zeichnung in vier Gruppen abgebildet ist, wobei jede Gruppe aus einem Paar besteht, dessen einer Teil den regulären Fall abdeckt, Indizes 0 bis 63, und dessen anderer Teil den Wrap-Around-Fall mit den Indizes 64 bis 127 abdeckt. Um ausgewählt zu werden, muss eine Anweisung gültig sein (vb = 1), sie muss sich innerhalb des Fensters der aktiven Einträge befinden (awb = 1) und sie darf noch nicht ausgeführt worden sein (abn = 1). Die UND-Verknüpfung der Bitfelder ebn<0..127>, awb<0..127> und vb<0..127> definiert das effektive Gültigkeitsbitfeld evb<0..127>.
  • Gemäß der erfindungsgemäßen Ausführungsart ist eine Anzahl von vier Absetz-Unterfiltern (issue subfilter bzw. Prioritäts-Unterfilter Schaltkreisen) 18a, 18b, 18c und 18d, abgekürzt als if0..if3, so verschaltet, dass sie den oben erwähnten Bitfeldvektor als Eingabe lesen und ein Auswahlsignal – das Bit im Auswahlbitvektor auf „Ein" geschaltet – ausgeben, das den ältesten Eintrag als Eingabe in eine nachgeschaltete Auswahllogik 16 festlegt. Die Auswahllogik wählt die älteste Untergruppe aus, indem sie als Schalter wirkt, der nur die älteste Untergruppe an den Absetzbitvektor weiterleitet und die Bits aller anderen Teilgruppen auf „Aus" schaltet, wie es weiter unten detaillierter beschrieben wird.
  • Die Absetzfilter arbeiten als Unterfilter jeweils auf disjunkten Untermengen der Gesamtheit der Einträge des IWB und überwachen somit das Bitfeld der Einträge des IWB. Insbesondere arbeitet if0 auf evb(0..15,64..79), if1 auf evb(16..31,80..95), if2 auf evb(32..47,96..111) und if3 auf evb(48..63,112..127).
  • Jedes der Filter if0..if3 wählt den ältesten gültigen Eintrag innerhalb seines zugehörigen Datenbereichs aus und setzt einen Auswahlbitvektor (select bit vector, sel). Weil ein Filter auf eine Untergruppe wirkt, wird nur ein Bit im von einem Filter erzeugten Auswahlbitvektor „sel" auf „Ein" geschaltet. Dieses auf „Ein" geschaltete Bit im Auswahlvektor entspricht der ältesten Anweisung in der Teilgruppe, die auf das Absetzen wartet. Die Auswahlbitvektoren bilden die Eingänge der nachgeschalteten Auswahllogik, die den Absetzvektor<0..63> erzeugt. Der Auswahlvektor sel<0..63>, wie er von den Filtern if0..if3 erzeugt wird, wird direkt so auf den Absetzvektor issue<0..63> abgebildet, dass nur dasjenige der auf „Ein" geschalteten Bits, das zu der Untergruppe mit der ältesten Anweisung gehört, in issue<0..63> auf „Ein" geschaltet wird. Um diese Auswahl zu treffen, muss für jede Untergruppe bekannt sein, ob ein Bit auf „Ein" geschaltet ist und ob es aufgrund der Filtereingänge evb<0..63> oder der Filtereingänge evb<64..127> auf „Ein" geschaltet ist.
  • Diese Information wird durch die beiden ODER-Stufen erzeugt, die zu jedem Filter gehören, wie es in 18a–d gezeigt ist. Genauer gesagt umfasst jede der 4 Teilgruppen ein Paar ODER-Stufen, eine erste, die mit dem Index _1, d. h. or_1, bezeichnet ist, die für den unteren Datenvektorbereich 0..63 zuständig ist, und or_u, die für den oberen Datenvektor 64..127 zuständig ist. Somit ist die zweite ODER-Stufe dieses Paars, bezeichnet als 14a bis 14d, in der Lage, den Wrap-Around-Fall abzudecken, weil sie auf eine Hilfsanordnung von Einträgen reagiert, die sich aus dem Auseinanderfalten der Eintragsfolge ergibt.
  • Z. B. wird das Bit or_10 von den ODER-Stufen mit den Eingängen evb<0..15> auf „Ein" geschaltet, wenn eine der Leitungen evb<0..15> auf „Ein" steht. Darüber hinaus wird das Bit or_u0 durch die ODER-Stufe mit den Eingängen evb<64..79> auf „Ein" geschaltet, wenn eine der Leitungen evb<0..15> auf „Ein" steht.
  • Im Wesentlichen umfasst diese ODER-Stufe eine Verbindungsleitung, d. h. ein "Mehrfach-ODER"-Gatter (dotted 0R) zwischen den 16 Mitgliedern jeder Untergruppe. Wenn festgestellt wird, dass auf einer entsprechenden Eingangsleitung das evb mit dem kleinsten Index auf „Ein" geschaltet ist, dann wird diese Verbindungsleitung als Ganzes entladen, d. h., die Position des ältesten Eintrags lässt sich aus der Tatsache ableiten, dass der älteste Eintrag den kleinsten Index hat. Dabei ist anzumerken, dass das Feld evb auseinandergefaltet ist. Die tatsächlichen Einträge des IWB sind evb[0..63]. Beim Auseinanderfalten werden die virtuellen Einträge evb[64..127] so erzeugt, dass im Feld evb[0..127] die älteren Anweisungen vor allen jüngeren Anweisungen stehen. Somit ist die Anweisung im Eintrag 0 – Warten auf Absetzung wird in evb<0> angezeigt – jünger als die Anweisung in Eintrag 1. So sind z. B. im Wrap-Around-Fall, wenn der Eingangszeiger auf den dritten Eintrag zeigt, der erste und zweite Eintrag die jüngsten im IWB, somit steht evb<0> auf 0, und evb<1> steht auf 0, aber die virtuellen Einträge evb<64> und evb<65> stehen auf 1. Darum entspricht immer der niedrigste Index, für den evb<index> auf 1 steht, dem ältesten Eintrag.
  • Dies wird mit Bezug auf 1 im Folgenden detaillierter beschrieben.
  • Mit dem auseinandergefalteten Bitfeld evb[0..127] als Eingang ist ein Eintrag im unteren Bereich (or_1) immer älter als ein Eintrag im oberen Bereich (or_u), ein if0-Eintrag ist älter als ein if1-Eintrag, ein if1-Eintrag ist älter als ein if2-Eintrag und ein if2-Eintrag älter als ein if3-Eintrag.
  • Ein besonderer "Auswahllogik"-Block 16 dekodiert dann diese Information und ermittelt den ältesten Eintrag aus allen vier ausgewählten Einträgen der Unterfenster. Dies kann von einer Schalterstruktur ausgeführt werden, in welcher die Zustände der Schalter durch die Signale or_1 und or_u in der Weise gesteuert werden, dass die älteste Untergruppe auf die entsprechenden Bits des Absetzvektors abgebildet wird und alle anderen Bits auf „Aus" geschaltet, d. h. auf 0 gesetzt werden.
  • Wenn z. B. sowohl bei if0 als auch if3 das or_1-Signal zusätzlich zur Auswahl gesetzt ist, d. h., wenn der normale Modus vorliegt, dann ist der if0-Eintrag älter als der if3-Eintrag. Daher setzt die Auswahllogik issue<0..15> gleich sel<0..15> und issue<16..63>= „0..0".
  • Oder wenn bei if0 das or_u-Signal zusätzlich zur Auswahl gesetzt ist und bei if3 das or_1-Signal – Wrap-Around-Fall -, dann ist der if3-Eintrag älter als der if0-Eintrag. In diesem Fall setzt die Auswahllogik issue<48..63> gleich sel<48..63>, weil dies die älteste Untergruppe ist, die ein auf „Ein" geschaltetes Bit enthält, und die anderen Ausgänge der Auswahllogik, issue<0..47>, werden alle auf Null gesetzt.
  • Wenn sowohl bei if0 als auch bei if3 das or_u-Signal zusätzlich zur Auswahl gesetzt ist und also der Wrap-Around-Modus vorliegt, dann ist auch hier der if0-Eintrag älter als der if3-Eintrag.
  • Unter zusätzlicher Bezugnahme auf 2 wird im Folgenden als Nächstes die bevorzugte Implementierung der ODER-Verknüpfung beschrieben, die eine dynamische "Mehrfach-ODER"-Struktur benutzt.
  • Wenn der Takteingang (clk) auf dem unteren Signalpegel liegt, wird die "punktierte" Bitleitung 25 auf den oberen Signalpegel, d. h. auf die Versorgungsspannung, vorgeladen, weil der P-Transistor PFET 20 durchschaltet und der N-Transistor NFET 22 sperrt, wenn der Eingang clk auf dem unteren Signalpegel liegt. Dies impliziert, dass das ODER-Ausgangssignal 32 auf dem unteren Signalpegel liegt. Wenn der Eingang clk auf „Ein" geschaltet wird, beginnt die Auswertungsphase und der Ausgangswert wird gemäß der logischen ODER-Funktion der Eingänge in0..15 gesetzt. Die logische ODER-Funktion legt fest, dass der Ausgang OR auf dem unteren Signalpegel bleibt, wenn alle Eingänge in0..15 auf dem unteren Signalpegel liegen. Wenn alle Eingänge in0..15 auf dem unteren Signalpegel liegen, sperren alle N-Transistoren NFET im gestrichelten Kasten 24, und die Bitleitung 25 bleibt auf dem oberen Signalpegel. Daher wird der Ausgang 32 wegen des zwischen die Bitleitung 25 und den ODER-Ausgang geschalteten Inverters 30 auf dem unteren Signalpegel bleiben. Während der Auswertungsphase auftretende Leckströme werden durch Durchschalten des P-Transistors PFET 21 ausgeglichen.
  • Wenn mindestens einer der Eingänge in0..15 auf dem oberen Signalpegel liegt, wird die Bitleitung 25 auf den unteren Signalpegel geschaltet, weil diejenigen NFETs im gestrichelten Kasten 24, die mit den auf dem oberen Signalpegel liegenden Eingängen aus in0..15 verbunden sind, durchschalten und der vom Eingang clk gesteuerte NFET 22 durchschaltet. Wenn die Bitleitung 25 auf dem unteren Signalpegel liegt, setzt die Invertervorrichtung 30 den ODER-Ausgang auf den oberen Signalpegel, wie es die ODER-Funktion erfordert.
  • Im Wesentlichen findet sich die gleiche Struktur der Bitleitung mit den aufgereihten NFETs im Prioritätsfilter, wo sie die Auswahl einer jüngeren Anweisung in einer Untergruppe zum Absetzen verhindert. Darum kann solch ein dynamisches ODER-Gatter vollständig in ein Prioritätsfilter if0..if3 integriert werden.
  • Unter Bezugnahme auf die 3, 4, 5 und 6 wird nun als Nächstes der Betrieb des erfindungsgemäßen Prioritätsfilters mit integrierter Serialisierung in einer Abfolge von vier verschiedenen Situationen beschrieben, wobei in 3 mit einer bestimmten Situation begonnen und dann die weitere, durch den Betrieb des Prozessors bedingte Entwicklung dargestellt wird.
  • Die Figuren haben alle die gleiche Struktur: Veranschaulicht wird ein Teil des Prioritätsfilters 10, der drei von 64 Ausgängen des IWB umfasst, die dazu dienen, das effektive Gültigkeitsbit evb über die jeweils entsprechende der Leitungen 41a, b und c sowie das mit F gekennzeichnete Serialisierungsbit über eine der Leitungen 42a, b und c einzulesen. Wenn F für eine bestimmte Anweisung auf „Ein" steht, muss die Anweisung in Reihe statt außer Reihe ausgeführt werden.
  • Eine zusätzliche ODER-Stufe 43a, b und c erhält die Leitungen 41 und 42 als Eingänge. Ihr Ausgang ist als Eingang mit einem jeweils entsprechenden der Unterfilter if0,..if3 verbunden.
  • Mit dem Ausgang des Filters 10 ist eine zusätzliche UND-Stufe 44a, b und c verbunden, die das oben beschriebene Ausgangssignal des Filters erhält und als Zweites das evb-Signal, das durch UND-Verknüpfung von ebn, awb und vb erzeugt wird – vgl. oben 1. Diese Anordnung arbeitet wie folgt:
    Das evb-Signal jedes Eintrags wird am Filtereingang mit dem Serialisierungsbit F ODER-verknüpft. Dadurch ist jeder Eintrag, der gültig oder serialisiert ist, aus Sicht des Filters aktiv und kann somit ausgewählt werden. Keiner der Einträge nach dem serialisierten Eintrag kann ausgeführt werden, weil sie jünger sind. Diese Maßnahme garantiert, dass die jüngeren Anweisungen erst für das Absetzen zur Ausführung ausgewählt werden können, nachdem der Eingang F<i> der serialisierten Anweisung auf 0 gesetzt worden ist, z. B. vom Festschreibeprozess.
  • Die serialisierte Anweisung ist jedoch aus Sicht des Filters sogar dann aktiv, wenn das Gültigkeitsbit nicht aktiv ist, d. h., wenn es auf „Aus" geschaltet ist. Dann darf der Eintrag natürlich nicht auswählbar sein. Um zu verhindern, dass dieser Eintrag ausgewählt und an die Ausführungseinheit gesendet wird, sorgt die zusätzliche UND-Stufe 44a,b und c, die den Filterausgang und das evb-Bit miteinander verknüpft, dafür, dass die Anweisung nur ausgeführt werden kann, wenn das evb-Bit und das Serialisierungsbit F gleichzeitig aktiv sind.
  • Beginnend nun mit 3, sind Eintrag (i – 1) und Eintrag (i + 1) gültig, Eintrag i aber serialisiert. Somit sind für das Filter alle Einträge gültig. Eintrag (i – 1) wird als der älteste ermittelt und zum Absetzen ausgewählt.
  • In 4 ist die Ausführung von Eintrag (i – 1) abgeschlossen, evb(i – 1) wird wegen ebn mit Null überschrieben – vgl. 1. Eintrag i ist nicht gültig und ist serialisiert. Somit wird er ausgewählt, aber in der Ausgabestufe angehalten. Eintrag (i + 1) ist gültig, wegen der Serialisierung aber nicht ausgewählt.
  • In 5 ist Eintrag (i) gültig und serialisiert. Somit wird er zum Absetzen ausgewählt. Eintrag (i + 1) ist jünger als Eintrag (i) und wird nicht ausgewählt.
  • Nachdem die serialisierte Anweisung ausgeführt ist, setzt eine nicht explizit abgebildete Steuerlogik F auf „Aus" zurück und erlaubt die Ausführung aller folgenden Anweisungen.
  • In 6 ist die Ausführung von Eintrag (i) abgeschlossen. Somit wird das Serialisierungsbit F(i) und das effektive Gültigkeitsbit evb(i) mit Null überschrieben. Somit wird Eintrag (i + 1) zum Absetzen ausgewählt.
  • Wie man anhand der vorangehenden Beschreibung nachvollziehen kann, arbeitet das erfindungsgemäße IWB-Prioritätsfilter einschließlich Serialisierung wie beabsichtigt.
  • Aufgrund ihrer ganz allgemeinen Natur kann die vorliegende Erfindung in jedem beliebigen Warteschlangenverwaltungssystem angewendet werden und ist ausdrücklich nicht auf das FIFO-Prinzip beschränkt. Das erfindungsgemäße Verfahren und System kann auf jedes andere Prioritätskriterium angewendet werden, solange die Priorität durch Auslesen irgendeines Bits der Einträge oder durch. Auswertung irgendeines anderen Kriteriums festgestellt werden kann.
  • Des Weiteren kann die Zahl der Untergruppen, d. h. Unterbereiche, je nach den Anforderungen der aktuellen Systemarchitektur variiert werden.
  • Schließlich kann ein Wege steuerndes Netz (Routing-Netz) Vorteil aus dem erfindungsgemäßen Verfahren ziehen, weil die Priorisierungsaufgaben vorteilhafterweise damit durchgeführt werden können.

Claims (17)

  1. Verfahren zur Bestimmung des Eintrags mit der höchsten Priorität in einem Pufferspeicher, gekennzeichnet durch folgende Schritte: Betrieb von einer Vielzahl von Prioritäts-Unterfilter-Schaltkreisen (18a, 18b, 18c, 18d), wobei jeder von diesen einen disjunkten Unterbereich der Gesamtheit der Einträge abdeckt und jeder den Eintrag mit der höchsten Priorität innerhalb des Unterbereichs auswählt; Auswahl desjenigen Eintrags, der zum Teilbereich mit der höchsten Priorität gehört.
  2. Verfahren gemäß Anspruch 1, in welchem der Eintrag mit der höchsten Priorität mit einer logischen Stufe vom "ODER"-Typ ausgewählt wird.
  3. Verfahren gemäß Anspruch 1, in welchem in einem jeden der Einträge Verarbeitungsanweisungen abgelegt werden.
  4. Verfahren gemäß Anspruch 1, das des Weiteren den Schritt der Benutzung einer zweiten "ODER"-Stufe (14a, 14b, 14c, 14d) in jedem Prioritäts-Unterfilter-Schaltkreis (18a, 18b, 18c, 18d) beinhaltet, die auf eine Hilfsanordnung von Einträgen reagiert, welche sich aus einem Auseinanderfalten der Eintragsfolge ergibt.
  5. Verfahren gemäß dem vorhergehenden Anspruch oder gemäß Anspruch 2, in welchem die logische Stufe vom "ODER"-Typ eine dynamische ODER-Stufe ist.
  6. Verfahren gemäß Anspruch 1, das des Weiteren den Schritt des Serialisierens der Einträge durch "ODER"-Verknüpfung des effektiven Gültigkeitsbits jedes Eintrags mit einem Serialisierungsbit vor dieser Filteroperation und "UND"-Verknüpfung dieses Gültigkeitsbits mit dem Filterausgang enthält.
  7. Verfahren gemäß Anspruch 1, angewendet auf das Durchführen der Priorisierungsaufgaben eines Wege steuernden Netzes.
  8. Speichervorrichtung, die in der Lage ist, im Verlauf der Verarbeitung von Programmanweisungen in einem Computersystem wiederholt allokiert und deallokiert zu werden, gekennzeichnet durch Mittel zum Betrieb einer Vielzahl von Prioritäts-Unterfilter-Schaltkreisen (18a, 18b, 18c, 18d), wobei jeder von diesen einen disjunkten Unterbereich der Gesamtheit der Einträge abdeckt und jeder den Eintrag mit der höchsten Priorität innerhalb des Unterbereichs auswählt, und Mittel zur Auswahl desjenigen Eintrags, der zum Unterbereich mit der höchsten Priorität gehört.
  9. Speichervorrichtung gemäß dem vorhergehenden Anspruch, welche des Weiteren über eine logische Stufe vom "ODER"-Typ zur Auswahl des Eintrags mit der höchsten Priorität verfügt.
  10. Speichervorrichtung gemäß dem vorhergehenden Anspruch, in welcher die logische Stufe vom "ODER"-Typ eine dynamische ODER-Stufe ist.
  11. Speichervorrichtung gemäß dem vorhergehenden Anspruch, welche über eine zweite "ODER"-Stufe (14a, 14b, 14c, 14d) in jedem Prioritäts-Unterfilter-Schaltkreis (18a, 18b, 18c, 18d) verfügt, die auf eine Hilfsanordnung von Einträgen reagiert, welche sich aus einem Auseinanderfalten der Eintragsfolge ergibt.
  12. Speichervorrichtung gemäß Anspruch 8, welche Mittel umfasst, eine "ODER"-Verknüpfung des effektiven Gültigkeitsbits eines jeden Eintrags mit einem Serialisierungsbit vor der Filteroperation vorzunehmen und Mittel, eine "UND"-Verknüpfung dieses effektiven Gültigkeitsbits mit dem Filterausgang vorzunehmen.
  13. Speichervorrichtung gemäß Anspruch 8 oder Anspruch 10, die als Umlaufpuffer benutzt wird.
  14. Speichervorrichtung gemäß Anspruch 8 oder Anspruch 10, die als Anweisungsfensterpuffer benutzt wird.
  15. Untereinheit zur Verwendung in Mikroprozessorvorrichtungen, die über mindestens eine Speichervorrichtung gemäß einem der vorhergehenden Ansprüche 8 bis 13 verfügt.
  16. Mikroprozessorvorrichtung, die über mindestens eine Untereinheit gemäß dem vorhergehenden Anspruch verfügt.
  17. Computersystem, das über eine Mikroprozessorvorrichtung gemäß dem vorhergehenden Anspruch verfügt.
DE10110578A 2000-03-29 2001-03-06 Hierarchisches Prioritätsfilter mit integrierter Serialisierung Expired - Fee Related DE10110578B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP001066745 2000-03-29
EP00106674 2000-03-29

Publications (2)

Publication Number Publication Date
DE10110578A1 DE10110578A1 (de) 2001-10-18
DE10110578B4 true DE10110578B4 (de) 2004-06-03

Family

ID=8168266

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10110578A Expired - Fee Related DE10110578B4 (de) 2000-03-29 2001-03-06 Hierarchisches Prioritätsfilter mit integrierter Serialisierung

Country Status (2)

Country Link
US (1) US6725332B2 (de)
DE (1) DE10110578B4 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI227980B (en) * 2003-10-08 2005-02-11 Genesys Logic Inc Method of relaying multi-cast package and device of the same
US7512706B2 (en) * 2004-12-16 2009-03-31 International Business Machines Corporation Method, computer program product, and data processing system for data queuing prioritization in a multi-tiered network
US7240136B2 (en) * 2004-12-16 2007-07-03 International Business Machines Corporation System and method for request priority transfer across nodes in a multi-tier data processing system network
US7460558B2 (en) * 2004-12-16 2008-12-02 International Business Machines Corporation System and method for connection capacity reassignment in a multi-tier data processing system network
US8478954B2 (en) * 2009-12-18 2013-07-02 International Business Machines Corporation Prioritizing subgroups in a consistency group
US9904616B2 (en) 2011-12-14 2018-02-27 International Business Machines Corporation Instruction output dependent on a random number-based selection or non-selection of a special command from a group of commands
US9471222B2 (en) * 2014-05-12 2016-10-18 International Business Machines Corporation Ordering logical units in a subgroup of a consistency group

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3852261T2 (de) * 1987-09-19 1995-04-06 Fujitsu Ltd Prioritätszugriffssteuerungssystem zum Hauptspeicher für Rechner.
EP0864967A1 (de) * 1997-03-10 1998-09-16 International Business Machines Corporation Bestimmung der sequentiellen Priorität in einem Ringpuffer
US5835747A (en) * 1996-01-26 1998-11-10 Advanced Micro Devices, Inc. Hierarchical scan logic for out-of-order load/store execution control

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2531903B2 (ja) * 1992-06-22 1996-09-04 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュ―タ・システムおよびシステム拡張装置
US5694553A (en) * 1994-01-04 1997-12-02 Intel Corporation Method and apparatus for determining the dispatch readiness of buffered load operations in a processor
US5521916A (en) * 1994-12-02 1996-05-28 At&T Corp. Implementation of selective pushout for space priorities in a shared memory asynchronous transfer mode switch
US5574505A (en) * 1995-05-16 1996-11-12 Thomson Multimedia S.A. Method and apparatus for operating a transport stream encoder to produce a stream of packets carrying data representing a plurality of component signals

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3852261T2 (de) * 1987-09-19 1995-04-06 Fujitsu Ltd Prioritätszugriffssteuerungssystem zum Hauptspeicher für Rechner.
US5835747A (en) * 1996-01-26 1998-11-10 Advanced Micro Devices, Inc. Hierarchical scan logic for out-of-order load/store execution control
EP0864967A1 (de) * 1997-03-10 1998-09-16 International Business Machines Corporation Bestimmung der sequentiellen Priorität in einem Ringpuffer
US5923900A (en) * 1997-03-10 1999-07-13 International Business Machines Corporation Circular buffer with n sequential real and virtual entry positions for selectively inhibiting n adjacent entry positions including the virtual entry positions

Also Published As

Publication number Publication date
DE10110578A1 (de) 2001-10-18
US6725332B2 (en) 2004-04-20
US20010029557A1 (en) 2001-10-11

Similar Documents

Publication Publication Date Title
DE602004005669T2 (de) N-Domino Ausgangskippschaltung mit schnellem Auswertepfad
DE2224537C2 (de) Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor
DE19983476B4 (de) Verfahren und Schaltungsanordnung zur Einplanung von Operationen unter Verwendung einer Abhängigkeitsmatrix
DE2714805C2 (de)
DE102013011698B4 (de) Taktausblendauffangregister, verfahren für dessen betrieb und integrierte schaltung, in der dieses angewendet ist
DE2716369A1 (de) Mikroprozessorsystem
DE112007000954T5 (de) Korrekte Energieverteilung für Mehrfachspannungschips
DE1815078B2 (de) Elektronisches Datenverarbeitungssystem
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE112006004002T5 (de) NBTI-resistente Speicherzellen mit Nand-Gliedern
DE2421130C2 (de)
DE10110578B4 (de) Hierarchisches Prioritätsfilter mit integrierter Serialisierung
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE3532481A1 (de) Datenverarbeitungsanordnung
DE60003503T2 (de) Halteschaltung in Dominologic mit Rückstellzeit
DE2245284A1 (de) Datenverarbeitungsanlage
DE102005013870A1 (de) Adaptive-Hysterese-Empfänger für ein digitales Hochgeschwindigkeitssignal
DE102013114508B4 (de) Blockbasierte Signalverarbeitung
DE102004006769B3 (de) Auslesevorrichtung
DE2622974A1 (de) Mikroprogrammierbares steuerwerk
DE102007050049A1 (de) Schalteranordnung mit einer Pegelschiebereinrichtung
DE60210865T2 (de) Tristate-Multiplexer
DE19519226C2 (de) Mehrstufiger Synchronzähler
EP0100460B1 (de) Anforderungsauswahlsteuerung in einem Prozessor-Speicher-Verbindungssystem
EP0173884B1 (de) Schaltungsanordnung zur prioritätsbezogenen Einordnung und Registrierung einzelner Speicherabschnitte bzw. Bänke unter Anwendung des LRU-Algorithmus

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee