“Santiago Mariño”
Unidad Nº II – Arquitectura de un computador
a gran escala
Objetivo de la unidad
Presentar los elementos de un computador y la manera como una arquitectura se posiciona en ellos para explotarlos y hacer disponibles para el procesamiento de datos
Definición de arquitectura de computadoras
Es el diseño conceptual y la estructura operacional fundamental de un sistema de computadora. Es decir, es un modelo y una descripción funcional de los requerimientos y las implementaciones de diseño para varias partes de una computadora, con especial interés en la forma en que la unidad central de proceso (CPU) trabaja internamente y accede a las direcciones de memoria. También suele definirse como la forma de seleccionar e interconectar componentes de hardware para crear computadoras según los requerimientos de funcionalidad, rendimiento y costo.
Definición de arquitectura de computadoras
El ordenador recibe y envía la información a través de los periféricos por medio de los canales. La CPU es la encargada de procesar la información que le llega al ordenador. El intercambio de información se tiene que hacer con los periféricos y la CPU. Todas aquellas unidades de un sistema exceptuando la UCP se denomina periférico, por lo que el ordenador tiene dos partes bien diferenciadas, que son : la CPU (encargada de ejecutar programas y que está compuesta por la memoria principal, la ALU y la UC) y los periféricos (que pueden ser de entrada, salida, entrada-salida y comunicaciones).
Arquitectura de Von Neumann
Hoy en día se tiene aceptado que el “corazón” de la computadora es el CPU, íntimamente ligado a la memoria principal. Esto no siempre fue así.
La forma de organizar el funcionamiento de los ordenadores le llamamos Arquitectura de Von Neumann, que la describió en los años 50 para el desarrollo del computador EDVAC
Los ordenadores con esta arquitectura constan de cinco partes: La unidad aritmético-lógica o ALU, la unidad de control, la memoria, un dispositivo de entrada/salida y el bus de datos que proporciona un medio de transporte de los datos entre las distintas partes.
Arquitectura de Von Neumann
Un ordenador con esta arquitectura realiza o emula los siguientes pasos secuencialmente:
• Enciende el ordenador y obtiene la siguiente instrucción desde la memoria en la
dirección indicada por el contador de programa y la guarda en el registro de instrucción.
• Aumenta el contador de programa en la longitud de la instrucción para apuntar a la siguiente.
• Decodifica la instrucción mediante la unidad de control. Ésta se encarga de coordinar el
Arquitectura de Von Neumann
• Se ejecuta la instrucción. Ésta puede cambiar el valor del contador del programa, permitiendo así operaciones repetitivas. El contador puede cambiar también cuando se cumpla una cierta condición aritmética, haciendo que el ordenador pueda 'tomar decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmética y lógica anteriores.
Unidad aritmetica y lógica
(ALU, Arithmetic and logical unit)
Se encarga de realizar las operaciones aritméticas (sumas, restas, multiplicaciones, etc..) y lógicas (AND, OR, rotaciones, desplazamientos, etc...) con los datos. Normalmente los datos con los que opera, así como los resultados de la operación se encuentran en registros de la CPU.
Las operaciones que es capaz de realizar están definidas por el juego de instrucciones de la CPU. Es posible encontrar ALUs con capacidades orientadas hacia la operación con valores enteros, coma flotante o números imaginarios (por ejemplo en las DSP.)
Banco de Registros
Proporciona un espacio de almacenamiento para los datos con los que trabaja la CPU. Los registros se deben cargar con información que proviene de la memoria principal antes de comenzar a operar, cuando se necesita dejar espacio libre en el banco de registros para operar con nuevos datos su valor debe escribirse en la memoria principal.
Operar con datos en el banco de registros es mucho más rápido que operar con datos que se encuentran en la memoria principal, por eso, cuanto mayor sea el banco de registros se requerirán menos trasvases con la memoria principal y la tarea se realizará antes.
Banco de Registros
Es posible que no todos los registros tengan las mismas características. Normalmente se distingue entre:
•Registros de datos: Guardan la información con la que se trabaja.
•Registros de direcciones: Guardan direcciones de memoria (en las que puede haber datos).
•Registros de control: Controlan el estado de la CPU (flags: zero, overflow, underflow, positivo/negativo...)
Unidad de Control
Se encarga de leer las instrucciones máquina almacenadas en la memoria principal y de generar las señales de control necesarias para controlar y coordinar el resto de las unidades funcionales de un ordenador, con el fin de ejecutar las instrucciones leídas.
Partes fundamentales:
•Contador de programa: Registro que apunta a la dirección de memoria de la próxima
instrucción a ejecutar. Se incrementa automáticamente después de ejecutar cada instrucción.
•Registro de instrucción: Guarda la instrucción que se está ejecutando.
Unidad de Control
•Reloj: Genera una señal de sincronía.
•Secuenciador: Activa en el orden adecuado las diferentes unidades funcionales para ejecutar la instrucción.
Los dos tipos más frecuentes de unidades de control son:
•Cableada: La lógica de las operaciones está implementada mediante hardware.
•Microprogramada: Se trata de una pequeña CPU en miniatura que puede programarse
Buses
Transportan la información entre los diferentes elementos de la CPU. Se distingue entre el bus de datos (que transporta la información que se está procesando) y el bus de control (que proporciona toda la señalización necesaria para realizar el trabajo de forma ordenada).
Memoria Principal
La memoria principal tiene por objeto guardar información que es accesible a la CPU. La CPU puede leer y/o escribir datos en las diferentes posiciones de memoria que componen la memoria principal.
La memoria principal tiene menor capacidad que la memoria secundaria (que virtualmente es ilimitada), pero es mucho más rápida. Actualmente la memoria principal se implementa mediante circuitos integrados. La memoria principal de los sistemas informáticos suele estar formada por dos áreas diferenciadas:
Memoria Principal
Memoria RAM (Random Access Memory): Memoria de acceso aleatorio (no tiene porqué ser utilizada de manera secuencial) que permite tanto la lectura como la escritura. Habitualmente en los sistemas informáticos se trata de un medio de almacenamiento volátil, de manera que se pierde su contenido al cesar la alimentación.
Memoria ROM (Read Only Memory): Memoria de acceso aleatorio que sólo permite la lectura de los datos que almacena. Se trata de un medio de almacenamiento persistente, pues no pierde su contenido cuando cesa la alimentación.
Entrada/Salida (E/S, I/O)
En la medida en la que el sistema informático precisa comunicarse con el mundo exterior (utilizando diferentes periféricos), es necesario un elemento que controle el flujo de información que entra y/o sale del sistema informático.
Los periféricos del sistema informático se pueden clasificar en:
•Periféricos de entrada: Si sirven para introducir información en el sistema informático (ej. teclado, ratón...)
•Periféricos de salida: Si representan información que sale del sistema informático (ej. monitor, impresora...)
Entrada/Salida (E/S, I/O)
Las tres técnicas más extendidas de gestión de I/O son:
•Polling o espera activa: La CPU se encarga de la transferencia de información consultando
contínuamente el estado del dispositivo periférico. Simple e ineficiente.
•Uso de interrupciones: La CPU se encarga de la transferencia de información pero el dispositivo periférico le notifica los cambios de estado mediante una interrupción.
•DMA (Direct Memory Access): El controlodador DMA se encarga de toda la transferencia de
información (puede ser un bloque, y puede requerir de conversión). Al finalizar el controlador DMA utiliza una interrupción para notificarlo a la CPU. Con esta técnica, la CPU programa al controlador DMA para realizar el trabajo y queda libre (para realizar otras
Bus del Sistema
Los buses son las vías de comunicación que permiten mover la información entre los distintos elementos de la arquitectura Von Newmann.
Desde el punto de vista electrónico un bus es una serie de pistas que transportan información entre diferentes elementos. El número de líneas que tiene el bus determina el número de bits que se pueden transportar en paralelo. Los buses suelen ser elementos síncronos que funcionan gobernados por un reloj. Normalmente en cada ciclo de reloj se transporta un dato (de 8, 16 o 32 bits según la anchura del bus), también existen buses que realizan dos operaciones en cada ciclo de reloj (utilizan tanto el flanco de bajada como el flanco de subida).
Bus del Sistema
Ejemplo:
El bus PCI cuenta con la siguiente especificación: Ancho del bus: 32 bits
Reloj: 33 Mhz
Fácilmente podemos calcular la cantidad máxima de información que puede transportar en un segundo. Simplemente necesitamos multiplicar la información que mueve en cada ciclo (32 bits = 4 Bytes) por el número de ciclos que tienen lugar en un segundo (33*106).
Información por segundo: 4 Bytes * 33*106 = 132000000Bytes/s = 125.88MB/s
Bus del Sistema
Bus de datos: Como su nombre indica transporta datos. Estos datos pueden ser la información que se está procesando o las instrucciones del programa que se ejecuta. Hay que recordar que en la arquitectura Von Newmann el programa está guardado en el interior del sistema informático codificado como información.
El ancho en bits del bus de datos define el tamaño de la palabra del sistema informático, habitualmente es 8bits, 16bits, 32bits o 64bits.
Bus del Sistema
Bus de direcciones: El bus de direcciones se utiliza para indicar el origen y/o el destino de los datos. En el bus de direcciones se indica la posición de memoria a la que se está accediendo en cada momento. Puede tratarse de una dirección de la memoria principal o puede tratarse de una dirección de memoria en la que está mapeado un periférico.
El ancho en bits del bus de direcciones determina el tamaño del espacio de memoria direccionable.
Bus de control: El bus de control proporciona señales para coordinar las diferentes tareas que se realizan en el sistema informático.
Direccionamiento de Memoria
En informática, una dirección de memoria es un identificador para una localización de memoria con la cual un programa informático o un dispositivo de hardware pueden almacenar un dato para su posterior reutilización.
Una forma común de describir la memoria principal de un ordenador es como una colección de celdas que almacenan datos e instrucciones. Cada celda está identificada unívocamente por un número o dirección de memoria. La información que se almacena en cada celda es un byte (conjunto de ocho bits), que es la unidad mínima de almacenamiento de datos e instrucciones, puesto que un bit solo puede contener el valor cero o uno y eso no
Direccionamiento de Memoria
Para poder acceder a una ubicación específica de la memoria, la CPU genera señales en el bus de dirección, que habitualmente tiene un tamaño de 32 bits en la mayoría de máquinas actuales. Un bus de dirección de 32 bits permite especificar a la CPU 232=
4.294.967.296 direcciones de memoria distintas.
Debido a la estructura de 32 bits de un procesador común como los de Intel, las direcciones de memoria se expresan a menudo en hexadecimal. Por ejemplo, para no tener que escribir 111111010100000000000010101100 podemos escribir 3F5000AC en hexadecimal.
Direccionamiento de Memoria
Los modos de direccionamiento más comunes son:
•Inmediato
•Directo
•Indirecto
•Registro
•Indirecto con registro
•Desplazamiento
Registros
Es una memoria de alta velocidad que se encuentra integrada en el CPU. Estos se están en la cumbre del a jerarquía de memoria.
Registros
Características:
•Integrados al CPU
•Pueden almacenar direcciones de memoria principal
•Se ejecutan a la misma velocidad del CPU
Instrucción
Es una operación elemental que el procesador puede cumplir.. Las instrucciones se almacenan en la memoria principal, esperando ser tratadas por el procesador. Las instrucciones poseen dos campos:
El código de operación, que representa la acción que el procesador debe ejecutar; el código operando, que define los parámetros de la acción. El código operando depende a su vez de la operación. Puede tratarse tanto de información como de una dirección de memoria.
Instrucción
Las instrucciones pueden agruparse en distintas categorías. A continuación presentamos algunas de las más importantes:
•Acceso a Memoria: acceso a la memoria o transferencia de información entre registros.
•Operaciones Aritméticas: operaciones tales como suma, resta, división o multiplicación.
•Operaciones Lógicas: operaciones tales como Y, O, NO, NO EXCLUSIVO, etc.
Conjunto de Instrucciones
También llamado repertorio de instrucciones, juego de instrucciones o ISA (del inglés Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones), es una especificación que detalla las instrucciones que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseño particular de una CPU.
Ciclo de instrucciones
Los procesadores son máquinas secuenciales, es decir, su funcionamiento se basa en ejecutar una tras otra las instrucciones contenidas en memoria.
Estas instrucciones, se encuentran contenidas en memoria como una serie de 0 y 1. El ciclo de instrucción podemos dividirlo en tres partes:
1. Tomar la siguiente instrucción (fetch). 2. Decodificar la instrucción.
Interrupciones
Las interrupciones son un método del que disponen los dispositivos e incluso los procesos para hacer notar a la CPU la aparición de alguna circunstancia que requiera su intervención. De este modo, los dispositivos pueden provocar que la CPU deje por el momento la tarea que estaba realizando y atienda la interrupción. Una vez atendida, seguirá con su labor anterior.
Cuando no existían interrupciones, era el procesador el que tenía que estar continuamente comprobando el estado del dispositivo cuando lo necesitaba.
Interrupciones
Las computadoras tienen en un sitio conocido de memoria las distintas rutinas de tratamiento para las diferentes interrupciones. El procesador reconoce la interrupción de la que se trata y busca en memoria la rutina correspondiente.
Se pueden distinguir dos tipos de interrupciones: interrupciones software e interrupciones hardware.
Palabra de estado de programa (PSW)
la palabra de estado o condición de programa almacena información pertinente sobre el programa que este ejecutándose. Por ejemplo al completarse una función de la ALU se modifica un conjunto de bit llamados códigos (o señales de condición). Estos bit especifican si el resultado de una operación aritmética fue 0 o negativo o si el resultado se desbordó.
Además el PSW contiene bits que hacen posible crear interrupciones, a solicitud de dispositivos de E/O, o condiciones de error interno.
Locks (protección)
Son mecanismos para controlar el accesos de los programas, procesos o usuarios a los recursos definidos por un sistema de computación. Especifican los controles que se impondrán, y hacer que se hagan cumplir.
Tipos de protección
•Operaciones modo dual; distinción entre operaciones internas de SO(modo monitor) y
operaciones del usuario (modo usuario)
•Protección de E/S
•Protección de Memoria
Locks (protección)
¿Por qué protección?
•Para mejorar la utilización del sistema, el Sistema de Operación empezó a compartir recursos del sistema entre varios programas de manera simultánea.
•Con el spooling (trabajos cargados al buffer), un programa puede estar ejecutando mientras se lleva a cabo E/S para otros procesos.
•Los discos mantienen datos para muchos procesos.
Relojes y temporizadores
La mayor parte de los computadores cuenta con relojes y temporizadores de hardware que realizan 3 funciones principales:
•Dar la hora actual
•Dar el tiempo transcurrido
•Establecer un temporizador para iniciar la operación X en el instante T
El hardware que mide el tiempo e iniciar operaciones se llama temporizador de intervalos programable.