3. Unidades funcionales de una Computadora 3.1 Computadora (UNLP) Una Computadora es una máquina digital y sincrónica, con cierta capacidad de cálculo numérico y lógico, controlada por un programa almacenado, y con posibilidad de comunicación con el mundo exterior. ¿Qué significa esto? Es digital porque dentro de la computadora las señales eléctricas que se manejan y la información que se procesa se representa en forma discreta, por medio de valores binarios (0 y 1). Además se afirma que es sincrónica, es decir que realiza las operaciones coordinada por un reloj central que envía pulsos de sincronismo a todos los elementos que componen la computadora. Esto significa que todas las operaciones internas se realizan en instantes de tiempo predefinidos y coordinados con el reloj. Internamente posee una capacidad de cálculo numérico y lógico, en un subsistema conocido como unidad aritmético-lógica (UAL). Normalmente las operaciones que pueden realizarse en ella son muy simples (suma, disyunción, conjunción, comparaciones). El hecho de que sea controlada por programas es quizás el punto más importante que diferencia a una computadora de una calculadora. Significa que internamente se tienen órdenes o instrucciones almacenadas, que la computadora podrá leer, interpretar y ejecutar ordenadamente. Además, está comunicada con el mundo real, que es analógico. Esto significa que puede realizar operaciones de entrada y salida con el mundo real, a través de dispositivos periféricos (por ejemplo el teclado o mouse para entrada de información, y pantalla como salida) La computadora es una máquina que cambia información de una forma a otra: recibe información (entrada), la transforma, y proporciona información (salida). Esta información puede presentarse de muchas formas, lo que convierte a la computadora en una máquina sumamente versátil, que es capaz desde liquidar impuestos hasta guiar el recorrido de una nave espacial. En cada caso las entradas y salidas son totalmente distintas, y en esto radica lo sorprendente de poder usar una computadora para ambas actividades. Esta versatilidad está dada en que la máquina está controlada por un programa, que establece las instrucciones que le indican a las partes físicas qué deben hacer para transformar los datos de entrada en la salida requerida. El programa controla todo el proceso, del principio al fin: podemos modificar su funcionamiento con solo cambiar el programa. 3.2 Máquina de Von Neumann En el año 1946, John Louis Von Neumann -junto a otros colaboradores- escribió un artículo de investigación titulado "First Draft of a Report of the EDVAC". En el mencionado documento se expresaban algunas ideas acerca de como debía operar una computadora. A tales conceptos, derivados del artículo, se los conoce con el nombre de Máquina o Arquitectura de Von Neumann; y han brindado las bases para la construcción y el desarrollo de computadoras hasta los días actuales. Hasta antes de Von Neumann la programación de una computadora consistía directamente en la reordenación física de sus componentes. La arquitectura Von Neumann se fundamenta en el concepto de programa almacenado; donde de forma revolucionaria, plantea que las instrucciones y los datos tenían que almacenarse juntos en un medio común y uniforme -denominado memoria-, en vez de estar separados. Así las instrucciones y los datos podían leerse y escribirse bajo el control del programa. Nótese que un elemento de memoria o celda tiene una calidad ambigua con respecto a su interpretación -es instrucción o dato-; esta ambigüedad se resuelve al momento de la ejecución del programa almacenado, debido a que él mismo determinará qué celdas contienen datos y cuales instrucciones. Un segundo concepto, introducido por Von Neumann, es la ruptura de secuencia. Se dotó a la computadora de una instrucción denominada "salto condicional", donde según el resultado de una operación, se ejecutaría la siguiente instrucción u otra. Junto con la arquitectura se definió el ciclo de trabajo de una computadora (conjunto de pasos a realizar para ejecutar una instrucción de programa), que en su forma simple consta de las siguientes operaciones: Mientras haya instrucciones { Tomar de la memoria la siguiente instrucción. Decodificar la instrucción. Tomar de la memoria él o los operandos asociados. Ejecutar la operación. Almacenar en memoria los resultados. } A la computadora debe considerársela como una máquina procesadora de información capaz de transformar un programa escrito en un lenguaje de alto nivel -generalmente expresado en lenguaje natural- en un programa en lenguaje que el hardware pueda decodificar y ejecutar. La tarea de conversión de lenguaje de alto nivel a lenguaje de máquina la debe realizar un programa denominado compilador. En principio el hardware de un sistema se puede estructurar en tres partes claramente diferenciadas: la Unidad Central de Proceso (CPU o UCP), la memoria principal, y los dispositivos de entrada/salida. Todos estos elementos están conectados entre sí por los buses de comunicaciones. La unidad de entrada es el dispositivo por donde se introducen en la computadora los datos y las instrucciones. La unidad de salida de datos es un dispositivo donde se obtienen los resultados de los programas ejecutados en la computadora. Una forma alternativa de ver la computadora se presenta en el siguiente gráfico. Se han agregado los buses de comunicaciones que permiten solicitar, almacenar datos y controlar los dispositivos. Nótese el sentido del flujo de información sobre los buses. Bus Control Bus de datos Bus de direcciones UCP Memoria de trabajo Unidad Central de Proceso PeriféricoPeriférico de de E/S E/S A mayor detalle, la máquina propuesta por Von Neumann consiste de los siguientes elementos: una memoria principal una Unidad Central de Proceso (UCP o CPU que contiene: (b1) una Unidad Aritmético Lógica (UAL) , cuya finalidad es ejecutar todas las operaciones aritméticas y lógicas, (b2) una Unidad de Control (UC) , cuya función básica es la de gerenciar el ciclo de trabajo descripto anteriormente. (b3) un conjunto de registros líneas de transferencia (buses) de datos, direcciones de memoria y control dispositivos de entrada/salida La UAL y la UC conforman al procesador o microprocesador. 3.2.1 Memoria principal La memoria es el componente responsable por el almacenamiento de los datos e instrucciones que componen un programa. Se trata de un conjunto finito de celdas del mismo tamaño, cada una identificada con una dirección, que pueden almacenar datos o instrucciones de programa A la memoria de trabajo, donde es posible leer y escribir, se la conoce con el nombre de memoria de acceso aleatorio (RAM). Su nombre deriva de que es posible acceder directamente a cualquier lugar de ella. Existe un segundo tipo de memoria, de solo lectura, denominada ROM; sobre la cual los fabricantes graban programas y datos básicos para el funcionamiento de la computadora. Sobre la celda, unidad básica de toda memoria, se pueden realizar dos tipos de operaciones: lectura y escritura. Donde lectura significa que el procesador recupere el valor v almacenado en una celda n, y escritura significa que el procesador solicite la grabación de un valor v sobre una celda de dirección n. A los efectos de poder realizar estas operaciones, una memoria posee el auxilio de dos registros (unidades de almacenamiento similares a una celda) a saber: registro de direcciones y registro de datos. Para ejecutar una operación de lectura se carga el registro de direcciones con la dirección de la celda a leer, y luego de la recuperación se tiene copiado el contenido de la celda sobre el registro de datos. Para realizar una escritura se realiza el camino inverso, es decir se instancia el registro de datos con el nuevo valor a almacenar, y se almacena en el registro de direcciones la dirección de la celda que contendrá tal valor. La cantidad de celdas de una memoria (capacidad de almacenamiento) está limitada por dos cuestiones: La tecnología utilizada para la fabricación del componente. La capacidad del registro de direcciones (su tamaño). A más bits permitirá direccionar sobre una cantidad mayor de celdas. A 33 alfa 0 1 Registro de direcciones 12 2 3 .. -4 455 print jmp E F 10 11 -55 Bus de datos Bus de direcciones Registro de datos Al procesador Al procesador Esquema de una memoria principal La unidad básica de almacenamiento en una memoria es un bit. Una celda de una memoria puede almacenar n bits. Por ejemplo si se tuvieran celdas de longitud de dos bits se podrían almacenar uno de cuatro valores diferentes, con celdas de longitud de tres bits 1 de 8 valores diferentes, y así con celdas de c bits se podría almacenar 1 de 2^c valores diferentes. De forma estándar una celda de tamaño mínimo está compuesta por 1 byte (8 bits) y se puede almacenar 1 de 2^8 valores diferentes. Por ejemplo si en un modelo de computadora se dispusiese de un registro de direcciones de 4 bits se podrían direcciones como máximo 2^4 (16) celdas de memoria de 1 byte cada una, y 16 bytes sería la capacidad de almacenamiento en memoria principal. La longitud (en bits) del registro de datos define el tamaño de la palabra de memoria. Una palabra consiste en la cantidad de bits que se consigue copiar entre procesador y memoria en una única operación de lectura o escritura. Normalmente la palabra es múltiplo de 1 byte. La longitud (en bits) del registro de direcciones define la cantidad máxima de celdas de memoria direccionables (alcanzables). Por ejemplo, con un registro de direcciones de 16 bits y un registro de datos de 32 bits se tiene: Cantidad de celdas direccionables = 65.536 (2^16) Tamaño de la memoria = 65.536 celdas * (4 bytes) = 262.144 bytes o 256 KB Si bien se describió la memoria principal (por su importancia dentro del esquema de Von Neumann) no es el único tipo de memoria existente en una computadora moderna. La necesidad de obtener una capacidad de almacenamiento permanente y de optimizar determinados procesos hace que los fabricantes desarrollen diferentes tipos de memorias, con diferentes tecnologías y capacidades específicas. Por ejemplo, existen memorias de almacenamiento permanente (generalmente conocidas como memorias secundarias que permiten “guardar” los datos y los programas aún luego de finalizada una sesión de trabajo y apagada la computadora. Actualmente, esta tarea la cumplen dispositivos denominados discos rígidos y son el complemente necesario de la memoria principal ya que permiten almacenar grandes volúmenes de datos que se utilizan en la computadora en diferentes momentos. La siguiente tabla muestra distintos tipos de memorias existentes en una computadora y sus características: Tipo de memoria Tecnología Cache Semiconductor RAM Memoria principal Semiconductor RAM Disco magnético Disco rígido Tamaño 128-512 KB Tiempo de acceso 10 nseg 4-512 MB 50 nseg Gigabyte 10 mseg 10 Mbyte/seg Disco óptico Cinta magnético CD-ROM Gigabyte Cinta Gigabyte 300 mseg 600 KB/seg Seg 200 KB/seg Parámetros típicos de una memoria Registros CPU Cache Memoria principal Cache de disco Disco Magnético Disco óptico Cinta Magnética Jerarquía de las memorias 3.2.2 Unidad Central de Proceso La CPU o UCP contiene los siguientes tres módulos: la memoria la unidad aritmética y lógica y la unidad de control La UAL y la UC conforman al procesador o microprocesador. 3.2.2.1 Unidad Aritmético y Lógica La unidad aritmética y lógica es el componente encargado de realizar las operaciones tanto aritméticas (suma, resta, multiplicación, división) como lógicas (and, or, not) derivadas de la ejecución de un programa y es dirigida por la Unidad de Control. Dispone de un conjunto de registros internos que la auxilian en la tarea de cálculo. Tales registros se utilizan a los efectos de traer datos de memoria y almacenar temporalmente resultados para luego copiarlos a memoria. Como ejemplo, para ejecutar una operación en una UAL primero se cargan los registros OP1 y OP2 con los operandos pertinentes a la operación a realizar (normalmente se copian desde la memoria central), luego se selecciona la operación y finalmente es resultado es depositado en el registro ACC. En resumen, la UAL comprende: Varios registros de memoria llamados acumuladores, donde se almacenan los resultados parciales de las operaciones . Circuitos dedicados a la suma, resta, multiplicación, división, comparación y testeo. 3.2.2.2 Unidad de Control Componente que controla el ciclo de procesamiento, coordinando todas las actividades de la computadora. Cada vez que se requiere ejecución de una instrucción, la UC reconoce la misma, carga los operandos, ejecuta la instrucción y almacena los resultados. Posee, de forma embutida o empotrada, el conjunto de instrucciones primitivas (microinstrucciones) que el procesador es capaz de interpretar y ejecutar (que normalmente es bastante reducido). Las instrucciones primitivas (también denominadas de máquina) puede ser clasificadas en tres grupos: Transferencia de datos: Son instrucciones que se refieren a la transferencia de datos entre memoria central y los registros del procesador. Ejemplos: LOAD, STORE. Aritméticas y lógicas: Son aquellas instrucciones relacionadas con las operaciones aritméticas y lógicas. La unidad de control utiliza la UAL para su realización. Ejemplos: ADD, SUM, INC SUB, MUL, DIC. Instrucciones de control: Son las utilizadas para controlar la ejecución de un programa y la transferencia de datos, instrucciones y resultados. Ejemplos: JUMP, JUMPIFZERO, JUMPIFNOTZERO, HALT. La unidad de control, en su forma más simplificada, se auxilia de dos registros: el registro de instrucciones y el registro contador de instrucciones (PC). El registro de instrucciones o contador de programa (IR), que contiene el código de la próxima instrucción a ejecutarse. El registro contador de instrucción (PC), que contiene la dirección de memoria principal de la siguiente instrucción a ser ejecutada. A los efectos de comunicarse con los demás componentes la UC posee dos registros a saber: El registro de dirección de memoria (MAR) que contiene la dirección de la posición de memoria a ser leída o escrita. El registro de datos de memoria (MDR) que contiene el dato a ser leído o escrito en memoria de trabajo. Una operación de lectura y de escritura sobre memoria principal puede ser descripta en base a los siguientes pasos: Operación de lectura de una celda de memoria principal: 1. Cargar el registro de direcciones con la dirección de la celda a leer. 2. Activar la operación de lectura, el valor de la celda referenciada por el registro de direcciones se copiará en el registro de datos. Operación de escritura en memoria principal: 1. Cargar el registro de datos con el valor a almacenar. 2. Cargar el registro de direcciones con la dirección de la celda donde se grabará el dato. 3. Activar la operación de escritura La sincronización entre las etapas que componen el ciclo es realizada por un reloj común a todos los componentes. 3.2.3 Líneas de comunicación - Buses Los periféricos de entrada/salida representan a los dispositivos que permiten la comunicación con el exterior (Ej, módulo controlador de teclado, vídeo, reproducción de sonido, etc). A los efectos de interconectar todos los módulos se implementa un cableado denominado sistema de bus. Un sistema de bus está compuesto por el conjunto de caminos compartidos que permiten la interconexión de los distintos componentes: UCP, memoria y periféricos de entrada/salida. Un bus está formado por un conjunto de líneas eléctricas que permiten la transmisión de datos en paralelo. Hay tres tipos de buses: de datos: por donde, de forma bidireccional, fluyen los datos entre las distintas partes de la computadora. de direcciones, por donde viajan las direcciones de memoria sobre las cuales se quiere leer o escribir. de control, por donde viajan señales que controlan el acceso y el uso a los buses de datos y de direcciones. Señales de control pueden ser: escribir en memoria, leer de memoria, escribir o leer en un dispositivo de entrada/salida, etc. 3.2.4 Dispositivos de entrada/salida Las operaciones de entrada/salida son las encargadas de controlar y realizar el intercambio de información entre la computadora y el mundo exterior. Existen una gran variedad de dispositivos de entrada/salida, con características muy diferentes a las de la CPU. La velocidad de transmisión de los periféricos es mucho menor que la velocidad de operación de una CPU, los periféricos poseen velocidades muy diferentes entre sí. Los periféricos son los dispositivos que hacen posible el intercambio de información entre la computadora y el mundo exterior. Se clasifican en: Unidades de entrada Unidades de salida Unidades de Entrada/Salida 3.2.4.1 Periféricos de entrada: Son los encargados de introducir los datos y los programas desde el exterior a la memoria principal para que puedan ser utilizados por la computadora. Transforman los datos introducidos en códigos binarios que pueden ser entendidos y procesados por la computadora. Ejemplos: 1. 2. 3. 4. 5. Teclado. Es similar al teclado de una máquina de escribir y cuenta además con algunas teclas de controles y funciones. Mouse. Es un dispositivo que al ser desplazado sobre una superficie permite mover el cursor por la pantalla. Existen los de sistema mecánico y de sistema óptico. Sensores. Este tipo de periféricos incluye a las pantallas táctiles, capaces de seleccionar distintas opciones reconociendo el tacto sobre distintas zonas de la pantalla. También podemos encontrar otro tipo de sensores como el lápiz óptico, que cuando se posa en la pantalla reconoce la posición que ocupa mediante una medición de la luminosidad que recibe, la tableta gráfica, similar a una pizarra provista de un lápiz (los trazos sobre la tableta aparecen en la pantalla del computador), etc. Escáner. Permite digitalizar imágenes planas (fotografías o texto) y archivarlas. Otros: lector de tarjetas magnéticas, lector de marcas ópticas, joystick, reconocedor de voz, cámara de video, pantalla sensible al tacto, etc. 3.2.4.2 Periféricos de salida: Son los encargados proporcionar al exterior los datos de salida o resultados de los procesos que se realizan en la computadora. Ejemplos: 1. 2. 3. Pantalla o monitor. Es el principal instrumento de comunicación entre la computadora y el usuario. Su constitución física es similar a la del tubo de imagen de un televisor. Plotter. Permite realizar gráficos de alta precisión como mapas o diseños técnicos. Impresora. Su misión es proporcionar copias impresas en papel de la información guardada en la computadora. Hay diversos tipos de impresoraa, entre los que destacan las impresoras de matriz de puntos, de chorro de tinta y las impresoras láser. 3.2.4.3 Periféricos de entrada/salida: A través de ellos se intercambia información con la CPU en ambos sentidos. Un subconjunto importante de estos corresponde a los dispositivos de almacenamiento. Ejemplos: 1. 2. Modem. Es un dispositivo que permite la comunicación de una computadora con otra a través de la línea telefónica (red conmutada) o a través de líneas destinadas en forma exclusiva (líneas punto a punto). Para ello convierte los datos binarios en señales moduladas de baja frecuencia. Su nombre procede de su doble función: MOdulador, DEModulador. Su velocidad se mide en baudios, que equivalen aproximadamente a bits por segundo, al incluir las necesarias señales de control. De almacenamiento: Disquetera, discos rígidos, discos ópticos, unidades de cinta. Los periféricos de almacenamiento son también conocidos como memorias secundarias y memorias auxiliares. La mayoría de estos dispositivos almacenan la información de forma magnética. El primero de todos los dispositivos de almacenamiento magnético fue la unidad (lectora y grabadora) de cinta magnética, y posteriormente se desarrollaron las unidades de discos fijos o discos duros y las unidades de discos flexibles. En una cinta magnética el acceso a la información es secuencial (tenemos que hacer correr la cinta hasta que aparezca la información que buscamos); esto hace que sea un medio muy lento. Generalmente las cintas magnéticas, debido a su gran capacidad, se utilizan para hacer periódicamente copias de seguridad (backup) de la información almacenada en los discos duros del computador. Los discos magnéticos reciben este nombre porque su superficie es magnética y son dispositivos de acceso directo, esto es, no tenemos que recorrer toda la información que hay delante de la que necesitamos. Los discos magnéticos necesitan organizarse lógicamente para poder albergar información de un modo ordenado; dar formato a un disco magnético es dotarlo de la organización lógica necesaria. La información se almacena siguiendo círculos concéntricos llamados pistas que a su vez se dividen en sectores. Para indicar una dirección se especifica la pista y el sector donde comienza la información. Entre los distintos tipos de disco destacan los discos duros (hard disk), que disponen de una gran capacidad de almacenamiento. Suelen ser fijos (no se pueden extraer del computador) y suelen contener el sistema operativo y los programas de uso más común. Los discos flexibles o diskettes, son extraíbles y por eso pueden ser usados para transferir información de una computadora a otra. Estos discos tienen una capacidad mucho menor que un disco duro y el tiempo de acceso a la información almacenada es bastante grande. Asimismo podemos distinguir entre periféricos locales y periféricos remotos, según su conexión a la computadora. Un periférico local, como el mouse, se encuentra cerca de la CPU conectado mediante cables que hacen las veces de prolongador de los buses de la computadora. Para un periférico remoto, como una impresora láser, la conexión se realiza a través de una red de comunicaciones.