/elektronik

Nye computere får lov til at regne forkert

De to store processorproducenter Intel og AMD er på vej med nye teknikker, så computeren selv opdager, hvis den har regnet forkert. Det giver mulighed for at skrue op for hastigheden - eller ned for strømforbruget.

Af Mads Ølholm, søndag 10. feb 2008 kl. 14:00

Nye computere kan blive hurtigere, fordi den centrale processor får lov til at regne forkert.

I dag designer processorproducenterne meget konservativt for at tage hensyn til små forskelle i produktionen, variationer i strømforsyningen og de forskellige temperaturer, som processorerne udsættes for.

Nu har udviklere hos både AMD og Intel fundet en metode, således at processorerne kan køre for fuld styrke, selv om de regner forkert ind i mellem. Det gør det muligt for processorerne at køre op til 30 procent hurtigere.

Den højere hastighed øger risikoen for fejlberegninger, men de nye teknikker betyder, at processorerne selv finder ud af, hvis de regner forkert. Sker dette, stopper CPU’en udførelsen af instruktionen og sørger for, at den bliver gentaget ved en lavere clockfrekvens.

Det betyder selvfølgelig, at det tager længere tid at udføre instruktionen, men de to firmaer har regnet meget nøjagtigt på, hvor aggressivt det er muligt at clocke processorerne, før der opstår for mange fejl.

Foruden at clocke aggressivt kan teknikkerne også anvendes til at sænke spændingen til processorerne, indtil der begynder at opstå for mange fejl. Det vil give lavere effektforbrug og længere batterilevetid for bærbare computere.

Indtil videre er teknikkerne ikke implementeret i kommercielt tilgængelige CPU’er, men Intel har afprøvet konceptet i en testprocessor, der er designet i 65-nm-procesteknologi, som firmaet anvender til sine Itanium-processorer.



10. feb 2008 kl 18:14

Allan Dahl

Rigtig spændende

Det lyder som en rigtig spændende tankegang, da jeg især har erfaring med bærbare med rigtig dårlig batteri levetid, så her kunne der være en fordel ved lavere strømforbrug.

Jeg er dog nysgerrig af natur og kunne dog godt lide at vide hvordan de vurdere at de har regnet forkert og hvordan dette kan være "billigere" end at sikre at udregningen er korrekt til at starte med.

Dvs. en lidt mere dybdegående artikel kunne være spændende at læse


10. feb 2008 kl 18:28

Per L. Grunth

Processor hastighed.

Jeg takker for interessant artikel.

Der skrives om at computere "faar lov til at regne forkert". Jeg gaar ud fra at man hentyder til computerens paritetskontrol, som jo hidtil har fört til fejlstop, naar en paritetsfejl blev konstateret efter udförelsen af et programtrin. Det nye er saa, at i stedet for programstop nedsätter man processorhastigheden, gentager derefter sidste programtrin og saafremt man nu ikke faar paritetsfejl, saa fortsätter man programmet. Og det er jo helt fint.

Men saa skriver man "Foruden at clocke aggresivt kan teknikkerne ogsaa anvendes til at sänke spändingen til processorerne, indtil der begynder at opstaa for mange fejl".

Betyder lavere spänding ogsaa lavere clock frekvens, eller betyder lavere spänding höjere clock frekvens?
Ifölge min ringe viden havde det väret mere närliggende hvis der havde staaet: "Foruden at clocke aggressivt kan teknikkerne ogsaa anvendes til at sänke spändingen til processorerne, NAAR der begynder at opstaa for mange fejl". Men jeg er ikke expert i hvordan man regulerer en processor, saa hvad er korrekt?

Nogle drejer jo selv deres computer op i hastighed. (Hvis man kender lidt til "det indvendige" i sin computer kan man selv göre det, ellers kan ens tekniker hjälpe). Andre kan have grunde til at göre det modsatte d.v.s. köre langsommere. Men hvis nu computerne skal til at väre drejet höjere op allerede fra leverandören, er det jo godt at vide i forvejen.

Mvh Per Grunth


10. feb 2008 kl 20:12

René Møller

Re: Processor hastighed.

Processerne fungere ved at den kører en bestemt hastighed ved en bestemt spænding. så øger man hastigheden til der kommer fejl. Når der kommer fejl, øger man spændingen til fejlen(e) er væk. så hæver man hastigheden osv..

