Está en la página 1de 58

Microprocesadores

UMG
ARQUITECTURA CLÁSICA Y MODERNA.
Arquitectura clásica (1950 - 1990).
La arquitectura de un computador es la que fue definida por
uno de los mejores matemáticos de la historia John Von
Neumann, que propuso una arquitectura en la cual la CPU
(Unidad Central de proceso) está conectada a una única
memoria donde se guardan conjuntamente instrucciones
(programas) y datos (con los cuales operan estos programas).
Además existe un módulo de entradas y salidas para permitir la
comunicación de la máquina con los periféricos externos que
maneja el usuario.
Modelos de arquitecturas de cómputo Clásicas
Estas arquitecturas se desarrollaron en las primeras computadoras
electromecánicas y de tubos. Aun son usadas en procesadores empotrados
de gama baja y son la base de la mayoría de las Arquitecturas modernas.
Arquitectura Von Neumann
Esta arquitectura fue utilizada en la computadora ENIAC.
Consiste en una unidad central de proceso se comunica a
través de un solo bus con un banco de memoria en donde se
almacenan tanto los códigos de instrucción del programa, como
los datos que serán procesados por este.
Esta arquitectura es muy versátil.
Ejemplo de esta versatilidad es el
funcionamiento de los compiladores, los
cuales son programas que toman como
entrada un archivo de texto conteniendo
código fuente y generan como datos de
salida, el código maquina que
corresponde a dicho código fuente (Son
programas que crean o modifican otros
programas).

Estos datos de salida pueden ejecutarse


como un programa posteriormente ya
que se usa la misma memoria para datos
y para el código del programa.
La principal desventaja de esta arquitectura, es que el bus de datos
y direcciones único se convierte en un cuello de botella por el cual
debe pasar toda la información que se lee de o se escribe a la
memoria, obligando a que todos los accesos a esta sean
secuenciales.
Esto limita el grado de paralelismo
(acciones que se pueden realizar al
mismo tiempo) y por lo tanto, limita
el desempeño de la computadora.

Este efecto se conoce como el


cuello de botella de Von Neumann.
En esta arquitectura apareció por primera vez el concepto de
programa almacenado.
Anteriormente la secuencia de las operaciones era dictada por
el alambrado de la unidad de control, y cambiarla implicaba un
proceso de recableado laborioso, lento (hasta tres semanas) y
propenso a errores.
En esta arquitectura se asigna un código numérico a cada
instrucción.
Dichos códigos se almacenan en la misma unidad de memoria
que los datos que van a procesarse, para ser ejecutados en el
orden en que son almacenados en memoria.
Arquitectura moderna (1990 - hoy).
La arquitectura Harvard, está especialmente diseñada para
atacar las debilidades de la arquitectura Von Neumann, la
solución, conceptualmente, es sencilla, se construye un
procesador que está unido a dos tipos de memoria diferentes por
medio de dos buses independientes.
Arquitectura Harvard
Esta arquitectura surgió en la universidad del mismo nombre,
poco después de que la arquitectura Von Neumann apareciera
en la universidad de Princeton.

Al igual que en la arquitectura Von Neumann, el programa se


almacena como un código numérico en la memoria, pero no
en el mismo espacio de memoria ni en el mismo formato que
los datos.

Por ejemplo, se pueden almacenar las instrucciones en bits en


