Newsgroup: it.comp.hardware.cpu
Titolo: [FAQ] Versione 0.99 beta, spero di prossima pubblicazione

L'ordine delle domande all'inizio è anche l'ordine delle risposte, che
comunque riportano la domanda all'inizio. Potrebbero esserci problemi
di formattazione o cose simili... Non preoccupatevi :). Prometto che
subito dopo l'esame di maturità le sistemo e le pubblico.
FAQ ufficiale di it.comp.hardware.cpu
*****
- Cosa significa il numero dopo gli ultimi Athlon Xp? Perchè la
frequenza che leggo dal BIOS è diversa?
- E' vero che un Athlon Xp brucia più facilmente di un Pentium4?
- A cosa serve avere tanta ram? E un processore veloce?
- Da cosa possono dipendere le prestazioni del mio computer (al di là
del processore)?
- Dopo aver provato il boot del mio pc con Athlon Xp (e il pc non è
partito) ho smontato il dissipatore e ho notato un pò di acido, cosa è
successo?
- Come posso fare per essere sicuro di montare bene il dissipatore
sull'Athlon?
- Mi sapete dire una configurazione ottimale del dissipatore attivo
(dissipatore passivo+ventola) per ottenere prestazioni buone con un pò
di silenzio?
- Athlon e Pentium sono incompatibili tra di loro? Uno dei due è più
stabile dell'altro?
- Che cosa significa SMT o HyperThreading? Cosa fanno in breve?
- Cosa significa OOE? Quali altri tipi di esecuzione esistono?
- L'Athlon Thunderbird ha le istruzioni sse?
- Cosa vuol dire "core"?
- Quanto assorbe un processore in termini di potenza?
- Cos'è un overclock? E un overvolt?
- Cosa è la cache in breve?
- Che vuol dire che è "on die"?
- A cosa servono le MMX, le SSE(2), le 3dNow!/Enh/Pro?
- Cos'è che rende più veloce una mobo piuttosto che un'altra a parità
di chipset?
- Che differenze ci sono tra Athlon "classic", Thunderbird, Spitfire,
  Duron, Palomino, XP, 4, MP, Morgan, (Thoroughbread), (Barton),
(Appaloosa)?
- Che cos'è il SOI?
- Cos'è un package organico e cosa uno di ceramica? Insomma, che è un
package?!?
- Cos'è un processore Xeon?
- Cosa significa IA64?
- Cosa significa x86-64?
- Quali OS supportano x86-64?
- Che differenza c'è tra la gestione della cache dei vari processori?
- Come funzionano i timings della RAM?*
- Che cosa significa CAS, RAS, RAS-to-CAS? 
- In overclock è meglio avere frequenze più alte o latenze più basse?
*
- Quanto incide l'avere memorie con latenza CAS di 2 piuttosto che
2.5?
- Come si leggono i numeri tipo 4-2-2-2? 
- Che differenza c'è tra SRAM e DRAM? come funzionano le SDRAM? e le
  EDO? e le DDR? e le RIMM? E le future QBM?*
- Cos'è il microcodice?*
- Cosa vuol dire IPC?
- Cosa vuol dire superscalare?
- Quali tipi di programmi sono influenzati dalle prestazioni in
virgola
  fissa e quali dalle prestazioni in virgola mobile?
- Perchè si dice che la cache incide poco sulle prestazioni in FPU?
- Come fa il bus del P4 ad andare a 400 MHz? e quell' dell'Athlon ad
andare a 266?
- Perche` il bus EV6 e` superiore all'AGTL+ in multiprocessore? E
l'HT?
- Cosa significa che un processore è a .13u?
- A che vantaggi porta avere una cache L2 più ampia?
- Sento spesso parlare di FPU, di cosa si tratta?
- A cosa mi può servire avere 2 processori?
- Mhz e prestazioni vanno di pari passo oppure ci sono differenze?
- Che schede madri conviene prendere? Costose e veloci oppure un
  compromesso?
- A volte sento parlare di Bus condiviso tra 2 processori in
  configurazione biprocessore. Cosa significa? Ci sono altri approci?
- Che cos'è una pipeline? Come funziona?
- Cosa significa la sigla RISC nei processori?
- Che cos'e` un processore VLIW?
- Che cosa significa EPIC?
- Che differenza c'e` tra x86-64 e IA-64?
- Perche` si dice che l'architettura x86 e` meno performante rispetto
  ad altre?
- Che differenza c'e` tra CISC e RISC?
- Quale è il limite fisico dell'overclock?
- Leggo che i processori hanno la cache associativa a n vie, cosa
significa?
- Cosa significa il numero dopo gli ultimi Athlon Xp? Perchè la
frequenza che leggo dal BIOS è diversa?
AMD con la linea di processori "Athlon XP" ha introdotto il cosiddetto
"model numbering", con lo scopo di paragonare i nuovi modelli con i
più
vecchi Thunderbird. 
In pratica, un XP 1800+ pur viaggiando a 1533 MHz può essere
paragonato ad un ipotetico Thunderbird 1800MHz piuttosto che 1533MHz.
La formula per ricavare la frequenza dal numero di modello è: 
numero di modello * 2/3 + 333
Di conseguenza un XP 1500+ viaggierà a 1333MHz, un XP 1600+ a 1400
MHz, e così via.
- E' vero che un Athlon Xp brucia più facilmente di un Pentium4?
Si e no...
No perchè AMD con gli Athlon XP ha adottato la tecnologia "Termistore"
che dialogando con la scheda madre ha il compito di disattivare la cpu
in caso si raggiungano temperature troppo alte.
Sì perchè apparentemente questa tecnologia sembra non funzionare
corettamente o non essere supportata da molte schede madri.
Oggettivamente la protezione termica dei Pentium4 è migliore... tengo
a precisare che ciò è importante *SOLO* se il dissipatore è montato in
modo non corretto. 
In caso contrario è praticamente impossibile bruciare una cpu, anche
staccando la ventola.
- A cosa serve avere tanta ram? E un processore veloce?
Tutto dipende dall'uso che si deve fare del pc.
Avere tanta ram è utile se si elaborano grosse quantità di dati (ad
esempio fotoritocco o elaborazioni video), più memoria c'e' più si
evita di dover ricorrere allo swap su disco rigido.
Un processore veloce ovviamente elabora le istruzioni in modo più
veloce: se si devono svolgere molti calcoli matematici (modellazione
3d, encoding) si noterà un netto giovamento.
- Da cosa possono dipendere le prestazioni del mio computer (al di là
del processore)?
Nuovamente, dipende dall'uso che se ne deve fare.
Per i giochi 3d conta molto una buona scheda video, per le
elaborazioni video un buon sistema dischi (magari un array raid0) e
molta ram.
E' consigliabile non investire solamente in una cpu velocissima, ma di
bilanciare il più possibile con le altre periferiche.
- Dopo aver provato il boot del mio pc con Athlon Xp (e il pc non è
partito) ho smontato il dissipatore e ho notato un pò di acido, cosa è
successo?
Piangi pure: montando scorrettamente il dissipatore hai appena buttato
dalla finestra dai 150 ai 300 ? di cpu!
Infatti il dissipatore non aveva il dovuto contatto con la superficie
del core della cpu, il quale si è scaldato oltre la soglia limite dei
90°C fondendosi.
Se ti può consolare hai un nuovo soprammobile/portachiave/ciondolo,
poichè il tuo commerciante si rifiuterà categoricamente di sostituirti
il processore bruciato.
La prossima volta fai attenzione e magari fatti dare una mano da un
amico esperto...
- Come posso fare per essere sicuro di montare bene il dissipatore
sull'Athlon?
AMD ha pubblicato una guida all'installazione dei dissipatori su
processori Socket A:
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/23986.pdf
Seguendo quelle istruzioni è impossibile sbagliare.
Un consiglio: fai il lavoro con calma e smonta la scheda madre dal
case. Il voler risparmiare 15 minuti può portare a tragiche
conclusioni (vedi cpu bruciata).
Ricordati di spalmare un velo di pasta termoconduttiva sul core della
cpu, levando l'eventuale francobollo rosa (pad termico) presente sul
dissipatore. La pasta garantisce la migliore conduzione del calore fra
cpu e dissipatore.
Non commettere l'errore di mettere sia pasta che pad, oppure nessuno
dei due!
- Mi sapete dire una configurazione ottimale del dissipatore attivo
(dissipatore passivo+ventola) per ottenere prestazioni buone con un pò
di silenzio?
Se non vuoi spendere tanto dovrebbero bastare un
coolermaster in alluminio con ventola 6x6. Altre due ventole 8x8 nel
case (una in basso ad aspirare e l'altra in alto a soffiar fuori)
potrebbero
aiutare molto. Sui dissipatori progettati per ventole 6x6 è comunque
possibile
montare ventole 8x8 (più silenziose e con maggior portata) grazie
all'uso di
appositi convogliatori.
Se vuoi prendere qualcosa di meglio buttati sui dissipatori in rame e
magari monta una 12x12, efficace e molto silenziosa.
Ricorda comunque che è molto importante montare le due ventole nel
case, senza le quali si corre il rischio che l'aria calda ristagni
all'interno... anche un dissipatore in argento lavora male se non vi è
un buon flusso d'aria che lo raffreddi.
- Athlon e Pentium sono incompatibili tra di loro? Uno dei due è più
stabile dell'altro?
Si tratta di due processori che utilizzano lo stesso set di istruzioni
(noto come x86, e più precisamente i686), vale a dire 'parlano la
stessa
lingua'. Di conseguenza a parità di istruzione il loro comportamento è
lo
stesso: se così non fosse significherebbe che in uno dei due c'è un
errore
di progettazione, un bug, che in una CPU è un'eventualità rara, e in
generale viene corretta assai rapidamente. In breve: Athlon e Pentium
non
sono incompatibili.
- Che cosa significa SMT o HyperThreading? Cosa fanno in breve?
SMT sta per "Simultaneous Multi-Threading" (multi-threading
simulaneo);
HyperThreading è il nome commerciale della sua implementazione nei
processori Intel Xeon (code name: Prestonia e Gallatin) e
prossimamente
anche nei comuni Pentium 4 (code name: Prescott). Può capitare che i
moderni
processori rimangano in attesa di dati dalla memoria, oppure ancora
stiano a
"rigirarsi i pollici" a causa di uno "stallo della pipeline" (v.
sezione
specifica). Il SMT permette di sfruttare questi cicli di clock che
altrimenti risulterebbero persi, per eseguire le istruzioni
appartenenti a
un altro thread (che per essere eseguite non hanno bisogno del
risultato
delle istruzioni rimaste in attesa). Per maggiori informazioni vedere
la
sezione specifica ("Multi-processing e multi-threading").
- Cosa significa OOE? Quali altri tipi di esecuzione esistono?
Significa "Out of Order Execution" o esecuzione fuori ordine.
Tradizionalmente, le CPU eseguono le istruzioni nell'ordine in cui
vengono
passate, che è la cosa più semplice. Ma non tutte le istruzioni
richiedono
lo stesso tempo per essere processate, e può capitare che una di esse
richieda più di un ciclo di clock. In questo caso le CPU che
supportano
l'OOE (tipicamente negli x86 quelle di sesta generazione, ma anche
alcune di
quinta come l'AMD K5) possono passare a un'istruzione successiva (che
non
abbia bisogno del risultato dell'istruzione in attesa per essere
eseguita)
in modo da massimizzare l'efficienza. Il SMT (v. sezione specifica)
rappresenta un'estensione dell'OOE.
- L'Athlon Thunderbird ha le istruzioni sse?
No, quelle le hanno soltanto l'Athlon XP, MP e Duron (dal 950 in poi,
ma non
tutti i 950) per Desktop e l'Athlon 4 e i nuovi Duron per Notebook.
- Cosa vuol dire "core"?
Il core è il cuore del processore. Il processore è formato da 2
parti: un package (piedini e suporto) e il core. All'interno del core
si trova il processore vero e proprio ovvero quella parte della CPU
che
esegue i calcoli. E' anche l'unica parte della CPU che scalda e quindi
va raffreddata. (v. dissipatore)
- Quanto assorbe un processore in termini di potenza?
A seconda di quale si tratta, dai 30W ai 100W all'incirca. Aumenta
all'aumentare della frequenza e diminuisce al restringimento del
processo
produttivo e al suo miglioramento (vedi SOI).
 
- Cos'è un overclock? E un overvolt?
Overclock, aumento dei megahertz del processore oltre alla frequenza
per
la quale è garantito. Overvolt, aumento della tensione del processore,
necessario a volte per rendere stabile un processore overclockato.
 
- Cosa è la cache in breve?
E' una memoria tampone, piccola e veloce, nella quale vengono
immagazzinati
i dati più richiesti della memoria centrale. Poiché la CPU in generale
non ha
bisogno dell'intero contenuto della RAM, ma esegue varie operazioni su
determinati
blocchi, la maggiore velocità della cache, ma soprattutto le minori
latenze di accesso,
consentono di velocizzare le operazioni.
 