Når man hæver spændingen bliver processeren varmere, så det er begrænset hvor meget man kan hæve spændingen, før kredsløbne futter af..

Der er så nogen der går til mere ekstremer og køler processeren med fyldende nitrogen.. jo koldere et ledende materiale er, jo bedre ledende er det. Så modstanden i processeren mindskes derved.. = højere clock.

Man kan også vende den om og skrue ned for spændingen til den laver fejl, og dermed det samlede strømforbrug. Som der også bliver nævnt i artiklen.

Mvh René Møller


11. feb 2008 kl 00:24

Jens Madsen

Re: Re: Processor hastighed.

Jeg syntes, det lyder rigtigt kedeligt. Specielt, hvis det bare er en "simpel" paritetskontrol. Men uanset dybden af kontrollen, og dens merforbrug, så er risiko for at det går galt. Måske både med kontrollen, og beregningen.

Metoden, viser tydeligt, at AMD og Intel aldrig har hørt om asynkrone processorer, trods de har haft nogle få projekter i disse. Men lært af disse - det har de åbentbart ikke. En langt bedre metode, der ikke giver anledning til fejlberegninger, og ting der skal gøres igen, ekstra kontrolkredsløb der bruger strøm osv. er asynkron logik. Her arbejdes med true, false, og none. Når du udfører en operation, nulstiller du først alt til "none". Dette tager lidt tid, og gør at teknikken ikke er så hurtig. Herefter, går det hurtigt. Sætter du dine data på din CPU, får du svar, så snart de foreligger. Og det går hurtigere end for synkron logik. En inverter, er bare to krydsede ledninger - og tager ingen tid. Fordi alt findes på både normalt, og komplement form, er det ofte hurtigere end synkron logik. Samtidigt bruges kun NMOS transistorer - og de er hurtigere. Normalt CMOS logik, har kæmpe kapaciteter og P-MOS transistorer med dårlig ledeevne, der trækker ned. Netop denne dårlige ledeevne, præger Intels logik.

Når nogle har fået langsommere resultateter i asynkron logik, skyldes det at de ikke har været dygtige. Det kræver flere transsitorer, fordi man skal nulstille CPU'en (eller blokke deraf), men selve beregningen går hurtigere. Hvis der derfor er flere blokke, eller CPU'er der arbejder på skift, så går hastigheden op.

Og så kommer oveni, at strømforbruget er lavere. Fordi der er flere transistorer, spredes samme funktion ud på større område - men med mindre forbrug, og per areal bliver forbruget ikke så stort ved samme udregning. Til gengæld, kan normalt laves væsentligt flere udregninger i sekundet, da man umiddelbart fortsætter til næste fase, så snart resultatet af tidligere beregning foreligger. Har du f.eks. en addition, hvor to tal lægges sammen, så vil deres bit "ribble" igennem. Imidlertid, så er det kun hvis det er nødvendigt. Ofte, vil bit 7 komme prompte - og kan derfor bruges ved beregning af jump/branch. Og samme med de andre bits. Så snart de forekommer, kan de gå videre til efterfølgende. Er der ikke afhængigheder, foreligger beregningen straks, og man kan gå videre til næste beregning straks. Til gengæld, kræves lidt analog kunnen, hvis man skal lave det godt. Det kan give større hastighed.

En godt designet asynkron processor, er væsentligt hurtigere end dens synkrone "ditto". Laver du en kæmpe VLIW CPU, hvor flere indstruktioner udregnes samtidigt, så kan du udregne mange indstruktioner, uden det tager tid - fordi det er "dybden" af opgaven, som betyder noget. Evt. afhængigheder mellem CPU'erne, giver anledning til en dybde, og denne bestemmer tiden. Som regel, er denne dybde logaritmisk med antallet af CPU'er, og har du således en VLIW processor, med 128 CPU'er, så er dybden 7, hvilket svarer til det tager 7 indstruktioner at udfører 128. Kræver alle indstruktioner data fra de forrige, vil det kræve en dybde på 128 - så 7 er kun typisk. Imidlertid, viser det sig, at hastigheden, for at udføre disse 128 indstruktioner, der alle bruger hinandens data, også er væsentligt hurtigere, end for en normal VLIW, fordi man kan designe den med hensyn til at flowet i resultat retningen minimeres, og fordi at f.eks. invertere ikke bruges. Kombineret med, det kun bruges n-mos, så er forsinkelsen langt mindre, end i CMOS. Der er ikke de tunge P-MOS transistorer der giver problemer. Problemet er mere verificeringen af, at alle data foreligger, og man kan fortsætte. I nogle tilfælde kan det give lidt tung logik, men her findes triks der kan løse det. Så det er ikke et problem.