la memoria de programa, mientras los datos de almacenan en
8 bits en una memoria aparte.
El hecho de tener un bus separado para el programa y otro para
los datos permite que se lea el código de operación de una
instrucción, al mismo tiempo se lee de la memoria de datos los
operandos de la instrucción previa.
Así se evita el problema del cuello de botella de Von Neumann y
se obtiene un mejor desempeño .
En la actualidad la mayoría de los procesadores modernos se
conectan al exterior de manera similar a la arquitectura Von
Neumann, con un banco de memoria masivo único, pero
internamente incluyen varios niveles de memoria cache con
bancos separados en cache de programa y cache de datos,
buscando un mejor desempeño sin perder la versatilidad
ARQUITECTURA RISC Y CISC.
La evolución de las arquitecturas de microprocesadores ha
mostrado una tendencia hacia una complejidad creciente, hasta
que en 1975, los investigadores cuestionaron si esta
complejidad era la manera ideal de alcanzar una velocidad
óptima de costo y rendimiento.
Las investigaciones en este campo dieron como resultado el
surgimiento de ordenadores RISC, en oposición a los
ordenadores CISC.

Ejemplos de CISC: Motorola
68000, Zilog Z80 y toda la
familia Intel x86, AMD x86-64 
Las siglas CISC significan ordenadores con juego de instrucciones
complejas (Complex Instruction Set Computer), mientras que las siglas
RISC indican ordenadores con juego de instrucciones reducido
(Reduced Instruction Set Computer).
Las primeras computadoras sólo empleaban instrucciones sencillas,
porque el coste de los dispositivos electrónicos capaces de ejecutar
instrucciones complejas era muy elevado. A medida que este coste fue
disminuyendo, a lo largo de la década de 1960, fueron posibles
instrucciones más complicadas.

Las instrucciones complejas (instrucciones únicas que especifican


operaciones múltiples) pueden ahorrar tiempo al evitar que la
computadora tenga que recuperar instrucciones adicionales.

Las computadoras que combinan varias operaciones en una sola


instrucción se denominan CISC.
A partir de 1975 se investigó el desarrollo de sistemas RISC en la
universidad de Berkeley, fruto de esta investigación se diseñó la
arquitectura RISC I, que fue el primer microprocesador de este
tipo en un chip VLSI (Escala de Integración Muy Alta).

Más adelante se diseñó la arquitectura RISC II, que venía a


mejorar a su antecesora mediante un juego de instrucciones más
reducido y optimización de los recursos internos.
Características generales de la Arquitectura RISC.
La arquitectura RISC está diseñada para explotar la tecnología de los
procesadores, con el objeto de simplificar la arquitectura y acelerar la
implementación.
Las principales características que definen la arquitectura RISC son:
• Las instrucciones simples permiten una ejecución rápida: de al
menos una instrucción por ciclo de reloj.
• Se usan instrucciones de longitud fija, que además están
alineadas, lo que agiliza su ejecución.
• Permiten operar a altas frecuencias de reloj, es decir, los ciclos de
reloj son cortos, lo que significa mayor velocidad aún.
• Gran número de registros para contener la mayor cantidad de
datos posible y minimizar los accesos a la lenta RAM.
• Los procesadores RISC racionalizan y optimizan el trabajo interno
de los ordenadores, aunque para ello requieran más memoria y
una mejor tecnología de compilación.
Características de la arquitectura CISC.

