DE3688581T2 - Sortierverfahren in einem hierarchisch geordneten Speichersystem. - Google Patents

Sortierverfahren in einem hierarchisch geordneten Speichersystem.

Info

Publication number
DE3688581T2
DE3688581T2 DE86113664T DE3688581T DE3688581T2 DE 3688581 T2 DE3688581 T2 DE 3688581T2 DE 86113664 T DE86113664 T DE 86113664T DE 3688581 T DE3688581 T DE 3688581T DE 3688581 T2 DE3688581 T2 DE 3688581T2
Authority
DE
Germany
Prior art keywords
cache
sorting
ordered
keys
memory
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
DE86113664T
Other languages
English (en)
Other versions
DE3688581D1 (de
Inventor
Douglas Robert Case
Watson Manwaring Conner
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 DE3688581D1 publication Critical patent/DE3688581D1/de
Application granted granted Critical
Publication of DE3688581T2 publication Critical patent/DE3688581T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/22Indexing scheme relating to groups G06F7/22 - G06F7/36
    • G06F2207/222Binary data tree
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Threshing Machine Elements (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf die Bildung von Sortierketten in einem Verarbeitungssystem mit hierarchisch geordnetem Speicher
  • In "Sorting and Sort Systems", Addison-Wesley Publishing Co., Copyright 1975, Seite 1, definiert Lorin das Sortieren als einen Prozeß, in dem Elemente in einer bestimmten Reihenfolge angeordnet werden. Er weist außerdem darauf hin, daß, während das Ordnen ein physisches Ordnen beinhalten kann, wie zum Beispiel die Anordnung eines Lochkartenstapels oder die Anordnung von Sätzen auf einem Magnetband, die Ausgabe eines Sortiervorganges nicht notwendigerweise eine tatsächliche oder physische Neuanordnung bedeutet. In dieser Hinsicht kann die Ordnung in einer Datei auf andere Weise dargestellt sein, insbesondere durch die Verwendung eines Index. Die Neuanordnung eines Index oder seiner Entsprechung wird "logisches Ordnen" oder "Neuanordnung" genannt. Wenn also die zu sortierenden Elemente in einer verknüpften Liste enthalten sind, dann besteht die Veränderung der Sortierreihenfolge aus einer Veränderung der Zeiger, wobei diese Zeiger die Reihenfolge der Elemente in der Liste definieren.
  • Moderne Datenverarbeitungsmaschinen enthalten gewöhnlich einen Befehlsprozessor, der mit einem hierarchisch organisierten nach der LRU-Regel verwalteten abgestuften Speichersystem gekoppelt ist, in dem Software und Daten enthalten sind. Der schnellste Speicher, auf den am schnellsten zugegriffen wird und der sich dem Befehlsprozessor am nächsten befindet, wird in der Hierarchie an erster Stelle angeordnet, während progressiv langsamere Speicherformen, auf denen die Masse der Informationen geschrieben ist, die unteren Positionen innerhalb der Hierarchie einnehmen. Da sich die Speicherkosten mit zu nehmender Geschwindigkeit dramatisch erhöhen, ist bei vielen Rechnersystemen das physische Speichersubsystem in eine Anzahl von Leistungsebenen unterteilt. Einige dieser Ebenen, wie zum Beispiel die Speichereinrichtungen mit Direktzugriff (DASD) (zum Beispiel Disketten) und Magnetband, wurden traditionell als E/A-Einrichtungen behandelt, während andere Ebenen, wie zum Beispiel RAM und Cache, von der System-Hardware direkt als Hauptspeicher behandelt wurden. Die Bezeichnung "Primär-speicher" oder "interner Speicher" bezeichnet einen Systemspeicher, der für einzelne Lese- oder Schreibtransfers wahlfrei adressiert werden kann. Der Begriff "sekundärer" oder "externer Speicher" bezieht sich auf einen Speicher, der nicht wahlfrei adressierbar und für einen Direktzugriff zu langsam ist oder auf den durch Blöcke von fester Größe zugegriffen werden muß.
  • Ein Cache ist ein Speicher, bei dem die Zugriffszeit wesentlich schneller ist als bei anderen Speicherformen, auf die wahlfrei zugegriffen werden kann, und die primäre oder interne Speicher bilden. Da eine Bezugnahme auf diese Speicherformen vom System verwaltet wird, ist das Vorhandensein eines Cache- Speichers für die Anwendungssoftware transparent. Die Daten werden gewöhnlich in Zeilen, die die Bezugsdaten enthalten, in den Cache eingebracht, und eine Zeile verbleibt im Cache-Speicher, bis sie durch eine andere Zeile überlegt wird. Die Datenbewegung in den und aus dem Speicher wird allgemein durch eine Hardware-Implementierung eines am längsten nicht benutzten (LRU) Algorithmus gestützt. Der Cache-Speicher arbeitet nach dem Prinzip, daß auf bestimmte Stellen im Speicher häufiger zugegriffen wird. Wird eine Hauptspeicherstelle gelesen, wird ihr Inhalt gleichzeitig im Cache gespeichert. Darüber hinaus werden Lesebezugnahmen auf diese Stelle automatisch an den Cache weitergeleitet. Bei einem Schreibzugriff wird normalerweise sowohl in den Hauptspeicher als auch in den Cache geschrieben. Da ein Cache viele nicht zusammenhängende Hauptspeicherplätze darstellen kann, werden inhaltsadressierbare Register verwendet, um festzustellen, wann ein Hauptspeicherplatz aktuell im Cache dupliziert wird.
  • Traditionell werden Sortierverfahren in interne und externe Verfahren unterteilt. Ein internes Verfahren ist ein Verfahren, das mit akzeptabler Leistung nur auf diejenigen Datenlisten angewendet werden kann, die vollständig im Primärspeicher des Prozessors enthalten sein können. Bei einem externen Verfahren handelt es sich um ein Verfahren, das entsprechend auf Dateien von Daten angewendet wird, die zu groß sind, um in den Primärspeicher zu passen, und das sich daher während des Sortierprozesses auf externe Massenspeichereinrichtungen, wie zum Beispiel Magnetband oder DASD, verlassen muß. Beim externen Sortieren werden Teile einer Datei in den Primärspeicher eingelesen, intern geordnet und dann auf den externen Einrichtungen neu geschrieben. Dieser Prozeß kann mehrmals stattfinden. Demgegenüber werden interne Verfahren dazu verwendet, die von Durchlauf zu Durchlauf entwickelten Daten neu zu ordnen. Anders ausgedrückt, bei den meisten externen Sortierverfahren erfolgt ein erster Durchlauf durch die zu sortierende Datei, wobei diese in Blöcke aufgeteilt wird, die etwa die Größe des internen Speichers haben, anschließend werden diese Blöcke sortiert. Die sortierten Blöcke werden dann miteinander gemischt, indem mehrere Durchläufe durch die Datei durchgeführt werden, und indem nacheinander größere sortierte Blöcke gebildet werden, bis die gesamte Datei sortiert ist. Ist zum Beispiel eine ungeordnete Liste von n Schlüsseln und eine interne Speicherkapazität von m«n Worten vorhanden, werden mit jedem Sortiervorgang n/m sortierte Blöcke erzeugt. Wird bei jedem nachfolgenden Durchlauf eine Mischung mit einer Wegezahl p durchgeführt, können log(Basisschlüssel) (n/m) Durchläufe erforderlich sein.
  • In dem Buch von Knuth, "Art of Computer Programming", Band 3, Sorting and Searching, Copyright 1973, Seite 251-266, wird das Replacement-Selection-Sortierverfahren unter Verwendung einer Mischung mit einer Wegezahl von p beschrieben. Es wird außerdem anerkannt, daß in anderen Referenzmaterialien, wie zum Beispiel in Whitlow et al, USP 4,210,961, "Sorting System", herausgegeben am 1. Juli 1980, die Minimierung von Rechenbetriebsmitteln angesprochen wird, die von einer Mischung geordneter Ketten mit einer Wegezahl von n (oder, unter Anwendung der Terminologie von Knuth, einer Wegezahl von p) in einem Sortier-/Mischvorgang abhängig sind. Whitlow kehrt vor der Mischung gezielt die Ordnungsrichtung einiger Ketten als eine Funktion einer Vergleichsübereinstimmung zwischen der tatsächlichen und der vorausgesagten Kettengröße um.
  • Der bisherige Stand der Technik wird außerdem von Chang et al, USP 4,417,321, herausgegeben 22. November 1983, und USP 4,510,567, herausgegeben 9. April 1985, beide unter dem Titel "Qualifying and Sorting File Record Data" dargestellt. Auch "Algorithms" von Sedgewick, Addison-Wesley Publishing Co., Kapitel 11, Priority Queues, Copyright 1983, ist von Interesse. Sedgewick schlägt einen abstrakten Datentyp vor, bei dem für jedes neue Element, das in eine Warteschlange eingefügt wird, das größte Element daraus gelöscht wird. Diesbezüglich implementieren die Chang-Patente eine Variation der Prioritätswarteschlange von Sedgewick, wie sie für das Sortieren und Abstufen von einem Massenspeicher zu einem Bürosystem angewendet wird. Das Sortierverfahren von Chang tendiert mehr zum Ausschluß des in der Rangordnung am weitesten unten liegenden Elementes aus der Liste oder dem Puffer.
  • Ziel dieser Erfindung ist demnach ein wirksames Verfahren zur Bildung von Sortierketten, welches die Betriebsmittel, die am Sortiervorgang beteiligt sind, und die Anzahl der Fehlversuche bei der Bezugnahme im Cache minimiert.
  • Die oben genannten Ziele werden durch ein Verfahren und ein Gerät gemäß den Ansprüchen erreicht.
  • In den oben zitierten Referenzdokumenten wird weder in einzelnen Dokumenten noch in der Kombination dieser Dokumente die Erfindung gemäß Anspruch gelehrt oder vorgeschlagen; nämlich, ein Sortier- und Mischverfahren in mehreren Durchläufen, in welchem die Sortier- und Mischläufe dynamisch auf einen Cache beschränkt sind. Das bedeutet, daß während des ersten Durchlaufs die Anzahl der Elemente in jeder ungeordneten, den Cache füllenden Teilmenge, sowie die Anzahl der Elemente, die an jedem Mischzyklus beteiligt sind, während ihrer jeweiligen Durchläufe in den Cache hineinpassen.
  • Replacement-Selection ist das Mischverfahren der Wahl. Andere Mischtechniken können verwendet werden, obwohl hierbei in bezug auf die zur Durchführung des Vorgangs benötigte Zeit Zugeständnisse gemacht werden müssen. In allen Fällen nähert sich jedoch die Anzahl der Fehlversuche pro Satz höchstens einem Fehlversuch während des Sortierens.
  • Die vorliegende Erfindung soll nachfolgend ausführlicher beschrieben werden. Hierbei wird Bezug genommen auf die beiliegenden Zeichnungen, in denen allgemeine Aspekte des Sortierens mit hierarchisch geordnetem Speicher dargestellt werden.
  • Fig. 1 ist ein schematisches Diagramm eines Systems mit hierarchisch geordnetem Speicher, welches einen Cache enthält.
  • Fig. 2 ist eine bildliche Darstellung der Auswirkungen von Treffern und Fehlversuchen auf einen nach der LRU-Regel verwalteten Cache, wenn dieser einer Bezugnahmekette ausgesetzt wird.
  • Wenden wir uns nun der Fig. 1 zu, die eine typische Anordnung von Speichern in einer Hierarchie darstellt, wie sie bei den meisten Systemen zur Verfügung steht. Erfolgt durch die Ausführung eines Befehls im Prozessor ein Speicherzugriff, wird der Inhalt der Stelle, auf die zugegriffen wird, wie bereits erwähnt, sowie der Inhalt der benachbarten Stellen in einen Cache kopiert. Wird auf diese Stellen erneut Bezug genommen, kann direkt aus dem Cache abgerufen werden, ohne daß vorher auf den langsameren Hauptspeicher zugegriffen werden muß. Die in der Fig. 1 dargestellte Umgebung ist die einer Bedarfs- Seitenwechselinformation aus den unteren Tiefen oder Echelons des Speichers, so daß sie in besser zugänglichen Speicherabschnitten resident ist, als eine Funktion der Anforderung und der Rücknahme der Bezugnahme oder einer Umlagerung derjenigen Informationsteile, die für die Ausführung von Aufgaben im Augenblick nicht von Interesse sind, nach unten. Diesem Bedarfs- Seitenwechselmodell eines virtuellen Speichers ist ein Mehrprogrammbetrieb- oder Konkurrenzmodell überlagert, worin Aufgaben plötzlich durch einen Interrupt geschaltet werden, so daß eine Austragung (flushing) und ein Neuaufbau eines entsprechenden Arbeitsteils erfolgen muß, bis die aktuelle Aufgabe herausgeschaltet und der zugehörige Arbeitsteil ausgetragen ist.
  • Fig. 2 zeigt ein Beispiel eines nach der LRU-Regel verwalteten Cache. Der nach der LRU-Regel verwaltete Cache ordnet jeder Bezugnahme die Zeit ihrer letzten Verwendung zu. Muß ein Element ausgetauscht werden, wählt das LRU-Schema das Element im Cache aus, dessen letzte Verwendung am weitesten zurückliegt. Diese Form des Austauschs blickt zeitlich eher nach hinten als nach vorne. Das Ergebnis der Anwendung der LRU-Regel auf eine Cache-Bezugnahme-Kette ist in Fig. 2 dargestellt. Hierdurch werden 12 Fehlversuche erzeugt. Bei Bezugnahme auf Element 4 wird jedoch anhand der LRU-Regel festgestellt, daß von den drei Elementen im Cache das Element 2 am längsten nicht mehr verwendet wurde. Das zuletzt verwendete Element war das Element 0, und unmittelbar vor diesem das Element 3. So ersetzt das LRU-Verfahren das Element 2, ohne zu wissen, daß es verwendet werden soll. Wenn dann ein Fehlversuch durch Bezugnahme auf Element 3 stattfindet, ersetzt das LRU-Verfahren Element 0, da das Element 0 von den drei Elementen im Cache das Element ist, das am längsten nicht mehr verwendet wurde.
  • Die vorliegende Erfindung ist auf ein Verfahren zum internen Sortieren von Sätzen in mehreren Durchläufen in einem System mit hierarchisch geordnetem Speicher mit Cache ausgerichtet. Der Cache bildet in Wirklichkeit ein Depot für die Schlüssel der Datensätze, die aktuell sortiert werden. Dieses Verfahren hat zwei grundlegende Schritte. Der erste Schritt (a) ist das Sortieren von Teilmengen des Satzes, bis der Satz (Kette) erschöpft ist; der zweite Schritt (b) ist das Mischen der Teilmengen, so daß die Teilmengen dynamisch so begrenzt werden, daß sie in den Cache passen. Schritt (b) kann durch Replacement-Selection-Sortierung von r Ebenen r-schichtiger Teilmengen von Sätzen durchgeführt werden, so daß die Teilmengen dynamisch so begrenzt werden, daß sie in den Cache passen. Beim Sortieren innerhalb einer Ebene tritt höchstens ein Fehlversuch pro Satz bei der Bezugnahme auf den Cache auf.
  • In der Praxis unterliegt ein Cache einer Konkurrenzsituation, so daß seine Steuerung durch einen im Prozessor residenten Scheduler von einer Sortieraufgabe auf eine andere Aufgabe oder umgekehrt geschaltet werden kann. Übernimmt die Sortieraufgabe die Steuerung, wird der Cache mit einem Teil der Kette geladen, die beim Sortieren dieses Teils geordnet werden muß. Wird die Sortieraufgabe unterbrochen, kann eine andere Aufgabe die Steuerung übernehmen und die teilweise sortierten Ergebnisse der Aufgabe austragen. Während der Cache ausgetragen wird, werden nur diejenigen Eintragungen zurück in den Speicher kopiert, die geändert wurden. Übernimmt die Sortieraufgabe wieder die Steuerung, wird die Aufgabe dort wieder aufgenommen, wo sie zuvor unterbrochen wurde, wobei darauf geachtet wird, daß die teilweise sortierten Ergebnisse zuvor gespeichert wurden. In der Praxis ist der Cache immer nach der LRU-Regel verwaltet, unabhängig davon, ob er an einer Sortieraufgabe beteiligt ist oder nicht. Weil der Cache LRU-verwaltet ist, wird der Cache-Inhalt von der Bezugnahmestruktur bestimmt. Ist die Menge der Objekte, auf die Bezug genommen wird, viel größer als die Kapazität des Cache, wird der Cache- Inhalt bei Bezugnahme auf Objekte teilweise ersetzt. Daher ist zur Erzielung niedriger Fehlversuchsraten bei LRU-verwalteten Speichern die Bezugnahmestelle wichtig. Auch wenn bei Sortiervorgängen eine solche Stelle eventuell nicht beachtet wird, kann die Fehlversuchsrate trotzdem minimiert werden, wenn die Teilmenge der zu sortierenden Objekte noch gut innerhalb der Kapazität des Cache-Speichers lag. Es ist daher wünschenswert, die Teilkette, die innerhalb des Cache sortiert wird, so klein zu halten, daß die LRU-Disziplin des Cache NICHT aufgerufen wird. Bei der Festlegung, wie klein die Teilketten sein müssen, muß die Anzahl der Zeilen im Cache und die Tiefe der Teilkette berücksichtigt werden.
  • Daher muß zunächst zur Durchführung des Verfahrens eine Berechnung der Parameter, wie zum Beispiel Größe s, jeder während eines ersten Durchlaufs zu sortierenden Teilmenge erfolgen. Erfordert eine Mischphase mehrere Misch-Teilläufe, wie zum Beispiel eine Mischung mit einer Wegzahl n und einer Wegzahl t, müssen auch die Parameter n und t berechnet werden. Es ist zu beachten, daß n und t auch der Anzahl der Knoten auf einem Auswahlbaum entsprechen.
  • Für den Fachmann ist außerdem klar, daß eine Neuformatierung der Sätze in herkömmlicher Weise erforderlich sein kann, um diejenigen Schlüssel-Elemente des Satzes zu kennzeichnen, die zur Bildung der Schlüssel für den Sortiervorgang verwendet werden.
  • Für den Fachmann ist offensichtlich, daß diese Parameter in jeder geeigneten Weise berechnet werden können. Um jedoch das Konzept der vorliegenden Erfindung besser verständlich und beurteilbar zu machen, wird die Berechnung der Parameter nachfolgend allgemein beschrieben.
  • Zunächst kann eine Größe t für einen Ausgabebaum berechnet werden, der zum Mischen geordneter Satzlisten verwendet wird. T soll so groß wie möglich gewählt werden, wobei eine Begrenzung so erfolgen soll, daß der Baum-Mischvorgang immer noch eine niedrige Cache-Fehlversuchsrate aufweist. T ist daher eine Funktion der Größe des Caches, der Merkmale des Baum- Mischvorgangs (das heißt, auf wieviele Daten in diesem Baum- Mischvorgang Bezug genommen wird) und der Größe der Sätze und Schlüssel, die sortiert werden.
  • Auch eine Teilmengengröße s für Teilmengen ungeordneter Sätze, die zur Bildung erster geordneter Listen (oder Teilmengen) für Baum-Mischvorgänge sortiert werden müssen, kann berechnet werden. S soll so groß wie möglich gewählt werden, wobei eine Begrenzung so erfolgen soll, daß der Sortiervorgang immer noch eine niedrige Cache-Fehlversuchsrate aufweist. S ist daher eine Funktion der Größe des Cache-Speichers, der Merkmale des Sortiervorgangs, der die erste geordnete Liste erzeugt (das heißt, auf wieviele Daten in diesem Sortiervorgang Bezug genommen wird), und der Größe der Sätze und Schlüssel, die sortiert werden.
  • Danach kann die Zahl n geordneter Listen der Größe s berechnet werden, die gemischt werden müssen, um eine geordnete Liste für den Ausgabebaum zu erzeugen. N ist so zu wählen, daß der Sortiervorgang eine niedrige Cache-Fehlversuchsrate aufweist. Für einen gegebenen Wert t und s ist n eine Funktion des Hauptspeichers, der dem Programm zur Verfügung steht, und der Größe der Sätze. Genauer ausgedrückt, für einen gegebenen Wert t und s ist n eine Funktion davon, wieviele Sätze gleichzeitig gespeichert werden können. n wird als Mindestanzahl der Sätze ausgewählt, die gleichzeitig gespeichert werden können, dividiert durch das Produkt t mal s, und t (die Höchstzahl geordneter Listen, die in einem Baum-Mischvorgang unter Einhaltung einer niedrigen Cache-Fehlversuchsrate miteinander gemischt werden können).
  • Sind die Parameter t, s und n bekannt, wird eine erste Teilmenge von s Eingabesatzschlüsseln in den Cache eingelesen und zur Bildung einer sortierten Liste sortiert. Dieser Vorgang wiederholt sich für aufeinanderfolgende Teilmengen von s Eingabesatzschlüsseln, bis die Satzmenge erschöpft ist. Diese Vorgänge bilden daher den oben genannten Schritt (a). Verallgemeinernd, der zweite Schritt oder Mischschritt (b) umfaßt dann die weiter unten genannten Teilschritte 1 bis 4.
  • Teilschritt 1: Auswahl einer Zwischenmenge n der in Schritt (a) erzeugten geordneten Listen. Wenn n gleich eins, dann dem Ausgabebaum bis zu t geordnete Listen, wie in Schritt (a) erzeugt, hinzufügen, und mit Teilschritt 4 fortfahren.
  • Teilschritt 2: t oder eine geringere Anzahl von Listen von der Zwischenmenge abnehmen, diese mischen und die dadurch entstandene geordnete Liste der Zwischenmenge hinzufügen. Diesen Teilschritt wiederholen, bis die Zwischenmenge auf eine einzige geordnete Liste reduziert ist.
  • Schritt 3: Die einzelne Zwischenmengen-Liste dem Ausgabebaum hinzufügen. Bleiben von Schritt (a) n oder mehr Listen übrig, mit Teilschritt 1 fortfahren.
  • Schritt 4: Sätze der Listen auf dem Ausgabebaum mischen, bis die Arbeitsdateipuffer gefüllt sind. Arbeitsdateipuffer schreiben. Müssen noch mehr Sätze verarbeitet werden, mit Schritt (a) fortfahren.
  • Somit ist t die Größe eines Ausgabebaums, die zum Mischen geordneter Satzlisten verwendet wird. Die Größe der Teilmenge s stellt für die Tiefe oder Mächtigkeit der Teilmenge, die in den Cache hineinpaßt, für Teilmengen ungeordneter Sätze, die zur Bildung der ersten geordneten Listen sortiert werden müssen, oder Baum-Mischoperationen, eine Aufwärtsgrenze dar. N ist die Anzahl der sortierten Teilmengen der Größe s, die gemischt werden müssen, um eine geordnete Liste für den Ausgabebaum, wie festgelegt, zu erzeugen. Somit ist die Zahl n eine Funktion des verfügbaren Hauptspeichers und würde sich für jeden gegebenen Wert t und s verändern.
  • Schritt (a) beinhaltet die Gewinnung von s Eingabesätzen und deren Sortierung. In der Praxis würde dieser Schritt solange wiederholt, bis der Hauptspeicher voll oder die Menge der Sätze erschöpft ist.
  • Wie angegeben, bilden die Teilschritte 1-4 einen Mischschritt mit mehreren Teilläufen. In dieser Hinsicht beinhaltet der Teilschritt 1 die Auswahl einer Zwischenmenge n der in Schritt 4 gebildeten geordneten Listen. Ist n gleich 1, dann nur t geordnete Listen, wie in Schritt (a) erzeugt, zum Ausgabebaum übertragen und dann zu Teilschritt 4 springen. Teilschritt 4 enthält das Mischen von Sätzen der Listen auf dem Ausgabebaum, bis die Arbeitsdateipuffer gefüllt sind. Wenn diese Puffer gefüllt sind, werden sie geschrieben. Müssen noch mehr Sätze verarbeitet werden, muß zu Schritt (a) zurückgekehrt werden. Wenn n tatsächlich 2 oder mehr ist, erfolgt eine Verzweigung zu Teilschritt 2. An diesem Punkt werden t oder weniger Listen von der Zwischenmenge abgenommen und mit der daraus resultierenden geordneten Liste gemischt, die zu der Zwischenmenge addiert wird. Dieser Schritt wird wiederholt, bis die Zwischenmenge auf eine einzelne geordnete Liste reduziert ist.
  • Somit werden sowohl im ersten als auch im zweiten Durchlauf (einschließlich der Teilläufe des zweiten Durchlaufs) die Teilmengen so begrenzt, daß sie in den Cache passen.
  • Es werden zwei Sortierbeispiele unter Verwendung eines Cache in einem Datenverarbeitungssystem mit hierarchisch geordnetem Speicher dargestellt. In beiden Beispielen werden 12 Sätze im Speicher sortiert. Das erste Beispiel veranschaulicht einen Sortiervorgang nach dem bisherigen Stand der Technik, während im zweiten Beispiel das Verfahren der Erfindung ausgeübt wird. Es wird für diese Beispiele angenommen, daß nur vier Sätze gleichzeitig im Cache gehalten werden können. Anstelle des Replacement-Selection-Verfahrens bestehen die für den Sortiervorgang dargestellten Verfahren einfach darin, daß eine Liste durchlaufen wird und aus dieser Liste das kleinste Element ausgewählt wird. Für Replacement-Selection würden dieselben Prinzipien für die Darstellung der Auswirkungen von Cache- Fehlversuchen in ähnlicher Weise gelten. Unter Bezugnahme auf die Beispiele wird angenommen, daß die Sätze in einer logischen Ordnung unter Verwendung von Zeigern miteinander verknüpft sind; das Sortierverfahren der Erfindung kann daher durch Neuschreiben der Zeiger implementiert werden.
  • TABELLE Illustratives Beispiel des Verfahrens nach dem bisherigen Stand der Technik
  • Alle Sätze im Speicher sortieren, sortierte Sätze zu den Arbeitspuffern oder einem anderen Ausgabebereich bewegen.
  • Es wird angenommen, daß die Sätze im Hauptspeicherbereich zunächst in der folgenden Ordnung miteinander verknüpft sind, es wird jedoch nicht notwendigerweise angenommen, daß sie eine physische Ordnung haben. Man nehme die folgenden 12 Sätze an:
  • Z
  • G
  • B
  • A
  • K
  • R
  • L
  • D
  • P
  • U
  • M
  • Y
  • Sortierverfahren: Liste durchgehen, niedrigsten Satz suchen und entfernen. Liste erneut durchgehen, wieder den neuen niedrigsten Satz suchen und entfernen, etc. Diese Technik wurde zur Vereinfachung der Darstellung gewählt. Dieselben Prinzipien, die Cache-Treffer und - Fehlversuche beinhalten, würden auch bei Verwendung des Replacement-Selection-Verfahrens zur Anwendung kommen.
  • Es wird angenommen, daß der Cache vier Sätze aufnehmen kann, und es wird darüber hinaus angenommen, daß er zunächst leer ist (was durch Nullen angezeigt wird).
  • Cache-Anfangszustand: 0
  • 0 - Cache-Fehlversuch
  • 0 + Cache-Treffer
  • 0
  • Vergleiche den ersten Satz (Z) mit dem zweiten Satz (G).
  • Cache nach dem Vergleich: Z -
  • G -
  • 0
  • 0
  • Den bis jetzt niedrigsten Satz (G) mit dem dritten Satz (B) vergleichen.
  • Cache nach dem Vergleich: G +
  • B -
  • Z
  • 0
  • Den bis jetzt niedrigsten Satz (B) mit dem vierten Satz (A) vergleichen:
  • B +
  • A -
  • G
  • Z
  • Den bis jetzt niedrigsten Satz (A) mit dem fünften Satz (K) vergleichen:
  • A +
  • K -
  • B
  • G
  • Man beachte, daß Z aus dem Cache ausgetragen wurde.
  • Den bis jetzt niedrigsten Satz (A) mit dem sechsten Satz (R) vergleichen:
  • A +
  • R -
  • K
  • B
  • Man beachte, daß G aus dem Cache ausgetragen wurde.
  • Der erste Durchlauf wird mit dem letzten Vergleich des ersten Durchlaufs wie folgt fortgesetzt:
  • Den bis jetzt niedrigsten Satz (A) mit dem zwölften Satz (Y) vergleichen:
  • A +
  • Y -
  • M
  • U
  • Man beachte, daß alle Sätze vom Beginn der Liste, mit Ausnahme von A, aus dem Cache gelöscht wurden.
  • Es wurde festgestellt, daß A der niedrigste Satz ist, er wird daher an den Puffer oder den Ausgabebereich weitergegeben.
  • Nach dem ersten Durchlauf wird A entfernt und die Sätze im Speicherbereich erscheinen nun wie folgt:
  • Z
  • G
  • B
  • K
  • R
  • L
  • D
  • P
  • U
  • M
  • Y
  • Dann wird der zweite Durchlauf gestartet, die Liste wird erneut durchlaufen, der in der Liste verbleibende niedrigste Satz wird gesucht.
  • Vergleiche den ersten Satz (Z) mit dem zweiten Satz (G):
  • Z -
  • G -
  • A
  • Y
  • Man beachte, daß M und U aus dem Cache ausgetragen wurden.
  • Den bis jetzt niedrigsten Satz (G) mit dem dritten Satz (B) vergleichen:
  • G +
  • B -
  • Z
  • A
  • Man beachte, daß Y aus dem Cache ausgetragen wurde. Den bis jetzt niedrigsten Satz (B) mit dem vierten Satz (K) vergleichen:
  • B +
  • K -
  • G
  • Z
  • Man beachte, daß A aus dem Cache ausgetragen wurde.
  • Den bis jetzt niedrigsten Satz (B) mit dem fünften Satz (R) vergleichen:
  • B +
  • R -
  • K
  • G
  • Man beachte, daß Z aus dem Cache ausgetragen wurde.
  • Den bis jetzt niedrigsten Satz (B) mit dem sechsten Satz (L) vergleichen:
  • B +
  • L -
  • R
  • K
  • Man beachte, daß G aus dem Cache ausgetragen wurde.
  • Der zweite Durchlauf wird mit dem letzten Vergleich des zweiten Durchlaufs wie folgt fortgesetzt:
  • Den bis jetzt niedrigsten Satz (B) mit dem elften Satz (Y) vergleichen:
  • B +
  • Y -
  • M
  • U
  • Es wird festgestellt, daß B der niedrigste Satz ist, er wird also an den Puffer oder den Ausgabebereich weitergegeben. Nach dem zweiten Durchlauf befinden sich 10 Sätze im Speicherbereich. Dieser Vorgang wird für alle 11 Durchläufe fortgesetzt.
  • Man beachte, daß es pro Satz bei jedem Durchlaufen der Daten einen Cache-Fehlversuch gibt.
  • x sei die Anzahl der Sätze. Es gibt x-1 Läufe durch die Daten. Die durchschnittliche Länge der Liste eines Durchlaufs ist x/2. Da es pro Satz pro Durchlauf zu einem Cache-Fehlversuch kommt, beträgt die Anzahl der Cache-Fehlversuche ungefähr
  • x/2(x-1) = (x²-x)/2.
  • In diesem Beispiel ist x gleich 12, dann ist (x²-x)/2 = 66.
  • TABELLE 2 Illustratives Beispiel des Verfahrens gemäß der Erfindung
  • Nachfolgend ein illustratives Beispiel der Erfindung in Aktion. Dieses Beispiel ist mit den Schritten 1-8 der vorausgehenden Beschreibung verknüpft.
  • Schritt 1: Man nehme an, die Größe des Ausgabebaumes t wurde mit 3 berechnet.
  • Schritt 2: Man nehme an, die Größe der Menge ungeordneter Sätze s wurde mit 4 berechnet.
  • Schritt 3: Man nehme an, die Anzahl der sortierten Mengen n wurde mit 1 berechnet.
  • Schritt 4: s (4) Eingabesätze gewinnen und diese sortieren. Diesen Vorgang solange wiederholen, bis der Hauptspeicher voll ist (unter der Annahme, daß zur Füllung des Speichers nur 12 Sätze benötigt werden).
  • Man nehme an, der Speicher ist mit denselben 12 Sätzen gefüllt, die im vorherigen Beispiel gezeigt wurden, in dem die Anzahl der Cache-Fehlversuche bei Anwendung des bisherigen Stands der Technik veranschaulicht wird. Man nehme an, der Cache kann, wie im vorherigen Beispiel, 4 Sätze aufnehmen:
  • Z
  • G
  • B
  • A
  • K
  • R
  • L
  • D
  • P
  • U
  • M
  • Y
  • Die ersten s (4) Sätze im Speicher sortieren:
  • Z
  • G
  • B
  • A
  • Zuerst den ersten Satz (Z) mit dem zweiten Satz (G) vergleichen:
  • Z -
  • G - - Cache-Fehlversuch
  • 0 + Cache-Treffer
  • 0
  • Den bis jetzt niedrigsten Satz (G) mit dem dritten Satz (B) vergleichen:
  • G +
  • B -
  • Z
  • 0
  • Den bis jetzt niedrigsten Satz (B) mit dem vierten Satz (A) vergleichen:
  • B +
  • A -
  • G
  • Z
  • Es wird festgestellt, daß A der niedrigste Satz ist, daher wird er als erster Satz in der geordneten Liste verknüpft. Die Sätze im Speicherbereich erscheinen nun wie folgt
  • Z
  • G
  • B
  • An diesem Punkt erscheint der Cache-Inhalt wie folgt:
  • A
  • B
  • G
  • Z
  • Während des ersten Durchlaufs wurde keiner der s (4) Sätze aus dem Speicher ausgetragen.
  • Erste Phase des zweiten Durchlaufs starten.
  • Den ersten Satz (Z) mit dem zweiten Satz (G) vergleichen:
  • Z +
  • G +
  • A
  • B
  • Den bis jetzt niedrigsten Satz (G) mit dem dritten Satz (B) vergleichen:
  • G +
  • B +
  • Z
  • A
  • Es wird festgestellt, daß B der niedrigste Satz ist, er wird daher mit dem zweiten Satz in der geordneten Liste verknüpft. Die Sätze im Speicherbereich erscheinen nun wie folgt:
  • Z
  • G
  • Man beachte, daß keiner der vier Sätze während der zweiten Phase des zweiten Durchlaufs aus dem Speicher ausgetragen wurde.
  • B
  • G
  • Z
  • A
  • Zweite Phase des zweiten Durchlaufs starten.
  • Den ersten Satz (Z) mit dem zweiten Satz (G) vergleichen:
  • Z +
  • G +
  • B
  • A
  • Es wurde festgestellt, daß G der niedrigste Satz ist, er wird daher mit dem dritten Satz in der geordneten Liste verknüpft. Der einzige verbleibende Satz ist Z, somit wird dieser Satz mit dem vierten Satz in der geordneten Liste verknüpft. Die geordnete Liste hat nun folgende logisch sortierte Ordnung:
  • A
  • B
  • G
  • Z
  • Man beachte, daß keiner der 4 Sätze in der dritten Phase des zweiten Durchlaufs aus dem Cache ausgetragen wurde.
  • Z
  • G
  • B
  • A
  • Man beachte, daß, während es im ersten Durchlauf zu einem Cache-Fehlversuch pro Satz kam, es in den nachfolgenden Durchläufen zu keinem Cache-Fehlversuch kam.
  • Schritt 4 wird solange wiederholt, bis der Hauptspeicher voll ist. Das heißt, im Beispiel werden aufeinanderfolgende Mengen von s (4) Sätzen in geordnete Listen einsortiert und das Ergebnis sind die folgenden t (3) verknüpften Listen:
  • A D M
  • B K P
  • G L U
  • Z R Y
  • Das Sortieren der beiden anderen Teilmengen von Sätzen ist nicht dargestellt, es wird jedoch in der gleichen Art und Weise durchgeführt wie die Sortierung der Teilmenge (ZGBA). Auch hier ist festzustellen, daß es bei allen Teilmengen nur einen Cache-Fehlversuch pro Satz gab.
  • Schritt 5: n ist eins, somit werden die t (3) geordneten Listen zum Ausgabebaum addiert, dann weiter mit Schritt 8.
  • Schritt 8: Die Sätze in den t (3) geordneten Listen, die in Schritt 4 erzeugt wurden, mischen.
  • Nachfolgend die Anfangsstruktur des Ausgabebaums und vier verknüpfte Listen geordneter Sätze im Speicherbereich:
  • Man nehme wiederum an, daß zum Sortieren der Sätze, die sich in jeder Liste vorne befinden, die zu sortierenden Sätze durchlaufen werden, der niedrigste Satz gesucht und entfernt wird, die Liste erneut durchlaufen wird, der neue niedrigste Satz entfernt wird, etc.
  • Ersten Satz (A) mit dem zweiten Satz (D) vergleichen:
  • A -
  • D -
  • 0
  • 0
  • Den bis jetzt niedrigsten Satz (A) mit dem dritten Satz (M) vergleichen:
  • A +
  • M -
  • D
  • 0
  • Es wurde festgestellt, daß A der niedrigste Satz ist, er wird daher an den Puffer oder Ausgabebereich weitergegeben. Der nächste Satz in der geordneten Liste A war in (B) und wird in den Mischvorgang eingegeben. Man beachte, daß keine Cache-Austragung stattgefunden hat; die einzigen Cache-Fehlversuche beziehen sich auf die erste Bezugnahme auf jeden Satz. Die Struktur des Ausgabebaums und die vier verknüpften Listen geordneter Sätze im Speicherbereich sehen folgendermaßen aus:
  • Wieder die Sätze oben auf jeder Liste vergleichen, den niedrigsten Satz suchen.
  • Den Satz von der ersten Liste (B) mit dem Satz von der zweiten Liste (D) vergleichen:
  • B -
  • D +
  • A
  • M
  • Den bis jetzt niedrigsten Satz (B) mit dem Satz von der dritten Liste (M) vergleichen:
  • B +
  • M +
  • D
  • A
  • Es wurde festgestellt, daß B der niedrigste Satz ist, daher wird er an den Puffer oder Ausgabebereich weitergegeben. Der nächste Satz in der geordneten Liste B war in (G) und wird in den Mischvorgang aufgenommen. Man beachte, daß es nicht zu einer Cache-Austragung gekommen ist; der einzige Cache-Fehlversuch bezog sich auf die erste Bezugnahme eines Satzes. Die Struktur des Ausgabebaums und die drei verknüpften Listen geordneter Sätze im Speicherbereich sehen jetzt wie folgt aus:
  • Erneut die Sätze oben auf jeder Liste vergleichen und den niedrigsten Satz suchen. Den Satz von der ersten Liste (G) mit dem Satz von der zweiten Liste (D) vergleichen:
  • G -
  • D +
  • B
  • M
  • Man beachte, daß A aus dem Cache ausgetragen wurde, A wurde jedoch bereits an den Ausgabebereich weitergegeben und befindet sich nicht länger im Mischvorgang.
  • Den bis jetzt niedrigsten Satz (D) mit dem Satz von der dritten Liste (M) vergleichen:
  • D +
  • M +
  • G
  • B
  • Es wurde festgestellt, daß D der niedrigste Satz ist, daher wird er an den Puffer oder Ausgabebereich weitergegeben. Der nächste Satz in der geordneten Liste D war in (K) und wird in den Mischvorgang aufgenommen. Man beachte, daß die einzige Austragung im Cache sich auf einen Satz bezog, der bereits an den Ausgabebereich weitergegeben war und der demnach nicht länger in den Mischvorgang einbezogen war. Die Struktur des Ausgabebaums und die drei verknüpften Listen geordneter Sätze im Speicherbereich sehen jetzt folgendermaßen aus:
  • Dieser Vorgang wird in dieser Art und Weise fortgesetzt, bis alle Sätze in allen drei Listen in sortierter Reihenfolge zum Puffer oder zum Ausgabebereich weitergegeben wurden. Das wesentliche Merkmal hier ist, daß es nur einen Cache-Fehlversuch pro Satz bei der Mischung in Schritt 8 gab, und dieser trat bei der ersten Bezugnahme auf den Satz auf. Danach bleibt der Satz im Cache, bis er im Mischvorgang ausgewählt und zum Puffer oder Ausgabebereich weitergegeben wurde.
  • Man beachte, daß im Mischvorgang in Schritt 8, während ein Cache-Fehlversuch pro Satz auftrat, wenn jeder Satz in den Mischvorgang einbezogen wurde (zum niedrigsten Satz in seiner geordneten Liste wurde), bei den nachfolgenden Durchläufen keine Cache-Fehlversuche auftraten. In Schritt 4 gab es auch nur einen Cache-Fehlversuch pro Satz.
  • Für alle Schritte, in denen x die Anzahl der Sätze ist, weist dieses Beispiel demnach 2· Cache-Fehlversuche insgesamt auf.
  • Das Verfahren nach dem bisherigen Stand der Technik zeigte (x²-x)/2.
  • Das bedeutet, daß es in dem Verfahren der Erfindung nur zu 24 Fehlversuchen gegenüber 66 Fehlversuchen im Verfahren nach dem bisherigen Stand der Technik kam. Der Unterschied zwischen der Anzahl der Cache-Fehlversuche zwischen den beiden Verfahren wäre mit zunehmender Anzahl der Sätze x noch größer. In Wirklichkeit passen mehr als 4 Sätze in den Cache und mehr als 12 Sätze passen in den Speicher. Das heißt, daß das Verhältnis der Anzahl von Cache-Fehlversuchen zwischen den beiden Verfahren noch wesentlich signifikanter wäre, als das im obigen Beispiel dargestellte Verhältnis von Cache-Fehlversuchen von 24 zu 66.

Claims (8)

1. Ein Verfahren zum internen Sortieren von Sätzen in mehreren Durchläufen in einem Datenverarbeitungssystem mit hierarchisch geordnetem Speicher, in welchem ein Cache- Speicher ein Depot für die Schlüssel der aktuell sortierten Sätze ist, wobei das genannte Verfahren folgende Schritte umfaßt:
während eines ersten Durchlaufs:
(a) Aufruf einer ungeordneten Teilmenge von Satz-Schlüsseln in den Cache und Sortieren zur Bildung einer geordneten Teilmenge von Schlüsseln;
(b) wobei Schritt (a) bei aufeinanderfolgenden Teilmengen solange wiederholt wird, bis die Menge der Sätze erschöpft ist; und
während eines zweiten Durchlaufs:
(c) Mischen einer Mehrfachzahl t von geordneten Teilmengen, worin die Zahl s in jeder Teilmenge so beschaffen ist, daß das Produkt n von t mal s eine Funktion der Anzahl der Sätze ist, die sich zu einer beliebigen Zeit im Speicher befinden können, und die Zahl s in den Cache-Speicher hineinpaßt, bis eine geordnete Ausgabe erreicht ist.
2. Ein Verfahren gemäß Anspruch 1, in welchem der Schritt des Mischens der mehrfach geordneten Teilmengen unter Verwendung des Replacement-Selection-Sortierverfahrens der Schlüssel ausgeführt wird.
3. Ein Verfahren gemäß jedem der vorhergehenden Ansprüche, in welchem der Cache-Speicher nach der LRU-Regel verwaltet wird.
4. Ein Verfahren gemäß jedem der vorhergehenden Ansprüche, in welchem das genannte Verfahren einen vorläufigen Schritt einschließt, in welchem Schlüsselelemente der Sätze umformatiert werden, um die während des Sortierens verwendeten Schlüssel zu identifizieren, um so einen Vergleich zwischen den Schlüsseln zu vereinfachen.
5. Ein Datenverarbeitungssystem mit hierarchisch geordnetem Speicher für das interne Sortieren von Sätzen in mehreren Durchläufen, in welchem ein Cache-Speicher ein Depot für die Schlüssel der aktuell sortierten Sätze ist, wobei das genannte System Mittel enthält für:
während eines ersten Durchlaufs:
(a) Aufruf einer ungeordneten Teilmenge von Satz-Schlüsseln in den Cache-Speicher und Sortieren zur Bildung einer geordneten Teilmenge von Schlüsseln;
(b) Wiederholung von (a) bei aufeinanderfolgenden Teilmengen, bis die Menge der Sätze erschöpft ist; und
während eines zweiten Durchlaufs:
(c) Mischen einer Mehrfachzahl t von geordneten Teilmengen, worin die Zahl s in jeder Teilmenge so beschaffen ist, daß das Produkt n von t mal s eine Funktion der Anzahl der Sätze ist, die sich zu einer beliebigen Zeit im Speicher befinden können, und die Zahl s in den Cache-Speicher hineinpaßt, bis eine geordnete Ausgabe erreicht ist.
6. Ein System gemäß Anspruch 5, welches desweiteren Mittel für das Mischen der mehrfach geordneten Teilmengen unter Anwendung des Replacement- Selection-Sortierverfahrens der Schlüssel enthält.
7. Ein System gemäß Anspruch 5 oder Anspruch 6, in welchem der Cache-Speicher nach der LRU-Regel verwaltet wird.
8. Ein System gemäß jedem der Ansprüche 5 bis 7, welches desweiteren Mittel für die vorläufige Umformatierung von Schlüsselelementen der Sätze enthält, zur Identifizierung der während des Sortierens verwendeten Schlüssel, um den Vergleich zwischen den Schlüsseln zu vereinfachen.
DE86113664T 1985-11-07 1986-10-03 Sortierverfahren in einem hierarchisch geordneten Speichersystem. Expired - Fee Related DE3688581T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/796,034 US4962451A (en) 1985-11-07 1985-11-07 Cache-effective sort string generation method

Publications (2)

Publication Number Publication Date
DE3688581D1 DE3688581D1 (de) 1993-07-22
DE3688581T2 true DE3688581T2 (de) 1993-12-23

Family

ID=25167095

Family Applications (1)

Application Number Title Priority Date Filing Date
DE86113664T Expired - Fee Related DE3688581T2 (de) 1985-11-07 1986-10-03 Sortierverfahren in einem hierarchisch geordneten Speichersystem.

Country Status (4)

Country Link
US (1) US4962451A (de)
EP (1) EP0221358B1 (de)
JP (1) JPS62113234A (de)
DE (1) DE3688581T2 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01248232A (ja) * 1988-03-15 1989-10-03 Internatl Business Mach Corp <Ibm> レコード列組合せ方法
US5418965A (en) * 1988-06-24 1995-05-23 Mahar; Robert C. Subroutine-type computer program for enhancing the speed of data processing in data management programs systems
US6092153A (en) * 1988-11-14 2000-07-18 Lass; Stanley Edwin Subsettable top level cache
JPH02178730A (ja) * 1988-12-28 1990-07-11 Toshiba Corp 分割法を用いた内部ソート方式
US5224217A (en) * 1988-12-30 1993-06-29 Saied Zangenehpour Computer system which uses a least-recently-used algorithm for manipulating data tags when performing cache replacement
JPH0776906B2 (ja) * 1989-06-30 1995-08-16 ディジタル イクイプメント コーポレーション 分類加速装置のための速度及びメモリー制御
EP0411788A3 (en) * 1989-08-02 1992-08-05 International Business Machines Corporation External sorting using virtual storage
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
US5355478A (en) * 1991-12-23 1994-10-11 International Business Machines Corporation Method for avoiding cache misses during external tournament tree replacement sorting procedures
JP3238939B2 (ja) * 1992-03-25 2001-12-17 優 喜連川 ソート処理装置
US5563997A (en) * 1992-11-16 1996-10-08 Canon Kabushiki Kaisha Method and apparatus for sorting records into a list box in a graphic user interface
US5539893A (en) * 1993-11-16 1996-07-23 Unisys Corporation Multi-level memory and methods for allocating data most likely to be used to the fastest memory level
DE4422208A1 (de) * 1993-11-19 1995-06-01 Hewlett Packard Co Verfahren und Vorrichtung zum stabilen Partitionieren einer sequentiellen Liste in einer Raum-adaptiven Weise
DE4438652A1 (de) * 1993-11-19 1995-05-24 Hewlett Packard Co Verfahren und Vorrichtung zum stabilen Sortieren oder Mischen sequentieller Listen in einer raumadaptiven Weise
US5487166A (en) * 1994-09-19 1996-01-23 Amdahl Corporation Computer with two-dimensional merge tournament sort using offset-value coding
JP3518034B2 (ja) * 1995-03-30 2004-04-12 三菱電機株式会社 ソート方法並びにソート処理装置並びにデータ処理装置
US6311184B1 (en) * 1995-10-06 2001-10-30 International Business Machines Corporation Sort and merge functions with input and output procedures
US7051159B2 (en) * 2003-06-30 2006-05-23 International Business Machines Corporation Method and system for cache data fetch operations
US8839215B2 (en) 2010-07-19 2014-09-16 International Business Machines Corporation String cache file for optimizing memory usage in a java virtual machine
DE112012005271B4 (de) * 2011-12-16 2023-06-15 International Business Machines Corporation Bandlaufwerksystem-Server
US10853267B2 (en) * 2016-06-14 2020-12-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4210961B1 (en) * 1971-10-08 1996-10-01 Syncsort Inc Sorting system
US3713107A (en) * 1972-04-03 1973-01-23 Ncr Firmware sort processor system
US3845474A (en) * 1973-11-05 1974-10-29 Honeywell Inf Systems Cache store clearing operation for multiprocessor mode
AR221676A1 (es) * 1974-07-12 1981-03-13 Bioresearch Sas Procedimiento para la preparacion de sales estables sulfonicas y/o sulfuricas de la s-adenosil-l-metionina,particularmente utiles como donadores especificos de metilo para las reacciones bioquimicas de transferencia del grupo ch3;asi como tambien las reacciones fundamentales en el metabolismo lipilico,protilico y glucidico
US4037205A (en) * 1975-05-19 1977-07-19 Sperry Rand Corporation Digital memory with data manipulation capabilities
US4077059A (en) * 1975-12-18 1978-02-28 Cordi Vincent A Multi-processing system with a hierarchial memory having journaling and copyback
US4031520A (en) * 1975-12-22 1977-06-21 The Singer Company Multistage sorter having pushdown stacks with concurrent access to interstage buffer memories for arranging an input list into numerical order
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
US4257097A (en) * 1978-12-11 1981-03-17 Bell Telephone Laboratories, Incorporated Multiprocessor system with demand assignable program paging stores
US4467411A (en) * 1981-03-06 1984-08-21 International Business Machines Corporation Scheduling device operations in a buffered peripheral subsystem
US4510567A (en) * 1981-05-18 1985-04-09 International Business Machines Corp. Qualifying and sorting file record data
JPH0666050B2 (ja) * 1984-08-03 1994-08-24 日本電信電話株式会社 ソート処理方法

Also Published As

Publication number Publication date
DE3688581D1 (de) 1993-07-22
EP0221358B1 (de) 1993-06-16
EP0221358A3 (en) 1990-04-25
US4962451A (en) 1990-10-09
EP0221358A2 (de) 1987-05-13
JPS62113234A (ja) 1987-05-25

Similar Documents

Publication Publication Date Title
DE3688581T2 (de) Sortierverfahren in einem hierarchisch geordneten Speichersystem.
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE68911398T2 (de) Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem.
DE3780807T2 (de) Verfahren zum schnellen oeffnen von mit pfadnamen identifizierten plattendateien.
DE68926347T2 (de) Speicherstruktur und verwendung
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE3151745C2 (de)
DE4410060B4 (de) Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
DE69533193T2 (de) Paralleles verarbeitungssystem zum durchlaufen einer datenbank
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69130793T2 (de) Datenbank Suchprozessor
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE69132356T2 (de) Verfahren und Gerät zur Zeigerkompression in strukturierten Datenbanken
DE69627751T2 (de) Verfahren und System zur Zuordnung von Speicherplätzen an Texturabbildungsdaten
DE69702568T2 (de) Mehrstufiges Cache-System für Massenspeichereinrichtung und Verfahren zum Einrichten eines solchen Systems
DE60131864T2 (de) Speichern von stapeloperanden in registern
DE69229667T2 (de) Simulierte cachespeicher-assoziativität
DE112011105774B4 (de) Verschiebbarer Speicher, der In-Memory-Datenstrukturen unterstützt
DE602004008911T2 (de) Verfahren und system um die reihenfolge von paketen mit hilfe eines zwischenspeichers zu gewährleisten
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
DE69130942T2 (de) Vorrichtung zur Erhöhung der Leistung eines Adressenübersetzungspuffers
DE60211452T2 (de) DMA-Übertragung von Daten und Prüfinformation zu und von einem Datenspeicherungsgerät
DE69324967T2 (de) Cache-Speicherfehlgriffvorhersageverfahren und -vorrichtung für einen nach Seiten organisierten Hauptspeicher in einem Datenverarbeitungssystem
DE69032828T2 (de) Sortierbeschleuniger, der einen in beide Richtungen arbeitenden Sortierer als Mischer verwendet

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee