CISC
En la ilustración 1.1 vemos un un diagrama representando el esquema de almacenamiento para una computadora cualquiera. La memoria principal está dividida en filas y columnas. La unidad de ejecución es responsable por cargar todos los cálculos. Sin embargo, la unidad de ejecución solo puede operar en datos que han sido cargados en algunos de los seis registros (A,B,C,D,E o F). Digamos que queremos encontrar el producto de dos números, uno ubicado en la ubicacion 2:3 y otro ubicado en la ubicación 5:2, y luego almacenar el producto en la ubicacion 2:3.
El objetivo principal de la arquitectura CISC es el completar una tarea en tan pocas líneas de ensamblado como sea posible. Esto es logrado mediante la construcción de un procesador que es capaz de entender y ejecutar una serie de operaciones. Para esta tarea en particular, un procesador CISC vendría preparado con una instrucción especifica (la llamaremos "MULT"). Cuando se ejecute, esta instrucción carga los dos valores dentro de registros separados, multiplica los operandos en la unidad de ejecución, y luego almacena el producto en el registro apropiado. Por lo tanto, toda la tarea de multiplicar dos números puede ser completada con una instrucción:
MULT 2:3, 5:2
MULT es lo que se conoce como una "instrucción compleja". Opera directamente en los bancos de memoria de la computadora y no requiere que el programador llame de manera explicita alguna funcion de carga o almacenamiento. Se parece de manera cercana a un comando de lenguaje de alto nivel. Por ejemplo, si decimos que "a" representa el valor que hay en 2:3 y que "b" representa el valor que hay en 5:2, entonces este comando es idéntico a la declaración de C "a = a * b".
Una de las principales ventajas de este sistema es que el compilador tiene poco trabajo que hacer para traducir una declaración de alto nivel a ensamblador. Porque la longitud del código es relativamente corta, poca RAM es requerida para almacenar instrucciones. Se hace énfasis en construir instrucciones complejas directamente en el hardware.
RISC
Los procesadores RISC solo usan instrucciones simples que puedan ser ejecutadas dentro de un ciclo de reloj. Por lo tanto, la instrucción "MULT" descrita anteriormente podría ser dividida en tres comandos diferente: "LOAD", que mueve datos del banco de memoria a un registro, "PROD", que encuentra el producto de dos operandos ubicados dentro de los registros, y "STORE", que mueve datos de un registro a los bancos de memoria. En orden para realizar exactamente la serie de pasos descritos en el tipo CISC, un programador necesitaría codificar cuatro líneas de ensamblador:
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
Al inicio, esto podría parecer una manera mucho menos eficiente de completar la operación. Porque hay mas lineas de codigo, mas RAM es necesitada para almacenar las instrucciones de nivel ensamblador. El compilador también debe realizar mas trabajo para convertir una declaración de lenguaje de alto nivel en código de esta manera.
Porque cada instrucción requiere solo un ciclo de reloj para ejecutarse, todo el programa se ejecuta en aproximadamente el mismo periodo de tiempo que el multi-ciclo "MULT". Estas instrucciones reducidas de RISC requieren menos transistores de espacio de hardware que las instrucciones complejas, dejando mas espacio para los registros de propósito general.
Separar las instrucciones "LOAD" y "STORE" realmente reduce la cantidad de trabajo que el computador debe realizar. Después de un comando "MULT" de tipo CISC es ejecutado, el procesador automáticamente borra los registros. Si uno de los operandos necesita ser usado para otro calculo, el preocesador debe recargar los datos desde el banco de memoria hacia el registro. En RISC, el operando continuara almacenando en el registro hasta que otro valor sea cargado en su lugar.
![]() |
Ilustración 1.1 |
No hay comentarios:
Publicar un comentario