2.5 Filosofías CISC y RISC
El diseño del repertorio de instrucciones es una decisión estratégica clave en la arquitectura de procesadores, ya que determina no solo el rendimiento del sistema, sino también la complejidad del hardware y del software, en particular del compilador. Dos de las filosofías más influyentes en este campo son CISC (Complex Instruction Set Computing) y RISC (Reduced Instruction Set Computing). Mientras que CISC prioriza la reducción del número de instrucciones necesarias para realizar tareas complejas mediante operaciones multifuncionales, RISC simplifica el conjunto de instrucciones con el objetivo de maximizar la velocidad y la eficiencia energética. En esta sección se analizan ambos enfoques y sus implicaciones en el diseño de procesadores (John L. Hennessy and Patterson 2017a; Patterson et al. 2014).
El debate entre las filosofías CISC y RISC se remonta a fines de la década de 1970, cuando se comenzaron a cuestionar los beneficios reales de los repertorios de instrucciones complejos. Mientras las primeras generaciones de computadoras buscaban reducir el número de instrucciones por programa, investigaciones posteriores demostraron que un conjunto reducido y eficiente de instrucciones podía mejorar significativamente el rendimiento al simplificar la ejecución y optimizar el uso del hardware.
La evolución de los procesadores ha llevado a un enfoque más equilibrado, donde las arquitecturas modernas combinan elementos de ambas filosofías. Las arquitecturas modernas tienden a incorporar elementos de ambas filosofías. Por ejemplo, x86 adopta técnicas de ejecución interna propias de RISC para aumentar su rendimiento, mientras que procesadores RISC como ARM han introducido extensiones complejas para tareas específicas, acercándose parcialmente al enfoque CISC (John L. Hennessy and Patterson 2017a; Patterson et al. 2014).
2.5.1 CISC
Las arquitecturas CISC, como la x86, se caracterizan por su enfoque en reducir el número de instrucciones requeridas para completar operaciones complejas. Esto se logra mediante la inclusión de instrucciones que combinan múltiples operaciones en un solo ciclo. Como resultado, los programadores necesitan escribir menos líneas de código para alcanzar un objetivo específico.
Sin embargo, este diseño implica ciertas desventajas. La decodificación y ejecución de instrucciones CISC requiere un hardware considerablemente más complejo, y las instrucciones de longitud variable, típicas de estas arquitecturas, pueden aumentar el tiempo de decodificación. Esto genera cuellos de botella en el pipeline y limita el rendimiento.
Un ejemplo representativo es la arquitectura x86, que ha incorporado técnicas internas de ejecución similares a RISC —como la descomposición de instrucciones mediante microcódigo— con el fin de mejorar el rendimiento sin abandonar su repertorio complejo. Utiliza microcódigo para descomponer las instrucciones complejas en operaciones más simples, parecidas a las de un procesador RISC. Aunque esta estrategia mejora la eficiencia de ejecución en algunos casos, el diseño sigue siendo más costoso en términos de consumo energético y complejidad (Patterson et al. 2014).
En consecuencia, el diseño del repertorio de instrucciones —incluyendo operaciones, modos de direccionamiento y formatos— constituye la interfaz crítica entre hardware y software, afectando tanto la eficiencia de ejecución como la expresividad de los programas. Su diseño influye directamente en la eficiencia del procesamiento y en la forma en que los programas interactúan con la arquitectura subyacente, lo que refuerza su relevancia en el estudio de la arquitectura de computadoras.
2.5.2 RISC
Las arquitecturas basadas en RISC, en contraste con CISC, se caracterizan por emplear instrucciones simples y de longitud fija. Esta simplificación facilita la decodificación y permite que muchas instrucciones se ejecuten en un solo ciclo de reloj. Además, esta filosofía favorece la implementación de técnicas avanzadas como el pipelining y la predicción de ramas, optimizando así el rendimiento.
A nivel de hardware, RISC prioriza la eficiencia energética, una característica crucial en dispositivos móviles y sistemas embebidos. Por ello, procesadores como los basados en ARM han dominado estos mercados, especialmente en dispositivos móviles, debido a su bajo consumo energético. La simplicidad y el bajo CPI (ciclos por instrucción) han sido factores determinantes en su adopción (John L. Hennessy and Patterson 2017b).
2.5.3 Comparativa entre CISC y RISC
Las diferencias entre CISC y RISC son evidentes tanto a nivel de diseño como de implementación. En las arquitecturas RISC, las instrucciones tienen una longitud fija, lo que simplifica la decodificación, reduce la latencia y mejora la predictibilidad del rendimiento. Además, este formato mejora la eficiencia del uso de la memoria caché, al ocupar menos espacio y facilitar accesos más rápidos.
En cambio, las arquitecturas CISC, como x86, emplean instrucciones de longitud variable, lo que les permite ofrecer una mayor flexibilidad y un repertorio más amplio de operaciones. Sin embargo, esta flexibilidad conlleva un mayor tiempo de decodificación y una complejidad adicional en la implementación del pipeline. Esto puede causar problemas como interrupciones en el flujo debido a errores de predicción de ramas, aunque se mitiguen mediante técnicas avanzadas como la predicción dinámica de saltos y el prefetching (Tanenbaum 2016).
Por ejemplo, en RISC, los modos de direccionamiento son simples y permiten un acceso más rápido a los operandos, reduciendo la latencia en el pipeline (Stallings 2021). En CISC, los modos de direccionamiento más complejos proporcionan flexibilidad a costa de una mayor latencia, lo que impacta negativamente en el rendimiento general del sistema.
2.5.3.1 Ejemplos de instrucciones
Para ilustrar la diferencia entre ambas filosofías, se presenta el siguiente ejemplo: cargar dos valores de memoria, sumarlos y almacenar el resultado en una dirección de memoria.
Una arquitectura bajo la filosofia RISC es RISC-V, que utiliza instrucciones simples y de longitud fija. En este caso, la instrucción para cargar un valor de memoria en un registro es lw
(load word), y la instrucción para almacenar el resultado es sw
(store word). La suma se realiza con la instrucción add
.:
# Cargar el valor de mem1 en el registro t0 (R1)
lw t0, 0(mem1) # t0 = MEM[mem1]
# Cargar el valor de mem2 en el registro t1 (R2)
lw t1, 0(mem2) # t1 = MEM[mem2]
# Sumar los registros t0 y t1, guardar el resultado en t2 (R3)
add t2, t0, t1 # t2 = t0 + t1
# Guardar el resultado en mem1
sw t2, 0(mem1) # MEM[mem1] = t2
Una arquitectura bajo la filosofia CISC es x86, que utiliza instrucciones más complejas y de longitud variable. En este caso, la instrucción para cargar un valor de memoria en un registro es MOV
, y la instrucción para almacenar el resultado es también MOV
. La suma se realiza con la instrucción ADD
:
; Cargar el valor almacenado en mem1 en el registro EAX
MOV EAX, [mem1]
; Sumar el valor almacenado en mem2 al registro EAX
ADD EAX, [mem2]
; Guardar el resultado de la suma de vuelta en mem1
MOV [mem1], EAX
La tabla 2.5 sintetiza las principales diferencias estructurales y operativas entre las filosofías CISC y RISC, destacando sus implicancias en el diseño del hardware y el rendimiento general del sistema.
Aspecto | CISC | RISC |
---|---|---|
Objetivo principal | Minimizar el número de instrucciones para operaciones complejas | Simplificar el conjunto de instrucciones para optimizar velocidad y eficiencia energética |
Tipo de instrucciones | Instrucciones complejas, longitud variable | Instrucciones simples, longitud fija |
Decodificación y ejecución | Requiere hardware más complejo, posibles cuellos de botella en el pipeline | Decodificación más sencilla, facilita el uso de técnicas avanzadas como pipelining |
Longitud de instrucciones | Longitud variable, puede aumentar el tiempo de decodificación | Longitud fija, simplifica la decodificación y mejora la predictibilidad del rendimiento |
Eficiencia energética | Menor eficiencia energética en comparación con RISC | Mayor eficiencia energética, especialmente en dispositivos móviles |
Modos de direccionamiento | Flexibilidad a costa de mayor latencia | Acceso más rápido a los operandos, menor latencia |
2.5.3.2 Convergencia de filosofías
A pesar de sus diferencias, las arquitecturas modernas tienden a integrar características de ambas filosofías. Por ejemplo, los procesadores x86 adoptan técnicas propias de RISC para mejorar la eficiencia energética y el rendimiento. Esta convergencia refleja cómo los avances en diseño de procesadores buscan combinar lo mejor de cada enfoque, maximizando la flexibilidad y la eficiencia para adaptarse a las necesidades actuales y futuras del mercado.
La Figura 2.7 muestras la convergencia entre estas dos filosofías:

Figura 2.7: Convergencia de filosofías
En síntesis, las filosofías CISC y RISC representan enfoques contrastantes pero complementarios en el diseño de arquitecturas de procesadores. Su comprensión no solo es esencial para analizar el rendimiento y la eficiencia energética de los sistemas modernos, sino también para formar una base sólida en la enseñanza de arquitectura de computadoras, especialmente en contextos donde se emplean simuladores didácticos.