sábado, 5 de septiembre de 2015

Arquitectura básica de un ordenador

Introducción

Un ordenador se compone principalmente de un dispositivo de entrada como el teclado y el ratón, otros de salida como la pantalla y un cuerpo central que contiene los periféricos como los puertos USB,  salida de impresora,  CDs o DVDs y su parte más principal o central, la unidad central de procesamiento  o CPU (Central Processing Unit)  Esta parte principal del ordenador contiene los controladores para todos estos dispositivos, los cuales todos  se nutren o alimentan la CPU que es el núcleo central del ordenador donde se procesa la información y saca el resultado para su interpretación.
Aquí me voy a centrar en el funcionamiento esquemático y básico de la CPU  y del único lenguaje se sabe interpretar (el código máquina) que manejamos a través del lenguaje ensamblador.

arquitectura de un ordenador




La CPU consiste en  el hardware  fundamental de un ordenador o cualquier dispositivo programable basado en microprocesador.
Se compone fundamentalmente de una unidad de control, una unidad aritmético-lógica ALU y la memoria.

La Unidad de Control se encarga de la interpretación y ejecución de las instrucciones y del control de todos los componentes del sistema.
La ALU está dedicada a la realización de las operaciones aritméticas y lógicas bajo la supervisión de la Unidad de Control.
La Memoria es donde se almacena toda la información, incluyendo ésta, el programa y los datos.

Estos tres elementos componen la CPU. La CPU tomada como un conjunto interpreta las instrucciones de un programa a través de  la realización de operaciones básicas aritméticas, lógicas y de entrada/salida del sistema.
Un ordenador puede tener más de una CPU; esto se llama multiprocesamiento. Todas las CPU modernas están contenidas dentro de microprocesadores, es decir, las contiene un único circuito integrado (o chip). Algunos circuitos integrados (ICs) pueden contener varias CPUs en una única carcasa; estos IC son denominados procesadores multi-núcleo. 
Los componentes típicos de una CPU son la unidad aritmético lógica (ALU), que como su nombre indica realiza las operaciones aritméticas y lógicas, y la unidad de control (CU), que es la que extrae instrucciones de la memoria, las decodifica y las ejecuta, llamando a la ALU cuando sea necesario.
La operación fundamental de la CPU es ejecutar una secuencia de instrucciones almacenadas en la memoria que se llama "programa". El programa consiste en una serie de instrucciones codificadas en números que se almacenan en la memoria.
La ejecución de dichas instrucciones de programa se realiza a través de cuatro pasos fundamentales:

Fetch (Leer)

El primer paso, leer (fetch), consiste en  recuperar la instrucción de la memoria de programa. La localización en la memoria de la instrucción a leer en cada momento  se determina por el contador de programa (PC), que almacena un número que contiene  la dirección de la siguiente instrucción que se debe buscar. Una vez leída la instrucción, el PC se incrementa una o varias unidades de memoria (dependiendo de lo que ocupara la instrucción leída) con el objetivo de apuntar a la siguiente instrucción del programa.

Decode (Decodificar)

En el paso de decodificación, la instrucción se divide en partes para ser interpretada por el hardware de la CPU. La forma en que la instrucción se interpreta está definida por la arquitectura del conjunto de instrucciones  de la CPU.
Normalmente la primera parte de la instrucción (opcode) indica lo que se debe hacer y las partes restantes suelen indicar direcciones de memoria operandos o registros en los que realizar la operación especificada en primer término.

Execute (ejecución)

 Diagrama de bloques de una  CPU.

Esquema de una CPU

                                                            
Aquí es donde las unidades de la CPU se ponen en marcha para realizar la operación leída. Si, se solicita una operación de adición, entonces los datos contenidos en determinados registros pasan a través de la unidad aritmético lógica (ALU) la cual deposita el resultado en un registro especial llamado acumulador (por que se suma el resultado a contenido que tuviera). Dicha ALU solo puede sumar o realizar operaciones lógicas de bits. Si la operación produce un resultado demasiado grande para el tamaño del  acumulador, activa una bit de desbordamiento aritmético localizado en un registro de banderas (flags)

Writeback (escribir)

El paso final, la escritura (writeback), simplemente "escribe" los resultados de la ejecución a una o varias posiciones de memoria aunque a menudo, los resultados son escritos en algún registro interno de la CPU para que tenga un acceso rápido por las siguientes instrucciones.

Existen instrucciones que manipulan el contador de programa. Éste tipo de instrucción se llama "salto" (jumps) y se utilizan para generar comportamientos como bucles (loops), o llamadas a subrutinas (pequeños programas completos que se ejecutan cuando son llamados desde el programa principal).

