NO173575B - Databehandlingssystem - Google Patents
Databehandlingssystem Download PDFInfo
- Publication number
- NO173575B NO173575B NO86863125A NO863125A NO173575B NO 173575 B NO173575 B NO 173575B NO 86863125 A NO86863125 A NO 86863125A NO 863125 A NO863125 A NO 863125A NO 173575 B NO173575 B NO 173575B
- Authority
- NO
- Norway
- Prior art keywords
- data
- data record
- store
- stream
- reference value
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 209
- 238000003860 storage Methods 0.000 claims description 175
- 238000012545 processing Methods 0.000 claims description 58
- 230000006870 function Effects 0.000 claims description 43
- 239000000523 sample Substances 0.000 claims description 42
- 230000015654 memory Effects 0.000 claims description 31
- 238000011282 treatment Methods 0.000 claims description 11
- 230000015572 biosynthetic process Effects 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims description 7
- 238000013480 data collection Methods 0.000 claims description 2
- 239000003129 oil well Substances 0.000 claims 2
- 230000008569 process Effects 0.000 description 132
- 230000036962 time dependent Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 9
- 238000005755 formation reaction Methods 0.000 description 9
- 238000005259 measurement Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 4
- 238000011012 sanitization Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 229930195733 hydrocarbon Natural products 0.000 description 3
- 150000002430 hydrocarbons Chemical class 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000001404 mediated effect Effects 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 230000007420 reactivation Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000001154 acute effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005553 drilling Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004181 pedogenesis Methods 0.000 description 1
- 239000002985 plastic film Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000002994 raw material Substances 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000006467 substitution reaction 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01V—GEOPHYSICS; GRAVITATIONAL MEASUREMENTS; DETECTING MASSES OR OBJECTS; TAGS
- G01V3/00—Electric or magnetic prospecting or detecting; Measuring magnetic field characteristics of the earth, e.g. declination, deviation
- G01V3/38—Processing data, e.g. for analysis, for interpretation, for correction
Landscapes
- Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geology (AREA)
- Environmental & Geological Engineering (AREA)
- General Engineering & Computer Science (AREA)
- Remote Sensing (AREA)
- General Life Sciences & Earth Sciences (AREA)
- Geophysics (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Testing Or Calibration Of Command Recording Devices (AREA)
- Complex Calculations (AREA)
- Monitoring And Testing Of Nuclear Reactors (AREA)
- Apparatus For Radiation Diagnosis (AREA)
Description
Denne oppfinnelsen angår fremgangsmåter og systemer for databehandling, og spesielt, men ikke utelukkende, fremgangsmåter og systemer for å behandle data som blir innhentet under logge-operasjoner for å undersøke jordformasjoner som gjennom-skjæres av et borehull.
Borehull-logging er et viktig trinn i oppdagelse og utvinning av underjordiske forekomster av hydrokarboner og andre verdifulle råmaterialer. I et typisk tilfelle, etter at et borehull er boret, blir et langstrakt loggeapparat eller sonde senket ned til bunnen av borehullet ved hjelp av en armert kabel som inneholder ledninger for overføring av elektrisk kraft og signaler mellom overflateutstyret og sonden. Sonden blir så hevet opp gjennom borehullet ved å vinne inn kabelen, og sensorer i sonden blir brukt til å måle elektriske, akustiske og/eller kjernefysiske parametere i formasjonen som er gjennomskåret av borehullet. Målingene blir sendt opp gjennom kabelen og registrert av overflateutstyret. Analyse- og tolkning av målingene, enten ved borehullet under loggingen eller senere på et annet sted, vil gi opplysninger om nærvær og utvinnbarhet av hydrokarboner eller andre materialer.
Etterhvert som forekomstene av hydrokarboner er blitt forbrukt, er det blitt kommersielt økonomisk å utnytte forekomster med økende utvinnings-vanskelighetsgrad. Følgelig er loggeapparater for undersøkelse av slike forekomster blitt mer kompliserte og avanserte, slik at det nå er vanlig å ha en datamaskin blant overflateutstyret på borestedet for å lette overvåkning og styring av sonden og for å analysere målingene som utføres av sonden. En typisk datamaskin vil utføre flere funksjoner: koding og sending av tidskontroll- og andre styringssignaler til sonden for å utløse en målesyklus; mottaking av signaler fra sonden og dekoding av disse for å trekke ut opplysninger som angår målingene og driften av sonden; analyse av dataene for å overvåke driften av sonden, og generering av styresignaler som sendes for å optimalisere driften i henhold til borehullets og formasjonens tilstand; overvåking av sondens dybde i borehullet; behandling av dataene for å oppnå verdier for interessante formasjons-parametere, og generering av skjermbilleder i sann tid som indikerer valgte operasjonsparametere for sonden, modings- og formasjonsparameterne. Denne variasjon og mengde av funksjoner legger en betydelig byrde på datasystemet. Implementering av datasystemer som kan utføre alle nødvendige oppdrag raskt og nøyaktig nok til å tillate en akseptabel logge-hastighet har vist seg å være vanskelig og tidkrevende.
Behovene for datainnhenting og styring som beskrevet ovenfor blir også møtt i andre miljøer, f.eks. i luft- og romfartsanvendelser.
Et spesielt problem er det at datamaskinene må frembringe data-manipuleringsfunksjoner som er i hovedsak uavhengig av tid og varighet for prosesseringen, mens den også må behandle styrefunksjoner som blir påvirket av tid og varighet for prosesseringen. F.eks., manipulering av data man får fra sonden ved anvendelse av en Fourier-transform er en tids-uavhengig oppgave: Det samme sett med data vil alltid gi samme svar i transform-utgangen, uansett tid og varighet av prosesseringen. Innhenting av data fra sonden er erimot tidsavhengig: den egentlige verdi funnet ved inspeksjon av den siste post i en mottatt datasekvens (som kan påvirke senere styringssignaler sendt til sonden) vil avhenge av hastigheten med hvilken datapostene blir sendt opp fra hullet, og hastigheten med hvilken datapostene som kommer fra borehullet blir inspisert. Enhver endring i prosesserings-hastigheten, enten i borehullet eller på overflaten, kan påvirke resultatet. Videre vil transmisjons-hastigheten opp fra hullet i det typiske tilfellet være primært avhengig av sondens karakteristikker, slik at mottakelsestiden for hver datapost ved overflaten ikke kan styres av overflateutstyrets datamaskin. Likeledes kan sondens karakteristikker kreve at kommandosignaler blir sendt ned i borehullet med tilstrekkelig hastighet til å sikre optimal drift. De tids-uavhengige operasjoner må ikke forstyrre riktig opptreden av disse tidsavhengige funksjoner, dette for å unngå tap av data og vanskeligheter med å oppnå rask endring av sondens drift som følge av endrede forhold. Like viktig er det å sikre at tids-avhengige funksjoner ikke forårsaker feil i den tids-uavhengige prosessering. Disse karakteristikker må bevares til tross for system-modifikasjoner som angår maskinvare (f.eks. endring i prosessorens takt) eller programvare (f.eks. tillegg av program-moduler).
Man kjenner til slike teknikker som avbrudds-prosessering for å koordinere utførelsen.av flere funksjoner. Disse må imidlertid anvendes med stor forsiktighet for å sikre tilstrekkelig operasjons-hastighet og å unngå konflikter i bruken av prosessor-ressurser så som RAM-hukommeIse. Dette er spesielt tilfelle med moderne borehull-loggeoperasjoner, hvor avanserte måleteknikker genererer store mengder data ved bruk av sonden som kan kreve nøyaktig styring, og hvor undersøkel-senes kostnader krever at loggingen utføres så raskt som mulig. Følgelig, å frembringe et pålitelig og effektivt databehandlingssystem under slike forhold er både vanskelig og kostbart.
Problemet blir enda mer akutt når flere oppgaver skal løses samtidig, enten ved hjelp av tidsdeling for en prosessor eller ved bruk av flere prosessorer i parallell.
Man kjenner forskjellige anordninger for segmentering av funksjoner som skal utføres av datamaskiner og for å samordne operasjonen av fler-prosessorsystemer. I "Coroutines and networks of parallel process" av G. Kahn og D.B. MacQueen, Information Processing 77, International Federation of Information Processing Societies (1977), sidene 993-998, er det f.eks. beskrevet et system hvor prosesser kan utføres samtidig, og kan kommunisere med hverandre via "kanaler". Kanalene virker som først inn - først ut bufferkretser som bærer informasjonen i bare en retning, nemlig fra prosesser som genererer data til prosesser som trenger data. En prosess som trenger en datapost kan aksessere den kanal som forbinder den med den prosess som genererer vedkommende datasekvens, hvoretter den vil motta den nest følgende post i den sekvens som er lagret i kanalen. Et slikt system er et eksempel på en såkalt datastrøm-arkitektur.
En annen type datastrømsystem er beskrevet i "Performance analysis og a data-flow processor", av D.P. Misunas, Proceedings of the 1976 International Conference on Parallel Processing (1976), sidene 100-105, og i "Applying data flow in the real world", av W.G. Paseman, Byte, McGraw-Hill, vol. 10 nr. 5 (mai 1985), sidene 201-214. Slike systemer kommuniserer mellom prosesser ved hjelp av datapakker av fast størrelse, og en prosess blir ikke utført før alle dataposter den trenger for å fullføre sin funksjon er tilgjengelige. Tilgjengelighet av alle dataposter trygger utførelsen av prosessen, som ikke har noen styring over hvor vidt den blir utført eller i hvilken utstrekning den blir utført. Et lignende datastrøm-system er beskrevet i U.S.Patent nummer 4 197 589, og en prosessor for samtidig oppgaveløsing og instruksjon er beskrevet i U.S. Patent nummer 4 229 790. Beslektet teknikk er også kjent fra U.S. Patent nummer 4 128 882 og U.S. Patent nr. 4 153 932. Ingen av de to sistnevnte patentene viser imidlertid noe system for å utføre to samløpende behandlinger, hvor utførelseshastigheten for den ene behandlingen ikke innvirker på bestemmelsen av referanseverdien i den andre behandlingen. Dette er en ulempe.
Et formål med den foreliggende oppfinnelse er å frembringe et system og en fremgangsmåte for databehandling som letter implementeringen av samtidige tidsuavhengige og tidsavhengige operasjoner.
Et annet formål med oppfinnelsen er å frembringe et system og en fremgangsmåte som letter databehandling ved hjelp av et flertall samtidige prosesser.
Et ytterligere formål med oppfinnelsen er å frembringe et system og en fremgangsmåte for databehandling ved bruk av et flertall dataprosessorer.
Oppfinnelsen er definert nøyaktig i de etterfølgende patentkravene. Oppfinnelsen dekker forskjellige aspekter, i tråd med følgende opplysninger: Ifølge et aspekt ved den foreliggende oppfinnelse er det frembrakt et databehandlingssystem som omfatter: en inngangsanordning til å motta sekvensmessig opptredende dataposter som
skal prosesseres av systemet, en prosessoranordning for samtidig å utføre et flertall prosesser for å generere ytterligere sekvensmessig opptredende dataposter, en anordning for tilordning av respektive unike indeksverdier til datapostene i henhold til kilden for hver av disse poster og dennes sekvensmessige posisjon i forhold til andre poster motatt fra samme kilde, en lageranordning for lagring av de nevnte dataposter, en anordning til å levere en utvalgt datapost fra lageranordningen til prosesseringsanordningen for bruk ved utførelsen av en prosess, hvilken datapost er utvalgt i henhold til den tilordnede indeksverdi som bestemt under utførelse av prosessen, og en utgangsanordning for levering av dataposter som er resultatet av utførelse av den nevnte prosess.
Ifølge et annet aspekt ved oppfinnelsen er det frembrakt et databehandlingssystem som omfatter: En inngangsanordning til å motta sekvensmessig opptreden til dataposter som skal prosesseres av systemet, en prosessoranordning for samtidig å utføre et flertall prosesser for å generere ytterligere sekvensmessig opptredende dataposter, en anordning for tilordning av de nevnte mottatte og ytterligere dataposter med respektive indeksverdier i henhold til kilden for hver av disse poster og dennes sekvensmessige posisjon i forhold til andre poster mottatt fra samme kilde, en lageranordning for lagring av de nevnte dataposter, en anordning til å levere en utvalgt datapost fra lageranordningen til prosesseringsanordningen for bruk ved utførelsen av en prosess, hvilken datapost blir utvalgt i henhold til den tilhørende indeksverdi som bestemt under utførelse av prosessen og hvor all utveksling av data mellom prosesser skjer via den nevnte leveringsanordning, og en utgangsanordning for å levere utvalgte dataposter som er resultatet av utførelse av prosessen, hvilken dataposter blir utvalgt i henhold til tilhørende indeksverdier.
Ifølge et ytterligere aspekt ved oppfinnelsen er det frembrakt en fremgangsmåte for databehandling, omfattende disse trinn: mottaking av sekvensmessige opptredende dataposter som skal prosesseres, samtidig utførelse av et flertall prosesser for å generere ytterligere sekvensmessig opptredende dataposter, tilordning av dataposter med respektive unike indeksverdier i henhold til kilden for hver slik post og dennes sekvensmessige posisjon i forhold til andre poster mottatt fra samme kilde, lagring av de nevnte dataposter, og levering av en utvalgt lagret datapost for bruk ved utførelsen av en prosess, hvilken datapost blir utvalgt i henhold til den tilhørende indeksverdi som bestemt under utførelsen av prosessen.
Ifølge enda et aspekt ved oppfinnelsen er det frembrakt en fremgangsmåte for databehandling, omfattende disse trinn: Mottaking av sekvensmessig opptredende dataposter som skal prosesseres, samtidig utførelse av et flertall prosesser for å generere ytterligere sekvensmessig opptredende dataposter, tilordning av de nevnte mottatte og ytterligere dataposter med respektive unike indeksverdier i henhold til kilden for hver slik post og dennes sekvensmessige posisjon i forhold til andre poster mottatt fra samme kilde, lagring av de nevnte poster, levering av en utvalgt lagret datapost for bruk ved utførelsen av en prosess, hvilken datapost er utvalgt i henhold til den tilhørende indeksverdi som bestemt under utførelsen av prosessen, hvor all utveksling av data mellom prosesser skjer på denne måten, og levering som utgang av dataprosesseringen utvalgte dataposter som er resultatet av utførelse av prosessen, hvilke dataposter blir utvalgt i henhold til de tilhørende indeksverdier.
Ytterligere formål og trekk ved oppfinnelsen vil fremgå av den følgende beskrivelse, under henvisning til tegningene, hvor: Fig. 1 viser et skjematisk diagram av en borehull-loggeoperasjon hvor den foreliggende oppfinnelse med fordel kan anvendes, Fig. 2 viser et skjematisk blokkdiagram av en første utførelsesform for en dataprosessor ifølge oppfinnelsen, Fig. 3 viser et flytdiagram som illustrerer operasjonen av en sentral prosesseringsenhet som danner en del av
dataprosessoren på figur 2,
Fig. 4 viser et skjematisk blokkdiagram av en lagerinnretning for bruk ved realisering av oppfinnelsen, Fig. 5 viser et blokkdiagram av en annen lagerinnretning
for bruk ved realisering av oppfinnelsen,
Fig. 6 viser et skjematisk blokkdiagram av en annen ut-førelsesform for en dataprosessor ifølge oppfinnelsen, Fig. 7-9 viser flytdiagrammer som illustrerer operasjonen av sentrale prosesseringsenheter som danner deler av dataprosessorern på figur 6, Fig. 10 viser et skjematisk blokkdiagram av en alternativ utførelse for dataprosessorene vist på figurene 2 og 6, og Fig. 10 - 15 viser flytdiagrammer som illustrerer fremgangsmåter som kan brukes til å realisere en dataprosessor ifølge oppfinnelsen ved programmering av en vanlig datamaskin.
Databehandlings-systemet og fremgangsmåten ifølge denne oppfinnelsen er ikke begrenset til noen spesiell type databehandling. Imidlertid kan de med fordel benyttes for samtidig utførelse av prosesser som må implementere både tids-uavhengige funksjoner, så som aritmetisk manipulering av data fra måleoperasjoner for å utlede ytterligere informasjon, og tids-avhengige funksjoner, så som samtidsstyring av en måleinnretning. Et eksempel som omfatter begge typene funksjon er operasjonen av et borehull-loggeapparat, som illustrert skjematisk på figur 1.
Det henvises først til figur 1, som viser et langstrakt loggeapparat eller -sonde 10, opphengt i en armert flerlederkabel 12 i et borehull 14 som gjennomskjærer en jordformasjon 16. Sonden 10 beveges i borehullet 14 ved å slippe ut kabelen 12, for deretter (mens logge-målingene blir utført) å sveive den opp igjen over et hjul 20 og en dybdemåler 22 ved hjelp av en vinsj som danner en del av overflateutstyret 24. Dybdemåleren 22 forskyvningen av kabelen 12 over hjulet 20, og dermed dybden av apparatet 10 i borehullet 14.
Loggeapparatet 10 omfatter en eller fler transdusere for å måle parametere i formasjonen 16, typisk ved hjelp av elektriske, akustiske eller kjernefysiske teknikker. Transduserne genererer elektriske signaler som er beslektet med de ønskede parametere, og disse signalene blir bearbeidet av prosesserings- og grensesnittkretser i sonden 10 for å sendes opp kabelen 12 til overflateutstyret 24. Utstyret 24 omfatter en dataprosessor 26, og vil i det typiske tilfellet motta, dekode og registrere signalene på et kart og/eller magnetisk båndopptager som en funksjon av de dybdesignaler som genereres av dybdemåleren 22. I tillegg kan utstyret 24 prosessere dataene som representeres av disse signalene for å gi en indikasjon av de ønskede formasjons-parametere som også blir registrert. Videre prosessering av disse og andre signaler fra sonden 10 setter overflateutstyret 24 i stand til å overvåke operasjonen av sonden 10 og å generere signaler som blir sendt ned gjennom kabelen 12 for å styre sonden 10, f.eks. ved å synkronisere operasjonen av dens komponeneter eller å modifisere innstillingen av forsterkere.
De nøyaktige detaljer av konstruksjon og drift av sonden 10 og apparatene for å kommunisere signaler mellom sonden 10 og overflateutstyret 24 er ikke en del av den foreliggende oppfinnelse, og da det er vel kjent blant fagfolk på området trenger de ikke å beskrives her. Likeledes er de spesifikke algoritmer for prosessering av data som mottas fra sonden 10 for å utlede verdier for formasjonsparametere og styringssignaler som skal sendes til sonden 10 ikke en del av denne oppfinnelsen, og skal ikke beskrives.
Dataprosessoren 26 må prestere to forskjellige slags prosessering. Det første slaget er i hovedsak uavhengig av det tidspunkt ved hvilket den blir utført. Utledning av verdien får en ønsket formasjonsparameter fra data som mottas fra sonden 10 vil således alltid gi det samme resultat, uansett når utledningen finner sted.
Den andre typen prosessering er tidsavhengig. Å merke nærværet av en datapost på kabelen 12 som skal sendes bort fra hullet av sonden 10, og en heldig oppfanging og registrering av disse data, avhenger av rett tids overvåkning av kabelen ved prosessoren 26. Likeledes må generering av kommandosignaler som skal sendes ned i hullet til sonden 10 utføres med en hastighet som er tilstrekkelig til å oppnå riktig drift av sonden 10 og tilstrekkelig respons overfor endrede forhold.
Disse to typer prosessering kan lett komme i konflikt med hverandre. En nøyaktig utledning av en parameterverdi kan ta
for lang prosessortid, og resultere i forsinket eller unøyaktig generering av kommandosignaler og/eller feil i deteksjon og registrering av data som er sendt til overflaten. Likeledes kan datamottagning og generering av kommandosignaler forstyrre evalueringen av mottatte data, ved å endre dataverdier som fremdeles er nødvendige for andre beregninger. Videre, selv om et program funksjonerer korrekt, kan det være at det ikke vil fortsette med det, f.eks. efter overføring til en annen type datamaskinsystem som virker med en annen hastighet, eller efter en modifikasjon for å øke antallet programmoduler. Systemer og fremgangsmåter for operasjon av dataprosessorer som letter effektiv og korrekt programmering til å utføre slike oppdrag og til å unngå disse problemene skal nå beskrives under henvisning til figurene 2 til 15.
I disse figurene er dataprosesseringen for enkelthets skyld representert som utført ved flere sentrale prosesseringsenheter (CPU-enheter) som virker i parallell, hvor hver CPU-enhet er dedikert til en oppgave i den totale prosesseringsoperasjon. Det må imidlertid forstås at oppfinnelsen like gjerne kan implementeres ved en eller flere CPU-enheter hvis ressurser kan deles mellom flere forskjellige prosesser, hvor hver prosess tilsvarer den oppgave som ville bli utført av en dedikert CPU-enhet. Uttrykket samtidige prosesser brukes her til å gjelde to eller flere prosesser som blir utført med hvilken som helst av disse anordninger. En slik prosess kan være meget komplisert i seg selv, og omfatter flere hundre instruksjoner. Hvis det er to eller flere CPU-enheter kan de være fordelte prosesseringsenheter forbundet med datakanaler av forholdsvis lav båndbredde, eller flere prosesserings-enheer forbundet med datakanaler av forholdsvis høy båndbredde (f.eks. ved deling av den samme hoved-hukommelse).
Likeledes er lagringen av data før og etter prosesseringen av en CPU-enhet for enkelhets skyld representert som delt mellom flere adskilte lagerinnretninger. En enkort stor lagerinnretning kunne imidlertid bli brukt med passende fordeling av sin kapasitet mellom de forskjellige behov for datalagring. Teknikker for implementering av slik deling av prosessor og hukommelsesressurser er kjent, og skal ikke beskrives i detalj her.
Som et eksempel, figurene 2 og 3 gjelder en anordning for å beregne røttene (verdier av x som gir y = 0) for en annen grads ligning
i henhold til formelen
hvor a, b og c er satt inn som koeffisienter. Antallet av CPU-enheter, deres innganger og utganger, og konfigurasjon og sammenkobling av tilhørende lagerapparater er vist i henhold til dette. Disse detaljer vil selvfølgelig variere, avhengig av hva prosessoren skal brukes til.
Det henvises nå til figur 2, som viser en dataprosessor 30 med tre CPU-enheter 32 til 36. Hver CPU-enhet mottar dataposter ved en eller flere innganger, og etter prosessering leverer den datapostene ved en eller flere utganger. For dette formål omfatter CPU-enhetene aritmetikk- og logikk-kretser, registere og instruksjons-dekodingskretser på kjent måte. I tillegg antar man at hver CPU-enhet har sin egen hukommelse for å lagre det programmet av instruksjoner som styrer dens operasjon, og for å lagre data som blir manipulert i henhold til disse instruksjonene. Selvfølgelig kan CPU-enhetene dele felles hukommelses-ressurser for disse formål. Data som skal prosesseres og prosessoren 30 (verdier for koeffisientene a, b og c) blir mottatt på innganglinjene 40, 42 og 44 som er koblet til inngangene 46, 48 og 50 til et datalager 52 som inneholder lagerinnretningene 54 til 64. Lagerinnretningene 54, 56 og 58 har respektive enkeltinnganger 66, 68 og 70 som er koblet til inngangene 46, 48 og 50 til å motta inngangsdata til prosessoren 30. De andre lagerinnretningene 60 til 64 har respektive enkeltinnganger 72, 74 og 76, og blir, som skal forklares nedenfor, brukt til å lagre data som er resultatet fra prosessering ved CPU-enhetene 32 til 36. For å tydeliggjøre inngangene er lagerinnretningene 54 til 64 vist ved prikkede linjer for lettere å kunne skille dem fra andre forbindelser.
Datalagerinnretningene 54 til 64 kan omfatte f.eks. halvleder RAM-hukommelse eller magnetplate-hukommelse eller en kombinasjon av begge disse. Som vil bli forklart nedenfor, trenger ikke datalagerinnretningene å være i stand til å skrive inn nye dataverdier til lagersteder hvor data tidligere er vært innskrevet. Det er således også mulig å benytte hukommelse som bare tillater en enkelt skriveoperasjon på et gitt lagersted. Et eksempel på en slik hukommelse er et laser-skivelager i hvilket data blir lagret ved bruk av en laserstråle for å generere og senere avlese et permanent mønster av små merker på overflaten av en metallplate eller metallisert plastplate. Slike lågere er tilgjengelig fra f.eks. Optimem of Sunnyvale of California og Optical Disk Manufakturing Co (en divisjon av Alcatel Thomson)av Redondo Beach, California. Laserplatelageret har den fordel at det tillater lagring av meget store mengder data på forholdsvis liten fysisk plass.
Hver lagerinnretning 54 til 64 er anordnet for å motta data på sine respektive innganger 66 til 76, og å lagre disse data som en strøm av suksessive dataposter. Hver tilleggs-datapost blir lagt til på enden av strømmen etter den tidligere mottatte post. Mengden av strømmen av dataposter kan i prinsippet vokse uten grenser, skjønt det på grunn av lagerinnretningenes definitive fysiske lagerkapasitet, selvfølgelig må være begrensninger på mengden av data som kan lagres på en gitt tid. Ikke desto mindre blir hver ny datapost behandlet som om den strekker seg hele lengden av strømmen.
Uttrykket datapost er brukt her til å beskrive enhver diskret informasjonsenhet som skal aksesseres uavhengig av andre enheter. Avhengig av anvendelsen kan således en datapost være, f.eks, et enkelt binært siffer (en bit), en åtte-bits byte, et seksten- eller trettitobits ord, en flere-byteverdi som representerer en verdi i heltall- eller flytkommaformat, en streng av byte som koder en streng av alfabetiske tegn, eller til og med en hel gruppe av slike verdier. En datapost kan selv være en verdi som peker til lagerstedet for andre dataposter i lageret.
Når en datapost blir lagt til strømmen i en lagerinnretning blir den forbundet med en unik indeksverdi i henhold til sin posisjon i strømmen. Indeksverdien for hver datapost er en mer enn indeksverdien for den post som ligger umiddelbart foran i strømmen. I det enkle tilfellet som er illustrert på figur 1, hvor hver strøm har en egen detekert lagerinnretning, er denne indeksverdien ganske enkelt antallet dataposter som allerede er mottatt av lagerinnretningen (forutsatt at den første dataposten har en indeksverdi på null). I disse omstendigheter krever ingen spesiell aksjon for å tildele en datapost sin indeksverdi. Videre, hvis de fysiske lagersteder i lagerinnretningen har adresser som begynner med null, vil indeksverdiene for datapostene svare direkte til adressene for lagerstedene i lagerinnretningen. Lagerinnretningene trenger bare å opprettholde en indikasjon av de neste frie lagersted til hvilket den neste mottatte datapost skal adresseres.
I stedet for å ha en individuell lagerinnretning dedikert til hver datastrøm, kan flere datastrømmer lagres i den samme lagerinnretning. En mulig tilnærming er å behandle lagerinnretningene som om de er delt i flere segmenter, hvor hvert segment er tildelt en strøm. I et slikt tilfelle ville det også være nødvendig å opprettholde et register for hver strøm i de lagersteder som innholder den første datapost i den strømmen. Lagerstedet for enhver annen datapost i den samme strømmen ville så blir identifisert ved å legge til indeksverdien for den posten til adressen for det lagersted som inneholder den første post. Alternativt kan datapostene for forskjellige strømmer blandes sammen. I dette tilfellet bør det opprettes en katalog over lagersteder forbundet med hver strøm, eller man kunne benytte en kjedet liste hvor hver lagret datapost er tilordnet en peker til lagerstedet for den neste datapost i den samme strømmen. Disse teknikkene for å styre delte hukommelser er vel kjent blant fagfolk på området.
Lagerinnretningene 54 til 64 kan inneholde hukommelser som tillater overskrivning av eksisterende data med nye data. Hvis dataposter som ikke lenger er nødvendig kan bli identifisert, slik at deres lagersteder kan brukes om igjen, er det mulig å fortsette å legge til nye dataposter til en strøm i det uendelige, skjønt mengden av poster i en lagerinnretning til enhver gitt tid selvfølgelig ikke kan overskride dens kapasitet. En mulighet for å tillate at lagersteder blir brukt om igjen er å begrense valget av dataposter som skal gjenfinnes i lagerinnretningene til poster som ikke ble mottatt tidligere enn den siste post som ble gjenfunnet. Hvis man således antar at postene blir tildelt stigende indeksverdi i den rekkefølge de ble mottatt, vil ikke indeksverdiene for poster som skal gjenfinnes bli tillatt å avta. Ethvert lagersted inneholdende dataposter med lavere indeksverdi enn den siste post som ble gjenfunnet i lagerinnretningen kan bli brukt om igjen. Teknikker til å styre begrensede lagerressurser for å oppnå dette resultat er vel kjent, f.eks. såkalt datasanering.
Selv om en ny datapost fysisk gjenbruker lagerstedet for en tidligere og nå uønsket datapost på denne måten, blir den nye posten tilordnet med en egen unik indeksverdi, idet indeksverdier for tidligere, erstattede poster aldri blir brukt om igjen. Heller ikke blir en eksisterende datapost noensinne endret. Utskifting av en datapost-verdi for en annen blir utført ved å skrive en ny datapost, med sin egen unike indeksverdi, og å bruke denne datapost isteden for den
tidligere, erstattede datapost.
Hvis lagersteder blir brukt om igjen, er det nødvendig å opprettholde et register og indeksverdien for den tidligste datapost som fremdeles blir lagret, og adressen for dens fysiske lagersted. Forskjellen mellom denne indeksverdi og den unike indeksverdi for enhver annen datapost kan så bli addert til adressen for den tidligste post for å utlede adressen for den andre posten.
Hvis lageret 52 inneholder en engangshukommelse så som den laserplate-innretningene som er beskrevet ovenfor, er slik gjenbruk umulig, slik at det ikke er noen begrensninger på indeksverdien for dataposter som skal gjenfinnes. Indeksverdier for gjenfinning av dataposter kan bli inklementert eller deklementert etter ønske. Skjønt datalageret 52 før eller senere vil bli fylt, vil dets meget høye lagerkapasitet tillate en mulig driftsperiode av betydelig varighet før lageremediet må erstattes eller økes.
Hver lagerinnretning 54 til 64 har en eller flere utganger. Innretningene 54 og 56 har tre utganger hver, henholdsvis 78, 80 og 82 og 84, 86 og 88. Innretningen 58 har en enkelt utgang 90. Innretningen 60 har to utganger, 92 og 94, og innretningene 62 og 64 har en utgang hver, henholdsvis 96 og 98. Hver slik utgang er anordnet til å gjenfinne enhver datapost i strømmen som er lagret i den tilhørende lagerinnretning ved å henvise til indeksverdien for den ønskede post. I det tilfellet man får anmodning om en datapost med en indeksverdi for hvilket man ennu ikke har mottatt data, er lagerordningene innrettet til å vente til en datapost blir mottatt for den indeksverdien, for så å returnere dataposten som følge av anmodningen. Hvis lagersteder blir brukt om igjen, brukes den samme fremgangsmåten for å identifisere lagersteder for gjenfinning av data som blir brukt for lagring av dataposter og området av indeksverdier for hvilket data kan gjenfinnes vil bli begrenset som bemerket ovenfor.
Hver av lagerinnretningene 54, 56 og 60 er for klarhets skyld vist på figur 2 med flere separate utganger som også er adskilt fra inngangene. Imidlertid må man forstå at f.eks. for magnetplatelagrene, vil inngangs- og utgangsfunksjonene bli implementert ved egnet styring av et enkelt lese/skrive-hode. Likeledes, hvis en halvleder-hukommelse blir brukt, vil disse funksjonene bli anordnet med adresse-kretser på en kjent måte.
Dataposter som blir mottatt av dataprosessoren 30 via inngangsledningene 40 - 44 blir lagret i lagerinnretnignene 54 - 58. Alle disse datapostene (koeffisientene a, b og c) skal brukes av CPU-enheten 32, som derfor har tre innganger 100 til 104 koblet til utgangene 82, 84 og 90 på lagerinnretningene henholdsvis 54, 56 og 58. En styreledning 106 fra CPU-enheten 32 til utgangen 84, tegnet som en prikket linje, klargjør CPU-enheten til å spesifisere indeksverdien for en datapost (en verdi for koeffisienten a) som skal gjenfinnes i lagerinnretningen 54 og leveres til CPU-enheten 32 via utgangen 82. Lignende styreledninger 108 og 110 til utgangene 84 og 90 klargjør CPU-enheten 32 til å spesifisere de nødvendige dataposter (tilsvarende verdier for koeffisientene b og c) som skal gjenfinnes i lagerinnretningene 56 og 58. CPU-enheten 32 er vist og generere en enkelt sum av dataposter (verdier for et midlertidig resultat, kjent som radikal-verdiene) som blir levert til lagerinnretningen 60 via dens inngang 72.
Utgangen 92 på lagerinnretningen 60 klargjør CPU-enheten 34 til å oppnå disse dataposter i henhold til indeksverdiene som er spesifisert via en styreledning 112, sammen med dataposter fra lagerinnretningene 54 og 56 (tilsvarende verdier for koeffisientene a og b) som blir levert av utgangene 80 og 88 under styring av styreledningene 114 og 116. CPU-enheten 34 leverer dataposter som er resultatet av den prosess den utfører på lagerinnretningen 62 via dennes inngang 74. Disse datapostene er verdier for en rot av annengradsligningen, hvor de tilsvarende verdier av koeffisientene a, b og c. CPU-enheten 3 6 mottar på lignende måte dataposter fra lagerinnretningene 54, 56 og 60 via utgangene 78, 86 og 94 som spesifisert via styrelednigene 118, 120 og 122, og leverer resulterende dataposter til lagerinnretningen 64 via inngangen 76. Disse datapostene er verdiene for den andre roten for annengradsligningen fordi koeffisient-verdiene.
Endelig blir datapostene i lagerenhetene 62 og 64 levert av utgangene 96 og 98 til utgangsledningene 124 og 126 på dataprosessoren 3 0 i henhold til indeksverdiene spesifisert via styreledningene 128 og 13 0.
Nøyaktig identifisering av den strøm fra hvilken en datapost skal gjenfinnes kan være nødvendig eller ikke nødvendig, avhengig av anordningen av lageret og formatet for indeksverdiene. I konfigurasjonen på figur 2 ligger således identifiseringen av den ønskede strøm i det fysiske valg av riktig styringsledning 106 - 122, 128 eller 130. Hvis hukommelsen blir delt mellom flere strømmer, kan strømmens identitet bli kodet inn i indeksverdien, slik at hver strøm dermed får sitt eget sett av indeksverdier. Alternativt kan indeksverdiene være de samme for hver strøm, og strømmens identitet kan leveres som en parameter med indeksverdien når en datapost blir forlangt.
Prosessen som utføres av hver CPU-enhet 32 til 36 er opp-summert i figur 3, som spesielt henviser til CPU-enheten 32. CPU-enhetene 34 og 36 virker på samme måten. Det henvises nå til figur 3. Indeksverdiene for dataposter som skal leveres til CPU-enheten 32 må være initialisert når prosessen settes i gang. Dette er representert ved trinnet 132. CPU-enheten 32 anmoder så om en datapost for koeffisientene fra lagerinnretningen 54, i henhold til den løpende indeksverdi, ved trinn 134. Ved trinn 136 sjekker CPU-enheten 32 hvorvidt en datapost er mottatt. Hvis ikke går prosessen i sløyfe gjennom trinnet 13 6 til en datapost er mottatt. Når en datapost er mottatt fortsetter prosessen til trinn 138, hvor en anmoder om en tilsvarende datapost for koeffisienten b fra lagerinnretningen 56, og går så i sløyfe gjennom trinnet 140 som nødvendig til en datapost er mottatt. Denne sekvensen med anmodning om sløyfe blir gjentatt en tredje gang ved trinnene 142 og 144 for å oppnå en tilsvarende datapost for koeffisienten c fra lagerinnretningen 58.
Når dataposter for alle tre koeffisientene er mottatt, går CPU-enheten 32 frem til trinn 136 hvor den beregner den tilsvarende verdi for radikalen R i henhold til formelen
R = V(b<2> - 4ac)
Denne verdien blir levert som en datapost til lagerinnretningen 60 ved trinn 148, hvor den mottar en unik indeksverdi som tilsvarer indeksverdiene for datapostene mottatt ved trinnene 134, 138 og 142.
CPU-enheten 32 fortsetter til trinn 150 hvor indeksverdiene som skal spesifiseres for gjenfinning av dataposter fra lagerinnretningene 54 til 58 blir inkrementert og går så tilbake til trinnet 134 for å gjenta sekvensen for det neste sett av koeffisienter a, b og c.
Virkemåten for CPU-enhetene 34 og 36 er meget lik, men dataposter som er anmodet om ved trinn 132 blir mottatt fra lagerinnretningen 60. For CPU-enheten 34 er den beregningen som utføres ved trinn 146 i henhold til formelen
og resultatet blir levert som en datapost ved trinn 148 til lagerinnretningen 62. For CPU-enheten 36, er utregningen som blir utført ved trinn 146 i henhold til formelen
og resultatet blir levert som en datapost ved trinn 148 til lagerinnretningen 64.
Som illustrert på figur 2 leverer alle prosesser utført av en av CPU-enhetene 32 til 36 dataposter til en lagerinnretning som er dedikert til å lagre dataposter fra den prosessen. Skjønt hver prosess som er illustrert på figur 2 bare har en utgang, kan en prosess generere to eller flere utganger, i hvilket tilfelle hver utgang vil ha sin egen dedikerte lagerinnretning. Hver prosess mottar dataposter fra bare en eller fra flere av lagerinnretningene 54 til 56, skjønt enhver lagerinnretning kan levere dataposter til to eller flere prosesser. Følgelig er det eneste kommunikasjons-middel mellom prosessene gjennom lagerinnretningene 54 til 60. Dette trekk gir betydelige fordeler. All dataoverføring til og fra prosessene blir bufret gjennom strømmene av dataposter i lagerinnretningene. Synkronisering mellom prosessene ligger således i strømmene, uten at noen spesiell anordning for dette er nødvendig i selve prosessene. En prosess kan legge til en datapost til en strøm uten å vente for at en annen post skal kunne lese den. Hver prosess kan anmode om en datapost når den er nødvendig, og ankomsten av en datapost påskynder ikke utførelsen av en annen prosess som kan bruke den posten. Siden indeksverdier aldri blir tildelt igjen til nye dataposter, og datapostene aldri blir endret, er en datapost alltid tilgjengelig til en prosess innenfor de grensene som er pålagt av en begrenset lagerkapasitet. Innenfor disse samme grenser kan er prosess anmode om enhver datapost i en strøm, og er ikke begrenset til å motta poster i en forut bestemt sekvens. Ikke desto mindre er det ingen risiko for at prosessene mottar dataposter i feil rekkefølge.
Dessuten, i utførelsesformen som er vist på figur 2, er den enste mulighet for kommunikasjon mellom prosessene som utføres av CPU-enhetene 32 til 3 6 og inngangene og utgangene for hoved-prosessoren 30, gjennom lagerinnretningene i lageret 52 (nemlig lagerinnretningene 54, 56, 58, 62 og 64). Dette kan være ønskelig, men er ikke påkrevet.
Prosesseringsfunksjonene avbildet på figurene 2 og 3 er rent tids-uavhengige. Spesielt er verdier som er oppnådd ved gjenfinning av dataposter fra lagerinnretningene 54 til 64 uavhengige av tiden da de gjenfunne dataposter opptrådte. Implementering av tids-avhengige funksjoner omfatter ytterligere gjenfinningsfunksjoner, så som de som er illustrert på figurene 4 og 5.
Figur 4 viser en lagerinnretning 150 med ytterligere kretser for å klargjøre gjenfinning av den sist mottatte datapost i strømmen som er lagret i innretningen 150, uten at indeksverdien for den posten er spesifisert av CPU-enheten som anmoder om posten. En styringsledning 152 fra CPU-enheten er koblet til et register 154, som blir oppdatert med indeksverdien hvor den sist mottatte datapost via en forbindelse 156 fra lagerinnretningen 150 hvor hver datapost blir mottatt på en inngangsledning 158. Registeret 154 er i sin tur koblet til en utgang 160 på lagerinnretningen 150. Når en anmodning for en datapost blir mottatt på ledningen 152, blir den sendt til utgangen 160 av registeret 154 sammen med indeksverdien for den sist mottatte datapost, d.v.s. den verdien som i øyeblikket blir holdt i registeret 154. Dataposten som gjenfinnes blir levert via en utgangsledning 162.
Figur 5 viser en lagerinnretning 164 med ytterligere kretser for å klargjøre et forsøk på gjenfinning av en datapost med en forut bestemt grense. På den tiden lagerinnretningen vil vente hvis det ikke er noen datapost med den spesifiserte indeksverdi. En styreledning 166 er koblet direkte til en utgang 168 på lagerinnretningen 164 for å indikere indeksverdien for den datapost som skal gjenfinnes, og er også koblet til en utløserinput T og en monostabil krets 170. En utgangsledning 172 leverer enhver datapost som er gjenfunnet, og er også koblet til en ledig inngang på den monostabile kretsen 170. En fast utgang på den monostabile kretsen 170 er koblet til en tiden-er-ute signalledning 174, og også til utgangen 168. Når en anmodning for en datapost kommer via styreledningen 166 blir anmodningen levert til lagerinnretningen 164, og samtidig blir den monostabile kretsen 170 utløst til sin ustabile tilstand for en forutbestemt tid. Hvis den ønskede datapost er i lagerinnretningen 164 eller er mottatt før utgangen av den forut-bestemte tidsperiode, blir den levert via utgangsledningen 172 slik at den klarerer den monostabile kretsen 170 før den når slutten av den ustabile perioden. Hvis imidlertid den ønskede datapost ikke blir tilgjengelig før utgangen av den forut bestemte tidsperiode, går tiden ut for den monostabile kretsen 170 og genererer et signal på tiden-er-ute-ledningen 174. Dette signalet indikerer til en anmodende CPU-enhet eller prosess at tiden-er-ute har opptrådt og kansellerer den utestående anmodning ved utgangen 168 fra lagerinnretningen 164. Hvis ønsket kan den monostabile kretsen ha en variabel ustabil periode bestemt i henhold til en verdi spesifisert av den anmodende CPU-enhet på styreledningen 166 når det er en anmodning for en datapost. Konstruksjon av kretser for å implementere en slik funksjon vil være åpenbar for fagfolk på området.
En annen dataprosessor ifølge oppfinnelsen skal nå beskrives under henvisning til figur 6. Denne prosessen benytter gjenfinningsoperasjonene beskrevet ovenfor, under henvisning til figurene 4 og 5, til å implementere en tidsavhengig funksjon i form av styring av hastigheten og dataoppsamlingen fra en sensor som beveger seg langs en bane (f.eks. en loggesonde som blir heist opp gjennom et borehull). Sensoren genererer dataposter en gang hvert annet sekund, og dens hastighet blir signalisert hvert tidels sekund. Prosessoren sjekker at datapostene fortsetter å komme fra sensoren, og avslutter driften av sensoren hvis dataene blir avbrutt i en periode som overskrider en forut innstil tidsgrense.
Det henvises nå til figur 6. Dataposter fra en sensor blir mottatt av prosessorern, betegnet generelt ved 175, på en ledning 176 og levert til en data-lagerinnretning 178 i datalageret 180. Dataposter som indikerer sensorens hastighet blir mottatt på en ledning 182 og levert til en annen datalagerinnretning 184. Denne lagerinnretningen har en utgang 186 anordnet til å frembringe en les-siste-funksjon som beskrevet ovenfor under henvisning til figur 4. Denne utgangen leverer den nyeste datapost som indikerer sensorens hastighet til en CPU-enhet 188, som også mottar data fra en utgang 190 på lagerinnretningen 178, og leverer dataposter som er resultatet av dens prosessering til en lagerinnretning 192. En annen utgang 194 fra lagerinnretningen 178, med en tiden-er-ute funksjon som beskrevet under henvisning til figur 5, leverer sensor-dataposter til en annen CPU-enhet 196, hvis utgang er koblet til en lagerinnretning 198. Utgangene 200 og 202 på lagerinnretningene henholdsvis 192 og 198 blir koblet til en tredje CPU-enhet 204 som mater dataposter til en lagerinnretning 206. En fjerde og siste CPU-enhet 208 mottar sensor-dataposter fra lagerinnretningen 178 via dennes utgang 210, og leverer dataposter til en lagerinnretning 212. Lagerinnretningene 2 06 og 212 leverer dataposter som utgangssignaler fra dataprosessoren 175 via utgangene 214 og 216 og utgangslednignene 218 og 220.
Driften av CPU-enheten 188 er illustrert i flytdiagrammet på figur 7. Når driften av prosessoren 175 begynner blir indeksverdiene for datapostene som skal gjenfinnes i lagerinnretningene 178 og 184 initialisert ved trinn 222. CPU-enheten 188 går så i sløyfe ved trinn 224, hvor det anmodes om en sensor-datapost fra lagerinnretningen 178. Siden sensoren leverer dataposter bare en gang hvert annet sekund, vil det fra begynnelsen ikke være datapost i det lagerstedet som den indeksverdi som blir spesifisert av CPU-enheten 188 i anmodningen. Følgelig, når CPU-enheten 188 går frem til trinn 226 for å bestemme om det er mottatt noen datapost fra lagerinnretnignen 178, vil svaret først være negativt. CPU-enheten 188 går derfor i sløyfe og entrer trinn 226 påny, og fortsetter å gjøre det til en datapost blir mottatt. Deretter avanserer CPU-enheten 188 til trinn 228, hvor den anmoder om den siste hastighets-datapost fra lagerinnretningene 184. Siden hastighets-dataposter blir mottatt ti ganger pr. sekund vil det allerede være dataposter i lagerinnretningen 184 selv ved den første anmodningene. Derfor er det alltid en siste verdi tilgjengelig, og anmodningene blir oppfylt umiddelbart. CPU-enheten 188 fortsetter til trinn 23 0 for å bestemme hvor vidt sensorens hastighet trenger å justeres. Denne bestemmelsen kan gjøres ifølge enhver passende algoritme, og siden den ikke utgjør noen del av denne oppfinnelsen skal den ikke beskrives her. Hvis ingen endring er nødvendig, går CPU-enheten 188 tilbake og gjentar sløyfen som begynner ved trinn 224, via trinn 232 hvor indeksverdien for bruk ved anmodning om dataposter fra lagerinnretningen 178 blir inkrementert. Hvis en endring er nødvendig, blir en passende kommando sendt til lagerinnretningen 192 ved trinn 234, og så fortsetter CPU-enheten til trinn 232 som ovenfor.
Driften av CPU-enheten 196 er indikert ved flytdiagrammet på figur 8. Indeksverdier blir initialisert ved trinn 236 når prosessoren 175 begynner driften. Prosessen avanserer så til trinn 238 for å anmode om en datapost fra lagerinnretningen 178, med en spesifisert tidsgrense. Når det gjelder gjenfinning av dataposter av CPU-enheten 188 i trinn 224 på figur 7, vil det være et intervall før datapostene blir tilgjengelig som respons på anmodningen. Under dette intervall går CPU-enheten 168 i sløyfe gjennom to beslutnings-trinn 240 og 242. I det første av disse trinnene sjekker CPU-enheten 196 hvorvidt en dataverdi er mottatt. I så fall fortsetter CPU-enheten 196 til trinn 244 hvor den inkrementerer indeksverdiene for gjenfinning i lagerenheten 178, og går så tilbake til trinn 2 38.
Hvis resultatet av trinn 240 er negativt, fortsetter CPU-enheten 196 til trinn 242, hvor den sjekker hvorvidt en tiden-er-ute-signal er mottatt fra utgangen 194 på lagerinnretningen 178. Hvis det ikke er noe slikt signal til sted er ikke tids-begrensningen for avbrytingen av data fra sensoren over-skredet, så CPU-enheten 196 gjentar beslutningstrinnene 240 og 242. Hvis imidlertid tiden-er-ute-signalet er mottatt, fortsetter CPU-enheten 196 isteden til trinn 246, hvor den sender en kommando til lagerinnretningen 198 om å avslutte sensorens drift.
Som vist på figur 9 anmoder CPU-enheten 204 opprinnelig om dataposter fra både lagerinnretningene 192 og 198, ved trinnene 248 og 250. Den sjekker så hvorvidt noen poster er mottatt fra lagerinnretningen 192 ved trinn 252. Hvis det er tilfelle sender den de mottatte dataposter til lagerinnretningen 206 ved trinn 254, fornyer anmodningen om datapost fra lagerinnretningen 192 ved trinn 256, og går tilbake til 252. Hvis ikke fortsetter den til trinn 258 for å sjekke for mottagelse av en datapost fra lagerinnretningen 198. I fravær av en datapost gjentar den sjekke-sløyfen ved å gå tilbake til trinn 252. Ellers sender den de mottatte dataposter til lagerenheten 206 ved trinn 260, fornyer anmodningen om datapost fra lagerinnretningen 198 ved trinn 262, og går tilbake til trinn 252. Effekten av den prosessen som blir implementert av CPU-enheten 2 04 er å samsortere kommandoene som blir generert av CPU-enhetene 188 og 196 i den rekkefølge de blir generert, og å sende dem til lagerinnretningen 206 for å leveres som et utgangssignal fra prosessoren 175 via ledningen 218. Denne prosessen er et eksempel på en tidsavhengig prosess, da den nøyaktige sekvens og kommandoer som kommer fra lagerenheten 206 varierer med de forhold som møtes av sensoren (f.eks. borehull-forhold) og sensorens oppførsel som et resultat av disse.
En annen tidsavhengig måte å samsortere to sett kommandoer på ville være å anordne to innganger til en lagerinnretning, hvor hver serie av kommandoer blir lagt til strømmen i lagerinnretningen via en respektiv inngang.
CPU-enheten 2 08 tar ganske enkelt sensor-dataposter fra lagerinnretningen 178 og utsetter den for passende prosessering for å få ut ønsket informasjon, som så blir levert til lagerinnretningen 212. Denne prosessering kan foregå i forskjellige former, så som en aritmetisk kontering eller en kombinasjon med andre data. Detaljene av slik prosessering angår ikke den foreliggende oppfinnelse, og skal ikke diskuteres videre.
Som var tilfellet for prosessoren 30 på figur 2, blir all kommunikasjon av data mellom prosessene som utføres av CPU-enhetene formidlet ved strømmer av dataposter som holde i lagerinnretningene, og hver datapost blir tilordnet en unik indeksverdi i sin strøm.
Når separate CPU-enheter blir brukt for hver prosess, har dette arrangement den fordel at tidsuavhengige operasjoner (så som håndtering av sensor-data av CPU-enheten 208) og tids-avhengige operasjoner (så som overvåkningen av sensor-hastigheten av CPU-enheten 188) kan bli implementert i separate prosesser, uten bekymring for mulige skadelige, gjensidige påvirkninger mellom dem. Dette letter konstruksjon, skriving og vedlikehold av effektive og pålitelige programmer. Videre er det ikke nødvendig å ta hensyn til spesielle detaljer av maskinvaren som tenkes benyttet til å kjøre programmene. Likeledes kreves ingen spesiell anordning for mulighetene av senere endringer i maskinvare, bruk av forskjellig maskinvare og endringer i de programmer som implementerer prosessen.
Håndtering av data ved CPU-enheten 208 kan således fortsette med enhver passende hastighet avhengig av håndteringens kompleksitet og hastigheten av CPU-enheten 208, uten risiko for at sensor-dataposter som venter på behandling blir tapt eller overskrevet på grunn av utførelse av andre prosesser. Disse datapostene blir tilgjengelig i lagerenheten 178 og kan gjenfinnes via utgangen 210 etter behov ved CPU-enheten 208, uansett om de tidligere har vært gjenfunnet via utgangene 190 og 194 ved CPU-enhetene 188 og 196. På lignende måte kan utgangsdata som resultat fra slik håndtering bli generert av CPU-enheten 208 i en takt som er uavhengig av takten ved hvilken data blir trukket ut via utgangsledningen 208, uten risiko for tap av data før de blir trukket ut.
Den tidsavhengige prosessen som utføres av CPU-enheten 188 kan implementeres til å overvåke og styre hastigheten av sensoren med enhver ønsket takt, og data kan følgelig trekkes ut fra lagerenheten 178 via utgangen 190. Denne prosessen vil funksjonere uavhengig av utførelsen av datahåndterings-funksjoner i CPU-enheten 208 uten muligheter for at forsinkelser eller tidsproblemer blir forårsaket av den håndteringen. Det er derfor unødvendig å vurdere tidskonflikter når prosessen programmeres.
Hvis prosessoren er implementert med en enkel CPU-enhet som er delt mellom flere prosesser, er det likeledes ingen risiko for at data som er nødvendig for tidsuavhengige prosesser blir ødelagt på grunn av utførelsen av tidsavhengige prosesser. Det er en mulighet for forsinkelser av tidsavhengige prosesser, men det at segmentering av prosesseer med kommunikasjon mellom dem bare foregår via strømmer av dataposter, letter analysen av driften av en slik prosessor, med identifisering og korreksjon av mulige konflikter. I tillegg tror man at denne arkitektur frembringer en effektiv struktur innenfor hvilken man kan implementere teknikker for å yttrykke tidsbegrensninger som gjør det mulig å unngå konflikter i tidskontrollen.
I tillegg hjelper den foreliggende oppfinnelse i konstruksjon av systemer som først kan implementeres med en enkel CPU-enhet, for siden å overføres til et system med flere CPU-enheter uten betydelig modifikasjon.
Skjønt det ikke er nødvendig å dele tidsavhengeige og tidsuavhengige funksjoner mellom forskjellige prosesser, er det vanligvis ansett som god praksis å gjøre det, og det hjelper i å redusere risikoen for tidskontroll-konflikter eller vanskeligheter med senere modifikasjoner.
Fortrinnsvis skal all kommunikasjon mellom prosessoren 175 og utenverdenen formidles via ytterligere strømmer av dataposter, som vist på figur 6. Om ønsket, kan imidlertid en eller flere prosesser utveksle data direkte med annet utstyr. Slik utveksling vil da i det typiske tilfelle bli av en tidsavhengig natur, d.v.s. at resultatene f.eks. kan avhenge av utførelseshastigheten.
Prosessorene 3 0 og 175 på figurene 2 og 6 har indivi-duelle forbindelser mellom hver CPU-enhet og lagerenhetene med hvilke dataposter blir kommunisert. Alternativt, som vist på figur 10, kan slike forbindelser bli multiplekset. Det henvises til figur 10, hvor et lager har 270 har seks lagerinnretninger 272 til 282, som hver har en respektiv inngang 284 til 294 og en respektiv enkelt utgang 296 til 306. Hver av disse inngangene og utgangene er forbundet med en inngang/utgang-krets 308, sammen med en respektiv styringsledning 310 til 320 forbundet med hver utgang 296 til 306. Tre CPU-enheter 322 til 326 er koblet til inngang/- utgang-kretsen 308 ved respektive styreledninger 328 til 332 og toveis datalinjer 334 til 338. En inngangsledning 340 og en utgangsledning 342 og tilhørende styreledning 344 er også koblet til inngangs/utgangs-kretsen 308.
I drift mottar CPU-enhetene 322 til 326 dataposter fra lagerinnretningene 272 til 282 ved å sende signaler til inngang/utgang-kretsen 308 via styrelednignene 328 til 332. Dise signalene identifiserer den lagerinnretning fra hvilke dataposter er ønsket, og indekseverdien for de ønskede poster. Inngang/utgang-kretsen 3 08 sender anmodningen, sammen med indeksverdien, til lagerinnretningen som er identifisert, via korrekt styreledning 310 til 320. Den ønskede datapost blir returnert av lagerinnretningen via de respektive utganger 296 til 306 til inngang/utgang-kretsen 308, som sender den videre til den CPU-enheten som kom med anmodningen, via korrekt datalinje 334 til 338. Dataposter som genereres av CPU-enhetene 320 til 326 blir levert til inngang/utgang-kretsen 308 via den respektive en av datalinjene 334 til 338, sammen med sammen med signal på tilsvarende styreledning 328 til 332 som identifiserer hvilken av lagerinnretningene 372 til 382 skal motta dataposter. Inngang/utgang-kretsen 308 sender dataposten til den lagerinnretning som således er identifisert ved å levere den til den rette av inngangene 284 til 294.
Inngang/utgang-kretsen 308 leverer likeledes inngangsdata som er mottatt fra inngangsledningen 340 til de rette lagerinnretninger 272 til 282, og leverer dataposter på utgangsledningen 342 i henhold til anmodninger som overføres via styreledningen 344.
Som vist på figur 10 trenger hver lagerinnretning 272 til 282 å ha bare en utgang 296 til 306, uansett hvor mange CPU-enheter som trenger dataposter fra hvilken som helst av lagerinnretningene. Inngang/utgang-kretsen 308 er anordnet til å opprettholde, for hver lagerinnretning 272 til 282, et register over lengden av strømmen av dataposter i den lagerinnretningen, og indeksverdien av den dataposten som senest ble gjenfunnet for hver CPU-enhet som trenger dataenheter fra den lagerinnretningen. Hvis lageret 270 deler hukommelse mellom flere strømmer av dataposter som forklart ovenfor, opprettholder inngang/utgang-kretsen 308 et register over de fysiske lagersteder for dataposter som utgjør hver strøm. Likeledes, hvis lese/skrive-hukommelse blir brukt, styrer inngang/utgang-kretsen også gjenbruk av lagersteder når dataposter de inneholder blir uønsket for videre prosessering. Implementering av disse funksjoner, som bruker kjente teknikker for å styre hukommelses-ressurser, bør være åpenbar for fagfolk på området.
En mulig utforming av inn/ut-kretsen omfatter to blokker av RAM-hukommelse og to registere. Ett av registrene blir brukt til utveksling av styrings- og statusinformasjon mellom inn/ut-kretsen og en CPU-enhet, og det andre registeret blir brukt for å overføre dataposter og indeksverdier. Den første blokk av RAM-hukommelse er utformet som et sett av tabeller, hvor hver tabell har sekstito par seksten-bit dataelementer og to trettito-bit dataelementer, og blir brukt til å lagre detaljene av opptil sekstito foreliggende anmodninger for dataposter fra en lagerinnretning. Ett av trettito-elementene blir brukt til å lagre indekseverdien for den siste datapost som blir lagt til strømmen av poster i den lagerinnretningen. Det andre trettitobits-elementet lagrer den fysiske adresse for det lagersted i lagerinnretningen som inneholder denne dataposten. Det første dataelementet i hvert par av seksten-bit elementer inneholder en adresseforskyvning fra indeksverdien for den siste datapost som blir lagt til indeksverdien for en datapost anmodet om av en CPU-enhet. Det andre elementet i paret identifiserer den CPU-enhet eller prosess som anmodet om dataposten. En megabyte av RAM-hukommelse anordnet på denne måten kan frembringe funksjonene for opptil sekstito utganger fra hver av firetusenognittiseks lagerinnretninger.
Den andre blokken av RAM-hukommelse er utformet som ettusenogtjuefire grupper på fire elementer hver, og blir brukt som en først-inn-først-ut buffer for dataposter gjenfunnet som følge av anmodninger fra CPU-enheter eller prosesser. Det første elementet i hver gruppe er en seksten-bit verdi som identifiserer den CPU-enhet eller prosess som anmodningen kom fra. Det andre elementet er en tolv-bit verdi som identifiserer den lagerinnretning eller strøm fra hvilken verdien ble anmodet om. Det tredje elementet blir brukt til å lagre selve dataposten, i dette tilfelle trettito bit lang. Det fjerde elementet er en fire-bit statusverdi. Med denne utformingen trenger bufferen åtte kilobyte av RAM-hukommelse. Selve lagerinnretningen kan bli implementert til å lagre opptil femhundreogtolv dataposter, hver trettito bit lang, for hver av de firetusenognittiseks strømmer. Dette krever
ytterligere åtte megabyte RAM-hukommelse.
En CPU-enhet kan utføre en skrive-operasjon ved å plassere dataposten som skal lagres i inn/ut-kretsens overføringsregister, og identiteten av adressestrømmen i kontroll- og statusregisteret sammen med en kode som viser at en skrive-operasjon er ønsket. Inn/ut-kretsen tar verdien i data-overføringsregisteret og legger den til strømmen av dataposter i den lagerinnretning som er identifisert i kontroll- og statusregisteret. Tabellen over foreliggende anmodninger for den strømmen blir så oppdatert ved å inkrementere elementene av indeksverdien for den sist ankomne datapost, samt det fysiske lagersted for denne post. I tillegg dekrementeres forskyvnings-elementene for de ønskede dataposter i hvert av de sekstito parene av elementer i samme tabell. Hvis en forskyvning blir null, og prosessparets kjennemerke ikke er null, har den nettopp tillagte datapost en indeksverdi for hvilket det er anmodet om en datapost. I dette tilfelle blir dataposten, prosess-kjennemerket og strømmens identitet lagt til bufferen av gjenfunne dataposter, og prosess-kjennemerket i tabellen over foreliggende anmodninger satt til null for å indikere at anmodningen er etterkommet.
En CPU-enhet eller prosess anmoder om en datapost fra inn/ut-kretsen ved å plassere identiteten for den strømmen som inneholder dataposten, samt sin egen identitet i kontroll- og statusregisteret, og indeksverdien for den ønskede datapost i data-overføringsregisteret. Et ubrukt par av elementer i tabellen over foreliggende anmodninger for den identifiserte strøm blir oppdatert ved forskyvning av dataposten fra indeksverdien for den post som sist ble lagt til strømmen, og med identiteten for den anmodende prosess. Den neste gjenfunne datapost i bufferen blir så plassert i data verførings-registeret, og prosess-kjennemerket og strøm-kjennemerket i de tilordnede elementer i bufferen blir plassert i kontroll- og statusregisteret. Den prosess som således er identifisert kan så gjenfinne dataposten fra inn/ut-kretsen. Hvis en eller flere CPU-enheter blir delt mellom prosesser, blir den prosess hvis anmodning er lagt til tabellen av utestående anmodninger midlertidig avbrutt som beskrevet nedenfor, og prosess-kjennemerket i kontroll- og statusregisteret blir reaktivert.
Det skal bemerkes at med denne anordningen kan en foreliggende anmodning for en datapost bli anullert ved å stille prosess-identitetselementet i tabellen over foreliggende anmodninger til null.
Som et alternativ til bruken av spesiell maskinvare, kan en dataprosessor ifølge den foreliggende oppfinnelse også bli implementert ved passende programmering av en generell datamaskin til å frembringe de lagerfunksjoner og prosesser ingsfunks joner som er beskrevet ovenfor. Figurene 11 - 15 er flyt-diagrammer som ved eksempler illustrerer måter med hvilken man kan frembringe de forskjellige lese- og skrive-funksjoner som beskrevet ovenfor.
Disse figurene forutsetter at det eksisterer grunnleggende hukommelsesstyring og prosessutførelses-operasjoner, så som skriving til og lesing fra hukommelse, datasanering, samt midlertidig avbryting og reaktivering av en prosess. Slike operasjoner danner en enhetlig del av, f. eks., Interlisp-D programming enviroment, tilgjengelig fra Xerox Corporation, Pasadena, California, og beskrevet i "Interlisp Reference Manual", utgitt av Xerox Corporation i oktober 1983.
Hver funksjon er beskrevet i form av en prosedyre som kan kalles av en prosess som skal utføre den funksjonen, når et slikt kall forekommer, vil kalle-prosessen midlertidig overføre styring til prosedyren. Hvis prosedyren således omfatter et trinn som avbryter utførelsen til en annen hendelse reaktiverer den, vil effekten være at også kalleprosessen blir avbrutt.
Figur 11 viser en prosedyre for å lese en datapost fra en strøm for en spesiell indeksverdi som følge av en anmodning fra en prosess. Prosedyren blir entret ved 350, og sjekker først hvorvidt en datapost er tilgjengelig for den ønskede indeksverdi, ved trinn 352. Dette kan f.eks. bli gjort ved å sammenligne indeksverdien med den aktuelle lengde av strømmen.
Hvis en datapost er tilstede, går prosedyren direkte til trinn 354 hvor dataposten blir hentet fra hukommelsen og levert il den anmodende prosess, hvoretter prosedyren går tilbake til kalleprosessen ved 356. Hvis den anmodede datapost ikke er tilgjengelig (d.v.s. at det ennu ikke er mottatt noen datapost for den indeksverdien), går prosedyren til trinn 358. Ved dette trinn blir indeksverdien og identiteten av den anmodende prosess lagt til en tabell som er tilordnet strømmen av dataposter for å lagre detaljer av foreliggende anmodninger i forhold til den strømmen. Denne tabellen er i hovedsak en gruppe lagersteder som er reservert på forhånd for denne hensikt, f.eks. i form av en datatabell i likhet med tabellen over foreliggende anmodninger som beskrevet ovenfor i forbindelse med inn/ut-kretsen på figur 10. Prosedyren går så frem til trinn 360, hvor utførelsen av prosedyren blir avbrutt (f.eks. ved bruk av SUSPEND PROSESS- operasjonen i Interpisp-D) til en datapost blir lagt til strømmen, hvoretter utførelsen av prosedyren blir reaktivert som beskrevet nedenfor. Deretter går prosedyren til trinn 354 som forklart ovenfor.
En prosedyre for å skrive en datapost inn i en strøm er vist på figur 12. Under henvisning til figur 12, blir prosedyren entret ved 362 og begynner med trinn 3 64 hvor dataposten blir lagret i hukommelsen. Dette kan bli implementert i Interlisp-D med hjelp av CONS-operasjonen. I det neste trinn, 366, blir en tellerkrets som indikerer lengden av strømmen av dataposter inkrementert med en, og tabellen over foreliggende anmodninger for den strøm blir sjekket ved trinn 368 om det er noen anmodninger for indeksverdi som er lik den nye strømlengden. Hvis det ikke er noen slike anmodninger går prosedyren direkte til trinn 370, hvor den første datapost som har vært lest fra strømmen blir identifisert, og så til trinn 372 for å slette alle dataposter med tidligere indeksverdier. Dette trinn kan implementeres i Interlisp-D ved hjelp av RPLACD-operasjonen. Disse to datasanerings-trinn frigjør for gjenbruk de lagersteder som har vært okkupert av dataposter som nå er uønsket, og er hensiktsmessig når man benytter en hukommelse med begrenset lese/skrive-kapasitet. Man vil forså at de kan utelates hvis en engangs-hukommelse blir brukt. Efter trinn 372 går prosedyren tilbake til kalleprosessen ved 374.
Hvis en eller flere foreliggende anmodninger blir funnet ved trinn 368, går prosedyren til trinn 376 hvor elementet angående hver av de anmodninger som blir funnet undersøkes. Hvis det omfatter en henvisning til en taktregister-funksjon, som beskrevet nedenfor i forbindelse med figur 13, blir taktregister-funksjonen annullert. Likeledes, hvis den omfatter identiteten av en annen strøm med en foreliggende anmodning, som beskrevet nedenfor i forbindelse med figur 14, blir den foreliggende anmodning på den strømmen fjernet. Elementet for hver anmodning som er funnet ved trinn 368 blir så fjernet fra tabellen. Prosedyren fortsetter til trinn 378 hvor prosessen og prosessene som anmodet om dataposter for vedkommende indeksverdi blir reaktivert (i Interlisp-D kan dette gjøres ved WAKE PROCESS-operasjonen). Deretter gjennomfører prosedyren datasaneringen ved trinnene 370 og 372 før den går tilbake ved 374.
Det henvises nå til figur 13. En prosedyre for å implementere en lesefunksjon med tiden-er-ute blir endret ved 380. Ved trinn 382 blir det sjekket hvorvidt en datapost allerede er tilgjengelig for den ønskede indeksverdi. I så fall blir dataposten hentet fra hukommelsen ved trinn 384 og levert til den anmodende prosess, til hvilken prosedyren går tilbake ved 386. Hvis ikke blir indeksverdien og identiteten for den anmodende prosess lagt til tabellen over foreliggende anmodninger for den strømmen, ved trinn 388. I denne utstrekning er prosedyren den samme som trinnene 350 til 358 i den normale lese-prosedyre som er illustrert på figur 11. I dette tilfelle er imidlertid også en taktenhet-funksjon satt opp for det ønskede tidsintervall før tiden-er-ute signalet skal genereres. Dens identitet blir lagt til tabellen over foreliggende anmodninger, og en annen tabell er tilordnet taktenheten for å indikere intervallet som skal forløpe før et tiden-er-ute signal blir generert, identiteten for den anmodende prosess og identiteten av den strøm som anmodningen kom fra. Ved trinn 390 blir taktenheten startet og ved trinn 392 blir prosedyren avbrutt. Når prosedyren senere blir reaktivert, blir det ved trinn 394 sjekket hvorvidt reaktiveringen har skjedd på grunn av at taktenheten har generert et signal som indikerer at det spesifiserte tidsintervall er forløpt. I så fall blir anmodningen som er lagt til tabellen over foreliggende anmodninger ved trinn 388 fjernet ved trinn 395, et tiden-er-ute signal blir generert ved trinn 396, og prosedyren går tilbake til kalleprosessen ved 398. Ellers må reaktiveringen ha vært forårsaket av mottagelse av en datapost med den ønskede indeksverdi, i hvilket tilfelle prosedyren flytter til trinn 384 for å hente og levere dataposten som beskrevet ovenfor.
Figur 14 viser et flytdiagram for implementering av en lesefunksjon med arbitrering, for å hente dataposter fra flere strømmer og å kombinere dem i henhold til en forut bestemt arbitrerings-algoritme. Denne kan f.eks. brukes i stedenfor den prosessen som utføres av CPU-enheten 204 i dataprosessoren 175 som vist på figur 6, for å samsortere strømmene av dataposter i lagerinnretningene 192 og 198.
På figur 14 entrer prosedyren ved 400 og begynner ved trinn 402 med å forsøke å hente en datapost fra hver av strømmene identifisert av den anmodende prosess. Ved trinn 404 sjekker prosedyren om det er funnet noen datapost. I så fall går prosedyren direkte til trinn 406 hvor en datapost blir valgt i henhold til en forutbestemt arbitreringsfunksjon. Denne funksjonen kan f.eks. velge en datapost fra en strøm fremfor en fra en annen. Prosedyren leverer den valgte datapost til kalleprosessen ved trinn 4 08 og gir styringen tilbake til den ved 410. Hvis ingen datapost blir funnet ved trinn 4 02 går prosedyren fram til trinn 412 hvor indeksverdien og identiteten for hver kalleprosess blir lagt til tabellen over foreliggende anmodninger for hver tilordnet strøm. I tillegg omfatter elementet i hve tabell identitetene for alle andre strømmer for hvilke anmodninger foreligger. Deretter avbryter prosedyren sin operasjon ved trinn 414 til en ønsket datapost blir tilgjengelig og reaktiverer prosedyren som bemerket ovenfor. Prosedyren går så tilbake til trinn 402 for å hente dataposten som nå er tilgjengelig, og fortsetter til trinn 406 som allerede forklart.
Figur 15 viser en prosedyre for å lese den siste verdi som er mottatt på en strøm. Prosedyren blir entret ved 416, og begynner med å sjekke om strømmen er av null-lengde ved trinn 418. Hvis ikke, henter prosedyren dataposten for den indeksverdien som er lik strømlengden ved trinn 420 og leverer den til kalleprosessen, før den gir styringen tilbake ved 422. Ellers leverer prosedyren en indikasjon at ingen datapost er tilgjengelig, ved step 424, før den gir styringen tilbake ved 426.
Andre funksjoner kan anordnes. En mulighet er en prosedyre for å lese den neste datapost som følger den sist mottatte via den samme utgang. Dette ville ganske enkelt kreve at utgangen fra lagerinnretningene har et register over indeksverdien for hvilken den siste datapost ble levert. En annen mulighet er en flytte-kommando som spesifiserer en indeksverdi til hvilken utgangen skal innstilles uten at noen datapost blir lest. Dette ville være hensiktsmessig i en forberedelse til å bruke en les-neste-post operasjon.
Man kan anmode om et sett dataposter med tilstøtende indeksverdier i samme datastrøm ved å definere indeksverdien for den første datapost i settet og antallet ønskede poster, uten at noen post blir levert før alle postene i settet er tilgjengelige. Man kan anmode om dataposter fra flere forskjellige strømmer, mens den aktuelle indeksverdi for hver strøm har ett eller annet forutbestemt forhold (som kan være forskjellig for hver strøm) til en felles referanse-indeksverdi. Dette vil f.eks. lette gjenfinning av tilsvarende dataposter generert samtidig fra forskjellige sensorer.
Hvis dataprosesse ifølge denne oppfinnelse blir implementert med færre CPU-enheter enn prosesser, og spesielt med en enkelt CPU-enhet, er det nødvendig med et styrings-eller fordelingsprogram for å koordinere tildelingen av CPU-ressurser mellom forskjellige prosesser. Et slikt fordelingsprogram kan ganske enkelt opprettholde en første liste over prosesser som kan kjøres umiddelbart, og en annen liste over prosesser som er avbrutt i påvente av dataposter. Hver prosess er tilordnet en prioritetsklasse ved hjelp av hvilken fordelingsprogrammet kan bestemme hvilken av prosessene i den første listen bør utføres fremfor de øvrige prosesser i listen. Når en prosess trenger en datapost, anmoder den om posten ved å kalle en leseprosedyre som forklart ovenfor. Hvis dataposten er tilgjengelig blir den levert straks, og prosessen fortsetter med utførelsen. Ellers avbryter leseprosessen utførelse av seg selv, og dermed av kalleprosessen. Avbrytelse av en prosess har den virkning at prosessen overføres fra første liste til annen liste. På lignende måte vil reaktivering av en prosess ved at en skriveprosedyre skriver en anmodet datapost føre prosessen tilbake til første liste. Når en utførelsesprosess blir overført til annen liste, avsøker fordelingsprogrammet den første listen for å identifisere den neste prosess som skal utføres i henhold til prioritetesklassen.
Det er her beskrevet og illustrert fremgangsmåter og systemer i henhold til den foreliggende oppfinnelse for databehandling i henhold til den foreliggende oppfinnelse for databehandling. Skjønt spesielle utførelsesformer for oppfinnelsen er beskrevet, betyr ikke dette at oppfinnelsen er begrenset til disse. Oppfinnelsen er således beskrevet i forbindelse med prosessering av dataposter som opptrer sekvensielt eller i serie. Det er klart at dataposter som mottas i parallell lett kan gjøres sekvensielle ved egnet buffering. Det er heller ikke nødvendig at sekvensen er tidsavhengig. Alle prosessene er vist som mottagere av dataposter fra minst en strøm. Man kan imidlertid også tenke seg prosesser som ikke mottar noen dataposter, men som bare genererer dataposter, f.eks. for å frembringe tid- og datoinformasjon eller representasjon av en bølgeform. Det må derfor være klart for fagfolk på området at forskjellige endringer og modifikasjoner av den beskrevne oppfinnelse er mulige uten å avvike fra oppfinnelsens ånd og omfang som fremsatt i kravene.
Claims (16)
1. Fremgangsmåte for å behandle data innhentet fra en sensor,
karakterisert ved at den omfatter de følgende trinn: innskrivning av de innhentede sensordata i et sensordata-lager som en strøm av sekvensmessige dataposter, idet nevnte sensordata-lager fungerer for å motta og lagre bare sensordatastrømmen; utførelse av en første behandling som innbefatter de følgende undertrinn - (a) en sensor-datapost av interesse utleses sekvensielt fra sensordata-lageret, (b) en første referanseverdi bestemmes ved bruk av nevnte sensor-datapost av interesse, (c) den første referanseverdien innskrives i et første refranseverdi-lager i en strøm av sekvensmessige dataposter, idet nevnte første referanseverdi-lager fungerer for å motta og lagre bare den første referanseverdi-strømmen, og (d) undertrinnene (a)-(c) gjentas med en annen sensor-
datapost som leses i sekvensmessig rekkefølge; utførelse av en andre behandling som innbefatter de følgende undertrinn - (a) en sensor-datapost av interesse avleses sekvensmessig fra sensordata-lageret, (b) en andre referanseverdi bestemmes ved bruk av nevnte sensor-datapost av interesse, (c) den andre referanseverdien innskrives i et andre refranseverdi-lager i en strøm av sekvensmessige dataposter, idet nevnte andre referanseverdi-lager fungerer for å motta og lagre bare den andre referanseverdi-strømmen, og (d) undertrinnene (a)-(c) gjentas med en annen geologisk
datapost som leses i sekvensmessig rekkefølge; idet den første og andre behandlingen er samløpende behandlinger hvor utførelseshastigheten for en behandling ikke innvirker på bestemmelsen av referanseverdien i den andre behandlingen.
2. Fremgangsmåte ifølge krav 1,
karakterisert ved at den første strømmen omfatter sensor-avlesninger fra en sensor som vandrer langs en bane.
3. Fremgangsmåte ifølge krav 2,
karakterisert ved at sensoren er en loggesonde som passerer gjennom et borehull.
4. Fremgangsmåte ifølge krav 1,
karakterisert ved at den første behandlingen fungerer for å avslutte drift dersom en sensor-avlesning ikke oppnås innen en forutsatt tidsperiode.
5. Fremgangsmåte ifølge krav 1,
karakterisert ved at hvert lager er en diskret lageranordning som er dedisert for å motta dataposter bare fra dens respektive strøm.
6. Fremgangsmåte ifølge krav 1,
karakterisert ved at en behandling avleser sekvensielt hver sensor-datapost som er innskrevet i sensordata-lageret.
7. Fremgangsmåte ifølge krav 1,
karakterisert ved at en behandling avleser sekvensielt bare den siste sensor-datapost som er skrevet inn i sensordata-lageret.
8. Fremgangsmåte ifølge krav 1,
karakterisert ved at data innhentes fra en transduser i en sonde som passerer gjennom en oljebrønn, slik at disse data indikerer en geologisk egenskap ved formasjonen som omgir oljebrønnen.
9. Fremgangsmåte ifølge krav 8,
karakterisert ved at den andre behandlingen bestemmer en sonde-ordre som den andre referanseverdi, innskriver sonde-ordren i det andre referanseverdi-lageret som mottar og lagrer bare sonde-ordre, og innbefatter det undertrinn å sende ordren for å påvirke driften av sonden.
10. Fremgangsmåte ifølge krav 8,
karakterisert ved at en behandling avleser sekvensmessig hver geologisk datapost som er innskrevet i geologidata-lageret.
11. Fremgangsmåte ifølge krav 8,
karakterisert ved at en behandling avleser sekvensmessig bare den siste geologiske datapost som er skrevet inn i geologidata-lageret.
12. Fremgangsmåte ifølge krav 8,
karakterisert ved at det i trinnet med å innskrive geologiske data, innskrives en datapost for hver tidsperiode t og en behandling innbefatter det trinn å avslutte data-innsamlingen dersom en geologisk datapost ikke innskrives i nevnte geologidata-lager minst for hver tidsperiode t.
13. Fremgangsmåte ifølge krav 12, karakterisert ved at avslutningstrinnet innbefatter de følgende undertrinn: en avslutningsstyre-referanseverdi innskrives i et lager som fungerer for å motta og lagre bare avslutningsstyre-referanseverdiene, og avslutningsstyre-referanseverdien sendes som en ordre til sonden.
14. Fremgangsmåte ifølge krav 8,
karakterisert ved de følgende ytterligere
trinn: fra en andre transduser innhentes data som indikerer sondens hastighet idet den passerer gjennom borehullet; hastighetsdataene innskrives i et hastighetslager som en strøm av sekvensmessige dataposter, idet nevnte hastighetslager fungerer for å motta og lagre bare hastighets-datastrømmen.
15. Fremgangsmåte ifølge krav 14, karakterisert ved at den andre behandlingen innbefatter de følgende undertrinn: en hastighets-datapost av interesse avleses sekvensielt fra hastighetslageret, nevnte andre referanseverdi bestemmes ved bruk av nevnte geologiske datapost og nevnte hastighetslager-datapost, og den andre referanseverdien innskrives i et hastighets-forandrings-lager dersom hastighetslager-dataposten ikke faller innen et akseptabelt hastighetsområde.
16. Fremgangsmåte ifølge krav 8,
karakterisert ved at hvert av de nevnte lågere omfatter en mengde med kjente hukommelsesposisjoner, idet innskrivningstrinnene innbefatter de undertrinn å sekvensielt identifisere hukommelsesposisjonene i lageret ved bruk av særskilte indeksverdier.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US76740985A | 1985-08-20 | 1985-08-20 |
Publications (4)
Publication Number | Publication Date |
---|---|
NO863125D0 NO863125D0 (no) | 1986-08-01 |
NO863125L NO863125L (no) | 1987-02-23 |
NO173575B true NO173575B (no) | 1993-09-20 |
NO173575C NO173575C (no) | 1993-12-29 |
Family
ID=25079393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO863125A NO173575C (no) | 1985-08-20 | 1986-08-01 | Databehandlingssytem |
Country Status (11)
Country | Link |
---|---|
EP (1) | EP0214037B1 (no) |
CN (1) | CN1033541C (no) |
BR (1) | BR8603855A (no) |
DE (1) | DE3650411D1 (no) |
DK (1) | DK398186A (no) |
DZ (1) | DZ980A1 (no) |
EG (1) | EG19857A (no) |
ES (1) | ES2001537A6 (no) |
IN (1) | IN167819B (no) |
NO (1) | NO173575C (no) |
OA (1) | OA08404A (no) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2051613B1 (es) * | 1991-05-14 | 1995-01-01 | Inst Tecnologico Geominero De | Equipo perforador polivalente multitecnico. |
US5717947A (en) * | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
US6992768B2 (en) * | 2003-05-22 | 2006-01-31 | Schlumberger Technology Corporation | Optical fluid analysis signal refinement |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4153932A (en) * | 1974-03-29 | 1979-05-08 | Massachusetts Institute Of Technology | Data processing apparatus for highly parallel execution of stored programs |
US4128882A (en) * | 1976-08-19 | 1978-12-05 | Massachusetts Institute Of Technology | Packet memory system with hierarchical structure |
US4197589A (en) | 1977-12-05 | 1980-04-08 | Texas Instruments Incorporated | Operation sequencing mechanism |
US4229790A (en) | 1978-10-16 | 1980-10-21 | Denelcor, Inc. | Concurrent task and instruction processor and method |
US4507735A (en) * | 1982-06-21 | 1985-03-26 | Trans-Texas Energy, Inc. | Method and apparatus for monitoring and controlling well drilling parameters |
-
1986
- 1986-07-25 IN IN594/MAS/86A patent/IN167819B/en unknown
- 1986-08-01 NO NO863125A patent/NO173575C/no unknown
- 1986-08-12 EP EP86401800A patent/EP0214037B1/en not_active Expired - Lifetime
- 1986-08-12 DE DE3650411T patent/DE3650411D1/de not_active Expired - Lifetime
- 1986-08-13 EG EG51986A patent/EG19857A/xx active
- 1986-08-13 BR BR8603855A patent/BR8603855A/pt not_active IP Right Cessation
- 1986-08-19 CN CN86105110A patent/CN1033541C/zh not_active Expired - Lifetime
- 1986-08-19 ES ES8601174A patent/ES2001537A6/es not_active Expired
- 1986-08-19 DZ DZ860187A patent/DZ980A1/fr active
- 1986-08-20 DK DK398186A patent/DK398186A/da not_active Application Discontinuation
- 1986-08-20 OA OA58937A patent/OA08404A/xx unknown
Also Published As
Publication number | Publication date |
---|---|
EP0214037A3 (en) | 1990-05-16 |
EP0214037B1 (en) | 1995-10-04 |
IN167819B (no) | 1990-12-22 |
CN1033541C (zh) | 1996-12-11 |
OA08404A (en) | 1988-06-30 |
NO863125L (no) | 1987-02-23 |
DZ980A1 (fr) | 2004-09-13 |
DK398186D0 (da) | 1986-08-20 |
BR8603855A (pt) | 1987-03-24 |
NO863125D0 (no) | 1986-08-01 |
DK398186A (da) | 1987-02-21 |
CN86105110A (zh) | 1987-07-01 |
NO173575C (no) | 1993-12-29 |
DE3650411D1 (de) | 1995-11-09 |
ES2001537A6 (es) | 1988-06-01 |
EP0214037A2 (en) | 1987-03-11 |
EG19857A (en) | 1996-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US3763474A (en) | Program activated computer diagnostic system | |
EP2952992A1 (en) | Control system, control device, image processing device, and control method | |
KR970017010A (ko) | 데이터 저장 시스템 및 머신 수행 방법 | |
CN105637510B (zh) | 基于缓存流的加速 | |
CN1021148C (zh) | 用于诊断监视的灵活传感器系统 | |
NO319605B1 (no) | Borehullsloggeutstyr omfattende programmerbar sonde | |
TWI423028B (zh) | 存取一具有複數個直接存取儲存設備之數位儲存系統的方法、處理系統及電腦程式產品及排程i/o操作的方法 | |
CN106648977A (zh) | 一种安卓系统文件的恢复方法及装置 | |
JP7131015B2 (ja) | 情報取得装置、ゲートウェイ装置、プログラム、記録媒体、および方法 | |
JP2022528284A (ja) | 圧縮データの記憶及び取得の最適化 | |
CN106649082A (zh) | 一种生成测试数据的方法及装置 | |
CN109657167B (zh) | 数据采集方法、装置、服务器及存储介质 | |
NO173575B (no) | Databehandlingssystem | |
CN109412939A (zh) | 记录工业网络通信周期过程数据的通信网关和工作方法 | |
CN107544751B (zh) | 一种远程访问磁盘的方法和装置 | |
CN100514235C (zh) | 在操作及监控程序与现场设备之间进行数据交换的方法和设备 | |
KR910003242B1 (ko) | 데이타 수집장치를 구비한 루프로 연결된 제어 시스템 | |
CN112764673B (zh) | 高光谱线阵数据存储速率优化方法、装置和存储介质 | |
JP2656474B2 (ja) | データ処理システム及び方法 | |
US8127118B2 (en) | Microarchitecture, method and computer program product for efficient data gathering from a set of trace arrays | |
USRE31407E (en) | Computer monitoring system | |
EP0073081B1 (en) | Data processing system having a control device for controlling an intermediate memory during a bulk data transport between a source device and a destination device | |
US5926840A (en) | Out-of-order fetching | |
CN1024580C (zh) | 机电一体化石油勘探钻井综合采录装置 | |
EP0348997A2 (en) | Two-dimensional file management system |