Spørg Scientariet: Hvordan ved en computer, hvad klokken er?

Scientariet svarer denne gang på, hvordan en computer kan vide, hvad klokken er. Hvordan kan den regne tidsintervallerne ud? Læs svaret i artiklen.

Morten Udengaard vil gerne vide, hvordan computeren kan vide, hvad klokken er:

Hvordan kan en computer klokken? Altså, hvordan tæller en computer sekunder?

Den ved selvfølgelig, at 1 minut er 60 sekunder og 60 minutter er en time og så videre. Men hvordan ved den, hvor lang tids interval der skal være imellem tik og tak? På forhånd tak.

Poul-Henning Kamp, blogger og fagmedarbejder på ing.dk svarer:

Computeren bruger et lille stykke kvarts-krystal, der svinger ved en frekvens, som er bestemt af dets geometri. Det samme gør dit elektriske armbåndsur, vækkeur og alle andre ure og computere, du ser omkring dig.

Det siger sig selv, at computersoftwaren er nødt til at kende frekvensen for at kunne vide, hvor mange svingninger, der går på et sekund, men da krystaller er både præcise og stabile, er det et designspørgsmål.

Typisk er frekvensen til urbrug 32768 Hz, altså 2 i femtende potens, og krystallet er udformet som en lille bitte stemmegaffel i en lille metalcylinder, 1-2 millimeter diameter og 3-5millimeter længde.

Til en computers clockfrekvens, anvendes en flad plade af kvarts, typisk cirka 1 x 3 millimeter, der svinger med en frekvens i 10-50 MHz området.

Af historiske årsager er frekvensen oftest 14.31818... MHz.
(Se: mit blogindlæg om dette)

At dette i det hele taget kan lade sig gøre, skyldes at kvarts besidder en unik kombination af seks egenskaber:

  1. Der er masser af det: Groft sagt halvdelen af jorden består af det.

  2. Det er nemt at dyrke og forædle krystallerne industrielt: Lav opløselighed i alt andet end koncentreret flussyre (fluor-syre), og krystallerne er hårde men ikke skøre.

  3. Det er piezoelektrisk: hvis man klemmer et kvartskrystal, opstår der en spænding over det, og omvendt.

  4. Det har lavt mekanisk tab, så en mekanisk svingning er lang tid om at uddø. Det giver et højt elektrisk "Q" på cirka 10.000.000.

  5. Der findes krystalsnit, hvis frekvens er ufølsom for moderate
    temperatursvinginger.

  6. Der findes stress-kompenserede krystalsnit, der er mekanisk robuste.

Uden alle disse seks egenskaber, havde den elektroniske verden set meget anderledes ud.

Den piezoelektriske effekt blev opdaget af Madamme Curies mand, Pierre, og hans bror Jacques i 1880. I 1917 fik Alexander McLean Nicholson den ide, at bruge et kvartskrystal til at lave en stabil frekvensgenerator med. I 193'erne erstattede kvartsure pendulurenes rolle som tidsnormaler i verdens målelaboratorier, og i starten af anden
verdenskrig hældte USA nogle millioner i grams for at starte en "krystalbranche", for at få bedre radiomodtagere til tropperne.

Den tidligere formand for IEEE, John R. Vig, har glemt mere om kvartskrystaller og frekvensstyring, end vi andre kan håbe på nogen
sinde at huske. Heldigvis er hans definitive "Quartz Tutorial"
online på nettet i flere udgaver. Den nyeste version, jeg kender, er på 288 sider og kan blandt andet findes her (pdf-dokument):

Spørg Scientariet er i dag redigeret af Tine Havkrog, thb@ing.dk

Spørg Scientariet

Du kan spørge om alt inden for teknologi og naturvidenskab. Redaktionen udvælger indsendte spørgsmål og finder den bedste ekspert til at svare – eller sender spørgsmålet videre til vores kloge læsere. Klik her for at stille dit spørgsmål til Scientariet.

Kommentarer (21)

Er det muligt, at du kan lave et link til dit indlæg omkring 14.31818 MHz. Det kunne ikke umiddelbart findes med søg.

Umiddelbart, kan jeg ikke se fordelen ved så høj frekvens. Desto større frekvens, desto større er strømforbruget for uret, når PC'en er slukket. Bruges 14.31818 MHz, så skal lithium batteriet skiftes ofte, i forhold til, hvis der bruges 32768 Hz. Den lave frekvens på 32768 Hz bruges oftest i ure, fordi den er nemt at neddele til 1 sekund, og samtidigt er frekvensen så lav, at forbrug i størrelsen et par hundrede nanoampere kan opnås. Ligesom for ure, vil en lav frekvens - f.eks. 32768 Hz, derfor være en fordel.