Si la instrucción ejecutada es un salto, el contador de programa será modificado para contener la dirección de la instrucción a la cual saltó. Esto obliga a almacenar la dirección siguiente de programa original en unos registros especiales llamados “pila” stack que serán leídos cuando finalice la ejecución del subprograma o salto para poder continuar por la dirección correspondiente del programa principal

Reloj

La mayoría de las CPU operan en función de una señal de sincronización. Esta señal, se denomina señal de reloj, y  tiene la forma de una onda cuadrada periódica. Toma un valor alto (una tensión eléctrica determinada) durante un tiempo y luego cae bruscamente a cero donde se mantiene el mismo tiempo hasta subir de nuevo al valor alto bruscamente.
El período que lleva el cambio de la señal de reloj debe ser más largo que el tiempo que emplea una señal  en propagarse en el peor de los casos.
La señal del reloj cambia constantemente, provocando la conmutación de muchos componentes (cambio de estado). Esta señal es la que utiliza la CPU para realizar todas sus operaciones de lectura y escritura en memoria o en registros, ejecución,  y cualquier otra operación de control de cualquier dispositivo de la CPU.
La velocidad de un procesador depende entre muchos otros factores de la velocidad del reloj (generalmente en múltiplos de hertzio) y las instrucciones por ciclo de reloj (IPC), que juntos son los factores que determinan el número de instrucciones por segundo (IPS) que la CPU puede ejecutar.

Unidad Aritmético Lógica (ALU)

Un típico símbolo esquemático para una ALU: En el acumulador y el registro  actúan como operandos; La salida se graba en el acumulador; A es la entrada de la unidad de control; B es un estado de la salida.
Unidad lógico aritmética ALU
                         
La unidad aritmético lógica, conocida como ALU (arithmetic logic unit), es el circuito digital central de la CPU y su objetivo es realizar las operaciones aritméticas suma y operaciones lógicas entre dos números.
Los grandes ordenadores o mainframes modernos continenen multitud de  microprocesadores a su vez con múltiples núcleos, y cada núcleo con múltiples unidades de ejecución, cada una de ellas con múltiples ALU.
Muchos otros circuitos pueden contener en el interior una unidad aritmético lógica.
Esquema simplificado.


Esquema de una ALU
Imagen tomada de Wikipedia
               

Una ALU simple de 2 bits que hace operaciones de AND, OR, XOR y adición (ver explicación en el texto).

La ALU se compone básicamente de un Circuito Operacional, Registros de Entradas, un acumulador que como se ha dicho anteriormente es un registro especial donde se deposita  la salida de la ALU y un  Registro de Estados.
La mayoría de las acciones de un ordenador  son realizadas por la ALU.
Una unidad de control controla la ALU, al ajustar los circuitos que le indican qué operaciones realizar.

Descripción del esquema simplificado.

En la imagen se muestra una ALU de 2 bits con dos registros de entrada (operandos) llamadas A y B: A0 y B0 corresponden al bit menos significativo y A1 y B] corresponden al bit más significativo.

Cada bit de la ALU se procesa de manera idéntica, con la excepción del direccionamiento del bit de acarreo.

Las entradas A y B van hacia las puertas lógicas de la izquierda, de arriba a abajo, XOR, AND, OR. Las tres primeras puertas realizan las operaciones XOR, AND, y OR sobre los datos A y B. La última puerta XOR es la puerta inicial de un sumador completo.
El paso final de las operaciones sobre cada bit es la multiplexación de los datos. La entrada OP de 3 bits, OP[0], OP[1] y OP[2] (desde la unidad de control) determina que  función se va a realizar:

            OP = 000 → XOR
            OP = 001 → AND
            OP = 010 → OR
            OP = 011 → Adición

El resto de entradas del multiplexor está libre para otras operaciones (resta, multiplicación, división, NOT A, NOT B, etc.) Aunque OP[2] actualmente no es utilizada en este montaje (a pesar de estar conectada), sería usada para realizar otras operaciones aparte de las 4 operaciones ya comentadas.

Los datos de acarreo de entrada y acarreo de salida, llamados flags (banderas), son típicamente conectados a algún tipo de registro de estado.

Entradas y salidas

Las entradas a la ALU son los datos sobre los cuales se realizarán las operaciones (operandos) y un código desde la unidad de control  que indica qué operación se realizará. Su salida es el resultado de la operación.
La ALU también lee o genera un conjunto de códigos de condición desde o hacia un registro de estado. Estos códigos se utilizan para indicar casos como acarreo entrante o saliente, desbordamiento ,  división por cero, etc.

ALU y FPU

Una unidad de coma flotante,  FPU (Floating Point Unit ), realiza operaciones aritméticas entre dos valores igual que la ALU, pero esta lo realiza para números en representados en formato de coma flotante, que es mucho más compleja que la usada en una ALU. Para hacer estos cálculos, la FPU lleva varios circuitos complejos, incluyendo ALUs internas.

No hay comentarios:

Publicar un comentario