Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos TEMA UNO INTRODUCCIÓN A LOS COMPUTADORES. Informática es una palabra de origen francés formada por la contracción de los vocablos INFORmación y autoMÁTICA. Es una disciplina que trata del diseño, análisis, implementación, y aplicación de procesos que transforman la información. El ordenador o computador es una máquina capaz de aceptar unos datos de entrada, efectuar con ellos operaciones lógicas y aritméticas, y proporcionar la información resultante a través de un medio de salida; todo esto sin intervención y bajo el control de un programa de instrucciones que previamente se ha almacenado en la memoria del computador. En la definición de computador se ha utilizado el término datos, el cual es conveniente precisar. Los datos son conjuntos de símbolos utilizados para expresar o representar un valor numérico, un hecho, un objeto o una idea; en la forma adecuada para ser objeto de tratamiento. En informática es frecuente codificar la información. Codificación es una transformación que representa los elementos de un conjunto mediante los de otro, de forma tal que a cada elemento del primer conjunto le corresponde un elemento distinto del segundo. La unidad más elemental de información es un valor binario, conocido como BIT. El origen de este término es inglés, y se suele considerar que procede de la contracción de las palabras BInary y digiT. Un bit es, por tanto, una posición o variable que toma el valor 0 o 1. 1 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos Todo lo que hace un ordenador digital se basa en una operación: la capacidad de determinar si un conmutador, o 'puerta', está abierto o cerrado. Es decir, el ordenador puede reconocer sólo dos estados en cualquiera de sus circuitos microscópicos: abierto o cerrado, alta o baja tensión o, en el caso de números, 0 o 1. Sin embargo, es la velocidad con la cual el ordenador realiza este acto tan sencillo lo que lo convierte en una maravilla de la tecnología moderna. Las velocidades del ordenador se miden en megahercios, o millones de ciclos por segundo. Un ordenador con una velocidad de reloj de 1000MHz, velocidad bastante representativa de un microordenador o microcomputadora, es capaz de ejecutar 1000 millones de operaciones discretas por segundo. La velocidad y la potencia de cálculo de los ordenadores digitales se incrementan aún más por la cantidad de datos manipulados durante cada ciclo. Si un ordenador verifica sólo un conmutador cada vez, dicho conmutador puede representar solamente dos comandos o números. Así, ON simbolizaría una operación o un número, mientras que OFF simbolizará otra u otro. Sin embargo, al verificar grupos de conmutadores enlazados como una sola unidad, el ordenador aumenta el número de operaciones que puede reconocer en cada ciclo. Por ejemplo, un ordenador que verifica dos conmutadores cada vez, puede representar cuatro números (del 0 al 3), o bien ejecutar en cada ciclo una de las cuatro operaciones, una para cada uno de los siguientes modelos de conmutador: OFF-OFF (0), OFF-ON (1), ON-OFF (2) u ON-ON (3). En general, los ordenadores de la década de 1970 eran capaces de verificar 8 conmutadores simultáneamente; es decir, podían verificar ocho dígitos binarios, de ahí el término bit de datos en cada ciclo. Un grupo de ocho bits se denomina byte y cada uno contiene 256 configuraciones posibles de ON y OFF (o 1 y 0). Cada configuración equivale a una instrucción, a una parte de una instrucción o a un determinado tipo de dato; estos últimos pueden ser un número, un carácter o un símbolo gráfico. Por ejemplo, la configuración 11010010 puede representar datos binarios, en este caso el número decimal 210, o bien estar indicando al ordenador que compare los datos almacenados en estos conmutadores con los datos almacenados en determinada ubicación del 2 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos chip de memoria. El desarrollo de procesadores capaces de manejar simultáneamente 16, 32 y 64 bits de datos ha permitido incrementar la velocidad de los ordenadores. La colección completa de configuraciones reconocibles, es decir, la lista total de operaciones que una computadora es capaz de procesar, se denomina conjunto, o repertorio de instrucciones. Ambos factores, el número de bits simultáneos y el tamaño de los conjuntos de instrucciones, continúa incrementándose a medida que avanza el desarrollo de los ordenadores digitales modernos. Historia Antecedentes históricos En un principio el hombre contaba con los dedos. Después apareció el ábaco, inventado por los chinos; aquí aparece el concepto de notación posicional, es decir, cada número poseerá un valor, dependiendo de la posición que ocupe. Posteriormente, Al-Khowarizmi (Algoritmo) inventó las cuatro reglas básicas (suma, resta, multiplicación y división). También es el creador del concepto de algoritmo, que es el conjunto de procedimientos que se deben realizar para resolver un problema. Su obra, “Al-Gebr” dio lugar al álgebra. En 1623 apareció la primera calculadora, inventada por Wilhelm Schicard y cuyos componentes eran ruedas dentadas. Podía realizar sumas y restas automáticas, además de multiplicaciones y divisiones (basándose en que la multiplicación y división vienen dadas por la suma y la resta respectivamente). Figura 1.3 El Ábaco La primera máquina de calcular mecánica, un precursor del ordenador digital, fue inventada en 1642 por el matemático francés Blas Pascal. Aquel dispositivo utilizaba una serie de ruedas de diez dientes en las que cada uno de los dientes representaba un dígito del 0 al 9. Las ruedas estaban conectadas de tal manera que podían sumarse números haciéndolas avanzar el número de dientes correcto. En 1670 el filósofo y matemático alemán Gottfried Wilhelm Leibniz perfeccionó esta máquina e inventó una que también podía multiplicar. La máquina analítica También en el siglo XIX (1822) el matemático e inventor británico Charles Babbage elaboró los principios de la computadora digital moderna. Inventó una serie de máquinas, como la máquina diferencial, diseñadas para solucionar problemas matemáticos complejos. Muchos historiadores consideran a Babbage y a su socia, la matemática británica Augusta Ada Byron (18153 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos 1852), hija del poeta inglés Lord Byron, como a los verdaderos inventores de la computadora digital moderna. La tecnología de aquella época no era capaz de trasladar a la práctica sus acertados conceptos; pero una de sus invenciones, la máquina analítica, ya tenía muchas de las características de un ordenador moderno. Incluía una corriente, o flujo de entrada en forma de paquete de tarjetas perforadas, una memoria para guardar los datos, un procesador para las operaciones matemáticas y una impresora para hacer permanente el registro. El inventor francés Joseph Marie Jacquard, al diseñar un telar automático, utilizó delgadas placas de madera perforadas para controlar el tejido utilizado en los diseños complejos. Durante la década de 1880 el estadístico estadounidense Herman Hollerith concibió la idea de utilizar tarjetas perforadas, similares a las placas de Jacquard, para procesar datos. Hollerith consiguió compilar la información estadística destinada al censo de población de 1890 de Estados Unidos mediante la utilización de un sistema que hacía pasar tarjetas perforadas sobre contactos eléctricos. ESTRUCTURA FUNCIONAL DE LAS COMPUTADORAS En el verano de 1944, Jhon von Neumann (1903-1957), empezó a colaborar en la construcción del ENIAC (primera computadora electrónica de uso general), contribuyendo a la concepción de una nueva computadora, sus sugerencias fueron relevantes y se centraron en: 1.- Adoptar la concepción utilizada por Babbage en su máquina diferencial para las distintas unidades funcionales de la computadora: entrada, salida, unidad aritmética, unidad de control y memoria. 2.- Utilizar una representación binaria para la realización de operaciones aritméticas. 3.- El concepto de programa almacenado en memoria. 4.- Descomponer las tareas en secuencias de pasos elementales realizables uno detrás del otro. La mayoría de las computadoras actuales siguen estos criterios y por ello se suelen denominar arquitecturas von Neumann. Unidades funcionales • • • • • • Unidad de entrada Unidad de salida Memoria principal Memoria masiva Unidad aritmético-lógica (ALU) Unidad de control 4 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos 5 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos Ciertamente el ENIAC, Calculador e integrador numérico digital electrónico, (acrónimo de Electronic Numerical Integrator and Computer), fue la primera computadora electrónica programable. Pero según mostró la evidencia se basaba en gran medida en el computador Atanasoff-Berry, la Colossus; prototipo construido dos años antes y era una computadora no programable. La motivación de la construcción del ENIAC fue realizar automáticamente tablas matemáticas. Eran tablas balísticas para la armada de los Estados Unidos. La programación se realizaba por medio de interconexiones en un panel de control. Para cambiar de programa era necesario extraer el panel de control, cambiar manualmente las interconexiones y volverlo a insertar. Más tarde, el control se realizó con tarjetas perforadas. Las entradas y salidas de datos se efectuaban con este tipo de tarjetas. Era capaz de efectuar 300 operaciones aritméticas por segundo (en 3 ms realizaba multiplicaciones de 10 dígitos). Su memoria de trabajo contenía 20 acumuladores, cada uno de los cuales memorizaba un número decimal de 10 cifras. Cada cifra decimal se almacenaba en un contador de anillo formado por 10 biestables de triodos; es decir, utilizaba aritmética decimal. El ENIAC pesaba más de 30 toneladas y requería para su instalación más de 140 m2 de superficie. Disponía de 17.000 válvulas de vacío y un consumo medio de 150.000 vatios. 6 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos Desde el año 1946 a la actualidad la evolución de las computadoras se suele agrupar en cuatro generaciones. Lo que más claramente caracteriza cada generación es la tecnología usada. La etapa electromecánica precedió a la 1ª generación de computadores, en la que se desarrollan distintos tipos de calculadoras mecánicas y electromecánicas basadas en las ideas de Pascal, Leibniz y Hollerith. En 1944 se presentó la Mark I, primera calculadora digital automática. PRIMERA GENERACIÓN DE COMPUTADORAS (1946-1954) La primera generación de computadoras utilizaba dispositivos electrónicos, y más concretamente tubos de vacío. Computadoras de esta época fueron la Colossus y el ENIAC. a) Dibujo simplificado de un tubo de vacío (válvula termoiónica o diodo); b) Rectificador con diodo de vacío. SEGUNDA GENERACIÓN DE COMPUTADORAS (1955-1963) En la segunda generación la válvula termoiónica es sustituida por el transistor de unión (dispositivo electrónico de estado sólido). a) transistor, aspecto exterior; b) símbolo y c) estructura. 7 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos TERCERA GENERACIÓN DE COMPUTADORAS (1964-1970) Entre 1958 y 1960, se concibió y desarrolló la idea de construir circuitos integrados monolíticos. Los primeros desarrollos con éxito se deben a la tecnología planar, propuesta por Noyce y Moore, consistente en la fabricación de dispositivos complejos por procesos fotolitográficos y de difusión térmica. Por tanto, la tercera generación se caracteriza por la utilización de circuitos integrados de pequeña y mediana escala de integración. La computadora más significativa de la época fue la IBM 360; se concibió como una línea o familia de computadoras utilizable tanto para aplicaciones comerciales como científicos-técnicas. Otros equipos destacados fueron las supercomputadoras escalares CDC6600 y CDC7600, capaces de procesar 20 millones de instrucciones en coma flotante por segundo. En el extremo opuesto se encontraban las minicomputadoras de la firma Digital, como la PDP-11, que disponía de un bus normalizado al que podían conectarse tarjetas de distintos fabricantes. Sobre esta máquina se desarrolló el Lenguaje C y como consecuencia el UNIX. CUARTA GENERACIÓN DE COMPUTADORAS (1971-…) Una de las peculiaridades de la actual generación de computadoras es el concepto de sistema abierto. En las generaciones anteriores cada computadora estaba muy ligada a su fabricante (sistema propietario), de forma que tanto el software como los distintos elementos hardware, incluidos los periféricos, eran suministrados, en la configuración inicial y en ampliaciones sucesivas, exclusivamente por el fabricante original. Con los sistemas abiertos la filosofía es distinta: el usuario puede configurar su sistema prácticamente a medida. Se utilizan circuitos integrados LSI y VLSI, lo que ha permitido comercialización de circuitos integrados de memoria de 1Gbits, con tiempos acceso de 35ns, así como el desarrollo de microprocesadores microcontroladores, que permitieron la difusión en gran escala de informática. la de y la 8 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos Muchas funciones hardware de gran complejidad se implementan con circuitos integrados, como controladores DMA, gestores de memoria, controladores de E/S, o coprocesadores aritméticos. Cabe destacar la miniaturización y aumento de velocidad de las memorias de circuito integrados. En 1970 Intel comercializa las primeras RAM dinámicas (DRAM), y desde entonces se ha logrado un incremento de su capacidad constante: se multiplica por 4 su capacidad cada 3 años. Así, en 1999 Samsumg desarrolló una memoria DRAM de 1Gbits capaz de operar a 350MHz, utilizando una litografía de 0,13 µm. 9 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos Parámetros para caracterización de prestaciones Existen varias magnitudes que determinan las prestaciones de las distintas unidades que componen una computadora: capacidad de almacenamiento, tiempo de acceso, longitud de palabra y ancho de banda. La capacidad de almacenamiento se refiere a las posibilidades de una unidad para almacenar datos o instrucciones de forma temporal o fija. La capacidad de la memoria principal y dispositivos de memoria masiva se da en bytes (MB, GB, TB, etc.). El tiempo de acceso de una unidad es el intervalo de tiempo que transcurre desde el instante en que se proporciona a la misma la posición concreta del dato o instrucción que se quiere leer o escribir, y el instante en que se obtiene(lee) o graba (escribe) el mismo. Se denomina palabra al conjunto de bits que forma un dato con los que opera la ALU, y coincide, en general, con el número de bits de cada uno de los registros del procesador. La longitud de una palabra es el número de bits que la forman. Con frecuencia la longitud de la palabra coincide con el ancho del bus de datos que conecta el procesador con la memoria. La longitud de palabra determina, de forma indirecta la velocidad del computador. El ancho de banda representa la cantidad de información transferida por segundo entre una unidad y otra. El rendimiento de una computadora en la ejecución de un programa es la inversa de su tiempo de ejecución. La ejecución de cada instrucción para un procesador consume un número determinado de ciclos de reloj, existiendo instrucciones más rápidas que otras. En realidad el rendimiento de un procesador depende de tres factores: el repertorio de instrucciones, la frecuencia de reloj y el número de ciclos asociados a cada instrucción. Otro problema en la determinación del rendimiento es que, tal como se ha definido, depende del programa que se ejecute; y el hecho de que un programa se ejecute más rápidamente en una computadora que en otra no implica que vaya a ocurrir lo mismo para cualquier otro programa. Para poder evaluar lo más correctamente posible el rendimiento de una computadora se han establecido por la comunidad informática conjuntos de programas de prueba (benchmars). El rendimiento de un computador se puede dar dividiendo el número de instrucciones total del conjunto de programas de prueba entre el tiempo total de su ejecución, y se da, o bien en MIPS, o bien en MFLOPS. 10 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos Programas e Instrucciones Una instrucción es un conjunto de símbolos que representa una orden de operación. Un programa es un conjunto ordenado de instrucciones indicando las operaciones o tareas que se desean realizar. Todo lo relativo a símbolos y reglas para construir o redactar con ellos un programa se denomina lenguaje de programación. Los circuitos electrónicos de la unidad de control de una computadora solo pueden interpretar instrucciones de un determinado lenguaje, denominado lenguaje máquina. Las instrucciones de este lenguaje están formadas por bits agrupados normalmente en al menos dos bloques o campos. Uno de ellos es el código de operación y el otro una dirección. El código de operación indica la operación correspondiente a la instrucción. El campo de dirección especifica el lugar dónde se encuentra el dato. El lenguaje máquina tiene serios inconvenientes, como son: la dependencia del procesador; un repertorio de instrucciones reducido y operaciones elementales; es laborioso programar con él. Para evitar estos problemas se han ideado los lenguajes de alto nivel, que no dependen del procesador. Un programa escrito en lenguaje de alto nivel es sometido a un proceso de traducción, que genera como resultado un programa en lenguaje máquina. El conjunto de programas que controlan y gestionan los recursos del computador se denomina sistema operativo. Un sistema operativo es una colección de programas que juntos suministran una interfaz entre el hardware de la computadora y los usuarios, facilitando su uso, asignando los recursos del sistema para asegurar un funcionamiento adecuado y eficaz. A las instrucciones del programa de control se las suele denominar órdenes (comandos). 11 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos Niveles conceptuales de una computadora El hardware o soporte físico de un ordenador es la máquina en sí: es decir, el conjunto de circuitos electrónicos, dispositivos electromecánicos y otros elementos físicos que forman la computadora. El software o soporte lógico de una computadora es el conjunto de programas ejecutables por la computadora. La palabra hardware no sólo se utiliza para designar los dispositivos físicos del computador (tecnología), sino también sus distintos modos de interconexión (arquitectura). La computadora es uno de los sistemas más complejos ideados por el hombre, contiene cientos o miles de circuitos integrados pudiendo incluir cada uno de ellos millones de elementos individuales (transistores), todos ellos actuando coordinadamente. Para facilitar su diseño o análisis, se puede describir según distintos niveles conceptuales. Los tres niveles inferiores corresponden a los de tecnología de computadoras. El nivel electrónico es de gran importancia ya que de él depende el rendimiento de las computadoras. El nivel 3 describe la estructura de la computadora, en el tiene lugar la transferencia de instrucciones a nivel de microoperaciones. Los circuitos que utiliza este nivel son registros, multiplexores, bancos de registros, módulos de memoria RAM, etc., construidos con los elementos del nivel 2 (puertas lógicas). El nivel 4, lenguaje máquina, es el genuino nivel de arquitectura de la computadora, ya que el diseño de una computadora parte de la especificación de las instrucciones del lenguaje máquina, (el lenguaje ensamblador es igual al lenguaje máquina). El nivel 5, sistema operativo, puede considerarse como la interfaz entre el hardware y el software. Añade una capa para facilitar el uso del hardware y hacerlo lo más eficaz posible desde el punto de vista de los usuarios y de los programas de aplicación. El último nivel, es el que realmente ven los programadores y usuarios, y está formado básicamente por los traductores. Si está bien concebido, el usuario no tendrá necesidad de conocer nada de los niveles inferiores. 12 Miguel Ángel Asensio 03/04 Arquitectura de Equipos y Sistemas Informáticos 13