I "gamle" dage, fra før PC-AT'en, var der ikke indbygget urchip i PC'en. I stedet, blev klokfrekvensen på 4.77MHz sendt ind i en 8253 counter chip, som indeholdte 3 timers. Den ene af disse 3 timere, blev brugt til division med 4*65536 og gav en frekvens på 18.2Hz, der blev brugt til interrupt 8. I MS-DOS, blev klokken udregnet efter antal ticks på interrupt 8. De andre 2 timere, blev brugt til henholdsvis refresh, og som frekvensgeneratoren til højttalerens lys.

Da PC-AT'en kom, fik den indbygget batteri, og ur-chip. Det betød, at computeren havde to ure. Èen indbygget i operativsystemet, der anvendte 18.2 Hz interruptet - og en anden, i hardware. Når PC'en blev startet op, blev uret indlæst fra hardwarens ur-chip, og dos'ens ur indstillet. Imidlertid, kørte DOS'ens ur ikke perfekt, da PC'ens klokfrekvens ikke var præcist justeret. Det betød, at hvis en PC var tændt lang tid, så kunne uret blive bagefter eller forand, indtil computeren blev genstartet. Det var også problem klokken 0.00 ved datoskift. MS-DOS holdte styr på datoskift, og noterede at der blev lagt éen til klokken 0.00 - men der var kun afsat éen bit til at notere dette, så efter 24 timer, blev ikke lagt to til. Samme dag, blev gentaget igen og igen, og datoen blev forkert.

Der fandtes derfor residente programmer, der kunne loades ind i MS-DOS, som sykroniserede det eksterne ur, med det interne med jævne mellemrum, og derved løste både problemet med drift, og problemet med datoskift.

De 14.31818 MHz, ser ud til at være 4.77MHz * 3. Men det må være de 4.77 MHz, der er årsag, til denne "underlige" frekvens.

Så vidt jeg ved, bruger PC'ens urkreds 32768 Hz på alle PC'er. Ellers var urbatteriet blevet fladt for længst...

  • 0
  • 0

Imidlertid, kørte DOS'ens ur ikke perfekt, da PC'ens klokfrekvens ikke var præcist justeret.

Det vækker lidt minder det du skriver, men jeg er ikke helt sikker på det(præcision) har så meget med clockfrekvensen at gøre.

I XT-tiden var det alment brugt at lave TSR programmer, der udnyttede INT8h, så det handlede vel mere om hvor meget (CPU)tid man 'stjal' på den konto - altså ud uver den tid DOS selv 'stjal'.

(For de yngre: TSR var en slags multitasking).

  • 0
  • 0

I XT-tiden var det alment brugt at lave TSR programmer, der udnyttede INT8h, så det handlede vel mere om hvor meget (CPU)tid man 'stjal' på den konto - altså ud uver den tid DOS selv 'stjal'.

Selvom der blev hæftet interrupts på INT 8, så blev de kædet, så interruptet gik videre, til det oprindelige interrupt 8. Den tid, som interruptet tog, betød ikke uret gik langsommere - frekvensen var stadigt den samme, og alle interrupts blev kaldt 18.2 gange i sekundet. Derimod, betød flere interrupts på ur-interruptet en belastning for PC'ens ydeevne, således programmerne på PC'en kørte langsommere hvis interruptet tog tid. Det gik altså ikke ud over klokken - men over programmernes hastighed.

Dog, hvis et interrupt tog mere end 1/18 sekund, eller et program disablede interrupts i længere tid, så kunne et interrupt blive missed, og det gå ud over urets nøjagtighed. Mange programmer, kunne finde på at disable interrupts, og det var ikke ualmindeligt at uret kunne gå i stå et stykke tid.

Hvis du havde PC'er, der kørte i døgndrift, kunne du nemt se problemet med uret. At datoskiftet ikke skete, var naturligvis det største problem. Men selvom der ikke kørte software på PC'en, og ikke var indstalleret residente programmer, så kørte PC'ens dos-ur ikke perfekt. Så vidt jeg husker, lå fejlen på over et sekund per dag.

  • 0
  • 0

Hvornår er en computer begyndt at kunne vise klokken rigtig. !!!!

I 1971 da Professor Dave Mills begyndte at rode med computere og tid på "fuzzball" operativsystemet.

Se: http://www.ece.udel.edu/~mills/gallery/gal...

Nogen af os har den mistanke at han fostrede Internettet for at kunne synkronisere computeres ure :-)

Poul-Henning

  • 0
  • 0

Hvis du havde PC'er, der kørte i døgndrift, kunne du nemt se problemet med uret. At datoskiftet ikke skete, var naturligvis det største problem.

Datoskitfe ?
Det mindes jeg ikke har været et problem, men tilfældigvis har jeg stadig en fungerende XT, og har lige startet 'uhyret op', og testet.

Den skifter skam dato når klokken runder midnat, så det må have være nogle andre modeller/OS du har kørt med.

  • 0
  • 0

Påstanden er også at der skal ske to datoskifte før det er et problem. Så du skal have din XT kørende i mindst 24 timer for at efterpøve det.

Jeg mindes heller ikke problemet. Måske det kræver en oldnordisk udgave af DOS (2.11 måske).

Jeg kan til gengæld huske at Windows NT 3.1 havde et problem efter 50 dage. Det skyldes tiden siden start blev gemt som antal millisekunder i en 32 bit counter.

  • 0
  • 0

Hvor får Microsofts programmer tiden fra? Det er da den mest ubrugelige tidsregning, deres tid ligner ikke den jeg har i mine ure :)

  • 0
  • 0

Hvor får Microsofts programmer tiden fra? Det er da den mest ubrugelige tidsregning, deres tid ligner ikke den jeg har i mine ure :)

Det er faktisk et temmlig langhåret emne, for Microsoft har prøvet alle mulige hacks for at forbedre situationen.

Groft sagt, er problemet at MS-DOS arbejde i den lokale tidszone internt.

Det vi sige, at hvis jeg lavede en fil på en diskette klokken 20:00 og sendte den til New York, så ville timestamp på en PC der også være 20:00.

Den CMOS clock vi kender fra BIOS'en og som holder uret gående mens maskinen er slukket, kørere også lokal tid.

Det giver problemer ved sommertid (Hvilken side ?) og i forbindelse med netværk.

UNIX bruger en bastard UTC[1] internt, og folder tidszone og sommertid på ved presentation.

Poul-Henning

[1] Uden skudsekunder, don't get me startet!

  • 0
  • 0

Og det korte svar som Morten Udengaard umiddelbart kunne gå til havde været: "Computeren har indbygget et digitalur der drives af et lille batteri" ....[PERIOD]

Mark Twain HAR åbentbart levet forgæves:-/

  • 0
  • 0

Og det korte svar som Morten Udengaard umiddelbart kunne gå til havde været: "Computeren har indbygget et digitalur der drives af et lille batteri" ....[PERIOD]

Nej, ikke helt, det er kun mens maskinen er slukket, mens den er tændt bruges forskellige andre counters (f.eks ACPI) der drives af hovedkrystallet.

Mark Twain HAR åbentbart levet forgæves:-/

Hvis det er det eneste du kan finde at brokke dig over, må det, alt i alt, have været en temmlig god dag :-)

Poul-Henning

  • 0
  • 0

Påstanden er også at der skal ske to datoskifte før det er et problem. Så du skal have din XT kørende i mindst 24 timer for at efterpøve det.

Så vigtigt er det nu ikke at finde af.

Den larmer som en i h...., og da den ikke har nogen bios clock, skal man selv sætte dato/tid ved opstart, så det var nemt at sætte den til 23:59.

Til dem der ikke kender en (IBM) XT, har jeg et billede af dyret:
http://w-o-p-r.dk/images/Early.stage.JPG

(Den 'hårde' model med den der sindssygt store harddisk(10MB))

Jeg kan til gengæld huske at Windows NT 3.1 havde et problem efter 50 dage. Det skyldes tiden siden start blev gemt som antal millisekunder i en 32 bit counter.

Det tor jeg ikke er tiden du tænker på, men gettickcounter(), der er antal 'millisekunder' siden start.

Det problem tror jeg stadig eksisterer (på 32 bits windows).

  • 0
  • 0

Se, jeg ventede helt til 1989 med at købe en brugt Jumbo og så var den pludselig nede på 4.000.
Det var en turbo udgave, der med et "abegreb" med tre taster kunne skrues op fra 4,77 MHz til 8 MHz. Og da den havde 640 KB RAM i forhold til de mere almindelige 512 og et Hercules-kort med "høj" opløsning, var det noget af et bæst. Da den fik indopereret 2 stk. 20 MB harddiske var jeg sikker på, at jeg ALDRIG ville komme til at mangle diskplads. Ak ja. WordPerfect 5.1 blev Jumbo'ens skæbne. Vis udskrift funktionen lagde omtrent den lille PC helt ned, så i 1993 måtte den have sin første storebror. Den nye var i øvrigt udstyret med en harddisk, der ikke skreg som en rundsav på vej gennem et fyrretræ.

