Buss koding - Bus encoding

Buss koding refererer til konvertering / koding av et stykke data til et annet skjema før du starter på bussen . Mens busskoding kan brukes til å tjene forskjellige formål, for eksempel å redusere antall pinner, komprimere dataene som skal overføres, redusere kryssprat mellom bitlinjer osv., Er det en av de populære teknikkene som brukes i systemdesign for å redusere dynamisk kraft forbrukes av systembussen . Buss koding tar sikte på å redusere Hamming avstanden mellom to påfølgende verdier på bussen. Siden aktiviteten er direkte proporsjonal med Hamming-avstanden , viser busskoding seg å være effektiv for å redusere den totale aktivitetsfaktoren og derved redusere det dynamiske strømforbruket i systemet.

I sammenheng med denne artikkelen kan et system referere til alt der data overføres fra ett element til et annet via buss (nemlig System on a Chip (SoC), et datasystem, et innebygd system ombord, etc.).

Motivasjon

Strømforbruk i elektroniske systemer er bekymringsfullt i dag av nedenstående årsaker:

  1. Batteridrevne enheter : På grunn av allestedsnærværende batteridrevne enheter og behovet for å maksimere varigheten mellom to påfølgende lading av batteriet, er det nødvendig at systemet bruker så lite strøm (og energi) som mulig.
  2. Miljømessige begrensninger : I et forsøk på å beskytte miljøet, må vi spare brukbar energi. Siden energien som forbrukes av elektroniske systemer øker drastisk, er det viktig å minimere energiforbruket til elektroniske systemer for å spare miljøet.
  3. Kraftspredning : I henhold til Moores lov har halvlederinnretninger pakket flere og flere transistorer i mindre areal. Dette fører til høyere effekttap per arealenhet og gjør emballasje og design av termisk kjølesystem komplisert og kostbart. Derfor er det nødvendig med elektroniske systemer med lav effekt for å takle dette problemet.

Den dynamiske kraften som ledes ut av en elektronisk krets, er direkte proporsjonal med aktivitetsfaktoren og lastkapasitansen sett av utgangen fra den logiske porten. I tilfelle en buss er lastekapasitansen vanligvis høy siden bussen må kobles til flere moduler og rutes lenger og aktivitetsfaktoren også er høy. På grunn av høyere verdi av lastekapasitans og aktivitetsfaktor, i et typisk system, kan bussstrømforbruk bidra med opptil 50% av det totale strømforbruket. Buss koding tar sikte på å redusere denne effekten ved å redusere aktiviteten (antall veksler) i busslinjene. Mens typen busskoding som skal brukes for et bestemt system best kan bestemmes når målapplikasjonen og miljømessige begrensninger rundt systemet er kjent apriori, er beskrevet nedenfor noen busskodingsteknikker som kan bidra til å redusere busseffekten for de fleste systemer.

Derfor er busskoding viktig for enhver elektronisk systemdesign.

Eksempler på busskoding for å oppnå lav effekt

Følgende er noen av implementeringene for å bruke busskoding for å redusere dynamisk strømforbruk i forskjellige scenarier:

  1. Grå koding : Adresselinjene til en buss i de fleste datasystemene øker i fortløpende numeriske verdier på grunn av romlig lokalitet . Hvis vi bruker vanlig binær koding for bussen, er vi ikke sikre på minimal Hamming-avstand mellom 2 påfølgende adresser. Bruk av grå koder for koding av adresselinjene vil føre til en Hamming-avstand på 1 mellom to påfølgende adressebussverdier (så lenge den romlige lokaliteten holder). Det er variasjoner i denne ordningen som heter Shifted Grey-koding for å redusere forsinkelsen overhead.
  2. Sekvensiell adressering eller T0-koder : I tilfelle adressebuss på grunn av romlig lokalitet som eksisterer i programmer, involverer de fleste overgangene å endre adressen til neste påfølgende verdi. En mulig kodingsplan er å bruke en ekstra linje, INC, i bussen som indikerer om den nåværende overgangen er neste trinnadresse eller ikke. Hvis det ikke er en påfølgende adresse, kan mottakeren bruke verdien på bussen. Men hvis det er en påfølgende adresse, trenger ikke senderen endre verdien i bussen, men bare hevde INC-linjen til 1. I et slikt tilfelle, for en kontinuerlig adresseringsplan, er det ingen overgang i det hele tatt på bussen, noe som fører til en bussaktivitetsfaktor på 0.
  3. Tallrepresentasjon : Tenk på et eksempel på et system som får en av dataene fra en sensor. De fleste ganger kan sensoren måle noe støy, og vurder for dette eksemplet at verdiene som måles er (0) og (-1) alternativt. For en 32-biters databuss, verdi 0 oversettes til 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000) mens (-1) oversettes til 0xFFFFFFFF (1111 1111 1111 1111 1111 1111 1111 1111) i en 2s komplementrepresentasjon. Vi ser at Hamming-avstanden i dette tilfellet er 32 (siden alle 32-bits endrer tilstand). I stedet, hvis vi koder for bussen for å bruke signert heltallrepresentasjon (MSB er tegnbit), kan vi representere 0 som 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000) og -1 som 0x80000001 (1000 0000 0000 0000 0000 0000 0000 0001) . I dette tilfellet ser vi at Hamming-avstanden mellom tallene bare er 2. Ved å bruke et 2-komplement til signert aritmetisk koding, er vi i stand til å redusere aktiviteten fra en faktor på 32 til 2.
  4. Inversjonskoding : Dette er en annen implementering av busskoding der en ekstra linje med navnet INV legges til busslinjene. Avhengig av verdien på INV-linjen, vil de andre linjene brukes med eller uten inversjon. for eksempel hvis INV-linjen er 0, blir dataene på bussen samplet som de er, men hvis INV-linjen er 1, blir dataene på bussen invertert før noen behandling på den. Med henvisning til eksemplet som ble brukt i 3, i stedet for å bruke en signert heltallrepresentasjon, kunne vi fortsette å bruke 2s komplement og oppnå den samme aktivitetsreduksjonen ved hjelp av inversjonskoding. Så vil 0 bli representert som 0x00000000 med INV = 0 og -1 vil bli representert som 0x00000000 med INV = 1. Siden INV = 1, vil mottakeren invertere dataene før den konsumeres, og dermed konvertere den til 0xFFFFFFFF internt. I dette tilfellet blir bare 1 bit (INV-bit) endret over buss som fører til en aktivitet av faktor 1. Generelt beregner koderen i inversjonskoding Hamming-avstanden mellom gjeldende verdi og neste verdi og ut fra det bestemmer om å bruke INV = 0 eller INV = 1.
  5. Verdiecache-koding : Dette er en annen form for busskoding, primært brukt for eksterne busser (utenfor brikken). En ordbok (verdi cache) opprettholdes både på avsender- og mottakerenden om noen av de vanligste datamønstrene. I stedet for å sende datamønstrene hver gang, bytter bare avsenderen en bit som indikerer hvilken oppføring fra verdibufferen som skal brukes i mottakerenden. Bare for verdier som ikke er tilstede i verdibufferen, sendes de komplette dataene over bussen. Det har vært forskjellige modifiserte implementeringer av denne teknikken med den hensikt å maksimere treffene for verdi-hurtigbufferen, men den underliggende ideen er den samme.
  6. Andre teknikker som sektorbasert koding, variasjoner av inversjonskoding, er også blitt foreslått. Det har vært arbeidet med å bruke buss-kodinger som også reduserer lekkasjestrømforbruket sammen med å redusere overhøringen med minimal innvirkning på steforsinkelser.

