Буфериране потоци данни - какво е това

Срок: буфериращи потоци данни

При програмиране на операционни потоци от данни от ADC и DAC, възниква проблемът за осигуряване на достатъчна скорост на обработка на данни.







Скоростта на потока от данни се определя от честотата на дискретизация и не се регулира от програмата: физичен процес, не може да чака. Ако изгубите някои обвинения, сигналът ще се развали.

В този случай, компютърът изпълнява програмата обикновено не работи в реално време, т.е. ако програмата една стъпка трябва да бъде "незабавно" след друг, той "незабавно" трябва да се разбира като последователност от операции, а не като реално време. Някои операции (като пише по диска) може да се извърши е сравнително дълго. Също така, в многозадачна операционна система има много процеси, прекъсване помежду си, така че програмата може да "запуши" на случаен принцип за нея моменти от време (понякога доста дълго време - в десетки, дори стотици милисекунди).

В допълнение, при програмирането е необходимо да се обработва блокове от данни (порции), отколкото една проба, или режийни би лишило от скоростта на дори най-модерен компютър.

За да се реши този проблем, използвайте буфериране.

Буфер - масив в памет с бърз достъп, в която се натрупват получени данни (ако този вход поток ADC) или от които те се изпращат при предварително определена скорост (ако изходящите потоци DAC).

Когато метод за въвеждане на данни започва с празен буфер. В извличане на буфера трябва да бъде предварително напълнена, или в началото на незабавно може да възникне изпразване буфера.

Изпълнение компютърна обработка на данни трябва да бъде по-голяма от скоростта на потока (с разлика), но моментната скорост може да падне само към входния буфер не е преляла и изход буфер не са празни. Необходимо е да се направи разбор процент Марж натрупаните данни в буфера се дължи на паузата (и деривация - за запълване на буфера отново).







Образно да си представите как вход буферен резервоар, в който от тръбата при постоянна скорост водни потоци. Ние ще загребе кофата с вода, и се върна към потребителя; колкото по-голям резервоар, толкова повече време трябва да непредвидени закъснения на пътя. В идеалния случай, резервоарът трябва да бъде не повече от кофа с вода, а след това да напусне, ние го оставите празно и да имат максимална свобода на действие. Ако е имало забавяне и натрупани много вода, ние започваме да отделите време за бързо го лъжичка.

С буфериран изход всички едно и също, само водата се оттича от резервоара с постоянна скорост (и не може да пречи на движението на този инцидент) и ние се излива кофи. Съответно, максимална защита срещу забавянето предоставя пълен резервоар, а при изпускане - има бързо, за да се напълни.

На практика, такава схема може да бъде изпълнен като списък кръгова буфер или по-малки единици ( "кофи") са опашката. Когато сте готови, те се обработват, освободен от кофи блокове са поставени в опашката.

Най-простият вариант - това е модел на две буфери (две половини на голям буфер): когато едната половина е готова, тя се обработва, данните време се събира през втората половина, и времето за нейното изпълнение трябва да бъде завършена първата обработка, след това половината от "променят роли." Ако продължим аналогията с кофи, няма резервоар, но има две кофи: набира пълна кофа, ние просто замени празния и пълна справка с цветна леха. Това е много проста и ефективна схема, но порции данни има размер (и свързани забавяне) е свързан с размера на буфера, който понякога е неудобно.

За по-горе използва буфер и подобни домакински кофата направи важно предупреждение, че при буфер (придобиване на данни и контрол) означава последователно структура, в която данните не се губи (не спукан кофа) и последователността на данни не се променя. С други думи, уловени в данните от буфера показания не може да изпревари предишния дойде отчитане.

Също така имайте предвид, че изпълнението на буфера може да бъде не само софтуер, но също така и хардуер, като FPGA. по вид на линеен опашка предварително определен максимален размер на "дойде за първи път през - първа изходяща" (FIFO - First In, First Out).

Ако терминът "глупак" разгледана в общи линии, буфериране може да бъде, без да запазите естествения ред на последователността на данни, например, LIFO "последно въведената - първа изходяща" (LIFO - Последно, пръв излязъл). Също така известен като LIFO буфер - комин (стека), който се използва широко в програмиране.

С тази тема се отнася следното: