Subido por Paco

1 - Arquitectura de Computadores

Anuncio
~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  ABC  AC 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  AB D AC 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  AB D AC D AB D
F  BC D AB D BC 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  AC  D  B C  D  AC  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
Descargar