• Non ci sono risultati.

Introduzione all'Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduzione all'Informatica"

Copied!
34
0
0

Testo completo

(1)

Introduzione all'Informatica

Loriano Storchi loriano@storchi.org http:://www.storchi.org/

(2)

UNITA’ DI MISURA

(3)

Unita' di misura dell'informazione

BIT = è l'unità di misura dell'informazione (dall'inglese "binary digit"), definita come la quantità minima di informazione che serve a discernere tra due possibili eventi equiprobabili.

(Wikipedia)

BYTE = 8 BIT (storicamente i caratteri erano rappresentati da 8 BIT , motivo per cui 1 Byte rimane tutt'oggi l'unita' di memoria minima indirizzabile)

“KiloByte” meglio “kibibyte” KiB = 210 Byte = 1024 Byte

“MegaByte” meglio “mebibyte” MiB = 1024 * 1024 Byte

“GigaByte” meglio “gibibyte” GiB = 1024 * 1024 * 1024 Byte

“TeraByte” meglio “tebibyte” TiB = 1024 * 1024 * 1024 * 1024 Byte

(4)

Prestazioni dei calcolatori

Chiaramente aumentare le prestazioni di un calcolatore significa diminuire il tempo che esso impiega nell’eseguire un’operazione.

Tclock e’ il periodo di clock della macchina (aumento della

frequenza)

CPIi e’ invece il numero di “colpi” di clock necessari ad eseguire la data istruzione i (riduzione della complessità per la

singola istruzione)

Ni e’ infine il numero di istruzioni di tipo i (ad esempio somme,

salti ...) n

(5)

MIPS

MIPS e' un'abbreviazione per Mega Instuctions Per Second, ed MIPS indica appunto il numero di istruzioni generiche che una CPU esegue in un secondo. E’ un’unita’ di misura usato per misurare le prestazioni di un calcolatore di uso più generale rispetto al FLOPS che vedremo a breve:

MIPS = (Frequenza del clock) / (106 CPI)

Questo tipo di misura non tiene conto ad esempio delle ottimizzazioni dovute alla presenza della cache e delle percentuali delle diverse

istruzioni all’interno di programmi reali, e non solo.

(6)

FLOPS

FLOPS

FLOPS e' un'abbreviazione per Floating Point Operations Per Second, ed indica appunto il numero di operazioni in virgola mobile che una CPU esegue in un secondo. E’ un’unita’ di misura usato per misurare le prestazioni di un calcolatore diffusa in modo particolare nell’ambito del calcolo scientifico

Ad esempio nel caso di un prodotto classico tra matrici, vengono eseguite 2*N3 operazioni, quindi posso valutare i FLOPS esattamente misurando il tempo necessario ad eseguire tale moltiplicazione ed ottenere:

[flops] = 2*N3 / tempo

(7)

SPEC

Standard Performance Evaluation Corporation e’

un’organizzazione non-profit che produce e mantiene un insieme standardizzato di benchmark per computer (quindi un insieme di programmi di test che sono rappresentativi delle applicazioni reali di un calcolatore).

Ci sono diversi set di SPEC che sono specifici ad esempio per usi diversi previsti del computer

(8)

CALCOLATORI MODERNI

(9)

RFID

RFID Radio-frequency identification costano pochi centesimi e possono raggiungere qualche MIPS

Usano campi elettromagnetici per identificare e tracciare automaticamente oggetti mediante un ID o comunque informazioni

Passivi se usano energia emessa dal lettore di RFID. Anche con batteria

Attivi necessariamente con batteria inviano periodicamente un segnale

(10)

Sistemi embedded e SmartPhone Tablet

Sistemi embedded oggi molto diffusi sono calcolatori

pensati per Orologi, automobili, Elettrodomestici , apparati Medicali, lettori audio/video (Android Box). Sono

calcolatori del costo diu qualche decina di euro con prestazioni dell’ordine di qualche centinaio di MIPS (spesso equipaggiati con OS Linux)

SmartPhone e Tablet sono invece sistemi con potenze di calcolo decisamente superiori dell’ordine di centinaia di GFLOPS per le solo CPU e costi dell’ordine di centinaia di euro

(11)

Console di Gioco, PC e Workstation

Console di Gioco sono sistemi con prestazioni complessive che possono arrivare ai 2000 GFLOPS circa considerando anche le GPU

PC considerando Desktop e Portatili coprono una fascia ampia di possibilità partendo dalle poche centinaia di euro

fino a qualche migliaia con prestazioni che quindi vanno dalle decine di GFLOPS ai 2000 GFLOPS considerando le GPU

Ci sono Server e Workstation che sono pensati per High Performance Computing e centralizzazione di servizi che possono arrivare a prestazioni di qualche decina di TFLOPS con costi fino a 10/20,000 euro

(12)

HPC

Per poter aumentare le prestazioni della risorsa di calcolo in generale e’ necessario accoppiare assieme numerosi

calcolatori interconnessi con reti ad alte prestazioni (calcolo parallelo)

Ad esempio Cluster di workstation che possono arrivare a qualche centinaio di TFLOPS

Supercomputer con potenze di calcolo che oggi arrivano fino a qualche decina di PFLOPS

Ovviamente aumentano allo stesso modo costi di produzione e costi di mantenimento (anche solo in termini di potenza

assorbita)

(13)

CPU MODERNE

(14)

CISC vs RISC

La velocità di esecuzione di una singola istruzione e’ uno dei fattori determinanti delle prestazioni della CPU stessa. Due visioni diverse:

CISC (Complex Instruction Set) in questo caso l’idea di base e’

che il set di istruzioni di base di una CPU debba essere la più ricca possibile, anche se ogni singola istruzione in realtà richiede più cicli di clock per essere eseguita

RISC (Reduced Instruction Set) in questo caso ogni istruzione e’ eseguita in un solo ciclo di clock. Ovviamente saranno necessarie più istruzioni RISC per eseguire la stessa singola istruzione di un CISC

CISC architettura predominante nel mercato negli anni 17 ed 80 oggi c'è una tendenza ad favore della CPU di tipo RISC

(15)

Migliorare le Prestazioni

Aumentare le prestazioni di una CPU e’ sempre un compromesso fra costi e consumi, ad esempio si possono adottare alcune strategie di base:

Ridurre il numero di cicli necessarie all’esecuzione di una singola istruzione (esempio banale della moltiplicazione)

Aumentare la frequenza (clock) con ovvi limiti fisici (ad esempio al velocità della luce)

Parallelismo, quindi eseguire ad esempio piu’ operazioni in parallelo (in contemporanea)

A livello di istruzione piu’ istruzioni sono eseguite in parallelo dalla stessa CPU con ad esempio l’uso delle pipeline o processori superscalari

Parallelismo a livello di core, quindi più core per CPU

(16)

Migliorare le Prestazioni – Aumento frequenza di clock

Fino al 2000 l’aumento delle prestazioni di una CPU coincideva per buona parte soprattutto con l’aumento della frequenza di clock. Siamo arrivati a circa 4 Ghz Abbiamo raggiunto i limiti fisici (1 GHz e quindi in un ns la distanza che puo’ percorrere l’impulso elettrico, immaginando che viaggia lla velocità

delle luce nel vuoto, è di 33 cm circa):

Le alte frequenze creano disturbi ed aumentano il calore da dissipare

Ritardi nella propagazione del segnale,

Bus skew i segnali che viaggiano su linee diverse viaggiano con velocità diverse

(17)

Migliorare le Prestazioni – Pipeline

Ogni singola istruzione viene divisa in più stadi (o fasi) ed ogni fase è gestita da un pezzo di CPU (hardware) dedicato:

Chiaramente le operazioni devono essere indipendenti. In questo caso dopo un tempo (latenza) iniziale a caricare la pipeline ci saranno n operazioni eseguite in parallelo. Si possono avere anche più pipeline e quindi vengono lette più istruzioni

(18)

Migliorare le Prestazioni – Superscalari

Istruzioni differenti trattano i propri operandi

contemporaneamente su unita’ hardware differenti , in pratica sono presenti diverse unita’ funzionali dello stesso tipo, ad esempio sono presenti piu’ ALU

(19)

Migliorare le Prestazioni – Predizione di salto

L’uso delle pipeline funziona particolarmente bene in caso di istruzioni sequenziali ma uno dei costrutti basilari della

programmazione sono le istruzioni di salto, ad esempio decisioni IF...THEN...ELSE:

If (a == b)

printf (“i due numeri sono uguali”);

else

printf (“Sono diversi \n”);

(20)

Migliorare le Prestazioni – Predizione di salto

Le CPU moderne possono (pre-fetching) provare ad indovinare se il programma saltera’:

Predizione statica: si usano dei criteri che fanno delle assunzioni di “buon senso”, ad esempio assumiamo che tutti i salti vengano eseguiti

Dinamica: in pratica la CPU mantiene una tabella che e’

basata su una statistica di esecuzione

(21)

Migliorare le Prestazioni – Esecuzioni fuori ordine e speculativa

La progettazione delle CPU e’ decisamente piu’ semplice se tutte le istruzioni sono eseguire in ordina una dopo l’altra, ma come abbiamo visto non possiamo fare questa assunzione a monte. Ci sono delle dipendenze. Ad esempio eseguire una data istruzione richiedere che sia noto il risultato dell’istruzione precedente.

Esecuzione fuori ordine: Le CPU moderne possono per

aumentare le prestazione saltare temporaneamente alcune istruzioni mettendole in attesa per seguirne altre che non introducono dipendenze

Esecuzione speculativa: eseguire parti del codice particolarmente gravose (pesanti) prima di essere certi che servano davvero

(22)

C.P.U. - Considerazioni finali

CPU moderne:

Multi-core : in pratica nello stesso chip ci sono piu’

processori indipendenti, ognuno con le rispettive memoria cache ad esempio , interconnessi fra di loro.

Questo permette di aumentare le prestazioni “teoriche”

senza aumentare la frequenza (anche Hyper-threading )

GPU (processori grafici) oggi sempre piu’ utilizzati nell’accelerazione del calcolo.

(23)

C.P.U. - Considerazioni finali

CPU sistemi embedded (anche Raspberry Pi):

ARM sta ad indicare una classe di processori di tipo RISC (32 bit) (Advanced RISC Machine) sviluppati da un’azienda inglese che non li produce direttamente ma detiene le licenze. Questi vengono poi prodotti ad esempio da STMicroelectronics, Samsung, Broadcom, Qualcomm etc etc. (System-On-Chip SOC)

Sono appunto CPU RISC che in funzione del disegno architetturale garantiscono un buon compromesso fra prestazioni e consumo (ARM e Cortex)

Il Cortex A9 (1 GHz) consuma 250 mW per core. Una CPU Intel Corei-i7 puo’ arrivare a cosumare oltre 100 W

(24)

TOP500 E LEGGE DI MOORE

(25)

Legge di Moore

In elettronica e

informatica è indicato come prima legge di Moore il seguente enunciato: « La complessità di un microcircuito, misurata ad

esempio tramite il numero di

transistori per chip, raddoppia ogni 18 mesi (e quadruplica quindi ogni 3 anni). »

(26)

TOP500

Differenza tra susteined perfomace e prestazioni di picco

Per valutare in modo oggettivo le prestazioni di un computer c'e' bisogno di un test di riferimento, un benachmark standard, ad esempio Linpack

TOP500 http://www.top500.org/, classifica dei 500 computer piu' potenti al mondo

(27)

Top500 list Giugno 2017

(28)

Top500 list Giugno 2017

(29)

Top500 list grafico storico

Una stima della potenza di calcolo della mente umana fatta dal direttore del progetto SyNAPSE e’ di 38 petaflops

(30)

SEMPRE A PROPOSITO DELLE ARCHIETTURE

(31)

FPGA

Field Programmable Gate Array, e’ un circuito integrato le cui funzionalita’ sono programmabili via software . Gli FPGA (Field Programmable Gate Arrays) sono dispositivi a semiconduttore basati su una matrice di blocchi logici configurabili (CLB) collegati tramite interconnessioni programmabili.

FPGA possono essere riprogrammati in base all'applicazione desiderata o ai requisiti di funzionalità dopo la produzione. Questa funzione distingue gli FPGA dai circuiti integrati specifici dell'applicazione (ASIC), che sono realizzati su misura per specifiche attività di progettazione. Sebbene siano disponibili FPGA programmabili (OTP) una tantum, i tipi dominanti sono basati su SRAM che possono essere riprogrammati man mano che il design si evolve

ASIC (Application Specific Integrated Circuit)

(32)

Arduino

Strumento di prototipazione rapida ed hobby sviluppato presso l'Interaction Design Institute, un istituto di formazione post- dottorale con sede a Ivrea, fondato da Olivetti e Telecom Italia

Circuito stampato con un microcontrollore e pin connessi alle porte di I/O. Interfaccia USB per la comunicazione e la programmazione

Microcontrollore ha una CPU ed una quantita’ fissa di memoria RAM e ROM ed altre periferiche tutte le componenti sono integrate in un singolo chip. Usato generalmente nei sistemi embedded vengono programmati per eseguire compiti

“specifici”

(33)

Arduino

Ambiente di sviluppo integrato (IDE) multi-piattaforma

Flash qualche centinaio di KiB

EEPROM qualche KiB

(34)

Raspberry Pi

Un single-board computer basato su processore RISC e su Kernel Linux

Processore ARM

RAM <= 1 GiB

Riferimenti

Documenti correlati

Gli anticorpi specifici nel siero del paziente, se presenti, si legano all’antigene legato alla fase solida; i componenti del siero non legati vengono separati nella

INTERCUS raccomanda il pre-trattamento manuale di tutti gli strumenti prima della pulizia e della disinfezione meccanica, se questi sono o potrebbero essere

AESKULISA CeliCheck New Generation è un test immunoenzimatico in fase solida per la determinazione quantitativa e qualitativa completa di anticorpi IgA e IgG anti-neoepitopi della

La determinazione di anticorpi anti-tTG della sottoclasse IgG è molto importante soprattutto per il 2%- 5% dei pazienti che presentano una carenza di IgA e nei quali,

Sono necessari 20 mL di tampone di lavaggio diluito (1x) ogni 8 pozzetti oppure 200 mL ogni 96 pozzetti (ad es. 4 mL di concentrato e 196 mL di acqua distillata)..

Il Baud rate e il gruppo di regolazione del regolatore di livello NRR 2-60 possono sempre essere adattati sull’interruttore di codice D (ved. Per una migliore accessibilità

Gli anticorpi specifici nel siero del paziente, se presenti, si legano all’antigene legato alla fase solida; i componenti del siero non legati vengono separati nella

Se trattati come indicato, i microrganismi EZ-Accu Shot™ ed EZ-Accu Shot™ Select consentono di ottenere una concentrazione di challenge di 10-100 CFU per 0,1 ml su terreno di