Klockans snedställning
Clock skew (ibland kallad timing skew ) är ett fenomen i synkrona digitala kretssystem (som datorsystem ) där samma klocksignal kommer till olika komponenter vid olika tidpunkter på grund av gate eller, i mer avancerad halvledarteknik , trådsignalutbredning fördröjning . Den momentana skillnaden mellan avläsningarna av två klockor kallas deras skevhet.
Driften av de flesta digitala kretsar synkroniseras av en periodisk signal känd som en " klocka " som dikterar sekvensen och stimuleringen av enheterna på kretsen. Denna klocka distribueras från en enda källa till alla minneselement i kretsen, som till exempel kan vara register eller flip-flops . I en krets som använder kantutlösta register, när klockflanken eller tickan kommer till ett register, överför registret registeringången till registerutgången, och dessa nya utgångsvärden flödar genom kombinationslogik för att tillhandahålla värdena vid registeringångar för nästa klockan tickar.
Idealt sett når insignalen till varje minneselement sitt slutvärde i tid för nästa klocktick så att hela kretsens beteende kan förutsägas exakt. Den maximala hastighet med vilken ett system kan köras måste ta hänsyn till variansen som uppstår mellan de olika elementen i en krets på grund av skillnader i fysisk sammansättning, temperatur och väglängd.
I en synkron krets sägs två register, eller vippor, vara "sekventiellt intilliggande" om en logisk väg förbinder dem. Givet två sekventiellt angränsande register R Cj i Ci respektive och Rj med klockankomsttider vid klock- och destinationsregistrets klockstift lika med T T , kan klockskevning definieras som: T skev i, j = T C i − T C j .
I kretsdesign
Snedvridning av klockan kan orsakas av många olika saker, till exempel längd på trådanslutningen, temperaturvariationer, variationer i mellanliggande enheter, kapacitiv koppling , materialfel och skillnader i ingångskapacitans på klockingångarna på enheter som använder klockan. När klockfrekvensen för en krets ökar, blir timingen mer kritisk och mindre variation kan tolereras om kretsen ska fungera korrekt.
Det finns två typer av klockskevning: negativ skevning och positiv skevning . Positiv skevhet uppstår när det mottagande registret tar emot klockticket senare än det sändande registret. Negativ skevhet är motsatsen: det sändande registret får klockticket senare än det mottagande registret. Noll klockskevning hänvisar till ankomsten av klockticken samtidigt vid sändnings- och mottagningsregistret.
Skadlig skevhet
Det finns två typer av överträdelser som kan orsakas av sned tid. Ett problem uppstår när klockan når det första registret och klocksignalen mot det andra registret går långsammare än utsignalen från det första registret till det andra registret - utsignalen från det första registret når den andra registret snabbare och klockas därför och ersätter initiala data i det andra registret, eller kanske förstöra integriteten hos den låsta datan. Detta kallas en hållöverträdelse eftersom tidigare data inte hålls tillräckligt länge vid destinationsvippan för att klockas igenom ordentligt. Ett annat problem uppstår om destinationsvippan tar emot klockvippan tidigare än källvippan - datasignalen har så mycket mindre tid på sig att nå destinationsvippan före nästa klocktick. Om den misslyckas med att göra det, inträffar en installationsöverträdelse , så kallad för att den nya datan inte var inställd och stabil innan nästa klocktick kom. En överträdelse av spärr är allvarligare än en installationsöverträdelse eftersom den inte kan åtgärdas genom att öka klockperioden. Positiv skevning och negativ skevning kan inte negativt påverka inställningen respektive hålla tidsbegränsningar (se ojämlikheter nedan).
Fördelaktig skevhet
Där en signal i stort sett klockar en krets, måste signalerna/tillståndsövergångarna den initierar stabiliseras innan den signalerar en annan uppsättning tillståndsövergångar - och det begränsar klockans övre frekvens. Skew minskar alltså klockfrekvensen vid vilken kretsen kommer att fungera korrekt. För varje källregister och destinationsregister som är anslutna med en väg måste följande inställnings- och hållolikheter följas:
var
- T är klockperioden,
- reg är källregistrets klocka till Q-fördröjning,
- är vägen med längst fördröjning från källa till destination,
- J är en övre gräns för jitter,
- S är inställningstiden för destinationsregistret
- representerar klockskeningen från källan till destinationsregistren,
- är vägen med den kortaste fördröjningen från källa till destination,
- H är hålltiden för destinationsregistret,
- är klockans snedställning till destinationsregistret, och
- är klockans snedställning till källregistret.
Positiva klockskevningar är bra för att åtgärda inställningsöverträdelser, men kan orsaka överträdelser av håll. Negativ klockskevning kan skydda mot ett spärrbrott, men kan orsaka ett inställningsbrott.
I ovanstående olikheter används en enda parameter, J , för att ta hänsyn till jitter . Denna parameter måste vara en övre gräns för skillnaden i jitter över alla källregister/destinationsregisterpar. Emellertid, om strukturen hos klockdistributionsnätverket är känd, kan olika källregister/destinationsregisterpar ha olika jitterparametrar, och ett annat jittervärde kan användas för hållrestriktionen i motsats till värdet för inställningsrestriktionen. Till exempel, om källregistret och destinationsregistret tar emot sina klocksignaler från en gemensam närliggande klockbuffert, kan jittergränsen för den hållrestriktionen vara mycket liten, eftersom varje variation i den klocksignalen kommer att påverka de två registren lika. För samma exempel måste jittergränsen för inställningsbegränsningen vara större än för hållbegränsningen, eftersom jitter kan variera från clock tick till clock tick. Om källregistret tar emot sin klocksignal från en lövbuffert i klockdistributionsnätverket som är långt borta från lövbufferten som matar destinationsregistret, då måste jittergränsen vara större för att ta hänsyn till de olika klockvägarna till de två registren , som kan ha olika bruskällor kopplade till sig.
Figurerna 1 och 2 illustrerar en situation där avsiktlig klockskevning kan gynna en synkronkrets. I noll-skevningskretsen i figur 1 går en lång väg från vippan FF1 till vippan FF2 och en kort väg, såsom en skiftregisterväg, från FF2 till FF3. FF2 -> FF3-vägen är farligt nära att ha en hållöverträdelse: Om även en liten mängd extra klockfördröjning inträffar vid FF3, kan detta förstöra data vid D-ingången på FF3 innan klockan kommer för att klocka igenom den till FF3:s Q produktion. Detta kan hända även om FF2 och FF3 var fysiskt nära varandra, om deras klockingångar råkade komma från olika bladbuffertar i ett klockdistributionsnätverk.
Figur 2 visar hur problemet kan åtgärdas med avsiktlig klockskevning. En liten mängd extra fördröjning läggs in före FF2:s klockingång, som sedan säkert placerar FF2 -> FF3-vägen bort från dess hållöverträdelse. Som en extra fördel släpper samma extra klockfördröjning på inställningsbegränsningen för FF1 -> FF2-vägen. FF1 -> FF2-vägen kan fungera korrekt vid en klockperiod som är mindre än vad som krävs för snedställning av nollklockan, med en mängd lika med fördröjningen av den adderade klockfördröjningsbufferten.
En vanlig missuppfattning om avsiktlig klockskevning är att det nödvändigtvis är farligare än noll clock skew, eller att det kräver mer exakt kontroll av fördröjningar i klockdistributionsnätverket. Det är dock nollskevningskretsen i figur 1 som är närmare felfunktion - en liten mängd positiv klockskevning för FF2 -> FF3-paret kommer att orsaka ett hållbrott, medan den avsiktliga skevningskretsen i figur 2 är mer tolerant mot oavsiktlig fördröjning variationer i klockfördelning.
Optimal snedställning
Om klockankomsttiderna vid individuella register ses som variabler som ska justeras för att minimera klockperioden samtidigt som man tillfredsställer inställningen och håller olikheter för alla vägar genom kretsen, då är resultatet ett linjärt programmeringsproblem . I detta linjära program är noll klockskevning bara en möjlig punkt - lösningen på det linjära programmet ger i allmänhet en klockperiod som är mindre än vad som uppnås med nollskevning. Dessutom kan säkerhetsmarginaler som är större än eller lika med nollskevfallet garanteras genom att ställa in inställningar och hålltider och jitter bundna på lämpligt sätt i det linjära programmet.
Tack vare den enkla formen av detta linjära program finns en lättprogrammerad algoritm tillgänglig för att komma fram till en lösning. De flesta CAD-system för VLSI- och FPGA-design innehåller faciliteter för att optimera klockskevningar.
Förvirring mellan klockskevhet och klockjitter
Förutom klockskev på grund av statiska skillnader i klocklatensen från klockkällan till varje klockregistrerat register, är ingen klocksignal perfekt periodisk, så att klockperioden eller klockcykeltiden varierar även vid en enskild komponent, och denna variation är känd. som klockjitter . Vid en speciell punkt i ett klockdistributionsnätverk är jitter den enda bidragande orsaken till klocktidsosäkerheten.
Som en approximation är det ofta användbart att diskutera den totala klocktidsosäkerheten mellan två register som summan av spatial klockskevning (de rumsliga skillnaderna i klocklatens från klockkällan) och klockjitter (vilket betyder klockans icke-periodicitet vid en viss punkt i nätverket). Tyvärr varierar spatial klockskevning i tid från en cykel till nästa på grund av lokala tidsberoende variationer i strömförsörjningen, lokal temperatur och bruskoppling till andra signaler.
Sålunda, i det vanliga fallet med att sända och ta emot register på olika platser, finns det inget tydligt sätt att separera den totala klocktidsosäkerheten i rumslig skevhet och jitter. Således använder vissa författare termen klockskevning för att beskriva summan av rumslig klockskevning och klockjitter. Detta innebär givetvis att klockskeningen mellan två punkter varierar från cykel till cykel, vilket är en komplexitet som sällan nämns. Många andra författare använder termen klockskevning endast för den rumsliga variationen av klocktider, och använder termen klockjitter för att representera resten av den totala klocktidsosäkerheten. Detta innebär naturligtvis att klockjitter måste vara olika vid varje komponent, vilket återigen sällan diskuteras.
Lyckligtvis förblir rumslig klockskevning i många fall ganska konstant från cykel till cykel, så att resten av den totala klocktidsosäkerheten väl kan approximeras av ett enda gemensamt klockjittervärde.
På ett nätverk
På ett nätverk som internet beskriver klockskev skillnaden i frekvens ( första derivatan av offset med tiden) för olika klockor inom nätverket . Nätverksoperationer som kräver tidsstämplar som är jämförbara mellan olika värdar kan påverkas av klockskevhet. Ett antal protokoll (t.ex. Network Time Protocol ) har utformats för att minska klockskevhet och producera mer stabila funktioner. Vissa applikationer (som spelservrar ) kan också använda sin egen synkroniseringsmekanism för att undvika tillförlitlighetsproblem på grund av klockskev.
Gränssnitt
Klockskev är anledningen till att seriella gränssnitt (t.ex. Serial Attached SCSI eller USB ) vid höga hastigheter eller långa avstånd föredras framför parallella gränssnitt (t.ex. parallella SCSI ). [ citat behövs ]
Se även
- Friedman, Eby G. (1995). Klockdistributionsnätverk i VLSI-kretsar och system . IEEE Tryck. ISBN 978-0780310582 .
- Friedman, Eby G. (maj 2001). "Klockdistributionsnätverk i synkrona digitala integrerade kretsar" (PDF) . IEEE:s förfaranden . 89 (5): 665–692. CiteSeerX 10.1.1.7.7824 . doi : 10.1109/5.929649 . Arkiverad från originalet (PDF) 2015-06-01 . Hämtad 2017-01-09 .
-
Tam, S., Limaye, DL och Desai, FN (april 2004). "Klockgenerering och distribution för 130-nm Itanium 2-processorn med 6 MB On-Die L3-cache". IEEE Journal of Solid-State Circuits . 39 (4). doi : 10.1109/JSSC.2004.825121 . S2CID 31388328 .
{{ citera journal }}
: CS1 underhåll: använder författarens parameter ( länk )