- Che vuol dire che è "on die"?
On die significa che è sullo stesso die del silicio del core.
Ovvero che è all'interno del core.
- A cosa servono le MMX, le SSE(2), le 3dNow!/Enh/Pro?
Sono set di istruzioni multimediali SIMD (vettoriali) che permettono
di
eseguire sul medesimo flusso di dati la stessa operazione migliorando
però la velocità poichè tutto viene fatto con un minor numero di cicli
di clock. Per essere sfruttati però devono esistere compilatori che
creano eseguibili in grado di usare queste istruzioni. Fino ad ora
sono
pochi i programmi che usano questi set di istruzioni per eseguire
calcoli, quindi ti sconsigliamo di basare il tuo acquisto su queste
caratteristiche. Il P4 fa eccezione poichè i suoi sviluppatori hanno
deciso di creare un processore che in luogo di una FPU veloce avesse
delle unità SSE2 (in grado di usare codice compilato usando le
istruzioni SSE2). In caso di utilizzo delle SSE2 infatti il P4 è in
grado di raggiungere o a volte superare le prestazioni dei processori
AMD che ancora non hanno queste istruzioni. Vale anche qui però il la
mancanza di software ottimizzato.
- Cos'è che rende più veloce una mobo piuttosto che un'altra a parità
di chipset?
Ciò che rende migliore di un'altra una certa scheda madre è
l'accuratezza 
e la qualità dei componenti coni quali è stata costruita, e le
ottimizzazioni
del suo BIOS. Inoltre potrebbero
esserci delle caratteristiche aggiunte come un sistema RAID che se
sfruttato porta ad un aumento delle prestazioni.
- Che differenze ci sono tra Athlon "classic", Thunderbird, Spitfire,
Duron, Palomino, XP, 4, MP, Morgan, (Thoroughbread), (Barton),
(Appaloosa)?
L'Athlon Classic è il primo processore della famiglia K7.
Prodotto a .22/.18u con 512 K cache a 1/2 della frequenza del
processore e
esterna, dai 750 MHz agli 850 MHz la cache era a 2/5, dai 900 MHz al
gigahertz era ad
1/3. Il suo successore è stato Thunderbird che era caratterizzato da
un processo produttivo a .18u e con 256K cache integrata nel die alla
stessa
frequenza del processore. Quest'ultimo è stato prodotto fino alla
frequenza di 1400 Mhz. Lo Spitfire è la versione economica del
Thunderbird, con cache L2 di soli 64Kb.
Nell'ultimo periodo abbiamo visto la nascita del core Palomino che è
l'evoluzione del core Thunderbird sempre a .18u ma con migliorie alla
TLB e l'aggiunta di un'unità di data prefetch in hardware e con
l'aggiunta 
delle istruzioni SSE. Sul core Palomino
sono basati l'Athlon Xp, l'Athlon 4, l'Athlon MP e da esso è derivato
anche 
il core Morgan che contiene solo 64kb di cache L2. Presto AMD
inizierà a commercializzare i suoi processori con core Thoroughbred
ovvero un Core Palomino a .13 senza altre modifiche significative; lo
stesso dicasi per Appaloosa risptto al Morgan. In seguito Barton sarà
rilasciato Barton, simile a Thoroughbred ma caratterizzato dall'uso
della 
tecnologia SOI.
- Che cos'è il SOI?
Silicon on Insulator è una nuova tecnologia di costruzione del Silicio
del processore che si contrappone alla tecnologia Bulk. Come dice il
nome questo processo produttivo consiste nel "poggiare" il silicio su
un
sottile strato di isolante. Questo permette un minor riscaldamento del
processore e a una velocità maggiore nel cambio di stato dei
transistor
dovuta a una minor quantità di corrente elettrica residua nel silicio.
- Cos'è un package organico e cosa uno di ceramica? Insomma, che è un
package?!?
Il supporto su cui è ospitato il die del processore, la cui funzione è
ospitare
i piedini e collegarli alle terminazioni elettriche del die.
- Cos'è un processore Xeon?
E' un processore per workstation/server, basato sulle stesse
tecnologie dei processori
Pentium II/III/4, ma installabile in configurazioni con più processori
rispetto alle
versioni desktop e spesso contenente maggiori quantitativi di cache.
-Cosa significa IA64?
E` un'architettura di set di istruzioni sviluppata  da Intel e
incompatibile con l'attuale
IA-32. L'architettura IA-64  e` VLIW  (EPIC) a 64bit, al  contrario
della  x86-64 (vedi)
che è ancora CISC. Il processore  puo` comunque
emulare  la  modalita`  IA-32,  a  scapito  di  un'enorme perdita  di
velocita`. Affinche` un programma possa girare in maniera ottimale su
un
processore IA-64 deve essere ricompilato  in modo da utilizzare il
nuovo
set di istruzioni. L'architettura IA-64 prevede 128 registri per
interi,
128 registri floating point, 8 branch register (v branch prediction),
64
predicate register. Questa tecnologia  e` attualmente implementata
sugli
Itanium e verra`  supportata dalla sucessiva generazione di  CPU Intel
a
64bit, codename McKinley.
- Cosa significa x86-64?
x86-64 e`  un'architettura di set di istruzioni sviluppata da AMD che
si  propone di  espandere  l'attuale set  di
istruzioni x86  aggiungendo delle estensioni a  64bit. Questa
soluzione,
al  contrario  di   quella  scelta  da  Intel   (vedi  IA-64),
permette
l'esecuzione in maniera  nativa del codice a 32bit o  16bit esistente
in
maniera concorrente  al codice  a 64bit. L'architettura  x86-64
aggiunge
otto  GPR (General  Purpose Register)  a  64bit, estende  gli attuali
8
registri x86  a 64bit e prevede  16 registri a 128bit  per le
istruzioni
SSE/SSE2. I processori  x86-64 prevedono due modalita`  di
funzionamento
controllate dal bit LMA (Long Mode Active): quando il bit LMA e`
settato
a zero  il processore si  comporta come un  normale x86, con  registri
e
spazio di  indirizzamento a 32bit; quando  il bit LMA e`  settato a
uno,
vengono  attivate  tutte le  estensioni  ed  il processore  entra
nella
cosiddetta  Long  Mode. A sua  volta  la  Long  Mode si  differenzia
in
Compatibility Mode e 64bit Mode. La  prima modalita` viene utilizzata
da
OS a  64bit per  far girare  programmi a  32bit o  16bit senza  che
essi
vengano ricompilati. La  seconda modalita` prevede un  ricompilazione
ed
in  questo caso  l'applicazione  puo` sfruttare  tutte  le
caratteristiche del
processore. Il cambio di modalita`  viene gestito in maniera
trasparente
dall'OS che agisce in maniera  opportuna sul code segment del
programma.
AMD prevede di introdurre questa tecnologia con i processori della
serie
Hammer, che dovrebbero fare il loro debutto nel Q1 2003.
-Quali OS supportano x86-64?
Attualmente  Linux e  FreeBSD  supportano  appieno l'archiettura
x86-64,
mentre  e`  previsto   entro  breve  tempo  il  supporto   da  parte
di
NetBSD.  Anche  Apple, con  il suo  MacOS X,  ha mostrato  interesse
per
questa  tecnologia, ma,  la  momento  della stesura  di  queste FAQ
non
sono  disponibili  informazioni  certe. Anche Microsoft, pur non
avendo ancora
ufficialmente  annunciato  il  supporto  per x86-64, sta lavorando a
software per
x86-64, mentre  e`  sicuro il  supporto  per  IA-64. Ovviamente  tutti
gli  OS  che  oggi  girano
sui  processori x86-32  potranno  girare anche  su  x86-64, senza
pero`
sfruttarne tutte le caratteristiche.
- Che differenza c'è tra la gestione della cache dei vari processori?
Nei PIII-P4 c'è una cache L2 con bus a 256 bit associativa a 8 vie
(Vedi sezione cache) contro i 64 dell'Athlon, ma associativa a 16 vie.
Nei PIII la L1 è di tipo inclusivo, di 32K, negli Athlon di tipo
esclusivo di 128K, nei P4 la parte di L1 dedicata alle istruzioni è di
tipo "trace" ovvero contiene istruzioni già decodificate in micro-ops,
con un notevole risparmio di
tempo in quanto se si esegue molte volte di seguito la stessa
istruzione essa non deve essere decodificata tutte le volte. Nei P4
essa ha latenze (vedi) bassissime, ma per ottenere questo risultato la
dimensione è stata limitata a 8Kb (dati) + 12Kuops (istruzioni)
-Come funzionano i timings della RAM?
-Che cosa significa CAS, RAS, RAS-to-CAS? 
Questi sono i tipici Timings della Ram. Il primo rappresenta il
ritardo con il quale viene
fornito l'indirizzo della colonna, il secondo i ritardo con il quale
viene fornita la riga
e il terzo il numero di cicli che passano prima che dalla riga si
passi alla ricerca della colonna.
-In overclock è meglio avere frequenze più alte o latenze più basse? 
-Quanto incide l'avere memorie con latenza CAS di 2 piuttosto che 2.5?
Questo valore è più o meno importante a seconda della frequenza della
Ram. Il CAS infatti
è il ritardo con il quale viene rilevato l'indirizzo della colonna
della cella della Ram.
un ritardo di 2 cicli nelle memorie DDR da 266Mhz equivale a 2/266Mhz
= 75ns. Più la frequenza
della memoria si alza più il valore della CAS latency diventa meno
importante. Tra i timings
della Ram comunque questo è il valore più importante.
-Come si leggono i numeri tipo 4-2-2-2? 
Questi numeri sono le latenze della Ram nella lettura in Burst Mode.
Il primo ciclo è quello con 
la latenza più alta perchè il dato deve essere trovato nella ram (che
è organizzata in cellette).
Quando il dato è stato trovato la ram può continuare con una lettura
contigua che non ha più bisogno
dei cicli persi per cercare il dato (si trovano infatti negli
indirizzi direttamente seguenti) e le
latenze diminuiscono. A seconda della frequenza della Ram (266Mhz,
333Mhz, 800Mhz) e della sua architettura
questi valori cambiano e assumono valori diversi. Nel caso in cui la
Ram eseguisse 266 milioni di cicli
per ogni secondo otterremmo una latenza di 1/266Mhz (nel caso di un
solo ciclo di clock) da moltiplicare
poi per i cicli di clock che bisogna aspettare. Il valore ottenuto è
in nanosecondi ed è il valore in unità
di tempo che il Northbridge attende prima di ricevere il dato dalla
Ram.
-Che differenza c'è tra SRAM e DRAM? come funzionano le SDRAM? e le
EDO? e le DDR? e le RIMM? E le future QBM?
-Cos'è il microcodice?
-Cosa vuol dire IPC?
IPC significa Instructions Per Cicle, cioè Istruzioni per Ciclo, ed
indica
il numero medio di istruzioni che un processore è in grado di eseguire
in un
ciclo di clock. Oltre che dalla CPU considerata, l'IPC è determinato
dallo
specifico programma o gruppo di programmi utilizzato per determinarlo,
in
quanto certe istruzioni possono essere più veloci da eseguire di altre
per
diverse CPU.
-Cosa vuol dire superscalare?
Una CPU superscalare sfrutta una tecnica avanzata di progetto delle
pipeline
che, smistando le istruzioni tra varie unità di esecuzione consente al
processore di eseguire più di un'istruzione per ciclo di clock.
-Quali tipi di programmi sono influenzati dalle prestazioni in virgola
fissa e quali dalle prestazioni in virgola mobile?
Mentre le prestazioni sui calcoli interi o in virgola fissa
interessano
praticamente ogni tipo di programma, i calcoli in virgola mobile
interessano
un numero più limitato di applicazioni: ad esempio, CAD,
progettazione,
calcolo scientifico, grafica 3D (giochi compresi).
-Perchè si dice che la cache incide poco sulle prestazioni in FPU?
La cache incide poco sulle prestazioni FPU perchè ogni istruzioni da
eseguire in virgola mobile
ha bisogno di svariati cicli di clock per essere elaborata e la cache
risulta essere comunque molto
più veloce di quello che serve. Ricordiamo infatti che la cache ha il
compito di dare i dati alle
pipelines del processore perchè vengano inseriti nella elaborazione,
se l'elaborazione è molto
lunga non c'è bisogno di una cache molto veloce. Cosa che invece
influisce molto sulle prestazioni
della cache è la velocità della Ram.
-Come fa il bus del P4 ad andare a 400 MHz? e quell' dell'Athlon ad
andare a 266?
La frequenza  reale di clock del  bus degli Athlon e`  di 133Mhz
(100MHz
per il vecchi modelli). Normalmente viene  spedito un pacchetto di
64bit
ad ogni  ciclo di  clock, ma  il bus  EV6 permette  di sfruttare  sia
il
fronte  in salita  che  quello  in discesa  del  clock, raddoppiando
il
transfer rate (due  volte 64bit per ciclo  di clock). La dicitura
266MHz  indica  la frequenza  che  dovrebbe  avere  un bus  normale
per
raggiungere lo stesso transfer rate. Il bus  dei P4 funziona a 100MHz
(o
133MHz in  un prossimo futuro) e  sfrutta un meccanismo simile  a
quello
implementato sul EV6, riuscendo, pero`, a  trasferire 4 volte 64 bit
per ciclo di
clock.
-Perche` il bus EV6 e` superiore all'AGTL+ in multiprocessore? E l'HT?
La risposta è... perché non è un bus! Un bus rappresenta una
connessione
condivisa da vari dispositivi, nel nostro caso processori, mentre
l'EV6 è una
connessione punto a punto, vale a dire può collegare solo una CPU al
chipset.
Ne consegue che per consentire il multiprocessing un chipset deve
avere almeno
due connessioni EV6, una per processore. L'AGTL+ e` invece un bus
condiviso
tra  le varie  CPU  che, prima  di poter  trasmettere  o ricevere
dati,
devono negoziare  l'accesso al bus. Le prestazioni  generali del
sistema
subiscono, quindi, un  degrado proporzionale al numero  di CPU
presenti,
dovuto alla congestione del bus.
AMD ha introdotto anche il bus a pacchetti HyperTransport (HT),
in cui il trasferimento dei dati avviene in maniera simile a una rete
Ethernet. Non
è necessario che ogni dispositivo sia connesso direttamente a tutti
gli altri: se vuole
inviare dei dati a un dispositivo "lontano" basta che ponga il
pacchetto sul bus scrivendo
nell'intestazione il giusto "indirizzo". Percorrendo la rete HT, il
pacchetto verrà smistato
man mano dai vari dispositivi che incontrerà (possono essere presenti
dei tunnel, che filtrano
i pacchetti a loro destinati e lasciano passare gli altri, o hub e
switch che smistano i
pacchetti su vari bus HT); alla fine, verrà intercettato dal
destinatario.
Il bus Coherent-HyperTransport (cHT) e` un'implementazione del  bus
HT proprietaria di AMD,
(e quindi soggetta a royalties) destinata a connettere connettera` tra
loro le CPU in sistemi multiprocessore.
Un singolo bus HT consente una banda di 3.2GB/s full-duplex, mentre
una rete destinata a 4 (8)
processori può arrivare a una banda aggregata di 12.8 (19.2) GB/s.
- Cosa significa che un processore è a .13u?
Un processore è a .13u quando la distanza massima tra due gate (parti
di un transistor) è di 
0.13 micron. Più è piccola questa grandezza più si riducono gli
effetti di resistenza e aumenta
la velocità di commutazione dei transistor oltre che il consumo del
processore (diretta conseguenza
della diminuzione della resistenza) insieme alla dissipazione termica
(altra conseguenza della resistenza).
- A che vantaggi porta avere una cache L2 più ampia?
Che è più facile che il dato di cui la CPU ha bisogno si trovi in
cache;
quando ciò non accade si ha un cache miss e il dato va prelevato dalla
RAM, rallentando notevolmente l'esecuzione dell'istruzione.
- Sento spesso parlare di FPU, di cosa si tratta?
L'FPU è l'unità di calcolo in virgola mobile di una CPU. La virgola
mobile è
la rappresentazione (approssimata) più comune dei numeri reali su
calcolatore. Un
numero in virgola mobile è così strutturato:
+/- (2^exp * 1.xxxxx)
ovvero è costituito da un bit di segno (0 se positivo, 1 se negativo),
e dal prodotto
di un 2 elevato a un certo esponente (positivo o negativo) e di un
valore compreso tra
1 e 2, di cui è rappresentata soltanto la parte frazionaria
(sottintendendo l'uno prima della
virgola), e noto come "mantissa". In pratica, non è altro che la
comune notazione scientifica 
trasposta in formato binario. Ad esempio, il pi greco è approssimato
come segue:
+ (2^1 * 1.5707963267948966192313216916398). La rappresentazione viene
chiamata "in virgola
mobile" perché variare l'esponente del due, in base due, equivale a
spostare la virgola, come variare
l'esponente di un dieci equivarrebbe a spostare la virgola in base
dieci.
Questo è lo schema di un registro in virgola mobile
 3 32222222 2221111111111
 1 09876543 21098765432109876543210
