ESTRUCTURA DE UN COMPUTADOR EVOLUCIÓN DE LAS COMPUTADORAS La historia conocida de los artefactos que calculan o computan, se remonta a muchos años antes de Jesucristo. El Ábaco Usa cosas para contar, ya sea los dedos, piedras, conchas, semillas. El otro es colocar esos objetos en posiciones determinadas. Sirve hasta el día de hoy, para realizar complejos cálculos aritméticos. EVOLUCIÓN DE LAS COMPUTADORAS La Pascalina La primera máquina de calcular mecánica, un precursor del ordenador digital, fue inventada en 1642 por el matemático francés Blaise Pascal. Utilizaba una serie de ruedas de diez dientes que 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. EVOLUCIÓN DE LAS COMPUTADORAS La máquina analítica Elaborada en el siglo XIX el británico Charles Babbage. Tenía las características de un ordenador moderno. Incluía un flujo de entrada en forma de paquete de tarjetas perforadas, una memoria, un procesador y una impresora. GENERACIÓN DE LAS COMPUTADORAS (ORDENADORES) Primeros Ordenadores Los ordenadores analógicos comenzaron a construirse a principios del siglo XX. Los primeros modelos realizaban los cálculos mediante ejes y engranajes giratorios. Ordenadores electrónicos 1944 aparece la primera computadora, al modo actual, que se pone en funcionamiento. El Dr. Howard Aiken, la presenta con el nombre de Mark I. GENERACIÓN DE LAS COMPUTADORAS (ORDENADORES) Primera Generación (1958) Sistemas constituidos por tubos de vacío, desprendían bastante calor y tenían una vida relativamente corta. Máquinas grandes y pesadas. Alto consumo de energía. Almacenamiento de la información en tambor magnético interior. GENERACIÓN DE LAS COMPUTADORAS (ORDENADORES) Segunda Generación (1959-1964) Transistor como componente principal. Disminución del tamaño. Disminución del consumo de energía y de la producción del calor. Mayor rapidez (ms.) Instrumentos de almacenamiento: cintas y discos. Mejoran los dispositivos de entrada y salida. Aumenta la confiabilidad. GENERACIÓN DE LAS COMPUTADORAS (ORDENADORES) Tercera Generación (chips)(1964-1971) Circuito integrado. Menor consumo de energía. Reducción de espacio. Aumento de fiabilidad y flexibilidad. Mayor capacidad de almacenamiento. Rapidez en la respuesta. Generalización de lenguajes de programación de alto nivel. Compatibilidad para compartir software entre diversos equipos GENERACIÓN DE LAS COMPUTADORAS (ORDENADORES) Cuarta Generación (1971-1982) Se minimizan los circuitos, aumenta la capacidad de almacenamiento. El microprocesador: controla las funciones del ordenador. Memorias Electrónicas: resultan más rápidas. Sistema de tratamiento de base de datos Reducen el tiempo de respuesta. Aparece el Multiproceso. Gran expansión del uso de las Computadoras. GENERACIÓN DE LAS COMPUTADORAS (ORDENADORES) Generación posterior y la Inteligencia Artificial (1982) Mayor velocidad y Mayor miniaturización de los elementos. Aumenta la capacidad de memoria. Lenguajes de programación: PROGOL (Programming Logic) y LISP (List Processing). Máquinas activadas por la voz. Características de procesamiento similares a las secuencias de procesamiento Humano. Multiprocesador (Procesadores interconectados). ARQUITECTURA DE COMPUTADORAS ARQUITECTURA DE COMPUTADORAS La Arquitecturas de Computadores es parte de los Sistemas Digitales y constituye el fundamento de los llamados Sistemas de Computación. Los computadores constituyen sin duda el área de mayor dinamismo e innovación con un crecimiento espectacular desde su introducción alrededor del año 1940. Los computadores han cambiado la sociedad y lo seguirán haciendo. ARQUITECTURA DE COMPUTADORAS ¿Por que estudiar Arquitecturas? Conocer la arquitectura de un sistema permite construir Software de mayor desempeño. Ubicuidad de los procesadores: electrodomésticos, PDA (Asistente digital personal u ordenador de bolsillo), celulares etc... Desarrollo de sistemas embebidos. Desarrollo de procesadores propios. ARQUITECTURA DE COMPUTADORAS La arquitectura esta determinada por los atributos de un sistema que son visibles para un programador. Por ejemplo... Conjunto de instrucciones. Nº de Bits utilizados. Mecanismos E/S. Direccionamiento de memoria. etc.. Evolución tecnológica Los Procesadores han aumentado su velocidad a tasas increíbles, debido principalmente a la disminución del tamaño de sus componentes. Aumento del tamaño y velocidad de las memorias; y la velocidad del sistema E/S. El desempeño relativo por unidad de costo tiene un crecimiento explosivo. EVOLUCIÓN TECNOLÓGICA Ley de Moore: “El desarrollo de las tecnologías de fabricación permite que el numero de transistores integrados en los microprocesadores se duplique cada 18 meses.” LEY DE MOORE: ORGANIZACIÓN La organización tiene referencia a las unidades funcionales y sus interconexiones. No tiene un impacto para un programador, por lo que cambios en ella son transparentes al momento de la implementación. Sin embargo es necesario tenerla en cuenta. Por ejemplo... Detalles de HW internos. Señales de control Tecnología de memoria utilizada. ARQUITECTURA Y ORGANIZACIÓN Aspectos que intervienen en la arquitectura de un sistema: Tecnología. Aplicaciones. Sistemas Operativos. Lenguajes de Programación PROCESADORES Los procesadores sufren un incremento anual de su frecuencia cercano al 20 %. La capacidad lógica de los procesadores tiene un incremento de un 30 % anual. MEMORIA RAM Las memorias de acceso aleatorio (RAM) han ido aumentando en capacidad, llegando a un 60% por año. No así su velocidad de acceso la que solo alcanza un crecimiento de un 10 % anual. ALMACENAMIENTO Los discos duros tienen un crecimiento anual cercano al 60 %. La información que se genera en todo el mundo aumenta a un ritmo de un 30 % anual. REPRESENTACIÓN DE LA INFORMACIÓN Introducción En el mundo que vivimos estamos rodeados de información, se dice la llamada “Sociedad de la información”. Pero, ¿Que es la información? Definición de Información Datos: Representación simbólica de un atributo o característica. Un dato por si solo no dice nada. Información: Conjunto de datos procesados que nos permiten realizar operaciones o tomar decisiones. Información analógica e Información Digital Comúnmente la información es procesada de 2 maneras: analógica y digitalmente. ¿Cual es la diferencia entre información digital e información analógica? La representación de la información esta dada por señales. por lo que existen señales analógicas y señales digitales. Información analógica e Información Digital Una señal se puede considerar como una función en el tiempo g(t). Una función g (t) continua en el tiempo se dice que es una señal analógica. Por su parte, una señal digital es una función discreta (niveles). Información analógica e Información Digital Señales Analógicas: Audio. Instrumentos con agujas. Señales Digitales: TTL. (tecnología de construcción de circuitos electrónicos digitales) instrumentos con indicadores numéricos. En la naturaleza todo es analógico, ya que físicamente todo es continuo. Los computadores realizan sus operaciones sobre información digital. Es posible convertir la información analógica en información digital y viceversa (ADC y DAC). Información analógica e Información Digital ¿Es mejor la información digital? Se evitan errores debidos a cambios físicos, como la temperatura, humedad, etc. Se evitan los errores acumulativos. Representación Numérica Representación Numérica Existen diversas representaciones numéricas. Sin duda, las mas fáciles y cómodas de utilizar para fines matemáticos, son las que se representan mediante bases numéricas. Las representaciones numéricas que utilizan bases, son posicionales. Es posible representar una misma cantidad numérica, en diferentes bases. Números decimales Forma general de expresar un numero en función de su base k1k2k3 . . . km = k1 ∗ B m−1 + k2 ∗ B m−2 + · · · + kn-1∗ B1 + km∗ B0 donde B =base y ki =la cifra i . Las cifras ki pueden ser dígitos entre 0 y B − 1. Bases Numéricas La base mas común y natural de utilizar es la base 10, la que corresponde a los números decimales. En esta base estamos acostumbrados a realizar todas nuestras operaciones de calculo. Por ejemplo... El numero 7523810 puede ser representado de la forma general, de la siguiente forma: 7 ∗ 104 + 5 ∗ 103 + 2 ∗ 102 + 3 ∗ 101 + 8 ∗ 100. Números Binarios En el mundo digital, se utilizan generalmente representaciones que tienen solo 2 estados discretos (0 o 1, on u off, etc...). Para ello se utilizan los números binarios {0,1} cuya base es 2. Por ejemplo... Si se tiene 10011102 corresponde a: 1 ∗ 26 + 0 ∗ 25 + 0 ∗ 24 + 1 ∗ 23 + 1 ∗ 22 + 1 ∗ 21 + 0 ∗ 20 = 781 Bases Numéricas En la computación son muy útiles además las bases octal(8) y hexadecimal(16). La utilidad de estas bases, se debe a que pueden representar información binaria de manera compacta (8 y 16 bits). Conversión de Bases Numéricas Para la conversión desde la base decimal, a otra base, se realizan divisiones sucesivas de los cocientes, por la base a la cual se transformara. Rescatando en cada paso los restos de las divisiones. Por ejemplo... Convertir 23410 a la base octal. 234 29 3 0 8 2 5 3 →23410 = 3528 Conversión de Bases Numéricas Esta idea se puede extender además para números fraccionarios. En este caso es necesario tratar la parte entera y la parte decimal, por separado. Por ejemplo... Convertir 23,437510 a la base binaria. 23 11 5 2 1 0 2 1 1 1 0 1 0,4375 0,875 1,750 1,500 1,000 2 2 2 2 2 →23,437510 = 10111,01112 CONVERSIÓN DE BASES NUMÉRICAS Para realizar una conversión desde cualquier base a la base decimal, es necesario aplicar la formula general propuesta anteriormente: Por ejemplo... Convertir 724,348 a la base decimal. 7 ∗ 82 + 2 ∗ 81 + 4 ∗ 80 + 3 ∗ 8−1 + 4 ∗ 8−2 = 468,4375 ARITMÉTICA DE LOS COMPUTADORES Los computadores tienen como unidad de almacenamiento, solo la capacidad de distinguir entre 2 estados (on u off, 0 o 1, etc..). Los computadores pueden realizar operaciones aritméticas, por lo que requieren de algún dispositivo de HW para almacenar los números que se estén operando. Estos dispositivos se denominan registros. los registros tienen un ancho en bits, definido por la arquitectura. Actualmente los procesadores utilizan registros de 32 o 64 bits. EL REGISTRO Un registro se representa por un conjunto de bits (generalmente 8, 16, 32 o 64). un ejemplo de un registro de 16 bits esta dado por: 1100101100011011 Por convención, los grupos de 8 bits (b) se denominan bytes (B). EL REGISTRO Podemos darnos cuenta, que si un numero debe ser almacenado en un registro, entonces el tamaño máximo de este numero esta limitado por el ancho del registro. Con solo 16 bits el numero mas grande representable por un registro es 216 − 1 = 65535. Sin embargo, ¿Cuando hemos utilizado nuestros computadores normales (de 32 bits), hemos podido trabajar con números mayores a 232 − 1? ARITMÉTICA DE LOS COMPUTADORES Sin duda, al hablar de operaciones aritméticas se requiere además que el computador sea capaz de trabajar con números negativos y con números decimales. ¿Como se representa un numero negativo en un registro? Existen diferentes formas de representar un numero negativo, pero por convención el bit mas significativo del registro representa el signo. Numero positivo. 0100101100011011 Numero negativo. 1100101100011011 Números negativos Hay 3 formas de representar números negativos: Signo y Magnitud (S-M). Complemento 1 (C-1). Complemento 2 (C-2). En estas 3 representaciones, los números positivos quedan de la misma forma. SIGNO Y MAGNITUD La idea de esta representación, es reservar el bit mas significativo del registro, para el signo y en el resto de los bits se almacena la magnitud. En un registro de 16 bits, solo se utilizan 15 bits para la magnitud, es decir, el rango representable en 16 bits es: -32767 a 32767. Ejemplo: para representar el numero −1310 en un registro de 6 bits. 1 0 1 1 0 1 COMPLEMENTO 1 La idea de esta representación es básicamente tomar un numero positivo y luego complementar cada bit del registro para transformarlo en negativo. este mecanismo es bastante sencillo y rápido de realizar. Ejemplo: para representar el numero −1310 en un registro de 6 bits. Primero se considera 1310 0 0 1 1 0 1 Luego se complementa cada bit 1 1 0 0 1 0 COMPLEMENTO 2 Calcular primero el C-1 y luego sumar 1. De esta forma, su calculo es bastante rápido y sencillo, por lo que es muy fácil de implementar por Hardware. Ejemplo: para representar el numero −1310 en un registro de 6 bits. 0 0 1 1 0 1 13 1 1 0 0 1 0 13 en C-1 0 0 0 0 0 1 Se suma 1 1 1 0 0 1 1 -1310 en C-2 CÓDIGOS Por código se entiende una relación capaz de llevar un conjunto de símbolos de un espacio (dominio), a otro espacio diferente (condominio). CÓDIGO BCD Por ejemplo para representar el numero 57310 se puede convertir a binario, resultando 57310 = 10001111012 Esta conversión resulta un poco larga, si pensamos que se debe realizar por cada numero que queremos representar. Además, se debe tener conocimiento completo del numero, para poder realizar la conversión CÓDIGO BCD El código BCD establece una relación que permite convertir rápida y fácilmente los números decimales en binarios. Decimal 0 1 2 3 4 BCD 0000 0001 0010 0011 0100 Decimal 5 6 7 8 9 BCD 0101 0110 0111 1000 1001 CÓDIGO BCD Convertir 438510 a un numero en BCD: 4 3 8 5 0100 0011 1000 0101 4385 --> 0100 0011 1000 0101 CÓDIGO BCD Existen otros códigos, como por ejemplo el EBCDIC. Por ejemplo el código ASCII (American Standard Code of Information). CÓDIGO GRAY El código Gray tiene propiedades muy particulares, porque es altamente utilizado. Esta definido de la siguiente forma: El código Gray de 1 bit, esta dado por {0, 1}. El código se puede construir para k + 1 bits, dado el código de k bits. Para ello se hace una lista con el código Gray conocido y se le anteponen 0’s. Luego se sigue la lista con el código en orden inverso, y antepuesto por 1’s. CÓDIGO GRAY Construcción del Código Gray 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 1 0 0 CÓDIGO GRAY: Ejemplo de un código Gray de 3 dígitos i 0 1 2 3 4 5 6 7 G(i) 0 00 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0