Stream processing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix S
 
(11 versioni intermedie di 11 utenti non mostrate)
Riga 1:
{{S|informaticaprogrammazione}}
Lo '''Streamstream processing''' è un paradigma di [[programmazione parallela]] di tipo [[Single instruction multiple data|SIMD]] che permette ad alcune applicazioni di sfruttare semplicemente una forma limitata di elaborazione parallela. Le applicazioni utilizzano delle unità funzionali come [[Unità di calcolo in virgola mobile|FPU]] o [[Graphics Processing Unit|GPU]] senza doversi preoccupare di gestirne la sincronizzazione o la comunicazione tra le unità funzionali, sgravando il programmatore da uno dei principali problemi della programmazione parallela.
 
Il paradigma dello stream processing semplifica lo sviluppo dell'[[hardware]] e del [[software]] limitando le operazioni che possono essere eseguite. Questo paradigma presume di avere i dati dida elaborare organizzati in gruppi ([[Stream (informatica)|stream]]) e che questi possano essere elaborati applicando ad essi una serie di operazioni. Configurazioni nelle quali una serie di operazioni devono essere applicate a tutti i dati sono comuni. Spesso le operazioni vengono elaborate tramite l'utilizzo di strutture a [[pipeline dati|pipeline]] al fine di ridurre i tempi di elaborazionielaborazione e spesso vengono utilizzate delle [[CPU cache|cache]] on-chip al fine di ridurre gli accessi alla memoria centrale. Dato che queste strutture spesso eseguono una serie di operazioni note a priori su estesi insiemi di dati le pipeline e le [[CPU cache|cache]] on-chip si possono configurare al fine di ridurre/eliminare le latenze e i blocchi che normalmente si presentano nei microprocessori. Questo permette di realizzare unità con elevate prestazioni ma con delle cache ddi dimensioni modeste, assegnando la maggior parte dei [[transistor]] alle unità di elaborazione, cosa non possibili nei processori tradizionali che dovendo elaborare programmi strutturati in modo arbitrario necessitano di cache di grandi dimensioni e di strutture complesse per seguire il flusso del programma in esecuzione.
 
Durante gli [[anni 1980|anni 80ottanta]] lo stream processing è stato estesamente studiato durante lo sviluppo della [[programmazione dataflow]]. Un esempio di questi studi è il linguaggio SISAL (Streams and Iteration in a Single Assignment Language).
 
== Applicazioni==
Il paradigma del stream processing parte dal presupposto di avere un'elevata mole di dati da elaborare con operazioni regolareregolari e quindi ben si adatta alle applicazioni che normalmente vengono svolte dalle [[Graphics Processing Unit|GPU]] o dai [[DSP]]. Applicazioni più generiche o che accedono in modo disorganizzato ai dati (come per esempio i database) mal disi adatterebbero a questo paradigma di programmazione. In sostanza viene sacrificata la flessibilità di elaborazione per la velocità dell'elaborazione.
 
Lo stream processing mostra le migliori prestazioni con applicazioni che mostrano lle seguenti caratteristiche:
*'''Elevataelevata richiesta computazionale''': Lele operazioni aritmetico/logiche devono essere preponderanti rispetto alle operazioni di I/O dalla memoria.;
*'''Parallelismoparallelismo dei dati''': Ii dati devono poter essere elaborati in parallelo senza aver problemi di sincronizzazione o di dipendenza tra i dati.;
*'''Localitàlocalità dei dati''': Questaquesta è una particolare tipologia di località dei dati, comune nell'elaborazione dei segnali e nella gestione dei file multimediali. Questa località prevede che il dato vengano letti una o due volte durante l'elaborazione, i dati intermedi dipendono direttamente dalle elaborazioni e quindi vengono gestiti e ricavati direttamente dal flusso di elaborazione.
 
{{Portale|informatica}}
[[Categoria:Architettura dei calcolatori]]
[[Categoria:Teorie della programmazione]]
 
[[Categoria:Architettura dei calcolatori]]
[[ar:تحليل متدفق]]
[[de:Streamprozessor]]
[[en:Stream processing]]
[[fi:Stream processing]]
[[ja:ストリーム・プロセッシング]]
[[uk:Багатопотокове оброблення даних]]