Jim Keller: "Si quisiera fabricar un PC a día de hoy, escogería RISC-V"
09/09/2021
El futuro de los PCs es cada vez más incierto, y es que mientras que la arquitectura x86 ha ralentizado sus avances, ARM ya se ha postulado como un serio candidato, por no hablar de RISC-V, que es que la que menos ruido hace pese a la que parece ser la futura ganadora.
Hace unos días conocíamos que Apple se está preparando para dar el salto a RISC-V, y hoy conocemos que el mismísimo Jim Keller, el creador de la exitosa arquitectura AMD Zen (y AMD K7, K8, K12), quien está detrás de los futuros SoC Samsung Exynos (ARM), los primeros SoCs de Apple (ARM; Apple A4 y A5), e incluso de las futuras arquitecturas de Intel (x86), dejaría de lado todas estas arquitecturas y se centraría únicamente en RISC-V, augurándole un gran futuro.
Esta información fue proporcionada por el propio Jim Keller en una entrevista a AnandTech a mediados de año, la cual no tuvo prácticamente repercusión hasta ahora, después de darse a conocer que Apple se ha interesado en exceso en RISC-V después de abandonar la arquitectura x86 por ARM, y RISC-V sería el sustituto perfecto de la arquitectura x86/ARM en sus equipos de sobremesa y portátiles.
Ian Cutress: Volviendo a la pregunta sobre el ISA (Industry Standard Architecture), mucha gente ha preguntado cuál es tu opinión respecto a ARM vs x86. ¿Cuál tiene las bases, cuál tiene el rendimiento? ¿Le importa mucho, si es que le importa?
Jim Keller: Me importa un poco. Esto es lo que pasó: cuando salió el x86, era súper sencillo y limpio, ¿no? Entonces había varias arquitecturas de 8 bits: x86, 6800, 6502. Yo programé probablemente todas ellas en su día. Entonces x86, curiosamente, era la versión abierta. Lo licenciaron a siete empresas diferentes. Entonces eso le dio a la gente la oportunidad, pero Intel sorprendentemente lo licenció. Luego pasaron a 16 bits y 32 bits, y luego añadieron memoria virtual, virtualización, seguridad, luego 64 bits y más características. Así que lo que sucede con una arquitectura a medida, es que se añaden cosas, pero se mantiene lo antiguo para que sea compatible.
Así que cuando ARM salió por primera vez, era un ordenador limpio de 32 bits. Comparado con el x86, parecía mucho más simple y fácil de construir. Luego añadieron un modo de 16 bits y la instrucción IT (if then), que es horrible. Luego añadieron un extraño conjunto de extensión de vectores de punto flotante con superposiciones en un archivo de registro, y luego 64 bits, que lo limpiaron en parte. Había algunas cosas especiales para la seguridad y el arranque, y así sólo se ha complicado.
Ahora aparece RISC-V y es el nuevo y primo perfecto, ¿verdad? Porque no hay ningún legado. En realidad es una arquitectura de conjunto de instrucciones abierta, y la gente la construye en las universidades, donde no tienen tiempo o interés en añadir demasiada basura, como tienen algunas arquitecturas. Así que relativamente hablando, sólo por su pedigrí, y la edad, es temprano en el ciclo de vida de la complejidad. Es un conjunto de instrucciones bastante bueno, hicieron un buen trabajo. Así que si quisiera decir que si quiero construir un ordenador realmente rápido hoy, y quiero que vaya rápido, RISC-V es el más fácil de elegir. Es el más sencillo, tiene todas las características correctas, tiene las ocho instrucciones principales para las que realmente necesitas optimizar, y no tiene demasiada basura.
Ian Cutress: Así que los conjuntos de instrucciones modernos tienen demasiada carga, especialmente los antiguos. ¿Extrañas heredadas y cosas por el estilo?
Jim Keller: Las instrucciones que se han repetido y ampliado tienen demasiada carga. Eso es lo que ocurre siempre. A medida que se van añadiendo cosas, los ingenieros tienen que luchar. Puedes tener un diseño realmente bueno, con 10 características, y entonces le añades algunas características. Todas las características lo hacen mejor, pero también lo hacen más complicado. A medida que se avanza, cada nueva característica añadida se vuelve más difícil de hacer, porque la interacción para esa característica, y todo lo demás, se vuelve terrible.
Los chicos de marketing, y los antiguos clientes, dirán "no borres nada", pero mientras tanto todos están jugando con la nueva cosa fresca que sólo hace el 70% de lo que hace la antigua, pero lo hace mucho mejor porque no tiene todos estos problemas. He hablado de las curvas de rendimiento decreciente, y hay un montón de razones para el rendimiento decreciente, pero una de ellas es la complejidad de las interacciones de las cosas. Te ralentizan hasta el punto de que algo más simple que eso sería en realidad más rápido. Eso ha sucedido muchas veces, y es algún resultado de la teoría de la complejidad y ya sabes, la nefandad humana creo.
Ian Cutress: ¿Alguna vez ha visto una situación en la que el x86 se descomponga y se reinvente algo? ¿O seguirá siendo una especie de legado y luego aparecerán cosas nuevas, como RISC-V, para llenar el vacío cuando sea necesario?
Jim Keller: x86-64 era una pizarra bastante limpia, pero obviamente tenía que llevar todo el viejo bagaje de esto y aquello. Han dejado de lado muchos de los antiguos modos de 16 bits. Hay un montón de basura que desapareció, y a veces, si se tiene cuidado, se puede decir "necesito dar soporte a este legado, pero no tiene por qué ser eficiente, y puedo aislarlo del resto". O lo emulas o lo soportas.
Solíamos construir los ordenadores de tal manera que había un front end, un fetch, un dispatch, un execute, un load store, un L2 cache. Si miras los límites entre ellos, verás 100 cables haciendo cosas aleatorias que dependían exactamente de qué ciclo o qué fase del reloj era. Ahora estas interfaces tienden a parecerse menos a los límites de las instrucciones: si envío una instrucción de aquí a allá, ahora tengo un protocolo. Así que el interior del ordenador no parece un gran lío de cosas conectadas entre sí, sino que parece ocho ordenadores conectados entre sí que hacen cosas diferentes. Hay un ordenador de obtención y un ordenador de envío, un ordenador de ejecución y un ordenador de punto flotante. Si lo haces bien, puedes cambiar el punto flotante sin tocar nada más.
Esto no es tanto un conjunto de instrucciones, sino más bien "cuál fue tu principio de diseño cuando lo construiste", y luego cómo lo hiciste. La cuestión es que si llegas a un problema, puedes decir "si pudiera tener estos cinco cables entre estas dos cajas, podría deshacerme de este problema". Pero cada vez que haces eso, cada vez que violas la capa de abstracción, has creado un problema para el futuro Jim. Lo he hecho muchas veces, y como si lo resolvieras correctamente, seguiría siendo limpio, pero en algún momento si lo pirateas un poco, entonces eso te mata con el tiempo.
Comentarios
Publicar un comentario