Inversionskodning

Inversionskodning är en kodningsteknik som används för att koda bussöverföringar för lågeffektsystem. Det är baserat på det faktum att en stor mängd ström slösas bort på grund av övergångar, särskilt i externa bussar, och reducering av dessa övergångar underlättar optimering av effektförlusten . Detta görs genom att introducera en extra signallinje med namnet INV till busslinjerna. Denna signal avgör om de andra linjerna ska inverteras eller inte.

Översikt

Bus-invert-kodningstekniken använder en extra signal (INV) för att indikera "polariteten" för datan. Med ett bussinverteringskodord INV@x där @ är sammanlänkningsoperatorn och x betecknar antingen källordet eller dess komplement , tar bussinverteringsavkodaren kodordet och producerar motsvarande källord. Om INV-signalen är 1 är resultatet ens komplement till x, annars är det x.

Användningsscenarier

  • Ledningar med hög kapacitans
  • Hög växlingsaktivitet

Bus-inverteringsmetod

  1. Hamming -avståndet (antalet bitar i vilka de skiljer sig) mellan det aktuella bussvärdet (även räknande den aktuella inverteringslinjen) och nästa datavärde beräknas.
  2. Om Hamming-avståndet är större än n/2 sätts invertering till 1, och nästa bussvärde görs lika med det inverterade nästa datavärdet.
  3. Annars sätts invertering till 0, och nästa bussvärde är lika med nästa datavärde.
  4. På mottagarsidan måste innehållet i bussen villkorligt inverteras enligt inverteringslinjen, såvida inte data inte lagras kodad som den är (t.ex. i ett RAM). I vilket fall som helst måste värdet på invertering överföras över bussen (metoden ökar antalet linjer från n till n+1).

Exempel

Med tanke på ett exempel på ett system som får en av sina data från en sensor, kan sensorn för det mesta mäta lite brus. För detta exempel bör värdena som mäts antas vara (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 tvåkomplementrepresentation . Hamming-avståndet i detta fall är 32 (eftersom alla 32 bitar ändrar tillstånd). Hamming-avståndet är mycket mindre med hjälp av teckenbit-representationen . Men även om du använder två-komplement minskar inversionskodning den nödvändiga aktiviteten. I det här fallet skulle 0 representeras som 0x00000000 med INV=0 och -1 skulle representeras som 0x00000000 med INV=1. Eftersom INV=1 skulle mottagaren invertera data innan den konsumerade den, och därigenom konvertera den till 0xFFFFFFFF internt. I detta fall ändras endast 1 bit (INV-bit) i bussen, vilket leder till en aktivitet på faktor 1, vilket är till och med bättre än teckenbitsrepresentation.

Översikt för prestandaanalys: inversionskodning

Prestationsanalys

reduceras toppeffektförlusten för input/output (I/O) med hälften. Ur kodningsteoretisk synvinkel är buss-inverteringskoden en tidsberoende markovisk kod.

Medan det maximala antalet övergångar minskas med hälften, har det genomsnittliga antalet en mindre minskning. För en 8-bitars buss till exempel, blir det genomsnittliga antalet övergångar, med bus-invertkodning 3,27 (istället för 4), eller 0,41 (istället för 0,5) övergångar per busslinje per tidslucka. Det betyder att det genomsnittliga antalet övergångar är 81,8 % av antalet med en okodad buss. Detta beror på att inverteringslinjen bidrar med vissa övergångar och fördelningen av Hamming-avstånden är inte enhetlig.

Partitionerad inversionskodning

För att minska den genomsnittliga I/O-effektförlusten för breda bussar kan observationen att bussinverteringsmetoden presterar bättre för små bussstorlekar användas för att dela upp bussen i flera smalare subbussar. Var och en av dessa subbussar kan sedan kodas oberoende med sin egen inverteringssignal. Till exempel skulle en 64-bitars buss kunna delas upp i åtta 8-bitars subbussar med totalt 8 inverterade signaler. På grund av antagandet att data som ska överföras över den breda bussen är enhetligt fördelad , kommer statistiken för de smalare subbussarna att vara oberoende och datasekvensen för varje subbus kommer att vara enhetligt fördelad. Till exempel, för en 64-bitars buss uppdelad i åtta 8-bitars subbussar kommer det genomsnittliga antalet övergångar per tidslucka att vara 26,16 (8 gånger 3,27, genomsnittet för en 8-bitars subbuss) och det genomsnittliga antalet övergångar per buss -linje per tidslucka kommer att vara 0,41 (som för en 8-bitars buss med en inverteringslinje). Det maximala antalet övergångar förbättras inte genom att dela upp bussen och förblir detsamma vid n/2. Det finns dock alltid en extra omkostnad för att använda fler linjer, men beräkningsmässigt har det visat sig att inversionsbusskodningen fungerar bra för de flesta ändamål.

Se även

Vidare läsning