Co to jest przetwarzanie strumienia?
Przetwarzanie strumieni to koncepcja programowania komputerowego i inżynierii komputerowej, której można użyć do projektowania aplikacji i systemów sprzętowych. Po użyciu przetwarzania strumienia dane są uporządkowane do strumieni, które są następnie podawane węzłom lub procesorom, które manipulują danymi w strumieniu, po czym dane kontynuują ścieżkę, aby inne węzły mogły je manipulować. Na końcu strumienia dane są umieszczane w pamięci lub przekazywane do aplikacji użytkownika końcowego do użycia. System lub aplikacja, która wykorzystuje przetwarzanie strumieni, działa najskuteczniej, gdy informacje o strumieniu są konsekwentnie generowane przez jedno lub więcej źródeł, co czyni go skutecznym w zakresie przetwarzania sygnałów cyfrowych (DSP), obrazowania i grafiki lub ruchu sieciowego o wysokiej pasma. Najbardziej rozpowszechnionym praktycznym zastosowaniem przetwarzania strumieniowego jest produkcja komputerowych kart graficznych, w których procesory strumieniowe są wbudowane w sprzęt graficzny, aby pomóc w wykonywaniu wielu operacji przychodzących danych graficznych, takich jak Vertextablice.
Podstawa przetwarzania strumienia obraca się wokół koncepcji danych jako strumienia. Zamiast czerpać informacje z różnych źródeł lub przechwytywanie komunikatów z mechanizmu przerwania, strumień danych powstaje, gdy informacje są zestawiane przez pewien proces w pojedynczym wierszu o nazwie Stream. Elementy danych mogą się różnić, ale strumień ogólnie składa się z bloków tych samych rodzajów elementów, które można przetwarzać sekwencyjnie.
Procesory lub węzły używane w przetwarzaniu strumienia akceptują strumień i wykonują daną operację na danych, po czym dane mogą być przekazywane do innego węzła w celu uzyskania większego przetwarzania. Aby uzyskać maksymalną wydajność, węzły mają być małymi funkcjami, które są ładowane i wykonywane bezpośrednio na środkowej jednostce przetwarzania (CPU), przy użyciu rejestrów i bezpośredniego dostępu do pamięci (DMA) dla prędkości. Jeśli informacje w strumieniu mogą być samodzielnie i nie są zależne odW wyniku operacji pojedynczego węzła można jednocześnie wykonywać wiele operacji w strumieniu, jednocześnie zapewniając kompilator programu z wskazówkami, które mogą pozwolić na bardzo skuteczne optymalizacje.
Zasadniczo przetwarzanie strumienia jest dobrym rozwiązaniem w sytuacjach, w których dane są konsekwentnie generowane i wciśnięte do strumienia przez aplikację lub urządzenie, takie jak aparat, czujnik zewnętrzny lub połączenie sieciowe. Wiele kart graficznych używa procesorów strumieniowych do szybkiego przekształcenia danych przez rurociąg graficzny w renderowany, rasteryzowany obraz. Niektóre karty graficzne mają wiele procesorów lub węzłów wbudowanych w sprzęt karty, więc przetwarzanie strumienia może nastąpić szybko i czasem jednocześnie, ponieważ często jest pożądane, gdy sodniki są używane do grafiki trójwymiarowej (3D).