• No results found

En la siguiente figura se presenta un diagrama de bloques simple para una unidad de procesamiento en el que se puede apreciar los diferentes componentes que serán explicados de una forma más amplia a lo largo del presente capitulo.

Figura 15. Diagrama de bloques simple de una unidad de procesamiento.

1. Unidad Aritmético Lógica

La Unidad Aritmético-Lógica (UAL) o ALU (Arithmetic and Logical Unit) como su nombre lo indica es la encargada de realizar operaciones aritméticas y lógicas sobre operandos que provienen de la memoria principal y que pueden estar

almacenados de forma temporal en algunos de los registros de diversos propósitos que hacen parte de la propia unidad.

Existen deferentes tipos de ALU dependiendo de la aplicación para la cual se encuentran especializadas; las hay especializadas en operaciones con números enteros o en operaciones con números en punto flotante, entre otros.

2. Registros.

Un registro es una memoria de alta velocidad y poca capacidad, integrada al microprocesador, que generalmente permite guardar y acceder a valores muy utilizados en operaciones matemáticas. Los registros son la manera más rápida que tiene un sistema de almacenar datos, su capacidad se mide generalmente por el número de bits que almacenan; por ejemplo, un "registro de 8 bits" o un "registro de 32 bits". Generalmente son implementados en un banco de registros, antiguamente se usaban flip flops individuales, memoria SRAM u formas de almacenamiento aun más primitivas.

Los registros pueden ser directamente indexados como operandos de una instrucción, como esta definido en el set de instrucciones. También existen muchos otros registros que son empleados con propósitos específicos, por ejemplo el contador de programa.

2.1. Tipos de registros.

Registros de datos: son empleados para guardar números enteros. En algunas computadoras antiguas, existía un único registro donde se guardaba toda la información, llamado acumulador.

Registros de memoria: se emplean para guardar exclusivamente direcciones de memoria. Eran muy usados en la arquitectura Harvard, ya que muchas veces las direcciones tenían un tamaño de palabra distinto que los datos.

Registros de propósito general GPRs: (General Purpose Registers) pueden guardar tanto datos como direcciones. Son fundamentales en la arquitectura Von Neumann. La mayoría de dispositivitos modernos usa GPRs.

 Registros de punto flotante: se empelan para guardar datos en formato de punto flotante.

 Registros constantes: tienen valores creados por hardware de solo lectura.

 Registros de propósito específico guardan información específica del estado del sistema, como el puntero de pila, el registro de estado, el contador de programa, el registro de instrucción, entre otros.

La unidad de control es la parte de la unidad de procesamiento encargada de leer las instrucciones en lenguaje de máquina almacenadas en la memoria principal, además genera las señales de control necesarias para el manejo y coordinación del resto de las unidades funcionales de un determinado sistema con el fin de ejecutar las instrucciones leídas. La unidad de control está conformada por:

Contador de programa o PC (Program Counter): es un registro interno del microprocesador en el que se almacena la dirección de la instrucción que se está ejecutando. De esta manera, la unidad de procesamiento conoce cuál es la siguiente instrucción que debe ejecutar. El PC va incrementándose dependiendo del tamaño de las instrucciones, esto se mide en espacios de memoria y puede aumentar valores como 1, 2, 3, … también puede pasar que la instrucción que se ejecute en ese instante cambie el flujo del programa, saltando a otra dirección distinta.

Registro de instrucción: Al igual que el PC, el registro de instrucción forma parte de la unidad de control y contiene la instrucción que se está ejecutando en cada momento.

 Decodificador de instrucciones: Se encarga de decodificar la instrucción para interpretar el tipo de instrucción a ejecutar que se encuentra en el registro de instrucción, las instrucciones pueden ser de suma, multiplicación, comparación, entre otros.

 Reloj Interno: Señal de reloj a una frecuencia específica que marca cada ciclo de ejecución del procesador, este junto con otros elementos que dependen de la arquitectura le proporcionan la velocidad característica a cada dispositivo.

 Secuenciador: Encargada de generar señales de control para la ejecución de una instrucción que se ha decodificado previamente y comparado con las instrucciones disponibles de la CPU que se encuentran almacenadas en una Memoria ROM de la misma CPU.

4. Unidad de Ejecución o Datapath

Es un elemento de la CPU que realiza operaciones y cálculos invocados por programas en ejecución. A menudo posee su propia unidad de control, registros y otros componentes, tales como una unidad aritmético-lógica, tambien puede poseer una unidad de punto flotante. Es común que las CPUs modernas incluyan múltiples unidades de ejecución, el arreglo más simple es utilizar una para manejar la interfase de memoria (administración del bus) y otras para realizar deferentes cálculos.

