~1~ Bloque 1 Arquitectura de computadores Informática para la Ingeniería ~2~ Representación de la información ANALÓGICO VS. DIGITAL. LA ELECTRÓNICA BINARIA. • Analógico: traducción directa de una magnitud física, generalmente a tensión o intensidad eléctricas. Ej: termómetro que mide de 0 a 100ºC devolviendo una tensión de 0 a 100 mV. En ese caso, una temperatura de 43º se expresaría con una señal de 43 mV. • Digital: Lo que se envía es el número en sí, mediante señales discretas. Puesto que la electrónica digital es habitualmente binaria (dispositivos de 2 estados), el número se envía en binario (base 2) como una sucesión de ceros y unos. En el ejemplo anterior, 43º 0 1 0 1 0 1 1 se enviaría como 0101011 (ver figura). • Ventajas analógico: Más simple y útil en entradas y salidas. Continuo (no discreto). Precisión teórica infinita, pero real difícil de evaluar. • Ventajas digital: Más posibilidades y mayor facilidad para cálculos. Mayor fiabilidad. Posibilidad de detección de errores. Precisión: la definida en el diseño. Informática para la Ingeniería ~3~ BITS, BYTES Y TAMAÑO DE LOS OPERANDOS. • A cada cifra digital binaria, que sólo puede tener 2 valores (0 o 1), se la llama bit. La abreviatura es una b minúscula. • Los bits se agrupan de 8 en 8 y se numeran de derecha a izquierda empezando por 0 (p. ej., 10010101 tiene los bits 0, 2, 4 y 7 a 1). A cada grupo se le denomina Byte (pronunciado bait) y su abreviatura es una B mayúscula. Típicamente, la mayoría de los datos ocupan 1, 2, 4 u 8 bytes. MÚLTIPLOS, SUBMÚLTIPLOS Y PREFIJOS SEGÚN EL S.I. Pot.2 Pref. Abrev. • La tabla de la derecha indica los 4 Pot.10 3 210 Kilo K primeros múltiplos y submúltiplos 106 220 Mega M que se emplean en electrónica e 109 30 10 2 Giga G informática. 12 40 10 2 Tera T Pot.10 10-3 10-6 10-9 10-12 Pref. Abrev. mili m micro µ nano n pico p • Obsérvese que, en el caso de múltiplos pueden indicar potencias de 10 o de 2. Si la magnitud a medir es la cantidad de memoria, se refiere a potencias de 2; si es capacidad de disco, puede haber ambigüedad (para algunos cada gigabyte de disco es 230 B y para otros 109 B), y en todos los demás casos son potencias de 10. Informática para la Ingeniería ~4~ • Los siguientes ejemplos ilustran lo dicho: o o o o 3 GHz = 3·109 Hz = 3000000000 Hertzios. 4,4 pF = 4,7·10–12 F = 0,0000000000047 Faradios. 256 MB (de memoria) = 256·220 MB = 268435456 Bytes. 1,2 TB (de disco) puede ser: 1,2·1012 B = 1200000000000 Bytes o 1,2·240 B = 1319413953331 Bytes. o 5 MB/seg (velocidad de transferencia) = 5·106 B/seg = 5000000 Bytes/seg.1 o 15 mW = 15·10–3 W = 0,015 vatios. TIPOS DE DATOS. • Existen muchos tipos de datos procesables por un ordenador y cada uno requiere un código o convenio de representación en binario. Veremos los indicados en el cuadro de la página siguiente.2 1 2 Obsérvese que, aunque se hable de megabytes, la magnitud que se pretende medir no es una capacidad de memoria, sino una velocidad de transferencia (cantidad de datos que se leen, escriben o, en general, se transfieren de un lugar a otro, en cada unidad de tiempo) y, por eso, se aplica la regla general que dice que si no es una capacidad de memoria o de disco, nos estamos refiriendo a potencias de 10. Sólo están incluidos aquí los tipos de datos básicos. Existen otros que, por su complejidad, superan los límites de este curso, como, por ejemplo, los convenios de representación de datos multimedia (imágenes, sonidos y video). Informática para la Ingeniería ~5~ Enteros sin signo: BINARIO NATURAL Números enteros Numéricos Enteros con signo: COMPLEMENTO A 2 Números reales: COMA FLOTANTE Datos Alfanuméricos Caracteres: CÓDIGO ASCII Cadenas (strings): ASCIIZ Lógicos REPRESENTACIÓN DE NÚMEROS ENTEROS SIN SIGNO (unsigned short, unsigned int y unsigned long3): • El código binario natural. o Concepto de peso y de código ponderado. o Conversiones de decimal a binario natural: por divisiones sucesivas o por descomposición en pesos. o Conversiones de binario natural a decimal: sumando pesos. o Con n bits, todos ellos permiten representar 2n valores diferentes: de 0 a 2n–1. 3 Denominaciones en lenguaje C para declarar variables enteras sin signo de diversos tamaños. Informática para la Ingeniería ~6~ • Representación octal y hexadecimal. o Son frecuentes las representaciones octal, cuya base es 8, y la hexadecimal (abreviadamente “hexa”) cuya base es 16. o En octal son válidas las cifras 0 a 7. En hexa son necesarias 16 cifras distintas cuyos valores van del 0 al 15, para lo cual se añaden a las 10 normales (de 0 a 9) las siguientes: a (10), b (11), c (12), d (13), e (14) y f (15). o Conversiones de decimal a octal (o a hexa): por divisiones sucesivas. o Conversiones de octal (o hexa) a decimal: sumando pesos. o Conversión de octal (o hexa) a binario y viceversa: cada 3 (o 4) bits constituyen una cifra octal (o hexa). o Utilidades: ▪ Más fáciles de manejar (números de menos cifras) que en binario. ▪ Conversiones de estas bases a binario y viceversa son muy simples y fáciles de realizar. ▪ Las conversiones de decimal a binario se pueden hacer de decimal a hexa (o a octal) y después convertir el resultado a binario. Informática para la Ingeniería ~7~ REPRESENTACIÓN DE NÚMEROS ENTEROS CON SIGNO (short, int o long, con o sin el prefijo signed4). • El convenio de complemento a 2 o Los positivos deben empezar por 0 (si no, no caben en el formato) y se representan como en binario natural. Los negativos se representan como complemento a 2 de su positivo correspondiente y empiezan siempre por uno. o El complemento a 2 se calcula invirtiendo todos los bits y sumando 1 al resultado. o No es un código ponderado. o Con n bits, pueden representarse 2n valores diferentes: negativos de –1 a –(2n–1) y positivos de 0 a +(2n–1–1). o Conversión de decimal a complemento a 2: si es positivo, se convierte a binario natural y se comprueba que el bit de la izquierda es un 0. Si es negativo, se calcula el binario natural del positivo correspondiente, se le hace el complemento a 2 y se comprueba que el bit de la izquierda es un 1. o Conversión de complemento a 2, a decimal: si el bit de la izquierda es un 0, sumando pesos y, si es un 1, hay que hacer el complemento a 2, a continuación sumar pesos y, finalmente, cambiar el signo del resultado. 4 Denominaciones en lenguaje C para declarar variables enteras con signo de diversos tamaños. Informática para la Ingeniería ~8~ • Pseudohexa. o Si tenemos un signed expresado en complemento a 2 (p. ej.: 1001110110000011), pueden también agruparse los bits de 4 en 4 para formar cifras hexa (en el ejemplo anterior quedaría 0x9d835). o Sin embargo, como el complemento a 2 no es un código ponderado, el valor resultante no es un número hexa “de verdad”, ya que no se puede hablar en él de pesos. Aquí llamaremos a este código pseudohexa, aunque en la realidad se le suele llamar también hexa y queda implícito que no es un valor hexa “de verdad”. o Utilidad: más fáciles de manejar (números de menos cifras) que en binario y conversiones entre binario y pseudohexa fáciles de realizar. REPRESENTACIÓN DE NÚMEROS REALES EN COMA FLOTANTE (float y double6). • Está basada en la notación científica: por ejemplo, la distancia de la Tierra al Sol es, aproximadamente, de 149600000000 m., pero resulta más cómodo manejarla como 1,496·1011 m. Así mismo, el radio de Bohr del átomo de hidrógeno es de 0,00000000005292 mm, pero resulta más cómodo manejarlo como 5,292·10–11 m. 5 6 Para indicar que un número está representado en hexa usaremos el mismo convenio que en lenguaje C: añadir delante “0x”. Denominaciones en lenguaje C para declarar variables reales con distintos tamaños que implican también precisiones diferentes. Informática para la Ingeniería ~9~ • De la misma forma, cualquier número podemos expresarlo de la siguiente forma: Nº = m·2exp, donde a m se le denomina mantisa y a exp, exponente. • Por lo tanto, los números reales en coma flotante se representarán mediante un conjunto de 2 valores (m y exp) encapsulados juntos en un determinado formato. • La norma más utilizada es la IEEE 754, que establece dos formatos básicos: el de simple precisión (float), y el de doble Mantisa Exponente Tamaño total (double), que tienen el Simple precisión (float) 24 bits 8 bits 32 bits (4 bytes) tamaño indicado en la Doble precisión (double) 53 bits 11 bits 64 bits (8 bytes) tabla. REPRESENTACIÓN DE DATOS ALFANUMÉRICOS (char). • La codificación más usada actualmente es la ASCII (American Standard Code for Information Interchange). El estándar inicial tenía 7 bits (códigos 0 a 0x7f, en total 128) y estaba adaptado para EEUU (letras inglesas –mayúsculas y minúsculas–, números, signos de puntuación, símbolos de uso común en EEUU –@, #, $, &...– y caracteres de control). Informática para la Ingeniería ~ 10 ~ • En ASCII son de interés por su uso frecuente los siguientes símbolos: Carácter Código NULL 0 <LF> (Line Feed) 0x0a <CR> (Carriage Return) 0x0d <SP> (Espacio blanco) 0x20 Caracteres Números 0 a 9 Mayúsculas A a Z Minúsculas a a z Códigos 0x30 a 0x39 0x41 a 0x5a 0x61 a 0x7a NOTAS ❖ El NULL no es un carácter representable ni se corresponde con ningún carácter (no confundir con el espacio en blanco). Como veremos posteriormente, su utilidad principal es en algunos convenios marcar el final de una cadena de caracteres. ❖ Pasar a la línea siguiente línea es el conjunto de 2 acciones: bajar el cursor a la siguiente línea (carácter Line Feed, que también se denomina New Line) y retroceder con él hasta la posición inicial de la izquierda (carácter Carriage Return). En algunos sistemas sólo se usa uno de ellos y se traduce por el conjunto de ambos. • Posteriormente se genera una extensión de ASCII denominada ISO 8859-1 o ISO Latín 1, que incorpora los caracteres específicos de los idiomas con alfabetos derivados del latín, tales como las vocales con todo tipo de acentos y diéresis, la ñ española, la ç francesa, la alemana, etc., en los códigos comprendidos entre el 0x80 y el 0xff. Informática para la Ingeniería ~ 11 ~ • Esta normalización no es suficiente en ámbitos como Internet, donde se requieren otros muchos alfabetos, tales como el chino, el árabe, etc. • Para incluirlos se define el UNICODE, que tiene varias versiones: las más usadas son UTF-8, que emplea un código de longitud variable (de 1 a 4 bytes) de forma que los caracteres más corrientes se codifican con 1 byte, y los más raros con 4 (otros intermedios requieren 2 o 3 bytes), y UTF-16, que codifica prácticamente todos los caracteres con 16 bits (sólo algunos muy raros los codifica con una pareja de códigos de 16 bits). • Cadenas de caracteres (strings, "..."7) o La codificación más frecuente consiste en colocar los caracteres uno detrás de otro y añadir al final un carácter NULL (código ASCII 0), que indica final de cadena y no se contabiliza en el tamaño del string. Usa este convenio el lenguaje C, y suele decirse que el string está codificado en ASCIIZ (ASCII terminado en zero). 7 Denominación y forma de declararlos en lenguaje C. Informática para la Ingeniería ~ 12 ~ DATOS LÓGICOS. • Un dato lógico elemental sólo puede tener 2 valores: V (verdadero) o F (falso).8 • La representación mínima es un solo bit (típicamente, V = 1 y F = 0, aunque también se puede adoptar el convenio contrario). Sin embargo, como los ordenadores trabajan con bytes, son frecuentes otras representaciones como las siguientes: o Representarlo con un Byte: en ese caso, F = 00000000 y V = 11111111, y cualquier valor distinto a 0 se considera también como V. o Encapsular hasta 8 datos lógicos en un byte, de forma que cada uno de sus bits sea un valor lógico independiente. • En programación, un dato lógico es el resultado de cualquier evaluación de una condición (típicamente, un if o una estructura de control similar). PROBLEMAS PROPUESTOS PARA LA LECCIÓN. 1. ¿Cuánto tiempo se tardaría en leer una memoria de 4GB si la velocidad de transferencia es de 1 MB/seg. 8 En inglés, T (true) o F (false) Informática para la Ingeniería ~ 13 ~ 2. Expresar el número decimal 14327 en binario natural con 16 bits, y también en octal y hexadecimal. 3. Expresar los números decimales +14327 y –14327 en complemento a 2 (con 16 bits) y en pseudohexa. 4. Convertir a decimal, octal y hexa A=1001 0101 0010 0111, que está en binario natural (16 bits). 5. Convertir a decimal, y pseudohexa A=1001 0101 0010 0111, que está en complemento a 2 (16 bits). 6. Convertir a decimal, binario natural (con 8 bits) y octal A = 0xaf, que es un entero sin signo expresado en hexa. 7. Convertir a decimal y a complemento a 2 (con 8 bits) A = 0xaf, que es un entero con signo expresado en pseudohexa. 8. Convertir a decimal, binario natural (con 16 bits) y hexa A = 123456, que es un entero sin signo expresado en octal. 9. Si la mantisa de un número real es –1,5625 y el Código Código Carácter Carácter ASCII ASCII exponente es 3, ¿cuál es el número representado? NULL 0 l 0x6c 10. ¿Cómo se representaría la cadena "Hola España"? Space E H a Informática para la Ingeniería 0x20 0x45 0x48 0x61 o p s ñ 0x6f 0x70 0x73 0xf1 ~ 14 ~ • Soluciones. 1. 4294,967296 seg. 2. Binario natural: 0011 0111 1111 0111. Octal: 033767. Hexa: 0x37f7. 3. +14327: Binario natural: 0011 0111 1111 0111. Octal: 033767. Hexa: 0x37f7. –14327: Ca2: 1100 1000 0000 1001. Pseudohexa: 0xc809. 4. Decimal: 38183. Octal: 112447. Hexa: 0x9527. 5. Decimal: –27353. Pseudohexa: 0x9527. 6. Decimal: 175. Binario natural: 1010 1111. Octal: 0257. 7. Decimal: –81. Complemento a 2: 1010 1111. 8. Decimal: 42798. Binario natural: 1010 0111 0010 1110. 9. –12,5. 10. 0x48, 0x6f, 0x6c, 0x61, 0x20, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0. Informática para la Ingeniería ~ 15 ~ Álgebra de Boole ELEMENTOS Y OPERACIONES DEL ÁLGEBRA DE BOOLE • En 1.854 George Boole desarrolla un álgebra para expresar los elementos del razonamiento lógico y filosófico, pero hasta casi un siglo después no se aplica al diseño de ordenadores. • El universo del álgebra de Boole está compuesto por 2 elementos: TRUE o VERDADERO y FALSE o FALSO, que, en este álgebra, se representan respectivamente como 1 y 0. A B A and B A or B A not A • Sobre ellos se definen 3 operaciones: AND (Y) y OR (O), 0 0 0 0 0 1 que son binarias (de 2 operandos), y NOT (NO), que es 0 1 0 1 1 0 unaria (1 operando). Ver tabla de la derecha. 1 0 0 1 1 1 1 1 • Los operadores que se usan son: AND: , o . Usaremos el punto “·”: A and B = A·B. Igual que en el álgebra habitual, a veces se omite: AB = A·B OR: , o . Usaremos el “+”, que también es el más habitual en electrónica: A or B = A+B. NOT: Se coloca una línea encima: not A = A Informática para la Ingeniería ~ 16 ~ • A las operaciones AND y OR se las denomina también producto y suma lógicos respectivamente, pero no deben confundirse con el producto y la suma aritméticas (los del álgebra habitual), e incluso las propiedades de las operaciones lógicas y las aritméticas no son siempre iguales. • Las tablas mostradas en la página anterior para definir las operaciones AND, OR y NOT se denominan tablas de verdad, y es una de las formas de definir una función: consiste en indicar que valor toma para cada una de las combinaciones posibles de las variables. PROPIEDADES DE LAS OPERACIONES BÁSICAS • Conmutativa: A·B = B·A A+B = B+A • Asociativa: (A·B)·C = A·(B·C) = A·B·C (A+B)+C = A+(B+C) = A+B+C • Distributiva: A·(B+C) = A·B+A·C A+(B·C) = (A+B)·(A+C) • Idempotencia: A·A=A A+A=A • Ley de absorción: A+A·B = A A·(A+B) = A • Otras igualdades útiles: A·0 = 0; A·1 = A; A A 0 ; A A A+0 = A; A+1 = 1; A A 1 Informática para la Ingeniería ~ 17 ~ • El convenio de precedencia de operadores es el mismo que el del álgebra ordinaria: si los paréntesis no fuerzan lo contrario, se realizan primero los productos lógicos (AND) y después las sumas lógicas (OR). LEYES DE DE MORGAN Y SHANNON • Leyes de De Morgan: A B A B A B A B • Ley de Shannon: es una generalización de las leyes de Morgan, que dice que para calcular la inversa (el NOT) de una función, basta con cambiar todas las variables por sus inversas, los AND por OR y los OR por AND, manteniendo, por supuesto, la misma precedencia de los operadores. Por ejemplo, si F A B B C D , F ( A B ) ( B C D ) . Informática para la Ingeniería ~ 18 ~ FUNCIONES COMBINACIONALES Y SECUENCIALES • Se denominan funciones combinacionales a las que dependen sólo de las variables de entrada. En ellas, siempre que se repita la misma combinación de variables de entrada, con independencia de los estados anteriores por los que se hubiera pasado, las salidas serán las mismas. Un ejemplo sería un sumador de una sola cifra. • En cambio, en los circuitos secuenciales las salidas dependen también de estados anteriores de la máquina. Ejemplos típicos serían los siguientes: o Un televisor en el que el canal se seleccionase con dos únicas teclas: + y – . El canal seleccionado no depende sólo de la tecla que se pulse, sino también del canal que estuviera seleccionado antes de pulsar. o Una máquina expendedora que necesitase la inserción de varias monedas para completar el precio del producto: si se introduce una moneda puede salir o no el producto dependiendo de las monedas que se hubiesen insertado anteriormente. • A partir de ahora, y hasta que se indique lo contrario, nos referiremos a funciones combinacionales. Informática para la Ingeniería ~ 19 ~ FORMA CANÓNICA Y TABLA DE VERDAD • Las funciones booleanas pueden definirse por su tabla de verdad o mediante una expresión algebraica, que, a su vez, puede especificarse de muchas formas. • Una de las formas posibles es la denominada forma canónica, que se caracteriza por ser una suma de productos, en cada uno de los cuales están presentes todas las variables (negadas o sin negar). Por ejemplo: F ( A , B , C ) A B C A B C A B C es una forma canónica. F ( A , B , C ) A B C A B C A B C B C no lo es porque en el último producto no interviene la variable A. • Una de las utilidades de la forma canónica es comprobar si 2 funciones son equivalentes, ya que, en forma canónica serían idénticas. En cambio, algunas funciones que parecen distintas en forma simplificada, son realmente equivalentes. Informática para la Ingeniería ~ 20 ~ • Otra de las utilidades se deriva de la correspondencia entre cada “1” de la función en la tabla de verdad con un producto de la forma canónica. P. ej., la función especificada en la A B C F tabla de la derecha se hace uno en los siguientes casos: 0 0 0 0 Si A = 0, B = 0 y C = 1, es decir, si A B C 1 . 0 0 1 1 0 1 0 0 Si A = 1, B = 0 y C = 0, es decir, si A B C 1 . Si A = 1, B = 1 y C = 1, es decir, si A B C 1 . 0 1 1 0 1 0 0 1 1 0 1 0 • Por lo tanto, la función será: F A B C A B C A B C . 1 1 0 0 • En general, la regla es que cada “1” de la función produce un producto canónico 1 1 1 1 en el que las variables que son 1 en la tabla de verdad, aparecen sin negar, y las que son 0, aparecen negadas. SIMPLIFICACIÓN DE FUNCIONES • A partir de la forma canónica, hay un método algebraico para simplificar funciones: consiste en detectar productos que sólo se diferencien en una variable (uno de ellos la tiene negada y el otro sin negar) y, sacando factor común la parte que es igual, se elimina y simplifica la variable diferente. P. ej.: A B C D A B C D A B D C C A B D. Informática para la Ingeniería ~ 21 ~ • Aprovechando la propiedad idempotente, cualquier término puede duplicarse o repetirse las veces que haga falta y, de esta forma puede aprovecharse para simplificarlo con varios. P. ej.: A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B D C C A B C D D A B D A B C • Existe, además, una forma gráfica de simplificación de funciones, que es la más empleada cuando el número de variables es pequeño (como máximo, 4): los diagramas de Karnaugh. • Las tablas de la derecha muestran un diagrama de Karnaugh de 3 variables y otro de 4. Son tablas en las que se colocan en columnas C,D C,D todas las combinaciones de 2 0,0 0,1 1,1 1,0 0,0 0,1 1,1 1,0 variables, y en filas, las del resto de 0 0,0 las variables, pero, en los casos de 2 A 1 0,1 A,B variables resulta muy importante el 1,1 orden: No debe ser el habitual (00, 1,0 01, 10 y 11) sino 00, 01, 11 y 10. Informática para la Ingeniería ~ 22 ~ • Obsérvese que, al hacerlo así, todas las casillas contiguas horizontal o verticalmente difieren en una sola variable y, por lo tanto, si hay dos unos A,B contiguos, formarían un grupo que diferirían en una sola variable, que es la que se simplifica. Véase tablas de la derecha. C,D 0,0 0,1 1,1 1,0 0,0 1 1 0,1 1,1 1 1,0 1 F ABC AC D C,D 0,0 0,1 1,1 1,0 0,0 0,1 A,B 1,1 1 1,0 1 1 1 F AB D AC D • Nótese que los extremos, tanto horizontal como verticalmente, también se diferencian en una sola variable y, por tanto, también C,D C,D hay que considerarlos contiguos. 0,0 0,1 1,1 1,0 0,0 0,1 1,1 1,0 Además, también hay que 0,0 1 1 0,0 1 considerar que un mismo uno 0,1 0,1 1 A,B A,B puede formar parte de varios 1,1 1 1 1,1 1 1 grupos. Todo ello se muestra en 1,0 1 1,0 1 los ejemplos siguientes: F AB D AC D AB D F BC D AB D BC D Informática para la Ingeniería ~ 23 ~ • Extrapolando, también se pueden formar grupos de 4 u 8 unos: deben ser en cualquier caso rectángulos o cuadrados con lados de tamaño igual a potencias de 2 (1, 2, 4...). En un grupo de 4 unos, hay 2 variables que varían, que son las que se simplifican, y otras 2 que son comunes a las 4 casillas, que son las que forman el término final, y en un grupo de 8 se simplifican 3 variables y queda una, que es la común a las 8 casillas. Por supuesto que al hacer estos grupos siguen siendo válidas las premisas anteriores: los extremos son contiguos, y un 1 puede formar parte de varios grupos. • La regla final es, entonces, la siguiente: hay que agrupar TODOS LOS UNOS, formando EL MENOR NÚMERO DE GRUPOS posible y los grupos deben ser del MAYOR TAMAÑO que se pueda, siendo posible que uno o varios unos pertenezcan a varios grupos. Los siguientes ejemplos ilustran esta regla: Informática para la Ingeniería ~ 24 ~ • Ejemplos y ejercicios 0,0 0,1 A,B 1,1 1,0 0,0 0,1 A,B 1,1 1,0 0,0 1 0 0 1 C,D 0,1 1,1 1 1 1 0 0 1 1 1 0,0 1 0 0 1 C,D 0,1 1,1 1 0 1 1 0 1 0 0 1,0 1 0 0 1 1,0 0 0 1 1 0,0 0,1 A,B 1,1 1,0 0,0 0,1 A,B 1,1 1,0 0,0 1 1 1 1 C,D 0,1 1,1 1 0 0 0 0 1 1 0 0,0 1 1 0 1 C,D 0,1 1,1 1 0 0 1 0 1 0 0 1,0 0 0 0 0 1,0 1 0 1 0 0,0 0,1 A,B 1,1 1,0 0,0 0,1 A,B 1,1 1,0 Se recomienda intentar resolverlos antes de pasar la página Informática para la Ingeniería 0,0 1 1 0 1 C,D 0,1 1,1 0 0 0 0 0 0 0 0 1,0 1 1 0 1 0,0 1 1 1 1 C,D 0,1 1,1 1 1 0 0 0 0 1 1 1,0 1 1 1 1 ~ 25 ~ • Soluciones: F B A C D A C D . La fila de abajo, junto con la de arriba, forman un grupo de 8 que sólo tienen una variable común (B = 0) y, además. hay 2 grupos de 2, cada uno de los cuales tiene 3 variables comunes (A = 0, C = 0 y D = 1, y A = 1, C = 1 y D = 1). F C D B C A B C D . Dos grupos de 4 y uno de 1. Obsérvese que puede que algún uno no se pueda agrupar de ninguna forma. F A D B D . Dos grupos de 4. Obsérvese que las 4 esquinas forman un grupo, ya que son contiguas. Puede simplificarse de 2 formas totalmente equivalentes, ya que en ambos casos lo que se forma son 4 grupos de 2: F A B C A B D A B C A B D. F B C D AC D B C D AC D. Obsérvese como 2 funciones que, en forma simplificada son diferentes, son en realidad la misma función. F A B C A B D A C D B C D B C D A B C . Seis grupos de 2. Obsérvese que hay casillas que pertenecen a varios grupos (la esquina superior izquierda pertenece a 4 grupos, por ejemplo). F B D . Dos grupos de 8. Informática para la Ingeniería ~ 26 ~ PROBLEMAS PROPUESTOS 1. Dada la siguiente tabla de verdad, hallar la forma canónica de la función. A B C D F A B C D F A B C D F A B C D F 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 2. Simplificar la función anterior. 3. Dada la función: F A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D , hallar la tabla de verdad. 4. Simplificar la función anterior. 5. Simplificar la función definida por la siguiente tabla de verdad: A B C D F A B C D F A B C D F A B C D F 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 0 Informática para la Ingeniería ~ 27 ~ C,D 6. Dado el diagrama de Karnaugh de la derecha, hallar la forma 0,0 0,1 1,1 1,0 canónica de la función que define. 0,0 0 0 1 1 7. Calcular la expresión más simplificada del problema anterior. 8. Sea una barca que puede cruzar un río a los siguientes “clientes” A,B 0,1 0 1 0 1 1,1 1 0 0 1 potenciales: Abelardo, que es un hombre (le denominaremos A); 1,0 1 0 0 0 Bernardo, que es un lobo (le denominaremos B); Col, que es una coliflor (le denominaremos C), y Dolly, que es una oveja (le denominaremos D). No todos estos clientes son compatibles en el mismo viaje. Las normas son: B y D son incompatibles para evitar que el primero se coma a Dolly. C y D son también incompatibles para evitar que la oveja se coma la coliflor. Es necesario que en todo viaje haya un humano que gobierne la barca. Se pretende construir un dispositivo automático que tenga 4 entradas (A, B, C y D) y una salida F. Cada una de las entradas será 1 si el cliente correspondiente hubiera solicitado cruzar el río, y 0 en caso contrario, y se pretende que F sea 1 si los clientes que lo hayan solicitado son compatibles, y 0 si no lo son. Hallar la tabla de verdad de la función. 9. Calcular la forma canónica de la función F del problema anterior. 10. Simplificar la función resultante de los dos problemas anteriores. Informática para la Ingeniería ~ 28 ~ 11. Dado un número de 4 bits ABCD, en el que A es el bit más significativo y D el menos significativo, se pretende diseñar un detector de números primos que calcule una función F que sea 1 si el número es primo, y 0 si no lo es. El 0 (0000) no es un número natural, y por lo tanto, no está definida para él la función primo, pero, a efectos del dispositivo a diseñar, considérese que no lo es. Hallar la tabla de verdad de la función. 12. Calcular la forma canónica de la función F del problema anterior. 13. Simplificar la función resultante de los dos problemas anteriores. 14. Aplique el Teorema de Shannon al resultado del problema anterior. ¿en que casos vale 1 la función resultante? 15. Demostrar que A B C A B C A B C 16. Demostrar que A B C B A C B 17. Dadas las dos siguientes funciones, que están en forma simplificada, hallar sus diagramas de Karnaugh correspondientes e indicar si son o no la misma función: F1 A B C A B C D A B C A C D B C D F2 A B C A B C D A B C A C D A C D 18. Repetir el problema anterior para las siguientes funciones: F1 B D A B A B C A C D A B D F2 B D A B A B C A C D B C D Informática para la Ingeniería ~ 29 ~ • Soluciones. 1. F A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D 2. F A D B C B D 3. A B C D F A B C D F A B C D F A B C D F 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 4. F A B C A B D A B D A B C 5. F B C D 6. F A B C D A B C D A B C D A B C D A B C D A B C D A B C D 7. F A B C A B C D B C D A C D Informática para la Ingeniería ~ 30 ~ A B C D F A B C D F A B C D F A B C D F 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 9. F A B C D A B C D A B C D A B C D A B C D 10. F A D A B C 11. A B C D F A B C D F A B C D F A B C D F 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 12. F A B C D A B C D A B C D A B C D A B C D A B C D A B C D 13. F A D B C D B C D A B C Informática para la Ingeniería ~ 31 ~ 14. F A D B C D B C D A B C . La función será 1 cuando el número no sea primo. 15. F A B C A B C A B C A B C y como C A B C C por la Ley de Absorción, tenemos que F A B C A B C 16. F A B C B A B C B A B C B A C B C B y como B C B B por la Ley de Absorción, tenemos que F A C B 17. Sí, son iguales, puesto que sus Karnaughs lo son: C,D A,B F1 y F2 0,0 0,1 1,1 1,0 0,0 0,1 1,1 1,0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 0 0 18. No, puesto que los Karnaughs no son iguales: C,D 0,0 0,1 1,1 1,0 0,0 1 1 1 1 0,1 0 0 0 0 1,1 0 1 1 1 1,0 1 1 0 1 C,D 0,0 0,1 1,1 1,0 0,0 1 1 1 1 0,1 0 1 0 0 1,1 0 1 0 1 1,0 1 1 0 1 F2 A,B A,B F1 Informática para la Ingeniería ~ 32 ~ Partes de un ordenador COMPONENTES BÁSICOS DE UN ORDENADOR. • La figura de la derecha muestra un esquema funcional de un ordenador, en el que se pueden distinguir los siguientes elementos: CPU, memoria, interfaces, periféricos y buses. Bus de direcciones Disco CPU MEMO– RIA Bus de control INTER– FACES Teclado Pantalla Impresora Bus de datos • La CPU (Central Processing Unit). o Se encarga de ejecutar el programa, lo cual quiere decir que, para cada instrucción tiene que: ▪ Leerla de memoria. ▪ Ejecutarla, lo cual, dependiendo de cual instrucción sea, puede requerir hacer operaciones aritméticas o lógicas y/o leer datos o resultados en memoria o en periféricos. Informática para la Ingeniería ~ 33 ~ o Obsérvese que, para que se ejecuten algunas instrucciones, la CPU tendrá que dar algunas órdenes a dispositivos externos a ella (p. ej., para leer o escribir memoria o periféricos). o En los principios de la informática las CPUs eran muy voluminosas, pero desde que, en la década de los 70 aparece el microprocesador, son un único circuito integrado.9 Una CPU es, por ejemplo, el Intel Core i7 o el Qualcomm Snapdragon. • La memoria principal (o memoria RAM10). o Es un dispositivo electrónico que permite guardar información. En ella se guardan, tanto el programa, como los datos.11 o Está formada por celdillas, en cada una de las cuales puede guardarse un byte de información. Hoy en días las memorias tienen celdillas más grandes, de 32 o más bits. o Las celdillas están numeradas y a su número de orden se le denomina dirección.12 o La dirección se representa con un número binario de n bits, lo cual quiere decir que, como máximo, se pueden conectar al sistema 2n celdillas. o Por ejemplo, si n = 32, puede conectarse al procesador un máximo de 232 celdillas de un byte cada una y, por lo tanto, tendremos que: 232 = 22·230 B = 4 GB (4 gigabytes). 9 10 11 12 Investigar sobre la Ley de Moore. Investigar qué significa RAM. Investigar sobre la arquitectura Von Neumann y la Harvard. Imaginar toda una pared llena de pequeños cajoncitos numerados. En el frente de cada cajón está su número de orden (dirección), mientras que dentro está su contenido (un papelito con otro número). Informática para la Ingeniería ~ 34 ~ o Los procesadores modernos tienen típicamente una n de 64 (64 bits), por lo tanto, se les puede conectar más memoria. o La característica más importante de la memoria RAM es su volatilidad (desaparece la información si falla la alimentación eléctrica). • Los periféricos. o Se denominan así porque, primitivamente, estaban situados en racks o armarios separados de la CPU, pero, actualmente, muchos de ellos caben en la caja del propio ordenador. o Los hay de 2 tipos: ▪ De almacenamiento masivo: sirven para almacenar programas y datos (en general, ficheros o archivos) de forma permanente, ya que no son volátiles. Tienen, en general, una gran capacidad, pero son de acceso mucho más lento que la memoria principal. Ejemplos: disco duro, Blu Ray... En algunos de ellos, el medio en el que se guardan los datos es extraíble. ▪ De interacción con el operador: sirven para entrada o salida de datos. Ejemplos: teclado, ratón, pantalla, impresora, plotter... • Las interfaces. o Los periféricos se conectan a las CPUs a través de adaptadores que se llaman interfaces. Algunos están incluidos en la placa base y otros requieren una placa adicional que se inserta en un conector de la placa base. Informática para la Ingeniería ~ 35 ~ o Sirven para acoplar los periféricos a las CPUs, ya que tienen velocidades muy diferentes y funcionan con otros protocolos. o Existen también interfaces estándar compatibles con muchos tipos de periféricos, como por ejemplo, el USB. o La comunicación entre la CPU y los periféricos se realiza mediante los llamados puertos de entrada/salida (I/O ports), que son como celdillas de memoria (pero en un número mucho menor), que están en las interfaces y también se identifican mediante un número de orden o dirección. o A diferencia de la memoria, en la que cualquier dato puede guardarse indistintamente en cualquier celdilla, aquí, cada puerto de E/S tiene un significado concreto. P. ej., para leer un sector de disco puede ser necesario escribir en el puerto 0x8000 el número de sector a leer y en el 0x8004 introducir un valor que indique que la orden es de lectura. • Los buses. o Se denomina bus a un conjunto de cables que, paralelamente, conectan 2 o más dispositivos. Al número de cables que lo componen se le llama anchura del bus y, obviamente, determina el número de bits que se puede transferir simultáneamente. o El acceso a memoria o a periféricos se realiza de la forma siguiente: ▪ Si es una lectura, la CPU envía la dirección de memoria o del puerto por el bus de direcciones (address bus), y la memoria o el puerto le responde enviando el dato leído por el bus de datos (data bus). Informática para la Ingeniería ~ 36 ~ ESTUDIO DE LA CPU. • El dibujo de la derecha muestra una CPU básica, que consta de: Decodificador/ U. de Control ▪ Si es una escritura, la CPU envía la dirección por el bus de direcciones y el dato a escribir por el bus de datos. o En los microprocesadores actuales la anchura del bus de datos es de 32 o 64 bits. En estos casos, si el tamaño de una celdilla es más pequeño que el del bus, esto quiere decir que es posible transferir el contenido de varias celdillas consecutivas. P. ej., con un bus de 32 bits y un tamaño de celda de 8, la CPU puede enviar la dirección de memoria 0x12345678 y pedir que le envíen los contenidos de la dirección indicada y de las 3 siguientes. Algo similar ocurre con los puertos de E/S. o La anchura del bus de direcciones determina, como hemos visto anteriormente, el tamaño de la memoria direccionable, es decir, conectable al micro. o Hay un tercer bus que es el de control. No es propiamente un bus, sino un conjunto de señales de control por las que la CPU avisa a la memoria y Bus de direcciones a las interfaces de que se las quiere leer o escribir. Registro PC Banco de registros ALU Bus de control Bus de datos Informática para la Ingeniería ~ 37 ~ • La Unidad de Control y el Decodificador: La Unidad de Control es la encargada de leer la instrucción, decodificarla13 y enviar, mediante el bus de control, las órdenes necesarias al resto del ordenador (a la ALU, al banco de registros, a la memoria y a las interfaces) para que realicen las acciones que requiera la instrucción en cuestión. Su componente principal es el decodificador. • La ALU (Arithmetic Logic Unit): Su misión es realizar las operaciones aritméticas o lógicas que se requieran. • Los registros: Son como celdillas individuales de memoria capaces de guardar un único dato cada uno, y muy rápidos de acceso. Hay registros de propósito general (general purpose) y otros dedicados, cuyo contenido tiene siempre un determinado significado. Al menos los de propósito general suelen estar agrupados en lo que se denomina banco de registros. En él, cada registro tiene un número o un nombre que lo identifica. En los micros actuales suele haber entre 16 y 64 registros y cada uno de ellos suele ser de 32 o 64 bits. Su misión es guardar temporalmente los datos y resultados de las operaciones que se hagan, así como las direcciones y contenidos que se manejan al acceder a memoria o a interfaces. 13 Significa interpretarla, es decir, interpretar los códigos que contiene para determinar qué es lo que tiene que hacer. Informática para la Ingeniería ~ 38 ~ • El registro PC (Program Counter o Contador de Programa): Contiene en todo momento la dirección de la siguiente instrucción a realizar.14 Este es un caso claro de registro dedicado. LENGUAJE MÁQUINA Y CÓDIGO ENSAMBLADOR • Las instrucciones máquina son códigos numéricos. Por ejemplo:15 0x0a86020 podría significar sumar los registros 5 y 8 y guardar el resultado en el registro 12. • Obviamente, resulta difícil trabajar con estos códigos. Por eso aparece el lenguaje ensamblador (el primero de los lenguajes) que consiste en asignar un nombre (se denomina mnemónico) a cada instrucción y especificar a continuación los operandos que intervienen separados por comas. Por ejemplo, la instrucción anterior se escribiría en ensamblador: add $12,$5,$8. Es obvio que resulta mucho más simple trabajar en este lenguaje, al menos una vez que se esté familiarizado con los mnemónicos y con la forma de especificar los operandos. • Se verá más sobre el lenguaje ensamblador más adelante en la asignatura. 14 15 Imagínese un libro que tiene una serie de instrucciones numeradas para realizar algo (p. ej., una maqueta). Una estrategia eficaz de funcionamiento sería leer una instrucción (por ejemplo, la 5) y apuntar en un papel cual es la instrucción siguiente a ejecutar (la 6). Cuando se termine de ejecutar la instrucción 5, habrá que consultar el papel para comprobar que la siguiente instrucción a ejecutar debe ser la 6 y, a continuación, se leerá la 6 y en el papel se cambiará el 6 que había por un 7, que indicará que la siguiente instrucción a realizar debe ser la 7. El papel es el PC. Los siguientes ejemplos están tomados de un micro llamado MIPS. En otros micros los códigos serían diferentes, pero la idea es la misma. Informática para la Ingeniería ~ 39 ~ LENGUAJES, ENSAMBLADORES, COMPILADORES E INTÉRPRETES • Como ya se ha indicado, los primeros ordenadores se programaban directamente en lenguaje máquina, es decir, mediante códigos numéricos y, dada su dificultad, aparecen los primeros lenguajes, que son los ensambladores, denominados también lenguajes de bajo nivel, en los que cada instrucción equivale a una única instrucción en lenguaje máquina. • Con estos lenguajes, desaparece la dificultad de recordar códigos numéricos (puesto que se sustituyen por mnemónicos más fáciles de memorizar), pero la programación sigue siendo difícil y tediosa, puesto que cada instrucción realiza acciones muy simples, y para realizar cualquier cosa son necesarias muchas instrucciones. • Por eso aparecen los lenguajes de alto nivel. Son mucho más cercanos al lenguaje humano y mucho más potentes, y cada una de sus instrucciones se convierten en varias (y a veces hasta miles) de instrucciones en lenguaje máquina. • Por ejemplo, para calcular la longitud de un determinado string en lenguaje ensamblador haría falta un bucle de unas 6 instrucciones, mientras que en lenguaje C bastaría con la instrucción: longitud=strlen(string);. Informática para la Ingeniería ~ 40 ~ • Para convertir un programa de lenguaje ensamblador a lenguaje máquina se usan unos programas que se llaman ensambladores, como el lenguaje, y también existen los programas inversos (los desensambladores) que traducen el lenguaje máquina a lenguaje ensamblador. • En cuanto a los programas de alto nivel pueden ejecutarse de 2 formas distintas: o Convertirlo a lenguaje máquina mediante un compilador. Esta operación hay que hacerla una sola vez, y una vez convertido el programa a lenguaje máquina, puede ya ejecutarse cuantas veces se desee. o Ejecutarlo mediante un intérprete. Este programa va traduciendo a lenguaje máquina mientras se va ejecutando el programa. Si se ejecuta varias veces, cada vez que se ejecute realizará la traducción. o Resulta obvio que, en general, la ejecución de un programa ya compilado es más rápida, porque la traducción a lenguaje máquina ya está hecha, pero los intérpretes también tienen sus ventajas: ▪ Cada microprocesador tiene su lenguaje máquina diferente e incompatible con los de los demás micros. Por lo tanto, para ejecutar un programa en otro ordenador de forma remota lo mejor es enviar el programa fuente (sin compilar) y que el otro ordenador lo interprete. ▪ Para depuradores suele ser mejor interpretar, porque es más fácil saber en qué sentencia del programa fuente se produce el error. Informática para la Ingeniería ~ 41 ~ PROBLEMAS PROPUESTOS • Preguntas de test: Indicar si las siguientes afirmaciones son verdaderas o falsas, y justificar brevemente las respuestas. 1. El Intel Core i7 es una Unidad de Control. 2. Si un micro tiene un bus de datos de 32 bits, cada celdilla de su memoria tendrá también un tamaño de 32 bits. 3. Todos los registros son de tamaño byte. 4. Las interfaces son programas de manejo de periféricos. 5. La ALU es la unidad que realiza las operaciones aritméticas y lógicas, pero la Unidad de Control le indica que operación es la que tiene que realizar. 6. Todas las instrucciones realizan, al menos, un acceso a memoria. 7. Algunas interfaces permiten que se conecten a ellas periféricos de tipos muy diversos. Si es cierto, poner algún ejemplo. 8. Decodificar una instrucción es convertirla en un código hexadecimal. 9. Traducir de lenguaje máquina a ensamblador se llama ensamblar y lo realizan los programas ensambladores. 10. Traducir de lenguaje máquina a lenguaje de alto nivel se llama descompilar y lo realizan los programas descompiladores. 11. Una instrucción en ensamblador es equivalente a varias instrucciones en lenguaje máquina. Informática para la Ingeniería ~ 42 ~ 12. Los puertos de entrada/salida están situados en las interfaces. • Preguntas teóricas: 1. ¿Cuánta memoria es capaz de direccionar un micro que tenga un bus de direcciones de 36 bits? 2. El Z80 era un antiguo micro capaz de direccionar sólo 64KB de memoria. ¿Cuántos bits tenía su bus de direcciones? • Preguntas de investigación: 1. Enunciar y explicar brevemente cual es la Ley de Moore. (Quién es Moore, si es una ley teórica o experimental y qué grado de cumplimiento ha tenido). 2. Explicar brevemente las diferencias entre la Arquitectura Harvard y la Von Neumann. Intentar deducir las ventajas e inconvenientes entre una y otra. 3. ¿Qué significan las siglas RAM? Explicarlo brevemente. ¿El acceso a disco o a cinta podría decirse que también es RAM? Justificar la respuesta. Informática para la Ingeniería ~ 43 ~ • Solución a las preguntas de test: 1. F 4. F 2. F 5. V 3. F 6. V 7. V 8. F 9. F 10. V 11. F 12. V NOTA: Estas no son las respuestas completas. El enunciado también pide justificarlas. • Solución a las preguntas teóricas: 1. 64 GB 2. 16 bits Informática para la Ingeniería