View Single Post
Old 29-12-2013, 01:50   #17
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6019
Quote:
Originariamente inviato da Jammed_Death Guarda i messaggi
quello che mi è sembrato strano ovunque è che nel tablet io leggo arm v7 rev 2 (v7I)...è lo stesso codice che leggo sul mio galaxy s, non dovrebbe essere un arm 9 la cpu del tablet?
Bisogna distinguere tra il set di istruzioni supportato ed il modello del core.
Il set d'istruzioni è l'insieme delle istruzioni in linguaggio macchina supportate da quella cpu, mentre il modello del core è "come è fatta internamente".

I core ARM Cortex A8, A7, A9 ed A15 supportano tutti il set d'istruzioni ARMv7
(con alcune piccole migliorie, ma programmi compilati nativamente per ARMv7 girano certamente su tutti quei core senza problemi).

I vari set d'istruzione ARMv4, ARMv5, ARMv6, ARMv7 sono comunque compatibili verso l'alto (un programma per ARMv4 può girare su una ARMv7, mentre il viceversa non è detto a causa delle istruzioni in più "di serie" sugli ARMv7).

Le differenze tra i core invece hanno a che fare con l'efficienza di esecuzione delle istruzioni e con i consumi.

Ad esempio A8 ed A7 eseguono le istruzioni "in order" (rigorosamente una dopo l'altra) mentre A9 ed A15 quando possibile possono eseguirle "out of order" (se ad esempio due istruzioni consecutive non scrivono sugli stessi registri o sulla stessa locazione di memoria, possono essere eseguite simultaneamente).

L'esecuzione "out of order" permette quindi di eseguire 2 o più istruzioni per ciclo di clock (quando non vi sono dipenedenze sui dati elaborati da esse) quindi a parità di clock eseguono più istruzioni e quindi elabora più dati, solo che questo richiede circuiteria più complessa (più unita di esecuzione ed inoltre la circuiteria di controllo per identificare quando vi può essere esecuzione simultanea).

Poi certe differenze dipendono anche dalla tecnologia produttiva, ad esempio l'A7 è uscito dopo l'A8 e sebbene esegua le istruzioni "in order" come l'A8, ha delle ottimizzazioni (legate al processo produttivo più avanzato con cui lo si puà produrre) che gli permettono di salire di più di clock e di avere pipeline di esecuzione più corte (migliorando le prestazioni).

Nel complesso a parità di clock le prestazioni sono A15 > A9 > A7 > A8 (con A7 ed A8 molto vicini tra loro).

Per ulteriori chiarimenti sulla classificazione dei vari ARM in base al tipo di core ed al set d'istruzioni puoi dare un occhiata qui:
http://en.wikipedia.org/wiki/List_of...rocessor_cores

Come linea guida, quando vedi ARMv(qualcosa) il riferimento è al set d'istruzioni supportato.
La denominazione dei core invece è più variegata, inizialmente quella di ARM Ltd. era del tipo ARM(numero)(altri numeri e lettere), mentre ora core più recenti sono suddivisi tra "Cortex M(numero)" per i modelli ottimizzati per essere integrati in microcontroller e "Cortex A(numero)" per i modelli per SoC e roba a più alte prestazioni.

Infatti si scrive spesso A9, A15 ecc. per brevità ma la denominazione completa sarebbe ARM Cortex A9 , ARM Cortex A15, ecc.
specialmente perchè poi le denominazioni usate da altri produttori potrebbero creare ulteriore confusione.

Ad esempio il SoC Apple A7 usa un dual-core denominato da Apple Cyclone ed è compatibile con il set d'istruzioni ARMv8 (che supporta sia una modalità a 32bit retrocompatibile con ARmv7 che una nuova modalità a 64bit) ed ovviamente è tutta un altra cosa rispetto al core l'ARM Cortex A7.
LMCH è offline   Rispondi citando il messaggio o parte di esso