5. Memorias.

Existe una variedad de memorias y es posible que exista una combinación de diferentes tipos de estas en un mismo sistema, dependiendo de las diversas características que pueda presentar una memoria se analizan a continuación los diferentes tipos disponibles:

5.1. RAM (Random Access Memory):

Las memorias de acceso aleatorio normalmente son las memorias de trabajo de los computadores, donde el procesador puede fácilmente almacenar datos temporalmente, la lectura/escritura en este tipo de memorias se puede hacer en cualquier posición, es decir, el acceso a cualquier registro para lectura/escritura implica el mismo tiempo y no depende de lecturas/escrituras previas. Generalmente son volátiles, esto quiere decir que los datos almacenados durante el funcionamiento del computador se borrarán al des-energizar o apagar el sistema.

Existen dos categorías de RAM las estáticas (SRAM) y las dinámicas (DRAM); las estáticas emplean pares de compuertas lógicas para almacenar cada bit de datos son las más rápidas, funcionan con una circuitería de soporte simple y tienen un consumo de energía relativamente bajo. Debido a su baja capacidad se requiere implementar mayor cantidad de chips dependiendo de la aplicación. Si un computador personal moderno fuese construido con base en este tipo de memoria aunque sería bastante rápido resultaría de un tamaño considerable y demasiado costoso.

DRAM utiliza arreglos de lo que en esencia son la combinación de un capacitor y un transistor, juntos forman una celda (que representa un bit). El capacitor almacena el bit de información (0 cuando esta descargado o 1 cuando esta cargado) mientras que el transistor actúa como switch, esto permite "leer" el capacitor o cambiar su estado (de 0 a 1 o viceversa). La desventaja es que la carga se almacena por un periodo reducido antes de empezar a descargarse, es por esto que se necesita refrescar constantemente los datos en intervalos en el orden de los milisegundos, este hecho hace que se requiera un soporte adicional para este tipo de memorias además retraza al microprocesador en el acceso de los datos.

Figura 17. Memoria DRAM (Dynamic Random Acces Memory ).

A pesar de esto las memorias dinámicas poseen una gran capacidad de almacenamiento, existe una gran variedad de subespecies de este tipo de memorias. Acceder a los datos de estas memorias mediante un microcontrolador generalmente no es viable y ciertamente no es práctico. Para tal efecto hay microprocesadores que poseen soporte para la conexión de RAM dinámico o se puede valer de integrados diseñados para cumplir esta función de manera muy simple.

Fast Page Mode DRAM: La idea es tener procesos de lectura/escritura sucesivos en la misma fila sin tener que realizar por cada lectura/escritura un procesamiento de la fila como se hace con las anteriores memorias DRAM.

Extended Data Out (EDO) DRAM: Es similar a la anterior con una característica adicional, la cual permite que un nuevo ciclo de acceso pueda ser iniciado mientras se mantiene el dato en la salida del ciclo anterior. Esto mejora en un 5% la eficiencia de estas memorias.

Synchronous Dynamic RAM (SDRAM): Las memorias vistas hasta el momento tienen una interfaz de comunicación asíncrona con los demás periféricos, incluyendo la CPU. Una memoria sincrónica, trabajará con el reloj del bus del sistema, resultando esto más eficiente. Por cada pulso de reloj en el bus, se realiza internamente una operación en la memoria. Estas memorias se conocen con referencias como PC66, PC100 y PC133, donde el número representa la frecuencia del reloj del bus.

Double Data Rate SDRAM (DDR-SDRAM): La memoria anterior utiliza la señal de reloj para realizar las diferentes operaciones. Estas operaciones se dan cuando existe una transición de bajo a alto en la señal de reloj solamente, es decir, en un flanco de subida. La idea de DDR es realizar operaciones tanto estimuladas por la transición bajo a alto como por la transición alto a bajo, es decir, en flancos de subida y bajada, permitiendo que con la misma señal de reloj, se puedan realizar el doble de operaciones. Se sigue trabajando con frecuencias de bus de 100, 133, 166 y 200, donde la frecuencia efectiva será 200, 266, 333, 400 respectivamente, por eso el nombre de DDR200, DDR266, DDR333 y DDR400. En un computador que tiene un bus de datos de 64bits, la tasa de transferencia en bytes estará dada por 2x(frecuencia_bus)x8 teniendo velocidades de 1600Mbytes/seg, 2133Mbytes/seg, 2667Mbytes/seg y 3200MBytes/seg para memorias DDR200, DDR266, DDR333 y DDR400 respectivamente.

Otras memorias disponibles son el RAMBUS DRAM, Video RAM, SGRAM, PSRAM.

5.2. Memoria Caché.

Muchos microprocesadores incluyen en su interior o tienen acceso a lo que se conoce como caché de datos, se trata de un tipo de memoria que está ubicada entre el procesador y la memoria RAM y se emplea para almacenar datos que se utilizan frecuentemente así como algunas instrucciones que serán ejecutadas se para agilizar este proceso. Normalmente el caché se implementa en memorias estáticas de alta velocidad y su función principal es ayudar a compensar la lentitud de las DRAM para darle velocidad al sistema.

Las memorias ROM son OTP (One Time Programmable) es decir solo pueden ser programadas una sola vez, este tipo de memorias no son volátiles puesto que no requieren la existencia de alimentación para retener los datos, normalmente son más lentas que las memorias RAM. Muchos microcontroladores contienen memoria ROM integrada al chip este hecho reduce los elementos requeridos para desarrollar sistemas embebidos simplificándose también su diseño.

El propósito principal de la ROM en un sistema dado es el de mantener el código necesario y en algunos casos datos que se requiere que estén presentes al arrancar o iniciar un sistema dado. Dicho software generalmente conocido como firmware es simplemente un programa de computador que se encuentra embebido en un sistema y contiene la aplicación que hace funcional al sistema, por ejemplo en un computador el firmware que se encuentra en la BIOS (Basic Input/output System) normalmente implementado en memorias ROM, contiene el código necesario que se encarga de inicializar todos los dispositivos de E/S a un estado conocido. Los fabricantes de computadores normalmente las emplean en sistemas de soporte o placas madre en los que el firmware es estable y se presenta la ventaja de reducir los costos de producción.

Figura 18. Memoria ROM (Read Only Memory).

Las memorias ROM en esencia son fabricadas a partir de grandes arreglos de diodos como se puede apreciar en la figura 18, el estado inicial de la memoria es como si todos sus elementos de almacenamiento se encontrasen en 1‟s, cada byte se leerá como 0xFF, el proceso para cargar la información en la memoria se conoce como “quemar” la ROM por el hecho de que consiste en suministrar la

corriente suficiente en los diodos apropiados para “volarlos” o “quemarlos” entonces se crearán ceros en estas posiciones.

5.4. PROM (Programmable Read-Only Memory).

Muy similares a las ROM con la diferencia de que se trata del mismo arreglo de diodos pero a cada diodo es conectado en serie un fusible que será el elemento fundido en el proceso de quemado.

Figura 19. Esquema de los componentes internos de las Memorias PROM (Programmable Read Only Memory).

5.5. EPROM (Erasable Programmable Read-Only Memory).

Las OTP-ROMs son buenas para la producción en masa de productos completamente terminados pero en etapas de diseño y depuración resultan un desperdicio puesto que a cada cambio realizado se requeriría quemar una nueva memoria y desechar otra. Para tal efecto las memorias EPROM presentan la característica que pueden ser borradas mediante el efecto de la incidencia de rayos ultravioleta sobre la superficie del integrado gracias a una ventana ubicada en el chip (ver figura 20), su desventaja radica en la necesidad de remover el integrado de su ubicación en el sistema para borrar su contenido, además este proceso demora muchos minutos dependiendo del dispositivo, luego hay que volver a quemar el dispositivo y volver a probar el funcionamiento del circuito, resultando este proceso en tiempos muy lentos de depuración de errores.

Tanto las memorias EPROM como sus predecesoras OTP son raramente utilizadas en la actualidad además sus capacidades normalmente no exceden 1 Mb.

5.6. EEPROM (Electrically Erasable Programmable Read-Only Memory).

Las memorias de solo lectura eléctricamente borrables también conocidas como E2PROM son dispositivos que pueden ser borrados y programados “en circuito” (in-circuit) es decir en la posición en que están implementadas su capacidad es significativamente menor que la ROM estándar (típicamente algunos Kb) por lo tanto no están habilitadas para almacenar firmware. En lugar de esto se emplean normalmente para almacenar parámetros y datos que deben ser retenidos en los sistemas durante los tiempos de apagado.