+-+--------+-----------------------+
|s|  exp   |        mantissa       |
+-+--------+-----------------------+
s è il bit segno e come detto può essere 0 (positivo) e 1 (negativo)
exp è l'esponente. Viene rappresentato tramite una notazione
"polarizzata", tale che un esponente
0 è rappresentato come 127 (base di polarizzazione, mentre gli altri
valori, compresi tra -127 e 
128, si ottengono sommando 127 al valore stesso.
mantissa, come detto, è la parte frazionaria della mantissa
Ad esempio, un registro contenente il valore pi greco è simile a
questo:
+-+--------+-----------------------+
|0|10000000|10010010000111111011010|
+-+--------+-----------------------+
(+) (127)        (.570796...)
- A cosa mi può servire avere 2 processori?
Avere due processori può servire nel caso in cui la mole di lavoro che
devo svolgere sia
molto elevata e il software che ho a disposizione (o il sistema
operativo) supportino questa
funzione. I sistemi operativi che hanno la possibilità di funzionare
usando contemporaneamente due
processori sono le versioni Pro dei prodotti Microsoft e Linux (per
restare tra gli ambienti conosciuti).
Avere due processori non sempre equivale a un raddoppio delle
prestazioni però c'è la possibilità 
di arrivarci veramente vicino.
- Mhz e prestazioni vanno di pari passo oppure ci sono differenze?
Mhz e prestazioni non sono due sinonimi. Bisogna andare a considerare
anche
il numero di istruzioni che possono essere eseguite per ogni ciclo di
clock.
Da un punto di vista ipotetico infatti un processore a 1000Mhz che è
in grado
di eseguire 4 istruzioni per ciclo di clock è equivalente a un
processore a 
4000Mhz che però esegue una sola istruzione per ogni ciclo. Nella
realtà però
l'IPC (Istructions per Cicle) non viene quasi mai raggiunto ma in ogni
caso
se l'IPC di due processori è molto differente uno dei due avrà bisogno
di salire
molto e più velocemente in frequenza per ottenere le stesse
prestazioni dell'altro.
Questo è il caso dell'Athlon e del Pentium 4. AMD ha deciso di creare
un consorzio
per decidere un'unità di misura univoca basata appunto sulle
prestazioni in un determinato
bench, sulla frequenza e su questo fattore chiamato IPC.
- Che schede madri conviene prendere? Costose e veloci oppure un
  compromesso?
Nel caso ti servano le prestazioni assolute allora la soluzione
costosa e veloce fa sicuramente 
al caso tuo. Invece se usi il pc a casa senza fare lavori troppo
pesanti oppure senza usarlo molto
pesantemente puoi tranquillamente basarti su un compromesso. Molto
scalpore ha sollevato il chipset
della SiS 635/735 che in un bassissimo costo fa entrare anche
prestazioni elevate.
- A volte sento parlare di Bus condiviso tra 2 processori in
  configurazione biprocessore. Cosa significa? Ci sono altri approci?
Avere il bus condiviso significa che i due processori che utilizzo
sfruttano contemporaneamente
lo stesso bus. Nei sistemi Intel il bus AGTL+ da 400Mhz permette un
ampiezza massima di 8byte*400Mhz
ovvero 3200 Mbytes/s. Questo bus però va condiviso tra 2 processori
quindi ogni processore ha a disposizione
una banda media di circa 1600 Mbytes/s. Con questo meccanismo però le
prestazioni-per-processore peggiorano.
L'unica alternativa a questa soluzione è il bus ev6 che accompagna la
piattaforma AMD. Questo bus è detto
point to point quindi ogni processore ha a disposizione una
connessione diversa con il Northbridge e ognuno 
sfrutta appieno gli 8Byte*266Mhz = 2100 Mb/s che il bus mette a
disposizione per ogni processore.
Un problema comune però affligge queste due piattaforme ovvero il bus
verso la ram che resta condiviso per
entrambi. Questo problema si risolve raddoppiando l'ampiezza del bus
verso la Ram (Dual Channel Mode)
oppure, come nel chipset E7500 di Intel, si usano 2 diversi bus che
portano alla Ram.
Le prime soluzioni Dual Channel si sono viste con i chipset Intel i840
e i850 di Intel che permettevano di
raddoppiare la banda passante sulla Ram utilizzando due blocchi uguali
di memoria RdRam. In seguito 
nVidia ha introdotto la stessa caratteristica per DRam nei processori
AMD. In futuro sempre più costruttori
utilizzeranno questa tecnologia quindi non ci saranno più problemi, se
non l'obbligo di acquistare almeno 2 
blocchi di memoria per volta.
- Che cos'è una pipeline? Come funziona?
Diciamo che il tempo massimo richiesto da un processore per eseguire
un'istruzione sia t - questo è un tempo determinato da fattori fisici.
Questo significa che ogni ciclo di clock non può durare meno di t,
altrimenti potrebbero verificarsi errori di calcolo. 1/t (il reciproco
di t)
sarà allora la massima frequenza di funzionamento del processore (se t
è in
microsecondi, 1/t sarà in MHz). Se mi limito a questo, l'unico modo
per
aumentare la frequenza è passare a processi produttivi migliori, o
entro
certi limiti ridisegnare il core, il che mi garantisce un t minore.
Si è però visto che le operazioni svolte da un processore sono
composte a
loro volta da stadi intermedi che utilizzano una sola parte del
processore
per volta. Diciamo allora che riesco a suddividere ogni istruzione del
processore in n sotto-operazioni, tali che ognuna di esse, per essere
completata, non richieda un tempo superiore a t/n. Posso utilizzare
allora i
cicli di clock per indicare il completamento di ogni stadio
dell'esecuzione;
quando il primo stadio della prima istruzione viene completato, questa
passa
al secondo stadio, e una seconda istruzione può essere caricata nel
primo
stadio, senza aspettare che la prima istruzione venga completata - è
un
meccanismo fortemente analogo a ciò che capita in una catena di
montaggio.
Fare questo significa implementare un pipelining: in linea teorica
potremo
raggiungere una frequenza di n/t (il reciproco di t/n), cioè n-volte
quella
del processore senza pipeline. Tale incremento di frequenza rimane
teorico
in quanto per quanto sia accurata la suddivisione delle istruzioni in
sotto-
operazioni, è praticamente impossibile che tutte le sotto-operazioni
richiedano un tempo t/n, ma qualcuna richiederà un po' di più e
qualcuna un
po' di meno - e ovviamente ai fini della frequenza di funzionamento
interessano le sotto-operazioni che durano di più.
In soldoni il pipelining non serve ad diminuire il tempo necessario a
processare un'istruzione (che rimane t o al limite aumenta) ma ad
aumentare 
il throughput di istruzioni.
- Cosa significa la sigla RISC nei processori?
Negli anni '60 il software di sistema era raramente scritto in
linguaggio ad alto livello;
per citare un esempio, praticamente tutti i sistemi operativi
commerciali precedenti a Unix erano scritti in assembler
e più di recente anche OS/2 fu scritto originariamente a basso
livello.
Alcuni imputarono il problema alla densità di codice del set di
istruzioni, piuttosto che alla tecnologia dei linguaggi di
programmazione e dei compilatori.
Venne quindi sostenuta una filosofia di progetto detta rchitettura dei
calcolatori "high-level-language" (per linguaggi ad alto livello), con
l'obiettivo di rendere l'hardware più vicino ai linguaggi di
programmazione
L'avvento di linguaggi di programmazione e di compilatori più
efficienti, insieme all'espansione delle memorie, relegarono questo
movimento ad una semplice nota storica.
Il Burroughs B500 fu l'unico sbocco commerciale di tale filosofia di
progetto e ad oggi non ci sono in commercio esempi significativi
derivati da questa idea datata anni '60.
La filosofia di progetto orientata al linguaggio fu sostituita negli
anni '80 da quella dei RISC. Miglioramenti nei linguaggi di
programmazione, nei compilatori e relativi al costo delle memorie
fecerio sì che sempre meno codice fosse scritto direttamente in
assembler e che quindi la bontà di un set di istruzioni potesse essere
misurata da quanto efficacemente fosse sfruttabile da un compilatore
piuttosto che da un programmatore umano.
-Che cos'e` un processore VLIW?
VLIW e` l'acronimo di Very  Long Instruction Word. Le istruzioni
vengono
accorpate in  un'unico pacchetto di  ampia dimensione (da 64bit  in
su).
Questo lavoro  viene svolto dal  compilatore che all'interno  della
word
posiziona due  o piu`  istruzioni tra  loro indipendenti. Visto  che
non
sempre e` possibile fare cio` (alta interdipendenza delle istruzioni)
il
compilatore  e`  costretto ad  inserire  delle  nop (no  operation)
per
raggiungere  la dimensione  della word,  sprecando di  conseguenza
dello
spazio.
-Che cosa significa EPIC?
I  processori  IA-64  usano  la tecnologia  EPIC  (Explicit  Parallel
Instruction   Computing)  che   permette  un'aumento   del
parallelismo
nell'esecuzione  delle singole  istruzioni. 
Il parallelismo  e` "esplicito"  perche` le istruzioni  sono
organizzate
dal compilatore in "fasci". Ogni fascio contiene istruzioni
indipendenti
che possono essere eseguite in parallelo senza alcun problema.
La possibilita`  di eseguire
piu` istruzioni in  simultanea consente di aumentare  le prestazioni
del
processore  con software  ottimizzato  per  questa architettura. Per
la
serie  Itanium, Intel  dichiara la  possibilita` di  eseguire fino  a
20
istruzioni per ciclo di clock.
 
-Che differenza c'e` tra x86-64 e IA-64?
Riassumendo brevemente (per i dettagli ci sono le altre due risposte):
La tecnologia  x86-64 e`  un'estensione della x86  con cui  mantiene
una
compatibilita` completa. Al modello x86  vengono aggiunti 8 registri
GPR
a 64 bit, vengono estesi gli  8 esistenti e vengono aggiunti 16
registri
dedicati alle istruzioni SIMD da 128bit.
L'architettura IA-64 prevede taglio netto  con la x86. La IA-64
fornisce
(almeno  sulla  carta)  prestazioni  molto   elevate,  ma  solo  con
il
software ottimizzato per tale architettura. Il codice x86 viene
eseguito
in  emulazione,  con un  notevole  degrado  delle prestazioni. Il
primo
processore IA-64 entrato  in commercio e` stato l'Itanium  che, a
fronte
di un  costo elevato, non  e` stato in  grado di fornire  le
prestazioni
attese.
-Perche` si dice che l'architettura x86 e` meno performante rispetto
ad altre?
Perche` e` meno performate delle altre :) L'architettura x86 e` nata
con
il chip 8088  e da allora ha sempre mantenuto  una compatibilita`
totale
con il  passato (e` possibile eseguire  codice compilato per 8088  su
un
Pentium 4 senza  alcuna modifica). L'ISA di tutti Pentium  e` identica
a
quella del  386 (stesse istruzioni  e stessi registri),  fatta
eccezione
per  le varie  estensioni (MMX,  SSE,  SSE2) introdotte,  che pero`
non
modificano sostanzialmente l'ISA. L'x86 ha  un vecchio set di
istruzioni
CISC che  gli stessi ingegneri Intel  stanno cercando di buttare  a
mare
(vedi IA-64)  che rendono il  processo di decodifica  estremamente
lento
(rispetto ad  un processore RISC). Anche il  numero estremamente
ridotto
di registri  GPR influenza negativemente le  prestazioni, costringengo
a
fare ricorco  alla memoria per  memorizzare dati intermedi  ed
operandi.
Tuttavia  questa totale  compatibilita`  con il  passato ha
contribuito
in  maniera  significativa al  successo  della  x86  e non  puo`
essere
"cestinata" in maniera indolore.
-Che differenza c'e` tra CISC e RISC?
CISC  significa Complex  Instruction Set  Computer. L'ISA di
processore
CISC (come gli x86, almeno esternamente) e` composta da molte
istruzioni
di  formato  variabile. Se da  una  parta  questo conferisce  al
codice
macchina (ed  all'assembly) una maggiore potenza  espressiva,
dall'altra
introduce  delle   penalizzazioni  nel  processo  di   decodifica
delle
istruzioni.
RISC significa  Reducted Instruction Set Computer. In  questo caso
l'ISA
sara` composta da  istruzioni semplice e di  formato fisso. I
processori
RISC funzionano  tipicamente con un approccio  load/store (le
istruzioni
load e  store sono  l'unico modo  per accedere  alla memoria,  tutti
gli
operandi devono  trovarsi nei  registri) e sono  quindi dotati  di
molti
registri GPR.
-Quale è il limite fisico dell'overclock?
la risposta e' complicata e lunga..
comunque considera che la frequenza di un chip viene determinata dalle
caratteristiche del materiale e dal cammino elettrico piu' lungo.
le caratteristiche del materiale che devono essere considerate sono
la:
resistenza elettrica, data dalla costante della capacita' di
conduzione
elettrica
la resistenza termica, data dalla costante della capacita' di
conduzione
termica
e dalla sua reale composizione, o meglio purezza,
in piu', in quanto si parla di semiconduttori, dalla qualita' di
drogaggio
dell'elemento conduttore.
per quanto riguarda il cammino elettrico, devi considerare che a
parita' di
materiale, la frequenza viene determinata dalla velocita' di
propagazione
della carica fratto il cammino elettrico piu' lungo che c'e' nella
circuitazione.
piu' e' lungo questo cammino, piu' bassa sara' la frequenza a cui si
potra'
spingere il chip.
Per aumentare la frequenza o si diminuisce questo cammino, o si
aumenta la
qualtita' del materiale adottato.
all'aumentare della frequenza hai una quantita' di cariche maggiori
che
passano attraverso il materiale, e quindi un aumento considerevole del
calore, dato appunto dalla resistenza alla conduzione elettrica del
materiale ( diventa lungo spiegare perche' c'e' questa resistenza,
perche'
aumenta, e perche' aumenta di conseguenza il calore).
All'aumento del calore corrisponde univocamente anche l'aumento della
resistenza elettica, e si potrebbe arrivare al limite di:
1 dissipare tutta, o megli in parte, la carica elettrica utile in
calore,
non ottenendo piu' un impulso "discreto" per l'operativita' del chip
2 la fusione del materiale conduttivo.
Per gli overclocker, non potendo cambiare cammino elettrico o qualita'
del
materiale, l'aumento di frequenza e' possibile solo aumentando la
dissipazione termica e aumentando la velocita' di propagazione
elettrica
dell'impulso, aumentando il vcore, ossia la differenza di voltaggio
applicata.
Un aumento considerevole della carica dell'impulso comporta pero' un
aumento
considerevole del calore generato, e ad un aumento di frequenza
corrisponde
l'aumento di questi impulsi, ottenendo un quantitativo di calore molto
elevato, che deve essere evacuato velocemente ed efficacemente da
sistemi
sempre piu' complicati.
Diminuire la temperatura di raffreddamento permette di evacuare piu'
calore
nella stessa unita' di tempo, questo perche' la conduzione del calore
e'
dettata anche dalla differenza di temperatura che si ha tra' i corpi
considerati.
Gli elementi da considerare sono pero' il circuito che produce calore
( dato
dal passaggio di elettricita') e il corpo freddo, e tra' questi ci
sono vari
strati di materiali differenti e interfacce piu' o meno efficenti (
un'interfaccia di scambio termico efficente e' quella che da' la
maggiore
superficie possibile in relazione alla sua scabrosita'); e tutti
questi
passaggi determinano una sorta di latenza di scambio termico, che si
contrappone a quella della generazione del calore da parte del
circuito
elettrico, che e' praticamente inesistente.
Per l'overclocker la questione e' quindi quella di ottenere il giusto
equilibrio tra':
calore generato e latenza di dissipazione termica.
Detto questo puoi capire che un athlon che sta' a 2.2 ghz con un vcore
a
2.2v e raffreddato con una peltier a -40°C e' probabilmente in
perfetto
equilibrio tra' calore generato nel singolo transistor, e tempo in cui
quest
o calore viene estratto;
Difficilmente potrebbe stare ad una frequenza maggiore, che
comporterebbe
una carica piu' alta e veloce ( aumento di vcore), percio' producendo
un
calore piu' alto, ad una temperatura di raffreddamento maggiore di
-40°C, in
quanto la latenza termica dei materiali considerati e' la stessa,
mentre la
differenza di temperatura e inferiore,  percio' il calore estratto
risulta
anch'esso inferiore, rimanendo sul transistor o il filamento di
contatto con
i piedini; potendo provocare:
1) decadimento della "discrezione" dell'impulso, non riuscendo piu' a
operare in modo corretto)
2) arrivo alla temperatura di fusione del materiale in piccoli tratti
del
circuito ( bastano nonometri per interromperlo).
percio' se sei gia' al limite operativo a 2.2ghz 2.2vcore e -40°C, per
aumentare le prestazioni o rivedi la catena di trasferimento del
calore tra'
core e peltier ( o sistema simile) come i coldplate in materiali
migliori, o
raffreddamenti in diversi punti della cpu, o diminuisci, e di molto,
la
temperatura di raffreddamento ad esempio a -60°C,  aumentando cosi' il
deltaT tra corpo caldo e corpo freddo, e cercando di limitate la
latenza
termica in condizioni di utilizzo operativo.
Pero' Questa latenza termica, per quanto ne capisca io, non e'
direttamente
legata alla temperatura di raffreddamento, percio' un piccolo aumento
dei
watt generati dal transistor potrebbero comportare un considerevole
aumento
di temperatura di raffreddamento.
ora possia dire che la "LEGGE DELL'OVERCLOCKER" e commutata da:
all'aumento della frequenza deve esserci un aumento del voltaggio e
una
migliore dissipazione
a:
l'aumento della frequenza comporta un aumento di voltaggio e una
diminuzione
della latenza termica della catena di raffreddamento, che comporta
anche una
diminuzione della temperatura del corpo freddo, e l'adozione di
materiali
con costante di conducibilita' termica piu' alta.
Questa e' parte della risposta alle tue domande, per il resto ci
vorrebbe un
libro di fisica quantistica.
- Leggo che i processori hanno la cache associativa a n vie, cosa
significa?
Uno dei più grossi colli di bottiglia presenti all'interno di un
calcolatore è la RAM, che lavora a frequenze nettamente inferiori a
quelle delle cpu (o, se consideriamo un processore pipelined, di un
singolo stadio della pipeline). I calcolatori utilizzano come memoria
centrale delle memorie di tipo DRAM, molto economiche ma allo stesso
tempo lente, altro tipo di memoria è la SRAM, più veloce ma anche più
ingombrante e costosa, in quanto un bit di SRAM richiede molti più
transistor di un bit di DRAM. Si è quindi cercato di ottimizzare
questa
situazione ponendosi come obiettivo ultimo il raggiungimento di una
memoria grande, veloce ed economica.
Giocando su due fondamentali principi (principio di località temporale
= quando si accede ad un elemento di memoria c'è alta probabilità che
entro pochi cicli si acceda nuovamente allo stesso elemento; principio
di località spaziale = quando si fa riferimento ad un elemento di
memoria, c'è alta probabilità che entro breve si acceda ad elementi
con
indirizzo simile) si è pensato di creare più gerarchie di memoria,
ponendo vicino alla cpu memorie piccole e veloci, e all'ultimo livello
la memoria cetrale di sistema. Poichè i livelli gerarchici più alti
(più vicini alla cpu) sono di dimensioni ridotte, è necessario molto
spesso trasferire dati tra i vari livelli gerarchici (sempre tra du
livelli adiacenti). I moderni processori x86 hanno usualmente due
livelli di cache.
La memoria cache viene vista come organizzata in blocchi o linee
(cache lines); la minima quantità di informazione che può essere
trasferita fra due livelli è appunto un blocco. Se il dato richiesto
dalla CPU fa parte di uno dei blocchi presenti nella cache di livello
superiore, si dice che la richiesta ha avuto successo (hit). Se invece
il dato non si trova nel livello superiore, si dice che la richiesta
fallisce (miss): per trovare il blocco che contiene i dati richiesti,
bisogna accedere al livello inferiore della gerarchia e trasferire il
blocco corrispondente al livello superiore.
Si indica come frequenza dei successi (hit rate) la frazione di
accessi alla memoria che hanno trovato il dato desiderato nel livello
superiore; spesso questo valore viene utilizzato come indice delle
prestazioni della memoria gerarchica. Dualmente, la frequenza dei
fallimenti (miss rate), pari a miss rate = (1.0 – hit rate) è la
frazione di accessi alla memoria che non hanno trovato il dato
desiderato nel livello superiore. Il tempo di successo (hit time) è il
tempo di accesso al livello superiore della gerarchia di memoria, e
comprende anche il tempo necessario per stabilire se il tentativo di
accesso si risolve in un successo o in un fallimento. La penalità di
fallimento (miss penalty) è il tempo necessario per sostituire un
blocco nel livello superiore con un altro blocco preso dal livello
inferiore e per passare alla CPU le informazioni contenute in questo
nuovo blocco. Il tempo di fallimento (miss time) è dato da: miss time
=
hit time + miss penalty. Poiché il livello superiore è più piccolo e
più veloce, il tempo di successo è molto inferiore al tempo necessario
per accedere al secondo livello della gerarchia, che invece
rappresenta
la componente principale della penalità di fallimento.
Durante il progetto di una gerarchia di memoria, quattro sono le
domande a cui bisogna
rispondere:
1. Dove si può mettere un blocco che viene portato dal livello
inferiore al livello superiore? (Problema del piazzamento di un 
blocco).
2. Dove si trova il blocco che contiene il dato richiesto?( Problema
della ricerca di un blocco).
3. Quale blocco presente al livello superiore deve essere sostituito
da uno del livello inferiore, in caso di fallimento? (Problema della
sostituzione di un blocco).
4. Cosa succede in caso di scrittura? (Problema della strategia di
scrittura).
Consideriamo innanzitutto il problema del piazzamento di un blocco. In
fase di esecuzione, la CPU può a priori tentare di accedere a una
qualunque parola nello spazio totale di indirizzamento: spazio che può
essere qui visto come corrispondente all’intera memoria RAM (livello
più basso nelle gerarchie della memoria di lavoro), ma che certamente
eccede di gran lunga quello disponibile nella cache di livello
superiore. Occorre quindi definire le possibili modalità per
consentire
ad ogni parola della memoria indirizzabile di trovare (ove necessario)
una posizione della cache in cui possa essere trasferita – in altre
parole, occorre definire una corrispondenza tra l’indirizzo in memoria
della parola e la locazione nella cache. A questo scopo, sono state
definite essenzialmente tre soluzioni diverse:
1. Cache a indirizzamento diretto
2. Cache set-associativa a n vie
3. Cache completamente associativa
1. Cache a indirizzamento diretto
In una cache a indirizzamento diretto (direct mapped), ogni locazione
di memoria corrisponde esattamente a una locazione della cache. Questo
è il metodo meno ottimizzato in quanto 2 blocchi di memoria mappati
sulla stessa locazione di cache non potranno mai esservi presenti
contemporaneamente.
2. Cache completamente associativa
In una cache completamente associativa (fully associative) un blocco
di memoria può essere messo in una qualsiasi posizione della memoria
cache; si vedrà poi come viene creata la corrispondenza fra locazione
della cache e indirizzo in RAM. Poiché il blocco può essere messo in
un
posto qualsiasi della cache, al momento della ricerca tutti i blocchi
della cache dovranno essere esaminati. Questo metodo, sebbene sembri
il
più ottimizzato, è in realtà lento perchè di difficile
implementazione,
e i segnali vengono fortemente rallentati da tutta la logica che
devono
attraversare.
3. Cache set-associativa a n vie
Una cache set-associativa a n vie è costituita da numerosi insiemi
(set), ognuno dei quali comprende n blocchi. Anche la memoria RAM è
vista come organizzata in blocchi: ogni blocco della memoria
corrisponde ad un unico insieme della cache ed il blocco può essere
messo in uno qualsiasi degli n elementi dell’insieme. In altre parole,
in una cache set-associativa a n vie, ogni blocco della memoria può
essere trasferito in un numero prefissato n di posizioni all’interno
di
un insieme.
Si tratta di uno schema intermedio tra quello a indirizzamento diretto
e quello completamente associativo: la corrispondenza blocco di RAM –
insieme avviene con un indirizzamento diretto, mentre tutti i blocchi
nell’insieme vengono poi esaminati per verificare la corrispondenza.
Questo è il metodo migliore perchè bilancia costi, ottimizzazione e
prestazioni.
Problema della ricerca di un blocco.
Poiché ogni elemento della cache può contenere parole memorizzate in
diverse locazioni di memoria, per sapere se una parola di memoria si
trova nella cache bisogna aggiungere nella cache un insieme di
etichette (tag), che contengono le informazioni necessarie per
verificare se una delle parole presenti nella cache corrisponde o meno
alla parola cercata. E' necessario disporre di un metodo per
riconoscere se un blocco della cache contiene informazioni valide: ad
esempio, quando un processore viene acceso la cache è vuota e le
informazioni nelle etichette non hanno nessun significato. Si aggiunge
quindi a ogni elemento della cache un bit di validità (validity bit)
che indicare se l’elemento stesso contiene dei dati validi. Il
validity
bit è ovviamente indipendente dalla particolare filosofia scelta per
il
piazzamento, ed è quindi presente in tutte le soluzioni.
Problema della sostituzione di un blocco.
Quando si verifica un fallimento nell’accesso alla cache, nel caso di
cache a indirizzamento diretto c’è un solo candidato alla
sostituzione:
il problema si risolve quindi immediatamente. In una cache
completamente associativa, invece, bisogna decidere quale blocco
sostituire: ogni blocco è un potenziale candidato per la sostituzione.
Occorre stabilire una politica di sostituzione. Infine, se la cache è
set-associativa, l’insieme interessato è identificato immediatamente
ma
occorre stabilire una politica di sostituzione limitatamente ai
blocchi
compresi nell’insieme. Le principali strategie utilizzate per la
scelta
del blocco da sostituire sono sostanzialmente tre: sostituzione
casuale, sostituzione del blocco usato meno di recente, sostituzione
del tipo "first in first out". Nel caso di sostituzione casuale
(random), la scelta tra i blocchi candidati viene effettuata a caso,
eventualmente utilizzando dei componenti hardware di supporto per
l’identificazione del blocco.
Se la politica è quella del blocco utilizzato meno di recente (Least
Recently Used - LRU), il blocco sostituito è quello che è rimasto
inutilizzato da più lungo tempo. A questo scopo, nei termini più
semplici ad ogni blocco si associano dei contatori verso il basso che
al momento della scrittura nel blocco vengono posti al valore massimo
e
che vengono poi decrementati di un’unità ogni volta che si effettua
una
lettura in un blocco diverso. La sostituzione toccherà quindi il
blocco
associato al contatore col valore più basso. Infine, se la politica
scelta è quella First In First Out (FIFO), il blocco sostituito è
quello utilizzato N accessi precedenti, indipendentemente dal fatto
che
sia stato utilizzato o meno negli ultimi (N-1) accessi.
La selezione casuale ha evidentemente il vantaggio di essere semplice
da realizzare; peraltro, non tiene alcun conto del principio di
località temporale – si rischia di sostituire un blocco che è stato
scritto da poco e cui si tenterà ben presto di accedere nuovamente. Al
crescere del numero di blocchi di cui bisogna tenere traccia,
peraltro,
la politica LRU (che è basata proprio sul principio di località
temporale) diventa sempre più costosa; in pratica, si ricorre a
qualche
semplice approssimazione. Val la pena di notare che in una cache
setassociativa a 2 vie, la sostituzione a caso ha una frequenza dei
fallimenti pari a circa 1.1 volte quella ottenuta utilizzando la
politica LRU. Al crescere delle dimensioni della cache, la frequenza
dei fallimenti diminuisce per entrambe le strategie e la differenza in
termini assoluti diventa minima. Il vantaggio della sostituzione LRU
aumenta al crescere del grado di associatività, ma in tal caso è anche
più difficile da realizzare.
Problema della strategia di scrittura.
Il problema nasce dalla necessità che – quando si deve scrivere il
risultato di un’operazione – si vuole certamente che anche
l’istruzione
di scrittura sia eseguita velocemente (e quindi accedendo alla cache),
ma si vuole anche che l’informazione contenuta – in qualsiuasi istante
– nella cache sia consistente con quella contenuta nella RAM. Le
possibili strategie per la gestione delle scritture sono write through
e write-back.
Nell’approccio write-through, quando si esegue un’istruzione di
scrittura l’informazione viene scritta simultaneamente nel blocco
della
cache e nel blocco della memoria principale. La coerenza è quindi
sempre rispettata, a prezzo però di un maggior tempo richiesto da ogni
operazione di scrittura. Nella soluzione write-back (o copy back),
invece, al momento dell’esecuzione dell’istruzione l’informazione
viene
scritta solo nel blocco della cache. Il blocco modificato viene
scritto
nel livello inferiore della gerarchia solo quando se ne decide la
sostituzione. Al termine della istruzione di scrittura nella cache,
quindi, la memoria RAM conterrà un valore diverso da quello presente
nella cache; in questo caso si dice che la memoria e la cache sono
inconsistenti (cioè non sono coerenti): il blocco della cache può
essere clean (unmodified) se non ci sono state scritture, oppure dirty
(modified) se sono state effettuate scritture.
Poiché le prestazioni delle CPU continuano ad aumentare con un tasso
di crescita superiore a quello delle memorie principali basate su
DRAM,
la frequenza con cui vengono generate le scritture da parte del
processore sarà ben presto superiore a quella gestibile dal sistema di
memoria, anche in presenza di memoria più grandi sia in termini fisici
che in termini logici; è quindi ragionevole prevedere che in futuro
verrà utilizzata sempre più la strategia write-back. Fra l’altro,
ancora il principio di località porta a prevedere che se l’operazione
di scrittura ha interessato un particolare blocco di cache, la
probabilità che nuove scritture interessino lo stesso blocco è alta –
è
quindi probabile che ci siano state numerose modifiche del blocco di
cache prima che questo venga sotituito e che si ricorra al write-back.
-- 
try: troll = "Brain"
except TypeError, data: 
   troll.plonk()
