CISC
(complex instruction set computer) Computadoras con un conjunto de
instrucciones complejo.
RISC
(reduced instruction set computer) Computadoras con un conjunto de
instrucciones reducido.
Los
atributos complejo y reducidodescriben las diferencias entre los dos modelos
de arquitectura para microprocesadores solo de forma superficial. Se requiere
de muchas otras características esenciales para definir los RISC y los CISC
típicos. Aun más, existen diversos procesadores que no se pueden asignar con
facilidad a ninguna categoría determinada.
ARQUITECTURAS CISC
La microprogramación es una característica
importante y esencial de casi todas las arquítecturas 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 un microprograma localizado en una memoria en el
circuito integrado del procesador.En la década de los sesentas la micropramació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).
ARQUITECTURAS RISC
Estos
microprocesadores siguen tomando como base el esquema moderno de Von
Neumann. Las
instrucciones, aunque con otras características, siguen divididas en tres
grupos:a) Transferencia.b) Operaciones.
c) Control de flujo.
Reducción
del conjunto de instrucciones a instrucciones básicas simples, con la que
pueden implantarse todas las operaciones complejas.
Arquitectura
del tipo load-store (carga y almacena). Las únicas instrucciones que
tienen acceso a la memoria son 'load' y 'store'; registro a registro, con
un menor número de acceso a memoria.
Casi
todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con
un control implantado por hardware (con un diseño del tipo load-store),
casi todas las instrucciones se pueden ejecutar cada ciclo de reloj, base
importante para la reorganización de la ejecución de instrucciones por
medio de un compilador.
Pipeline
(ejecución simultánea de varias instrucciones). Posibilidad de reducir el
número de ciclos de máquina necesarios para la ejecución de la
instrucción, ya que esta técnica permite que una instrucción puede empezar
a ejecutarse antes de que haya terminado la anterior.
El hecho de que la estructura simple de un
procesador RISC conduzca a una notable reducción de la superficie del circuito
integrado, se aprovecha con frecuencia para ubicar en el mismo, funciones
adicionales:
Unidad
para el procesamiento aritmético de punto flotante.
Unidad
de administración de memoria.
Funciones
de control de memoria cache.
Implantación
de un conjunto de registros múltiples.
La
relativa sencillez de la arquitectura de los procesadores RISC conduce a ciclos
de diseño más cortos cuando se desarrollan nuevas versiones, lo que posibilita
siempre la aplicación de las más recientes tecnologías de semiconductores. Por
ello, los procesadores RISC no solo tienden a ofrecer una capacidad de
procesamiento del sistema de 2 a 4 veces mayor, sino que los saltos de
capacidad que se producen de generación en generación son mucho mayores que en
los CISC.
LENGUAJE MAQUINA
Son aquéllos que están
escritos en lenguajes directamente inteligibles por la máquina (computadora),
ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres
de dígitos 0 y 1) que especifican una operación y las posiciones (dirección) de
memoria implicadas en la operación se denominan instrucciones de máquina o
código máquina. El código máquina es el conocido código binario.
Las
instrucciones en lenguaje máquina dependen del hardware de la computadora y,
por tanto, diferirán de una computadora a otra.
Ventajas del Lenguaje Máquina
Posibilidad de cargar
(transferir un programa a la memoria) sin necesidad de traducción
posterior, lo que supone una velocidad de ejecución superior a cualquier otro
lenguaje de programación.
Desventajas del Lenguaje Máquina
Dificultad y lentitud en
la codificación.
Poca fiabilidad.
Gran dificultad para
verificar y poner a punto los programas.
Los programas solo son
ejecutables en el mismo procesador (CPU).
En la
actualidad, las desventajas superan a las ventajas, lo que hace prácticamente
no recomendables a los lenguajes máquinas.
LENGUAJES DE BAJO NIVEL
Son
más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos,
dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia
es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones
conocidas como nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones
aritméticas son : en inglés : ADD, SUB, DIV, etc. ; en
español : SUM, RES, DIV, etc.
Una
instrucción típica de suma sería :
ADD M, N, P
0110 1001 1010 1011
Un
programa escrito en lenguaje ensamblador, requiere de una fase de traducción al
lenguaje máquina para poder ser ejecutado directamente por la computadora.
El
programa original escrito en lenguaje ensamblador se denomina programa fuente y
el programa traducido en lenguaje máquina se conoce como programa objeto, el
cual ya es directamente entendible por la computadora.
Ventajas del lenguaje ensamblador frente al lenguaje máquina
Mayor
facilidad de codificación y, en general, su velocidad de cálculo.
Desventajas del lenguaje ensamblador
Dependencia total de la
máquina lo que impide la transportabilidad de los programas (posibilidad de
ejecutar un programa en diferentes máquinas. El lenguaje ensamblador del PC
es distinto del lenguaje ensamblador del Apple Machintosh.
La formación de los
programadores es más compleja que la correspondiente a los programadores de
alto nivel, ya que exige no solo las técnicas de programación, sino también
el conocimiento del interior de la máquina.
Los
lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran
básicamente en aplicaciones de tiempo real, control de procesos y de
dispositivos electrónicos.
Esta instrucción significa "sumar el contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P" . Evidentemente es más sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina.
Ensambladores, compiladores e intérpretes
Un ensamblador es un programa que crea código objeto traduciendo
instrucciones nemónicas de un programa fuente escrito en ensamblador
a códigos ejecutables e interpretando los
nombres simbólicos para direcciones de memoria y otras entidades.
Existen dos tipos
principales de traductores de los lenguajes de programación de alto nivel:
Compilador e intérprete.
Existen dos tipos
principales de traductores de los lenguajes de programación de alto nivel:
Compilador, que analiza
el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje
(por ejemplo, en el lenguaje de la máquina). Su acción equivale a la de un
traductor humano, que toma un libro y produce otro equivalente escrito en otra
lengua.
Intérprete, que analiza
el programa fuente y lo ejecuta directamente, sin generar ningún código
equivalente. Su acción equivale a la de un intérprete humano, que traduce las
frases que oye sobre la marcha, sin producir ningún escrito permanente.
Intérpretes y compiladores tienen diversas ventajas e inconvenientes que los
hacen complementarios: Un intérprete facilita la
búsqueda de errores, pues la ejecución de un programa puede interrumpirse en
cualquier momento para estudiar el entorno (valores de las variables, entre otras cosas.).
Además, el programa puede modificarse sobre la marcha, sin necesidad de volver
a comenzar la ejecución. Un compilador suele generar
programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se
hace una sola vez, durante la generación del programa equivalente. En cambio,
un intérprete se ve obligado generalmente a analizar cada instrucción tantas
veces como se ejecute (incluso
miles o millones de veces).
Un intérprete permite utilizar funciones y operadores más potentes, como
por ejemplo ejecutar código contenido en una variable en forma de cadenas de
caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por
medio de compiladores. Los lenguajes que incluyen este tipo de operadores y
que, por tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes
compilativos, que permiten el uso de un compilador, prescinden de este tipo de
operadores.
¿SABIAS QUE?
Además, para su ejecución en lenguaje de maquina el programa debe instalar las rutinas de RUN-TIME y las del servicio del sistema operativo.
No hay comentarios:
Publicar un comentario