Comúnmente los microcontroladores incorporan pequeñas memorias EEPROM para almacenar diferentes parámetros, esto es de gran utilidad en sistemas embebidos y puede ser empleado para almacenar parámetros de configuración, direcciones de red, números seriales, etc.

5.7. Memorias FLASH.

Es la tecnología ROM mas actualizada y es la dominante en el mercado actual, poseen características de reprogramación como la EEPROM y la gran capacidad de la ROM, También son conocidos como “FLASH-ROM” o “FLASH-RAM” pero siendo rigurosos no pertenece a ninguno de estos grupos.

Las memorias FLASH almacenan información en arreglos de celdas de memoria hechos a partir de transistores de compuerta flotante éstos tienen la capacidad de almacenar pequeñas cargas durante periodos extendidos de tiempo así no exista una fuente de energía. Las memorias FLASH internamente se encuentran divididas por sectores que pueden ser borrados y programados sin afectar el contenido de los demás, normalmente para que un sector sea escrito primero debe ser borrado a diferencia de las RAM que pueden ser sobre-escritas por lo tanto no pueden ser de acceso aleatorio.

Las celdas de memoria tradicionales single-level cell (SLC) manejan un solo nivel es decir que solo pueden almacenar un bit de información, algunas mejoras se han implementado obteniendo lo que se conoce como multi-level cell (MLC) estas pueden almacenar mas de 1 bit por celda seleccionando entre múltiples niveles de carga aplicada a las compuertas flotantes de dichas celdas.

5.8. MMU (Memmory Management Unit).

Es un dispositivo empleado para el manejo y acceso a memoria de datos que son requeridos por el procesador, entre sus funciones se encuentran la traducción de direcciones virtuales a direcciones físicas, protección de la memoria, control del caché y administración de los buses tanto de datos como de direcciones.

6. Bus de datos, direcciones y control.

En una arquitectura dada, el bus es el conjunto de conductores eléctricos en forma de pistas metálicas impresas sobre una tarjeta, por donde circulan las señales que corresponden a los datos binarios del lenguaje máquina con que opera la unidad de procesamiento. Son los encargados de las transferencias internas de datos en un sistema en funcionamiento. En un bus todos los nodos reciben los datos aunque éstos se dirijan a nodos específicos, los nodos a los que no van dirigidos los datos simplemente ignoran dichos datos.

Hay tres clases de buses: Bus de Datos, Bus de Direcciones y Bus de Control. El primero mueve los datos entre los dispositivos periféricos del sistema, en un computador por ejemplo hay dispositivos de entrada como el Teclado, el Escáner, el Ratón, etc.; de salida como la Impresora, el Monitor o la tarjeta de Sonido; y de Almacenamiento como el Disco Duro, el Diskette o la Memoria-Flash. El Bus de Direcciones, por otra parte, está vinculado al bloque de Control de la CPU para tomar y colocar datos en el Sub-sistema de Memoria durante la ejecución de los procesos de cómputo. El Bus de Control transporta señales de estado de las operaciones efectuadas por el CPU con las demás unidades.

El número de pistas dedicado a cada uno de los buses está relacionado con el ancho de canal. Ancho de canal se refiere a la cantidad de bits que pueden ser

transferidos al mismo tiempo, es decir, al número de líneas disponibles para mover datos, controlar dispositivos o direccionar memoria. Una CPU como el MC68000 usa 24 líneas (24 bits) para direccionar la memoria y 16 líneas (16 bits) para mover datos entre la CPU y la memoria. Es decir, se tiene un ancho de canal de direcciones de 24 bits y un ancho de canal de datos de 16 bits.

Un bus de datos con n bits, implica que n bits pueden ser transferidos al mismo tiempo, es decir, en paralelo. Con lo anterior, el procesador MC68000 podrá mover 16 bits a la vez (equivalente a 2 bytes ó 1 word) El ancho de canal establece también el valor mínimo y máximo que se puede enviar o transferir al tiempo. Para el bus de direcciones, el "ancho de canal" explica la cantidad de ubicaciones o direcciones diferentes que el microprocesador puede alcanzar. Si se tiene una cantidad m de bits o líneas de direcciones, la cantidad de ubicaciones resulta de elevar 2 a la m potencia. "2" porque son dos las señales binarias, los bits 1 y 0; y "m potencia" porque las m pistas del bus de direcciones son, en un instante dado, un conjunto de m bits.

En el MC68000 se puede tener una cantidad de posiciones de memoria direccionables de: 224 = 16777216. Al número de direcciones que la CPU puede emplear se le conoce con el nombre de espacio de direcciones de la CPU.

Related documents