¿Qué es la arquitectura CISC? Vea su importancia para las PC

¿Qué es kbyte?  |  Kilobyte (KB)

El acrónimo CISC, o Computadora con conjunto de instrucciones complejas, se refiere a un patrón de arquitectura de procesador en el que las instrucciones son más complejas y generalmente combinan múltiples operaciones más pequeñas en un mismo comando. Su mayor beneficio es que, gracias a componentes extras y especializados asociados al procesador, programar software de alto nivel es mucho más sencillo.

En los primeros ordenadores la programación se realizaba en ensamblador, lenguaje de alta correspondencia con el nivel de máquina, en el que cada instrucción corresponde directamente a una operación hardware aislada. En la práctica, el sencillo proceso de realizar una suma de 1 + 1, por ejemplo, estaría compuesto por varias instrucciones:

  • cargar datos A en el registro 0
  • cargar datos B en el registro 1
  • sumar los datos del registro 0 con los del registro 1
  • cargar el resultado de la operación en el registro 2
  • publicar datos del registro 2

Pietro Colloca, ingeniero de Intel, habló con canaltech para ayudar a aclarar detalles importantes de la arquitectura CISC, en comparación con los lenguajes de máquina y con RISC.

“Tanto RISC como CISC se llaman ISA, o Arquitectura de Conjunto de Instrucciones, es básicamente un estándar diseñado para definir cómo funcionará la computadora. CISC, rompiendo su nombre, significa Computadora con conjunto de instrucciones complejas, y su intención, aunque tenga 'complejo' en el nombre, es simplificar la vida del programador”, explica Pietro Colloca, ingeniero especialista en IA e IoT de Intel.

¿Qué es la arquitectura CISC?

El proceso complejo y compartimentado implica una programación de software extremadamente lenta y difícil. Para optimizar la tarea, los arquitectos de hardware a principios de los años 60 invirtieron en crear procesadores capaces de operar con conjuntos de instrucciones (ISA), que no son más que asociaciones de varios comandos de ensamblaje en una misma instrucción.

En 1964, IBM lanzó el System/360, uno de los primeros diseños de procesador con arquitectura CISC, precisamente para facilitar la programación y permitir que los propios ordenadores también realizaran tareas más complejas. Para lograrlo, fue necesario complejizar el propio hardware, agregando componentes especializados y evolucionando el diseño de los compiladores, permitiéndoles convertir instrucciones avanzadas en lenguaje de máquina.

Principios de la arquitectura CISC

Con esto, se agrupan múltiples pasos del código en instrucciones más grandes ejecutadas en niveles superiores de hardware, como controladores, aceleradores u otros componentes integrados en el chip de la CPU. Incluso en RISC, los pasos son más simples y relativamente parecidos al ensamblaje, y constan de al menos 5 pasos independientes (Buscar, Decodificar, Ejecutar, Acceder, Escribir).

Vale la pena enfatizar que las instrucciones van más allá de las operaciones aritméticas básicas, incluyendo también el movimiento de datos, operaciones lógicas, como condiciones y negaciones, y control del flujo de información, como direccionamiento y llamadas de datos.

Conjunto complejo de instrucciones.

En CISC, todos los pasos de la operación de suma matemática se pueden limitar a simplemente "sumar 1 y 1", con los pasos de suma posteriores ya preprogramados en cada acelerador. Ao executar um comando, uma unidade de controle decodifica a instrução “soma” em linguagem de máquina — ou microcódigos —, interpreta todas as etapas pré-programadas para aquela função, bem como a ordem de execução, recodifica e envia as instruções para o caminho de dados.

En un ejemplo muy simplista, la arquitectura CISC sería el equivalente a programar una macro de teclado compleja para un MMO. En lugar de hacer clic individualmente en consumir una poción, activar una habilidad que aumenta la fuerza, otra habilidad que aumenta la velocidad y realizar el ataque para abrir el combate, simplemente cree una línea de comando que realice todas estas tareas en un orden específico y defina una clave.

Instrucciones de tamaño variable

Al permitir una mayor complejidad de operaciones en un mismo comando, las instrucciones CISC también pueden tener tamaños variables. Volviendo a la operación de suma, como es sumamente sencilla, acaba siendo similar en CISC y RISC, pero podríamos, por ejemplo, crear una instrucción con condiciones:

  • Registro 0 = A, Registro 1 = B
  • Si R0 es igual a R1, suma A y B
  • Si R0 es menor que R1, suma 1
  • Si R0 es mayor que R1, termine

En este ejemplo, que no representa funciones de programación reales, se describen varias operaciones complejas, como comparar datos de dos registros y realizar diferentes operaciones dependiendo de los datos devueltos por la comparación. Dependiendo del diseño de una CPU RISC y de cuán reducidas deben ser las instrucciones para su hardware, los pasos de comparación, la primera operación condicional y la segunda operación condicional deberán describirse en comandos separados.