Få steder - f.eks. ved ram kredse - er det en ulempe med asynkron logik. Årsagen er, at et normalt ramlager fungerer ved meget små spændinger, som transformeres op af en klokket differentialforstærker. Og netop her - hvor det ikke er sædvanlig logik - er en fordel, at kunne forstærke de små spændinger, når man mener de er store nok. Det er nok muligt, at lave analoge forstærkere der gør dette, og som kan give svar på hvornår data foreligger - men det er lidt mere kompleks. Ved skrivning til ram, vil man normalt også bruge self-timed logik - men det kan vises, at skrivning ikke betyder noget. Det kan altid caches, og man kan altid skrive flere bytes af gangen, hvor det er kritisk.

Når Intel og AMD vil lave en CPU, som ikke fungerer, er det ikke første gang. Sidste forsøg var pentium fejlen. Havde IBM ikke gået imod, så havde vi haft pentium fejl endnu - og de var nok vokset. For hver generation, kommer større afvigelse, og større fejl. Sådan er det gået med software, fordi man ikke har sagt at vi intet accepterer, hvis det ikke er 100% perfekt. Indenfor hardware, har vi altid gjort det. Er der noget, der ikke fungerer - så kan vi ikke "bare" rette fejlen. Tingene skal fungere. I nogle tilfælde, kan vi måske tillade os at rette fejlen, hvis vi er sikker på det går godt - men vi bør notere os, at det er sket fejl, så vi ved vores hardware ikke har været godt nok udviklet.

Med andre ord, er Intel ude på et sidespor. Og det er stor sandsynlighed for, at det kun kan føre til at fremtidens processorer, faktisk regner forkert. Dog, ikke ofte - men så tit, at vi aldrig kan vide, om det er en regnefejl, eller en softwarefejl. Hos Intel, kan man hævde, at sandsynligheden er mindre, end for software fejl.

Bruges asynkron teknik, opnås præcis de samme fordele. Samtidigt, opnås fordel i hastighed, fordi logikken er N-MOS. Der opnås fordel, fordi alt er på normal og komplement form, uden det tager ekstra tid. Der opnås større hastighedsfordel, fordi man bitvis kan se, at operationen er færdig - og det går hurtigere, end hvis man skal "antage" en fiktiv synkron hastighed, som afstemmes. Det sidste, vil simpelthen ikke fungere. Der er stor forskel på hver enkelt indstruktion, og på data. En asynkron CPU giver ofte stor hastighed, fordi der bruges tallet 7 i stedet for 9. Den kommer hurtigere igennem. Du kan ikke opnå det samme, ved at "gætte" en hastighed. Den hastighed du gætter, vil være forkert - undtagen for de data du har testet med. Og i alle andre tilfælde, vil den være ringere. Dette betyder nemt en faktor 3 - eller mere. Intels processorer, vil stadigt være 3 gange for langsomme, fordi de ikke kan justere genneralt optimalt. Og hvor det går galt, tager det ekstra tid. Ved asynkron logik er forsinkelsen eksakt den som det tager, i det enkelte tilfælde. Og det går ikke pludseligt for hurtigt, eller for langsomt. Samtidigt er resultatet altid korrekt. Mange mener endog, at asynkron teknik, er mere pålideligt, end synkron logik.

Hvis man - som Intel / AMD laver en fejlberegning, så koster denne beregning strøm. Der er masser af spikes i kredsløbet, fordi data må ændres. Det koster energi, og medfører varme. Dette findes ikke ved asynkron logik. Data kommer ind - og ud - og skifter højst éen gang. Der er ikke data, der går op, ned, op, ned, og så bestemmer sig, efter at have taget forkert, og være blevet sendt videre, og må gå om. Temperaturen vil være alt for stor, og typisk er forbruget væsentligt større, end for en asynkron CPU. Og giver højere temperatur, bedre hastighed?