Andre eksempler på busskoding

Mange andre typer busskoder har blitt utviklet av en rekke årsaker:

  • forbedret EMC: differensialsignalering brukt i mange busser, og den mer generelle konstantvektkoden som brukes i MIPI C-PHY Camera Serial Interface er både mer immun mot interferens utenfor, og avgir mindre interferens til andre enheter.
  • bussmultipleksering: Mange tidlige mikroprosessorer og mange tidlige DRAM-sjetonger reduserte kostnadene ved å bruke bussmultipleksering, i stedet for å vie en pin til hver adressebit og databit i systembussen . En tilnærming bruker adressebusspinnene på nytt til forskjellige tider for databusspinner, en tilnærming som brukes av konvensjonell PCI . En annen tilnærming bruker de samme pinnene på nytt til forskjellige tider for den øvre halvdelen og for den nedre halvdelen av adressebussen, en tilnærming som brukes av mange dynamiske tilfeldige tilgangsminnebrikker , og legger til 2 pinner til kontrollbussen - en radadresse strobe ( RAS ) og kolonne-adresse strobe ( CAS ).

Implementeringsmetode

I tilfelle SoC-design kan busskodingsordninger best implementeres i RTL ved å instantiere dedikerte kodere og dekodere over bussen. En annen måte den kan implementeres på er å gi antydning til synteseverktøyet enten som et spor av simuleringen eller ved å bruke syntesepragma for å definere hvilken type koding som trengs.

Ombord kan en liten IC med lav effekt distribueres mellom master- og slave-modulene på bussen for å implementere kodings- og dekodingsfunksjonene.

Egenskaper for kodingsfunksjonen

Buss-koding / dekoding-funksjonen må være en tilknytning . Dette krever i hovedsak kodingsfunksjon for å ha oppførselen nedenfor:

  1. Alle data som skal lanseres på bussen må ha en unik kodet verdi, og hver kodede verdi må unikt dekode til den samme opprinnelige verdien.
  2. Det må være mulig å kode og dekode alle verdiene som kan genereres av kilden.

Avveining / analyse

  • Mens tilsetning av busskoding reduserer aktivitetsfaktoren over bussen og fører til reduksjon i dynamisk effekt, fører tilsetning av kodere og dekodere rundt bussen til at ekstra kretser legges til designet, som også forbruker en viss mengde dynamisk kraft. Vi må faktorisere dette mens vi beregner strømbesparelsene.
  • De ekstra kretsene vil også øke lekkasjekraften til designet / kretsen / systemet / SoC. Hvis basisaktivitetsfaktoren til systembussen ikke er veldig høy, kan det hende at busskoding ikke er et veldig levedyktig alternativ, siden det vil redusere det totale energiforbruket på grunn av høyere lekkasjekraft.
  • Hvis busstimingen er i den kritiske databanen, vil tillegg av ekstra kretsløp i banen forringe timingstien og kan vise seg å være skadelig. Denne analysen må gjøres nøye for å avgjøre hva slags busskoding som skal brukes.

Se også

Referanser

Videre lesning