Il mio computer va veloce...

Inserite qui le vostre guide, trucchi e consigli

Moderatore: ModiMaccanici

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

Computer veloci
Questo tutorial ha lo scopo di provare a spiegare i meccanismi che condizionano le prestazioni dei computer, con l’obiettivo di aiutare a scegliere la configurazione del PC che possa aiutare nelle proprie personali esigenze, da un punto di vista puramente tecnico. Per esigenze estetiche e funzionali si consiglia al lettore di consultare la propria moglie. Per le lettrici vale la raccomandazione contraria di ignorare prontamente qualsiasi consiglio estetico e funzionale proveniente dal consorte.


1. Clock

Il clock è il ritmo pulsante di un sistema di calcolo, genericamente si indica come clock la frequenza che scandisce le esecuzioni delle fasi di lavoro della CPU; essendo il clock una frequenza, l'unità di misura è cicli al secondo.
Ad ogni colpo di clock, la CPU si aggiorna, eseguendo una serie di eventi elementari.
Non sempre ad ogni colpo di clock viene completata una fase di lavoro, ed è possibile che la CPU sia in attesa di un evento esterno, per cui il lavoro (l'esecuzione di una microistruzione) ha bisogno che una periferica fornisca alla CPU i dati da elaborare oppure accetti i dati calcolati, pertanto se il valore del clock è indicativo della velocità della CPU, esso non è indice della velocità assoluta.
In altri termini, CPU identiche, che lavorino a clock diversi, opereranno i dati a velocità diverse, ma non è detto che la velocità relativa rispecchi fedelmente il rapporto delle due frequenze di clock.
Il clock non è determinante solo per il funzionamento della CPU, si ha un clock operativo anche per l'accesso alla memoria, memorie che funzionino a frequenze maggiori permettono di ottenere prestazioni migliori in termini di velocità a parità di clock della CPU, pertanto ove possibile è opportuno scegliere RAM che possano lavorare alla massima frequenza permessa dal NorthBridge della motherboard, e vanno configurate per la massima frequenza.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

1.1 Consumo
Quello che invece riflette esattamente il clock è il consumo, poiché il cambiamento di stato è l'effettivo lavoro della CPU, quindi effettuare un numero maggiore di cambi di stato (per unità di tempo) significa eseguire più lavoro (per unità di tempo), e di conseguenza consumare di più.
Le moderne CPU sfruttano meccanismi che consentono di ridurre la frequenza di clock in situazioni di carico ridotto, come nel caso di "Cool and Quite" di AMD, ed evetualmente aumentare la frequenza quando viene richiesto un maggior carico, come nel "Turbo Mode" di intel.
Il Turbo Mode necessita di ulteriori spiegazioni. Una CPU che offre il Turbo mode è fatta per lavorare ad una frequenza F in modo continuativo, il che significa che alla frequenza F (o a frequenze inferiori) la CPU può operare ininterrottamente. Viene data poi una frequenza T detta Turbo, alla quale la CPU può operare per un periodo di tempo limitato, perché la CPU viene utilizzata in modo che operi più velocemente surriscaldandosi fino a raggiungere una temperatura di controllo, in questo caso un sensore di temperatura previene la fusione della CPU abbassando opportunamente il clock al valore F.
Chiaramente attività intensive come elaborazioni complesse, transcodifiche o anche videogiochi lavorano molto male con CPU che hanno il Turbo mode, mentre l’uso del computer come web browser, editor di testi semplici, chat ne traggono vantaggio.
Un indice importante del consumo della CPU e’ il valore massimo dissipabile dal dispositivo, indicato in watt e con l’acronimo TDP. Esso indica il valore massimo di potenza che una CPU puo’ assorbire senza danneggiarsi, e serve per dimensionare sia l’alimentazione che il sistema di raffreddamento. Ad esempio, se ho una CPU che ha un TDP di 65W, mi servira’ un alimentatore che possa erogare 65W per la CPU + la potenza assorbita dalla motherboard, dalle memorie e dalle periferiche + la potenza assorbita dalla scheda grafica.
In rete esistono diversi tool per stimare la potenza assorbita da un computer, per esempio http://www.extreme.outervision.com/psuc ... orlite.jsp" onclick="window.open(this.href);return false;
oppure
http://images10.newegg.com/BizIntell/to ... index.html" onclick="window.open(this.href);return false;
Poiche’ la potenza assorbita dalla CPU genera calore, il valore del TDP dovra’ essere usato anche per scegliere il tipo di sistema di raffreddamento ed il relativo dimensionamento.
In rete esistono dei tools per progettare il sistema di raffreddamento di un computer, per esempio
http://www.extreme.outervision.com/flowdesigner.jsp" onclick="window.open(this.href);return false;
Chiaramente, una CPU che produca la massima potenza di calcolo, assorbira’ la potenza indicata come TDP, e dovra’ essere raffreddata in modo tale che la temperatura di lavoro rientri nei limiti prefissati. Normalmente una CPU AMD che si surriscaldi, si rompe, mentre una CPU intel ha un sistema di limitazione del clock che tenta di ridurre la probabilita’ di rottura per surriscaldamento, ed in ogni modo e’ bene evitare il surriscaldamento anche con CPU intel.


1.2 Limiti fisici
Esiste una relazione fisica tra le dimensioni della CPU e la massima frequenza applicabile, che tiene conto sia della massima dissipazione di calore per unità di superficie, che della distanza necessaria per lo spostamento dei dati da una posizione all'altra del chip, pertanto oggi è ritenuto non opportuno costruire CPU per clock molto maggiori di 4GHz. Per ovviare alla crescente necessità di capacità di calcolo, i produttori di CPU perseguono strade diverse, orientate alla multielaborazione.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

2. Architettura della CPU

A seconda della tipologia di lavoro, varie famiglie di CPU sono progettate intorno a diverse architetture.

2.1 DSP
A scopo didattico, voglio fare una breve introduziona ai DSP quali CPU altamente specializzate.
Per il processamento digitale dei segnali, è importante avere delle CPU che possano implementare efficientemente i filtri FIR, cioè eseguire matematicamente delle operazioni di somma e moltiplicazione in rapida sequenza su matrici di numeri.
Una CPU per DSP, comunemente DSP, è in grado di eseguire queste operazioni in maniera estremamente efficiente, mentre le restanti operazioni non sono ottimizzate allo stesso modo.
Per esempio un DSP Analog Device esegue nello stesso ciclo di clock ben 6 operazioni necessarie per implementare un FIR, cioè una somma, una moltiplicazione, due incrementi di puntatori, una sottrazione ed un confronto con salto condizionato.
Nell'ambito PC i DSP vengono utilizzati generalmente nella parte audio.
Un DSP è una CPU altamente specializzata, questo non significa che ogni CPU non possa essere usata per fare lo stesso lavoro che fa un DSP, chiaramente a prezzo di consumi nettamente superiori.

2.2 CPU generiche
Per l'elaborazione generica, ci sono storicamente due famiglie di pensiero, la prima orientata alla facilità di programmazione e la seconda all'efficienza di elaborazione.
Quando le risorse di calcolo erano scarse, alcuni tra i maggiori produttori di CPU crearoro il modello CISC, che ha la particolarità di offrire al programmatore delle microistruzioni molto potenti, che permettono di scrivere programmi brevi a scapito della complessità della CPU e dell'efficienza dell'elaborazione.
Le CPU più famose degli anni '70 ed '80 sono CISC, parliamo dello Z80, dell'8085, dell'8086, del 68000, ma anche del 6502 che equipaggiava il Vic20.
La famiglia 8086 ebbe un successo così grande che il set di istruzioni 8086 è ancora supportato dalle CPU intel x86 e AMD.
Agli inizi degli anni '80, una diversa scuola di pensiero offriva una diversa visione, chiamata RISC, per la quale lo sforzo di migliorare la programmabilità veniva spostato dal microprocessore al linguaggio di programmazione, di conseguenza al compilatore, e la CPU poteva essere costruita in modo più semplice e più efficiente per l'elaborazione dei dati.
Importanti processori che seguono questa filosofia sono il PowerPC di IBM, ARM di Acorn, MIPS, tutti ancora in uso per impieghi diversi dall'uso Personal.
Le CPU degli anni '70 erano semplici, per motivi tecnologici non era possibile utilizzare processi di fabbricazione che permettevano grosse integrazioni, e di conseguenza le frequenze di funzionamento si limitavano a pochi MHz.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

2.3 Pipeline
Gli studi per migliorarne le prestazioni però permetterono di introdurre un importante elemento costruttivo che si dimostrerà estremamente efficace per la velocità effettiva di calcolo: la pipeline.
Poichè l'esecuzione di una microsirtuzione non è immediata, c'è un periodo di tempo durante il quale la CPU, vista dall'esterno, è inattiva, per esempio durante l'esecuzione di una microoperazione complessa come una divisione.
Con la pipeline si sfrutta questo tempo “morto” per leggere ulteriori istruzioni dalla memoria ed iniziare ad eseguirne la decodifica.
La pipeline funziona su basi statistiche, vengono infatti lette le istruzioni successive a quella in esecuzione, perché in genere un programma procede in modo sequenziale. I salti nei programmi peggiorano l’efficienza delle pipelines, perché il processore richiede di eseguire operazioni fuori sequenza ed é necessario ricaricare la pipeline stessa. La lunghezza della pipeline può variare da poche istruzioni ad un massimo di una ventina, i processori intel ed AMD hanno lunghezza di pipeline basata su studi statistici ed ottimizzata, inoltre nel caso di salto, la logica di pipeline è intelligente ed anticipa la scelta della CPU, evitando di interrompere la consistenza della pipeline, in caso di salti condizionati, vengono messe in pipeline entrambe le possibili scelte, di modo che il fuori sequenza venga limitato.

2.4 Istruzioni estese
Le ottimizzazioni hanno assunto importanza sempre maggiore nelle CPU, le quali hanno iniziato il lungo cammino verso i processori attuali, e la tecnologia ha permesso di costruire transistors sempre più piccoli e veloci da usare per ottimizzare i lavori interni della CPU.
Questo ha permesso tra le altre cose la possibilità di aggiungere microistruzioni dedicate alla multimedialità.

2.5 Architettura estesa
L'aumento della dimensione dei dati è uno dei miglioramenti più ovvi, si è passati dagli 8 bit a 16, a 32 ed infine 64, questo permette di scrivere programmi che gestiscano più velocemente dati, potendo usare una sola operazione al posto di molte, e che permette ai compilatori di ottimizzare il codide, ed infine permette ai progettisti di HW di usare memorie che possono venir lette e scritte usando un solo accesso per molti dati, per esempio con una scrittura a 64 bit si scrivono ben 8 bytes in un solo accesso.


2.6 Multithread
Ci sono diverse implementazioni di multithread, quella più recente ed usata è quella adottata da Intel e chiamata Hyperthread. AMD non offre Hyperthread.
Una CPU Hyperthread ha alcune parti duplicate, ma non ha due core completi, per cui è possibile eseguire solo frammenti di codice in parallelo e non interi programmi, purché la CPU sia in grado di allocare opportunamente questi frammenti di codice.
In questo contesto viene richiesto un grosso lavoro di ottimizzazione sia al progettista software che ai compilatori, al punto che è fondamentale che il compilatore conosca esattamente il modello della CPU per sfruttarne le potenzialità.
Cosa c’entrano il programmatore ed il compilatore?
Il compilatore, oltre a trasformare il programma scritto in linguaggio ad alto livello in microistruzioni, ne riconosce le parti indipendenti e le assembla in modo che, una volta inserite in una pipeline, la CPU riconosca l’indipendenza delle parti e le faccia eseguire in unità di elaborazione indipendenti.
Per esempio l’espressione A = B + C + D + E può essere calcolata semplicemente da destra a sinistra, eseguendo una somma alla volta, oppure può essere riscritta come A = (B + C) + (D + E) ed in questo caso risulta evidente come sia possibile eseguire le due semisomme B + C e D + E indipendentemente ed in parallelo.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

2.7 Cache
L'introduzione della cache è un miglioramento basato su calcoli statistici, per i quali è molto probabile che quando un programma accede ad una certa locazione in memoria, è molto probabile che tornerà ad accedere ad essa, per cui è una buona idea avere copia di questa locazione di memoria in un’area cui la CPU possa accedere in tempi velocissimi.
La memoria cache permette accesso velocissimo, i dati presenti in essa sono la copia di dati presenti in memoria principale cui la CPU ha fatto accesso di recente.
Una importante parte della CPU chiamata Memory Management Unit mantiene la consistenza tra la memoria principale e la cache.
Caricare e scaricare aree di dati dalla memoria principale alla cache e viceversa è argomento di continui miglioramenti, in genere la cache è organizzata in livelli e gestita sia dall’HW MMU che da un driver.
Maggiore è la cache, migliore è l’algoritmo di caching, migliori saranno le prestazioni della CPU che non subirà i rallentamenti causati dalla lentezza dell’accesso alla memoria principale.

2.8 Multicore
Il multicore consiste nel costruire nel medesimo componente piu’ di una unita’ di elaborazione completa, e di inserire intorno alle unita’ di elaborazione, dette cores, alcuni elementi che permettono di condividere le risorse esterne e di connettere tra di loro i cores in modo che possano scambiarsi reciprocamente dei dati.
Teoricamente la capacita’ di calcolo dei microprocessori multicore e’ la somma delle capacita’ di calcolo dei cores, per esempio un processore Core 2 Duo e’ teoricamente veloce quanto due processori Core 2, un processore intel i5 quad core e’ teoricamente veloce quanto due processori intel i5 dual core eccetera.
In realta’ le cose sono enormemente diverse, nei casi pratici per poter sfruttare il parallelismo e’ necessario, analogamente al caso dello Hyperthread, che la progettazione del software ed i compilatori permettano di sfruttare i cores disponibili.
Siccome i cores, contrariamente al caso dello Hyperthread, permettono di istanziare programmi completi per core, e’ necessario che il sistema operativo fornisca supporto all’allocazione di programmi su diversi cores, e siccome in un computer i programmi in esecuzione, compreso il sistema operativo, interagiscono, e’ importante che il sistema operativo sia in grado di distribuire i programmi in modo che il carico di lavoro sui singoli cores sia omogeneo, che la comunicazione tra i programmi sia ottimizzata, che non si verifichino conflitti sull’assegnazione delle risorse.
Il problema della gestione di un sistema multicore non e’ completamente risolto, e programmi scritti in modo non orientato al multicore possono causare problemi anche a sistemi operativi moderni. In questi casi i sistemi operativi moderni possono permettere di assegnare manualmente un programma ad un certo core, di modo che il programma stesso venga a trovarsi in una situazione analoga a quando girasse su un sistema single core.
Inutile dire che in questo caso la potenza di calcolo disponibile per quel programma si limita alla potenza del singolo core.
Un esempio di questa situazione e’ il celeberrimo gioco adventure “Riven, the sequel of Myst” che necessita di girare su core singolo.
Infine, va detto che e’ immensamente piu’ facile scrivere programmi per architetture single-core che multicore, e che sebbene ormai molte applicazioni sono state riscritte per sfruttare le architetture multicore, c’e’ sempre da pagare un costo computazionale aggiuntivo per dividere il programma e poi aggregare i dati prodotti. L’efficienza di un sistema multicore dipende quindi dal sistema operativo, dal microprocessore e dal software che deve essere stato scritto in modo da poter sfruttare il parallelismo.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

2.9 Silicio
La tecnologia delle CPU si basa sull’impiego di transistors in silicio, che sono componenti fisici e di conseguenza occupano spazio, consumano energia e possono essere accesi e spenti. Parlare di tecnologia in termini di dimensione fisica significa dare una misura alle distanze minime impiegate nella costruzione dei transistor. Ovviamente minore è la misura indicata, maggiore sarà il numero dei transistor che è possibile posizionare su un chip.
Meno ovvia è la relazione tra la dimensione dei transistor e la velocità del processore, il suo consumo ed anche la sensibilità ai disturbi di ogni tipo, incluse le radiazioni solari.
Quando si parla di costruzione dei transistor, le dimensioni sono dell’ordine dei nanometri, cioè milionesimi di millimetro. Un transistor di queste dimensioni è sensibile alle radiazioni, in quanto le potenze in gioco sono talmente basse che eventi esterni anche di bassissima entità possono produrre cambiamenti misurabili nel funzionamento (un 1 diventa 0 o viceversa). Avere transistor molto piccoli permette altresì di avere chip con piccola superficie, e questo a sua volta permette l’uso di frequenze elevate. Per esempio la frequenza di 1GHz ha lunghezza d’onda di 30cm nel vuoto, che diventano 18cm su rame, ed un elettrone impiega un tempo lungo per attraversare un chip da una parte all’altra se il processore opera a frequenze molto elevate. Se il chip fosse lungo 2cm, e il clock 10GHz, un bit trasferito da un transistor ad un altro potrebbe arrivare quando il clock è già scattato, questo è uno dei motivi per cui si limita la frequenza massima dei microprocessori a circa 4GHz.
I transistor piccoli permettono anche l’uso di alimentazioni molto basse, ad oggi le CPU sono alimentate internamente a circa 1Volt, e questo permette di mantenere bassi i consumi.
La riduzione delle dimensioni dei transistor è un processo che prosegue da lungo tempo, ad oggi lo stato dell’arte è la tecologia 16nm, non utilizzata ancora per la produzione, mentre i processori in commercio sono basati su tecnologia a 22nm.

2.10 MMU
Il microprocessore si interfaccia alla RAM, che costituisce la memoria di lavoro ed è la risorsa di gran lunga più usata per programmi e dati.
Nei microprocessori moderni, l’accesso alla memoria avviene tramite un complesso dispositivo chiamato MMU (Memory Management Unit) che serve a diversi scopi.
Lo scopo principale della MMU è garantire l’impiego ottimale delle risorse di cache, in modo che la memoria esterna rallenti il meno possibile le attività del miproprocessore.
Altri scopi della MMU sono quello di limitare l’accesso alla memoria per diversi programmi, in modo da permettere al sistema operativo di rilevare violazioni di indirizzi e proteggere aree di dati.
La MMU si occupa anche della gestione della politica di accesso alla RAM, del refresh della stessa, della rilevazione di errori quando si impieghi una RAM ECC.
La MMU è un componente che influenza enormemente le prestazioni della CPU, importanti risorse vengono investite per l’ottimizzazione delle MMU.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

2.11 Capire le CPU intel
Le CPU commercializzate da intel sono proposte sotto diversi nomi commerciali, è importante spiegare che le sigle commerciali sono legate a certe caratteristiche
Celeron : Processori a bassa capacità basati su famiglia Core 2
i3 : Si tratta essenzialmente del prodotto conosciuto in precedenza come Core 2 Duo
i5 : La famiglia i5 è identica alla famiglia i3, ma ha clock più elevato e permette il Turbo clock
i7 : La famiglia i5 in più rispetto alla i5 ha il supporto Hyperthread
Xeon : basata su i7, ma con supporto per memorie triple e quad channel, maggiore cache. I processori Xeon sono orientati all’impiego in macchine con elevate prestazioni
Atom (ultima generazione) : basato su i7, ma con clock molto basso
Notare che il nome commerciale non specifica le caratteristiche, che a parità di clock le performances per core sono simili per tutti i processori (tranne che per lo Xeon che sfrutta il multichannel per l’accesso alla memoria), e che il numero di cores varia all’interno della sigla. I processori per impiego mobile, per esempio per i laptop, in genere hanno 2 cores.
Per ottenere informazioni di dettaglio che permettano di stimare le caratteristiche del processore, è necessario conoscere la sigla completa e leggere il datasheet.

2.12 Capire le CPU AMD
Le CPU commercializzate da AMD sono proposte sotto nomi commerciali, che sono indipendenti dalle caratteristiche, è importante descrivere le serie principali e le caratteristiche
Famiglia E : si tratta di processori dual core a clock fisso 1.6GHz, con grafica integrata
Famiglia A : si tratta di APU, con 2 o 4 cores e grafica integrata. In genere si differenziano per il suffisso K che indica un TDP di 100W ed un moltiplicatore sbloccato. Una APU è un processore strano, che non realizza una completa separazione tra i cores, in quanto 2 cores condividono parti di CPU. Parte della APU è una scheda grafica Radeon con un numero elevato di GPU. Una APU è equivalente ad una CPU + una scheda grafica di livello intermedio. Il maggior limite delle APU è il TDP non elevato per CPU+GPU e l’uso della memoria condiviso.
Famiglia Opteron : si tratta di processori con elevato numero di cores e con quad channel memory access. I processori Opteron sono orientati all’impiego in macchine con elevate prestazioni.
Come nel caso intel, per ottenere informazioni di dettaglio che permettano di stimare le caratteristiche del processore, è necessario conoscere la sigla completa e leggere il datasheet.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

3. Le periferiche
Un microprocessore ha bisogno di periferiche per interfacciarsi con il mondo, che sia esso un motore da controllare oppure un computer da scrivania. Stretti compagni del microprocessore sono i circuiti Northbridge e Southbridge, le interfacce grafiche, le memorie di massa.

3.1 Northbridge e Southbridge
La scelta del Northebridge e del Southbridge, che contengono le interfacce verso la memoria RAM, verso la grafica e verso le memorie di massa (via sATA, USB, PCI, xPCI eccetera) è parte integrante della scelta della motherboard. Mentre in passato questo tipo di circuito proveniva soprattutto da fornitori diversi rispetto ai produttori di microprocessori, oggi sono direttamente intel ed AMD a fornire questi componenti, e la cosa ha migliorato sensibilmente sia le prestazioni che la qualità delle motherboards. Il risultato è che motherboards diverse, che usino lo stesso chipset, avranno prestazioni molto simili.
In genere il tipo di chipset è presente nel modello della motherboard, per cui se nel nome delle motherboard c’è un A85 saremo cherti che il chipset utilizzato è una AMD A85, se c’è un Z77 saremo certi che il chipset utilizzato è un intel Z77.
Oltre al chipset, i componenti che influenzano maggiormente le prestazioni di un computer sono oggi le schede grafice e le memorie di massa.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

3.2 Le schede grafiche
Originariamente, la scheda grafica di un computer era la periferica che permetteva semplicemente alla CPU di accedere allo schermo di un monitor come ad una matrice di punti, e di conseguenza produrre testo e grafica.
In seguito, le schede grafiche sono state dotate di un sistema di calcolo proprio, basato su una matrice di processori chiamati Graphical Processing Unit, o GPU, e che attraverso l’impiego di un linguaggio di comunicazione con la CPU, erano in grado di elaborare grafica statica ed animata in maniera autonoma. L’interfaccia tra la CPU e le GPU è stata oggetto di perfezionamento e standardizzazione, ed è comunemente nota come DirectX (Windows) e OpenGL (unix).
Fino ad un certo punto, la divisione dell’elaborazione è stata piuttosto netta, le CPU si occupavano delle elaborazioni e le GPU si occupavano della realizzazione delle immagini e delle accelerazioni grafiche 2D e 3D relative.
Un passo avanti drastico è avvenuto ad opera di AMD quando quest’ultima, dopo aver acquistato ATI, ha deciso di integrare CPU e GPU. Oltre all’integrazione sullo stesso chip, AMD ha introdotto le librerie openCL, che permettono alla CPU di utilizzare le GPU come coprocessori. Le openCL sono librerie che forniscono funzionalità assegnando alle GPU la responsabilità dei calcoli, togliendo in questo modo parte del lavoro alla CPU.
L’architettura risultante è molto ambiziosa, e mette la scheda grafica al centro delle elaborazioni, quando prima ci si limitava ad un suo impiego solo nell’ambito dell’output. Di conseguenza, anche macchine con CPU molto potenti possono essere ulteriormente accelerate qualora corredate di schede grafiche adeguate, e purché sia il sistema operativo, i driver e il SW applicativo siano in grado di sfruttare openCL.
Anche nel caso delle schede grafiche, vale la regola per cui ad un maggior numero di transistor corrisponda una maggior capacità e la cosa comporti un maggior consumo in potenza. Schede grafiche al top di gamma consumano potenze dell’ordine dei 400W.
Le schede grafiche possono essere classificate in 4 famiglie principali:
1. Schede grafiche da tablet. In genere hanno pochissime GPU (da 2 a 20) ed offrono prestazioni molto limitate, hanno un consumo molto basso e possono essere impiegate anche in personal computer dove non sia necessario usare accelerazioni grafiche. Un esempio è la grafica intelHD.
2. Schede grafiche da notebook. Si tratta di schede grafiche con un discreto numero di GPU, ma prestazioni limitate dovute a scelte di progettazione, per esempio un clock basso, l’uso della memoria condivisa con la CPU. Offrono capacità grafiche limitate, ma sufficienti per riproduzione di materiale multimediale. Si riconoscono perché in genere la sigla della scheda termina con M. Un esempio di grafica da notebook è quella contenuta nell’architettura APU di AMD (ex A6, A8, A10).
3. Schede grafiche da Desktop. Si tratta di schede grafiche anche molto potenti, con molta memoria indipendente ad accesso rapidissimo (DDR5), elevato consumo di potenza, e di solito i relativi driver vengono forniti in ambiente Windows con tuning particolari per applicazioni di gioco. Sebbene i maggiori utilizzatori siano appunto i gamers, queste schede sono eccellenti anche per applicazioni in cui viene richiesta una grande capacità di accelerazione grafica. Il punto debole delle schede orientate ai giochi è la precisione dell’interfaccia verso i monitor analogici.
4. Schede grafiche da workstation. Create per impieghi professionali, offrono capacità di calcolo simile al top di gamma delle schede da desktop, contemporaneamente è estremamente curata anche la parte di interfaccia verso altri componenti di uno studio professionale. Chiaramente il prezzo riflette la natura professionale del prodotto.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

3.3 La memoria di massa
Uno dei componenti che influenzano le prestazioni di un computer è la memoria di massa, costituita da un sistema di archiviazione odiernamente quasi soltanto su supporto magnetico oppure su memoria di tipo Flash.
Lo scopo della memoria di massa è la conservazione dei dati prima, durante e dopo l’elaborazione, e la condivisione nell’ambito dello stesso computer oppure con altre apparecchiature che possano funzionare da sorgenti o da destinatari.
La memoria di massa, a seconda della tecnologia usata, può essere o meno veloce, affidabile, economica, richiedere più o meno potenza di alimentazione.
La CPU non interfaccia direttamente la memoria di massa, lo fa attraverso degli strumenti HW e SW che costituiscono il Controller (HW) ed il File System (SW).
Per questi due strumenti, valgono regole invertite, cioè il sistema sarà più rapido ed affidabile quanto migliore sarà la parte HW del Controller, e sarà tanto più lento ed inaffidabile quanto più complesso è il SW del file system.
Caratteristiche quali la crittografazione dei dati, il supporto del RAID, la gestione dei dati in cache tra dischi Flash e dischi meccanici se implementate in SW rallentano le prestazioni della macchina, anche pesantemente.
Dal punto di vista dell’integrità dei dati, non ci sono differenze tra l’uso di un disco Flash o di un disco meccanico, nel senso che non esiste un supporto che garantisca l’affidabilità assoluta, pertanto è consigliabile un criterio di protezione automatico o manuale.
Dischi in RAID: la configurazione dei dischi RAID permette la conservazione dei dati in caso di distruzione di un disco fisico. RAID richiede di distribuire la scrittura dei dati su più di una unità fisica, pertanto l’accesso ai dati da parte del controller è raddoppiato per ogni operazione di scrittura. Nel caso di dischi meccanici il rallentamento della scrittura è sensibile, d’altra parte la protezione dei dati è elevatissima rispetto alla casistica dei guasti dei dischi. Nel caso di dischi Flash in RAID esiste ancora un rallentamento nelle operazioni di scrittura, ma questo è legato essenzialmente all’attività della CPU. L’uso del RAID è trasparente, il carico di CPU aggiunto è costante, e riguarda la sola fase di scrittura, il recupero dei dati in caso di rottura dei dischi è automatico.
Backup in background: si tratta di una soluzione che effettua la copia dei dati durante l’esecuzione di altri task, in genere a cadenza schedulata. Non garantisce il completo recupero dei dati in caso di rottura del disco principale, in quanto verrà persa la parte non salvata dall’ultimo backup. Il carico dell’operazione di backup è sensibile durante la fase di salvataggio.
Backup manuale : si tratta di una operazione manuale per la quale l’utilizzatore del computer si prende tutta la responsabilità sulla sicurezza dei dati.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

4. Il Software
Se all’inizio dell’epoca del Personal Computer l’architettura delle macchine era estremamente semplice, la CPU era ancora solo l’embrione di cosa sarebbe diventata in seguito, la memoria era poca, lenta e non c’erano schede grafiche che non fossero semplici rappresentazioni dello schermo, anch’esso piccolo e monocromatico, oggi i Personal Computer sono estremamente sofisticati.
Per migliorare le prestazioni, le società che sviluppano i componenti hanno esplorato praticamente ogni possibile soluzione, e le macchine moderne sono estremamente sofisticate e difficili da far funzionare al meglio. I due vendor di CPU propongono soluzioni effcienti, ma diverse tra di loro, ed ogni soluzione funziona bene purché il SW segua particolari percorsi atti a sfruttare di volta in volta le Pipeline, il multithreading, il multicore e così via.
Cosa significa questo? Che per sfruttare al meglio il computer, il SW deve essere adattato alla macchina, per fare un esempio, che per vincere una gara al volante della Ferrari ci deve essere Schumacher.

4.1 Il Sistema Operativo
Il sistema operativo svolge un ruolo importantissimo nello sfruttamento delle prestazioni potenziali dell’HW, in quanto contiene gli algoritmi di base per l’accesso alla memoria, per lo sfruttamento delle schede grafiche, per l’accesso alla memoria di massa.
Gli algoritmi per l’uso della memoria si sono andati via via perfezionando, ed oggi è comune pratica sfruttare al massimo le possibilità date dal caching dei dati, di conseguenza usare sempre e comunque tutta la RAM a disposizione. Via via che l’applicazione in uso richieda memoria, verrà ridotto lo spazio dedicato al buffering per evitare di dover swappare sulla memoria di massa.
Gli algoritmi per lo sfruttamento delle schede grafiche vengono forniti dai produttori delle schede stesse, e sono identici per tutti i sistemi operativi (fatta eccezione per Linux, dove la comunità Open Source sviluppa i suoi algoritmi).
L’accesso alla memoria di massa si è evoluto per lungo tempo nell’area dedicata ai File System per dischi meccanici, oggi si rivolge ai File System per Flash.
Vista la continua evoluzione, e la specializzazione del software, è sempre buona norma mantenere aggiornato il sistema con nuovi drivers, e qualora raccomandato dal venditore del SW, aggiornare anche il sistema operativo.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

4.2 I benchmarks
I benckmarks sono dei programmi che analizzano i vari componenti dei un computer, e forniscono come risultato un numero che stima la velocità del computer stesso.
I benchmarks vanno presi con cautela, per quanto detto in precedenza riguardo la sensibilità del computer verso il SW che lo utilizza. Innanzi tutto il benchmark deve essere creato per sfruttare tutte le caratteristiche del computer che si vuole stimare, per esempio se abbiamo una CPU AMD è assurdo utilizzare un SW compilato per intel, magari per sfruttare Hyperthreading, viceversa su una CPU intel è controproducente utilizzare un SW multicore che sfrutti le potenzialità AMD per interprocess communication.
Nulla vieta di leggere i resoconti, specialmente se provenienti da fonti affidabili, ma quello che resta il benchmark migliore è la propria esperienza con i prodotti SW che si intendono utilizzare.
Faccio un esempio, se si vuole installare un server di rete con database, è molto importante verificare che funzioni bene il multicore e che non ci siano colli di bottiglia verso la rete piuttosto che le capacità grafiche.

4.3 Il SW applicativo
Ed eccoci a quello che è il vero utente del computer, non siamo noi ma è il SW che, per nostro conto, deve sfruttare le risorse a disposizione e produrre qualcosa per noi, che sia un reddito o semplicemente un divertimento.
Quando si sceglie un computer, si deve sempre sapere cosa ci deve girare sopra. Se si deve usare l’auto solo per fare la spesa, da soli o al massimo in due, non serve assolutamente un SUV.
Le caratteristiche del SW da valutare sono il supporto per multicore e su quanti core al massimo viene raccomandato, per hyperthreading, per librerie openCL e openGL, per HW particolari.
È anche importante sapere su quali sistemi operativi viene sviluppato e su quali viene supportato, per esempio se si deve installare Oracle, sapendo che viene sviluppato su computer Oracle (ex Sun Microsystem) e sistema operativo Solaris, sarebbe buona norma scegliere la stessa architettura.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

5. Come scegliere il computer
Eccoci al clou di questa lunghissima chiacchierata che ha stupito anche per le dimensioni che ha preso.
Facciamo anzitutto le cose con ordine.

5.1 Scelta della CPU
Se si deve fare un impiego professionale del computer è bene sapere se il SW che dovremo usare supporta o meno Hyperthread, multicore e quanto cores sono raccomandati. In base a questo potremo scegliere se optare per l’architettura intel hypercore (Xeon o i7) e su quanti cores orienteremo la scelta.
La velocità della CPU è dettata esclusivamente dal clock, pertanto se il nostro SW applicativo non supporta hyperthread e magari raccomanda di non andare oltre 4 cores, sarà saggio scegliere una CPU con meno cores e clock più veloce. Per un’applicazione, distribuire il calcolo su più cores ha un costo aggiuntivo in termini di performances, per cui la scelta ottimale deve essere guidata dalle raccomandazioni del fornitore di SW, mentre per quanto riguarda il clock, si deve sempre scegliere la CPU che lavora continuativamente ad un clock maggiore. I valori indicati come “turbo clock” non debbono trarre in inganno, quello che vale realmente è il clock continuativo.
A parità di clock e cores, la differenza tra i7 e Xeon la fa l’accesso alla memoria, in quanto Xeon ha quattro canali di accesso mentre i7 ne ha due.
Se non serve Hyperthread, ma il SW scala bene con il numero di cores, va valutata seriamente l’alternativa AMD Opteron, che offre motherboards con due CPU ognuna con 16 cores.

5.2 Scelta della memoria
La RAM è una risorsa che ormai costa abbastanza poco da rendere inutile una qualsiasi considerazione di costo/beneficio.
Installare la massima RAM possibile su un sistema costa sempre meno del tempo che si risparmia dovuto agli swap su memoria di massa.

5.3 Scelta della memoria di massa
Le dimensioni della memoria di massa dipendono dal volume di dati che il SW deve trattare, mentre la tipologia da scegliere oggi è essenzialmente soltanto Flash.
Un sistema per uso professionale avrà due o più dischi Flash organizzati in RAID, rimovibili, ed una unità esterna per backup storici, che sarà a sua volta organizzata in RAID con dischi meccanici di opportuna dimensione.
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
Hammarby
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5348
Località: Stockholm, SE

Top

5.4 Scelta della scheda grafica
Se si deve fare grafica per uso professionale è sempre buona regola scegliere una scheda grafica professionale, delle serie opportune AMD o NVidia, le caratteristiche sono abbastanza simili. Una scheda grafica potente può essere sfruttata anche per elaborazioni al di fuori della grafica, purché il programma faccia uso di openCL, per cui la scelta della scheda grafica va fatta anche in funzione del SW applicativo e delle relative raccomandazioni.

5.5 L’alimentazione
Perché il computer funzioni, c’è bisogno di un alimentatore che sia in grado di sostenere il carico di tutti i componenti del sistema.
È raccomandato l’utilizzo dei tools indicati nella sezione relativa per calcolare la potenza minima che l’alimentatore deve fornire in funzione dei componenti scelti per il nostro computer.
Va notato che è possibile che produttori di computer utilizzino alimentatori che forniscono potenze inferiori a quello che che otterremo dai calcoli, in questo caso il computer sarà stato progettato per ridurre la capacità in funzione della potenza assorbita. Si tratta di una scelta di progettazione, ma in questo caso non sarà possibile sfruttare al massimo tutte le potenzialità dei singoli componenti utilizzati.
Esempio, se si sceglie una CPU con TDP 120W ed una scheda grafica da 300W, considerando che la motherboard da sola consuma 30W e la RAM 5W, ed ulteriori 5W sono consumati dal Flash disk, sommando otteniamo 460W, per cui sarà saggio scegliere un alimentatore da 500W. Se acquistiamo un computer configurato come sopra, ma offerto con un alimentatore da 300W evidentemente non potremo mai sfruttare contemporaneamente tutta la potenza di calcolo della CPU e della scheda grafica contemporaneamente.

5.6 Ottimizzazioni del Sistema Operativo
Un sistema operativo fa molte cose, oltre ad offrire il supporto al SW applicativo, e tante delle cose che fa utilizzano la CPU a discapito delle prestazioni del SW applicativo.
Questa è una serie di raccomandazioni che permettono di ottimizzare il nostro computer per quello che serve a noi.
Servizi non utilizzati : spegnere tutti i servizi che non ci servono
Antivirus: disabilitare tutti gli antivirus, malware eccetera
Rete: a meno che non sia indispensabile, staccare il computer dalla rete e disabilitare l’accesso ad Internet durante le elaborazioni
Indicizzazioni: chiudere tutti i servizi di indicizzazione e scansione dei files
Backup temporanei: con un sistema di dischi interni in RAID non servono, disabiltarli durante le elaborazioni
Swap: se possibile disabilitare completamente lo swap
Widgets, grafiche animate e gadgets vari : spegnerli

6. Conclusioni
Siete ancora qui?
Non vi ho annoiato mortalmente?
Non vi sentite in dovere di dissentire, criticare, migliorare questa guida?
Dove ho sbagliato?
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Avatar utente
a-mac
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: ven, 21 dic 2012 10:32
Messaggi: 4534
Località: fsf.org

Top

Contatta:
anvedi ahò
“...è complicato, ma semplice”

_ UNIX: Live Free or Die
_ With great power comes great responsibility
_ You may say, I'm a dreamer, but I'm not the only one, I hope some day you'll join us, And the world will live as one!

Rispondi

Torna a “Tutorial”

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti