PDA

View Full Version : domande su architettura ia-32(e)


Python
09-09-2005, 16:54
ciao
in questi giorni mi sto cimentando nella lettura dei manuali intel
complice anche il mio inglese non certo perfetto non ho chiare molte cose fondamentali, ho provato a rileggere più volte ma non ne vengo a capo

se riuscite a rispondermi mi chiarite molto la situazione e ve ne sono grato

1) physical address space e linear address space
io innanzitutto vorrei capire cosa sono le due cose, se si riferiscono alla ram, alla ram + memoria virtuale o a che altro
e perchè nell'ia32 è 2^36 la prima e 2^32 l'altra e nell'ia32e è a 2^64
e nel caso si riferisse alla ram (a che altro si dovrebbe riferire???) a che serve questo enorme aumento di memoria con i 64 bit se non esiste tanta ram in un'unica configurazione?

2) mi potete chiarire meglio cosa sono fisicamente i registri? delle memorie per memorizzare i dati in processo?

3) protected mode vs smm (ia32)
la descrizione del protected mode mi fa pensare che gli os principali usino questa modalità
però poi la descrizione dell'smm (che cmq dal nome stesso, system management mode, non sembrerebbe una cosa da usare normalmente ma solo in rari casi) che dice che implementa funzioni di power management e system security mi fa riflettere
un os come windows o linux quale delle due usano?
applicativi che girano sotto questi os possono cambiare questi due stati?

4) cap 2.2.2.2
che cavolo sono sti ùops??? :)

5) nell'hyper threading in pratica in ogni processore c'è una sola unità di esecuzione (quindi alu ed fpu, o no?) ma ci sono due set di registri per ogni tipo e si tratta solo di fare arrivare in modo più veloce i dati da elaborare alla execution engine, però alla fine la velocità di esecuzione è sempre quella perchè sempre uno è l'execution engine

se mi ricordo qualche altra domanda che mi ero posto la aggiungo in seguito

non ho mai studiato niente di architetture in modo serio (e si vede) quindi se ritenete le mie domande troppo stupide, beh fate come volete :)

cionci
09-09-2005, 19:42
1) physical address space e linear address space
io innanzitutto vorrei capire cosa sono le due cose, se si riferiscono alla ram, alla ram + memoria virtuale o a che altro
e perchè nell'ia32 è 2^36 la prima e 2^32 l'altra e nell'ia32e è a 2^64

Si intende proprio della memoria... Il linear address space è la memoria vista da un programma (non necessariamente tutto può essere nella ram, ma anche nella memoria virtuale)...
Il physical address space è la Ram massima fisicamente accessibile tramite le linee di indirizzo che escono dalla CPU (per le CPU non compatibili con i 64 bit si utilizzava una modalità molto complessa chiamata PAE per superare il limite dei 4Gb imposto dalle istruzioni a 32bit)...

e nel caso si riferisse alla ram (a che altro si dovrebbe riferire???) a che serve questo enorme aumento di memoria con i 64 bit se non esiste tanta ram in un'unica configurazione?

Come dicevo non necessariamente tutti i dati sono residenti in ram... E' chiaramente impossibile avere un sistema con 2^64 byte di Ram...per questo l'estensione del bus indirizzi è limitata a 36 bit: 64 Gbyte
Addirittura gli AMD mi sembra che abbiano un physical address space di 2^40 byte, cioè 1 TByte...
Chiaramente in un PC desktop rarametne si va oltre 2 Gb...ma in futuro probabilmente avremo necessità di superare i 4 Gb ed a quel punto saremmo obbligati ad usare CPU a 64 bit...
Chiaramente quando progettano una CPU sovradimensionano la capacità di indirizzamento, per questo hanno puntato a cifre così alte...
Poi se ci pensi non sono affatto alte quelle Intel....pensa ad un sistema server: 4 CPU Xeon...16 slot dimm con 4 Gb ciascuno sono 64 Gb...
Con AMD si può anche andare oltre: 8 CPU Opteron, 4 slot di memoria a processore, 32 slot dimm con 4 Gb ciascuno sono 128 Gb...

2) mi potete chiarire meglio cosa sono fisicamente i registri? delle memorie per memorizzare i dati in processo?

I registri sono celle di memoria molto veloci all'interno della CPU...
Ogni unità della CPU ha una serie di registri: ALU, FPU, SSE
Poi fisicamente sono flip-flop...ed i flip-fop sono transistor MOS...

3) protected mode vs smm (ia32)
la descrizione del protected mode mi fa pensare che gli os principali usino questa modalità

Sì è questa...

però poi la descrizione dell'smm (che cmq dal nome stesso, system management mode, non sembrerebbe una cosa da usare normalmente ma solo in rari casi) che dice che implementa funzioni di power management e system security mi fa riflettere

Suppongo che sia una modalità che permette di accedere a parametri di funzionamento interno della CPU...

