Precedente :: Successivo |
Autore |
Messaggio |
origin2000 Mortale pio

Registrato: 21/07/08 07:55 Messaggi: 15
|
Inviato: 21 Lug 2008 13:53 Oggetto: * Sistemi operativi a 32 e 64 bit |
|
|
L'attuale architettura delle cpu intel, permette l'esecuzione di applicazioni a 64 bit. Ma sono davvero sempre utili? Premetto che mi riferisco soprattutto all'accelerazione di applicazioni e/o creazione di applicazioni per hard realtime e calcolo scientifico. |
|
Top |
|
 |
origin2000 Mortale pio

Registrato: 21/07/08 07:55 Messaggi: 15
|
Inviato: 21 Lug 2008 14:19 Oggetto: Paragone tra architetture |
|
|
Vorrei mettere in evidenza le differenze architetturali tra architettura x86-64 intel, x86-64 amd e architettura PowerPC.
Tali architetture a 64 bit sono quelle maggiormente diffuse fra i comuni mortali, dati i costi contenuti.
Allora, le architetture intel e amd sfruttano un analogo set di istruzioni ed un analogo set di registri, per il calcolo a 64 bit, mentre fa tutta una categoria a se' il PowerPC.
Poiche' fra intel ed amd, per quanto riguarda il set di istruzioni ed i registri, c'e' piena compatibilita', le differenze prestazionali sono da rilevarsi nella diversa implementazione dei microprogrammi associati alle singole istruzioni e solo in conseguenza di cio', dai diversi tipi e dimensioni di cache e da altri fattori subarchitetturali che esulano dal tema in questione. Trattero' pertanto di queste due architetture, assimilandole all'etichetta "architettura x86-64".
Per PowerPC, intendo i modelli PowerPC 970, PowerPC 970fx, PowerPC 970mp, POWER IV e POWER IV+, poiche' utilizzano tutti la stessa architettura, ad eccezione delle cpu POWER, ben piu' fornite di cache L2 ed L3, ma prive di unita' di esecuzione AltiVec.
Fatte queste precisazioni d'obbligo, analizziamo le differenze architetturali.
L'architettura x86-64 presenta un suo set di istruzioni capace di interagire con dei particolari registri, 15 per l'esattezza, da 64 bit ciascuno.
L'architettura POWER invece possiede di norma dai 24 ai 36 registri macchina, tutti a 64 bit, piu' registri aggiuntivi per l'addressing della memoria a ben 256 bit ed un'istruzione che e' in grado di modificare il valore massimo di memoria indirizzabile (32 / 64 / 128 / 256 bit) su un apposito flag della cpu.
Le cpu POWER sono in grado di eseguire indipendentemente istruzioni a 32 o 64 bit, con una granularita' di esecuzione all'istruzione. Questo significa che e' possibile utilizzare in modo misto istruzioni a 32 bit ed istruzioni a 64 bit. Tale metodo operazionale permette un'estrema ottimizzazione delle risorse macchina, ma tuttavia e' accessibile con la sola programmazione assembly. Per quanto riguarda i compilati, possiamo scegliere se compilare a 32 o 64 bit, ma tutto il programma in blocco. Partendo dai compilati, essi possono funzionare, seppure a 64 bit, sia su OS con kernel a 32 bit, sia su OS a 64 bit come e' ovvio che sia. Questa caratteristica ha permesso alla Apple di pubblicizzare i suoi PowerMac come macchine funzionanti a 64 bit effettivi, nonostante il MacOS X Tiger fosse una compilazione a 32 bit. Non solo, su un articolo, mettevano le mani avanti dicendo che l'utilizzo dei 64 bit non era indicato per scriverci un kernel etc ... perche' qualcuno aveva notato questa peculiarita'.
Le cpu intel sono in grado di eseguire contemporaneamente codice macchina a 32 o 64 bit se e solo se il BIOS o l'EFI ne sono a conoscenza. Diversamente non sara' possibile questa doppia modalita' di esecuzione, sfociando in un'impossibilita' per le macchine con OS a 32 bit a non poter eseguire applicazioni a 64 bit e viceversa. Tuttavia negli OS a 64 bit hanno implementato un'emulazione del set di istruzioni a 32 bit e questo ha reso possibile estendere la compatibilita', a danno delle prestazioni, ad un maggior numero di software, senza che ci fosse una impellente necessita' di ricompilarlo (che talvolta significa anche riscriverlo) a 64 bit.
Il problema dell'emulazione dei 32 bit e' particolarmente sentito nei campi di utilizzo professionale dei PC, quali grafica, fotoritocco, rendering, CAD meccanico etc, poiche' la scheda grafica in questi casi non puo' sopperire alla carenza di velocita' nell'emulazione del codice x86.
A questo punto della storia, torno sui miei passi, chiedendovi se effettivamente avete avuto dei benefici nell'utilizzo dei 64 bits. |
|
Top |
|
 |
cdimauro Semidio

Registrato: 24/09/07 09:37 Messaggi: 268
|
Inviato: 21 Lug 2008 14:44 Oggetto: |
|
|
Ti rispondo stasera appena ho un po' di tempo, visto che la risposta me ne richiede un po' a causa del numero di (sotto)argomenti trattati.
Intanto ti anticipo la risposta alla tua domanda: SI'.  |
|
Top |
|
 |
origin2000 Mortale pio

Registrato: 21/07/08 07:55 Messaggi: 15
|
Inviato: 21 Lug 2008 14:49 Oggetto: |
|
|
Beh mi piace la critica quando e' costruttiva. E' il metodo che prediligo per imparare  |
|
Top |
|
 |
cdimauro Semidio

Registrato: 24/09/07 09:37 Messaggi: 268
|
Inviato: 21 Lug 2008 22:05 Oggetto: Re: Sistemi operativi a 32 e 64 bit |
|
|
Rieccomi.
origin2000 ha scritto: | L'attuale architettura delle cpu intel, permette l'esecuzione di applicazioni a 64 bit. Ma sono davvero sempre utili? Premetto che mi riferisco soprattutto all'accelerazione di applicazioni e/o creazione di applicazioni per hard realtime e calcolo scientifico. |
In generale l'architettura AMD64 (conosciuta anche come x86-64) permette di ottenere un miglioramento delle prestazioni che è stimato mediamente sul 15-20% rispetto alle medesime applicazioni, ma in versione a 32 bit. Fonte: AMD.
A maggior ragione con applicazioni di calcolo scientifico, che mostrano andamenti che superano queste stime.
origin2000 ha scritto: | Vorrei mettere in evidenza le differenze architetturali tra architettura x86-64 intel, x86-64 amd e architettura PowerPC.
Tali architetture a 64 bit sono quelle maggiormente diffuse fra i comuni mortali, dati i costi contenuti.
Allora, le architetture intel e amd sfruttano un analogo set di istruzioni ed un analogo set di registri, per il calcolo a 64 bit, mentre fa tutta una categoria a se' il PowerPC. |
Certamente: l'ISA è "condivisa" nei primi due casi (AMD64), mentre è completamente diversa nell'ultimo.
Citazione: | Poiche' fra intel ed amd, per quanto riguarda il set di istruzioni ed i registri, c'e' piena compatibilita', le differenze prestazionali sono da rilevarsi nella diversa implementazione dei microprogrammi associati alle singole istruzioni e solo in conseguenza di cio', dai diversi tipi e dimensioni di cache e da altri fattori subarchitetturali che esulano dal tema in questione. Trattero' pertanto di queste due architetture, assimilandole all'etichetta "architettura x86-64". |
Corretto.
Citazione: | Per PowerPC, intendo i modelli PowerPC 970, PowerPC 970fx, PowerPC 970mp, POWER IV e POWER IV+, poiche' utilizzano tutti la stessa architettura, ad eccezione delle cpu POWER, ben piu' fornite di cache L2 ed L3, ma prive di unita' di esecuzione AltiVec. |
La cache L2 del POWER 4 è la stessa del PPC970: 512KB.
Citazione: | Fatte queste precisazioni d'obbligo, analizziamo le differenze architetturali.
L'architettura x86-64 presenta un suo set di istruzioni capace di interagire con dei particolari registri, 15 per l'esattezza, da 64 bit ciascuno. |
Sono 16 a 64 bit.
Citazione: | L'architettura POWER invece possiede di norma dai 24 ai 36 registri macchina, tutti a 64 bit, piu' registri aggiuntivi per l'addressing della memoria a ben 256 bit ed un'istruzione che e' in grado di modificare il valore massimo di memoria indirizzabile (32 / 64 / 128 / 256 bit) su un apposito flag della cpu. |
Non mi risulta proprio. Direttamente dal sito sito di IBM: http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/F7E732FF811F783187256FDD004D3797/$file/pem_64bit_v3.0.2005jul15.pdf
La capacità d'indirizzamento è di 32 bit per le CPU a 32 bit, e di 64 bit (virtuali; per gli indirizzi fisici cambia a seconda del modello) per quelle a 64 bit.
A parte questo, i registri sono 32 a 64 bit.
Sia i PPC/POWER che gli AMD64 hanno ovviamente diversi registri addizionali, utilizzabili in user o supervisor mode.
Citazione: | Le cpu POWER sono in grado di eseguire indipendentemente istruzioni a 32 o 64 bit, con una granularita' di esecuzione all'istruzione. Questo significa che e' possibile utilizzare in modo misto istruzioni a 32 bit ed istruzioni a 64 bit. Tale metodo operazionale permette un'estrema ottimizzazione delle risorse macchina, ma tuttavia e' accessibile con la sola programmazione assembly. |
Lo stesso vale per gli AMD64. Inoltre in entrambi i casi si possono utilizzare istruzioni a 64, 32, 16 e 8 bit.
Citazione: | Per quanto riguarda i compilati, possiamo scegliere se compilare a 32 o 64 bit, ma tutto il programma in blocco. |
No, sui PPC (e mi riferisco a Mac OS X in particolare) è possibile compilare i programmi suddividendo le risorse dati dal codice, e il codice può essere presente in versione a 32 e 64 bit in risorse separate.
Vengono chiamati fat-binary.
Citazione: | Partendo dai compilati, essi possono funzionare, seppure a 64 bit, sia su OS con kernel a 32 bit, sia su OS a 64 bit come e' ovvio che sia. |
Questo a condizione che il kernel a 32 bit abbia comunque un supporto minimo ai processi a 64 bit.
Citazione: | Questa caratteristica ha permesso alla Apple di pubblicizzare i suoi PowerMac come macchine funzionanti a 64 bit effettivi, nonostante il MacOS X Tiger fosse una compilazione a 32 bit. |
No, Tiger ha del codice aggiuntivo per gestire anche i processi a 64 bit. Altrimenti non funzionebbero.
Comunque Apple ha imbrogliato la gente perché spacciava le sue macchine come 64 bit, ma col s.o. quasi interamente a 32 bit, fatta eccezione per una piccola parte del kernel (vedi sopra) e alcune librerie.
Applicazioni a 64 bit vere e proprie non ne esistevano: serviva sempre un'applicazione a 32 bit "di appoggio" che offrisse un'interfaccia col resto del s.o..
Il codice a 64 bit era relegato a parti di codice richiamabili, tra l'altro, con delle lente operazioni di Remote Procedure Call.
Praticamente l'eventuale memoria oltre i 4GB veniva usata più che altro per la cache dei dati su disco.
Citazione: | Non solo, su un articolo, mettevano le mani avanti dicendo che l'utilizzo dei 64 bit non era indicato per scriverci un kernel etc ... perche' qualcuno aveva notato questa peculiarita'. |
Mi pare una motivazione senza senso: da decenni sono disponibili architetture a 64 bit coi loro s.o. a 64 bit.
Citazione: | Le cpu intel sono in grado di eseguire contemporaneamente codice macchina a 32 o 64 bit se e solo se il BIOS o l'EFI ne sono a conoscenza. |
No: è sufficiente controllare cosa viene ritornato dall'istruzione CPUID e verificare che l'apposito flag sia presente.
Ecco qui: http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/25481.pdf
In particolare: CPUID Fn8000_0001_EDX Feature Identifiers
29 LM: long mode. See “Processor Initialization and Long-Mode Activation” in APM2.
Questo è il flag che lo indica.
Citazione: | Diversamente non sara' possibile questa doppia modalita' di esecuzione, sfociando in un'impossibilita' per le macchine con OS a 32 bit a non poter eseguire applicazioni a 64 bit e viceversa. |
I kernel a 32 bit non possono mai eseguire applicazioni a 64 bit. Vedi sopra anche per Tiger.
Se il kernel non supporta specificamente i processi a 64 bit, è impossibile farli eseguire perché si perderebbe quanto meno la parte alta di ogni registro. Serve ALMENO eseguire il backup e il restore dello stato del processore durante un context-switch.
Citazione: | Tuttavia negli OS a 64 bit hanno implementato un'emulazione del set di istruzioni a 32 bit e questo ha reso possibile estendere la compatibilita', a danno delle prestazioni, ad un maggior numero di software, senza che ci fosse una impellente necessita' di ricompilarlo (che talvolta significa anche riscriverlo) a 64 bit.
Il problema dell'emulazione dei 32 bit e' particolarmente sentito nei campi di utilizzo professionale dei PC, quali grafica, fotoritocco, rendering, CAD meccanico etc, poiche' la scheda grafica in questi casi non puo' sopperire alla carenza di velocita' nell'emulazione del codice x86. |
Quello che hai descritto si applica soltanto alla famiglia Power/PC. Vedi qui http://www.ibm.com/developerworks/library/pa-microdesign/ alla voce "Evolution and compatibility", di cui ti riporto un pezzo significativo:
"Compatibility through emulation requires the translation of the 32-bit application instructions on the fly, incurring substantial processing overhead and resulting in sub-optimal 32-bit performance."
Tutto ciò non si verifica con AMD64, dove l'esecuzione di codice a 32 bit all'interno di un s.o. a 64 bit avviene praticamente alla stessa velocità.
Questo perché WOW64 fa un ottimo lavoro di traslazione delle chiamate da 32 a 64 bit e viceversa. Infatti l'esecuzione di codice a 64 bit è, come dicevo prima, mediamente più veloce, per cui se un'applicazione a 32 bit esegue una chiamata al s.o. a 64 bit, mediamente ne trarrà giovamento.
Lo stesso non si può dire per le architetture Power, in quanto passando da 32 a 64 bit l'unica sostanziale differenza è il raddoppio della dimensione dei registri, e questo comporta, anzi, una penalizzazione in qaunto i puntatori occupano il doppio dello spazio e, quindi, anche un raddoppio del consumo di banda per leggerli e scriverli.
Questo, sia chiaro, si verifica anche passando dall'architettura x86 (a 32 bit) a quella AMD64, ma tale penalizzazione è ampiamente ammortizzata e, anzi, brillantemente superata grazie al fatto che l'ISA ha subito anche altri notevoli mutamenti.
Mi riferisco in particolare al raddoppio dei registri GPR, passati da 8 a 16, e idem per quelli SSE. A parte questo, è praticamente sparita la segmentazione e l'intero spazio d'indirizzamento è quindi lineare e paginato, il che ha permesso di ridurre i tempi di traslazione degli indirizzi virtuali in indirizzi fisici.
Citazione: | A questo punto della storia, torno sui miei passi, chiedendovi se effettivamente avete avuto dei benefici nell'utilizzo dei 64 bits. |
Ribadisco il precedente sì. Questo lo puoi vedere con diversi benchmark che confrontano le stesse applicazioni, ma che girano a 32 o a 64 bit: 7-Zip, MySQL, POVRay, WinRAR, Paint.NET, ecc. ecc. presentano incrementi prestazionali che arrivano anche al 50%.
Fra qualche mese verrà presentato anche PhotoShop CS4 a 64 bit, e anche in questo caso si prevedono aumenti prestazionali, quantificati al momento nell'ordine del 15%, se non ricordo male.
Quindi i vantaggi ci sono con le architetture a 64 bit, ma soltanto per AMD64.
Spero che sia tutto chiaro.  |
|
Top |
|
 |
origin2000 Mortale pio

Registrato: 21/07/08 07:55 Messaggi: 15
|
Inviato: 22 Lug 2008 02:16 Oggetto: |
|
|
Forte e chiaro. Non mi sono preso la briga di controllare le documentazioni come hai fatto tu, ma questo e' ottimo. Mi insegna molto. Grazie, e' sempre un piacere discutere con te
Cmq sia, io ho installato vista 64 e vista 32 su due diverse macchine, pari hardware.
Sulla prima, photoshop cs3 va a scatti
Sulla seconda, ci va liscio, come su XP piu' o meno.
Ho fatto una semplice deduzione di tutto il processo, ma mi hai messo di fronte al fatto che non sia cosi' e questo e' un fatto estremamente positivo.
inoltre, ulteriori deduzioni per il resto, piu' una piccola base teorica da documentazione ufficiale, studiata anni fa e mai usata, mi scuso per il mio pressapochismo, ma purtroppo sono convinto che per sapere l'informatica la devi usare, non basta studiarsela.
Cmq, si' alla grande! sono contento di questa discussione e di trovare gente con cui ho dialogo e da cui posso imparare.
Grazie ancora  |
|
Top |
|
 |
cdimauro Semidio

Registrato: 24/09/07 09:37 Messaggi: 268
|
Inviato: 22 Lug 2008 08:57 Oggetto: |
|
|
Ti ringrazio per i complimenti.
Per quanto riguarda il comportamento di PhotoShop, credo sia dovuto a qualche incompatibilità con Vista. Qualcosa di simile è capitato anche a un mio amico con Fireworks CS 3.
Questo però non inficia le prestazioni dell'applicazione. Se fai qualche benchmark con Vista x86 e x64 noterai che i tempi di elaborazione sono praticamente gli stessi.  |
|
Top |
|
 |
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|