RISC-V: Por qué las batallas de ISA aún no han terminado

Un procesador de computadora usa la llamada Arquitectura Instruccional para hablar con el mundo fuera de su propio circuito. Esta ISA consta de una serie de instrucciones que básicamente definen las funciones de ese procesador, lo que explica por qué todavía existen tantas ISA en la actualidad. Es difícil encontrar esa ISA que, sin embargo, funcione para tantos casos de uso distintos como sea posible.

Una ISA bastante nueva es RISC-V, cuya primera versión se creó en 2010 en la Universidad de California en Berkeley. Con la intención de ser una ISA completamente abierta, dirigida tanto a estudiantes (como herramienta de aprendizaje) como a usuarios de la industria, se afirma que incluye una serie de opciones de proyectos que deberían hacerla más atractiva para varias aplicaciones.

En este artículo, miraré detrás del marketing para ver en qué se diferencia exactamente RISC-V de otras ISA abiertas, incluidas Power, SPARC y MIPS.

Bienvenido al mundo de RISC

La computadora de instrucción reducida (RISC) es un tipo de ISA que se enfoca en crear un conjunto de instrucciones que requiere solo un número limitado de ciclos de procesador para ejecutar una sola instrucción. Idealmente, una instrucción duraría exactamente un ciclo. Esto contrasta con la Computación Instruccional Compleja (CISC), que se enfoca en reducir la cantidad de instrucciones requeridas para una aplicación que disminuye los requisitos de almacenamiento de código.

Actualmente, CISC básicamente se ha ido, con el Motorola m68k ISA pastable, y cualquier CPU basada en Intel x86 CISC ISA y sucesores (como las extensiones de 64 bits de AMD) en el interior es un procesador RISC con un front-end CISC ISA descifrado que divide las instrucciones CISC en las instrucciones RISC (micro-opcodes) para su núcleo de CPU. Al menos en lo que respecta a las guerras de la CISC contra RISC ISA, aquí podemos decir que RISC ha ganado de manera decisiva.

Muchos sabores RISC

