Codificare autobuz - Bus encoding
Codificarea autobuzului se referă la conversia / codificarea unei bucăți de date într-o altă formă înainte de lansarea pe autobuz . În timp ce codarea magistralei poate fi utilizată pentru a îndeplini diverse scopuri, cum ar fi reducerea numărului de pini, comprimarea datelor de transmis, reducerea conversațiilor între liniile de biți etc., este una dintre tehnicile populare utilizate în proiectarea sistemului pentru a reduce puterea dinamică. consumat de magistrala de sistem . Codificarea autobuzului vizează reducerea distanței Hamming între 2 valori consecutive pe autobuz. Deoarece activitatea este direct proporțională cu distanța Hamming , codarea magistralei se dovedește a fi eficientă în reducerea factorului general de activitate, reducând astfel consumul de energie dinamic din sistem.
În contextul acestui articol, un sistem se poate referi la orice lucru în care datele sunt transferate de la un element la altul pe magistrală (și anume Sistem pe un cip (SoC), un sistem de calculator, un sistem încorporat la bord etc.).
Motivație
Consumul de energie în sistemele electronice este un motiv de îngrijorare astăzi din următoarele motive:
- Dispozitive cu baterie : Datorită omniprezenței dispozitivelor cu baterie și necesității de a maximiza durata dintre două încărcări ulterioare ale bateriei, este necesar ca sistemul să consume cât mai puțină energie (și energie) posibil.
- Constrângeri de mediu : În încercarea de a proteja mediul, trebuie să conservăm energia utilizabilă. Deoarece energia consumată de sistemele electronice crește drastic, minimizarea consumului de energie al sistemelor electronice este esențială pentru salvarea mediului.
- Disiparea puterii : Conform legii lui Moore , dispozitivele semiconductoare au împachetat tot mai multe tranzistoare într-o suprafață mai mică. Acest lucru duce la o disipare mai mare a puterii pe unitate de suprafață și face ca proiectarea sistemelor de răcire și ambalare să fie complexă și costisitoare. Prin urmare, sunt necesare sisteme electronice de mică putere pentru a aborda această problemă.
Puterea dinamică disipată de un circuit electronic este direct proporțională cu factorul de activitate și capacitatea de încărcare, așa cum este văzută de ieșirea porții logice. În cazul unui autobuz, capacitatea de încărcare este de obicei ridicată, deoarece autobuzul trebuie conectat la mai multe module și dirijat mai mult, iar factorul de activitate este, de asemenea, ridicat. Datorită valorii mai mari a capacității de încărcare și a factorului de activitate, într-un sistem tipic, consumul de energie al autobuzului poate contribui până la 50% din consumul total de energie. Codificarea autobuzului are ca scop reducerea acestei puteri prin reducerea activității (numărul de comutatoare) în liniile de autobuz. În timp ce tipul de codificare a magistralei care trebuie utilizat pentru un anumit sistem poate fi cel mai bine determinat atunci când aplicația țintă și constrângerile de mediu legate de sistem sunt cunoscute apriori, descrise mai jos sunt câteva tehnici de codificare a magistralei care pot ajuta la reducerea puterii magistralei pentru majoritatea sistemelor.
Prin urmare, codificarea magistralei este importantă pentru orice proiectare de sistem electronic.
Exemple de codificare a magistralei pentru a obține o putere redusă
Următoarele sunt câteva dintre implementările de utilizare a codificării magistralei pentru reducerea consumului de energie dinamic în diferite scenarii:
- Codificare gri : liniile de adresă ale unei magistrale în majoritatea sistemelor de calcul cresc în valori numerice consecutive datorită localității spațiale . Dacă folosim coduri binare obișnuite pentru autobuz, nu suntem asigurați de distanța minimă Hamming între 2 adrese consecutive. Utilizarea codurilor gri pentru codificarea liniilor de adresă va duce la o distanță de Hamming de 1 între oricare 2 valori consecutive ale magistralei de adrese (atâta timp cât localitatea spațială este valabilă). Există variante ale acestei scheme numită codificare Shifted Grey pentru a reduce întârzierea cheltuielilor.
- Adresare secvențială sau coduri T0 : În cazul magistralei de adrese, datorită localității spațiale care există în programe, majoritatea tranzițiilor implică schimbarea adresei la următoarea valoare consecutivă. O posibilă schemă de codificare este utilizarea unei linii suplimentare, INC, în magistrală, indicând dacă tranziția curentă este următoarea adresă de incrementare sau nu. Dacă nu este o adresă consecutivă, atunci receptorul poate folosi valoarea din autobuz. Dar dacă este o adresă consecutivă, emițătorul nu trebuie să schimbe valoarea în autobuz, ci doar să afirme linia INC la 1. În acest caz, pentru o schemă de adresare continuă, nu există deloc o tranziție pe autobuz, ceea ce duce la un factor de activitate al autobuzului de 0.
- Reprezentarea numărului : Luați în considerare un exemplu de sistem care obține una dintre datele sale de la un senzor. De cele mai multe ori, senzorul poate măsura un anumit zgomot și, pentru acest exemplu, considerați că valorile măsurate sunt (0) și (-1) alternativ. Pentru o magistrală de date pe 32 de biți, valoarea 0 se transformă în 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000) în timp ce (-1) se traduce în 0xFFFFFFFF (1111 1111 1111 1111 1111 1111 1111 1111) în reprezentarea complementului unui 2. Vedem că distanța Hamming în acest caz este de 32 (deoarece toți cei 32 de biți își schimbă starea). În schimb, dacă codificăm autobuzul pentru a utiliza reprezentarea întreagă semnată (MSB este bit de semn), putem reprezenta 0 ca 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000) și -1 ca 0x80000001 (1000 0000 0000 0000 0000 0000 0000 0001) . În acest caz, vedem că distanța Hamming dintre numere este doar 2. Prin urmare, folosind un complement 2 la codificarea aritmetică semnată, suntem capabili să reducem activitatea de la un factor de 32 la 2.
- Codificare inversiune : Aceasta este o altă implementare a codificării autobuzului în care o linie suplimentară numită INV este adăugată la liniile de autobuz. În funcție de valoarea liniei INV, celelalte linii vor fi utilizate cu sau fără inversare. de exemplu, dacă linia INV este 0, datele de pe magistrală sunt eșantionate așa cum este, dar dacă linia INV este 1, datele de pe magistrală sunt inversate înainte de orice prelucrare pe ea. Referindu-ne la exemplul folosit în 3, în loc să folosim o reprezentare cu număr întreg semnat, am putea continua să folosim complementul lui 2 și să realizăm aceeași reducere a activității folosind codarea inversării. Deci, 0 va fi reprezentat ca 0x00000000 cu INV = 0 și -1 va fi reprezentat ca 0x00000000 cu INV = 1. Deoarece INV = 1, receptorul va inversa datele înainte de a le consuma, convertindu-le astfel la 0xFFFFFFFF intern. În acest caz, doar 1 bit (bit INV) este modificat pe magistrală ducând la o activitate de factor 1. În general, în codificarea inversării, codificatorul calculează distanța de Hamming între valoarea curentă și următoarea valoare și pe baza acesteia, determină dacă pentru a utiliza INV = 0 sau INV = 1.
- Codificare cache a valorii : Aceasta este o altă formă de codificare Bus, utilizată în principal pentru autobuze externe (off-chip). Un dicționar (cache de valori) este menținut atât la capătul expeditorului, cât și la cel al destinatarului, despre unele dintre tiparele de date partajate în mod obișnuit. În loc să treacă de fiecare dată modelele de date, expeditorul comută doar un bit, indicând ce intrare din memoria cache va fi utilizată la capătul receptorului. Numai pentru valorile care nu sunt prezente în memoria cache, datele complete sunt trimise prin magistrală. Au existat diferite implementări modificate ale acestei tehnici cu intenția de a maximiza accesările pentru memoria cache a valorii, dar ideea de bază este aceeași.
- Au fost, de asemenea, propuse alte tehnici, cum ar fi codificarea pe sectoare, variațiile codării inversiunii. S-a lucrat la utilizarea codificărilor de magistrală care reduc consumul de energie de scurgere, precum și reducerea diafragmei cu impact minim asupra întârzierilor de parcurs.
Alte exemple de codificare a autobuzelor
Multe alte tipuri de codificare a magistralei au fost dezvoltate din mai multe motive:
- EMC îmbunătățit: semnalizarea diferențială utilizată în multe autobuze și codul mai general de greutate constantă utilizat în interfața serială a camerei MIPI C-PHY sunt mai imune la interferențele exterioare și emit mai puține interferențe cu alte dispozitive.
- multiplexare de magistrală: Multe microprocesoare timpurii și multe jetoane DRAM timpurii au redus costurile prin utilizarea multiplexării de magistrală, mai degrabă decât să dedice un pin fiecărui bit de adresă și bit de date al magistralei de sistem . O abordare reutilizează pinii magistralei de adresă în momente diferite pentru pinii magistralei de date, o abordare utilizată de PCI convențional . O altă abordare reutilizează aceiași pini în momente diferite pentru jumătatea superioară și pentru jumătatea inferioară a magistralei de adrese, o abordare utilizată de multe cipuri de memorie dinamice cu acces aleatoriu , adăugând 2 pini la magistrala de control - o adresă de rând stroboscopic ( RAS ) și stroboscopul cu adresă de coloană ( CAS ).
Metoda de implementare
În cazul proiectelor SoC, schemele de codare a magistralei pot fi implementate cel mai bine în RTL prin instanțierea codificatoarelor și decodificatoarelor dedicate pe magistrală. Un alt mod în care ar putea fi implementat este prin transmiterea indiciului instrumentului de sinteză fie ca o urmă a simulării sau utilizând pragma de sinteză pentru a defini tipul de codificare necesar.
La bord, un IC mic de mică putere poate fi implementat între modulele master și slave de pe magistrală pentru a implementa funcțiile de codificare și decodare.
Proprietățile funcției de codificare
Funcția de codificare / decodare a magistralei trebuie să fie o bijecție . Acest lucru necesită în esență funcția de codificare pentru a avea un comportament de mai jos:
- Fiecare date care vor fi lansate pe autobuz trebuie să aibă o valoare codificată unică și fiecare valoare codificată trebuie să decodeze în mod unic la aceeași valoare inițială.
- Trebuie să fie posibilă codificarea și decodarea tuturor valorilor care pot fi generate de sursă.
Compensare / analiză
- În timp ce adăugarea codificării magistralei reduce factorul de activitate asupra magistralei și duce la reducerea puterii dinamice, adăugarea de codificatoare și decodoare în jurul magistralei determină adăugarea de circuite suplimentare la proiectare, care consumă, de asemenea, o anumită cantitate de putere dinamică. Trebuie să facem acest lucru în timp ce calculăm economiile de energie.
- Circuitele suplimentare vor crește, de asemenea, puterea de scurgere a proiectului / circuitului / sistemului / SoC. Dacă factorul de activitate de bază al magistralei de sistem nu este foarte mare, codificarea magistralei nu poate fi o opțiune foarte viabilă, deoarece va degrada consumul total de energie din cauza puterii de scurgere mai mari.
- Dacă sincronizarea magistralei se află în calea de date critică, adăugarea de circuite suplimentare în cale va degrada calea de sincronizare și se poate dovedi dăunătoare. Această analiză trebuie făcută cu atenție pentru a determina ce tip de codificare de magistrală să utilizeze.
Vezi si
Referințe
Lecturi suplimentare
- Su, Ching-Long; Tsui, Chi-Ying; Despain, Alvin M. (1994). Tehnici de proiectare și compilare a arhitecturii cu consum redus de energie pentru procesoare de înaltă performanță (PDF) (Raport). Laborator avansat de arhitectură de calculatoare. ACAL-TR-94-01.