Skip to main content

Что такое потоковая обработка?

Потоковая обработка - это концепция компьютерного программирования и компьютерной инженерии, которая может использоваться для разработки приложений и аппаратных систем. Когда используется потоковая обработка, данные организуются в потоки, которые затем передаются на узлы или процессоры, которые манипулируют данными в потоке, после чего данные продолжаются вдоль пути, чтобы другие узлы могли манипулировать ими. В конце потока данные помещаются в память или передаются приложению конечного пользователя для использования. Система или приложение, использующее потоковую обработку, работает наиболее эффективно, когда потоковая информация генерируется последовательно одним или несколькими источниками, что делает ее эффективной для цифровой обработки сигналов (DSP), обработки изображений и графики или сетевого трафика с высокой пропускной способностью. Наиболее распространенным практическим применением потоковой обработки является производство компьютерных графических карт, в которых потоковые процессоры встроены в графическое оборудование, чтобы помочь выполнить несколько операций с входящими графическими данными, такими как массивы вершин.

Основа для потоковой обработки вращается вокруг концепции данных как потока. Вместо того, чтобы извлекать информацию из разрозненных источников или перехватывать сообщения из механизма прерывания, поток данных формируется, когда информация сопоставляется каким-либо процессом в одну строку, называемую потоком. Элементы данных могут различаться, но поток обычно состоит из блоков элементов одного типа, которые могут обрабатываться последовательно.

Процессоры или узлы, используемые при обработке потока, принимают поток и выполняют заданную операцию с данными, после чего данные могут быть переданы другому узлу для дополнительной обработки. Для максимальной эффективности узлы предназначены для небольших функций, которые загружаются и выполняются непосредственно на центральном процессоре (ЦП) с использованием регистров и прямого доступа к памяти (DMA) для скорости. Если информация в потоке может быть автономной и не зависит от результата операций одного узла, тогда в потоке можно одновременно выполнять несколько операций, одновременно предоставляя программному компилятору подсказки, которые могут обеспечить очень эффективную оптимизацию.

Обработка потока, как правило, является хорошим решением для ситуаций, в которых данные постоянно генерируются и проталкиваются в поток приложением или устройством, таким как камера, внешний датчик или сетевое соединение. Многие графические карты используют потоковые процессоры для быстрого преобразования данных, поступающих через графический конвейер, в рендеризованное растровое изображение. Некоторые графические карты имеют несколько процессоров или узлов, встроенных в аппаратное обеспечение карты, поэтому потоковая обработка может происходить быстро, а иногда и одновременно, что часто желательно, когда шейдеры используются для трехмерной (3D) графики.