Utiliza microprogramación, esto 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 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), con lo cual los hace lentos comparados con
los RISC.
Los microprocesadores de Intel x86 son de arquitectura CISC.
Microprocesadores
Estos sistemas son capaces de leer, interpretar y luego ejecutar de
forma secuencial las instrucciones contenidas en un programa.
Todos los sistemas microprogramables por complejos que sean
poseen la estructura que se muestra en la siguiente figura.
Unidad Central de Proceso o CPU (Central Process Unit): 
Es la parte mas importante del sistema microprogramable. Es donde
se realiza la interpretación y ejecución de las instrucciones, se
generan todas las órdenes de control para gobernar todo el sistema y
se realizan las operaciones aritméticas y lógicas.
Todo ello se realiza con los datos procedentes de la Memoria Central
o los contenidos en registros ordenados desde la Unidad de Control.
Es la encargada de realizar todas las transferencias de datos hacia la
memoria o desde esta.
Todas sus funciones se realizan en sincronía con la señal del reloj,
por ello, la frecuencia del reloj define la velocidad del sistema.
Su estructura interna es compleja y si se presenta todo integrado en
un único circuito integrado se denominada microprocesador.
Reloj
Para que el microprocesador genere todas las señales necesarias
para controlar los restantes bloques del sistema y para que todo el
sistema esté sincronizado (que cada elemento funcione cuando le
corresponde), se parte de ondas cuadradas de frecuencia constante
generadas normalmente por un cristal de cuarzo.
La frecuencia de este reloj se mide en Khz, Mhz o GHz y determina
la velocidad de funcionamiento y proceso de todo el sistema.
El periodo de tiempo de esta señal de reloj se denomina ciclo de
reloj.
A partir de esta señal de reloj, se genera el denominado ciclo máquina:
Fase de búsqueda (Fetch cycle): En esta fase se realiza la búsqueda
de una instrucción en memoria y se guarda en el registro
correspondiente.
Fase de ejecución (Execute cycle): En esta fase se ejecuta o realiza la
transferencia de datos ordenada.
Este ciclo máquina tarda en realizarse mas o menos tiempo dependiendo
del fabricante. A veces para completar la ejecución de una instrucción se
requiere mas de un ciclo máquina.
El número de ciclos máquina necesarios para procesar por completo una
instrucción se denomina ciclo de instrucción.
CPU
La CPU está formada por:
• Unidad Aritmética-Lógica
• Acumuladores y Registros
• Unidad de Control
Unidad Aritmética Lógica ALU (Aritmetic Logic Unit)
Esta compuesta por un circuito combinacional complejo que se
encarga de realizar operaciones aritméticas (suma, multiplicación...),
lógicas (AND, OR...) desplazamientos, etc.
Estas operaciones son ordenadas por las instrucciones que se están
ejecutando, con las informaciones presentes en los registros de
entrada y/o en posiciones determinadas de la Memoria Central y
devuelve los resultados a los registros o a la Memoria Central.
Como se utiliza: Normalmente uno de los datos de entrada
proviene del registro acumulador (ACUM) y el otro de un registro
interno, una posición de memoria o como literal de la propia
instrucción. El resultado se devuelve en el acumulador
remplazando el valor que tenia antes. Hay también otros tipos de
funcionamiento.
Acumuladores y registros
Un registro es una pequeña memoria interna, donde se almacenan
temporalmente los resultados intermedios de las operaciones.

Existen varios registros diferentes, entre los que destacamos:


• Registro acumulador.
• Registro de estado.
• Registros auxiliares.
• Registro SP (Stack Pointer).
o La pila.
• Registro CP (Contador de Programa)
• Registros internos.
Registro acumulador
Como se menciono, en la ALU se realizan las operaciones
aritméticas y lógicas con los datos.

Registro de estado (status)


En una CPU, existen unos biestables denominados banderas
o "flags" que cambian de estado como consecuencia del
resultado de la última operación efectuada sobre el registro
acumulador.

Registros auxiliares
Estos registros auxiliares o de uso general los puede utilizar el
programador para almacenar datos o resultados intermedios. El
número de estos registros depende del tipo de microprocesador.
Registro SP (Stack Pointer)
Este registro lo puede modificar el programador, y apunta a una
zona de memoria denominada pila o Stack. De ahí, su nombre de
puntero de pila o Stack Pointer.

La pila
La pila en los ordenadores personales es una zona de memoria,
que es una parte de la memoria central (RAM), de manera que se
reserva un pequeño espacio de esta para que funcione como una
pila, denominándolo segmento de pila. 
La pila tiene una estructura denominada LIFO (Last In First Out),
por lo que el último valor que se guarda es el primero que sale.
Este tipo de estructura gestiona la entrada y salida de información
del mismo modo que si actuara manipulando una pila de papeles,
donde el último papel en apilarse es el que primero se recoge.
Registro CP (Contador de Programa)
Es un registro que se encuentra en la Unidad de Control y que
indica en que posición de la memoria se encuentra la próxima
instrucción a ejecutar.

Este registro, se incrementa automáticamente para obtener las


instrucciones y los datos de la memoria, ya sea de modo
secuencial o de forma aleatoria.

Registros internos
Todos los microprocesadores y microcontroladores tienen registros
internos que no pueden manipularse por el usuario puesto que el
sistema los utiliza de forma automática cuando es preciso.
Unidad de Control (Control Unit, CU)
Recibe la información, la transforma e interpreta, enviando las ordenes
precisas a los elementos que las requieren para un procesamiento
correcto de los datos.
En la Unidad de Control se encuentra el contador de programa (CP) que
indica en que posición de la memoria se encuentra la próxima instrucción
a ejecutar.
Se encuentra también el decodificador de instrucciones (DI), dispositivo
que "traduce" las instrucciones del programa contenidas en la memoria a
microordenes grabadas internamente, para saber los pasos que debe
realizar para ejecutar la instrucción.
Memoria Central o Interna: En este tipo de dispositivos se
encuentran los datos y programas que debe utilizar el sistema
microprogramable.
Memoria (memoria central o principal)
Es la encargada del almacenamiento de los programas y la información
necesaria para el funcionamiento del sistema.
Su función en el sistema es la de almacenar los programas a ejecutar,
los datos y los resultados intermedios del proceso.
  
La Memoria suele dividirse en:
Memoria de programa: Es la zona de memoria donde se almacenan
los programas a ejecutar. No se modifica durante la ejecución de un
programa, ya que en ella se guardan las instrucciones que lo forman.

Memoria de datos o de trabajo: En esta zona se almacenan los datos


del programa a ejecutar. Siempre es una RAM puesto que se modifica
durante la ejecución de un programa, ya que en ella se almacenan y se
leen los resultados de las operaciones realizadas, así como los datos
de las operaciones intermedias requeridas.
La memoria RAM (Ramdom Access Memory, memoria de acceso aleatorio) es un tipo de
memoria que permite tanto la lectura (read) como la escritura (write). Es volátil, esto es, los datos
se pierden si deja de alimentarse.
    Cuando el sistema necesita leer un dato de la memoria RAM, lo primero que hace es indicar la
posición de memoria de donde desea obtener el dato. Dependiendo de si la operación que va
efectuar es una lectura o una escritura, se pone a uno o a cero una señal de lectura escritura
(Read=1/Write=0). Si la operación es de lectura, la memoria entrega el dato deseado. Por el
contario, si es de escritura, el dato se almacena en la memoria.

Memoria ROM: Su nombre corresponde a las iniciales de Read Only Memory, que significa
memoria de sólo lectura. Al contrario que la memoria RAM, este tipo de memoria solo permite la
lectura (read).
    En un sistema abierto como un PC su función es contener los datos y programas de arranque,
para que el microprocesador pueda comunicarse con el resto del sistema. En este caso se le
denomina BIOS (Basic Input/Output System), porque contiene las instrucciones básicas de
entrada y salida. Su funcionamiento es identico al de las memorias RAM, con la excepción de
que al ser únicamente de lectura, no precisa de la señal read/write.
Unidad de entrada/salida (interface): 
Este circuito permite la comunicación del sistema microprogramable
con el exterior. Su función fundamental es la de adaptar las
diferentes velocidades y códigos utilizados por los elementos
externos del sistema y el interior.
Unidad de entradas/salidas (interfaz)
Esta unidad comunica al sistema con el mundo exterior, permitiendo la
introducción y la extracción de información al sistema. Estas unidades
consisten generalmente en registros que, accionados por los buses de
control y direcciones, almacenan la información suministrada por el bus
de datos.
Estos registros son accesibles desde el exterior por una serie de
terminales para su conexión a cualquier dispositivo que se deba accionar.

