DE2031194A1 - Verfahren zum Suchen in einem ver dichteten Index mit mehreren Ebenen - Google Patents
Verfahren zum Suchen in einem ver dichteten Index mit mehreren EbenenInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 163
- 230000008569 process Effects 0.000 claims description 130
- 230000007704 transition Effects 0.000 claims description 6
- 230000000052 comparative effect Effects 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 2
- 230000001419 dependent effect Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 description 46
- 230000005540 biological transmission Effects 0.000 description 7
- 230000000717 retained effect Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004308 accommodation Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query 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
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
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
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
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 ),
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
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.
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. *
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
ι 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.
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
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 -
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
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)
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
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)
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)
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 |
-
1969
- 1969-06-26 US US836825A patent/US3643226A/en not_active Expired - Lifetime
-
1970
- 1970-05-15 FR FR7017710A patent/FR2047949B1/fr not_active Expired
- 1970-05-21 CA CA083,263A patent/CA944083A/en not_active Expired
- 1970-05-28 BE BE751099D patent/BE751099A/xx unknown
- 1970-06-05 JP JP45048135A patent/JPS5026255B1/ja active Pending
- 1970-06-12 CH CH888870A patent/CH515559A/de not_active IP Right Cessation
- 1970-06-15 GB GB28780/70A patent/GB1280487A/en not_active Expired
- 1970-06-20 ES ES380987A patent/ES380987A1/es not_active Expired
- 1970-06-24 DE DE19702031194 patent/DE2031194A1/de not_active Withdrawn
- 1970-06-25 SE SE08842/70A patent/SE356386B/xx unknown
- 1970-06-26 NL NL7009518A patent/NL7009518A/xx unknown
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 |