Newsgroup: it.comp.hardware.cpu
Titolo: [SEMI OT] Esiste il sito del NG?

Ciao a tutti,
Essite il sito del NG?
Ciao e Grazie
Aragorn
--
FAQ non ufficiali K7S5A:
http://www.holyword.it/aragorn/ecs_faq.htm

Essite il sito del NG?
No, ma una volta (se ti possono essere d'aiuto) c'era una draft delle
FAQ che probabilmente Dialtone ha
-- 
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com
rhy...@NOSPAMmyself.com

 FAQ che probabilmente Dialtone ha
Eccole qua, sarebbero da aggiornare pero` perche` risalgono al 16 giugno
dello scorso anno e ormai hanno 1 anno...
- 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 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.
- 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.uses(Brain)
except TypeError, data: 
   troll.plonk()
Co-Responsabile Hardware Information & Technology 
http://hit.edengames.net

 dello scorso anno e ormai hanno 1 anno...
Ciao, ancora non le ho lette, pero' siccome stiamo buttando giu' delle
FAQ anche per ich.overclock volevo sapere se potevamo copiare qualche
domanda/risposta fatta da Voi, che magari puo' interessare anche
l'overclock. Premetto che non le ho ancora lette, quindi non so se ci
sono dei contenuti utili anche per icho.
Grazie :D
-- 
Ciao da un Freccia@BladeRunner ;-)

 sono dei contenuti utili anche per icho.
Altroche` se c'e`... Ci sono un po` di domande sull'OC.  Ti do il permesso
di prenderle anche in toto, a patto che quando le usate/postate ci sia
scritto che sono redatte da entrambi i NG e ovviamente che una delle FAQ
sia postata anche qua.
Non mi sembra di chiedere troppo no? :)


 Non mi sembra di chiedere troppo no? :)
Assolutamente, cmq ora gli do' una lettura :D
Grazie ancora :D


 Grazie ancora :D
Ringrazia il NG, molti hanno contribuito
