mercoledì 23 maggio 2012

Processori

Il processore

CPU

L'unità di elaborazione centrale o CPU è una tipologia di processore digitale general purpose la quale si contraddistingue per sovrintendere tutte le funzionalità del computer digitale basato sull'architettura di von Neumann o sull'architettura Harvard. In particolare l'unità di elaborazione centrale è una tipologia di processore estremamente diffusa in quanto i moderni computer general purpose normalmente sono digitali e basati sull'architettura di von Neumann.
Il compito della CPU è quello di eseguire le istruzioni di un programma presente in memoria. Durante l'esecuzione del programma la CPU legge o scrive dati in memoria. Il risultato dell'esecuzione dipende dal dato su cui si opera e dallo stato interno in cui la CPU stessa si trova, e può mantenere la traccia delle operazioni passate.
Attualmente la CPU è tipicamente implementata come microprocessore.

Struttura della CPU

Una generica CPU contiene:
  • un'unità di controllo (anche nota con l'acronimo "CU") che legge dalla memoria le istruzioni, se occorre legge anche i dati per l'istruzione letta, esegue l'istruzione e memorizza il risultato se c'è, scrivendolo in memoria o in un registro della CPU.
  • un'unità aritmetica e logica (anche nota con l'acronimo "ALU") che si occupa di eseguire le operazioni logiche e aritmetiche;
  • dei registri, speciali locazioni di memoria interne alla CPU, molto veloci, a cui è possibile accedere molto più rapidamente che alla memoria: il valore complessivo di tutti i registri della CPU costituisce lo stato in cui essa si trova attualmente. Due registri sempre presenti sono:
    • il registro IP (Instruction Pointer) o PC (Program Counter), che contiene l'indirizzo in memoria della prossima istruzione da eseguire;
    • il registro dei flag: questo registro non contiene valori numerici convenzionali, ma è piuttosto un insieme di bit, detti appunto flag, che segnalano stati particolari della CPU e alcune informazioni sul risultato dell'ultima operazione eseguita. I flag più importanti sono:
      • Flag di stato:
        • Overflow: indica se il risultato dell'operazione precedente era troppo grande per il campo risultato: 0 assenza di overflow, 1 overflow
        • Zero: vale 1 se l'ultima operazione ha avuto risultato zero, altrimenti vale 0.
        • Carry: vale 1 se l'ultima operazione ha ecceduto la capacità del registro che contiene il risultato, altrimenti vale 0 (esempio: in un registro a 8 bit, che può rappresentare solo numeri da 0 a 255, la somma 178+250 darebbe come risultato 172, cioè 428 - 256, e il carry verrebbe posto a 1 insieme al flag di overflow).
        • Segno: indica il segno del risultato dell'operazione precedente: 0 risultato positivo, 1 risultato negativo
      • Flag di controllo:
        • Interrupt: se a questo flag viene assegnato valore 1, la CPU smette di rispondere alle richieste di servizio esterne delle periferiche (i segnali delle linee IRQ) finché non viene ripristinato al valore 0, o finché non arriva dall'esterno un segnale di RESET.
Una generica CPU deve eseguire i suoi compiti sincronizzandoli con il resto del sistema: perciò è dotata, oltre a quanto sopra elencato, anche di uno o più bus interni che si occupano di collegare registri, ALU, unità di controllo e memoria: inoltre all'unità di controllo interna della CPU fanno capo una serie di segnali elettrici esterni che si occupano di tenere la CPU al corrente dello stato del resto del sistema e di agire su di esso. Il tipo e il numero di segnali esterni gestiti possono variare ma alcuni, come il RESET, le linee di IRQ e il CLOCK sono sempre presenti.
Per quanto riguarda i registri, le CPU possono gestirli in molti modi: i più comuni sono registri nominativi (CPU CISC classiche), file di registri (RISC) e stack di registri (Transputer e simili).
  • Stack di registri: i registri sono organizzati in una struttura a stack (pila); questa architettura ha il vantaggio di non dover specificare su quale registro interno operare (è sempre quello in cima allo stack) ottenendo istruzioni più corte e più semplici da decodificare. Il rovescio della medaglia è che nel caso sia necessario un dato "sepolto" in fondo allo stack, il suo recupero è un'operazione molto lenta.
  • Registri nominativi: ogni registro è identificato singolarmente e le istruzioni che usano registri specificano di volta in volta quale registro devono usare. Spesso alcuni registri sono dedicati a scopi particolari (registri indice, accumulatori, registri di segmento ecc.) imponendo la non ortogonalità del set di istruzioni (vedi oltre). La gran maggioranza delle CPU generiche degli anni '70 e '80 è di questo tipo.
  • File di registri: I registri sono organizzati come una memoria interna della CPU e indicizzati: la CPU "alloca" un certo numero di registri per ogni processo e/o subroutine in esecuzione, eliminando la necessità di accedere alla RAM per salvare gli stack di chiamata delle funzioni e i dati di task switching nei sistemi multitask.