Nå, men med hensyn til tiden, så skulle jeg altså ikke stille ur hver gang maskinen blev booted selvom maskinen ikke var en AT.

  • 0
  • 0

Men måtte lige starte 'svinet' op - igen.

Nu lyder det nok som alting gik op i spil og den slags ting, men det gjorde det for de unge, incl. min egen knægt.

Ud over skak[1], var der også sokoban:
http://w-o-p-r.dk/images/sokoban.JPG
samt golf:
http://w-o-p-r.dk/images/golf.jpg
(beklager det dårlige billede, men kameraet insisterer på blitz).

[1] Ja, det er Battlechess.

  • Ad DOS - jeg har tilsyneladende opdateret på et tidspunkt, da det er DOS 3.1
  • 0
  • 0

Nå, men med hensyn til tiden, så skulle jeg altså ikke stille ur hver gang maskinen blev booted selvom maskinen ikke var en AT.

Det blev ret hurtigt normen for XT'erne at de havde en CMOS clock.

Poul-Henning

  • 0
  • 0

Det var min første PC - købt i 1986 for 35.000 kr. Og nej - der er ingen kommafejl.

Det er svært at forstå i dag (kommafejl), og 'svinet' havde en nypris på 75.000+ dask.
(Den var dog udstyret med hele 10MB disk, og voldsomme 512KB RAM, samt Arcnet+SNA).

  • 0
  • 0

Vis udskrift funktionen lagde omtrent den lille PC helt ned, så i 1993 måtte den have sin første storebror. Den nye var i øvrigt udstyret med en harddisk, der ikke skreg som en rundsav på vej gennem et fyrretræ.

Det må vel ret beset være en lillebror.....

  • 0
  • 0

[quote]Og det korte svar som Morten Udengaard umiddelbart kunne gå til havde været: "Computeren har indbygget et digitalur der drives af et lille batteri" ....[PERIOD]

Nej, ikke helt, det er kun mens maskinen er slukket, mens den er tændt bruges forskellige andre counters (f.eks ACPI) der drives af hovedkrystallet.

Mark Twain HAR åbentbart levet forgæves:-/

Hvis det er det eneste du kan finde at brokke dig over, må det, alt i alt, have været en temmlig god dag :-)

Poul-Henning[/quote]

Ingeniørder har to basale problemer (altså udover vigende hårgrænser og for korte fløjlsbukser)
1. Vi tager minimalt udgangspunkt i slutbrugers/info-modtagers situation; det være sig i forb. m. produktudvikling eller i forb. m. en "kommunikationsopgave"
2. Vi udvikler/kommunikerer meget mere end slutbruger/modtager har brug for at modtage.

Dit svar på bemeldte spørgsmål var et skoleeksempel!

  • 0
  • 0

Se, jeg ventede helt til 1989 med at købe en brugt Jumbo og så var den pludselig nede på 4.000. Det var en turbo udgave, der med et "abegreb" med tre taster kunne skrues op fra 4,77 MHz til 8 MHz

Hvad mener du med 'abegreb' ?

Jeg købte selv en Toshiba T5100 ('87)[1], som stadig kan startes op bortset fra den enorme haddisk på 40MB:
http://w-o-p-r.dk/images/t5100.jpg
Det var en '386 processor, og senere bestykket med en '387, og clockfrekvensen kunne reguleres med fn tasten + noget.

Men i den model var der stadig ingen bios(cmos) clock, da den var uden batteri.

[1] Nyprisen var nok ca. den samme som i dag, hvis man flytter kommaet en plads til højre.

  • 0
  • 0

Groft sagt, er problemet at MS-DOS arbejde i den lokale tidszone internt. Det vi sige, at hvis jeg lavede en fil på en diskette klokken 20:00 og sendte den til New York, så ville timestamp på en PC der også være 20:00.

Lige den problemstilling gav anledning til mange sjove forsøg på at nedlægge en computer blot ved hjælp af en e-mail, tilbage i 1996-97.
Dengang, da Netscape stadig var i brug, var der en fejl i Netscape's compiler (faktisk Microsoft's C++-compiler), som gjorde at programmerne ville crashe hvis det skulle håndtere datoer senere end februar 2036.

Da jeg ikke selv brugte Netscape, var der intet problem for mig i at ændre computerens dato, derefter sende en mail rundt, og håbe at modtagerne brugte Netscape til at læse dem.

Straks man åbnede den mail, crashede Netscape og tog hele Windows med sig.. :)
Det brugte jeg mange timer på, specielt fordi min daværende lærer var Netscape-fanatiker. Han blev aldrig klogere ;)

  • 0
  • 0