En CISC, las operaciones de comparación hipotéticas, por ejemplo, se pueden asociar con la misma función de suma, siempre que haya aceleradores preprogramados en el conjunto para ejecutar esta instrucción compleja. Con esto es posible escribir un código final más simple, pero con instrucciones internas más largas que ejecutarán toda la función, sin que el programador tenga que describir cada paso.

Naturalmente, debido a que hay tantos pasos interdependientes realizados por la misma instrucción compleja, los tiempos de ejecución variarán dependiendo del tipo, tamaño y complejidad de la instrucción.

Manipulación directa de operandos.

Uno de los elementos de la arquitectura CISC que permite las instrucciones más complejas es también una de sus limitaciones. Según Pietro, tanto RISC como CISC tienen la capacidad de manipular operandos directamente, con algunas diferencias en cómo se hace esto en cada arquitectura.

"Las operaciones que se realizan directamente en CISC requieren más ciclos de reloj porque se escribirán de una manera más simplificada pero se ejecutarán de una manera más compleja".

Para poder operar todos los elementos de una cadena compleja de instrucciones, todos los datos deben almacenarse en la memoria del sistema. De esta manera, es posible manipular directamente todos los operandos (elementos) de la instrucción sin necesidad de ir y venir de registros.

Una vez realizada la búsqueda o carga de información en registros, ésta se almacena en la memoria, la función se ejecuta en la propia memoria y solo se devuelve el resultado y se escribe en el registro designado.

Baja dependencia de registros (direccionamiento directo)

Otro punto importante es que, como todas las operaciones se realizarán a nivel de memoria, la dirección en memoria debe ser la misma que la dirección efectiva de los registros. Esto permite dimensionar el número máximo de registros que se necesitan para conformar el diseño de la CPU, ya que no se necesitarán registros para datos transitorios de tareas en ejecución, solo aquellos efectivos para el límite de operandos.

Por otro lado, este enfoque requiere un volumen de memoria mucho mayor para ser eficaz. Además, la velocidad de operación de los datos en la memoria es mucho menor que la de las operaciones realizadas directamente en los registros, lo que afecta el rendimiento del sistema.

Gran conjunto de instrucciones

Una ventaja muy significativa de la arquitectura CISC es que, como se mencionó, los conjuntos de instrucciones se programan en aceleradores dedicados, como MMX o AVX2, y no directamente en el microcódigo de la CPU. Por tanto, cada acelerador implementado garantiza que los procesadores x86 actuales, por ejemplo, podrán ejecutar las mismas instrucciones que el primer Pentium MMX.

Es por eso que la arquitectura x86 tiende a ser más amigable para trabajar en compatibilidad con aplicaciones y hardware heredados. Como todas las instrucciones necesarias ya están integradas, son suficientes algunos ajustes de código a nivel de software, como una posible emulación de sistemas operativos más antiguos.

"[A Intel] Trajimos la arquitectura x86 en 1978, con el 8086, y a medida que avanzábamos, agregamos cosas, como nuestros aceleradores: MMX, SSE, AVX2, etc. Esto es precisamente para simplificar las operaciones matemáticas. [no nível do hardware]. Usamos aceleradores para facilitar la escritura y ejecución de códigos".

Debido a que están diseñados para acomodar naturalmente menos instrucciones, los conjuntos antiguos o que no tienen sentido para una CPU RISC simplemente no se implementan. Por este motivo, los procesadores RISC no suelen ser compatibles con programas de modelos diferentes o anteriores.

"[Nos CPUs Intel] Hay dos arquitecturas x86 diferentes, Golden Cove y Gracemont están enfocadas a propósitos diferentes, mientras que P-Core tendrá capacidades como hyperthreading, E-Core está dirigido a una mayor eficiencia. [Comparando os big.LITTLE ARM e x86] El concepto puede ser parecido, pero a la hora de montarlo no es lo mismo. "

Productos que utilizan procesadores CISC

Después del System/360 de IBM, varios fabricantes de semiconductores se alejaron de las CPU exclusivamente programables en ensamblaje y diseñaron chips basados ​​en CISC. Crear un hardware técnicamente más complejo, pero más sencillo de programar, fue un cambio que aceleró muy rápidamente el avance de la informática, ya que permitió crear más software en menos tiempo y para aplicaciones más variadas.

Intel (x86)

Naturalmente, los productos CISC más conocidos son los procesadores Intel, desde el primer 8080 hasta el 8086, que sirven de base a la arquitectura x86 que prácticamente domina el mercado nacional de PC hasta el día de hoy.

Actualmente, con la arquitectura de núcleo híbrido, Intel ha comenzado a adoptar enfoques similares a los utilizados en RISC, brindando núcleos de eficiencia para instrucciones más simples y núcleos de rendimiento para instrucciones complejas. Básicamente, sigue siendo una CPU x86, pero mucho más versátil de lo que era posible hasta el Intel Core de 11.ª generación.

AMD (x64)

Los procesadores AMD también utilizan la arquitectura CISC y la empresa es la única entre los fabricantes de CPU que todavía compite con Intel en el sector de procesadores nacionales. La nomenclatura x64 en lugar de x86 proviene de que AMD adoptó conjuntos de instrucciones de 64 bits antes que Intel en sus procesadores.

Durante mucho tiempo, la arquitectura x86 fue sinónimo de ISA de 32 bits, y con la llegada de los procesadores AMD de 64 bits en 2003, la empresa adoptó el nuevo código para diferenciarse de la competencia. Recién en 2004 Intel introdujo conjuntos de 64 bits en sus CPU, aprovechando la versatilidad inherente de la arquitectura CISC, algo que en RISC requeriría un rediseño completo del diseño.

motorola 68000

Durante muchos años, Motorola también actuó como fabricante de procesadores, utilizando principalmente arquitectura RISC. En 1979, la empresa desarrolló el Motorola 68000, o m68k, en CISC, pero heredó muchas de las características de eficiencia y ISA de diseños anteriores.

Actualmente se siguen desarrollando evoluciones del m68k, aunque sólo para algunos sistemas integrados, principalmente en el segmento de automatización y telecomunicaciones.

VAX

Digital Equipment Corporation CPUS introdujo conjuntos de instrucciones VAX (Virtual Address eXtension), que combinan elementos de la arquitectura CISC, como el acceso a direcciones de memoria virtual, con diseños para código ensamblador. En la práctica, los VAX se consideran proyectos CISC debido al patrón operativo de su chip y la ruta de datos, pero sus conjuntos de instrucciones están mucho más cerca del lenguaje de máquina.

Ventajas y desventajas de la arquitectura CISC

Originalmente, los procesadores CISC fueron desarrollados para facilitar la programación de aplicaciones de alto nivel, transformando instrucciones básicas, como cargar registros, en pasos incorporados a comandos simplificados. Sin embargo, simplificar procesos en un extremo implica crear hardware más complejo, entre otras cuestiones.

Beneficios

  • Facilidad de implementar nuevos comandos: dado que la mayoría de los pasos básicos de control y acceso a datos están preprogramados en microcontroladores, la creación de nuevos tipos de comandos no requiere rediseñar la estructura profunda de los conjuntos de instrucciones.
  • Compiladores más sencillos: teniendo en cuenta que la mayor parte del código de bajo nivel se procesa en microcontroladores y aceleradores, los compiladores CISC acaban siendo más sencillos, ya que su carga de trabajo es reducida respecto a las máquinas RISC o Ensambladoras.
  • Versatilidad de tareas: simplificar la programación de alto nivel y facilitar la creación de código sin modificar la estructura de las instrucciones también permite a las CPU CISC realizar tareas mucho más diversas y complejas.
  • Compatibilidad con versiones anteriores: a medida que se envían nuevos aceleradores con cada generación, se agregan más instrucciones sin perder la compatibilidad con conjuntos anteriores. Como resultado, las PC modernas pueden ejecutar aplicaciones antiguas y máquinas heredadas con cierta facilidad.

Desventajas

  • Más transistores: reducir el volumen de códigos de alto nivel en favor de microcontroladores y aceleradores dedicados a gestionar comandos complejos implica aumentar siempre el número de transistores en las CPU.
  • Mayor consumo: naturalmente, con el volumen cada vez mayor de transistores y componentes integrados, el consumo de energía también aumenta con cada generación. Además, las instrucciones más complejas casi siempre requieren más ciclos computacionales para ejecutarse, lo que reduce la eficiencia energética.
  • Menor eficiencia térmica: un mayor consumo de energía también da como resultado una mayor producción de calor, lo que requiere soluciones de refrigeración extremadamente robustas para evitar daños por sobrecalentamiento.
  • Más caro: un hardware mucho más complejo con miles de aceleradores dedicados encarece considerablemente el proceso de fabricación de chips, influyendo incluso en la tasa de utilización de las obleas de silicio.

En condiciones reales de uso, optar por diseños CISC o RISC siempre implicará hacer concesiones, priorizando uno u otro elemento de cada arquitectura en función de la aplicación del producto. Por eso, prácticamente todos los procesadores modernos son, de alguna manera, híbridos, utilizando conceptos de ambos estándares.

Si bien Apple trabaja con sus procesadores M1, M2 y el nuevo M3 utilizando esencialmente la arquitectura RISC, sus diseños también incluyen instrucciones complejas y otros elementos CISC. Intel, desde Alder Lake, ha optado por un enfoque híbrido, adoptando núcleos de rendimiento con hyperthreading y ejecución compleja, asociados a núcleos de eficiencia dirigidos precisamente a instrucciones de bajo nivel.

Fuente: Computación en la nube: teoría y práctica, tercera edición, Dan Cristian Marinescu; Educativo.io; Ingenierosgarage.com; fábrica de especias; Universidad Stanford; Medio; Universidad de Tennessee; AHIRLABS; IBM

Subir