NL8201057A - Inrichting voor het serieel fuseren van twee geordende lijsten tot een enkele geordende lijst. - Google Patents

Inrichting voor het serieel fuseren van twee geordende lijsten tot een enkele geordende lijst. Download PDF

Info

Publication number
NL8201057A
NL8201057A NL8201057A NL8201057A NL8201057A NL 8201057 A NL8201057 A NL 8201057A NL 8201057 A NL8201057 A NL 8201057A NL 8201057 A NL8201057 A NL 8201057A NL 8201057 A NL8201057 A NL 8201057A
Authority
NL
Netherlands
Prior art keywords
list
block
memory
elements
address
Prior art date
Application number
NL8201057A
Other languages
English (en)
Original Assignee
Philips Nv
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Philips Nv filed Critical Philips Nv
Priority to NL8201057A priority Critical patent/NL8201057A/nl
Priority to US06/471,974 priority patent/US4536857A/en
Priority to EP83200343A priority patent/EP0089717B1/en
Priority to DE8383200343T priority patent/DE3360294D1/de
Priority to JP58040858A priority patent/JPS58168167A/ja
Publication of NL8201057A publication Critical patent/NL8201057A/nl

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/36Combined merging and sorting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Vehicle Body Suspensions (AREA)
  • Read Only Memory (AREA)

Description

