Busskodning
Busskodning avser att konvertera/koda en bit data till en annan form innan den startas på bussen . Även om busskodning kan användas för att tjäna olika syften som att minska antalet stift, komprimera data som ska överföras, minska överhörning mellan bitlinjer etc., är det en av de populära teknikerna som används i systemdesign för att minska dynamisk effekt konsumeras av systembussen . Busskodning syftar till att minska Hamming-avståndet mellan 2 på varandra följande värden på bussen. Eftersom aktiviteten är direkt proportionell mot Hamming-avståndet , visar sig busskodning vara effektiv för att minska den totala aktivitetsfaktorn och därigenom minska den dynamiska strömförbrukningen i systemet.
I samband med denna artikel kan ett system hänvisa till allt där data överförs från ett element till ett annat via buss (dvs. System on a Chip (SoC), ett datorsystem, ett inbyggt system ombord, etc.).
Motivering
Strömförbrukning i elektroniska system är ett problem idag av följande skäl:
- Batteridrivna enheter : På grund av att det finns batteridrivna enheter överallt och behovet av att maximera varaktigheten mellan två efterföljande laddningar av batteriet, är det nödvändigt att systemet förbrukar så mindre ström (och energi) som möjligt.
- Miljöbegränsningar : I ett försök att skydda miljön måste vi spara den användbara energin. Eftersom energin som förbrukas av elektroniska system ökar drastiskt, är det avgörande att minimera energiförbrukningen för elektroniska system för att spara miljön.
- Effektförlust : Enligt Moores lag har halvledarenheter packat fler och fler transistorer i en mindre yta. Detta leder till högre effektförlust per ytenhet och gör design av förpackningar och termiska kylsystem komplexa och kostsamma. Därför behövs elektroniska system med låg effekt för att hantera detta problem.
Den dynamiska effekten som avges av en elektronisk krets är direkt proportionell mot aktivitetsfaktorn och belastningskapacitansen som ses av utsignalen från den logiska grinden. När det gäller en buss är belastningskapacitansen vanligtvis hög eftersom bussen måste kopplas till flera moduler och dras längre och aktivitetsfaktorn också är hög. På grund av högre värde på belastningskapacitans och aktivitetsfaktor, i ett typiskt system, kan bussens strömförbrukning bidra med upp till 50 % av den totala strömförbrukningen. Busskodning syftar till att minska denna effekt genom att minska mängden aktivitet (antal växlar) i busslinjerna. Även om typen av busskodning som ska användas för ett visst system bäst kan bestämmas när målapplikationen och miljörestriktioner för systemet är kända apriori, beskrivs nedan några buskodningstekniker som kan hjälpa till att minska busseffekten för de flesta system.
Därför är busskodning viktig för alla elektroniska systemkonstruktioner. [ citat behövs ]
Exempel på busskodning för att uppnå låg effekt
Följande är några av implementeringarna för att använda busskodning för att minska den dynamiska strömförbrukningen i olika scenarier:
- Grå kodadressering : Adresslinjerna för en buss i de flesta datorsystem ökar i på varandra följande numeriska värden på grund av rumslig lokalitet . Om vi använder vanlig binär kodning för bussen är vi inte säkra på minimalt Hamming-avstånd mellan 2 på varandra följande adresser. Användning av gråkoder för att koda adresslinjerna kommer att leda till ett Hamming-avstånd på 1 mellan två på varandra följande adressbussvärden (så länge den rumsliga lokaliteten gäller). Det finns varianter av detta schema som heter Shifted Grey-kodning för att minska fördröjningsoverheaden.
- Sekventiell adressering eller T0-koder : Vid adressbuss, på grund av rumslig lokalitet som finns i program, innebär de flesta övergångarna att adressen ändras till nästa på varandra följande värde. Ett möjligt kodningsschema är att använda en ytterligare linje, INC, i bussen som indikerar om den aktuella övergången är nästa inkrementadress eller inte. Om det inte är en konsekutiv adress kan mottagaren använda värdet på bussen. Men om det är en konsekutiv adress behöver sändaren inte ändra värdet i bussen, utan bara hävda INC-linjen till 1. I ett sådant fall, för ett kontinuerligt adresseringsschema, finns det ingen övergång alls på bussen, vilket leder till en bussaktivitetsfaktor på 0.
- Talrepresentation : Betrakta ett exempel på ett system som får en av sina data från en sensor. Oftast kan sensorn mäta en del brus och för detta exempel, tänk på att värdena som mäts är (0) och (-1) alternativt. För en 32-bitars databuss översätts värdet 0 till 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000) medan (-1) översätts till 0xFFFFFF FF (1111 111 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 111) i en 2:a komplementrepresentation. Vi ser att Hamming-avståndet i detta fall är 32 (eftersom alla 32-bitar ändrar tillstånd). Istället, om vi kodar bussen för att använda signerad heltalsrepresentation (MSB är teckenbit), kan vi representera 0 som 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000) och -1 som 0x80000000 0000000 (0 0000 0000 0001) . I det här fallet ser vi att Hamming-avståndet mellan talen bara är 2. Genom att använda ett 2-komplement till aritmetisk kodning med tecken kan vi därför minska aktiviteten från en faktor 32 till 2.
- Inversionskodning : Detta är en annan implementering av busskodning där en extra linje med namnet INV läggs till busslinjerna. Beroende på värdet på INV-linjen kommer de andra linjerna att användas med eller utan inversion. t.ex. om INV-linjen är 0, samplas data på bussen som den är, men om INV-linjen är 1, inverteras data på bussen innan någon bearbetning på den. Med hänvisning till exemplet som används i 3, istället för att använda en heltalsrepresentation med tecken, kan vi fortsätta att använda 2:s komplement och uppnå samma aktivitetsminskning med inversionskodning. Så, 0 kommer att representeras som 0x00000000 med INV=0 och -1 kommer att representeras som 0x00000000 med INV=1. Eftersom INV=1, kommer mottagaren att invertera data innan den konsumerar den, och därigenom konvertera den till 0xFFFFFFFF internt. I detta fall ändras endast 1 bit (INV-bit) över bussen vilket leder till en aktivitet på faktor 1. I allmänhet, vid inversionskodning, beräknar kodaren Hamming-avståndet mellan det aktuella värdet och nästa värde och bestämmer utifrån det om för att använda INV=0 eller INV=1.
- Värdecache-kodning : Detta är en annan form av busskodning, som främst används för externa (off-chip) bussar. En ordbok (värdecache) upprätthålls i både sändar- och mottagarens ände om några av de gemensamt delade datamönstren. Istället för att skicka datamönstren varje gång, växlar avsändaren bara en bit för att indikera vilken post från värdecache som ska användas i mottagaränden. Endast för värden som inte finns i värdecachen skickas hela data över bussen. Det har förekommit olika modifierade implementeringar av denna teknik med avsikt att maximera träffarna för värdecachen, men den underliggande idén är densamma.
- Andra tekniker som sektorbaserad kodning, variationer av inversionskodning, har också föreslagits. Det har gjorts arbete med att använda busskodningar som sänker strömförbrukningen för läckage samt minskar överhörningen med minimal påverkan på vägförseningar.
Andra exempel på busskodning
Många andra typer av busskodning har utvecklats av olika anledningar:
- förbättrad EMC: differentiell signalering som används i många bussar, och den mer allmänna konstantviktskoden som används i MIPI C-PHY Camera Serial Interface är både mer immuna mot yttre störningar och avger mindre störningar till andra enheter.
- bussmultiplexering: Många tidiga mikroprocessorer och många tidiga DRAM-chips minskade kostnaderna genom att använda bussmultiplexering, snarare än att dedikera en pin till varje adressbit och databit i systembussen . Ett tillvägagångssätt återanvänder adressbussstiften vid olika tidpunkter för databussstift, ett tillvägagångssätt som används av konventionell PCI . Ett annat tillvägagångssätt återanvänder samma stift vid olika tidpunkter för den övre halvan och för den nedre halvan av adressbussen, ett tillvägagångssätt som används av många dynamiska slumpmässiga minneschips, som lägger till 2 stift till kontrollbussen -- en radadress stroben ( RAS ) och kolumnadressstroben ( CAS ).
Genomförandemetod
När det gäller SoC-designer kan busskodningsscheman bäst implementeras i RTL genom att instansiera dedikerade kodare och avkodare över bussen. Ett annat sätt att implementera det är genom att skicka ledtrådar till syntesverktyget antingen som ett spår av simuleringen eller genom att använda syntespragma för att definiera vilken typ av kodning som behövs.
Ombord kan en liten IC med låg effekt distribueras mellan master- och slavmodulerna på bussen för att implementera kodnings- och avkodningsfunktionerna.
Egenskaper för kodningsfunktionen
Busskodnings-/avkodningsfunktionen måste vara en bijektion . Detta kräver i huvudsak en kodningsfunktion för att ha följande beteende:
- Varje data som ska lanseras på bussen måste ha ett unikt kodat värde och varje kodat värde måste unikt avkoda till samma ursprungliga värde.
- Det måste vara möjligt att koda och avkoda alla värden som kan genereras av källan.
Avvägning/analys
- Medan tillägg av busskodning minskar aktivitetsfaktorn över bussen och leder till minskning av dynamisk effekt, orsakar tillägg av kodare och avkodare runt bussen att ytterligare kretsar adderas till konstruktionen, som också förbrukar en viss mängd dynamisk effekt. Vi måste ta hänsyn till detta när vi beräknar energibesparingarna.
- Den extra kretsen kommer också att öka läckeffekten för designen/kretsen/systemet/SoC. Om basaktivitetsfaktorn för systembussen inte är särskilt hög, kanske busskodning inte är ett särskilt genomförbart alternativ eftersom det kommer att försämra den totala energiförbrukningen på grund av högre läckeffekt.
- Om busstimingen är i den kritiska datavägen, kommer tillägg av ytterligare kretsar i vägen att försämra tidsvägen och kan visa sig vara skadlig. Denna analys måste göras noggrant för att avgöra vilken typ av busskodning som ska användas.
Se även
Vidare läsning
- Su, Ching-Long; Tsui, Chi-Ying; Despain, Alvin M. (1994). Lågeffektarkitekturdesign och kompileringstekniker för högpresterande processorer ( PDF) (Rapport). Advanced Computer Architecture Laboratory. ACAL-TR-94-01.