En las entradas se introduce la información de manera que cuando se


ordena, mediante los buses de control y de direcciones, el sistema
selecciona en un instante dado cuales de esas informaciones presentes
en las entradas deben transferirse al bus de datos para su proceso.

La parte de salida, por el contrario, consiste en una serie de registros en


los que el sistema deposita el resultado de la información ya procesada.
Periféricos: Estrictamente hablando podríamos decir que no forman
parte del sistema microprogramable. Es un conjunto de dispositivos
que realizan un trabajo en el exterior del sistema. Estos periféricos
pueden ser de entrada o de salida, aunque existen algunos que
realizan ambas.
Arquitectura de un sistema basado en CPU
Buses del sistema
Los elementos de un sistema basado en CPU están
interconectados entre si mediante "canales" de información o
buses. Estos buses están compuestos por diferentes líneas (hilos
eléctricos) que transportan información del mismo tipo.

El número de líneas que compone el bus indica el ancho del bus.


Por ejemplo, si tenemos un bus de datos de 16 bits, significa que
circulan 16 bits en paralelo a la vez, por lo que el bus tiene un
ancho de 16 líneas. En los sistemas microprogramables, existen
tres buses fundamentales que son:
• Bus de direcciones (address bus)
• Bus de datos (data bus)
• Bus de control (Control Bus)
Bus de direcciones (address bus)
    Por este bus van a circular los bits que seleccionaran la posición de la
memoria o el registro de entrada/salida en el que deseamos leer o escribir.
Este bus tiene tantas líneas (conductores) como bits de dirección tenga el sistema.
El número de líneas que tiene un sistema basado en microprocesador depende del
fabricante y determina la cantidad máxima de memoria que puede direccionar el
sistema. El número total de direcciones de memoria que pueden direccionarse viene
dado por la formula:

    N° Direcciones de memoria=2Nº Líneas del bus de direcciones


    Por ejemplo, el microprocesador 8086 de Intel poseía un bus de direcciones de
20 líneas, por tanto:
    N° Direcciones de memoria= 220= 1.048.576 posiciones de memoria.

Si en cada posición de memoria se almacena 1 byte (8 bits), el microprocesador


8086 podía direccionar como máximo una memoria de 1.024 Kbytes=1 Mbyte.
Se utiliza potencia de 2.

1 byte = 8 bits
1 kilobyte (K / Kb) = 2^10 bytes = 1,024 bytes
1 megabyte (M / MB) = 2^20 bytes = 1,048,576 bytes
1 gigabyte (G / GB) = 2^30 bytes = 1,073,741,824 bytes
1 terabyte (T / TB) = 2^40 bytes = 1,099,511,627,776 bytes
1 petabyte (P / PB) = 2^50 bytes = 1,125,899,906,842,624 bytes
1 exabyte (E / EB) = 2^60 bytes = 1,152,921,504,606,846,976 bytes
Bus de datos (data bus)
    Por este bus circularan los bits que componen la información binaria, ya
sean instrucciones o datos contenidos en la posición de memoria o en los
registros de entrada/salida, seleccionada por el bus de direcciones. Al igual que el
bus de direcciones, este tiene tantos hilos como bits tenga la palabra de datos con
que opera el sistema.
    Por ejemplo, un microprocesador de 8 bits posee un bus de datos formado por 8
hilos. Este bus es bidireccional, es decir, que puede ir en ambos sentidos. Esto
es, porque los dispositivos pueden recibir información (escritura) o enviarla (lectura),
según el estado de la línea read/write del bus de control. Habitualmente, las líneas
del bus de datos se denominan con la letra inicial D (de data), D7 (bit de mayor
peso) D6 ... D1 D0 (bit de menor peso)
Bus de control (Control Bus)
    Este bus esta formado por una serie de líneas por las que va a circular el