Una CPU è un circuito digitale sincrono: vale a dire che il suo stato cambia ogni volta che riceve un impulso da un segnale di sincronismo detto clock, che ne determina di conseguenza la velocità operativa, detta velocità di clock: quindi il tempo di esecuzione di una istruzione si misura in cicli di clock, cioè in quanti impulsi di clock sono necessari perché la CPU la completi. In effetti, una parte importante e delicata di ogni CPU è il sistema di distribuzione che porta il segnale di clock alle varie unità e sottounità di cui è composta, per fare in modo che siano sempre in sincronia: tale sistema si dirama in una struttura ad albero con divisori e ripetitori che giunge ovunque nella CPU. Nei processori più moderni (Pentium, Athlon, PowerPC) questa "catena di ingranaggi" elettronica arriva ad impiegare circa il 30% di tutti i transistor disponibili. La velocità di questa distribuzione determina in maniera diretta la massima frequenza operativa di una CPU: nessuna CPU può essere più veloce del suo critical path, cioè del tempo che impiega il clock per percorrere il tratto più lungo in tutto l'albero di distribuzione del clock. Per esempio, se il segnale di clock di una data CPU impiega un nanosecondo per attraversare tutto il chip ed arrivare fino all'ultima sottounità, questa CPU potrà operare a non più di 1 GHz, perché altrimenti le sue componenti interne perderebbero la sincronizzazione, con risultati imprevedibili (per avere un margine di sicurezza, il limite pratico sarà anzi ben minore di 1GHz).


Ciclo del processore

Tipicamente la CPU è l'Interprete del linguaggio macchina. Come tutti gli interpreti, si basa sul seguente ciclo:
  • Acquisizione dell'istruzione (Instruction Fetch): il processore preleva l'istruzione dalla memoria, presente nell'indirizzo (tipicamente logico) specificato da un registro "speciale" ("speciale" opposto di "generico"), il PC
  • Decodifica (Operand Assembly): una volta che la word è stata prelevata, viene determinata quale operazione debba essere eseguita e come ottenere gli operandi, in base ad una funzione il cui dominio è costituito dai codici operativi (tipicamente i bit alti delle word) ed il codominio consiste nei brani di microprogramma da eseguire
  • Esecuzione (Execute): viene eseguita la computazione desiderata. Nell'ultimo passo dell'esecuzione viene incrementato il PC: tipicamente di uno se l'istruzione non era un salto condizionale, altrimenti l'incremento dipende dall'istruzione e dall'esito di questa
Questo ciclo elementare può essere migliorato in vari modi: per esempio, la decodifica di una istruzione può essere fatta contemporaneamente all'esecuzione della precedente e alla lettura dalla memoria della prossima (instruction prefetch) e lo stesso può essere fatto con i dati che si prevede saranno necessari alle istruzioni (data prefetch). La stessa esecuzione delle istruzioni può essere suddivisa in passi più semplici, da eseguire in stadi successivi, organizzando la unità di controllo e la ALU in stadi consecutivi, come delle catene di montaggio (pipeline''): in questo modo più istruzioni possono essere eseguite "quasi contemporaneamente", ciascuna occupando ad un certo istante uno stadio diverso della pipeline.
Il problema di questo approccio sono le istruzioni di salto condizionato: la CPU non può sapere a priori se dovrà eseguire o no il salto prima di aver eseguito quelle precedenti, così deve decidere se impostare la pipeline tenendo conto del salto o no: e in caso di previsione errata la pipeline va svuotata completamente e le istruzioni in corso di decodifica rilette da capo, perdendo un numero di cicli di clock direttamente proporzionale al numero di stadi della pipeline. Per evitare questo i processori moderni hanno unità interne (“Branch prediction unit”) il cui scopo è tentare di prevedere se, data una istruzione di salto condizionato e quelle eseguite in precedenza, il salto dovrà essere eseguito o no.
Inoltre i processori possono implementare al loro interno più unità di esecuzione per eseguire più operazioni contemporaneamente. Questo approccio incrementa le prestazioni delle CPU ma ne complica notevolmente l'esecuzione, dato che per poter eseguire in modo efficiente più operazioni in parallelo la CPU deve poter organizzare le istruzioni in modo diverso da come sono organizzate dal programmatore (esecuzione fuori ordine). Una ulteriore evoluzione di questo concetto è stata implementata nei processori multicore Itanium, che implementano delle istruzioni predicative che possono o meno essere eseguite a seconda del risultato di altre, eseguite in precedenza o contemporaneamente.




Architettura di von Neumann e architettura Harvard

In base all'organizzazione della memoria si possono distinguere le seguenti due famiglie di CPU:
  • con architettura di von Neumann, in cui i dati e le istruzioni risiedono nella stessa memoria (è dunque possibile avere codice automodificante). Questa architettura è la più comune, perché è molto semplice e flessibile.
  • con architettura Harvard, in cui i dati e le istruzioni risiedono in due memorie separate. Questa architettura può garantire prestazioni migliori poiché le due memorie possono lavorare in parallelo riducendo le alee strutturali, ma è ovviamente molto più complessa da gestire. È tipicamente utilizzata nei DSP.
Entrambe le architetture sono architetture basate sui registri generali.

Il BIOS

Esempio di un'interfaccia BIOS
Il BIOS(Basic Input-Output System) è un insieme di routine software, generalmente scritte su ROM, FLASH o altra memoria non volatile, che fornisce una serie di funzioni di base per l'accesso all'hardware e alle periferiche integrate nella scheda madre da parte del sistema operativo e dei programmi.
La ROM del BIOS contiene anche il POST(Power On Self Test), il primo programma che viene eseguito dopo l'accensione;e che testa l'hard ware o ne verifica il funzionamnto
Nei primi PC IBM il BIOS supportava tutte le periferiche e il DOS faceva completo affidamento su di esso per le operazioni a basso livello, ma con l'evoluzione tecnologica successiva le capacità offerte dalle routine di gestione del BIOS (all'epoca non aggiornabili, perché scritte in ROM) divennero rapidamente insufficienti.
A partire dall'introduzione dei primi PC, è il BIOS che ha il compito di dare i primi comandi al sistema durante la fase di avvio, detta boot process. In questa fase, dopo i controlli preliminari sulla funzionalità dei componenti fondamentali per sapere come inizializzare correttamente le periferiche presenti il BIOS legge alcuni parametri da una piccola memoria RAM, mantenuta alimentata anche a PC spento da una batteria, del tutto separata dalla RAM principale del computer.
Il BIOS è il firmware del computer, dal momento che è una parte integrante dell'hardware, pur essendo composto da istruzioni software.
In passato il BIOS veniva memorizzato su una o più ROM, non riprogrammabili. Man mano che la complessità è aumentata, di pari passo con la necessità di aggiornamenti, si è diffusa la memorizzazione del firmware BIOS su flash memory così da permettere un rapido aggiornamento anche da parte dell'utente finale.
L'accesso al menu del BIOS avviene premendo un tasto o una combinazione di tasti, che variano da produttore a produttore o da modello a modello, durante la fase di POST. Alcune combinazioni utilizzate sono:
  • tasto del/canc
  • F2
  • esc
  • F11
  • F1
  • ctrl+alt
  • ctrl+esc
La navigazione fra le varie schede e funzionalità dell'interfaccia del BIOS avviene quasi esclusivamente da tastiera.

Presentazione del bus USB


Presentazione del bus USB

Il bus USB (Universal Serial Bus, in italiano Bus seriale universale) è, come indicato dal suo nome, basato su un'architettura di tipo seriale. Si tratta tuttavia di un'interfaccia entrata-uscita molto più rapida rispetto alle porte seriali standard. L'architettura che è stata scelta per questo tipo di porta è in serie per due ragioni principali :

