# Personal computer/Standard

Personal computer
* Storia dei calcolatoriPersonal computer/Storia
* Architettura del calcolatorePersonal computer/Architettura
** CPUPersonal computer/Architettura/CPU
** MemoriaPersonal computer/Architettura/Memoria
** Input/OutputPersonal computer/Architettura/IO
* Linguaggio MacchinaPersonal computer/Linguaggio Macchina
** DLXPersonal computer/Linguaggio Macchina/DLX
*** Operazioni DLXPersonal computer/Linguaggio Macchina/DLX/Operazioni
*** DLX sequenzialePersonal computer/Linguaggio Macchina/DLX/DLX_sequenziale
*** DLX in pipelinePersonal computer/Linguaggio Macchina/DLX/DLX_pipeline
** 8086-8088Personal computer/Linguaggio Macchina/8086
* Mapping di Memorie ed InterfaccePersonal computer/Mapping
** Integrati NotevoliPersonal computer/Mapping#Caratteristiche_e_funzionamento_degli_integrati_notevoli
*** DriverPersonal computer/Mapping/Driver
*** CPUPersonal computer/Mapping/CPU
*** Memoria PrincipalePersonal computer/Mapping/Memorie
*** Interfacce I/OPersonal computer/Mapping/Interfacce
** Gestione delle interfacce tramite programmaPersonal computer/Mapping#Gestione_delle_interfacce_tramite_programma
* Standard alla base di un personal computerPersonal computer/Standard
* Appendici e RiassuntoPersonal computer/Appendici
Modifica il sommario

## Gli Standard alla base di un personal computer
### Il cuore del sistema: la mainboard
#### Il cervello del sistema: il chipset
##### Schemi alla base del funzionamento del chipset e dei controller ad esso collegati: BUS

Esistono tre tipi di bus:
* Il bus dati trasporta i segnali contenenti operazioni ed operandi. (D[n-1, ..., 0]).
* Il bus indirizzi trasporta, senza qualificare la locazione fisica dell'oggetto, l'indirizzo al quale portare o raccogliere informazioni.
* Il bus segnali trasporta, in base al tipo di architettura, 2 o 4 dati: RDC#, WRC# oppure MRDC#, MWRC#, IORDC#, IOWRC#.

##### Schemi alla base del funzionamento del chipset e dei controller ad esso collegati: Agenti Master/Slave

In base all'uso che i vari componenti fanno del bus si possono dividere i singoli componenti in vari gruppi:
* Master, se hanno il potere di controllare il bus
* Slave se non hanno mai la possibilità di controllare il bus
* Master/Slave se possono per brevi periodi controllare il bus, ad esempio per trasferire dati.
Come è facile supporre possono esistere sistemi con un solo master ed un solo slave, ma è più frequente avere molti master allo stesso livello. Questo tipo di configurazione è detta Multi-Master. Un tale tipo di configurazione necessita in genere di un particolare strumento detto Arbitro, che gestisce chi deve avere il controllo del bus per un certo periodo.

##### Parti del chipset: Southbridge
#### Lo standard PCI-Express
#### Lo standard ATA
##### Parallelo (ATAPI)
##### Seriale (SATA)
### La capacità di elaborare: il processore

