crusoe de transmeta

9

Click here to load reader

Upload: josegalavizc

Post on 06-Nov-2015

219 views

Category:

Documents


0 download

DESCRIPTION

Revision de la arquitectura del Crusoe de Transmeta

TRANSCRIPT

  • El Transmeta Crusoe

    Jose Galaviz Casas*

    1. Antecedentes

    A principios de los 1980s, Joseph Fisher (HP) comenzo a hablar decomputadoras cuyas instrucciones estaban contenidas en palabras de memo-ria muy grandes, de cientos de bits [1]. La intencion de hacer esto es poderponer en una sola instruccion larga, pequenas instrucciones mas sencillas ypequenas que puedan ser ejecutadas por diferentes unidades funcionales delCPU. De esta forma es posible paralelizarlas y aumentar el desempeno. Aeste tipo de arquitecturas se les denomina VLIW (Very Large InstructionWord).

    A mediados de los 1990s, David Ditzel, a cargo de una jefatura tecnicaen Sun Microsystems en esa epoca, estaba experimentando con la emulacionde codigo de arquitectura 80X86 en maquinas Sparc [3]. El objetivo era de-terminar que instrucciones haba que anadir a la arquitectura de Sparc parahacer posible la ejecucion eficiente de instrucciones de 80X86. Por desgra-cia no era posible hacer tal cosa con pocas anadiduras a la arquitectura deSparc.

    A David Ditzel le preocupaba la creciente complejidad de los procesado-res, aun de aquellos que son inherentemente sencillos, los RISC. En generallos procesadores tienden a ser cada vez mas complejos, mas grandes y acalentarse mas y comenzo a meditar acerca de la posibilidad de elaborarprocesadores con un diseno simple y un alto desempeno.

    En 1995 Ditzel deja Sun Microsystems. Posea muchos contactos. Esun miembro reconocido de la comunidad ingenierl, ha trabajado en BellLabs, Sun, y ha tenido cargos en IEEE y ACM. Todo esto le hizo posiblecomenzar a reclutar ingenieros de hardware y software de muchos sitios parallevar a cabo su proyecto. Entre los reclutados estan el ex-coordinador delos proyectos de Motorola de la serie 680X0 y el reconocido hacker LinusTorvalds (autor de Linux).

    *Departamento de Matematicas, Facultad de Ciencias, UNAM. [email protected]

    54

  • Dadas las experiencias de Ditzel en emulacion, la intencion era disenar unprocesador capaz de emular otros, en particular a los Intel 80X86 (a los quegenericamente denominaremos X86). Pero la emulacion siempre impone unacarga extra, se invierte tiempo traduciendo instrucciones de una arquitecturaa otra, esto hace todo mucho mas lento. Como hacer emulacion y lograr unprocesador competitivo? el procesador tendra que ser sumamente eficiente.Aqu es donde entra VLIW.

    Una caracterstica relevante y deseable en todo procesador es que sea ca-paz de efectuar el mayor numero de operaciones posibles al mismo tiempo.Si cada instruccion se divide en subtareas y varias subtareas de la mismainstruccion pueden ser hechas al mismo tiempo se dice que se tiene para-lelismo a nivel de instruccion o ILP (Instruction Level Parallelism). VLIWesta pensado para hacer esto.

    Para lograr ILP en una arquitectura RISC o CISC hay que hacer muchascosas en hardware. La responsabilidad de lograr ILP recae esencialmente enel hardware. En cambio en una arquitectura VLIW es el software, concre-tamente el compilador, el encargado de tomar las decisiones necesarias paraobtener ILP.

    En 1995 Ditzel funda Transmeta con el objeto de hacer realidad unnuevo diseno de procesador, eficiente, VLIW, sencillo y capaz de emularotros procesadores mediante un programa que hace las veces de traductorentre los lenguajes de la maquina emulada y el procesador real. En agostode 1999 los primeros chips de este nuevo procesador fueron producidos, losprimeros procesadores de Transmeta, conocidos genericamente como Crusoe.

    2. Problemas de emulacion

    Hay muchos problemas cuando una maquina emula a otra. En generalestos problemas, al menos los mas graves, se deben a que cada maquinarepresenta de diferente manera sus estados.

    Cada procesador es una maquina de estados. Con base en el estado delprocesador en un instante determinado se toman decisiones que determinanel flujo del programa posteriormente. Entonces cuando una maquina B emulaa otra A, B debe mapear los estados de A a los propios de manera adecuada,para asegurarse de tomar las mismas decisiones de flujo de programa quetomara A en las mismas circunstancias.

    Si no hay una correspondencia entre los estados de la maquina emuladay la emuladora pueden ocurrir, en esta ultima, cosas que nunca hubieranocurrido en la primera. Por ejemplo, supongase que en un X86 la i-esi-

    55

  • Figura 2.1: La segunda instruccion del codigo de X86 genera una excep-cion de division por cero. Al fragmentar y reacomodar las operaciones maselementales, en que cada instruccion de X86 es dividida por una maquinaVLIW, puede ocurrir que sean ejecutados fragmentos de instruccion quenunca sera ejecutados en el X86.

    ma instruccion de un programa genera una excepcion de division por cero,supongase tambien que el X86 es emulado por una maquina VLIW capaz defragmentar cada instruccion de X86 en cuatro subtareas elementales para-lelizables, a las que llamaremos atomos, y que es capaz de ejecutar hasta 8atomos simultaneamente, es decir su palabra de instruccion tiene 8 campos,uno para cada subtarea. Imaginemos ahora que los atomos son reordenadascomo se muestra en la figura 2.1. En este caso ocurre que algunos atomosque nunca debieron ocurrir, por estar despues de la instruccion que generala excepcion, si son ejecutados en la maquina emuladora y, en principio,pueden cambiar su estado, un estado que en el X86 emulado nunca hubierasido alcanzado.

    Luego de analizar este problema, los ingenieros de Transmeta determi-naron que la clave era mantener, en la maquina emuladora, un conjunto deregistros que conservaran el estado de la maquina emulada.

    La fragmentacion en atomos y el reordenamiento de estos no son tareasexclusivas de las arquitecturas VLIW, se hace tambien para lograr ILP enotras arquitecturas y para resolver el problema mencionado suele utilizarsehardware complicado que, en esencia, regresa la maquina de estados delprocesador hasta un estado consistente, en cuanto se da cuenta de que haocurrido una excepcion y que se han ejecutado partes de instrucciones queno ocurriran.

    La solucion de Transmeta es diferente [2]. Todos los registros que man-tienen el estado de la maquina emulada son duplicados, por cada uno deellos en realidad hay dos, una copia de trabajo y otra oculta (shadow enterminologa Transmeta). Los atomos, en su ejecucion alteran solo la copiade trabajo, hasta haber ejecutado todos los atomos correspondientes a unbloque de instrucciones de X86. Entonces la copia de trabajo se respalda enla oculta. A esta operacion se le llama commit. Si en algun momento durantela ejecucion se detecta una excepcion entonces se regresa rapidamente a elultimo estado consistente copiando el respaldo oculto a la copia de trabajo,a esto se le llama rollback. Luego se procede a ejecutar el mismo bloque deatomos, pero esta vez en el orden en el que los ejecutara un X86, as cuan-do ocurra la excepcion, ocurrira del mismo modo, al mismo tiempo y en el

    56

  • mismo estado en que ocurrira en un X86.Otro de los problemas que hay que resolver es de los alias. Imagine-

    mos que una secuencia de instrucciones de X86 puede ser traducida en otramaquina como:

    1 load R30,[x]

    2 ...

    3 store data,[y]

    4 ...

    5 load R31,[x]

    6 (instrucciones que usan R31)

    Si no se altera el registro R30 en las lneas de codigo entre la 1 y la 5entonces el segundo load sale sobrando y en las instrucciones que siguen ala lnea 5 es posible usar R30 en vez de R31. Es posible optimizar el codigohaciendo lo siguiente:

    1 load R30,[x]

    2 ...

    3 store data,[y]

    4 ...

    5 (instrucciones que usan R30)

    Esto nos ahorra un acceso a memoria, que por supuesto, es muy lento parala velocidad usual del procesador. Pero solo es posible hacer esto si el storede la lnea 3, que estamos suponiendo que es el unico store que ocurre, noaltera el contenido de la localidad x. Es decir si x y y direccionan la mismalocalidad de memoria entonces eliminar el segundo load es un error, porqueno se accede al mismo valor.

    Para resolver este problema, Transmeta implemento dos operaciones queacceden a memoria y verifican que no haya alias, dos maneras diferentes dereferirse a la misma localidad: ldp (load and protect) y stam (store andtrap). En nuestro ejemplo el uso de estas instrucciones se vera as:

    ldp R30,[x]

    ...

    stam data,[y]

    (instrucciones que usan R30)

    La primera lnea carga en el registro 30 el contenido de la localidad x ymarca esa localidad como protegida, recuerda x. El stam verifica si y y xson la misma direccion, en cuyo caso la optimizacion resulta en un error, en-tonces interrumpe la actual ejecucion, recupera el ultimo estado consistentey ejecuta conservadoramente el codigo de X86.

    57

  • Figura 3.2: Molecula de Crusoe. Cada molecula esta constituida por cuatroo memos atomos (instrucciones al estilo RISC) ejecutables en paralelo enunidades funcionales diferentes.

    3. Code Morphing, traduccion

    El procesador Crusoe es entonces de arquitectura VLIW y es capaz deejecutar codigo binario de alguna otra arquitectura, en particular de X86.Para hacer esto debe haber un paso intermedio que traduzca las instruccionesde X86 a las nativas de Crusoe. El encargado de hacer esto es un softwarellamado Code Morphing.

    Code Morphing vive en un chip de ROM que se autocarga en memoriaal momento de prender la maquina, siempre esta all, traduce todo, abso-lutamente todo lo que se le diga el procesador. Ni el sistema operativo, nilos programas de aplicacion, ni siquiera el BIOS se enteran de que no estancorriendo sobre un X86 real, para ellos es transparente, como si estuvieranen una maquina con la etiqueta Intel Inside.

    El trabajo de Code Morphing es traducir las instrucciones de Intel X86formando moleculas (en terminologa de Transmeta) de 128 bits de longitud(de all que Crusoe sea VLIW, ver figura 3.2). Cada molecula esta constituidade hasta 4 atomos, esas instrucciones elementales ejecutables en paralelo.Los atomos son instrucciones al estilo RISC de una maquina load-store. Enuna sola molecula puede hacer una instruccion de punto flotante, una dearitmetica entera, un acceso a memoria (load o store), y una instruccionde salto, si en algun momento no hace falta uno de estos tipos entonces esposible reemplazarlo por otra instruccion de aritmetica entera. Cada atomova dirigido a una unidad funcional independiente dentro del procesador,as que se ejecutan al mismo tiempo.

    El Crusoe tiene las siguientes unidades funcionales:

    Dos unidades de aritmetica entera (ALU).

    Una unidad de punto flotante (FPU).

    Una unidad de load-store (load-store unit).

    Una unidad de salto (branch unit).

    Code Morphing traduce bloques de instrucciones de X86 y procura hacerla traduccion una sola vez (no es un interprete). Cada vez que se traduceun bloque es guardado en un cache de instrucciones traducidas llamado

    58

  • Translation Look-aside Buffer o TLB de 256 entradas. Considerando quegeneralmente, en promedio, un 10 % del codigo de un programa es la partecrtica que se ejecuta un 90 % del tiempo total del programa, el cache detraduccion hace que se amortice el costo de traduccion (en tiempo y energa)sobre todas las ejecuciones del mismo codigo traducido.

    Ademas Code Morphing anade un pequena cantidad de codigo extra a latraduccion. Estos anadidos, no funcionales para el programa en ejecucion,tienen por objeto recabar datos estadsticos de la ejecucion, por ejemplo:historia de los saltos (cuantas veces han sido tomados), frecuencia de ejecu-cion de ciertos bloques. Todo con el fin de poder predecir el comportamientofuturo del programa y tomar decisiones ventajosas. Si casi siempre que sepasa por la instruccion de salto X se decide saltar, entonces la proxima vezque se pase por X se cargan de antemano las instrucciones que estan enla direccion de salto, porque son las que muy probablemente sigan, si se hautilizado mucho un bloque de codigo se conserva en el cache de traducciones.

    El nivel de detalle de los atomos permite ademas llevar a cabo optimi-zaciones como la siguiente. Supongase que se traduce el siguiente codigo deX86

    1 ADD EAX, (ESP)

    2 ADD EBX, (ESP)

    3 MOV ASI, (EBP)

    4 SUB ECX, 5

    en una primera aproximacion la traduccion sera como la siguiente (se hadecidido, por claridad llamar a los registros de Crusoe como aquellos de X86que representan)

    1 ld r30, [esp]

    2 add eax, eax, r30

    3 ld r31, [esp]

    4 add ebx, ebx, r31

    5 ld esi, [ebp]

    6 sub ecx, ecx, 5

    Esta es una traduccion literal de las instrucciones de X86. Pero se observaque las cargas de las lneas 1 y 3 son redundantes. Una mejor traduccionsera:

    1 ld r30, [esp]

    2 add eax, eax, r30

    3 add ebx, ebx, r30

    59

  • 4 ld esi, [ebp]

    5 sub ecx, ecx, 5

    lo que es facil de reordenar y acomodar en dos moleculas:

    ld r30, [esp]; sub ecx, ecx, 5

    ld esi, [ebp]; add eax, eax, r30; add ebx, ebx, r30

    4. Aspectos tecnicos

    El Crusoe posee 64 registros de proposito general de 32 bits, como ya sedijo, tiene un cache de bloques traducidos (TLB) de 256 entradas.

    Posee tambien dos niveles de cache:

    64 Kb de cache L1 de instrucciones y 64 Kb de cache L1 de datos,ambos caches son asociativas de conjunto de 8 vas (8-way set associa-tive).

    Un cache de 256 Kb. de datos asociativo de conjunto de 4 vas writeback.

    Las frecuencias de operacion llegan hasta los 700 MHz, utiliza tecnologaCMOS (el chip es manufacturado por IBM) y tiene un area de 73 mm2.

    Por ser un procesador sencillo tiene menor tamano que la competencia,un Pentium III de Intel mide 106 mm2. Esto tambien hace que, dado quela densidad del chip es mucho menor, se caliente mucho menos que otros(48o C contra 105o C del PIII). Esto influye de dos maneras diferentes enel ahorro de energa: se desperdicia menos energa en forma de calor y seusa menos energa en el subsistema de enfriamiento. Esto lo hace ideal paracomputo movil (computadoras portatiles), mercado al que se ha orientadoCrusoe.

    Para reforzar esta cualidad, Crusoe posee ademas la tecnologa LongRun, que permite ahorrar energa disminuyendo o aumentando la frecuenciadel reloj en funcion de la demanda del procesador. Segun Transmeta elCrusoe hace que la batera rinda de 3 a 30 veces mas dependiendo de lasaplicaciones que se corran.

    5. Los puntos malos

    No sin razon, los ingenieros de Transmeta hacen notar que los bench-marks usuales estan orientados a equipos desktop, cuyos requerimientos de

    60

  • gasto de energa no son estrictos y no impactan en la utilidad del sistema.Esto lo utilizan como justificacion para poner sus propios benchmarks donderesaltan el ahorro de energa [6].

    No hay reportes de desempeno de Crusoe que usen los benchmarksestandar reconocidos internacionalmente: no hay reportes del desempenoSPEC de Crusoe.

    Si bien es cierto que los benchmarks usuales no hacen consideracionesespeciales importantes en equipos moviles, tambien es cierto que son los pun-tos de referencia que le permiten al mundo saber y comparar el desempenode los equipos.

    Aun con sus propios benchmarks los procesadores Crusoe no salen tanbien librados, si ganan en las comparaciones es por poco. Por supuesto elrubro sonde siempre ganan y por mucho, es en el de rendimiento de energa[4, 5].

    En benchmarks hechos por otras organizaciones dedicadas a las compa-raciones de equipos, los procesadores Crusoe no resultan bien plantados, aunen el rubro de duracion de batera de equipos notebook. En algunos reportesel Intel Celeron a 30 MHz menos que Crusoe, tiene una duracion de baterade unas 3 horas mas. En las pruebas de desempeno populares, basada en laejecucion de juegos o de programas comunes, que no son tan robustas comolas pruebas de SPEC, pero que dan una idea, Crusoe tiene un desempenomuy por debajo de sus competidores naturales (Mobile Pentium III). Enuno de estos sitios incluso, pensando que era injusta la prueba, decidieroncompararlo con un Pentiun II y aun as el desempeno de Crusoe fue inferior.

    Uno podra pensar entonces en que la conveniencia es en la relacioncosto-beneficio, pensaramos entonces que Crousoe es muy barato. No esas, un Crusoe cuesta actualmente unos 87 USD y un Celeron unos 69 USD.Probablemente si la manufactura del chip no estuviera a cargo de una com-pana externa (IBM) los costos permitiran bajar el precio, pero Transmetano tiene capital suficiente para establecer sus propias plantas.

    Quizas sea por todo eso que hasta hora solo muy pocas companas hanincluido Crusoe en sus portatiles (Fujistu y Sony en algunos modelos Vaio,por ejemplo). Como quiera que sea Transmeta no tiene finanzas muy esta-bles, ha operado con numeros rojos durante el ultimo trimestre de 2000 ylas fluctuaciones del valor de sus acciones son grandes1.

    Algunos analistas han senalado otra desventaja de Crusoe: Code Morp-hing se carga en RAM para optimizar su ejecucion, pero al cargarse enmemoria crece su tamano unas seis veces, el codigo mismo, sus estructuras

    1Fuente: http://www.nasdaq.com con el identificador TMTA

    61

  • de datos y demas ocupan todo ese espacio que puede llegar a ser muy sig-nificativo. Code Morphing es indispensable en todo momento para que lamaquina funcione, es esencial para el procesador mismo, as que es como sitoda esa RAM que ocupa no existiera. Si juntaramos el costo de RAM yel del procesador obtendramos una cantidad mayor que la necesaria paracomprar un procesador menos exigente y mas rapido.

    Esperemos que se salve, tiene muchas buenas ideas, ideas que prometenalgo mejor de lo que ahora vemos.

    Referencias

    [1] Ramakrishna, Rau y Joseph A. Fisher, Instruction-Level Parallel Pro-cessing: History, Overview, and Perspective, The Journal of Super-computing, 7, 1993, pp. 7-9. Tambien aparece en la referencia [7], pp.288-308.

    [2] Klaiber, Alexander, The Technology Behind Crusoe Processors, Trans-meta Corporation, enero 2000.

    [3] Geppert Linda y Tekla S. Perry, Transmetas Magic Show, Spectrum,IEEE, 37(5), mayo 2000.

    [4] Crusoe Processor, Model TM5400, Transmeta Corporation,http://www.transmeta.com, enero 18 de 2000.

    [5] Crusoe Processor Benchmarl Report, Mobile Platform Benchmark Re-sults, Transmeta Corporation, http://www.transmeta.com, febrero 3de 2000.

    [6] McKenna, Daniel, Mobile Platform Benchmarks, A Methodologyfor Evaluating Mobile Computing Devices, Transmeta Corporation,http://www.transmeta.com, febrero 3 de 2000.

    [7] Hill, Mark D., N. P. Jouppi y G. S. Sohi (editores), Readings in Coum-puter Architecture, Morgan Kaufmann, 2000.

    62