Tamponare fluxuri de date - ceea ce este

Termen: tamponarea fluxuri de date

Atunci când programarea operează fluxuri de date ADC și DAC, problema apare pentru a oferi o viteză suficientă de prelucrare a datelor.







Viteza fluxului de date este determinată de frecvența de eșantionare și nu este reglementată de program: un proces fizic nu poate să aștepte. Dacă pierdeți unele capete de acuzare, semnalul va fi rasfatata.

În acest caz, computerul execută programul de obicei, nu funcționează în timp real, de exemplu, în cazul în care programul de un pas ar trebui să fie „imediat“ după altul, „imediat“ ar trebui să fie înțeles ca o secvență de operații, mai degrabă decât ca un timp real. Unele operațiuni (cum ar fi scrierea pe disc) poate fi realizată este relativ lung. De asemenea, într-un sistem de operare multi-tasking are multe procese, întrerupând reciproc, astfel încât programul poate „bloca“ la întâmplare pentru momentele de timp (uneori destul de mult timp - în zeci, chiar sute de milisecunde).

În plus, atunci când programarea este necesar pentru a procesa blocuri de date (porțiuni), mai degrabă decât un eșantion, sau deasupra capului ar nega viteza chiar și computerul modern.

Pentru a rezolva această problemă, utilizați tamponare.

Buffer - o matrice în memorie cu acces rapid, în care se acumulează primit date (în cazul în care acest flux de intrare ADC) sau de la care acestea sunt trimise la o rată predeterminată (dacă DAC flux de ieșire).

Atunci când procesul de introducere a datelor începe cu un tampon gol. În derivarea tamponul trebuie să fie pre-umplută sau la începutul poate să apară imediat golirea buffer.

Performanța computerului de prelucrare a datelor trebuie să fie mai mare decât debitul (cu o marjă), dar viteza instantanee poate scădea doar la buffer-ul de intrare nu este înecată și tampon de ieșire nu sunt goale. Rata de marjă este necesară pentru a analiza datele acumulate în buffer din cauza pauzei (și derivarea - pentru a umple din nou tampon).







Figurat poate imagina rezervor tampon modul de intrare, în care din conducta de la o constantă a debitelor de apă rată. Noi aduna găleată de apă, și se referă înapoi la consumator; cu atât mai mare rezervor, cu atât mai mult timp trebuie să întârzieri neprevăzute pe drum. În mod ideal, rezervorul trebuie să fie mai mult decât o găleată de apă, apoi lăsând, vom lăsa spațiu liber și să aibă o marjă de manevră maximă. Dacă a existat o întârziere, și a acumulat o mulțime de apă, vom începe să ia timp să-l scoop rapid.

Cu ieșire tamponată toate la fel, doar apa este drenată din rezervor la o viteză constantă (și nu poate întrerupe fluxul acestui accident) și vom turna găleți. În consecință, protecția maximă împotriva întârzierii oferă un rezervor plin, iar în cazul în care a scăzut - trebuie să fie umplut rapid.

În practică, o astfel de circuite pot fi implementate ca o listă circulară tampon sau unități mai mici ( „găleți“) sunt în coada de așteptare. Când sunteți gata, ele sunt prelucrate, eliberate de pistoane-blocuri sunt plasate în coada de așteptare.

Cea mai simplă opțiune - este un model de două tampoane (două jumătăți ale unui tampon mare): atunci când o jumătate este gata, este procesat, datele de timp sunt colectate în a doua jumătate, iar timpul pentru finalizarea acestuia ar trebui să fie finalizată în primul rând de prelucrare, apoi jumătate din „schimba rolurile lor.“ Dacă vom continua analogia cu găleți, nu există nici un rezervor, dar există două găleți: câștigă o găleată plină, înlocuim doar gol și plin se referă la pat de flori. Acesta este un sistem foarte simplu și eficient, dar porțiuni de date există dimensiune (și întârzierea asociată) este legată de dimensiunea buffer-ului, care uneori este incomod.

Pentru tamponul de mai sus și utilizat galeata similare pentru uz casnic face caveat important ca sub tampon (o achiziție de date și control) reprezintă structura secvențială în care datele nu sunt pierdute (galeata nu neetanșe) și secvența de date nu este schimbat. Cu alte cuvinte, capturate în datele tampon de citire nu poate depasi anterior veni de citire.

De asemenea, rețineți că punerea în aplicare a tamponului poate fi nu numai software-ul, dar, de asemenea, hardware-ul, cum ar fi FPGA. în funcție de tipul coadă predeterminată dimensiune maximă liniară "a venit pentru prima dată în - primul ieșit" (FIFO - First In, First Out).

În cazul în care termenul „tamponarea“ văzute în linii mari, de tamponare poate fi fără a salva ordinea naturală a secvenței de date, de exemplu, LIFO „ultimul intrat - primul ieșit“ (LIFO - Last In, First Out). De asemenea, cunoscut sub numele de tampon LIFO - o stivă (stack), care este utilizat pe scară largă în programare.

Cu această temă se referă următoarele: