Está en la página 1de 10

Universidad Nacional de Ingeniería

Facultad de electrotecnia y computación


Recinto universitario Simón Bolívar

Maquinas de Computadoras II.


Arquitectura CISC.

Integrantes:
 Claudia Auxiliadora Méndez Torres………………… 2007-21558
 Eduardo Javier Flores……………………………………...2007-21440

Docente: Ing. Fernando Rivas.

Grupo: 4T1-EO

Jueves 21 de octubre de 2010.


ARQUITECTURA CISC

Complex Instruction Set Computer (Computadoras con un conjunto de


instrucciones complejo).

Intel es el principal fabricante de procesadores CISC pero hay otros fabricantes de


CISC que han conseguido hacerse un hueco en el mercado del ordenador personal.
Cyrix es tal vez el más extendido y, aunque no consigue rendimientos como los de
Intel, muchos ensambladores de PC utilizan sus chips para colocarlos sin decirlo en
sus ordenadores, obviamente no especifican el comerciable “Intel Inside” pero el
consumidor lo nota en su bolsillo. AMD es el segundo fabricante importante de
chips CISC y aunque sus últimas series K5 no han estado a la altura de las
circunstancias, se espera que el K6 ya soporte MMX y alcance o supere al Pentium
Pro. IMS es el tercero y más reciente fabricante de procesadores que van a
remolque de Intel.

Los microprocesadores CISC tienen un conjunto de instrucciones que se


caracteriza por ser muy amplio y permitir operaciones complejas entre
operando situados en la memoria o en los registros internos, en
contraposición a la arquitectura RISC.

Esta arquitectura se basa en que cada instrucción puede corresponder a


varias operaciones de bajo nivel, tales como leer de memoria, operación
aritmética, escribir en la memoria, sumar datos… todo en una sola
instrucción.

Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo


que, en la actualidad, la mayoría de los sistemas CISC de alto rendimiento
implementan un sistema que convierte dichas instrucciones complejas en
varias instrucciones simples del tipo RISC, llamadas generalmente
microinstrucciones.

La microprogramación es una característica importante y esencial de casi


todas las arquitecturas CISC. Como por ejemplo:
Intel 8086, 8088, 80286, 80386, 80486.
Motorola 68000, 68010, 68020, 68030, 6840.

La microprogramación significa que cada instrucción de máquina es


interpretada por una microprograma localizada en una memoria en el
circuito integrado del procesador.

En la década de los sesentas la microprogramación, por sus características,


era la técnica más apropiada para las tecnologías de memorias existentes en
esa época y permitía desarrollar también procesadores con compatibilidad
ascendente. En consecuencia, los procesadores se dotaron de poderosos
conjuntos de instrucciones.

Las instrucciones compuestas son decodificadas internamente y ejecutadas


con una serie de microinstrucciones almacenadas en una ROM interna. Para
esto se requieren de varios ciclos de reloj (al menos uno por
microinstrucción).

¿Por qué entonces CISC?

El CISC ha sido motivado por dos razones:

1. El deseo de simplificar los compiladores, la idea es que las


instrucciones de la CPU se asemejen a las instrucciones de los HLL.

SIN EMBARGO, la tarea de encontrar justo la instrucción en un


conjunto muy grande de instrucciones es una tarea compleja, muchas
veces los compiladores terminan usando las instrucciones sencillas.

2. Aumentar el desempeño de las CPU produciendo programas más


pequeños y más rápidos.

SIN EMBARGO, con CISC se disminuye el número de instrucciones no el


número de bytes del código máquina, la decodificación de
instrucciones más grandes no es necesariamente más rápida que la
decodificación de instrucciones pequeñas. Las velocidades entre CISC y
RISC son comparables.

CARACTERISTICAS DE LA ARQUITECTURA CISC

• El propósito esencial de una arquitectura CISC es intentar proporcionar


única instrucción de máquina para cada enunciado que esté escrita en
un lenguaje de alto nivel.

• Otra característica de la arquitectura CISC es la incorporación de


formatos de instrucciones de tamaño variable.

• Las instrucciones que necesitan operandos de registros pueden tener


sólo dos bytes de longitud, pero las instrucciones que necesitan
direcciones de memoria pueden necesitar cinco bytes para incluir todo
el código de la instrucción.

Las instrucciones en un procesador CISC típico proporcionan la


manipulación directa de los operando que residen en la memoria. Por
ejemplo, una instrucción ADD puede especificar un operando en la
memoria mediante un direccionamiento de índice y un segundo operando
en la memoria por medio de un direccionamiento directo. Aunque los
procesadores CISC tienen instrucciones que sólo utilizan registros de
procesador, la disponibilidad de otros modos de operaciones tiende a
simplificar la compilación de lenguajes de alto nivel. Sin embargo,
conforme se incorporan más instrucciones y modos de direccionamiento
en una computadora, se necesita más circuitería lógica para
implementarlos y soportarlos, y esto puede producir que los cálculos se
hagan lentos.
Arquitectura CISC

Vale la pena considerar que CISC no representa una propuesta de


arquitectura de procesador en el sentido usual. CISC refleja la forma en que
se desarrollaban y las mejoras que se habían introducido a las arquitecturas
de procesadores hasta, más o menos, 1975. CISC, el Computador con un
Conjunto Complejo de Instrucciones (Complex Instruction Set Computer),
representa el nombre la corriente principal desarrollada en arquitectura de
computadores y, quizás, podríamos entender que es el nombre que se dio a
la tendencia a la cual el movimiento RISC se oponía.

Crisis del Software

Durante los años ’70 se produce el fenómeno conocido como la Crisis del
Software, los costos del software subían considerablemente, frente a costos
de hardware que se hacían cada vez más accesibles1. Frente a esta
problemática, la respuesta de la comunidad podría plantearse de la siguiente
forma: Si una función es de uso recurrente, ¿por qué no implementarla en
Hardware?
Una propuesta para nada irracional, considerando que el hardware era un
recurso cada vez más barato frente al costo de la hora programador.

Arquitectura de Computador basada en un Lenguaje de Alto Nivel

Resulta interesante el hecho de que la implementación en hardware de


funcionalidades de alto nivel disminuye la distancia entre la máquina y el
constructor de compiladores, que se da cuenta de que su labor cambia.
Desde un tener que implementar los comandos más básicos del lenguaje de
alto nivel utilizando assembly, a encontrarse con que complejas funciones de
alto nivel ya pueden ser realizadas por el hardware; que el mapeamiento que
estaba acostumbrado a hacer de una instrucción a muchas se ha
transformado en uno-a-uno.
Esto es lo que se llamó HLLCA, Arquitectura de Computador basada en un
Lenguaje de Alto Nivel (High Level Language Computing Architechture),
donde parecería no existir diferencia entre un programa en el assembly de
una máquina y un programa en un lenguaje como C. Esta arquitectura
representa el concepto de CISC llevado al extremo.

Instrucciones Complejas

Supongamos, como en [5], la existencia de un lenguaje de alto nivel en un


computador cuyo lenguaje assembly posee al menos las siguientes
instrucciones:
MOVER [registro de destino, integer o registro de origen] : toma un valor,
entero o el contenido de otro registro, y lo ubica en el registro de destino.
Así, MOVER [D, 5] pondrá un número 5 en el registro D.
MOVER [D, E] tomará el valor almacenado en el registro E y lo copiará en D.
MUL [registro de destino, entero o registro multiplicando] : toma el
contenido del registro de destino, lo multiplica por el número entero o el
contenido del registro entregado como segundo parámetro y pone el
resultado en el registro de destino. Así, MUL [D, 70] multiplicará el contenido
de D por 70 y pondrá el resultado en D. MUL [D, E] multiplicar
´a el contenido de D por el contenido de E y pondrá el resultado en D.
Podemos imaginar entonces un lenguaje de alto nivel, al que llamaremos
HLL, inmerso en un sistema en el cual la operación elevar un número a la
cuarta potencia es una operación recurrente. La tabla 1 muestra cómo sería
la traducción HLL! assembly que se haría en esta máquina.

Tabla 1: Lenguaje de Alto Nivel (HLL) y Assembly no CISC

El enfoque CISC sugeriría la inclusión de una nueva instrucción en este


sistema:
CUARTA [registro de destino, entero o registro base] : toma el contenido del
entero o registro base y lo eleva a su cuarta potencia, para luego poner el
resultado en el registro de destino. CUARTA [D, E] toma el valor que hay en E,
lo eleva a la cuarta potencia y pone el resultado en D, y CUARTA [D, 10]
obtiene 104 y lo almacena en D.
La tabla 2 muestra cómo debería ser el programa escrito en assembly.

Tabla 2: Lenguaje de Alto Nivel (HLL) y Assembly CISC

Por supuesto en una máquina CISC la misma instrucción debería poder


realizarse de las dos formas, siendo ambas igualmente correctas, pero una de
ellas resultará de más alto nivel, lo que facilitará las tareas de mantención
y debugging.

Direccionamiento de Datos

El acceso a los datos en una máquina CISC toma la filosofía asociada


inicialmente a las instrucciones, es decir, se entiende que se facilita la tarea
de programación minimizando el uso de instrucciones de bajo nivel, y
proporcionando instrucciones que sean capaces de hacer el máximo posible.
Podríamos entender que en un computador que se corresponde con el
diagrama de la figura 2 se pretende realizar la siguiente operación en nuestro
HLL:

Figura 2: Máquina - Registros – Memoria X=X*Y


Donde la variable X se refiere al espacio de memoria en la posición 2:3,
mientras que la variable Y corresponde a la posición de memoria 5:2.

Tabla 3: Operación de Multiplicación cargando a registros los datos existentes en la


memoria

Lo que se podría haber hecho con una secuencia de instrucciones como la


que aparece en la tabla 3, es decir, cargar en registros los valores que
estaban almacenados en la memoria, luego operar, y finalmente entregar
resultados, para este tipo de operatoria la corriente principal CISC sugería
establecer una operatoria distinta y mucho más compacta. El enfoque CISC
sugeriría claramente la incorporación de una nueva instrucción que sea capaz
de realizar todo esto, es decir, una instrucción de multiplicación que pueda
operar directamente con los datos en la memoria, como la que aparece en la
tabla 4.

Tabla 4: Operación de Multiplicación operando directamente sobre los datos existentes en


la memoria

Implementación del Set de Instrucciones

No es necesario explicar que mediante este esquema de decisión acerca de


cuáles deben ser las instrucciones a implementar en una arquitectura, se
produce una explosión en el número de estas. Para cada operatoria a
realizar, para cada tipo de dato pertinente a la operación y para cada uno de
las formas de direccionamiento existente en dicha arquitectura
probablemente sería necesario implementar una instrucción.
Es así que esta explosión en el número de instrucciones a implementar en un
procesador CISC da origen a una nueva decisión:

Ejecución Directa: Cada una


de las instrucciones necesarias se implementa
directamente, mediante transistores, dentro del procesador. Es decir, cada
instrucción que pueda ejecutar dicho procesador tendrá un conjunto de
componentes que se dedican exclusivamente a dicha instrucción.

Microprogramación: Se incorpora en el procesador un nivel de procesamiento


adicional. Se entiende que cada una de las instrucciones de un procesador es
un pequeño programa codificado en un lenguaje interno a la máquina.

El elevado número de componentes que requería la implementación de un


mecanismo de ejecución directa de cada una de las instrucciones de la
arquitectura de un procesador, hacía difícilmente posible la implementación
de este modelo. Por otro lado, la microprogramación de instrucciones parece
lo más adecuado, entre otras razones, por la economía que representa en
términos de espacio físico: ya no es necesario incorporar en hardware todos
los componentes que requerirá una instrucción codificada; resulta mucho
más simple almacenar microprogramas asociados a cada instrucción de la
Máquina, además de un pequeño motor capaz de ejecutar estas
microprogramas dentro del procesador (figura 3).

Figura 3: Implementación de Microcódigo


Por supuesto, este enfoque condujo a otros problemas. El precio que había
que pagar para acercar el nivel hardware hacia el software fue trasladar la
llamada Crisis del Software a la máquina, pues las microprogramas se hacían
cada vez mucho más complejas y por lo mismo, propensos a errores.

CISC resultó una arquitectura que se caracterizaba por una gran variedad de
formas de direccionamiento y una gran cantidad de instrucciones2. Estos
hechos hicieron innecesaria la existencia de un gran número de registros en
el procesador, y los pocos que existían eran utilizados por las instrucciones
CISC para llevar a cabo su operatoria.
Así, la apuesta de CISC de mover la complejidad del software hacia el
Hardware se refleja en programas con un menor número de instrucciones. El
gran número de instrucciones no era un principio en la arquitectura CISC,
sino que era una situación derivada de la combinación de las diferentes
instrucciones necesarias en el sistema con las diferentes formas de
direccionamiento requeridas.
Capaces de ejecutar tareas muy complejas lo que puesto en la ecuación 1,
debería disminuir el tiempo de ejecución de un programa.

Pese a que la microprogramación incorporaba un nivel adicional de ejecución


de instrucciones, el costo en tiempo de este nivel adicional no era
significativamente alto, pues los microinstrucciones y las microprogramas
eran almacenados en una memoria cercana al control y mucho más rápido
que la memoria principal.

También podría gustarte