Ogni CPU è dotata di una serie di istruzioni in linguaggio macchina che sa utilizzare. Questo insieme di istruzioni note è detto Instruction Set. In genere ogni tipo e marca di processori ha un instruction set proprio, e quasi sempre completamente retrocompatibile (anche a costo di perdere un po' di prestazioni). Generalmente un numero limitato di istruzioni implica una maggiore velocità di esecuzione, ma sono necessarie più istruzioni. Quindi da un punto di vista prestazionale si suppone che la soluzione più general purpose stia nel mezzo.
Ma la diversità di vedute a questo proposito ha dato origine a due grandi famiglie di processori: CISC e RISC, ovvero Complex Instruction Set Computer e Reduced Instruction Set Computer. I primi con sempre più istruzioni ad ogni generazione di processori, i secondi con un numero limitato ma costante di istruzioni.

### Il posto dove elaborare: la memoria RAM

La RAM (Random Access Memory) è una memoria volatile molto veloce in cui vengono immagazzinate le informazioni da passare alla CPU per essere elaborate. Il vantaggio della RAM è quello di essere per l'appunto, molto veloce, i suoi tempi si misurano nell'ordine dei nano secondi (1 miliardesimo di secondo), quindi le informazioni che contiene possono venir lette e scritte molte volte nell'arco di un secondo, ma dall'altro lato ha uno svantaggio da non sottovalutare, cioè le informazioni memorizzate sono volatili, cioè nel momento in cui manca l'energia elettrica che le alimenta, tutti i dati vengono irrimedibilmente persi. La grandezza con cui si misura è il MB (1048576 byte). Viene venduta in "banchi" di grandezza variabile a partire da 64 MB fino a 4 GB.
Esistono vari tipi di RAM a seconda della velocità a cui lavorano: Memorie SDRAM, velocità max 66~133MHz, tagli da 32~512 MB Memorie DDR SDRAM, velocità max 266~533 MHz, tagli da 128~1024 MB (montate a partire dai primi Athlon XP e Pentium 4). I termini SIMM, DIMM ecc. si riferiscono invece al package degli stessi componenti e non al loro funzionamento. Memorie RIMM o RAMBUS, in disuso, ne veniva equipaggiato il primo Pentium 4 ma dato l'alto costo e le basse prestazioni si preferì optare per le DDR. Di RAM DDR esistono anche quelle dette ECC, cioè capaci di controllare e correggere eventuali errori nel trascrivere dati da un dispositivo all'altro. Quando si acquistano le RAM bisogna fare molta attenzione all'imballaggio perché questi componenti sono molto sensibili all'elettricità statica e anche una piccola noncuranza ne potrebbe provocare il danneggiamento, quindi fate attenzione che siano imballate in buste apposite (di solito trasparenti con righe nere diagonali).

#### Schemi alla base del funzionamento della RAM: L'indirizzamento della memoria e dell'output

La RAM può essere di due tipi: statica o dinamica. Una ram dinamica è composta dai condensatori contenuti in transistori FET. Questo implica un fondamentale problema, ovvero che la memoria deve essere rinfrescata con una certa frequenza, poiché è esperienza comune che basta la misera conduttività dell'aria per scaricare in breve tempo un condensatore. Al contrario le RAM statiche sono costituite da Flip-Flop. Perciò sono più robuste, ma richiedono più controllo. In genere sono formate da blocchi di Flip-Flop uniti in una EEPROM.
Un processore può indirizzare un numero di blocchi di memoria, da 8 bit ciascuno. Se ad esempio un processore lavora con un bus dati a 32 bit, indirizza dati su 4 blocchi di memoria. La necessità di parallelismo implica che i dati devono essere scritti su banchi di memoria diversi, che non necessariamente sono implementati come moduli fisici diversi, ma che rappresentano informazioni consecutive.
L'input-output può essere visto architetturalmente in due modi che hanno vari punti in comune: L'I/O può essere mappato sulla memoria, quindi accessibile come indirizzo di memoria ed indistinguibile da essa a livello di processore. Questa soluzione implica che il bus deve sapere in che modo sono organizzati i dati e le memorie. L'altra soluzione è quella di dotare il bus di un canale specifico nel quale sottolineare il tipo di dato che si cerca: dato in memoria o dato in I/O. Non esiste una soluzione migliore. A livello di sistema operativo in realtà non esiste differenza. È solo un aspetto costitutivo. In genere i byte allocati per l'I/O sono 64 KiloByte.

#### Caratteristiche funzionali della RAM

La RAM, Random Access Memory, è il dispositivo di memoria rapida del calcolatore. Al contrario della EPROM deve essere sia leggibile che, soprattutto, scrivibile in tempi molto ristretti. Esistono due tipi di RAM costruiti in modo completamente diverso. La SRAM, ovvero Static RAM, è composta da Flip-Flop che mantengono memorizzati i dati. Il tempo di accesso è minimo, ma la capacità è minore rispetto alle DRAM. Queste, Dynamic RAM, sono composte da transistor di tipo MOS. La capacità aumenta, ma la velocità di accesso è minore.
La struttura logica interna di una RAM è comunque comune ad entrambi i tipi di RAM. L'aspetto fondamentale è nel doppio uso del bus di dati che porta il dato da scrivere (in caso di scrittura), oppure il dato letto (in caso di lettura). Questo avviene attraverso un intelligente uso di un buffer tri-state.
Caratteristiche della RAM
* Capacità a potenze pari di 2
* Sigla: 62xxx
Porte del chip:
* GND - a massa
* VCC - Tensione di alimentazione
* CE* - Chip Enable - accensione del chip di RAM
* OE* - Output Enable - va a zero nel momento della lettura
* WE* - Write Enable - va a zero nel momento della scrittura
* A0 .. A16 - Indicatori della posizione della casella di memoria
* I/O0 .. I/O7 - Dati in uscita o ingresso

### Il posto dove conservare le informazioni: l'hard disk

Il Disco Rigido o Hard Disk, è una memoria di massa, a differenza delle RAM le sue informazioni non sono volatili ma rimangono anche dopo che si toglie l'alimentazione. Un vantaggio dell'HDD è il basso costo per MB, un disco rigido moderno da 120GB (120000 MB circa) ha un prezzo che si aggira intorno ai 60~70 Euro quindi il suo costo per MB si aggira intorno ai 0,0005417 Euro. Uno punto a sfavore dei dischi rigidi rispetto alle RAM è quello di essere molto più lento, quindi poco adatto a contenere informazioni in elaborazione. Esistono ad oggi 3 tipi di interfacce per dischi rigidi IDE, la più utilizzata, ha una capacità di trasferimento dati che va dai 33 (ATA 33) ai 133 (U-ATA 133) MB (teorici) per secondo, su ogni attacco del controller IDE è possibile installare un massimo di 2 unità (master e slave). SCSI (Small Computer System Interface), la tecnologia più veloce per questo tipo di periferica, si compone di un controller SCSI a cui è collegato un cavo che può supportare un massimo di 16 periferiche (Wide SCSI), ognuna con il proprio ID. S-ATA (Serial ATA), è la tecnologia più recente (arrivata da poco alla seconda versione) evolutasi dal Parallel ATA (IDE), permette il trasferimento seriale dei dati da e verso il controller del disco rigido ad un velocità max di 150 MB/S, su ogni connettore può essere collegato un solo dispositivo.
I dischi rigidi sono dei piatti metallici su cui viene spalmata una sostanza la cui magnetizzazione può essere modificata un numero molto grande di volte dalla testina di lettura/scrittura, questi piatti girano ad una velocità variabile dai 5400 ai 15000 Giri/min (come il motore di una moto!!!) a seconda del modello di disco preso in esame. La superficie del disco però non è eterna e dopo qualche anno, a causa del deteriorarsi della sostanza sui piatti potrebbero verificarsi errori con la conseguente perdita di dati. Una buona manutenzione del disco (scandisk, chkdsk, o altro) non allunga la vita del disco ma per lo meno fa in modo che ci si accorga subito se qualche cosa non va. Esiste anche una tecnologia implementata nelle schede di controllo di tutti i dischi rigidi, il suo nome è S.M.A.R.T. (Self Monitoring Analysis and Reporting Technology) e avvisa l'utente nel caso il disco rigido cominci a dare segni di malfunzionamento consigliando la sostituzione e di conseguenza evitando la perdita di dati.

### Connettersi al mondo: il modem
#### PSTN, ISDN, ADSL, HDSL, GSM, GPRS o UMTS?

Modem sta per MODulatore/DEModulatore, ha la funzione di trasformare i dati binari in uscita dal PC in impulsi elettrici e viceversa per essere adatti a transitare sulla linea telefonica. Il Modem di casa è solitamente a 56 Kbs (Kilobit per secondo), esistono poi Modem particolari Isdn e ADSL che hanno velocità molto maggiori (fino a 128 Kbps per l'Isdn a doppio canale e 8 Megabps per l'ADSL). Il modem Isdn non ha la funzione di modulare/demodulare i dati, perché le linee Isdn inviano i dati direttamente in digitale e non è necessario convertire i dati in formato analogico, perciò prendono il nome di TA (terminal adapter).

### Componenti minori all'interno di un personal computer
#### EPROM

Una Eprom è un dispositivo di memoria statica che deriva il suo nome dalle sue caratteristiche principali: Eraseable Progammable Read Only Memory. Ovvero cancellabile, programmabile, leggibile. La programmazione di una EPROM avveniva infatti una sola volta, e non era così facile aggiornare il programma in essa contenuto, poiché la cancellazione avveniva solo tramite l'uso di una luce a raggi ultravioletti. Oggi le cose sono molto diverse. Non esistono più solo EPROM ma anche EEPROM ovvero Electrically Eraseable PROM, cioè EPROM che possono essere cancellate e riprogrammate attraverso impulsi elettrici inviati ad alcune porte del chip.
Caratteristiche delle EPROM:
* La capacità va a potenze di 2: 32k, 64k, 128k, 256k, ...
* Le sigle sono del tipo 27xxx, con xxx indicante le dimensioni in Kbits
Porte del chip:
* GND - porta a massa
* VCC - porta da connettere all'alimentazione
* A0 .. A16 - porte degli ingressi
* D0 .. D7 - porte delle uscite
* CE* - Chip Enable, porta che permette di accendere il chip solo quando serve.
* OE* - Output Enable, porta che permette ai dati di essere letti
* PGM* - Porta che consente ad un programmatore di inserire i dati nella EPROM. Spenta questa porta tutte le altre diventano porte programmabili.

### Tipi di architettura

L'architettura dell'hardware di un calcolatore è costituita da una terna di elementi:
* L'instruction set detto anche linguaggio macchina, costituisce la parte dell'architettura visibile agli sviluppatori dei compilatori o a chi programma in assembler, ed è in sostanza l'interfaccia utente con la macchina stessa.
* La struttura interna ovvero la realizzazione logica del calcolatore, è un insieme di reti logiche combinatorie atte a svolgere le operazioni tipiche di un calcolatore.
* La realizzazione circuitale ovvero la tecnologia microelettronica impiegata nella realizzazione dei circuiti integrati del processore.

#### Intruction Set

Diverse famiglie di processori avranno diverse realizzazioni logiche (386 - 486) ma possono avere lo stesso ISA (Istruction Set Architecture). Ad esempio tutti i processori Pentium hanno la stessa ISA ovvero l' IA32 (Intel Architecture 32 bit).
Il CPUtime è un parametro fondamentale per i processori ed è legato a tre variabili, di cui sia il numero di istruzioni che il CPImedio sono dipendenti dall'instruction set. Per questo motivo un linguaggio macchina viene valutato in base all'efficienza del codice generato dai compilatori: il codice deve essere capace di minimizzare il valore del CPUtime per il maggior numero di applicazioni possibili. Nascono quindi due tipi di architetture, denominate in seguito:
* CISC
* RISC

##### CISC

Storicamente i primi processori erano tutti basati su instruction set che successivamente sarebbero denominati CISC (Complex Instruction Set Computers).
L'approccio dei progettisti CISC era quello di ridurre il gap semantico tra linguaggio macchina e linguaggi ad alto livello, e ridurre così al minimo il numero di istruzioni che una macchina doveva compiere per eseguire un certo programma. Ciò è possibile aumentando la complessità del set di istruzioni che la cpu è in grado di gestire.
La complessità dell'ISA, soprattutto per i primi calcolatori risolveva il problema della memoria. Riducendo il numero di istruzioni da eseguire per ogni programma, era necessaria meno RAM per conservare le istruzioni.
Esempi di architetture CISC sono l'Intel e la Motorola

##### RISC

Quando il problema della memoria divenne meno stringente (sia per la riduzione dei costi dei blocchi di RAM, sia per la creazione della memoria virtuale), iniziò a venire fuori una nuova filosofia di programmazione, quella RISC (Reduced Instruction Set Computers) basata sulla semplicità del linguaggio macchina.
Questa filosofia pur pagando il prezzo di un più alto numero di istruzioni da eseguire per programma aveva il grosso vantaggio di diminuire notevolmente il tempo di esecuzione di qualsiasi istruzione dell'instruction set, con conseguente riduzione del CPImedio. La semplicità delle architetture RISC ha poi facilitato ed accelerato lo sviluppo di strutture in pipeline.
Esempi di architetture RISC sono il DLX (progetto esclusivamente didattico, non implementato in nessun calcolatore odierno), SPARC (la sua evoluzione UltraSPARC è attualmente molto usata), MIPS ed altre.

###### 74xx244

Questo Circuito integrato consiste in un insieme di 2 gruppi di three-state buffer da quattro bit ciascuno. Ogni gruppo è comandato indipendentemente dall'altro.
Porte dell'integrato:
* ENx* - abilita il gruppo x di three-state buffer
* xA1 .. xA4 - Bit in ingresso da abilitare o portare a stato di alta impedenza
* xY1 .. xY4 - output del buffer three-state

###### 74xx245

Un integrato come il precedente è utile, ma spesso può essere necessario abilitare alternativamente sullo stesso canale sia ingresso che uscita. Per minimizzare lo spazio necessario per un tal genere di esigenza esiste l'integrato 245. Questo si compone di una coppia di three-state buffer in direzioni opposte aperti alternativamente attraverso un comando DIR. Una struttura come questa è detta transceiver. La struttura logica è per il resto sostanzialmente identica alla precedente.