Så det betaler sig ikke at regne forkert. Gør det korrekt. Og gør det korrekt i første huk. Tag den tid det tager, og sig når du er færdig - så nemt fungerer asynkron logik. Så snart du er færdig, kan de efterfølgende i princippet anvende svaret og fortsætte.

Synkron logik, regner forkert. Der bruges unødigt strøm til dette. Det går tid, inden output stabiliserer sig. Man sætter en tidsplan for, hvornår man ved output foreligger. Indtil dette, må man vente. Man har en "time manager", der fortæller hvornår tingene skal ske. Og det sker eksakt efter planen. Alt det som ikke kan vurderes korrekt, må sættes på at tage hensyn til worst-case. Herefter, skal data gerne foreligge korrekt, og hvis de ikke gør, er det bare kedeligt. Resultatet bliver taget trods forkert resultat. Nu vil Intel ikke mere sætte tidsplanen efter worst-case, men mere optimalt. Til gengæld, vil de indføre en "test" der sikrer resultatet er korrekt. Hvis det så ikke er korrekt, må man vente, til det er korrekt. Men, der er stadigt masser af unyttige spikes, testen tager tid, og kan være forkert, og forkerte data sendes videre og er årsag til senere forkerte beregninger, der så må gøres om. Det giver forbrug uden lige. Ikke noget for laptops.

Håber, at jeg har givet et indtryk af, at selvom Intels logik måske er fremtiden, så vil den aldrig blive god.


11. feb 2008 kl 07:57

Jørgen Henningsen

PC'en keder sig

Hvis man ikke har en beregning eller en film igang, så keder PC'en sig vel 95% af tiden. Billedet står jo i alt sin enkelthed stille ud over de få pixels som står og blinker. Så kan der være en mailserver som skal kontrolleres engang imellem, men hvis der ikke er noget som skal hentes, så er det hurtigt overstået. Det er fuldstændigt overdrevet at almindelige kontor PC'er bruger flere hundrede Watt for at udføre den opgave.

Det som er altoverskyggende vigtigt for brugeren er at systemets respons er iorden. Når jeg åbner et program eller klikker på noget....så skal der bare ske noget. Det er primært en software udfordring. Det bringer mig videre til min pointe.... Istedet for at forske i hurtigere processorer kunne der vindes rigtigt meget med optimeret software og dedikeret hardware. Hvorfor skal der være tændt for hele processoren, når kun 5% af kapaciteten bruges?


11. feb 2008 kl 08:58

Tommy Schouw Rasmussen

Dual-rail logik

Det der snakkes om, som funktions parameter er at de begge lader til at kunne opdage om en clockcycle har været for kort til en given beregning.

Når man designer moderne processorer, benyttes meget lange pipelines, da det er den samme frekvens der bliver benyttet hele vejen igennem pipelinen, så skal de sætte performance efter det længste logiske vej, til alle tider.

Det er lidt som at have en arbejdsplads med 1000 medarbejdere, på et hvert givent tidspunkt arbejder op til 50 af dem, men fordi de skal kunne arbejde i takt, så er de nødt til at sætte tempoet alene efter hvor hurtigt "sløve søren" kan lave sin opgave. Hvis man i stedet ved at 95% af folkene kan klare jobbet på 2/3 af tiden, så kan det betale sig at hæve tempoet og så bare holde øje med om de langsommere opgaver havde noget at lave, og eventuelt om de nåede at blive færdig.

Når man optimerer ydelsen fra en processor, handler det konstant om at finde den langsommeste vej, og så optimere på denne. Problemet ligger i at man altid skal regne med worst case og at den længste vej kan varierer efter hvad man skal regne på, og ikke kun på selve opgaven, tag f.eks. 3/4, det er hurtigt regnet ud, mens 100/29 tager væsentligt længere.

For at garantere at de altid regner rigtigt er de nødt til at sætte tempoet efter den langsommeste handling der er i systemet, uanset hvor sjældent denne måtte forekomme.

Umiddelbart vil jeg tro at de benytter noget dual-rail logik på de "sårbare" kredsløb, som de gater med clock-signalet. De har sikkert en masse optimeringer af dette koncept, men det er nok grund-essensen i det.