conjunto de señales necesarias para la correcta coordinación de todos los
elementos del sistema, tales como: órdenes de lectura o escritura, inhabilitación
(desactivación) de un dispositivo, etc.
Arquitectura de un sistema basado en CPU
Funcionamiento de los buses
    Cuando uno de los registros de entrada y salida recibe su dirección por el
bus de direcciones, el dispositivo se activa y según la orden de leer o escribir
presente en el bus de control, pasan la información que contienen al bus de
datos, o se cargan con la información que contiene el bus de datos.
   
Por ejemplo, si deseamos enviar un dato por el puerto paralelo de un PC, lo primero
que haremos será poner la dirección de ese puerto en el bus de direcciones. Como
lo que queremos es enviar, es decir, escribir, activaremos en el bus de control la
señal de escritura y, por ultimo, enviaremos por el bus de datos la información a
sacar por dicho puerto. Si, por el contrario, queremos leer un dato por el puerto
paralelo, primero enviaremos por el bus de direcciones la dirección donde se
encuentra ese dispositivo. Como deseamos leer su contenido, activaremos la señal
de lectura del bus de control y, por ultimo, el controlador de ese dispositivo nos
pondrá en el bus de datos su contenido.
RENDIMIENTO EN LOS COMPUTADORES
Se define rendimiento de un sistema como la capacidad que tiene dicho
sistema para realizar un trabajo en un determinado tiempo. Es
inversamente proporcional al tiempo, es decir, cuanto mayor sea el tiempo que
necesite, menor será el rendimiento.

Los computadores ejecutan las instrucciones que componen los programas,


por lo tanto el rendimiento de un computador está relacionado con el
tiempo que tarda en ejecutar los programas. De esto se deduce que el
tiempo es la medida del rendimiento de un computador.
El rendimiento del procesador depende de los siguientes parámetros:
1. Frecuencia de la CPU (fCPU) : es el número de ciclos por segundo al que
trabaja el procesador o CPU.

2. Periodo de la CPU (TCPU) : es el tiempo que dura un ciclo y es la inversa de


la frecuencia de la CPU.

3. Ciclos por instrucción (CPI) : las instrucciones se descomponen en


microinstrucciones, que son operaciones básicas que se hacen en un ciclo de
reloj. En un programa se llama CPI al promedio de microinstrucciones que
tienen las instrucciones del programa, es decir, los ciclos de reloj que se
tarda de media en ejecutar una instrucción.
4. Número de instrucciones del programa : cuantas más instrucciones haya
en el programa más tiempo se tarda en ejecutarlo luego baja el rendimiento

5. Multitarea : hace referencia a la capacidad que tiene un computador de


atender simultáneamente varias tareas.

El rendimiento de un procesador para un programa concreto es un factor


inversamente proporcional al tiempo que tarda en ejecutar dicho programa.

El tiempo de programa depende a su vez del número de instrucciones del


programa y del tiempo que se tarda en ejecutar cada instrucción.
El tiempo que tarda en ejecutarse cada instrucción depende del número
de microinstrucciones o ciclos en los que se descompone. Cada
microinstrucción tarda distintos ciclos de reloj en ejecutarse, por lo que se
hace un promedio ponderado de ciclos de instrucción.
UNIDADES DE MEDIDA DEL RENDIMIENTO GLOBAL
En la búsqueda de una medida estándar del rendimiento de los
computadores, se han desarrollado una serie de métricas populares como
alternativa al uso del tiempo…

MIPS
Los MIPS son los millones de instrucciones por segundo que ejecuta
un procesador para un programa determinado.

La ventaja de esta unidad de medida es su fácil comprensión ya que un


mayor número de MIPS indicará una mayor velocidad de la máquina. Sin
embargo, no es una medida buena ya que puede producir resultados
erróneos, un mismo programa en un mismo computador puede dar
resultados diferentes según el programador o el repertorio de
instrucciones utilizadas, además los MIPS pueden variar inversamente al
rendimiento.

También podría gustarte