Co-Responsabile Hardware Information & Technology 
http://hit.edengames.net

sfruttarne tutte le caratteristiche.
corretta in:
-Quali OS supportano x86-64?
Attualmente  Linux e  FreeBSD  supportano  appieno l'archiettura
x86-64,
mentre  e`  previsto   entro  breve  tempo  il  supporto   da  parte
di
NetBSD.  Anche  Apple, con  il suo  MacOS X,  ha mostrato  interesse
per
questa  tecnologia, ma,  la  momento  della stesura  di  queste FAQ
non
sono  disponibili  informazioni  certe. Anche Microsoft ha annunciato
in 
via ufficiale il supporto per questa tecnologia con la famiglia
Windows .NET.
Ovviamente  tutti   gli  OS  che  oggi  girano sui  processori x86-32
potranno  girare anche  su  x86-64, senza  pero` sfruttarne tutte le 
caratteristiche.


 
Un po' confuso, e senza dubbio hai dato in seguito una definizione
migliore di risc...perche' allora questa risposta???
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

migliore di risc...perche' allora questa risposta???
E' stata presa da un libro. Non l'ho scritta io questa oltretutto...
Xelloss???!?!?


 Xelloss???!?!?
Infatti è molto nebulosa... non so nemmeno perché sia rimasta... tra l'altro
lì fa riferimento agli high-level-language che hanno poco a che fare con i
CISC...
Il problema comunque è che condensare la diatriba RISC/CISC in poche righe è
parecchio difficile... ci darò presto un'occhiata...
Saluti.
--
//  Xelloss dal portatile || in real life: Wilmer Ricciotti  \\
|  
wirix...@libero.it
 (elimina il demone per rispondermi)  |