Dual-rail logik består i at man bruger 2 "ledninger" til at beskrive et binært signal, i stedet for en enkelt. D.v.s. Du har en ledning der signalerer 1 når den er høj og en der signalerer 0 når den er høj. Hvis ingen af ledningerne er høje, så er signalet endnu ikke klart (hvis begge er høje, så er det noget galt i systemet), og man kan handle derpå.


11. feb 2008 kl 09:13

Dennis Krøger

Re: Re: Re: Processor hastighed.

Metoden, viser tydeligt, at AMD og Intel aldrig har hørt om asynkrone processorer, trods de har haft nogle få projekter i disse. Men lært af disse - det har de åbentbart ikke.

Så må de jo hellere skynde sig at fyre alle deres eksperter, og ansætte dig istedet...


12. feb 2008 kl 00:24

Jens Madsen

Re: Re: Re: Re: Processor hastighed.

Så må de jo hellere skynde sig at fyre alle deres eksperter, og ansætte dig istedet...

Intel har haft forskningsprojekter med asynkrone processorer. Men, så vidt jeg ved har de været forholdsvis kortvarrige, og investeringen har været lav, i forhold til normale CPU'er. Samtidigt var formålet ikke at opnå hurtige CPU'er så vidt jeg husker, men at opnå lav forbrug.

Asynkrone teknologi, er dual-rail. Ledningerne lades først op, og de trækkes lavt af logik (N-MOS). Det gælder samtlige bits og data. Dertil kommer nogle handshaking signaler, som udfra hvornår data er tilstede, begynder den efterfølgende fase. Asynkron logik, starter dog ikke bare næste klokfase, da der ikke er nogen klok - i stedet består det af mange små lokale selvsvingende klokke (oscillatorer), der får tingene til at fungere. Der er altså ikke nogen global klok, og de lokale klokke behøver ikke at køre på en global kloks høj hastighed.

For mange typer logik - såsom ALU'er, opnås større hastighed, da den typiske forsikelse er lavere end worst-case forsinkelsen. Det afhænger af de data som påtrykkes. Det kan nærmest ikke betale sig, at lave carry-lookahead, da det giver ekstra varme, og sandsynligheden for den lange ribbel er lav. Så en normal ribbel-mente er ofte benyttet. Man vil normalt altid levere data videre til en ny blok, og kan ikke så godt nøjes med kun éen ALU, der kører alle indstruktionerne. Den skal slappe af, for at oplade (sætte tilstanden til none/intet). Minimum, vil typisk være 3 der arbejder på skift - men flere giver endnu bedre udbytte.

Problemet hos Intel, ligger ikke i, at de skal ansætte mig. Naturligvis vil det kunne betale sig. Men, problemet ligger i, at de ikke har ofret tilstrækkeligt på forskning i asynkron logik, og de kun har haft små mindre projekter. De har ikke været med formål, at lave superhurtige processorer. Men kun at opnå lavt forbrug.

Problemet er mangel på investeringer.

Intel, har altid været "bagud", med nye akitekturer som jeg ser det. Den nuværende pentium arkitektur, er således nærmest "stjåldet" fra Nextgen, eller 586 som kom for mange år siden. Nextgen startede med, at bruge en intern RISC arkitektur, som Intel gør nu i dag. Intel turde ikke. Det skullle vises, at fungere først.

Selvom der er lavet mange processorer med asynkron logik, og de oftest har haft bedre egenskaber - f.eks. med strømforbrug - end synkron logik, så er det stadigt en teknologi, der ikke er forsket nok i. Og det trods at have eksisteret i over 40 år. Virksomhederne holder fast i deres "synkrone" logik.

En processor/ALU, der er optimal med hensyn til forsinkelse mellem data kommer ind (forwarded direkte fra andre processorer der har udført de tidligere indstruktioner), giver reelt en utrolig lille forsinkelse. Hvis der optimeres efter resultat, og ikke mente, bliver beregningshastigheden ved indstruktioner der er afhængige, ligeså hurtigt, som en mente ribbler på en bit. Det er mange gigahertz. Og så får du asynkron logik oveni, hvilket betyder at uden afhængighed går hastigheden op. Det er simpelthen så hurtigt, at det står (stod) til at forbydes.


Ny i debatten? Opret en brugerkonto

  • Seneste nyt
  • Mest læste
  • Topdebat
Populært på Facebook
 

Nyhedsbrev

Tilmeld dig vores nyhedsbrev.