Definiciones básicas Estructura funcional Evolución histórica 1. Introducción al computador Informática Ingenierı́a en Electrónica y Automática Industrial Raúl Durán Dı́az Juan Ignacio Pérez Sanz Departamento de Automática Escuela Politécnica Superior Curso académico 2016–2017 Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Contenidos 1 Definiciones básicas 2 Estructura funcional 3 Evolución histórica Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Están en todas partes. . . Los sistemas de computación están en todas partes. Una revolución total e imprevista en 30 años. Todo basado en la Fı́sica del Estado Sólido. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Aquı́ están los padres de nuestra tecnologı́a: Figura: Conferencia Solvay, Bruselas, 1927 (Foto: pastincolour.com) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Están en todas partes. . . El diseño, desarrollo y fabricación de software representan un gran porcentaje del PIB en muchos paı́ses. El precio de los sistemas se ha dividido muchas veces por 10. Esto ha permitido la tercera revolución de nuestra civilización: crear la Sociedad de la Información. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Sociedad de la Información La activos importantes son intangibles. Costosos de diseñar y depurar. Fáciles de mover, transportar, replicar, coste casi cero. Las malas noticias: La copia indiscriminada perjudica gravemente la industria. Se hace necesario algún tipo de protección de la propiedad intelectual. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Sociedad de la Información: la educación Sistemas de información en las aulas. Ventajas: Herramientas cómodas para mejorar el aprendizaje. Flexibles. Contenido multimedia. Inconvenientes: Evanescencia. Imprecisión. Tienden a eliminar la necesaria reflexión personal. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades ¿Qué instrumento soporta todo esto? Sistemas de información Un sistema de información toma información, la procesa y devuelve la información transformada de acuerdo a un plan previsto. Es como una fábrica de manufacturas, donde la materia prima es información. Almacenes: → memoria principal. Oficina técnica: → unidad de control. Lı́neas de producción: → ruta de datos y unidades funcionales. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Algunas definiciones Definición Computador: máquina capaz de recibir unos datos de entrada, efectuar con ellos operaciones aritméticas y lógicas, y suministrar los resultados en forma de datos de salida, todo ello bajo el control de un programa de instrucciones previamente cargado en el propio computador. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Más definiciones Definición Un dato es un conjunto de uno o más sı́mbolos que son aptos para representar alguna realidad, no necesariamente cuantitativa. Observación Pueden ser datos: una temperatura, el nombre de una persona, el tı́tulo de una obra de teatro. . . Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Más definiciones Definición Una instrucción es un sı́mbolo que representa una orden para el computador. Cada posible orden está codificada en una instrucción. Definición Un programa es una lista secuencial de instrucciones. El computador ejecuta las instrucciones exactamente en el orden en que vienen marcadas en la lista. Observación Algunas instrucciones sirven para modificar el orden secuencial de ejecución, estableciendo como siguiente instrucción otra distinta de la sucesiva según el programa. La decisión puede ser dinámica, es decir, depende del estado de la máquina a lo largo de la ejecución. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Más definiciones Definición Se denomina codificación a una correspondencia biunı́voca entre los elementos de un conjunto y los de otro. Observación De esta manera, podemos referirnos a elementos del primer conjunto usando los del segundo. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Más definiciones Definición La información dentro de un computador siempre está codificada usando un código binario que se llama bit. Al conjunto de 8 bits se le denomina byte. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Unidades y múltiplos Se utiliza el sı́mbolo b para representar ‘bit’ y el sı́mbolo B para representar ‘byte’. Prefijo Kilo Mega Giga Tera Exa Peta Sı́mbolo kMGTEP- Factor 103 106 109 1012 1015 1018 1 kB significa mil bytes. 5 Mb significa cinco millones de bits. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Introducción Definiciones Unidades Unidades y múltiplos Se usa también el siguiente método para expresar múltiplos. Prefijo Kilo Mega Giga Tera Exa Peta Sı́mbolo KiMiGiTiEiPi- Factor 210 220 230 240 250 260 Por ejemplo, 1 kB significa mil bytes, mientras que 1 KiB significa 1024 bytes. A veces se usa KB como sinónimo de KiB: ¡atención a la K mayúscula! Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Antes de abrir la tapa. . . Dispositivos de entrada/salida (E/S): teclado, ratón, pantalla. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Lo que se ve. . . Figura: Teclado (Foto: www.codinghorror.com) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Lo que se ve. . . Figura: Ratón (Foto: www.germes-online.com) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Lo que se ve. . . Figura: Monitor tradicional (Foto: www.zimmers.net) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Abriendo la tapa. . . Placa madre (motherboard), con procesador, memoria, buses de interconexión, bus del sistema, EISA (Extended Industry Standard Architecture). bus IDE (Integrated Drive Electronics) para discos, bus de expansión de periféricos PCI (Peripheral Component Interconnect). otros buses de E/S (SCSI,. . . ). Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Abriendo la tapa. . . Figura: Placa madre (Foto: www.learnthat.com) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Abriendo la tapa. . . Figura: Disco magnético (Foto: img.zdnet.com) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Abriendo la tapa. . . Figura: Memoria RAM (Foto: www.ciscomonkeys.com) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Abriendo la tapa. . . Figura: Tarjeta de red Ethernet (Foto: cache.gizmodo.com) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Abriendo la tapa. . . Figura: Procesador Intel Core Duo (Foto: www.linuxhardware.org) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Estructura de la máquina de von Neumann Memoria (Instrucciones y datos) Periféricos CPU Unidad de control Unidades funcionales Figura: Arquitectura von Neumann Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Modelo de la memoria Modelo de memoria 100 129 101 247 102 98 103 0 104 245 105 7 106 54 107 101 108 255 Dirección Contenido Figura: Memoria: cada posición puede almacenar 1 byte Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Esquema de la CPU Banco de registros Salida A Unidad de control Salida B Operador aritmético Señales de control De/hacia la memoria CPU Figura: Estructura interna de la CPU Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Instrucciones Para manejar la máquina, hablamos su lenguaje. Las “palabras” de ese lenguaje son instrucciones. El vocabulario completo (pequeño) es el ((repertorio de instrucciones)). Las instrucciones deben ser lo más sencillas que sea posible, pero. . . deben permitir cualquier operación, es decir, el repertorio debe ser completo. Puede haber una infinidad de repertorios distintos, pero en la práctica, todos se parecen. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Concepto de programa almacenado La idea clave de von Neumann es representar las instrucciones mediante códigos numéricos, susceptibles de ser almacenados en memoria como cualquier otro tipo de dato. El conjunto de todos esos códigos numéricos constituye el lenguaje máquina. Nosotros no manejamos directamente los códigos de ese lenguaje, sino un mnemónico asociado a cada código (= instrucción). Al conjunto de todos los mnemónicos lo llamamos lenguaje ensamblador. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Ejemplos de instrucciones y registros Instrucción ADD $R3, $R2, SUB $R3, $R2, ADDI $R2, $R1, AND $R1, $R2, OR $R1, $R2, $R1 $R1 N $R3 $R3 Tipo de registro De propósito general Contador de programa Puntero de pila Función $R3 ← $R2 $R3 ← $R2 $R2 ← $R1 $R1 ← $R2 $R1 ← $R2 + + & | $R1 $R1 N $R3 $R3 Nombre $R0, $R1, $R2, $R3,. . . $PC $SP Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Fases de una instrucción Búsqueda (fetch): tomar la instrucción apuntada por el $PC y llevarla a la unidad de control. Descodificación (decode) de la instrucción y lectura de operandos. Ejecución (execute) de la operación. Almacenamiento (write-back) de resultados en los lugares indicados por la instrucción. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Concepto de arquitectura Definición de arquitectura de un computador Denominamos arquitectura de un computador al conjunto formado por el repertorio de instrucciones y los registros disponibles. Observación Dos computadores que compartan la misma arquitectura pueden ejecutar exactamente el mismo programa con idéntico resultado. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Descripción lógica del computador Sistema operativo Software Arquitectura Programas de usuario Lenguaje máquina Electrónica digital Hardware Tecnología Microprogramación Circuitos y dispositivos Figura: Visión lógica y jerárquica Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Lenguajes de programación Programar usando el lenguaje ensamblador es muy complicado. Se utiliza en su lugar lenguajes de alto nivel. Recuerdan, más o menos, el lenguaje natural. Un archivo que contiene sentencias de lenguaje de alto nivel lo denominamos código fuente. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Compilador El compilador es un programa que convierte el código fuente en lenguaje ensamblador. Ejemplo en C int i, j, f, g, h; f = (g + h) - (i + j); Lo mismo, ensamblado ADD $R5, $R3, $R4 ADD $R6, $R0, $R1 SUB $R2, $R5, $R6 Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Vistas fı́sica y lógica Máquina von Neumann Programación de alto nivel Proceso de desarrollo Programa C Código ensamblado Código máquina Ejecutable Compilador Ensamblador Linker Cargador Programa cargado Figura: Ciclo de desarrollo y ejecución de un programa Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Historias de antaño Arquitectura von Neumann Tecnologı́as Un poco de historia Charles Babbage (Londres, 1791–1871): analytical engine. La primera máquina programable, con ideas tomadas de un telar que podı́a fabricar distintos tipos de telas mediante el uso de unas tarjetas perforadas (era un telar ((programable))). Ada Lovelace (Londres, 1815–1852). Se la considera la primera programadora: parece que escribió un programa para calcular los números de Bernoulli1 con el analytical engine. 1 Los números de Bernoulli son una sucesión de racionales, conectados con varias de las matemáticas. Se definen recursivamente: Pm ramas m+1 Bm−j+1 + B0 = 0, con m > 0 y B0 = 1. j=1 j Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Rev: 1.18 Definiciones básicas Estructura funcional Evolución histórica Historias de antaño Arquitectura von Neumann Tecnologı́as Estamos en la Segunda Guerra Mundial Proyecto ENIAC, dirigido por J. Mauchly y J.P. Eckert, durante la Segunda Guerra Mundial. La máquina tenı́a: 18.000 válvulas de vacı́o, 25 metros de larga, 2,5 metros de alta, 20 registros de 10 dı́gitos, 1.900 sumas por segundo. Era programable mediante cableado y leı́a los datos de tarjetas perforadas. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Historias de antaño Arquitectura von Neumann Tecnologı́as Proyecto ENIAC Figura: Vista de la máquina ENIAC (Foto: www.mrsec.wisc.edu) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Historias de antaño Arquitectura von Neumann Tecnologı́as Proyecto ENIAC Figura: Otra vista de la máquina ENIAC (Foto: www.mrsec.wisc.edu) Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Historias de antaño Arquitectura von Neumann Tecnologı́as Máquina de von Neumann En 1944, J. von Neumann2 se unió al proyecto ENIAC y propuso codificar las instrucciones como números y almacenarlos en la memoria de la máquina. Con la ayuda de Goldstine y Burks, todo este trabajo cristalizó en un documento3 , que se considera la fundación de los computadores tal como los entendemos ahora. Este es el origen de la ((Arquitectura von Neumann)) 2 John von Neumann (Budapest, 1903–Washington, 1957). A.W. Burks, H.H. Goldstine, J. von Neumann, Preliminary discussion of the logical design of an electronic computing instrument, Report to the U.S. Army Ordnance Department, 1946. 3 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Rev: 1.18 Definiciones básicas Estructura funcional Evolución histórica Historias de antaño Arquitectura von Neumann Tecnologı́as Influencia de la tecnologı́a Primera etapa: Válvulas de vacı́o. Velocidades muy lentas. Segunda etapa: Circuitos integrados para el procesador. Memorias de núcleo de ferrita (más lentas que el procesador). Instrucciones complejas, para reducir su número. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Historias de antaño Arquitectura von Neumann Tecnologı́as Influencia de la tecnologı́a Tercera etapa Aumento en la densidad de integración. Aparición de memoria cache. La complejidad de instrucciones es un inconveniente. Cuarta etapa Mejoras de la velocidad del procesador. Instrucciones sencillas, con un número total reducido al mı́nimo. Reducción del tiempo de ciclo-máquina. Ampliación de cache para contener datos e instrucciones. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Historias de antaño Arquitectura von Neumann Tecnologı́as Desarrollos comerciales 1947: Eckert-Mauchly Corporation. Primera máquina BINAC. No prospera. 1951: E-M, adquirida por Remington-Rand. UNIVAC I. Éxito: se venden 48 máquinas a 1 millón de dólares cada una. 1952: IBM 701, primer computador de IBM. Sólo se vendieron 19. 1964: System/360: IBM define el concepto de arquitectura de computadores desarrollando la familia 360. Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador Definiciones básicas Estructura funcional Evolución histórica Historias de antaño Arquitectura von Neumann Tecnologı́as Desarrollos comerciales 1965: DEC PDP-8 primer mini-computador comercial. Bajo coste, solo 20.000 dólares. 1963: Primer supercomputador: CDC 6000, creado por Seymour Cray. 1976: Cray sigue liderando el desarrollo de los grandes: CRAY-1. 1977: Primer computador personal Apple-II. 1981: IBM Personal Computer (Intel y Microsoft). Rev: 1.18 Raúl Durán Dı́az, Juan Ignacio Pérez Sanz 1. Introducción al computador