•    l'architettura seriale permette di utilizzare una cadenza di orologio molto più elevata rispetto ad un'interfaccia parallela, dato che questa non supporta delle frequenze troppo elevate (in un'architettura ad alte capacità di banda, i bit circolanti su ogni filo arrivano con dei ritardi, provocando degli errori);
•    i cavi seriali costano molto meno che i cavi paralleli.

Le norme USB

Così, dal 1995, lo standard USB è stato elaborato per la connessione di una grande varietà di periferiche.
Lo standard USB 1.0 propone due modalità di comunicazione :
•    12 Mb/s in modalità alta velocità,
•    1.5 Mb/a a bassa velocità.

Lo standard USB 1.1 apporta qualche chiarimento ai costruttori di periferiche USB ma non modifica niente rispetto alla banda. Le periferiche certificate USB 1.1 hanno il seguente logo :
La norma USB 2.2 permette di ottenere delle capacità di banda che possono raggiungere 480 Mbit/s. Le periferiche certificate USB 2.0 hanno il seguente logo :

In assenza di loghi il modo migliore per determinare se si tratta di periferiche USB a bassa o alta velocità è quello di consultare la documentazione del prodotto dato che i connettori sono gli stessi.
La compatibilità tra periferiche US 1.0, 1.1 e 2.0 è assicurata. Tuttavia l'utilizzazione di una periferica USB 2.0 su una porta USB a bassa velocità (es. 1.0 o 1.1) limiterà la capacità della banda a 12 Mbit/s massimo. Inoltre, il sistema operativo visualizzerà un messaggio indicante l'abbassamento della banda.

Tipi di connettori

Esistono due tipi di connettori USB :
•    I connettori detti di tipo A, la cui forma è rettangolare e servono generalmente per delle periferiche che richiedono poca banda passante (tastiera, mouse, webcam, ecc.);
•    I connettori detti di tipo B, la cui forma è quadrata e utilizzati principalmente per delle periferiche ad alta capacità di banda (dischi rigidi esterni, ecc.)

1.    Alimentazione +5V (VBUS) 100mA massimo
2.    Dati (D-)
3.    Dati (D+)
4.    Massa (GND)

Funzionamento del bus USB

L'architettura USB ha come caratteristica di fornire l'alimentazione elettrica alle periferiche che collega, limitato a 15 W massimo per periferica. Essa utilizza per questo un cavo composto da quattro fili (la massa GND, l'alimentazione VBUS e due fili di dati detti D- e D+).

La norma USB permette di concatenare delle periferiche, utilizzando una topologia in bus o a stella. Le periferiche possono allora essere sia connesse le une presso le altre, ossia ramificate.
La ramificazione si fa attraverso dei case detti « hub » (in italiano concentratori), con una sola entrata e più uscite. Alcuni sono attivi (fornendo energie elettrica) altri passivi (alimentati dal computer).
La comunicazione tra l'host (il computer) e le periferiche si fanno seguendo un protocollo(linguaggio di comunicazione) basato sul principio dell'anello a gettone (token ring). Questo significa che la banda passante è condivisa temporaneamente tra tutte le periferiche connesse. 
L'host (il computer) emette un segnale di inizio sequenza ogni millisecondo (ms), intervallo di tempo durante il quale darà simultaneamente la "parola" a ciascuno di essi. Quando l'host vuole comunicare con una periferica, emette un gettone (pacchetto di dati, contenente l'indirizzo della periferica, codificato a 7 bit) che designa una periferica, ed è quindi l'host che decide il "dialogo" con le periferiche. 
Se la periferica riconosce il proprio indirizzo nel gettone, invia un pacchetto di dati (da 8 a 255 byte) in risposta, altrimenti fa passare il pacchetto alle altre periferiche connesse. I dati così scambiati sono codificati secondo la codifica NRZI.
Dato che l'indirizzo è codificato a 7 bit, a questo tipo di porta possono essere connesse simultaneamente 128 periferiche (2^7). In realtà bisogna portare questa cifra a 127 dato che l'indirizzo 0 è un indirizzo riservato. (cfr successivamente).
Se consideriamo una lughezza massima di 5 metri per un cavo fra due periferiche e al massimo 5 hub (alimentati), è possibile creare una catena lunga 25 metri!
Le porte USB supportano l' Hot plug and play, quindi le periferiche possono essere collegate senza spegnere il computer (collegamento a caldo, in inglese hot plug ). 

Quando si connette la periferica all'host, quest'ultimo individua l'aggiunta di un nuovo elemento grazie al cambiamento della tensione tra i fili D+ e D-. In quel momento, il computer invia un segnale di inizializzazione alla perifericha per 10 ms, poi gli fornisce corrente mediante i fili GND e 'VBUS (fino a 100mA).

La periferica è quindi alimentata elettricamente e recupera temporaneamente l'indirizzo di default (l'indirizzo 0). La tappa successiva consiste nel fornirgli un suo indirizzo definitivo (procedura di numerazione). Per far questo, il computer interroga le periferiche già collegate per conoscere il loro e attribuirne uno nuovo, che viene così identificato. L'host, disponendo di tutte le caratteristiche necessarie è quindi capace di caricare il driver appropriato.

 Il sistema USB è asimmetrico, consiste in un singolo gestore e molte periferiche collegate da una struttura ad albero attraverso dei dispositivi chiamati hub (concentratori). Supporta fino ad un massimo di 127 periferiche per gestore: nel computo vanno però inclusi anche gli hub e il gestore stesso, quindi, in realtà, il numero totale di dispositivi collegabili è sensibilmente inferiore. La lunghezza massima che può avere il cavo senza che il segnale diventi troppo debole è pari a 5 m; oltre questo limite è necessario ricorrere ad uno o più hub attivi che amplifichino il segnale. Le specifiche prevedono il collegamento consecutivo al massimo di 5 hub.

Lo standard prevede che il connettore porti anche un cavo (chiamato VBUS) per alimentare le periferiche a basso consumo. Le periferiche che hanno richieste energetiche elevate vanno alimentate a parte. I limiti energetici dello standard vanno seguiti scrupolosamente pena il probabile danneggiamento del gestore, dato che lo standard USB non prevede nelle specifiche minime la sconnessione in caso di sovraccarico.

Il disegno dell'USB è stato pensato per consentire un semplice inserimento e rimozione. Lo standard è stato progettato in modo da consentire un semplice aggiornamento dei sistemi sprovvisti di USB attraverso una scheda PCI, ISA o PC Card. Le porte USB sono dotate del supporto del Plug and Play e supportano i dispositivi hot swap quindi se il sistema operativo lo consente supportano la rimozione a caldo e il reinserimento delle periferiche senza dover riavviare il computer (questo per i dispositivi a basso consumo: verificare sul manuale della periferica che si desidera collegare se è consentito l'hot swap).

USB può collegare periferiche quali mouse, tastiere, memoria di massa a stato solido e a disco rigido, scanner d'immagini, macchine fotografiche digitali, stampanti, casse acustiche, microfoni e altro ancora. Per i componenti multimediali ormai lo standard USB è il metodo di collegamento più utilizzato mentre nelle stampanti sopravvivono ancora molti modelli dotati anche di porta parallela per questioni di compatibilità.

All'interno del computer, l'USB non ha rimpiazzato gli standard ATA o SCSI per via della sua lentezza. Il nuovo standard serial ATA per esempio consente trasferimenti dell'ordine di 150 Mbyte per secondo, una velocità molto più elevata dello standard USB, che nella versione 2.0 raggiunge un massimo di 60 Mbyte per secondo (480 Mbits/s). L'USB viene molto usato negli hard disk esterni dove si preferisce privilegiare la praticità di poter collegare e scollegare a caldo il componente rispetto alla velocità di una connessione tipo ATA. La versione 3.0 raggiunge la velocità di 4800 Mbits/s.

USB non ha ancora totalmente rimpiazzato il connettore PS/2 della tastiera, molti costruttori preferiscono mantenerlo per consentire agli utenti di poter utilizzare le economiche tastiere PS/2.

Lo standard 1.0 dell'USB (gennaio 1996) supporta collegamenti a solo 1,5 Mbit/s, velocità adeguata per mouse, tastiere e dispositivi lenti.
La versione 1.1 (settembre 1998) aggiunge la modalità full speed, che innalza la velocità a 12 Mbit/s.

La maggior novità dello standard USB versione 2.0 (aprile 2000) è l'innalzamento della velocità di trasferimento a 480 Mbit/s. Questa velocità consente all'USB di essere, teoricamente, competitivo con lo standard Firewire 400 (IEEE 1394) che ha una velocità di trasferimento di 400 Mbits/s, benché agli effetti pratici quest'ultimo risulti più veloce del primo. Lo standard USB ha tuttavia delle limitazioni di carattere tecnico che ne sconsigliano l'utilizzo su telecamere e dispositivi che manipolano flussi video.

Le specifiche dell'USB stabiliscono due tipi di connettori per collegare i dispositivi, il connettore A e B. Negli ultimi anni alcuni produttori hanno introdotto delle varianti del connettore per i loro dispositivi miniaturizzati. 
Molti produttori cercando di ridurre le dimensioni dei dispositivi hanno deciso di creare connettori più piccoli di quelli standard. Questi dispositivi rispettano lo standard di comunicazione USB a tutti gli effetti, l'unica differenza è il connettore che è fisicamente diverso, sono chiamati: micro-USB, mini USB di tipo A e B.

Una estensione del USB chiamata USB-On-The-Go consente ad una singola porta di fungere sia da dispositivo che da controllore. Ciò consente una più semplice connessione di dispositivi tipo i PDA che a volte devono fare da dispositivo ed a volte devono comandare dei dispositivi. Per evitare una proliferazione dei connettori proprietari, USB-On-The-Go ha definito anche due connettori chiamati mini-A e mini-B, che sono connettori molto più piccoli dei connettori precedenti; questo rimuove la principale motivazione dei produttori ad ignorare lo standard e cioè risparmiare spazio.

L'USB è una porta facilmente installabile anche nei computer di vecchia generazione che ne sono sprovvisti: una scheda USB 2.0 per slot PCI, da installare all'interno del case nella scheda madre, può costare dai 10 ai 30 €.

Tipi di connettori USB
Connettore maschio micro USB

Riassumendo vi sono attualmente 6 tipi di connettori USB ufficiali:
•    USB di tipo A
•    USB di tipo B
•    Mini USB di tipo A
•    Mini USB di tipo B
•    Micro USB di tipo A
•    Micro USB di tipo B
In realtà esistono altre versioni di connettori non standard per il collegamento USB di dispositivi con presa "proprietaria" di vario tipo (ad esempio lettori mp3, modem UMTS, telefoni cellulari, macchine fotografiche digitali, videocamere ecc.).

Caricabatterie universale per cellulari

Un caricabatterie micro USB per un cellulare Nokia. Dal 2011 questo connettore è utilizzato su tutti i telefoni cellulari.
Il connettore micro USB è stato scelto da alcune delle maggiori aziende di telefonia cellulare del mondo (Nokia, LG, Motorola, Samsung, RIM, Sony Ericsson, NEC, Qualcomm, Texas Instruments) per diventare il connettore standard che dal 2011 sarà presente su tutti i telefoni cellulari del mondo. È stata l'Unione europea a chiederlo al fine di ridurre l'inquinamento elettronico (l'esistenza di decine di caricatori diversi obbliga chi intende cambiare cellulare a buttare via anche il relativo caricabatterie, essendo nella maggior parte dei casi incompatibile con il nuovo telefono)[1][2], senza contare però che ogni caricabatteria dà tensioni ed amperaggi differenti in uscita. Apple inizialmente era restia all'introduzione del nuovo connettore, in quanto quello in uso con l'iPod e l'iPhone è protetto da brevetti e l'uso da parte di altre aziende comporta il pagamento ad Apple di salati costi di licenza.[3][4] Il telefono cellulare iPhone 4 e iPhone 4S di Apple (uscito sul mercato nel 2010 e 2011) lascia intendere che Apple, malgrado avesse dichiarato il contrario, abbia deciso per il momento di non introdurre sui suoi prodotti il connettore micro-usb (infatti l'iPhone 4 ne è privo e mantiene la classica presa "Apple" per la ricarica e la connessione al computer). Il cavo dato in dotazione al telefono ne permette comunque la ricarica tramite una qualsiasi presa USB, senza necessità di connettori ulteriori.

Piedinatura 
Rappresentazione schematica dei connettori USB di tipo A e B

•    Piedinatura del connettore USB:

Pin    Nome segnale    Colore filo
1             VBUS               ROSSO
2                D-                   BIANCO
3                D+                  VERDE
4             GND                   NERO

•    Pinout dei connettori mini USB:

Pin    Nome segnale    Colore filo       Note
1             VBUS               ROSSO        + 5 V
2                D-                   BIANCO       Data −
3                D+                  VERDE        Data +
4                ID                    FUCSIA       Interconnessione Mini/Micro A e B (Tipo A connesso a GND, tipo B non connesso)
5             GND                    NERO         GND

Il livello di tensione per il VBUS è di circa +5 V con una corrente massima di 500 mA. Con i segnali D+ e D- si intendono le due linee di comunicazione dati (pseudo) differenziali. Per tutti i connettori la protezione metallica esterna è connessa a terra.

USB 3.0
Connettore maschio di tipo B (3.0)

Il 18 settembre 2007 la nuova versione viene presentata al pubblico ed ai media da Pat Gelsinger, CEO della Intel, che effettua una prima dimostrazione di funzionamento di USB 3.0 all'Intel Developer Forum. USB 3.0 è in grado di trasferire dati dieci volte più velocemente di USB 2.0 con una velocità di trasferimento di 4,8 Gb/s (l'equivalente di circa 600 MB/s, contro gli attuali 480 Mb/s - 60 MB/s - dell'USB 2.0) utilizzando due coppie intrecciate ad alta velocità per la modalità "Superspeed" e il supporto di connessioni ottiche.

Le specifiche USB 3.0 sono state rese note il 13 agosto 2008 mentre i primi prodotti commerciali sono usciti a cavallo tra il 2009 e il 2010. Come avvenuto in precedenza, la versione 3.0 ha mantenuto la retrocompatibilità con USB 2.0 e 1.0. Infatti i nuovi connettori (con un maggior numero di piedini) permettono l'inserzione in una parte dei suoi piedini dei connettori USB 2.

Nella prima metà di ottobre 2008 Intel, una delle aziende che ha definito il protocollo USB, ha fornito le specifiche tecniche per la nuova interfaccia USB 3.0, retrocompatibile con l'USB 2.0.
Una nuova caratteristica è il bus "SuperSpeed", che fornisce una quarta modalità di trasferimento dati a 4,8 Gb/s.
La velocità teorica è di 4 Gb/s e la specifica ritiene ragionevole ottenere 3,2 Gb/s (ovvero 0,4 GB/s o 400 MB/s) o più al netto dell'overhead di protocollo. 
Per ospitare i piedini supplementari per la modalità SuperSpeed, i fattori di forma fisica per USB 3.0 spine e i contenitori sono stati modificati. Il contatto femmina standard-A è più profondo per accettare questi nuovi connettori. 
Un cavo standard legacy di A-a-B lavorerà come progettato e non entrerà mai in contatto con i connettori SuperSpeed, garantendo la compatibilità con le versioni precedenti.
La spina SuperSpeed standard A si adatterà correttamente alle prese, ma il SuperSpeed standard B non è adatto alle prese B standard vecchio stile (quindi un nuovo cavo può essere utilizzato per la connessione di un nuovo dispositivo a un vecchio host, ma non per collegare un nuovo host in un vecchio dispositivo, e sarà necessario un cavo standard legacy A-a-B). USB 3.0 estende il tipo di trasferimento di massa in SuperSpeed. 
Questa estensione consente a un host e a un dispositivo di creare e trasferire più flussi di dati attraverso un singolo supporto. Nuove funzioni di gestione dell'alimentazione includono il supporto di inattività, stand by e sospensione dello stato. USB 3.0 non definisce le lunghezze dei cavi, in teoria può essere usata qualsiasi lunghezza, purché soddisfi tutti i requisiti definiti nella specifica. Tuttavia alcune stime indicano una limitazione di 3 m usando SuperSpeed.

   Tipo                   Prestazioni
USB 1.0         1,5 Mbit/s (0,1875 MB/s)
USB 1.1         12 Mbit/s (1,5 MB/s)
USB 2.0         480 Mbit/s (60 MB/s)
USB 3.0         4,8 Gbit/s (600 MB/s)

Evoluzioni future

L'evoluzione dello standard USB si concentra su due strade, la prima prevede un innalzamento della velocità massima di trasferimento mentre la seconda strada chiamata wireless USB prevede l'abbandono dei cavi per la comunicazione tramite onde radio. Una prima specifica wireless USB è già stata standardizzata e alcuni dispositivi sono in commercio. Attualmente, nel 2012, la versione principalmente in uso è la 2.0, ma i nuovi dispositivi in commercio sono dotati per la maggior parte della versione 3.0

Il processore

Il processore unità di elaborazione è una tipologia di dispositivo hardware del computer che si contraddistingue per essere dedicata all'esecuzione di istruzioni. E' quindi il dispositivo che nel computer esegue materialmente l'elaborazione dati.
Un computer può essere dotato anche di più processori che collaborano tra loro. In tal caso si parla di "computer multiprocessore" e l'elaborazione dati viene anche chiamata "multiprocessing".
Un processore
 In base alle funzioni che svolgono, attualmente si possono distinguere le seguenti tre principali tipologie di processori:
  • Unità di elaborazione centrale
  • Coprocessore
  • Processore di segnale digitale
L'unità di elaborazione centrale (CPU) è il processore che sovraintende tutte le funzionalità del computer digitale basato sull'architettura di von Neumann.
 Attualmente invece la tipica implementazione dell'unità di elaborazione centrale è il microprocessore. L'unità di elaborazione centrale è quindi contenuta nello spazio di pochi centimetri quadrati.
Un computer multiprocessore può avere anche più unità di elaborazione centrale che collaborano tra loro.

 Il coprocessore è un processore ausiliario ad un altro processore. La funzione del coprocessore è quella di alleggerire il carico di lavoro del processore di cui è ausiliario. Spesso il coprocessore è un processore ottimizzato e specializzato nell'esecuzione di particolari elaborazioni in modo da risultare più efficiente nei compiti a lui affidati.

Il processore di segnale digitale (DSP) è un processore specializzato nell'elaborazione numerica dei segnali. Il processore di segnale digitale può essere utilizzato come processore principale in particolari computer dedicati esclusivamente all'elaborazione numerica dei segnali, per esempio nei computer integrati nei riproduttori di CD audio.
In oltre può essere utilizzato come coprocessore della CPU in computer sia general purpose (per esempio nel personal computer) che special purpose (per esempio nelle moderne console per videogiochi).

 Standard USB (universal Serial Bus)

In elettronica l'Universal Serial Bus (USB) è uno standard di comunicazione seriale che consente di collegare diverse periferiche ad un computer.
Le caratteristiche dello standard USB sono:
  • la facilità di connessione e sconnessione
  • il basso costo
  • la velocità di trasferimento dati abbastanza elevata (480 mbit/s)
  • il supporto dei software real time per la trasmissione di audio o video
  • la possibilità di collegare fino a 127 dispositivi



Protocollo di comunicazione USB:
  1. Il controller USB invia un token packet indicando l'indirizzo del dispositivo e la direzione della comunicazione
  2. il dispositivo indirizzato,  una volta ricevuto il pacchetto  lo decodifica per capire che tipo di comunicazione il controller chiede (trasmissione o ricezione di dati).
  3. se si tratta di una trasmissione il dispositivo li trasmette, se si tratta di una ricezione il controller li riceve.
  4. quando l'operazione è finita il controller USB invia un altro token ad un altro dispositivo
E' un protocollo di tipo deterministico cioè il controller assegna a turno, scegliendo da una lista, la possibilità di comunicare ad ogni dispositivo.
Con tale protocollo si conosce a priori il tempo di attesa di ogni dipositivo.
Vi sono attualmente 6 tipi di connettori USB ufficiali:
  • USB di tipo A
  • USB di tipo B
  • Mini USB di tipo A
  • Mini USB di tipo B
  • Micro USB di tipo A
  • Micro USB di tipo B
In realtà esistono altre versioni di connettori non standard per il collegamento USB di dispositivi con presa "proprietaria" di vario tipo (ad esempio lettori mp3, modem UMTS, telefoni cellulari, macchine fotografiche digitali, videocamere ecc.).

BUS

BUS
Componente molto importante del microprocessore sono i BUS, i quali trasportano informazioni, in codice binario, tra la memoria e il processore.
I Bus sono memorizzati sulla scheda madre, possono essere considerati come la scheda madre. I bus trasportano informazioni tra la memoria e il processore. 


I BUS si dividono in 3 gruppi:
- Bus per gli indirizzi
Bus per i dati
- Bus di controllo


Bus per gli indirizzi: vi si trasmettono le informazioni relative all'indirizzo della locazione di memoria dove si trova l'informazione da leggere o scrivere.
Bus per i dati: vi si trasmettono le istruzioni dei programmi, formate da un codice operativo insieme a un dato operando.
Bus di controllo: vi si trasportano le informazioni per comandare quale operazione occorre eseguire. Può essere un'operazione di lettura/scrittura della memoria, oppure di interruzione del processore per poter eseguire un'operazione da una periferica.

Sul bus dati si trasmettono le istruzioni dei programmi. Un’istruzione è formata da un codice operativo  operando.
Il parallelismo del bus è il numero di bit che possono essere trasmesse contemporaneamente.

I protocolli sono programmi codificati, insiemi di regole che permettono la comunicazione tra mittente e destinatario.
Esempio di protocollo:
1.    la periferica attiva la linea INTR.
2.    il microprocessore attende di terminare l'istruzione in corso.
3.    il microprocessore attiva la linea INTA.
4.    la periferica si identifica.
5.    la periferica trasmette o riceve il dato.
6.    il microprocessore riprende l'esecuzione del programma dei punti i cui era stato interrotto.

Si trasmettono le richieste di voler dialogare con il processore da parte di una periferica, e poi le informazioni di disponibilità a dialogare con la periferica.












1


Le periferiche


LE PERIFERICHE

PERIFERICA:
L'unità periferica è una tipologia di dispositivo hardware del computer la quale si contraddistingue per implementare interfacce di input e/o output e per non appartenere all'unità di elaborazione che sovraintende tutte le funzionalità del computer (nei moderni computer digitali general purpose, tale unità di elaborazione è la CPU).
DESCRIZIONE:
La periferica è collegata con gli altri componenti hardware del computer via cavo o via radio ed è controllata dal sistema operativo attraverso un driver. Può anche avere un proprio microprocessore.
FUNZIONAMENTO E GESTIONE:
Ogni volta che si collega una periferica ad un PC con S. O. Windows di Microsoft, il sistema operativo assegna ad essa una lettera corrispondente a un'unità disco rimovibile. Ogni periferica è visibile fra le risorse del computer, identificata con una lettera differente.
La prima volta che si collega una periferica al PC, bisogna in generale seguire alcuni passi per l'installazione. Il CD spesso è autoinstallante, ossia dispone di una funzione, detta di autorun, disattivabile, per cui appena inserito avvia la procedura di installazione.
Le periferiche con collegamento USB sono le uniche che non richiedono un CD di installazione. I driver sono presenti in una memoria della periferica e scaricati tramite il cavo USB. Fino a Windows '98, anche per queste periferiche doveva essere installato un CD. Il CD-Rom di installazione contiene i driver della periferica, scaricabili gratuitamente dal sito del produttore, con i relativi aggiornamenti.
TIPOLOGIE:
Molte sono le tipologie di periferiche ma tutte rientrano nei seguenti tre principali gruppi di tipologie:
-periferica di input, periferica di output e periferica di input/output;
-periferica interna e periferica esterna;
-periferica locale e periferica remota.
PERIFERICA DI INPUT, PERIFERICA DI OUTPUT E PERIFERICA DI INPUT/OUTPUT:
La periferica di input (anche chiamata periferica di ingresso) è una periferica che immette dati nella memoria centrale del computer. Un esempio di periferica di input è la tastiera.
La periferica di output (anche chiamata periferica di uscita) è una periferica che riceve dati dalla memoria centrale del computer. Un esempio di periferica di output è la stampante.



 


La periferica di input/output (anche chiamata periferica di ingresso/uscita) è una periferica che immette dati nella memoria centrale del computer e riceve da essa dati. Un esempio di periferica di input/output è il modem

Queste tre tipologie di periferiche sono mutuamente esclusive: una periferica rientra sempre e soltanto in una delle tre tipologie sopra citate.
PERIFERICA INTERNA E PERIFERICA ESTERNA:
La periferica interna è una periferica che risiede all'interno del case del computer assieme ad altre componenti del computer. Un esempio di periferica interna è la scheda video.
La periferica esterna è una periferica che non risiede all'interno del case del computer assieme ad altre componenti del computer. Un esempio di periferica esterna è il mouse.
Queste due tipologie di periferiche non sono mutuamente esclusive. Esistono infatti tipologie di periferiche che vengono realizzate sia come periferiche interne che come periferiche esterne. Un esempio di tali tipologie di periferiche è l'hard disk.
TIPOLOGIE PARTICOLARI:Di seguito sono elencate le più comuni tipologie particolari di periferiche:

--Dispositivi di puntamento:
        -mouse
        -mouse ottico
        -trackball
        -penna ottica
        -tavoletta grafica
        -Touch screen

--Controller
        -Gamepad
        -Paddle
        -Joystick
        -Volante
        -Cloche
        -Pedale
        -Sensore di movimento
        -Pistola laser
        -Tastierino per giochi programmabile
--Memorie di massa:
        -disco rigido
        -floppy disk drive
        -lettori di dischi ottici (CD, DVD, Blu-ray Disc)
        -lettori di schede di memoria e chiavi USB
        -microdrive
        -nuclei di ferrite
        -unità a nastro
        -unità a dischi removibili
            -unità Iomega
                -unità a dischi Bernoulli
                -unità a dischi Zip
                -unità a dischi Jaz
                -unità a dischi Rev
--Monitor:
        -monitor CRT (a tubo catodico)
        -monitor LCD (a cristalli liquidi)
        -monitor al plasma
--Stampanti:
       -plotter
       -stampante ad aghi
       -stampante a getto d'inchiostro
       -stampante a margherita
       -stampante laser
       -stampante termica