DE2031194A1 - Verfahren zum Suchen in einem ver dichteten Index mit mehreren Ebenen - Google Patents

Verfahren zum Suchen in einem ver dichteten Index mit mehreren Ebenen

Info

Publication number
DE2031194A1
DE2031194A1 DE19702031194 DE2031194A DE2031194A1 DE 2031194 A1 DE2031194 A1 DE 2031194A1 DE 19702031194 DE19702031194 DE 19702031194 DE 2031194 A DE2031194 A DE 2031194A DE 2031194 A1 DE2031194 A1 DE 2031194A1
Authority
DE
Germany
Prior art keywords
block
level
search
index
blocks
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.)
Withdrawn
Application number
DE19702031194
Other languages
English (en)
Inventor
Lucas Donald Joseph Poughkeepsie Steiger«alt George Franklin Hyde Park NY Loizides Edward (V St A )
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 DE2031194A1 publication Critical patent/DE2031194A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • 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/99933Query processing, i.e. searching

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

IBM Deutschland Internationale Büro-Maschinen Gesellschaft mbH
Böblingen, den 15. Juni 1970 gg-sc ·
Anmelderin: International Business Machines
Corporation, Armonk N. Y. 10
Amtliches Aktenzeichen: Neuanmeldung
Aktenzeichen der Anmelderin: Docket PO 969
Verfahren zum Suchen in einem verdichteten Index mit mehreren Ebenen
Die Erfindung betrifft ein Verfahren zum Suchen in einem verdichteten Index mit mehreren Ebenen.
In vielen Gebieten des täglichen Lebens fallen heute immer mehr Informationen an, die nicht nur unmittelbar verarbeitet werden, sondern zum grossen Teil auch zur späteren Wiederverwendung zur Verfügung bleiben sollten. Die Verarbeitung, Speicherung und Wiederauffindung von Informationen wird durch die modernen Datenverarbeitungsanlagen erheblich erleichtert.
009882/199A
Es sind schon verschiedene Verfahren bekannt geworden, durch die man mit Hilfe von Datenverarbeitungsanlagen Indexe für gespeicherte Daten herstellen kann, oder die für das Wiederauffinden von Daten mit Hilfe solcher Indexe geeignet sind. Den Stand der Technik auf diesem Gebiet geben z. B. die amerikanischen Patente Nr. 3. 408. 631, 3.366.918, 3.344.405, 3. 344. 402, 3. 343. 134, 3. 315. 233 und 3. 242.470 wieder.
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren zum Wiederaufsuchen von Informationen anzugeben, das insbesondere für mehrstufige verdichtete Indexe geeignet ist.
Weiterhin ist es erwünscht, dass das anzugebende Suchverfahren möglichst auch die folgenden Eigenschaften hat:
a) In jeder Ebene soll nur ein Block durchsucht werden müssen;
Docket PO 969 029 009882/1994
wahlweise soll aber auch auf einer beliebigen Ebene mit • einem sequentiellen Suchvorgang durch alle Blöcke begonnen werden können, bie ein passender gefunden ist, um dann in je einem Block pro Ebene weiterzusuchen;
b) es soll ein unverdichtetes Schlüsselwort als Suchargument verwendet werden können;
c) wenn das Suchargument, noch nicht als Schlüssel im Index vorhanden ist, soll durch den Suchvorgang der richtige Platz für seine Unterbringung aufgefunden werden können;
d) Fehler, die durch falschen Vergleich auf einer Ebene entstanden ' , sein könnten, sollen durch Neueinstellung der Vergleichsbedingungen beim Uebergang zum nächsten Block eliminiert werden können.
Ein Ausfülxrungsbeispiel der Erfindung wird zusammen mit einigen .Erläuterungen der Grundlagen anhand von Zeichnungen im folgenden beschrieben. .
PO 9-69-029 - 3 - ...
BAD ORIGINAL
009882/1994
Liste der Zeichnungen :
Fig. IA Unverdichteter Index einer hohen Ebene;
Fig. IB Der entsprechende verdichtete Index einer
hohen Ebene;
Fig. 2A + B Pufferspeicher mit entsprechenden Eingangs- und
Ausgangsschaltungen, in welchem ein unverdichteter und der entsprechende verdichtete Index einer hohen Ebene gespeichert sind;.
Fig. 3 Takt- und Ablaufsteuerung;
Fig. 4A Taktierung während des Erzeugungs>vorganges;
· ■' ■
Fig. 4B Taktierung während des Suchvorganges;
Fig. 5A Format eines verdichteten Indexblockes einer
niederen Ebene;·
Fig. 5B Format eines verdichteten Indexblockes einer
hohen Ebene;
PO 9-69-029 . - 4 -
009882/1994
* 203119 A
Fig. 6 Struktur eines verdichteten Index mit mehreren
Ebenen; .
Fig. 7A Ueberblick eines Datenverarbeitungssystems "
zur Durchführung des Suchve rf ahrens;
Fig. 7B + C Tabellen, die zur Durchführung des Verfahrens
im System nach Fig. 7A gespeichert sind;
Fig. 8 Schnittstellen-Steuerung und Befehlsdecodierer
aus denn, in Fig. 7A dargestellten Datenverarbeitungs sy stern;
Fig. 9A + B Taktsteuerung für den Suchvorgang;
Fig. 10 + 11 Steuerungen für den Erzeugungs- und Suchvorgang
für einen verdichteten Index;
Fig. 12 + 13 Schaltungen für den Suchvorgang in einem ver
dichteten Index;
Fig. '14A--.G Ablaufdiagramme für ein Ausführungsbeispiel
des erfindungsgemassen Suchverfahrens;
PO 9-69-029 -5~
009882/1994
Fig. 15-19 Ausführungsbeispiel einer1 Einrichtung für das
erfindungsgemässe Suchverfahren in einem Index mit mehreren Ebenen.
Suchvorgang zum Wiederauffinden von Information mit Hilfe eines Index
Für gespeicherte Information kann man einen Index erstellen, d.h. ein Verzeichnis von Kennwörtern oder Schlüsseln mit zugeordneten Adressen, die auf den Speicherplatz verweisen, an dem der betreffende Informätionsblock (Datensatz) steht. Zum Wiederauffinden von Datensätzen, die einen bestimmten Schlüssel enthalten, gibt man diesen Schlüssel als Suchargument vor und vergleicht ihn mit den Einträgen im Index, bis Gleichheit angezeigt wird; in diesem Fall kann man dann die Adresse des gewünschten Datensatzes dem Index entnehmen.
Wenn nun die Kennwörter oder Schlüssel zur Eliminierung von Redundanz verkürzt worden sind, und wenn durch mehrfache Extraktion von Schlüsseln aus der ursprünglichen Gesamtmenge ein hierarchischer Index mit mehreren Ebenen entstanden ist, sind besondere Massnahmen nötig, um den Suchvorgang optimal, d.h. möglichst zeitsparend und wenig aufwendig, durchzuführen. Einzelheiten solcher
PO 9-69-029 - 6 -
009882/1994 bad
Massnahmen werden im Rahmen eines Ausführungsbeispiels der Erfindung'weiter hinten beschrieben.
Zur allgemeinen Orientierung sei hier folgendes vorausgeschickt: Für einen Suchvorgang nach dem Prinzip der Erfindung gibt es zwei Möglichkeiten. Erstens kann man den Vergleich des Sucharguments mit den Index-Schlüsseln ajn der Spitze des Index beginnen, d.h. in einer Ebene, die nur einen Block von Adressen und Hinweis schlüsseln enthält. Aus diesem Block heraus wird schliesslich auf einen Block in der nächsttieferen Ebene verwiesen, der dann ebenso abgesucht wird und zu einem weiteren Block in einer noch tieferen Ebene führt, bis schliesslich der gewünschte Datensatz erreicht ist.
Also braucht bei diesem Mehrebenen-Suchvorgang nur ein Block piro Ebene abgesucht zu werden.
Die zweite Möglichkeit ist, den Suchvorgang in irgendeiner Ebene mit mehreren Blöcken zu beginnen, und nacheinander verschiedene Blöcke zu durchsuchen, bis man denjenigen gefunden hat, der zum Suchargument passt. Danach kann man dann zum Datensatz zugreifen, wenn der Suchvorgang in der tiefsten oder in der einzigen Ebene stattfand. Andernfalls, wenn also eine höhere Ebene vorliegt, braucht man vom Auffinden des passenden Blockes an nur noch von Ebene zu Ebene
PO 9-69-029 : - 7 -
■■'■■.-. BAD ORIGINAL
009882/199A
ti eier gehend je einen Block pro Ebene zu durchsuchen (Mehrebenensuche wie oben beschrieben). Der Suchvorgang in einer Ebene wird entweder vom ersten Block beginnend sequentiell durchgeführt, oder von der Mitte des Blocks aus binär, also je nach Vergleichsergebnis jeweils wieder in die Mitte der einen oder anderen Hälfte springend.
Die Struktur des beschriebenen mehrstufigen Index ermöglicht es, fe dass mit dem Suchvorgang auch die richtige Stelle für ein Suchargument gefunden wird, das eigentlich noch nicht im Index enthalten ist und evtl. nach dem Suchvorgang an dieser richtigen Stelle neu eingetragen werden soll. Die Verwendung von Scblüsselpaaren ■ ermöglicht auch eine einfache Handhabung der Situation, wenn der Platz des Suchargumentes zwischen zwei existierenden Blöcken liegt.
Durch die Tatsache, dass auf jeder Ebene bzw. mit jedem Block der fc Vergleich neu begonnen wird, werden Fehler eliminiert, die sich
sonst evtl. akkumulieren könnten.
Die'verschiedenen Suchmöglichkeiten - Mchro.benensuche und Einzel ebenensuche, sequentiell oder binär - werden im folgenden im einzelnen beschrieben; vorher wird jedoch das Prinzip des verdichteten Index mit mehreren Ebenen ausführlich erläutert.
PO 9-69-029 - B -
009882/1994 ' „ original
PRINZIP "DES VERDICHTETEN INDEX MIT MEHREREN EBENEN
Der Index, welcher mit dem zu beschreibenden Verfahren
abgesucht werden soll, ist ein verdichteter Index mit mehreren Ebenen, z.B. den Ebenen Ll bis L4, wie es in Fig. 6 gezeigt ist. Sie werden zum Wiederauffinden von Informationen aus der ■
Datenebene LO verwendet. Der Index mit mehreren Ebenen umfasst den verdichteten Index der niedrigen Ebene Ll, und die verdichteten Indexe der höheren Ebenen LZ, L3 und L4. Die fünfte Ebene ist nicht verdichtet und kann eine Eintragung in einem Katalog eines gewöhnlichen Datenverarbeitungssystems sein ; diese Eintragung umfasst den Namen der Datenebene LO und eine Hinweisadresse R , welche in der Ebene L4 den ersten Indexblock 4-1 lokalisiert.
Die Datenebene LO umfasst eine grössere Anzahl von Datenblöcken, von denen jeder durch ein Kennwort, im folgenden Text und in den j
Zeichnungen als "unverdichteter Schlüssel" oder abgekürzt als "UK" bezeichnet, indexiert (gekennzeichnet) ist. Die Datenebene LO ·
Umfasst die Datenblöcke mit den Kennwörtern UK(A1) bis UK ( (α) ).
. ■ ■ ■ . 1 ^n
Die Wahl des Schlüssels (Kennwortes) für einen Block betrifft nicht diese Erfindung. Es kann irgendein Feld aus jedem Block zur
PO 9-69-029 - 9 -
1 'BAD ORfGfNAL
009882/1994
Indexicrung (Kennzeichnung) des gesamten Blocks gewählt werden. Der Schlüssel (das Kennwort) kann beispielsweise ein Name, eine Personalnummer oder eine Abteilungsnummer sein. Die Blöcke der Datenebene LO können beliebig gespeichert werden, 'beispielsweise auf einer Magnetplatte, einer Magnettrommel oder auf einem Magnetstreifenspeicher. Es ist nicht notwendig, dass für die Speicherplätze der Datenblöcke bzw. Indexblöcke der Ebenen L0-L5 ^ eine strenge Ordnung eingehalten wird. Jeder Block kann dort
gespeichert werden, wo eine Speicherstelle vorhanden ist, solaiige die Blockadressen korrekt verwendet werden. Es ist nur erforderlich, dass die Vorrichtung schnell einen Block auffinden kann, wenn ihr die entsprechende Adresse gegeben wird.
Die Blöcke der Datenebene LO (Fig. 6) sind gcmSss einer sortierten Reihenfolge ihrer UK's - UK(A ) bis UK (@ ) - dargestellt. Die fc Struktur des zu erzeugenden Index mit verschiedenen Ebenen
basiert auch auf dieser sortierten Darstellung. Die sortierte Reihenfolge hat jedoch keine räumliche Beziehung zu den Stellen der Speichervorrichtungen, an denen die Daten, bzw. Datenblöcke, gespeichert sind. Diese Speicherungsform eines Index hat den Vorteil, dass ein im Index nicht abgeänderter Datenblock nicht Verschoben werden muss, wenn neue Datenblöcke irgendwo in die
sortierte Reihenfolge eingefügt werden.
• 009882 /199 A =. bad original
PO 9-69-029 - 10 -
Es ist empfehlenswert, dass die höchste Indexcbenc nur aus einem einzigen Block besteht, Das isl jedoch keine unbedingte Voraussetzung,
Unter Verwendung dieser Indexstruktur ist bei einem Suchvorgang nach einem Datenblock der LO-Ebene nur der Zugriff zu einem Block per Jndexcbene erforderlich, ohne dass die Blockanzahl auf der Ebene berücksichtigt werden muss. In der Fig. 6 kann jeder Block der Ebene LO beim sechsten Blockz\igriff nach fünf Blockzugriffen in den Ebenen L5, L4, L3, L2 und Ll direkt wieder aufgefunden werden. Die Anzahl dieser Zugriffe hängt nicht von der Blockanzahl der verschiedenen Ebenen, auch nicht von der Blockanzahl der Ebene LO, ab.
Der Speicherplatz des Anfangs jedes Indexblocks wird'durch eine Hinweisadresse (Zeiger) R mit zwei Tiefzahlen lokalisiert. Die erste Tiefzahl bezieht sich auf die Ebene des adressierten Blocks und die zweite Tiefzahl bezieht sich auf die Stelle des adressierten Blocks in der betreffenden Ebene; Die Hinweisadressen R bis' R in der Ebene L4 lokalisieren die entsprechenden Blöcke 3-1 bis 3-3 in der Ebene L3. Ebenso lokalisiert jede der Hinweis-' adressen R »bis R in der Ebene L3 den entsprechenden Block der Blöcke 2-1 bis 2-9 in der Ebene L2. Aehnlich lokalisieren
PO 9-69-.029 « - 11 >
009882/1994
die Hinweisadresscn R. bis R jeweils die entsprechenden
Blöcke 1-1 bis 1-27 der Ebene Ll. Schliesslich lokalisieren die Hinweisadressen RA1 bis R(§) jeweils einen entsprechenden Block in der Datenebene LO.
In der Ebene Ll hat jedes verdichtete Kennwort, im folgenden Text und in den Zeichnungen auch als "verdichteter Schlüssel" oder abgekürzt als "CK" bezeichnet, eine zugefügte Hinweisadresse.
So ist dem ersten CK (A ) die Hinweisadresse R», zugefügt, die den ersten Block in der Ebene LO lokalisiert. Jeder Block in der Ebene Ll ist nach dem weiter vorn kurz beschriebenen Verfahren erzeugt.
Eine sehr umfangreiche Datenebene LO kann nach dem Indexiervingsverfahren der Fig. 6 gehandhabt werden. Demnach erlaubt der Index eine grosse Schlüssel-Anzahl zur Darstellung einer entsprechenden Blockanzahl in der Ebene LO. In den Tabellen B und C ist beispielsweise ein verdichteter Index dargestellt, in dem 27000 verschiedene Datenblöcke in der Ebene LO vertreten sind, während jeder Block in der Ebene Ll beispielsweise 1000 CK's umfasst. In der Tabelle A ist der unverdichtete Index ■dargestellt, von dem der verdichtete Index der. Tabellen B und C abgeleitet ist. Ein anderes Beispiel : Wenn jeder Indexblock in
009882/199 4 bad original
PO 9-69-029 - 12 - ■
den Ebenen Ll bis L4 (Fig.6.) 35 Hinweisadressen per Block hat, indexieren die vier Indexebenen bis zu 1, 500; 625 Datenblöcke in der Ebene LO. Daher ist es möglich, wahlweise einen der 1, 500, 625 Datenblöcke mit fünf Maschinenadressierungen innerhalb von weniger als einer Sekunde wiederzufinden. Dieses ist bei Verwendung von sieben getrennten Randomspeichern möglich, von denen jeder eine mittlere Zugriffszeit von weniger als 200 Millisekunden hat.
Allgemein : Wenn bei j Indexebenen jeder Indexblock C Kennwörter enthält, können in der Datenebene LO insgesamt C Datenblöcke untergebracht werden. '■'..'."
Beispiele mit vier Indexebenen (j = 4) :
1. Bei Verwendung von 100 Hinweisadressen pro Block : 1,010,101 Indexblöcke in den vier Ebenen können maximal 100, 000,000 Datenblöcke in der Datenebene LO indexieren.
2. Bei Verwendung von 1,000 Hinweisadressen pro Block ; 1,001,001,001 Indexblöcke in den vier Ebenen können maximal
■■'„■■" *■ :
1,000,000, 000,000 Datenbiöcke in der Datenebene LO indexieren.
PO 9-69-029 - 13 -
009882/199A
In beiden Beispielen genügen beim Such-vorgang, der immer in der höchsten Ebene beginnt, fünf Zugriffe, um irgendeinen Datenblock in der Datenebene LO zu adressieren. Wenn verdichtete Schlüssel anstelle von unverdichteten Schlüsseln verwendet . werden, ist entweder die Indexblockanzahl bei gleicher Blocklänge kleiner, oder die Länge der Indcxblöcke ist bei Beibehaltung der gleichen Indexblockanzahl kürzer. Bei einer Verdichtung auf 10% kann im ersten Beispiel entweder die Indexblockanzahl bei Beibe-
haltung der Blocklänge auf 101,011 verringert werden, oder die
Bytelänge der 1, 010, 101 Blöcke kann auf 10% verkürzt werden. Eine ähnliche Verdichtung ist inn zweiten Beispiel möglich : Entweder erhält man unter Beibehaltung der Bytelänge 100, 100, 101 Indexblöcke , oder die Bytelänge wird unter Beibehaltung der 1,001,001,001 Indexblöcke auf 10% verkürzt. Die Tabelle A zeigt einen "unverdichteten Index mit mehreren Ebenen", in diesem Fall mit den vier Ebenen ^ L1-L4, Aus diesem Index ist der in den Tabellen B und C dargestellte
"verdichtete Index mit.mehreren Ebenen" abgeleitet.
PO 9-69-029 - 14 -
BAD OR/GfNAL
009882/1994 AL
TABELLE A
UNVERDICHTETER INDEX MIT MEHREREN EBENEN
Ll L2 -' L3 IA
RL· HA I
RDn
BL UK HA Rl-4 BL UK HA rr R2-4 BL UK HA i
1-1 ti ?A1 2-1 Än Rl-1 3-1 Cn R2-l' R3-l
* Λη I
RAn
I
REn
Bl ' Rl-5 , Di R2~5 Jl
1-2 RF1 Bn Rl-2 Fn R2-2 R
η
R3-2
I I
..hu
I Cl Gi R2-6
1-3 ?C1 I
R_
Cn Rl-3 η R2-3 ■■■ \ R3-3
Cn j RCn Dl. '
►.--._-i
Jl END
//
■/---
Ende des L4
- ?1 2-2 Dn Index i
1-4 Dn El 3-2 Ln
?1 Ml
1-5 « 0N
Fl Fn Pl
.1-6 I Rn
1
F
Gl
8I
Abkürzungen :
Ll - L4 : verschiedene Ebenen BL : Block
0 9 8 8 2/1994 UI^ : »»vordichloler Schlüssel
CK : verdichteter Schlüssel
PQ 9«6?~Ü29 ΙϊΛ ' : Iii»wc:iHfidrcHiie
Jb
TABELLE A (Forts.)
UNVERDICHTETER INDEX MIT MEHREREN EBENEN
Ll · LZ . L3 L4
BL UK HA ,Jl BL UK HA Rl-8 7 Rl-10 ■ BL UK HA BL UK END
~Tr
des L3 Index HA
1-7 G, " RG1 I
RJn
2-3 . Gn Rl-7 3~3 Un R2-7 Ende
■ " I
Gn
I
RGn
R Hl Rl-9 Rl-ll Vl
1-δ- H1 RH1 H
n.
"Xn R2-8
I
Hn
1
RHn
1I Yl -
1-9 Ϊ1 I J· JL V »n R2-9
In RT Jl
2-4
1-10 I
Jn
Jn
K1 Kl
1-11 κ
Kn RKn
Ln Rl-12
11 M1
009882/19 9
TABELLE A (Forts.) UNVERDICHTETERINDEXA/IIT w|;z. . ΟΠΟ 11 Q/
MicHRERENEBENEN 20o I IpH
Ll L2 L3 L4
BL UK HA BL UK HA BL UK ' HA_ BL_ UK HA_
1-13 M1 RM. 2-5 M ■ -R1 ■-,
il ιMl - η 1-13
■ · ·■ N κ .
1-14 Nn R„, Nn R1-14.'
' ' 0I
Nn RNn X
1^15 ?1 1^Ol °n Rl-15
' ' Pl
1-16 P. R. 2-6 P R.
ι χ ιFi η 1-16
1 ' Q,
1^7 ?X RQX On R
I I
X-X7
R,
1-18 R1 R„n R R
η χ— Xo
SX
»"W ?X RSX 2-7 Sn El.19
SR x
1-20T1 Rmv Tn R1-20
1 ' üi
!n_RTn
Vl ?ül ün Rl-21
Il
vx
, , 0 0 9 8 8 2/1994
UNVERDICHTETER INDEX MIT MEHREREN EBENENf
Ll L2 L3 L4
I I
v
• t
BL UK HA BL UK HA BL UK HA BL UK HA
1-22 V1 R.., 2-8 V R1 ,,,
,1 ,Vl η 1-22
1-23 t vil Wn Rl-23
xi I ·
8Wn
xl
1-24 I RX1 \ Rl-24
ι Y
V1 _RXn —-_ ./.—
1-25 I 2-9 Yn
η
Rl-25
?1 I
1-26 Rzi Zn . Rl-26
• t
RZn
h
1-27 β, Rfll " §„ R1
END.
Ende des Ende des
Ll Index L2 Index
009882/1994
TABELLE B
VERDICHTETER INDEX MIT MEHREREN EBENEN
Ll
L2
BL CK HA BL CK(Bn)
CK(Cn)
CK HA
1-1 CK(A1), "2-1 I: CK(B1), Ri~l
. OO , ι.
I
. RAn
, CK(C1),
,00 ,
~.~ _ Ji
Rl-2
Rl-3
1-2 CK(B ),
ι ···
ι
00 ,
?Β1
I
RBn
I
ι
ι
ι
1-3 CK(C1),
I
00
I
RCn
ι
I
■ I
I
1-25
00
RYn
■2-9 CK(Yn), CK(Z1), R
CK(Zn),
CK(6 ),
00
1-25
1-26 1-27
1-26 CK(Z1) , 1-27
00
Zn
00 ' Rf
jti e
88 2/1 9 9.4
TABELLE C
VERDICHTETER INDEX MIT MEHREREN EBENEN
L3
BL CK HA
3-1 CK(Cn), CK(D1), R2-CK(Fft),
. CK(In), OO
-3 L4
BL CK
4-1 CK(In), CK(J1),
CK(Rn), CK(S1) ,
3-3 CK(Un), CK(V1),
CK(Xn), CK(Y1),
CK(@ ), 00 ,
@J r 00
HA
mm μ —.
R3' R
88 2/1994
In der Tabelle A, Spalte Ll, sind die UK-Blöcke des Jndex der untersten Ebene Ll dargestellt, die aus den Schlüsselfeldern der Informationsblöcke in der Datenebene LO entnommen sind.
Die Informationsblöcke der Datenebene LO müssen nicht in einer -
bestimmten Reihenfolge angeordnet sein } sie können an beliebigen Speicherstelien gespeichert sein. Die Schlüssel sind aus den Feldern in den Informationsblöcken der Ebene LO entnommen, die zur Indexierung benutzt werden sollen. Nach Erzeugung der Schlüssel der LO-Blöcke werden, diese durch bestimmte ,Programmschritte oder durch als bekannt vorausgesetzte Schaltungs-Vorrichtungen sortiert und geblockt (vergl. Spalte Ll). Jetzt sind die UK's und ihre Blöcke in sortierter Reihenfolge in der Ebene Ll angeordnet, und sie sind so gespeichert, dass sie als Eingabe für den erfindungsgemilssen Erzeugungsvorgang dienen können.
Diese Blöcke können in einer Reihenfolge - beispielsweise wie die \
Blöcke 1-1 bis 1-27 der Tabelle A, Spalte Ll - auf einem Magnetband gespeichert sein. Aus diesen UK-Blöcken werden erfindungsgemöss jeweils die in der Spalte L2 der Tabelle A dargestellten Blöcke 2-1 bis 2-9 abgeleitet. Aus den UK-Blöckeji der Spalte L2 werden die UK-Blöckp der Spalte L3 abgeleitet, uiw., bis die höchste Ebene L4 abgeleitet ist, die nur einen einzigen UK-Block umfasst.
PO 9-69-029 - 21 - .
009882/1994
Demgemüss wird jeweils eine Ebene von UK-Blöcken zur Ableitung der nächsthöheren UK-Blockebene verwendet. Ausserdcm werden während der Ableitung der nächsthöheren UK-Blockebene die Schlüssel der laufenden UK-Ebene.verdichtet.
Jedes Blockende der Spalte Ll1 Tabelle A, ist durch eine unterbrochene Linie (-----) gekennzeichnet j einige dieser unterbrochenen fc Linien haben einen oder mehrere Querstriche (/), die die Beziehung,
zu Grenzen in höheren Ebenen kennzeichnen. Die Blockgrenzen
der Ebene LE (Tabelle A) sind durch / , die der Ebene L3
durch ----//- , und die der Ebene L4 durch, ///___ gekennzeichnet. Die Andeutung von Grenzen der höheren Ebenen in der Spalte Ll soll die Orientierung erleichtern.
Die UK's, die jeweils an den Grenzen liegen, sind bei der Erzeugung P der verdichteten Schlüssel einer höheren Ebene von Bedeutung. \
Sie werden "Grenz-UK's" genannt. Demnach ist jedes Blockende durch ein Paar örenzwUK's gekennzeichnet. , j
Die UK-Eeihenfolge der zweiten Ebene 14 (Spalte L2 iii deib Tabelle A|
umfasst alle Grenzi-UK's der Blocfcreiheriiolge aus der Ebene 1*1, '
PO 9-69-Q29 . . - 22.„ ;
QQ9882/1994
Die UK-Folge der dritten Ebene L3 (Spalte L3, Tabelle A) umfasst jeweils das letzte UK-Paar aus jedem UK-Block der Folge der Ebene L2, Die UK-Folge der letzten Ebene L4 umfasst jeweils das letzte UK-Paar aus jedem UK-Block der Folge der Eben« JL3.
Bestimmte Grenz-UK's aus der Ebene Ll sind jeweils das letzte UIC-Paar am Ende eines Blocks in den folgenden höheren Ebenen. Demnach kennzeichnet jede dritte Grenze der Ebene Ll ein Paar Grenz-ÜK's, die zur Beendung eines Indexblocks der Ebene L2 verwendet werden. Jede neunte Grenze der Ebene Ll kennzeichnet Grenz-UK's, die zur Beendung eines Indexblocks der Ebene L3 verwendet werden. Die letzte (die 27.) Grenze der Ebene Ll kenn^ zeichnet ein Grenz-UK, das zur Beendung des Blocks der Indexebene L4 verwendet wird. Auf diese Weise steht der Grenz-UK, der am Ende des Jndexblocks der höchsten. Ebene steht, auch am Ende. des letzten Indexblocks aller anderen ''hohen Ebenen" (über Ll), und j?r stellt ebenfalls den letzten Grenz-UK der niedrigen Ebene H dar, .
In der Tabelle A wird vorausgesetzt, dass ein Indexblock in jeder hohen Ebene (L2 bis L4) sechs UK's hat. Aus jedem UK-Paar einer hohen Ebene und einer Hinweisadresse werden zwei entsprechende CK's mit der gleichen Hinweisadresse erzeugt, wie in Tabelle B und C gezeigt ist.
009882/1994
In der Praxis kann eine grosso Anzahl llinweisadresscn, jede für ein CK-Paar, in jedem Block vorgesehen sein. Die Blocklänge wird in der Praxis nach Bedarf bestimmt, und sie hängt von dem für den Index mit mehreren Ebenen vorgesehenen Speichergerät und von der erforderlichen7Suchgeschwindigkeit ab.
Die Länge der komprimierten Indexblöcke ist der Suchgeschwindigkeit direkt proportional, da jeder Block von Anfang an abgesucht wird. Je kürzer ein Block, desto kürzer ist' die Suchzeit, die für den Block benötigt wird. Nur selten kommt es vor, dass der Suchvorgang bis zum Ende des Blocks durchgeführt wird, da der Suchvorgang beendet ist, sobald das Suchargument in Bezug auf einen verdichteten Schlü'ssel im Block "niedrig" ist. Die durchschnittliche Suchzeit für einen Block ist die Zeit, die zur Abtastung eines halben Blocks notwendig ist.
Die Blockanzahl, die mit einem Suchargument abgefragt wird, ist im allgemeinen der Anzahl der Ebenen des Index gleich. Demnach ist die Suchgeschwindigkeit von der Blockanzahl in einer bestimmten Ebene unabhängig. Andere Faktoren bei der Bestimmung der praktischen Grosse der Blöcke sind z.B. der Wirkungsgrad bei der Ausnutzung des Speicherplatzes in bestimmten Speicher-Einheiten, in denen die Blöcke gespeichert werden, sowie deren Zugriffszeit.
0 0 9 8 8 2/1994
Es ist ein Sonderfall in der Tabelle A, dass die Blöcke in allen Ebenen gleiche Länge haben. Die Blocklänge kann nach der CK-Anzahi per Block durch C , C ... C. in den entsprechenden
1 c j
Ebenen 1, 2 ... j angegeben sein, wobei j die höchste Ebene kenn-' zeichnet. C/2 gibt die Anzahl, der Hinweisadressen in einem Block einer höheren Ebene an (die höheren Ebenen beginnen bei der zweiten Ebene). C/2 gibt ausserdem die Zahl der Blöcke der nächstniedrigeren Ebene an, die durch jenen Block index.ie.rt sind. C ist die Zahl der Hinweisadressen in einem Block der Ebene Ll.
K , K ... K. geben die Blockanzahl in den durch die Tiefzahlen 1 2 j
angegebenen Ebenen an. Die Blockanzahl K nimmt exponentiell umgekehrt proportional zur Zahl der Ebenen ab. Demnach beträgt die Blockgesamtzahl im Index K + K_ + ... +K.. Diese Zahlenreihe
Ic. )
nimmt von K bis K. ab. Auf der niedrigsten Ebene Ll wird nur ein
CK pro Hinweisadresse verwendet und Kn = K · C . f
In einem Spezialfall, in dem die Hinweisadressenanzahl per Block die. gleich auf allen Indexehenen ist, und ausserdem K. - 1 ist, folgt :
R = K/K, = K,/k' = ... K. , . Dieser Sonderfall ist in der Tabelle A Cr 1 1 2 j-1
dargestellt. Il stellt die Gesamtzahl der Datenblöcke auf der Ebene LO dar.
BAD ORIGiNAu PO 9-69-029 - 25 - -
009882/Ί994
In den Tabellen B und C ist der aus dem unverdichteten Index mit mehreren Ebenen abgeleitete, verdichtete Index mit mehreren Ebenen dargestellt. Der Index der Tabellen B und C hat die gleiche Blockanzahl wie der der Tabelle' A, die Blocklänge jedoch ist durch die Verdichtung wesentlich kürzer. Es besteht also eine 1:1 Zuordnung zwischen den entsprechenden Blöcken im verdichteten und im unverdichteten Index. *
Suchvorgang auf mehreren Ebenen
Die Fig. 7A gibt eine schematische Uebersicht eines Datenverarbeitungssystems, das für Suchvorgänge mit einem mehrstufigen verdichteten Index eingerichtet ist, wobei die Schritte für eine Suchoperation grösstenteils durch die Indexsteuerungen 516 gesteuert werden. Ein Kanalwerk und/oder eine Zentraleinheit 511 verbinden den Speicher 510 über die Uebertragungs- und Steuerleitungen 51IA mit den Schnittstellen-Steuerungen 530. Die E/A-Steuerung 530 ist mit mehreren E/A-Einheiten, 530C-1, 530C-2 und 530C-3 verbunden. Auf den Speichercinheiten 530C ist der Index mit mehreren Ebenem gespeichert. Es sind mehrere E/A-Einheiten jedoch nur dann erforderlich, wenn die Kapazität einer einzigen Einheit für den Index
Il
nicht ausreicht. Die Bezugnummer 530C bezieht sich also auf alle möglichen E/A-Einheiten, die verwendet werden. Jede Einheit 530C
PO 9-69-029 - 26 -
009882/1994
sollte direkte, blockweise Zugriffsmöglichkeiten haben; es können z.B. eine oder mehrere Magnetplatten-, Magnettrommel- oder Magnetstreifen-Speicher verwendet werden.
Ehe das in'Fig. 14D dargestellte Verfahren begonnen werden kann, müssen in den E/A-Einheiten 53QC die verdichteten Blöcke des Index mit mehreren Ebenen gespeichert sein, und in den Speicher 510 müssen die notwendigen Befehls-Tabellen geladen sein, die von dem Befehls-Decodierer 513 (Fig. 7A) decodiert werden.
(Für einen Suchvorgang in einer Ebene, der weiter hinten beschrieben wird, müssen aus s er dem in den Speicher 510 die Tabellen der Hinweisadressen (Fig. 7C") geladen werden).
Ein Suchargument (SA) ist ein Kennwort oder Schlüsselwort, das sich in der Suchargumenttabclle im Speicher 510 (Fig. 7A) befindet. Nach diesem Suchargument wird in dem Index mit mehreren Ebenen (vergl. Fig. 6) gesucht, welcher in den E/A-Einheiten 530C gespeichert ist. Das Suchargument ist eine alphanumerische Grosse mit beliebigen Zeichen', das Suehargument kann ein unvcrdichtcter Schlüssel (=UK) sein, der bei der Erzeugung des Index mit mehreren Ebenen vorhanden war und verwendet wurde. Ein solcher Schlüssel (Kennwort) wird als ursprünglicher UK bezeichnet. Wenn das Such?» rgutmmt
PO 9-69-029 ' _ 27 - ' BAD ORIGINAL
009882/19 9 A
gehend gespeichert.
Die gespeicherte Hinweisadresse R aus dein obersten Block wird zur Wahl des richtigen Blocks in der nächstniedrigeren Ebene (L3) verwendet. Dieser Block wird genauso gelesen, und seine CK's werden auch so lange mit dem Suchargument verglichen, bis der erste - verglichen mit dem SA - höherwertige CK gefunden wird, fe dessen beigeordnete Hinweisadresse R vorübergehend gespeichert
Ci — X
wird, um mit ihr den richtigen Block der nächstniedrigeren Ebene (L2) aufzufinden. Die CK's dieses Blocks werden mit dem Suchargument so lange verglichen, bis der erste höherwertige CK gefunden ist, worauf dessen beigeordnete Hinweisadresse R. gespeichert wird. Dieser Suchvorgang in dem Block einer jeweils niedrigeren Ebene wird solange fortgesetzt, bis die letzte, gefundene Hinweisadresse einen der Blöcke aus der Datenebene LO wählt. Jeder LO-fc Datenblock hat ein Feld, das den ursprünglichen UK, der bei der
Erzeugung des verdichteten Index verwendet wurde, enthält. Dieses Feld wird aus dem Datenblock entnommen und mit dem Suchargunaent verglichen, um festzustellen, ob der gewonnene Datenblock der gesuchte Block ist. Es handelt sich um den richtigen Block, wenn dessen Schlüsselfeld gleich dem Suchargunaent ist. Wenn keine Gleichheit vorliegt, ist das Suchargument noch nicht in dem verdichteten Index vertreten. In diesem Fall müssen höchstens die
PO 9-69-029 - 29 -
0 09882/1994
bereits gewählten Blöcke auf den verschiedenen Ebenen (je einer pro Ebene) auf den neuesten Stand gebracht werden, falls das Suchar gum ent in den Index aufgenommen werden soll.
Der soeben im Prinzip geschilderte Suchvorgang auf mehreren Ebenen ist in den Fig.. 14A-F in Einzelschritten dargestellt. Die Ablaufdiagramme der Fig.- 14A-C zeigen den Suchvorgang innerhalb eines ausgewählten Blocks; die Schritte für vorher erforderlichen Zugriff zum richtigen Block sind in den Ablaufdiagrammen der Fig. 14D-F gezeigt.
Der Suchvorgang innerhalb eines bereits ausgewählten Blocks (Fig. 14A-C) sei hier als Voraussetzung kurz dargestellt :
Beim Suchvorgang wird ein Suchargument verwendet, das aus einem unver dichteten Schlüssel bestehen kann. Für den Suchvorgang gelten die folgenden Regeln :
1, Die Suche nach einem gegebenen Suchargument beginnt am Anfang eines verdichteten Blockes.%Das K-FeId jedes CK wird dabei, beginnend mit dem werthöchsten Byte, mit dem jeweils anstehenden. Byte dee Sucharguments verglichen.
0098827?994
2. Das P.-Byte jedes CK wird festgehalten. Der P. -Wert wird
auf O gesetzt, um den nächsten verdichteten Schlüssel zu lesen. Das zurückgehaltene P.-Byte wird da& F.· -Byte, wenn das P.-Byte des nächsten verdichteten Schlüssels gelesen wird. Deshalb entspricht die Länge des ersten K-Feldes dem Wert P.-O = P1. Die Länge des K-Feldes hat eine Länge von
P. - P. Bytes, wenn P.> P. , ist.
ι l-l . ι l-l
3. Beginnend mit dem werthöchsten Byte des Sucharguments wird der verdichtete Schlüssel jeweils mit einem Suchargumentbyte verglichen. Wird dabei Gleichheit zwischen'einem Suchargumentbyte und einem K-Byte festgestellt, so wird dieses Suchargumentbyte durch das nächste, wertniedrigere Suchargumentbyte ersetzt. Die Suchargumentbytes werden also nacheinander mit entsprechenden K-Bytes verglichen, wobei jeweils mit den
" werthöchsten K-Bytes jedes CK begonnen wird. Bei einem CK
mit (P. - P. ,)>■! ist das erste verglichene K-Byte P. l + 1 und es wird» wenn A>K, jeweils solange zum nächsten, wertniedrigeren K-Byte übergegangen, bis das K-Byte mit P. ver-· } glichen wird. Bei einem CK mit (P. I P. *)<»1 wird littr; das ■
einzelne, durch P. identifizierte K-IJyte mit dem Suchargument- \ byte verglichen. Dies geschieht auf folgende Weise :
PO 9-69-029 - 31 -
009882/1994
a) Es wird die Zahl E der Suchargumentbytes festgestellt, die sich während des Vergleiches mit den verdichteten Schlüsseln als gleich mit den K-Bytes herausstellen. Wenn A = K ist, wird die Zahl E nur dann urn 1 erhöht, wenn E gleich der Position des gerade verglichenen K-Bytes ist.
b) Wird in einem Vergleich A>K festgestellt, wird die Suche durch Uebergang zum nächsten verdichteten Schlüssel fortgesetzt.
c) Die Suche ist abgeschlossen, sobald bei einem Vergleich das erstemal festgestellt wird, dass A<^K und die Zahl E gleich der Byteposition des K-Bytes ist. Der dabei ermittelte vel'dichtete Schlüssel ergibt die gewünschte Hinweisadresse.
d) Die gefundene Hinweisadresse führt zum Wiederauffinden des zugeordneten Informationsgegenstandes oder zum Auslesen des zutreffenden Blocks aus der nächstniedrigeren. Ebene.
Die in den Fig. 6 und 9A bis 13 gezeigten Einrichtungen führen die eben beschriebenen Suchvorgänge innerhalb eines Blockes durch.
PO 9-69-029 - 32 -
009882/1994
Die Auffindung des richtigen Blockes ist Sache des Suchvorganges in mehreren Ebenen, der in den Fig. 14D-F dargestellt ist und im folgenden hauptsächlich beschrieben werden soll. (Eine weitere Möglichkeit, nämlich die Suche nach dem richtigen Block innerhalb einer Ebene, ist in den Fig. 14D-F auch enthalten, wird aber erst weiter hinten beschrieben.)
Das Suchverfahren auf mehreren Ebenen beginnt am Startschritt 910 (Fig. 14D), welcher automatisch (oder von Hand) erfolgen kann. Dieser Startschritt leitet zum nächsten Schritt 911 über, an welchem der Befehl "Suchargument und erste Hinweisadresse schreiben" aus der Befehlstabelle im Speicher 510.abgerufen wird, und an welchem dieser Befehl über die Sammelleitung 5HA aus der Zentraleinheit an den Befehlsdecodierer 513 übertragen wird. Dieser decodiert die spezielle Bitzusammensetzung dieses Feldes, wodurch die Ausgangsleitung 5131 (Fig. 8) betätigt wird, die weiter zu den Fig. 17 und 19 leitet. Dieser Befehl wird in der Zentraleinheit ausgeführt. Die Zentraleinheit überträgt das Suchargument und die Hinweisadresse (= zu Beginn die Hinweisadresse zum obersten Block) an die Schnittstellen-Steuerung 512.
Schritt 912 wird gleichzeitig ausgeführt, wenn die Leitung 5131 (Fig. 19) zu den Adress-Steuerungen für das Suchargument und für die
PO 9-69-029 - 33 -
009882/1994
Hinweisadressen 667 beaufschlagt wird. Dadurch, wird die Ausgangsleitung 667A dieser Steuerung 667 betätigt,welche den Adressenzähler lla im Niedrig-Speicher 10 (= Speicher für die niedrigen Ebenen) auf die vorbestimmte Adresse des Suchargument-Registers im Niedrig-Speicher 10 (vergl. Fig. 2B) einstellt. Das Hinweisadressenregister liegt im Niedrig-Speicher 10 neben dem Suchargument-Register. ·
Die Leitung 5131 schaltet ebenfalls die Torschaltung 621 (Fig. 17), so dass die aus der Zentraleinheit auf Leitung 51IB übertragenen Suchargument-Bytes über diese Torschaltung 621 auf die Datensammelleitung 621A und von dort aus über ODER-Schaltung 522a (Fig. 15) in die erforderlichen Register im Niedrig-Speicher 10 geleitet werden. Während des Suchargument-Empfangs schaltet Leitung 666A (= "Suchargument-Feld") die Torschaltung 621 (Fig. 17) über die ODER-Schaltung 622. Die Leitung 666A kommt aus · dem Decodierer 666 (Fig. 19)i dieser erkennt aus den Byte-Adressen aus dem Zähler lla des Niedrig-Speichers 10 die Kategorie der adressierten Daten (ob SA-Feld oder HA-FeId). Leitung 666C wird durch den Decodierer 666 beaufschlagt, wfcnn das letzte Suchargument-Byte den'Adressenzähler lla auf die Hinweisadressen-Registerstelle im Niedrig-Speicher 10 einstellt, und die Uebertragung der Hinweisadressenbytes wird fortgesetzt, bis die Uebertragung für die Hinweis-
PO 9-69-029 -34/. 0 0 98 8 2/19Ö4
adresse, die den obersten Block des verdichteten Index im Hinweisadressenregister im Speicher 10 lokalisiert, beendet ist. Schritt 912 ist beendet, wenn das Suchargument-Register und das Hinweisadressen-Register im Niedrig-Speicher 10 geladen sind. :
Schritt 913 liefert ein CE & DE -Signal aus Flipflop 624 (Fig. 17), ■ nachdem die UND-Schaltung 623, welche über die "ZE-Uebertragung-Fertig"-Leitung 512C aus der Schnittstellen-Steuerung 512 durchgeschaltet wurde, den Flipflop 624 eingestellt hat. Dann überträgt die Zentraleinheit ein "Zustand angenommen"-Signal auf Leitung 512D aus der Schnittstellen-Steuerung 512. Dieses Signal stellt den Flipflop 624 zurück, wodurch das CE & DE -Signal nicht mehr gesendet wird. ·
Bei dem Suchvorgang auf mehreren Ebenen wird Schritt 920 nach Schritt 913 durchgeführt, damit die Zentraleinheit als nächstfolgenden Befehl einen Suchbefehl aus der Befehlstabelle im Speicher 510 abruft. Alternative zu Schritt 920 ist Schritt 940, der bei einem ;
Suchvorgang in einer Ebene verwendet wird. Dieser Zweig wird ;
weiter unten beschrieben. . ,
Der Suchbefehl wird in den Befehlsdecodierer 513 geleitet, wodurch
po 9-69-029 _ »35- 009882/1994 . ■
Schritt 922 wird ausgeführt, wenn die Leitung 513J (für den Suchbefehl) die monostabile Kippschaltung 625 (Fig. 17) betätigt. Diese beaufschlagt Leitung 625B (Fig. 13), wodurch der Suchargument-Gleich-Zähler 301 gelöscht wird. Dadurch ist der Suchvorgang im nächsten Block von den Suchvorgangserg.eb.nisgen aller früheren Blöcke unabhängig. Er ist nur von der Hinweisadresse des laufenden Blockes abhängig. .
Es folgt Schritt 923. Bei diesem beginnt das Lesen des adressierten Blocks. Bei DlO verzweigt das Programm zu den Schritten der Fig. 1"4A, damit das Suchargument mit den Bytes in diesem Block verglichen wird (wie oben kurz erläutert). Wenn Schritt 844 in Fig. 14A erreicht ist, betätigt das in das Ebenenregister 268 eingegebene Byte die betreffende Ausgangsleitung (für die hohe Ebene) 268A (Fig. 18).
Bei· Schritt 866 (Fig. 14B) wird das Blockformat der hohen Ebene gelesen, in welchem bei jeder Hinweisadresse ein zweiter CK steht. Bei Schritt 866 ist der Flipflop 211 (BT) (Fig. 9B) betätigt, um anzuzeigen, dass in dem Vorgang für eine hohe Ebene die UND-Schaltung 209 betätigt wird und dass der Flipflop "P-Zyklus folgt" (213) eingestellt werden soll, damit Schritt 867 ausgeführt werden kann, bei dem das Lesen des zweiten CK's im Blockpaar der hohen Ebene
po 9-49-029 . -37. 009882/1994
vorbereitet wird. Der folgende Schritt 884 steuert das Lesen des zweiten CK's in einem Blockpaar.
Während des Suchvorgangs im obersten Block (oder in jedem anderen Block) wird eine Hinweisadresse gefunden, welche in dem Hinweisadressenregister im Niedrig-Speicher 10 durch Schritte 886-891 (Fig. 14C) gespeichert wird. Diese Hinweisadresse wird sjDäter zur Adressierung des richtigen Blocks in der nächstniedrigeren Ebene des Index verwendet. Schritt 892 (Fig. 14C) zeigt schliesslich an (wenn Flipflop 328 eingestellt ist), dass ein Schlüssel, der verglichen mit dem Suchargument höherwertig ist, gefunden wurde, oder dass (wenn Flipflop 333 eingestellt ist) die Hinweisadresse des letzten Schlüssels (P=O) gelesen wurde, da kein CK in dem Block verglichen mit dem Suchargument höherwertig ist. Schritt 894 zeigt an, dass der Flipflop 331 (= Suchvorgang fertig) in Fig. 13 eingestellt ist. Schritt 895 wird durch UND-Schaltung 336 ausgeführt, welche ein Ausgangs signal (zur allgemeinen Rückstellung) liefert, durch welches beim Austritt ClO zum Schritt 930 (Fig. 14D) verzweigt wird. Schritt 930 stellt fest, ob der laufende Befehl ein Suchbefehl ist. Das Verfahren muss zu diesem Zeitpunkt zwischen zwei Möglichkeiten wählen. ·
Bei einem Suchbefehl leitet Schritt 930 zu Schritt 931, welcher die
Po 9-69-029 -38_- 009882/1994
laufende Ebene gemäss dem Signal auf Leitung 668A (für die hohe Ebene) oder gemäss dem Signal auf Leitung 268B (für die niedere Ebene) an die UND-Schaltung 642, bzw. an die UND-Schaltung 644 (Fig. 18) bestimmt. Da es sich zu Beginn um eine hohe Ebene handelt, wird zunächst Leitung 268A beaufschlagt.
Bei Schritt 921 wird die UND-Schaltung 642 geschaltet, wodurch die monostabile Kippschaltung 643 angestossen wird, welche den Flipflop 626 (Fig. 17) einstellt. Schritt 921 übernimmt dann die oben beschriebene Funktion. Der Zugriff und das Lesen des von der laufenden Hinweisadresse (im Hinweisadressenregister im Niedrig-Speicher 10) adressierten Blocks erfolgt über den Ausgang des Flipflops 626.
Es folgt Schritt 922, und bei DlO wird zu den Schritten der Fig. 14A geleitet, und die Schritte der Fig. 14A, B und C werden wie bereits beschrieben wiederholt, um im laufenden Block nach dem Hinweis auf den richtigen Block der nächstniedrigeren Ebene zu suchen. Diese Hinweisadresse wird (wie zuvor beschrieben) in das Hinweisadressenregister im Niedrig-Speicher 10 übertragen. Dann wird bei ClO (Fig. 14C) zum Schritt 930 (Fig. 14D) geleitet. Da ein Suchbefehl vorhanden ist, wird nochmals Sehritt 931 ausgeführt.
Das zyklische Verfahren Über die Schritte der Fig. 14D, A, B und* C
po 9-69-029 -39- 0Q38S2719B4
läuft \Veiter, und in jedem Zyklus wird der Block in der nächstniedrigeren Ebene des Index festgestellt. Schritt 931 untersucht den Zustand des Ebenenregisters 268 (Fig. 12),- welcher von dem Ebenen-Kennzeichenbyte im zuletzt gelesenen Block bestimmt wird. Dieses Kennzeichen bezieht sich nicht unbedingt auf die Ebene desjenigen Blocks, welcher von der laufenden Hinweisadresse im Hinweisadressenregister des Niedrig-Speichers 10 adressiert werden soll. P Das Ebenenregister 268 zeigt nur nach der Abfühlung eines Blocks
aus der niederen Ebene (Ll) die niedere Ebene für Schritt 931 an, wodurch dieser signalisieren kann, dass der Block der Datenebene • LO durch die laufende Hinweisadresse im Hinwei'sadressenregister des Niedrig-Speichers 10 dargestellt ist.
Dementsprechend läuft das Verfahren zyklisch zwischen Schritt 931 und 921, während der Index mit mehreren Ebenen abgesucht wird. ψ Der Suchvorgang auf mehreren Ebenen ist im wesentlichen beendet,
wenn die Hinweisadresse der Ebene LO gefunden und in das Hinweisadressenregister des Niedrig-Speichers 10 gesetzt wurde. Das wird signalisiert, wenn Schritt 931 eine niedere Ebene anzeigt. Schritt 932 liest die gefundene Hinweisadresse aus dem Niedrig-Speicher in die Zentraleinheit, und zwar so, dass diese den erwünschten Datenblock wiederfinden kann. Dieser kann au£ einer E/A-Einheit gespeichert sein , welche von der E/A-Steuerung 530 nicht adres-
po 9-69-029 -40- ,"009882/1994
siert werden kann. Solch ein Datenblock kann sich beispielsweise am gleichen Kanal auf einer E/A-Einheit mit einer anderen Steuerung oder sogar an einem anderen Kanal befinden, der zur gleichen Zentraleinheit führt oder zu einer anderen Zentraleinheit (die mit der ersten in einem Simultan-Verärbeitungssystem in Verbindung steht). Schritt. 932 wird durchgeführt, wenn die Leitung 268B (für die niedere Ebene) die UND-Schaltung 644 (Fig. 18) betätigt, deren Ausgangs si g3iale" auf Leitung 644A die Steuerung 667 (Fig. 19) schalten, damit die Adresse des Hinweisadressregisters eingegeben wird. Diese Ausgangssignale stellen ausserdem Flipflop 645 (Fig. 18) ein, wodurch die Torschaltung 646 die gefundenen Hinweisadressenbytes auf der Ausgangs-Sammelleitung 14 aus dem Niedrig-Speicher 10 (Fig. 15) über die ODER-Schaltung 647 (Fig. 18) an die Eingangs Sammelleitung 647A und an die Schnittstellen-Steuerung 512 (Fig. 8) leitet, welche die Hinweisadresse an die Zentraleinheit überträgt. Das Ausgangs si gnal auf Leitung 666C des Decodierers 666 zeigt an, wann die Uebertragunr.; das Ende der Hinweisadresse erreicht hat. In diesem Fall betätigt Leitung 666G die UND-Schaltung 648 (Fig. 18), welche ein CE & DE Signal abgibt, das das Ende eines Suchvorganges anzeigt.
Wenn Schritt 933 (Fig. 14D) ein CE & DE -Signal aus Leitung 649A liefert, gibt die Zentraleinheit auf der "Zustand angenommen"-Leitung 512D über die Schnittstellen-Steuerung 512 (Fig. 8) ein
BAD ORIGINAL
po 9-69-029 -41- 009882/199A
Signal zurück. Danach ist es Aufgabe der Zentraleinheit, den Datenblock wieder zu finden und festzustellen, ob der Schlüssel dieses Blocks das Sixchargument ist, oder ob das Suchargument überhaupt nicht in den Index aufgenommen war.
Suchvorgang in einer Ebene
Wie anfangs kurz beschrieben, kann ein Suchvorgang auch in einer. Ebene mit mehreren. Blöcken beginnen, wobei dann meistens zuerst einige Blöcke nacheinander durchsucht werden müssen, bis der "richtige" Block gefunden ist. '
Es gibt folgende Arten von Suchvorgängen für eine Ebene :
1. Sequentieller Suchvorgang durch alle Blöcke einer Ebene.
2. Binärer Suchvorgang in einer Ebene.
3. Kombination von 1. und 2.
In allen drei Fällen wird der Befehl "Suchen eine Ebene" verwendet, die Hinweisadressen für Schritt 911 untex* scheid en sich jedoch. In einem sequentiellen Suchvorgang adressiert die erste Hinweisadresse
PO 9-69-029 - 42 -
009882/1994
im Schritt 911 den ersten Block des Anfangs jener Ebene eines Index mit mehreren Ebenen, die in diesem Fall durchsucht werden soll " (vergl. Fig. 6). Diese betreffende Ebene wird Block für Block solange abgesucht, bis der richtige Schlüssel gefunden ist. welcher an die Zentraleinheit 511 geleitet wird. Jetzt muss die Zentraleinheit diese Hinweisadresse beispielsweise in das Zentraleinheit-Register-1 im Speicher 510 (Fig. 7A) speichern.
Bei einem binären Suchvorgang (Fall 2) benötigt Schritt 911 zunächst die Hinweisadresse für den Mittelblock der Ebene. Bei einem teilweise binären Suchvorgang, dem ein sequentieller Suchvorgang folgt (Teil 3), wird der letzte Block im binären Suchvorgang zur Feststellung der Anfangshinweisadresse und der Anzahl der Blocks, die noch im sequentiellen Teil des Suchvorgangs abgesucht werden müssen, verwendet.
Bei diesen drei Arten eines Suchvorganges innerhalb einer Ebene sind verschiedene Tabellen-Suchprogramme erforderlich. Diese Programmart ist bekannt und wird deshalb hier nicht näher erörtert. Bei dem sequentiellen Suchvorgang in einer Ebene werden die Hinweisadressen in der Hinweisadressentabclle sequentiell mit Hilfe eines Tabellen-Suchprogrammea abgerufen, damit die Hinweisadresse für den nächsten Block in der Ebene abgegeben wird. In dem rfuch-
PO 9-69-029 -43- 0Ö9@S2/1994
Vorgang, dessen erster Teil binär und dessen zweiter Teil sequentiell ist, werden beide Tabellen-Suchprogramme aufgerufen. Das Hinweisadressen-Ergebnis des binären Suchvorgangs wird an den Anfang des sequentiellen Suchvorgangs übertragen.- Die Uebertragung von Parametern aus einem Programm in ein anderes ist allgemein bekannt.
Zu Beginn eines Suchvorgangs in einer Ebene wird zunächst das ™ Tabellen-Suchprogramm der erwünschten Art eingeleitet, wodurch
die richtige Hinweisadresse erlangt wird, und wodurch die Steuer-Einrichtungen 512, 513, 516 und 530 (Fig. 7A) aufgerufen ' werden, die für den Indexsuchvorgang mit den E/A-Einheitcn 530C zuständig sind.
Der Suchvorgang für eine Ebene kann in jeder mehrere Blöcke enthaltenden Ebene eines Index mit mehreren Ebenen (in der höchsten ™ Ebene oder in einer niedrigeren Ebene) durchgeführt werden. Ein ,
Suchvorgang in einer Ebene ist dann fertig, wenn die richtige Hin- " weisadresse innerhalb dieser Ebene gefunden ist.
Der Suchvorgang für eine Ebene kann auch in einer höchsten Spitzen-Ebene mit mehreren Blöcken durchgeführt werden. Also darf auch die höchste Ebene aus mehreren Blöcken bestehen, z.B. wenn eine bestimmte Ebenenzahl in dem Index nicht überschritten werden darf.
PO 9-69-029 - 44
009882/1904
Der blockweise Suchyorgang in einer Ebene erhöht auch die Zuverlässigkeit, da Fehler, die in einer hohen Ebene vorhanden sind, umgangen werden können. Im Falle eines Fehlers kann der blockweise Suchvorgang in einer Ebene einsetzen, die niedriger als die Ebene ist, in welcher der Fehler vorhanden ist. Denn für diesen Vorgang ist keine Information aus früheren Ebenen erforderlich.
Nach Beendung eines blockweisen Suchvorgangs innerhalb einer Ebene, die höher als die niedere Ebene Ll ist, kann der bereits beschriebene Suchvorgang für mehrere Ebenen mit der (im Suchvorgang innerhalb einer Ebene) gefundenen Hinweisadresse eingeleitet werden, um den erwünschten Block der Datenebene LO festzustellen.
Der sequentielle oder binäre Suchvorgang innerhalb einer Ebene ist dann beendet, wenn eine Hinweisadresse zwischen der ersten und der letzten Hinweisadresse ausgelesen wird. Dieses tritt ein, wenn in einem Block ein verdichteter Schlüssel CK (zwischen dem ersten CK und dem letzten CK (P = 0) innerhalb dieses Blockes) einen höheren Vergleichs wert als das Suchargument hat.
Der Vorgang ist komplizierter, wenn gerade die erste oder die letzte Hinweisadresse aus dem Block ausgelesen wurde.
PO 9-69-029 ' -«-
Jeder Indexblock ist so geformt, dass sein letzter CK (P = 0; keine K-Bytes, gehört zur letzten Hinweisadresse im Block) einen höheren Vergleichswert als das Suchargument hat. Bei jedem Suchvorgang wird die letzte Hinweisadresse· eines Blocks in das Hinweisadressenregister im Niedrig-Speicher 10 eingegeben, wenn aus diesem Block sonst keine Hinweisadresse gelesen wurde.
™ Wenn bei einem sequentiellen Suchvorgang die letzte Hinweisadresse.
aus einem Block gelesen wird, muss der Suchvorgang im nächsten Block fortgesetzt werden, um folgendes zu bestimmen : (l) Ob jene letzte Hinweisadresse das Suchargument richtig indexiert hatte, oder (2) ob der Suchvorgang fortgesetzt werden muss, um die richtige Hinweisadresse zu finden.
Bei einem binären Suchvorgang muss, falls die erste oder die Ψ letzte Hinweisadresse aus einem Block gelesen wird, der binäre
Suchvorgang solange fortgesetzt werden, bis (1) die letzte binäre Suchstufe erreicht ist (in diesem Fall ist die letzte Hinweisadresse richtig), oder bis (2) zwei nebeneinandcrliegende Hinweisadressen aus verschiedenen, angrenzenden Blöcken gelesen werden (in diesem Fall muss die Zentraleinheit entscheiden, welche Hinweisadresse richtig ist). In der Fig. 14G sind Fall (2) des letzten Abschnittes und Fall (1) des vorletzten
PO 9-69-029 -46- „ Q g g „ j ; g
Abschnittes dargestellt. Diese Situation tritt ein, wenn der erste CK des nächsten Blockes (N+l) innerhalb der Suchebene einen höheren Vergleichswert als das Suchargument hat. In diesem Fall beendet die Zentraleinheit den Suchvorgang in einer Ebene und speichert zwei Hinweisadressen, und zwar die letzte Hinweisadresse des vorangegangenen Blocks (N) und die erste Hinweisadresse des laufenden Blocks (NHl). Danach können beide Hinweisadressen zur Einleitung eines Suchvorgangs für mehrere Ebenen in den niederen Ebenen verwendet werden, um den entsprechenden Block aus der Datenebene LO wiederzufinden. Ein Richtigkeitsvergleich zwischen Suchargument und dem Schlüsselfeld des wiedergefundenen LO-Datenblocks stellt fest, welche Hinweisadresse die richtige ist. Falls der erste, wiedergefundene L0,-Datenblock der richtige ist, ist der Suchvorgang in mehreren Ebenen mit der zweiten Hinweisadresse überflüssig.
Es folgt eine Uebersichts-Tabelle der Zustände, die beim Ende eines Suchvorganges eintreten können :
PO 9-69*029 - 47 - _.
Uebersichts-Tabelle
Ausgelesene Hinweisadresse
Zustande ■ Signale Zustand am Ende des Suchvorgangs
(1) letzte Hinweisadresse CE & DE
nächsten Block lesen
(2) dazwischenliegende Hinweisadresse SM und CE & DE laufende Hinweis -
adresse ist "richtig"
(3) erste Hinweisadresse ACHTUNG und
CE & DE
laufende Hinweisadresse ist "richtig"
(4) zwei zweideutige Hinweisadressen SM und CE & DE laufende oder letzte und ACHTUNG Hinweisadresse ist
"richtig"
(5) Dateiende (keine laufende Hinweisadresse) UE und CE & DE letzte Hinweisadresse
ist "richtig"
PO 9-69-029
. 48 -
Sequentieller Suchvorgang auf einer Ebene
Schritt 910 (Fig. 14D) leitet den sequentiellen Suchvorgang auf einer Ebene ähnlich wie den Suchvorgang auf mehreren Ebenen (Druck eines Startknopfes; Instruktion) ein. Bei Beginn eines Suchvorganges wird die Steuerungseinheit gewählt und Leitung 512F betätigt, damit der für den ersten Block zuständige Flipflop 660a (Fig. 1.9) zurückgestellt wird.
Darauf folgt Schritt 911 wie oben beschrieben. Die Hinweisadresse wird jedoch für jede Wiederholung durch Schritt 911 (während eines sequentiellen Suchvorganges in einer Ebene) für die betreffende, gewählte Ebene aus der in Fig. 7C gezeigten Hinweisadressentabelle entnommen. Die erste Hinweisadresse aus der gewählten Hinweisadressentabelle adressiert den ersten Block in der Indexebene, die abgesucht werden soll. Die Reihenfolge der Hinweisadressen in der jeweiligen Hinweisadressentabelle entspricht der sortierten Blockreihenfolge in der entsprechenden Ebene, obwohl die dazugehörigen Blöcke irgendwo - d.h. dort, wo sie von den Hinweisadressen aus der Tabelle adressiert werden - gespeichert sein können. Bei Schritt 911 gibt die Zentraleinheit einen Befehl "Suchargument und erste Hinweisadresse schreiben" ab, wodurch die erste Hinweisadresse aus der gewählten Hinweisadressentabelle der Fig. 7C ab- ·
PO 9-69-029 ■ -49- 009882/1994
gerufen wird.
Im Schritt 912 werden das Suchargument und die I-Iinweisadresse aus der Zentraleinheit in das Suchargument- und Hinweisadressenregister im Niedrig-Speicher 10 übertragen.
Daraufhin v/ird bei Schritt 913 ein CE & DE -Signal erzeugt.
Danach wird bei Schritt 940 der Befehl "Suchen eine Ebene" aus der Befehlstabelle (Fig. 7A) abgerufen.
Bei Schritt 941 wird über die E/A-Einheit 530C der von dem Inhalt des Hinweisadressenregisters im Niedrig-Speicher 10 definierte Block (vgl. Schritt 921) adressiert. Bei Schritt 941a wird der SA-Gleich- Zähler 301 (Fig. 13) !zurückgestellt, um das Absuchen in jenem Block vorzubereiten. Danach wird Schritt 942 ähnlich wie der beschriebene Schritt 922 ausgeführt, wodurch der von Schritt 941 adressierte, laufende Block gelesen wird.
Schritt 943 kontrolliert, ob bei dem zuletzt gelesenen Block ein Dateiende-Signal abgegeben wurde. Wenn nicht, führt Austritt Dl2 zu Schritt 840 (Fig. 14A)1 damit der laufende Block, der gerade vom Schritt 942 gelesen wurde, abgesucht wird. Wenn jedoch ein
"PO 9-69-029 -50-, 009882/1994
Dateiende-Signal vorhanden ist, wird bei Schritt 943a ein UE-Signal abgegeben, und der Suchvorgang in einer Ebene ist damit abge- . schlossen. In dieser Situation (wenn ein Dateiende-Signal vorhanden ist) ist die letzte Hinweisadresse des vorherigen Blocks (die an die Zentraleinheit ausgelesen wurde, um Zustand (5) der Uebersichts-Tabellc zu erreichen)· die richtige Hinweisadresse.
Am Ende eines sequentiellen Suchvorganges in dem laufenden Block (der nicht am Ende der Datei steht) nach dem Verfahren der Fig. 14A-C führt Austritt GlO (Fig. 14C) zu Schritt 930 (Fig. 14D), um zu überprüfen, ob der laufende Befehl ein Suchbefehl für mehrere Ebenen ist. Wenn es kein Suchbefehl für mehrere Ebenen ist, handelt es sieh um den Befehl "Suchen eine Ebene", welcher der zweiten Möglichkeit am Schritt 930 entspricht. Bei einem Befehl "Suchen eine Ebene" führt Austritt DIl zu Schritt 926, Fig. 14E.
In den Schritten der Fig. 14E wird der Vergleichszustand des ersten und des letzten CK's in dem laufenden, gelesenen Block abgefragt (d.h. es wird festgestellt, ob sie hochvergleichend zum Suchargument waren). Der im Zusammenhang mit Fig. 14G erwähnte Zustand ist dabei inbegriffen. Es sind je nach Ergebnis des Schrittes 926 evtl. zwei Durchläufe Über Eintritt DIl notwendig (jeweils eine für einen der zwei aufeinanderfolgenden Blöcke). ·
po 9-69-029 . -51- 00 9882/.1994
Wenn die ausgelesenc Hinweisadresse von einem hochvergleichcnden CK innerhalb eines Blockes stammt (d.h. nicht die Hinweisadresse, die entweder zum ersten oder zum letzten hochwertigen CK gehört, ist), führt Schritt 928 zum Austritt E12, welcher zum Schritt 956 (Fig. 14F) leitet. Schritt 956. leitet den Inhalt des Hinweisadressenregisters vom Niedrig-Speicher 10 an die Zentraleinheit 511, und Schritt 957 gibt ein SM & GE & DE -Signal ab, wodurch der durch Zustand (2) (in der Uebersichts-Tabelle) dargestellte Suchvorgang in einer Ebene abgeschlossen wird.
Wenn Schritt 926 feststellt, dass bei Hoch-Vergleich die letzte Hinweisadresse des laufenden Blocks ausgelesen wurde, tritt er bei El3 zu Schritt 950 (Fig. 14F) aus. Schritt 950 überträgt die letzte Hinweisadresse aus dem Hinweisadressenregister im Niedrig-Spcicher 10 in die Zentraleinheit (vgl. Fig. 14G). Dann gibt Schritt 951 ein CE & DE-Signal ab, wie es nur bei dem Block vorhanden ist, der verglichen mit dem Suchargument keinen höherwertigen CK besitzt (d.h. nur der letzte, künstliche CK mit P = O ist höherwertig). Dieser Fall entspricht dem Zustand (l) der Uebersichts-Tabelle.
Im Schritt 952 wird festgestellt, ob der laufende Suchvorgang sequentiell oder binäi ist. Wenn es sich um einen sequentiellen Such» Vorgang handelt, wird.im Schritt 953 die nächste Hinweisadresse
PO 9-69-029 f 52 h; ^0Ö9$&2/1994
aus der Hinweisadressentabelle für die entsprechende Ebene zur Adressierung des nächsten Blocks gewählt. Nach Austritt FlO werden die Schritte 911-913 und 940-943 (Fig. 14D) wiederholt. Schritt 9H gibt den Befehl "Suchargument und erste Hinweisadresse schreiben" ab. Schritt 912 überträgt dieses Suchargument (der Suchvorgang ist noch nicht vollendet) und die im Schritt 953 gewählte Himveisadresse. Schritt 940 gibt nochmals den Befehl "Suchen eine Ebene" ab, wodurch der nächste Block im Schritt 942 (Fig. 14D) gelesen wird. Wenn zu diesem Zeitpunkt kein Dateiende erreicht wurde, läuft der Vorgang weiter mit den in Fig. 14D, A, B und C dargestellten Schritten bis zum. Austritt ClO, von wo aus es zu Schritt 930 (Fig. 14D) zurückkehrt, und der Austritt Dl 1 leitet zu Schritt 926 (Fig. 14E). Falls der ausgelesene, laufende Block der ersten Hinweisadresse entspricht, reagiert Schritt 926 negativ und leitet weiter zu Schritt 928. Der vorangehende Block, der seine letzte Hinweisadresse ausliest, hat während des laufenden Blocks keinen Einfluss auf Schritt 926.
Schritt 928 stellt fest, ob gerade die erste Hinweisadresse aus dem laufenden Block ausgelesen wurde. Wenn das der Fall ist, führt Austritt E14 zu Schritt 958 (Fig. 14F), welcher bestimmt, ob der laufende Block der erste Block in dem Index dieser Ebene ist. Falls ja, ist die erste Ilinweisadresse die richtige, und Schritt 960 über-
po 9-69-029 '. -53- 00 9 882/1994
trägt diese Hinweisadresse aus dem Hinweisadressenregister im Niedrig-Speicher 10 in die Zentraleinheit. Schritt 961 gibt ein ACHTUNG- und CE & DE -Signal ab, und Schritt 962 zeigt an, dass es sich um einen sequentiellen Suchvorgang handelt. Der darauffolgende Schritt 964 zeigt an, dass kein SM -Signal abgegeben wurde, wodurch der Zentraleinheit bekanntgemacht wird, dass Zustand (3) der Uebersichts-Tabelle eingetreten ist. Danach ist der Suchvorgang .auf der einen Ebene beendet.
Wenn jedoch Schritt 958 einen negativen Austritt hat, gibt Schritt 959 ein SM -Signal ab, wodurch angezeigt wird, dass der laufende Block nicht der erste im Index ist. In diesem Fall ist die richtige Hinweisadresse entweder die gerade ausgelesene erste Hinweisadresse oder die letzte Hinweisadresse des vorangegangenen Blocks. Dann liest Schritt 960 die erste Hinweisadresse aus dem Niedrig-Speicher 10 an die Zentraleinheit. Das SM -Signal bewirkt, dass die Zentraleinheit die neue Hinweisadresse in den Speicher 510» bei*· • Bpiclsweise in das Zentraleinheit-Register-2 speichert. Danach wird bei'Schritt 961 ein ACHTUNG- und CE & DE -Signal abgegeben. Die Zentraleinheit erhalt über Schritt 962 und 964 genügend Information, damit sie Schritt 963 ausführen und den Vorgang beenden kann. Damit tritt Zustand (4) der zusammenfassenden Tabelle ein* Der Suchvorgang für eine Ebene ist mit Schritt 964 beendet, und die Zentralein~
PO 9-69-029 -54- 009882/199 A
heit kann Schritt 963 ausführen, nach welchem ein Mehr-Ebenen-Suchvorgang mit beiden Hinweisadressen eingeleitet wird, wodurch bestimmt wird, welche der beiden Hinweisadressen die richtige ist.
In den Fig. 17 und 19 sind Schaltungen abgebildet, die für das sequentielle Verfahren der Fig. 14D-F benutzt werden. Die Schaltungen für die Schritte 910-913 sind bereits im Zusammenhang mit dem • Suchvorgang für mehrere Ebenen beschrieben worden. Die Schaltungen für die Schritte 940-943 sind die gleichen wie für die Schritte 920-923, ausgenommen, dass die Decodierleitung 513K anstatt Leitung 513J beaufschlagt wird. Die Leitung 530E (in Fig. 19) dient (am Schritt 943a, Fig. 14D) zur Uebertragung von einem UE -Signal, welches am Ende eines sequentiellen Suchvorgangs für eine Ebene entsteht. Damit sind die Bedingungen für den Zustand (5) der Uebersichts-Tabelle erfüllt.
Flipflop 649 liefert ein CE & DE -Signal, wenn er entweder Über die Dateiende-Leitung 530E eingestellt wird, oder wenn die Uebertragung einer Hinweisadresse in den Niedrig-Speicher 10 beendet ist. Dieses CE & DE -Signal gibt der Zentraleinheit bekannt, dass sie den nächsten Befehl aus der Befehlstabelle der Fig. 7A wählen muss.
PO 9-69-029. -55- 009802/1994
Flipflop 649 wird am Ende einer Hinweisadressenübertragung über UND-Schaltung 648 eingestellt. Bei der Adressierung des letzten Bytes im Hinweisadressenregister im Niedrig-Speicher 10 (während sich der laufende Befehl "Suchen eine Ebene" auf der Leitung 513K zur ODER-Schaltung 648a befindet) wird die UND-Schaltung 648 über Leitung 666C aus dem Decodierer 666 (Fig. 19) durchgeschaltet. Nachdem die Zentraleinheit die übertragene Hinweisadresse und die Zu stands signale erhalten hat, gibt sie über die Schnittstelle auf Leitung 513D (= "Zustand angenommen") ein Signal zurück, das den Flipflop 649 zurückstellt.
Das CE & DE -Signal kann alleine oder in Verbindung mit einem ACHTUNG- und/oder einem SM -Signal vorkommen, wenn eine Hinweisadresse an die Zentraleinheit zur Beendung der Ausführung eines Befehls "Suchen eine Ebene" übertragen wurde. Es hängt von der Zusammenstellung dieser Signale ab, wie die Zentraleinheit die · erhaltene Hinweisadresse behandelt. Aus der Uebersichts-Tabclle ist die Bedeutung dieser Signale an die Zentraleinheit zu ersehen. Die Zentraleinheit speichert und adressiert die Hinweisadressc im Speicher 510 nach bekanntem Programmierungsverfahren.
Es wird ein CE & DE -Signal nach jeder Hinweisadressenübertragung an die Zentraleinheit geliefert. Wenn kein ACHTUNG-, SM - oder
PQ 9-69-029 . / . ./&H-~ ' ^ ||g Iff/ 1 0-0 4 -' ■- '-
UE -Signal nach einem Befehl "Suchen eine Ebene" geliefert wird, ist nur das CE & DE -Signal vorhanden, wodurch der Zentraleinheit angezeigt wird, dass die richtige Hinweisadresse nicht gefunden wurde und dass in dem sequentiellen Suchvorgang der nächstfolgende Block gelesen werden sollte. .
Wenn jedoch ein ACHTUNG-, SM - oder UE -Signal von Schritt 961, 959 oder 943a geliefert wird, steuert dieses Signal (und nicht das gleichzeitige CE & DE -Signal) die zentrale Einheit in Bezug auf die übertragene Hinweisadresse. Das CE Et DE -Signal gibt der Zentraleinheit ein Zeichen,· dass die übertragene Hinweisadresse die letzte im laufenden Block ist, und dass der nächste Block gelesen werden muss. Das UE-Signal gibt der Zentraleinheit ein Dateiende-Zeichen und bedeutet, dass die zuletzt übertragene Hinweisadresse die letzte in dem Index der einen Ebene ist, "und dass sie deshalb die richtige Hin\y<5isadresse ist» Die'Kombination de*. SM-St' G,|2 & D^E.-Signale , zeigt an, dass die ausgelesene Hinweisadresse feine "riclitige, aus dein Innern eines Blockes entnommene Hinweisadresse ist. Wenn SM - und ACHTUNG-Signale übertragen werden, zeigen, sie den in der Fig. 14G dargestellten Sonderfall an, bei welchem die übertragene Hinweisadresse die erste im Block ist, wobei entweder diese Hinweisadresse oder die letzte Hinweisadresse des vorangehenden Blocks die richtige Hinweisadresse ist. Die Zentraleinheit muss dann die Auswahl vor-
PO 9-69-029 - 57 -
009882/1994
nehmen.
In der Fig. 19 sind die Schaltungen dargestellt, die zur Erzeugung der Signale ACHTUNG und SM benutzt werden. Diese Signale werden von UND-Schaltungen 660, 664d und 664b erzeugt, von denen jede über Leitung 513K und über Leitung 666C (Ende des Hinweisadressenregisters) diirchgeschaltet wird.
UND-Schaltung 664d erzeugt das SM -Signal für Schritt 957; UND- Schaltung 664a erzeugt das SM -Signal für Schritt 959; UND-Schaltung 664b erzeugt das ACHTUNG-Signal für Schritt 961; und auf Leitung 530E/527A wird aus dem Dateiende-Signal das UE -Signal für Schritt 943a erzeugt.
Die UND-Schaltung 660 wird durch die Einstellung des Flipflops 661 (für die letzte Hinweisadresse) durchgeschaltet, Fipflop 661 wird über Leitung 332A eingestellt, welche (von Fig. 13 aus) beaufschlagt wird, wenn der laufende Block seine letzte Hinweisadresse (d.h. bei P = 0) ausliest. Flipflop 661 wird zurückgestellt, wenn die Zentraleinheit die Leitung 512D (= Zustand angenommen) betätigt. Die durchgeschaltete UND-Schaltung stellt den Flipflop 660a (- "kein erster Block") ein. Flipflop 660a wurde zu Anfang des Suchvorgangs durch Beaufschlagung der Startleitung zurückgestellt. Der CK mit
po 9-69-029 -58- 009882/1994
der letzten Hinweisadresse (P - O) aus dem ersten Block stellt Flipflop 661 ein, wenn keiner der vorangegangenen CK's verglichen mit dem Suchargument höherwertig war. Die Einstellung des Flipflop 660a zeigt an, dass es sich.bei allen folgenden Blöcken der Ebene nicht um den ersten Block handelt.
Die UND-Schaltung 664a erzeugt ein SM -Signal, wenn gleichzeitig Flipflop 660a (= "kein erster Block") und die UND-Schaltung 664b (= für die erste Hinweisadresse ) betätigt werden. Die UND-Schaltung 664b wird durch die Einstellung von Flipflop 663 (= "erste Hinweisadresse wählen") vorbereitet. Die durchgeschaltete UND-Schaltung 662 stellt den Flipflop 663 ein. Ehe der laufende Block gelesen wird," stellt das Taktsignal RL-ZYKL. für die Hinweisadressenlänge den Flipflop 665 ein. Dieser Flipflop wird durch das Taktsignal für die erste, zu lesende Hinweisadresse, R-ZYKL. , zurückgestellt. Dementsprechend wird Flipflop 665 in der Zeit eingestellt, in der der erste CK aus dem Block mit dem Suchargument verglichen wird. Wenn der erste CK ein hohes Vergleichsergebnis hat (CK höher als SA), wird Flipflop 328 in Fig. 13 eingestellt, wodurch die Leitung 328A (= HA-WAHL) zur UND-Schaltung 662 (FIg4 19) beaufschlagt wird. Deshalb aeigt die durchgeschaltete UND-Schaltung 662 an, dass die erste Hinweisadresse, die unmittelbar danach gelesen wird, gewählt worden ist. Ausserdem stellt der Ausgang der UND-Schaltung 662
PO9-69-029 -59- 009082/1994
den Flipflop 663 (- "erste Hinweisadresse gewählt") ein. Am Schluss der Hinweisadressenübertragung in das Hinweisadressenregister inn Niedrig-Speicher 10 schaltet Leitung 666C die UND-Schaltung 664b. . ·
Die UND-Schaltung 664a wird durch das Ausgangs signal von UND-Schaltung 664b durchgeschaltet, wenn der laufende Block nicht der erste Block der Ebene ist. Wenn der laufende Block nicht der erste Block ist, wird dieses durch Auslesung der letzten Hinweisadresse inn vorangegangenen Block angezeigt, welche den Flipflop 660a (= "nicht erster Block") anstellt.
Dementsprechend gibt die UND-Schaltung 664a über ODER-Schaltung 664c auf Leitung 664B ein SM -Signal ab, wenn sie unter diesen Bedingungen durchgeschaltet wird. Dieses geschieht im Schritt 959, damit der Zentraleinheit die Information zuteil wird, dass sie die beiden letzten, an sie übertragenen Hinweisadressen überprüfen soll.
Ein Signal auf Leitung 530E aus der E/A-Steuerung 530 (Fig. 16) zeigt an, dass der laufende Block das Dateiende bildet. Dieses Signal wird auf Leitung 530K an die Schnittstellen-Steuerungen 512 (Fig. 8) geliefert, wodurch der Zentraleinheit bekannt gegeben wird, dass die letzte Hinweisadresse des vorangegangenen Blockes die letzte Hin-
PO 9-69-029 . '·?M:".*'
weisadresse des Index der Ebene, und damit auch die richtige Hinweisadresse ist.
Binärer Suchvorgang auf einer Ebene ·
Bei dem binären Suchyorgang auf einer Ebene wird ebenfalls die Hinweisadressentabelle der Fig. 7C verwendet. In jeder Hinweisadressen tabelle sind die Hinweisadressen in einer sortierten Reihenfolge, die der dazugehörigen .Blockfolge aus der gleichen Ebene entspricht, enthalten. Da Verfahren für einen binären Suchvorgang bekannt sind, werden sie in dieser Beschreibung nicht im Detail erörtert.
Der binäre Suchvorgang beginnt auch am Startschritt 910 (Fig. 14D). Im Schritt 911 wählt der Befehl "Suchargument und erste Hinweisadresse schreiben" die mittlere Hinweisadresse aus der Tabelle. Schritt 912 lädt das Hinweisadressenregister und das Suchargumentregister im Niedrig-Speicher 10 mit jener Hinweisadresse, bzw. mit dem Suchargument.
Schritt 940 gibt dann einen Befehl "Suchen eine Ebene" ab; im Schritt 941 wird der durch die mittlere Hinweisadresse bezeichnete Block adressiert. Schritt 941a stellt den Suchargument-Gleich-Zähler zurück, und Schritt 942 liest den Block, der abgesucht werden soll,
Po 9-69-029 ' -61- 009882/1994
bevor beim Austritt Dl2 das Programm zu den Schritten der Fig. 14A leitet. Schritt 943 wird bei einem binären Suchvorgang übersprungen, da keine der gewählten Hinweisadressen zu dem Dateiende-Block gehört. '
Nachdem der Block mit.den Schritten der Fig. 14A-C abgesucht wurde, leitet das Programm über ClO zum Schritt 930. Das Ergebnis dieses Schrittes ("kein Mehrebenen-Suchbefehl") leitet den Vorgang über Austritt DIl zum Schritt 926 (Fig. 14E).
Die Schritte der Fig. 14E werden für den binären Suchvorgang genauso wie beim sequentiellen Suchvorgang ausgeführt.
Wenn die laufende, ausgelesenc Hinweisadresse eine mittlere ist (weder die letzte noch die erste in dem laufenden Block), ist sie die richtige, und der Suchvorgang wird am Austritt El2 (Fig. 14F) genauso wie der sequentielle Suchvorgang beendet. Dieser beschriebene Fall entspricht dem Zustand (2) der Uebersichts-Tabelle.
Wenn jedoch aus dem laufenden Block die erste oder die letzte Hinweisadresse gelesen wurde (Zustand 1, 3 oder 4 der Uebersichts-Tabelle), geht der Vorgang über E14, bzw. über E13 zu den Schritten der Fig. 14F, um den binären Suchvorgang fortzusetzen. Falls die
PO 9-69-029 -62- . Q09882/1994
erste Hinweisadresse ausgelesen wurde, wird ein ACHTUNG-, und CE & DE -Signal abgegeben. Bei der letzten Hinweisadresse hin-" gegen, wird nur ein CE & DE -Signal abgegeben. Die Tatsache, ob es sich um die erste oder die letzte Hinweisadresse handelt, bestimmt, welche der beiden möglichen Hinweisadressen für die nächste Stufe des binären Suchvorgangs benutzt wird. Der als bekannt vorausgesetzte Algorithmus des binären Suchvorgangs wählt aus demnächstverfügbarenHinweisadressenpaar. Wenn zuletzt eine erste Hinweisadresse war, kommt die nächste Hinweisadresse aus der oberen Hälfte der Tabelle, um einen im Index niedrigeren Block zu wählen. Wenn es sich aber um eine letzte Hinweisadresse handelt, ist die nächstverfügbare Hinweisadresse in der unteren Hälfte der Tabelle, um einen im Index höheren Block zu wählen.
Der Vorgang wird nun mit dem nächsten, gewählten Block wiederholt, der jetzt der laufende Block ist. Bei allen weiteren Stufen des binären Suchvorgangs wird die Zahl der abzusuchenden Blöcke kleiner. Das Maximum beträgt l/2 (oder Z ) der Blockgesamtzahl in der einen Ebene, die binär abgesucht wird. M bezeichnet die laufende, binäre Stufe (den Grad) im Suchvorgang. M beträgt 1 zu Beginn des Suchvorgangs und wird jedesmal um 1 erhöht, wenn ein Zugriff zur nächsten Hinweisadresse gemacht wird. So nimmt die maximale Blockanzahl in einer Ebene, die noch abgesucht werden
009882/1994
muss, exponentiell mit dem Grad (der Stufe) des binären Suchvorgangs ab.
Wenn Schritt 926 feststellt, dass die letzte Hinweisadresse aus dem laufenden Block ausgelesen wurde, geht der Vorgang über Austritt E13 zu Schritt 950 (Fig. 14F). Schritt 950 überträgt die letzte Hinweisadresse aus dem Hinweisadressenregister im Niedrig-Speicher P 10 an die Zentraleinheit (vergl. Fig. 14G). .
Dann wird bei Schritt 951 ein CE & DE -Signal abgegeben. Dieser •Fall entspricht Zustand (1) der Uebersichts-Tabelle.
Bei Schritt 952 wird festgestellt, ob der Suchvorgang in der laufenden Ebene sequentiell oder binär ist. Wenn er binär ist, stellt bei Schritt 954a die Zentraleinheit fest, ob der laufende Block (der durch die P laufende, binäre Hinweisadresse dargestellt wird) der letzte Block
im laufenden Binär-Suchbaum ist. Im allgemeinen gibt es eine feste Anzahl M von Stufen für jeden Binär-Suchbaum, der zu einer bestimmten Tabellengrösse (Fig. 7C) gehört. Das Verfahren zur Beendigung eines binären Suchvorgangs wird als bekannt vorausgesetzt. Wenn die laufende Hinweisadresse die letzte ist (mit ihr wird die Anzahl M erreicht), geht das Verfahren von Schritt 954a zu Schritt 955, um festzustellen, ob der in Fig. 14G dargestellte doppeldeutige
PO 9-69-029 - 64 _
009882/1994
Zustand vorliegt.
Wenn Schritt 954a feststellt, dass weniger als M Blöcke im laufenden binären Suchbaum gelesen wurden, wird bei Schritt 954b die nächsthöhere Hinweisadresse geholt (die durch das binäre Tabellen-Suchprogramm zur Verfügung steht). Von Schritt 954b geht der Vorgang über Austritt FlO weiter.
Daher sind bei einem binären Suchvorgang in einer Ebene ein oder mehrere bis maximal M Blockabsuchvorgänge notwendig, bis die richtige Hinweisadresse gefunden ist. M ist gleich dem Logarithmus zur Basis 2 von der Gesamtz-ahl T der Blöcke der betreffenden Ebene, d.h. LOG_ T, Die höchste Anzahl Blocksuchvorgänge, die bei einem
L*
sequentiellen Suchvorgang innerhalb einer Ebene notwendig sind, beträgt ein oder mehrere bis höchstens T (= Blockgesamtzahl dieser Ebene). Der binäre Suchvorgang ist durchschnittlich T/M mal schneller als der sequentielle Suchvorgang für eine vollständige Ebene.
Nach dem Austritt FlO werden die Schritte 911-913 und 940-943 (Fig. 14D) wiederholt, wobei Schritt 911 den Befehl "Suchargument und erste Hinweisadresse schreiben" abgibt. Schritt 912 überträgt dieses Suchargument (der Suchvorgang ist noch nicht beendet), und am Schritt 953 wird die neue Hinweisadresse adressiert. Schritt 940 gibt
PO 9-69-029 ' - 65 -
009 8 8 2/ 199
1194
nochmals den Befehl "Suchen eine Ebene" ab, so dass Schritt 942 (Fig. 14D) den nächsten Block liest. Wenn damit noch nicht das Dateiende erreicht ist, wiederholt sich das Verfahren über die Schritte der Fig. 14D, A, B und C zum Austritt ClO, von wo aus der Vorgang zu Schritt 930 (Fig.. 14D) weitergeht; Austritt DIl führt zu Schritt 926 (Fig. 14E)k Wenn der laufende, ausgelesene Block die erste Hinweisadresse abgegeben hat, antwortet Schritt 926 negativ ixnd leitet weiter zu Schritt 928. Wenn aus dem vorangegangenen Block dessen letzte Hinweisadresse ausgelesen wurde, hat das auf Schritt 926 beim laufenden Block keinen Einfluss.
Bei Schritt 928 wird festgestellt, ob die erste Hinweisadresse aus dem laufenden Block ausgelesen wurde. Ist dies der Fall, so führt Austritt El4 zu Schritt 958 (Fig. 14F). Ina binären Suchvorgang wird Schritt 958 übersprungen, an dem festgestellt wird, ob der laufende Block der erste in dem Index dieser Ebene ist; ob bei Schritt 959 ein SM -Signal erzeugt wird, ist also ohne Belang. Der Schritt kann übersprungen werden, da es bei einem binären Suchvorgang nicht ausschlaggebend ist, welcher Austritt aus Schritt 958 zum Schritt 96O führt, welcher die Hinweisadresse aus dem Hinweisadressenregister im Niedrig-Speicher 10 an die Zentraleinheit liest.
Dann gibt Schritt 961 ACHTUNG- und CE & DE -Signale ab und Schritt
PO 9-69-029 - 66 _
009882/1994
962 muss eine effektive Anzeige machen, dass ein binärer Suchvorgang vorhanden ist. Darauf folgt Schritt 966 und wird ähnlich wie Schritt 954a ausgeführt, wodurch festgestellt wird, ob der laufende Block der letzte im laufenden, binären Suchbaum ist.. Wenn es noch nicht der letzte Block ist, adressiert Schritt 967 die nächste niedrige Hinweisadresse (die das binäre Tabellensuchprogramm zur Verfügung stellt). Diese Hinweisadresse ist niedriger als die laufende Hinweisadresse in der Hinweisadressentabelle. Nach Austritt FlO wird der Λ nächste Block der Ebene abgesucht.
Wenn Schritt 966 jedoch zu Schritt 955 weiterleitet, erfolgt die bereits nach Schritt 954a beschriebene Operation.
Das CE & DE -Signal kann alleine oder in Verbindung mit einem ACHTUNG- und/oder einem SM -Signal nach der Uebertragung einer Hinweisadresse an die Zentraleinheit zur vollständigen Ausführung des Suchbefehls für eine Ebene auftreten. Die spezielle Signalkombination zeigt der Zentraleinheit an, wie sie die empfangene Hinweisadresse behandeln soll. Die Uebersichts-Tabelle gibt die Bedeutung dieser Signale für die Zentraleinheit wieder.
Es wird also nach jeder Hinweisadressenübertragung an die Zentraleinheit mindestens ein CE & DE -Signal geliefert. Wenn am Ende des
PO 9-69-029 - 67 -
009882/1994
Suchbefehls für eine Ebene kein ACHTUNG- oder SM -Signal geliefert wird, tritt allein das CE 8t DE -Signal auf, welches der Zentraleinheit signalisiert, dass die richtige Hinweisadresse noch nicht gefunden ist, und dass der binäre Suchvorgang im nächsten, gewählten Block weitergeführt werden muss . :
Das kombinierte ACHTUNG- und CE & DE -Signal, oder das CE & ^ DE -Signal allein (von Schritt 961, bzw. Schritt 951 geliefert) steuert
die Zentraleinheit im Hinblick auf die übertragene Hinweisadresse. Das CE & DE -Signal zeigt der Zentraleinheit an, dass die übertragene . Hinweisadresse die letzte im laufenden Block war und dass ein höherer Block im Index gelesen werden soll, da die letzte Hinweisadresse nicht unbedingt die richtige sein muss. Das ACHTUNG-Signal zeigt der Zentraleinheit an, dass die erste Hinweisadresse aus dem Block gelesen wurde, und dass ein niederer Block im Index gelesen werden ψ muss, da die erste Hinweisadresse in einem binären Suchvorgang nicht
unbedingt die richtige sein muss. Der nächste Block wird aus diesen beiden Blöcken (der eine ist höher und der andere ist niedriger als der laufende Block) gewählt, welche durch das erwähnte binäre Tabellensuchprogramm zur Verfügung gestellt wurden.
009882/1994
Kombinierte!· binärer und sequentieller Suchvorgang
Ein Suchvorgang für eine Ebene ist manfchmal effektiver, wenn das binäre und das sequentielle Verfahren kombiniert werden. Wegen seiner exponentiellen Charakteristik ist der binäre Suchvorgang besonders für die anfänglichen Stufen geeignet, da er die Blockzahl, die in der einen Ebene abgesucht werden müssen, in den ersten Stufen besonders stark einschränkt. Der binäre Suchvorgang ist zum Schluss jedoch kaum effektiver als der sequentielle Suchvorgang. In die sein Fall kann der binäre Suchvorgang auf einer binären Stufe B abgeschlossen werden, deren Wert geringer als die Maximalanzahl M binärer Stufen in einem Suchbaum ist. Die Zahl M hängt von der Zahl der Hinweisadressen in der laufenden Hinweisadressentabelle ab. Der Wechsel vom binären Suchvorgang zum sequentiellen Suchvorgang kann von der Zentraleinheit gesteuert werden, wenn diese feststellt, dass B Ebenen binär abgesucht worden sind. Der restliche Indexteil, der noch abgesucht werden muss, ist von der Hinweisadresse abhängig, die von Schritt 954b oder Schritt 967 gewählt wird, nachdem die letzte binäre Ebene B abgesucht wurde. Diese Hinweis adresse stellt die Mitte des restlichen Index fest, der noch abgesucht werden muss. Der restliche Teil beträgt l/2 der Blockzahl der Hinweisadressengesamtzahl T in der laufenden Hinweisadressentabelle (--
PO 9-69-029 , _69-
009 8 82/19 9
Deshalb beginnt der sequentielle Suchvorgang mit einer Hinweis -
adresse, welche 0,5 mal T/2 Hinweisadressen über der Hinweisadresse liegt, welche zuletzt von Schritt 954b oder-Schritt 967 bestimmt wurde (= -T/2 Hinwei-sadressen über der Hinweisadresse, welche vom Schritt 954b oder 967 während des binären Absuchens in der letzten binären Stufe B gewählt wurde).
_ Eine andere Anwendung des kombinierten Suchvorganges bietet Wahlmöglichkeit (1) von Schritt 955 (Fig. 14F). In diesem Fall hat der binäre Suchvorgang die letzte binäre Stufe M am Ende des Suchbaumes abgeschlossen (vgl. Ja-Austritt aus Schritt. 954a oder 966). Schritt 955 ist nur notwendig, wenn der zuletzt binär abgesuchte Block seine erste oder seine letzte Hinweisadresse ausgelesen hatte. Bei Wahlmöglichkeit (1) beginnt dann ein sequentieller Suchvorgang, um beide Hinweisadressen für den in Fig. HG dargestellten Zustand zu crhalten. Wenn die zusetzt ausgelesene Hinweisadresse die erste in dem zuletzt binär abgesuchten Block war, beginnt ein sequentieller Suchvorgang mit zwei Blöcken bei der benachbarten, vorangegangenen Hinweisadresse der Hinweisadressentabelle (in Bezug auf die Tabellen-Hinweisadresse für den zuletzt binär abgesuchten Block).
Wenn die zuletzt ausgelesene Hinweisadresse die letzte in dem zuletzt binär abgesuchten Block war, beginnt ein sequentieller Suchvorgang
PO 9-69-029 - 70 -
009882/1994
mit einem Block bei der nächsten, benachbarten Hinweisadresse in der Hinweisadressentabelle (in Bezug auf die Tabellen-Hinweis adresse für den zuletzt binär abgesuchten Block).
Wahlmöglichkeit (2) in Schritt 955 übernimmt die gleiche Funktion durch Verwendung von Zu satz-Suchinformationen, die bei jeder Hinweisadresse in der Hinweisadressentabelle gespeichert sind. Es sind mindestens drei Zusatzbits für jede Hinweisadresse vorgesehen: ein Bit, das die erste bzw. letzte Hinweisadresse, und ein Bit, das die Beendigung des Suchvorganges anzeigt. Die in Fig. 14G gezeigte Situation, in welcher zwei Hinweisadressen vorhanden sind, kann mit Hilfe der Zusatzbits entdeckt werden durch Feststellung, ob bei zwei nebeneinanderliegenden Hinweisadressen sowohl die Bits für die Durchführung der Suche als auch bei der einen das Bit für die letzte und bei der anderen das Bit für die erste Hinweisadresse gesetzt sind.
PO 9-69-029 - 7l -
009882/1994

Claims (8)

PATENTANSPRÜCHE
1. Verfahren zum Suchen in einem verdichteten Index mit mehreren Ebenen zwecks Auffindung einer gespeicherten Dateneinheit, die einem vorgegebenen Suchargument entspricht, wobei in dem Index jede höhere Ebene aus einem oder mehreren Blöcken von mehreren Paaren verdichteter Schlüssel besteht und jedem Schlüsseipaar eine Hinweisadresse zugeordnet ist, die den Speicherplatz eines zugeordneten Indexblocks der nächstniedrigeren Ebene angibt, gekennzeichnet durch folgende Schritte:
a) Auswahl eines Indexblockes, mit dem der Mehrebenen-Suchvorgang begonnen wird;
b) Vergleich des Sucharguments mit den verdichteten Schlüsseln des ausgewählten Indexblocks in deren gegebener Reihenfolge, wobei jeweils ein Tyte -beginnend mit dem ersten Suchargumentbyte - zum Vergleich herangezogen wird und bei Übereinstimmung zwischen Suchargumentbyte und Schlüsseibyte der Vergleich mit dem nächstfolgenden Byte forgesetzt wird;
c) bei Feststellung, dass mindestens einer der verdichteten Schlüssel eines Paares einen höheren Vergleichswert hat als das Suchargument, Entnahme der zugehörigen Hinweisadresse zwecks Zugriff zu einem Block in der nächsten Ebene.
Docket PO 969 029 009882/1994
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Schritte b und c so oft mit einem jeweils neuen Indexblock aus einer niedrigeren Ebene wiederholt werden, bis ein Indexblock aus der untersten Indexebene ausgewählt ist, so dass mit Hilfe einer durch Absuchen dieses letzten Indexblocks ermittelten Hinweisadresse die dem Suchargument zugeordnete Dateneinheit - sofern überhaupt vorhanden - aufgefunden werden kann.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass beim Übergang des Suchvorgangs von einem Block zu einem anderen der Vergleich des Sucharguments mit den verdichteten Schlüsseln wieder von neuem mit dem ersten Byte des Sucharguments begonnen wird.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass zur Auffindung des Indexblocks, mit dem der Mehrebenen-Suchvorgang begonnen wird, zunächst innerhalb einer beliebigen höheren Et>ene mit dem Suchargument ein einleitender Suchvorgang durch einen oder mehrere IndexbB cke erfolgt, bis eben derjenige Indexblock gefunden ist, dem aufgrund des Vergleichsergebnisses die Hinweisadresse zum Übergang in den dem Suchargument entsprechenden Indexblock der nächstniedrigeren Ebene entnommen werden kann, wobei der Eintrittsblock, bei dem dieser einleitende Such Vorgang begonnen wird; sowie die weiteren gegebenenfalls erforderlichen Blöcke innerhalb der Ebene nach einem festgelegten Schema ermittelt werden. ,
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass nach einem einleitenden Suchvorgang durch einen Block eine Anzeige erzeugt wird, ob das Suchargument bezüglich der Sorierreihenfolge an das untere Ende oder an das obere Ende oder in eine Zwischenposition der Schlüsselreihenfolge dieses Blocks gehört.
Docket PO 96, OZ9 009882/1994 '
6. Verfahren nach Anspruch 4; dadurch gekennzeichnet, dass für den einleitenden Suchvorgang in einer Ebene eine Tabelle von Hinweis adressen der Speicherplätze der Indexbiöcke dieser Ebene verwendet wird, wobei die Reihenfolge der Hinweisadressen in der Tabelle der geordneten Reihenfolge der Indexbiöcke innerhalb des Inde«: entspricht.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass die Auswahl der Indexblöcke für den einleitenden Suchvorgang in einer Ebene in der durch die Tabelle gegebenen Reihenfolge erfolgt, dass also mit dem ersten Block der betreffenden Ebene begonnen und dann mit dem Suchvorgang sequentiell zu den nachfolgenden Blöcken übergegangen wird, bis der zum Übergang auf den Mehrebenen-Suchvorgang passende Indexblock gefunden ist.
8. Verfahren nach Anspruch 5 und Unteranspruch 5, dadurch gekennzeichnet, dass die Auswahl der Blöcke für den einleitenden Suchvorgang nach einem binären Suchverfahren erfolgt, indem zunächst die mittlere Hinweisadresse zur Auswahl des Eintrittsblocks gewählt wird, und dass nach Absuchen dieses ersten Blocks, wenn er noch nicht der passende Block für den Übergang zum Mehrebenen-Suchvorgang war, je nach der Anzeige für die Sortierlage des Sucharguments bezüglich der Schlüssel irn Block die Hinweisadresse zur Auswahl des nächsten Blocks der Ebene entweder aus der Mitte der unteren Hälfte der Tabelle oder aus der Mitte der oberen Hälfte der Tabelle entnommen wird, und dieser Schritt gegebenenfalls mehrfach wiederholt wird mit jedesmaliger Halbierung des berücksichtigten Tabellenrestes,
009882/ 1 994
Denket I1Ci <■)■,') 0.''J
{9* Einrichtung zur Durchführung des Verfahrens nach Anspruch 1,
- dadurch gekennzeichnet, dass Suchschaltungen (Fig, 9 bis 13) vorgesehen sind, die einen Vergleicher (253, Fig. 12) zum Vergleich je eines Schlüsseibytesrnit einem Suchargumentbyte enthalten, sowie einen Suchargument-Gleich-Zähler (301, Fig. 13), dessen Inhalt bei Vorliegen eines Gleichheits signals aus dem Vergleicher um Eins erhöht werden kann, und dessen Inhalt bei Beginn des Suchvorgangs für einen neuen Block durch ein entsprechendes Steuersignal gelöscht wird. λ
Docke, PO 96, 029 009882/1994
L e e r s e i t e
DE19702031194 1969-06-26 1970-06-24 Verfahren zum Suchen in einem ver dichteten Index mit mehreren Ebenen Withdrawn DE2031194A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US83682569A 1969-06-26 1969-06-26

Publications (1)

Publication Number Publication Date
DE2031194A1 true DE2031194A1 (de) 1971-01-07

Family

ID=25272828

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19702031194 Withdrawn DE2031194A1 (de) 1969-06-26 1970-06-24 Verfahren zum Suchen in einem ver dichteten Index mit mehreren Ebenen

Country Status (11)

Country Link
US (1) US3643226A (de)
JP (1) JPS5026255B1 (de)
BE (1) BE751099A (de)
CA (1) CA944083A (de)
CH (1) CH515559A (de)
DE (1) DE2031194A1 (de)
ES (1) ES380987A1 (de)
FR (1) FR2047949B1 (de)
GB (1) GB1280487A (de)
NL (1) NL7009518A (de)
SE (1) SE356386B (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3916387A (en) * 1971-04-23 1975-10-28 Ibm Directory searching method and means
FR2166725A5 (de) * 1972-01-05 1973-08-17 Inpact
US3900834A (en) * 1972-09-05 1975-08-19 Bunker Ramo Memory update apparatus utilizing chain addressing
US3895357A (en) * 1973-02-23 1975-07-15 Ibm Buffer memory arrangement for a digital television display system
US4003029A (en) * 1974-08-09 1977-01-11 Asahi Kogaku Kogyo Kabushiki Kaisha Information search system
US4267568A (en) * 1975-12-03 1981-05-12 System Development Corporation Information storage and retrieval system
US4068298A (en) * 1975-12-03 1978-01-10 Systems Development Corporation Information storage and retrieval system
US4099242A (en) * 1976-11-03 1978-07-04 Houston George B One-pass general associative search processor
US4318184A (en) * 1978-09-05 1982-03-02 Millett Ronald P Information storage and retrieval system and method
US4353653A (en) * 1979-10-19 1982-10-12 International Business Machines Corporation Font selection and compression for printer subsystem
US4445190A (en) * 1981-06-16 1984-04-24 International Business Machines Corporation Program identification encoding
US4575583A (en) * 1981-10-01 1986-03-11 At&T Bell Laboratories Programmable digital controller for generating instructions
US4606002A (en) * 1983-05-02 1986-08-12 Wang Laboratories, Inc. B-tree structured data base using sparse array bit maps to store inverted lists
DE3335358A1 (de) * 1983-09-29 1985-04-11 Siemens AG, 1000 Berlin und 8000 München Verfahren zur bestimmung von sprachspektren fuer die automatische spracherkennung und sprachcodierung
US4633393A (en) * 1983-10-21 1986-12-30 Storage Technology Partners Ii Generic key for indexing and searching user data in a digital information storage and retrieval device
US4674039A (en) * 1984-10-09 1987-06-16 Chouery Farid A Method for determining whether a given value is included in an ordered table of values stored in a computer readable memory
US4817036A (en) * 1985-03-15 1989-03-28 Brigham Young University Computer system and method for data base indexing and information retrieval
US4672539A (en) * 1985-04-17 1987-06-09 International Business Machines Corp. File compressor
US4626829A (en) * 1985-08-19 1986-12-02 Intelligent Storage Inc. Data compression using run length encoding and statistical encoding
US5301318A (en) * 1988-05-13 1994-04-05 Silicon Systems, Inc. Hierarchical netlist extraction tool
ATE189325T1 (de) * 1990-10-05 2000-02-15 Microsoft Corp System und verfahren für informationsauffindung
US5313604A (en) * 1990-11-13 1994-05-17 Hewlett-Packard Company Method for locating compressed data in a computed memory back up device including steps of refining estimater location
CA2125337A1 (en) * 1993-06-30 1994-12-31 Marlin Jay Eller Method and system for searching compressed data
US5832499A (en) * 1996-07-10 1998-11-03 Survivors Of The Shoah Visual History Foundation Digital library system
US6353831B1 (en) 1998-11-02 2002-03-05 Survivors Of The Shoah Visual History Foundation Digital library system
US6965897B1 (en) * 2002-10-25 2005-11-15 At&T Corp. Data compression method and apparatus
US6941292B2 (en) * 2002-11-22 2005-09-06 International Business Machines Corporation Method and system for optimizing data searches in tree structures
US7165067B1 (en) * 2003-07-10 2007-01-16 Sun Microsystems, Inc. Method, system, and program for character set matching

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3030609A (en) * 1957-10-11 1962-04-17 Bell Telephone Labor Inc Data storage and retrieval
US3242470A (en) * 1962-08-21 1966-03-22 Bell Telephone Labor Inc Automation of telephone information service
US3323108A (en) * 1963-06-12 1967-05-30 Ibm Symbolic addressing
US3315233A (en) * 1963-10-01 1967-04-18 Ibm Self-addressing and self-assigning memory system
US3366928A (en) * 1964-06-29 1968-01-30 Ibm Accessing system for large serial memories
US3333251A (en) * 1964-11-13 1967-07-25 Ibm File storage system
US3408631A (en) * 1966-03-28 1968-10-29 Ibm Record search system
US3448436A (en) * 1966-11-25 1969-06-03 Bell Telephone Labor Inc Associative match circuit for retrieving variable-length information listings

Also Published As

Publication number Publication date
FR2047949A1 (de) 1971-03-19
US3643226A (en) 1972-02-15
GB1280487A (en) 1972-07-05
CH515559A (de) 1971-11-15
JPS5026255B1 (de) 1975-08-29
FR2047949B1 (de) 1974-09-20
SE356386B (de) 1973-05-21
ES380987A1 (es) 1972-10-16
NL7009518A (de) 1970-12-29
BE751099A (fr) 1970-11-03
CA944083A (en) 1974-03-19

Similar Documents

Publication Publication Date Title
DE2031194A1 (de) Verfahren zum Suchen in einem ver dichteten Index mit mehreren Ebenen
DE2205422C2 (de) Verfahren und Einrichtung zur Dekompression verdichteter Daten
DE2551239C3 (de) Datenverarbeitungsanlage
DE2055784A1 (de) Datenverarbeitungssystem
DE2139731A1 (de) Anordnung und Verfahren zur Code Um Setzung mit einem Assoziativ Speicher
DE2346525B2 (de) Virtuelle Speichereinrichtung
DE2521436B2 (de) Informationswiedergewinnungsanordnung
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
EP0523269A1 (de) Computersystem zur Datenverwaltung
DE2556617C2 (de) Schiebe- und Rotierschaltung
DE2133638C3 (de) Verfahren zum Betrieb eines lernfähigen Systems aus in Kaskade geschalteten, zur nicht linearen Datenverarbeitung geeigneten lernfähigen Datenverarbeitungseinheiten
DE2115198A1 (de) Verfahren zum Wiederauffinden von Datensätzen
DE3013064C2 (de) Schaltungsanordnung zur Übertragung von Bitgruppen zwischen einer von mehreren peripheren Einheiten und einem Pufferspeicher
DE2720864B2 (de) Anordnung zum lückenfreien Einspeichern einer Anzahl von Datenblocks unbestimmter Lange
DE2403039C2 (de) Einrichtung zur Befehlsausführung in einer adressenerweiterten elektronischen Datenverarbeitungsanlage
CH495584A (de) Datenverarbeitungsanlage
CH670715A5 (de)
WO1997015016A1 (de) Datenbankmanagementsystem sowie datenübertragungsverfahren
DE4238593A1 (de) Mehrprozessor-Computersystem
DE1250489B (de) I Schaltungsanordnung zur Einspei cherung von Leerstellen-Kennworten in einen assoziativen Speicher
DE1221037B (de) Verfahren zur Speicherung hierarchisch geordneter Datenketten und Anordnung zur Durchfuehrung dieses Verfahrens
DE10322837A1 (de) Verfahren zur Projektierung eines Automatisierungssystems
DE2419522A1 (de) Verfahren und anordnung zur unterteilung eines oder mehrerer nicht benutzter bereiche eines mit einem rechner verbundenen speichers
DE60002223T2 (de) Verriegelung von threads
EP1515244A2 (de) Abbildung einer Klassenhierarchie auf ein relationales Datenbanksystem

Legal Events

Date Code Title Description
8130 Withdrawal
8178 Suspension cancelled