riko ha scritto:Sarà che inizio a pensare da ingegnere ma un rendimento pari a 0,5 (anzi anche meno visto che i mac intel sono più veloci) non mi pare assolutamente eccezionale ma solo nella norma.
Essere nella norma rispetto a cosa? Prima di rosetta, era considerato bene un emulatore che se la cavasse con un fattore *10* (ovvero un rendimento del 10%, per come la dicevi tu).
Di meglio non si sapeva fare. Se non in casi speciali (macchine molto potenti o appositamente studiate per virtualizzare et similia -- leggi i mainframe ).
Quindi come emulatore è assolutamente eccezionale. A meno che tu non riesca a trovare di meglio, ma io non sono a conoscenza [ a parte quelli sul cui codice rosetta è basato che saranno immagino comparabili, postai qua il link dei produttori ].
Uhm, mi permetto di precisare questa cosa qui. Vi sono due approcci all'emulazione della CPU: quello classico (statico o interpretive) ed uno "nuovo" ma non troppo, diventato praticabile grazie alla diminuzione dei costi della RAM (JIT o dinamico).
Gli emulatori statici "traducono" istruzione per istruzione il codice eseguibile non nativo. Per questo sono lenti, perche' devono eseguire una traduzione per ogni opcode, e devono gestire un'emulazione anche dei flag della CPU per poter effettuare i salti condizionati. Si tratta in pratica di interpreti (interpretive, appunto).
Gli emulatori JIT, o dinamici, "traducono" il codice al momento del caricamento (introducendo un ritardo, tanto piu' impercettibile, tanto piu' potenti sono le CPU in gioco, che ormai traducono mega di codice in decimi di secondo...), e da li in poi eseguono il risultato della traduzione come se fosse codice nativo (perche' e' codice nativo....). Naturalmente le ottimizzazioni effettuate al volo sono molto minori di quelle attuate da un compilatore e questo, unito ad un approccio "prudente" per garantire la massima compatibilita' - non vengono prese tutte le scorciatoie possibili, insomma - giustifica comunque una certa perdita di prestazioni. Dovendo tenere in memoria le aprti di codice tradotto per futuri riutilizzi, ed essendo il risultato delle traduzioni in genere meno compatto, ecco spiegato il motivo delle richieste di RAM degli emulatori JIT (che, a proposito, significa Just in Time).
Premessa questa pappardella, prestazioni pari al 5-10% del codice nativo sono normali per emulatori interpretive, prestazioni pari al 40-60% del codice nativo sono normali per emulatori JIT. Rosetta e' un emulatore JIT, pertanto e' giusto affermare che quelle sono le prestazioni attese. Cio' che e' importante piuttosto, e' la robustezza, e non ho dubbio che Apple ci stia lavorando da molto.
Tutto cio' mi e' noto per via della mia passione amighista: noi abbiamo 4 emulatori JIT di 68k (UAE x86, Amithlon, Trance di MorphOS e Petunia di AmigaOS4), oltre a una pletora di emulatori interpretive (tutte le altre versioni di UAE, il vecchio emulatore di MorphOS, quello di AmigaOS4...). Per fare un confronto si pensi all'emulatore 68k che c'era sul Mac all'epoca della migrazione su PPC, che era interpretive, e aveva prestazioni quasi infime. Oggi MorphOS su un vecchio 603e a 175MHz emula un 68040 a 80-100MHz. Qualche benchmark (sia con codice 68k che codice PPC, sia eseguiti su 68k che su PPC che su x86 con Amithlon):
http://xoomer.virgilio.it/tuxcam/bench/result.htmlEmulare un 68k e' solo relativamente piu' semplice, e Rosetta e' un emulatore JIT di PPC: prima o poi anche questo doveva arrivare. Anche gli autori di PearPC ci stanno lavorando, ee se finiranno il lavoro, PearPC fara' un salto prestazionale di 6-10 volte in un botto. Dove potrebbero esserci problemi prestazionali potrebbe essere il codice Altivec.
Comunque mi pare di aver capito che "OpenPegasos" (è questo il nome? spero si sia capito) è ancora basato su PPC. Idem per le mobo amiga.
Si, con la precisazione che Open Pegasos e' il nome che hanno dato alla pubblicazione degli schematici del PegasosII, che e' basato su 7447 (G4) a 1GHz. Sono disponibili dall'inizio 2006 (al momento solo a clienti "corporate", presto si spera anche ai comuni mortali) le schede CPU con 7447A a 1.4GHz e 7448 a 1.7GHz. Sempre da adesso si possono ordinare schede Blade con due CPU G4, mentre, per restare nel mercato desktop, Genesi mira a introdurre entro il Q2 2006 la Open Server Workstation basata su due 970MP (G5 dual core).
Certo, se resta solo Genesi nel mercato desktop, la vedo dura per la sopravvivenza di quello stesso mercato, a meno di un sorprendente (quanto improbabile) successo di questi design...
Saluti,
Andrea