|    ICQ: 3233084        IRC: Xelloss@AzzurraNet, @ChatNow    |
| Hardware Information & Technology: 
http://hit.edengames.net
 |
\_______Like the Phoenix I rise from the ashes of life________/

 applicata.
Non è vero, la velocità di propagazione di un segnale elettrico è costante,
ed indipendente dalla tensione.
E' pari a circa 2/3 tella velocità della luce.
Non esiste modo, per un overclocker, di variare la velocità di propagazione
di uin segnale elerttrico.
Piuttosto aumentando Vcore, si aumenta la corrente che passa nei transistor,
e quindi si caricano/scaricano prima le capacità partassite, e quindi si
ottengono dei transistor più veloci.
Informazioni gentilmente fornite da un mio amico Ing. elettronico :-)
Ciao, Max

 
Per la verita' la velocita' di propagazione delle cariche nel silicio
dipende dalla mobilita' di queste ultime, determinata dalla temperatura,
oltre che da altri fattori...
In sostanza, la velocita' di propagazione di un segnale elettrico
dipende dal mezzo in cui si propaga!


 dipende dal mezzo in cui si propaga!
Hai ragione, ho scordato di dire che i dati che mi ha passato il mio amico
fi riferivano ad un flusso di corrente in una resistenza.
Tuttavia volevo sottolineare che la velocità di propagazione NON dipende
dalla vensione di alimentazione; e che sono altri i motivi per ciu
aumentando Vcore la CPU si può tirare di più.
Ciao, Max
.
.
.
.
.
.
.
.
.

ottengono dei transistor più veloci.
Già, inoltre aumenta la distanza tra l' "1" logico (solitamente VCC) e
lo "0" logico (solitamente GND; in alcuni casi sono invertiti), quindi
anche se c'è del rumore è + difficile che i segnali si corrompano...
-- 
ZHELGADIS THE LIGHTBRINGER (ICQ 33134824)
Tessera #008 BAG, #000 DPPSJ, #013 BAT, #012 TFC
"Il Grande Fratello? Non lo farei mai vedere ai miei figli."
(Giovanni Modina, direttore di Canale 5)