? V - — * >. . .a.
PHN 10.293 1 N.V. PHILIPS’ GIOEILAMPENFABRIEKEN TE EINDHOVEN.
"Inrichting voor het serieel fuseren van twee geordende lijsten tot één enkele geordende lijst" /
De uitvinding betreft een inrichting voor het samenvoegen van een volgens een eerste lineair order ingskriterium geordende eerste lijst van eerste elementen net een volgens een tweede lineair ordenings-kriterium geordende tweede lijst van tweede elementen, tot een volgens 5 een derde lineair ordeningskriterium geordende resultaatlijst van derde elementen;, de resultaatlijst bestaat uit afbeeldingen van.elemental, uit de eerste en de tweede lijst. Elk element van elk der lijsten bevat een kwantitatief attribuut ai de ordening gebeurt op basis van de waarde van dat attribuut; daardoor bestaan er ook verbanden tussen eerste, ^ tweede en derde ordeningskriterium, zoals later zal worden uitgelegd.
, Het attribuut kan expliciet in het element zijn vervat, maar ook impliciet. Als een geboortedatum van een persoon expliciet„ gegeven is, is zijn leeftijd impliciet gegeven. Elk element kan verdere gegevens bevatten. Bij het samenvoegen van de elementen kan de erin vervatte in-15 formatie nog op verschillende manier bewerkt worden, maar dat wordt verder buiten beschouwing gelaten. Er bestaan vier lineaire ordenings-kriteria, namelijk kleiner dan, kleiner dan of gelijk aan, groter dan, groter dan of gelijk aan (steeds in relatie tussen een eerder element' en een later element van de lijst). De eerste twee kriteria hebben on-20 derling dezelfde ordeningsrichting, de laatste twee kriteria.hebben dat ook. Onder afbeelden wordt verstaan dat elk eerste of tweede element één vertegenwoordigend derde element heeft. Het is evenwel in bepaalde gevallen voordelig dat twee eerste elementen met dezelfde attribuutwaarde, twee tweede elementen met dezelfde attribuutwaarde, respektie-25 velijk een eerste en een tweede element met onderling dezelfde attribuutwaarde slechts één vertegenwoordigend element hebben. Zo zijn er verscheidene mogelijkheden die alle een afbeeldingsfunktie representeren.
Een inrichting volgens de aanhef is bekend uit het Amerikaanse octrooischrift 4276611 dat hierna iets uitgebreider wordt besproken, ge-30 assigneerd aan dezelfde aanvrager. De bekende inrichting kan snelwerkend worden uitgevoerd maar vraagt een uitgebreide, gedistribueerde, verwer-kingskapaciteit voor de lijstelementen. Het is een doelstelling van de uitvinding om een dataverwerkende inrichting te verschaffen waarbij 8201057 PHN 10.293 2 " »
i J
*· A
-één van de twee samen te voegen lijsten kan bestaan uit een onbekend.....
aantal elementen die worden aangeboden uit een serieel geheugen hetwelk in eerste instantie slechts eenmaal behoeft te worden afgetast en waarbij de tweede daarmee samen te voegen lijst is qp te slaan in een S leesschrijfgeheugen met willekeurige toegankelijkheid, hetwelk slechts een beperkte ctnvang heeft, waarbij de verwerking centraal gebeuren kan en waarbij een eenvoudige boekhouding voor de opslag in het lees-schrijfgeheugen voldoende is. De stand van de techniek heeft daarbij een groot aantal, parallel en gelijkvormig werkende databesturings-10 elementen. De uitvinding realiseert de doelstelling doordat hij het kenmerk heeft dat genoemde inrichting bevat: a) een willekeurig toegankelijk leesschrijfgeheugen M(j) hetwelk bevat een aantal (kmax)^ 2 geheugenhlokken, waarvan er de (kmax-2) niet-grootste voldoende kapaciteit bezitten voor het opslaan van de tweede 15 lijst; b) een serieel werkende geheugenaansluiting cm genoemde eerste elementen te ontvangen en synchroon daarmee genoemde derde elementen af te geven; c) een besturingsinrichting voor het besturen van de samenvoeging, dewelke bevat: 20 d) een opslagbesturing cm genoemde tweede elementen in volgorde in genoemde (kmax-2) geheugenblokken op te slaan; c2) aanwijsmiddelen cm bij aktivering van genoemde serieel verkende ge-heugenaansluiting een eerste lopend schrijf adres bij te houden voor het inschrijven van genoemde eerste elementen, een eerste lopend leesadres 25 voor in het leesschrijfgeheugen opgeslagen eerste elementen en een tweede lopend leesadres voor in het leesschrijfgeheugen opgeslagen tweede elementen; c3) vergelijkmiddelen cm in eerste stand daarvan de qp genoemde eerste en tweede lopende leesadressen opgeslagen en de door de aanwij smiddelen 30 aangewezen eerste en tweede elementen volgens het derde lineaire ordeningscriterium te vergelijken en qp basis van de vergelijking er één beschikbaar te stellen voor toevoer aan de seriële geheugenaansluiting; c4) een eerste bloklijstbijhoudinrichting cm een reeks van beginadres-sen bij te houden van voor genoemde eerste elementen ter opslag gebruik-35 te geheugenblokken; c5) een tweede bloklijstbijhoudinrichting cm van tenminste twee geheugenblokken de beginadressen aan te wijzen, en onder besturing van het 8201057
V. A
' « PHN 10.293 3 \ ----passeren door het eerste lopend schrijf adres van een geheugenblokeinde - voor het opslaan daarin van genoemde eerste elementen beschikbaar te stellen voor de aanwijsmiddelen als nieuw eerste schrijf adres, en binnen de tweede bldklijstbijhoudinrichting laatstgenoemde aanwijzing te deak-5 tiveren, waarbij in een beginstand tenminste twee geheugenblokken buiten genoemde (kamx-2) geheugenblokken warden aangewezen; c6) en ontruiiningsmiddelen om na ontvangst op de seriële geheugenaan-sluiting van het laatste van genoemde eerste elementen verdere in het leesschrij fgeheugen nog opgeslagen eerste en/of tweede elementen onder 10 medewerking van genoemde vergelijkmiddelen aan de seriële géheugen-aansluiting te presenteren.
De uitvinding baseert zich onder andere op het inzicht, dat wanneer een geheugenblok geheel met elemental van de eerste lijst gevuld is, zodat een verder geheugenblok voor nader toegevoerde elementen van de eerste 15 lijst moet warden aangesproken, er op dat ogenblik tenminste één geheugenblok geheel leeg zal moeten zijn. Het is namelijk ontoelaatbaar als elementen van verschillende lijsten in hetzelfde geheugenblok worden opgeslagen: dan zou er namelijk een kans bestaan dat het eerste lopend schrijfadres en het tweede lopend leesadres zouden samenvallen hetgeen 20 een zeer moeilijk beheersbare situatie zou betékenen. Als nu bij al dan niet gelijke cmvang van de geheugenblokken tenminste aanvankelijk de twee grootste voor de eerste lijst blijven gereserveerd, dan treedt die moeilijk beheersbare situatie nooit op. Een andere interpretatie van het voorgaande is dat bij het gedeeltelijk vullen van het leesschrijfge-25 heugen met elementen van de tweede lijst de resterende, vrije ruimte verdeeld wordt in twee (of meer) vrije blokken. Dan wordt het gevulde deel verdeeld in verdere blokken die echter niet groter mogen zijn dan enig van de twee grootste vrije blokken. Zolang het totaal aantal geheugenblokken niet te groot wordt blijft een eenvoudige administratie 30 mogelijk. Als deze administratie dl te kcmplex zou worden, zou de daarvoor noodzakelijke geheugenruimte de totaal beschikbare geheugenruimte ontoelaatbaar doen verminderen. De serieel werkende geheugenaan-sluiting moet voor elk ontvangen eerste lijstelement een derde lijstelenent kunnen af geven. Als meerdere ontvangen eerste elementen op één 35 derde element worden afgebeeld kan op dat ogenblik een loos (dummy) denfe . element worden af gegeven. De door loze elementen gesepareerde derde elementen kunnen door geëigende maatregelen in de tijd worden aaneengeslo- 8201057 PHN 10.293 4 - ( i i ----ten, bijvoorbeeld middels een eerst-in-eerst-uit geheugen met "doorval" - faciliteit.
Het is gunstig als alle (kmax) geheugenblokken eenzelfde kapaciteit voor (lmax) van genoemde eerste en tweede lij stelementen 5 bezitten. Dit levert in sommige gevallen enig verlies van beschikbare opslagkapaciteit in het lees-schrijfgeheugen. Anderzijds blijkt zo de boekhouding zeer eenvoudig te worden cmdat dan met relatieve adressen met telkens dezelfde waarde voor de toelaatbare bovengrens gewerkt kan warden.
10 Het is gunstig als de tweede bloklijstbijhoudinrichting een eerste en een tweede geheugenblokbeginadres aanwijst en een indikator om daarvan het meest recent ontvangene aan te wijzen om aldus het minst recent ontvangene als vervangbaar door een nieuw ontvangen beginadres en het meest recent ontvangene als beschikbaar voor de aanwij smiddelen 15 te indiceren. Er is nu altijd minstens één leeg geheugenblok beschikbaar op het ogenblik dat het nodig is, terwijl ook hiet de administratie eenvoudig blijft.
Het is gunstig als bij gelijknamige ordeningsrichting van genoemd eerste en tweede lineair ordeningskriterium de opslagbesturing 20 dezelfde adresinkrementeringsrichting heeft als de aanwijsmiddelen maar bij ongelijknamige ordeningsrichting de tegengestelde adres incremen-teringsrichting als de aanwijsmiddelen. Zo wordt ook het samenvoegen van twee lijsten met onderling verschillende ordeningsrichting eenvoudig mogelijk.
25 Het is gunstig als de opslagbesturing verbonden is met de serieel werkende geheugenaansluiting en met de aanwij smiddelen om bij seriële ontvangst op de geheugenaansluiting van genoemde tweede elemental een binnen genoemde (kmax-2) geheugenblokken beperkt tweede lopend scbrijfadres bij te houden en voorts een detektiemiddel bevat cm bij 30 ontvangst van het laatste van genoemde tweede elementen, respektievelijk het bereiken van het einde van het laatste van genoemde (kmax-2) geheugenblokken de overige elementen van de besturingsinrichting te aktiveren, maar uitsluitend in het laatste geval een herhalingselement aktiveert cm bij deaktivering van de antruimingsmiddelen opnieuw de opslag bestu-35 ring te aktiveren, waarbij de tevoren saitengevoegde derde elementen alsdan weer als eerste elementen werken. Zo is ook het serieel ontvangen van de tweede lijst mogelijk, terwijl het mogelijk wordt cm (zeer) lange 82 0 1 0 5 7 I ( * \ PHN 10.293 5 ----------tweede lijsten te verwerken. Daarbij wordt de verwerkingstijd echter------- wel langer omdat telkens een nieuwe cyclus moet worden uitgevoerd (bovendien net een in elke volgende cyclus langere eerste lijst).
Het is gunstig als de vergelijkmiddelen een bij aktivering 5 gevormde tweede stand bezitten cm een door de aanwij smiddelen aangewezen tweede element direkt te vergelijken met een op de seriële geheu-genaansluiting ontvangen eerste element cm pas na toevoering van enig eerste element aan het lees-schrij f-geheugen genoemde eerste stand te aktiveren. Zo wordt op voordelige manier de "kop" van de eerste lijst 10 bij presentatie direkt aan de resultaatlijst toegevoerd.
KORTE BESCHRIJVING VAN DE FIGUREN
Hierna wordt een voorkeursuitvoering volgens de uitvinding meer in detail beschreven. Na een korte uitleg van de stand der techniek volgen eerst een blokschema van die voorkeursuitvoering, een aantal bij 15 het samenvoegen optredende situaties en daarna een gedetailleerde beschrijving. Een en ander geschiedt aan de hand van de volgende figuren:
Fig. 1 geeft een blokschema van een inrichting volgens de stand der techniek; 20 Fig. 2 geeft een blokschema van een inrichting volgens de uitvinding;
Fig. 3 geeft een aantal fasen die op kunnen treden tijdens de werking van zo een inrichting;
Fig. 4 geeft een globaal stroomdiagram van een fuseerbewer-25 king volgens de uitvinding;
Fig. 5 geeft een stroomdiagram van het opslaan van de tweede lijst B in het werkgeheugen;
Fig. 6 geeft een stroomdiagram van de eigenlijke seriële bewerkingen bij het fuseren; 30 Figs. 7a, 7b, 7c, 7d geven de elementaire furikties van de vergelijkmiddelen en implikaties daarvan;
Fig. 8 geeft een stroomdiagram van het bij werken van het tweede lopend leesadres;
Fig. 9 geeft een stroomdiagram van het bij werken van het 35 eerste lopend leesadres;
Fig. 10 geeft een stroomdiagram van het bijwerken van het eerste lopend schrijf adres; 8201057 PHN 10.293 6 # i.
I I
j -- Fig. 11 geeft een stroomdiagram van de werking van de eerste blóklij stbijhoudlnrichting ;
Fig. 12 geeft een stroomdiagram van de werking van de tweede bloklij stbij houdinrichting bij deaktiveren van een aangewezen geheugen-5 blok/ en
Fig. 13 geeft een stroomdiagram van de tweede bloklijstbij-houdinrichting bij het aktiveren van het aanwijzen van een nieuw beschikbaar geheugenblok.
DE BEKENDE INRICHTING
10 Fig. 1 geeft een inrichting volgens de stand van de techniek met name volgens het Amerikaanse Octrooischrift 4276611. Uit een databron 20 worden serieel de te sorteren lijst-elementen aangeboden. De resultaatlijst wordt serieel toegevoerd aan de databestemming 40. De inrichtingen 20 en 40 kunnen serieel werkende geheugens zijn, zoals 15 magnetische schijfgeheugens die met onderling gelijke snelheden warden uitgelezen, respektievelijk ingeschreven. De inrichting bevat verder drie datastrocmbesturingselementen 22, 24, 26 die in het geciteerde octroooischrift uitgebreid beschreven zijn. Elk van de elementen 22, 24, 26 heeft twee uitgangsregisters (28 tot en met 38), waarvan er één is 20 teruggekoppeld naar een ingang van hetzelfde datastrocmbesturingselement terwijl het andere uitgangsregister is opgencmen in een serieschakeling tussen databron 20 en databestemming 40. In elke werkcyclus wordt een lijstelement aangeboden door de databron 20·; verder kunnen alle registers 28-38 ten hoogste één lijstelement bevatten. Stel dat de resultaat-25 lijst zo geordend moet zijn dat het kleinste element voorop staat. De werking van datastrocmbesturingselement 26 is dan zo dat de lijstelemen-ten van de registers 34 en 36 worden vergeleken, en dat het kleinste van deze twee lijstelement toegevoerd wordt aan register 38, het grootste evenwel aan register 36. Als het lijstelement in register 36 groter 30 is wordt het dus eenmaal rondgevoerd via lijn 42 terug naar register 36. In het tegenovergestelde geval wordt hetzelfde lijstelement via lijn 42 naar register 38 gevoerd. De inhoud van register 38 wordt toege-' voerd aan databestemming 40. Bij de initiëring van het fuseerproces moet eerst de B-lijst opgeslagen worden In de registers 28, 32, 36 en 35 de kop van de A-lijst in de registers 30, 34. Dan kan het fuseerproces beginnen. Er vinden dus parallel telkens evenveel sorteerbewerkingen plaats als er elementen van lijst B aanwezig zijn. Als lijst B vele 8201057 I t
Λ V
ΡΗΝ 10.294 7 ------elementen bezit is dus een gekompliceerde inrichting nodig. - BESCHRIJVING VAN EEN VOORKEURSUITVOERING Fig. 2 geeft een gedeeltelijk blokschema van een inrichting volgens de uitvinding. Blok 20 stelt voor een konventioneel serieel 5 geheugen, bijvoorbeeld een magnetisch schrijfgeheugen met aandrijving en snelheidsregeling welke niet nader worden besproken. Op dit seriële geheugen is aanvankelijk de A-lijst opgeslagen. De elementen van de lijst A warden achtereenvolgens door de toegangs- cum leesmiddelen 22 uitgelezen en door niet aangegeven regeneratieversterkers en eventueel 10 een demodulator wordt de data-inhoud geregenereerd. Blok 40 is de besturingsinrichting van het seriële geheugen cm diskrepanties in synchronisatie tussen het seriële geheugen 20 en de bus-lijn 44 op te vangen, voor serie/parallelomzetting, en cm de adressering in het geheugen 20 te verzorgen. Blok 24 stelt voor het toegangselement van het lees-15 schrijfgeheugen 26 met willekeurige toegankelijkheid. Onder willekeurigr toegankelijk wordt hier verstaan de eigenschap dat de in het geheugen 26 opgeslagen elementen van de lijsten A, B in een willekeurige volgorde van lijstelementen kunnen worden uitgelezen. Het toegangselement 24 bevat drie adresregisters, namelijk het register 48 voor het eerste lopend 20 schrijfadres, respektievelijk het tweede lopend schrijf adres, het register 50 voor het eerste lcpend leesadres en het register 52 voor het tweede lopend leesadres. Via lijn 54 zijn'deze drie adressen naar keuze aan het lees-schrij fgeheugen 26 toevoer baar. Het toegangselement 24 is middels lijn 56 met de adresbus 46 verbonden. Het geheugen 26 is via de 25 lijn 58 met de databus 44 verbonden. Het geheugen 26 is verdeeld in zes blokken 26a tot en met 26f, van onderling gelijke grootte, die te-samen de omvang van het gehele geheugen beslaan. Voorts is nog een bidirektioneel databuffer 60 aanwezig. Het aantal geheugenvakken kan anders zijn. Het is mogelijk dat ze in een andere volgorde zijn geplaatst 30 en ook dat ze tesamen slechts een deel. van het geheugen beslaan. De eigenlijke informatieverwerking gebeurt In een processor 28. Dit kan een gebruikelijke microcomputer zijn met een interne data- en adresbus, register- en geheugenkapaciteit, verwerkingsorganen en een geëigende besturing daarvoor. In de figuur is daarvan slechts een gedeelte weer-35 gegeven. De vergelijking tussen de lijstelementen wordt doorgevoerd in de arithmetische en logische eenheid (ALU) 36. Deze heeft twee ingangs-registers 32, 34 die via verbinding 30 met de databus 44 zijn verbonden 8201057 * * » PHN 10.293 8 ----en een uitgangsregister 38 dat via verbinding 70 eveneens met de data- his is verbonden. De drie registers bieden elk plaats aan een lijstelement, terwijl de ALÜ eenheid 36 van die twee lijstelementen in registers 32, 34 dat lijstelement met de kleinste attribuutwaarde doorlaat 5 naar de uitgang. Op datzelfde moment kan het register (32, 34) waarvan het lijstelement is doorgelaten, via de databus opnieuw gevuld worden. Het doorgelaten lijstelement gaat daarop via de databus naar het seriële geheugen 68, dat op dezelfde manier als het seriële geheugen 20 voorzien is van toegangs- cum lees/schrij f-middelen 66 en een besturingsinrich-10 ting 64. De ingangsregisters 32, 34 kunnen gevuld worden van uit het seriële geheugen 20, of vanuit de databuffer 60 van het lees-schrijfgeheugen 26, De lijstelementen kunnen vanuit geheugen 20 worden toegevoerd aan de ingangsregisters 32/34 of aan de databuffer 60. In plaats van met een databus kunnen de vier aldus gebruikte datapaden ook separaat zijn 15 uitgevoerd. Voorts bevat de processor 28 nog een. eerste bloklijstbij-houdinrichting 42. Deze bevat een aantal adressen, evenveel als er ge-heugenblokken zijn in het geheugen 26; deze adressen bevatten de geheu-genblokadressen van de geheugenblokken met opvolgende elementen van de eerste lijst; van deze adressen in bloklijstbijhoudinrichting 42 wordt 20 er één aangewezen door een niet aangegeven aanwijzer, (pointer).
Voorts is er een tweede bloklijstbijhoudinrichting 72, deze bevat ten hoogste twee aanwijsinformaties voor de eerste bloklijstbijhoudinrichtiig 42. Als er een geheugenblok geheel gevuld is met elementen van de A-lijst, en er wordt een volgend element uit de A-lijst aangeboden, bevat j 25 de tweede bloklijstbijhoudinrichting een geldige aanwijsinformatie voor een geheugenplaats in de eerste bloklij st-bij houdinr ichting die een geheel leeg geheugenblok aanwijst. Als een geheugenblok met A-elementen of B-elementen geheel ontruimd is, wordt de aanwijsinformatie voor het bij dat geheugenblok behorende adres in de eerste bloklijstbijhoudin-30 richting opgeslagen in de tweede bloklijstbijhoudinrichting. Als een geheugenblok met A-elementen geheel ontruimd is bevat de eerste bloklijst bijhoudinrichting een aanwij sinformatie voor het eerstvolgende geheugenblok met één of meer A-elementen (indien aanwezig ). Zo werken de eerste en tweede blokli j stbij houdinr ichtingen samen^werkt bovendien 35 de eerste bloklijstbijhoudinrichting samen met de adresregisters 48 (eerste lopend leesadres). Voorts bezitten de registers 50, 52 nog een incrementeermogelijkheid, en het adresregister 48 zowel een incremen- 8201057 « « *· i _______________ ______ __ τ _ .
ΡΗΝ 10.293 9 ---------teer- als een decrementeermogelijkheid, dit laatste voor het geval de — B-lijst en de A-lijst volgens verschillende crdeningsrichfeiig' op hm oorspronkelijk serieel geheugen zijn opgeslagen. Dit zal later worden uitgelegd. De werking van de Inrichting zal nu worden uitgelegd aan de 5 hand van Fig. 3. Er wordt nog opgemerkt dat in Fig. 3 de geheugenruimte van eerste en tweede bloklijstbijhoudinrichtingen fysiek deel kan uitmaken van het geheugen 2 6, adresseerbaar via de adresbus.
VOORBEELD VAN EEN SAMENVOEGING
Fig. 3 geeft een aantal fasen die kunnen optreden tijdens de 10 werking van de Inrichting volgens Fig. 2. In dit geval kunnen de geheug genblokken hoogstens twee lijstelementen bevatten. De elementen van de lijst B zijn achtereenvolgens BO, B3, ........... B18. De elementen van de lijst A zijn Al/ A2f A4, A5, A7....... A23. De sortering moet plaats vinden volgens de numerieke waarde van het argument. De meest linkse ko-15 lean geeft de situatie bij het begin. Bovenaan zijn aangegeven de twee allereerste elementen van de A-lijst. De volgende vier regels geven aan, dat de eerste twee geheugenblokken leeg zijn (plaats voor 2x2 lijstelementen) . De volgende zeven regels (3 blokken voor elk twee lijstelementen en een blok voor slechts êén lijstelement) bevatten de zeven in 20 het lees-schrijfgeheugen opgeslagen elementen van de B-lijst, De laatste twee regels geven de twee meest recentelijk afgevoerde elementen van" — -de resultaatlijst; aanvankelijk zijn deze regels dus leeg. In praktische gevallen zal het aantal lijstelementen per geheugenblok veel groter zijn.
Als voorbeeld gelde een lees-schrijfgeheugen van 4k woorden è 16 bits, 25 terwijl voor elk lijst-element twee woorden nodig zijn. Voordelige blok-lengtes bevatten dan bijvoorbeeld 10 a 20 lijstelementen» Na presentatie van het eerste element A1 van de A-lijst wordt de tweede kolom gevormd waarbij element BO aan de resultaatlijst wordt toegevoerd. Het blijkt dat telkens wanneer een A-element op de laatste plaats van een 30 geheugenblok is gepositioneerd er steeds tenminste êén geheugenblok leeg is voor de opslag van verdere A-element en. Door de keuze van de blok-grootte is er zelfs altijd een geheugenblok geheel leeg, maar dat zal in andere gevallen niet steeds vóórkomen. De ingangsregisters van de ALU-eenheid 36 in Fig. 2 bevatten dus steeds êén element van de A-35 lijst en êên element van de B-lijst.
DEFINITIES
Hieronder worden eerst een aantal definities gegeven cm het begrip van later te beschrijven stroomüagrairmen te vereenvoudigen» 8201057 HHDT 10.293 10 ί ' • r ™— Eerst zij het lineaire ordeningskriterium gedefinieerd over het waarde-bereik W. Het lineaire ordeningskriterium kan bijvoorbeeld gedefinieerd zijn over de reëele getallen als "kleiner dan" of "groter dan". Het kan ook over alle uit letters opgebouwde woorden gedefinieerd zijn als 5 "volgens de alfabetische· volgorde", over alle - * il kcmplexe getallen als "met een kleinereewaarde"-:.
van de modulus dan", enzovoorts. De eerste lijst wordt gedefinieerd als: A (0: (jmax-1)) zodat 10 V i£N, 0 ^ i ^ imax-1 A(i) €: W, en V ifeN, i^imax-2 —> A(i) ^ A (i+1)
Deze lijst telt dus een aantal (imax) elementen, die alle een rangnum-u mer i (natuurlijk getal) en een attribuut A(i) in een waardebereik W bezitten. De lijst is attribuutsgewijze geordend. Voor A(i)=A(i+1) 15 kan de lijst ook elementen met dezelfde waarde van het attribuut bevatten; dit behoeven niet noodzakelijk identieke elementen te zijn.
Op overeenkomstige manier is de tweede lijst gedefinieerd: B(0: (fmax-1) zodat V f€N, f ^ fmax-1 B(f) 6 W, en 20 V f6N, 0^ f ^ fmax-2 B(f) ^ B (f+1).
Deze lijst telt dus een aantal (fmax) elementen, terwijl B(f) = B(f+1) al dan niet toelaatbaar kan zijn. Op overeenkomstige manier is de te vormen resultaatlijst gedefinieerd: Z (0 :(tmax-1)) zodat 25 3 i; Z(t) = A (i) of3f? Z(t) = B (f) , en V t£N, 0^ t $ tmax-2*** Z (t) ^ Z (t+1).
Als derhalve een element Z (t) existeert moet dit uit één van de eerder genoemde lijsten afkomstig zijn. De resultaatlijst kan elementen met gelijke attributen bezitten. Anderzijds is het mogelijk dat wanneer er 30 elementen in de tweede oorspronkelijke lijsten met dezelfde attribuuts-waarde voorkomen er één wordt overgenomen in de resultaatlijst, dan wel dat er méér dan één worden overgencmen in de resultaatlijst. Na het voorgaande wordt bovendien een omgekeerde B-lijst gedefinieerd: BREV (0 : (fmax-1)) zodat 35 V f£N 0·^f ^ fmax-1 BREV (f) = B (fmax-1-f)
Als geen gelijke attribuutwaarden toelaatbaar zijn geldt in het bovenstaande A (i) ^ A (i+1) en voor de andere lijsten pp overeenkomstige 8201057 . -2 c t f PHN 10.293 11 --manier. Verder wordt gedefinieerd een lees-schrijf-geheugen met wille- — keurige toegankelijkheid (RAM), M (0: (jmax-1)), waarbij 0^ j ^jmaxrl.
De index j geeft het adres aan, de waarde van M(j) geeft aan de informatie die op adres j is opgeslagen. Verder wordt gedefinieerd een aantal 5 geheugenblokken binnen het lees-schrijfgeheugen volgens:
Sm£ 0: (kmax-1), 0: (lmaxr-1)3 zodat
Vk, ltN, 0 k kmax-1 ên 1 ^ lmax-1 SM (k, 1) = M (kxlmaxH)
De waarde van Imax geeft aan het aantal lijstelementen dat plaats kan vinden binnen één blok. In dit geval wordt dus gewerkt met geheugen-10 blókken van een vaste lengte. Er is eerder opgemerkt dat dit geen strikt noodzakelijke voorwaarde is. De waarde van kmax. geeft aan het aantal voer de operatie beschikbare blókken in het lees-schrijfgeheugen. Dit geheugen kan voorts verdere blókken (bijvoorbeeld van dezelfde lengte Ί
Imax) bevatten die voer andere doeleinden zijn gereserveerd. Het nu in 15 werkelijkheid gebruikte deel van het geheugen wordt gedefinieerd als (beschikbare hoeveelheid, geheugen met afmeting kleiner dan Imax wordt niet gebruikt): jmax = kmax $ Imax.
De grens van een blok SM (kr) is het geheugenadres jr, zodat jr=kr x luax 20 (dit is dus het eerste adres van het desbetreffende geheugenblok).
Voor het eigenlijke seriële fusieproces"moet de lijst B in het lees-schrijf geheugen warden geladen, tot een maximum van gmax = (kmax-2) x Imax lijstelementen, want er moeten twee lege geheugenblokken aanwezig blijven voordat het 25 fusieproces beginnen kan. Als er geldt fimax ^ gmax kan de hele lijst B geladen worden en het fuseren in één slag plaats vinden; het stroomdiagram van fig. 4 laat ook het tegenovergestelde geval toe. Er wordt een beginlijst van de lijst B gedefinieerd: SB (0: (gmax-1)), zodat 30 V g£N, g ^ gmax-1 —* SB (g) =B (g), en evenzo een eindlijst van de lijst B: EB (0 : (fmax-l-gmax)^ zodat V f £ N, 0 ^ f ^ (fmax-a-gmax) —> EB(f) = B (f-+gmax).
Met betrekking tot het opslaan van de gesorteerde lijst B wordt veron-35 dersteld dat de elementen daarvan aanvankelijk op een serieel geheugen zijn cpgeslagen tussen een beginadres "begb" en een eindadres "endb". Voorzover van toepassing gelden dezelfde vooronderstellingen voor de 8201057 f f PHN 10.293 12 --------lijsten BREV, en ook voor B* en BREV* (de ster geeft aan dat dan geen lijstelementen met gelijke attribuutwaarde voorkomen). Als nu geldt fmax gmas dan geldt B = SB (kop van lijst B). Als geldt fmax gmax dan passen alleen de eerste "gmax" elementen van de lijst B in SB, de 5 rest van de lijst B, EB, die pas later kan worden opgeslagen in het lees-schr ij f geheugen, zijn in het seriële geheugen aanwezig vanaf het adres (begb + gmax). In het lees-schrijfgeheugen M(j) wordt de (deel)-lijst SB zo opgeslagen, dat ¥g6 N ; 0^ g ^ gmax - 1 M (2* lmax+g) = SB (g) 10 Daarbij warden dus de eerste twee geheugenblokken onbenut gelaten. Als het seriële geheugen evenwel de lijst BREV bevatte, dan wordt de opslag in het lees-schrijfgeheugen M(j) als volgt geëffektueerd: ¥ g€N ; 0 ^ g ^ gmax-1 —> M (jmax-1-g) = SBREV (g) waarin SBREV de eerste, ten hoogste gmax, elementen van de lijst BREV 15 representeert.
Na het opslaan van de lijst B, respéktievelijk de kop SB daarvan, in het lees-schrijfgeheugen, wordt de lijst A uit het seriële geheugen toegevoerd. Het eerste element van de lijst A (aEA) dat in het leesrschrijf-geheugen wordt opgeslagen, vindt plaats op de grens van een leeg blok 20 SM (k, o), waarbij k gekozen kan worden. Alle daarna volgende elementen van de lijst A moeten dan ook in het lees-schr ij f geheugen worden opgeslagen, omdat er tenminste één element is dat eerder in de gefuseerde lijst is, respéktievelijk moet worden opgencmen, en ook eerder verdwijnt uit het lees-schrijfgeheugen dan het later gearriveerde lijstelement.
25 Het lees-schrij f geheugen heeft voor de eerste lijst (A) dan het karakter van een eerst-in-eerst-uit (FlFO^buffer. Telkens wordt successievelijk een geheel geheugenblok volgeschreven, waarbij wat betreft de A-lijst in hetzelfde geheugenblok zowel geschreven als gelezen kan warden (vgl. Fig. 3 bij de overgang tussen tweede en derde kolom). De admini-30 stratie van de opslag van de lijstelementen a£A in het lees-schrijf-geheugen gebeurt in een administratielijst ISM die bevat de opeenvol-ging van geheugenblokken waarin elementen van lijst A zijn opgeslagen: ISM (0: (umax-1))
Vk^ waarde SM (k, 1) €: A ISM (u) = k* lmax.
35 voor ieder geheugenblok dat tenminste één element van lijst A bevat is de grens van dat geheugenblok opgeslagen in de lijst ISM. Ontlat het aantal blokken in het geheugen Mfsleehteé gelijk is aan krnax, behoeft - .. . - ....
8201057 * <
·- V
PHN 10.293 13 —.....-het aantal lijst elementen van de lijst ISM, umax, niet groter te zijn— dan: umax = kmax.
Het aantal opeenvolgende blokken van de lijst A die bij êên seriële fu-5 siebewerking gebruikt wordt hangt slechts af van het aantal lijstelemen-ten in lijst A, maar kan verder in principe onbeperkt groot zijn.
Daarom wordt gedefinieerd een opvolgingsfunktie: UNEXT binnen de lijst ISM: if u ψ- umax - 1 then ÜNEXT (u) = u + 1 10 else ÜNEXT (u) = 0
Als twee elementen van lijst A, ai en a(i+1) beide in het lees-schrijf-geheugen zijn opgeslagen zodat ai = M (ji) = M (ISM (ui) + li), dan wordt a (i+1) opgeslagen qp adres j (i+1), waarvoor geldt: als 15 l(i)^ lmax - 1, dan is j (i+1) = j (i) + 1. Als echter 1 (i) ^ lmax-1, dan wordt j(i+1) gevonden als: j (i+1) = ISM (UNEXT (u (i)).
HOT GLOBALE STROOMDIAGRAM
Fig. 4 geeft een globaal stroomdiagram van de fusiebewerking 20 volgens de uitvinding. Dit stroomdiagram verzorgt het opslaan van het eerste deel van lijst Ei SB,het aktiveert de eigenlijke seriële fuseer-bewerking RTMERGE, die in Fig. 6 is gedetailleerd, het bevat een repe-teerlus cm telkens het tweede deel EB van de lijst B te fuseren met een lijst A waarin het eerste deel SB van lijst B al is opgenctnen. De vol-25 gende variabelen warden gedefinieerd: a. De signaalbit "stop" is slechts waar indien alleen de kop van de lijst B:SB ψ· B is opgeslagen in het lees-schrijfgeheugen.
b. De signaalbit "mergend" is slechts waar indien alle lijstelementen b van de lijst B verwerkt zijn.
30 c. XB bestuurt het lezen van een element van de lijst B.
d. gcount definieert in iedere cyclus het begin van het einddeel EB van de lijst B.
In het stroomdiagram zijn alle blokken rechthoekig getekend, behalve de start en step blokken. In startblok 150 vindt de initialisa-35 tie van het systeem plaats, bijvoorbeeld wordt het beschikbare deel van het lees-schrijfgeheugen gedeclareerd. In blok 152 worden de variabelen in de beginwaarde gesteld en de inhoud vanhet te gebruiken deel van het lees-schrijfgeheugen ongeldig gemaakt. Verder worden de variabelen 820 1 0 57 ...................................~
* J
PHN 10.293 14 ----------gcount en mergend gelijk gemaakt aan nul. Blok 154 is een testblok, dat eveneens als rechthoekig is aangegeven. Het verschil met een bewerkings-blok is dat hier twee uitgangen optreden. Als de variabele "mergend” de waarde 1 heeft gaat het systeem naar blok 156 en is de operatie be-5 eindigd. In blok 156 werden de variabelen ongeldig gemaakt, het gebruikte deel van het lees-schrijfgeheugen vrijgegeven, en verdere beëindig gingshandelingen uitgevoerd. Als de variabele "mergend” de waarde ”0” heeft (N) wordt in blok 158 de variabele g gelijk gemaakt, aan nul en wordt in blok 160 een leesoperatie gedaan in het seriële geheugen waar de 10 lijst B is opgeslagen. In blok 162 wordt getest of het zojuist gelezen adres het eerste adres van de lijst B is. Als dat niet zo is (N) wordt. in blok 164 het volgende adres van hetzelfde seriële geheugen aangesproken, waarna het systeem voortgaat naar blok 162. Tenslotte zal het eerste adres van de lijst B warden aangesproken. Het dubbele optreden van de 15 in blok 160/164 gegeven operatie is in vele programmeertalen gemakkelijker te realiseren dan een direkte terugkeer vanblok 162 naar blok 160.
De tweede uitgang van blok 162 voert naar blek 166, waarin wordt getest of het rangnummer van' het uitgelezen element van lijst B overeenstemt met het rangnummer van het eerste element van lijst B (respektievelijk SB) 20- dat noet behandeld moet worden. Als dat niet zo is wordt in blok 168 het volgende element van lijst B uitgelezen en de rangnurrmerwaarde geïncrementeerd. Daarna gaat het systeem terug naar blok 166. In dit voorbeeld is verondersteld dat het lezen uit het seriële geheugen niet-destruktief plaatsvindt. Uiteindelijk zal de test in hLok 166 bevesti-25 gend worden beantwoord (Y). Dan wordt in bLok 170 de bit "stop" gelijk 0 gemaakt. Vervolgens wordt in blok 172 de procedure "STORE B" aangeroepen, on het besproken aantal geheugenblokken te vullen net elementen uit lijst B voor zo ver mogelijk. Deze procedure wordt nader gespecificeerd aan de hand van Fig. 5. Daarna wordt in blok 174 de proce-30 dure Z = R3MERGE (A, SB) aangeroepen, cm het eigenlijke serieel fuseren te effectueren. Deze procedure wordt nader gespecificeerd aan de hand vai Fig. 6. Als deze laatste procedure is voltooid wordt in blok 176 getest of de bit "stop" nog onveranderd is. Als dat niet zo is, (N) betekent dit dat de lijst B nog niet in zijn geheel is verwerkt. In blok 178 35 wordt dan de grootheid "gcount" bijgewerkt, zodat de volgende operatie (in blok 166) pas begint bij het nog resterende deel van de lijst B. Voorts wordt de oorspronkelijke A-lijst nu vervangen door de voorlopige 8201057 i s EHN 10.293 15 ---------gefuseerde lijst z die is qpgebcuwd uit de tot dan vigerende lijst A en - de lijst SB. Als de "stop"-bit daarentegen nog "O” is wordt in blok 180 de bit "mergend" op "1" gesteld en wordt via blokken 154, 156 de procedure beëindigd. De konstruktie middels de blokken 154, 180 levert 5 een simpele programmatische realiseerbaarheid. In andere situaties zouden ze kunnen weggelaten worden en wordt de plaats van blok 180 in-gencmen door blok 156.
HET OPSLAAN VAN DE LIJST B
Vanuit het seriële geheugen wordt één van de volgende vier 10. lijsten toegevoerd: B, BEEV, B*, BEEV*. De volgende variabelen worden nu gedefinieerd: "reversed B" is "uitsluitend" waar als het betreft de lijst BEEV óf BFEV*. Het geheugenadres JB is het adres alwaar het eerste lijstelement b zal worden opgeslagen. Het geheugenadres JE is het laatst beschikbare 15 geheugenadres, zodat dan gmax lijstelementen zijn op te slaan. SXB-is een hulpvariabele, die later wordt uitgelegd. De binaire grootheid EB is (uitsluitend) waar als het leesschrijfgeheugen tenminste één lijstelement van de lijst B bevat.
Het laden van de lijst B in het leesschrijfgeheugen wordt 20 beëindigd als êên van de twee volgende gevallen optreedt: ------------------1« XB = endb (stop blijft "O"), dat betekent dat het laatste lijstelement van lijst B op adres XB wordt opgeslagen.
2. g = gmax, zodat een gedeelte van de lijst B niet in het leesschrijf-geheugen plaats kan vinden: dat moet in een volgende cyclus worden be-25 handeld, waarbij een aangevulde lijst A wordt gepresenteerd. Als het leesschr ij f geheugen is geladen worden de volgende parametergrootheden voor de procedure KEMEKGE (Fig. 4 blok 174) geëvalueerd: "minb" is de index (geheugenadres) van het lijstelement in het leesschrijf geheugen met de kleinste attribuutwaarde; als er meerdere lijst-30 elementen met dezelfde attribuutwaarden zijn is dit het lijstelement dat, bijvoorbeeld door de ordening in het leesschrijfgeheugen, het eerst voor behandeling in aanmerking kont; "train" is de grens (eerste blokadres) van het geheugenbldk waarin dat lijstelement met de kleinste attribuutwaarde is opgeslagen; er is hier verondersteld dat het sorteren gebeurt 35 naar oplopende attribuutwaarde. Voor de definities van "maxb" en "bmax" zie hierna. De grootheid "nb" is het aantal lijstelementen dat is opgeslagen in het geheugenblok, dat door brain wordt geïdentificeerd.
8201057 *. , PHN 10*293 16 -----------"maxb" is (hier) het geheugenadres van het lijstelerrent met de grootste attribuutwaarde in het leesschrijfgeheugen.
De procedure TEST wordt te zijner tijd aangeroepen cm de ordening bij ingave te testen, alsmede de afwezigheid van duplikaten (lijst-5 elementen met onderling gelijke attribuutswaarden) in het geval de lijst b¥, respektievelijk BREV* aan de orde is.
Fig. 5 geeft een stroomdiagram van het opslaan van de lijst B in het lees-schrijfgeheugen. Dit is de procedure uit Fig. 4, blok 172. In blok 100 vinden de initiële declaraties en dergelijke plaats. In blok 10 102 wordt getest of de lijst B in het seriële geheugen al:.· in de goede volgorde is opgeslagen, dat wil dus zeggen in dezelfde volgorde als de lijst A. Als de goede volgorde vigeert, dan worden in blok 104 het beginadres JB en het eindadres JE gedeclareerd; van het beschikbare deel van het leesschrijfgeheugen worden dan de eerste twee blekken vrij gela-15 ten. De ordeningsrichting binnen een geheugenblok, bijvoorbeeld volgens oplopende attribuutwaarde is dan voor beide lijsten A, B gelijk. Als voor de lijst B de "verkeerde" volgorde vigeert, worden in blok 106 beginadres en eindadres juist andersom gedeklareerd.
In blok 108 wordt de lopende variabele j gelijk genaakt aan 20 het beginadres van de B-lijst; de variabele RB wordt "O": er bevinden zich dan geen elementen van de B-lijst in het leesschrijf geheugen. Verder worden de waarden der variabelen SXB en XB bepaald door het uitlezen van het eerste element van lijst B.
In blok 110 wordt getest of de bit "stop" waar is, óf dat de 25 variabele XB, die de index van het juist gelezen lijstelement vormt, aangeeft dat dit het laatste element van de lijst B is. Als één van beide geteste veronderstellingen waar is, gaat het systeen naar blok 128, anders naar blok 112. In blok 112 wordt het zojuist uitgelezen element XB op de eerste vrije plaats van het voor de opslag van lijst B beschik-30 bare geheugengedeelte opgeslagen en het volgende element van lijst B uit het seriële geheugen uitgelezen. In blok 114 wordt lijst B uit het seriële geheugen uitgelezen. In blok 114 wordt getest of het zojuist uitgelezen element het laatste element van lijst B is. Als dat niet zo is, wordt in blok 126 getest of het geheugenadres het laatste is wat be-35 schikbaar was gesteld. Als dat zo is, wordt in blok 120 de bit "stop" op "1" gesteld. In het tegenovergestelde geval wordt in blok 118 de procedure TEST (B, SB, SXB) uitgevoerd.
8201057 EHN 10.293 17
A I
•----- De procedure TEST (S, wi, W2) detekteert fouten en brengt de......
uitvoering van het programma tot stilstand. De variabele S kan voorstellen een verzameling (s), waarvan dus alle elementen onderling verschillend zijn/ dan wel een naamgeving (BH), waarbij meerdere lijstelementen 5 dezelfde naamgeving kunnen dragen. De ordening kan "gewoon" zijn, dat wil zeggen naar oplopende attribuutwaarde (O) , dan wel omgekeerd, dus volgens aflopende attribuutwaarde. Er treedt een fout op in één van de volgende vier gevallen:
Bij (S, 0) als W1 4 W2 10 Bij (S, RO) als W2 ^ W1 Bij (H, O) als W1 < W2 Bij (H, RO) als W2 < W1.
Als er geen fout optreedt wordt W2 gelijk gemaakt aan W1. De verdere behandeling van een fout wordt eenvoudshalve niet nader beschreven. In 15 vele gevallen is de ordening foutloos en kan blok 118 worden weggelaten. In blok 122 wordt getest of de ordening normaal of omgekeerd is. In de blokken 124, 126 wordt het lopende geheugenadres bijgewerkt.
Blok 128 wordt bereikt als of wel de seriële lijst B is uitgeput, ofwel de beschikbare ruimte in het leesschrijfgeheugen geheel is 20 gevuld; dan wordt getest of de ordening al dan niet omgekeerd is. In de blokken 130, 132 wordt het aantal elementen g van de lijst B berekend uit het adres JB en het lopende adres j.. Deze grootheid g wordt later gebruikt. In blok 134 wordt getest of dat aantal . gelijk is aan nul: als dat zo is, hoeven er geen verdere stappen gedaan te worden en kan 25 het systeem via blok 142 gaan naar blok 174 in Fig. 4.
Als g ψ 0 wordt in blok 136 de grootheid RB gelijk gemaakt aan 1, ten teken dat de fuseeroperatie met de B-lijst zinvol is. In blok 138 wordt weer getest of de ordening van lijst B op het seriële geheugen omgekeerd is. Als dat niet zo is, worden in blek 140 de beide 30 grootheden hnin, minb gelijk gemaakt aan het beginadres in het lees-schrijfgeheugen waar het eerste te behandelen element van de lijst B is opgeslagen. Voorts wordt het geheugenadres van het laatste te behandelen element van de lijst B in het leesschrijfgeheugen gelijk gemaakt aan het lopende adres -1 (vergelijk de mogelijkerwijs laatste 35 operatie in hlok 124). Tenslotte wordt het aantal te behandelen elementen van de lijst B in het eerste te behandelen geheugenblok gelijk gemaakt aan de lengte van dat geheugenblok.
8201057 1 > I * PHN 10.293 18 --- In het tegenovergestelde geval worden de betreffende varia- — beien gedeklareerd in blok 141. De waarde van minb wordt 1 groter dan j (vergelijk de operatie in blok 126). De waarde van de eerste blokgrens tmin wordt berekend als het bloknuramer maal de bloklengte lmax. Het 5 bLoknuraner is het naar beneden op een geheel getal afgeronde quotient van het adres tmin en de bloklengte lmax. Het laatste te behandelen adres • in het leesschrij fgeheugen wordt gelijk gemaakt aan het adres van het eerst ingeschreven element van lijst B. Tenslotte· wordt het aantal lijst-elementen in het eerste te behandelen blok van de B-lijst (dit is van 10 achteren af gevuld) berekend: (minb-bmin) is daarin het aantal lege lij stelementplaatsen. Na de blokken 140, 141 gaat het systeem via blok 142 terug naar blok 174 in Fig. 4.
Fig. 6 geeft een stroomdiagram van de eigenlijke seriële bewerkingen bij het fuseren. In blok 200 vindt de initialisatie plaats.
15 De volgende variabelen zijn te deklareren: XA dit is de leesvariabele voor de A-lijst (vanuit het seriële geheugen). bega, enda betreft de eerste en laatste adressen van de gesorteerde A-lijst in het seriële geheugen; RA is een binaire variabele die uitsluitend waar is als het leesschrijf-20 geheugen tenminste één lijstelement van lijst A. bevat; SXA is een hulpvariabele die in de procedure TEST wordt gebruikt.
De blokken 202, 204, 206 stemmen overeen met de blokken 160, 162, 164 in Fig. 4, nu voor de lijst A.
De blokken 208, 210, 212, 214 betreffen procedure INITKEM. Laatstgenoem-25 de bestaat uit twee delen, namelijk een deel dat beslist hier in het stroomdiagram gesitueerd moet zijn en een ander deel dat cm de verwerkingssnelheid te vergroten is geïmplementeerd.In deze procedure zijn de volgende variabelen gedeklareerd.
• CB: als RB = "O" wordt deze niet gebruikt; 30 als RB = "1" heeft deze de waarde M (minb), dat is dus de attribuutswaarde van het eerste element van de lijst B; mina, maxa zijn de geheugenadressen in het leesschrijfgeheugen waar het kleinste, respektievelijk grootste element van de A-lijst is opgeslagen; amin, amax zijn de blokgrenzen (eerste adres van het respektievelijke 35 blok dat de geheugenadressen mina, respektievelijk maxa bevat); cumin is de geheugenplaats in de lijst ISM in de eerste bLoklijstbij- houdinrichting waarvandaan het adres amin wordt aangewezen; cumax is op dezelfde manier de geheugenplaats in de lijst ISM, waar 82 0 1 0 5 7 * I * i * PHN 10.293 19 ---vandaan het adres amax wordt aangewezen. -;
In blok 208 worden de geheugenblokken "O" (eerste adres in lees-schrijfgeheugen is "O", en blok ”lmax" (dus het naastvolgende blok) geassigneerd. Deze procedure "GIÏÏEBLOCK" voor de tweede bloklijstbijhoud-5 inrichting wordt nader uitgelegd aan de hand van Fig. 13. Deze beide blokken zijn nu beschikbaar gemaakt voor de A-lijst. In blok 210 wordt getest of de variabele RB de waarde "1" heeft (deze is "1" gemaakt in blek 136 in Fig. 5). Als dat zo is wordt in blok 212 de variabele CB geassigneerd. Vervolgens worden in blek 214. zeven grootheden op nul ge-10 steld. Er wordt nog op gewezen dat van deze zeven grootheden cumin en cumax geheugenadressen in de lijst ISM vannen/ de andere vijf grootheden echter geheugenadressen in het leesschrijfgeheugen M zelf. Na blok 214 is de initialisatie van de procedure RTMERGE voltooid.
Vervolgens worden in blek 218 de binaire grootheid RA op "O" 15 gesteld (het leesschr ij f geheugen bevat nog geen element van de lijst A) en wordt ook de variabele t gelijk gemaakt aan 0 (t is het element-nuirner voor de gefuseerde lijst Z). Tenslotte krijgen de grootheden XA en SXA de uit het seriële geheugen gelezen .waarden. In blok 218 wordt getest of het betreffende lijstelement het laatste adres van de A-lijst 20 vertegenwoordigd. Als dat niet zo is wordt in blok 224 de procedure PROCESSA uitgevoerd/ welke nader worden beschreven aan de hand van de f iguren 7a tot en met 7b. In blok 226 wordt het volgende element van de lijst A gelezen en in blok 228 getest of dit het laatste element van de A-lijst is. Als de test negatief (N) uitvalt wordt in blok 230 25 de' procedure TEST (A, XA, SXA) uitgevoerd. In blok 232 wordt daarop het lijstnuirmer van de gefuseerde lijst met 1 opgehoogd, net zo lang tot in blok 218 gedetekteerd wordt dat de lijst A is uitgeput. In de blokken 218, 224,....... 232 wordt dus de eigenlijke fuseeroperatie uitgevoerd. Als dat is gedaan kan het leesschrijfgeheugen nog zinvolle 30 elementen voor de te fuseren lijst bevatten. De blokken 220, 222, 234-20 bevatten de procedure EMFIYRAM, die het leesschrijf geheugen loost.
In blok 220 wordt getest of het leesschrijf geheugen nog van beide lijsten A, B elementen bevat. Als dat zo is wordt in blok 222 middels de procedure Z(t) = DIMRAM daarvan de kleinste aan de gefuseerde 35 lijst toegevoegd en wordt de index t geïncreraenteerd. Als een van bel dg oorspronkelijke lijsten is uitgeput wordt eerst in blok 234 getest of dit de B-lijst betrof. Als dat zo is wordt in blok 240 voor het lijst- 8201057 PHN 10*293 20 * I * ------element van de gefuseerde lijst bet kleinste element van de A-lijst genomen, en de procedure AFREE uitgevoerd* Deze wordt besproken aan de hand van. Fig. SL Als in blók 234 echter wordt gedetecteerd dat de A-lijst is uitgeput, gaat het systeem via blok 236 naar blok 238 waar op dezelfde 5 manier als in blók 240 nu het resterende deel van de B-lijst wordt verwerkt. Déze procedure wordt nader besproken aan de hand van Fig. 8. Tenslotte zijn beide lijsten uitgepit en gaat het systeem naar het eindblok 242; en vervolgens naar het blók 176 in Fig. 4.
Er wordt nog op gewezen dat een pendant van blok 230, echter 10 voor de B-lijst is besproken bij blók 118 in Fig. 5.
De figuren 7a, 7b, 7c, 7d geven de verschillende gevallen van het uitvoeren van de procedure "PPOCESSA" in blok 224. Het resultaat van deze procedure is het toevoegen van één element aan de gefuseerde lijst Z. Daarbij kan een toestandsverandering in de organisatie van het lees-15 schrijfgeheugen optreden. Deze toestandsveranderingen hangen af van gestelde doelen. In het geval dat er lijstelenenten met gelijke attribuutwaarden toelaatbaar zijn, bijvoorbeeld: a(i) = a (i+1) = ..... = a (i+p-1) = = b (j) = b (j01) =......= b (j+q-1) dan kan gelden 20 z(t) = z (t+1) = ...... = z (t+r-1) =a (i) kunnen er bijvoorbeeld de volgende gevallen zijn: 1.1 : r = p+q (allen worden overgencnen) 1.2 : r = max (p, g) 1.3 : r = 1 25 in het geval dat de lijsten A, B geen lijstelementen met gelijke attribuutwaarden bezitten zijn er ook keuzes te maken voor de gefuseerde lijd: Indien a(i) = b(j) kunnen er de volgende gevallen zijn: 2.1 z (t) « a (i) z (t+1) ψ a (i).
2.2 3 t waarvoor z (t) =* z (t+1) = a (i) 30 Er wordt nog gedefinieerd een grootheid GA, dat is de waarde van het kleinste, en dus eerste te behandelen element van de lijst A in het leesschrijfgeheugen. Als RA =0 is CA ongedefinieerd. Verder wordt gedefinieerd na=aitdn+lmax-niina dat is de adresafstand tussen het adres van het kleinste element van de A-lijst en het einde van het geheugen-35 blok waarin dat kleinste element is opgeslagen; (mina-amin) is het aantal adressen dat reeds behandeld is (vergelijk blok 141 in Fig. 5).
Verder worden gedefinieerd: 8 2 0 1 0 5 7 r r f ! PHN 10.293 21 j --tna = max - amax + 1: dit is dus een teller die het opslaan van elemen-— ten Van de A-lijst in een blok volgt. Als amin f amax is "na" het aantal elementen in het blok amin, en "tna" het aantal lijstelemsnten in het blok amax.
5 De volgende toestandsveranderingen kunnen nu optreden in het geval (2, 1), waarin de gefuseerde lijst geen elementen met onderling gelijke attribuutwaarden bevat.
(RA, RB) z (t) voorwaarde(n) (1) 00 00 XA g = 0
10 (2) 01 00 XA g = 1 èn XA = CB
(3) 01 -> 10 CB g = 1 èn CB^ XA
(4) 01 —> 11 CB g = 1 èn CB< XA
(5) 01—>01 XA g 1 ênCB = XAofXA<'CB
Dit zijn de aanvankelijke toestandsveranderingen. In latere stadia 15 kunnen de volgende veranderingen optreden: (RA, RB) Z (t) voorwaarden (6) 00 *>00 XA leesschrijfgeheugen leeg, A niet
(7) 11 11 CA CA< CB
(8) 11 -> 11 CB CB ^ CA èn g> 1 20 (9) 11 ->10 CB CB^ CA an g = 1 (10) 1010 CA A wordt gelezen en geschreven tegelijkertijd (10 -> 00) kan alleen optreden tijdens de procedure "EMFTYRAM" (fig. 6, rechtsonder).
Een tweede geval als voorbeeld zijn (2.2). De overgangen 25 treden als boven op, alleen de overgang (2) treedt niet op, overgang (6) behoort alleen bij de begintoestand en voor overgang (5) is de vocrwaar-de XA ^ CB.
Fig. 7a-7d geven het selekteren van het lijstelemsnt voor de lijst Z (t) en het daarna implementeren van een eventuele toestands-30 verandering in het leesschrijfgeheugen, en wel voor de hierboven behandelde gevallen 2.1 en 2.2. Fig. 7a geeft het geval dat (RA, RB) = (0,1): Het leesschrijfgeheugen bevat dus geen enkel elenent van de A-lijst. Na de initiëring van de procedure in blok 260 worden in blok 262 de grootten van XA en CB vergeleken. Als de waarde van CB het kleinst is, wordt dat 35 als eerstvolgend element van de resultaatlijst genarren (blok 264). Vervolgens wordt de procedure BFREE aangeroepen (deze wordt beschreven aan de hand van Fig. 8: er kan nu imners een geheugenblok van de lijst B
8201057 * y t r 'PHN 10.293 22 ——vrijgekomen zijn. Het geheugenadres (amax) van het eerste, voor de A- ........
lijst gereserveerde geheugenblok, wordt nu gevuld met het lijstelement XA, en de bit RA wordt qp "1" gesteld.
De adresafstand tussen het zojuist ingeschreven element van lijst A 5 en het einde van het eerste te behandelen blok is nu Imax (het blok bevat nog slechts êên lijstelement). Bovendien wordt geïndiceerd dat in het geheugenblok waar het grootste element van de A-lijst is opgeslagen juist êên lijstelement aanwezig is (tna = 1).
De tweede uitgang van blok 262 leidt naar blok 266. Daarin 10 wordt het zojuist uit het seriële geheugen uitgelezen lijstelement XA aan de gefuseerde lijst toegevoegd. In blok 268 wordt getest of de lijstelementen XA en CB gelijk zijn en bovendien de gefuseerde lijst géén elementen met onderling dezelfde attribuutwaarden mag bevatten, (geval 2.1). Als dat zo is wordt het lijstelement CB ongeldig gemaakt 15 middels de procedure BFREE die besproken wordt aan de hand van Fig. 8. (blok 270). Blok 272 vormt de afsluiting van de procedure PROCESSA.
Fig. 7b geeft het geval dat RA, RB = 00, hetgeen betekent dat het leesschrijf geheugen geheel leeg is. Behalve de begin- en afslui-tingsblokken bevat deze procedure alleen het blok 276 waarin het zojuist 20 uitgelezen lijstelement aan de gefuseerde lijst wordt toegevoegd (als in blok 266, Fig. 7a).
Fig. 7c geeft het geval dat leesschrijfgeheugen alleen êên of meer elementen van de A-lijst bevat. Het leesschrijfgeheugen wordt dan bestuurd als eerst in eerst uit (FIFO) geheugen. Behalve de begin- en af-25 sluitingsblokken bevat deze procedure alleen het blok 282: daarin wordt eerst het eerst te behandelen element CA van de A-lijst toegevoerd aan de gefuseerde lijst. Vervolgens wordt uitgevoerd de procedure AFREE die zal worden beschreven aan de hand van Fig. 9.Tenslotte wordt uitgevoerd de procedure STOREX die zal warden uitgelegd aan de hand van Fig. 10.
30 Fig. 7d bevat het gekcmpliceerdste geval, waarin RA, RB = 11 zodat het leesschrijfgeheugen zowel elementen van de A-lijst als van de B-lijst bevat. Na het beginblok 300 wordt in de blokken 302 tot en met 316 de procedure DIMRAM (CA, CB, CASE) uitgevoerd die uit de opgeslagen lijstelementen het kleinste element selekteert en dat aan de gefuseerde 35 lijst toevoert met bijwerking van de status der geheugenblokken indien nodig.
In blok 302 wordt gedetekteerd of de allereerst te behandelen 8201057 C * *. κ PHN 10.293 23 ----elementen CA en CB van de twee lijsten onderling gelijke attribuutwaarden hebben. In blok 304 wordt gedetekteerd of CA kleiner is dan CB. De blokken 306, 308 vormen eikaars pendant. Als CB^ CA wordt in blok 306 de procedure BFREE uitgevoerd en in het speciale uitgangsregister RETZ dat 5 betreffende lijstelement, waarvan de attribuutwaarde CB is, opgeslagen.
Als CA^ CB wordt in blok 308 de procedure AFREE uitgevoerd en het lijstelement met attribuutwaarde CA in register EEIZ opgeslagen. Als de twee lijstelementen dezelfde attribuutwaarde bezitten (blok 302: Y), wordt in blok 310 de procedure BFREE uitgevoerd. Tesamen met blok 316 10 kont blok 310 overeen met de operaties in blok 306. In blok 312 wordt gedetekteerd of de lijst Z (t) duplikaten mag bevatten. Als dat zo is (Y) wordt in blok 316 het eerste element van de B-lijst aan het uitgangsregister RETZ toegevoerd: zo heeft dus een B-element voorrang op een A-element met gelijke attribuutwaarde. Het betreffende A-element 15 komt dan later aan de orde in blok 308. Als de resultaatlijst geen duplikaten mag bevatten, wordt in blok 314 de procedure AFREE uitgevoerd, zodat daarna het betreffende A-element niet meer wordt behandeld. Het aantal in het leesschrijfgeheugen opgeslagen, geldige, lijstelementen, vermindert dan dus met 1. Tenslotte wordt in blok 318 een element aan 20 de lijst Z(t) toegevoegd en gaat het systeem via beëindigingsblok 320 terug naar blok 226,in Fig. 6.
Fig. '8 geeft de procedure BFREE, waarin de administratie voor de B-lijst wordt bij gewerkt cm rekening te houden met het feit dat een lijstelement aan de resultaatlijst wordt toegevoerd. Eventueel kan 25 daarbij een geheugenblok beschikbaar gesteld worden voor de tweede blok-lijst-bijhoudinrichting. In bLok 332 wordt gedetekteerd of de waarde van g = 1 is, dat wil zeggen dat het betreffende lijstelement het enige element van de lijst B in het leesschrijf geheugen is. In blok 342 wordt dan de grootheid RB qp "O" gesteld en het betreffende geheugenblok vrij-30 gegeven in de procedure GIVEBDOCK (bnin). Als g ψ 1 wordt het adres van het eerstvolgend te behandelen kleinste element van de B-lijst net 1 opgehoogd, het adres van CB aangewezen en de grootheid g net een eenheid verlaagd.
In blok 336 wordt getest of de grootheid "nb" de waarde 1 heeft, "nb” 35 is de adresafstand van het aktuele B-element tot aan het einde van het betreffende geheugenblok (dit bLok behoeft a priori niet tot aan dat einde geheel met elementen van de B-lijst gevuld te zijn). Als nb = 1 8201057 RHN 10.293 24 -* ' * -----bevat het betreffende geheugenblok nog slechts één lijstelenient en wordt met het lezen van dit laatste element het blok ontruimd middels de procedure GIVEBDOCK (btnin) die besproken wordt aan de hand van Fig. 13. Voorts wordt in hlok 340 nog overgegaan naar het volgende geheugenblok 5 van de lijst B: de blokgrens wordt opgeschoven train = train + lmax, en de adresafstand tot het einde van het desbetreffende geheugenblok wordt gelijk aan de lengte daarvan: lmax. Blok 344 is weer het beëin-digingsblok.
Fig. 9 geeft de procedure AFREE, waarin de administratie van 10 de A-lijst wordt bijgewerkt cm rekening te houden met het feit dat een lijstelement aan de resultaatlijst wordt toegevoerd. Eventueel kan daarbij een geheugenblok beschikbaar worden gesteld voor de tweede bloklij stbij houdinrichting. In dat geval wordt het eerstvolgend aan te spreken geheugenblok gevonden door aanspreken van de eerste bloklijst-15 bijhoudinrichting/ cmdat de opvolgende géheugenblokken niet direkt opeenvolgende adressen behoeven te hebben. Na het beginblok 360 wordt in blok 362 getest of eerste en laatste lijstelement hetzelfde zijn (zelfde adres). Als dat zo is wordt in blok 370 het geheugenblok vrijgegeven en de bit RA bijgewerkt. Anders wordt in blok 364 getest of het onderhanden 20 geheugenblok (waarin dus gelezen wordt) nog slechts één element bevat.
Als dat niet zo is wordt in blok 366 het aktuele adres "mina" ge-incrementeerd en de afstand tot het einde van het betreffende geheugenblok gedecrementeerd: na = ng -1. Als het betreffende geheugenblok nog maar één lijstelement bevat wordt het vrijgegeven in blok 368: GIVEEDOCK 25 (amin). Verder wordt dan een volgend te behandelen geheugenblok uitgezócht. Eerst wordt de geheugenblokindex bij gewerkt met de procedure ÜNEXT die wordt uitgelegd aan de hand van Fig. 11. Vervolgens warden de grootheden amin, mina qp de aangewezen plaats van de eerste blokli jst-bij haidinrichting aangewezen en de adresafstand tot het einde van het 30 desbetreffende geheugenblok qp de maximale waarde gesteld: na = lmax.
Fig. 10 geeft de procedure STOREX, waarin de administratie van de A-lijst wordt bijgewarkt cm rekening te houden met het feit dat een lijstelement vanuit het seriële geheugen wordt qpgeslagen in het leesschrij fgeheugen. Eventueel kan daarbij een geheugenblok uit de 35 tweede bloklij stbi j houdinr ichting worden opgevraagd. Dit eerstvolgende geheugenblok behoeft niet fysiek het direkt volgende geheugenblok te zijn (vgl. Fig. 3 tussen de zevende en achtste kolom). Na het beginblok 8201057 r ι» t
------u.-n , n-r' ·' I lil.,., --Γ-- - . i-'-.-r 1 - - I L
PHN 10.293 25 --380 woedt in blok 283 getest of alle geheagenplaatsen van het dan --- aangesproken geheugenblok in de betreffende cyclus al éénmaal zijn geschreven (tna = Iraax?). Als dat niet zo is, resteert er aan het einde van dat geheugenblok nog tenminste één vrije geheugenplaats en warden 5 in blok 384 het lopende schrijf adres maxa, en het verwerkte aantal adressen in het betreffende geheugenblok "tna" met een eenheid opgehoogd. Als het geheugenblok wêl vol is, wordt in blok 386 een nieuw geheugenblok opgezocht. Het blijkt dat dit met de beschreven konfiguratie steeds mogelijk is. In de eerste plaats wordt de index cumaX bij gewerkt volgens 10 de procedure ÜNEXT die besproken zal worden aan de hand van Fig. 11.
Daarna wordt in de eerste bloklijstbijhoudinrichting die de administratie van de geheugenblokken bevat het adres cumax uitgelezen en middels de grootheden amax, maxa de procedure TAKEBLQCK uitgevoerd. Deze laatste zal worden besproken aan de hand van Fig. 12. Tenslotte wordt 15 de grootheid tna, die de adresafstand tussen het aktuele adres en het begin van het betreffende geheugenblok, op "1" gesteld. Tenslotte wordt in blok 388 op géheugenadres (maxa) het zojuist uit het seriële geheugen aangevoerde lijstelement XA ingeschreven, en de procedure via het be-eindigingsblok 390 weer verlaten.
20 Fig. 11 geeft de procedure UNEXT, welke is gebruikt cm in
Fig. 9 de grootheid cumin, en in Fig. 10 de grootheid cumax bij te werken. Na het beginblok 400 wordt in blok 402 getest of de geheugen-index in de eerste bloklijstbijhoudinrichting gelijk is aan (umax-1), dat betekent dus dat daarin het laatste onthoudelement wordt geadresseerd. 25 Als aan deze voorwaarde niet voldaan is wordt in blok 404 deze index geïncrementeerd. Als het daarentegen wél zo is, wordt blok 406 de index pp nul gesteld. Zo worden deze indices dus (modulo umax) rondgeteld. Met blok 408 is deze procedure beëindigd (terugkeer). Er wordt nog opgewezen dat umax ten minste gelijk moet zijn aan kmax (hoger 30 mag ook, maar dat geeft alleen extra benodigde opslagkapaciteit in de eerste bloklijstbijhoudinrichting). De geheugenblokgrens is dus voor elk geheugenblok dat tenminste één element van de A-lijst bevat, opgeslagen in de eerste bloklijstbijhoudinrichting. De geheugenhlokindices worden bijgewerkt in de procedures AFREE (cumin) en STQREX (cumax).
35 Figs. 12, 13 geven de procedures TAKEBLOCK en GIVEBLOCK, behelzende respektievelijk het eigenlijke in bezit naren van een geheugenblok dat wordt geïnitieerd in fig. 10, blok 386, respektievelijk het 8201057 EHN 10.293 26 *» o * ' --------eigenlijke vrijgeven van een geheugenblok dat op verschillende plaatsen wordt geïnitieerd in de Figs. 6, 7a, 7h, 7c, 7d, 8, 9. De procedure wordt uitgevoerd middels de tweede blcklijstbijhoudinrichting, die twee geheugenplaatsen bevat die geadresseerd worden middels "indO" 5 respektievelijk "indl". De twee geheugenplaatsen bieden elk plaats aan een geheugenindex voor de eerste blcklij stbij houdinrichting, zodat door het adresseren van de tweede bLoklijstbijhoudinrichting in de eerste bloklij stbij houdinr ichting een geheugenblok-beginadres voor het lees-schrijfgeheugen te verkrijgen is. Voorts is er een signaalbit EB gedekla-10 reerd. In Fig. 12 wordt na het beginblok 420 gedetekteerd of de bit EB de waarde ”1" heeft. Als dat niet zo is wordt in blok 424 de variabele "ind" (geheugenindex voor de eerste bloklijstbijhoudinrichting) gelijk gemaakt aan de inhoud van adres "indO" in de tweede bloklijstbij houdinr ichting. Als EB = 1 geldt hetzelfde met betrekking tot ind1.
15 Daarna wordt de bit EB in blok 428 geïnverteerd en keert het systeem terug naar het originerende stroomdiagram 430. In Fig. 13 wordt na het beginblok 440 in blok 442 de vigerende bitwaarde EB geïnverteerd.
In blok 444 wordt gedetekteerd of EB gelijk is aan "1". Als dat niet zo is, wxdt de grootheid op adres "indO" gelijk gemaakt aan de aktuele 20 geheugenindex in de eerste bloklijstbijhoudinrichting, zodat het daardoor aangewezen geheugenblok als vrij beschikbaar wordt aangegeven. Als EB = 1 wordt daarentegen adres "ind1" met de aktuele geheugenindex voor de eerste bloklijstbijhoudinrichting. Steeds zijn na het doorlopen van het stroomdiagram van Fig. 13 door de tweede bLoklij stbij houdinr ich-25 ting op adressen indO, ind1 de twee meest recentelijk ontruimde geheu-genblokken aangewezen. Daarvan is er tot dat daarna het stroomdiagram van Fig. 12 doorlopen wordt er nog minstens één beschikbaar. Het is mogelijk dat er na het doorlopen van het stroomdiagram van Fig. 12 geen vrij geheugenblok meer beschikbaar is voor de opslag van verdere ele-30 menten van de A-lijst. Voordat dit stroomdiagram evenwel opnieuw wordt bereikt gaat het systeem altijd tenminste eenmaal door het stroomdiagram van Fig. 13.
35 8201057

Claims (5)

  1. 2. Inrichting volgens conclusie 1, net het kenmerk, dat alle 15 (kmax) geheugenblokken eenzelfde kapaciteit voor (lmax) van genoemde eerste en tweede lijstelementen bezitten.
  2. 3. Inrichting volgens conclusie 2, met het kenmerk, dat de tweede bloklijstbijhoudinrichting een eerste en een tweede geheugen-blokbeginadres aanwijst en een indikator om daarvan het meest recent 20 ontvangene aan te wijzen om aldus het minst recent ontvangene als vervangbaar door een nieuw ontvangen beginadres en het meest recent ^ — - ontvangene als beschikbaar voor de aanwijsmiddelen te indiceren.
  3. 4. Inrichting volgens conclusie 1, met het kenmerk, dat bij gelijknamige ardeningsrichting van genoemd eerste en tweede lineair 25 ordeningskriterium de opslagbesturing dezelfde adresinkrementerings-richting heeft als de aanwijsmiddelen maar bij ongelijknamige ardeningsrichting de tegengestelde adresinkrementeringsrichting als de aanwijsmiddelen.
  4. 5. Inrichting volgens één der conclusies 1 tot en met 4, met 30 het kenmerk, dat de opslagbesturing verbonden is met de serieel werkende geheugenaansluiting en met de aanwijsmiddelen cm bij seriële ontvangst qp de geheugenaansluiting van genoemde tweede elementen een binnen genoemde (kmax-2) geheugenblokken beperkt tweede lopend schrijf-adres bij te houden en voorts een detektiemiddel bevat om bij ontvangst 35 van het laatste van genoemde tweede elementen, respektievelijk het bereiken van het einde van het laatste van genoemde (kmax-2) geheugenblokken de overige elementen van de besturingsinrichting te aktiveren, 8201057 - * ï — f PHN 10.293 29 __maar uitsluitend in het laatste geval een herhalingselement aktiveert om bij deaktivering van de onrummgsmiddelen opnieuw de opslag besturing te aktiveren, waarbij de tevoren samengevoegde derde elementen alsdan weer als eerste elementen werken.
  5. 6. Inrichting volgens één der conclusies 1 tot en met 5, met het kenmerk, dat de vergelijkmiddelen een bij aktivering gevormde tweede stand bezitten cm een door de aanwij smiddelen aangewezen tweede element direkt te vergelijken met een op de seriële géheugenaansluiting ontvangen eerste element cm pas na toevoeren van enig eerste element aan het 10 lees-schrijfgeheugen genoemde eerste stand te aktiveren. 15 20 25 30 35 8201057
NL8201057A 1982-03-15 1982-03-15 Inrichting voor het serieel fuseren van twee geordende lijsten tot een enkele geordende lijst. NL8201057A (nl)

Priority Applications (5)

Application Number Priority Date Filing Date Title
NL8201057A NL8201057A (nl) 1982-03-15 1982-03-15 Inrichting voor het serieel fuseren van twee geordende lijsten tot een enkele geordende lijst.
US06/471,974 US4536857A (en) 1982-03-15 1983-03-04 Device for the serial merging of two ordered lists in order to form a single ordered list
EP83200343A EP0089717B1 (en) 1982-03-15 1983-03-11 Device for the serial merging of two ordered lists in order to form a single ordered list
DE8383200343T DE3360294D1 (en) 1982-03-15 1983-03-11 Device for the serial merging of two ordered lists in order to form a single ordered list
JP58040858A JPS58168167A (ja) 1982-03-15 1983-03-14 リスト併合装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NL8201057A NL8201057A (nl) 1982-03-15 1982-03-15 Inrichting voor het serieel fuseren van twee geordende lijsten tot een enkele geordende lijst.
NL8201057 1982-03-15

Publications (1)

Publication Number Publication Date
NL8201057A true NL8201057A (nl) 1983-10-03

Family

ID=19839416

Family Applications (1)

Application Number Title Priority Date Filing Date
NL8201057A NL8201057A (nl) 1982-03-15 1982-03-15 Inrichting voor het serieel fuseren van twee geordende lijsten tot een enkele geordende lijst.

Country Status (5)

Country Link
US (1) US4536857A (nl)
EP (1) EP0089717B1 (nl)
JP (1) JPS58168167A (nl)
DE (1) DE3360294D1 (nl)
NL (1) NL8201057A (nl)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4903229A (en) * 1987-03-13 1990-02-20 Pitney Bowes Inc. Forms generating and information retrieval system
JP2753260B2 (ja) * 1987-05-13 1998-05-18 株式会社日立製作所 マージ方法
US6178414B1 (en) * 1997-12-16 2001-01-23 Nortel Networks Limited Method and apparatus for updating and searching an ordered list of values stored within a memory resource
US6778724B2 (en) * 2000-11-28 2004-08-17 The Regents Of The University Of California Optical switching and sorting of biological samples and microparticles transported in a micro-fluidic device, including integrated bio-chip devices
US8595225B1 (en) * 2004-09-30 2013-11-26 Google Inc. Systems and methods for correlating document topicality and popularity
US20070061779A1 (en) * 2005-09-13 2007-03-15 Bernd Dowedeit Method and System and Computer Program Product For Maintaining High Availability Of A Distributed Application Environment During An Update
JP5304443B2 (ja) * 2009-05-28 2013-10-02 富士通セミコンダクター株式会社 描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US921028A (en) * 1908-06-01 1909-05-11 American Glue Company Method of shaping abrasive paper.
US912008A (en) * 1908-09-14 1909-02-09 Robert Lohr Piano-action.
US924001A (en) * 1908-12-04 1909-06-08 Mergenthaler Linotype Gmbh Line-casting machine.
US938007A (en) * 1908-12-09 1909-10-26 John T Manning Folding umbrella.
US972003A (en) * 1910-01-04 1910-10-04 Edward A Leet Horn.
US3775753A (en) * 1971-01-04 1973-11-27 Texas Instruments Inc Vector order computing system
US4210961B1 (en) * 1971-10-08 1996-10-01 Syncsort Inc Sorting system
UST972003I4 (en) 1971-11-17 1978-07-04 Sort/merge algorithm
UST912008I4 (en) 1972-12-26 1973-07-10 Method for reordering the records of a file
UST924001I4 () 1973-02-16 1974-07-02 UST924001I4
UST921028I4 (en) 1973-09-17 1974-04-23 Sort process
UST938007I4 (en) 1974-01-18 1975-09-02 Internal sort process
JPS5413306B2 (nl) * 1974-01-24 1979-05-30
US3931612A (en) * 1974-05-10 1976-01-06 Triad Systems Corporation Sort apparatus and data processing system
NL7608165A (nl) * 1976-07-23 1978-01-25 Philips Nv Inrichting voor het besturen van informatie- stromen.
US4209845A (en) * 1977-01-25 1980-06-24 International Business Machines Corporation File qualifying and sorting system
CH623752A5 (nl) * 1977-06-06 1981-06-30 Bachofen & Meier Maschf
JPS6051731B2 (ja) * 1978-06-15 1985-11-15 三菱電機株式会社 二段構造ファイル方式
US4425617A (en) * 1981-03-23 1984-01-10 Rca Corporation High-speed data sorter

Also Published As

Publication number Publication date
DE3360294D1 (en) 1985-07-25
EP0089717B1 (en) 1985-06-19
US4536857A (en) 1985-08-20
EP0089717A1 (en) 1983-09-28
JPS58168167A (ja) 1983-10-04

Similar Documents

Publication Publication Date Title
NL8005136A (nl) Inrichting voor het associatief zoeken in een sekwentiele informatiestroom die is opgebouwd uit informatievakken.
US4003031A (en) Information-arranging device
CN105264488B (zh) 用于使用数组对来合并有序列表的方法和系统
JP2811570B2 (ja) スマートカード使用の電子式支払い方法
JPS6293735A (ja) コンパイラ
CN110018914A (zh) 基于共享内存的消息采集方法及装置
NL8201057A (nl) Inrichting voor het serieel fuseren van twee geordende lijsten tot een enkele geordende lijst.
US7111289B2 (en) Method for implementing dual link list structure to enable fast link-list pointer updates
CN100410865C (zh) 驱动设备及相关计算机程序
US5086408A (en) Method and apparatus for merging
JPS5985537A (ja) デ−タワ−ド用分類装置及び集積回路化デ−タプロセツサ
JPH10505451A (ja) リアルタイムファイルをインターリーブする方法及び装置
JPS5864549A (ja) 選択回路
NL8103895A (nl) Inrichting voor het beheren van een tussengeheugen bij een massaal datatransport tussen een broninrichting en een bestemmingsinrichting.
FR2676319A1 (fr) Procede et dispositif de selection d&#39;informations utilisables par une unite locale reliee a un systeme de transmission numerique.
JPS5952465B2 (ja) 記憶装置の書込み読出し制御方式
JPS633349A (ja) フアイルスペ−ス割当て処理方式
EP0564290B1 (en) High speed sorting apparatus
JPH05505049A (ja) ステージングメモリを介してデータを転送する方法および装置
CN116880815A (zh) 代码生成的方法及代码生成装置
JP4002474B2 (ja) 回線バッファ制御装置
JPS6312022A (ja) ソ−タの区分制御回路
JP5407467B2 (ja) ファイルシステムおよびそのアクセス方法並びにプログラム
JP3516365B2 (ja) メモリ内レコード格納方法および装置
EP2016485A1 (en) Method for controlling a data storage system

Legal Events

Date Code Title Description
A1B A search report has been drawn up
BV The patent application has lapsed