Aunque RISC-ISA como Alpha y PA-RISC han encontrado su desafortunada desaparición debido a políticas corporativas en lugar de algunas deficiencias en su proyecto ISA en sí, afortunadamente todavía nos queda una colección saludable de ISA-RISC hoy, especialmente:

  • SuperH (con implementación abierta de J-2).
  • ARM (propiedad absoluta)
  • MIPS (abierto, gratuito)
  • Poder abierto
  • AVR (propiedad)
  • SPARC (abierto, gratuito)
  • OpenRISC (gratis)
  • RISC-V como novato compara sus 9 años de desarrollo (académico) con los 34+ años de MIPS, 33+ años de SPARC y Power ISA, que tiene sus raíces en un desarrollo que IBM hizo a principios de la década de 1970. Teniendo en cuenta la propaganda en torno a esta nueva ISA, debe haber algo diferente en ella.

    Esto también considerando que OpenRISC, que fue desarrollado con muchos de los mismos objetivos que RISC-V en 2000, nunca ha surgido mucho, aunque se usa comercialmente.

    Paisaje cambiante

    Es importante señalar que en 2010, cuando se desarrolló RISC-V, SPARC fue una ISA abierta durante mucho tiempo, con la implementación de LEO SPARC de la ESA en VHDL disponible desde 1997. Desde 2010, IBM MIPS y Power ISA también se han unido las filas de ISA abiertas y gratuitas, con proyectos de código abierto en Verilog, VHDL y otros disponibles. MIPS ha sido un tutorial estándar para ISA de procesador desde la década de 1990 (generalmente basado en DLX), y muchos estudiantes escriben su propio núcleo MIPS minimalista como parte de su plan de estudios.

    Debido a los competidores existentes en estas áreas, RISC-V no puede simplemente distinguirse por ser abierto, gratuito, tener ISA más maduros o mejores núcleos HDL disponibles gratuitamente. En cambio, su ISA debe tener características que lo hagan atractivo en términos de eficiencia energética u otras métricas, permitiéndole procesar datos de manera más eficiente o más rápida que la competencia.

    Aquí una característica definitoria es que el RISC-V ISA no es un ISA único, sino más de 20 ISA individuales, cada uno de los cuales se enfoca en una función específica, como manipulación de bits, interrupciones a nivel de usuario, instrucciones atómicas, simples y dobles. -preciso punto flotante, multiplicación y división de enteros, etc. También es interesante en el ecosistema RISC-V que se agregan conjuntos de instrucciones personalizados sin ninguna aprobación.

    Ignorando el futuro

    Una opción interesante en el propio RISC-V ISA está en las llamadas y condiciones de subrutina, con RISC-V que no requiere un registro de código condicional (registro de estado) o pieza de puerto. Esta opción deshabilita la predicción, en lugar de obligar al procesador a ejecutar cada rama individual esperando que una de ellas sea correcta, descartando los resultados de las otras ramas. Debido a que la predicción de bifurcaciones es opcional en RISC-V, esto podría conllevar una gran penalización en el rendimiento y el costo de energía.

    Debido a que todas las demás arquitecturas principales utilizan la predicción para mejorar el rendimiento, especialmente para bloques de saltos más cortos, como el producido por un bloque grande if / else o una declaración de cambio, es bastante audaz omitir esta característica. El argumento de proyección proporcionado por los desarrolladores de RISC-V es que las CPU rápidas y listas para usar pueden superar esta limitación mediante el procesamiento sin procesar. Curiosamente, no ven el tamaño de código más grande producido para el código sin predecir que será un problema, a pesar de estar orgullosos de sus instrucciones compactas, generalmente bastante compactas.

    Aquí comienza a brillar la naturaleza algo esquizofrénica del desarrollo de RISC-V. Aunque se supone que es adecuado para procesadores integrados, supuestamente de baja frecuencia, es probable que su falta de predicción lo perjudique aquí en rendimiento bruto en comparación con los microcontroladores equivalentes basados ​​en ARM, cuyo conjunto de instrucciones Thumb-2 compacto también es más eficiente que el compacto RISC-V ISA.

    Seleccione Incertidumbre sobre Certeza con RISC-V

    En este punto, las únicas partes del RISC-V ISA “congeladas”, lo que significa que se pueden implementar sin ningún cambio fundamental esperado, son los conjuntos de enteros básicos para la versión de 32 y 64 bits, así como las extensiones para enteros. multiplicación y división, comas atómicas, de precisión simple y doble, así como comas de precisión cuádruple e instrucciones comprimidas.

    Las extensiones como el hipervisor, la manipulación de bits, la memoria de transacciones y las interrupciones a nivel de usuario siguen fluyendo y, por lo tanto, no son adecuadas para nada más que un uso experimental, lo que fragmenta aún más todo el ecosistema RISC-V. Esto muestra claramente que RISC-V no es un ISA “terminado”, pero aún se encuentra en las primeras etapas de desarrollo. Si bien su núcleo es utilizable, el conjunto de instrucciones integradas tampoco está completo y no hay datos de rendimiento fácilmente disponibles que respalden las afirmaciones de que puede superar prácticamente a cualquier competencia.

    Lo peor es probablemente la inmadurez de los núcleos HDL disponibles y las herramientas de programación para RISC-V. Dado que la estabilización de los conjuntos ISA está tomando tiempo, no es de extrañar que pocos kernels y herramientas ofrezcan o esperen algo más que la funcionalidad básica (RV32I o RV64I). Sin muchos conjuntos ISA adicionales terminados e integrados en silicio, el espectador tiene la interesante idea de que quizás la principal contribución de RISC-V a esta renovada guerra ISA no es que RISC-V sea necesariamente superior, o incluso que tenga un negocio a largo plazo viabilidad.

    Mostrando cómo

    En 2000, cuando comenzó el proyecto OpenRISC, parecía que el mercado no estaba en absoluto inclinado a abrir ISA y proyectos de procesadores relacionados de libre disponibilidad. Hoy en día eso parece ser bastante diferente, y fue RISC-V, no OpenRISC, el que desencadenó este cambio en el pensamiento corporativo que hizo que IBM abriera su Power ISA, junto con MIPS ISA e incluso ARM ISA hasta cierto punto. RISC-V tiene financiamiento de DARPA cuando OpenRISC probablemente tampoco jugó un papel aquí, pero ¿quién cuenta?

    Independientemente de estos detalles, parece que el hardware de la computadora ha comenzado un nuevo camino en el que incluso un aficionado tiene acceso a una serie de núcleos HDL bien soportados y se le permite experimentar con la ISA. En este momento, uno puede elegir entre núcleos completamente abiertos MIPS, SPARC, Power, RISC-V y SuperH, y quizás el núcleo ARM completamente abierto también se convierta en una realidad.

    En cierto sentido, evoca flashbacks de la década de 1980, cuando en medio del mercado de computadoras hogareñas en rápido crecimiento, muchos fabricantes de CPU lucharon para que su ISA y sus chips fueran los más populares, siendo el Z80 de Zilog y, por supuesto, el 6502 un fuerte Retadores de 8 bits. antes de que despegara un recién llegado llamado “Intel”, que culminó con la desaparición aparentemente completa de la diversidad ISA en el escritorio y, más recientemente, en las consolas de video.

    Esto es diversidad

    No iría tan lejos como para decir que extraño los días de las diferentes plataformas (para que alguien no me llame bastardo desagradable). Cualquiera que trabaje en la industria del software durante los años de formación de la informática personal se encontrará retrocediendo a través de los traumáticos recuerdos del software portador entre el Commodore 64 y el ZX-Spectrum. Pensar que lo tenemos mucho mejor ahora no es una posición tan extrema.

    Dicho esto, cualquiera que tenga una idea de lo que significa la competencia puede ver que un mundo con solo Intel, o solo AMD, o solo ARM, o solo procesadores RISC-V en todo, sería bastante aburrido. Es el rebote de ideas, de comparar diferencias, lo que hace pensar a la gente y eso sigue innovando. Las prácticas de software modernas deben significar que la compatibilidad multiplataforma no es tan importante como en las décadas de 1980 y 1990.

    Este es un futuro abierto y diverso en el mundo de las ISA.

    • Mike Massen @ Perth, Australia Occidental dice:

      Gracias por publicar, reseña interesante 🙂
      Me pregunto por qué las palabras súper anchas con múltiples entrelazamientos con un gran potencial para mezclar simd y mimd juntos parecían haber obstaculizado el desarrollo estructural de la reinstrucción gradualmente, ya que en el rango alto en su mayoría casi, sin embargo, no se filtran mucho al extremo inferior si es que todavía parece especialmente sisd que apenas se mueve a simd …
      Hola

      • Bruce Perens dice:

        Porque los compiladores terminaron sin poder usar VLIW de manera efectiva. Pasé días enteros obteniendo el último tick del microcódigo para la computadora de imágenes Pixar. Esta arquitectura es buena para funciones en las que alguien está dispuesto a optimizarlas. Puede terminar con una biblioteca de imágenes de gran rendimiento. Pero no tanto para el código del compilador de propósito general.

      • norte dice:

        El ancho de banda de la memoria es el problema en los sistemas modernos, la tendencia es hacia la compresión del código para un mayor rendimiento. Las instrucciones súper pequeñas son el camino a seguir para obtener el mejor rendimiento, esto es de conocimiento común durante mucho tiempo, consulte ARM Thumb. ARM ha tenido características de Neon SIMD desde 2009. MIPS ha tenido características de SIMD desde 2006. Hoy en día, las características de SIMD están disponibles en chips ARM Cortex M4, se vendieron miles de millones, funcionan con baterías de reloj y cuestan menos de $ 1.

        • alfcodificador dice:

          de hecho, los llamados programadores de bajo nivel son el signo de interrogación de cualquier sistema …

          • muchacha dice:

            Realice un trabajo real con un mal jefe y luego sea idealista en el desarrollo de un gran código. Hablará de manera diferente después de que lo contraten, pero tendrá que solicitar un cheque de asistencia social ya que sus ideales han traído un retraso de 6 meses y no se le pagará. Esta es la vida real, no la academia.

            • Ex desarrollador dice:

              ¡Amén ++ a eso!

        • Ingeniero de Backwoods dice:

          Por lo tanto, RISC-V tiene las instrucciones C o comprimidas. El rendimiento es en realidad mejor que Thumb2 después de que una biblioteca invoca derrames de registro. Lea el artículo de Andrew Waterman sobre instrucciones comprimidas en RISC-V.

        • ¡HOMBRE DE LA FLORIDA! dice:

          ¿Banda ancha? ¿Por qué no presionar el módulo HBM2 en la parte superior de la CPU? Esto resolverá cualquier problema de memoria que esté codificando. Además, el autor parece pensar que no tener una predicción perjudicará la energía / el rendimiento. La naturaleza asincrónica de estos chips hace que la predicción sea casi obsoleta, MEJORA el rendimiento, la eficiencia y seguridad.

          • Frankbus dice:

            Lea de nuevo. No está hablando de predicción, sino de predicción. No sé lo suficiente sobre CPU de gama baja si esto es importante. IBM, que no es un jugador pequeño, pensó que no era lo suficientemente importante como para incluirlo en el PowerPC. Pero, por supuesto, un procesador PowerPC tiene una unidad de predicción de rama.

          • lógica combinada dice:

            HBM2 sigue siendo un gran signo de interrogación, ya que pasa de una sola solicitud de memoria en cientos de ciclos de reloj.

            Y esta es exactamente la razón por la que OoO es tan eficaz. No puede programar instrucciones estáticamente si tiene retrasos impredecibles.

            Ahora, la predicción es realmente mala, hace que OoO sea mucho más complicado de lo que debería ser. Las dependencias implícitas, que nunca se convertirán en dependencias, le impiden reorganizar las instrucciones.

        • Arkansas dice:

          Acerca de MIPS SIMD desde 2006.
          Había un RSP N64, que era un procesador MIPS y funcionaba con datos vectoriales en 1995. Véase también MIPS MDMX (1996).

    • · dice:

      ARM (propiedad absoluta)
      AVR (propiedad)

      Mirándote, Arduino.

    • David M VomLehn dice:

      Me gustaría señalar que la arquitectura MIPS no tiene un registro de estado ni lleva un bit.

      • Mike Massen @ Perth, Australia Occidental dice:

        ¡Hmm, yo no sabía eso!
        ¿Sintió algo que sugiera preocupación?
        Plantea cuestiones potencialmente importantes de: –
        Efectos secundarios, eficiencia, velocidad, compatibilidad, problemas correctivos como Consequences O algo ???
        ¿Podría ser una ventaja clara o, en términos generales, en términos de compiladores para patrones de ensamblaje, es quizás neutral neutral en el análisis final?

    • ChrisMicro dice:

      Curiosamente, hay algunas placas Arduino compatibles con Risc-V-Arduino.

      Aquí hay un gráfico de seedstudio:
      https://www.seeedstudio.com/Sipeed-Longan-Nano-RISC-V-GD32VF103CBT6-Development-Board-p-4205.html

      Pensé que la CPU es más rápida en comparación con STM32F1xx.

    • Frankbus dice:

      No es cierto que todas las demás arquitecturas principales tengan la característica predictiva. Como dice el artículo de Wikipedia, por ejemplo, PowerPC no tiene esta función. Y no creo que necesite más energía para hacer una predicción de rama sin predicciones, es un poco más complicado de implementar en hardware. Pero todas las CPU grandes ya lo hacen, independientemente de las predicciones.

      Y tiene razón en que muchas de las funciones avanzadas aún fluyen. Pero todavía hay documentos oficiales para ello en riscv.org, así que no veo cómo eso causa la fragmentación del ecosistema RISC-V. Hay mucha discusión en las listas de correo oficiales de RISC-V sobre estas características, y cuando los proveedores prueben diferentes ideas, la mejor idea se documentará en los documentos oficiales del estándar RISC-V. Mucho mejor que el proceso de desarrollo propietario y las implementaciones de otras arquitecturas de CPU como ARM.

      Y lo que ya está congelado, la arquitectura básica RVI32 y RVI64 y la extensión del control deslizante posiblemente podrían reemplazar a todos los microcontroladores comercializables en el mercado en este momento. Entonces, los proveedores no tienen que pagar por una licencia ARM, por lo que los chips podrían ser más baratos. Así que una victoria para todos excepto quizás para ARM. ¿No recibió un salario de ARM por escribir este artículo? 🙂

      • Alexander Wikström dice:

        Sin embargo, lo más importante con los microcontroladores no funciona.
        Sino más bien el control en tiempo real, algo acerca de la arquitectura orientada a la alta eficiencia ni siquiera se enfoca.

        Sin embargo, se trata más de la implementación de hardware de la ISA. (a menos que la ISA requiera que algunas funciones tengan un ciclo de duración, y otras multiciclos, sin mencionar los sistemas de captura “extraños” y aquellos en los que uno lee varias instrucciones que funcionan junto con los datos / registros. Pero no he visto tales en RISC- V sin embargo.)

        Sin embargo, ARM tampoco es adecuado para el monitoreo en tiempo real para todo tipo de aplicaciones.
        Entonces, RISC-V probablemente no reemplazará a AVR y PIC, entre otras arquitecturas de microcontroladores que existen.

        Finalmente, el rendimiento no es crítico en la mayoría de las aplicaciones de microcontroladores. (Y si el rendimiento es más importante, entonces tal vez descargue eso a SoC a través de UART o algo y deje el problema del tiempo crítico al micro).

        Ésta es una gran razón por la que los microcrites no utilizan múltiples de instrucción, por lo general hacen 1 instrucción, incluso 2 o más ciclos, y no realizan ninguna ejecución extraordinaria. (Sin embargo, existen micromercados de múltiples núcleos en el mercado, pero no los he examinado yo mismo, pero puedo ver su potencial en algunas aplicaciones. Con suficientes núcleos, probablemente podrían competir con los FPGA en muchas aplicaciones. )

    • Julian Skidmore dice:

      Teóricamente, RISC no se trata de enseñar un solo ciclo, ya que claramente, las generaciones posteriores de RISC podrían, con líneas de supertubos y múltiples unidades de ejecución, exceder una instrucción por ciclo (así como arquitecturas competitivas).

      La idea clave de RISC es optimizar la ejecución para el espacio de silicio: hacer que las operaciones comunes sean rápidas y que las operaciones poco frecuentes funcionen. Reducir el conjunto de instrucciones es un subproducto de esto: las instrucciones raras son un desperdicio de silicio, así como los modos de dirección raros para acceder a los datos.

      Incluso los primeros procesadores RISC agregaron la complejidad de sus CPU al aumentar el número de campos operativos en una instrucción; p.ej. Instrucciones ALU de 3 operaciones o incluso con las instrucciones ARM ISA de 32 bits que combinan la operación ALU (con 3 operadores), donde se aplica un cambio o rotación constante o de registro a una fuente, antes de que la operación y la operación en sí sean condicionales . como una bandera para devolver el resultado.

      O considere la tubería de las primeras CPU RISC que agregaron una complejidad considerable al diseño, incluso tanto como tener que proporcionar reenvío a los operadores para desactivar las cabinas. Los procesadores CISC no utilizaron tales características arquitectónicas hasta más tarde.

      En cualquier caso, en realidad es solo una cuestión de cambiar el uso de Silicon a un caso de uso más eficiente, y eso también puede variar dependiendo de si recompensamos el rendimiento potencial, la densidad del código o la eficiencia energética o, si es ARM, un procesador RISC. diseñado para la programación y emulación de Assembler 6502 (ya que su aplicación principal era la implementación de BBC Basic).

    • Alexander Wikström dice:

      Solo para dar mis propios dos centavos a la asignatura, pero: “La computadora de instrucción reducida (RISC) es un tipo de ISA que se enfoca en crear un conjunto de instrucciones que requiere solo un número limitado de ciclos de procesador para ejecutar una instrucción”. la frase I es muy incorrecta.

      La arquitectura RISC sigue la filosofía de que menos instrucciones significa que será más fácil trabajar e implementar en hardware. Porque siempre podemos expresar funciones y operaciones más avanzadas con código, en lugar de gastar recursos de hardware “costosos” en la tarea. (En última instancia, solo unas pocas líneas de código podrían necesitar decenas de miles de transistores para implementarse de manera efectiva en el hardware (mientras que la pequeña cantidad de RAM para almacenar ese código podría necesitar solo unos pocos cientos de transistores)).

      A diferencia de las arquitecturas CISC, tales límites no se establecen y, en su lugar, solo agregan todas las instrucciones concebibles que puedan ser necesarias. Una razón por la que x86, por ejemplo, tiene más de 6000 instrucciones diferentes, mientras que ARM tiene solo unos pocos cientos. (No existe una CPU en el mercado que admita todas estas instrucciones diferentes, ya que rara vez o algunas veces tienen todas las extensiones de instrucción).

      Pero la principal diferencia entre estas filosofías es que en RISC migramos funciones al dominio del programa, y ​​en CISC lo hacemos con hardware. “La línea en la arena” entre ellos es de 30 a 50 instrucciones, dependiendo de a quién se le pregunte. (Sin incluir instrucciones, por ejemplo, x86 tiene 96 instrucciones de salto condicional, cada una tiene su propio conjunto de condiciones, pero todas son la misma instrucción después de todo. Por lo tanto, “salto condicional” es una instrucción, con 96 variaciones diferentes en sus condiciones).

      Y continuamos:

      “Cualquier CPU basada en Intel x86 CISC ISA de Intel y sus sucesores (como las extensiones de 64 bits de AMD) es un procesador RISC interno con un prefijo de descifrado CISC ISA que divide las instrucciones CISC en las instrucciones RISC (micro-opcodes) para su núcleo de CPU. Al menos en lo que respecta a las guerras de la CISC contra RISC ISA, aquí podemos decir que RISC ha ganado de manera decisiva. “

      También está bastante mal. Sí, muchas instrucciones requieren la ejecución de microcódigo, pero todavía hay muchas instrucciones que usan hardware dedicado porque el hardware dedicado se ejecuta mucho más rápido (y generalmente se puede hacer en paralelo junto con otras tareas gracias a la ejecución de comandos). Prácticamente todas las CPU x86 siguen siendo en su mayoría un procesador CISC, incluso desde la perspectiva del hardware. (E incluso ARM también se está convirtiendo en arquitectura CISC en la actualidad).

      En lo que respecta a RISC-V, la frase: “También es interesante en el ecosistema RISC-V que se fomenta la adición de instrucciones personalizadas sin ningún proceso de aprobación”. Probablemente haya una gran razón por la que se lo considere popular, aunque desde la perspectiva del código de máquina, esto significa que será literalmente diabólico trabajar con él, y posiblemente lleno de fallas de seguridad en los ojos …

      (No es como si no tuviéramos ya ejemplos de software de tales entornos. Al menos en el software, podemos darle a una biblioteca un nombre largo generalmente único. Buena suerte con una llamada de instrucción única en hardware si generalmente solo tiene 8-32 bits para trabajar sin mencionar que dos fabricantes podrían tener una implementación ligeramente diferente de lo que debería ser lo mismo … (Cada uno hizo sus propias “mejoras” a la función, por lo que se diferenciaron entre sí para casos extremos, o uno o más fabricantes introdujeron sin saberlo deficiencias de seguridad …))

      Luego está todo el segmento de predicción y predicción de ramas. Bueno, el conocimiento es un arma maravillosamente de doble filo. Pero no necesita un registro condicional para implementar una predicción de rama eficaz. Al igual que no necesita un registro de batería (esto se puede simplificar a partir de la ejecución de clasificación), o indicadores de estado, y honestamente, ni siquiera necesita un contador de programa para construir una CPU para ser justo … Pero luego se obtiene un poco demasiado lejos en mi propia opinión.)

      Pero tengo que estar de acuerdo, “esquizofrenia” es una palabra muy apropiada para describir a RISC-V en general, es una mezcla sin propósitos reales, otro más tarde intenta ser “El único ISA para todos los procesadores futuros”, algo que honestamente nunca será, principalmente debido a la naturaleza muy desorganizada de un sistema de código abierto que anima a las personas a agregar nuevas funciones sin ninguna aprobación, validación o proceso de verificación compatible …

      Al final, RISC-V es solo otra arquitectura instruccional.

      Pero esa es la cuestión, no diseño ni elijo una CPU basada en ISA. Elijo una CPU en función de su rendimiento en una tarea / carga de trabajo determinada. Y cuando diseño sistemas informáticos, empiezo con la carga de trabajo y construyo hardware para ello, la ISA se formará naturalmente en base a ese hardware. Entonces, en lo que a mí respecta, RISC-V es solo un puente prefabricado que puede no ser adecuado para mi aplicación. Y diseñar una ISA es tan simple que, honestamente, se necesita más esfuerzo para leer RISC-V, luego solo es crear una nueva ISA para la nueva arquitectura.

      Para aquellos a quienes, por otro lado, les gusta la idea de que RISC-V le da a su hardware la capacidad de ejecutar código de otra persona, entonces sí, la curva de desarrollo / aprendizaje se vuelve un poco más fácil si no necesita aprender un nuevo ISA. cada vez que cambie de CPU (o si vende un procesador, su cliente potencial ganará más fácilmente si ya conoce la parte de programación). Pero luego me gusta preguntar, ¿cuándo alguna vez programó con código de máquina sin formato? …

      En última instancia, las optimizaciones más orientadas a la CPU serán específicas de la implementación (como en el hardware), no específicas de ISA. (Sin mencionar que aprender el código de máquina de un procesador generalmente no es tan difícil, y la gran mayoría de la gente simplemente va a un ensamblador, que todavía está bastante lejos del código de máquina … Y la mayoría de los fabricantes le dan una cantidad bastante grande de documentación, en última instancia, quieren que use su sistema (los NDA, sin embargo, a veces pueden ser un problema).

      Así que, honestamente, veo lo que RISC-V quiere ser, pero sí, también puedo ofrecerle una configuración de código abierto e instructiva gratuita con todas las comodidades, y luego me doy cuenta de que depende de usted descubrir cómo implementarlo. . Y luego aprovecharlo al máximo de manera opcional para que incluso pueda incluirlo para que pueda implementarlo más fácilmente. Luego diga que puede agregar más instrucciones y características que, sinceramente, era demasiado vago para pensar en mí mismo. O simplemente puede crear su propia ISA que realmente haga lo que desee, de una manera lógica para su hardware y sus usuarios. (Y también ahorra tiempo, porque crear una ISA es así de simple …)

      • Ingeniero de Backwoods dice:

        Western Digital planea enviar mil millones de unidades con procesadores RISC-V. Supongo que no son tan escépticos como tú.

        • dnvr dice:

          WD come su propia comida. No venden vehículos recreativos a los clientes, venden productos con vehículos recreativos dentro de ellos. Para la mayoría de sus usuarios finales, hace exactamente 0 diferencias en comparación con cómo era antes de RISC-V.

          • Alexander Wikström dice:

            Sin embargo, WD ahorra algo de dinero porque no necesitan hacer tanto desarrollo en el lado del software. Y me sorprendería si su chip fuera completamente diferente de un núcleo RISC-V de estante externo. Puede ser posible tener un puñado de instrucciones más orientadas al “almacenamiento” o un impulso de cifrado.

        • Alexander Wikström dice:

          Lo curioso es que no soy escéptico sobre RISC-V.

          Es arquitectura, como cualquier otra.

          Aunque con un enfoque en ser de código abierto y dejar que las personas generalmente hagan lo que sienten, sin mucha organización detrás de ese desarrollo. Esto es algo hermoso y terrible al mismo tiempo. (Porque puede llevar a muchas funciones en conflicto usando las mismas instrucciones. Esto significa que uno no puede simplemente identificar si existe una instrucción, sino también qué instrucción es, etc.)

          Pero debo decir que el alto objetivo de que RISC-V se convierta en el ISA de referencia para los futuros procesadores es ridículamente irreal por muchas razones.

          Sin embargo, lo más probable es que se utilice donde tenga sentido.

      • Ryan dice:

        Se trata de herramientas, infraestructura y comunidad. Y RISC-V lo levanta todo. Puede ser ‘fácil’ ejecutar una nueva ISA, pero no es fácil ejecutar un backend de Clang o GCC, un montón de libros, algunas docenas de kernels gratuitos (en serio) de buena calidad que puede ejecutar con su FPGA y algo de silicio implementaciones. de los principales fabricantes para encender.

        Honestamente, muy pronto encontrará RISC-V en muchas cosas. ¿Lo encontrarás como CPU principal en tu escritorio? No más de lo que encuentras ARM allí, no. Y probablemente no como procesador principal en la mayoría de los teléfonos móviles. Pero estará íntegramente en periféricos y en aplicaciones de microcontroladores. O como los procesadores de apoyo en FPGA. Porque uno puede tomar el kernel y obtener compiladores, documentos para él, así como ingenieros de software inteligentes al respecto.

        • Marcus dice:

          Estoy de acuerdo: la ventaja real de RISC-V es que viene con una cadena de herramientas de código abierto, y el ISA básico es lo suficientemente simple como para que todos lo admitan en una pequeña CPU / procesador suave personalizado.

          Aparte de eso, estoy de acuerdo con el artículo de que RISC-V no es el ISA completo al que algunos parecen aludir, simplemente porque no existe un ISA universalmente óptimo.

          Para agregar la combinación de ISA: s, aquí hay otro RISC ISA: el MRISC32. Ver:

          The MRISC32 – A vector first CPU design

          Some features of the MRISC32 ISA

      • Pelotas dice:

        Pensando de manera abstracta sobre la predicción de ramas y requisitos de poder, sí, la “esquizofrenia” es una metáfora interesante, pero toda la literatura sobre la teoría detrás de RISC a fines de la década de 1990 enfatizó que la responsabilidad de la acción recaería en los compiladores, es decir, optimizar en el software. , no en hardware. El software es más fácil de editar.

    • lógica combinada dice:

      La predicción duele OoO, así que incluso ARM la dejó caer. Y sus ventajas para los granos simples y limpios también son insignificantes. Si desea un ISA unificado adecuado tanto para OoO como en orden, no tiene más remedio que evitar la predicción y otros efectos instruccionales implícitos similares.

    • MikePDX dice:

      Descubrí que RISC-V es un procesador suave ISA ideal para FPGA. Tiene espacios de código de operación de instrucciones personalizados bien definidos que se mantienen fácilmente en las fuentes de herramientas de ensamblaje y compilación proporcionadas. Las funciones y extensiones personalizadas implementadas en la FPGA no solo se proporcionan, sino que también se fomentan. Las pruebas de validación ISA incluyen lo que facilita la escritura de su propio núcleo.

    • deshipu dice:

      predicción → predicción

      • YGDES dice:

        No.
        Es algo diferente cuando la ejecución de una instrucción está predicada (habilitada, validada) por el estado de una bandera.

    • YGDES dice:

      ¿Quién recuerda la F-CPU? 😀

    • ecológico dice:

      Del artículo: “Muchos fabricantes de CPU lucharon para que su ISA y sus chips fueran los más populares, siendo el Z80 de Zilog y, por supuesto, el 6502 fuertes competidores de 8 bits antes de que un recién llegado llamado ‘Intel’ comenzara a buscar”.

      Intel, ¿un poco novato? Tienes esto bastante atrás.
      Intel se fundó en 1968, por lo que estaban bien establecidos antes de 1980. Para entonces, construyeron varias generaciones de microprocesadores (además de haber * inventado * el microprocesador).

      El Z80 fue un clon barato del Intel 8080. Zilog fue fundado por personas que dejaron Intel después de trabajar en el 8080.

      Intel era solo un novato en comparación con Texas Instruments y Fairchild Semiconductor, que se fundaron una década antes. Aun así, uno de los fundadores de Intel (Robert Noyce) fue co-inventor del circuito integrado.

      • Chris Maple dice:

        El Z80 era más que un clon del 8080, con más instrucciones y un registro dual. Inicialmente era mucho más caro que el 8080, casi prohibitivamente.

    • TRECE dice:

      “Al menos en lo que respecta a las guerras de la CISC contra RISC ISA, aquí podemos decir que RISC ha ganado de manera decisiva”

      ¿Ah, de verdad? ¿Está seguro?
      Las ISA dominantes en la actualidad son x86 y ARM.

      x86, por supuesto, no es RISC. Y la historia “es RISC por dentro” es bastante engañosa (podría ser menos correcto). Se trata de utilizar una línea de tubo en lugar de instrucciones secuenciales. El formato interno de las microoperaciones y las señales de canalización no crea un conjunto de instrucciones RISC, es solo que la microarquitectura de las CPU tubulares puede ser similar para RISC y CISC después de las etapas de descifrado y microcódigo.

      ARM siempre ha diseñado ISA con instrucciones bastante complejas, como turno / operación combinada, predicción, modos de dirección flexible, carga múltiple / carga en tienda, etc.

      La tendencia en los últimos 20 años ha sido agregar instrucciones. Muchas instrucciones nuevas para presentaciones de diapositivas, SIMD / media / 3D, criptografía, …

      La idea inicial de RISC (¡“reducida”!), Para eliminar la crudeza de las instrucciones y modos de dirección raramente utilizados, falló. Por supuesto, es posible crear pequeños núcleos integrados con solo una instrucción minimalista. Pero para obtener el máximo rendimiento, todas las CPU modernas tienen cientos de instrucciones.

      Una razón importante es que las ganancias de frecuencia son cosa del pasado desde principios de la década de 2000, los trucos OoO no son suficientes para ocupar todos los recursos de aplicación. Y ahora los transistores son baratos y las partes se pueden apagar para disminuir la corriente. Entonces, agregar una instrucción especial solo para calcular CRC o para alguna combinación de multiplicar, agregar un múltiplo en cantidades de 8 o 16 bits tiene sentido, incluso si representa el 0.01% del uso promedio de la CPU. Debido a que el rendimiento y la complejidad ahora dependen más de los cachés, la captura previa y la predicción de ramas, debido a que los problemas principales son la latencia de la memoria, tener una ALU, FPU e instrucción hinchadas no es una desventaja.

      Las ideas de RISC de hace 30 años, las primeras instrucciones minimalistas de SPARC y MIPS, son obsoletas al igual que la distinción entre RISC y CISC.

      • David dice:

        Estoy de acuerdo con tu muy buen comentario, pero olvidas una diferencia de RISC versus CISC: formato instructivo. En RISC es fácil, simple, limpio (incluso con muchas instrucciones) por lo que la decodificación de instrucciones es simple. A diferencia de CISC, no lo es, y el único CISC ISA importante hoy en día es x86, donde un formato de instrucción es realmente asombroso y tiene que admitir todo, desde el formato de 16 bits hasta el de 64 bits.

        Decodificar instrucciones x86, transformarlas, etc., requiere más silicio que en RISC (incluso contando RISC “complejo”), y las CPU futuras tendrán cada vez más núcleos, por lo que x86 gastará aún más silicio decodificando esas terribles ISA x86, mientras que RISC tiene una ventaja: el silicio guardado se puede utilizar para implementar más caché o más núcleos.

        Por otro lado, si observa ARM, puede ver que ISA de 64 bits es otro ISA, no solo actualizar y agregar más instrucciones en el mismo pastel. Y Apple eliminó el soporte ISA de 32 bits de su CPU antes de tiempo, el silicio Sabin, que pueden usar para obtener más rendimiento. En x86 no se pueden pensar en varias razones.

        Entonces, en x86 necesita descifrar / etc terrible ISA con origen en un fomoutibd de 16 bits incorrecto, instrucciones de todas las longitudes y diferentes formatos, todas atascadas en Frankenstein ISA con computación de 32 y 64 bits, mientras que en RISC tiene lo contrario: ISA limpio fácil de descifrar / etc. e incluso solo puedes implementar un ISA de 32 o solo 64 bits, ahorrando silicio a un menor costo y energía o dedicándolo a otras mejoras (más núcleos, más caché u otros aceleradores).

        Creo que Apple con M1 ha demostrado lo bueno que puede ser un RISC ARM moderno, adaptado a sus necesidades. Y CISC x86 puede lograrlo. Y M1 es solo el comienzo.

    • Timmie dice:

      Solo traviesa, pero es PODER, no Poder. Porque POWER es un acrónimo de Performance Optimized With Enhanced RISC.
      Paz y amor. 🙂

    • fanto dice:

      El 6502 generalmente se anuncia con transistores 3510. A partir de 2019, el mayor número de transistores en un microprocesador disponible comercialmente es de 39,54 mil millones de MOSFET, en Zen 2. De AMD. Eso equivale aproximadamente a 11 millones 6502.

    • arnd dice:

      Una respuesta bastante tardía, pero creo que vale la pena señalar que el programa MIPS Open se detuvo dos días después de la publicación: https://news.mynavi.jp/article/20191115-923870/

      En otras noticias, Cobham Gaisler, creadores de la CPU LEON de código abierto como la última implementación SPARC restante (Oracle y Fujitsu ya lo han asegurado), ahora se traslada a RISC-V: https://www.hpcwire.com/off-the -wire / de-risc-to-create-first-risc-v-pan-european-platform-for-space /

Alberto Gimenez
Alberto Gimenez

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *