Stream processing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
FrescoBot (discussione | contributi)
m Bot: apostrofo dopo l'articolo indeterminativo
 
(14 versioni intermedie di 14 utenti non mostrate)
Riga 1:
{{S|programmazione}}
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'eleborazioneelaborazione.
 
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}}
== GPU ==
Le moderne schede grafiche si trovano a dover poter eseguire operazioni aritmetiche su dati generici. Le moderne schede grafiche devono poter eseguire operazioni di [[vertex shader|vertex]], [[pixelshader|pixel]] o [[geometry shader]], devono poter elaborare la fisica dei videogiochi e devono poter eseguire alcune operazioni legate alla gestione dell'intelligenza artificiale dei videogiochi. Data la varietà di operazioni da eseguire i produttori hanno deciso di abbandonare la realizzazioni di unità in grado di eseguire una sola tipologia di elaborazione in favore di unità più flessibili, in grado di eseguire operazioni generiche e quindi di poter essere configurate a seconda delle necessita al fine di fornire le prestazioni migliori. I produttori si sono orientati sullo sviluppo di GPU dotate di diversi stream processor che vengono configurati a seconda delle necessità.<ref>[http://www.tomshw.it/graphic.php?guide=20061108&page=geforce_8800_nvidia_g80-06 Una panoramica sull'architettura unificata ]</ref> Una panoramica sull'architettura unificata] Il paradigma dello stream processing ben si adatta allo sviluppo di applicazioni multimediali e alle applicazioni che devono svolgere le schede grafiche. Lo stream processing consente di realizzare con semplicità integrati con migliaia di unità di elaborazione<ref>[http://punto-informatico.it/2708432/PI/News/radeon-5000-sulla-rampa-lancio.aspx Radeon 5000 sulla rampa di lancio]</ref> quando microprocessori sviluppati con tecnologia simile sono in grado di contenere meno di dieci unità di elaborazione. La possibilità di programma le GPU ha consentito lo sviluppo anche di applicazioni che utilizzano l'elevata potenza di calcolo delle schede grafiche per eseguire operazioni aritmetiche o logiche non direttamente legate alla gestione di dati multimediali.
 
== Note ==
{{references}}
 
== Collegamenti esterni ==
* [http://www.appuntidigitali.it/4199/perche-le-gpu-sono-basate-su-architetture-di-tipo-simd/ Perchè le GPU sono basate su architetture di tipo SIMD]
 
[[Categoria:Architettura dei calcolatori]]
[[Categoria:Teorie della programmazione]]
[[ar:تحليل متدفق]]
[[de:Streamprozessor]]
[[en:Stream processing]]
[[ja:ストリーム・プロセッシング]]
[[uk:Багатопотокове оброблення даних]]