4) cap 2.2.2.2
che cavolo sono sti ùops??? :)

Micro-ops o Micro-istruzioni...sono le componenti base di ogni istruzione...
Ogni istruzione assembly è composta da micro-ops o micro-operazioni che identificano le varie operazioni che devono essere svolte delle unità della CPU per ottenere quella istruzione assembly...

5) nell'hyper threading in pratica in ogni processore c'è una sola unità di esecuzione (quindi alu ed fpu, o no?) ma ci sono due set di registri per ogni tipo e si tratta solo di fare arrivare in modo più veloce i dati da elaborare alla execution engine, però alla fine la velocità di esecuzione è sempre quella perchè sempre uno è l'execution engine

Non c'è una sola unità di esecuzione perchè, ad esempio, nel P4 le ALU sono 3...due generiche che funzionano al doppio della frequenza della CPU ed un lenta che esegue solo certe istruzioni poco usate... Per l'FPU non ricordo...
Comunque ci sono TOT unità di calcolo... Per ottmizzare lutilizzo delle unità di calcolo (ad esempio solitamente un programma che fa uso di floating point raramente usa la ALU che risulterebbe inutilizzata) si vanno mescolare istruzioni di thread diversi (ogni thread ha uno stato interno della CPU indipendente dall'altro)...

71104
09-09-2005, 19:54
premettendo che non conosco l'architettura a 64 bit:
1) physical address space e linear address space
io innanzitutto vorrei capire cosa sono le due cose, se si riferiscono alla ram, alla ram + memoria virtuale o a che altro in effetti anche io ho l'impressione che si faccia un po' di confusione tra indirizzi lineari, fisici e virtuali; diciamo che sono termini che si usano in contesti diversi.
un indirizzo fisico è un numero (da 32 bit) che identifica un byte nella RAM fisica; poi secondo me un indirizzo virtuale è un indirizzo che diventerà fisico dopo essere stato processato dai meccanismi di segmentazione e paging, mentre un indirizzo lineare dovrà subire solo il paging.

e perchè nell'ia32 è 2^36 la prima e 2^32 l'altra e nell'ia32e è a 2^64
e nel caso si riferisse alla ram (a che altro si dovrebbe riferire???) a che serve questo enorme aumento di memoria con i 64 bit se non esiste tanta ram in un'unica configurazione? nella IA32 il numero massimo di locazioni è 2^32 oppure 2^36 in una certa modalità che estende la memoria indirizzabile a (mi pare) 64 giga; non so se questa modalità ha nulla a che fare con le AWE di Windows...
poi dell'architettura a 64 bit non ne so nulla...

2) mi potete chiarire meglio cosa sono fisicamente i registri? delle memorie per memorizzare i dati in processo? si; sono solo piccoli insiemi di bit, solitamente 32 ma ce ne sono anche di 16 e 64.

3) protected mode vs smm (ia32)
la descrizione del protected mode mi fa pensare che gli os principali usino questa modalità precisamente

però poi la descrizione dell'smm (che cmq dal nome stesso, system management mode, non sembrerebbe una cosa da usare normalmente ma solo in rari casi) che dice che implementa funzioni di power management e system security mi fa riflettere
un os come windows o linux quale delle due usano? entrambe: un moderno SO switcha a SMM quando l'utente ad esempio richiede lo standby, ma normalmente funziona in modalità protetta.

applicativi che girano sotto questi os possono cambiare questi due stati? no, un'applicazione non può accedere ai registri di controllo ed entrare in SMM; se lo fa salta fuori la Privileged Instruction e il sistema operativo termina l'applicazione :p
a meno che essa non sia in grado di gestire l'eccezione ovviamente.

4) cap 2.2.2.2
che cavolo sono sti ùops??? :) microopcodes suppongo; gli opcode del microcodice (il firmware del chip).
un microopcode è un numero binario in cui ciascun bit rappresenta lo stato di una linea di controllo della CPU; eseguire un microopcode per la CPU significa abilitare determinate vie di gating dall'unità di controllo in maniera tale da far passare le informazioni in determinato modo (ad es. da un certo registro ad un altro). in molte architetture i microopcodes contengono anche dei bit aggiuntivi che codificano i flag da controllare per effettuare un eventuale salto condizionato ad un altro microopcode.

5) cut non conosco l'hyperthreading :D :p

non ho mai studiato niente di architetture in modo serio (e si vede) quindi se ritenete le mie domande troppo stupide, beh fate come volete :) niente affatto; sono domande lecite, soprattutto la prima, sulla quale ho avuto forti dubbi anche io (ti ripeto: secondo me su quei tipi di indirizzi si fa confusione...)

ciao

71104
09-09-2005, 19:55
ma perché ultimamente vengo sempre preceduto? :mbe:

Python
10-09-2005, 12:47
tnx per le risposte :)