52
Fundamentos de Informática 1 TEMA I.- Introducción a la Informática 1.1.- La Informática y la Ingeniería 1.2.- Conceptos Básicos 1.3.- Representación de la Información Conceptos fundamentales Sistemas de numeración Representación interna de datos: enteros, reales y caracteres Errores: Redondeo y truncamiento Eficiencia y redundancia. Detección de errores 1.4.- La Máquina de Von Neumann Arquitectura a Nivel Físico de un microprocesador sencillo Arquitectura a Nivel de Lenguaje Máquina de un microprocesador sencillo Tendencias Futuras 1.5.- Evolución de los Computadores Generaciones 1.1 La Informática y la Ingeniería Es necesario comenzar intentando dar una explicación al nacimiento de esta nueva ciencia denominada Informática. La situación es fácil de imaginar: vivimos en un mundo en el que estamos continuamente “bombardeados” por todo tipo de informaciones, que en muchos de los casos varían con el tiempo. Vivimos por tanto, dentro de un sistema dinámico, en el que al ser humano le ha surgido la necesidad de crear máquinas o sistemas que le permitan manejar y responder rápidamente y con el mínimo esfuerzo a todos los datos e informaciones a los que sea necesario. La ciencia que se ocupa de estas tareas y que responde a esta necesidad es la Informática. Vamos a tratar de dar alguna definición un tanto más formal: Definición 1: La Informática se ocupa de la adquisición, representación, tratamiento y transmisión de la información. Estas operaciones se realizan automáticamente mediante máquinas denominadas Computadoras.

Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

  • Upload
    buinhan

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

1

TEMA I.- Introducción a la Informática 1.1.- La Informática y la Ingeniería 1.2.- Conceptos Básicos 1.3.- Representación de la Información

Conceptos fundamentales Sistemas de numeración Representación interna de datos: enteros, reales y

caracteres Errores: Redondeo y truncamiento Eficiencia y redundancia. Detección de errores

1.4.- La Máquina de Von Neumann Arquitectura a Nivel Físico de un microprocesador sencillo Arquitectura a Nivel de Lenguaje Máquina de un microprocesador sencillo Tendencias Futuras 1.5.- Evolución de los Computadores Generaciones 1.1 La Informática y la Ingeniería Es necesario comenzar intentando dar una explicación al nacimiento de esta nueva ciencia denominada Informática. La situación es fácil de imaginar: vivimos en un mundo en el que estamos continuamente “bombardeados” por todo tipo de informaciones, que en muchos de los casos varían con el tiempo. Vivimos por tanto, dentro de un sistema dinámico, en el que al ser humano le ha surgido la necesidad de crear máquinas o sistemas que le permitan manejar y responder rápidamente y con el mínimo esfuerzo a todos los datos e informaciones a los que sea necesario. La ciencia que se ocupa de estas tareas y que responde a esta necesidad es la Informática. Vamos a tratar de dar alguna definición un tanto más formal: Definición 1: La Informática se ocupa de la adquisición, representación, tratamiento y

transmisión de la información. Estas operaciones se realizan automáticamente mediante máquinas denominadas Computadoras.

Page 2: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

2

Definición 2: La Informática designa un vasto conjunto de teorías y técnicas científicas

-desde la matemática abstracta, hasta la ingeniería o la gestión administrativa- cuyo objetivo es el diseño y utilización de Computadores Electrónicos.

Definición 3: (Real Academia Española de la Lengua). La Informática es el conjunto

de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores electrónicos.

Desde luego, y sea cual sea la definición que más nos guste, cabe resaltar que estamos aún en la actualidad, en los comienzos de una nueva ciencia (tuvo sus orígenes en los años cuarenta), y que los cambios sociales importantes sobre los que su desarrollo va a repercutir todavía no podemos ni imaginarlos. Las características fundamentales de la Informática son el tratamiento automático de la información, su flexibilidad (capacidad de abarcar distintos aspectos: ingeniería, diseño, gestión, ...), y su rapidez. La Informática, de forma genérica, estudia dos asuntos bien diferenciados:

• Hardware : parte física del ordenador, incluyendo los elementos electrónicos (circuitos), los elementos electromecánicos (como las disqueteras), y los elementos mecánicos (como la cubierta del equipo). El concepto hardware se utiliza como un antónimo de software.

• Software : conjunto de instrucciones, programas y datos necesarios, tanto para el

funcionamiento del ordenador como para cualquier aplicación que queramos desarrollar con él. También se considera como software a la representación de las estructuras de datos en las computadoras. En la siguiente sección analizaremos estas cuestiones en más profundidad.

Los computadores resultan útiles cuando se presentan algunas de las siguientes

situaciones:

• gran volumen de datos • datos compartidos entre diferentes usuarios • datos distribuidos en distintas localizaciones y control necesario en ellas • velocidad, repetitividad y precisión • complejidad de cálculo

Los campos de aplicación de los computadores son numerosos, quizá los más

importantes y más relacionados con la Ingeniería sean los siguientes:

• Procesamiento de datos administrativos: contabilidad, facturación, control de caja, control de almacenes y de pedidos, nominas, sistemas de reserva y expedición de billetes, etc. En este ámbito se han desarrollado paquetes software integrados que ayudan a realizar algunas de las tareas citadas. Son los paquetes de ofimática que

Page 3: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

3

suelen estar compuestos por aplicaciones de procesado de texto, hoja de cálculo, gestión de bases de datos, correo electrónico, agenda, etc.

• Procesamiento científico: los computadores se utilizan cono instrumentos para la

resolución y simulación de modelos matemáticos, como pueden ser la resolución de ecuaciones, análisis estadísticos, predicciones, etc.

• Ingeniería asistida: el computador es una herramienta para facilitar los diseños de

ingeniería, desde la fase de diseño o analisis hasta el desarrollo controlado de un producto. Por un lado se utilizan para CAD (Computer Aided Design), para CAM (Computer Aided Manufacturing). Los sistemas informáticos1 dedicados a estas tareas suelen tener altas prestaciones y permiten por ejemplos la realización de cálculos de estructuras y obras públicas, trazado de carreteras y de planos de plantas industriales, simulación de plantas y procesos, análisis y diseño de circuitos integrados, etc.

• Informática industrial: comprende la utilización de ordenadores para el control o

monitorización de sistemas industriales. Dentro de este apartado se pueden incluir los controladores de pequeños sistemas incluso domésticos como una lavadora, o también grandes sistemas como el control de procesos de una industria completa.

• Inteligencia Artificial: la automatización de los sistemas industriales pasa por la

aplicación de robots que eliminen el trabajo pesado o peligroso y de sistemas informáticos inteligentes que ayuden al hombre en la toma de decisiones. Para ello es fundamental progresar en ciertas actividades que se consideran inteligentes, y que dan entidad a lo que se puede denominar un sistema inteligente:

!"Procesamiento de imágenes y visión por computador !"Reconocimiento automático de patrones !"Comprensión del habla !"Deducción y razonamiento automáticos !"Sistemas basados en el conocimiento y sistemas expertos !"Robótica inteligente

Existen otros campos de aplicación de la Informática como son la investigación

médica, biológica y farmacéutica, la enseñanza asistida por computador (CAI - Computer Assisted Instruction), la ingeniería genética, el desarrollo de sistemas multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información incluso en un ámbito mundial, como el caso de la red Internet.

1 Entendemos por tales al conjunto de recursos hardware y software disponibles.

Page 4: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

4

1.2 Conceptos Básicos Todo proceso de decisión está dominado y condicionado por las informaciones disponibles sobre el hecho a decidir. Por ello, la recogida, agrupación y tratamiento de la información es el soporte necesario para realizar este proceso. El tratamiento de la información consiste en la realización de una serie de operaciones que siguen un orden lógico en función de los datos elementales de entrada y en función de las salidas o resultados que pretendamos obtener. En este sentido, podemos ver el tratamiento automático a modo de “caja negra”, a la que le llegan una serie de entradas y de la que queremos obtener una serie de salidas. Como ejemplo, podemos pensar en un sistema automático que se ocupase de regular la temperatura en un invernadero, este debería tener como entradas las temperaturas en distintos puntos recogidas por determinados sensores, y como salida debería tener una serie de acciones sobre dispositivos de acondicionamiento del local (calentadores, ventiladores,...). Desde luego, el sistema tendría una fuerte dependencia del número de sensores y de dispositivos de acondicionamiento, su disposición y algunos parámetros adicionales de diseño, y por tanto, la serie de operaciones que debería efectuar para realizar de forma conveniente la regulación se vería muy influenciada por el diseño. En otras palabras, el problema planteado regula las operaciones que deben realizarse así como el orden en que se deban aplicar. A partir de la concepción de estas operaciones, se deberá instruir de forma no ambigua al sistema automático para que las realice. Este proceso consiste en traducir las acciones a un lenguaje comprensible por el sistema. Esto es muy importante, a un computador no se le pueden expresar las acciones que debe realizar (instrucciones) en un lenguaje natural como el español, el inglés u otro. Deberemos siempre expresar las ordenes de forma que sean perfectamente entendibles por la máquina.

Según lo expresado hasta ahora, una computadora puede considerarse como un sistema cuyas salidas o resultados son función (dependen) de sus entradas -datos-, obtenidas en base a unas determinadas reglas o instrucciones -programa-. Considerando sistema como el conjunto de partes que trabajan unidas para realizar una tarea común. Los datos son conjuntos de símbolos utilizados para representar valores numéricos, hechos, objetos o ideas, de una forma adecuada para poder ser tratados. Las salidas de un determinado proceso en un computador frecuentemente son datos (de salida). En Informática no sólo es un dato la temperatura, o la altura (como en Física), sino también lo es el nombre de un individuo, su dirección, una frase de un libro, etc. Los datos pueden ser captados directamente por la máquina (por ejemplo, detectando electrónicamente un sonido, una temperatura o el paso de un objeto), o pueden ser dados en forma de letras y/o números (que se denominan grafismos o caracteres). Ésta última es la forma más habitual de transmitir o almacenar información (en forma de lenguaje escrito). Los caracteres utilizados podrán ser:

• numéricos : las diez cifras decimales (del 0 al 9)

Page 5: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

5

• alfabéticos: tanto letras mayúsculas como minúsculas • especiales: símbolos matemáticos, de puntuación ortográfica, etc. • de control: como un carácter indicador de fin de fichero, o de línea, etc.

La computadora manipula dos tipos diferentes de informaciones: instrucciones (que indican a la máquina lo que tiene que hacer) y datos (que son los elementos sobre los que actúa o que genera un determinado proceso automático). Estamos en condiciones de definir lo que son instrucciones y lo que es un programa:

• Una instrucción es un conjunto de símbolos que representan una operación o tratamiento para la computadora, que se suelen realizar con datos. Las instrucciones se forman con elementos o símbolos tomados de un determinado repertorio finito y se construyen siguiendo unas reglas precisas.

• Un programa es un conjunto de instrucciones que se dan a la máquina indicándole

las operaciones o tareas que se desea que realice. Hemos dicho que para la resolución de un problema por parte de una computadora necesitaremos comunicarle cual es la secuencia de instrucciones -programa- que debe seguir. Evidentemente, esto supone que el usuario de la máquina que deba realizar esta tarea -programador-, debe conocer el procedimiento general de resolución del problema que se pretenda programar. A este procedimiento general es a lo que se denomina Algoritmo. Y desde luego, como cabe suponer, el estudio de estos y de su realización sobre una máquina -implementación-, es una de los partes fundamentales en la informática, y por tanto, a ello nos dedicaremos más adelante en profundidad. Básicamente, podemos considerar una división en tres tipos de software:

• Sistemas Operativos: encaminados a ofrecer una comunicación entre el hardware y el usuario de la máquina, dirigiendo y planificando las acciones de ésta. Ejemplos: DOS, WINDOWS, UNIX, VMS, OS/2, ...

• Lenguajes de Programación: software necesario para la creación, desarrollo y

mantenimiento de más software. Ejemplos: Pascal, Fortran, Cobol, Ada, C, ...

• Programas de Aplicación: software especifico de solución de determinados problemas o de utilidad para la realización de determinadas tareas. Ejemplos: aplicaciones de diseño como AutoCad, procesadores de texto como WordPerfect, o Word, hojas de cálculo como Excel, ...

Hemos visto hasta ahora algunos de los conceptos más utilizados en informática como hardware, software, datos, instrucciones, algoritmos y programas, pero aún no hemos iniciado el estudio de la forma de representar los datos en el interior de un ordenador. Después de algunos intentos de utilizar el sistema decimal de numeración en los ordenadores, se optó, sobre todo por necesidades podemos decir que electrónicas, por utilizar el Sistema Binario de numeración. Esto implica que utilizaremos elementos para representar las informaciones que sólo pueden tomar dos valores lógicos (0 ó 1), estos

Page 6: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

6

elementos se denominan en electrónica dispositivos biestables (tienen dos estados físicos estables, a uno de ellos se le asigna el valor lógico 0 y al otro el 1). A cada posible valor lógico es a lo que se denomina Bit. Hasta el momento no hemos visto las partes fundamentales que componen el hardware del ordenador, pero guiados por la intuición, podemos pensar que si hay alguna cosa verdaderamente fundamental en el interior de una computadora, ésta es la Memoria. En ella encontraremos los elementos electrónicos (millones) que son capaces de almacenar información binaria (biestables).

Dado que un bit es una unidad muy pequeña, surge como necesidad la introducción de múltiplos de esta cantidad, que nos midan la cantidad de memoria de la que dispone una computadora, ya que las memorias actuales tienen del orden de millones de biestables. Los múltiplos son:

1 byte = 8 bits 1 KiloByte (KB) = 210 bytes = 1024 bytes 1 MegaByte (MB) = 220 bytes = 1024 KB = 1.048.576 bytes 1 GigaByte (GB) = 230 bytes = 1024 MB = 1.048.576 KB = 1.073.741.824 bytes 1 TeraByte (TB) = 240 bytes = 1024 GB = 1.048.576 MB ...

En algunos procesos de tratamiento de la información, ésta se representará mediante magnitudes físicas (tensión, intensidad, temperatura, presión, ...). Cuando éstas pueden tomar un valor cualquiera dentro de un rango predeterminado, se dice que el sistema es del tipo analógico. Frente a estos sistemas están los sistemas digitales, en los que las magnitudes sólo toman valores discretos. Por ejemplo, si se utilizan señales de tensión para representar la información y estas señales toman los valores 5 y 0 voltios, el sistema es digital. Un sistema digital restringido a sólo dos valores discretos, que se pueden representar mediante un bit, se dice que es binario. Las computadoras son sistemas digitales binarios. Las ventajas fundamentales de las computadoras son:

• facilidad y capacidad de almacenamiento de la información • posibilidad de tratar información no numérica • comodidad de uso

Las computadoras se pueden clasificar según distintos criterios. Uno de ellos hace referencia a la utilización o propósito para el que hayan sido diseñados:

• computadoras de propósito general : se puede utilizar para distintos tipos de aplicaciones. El que realice una tarea u otra depende del programa que el usuario ordene ejecutar.

• computadoras de propósito específico : únicamente puede utilizarse para una

aplicación concreta, para la que ha sido diseñada. Por ejemplo, video-juegos, control de tráfico, control de robots, etc. .... Se caracterizan porque ejecutan uno o muy pocos programas. También se denominan computadoras dedicadas.

Page 7: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

7

1.3 Representación de la Información Conceptos fundamentales En este apartado estudiaremos de qué forma se representa o codifica en la memoria de un ordenador la información (números y caracteres) que estamos acostumbrados a manejar en la vida cotidiana.

Sabemos que la memoria de un ordenador está compuesta de un conjunto de

biestables, y que cada biestable almacena la unidad de información (o unidad de memoria) bit, que puede contener un valor 0 ó 1. Por tanto si estamos pensando en almacenar información en memoria, deberemos tratar de representarla mediante un conjunto de bits.

Tenemos que representar con bits información de tipo tanto numérica como de texto

(caracteres). La representación de caracteres puede hacerse haciéndole corresponder a cada uno un número que será codificado en binario. Con esto simplificamos el problema de codificación de la información a sólo los números.

Esto nos lleva a estudiar las formas de representación de números escritos en sistema

decimal y números escritos en sistema binario (con ceros y unos). Otros sistemas de numeración como el octal y hexadecimal merecen la pena considerarlos y estudiarlos, por ser sistemas que utilizan un número de símbolos potencia de 2 (número de símbolos que utiliza el sistema binario)2.

Antes de empezar a ver la representación de números en los distintos sistemas y

conversión entre ellos, definiremos Alfabeto y Base de un sistema de numeración:

• Alfabeto: Símbolos con los que se pueden representar números en un sistema de numeración.

• Base: Número de símbolos del alfabeto. Sistemas de numeración Como ya hemos comentado estudiaremos los sistemas de numeración decimal, hexadecimal, octal y binario. Los alfabetos y bases de estos sistemas3 son:

BASE ALFABETO DECIMAL 10 {0,1,2,3,4,5,6,7,8,9} HEXADECIMAL 16 {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} OCTAL 8 {0,1,2,3,4,5,6,7} BINARIO 2 {0,1}

2 Ya descubriremos que esto es una propiedad interesante. 3 Todos estos sistemas son Posicionales ya que los símbolos cambian de valor dependiendo de la posición que ocupan. En contrapartida existen los sistemas no posicionales, como el romano en el que cada símbolo tiene siempre el mismo valor.

Page 8: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

8

Comenzaremos mostrando cómo se escriben los primeros números en cada uno de

estos sistemas. La siguiente tabla muestra las equivalencias de números en los distintos sistemas de numeración

DEC HEX OCTAL

BINARIO

0 0 0 0 1 1 1 1 2 2 2 1 0 3 3 3 1 1 4 4 4 1 0 0 5 5 5 1 0 1 6 6 6 1 1 0 7 7 7 1 1 1 8 8 1 0 1 0 0 0 9 9 1 1 1 0 0 1 1 0 A 1 2 1 0 1 0 1 1 B 1 3 1 0 1 1 1 2 C 1 4 1 1 0 0 1 3 D 1 5 1 1 0 1 1 4 E 1 6 1 1 1 0 1 5 F 1 7 1 1 1 1 1 6 1 0 2 0 1 0 0 0 0 1 7 1 1 2 1 1 0 0 0 1 1 8 1 2 2 2 1 0 0 1 0

Es interesante observar que con 3 bits se pueden representar 8 números y que con 4 se

representan 16.

A continuación estudiaremos algunos métodos para convertir números de un sistema de numeración a otro. Conversión de un número en cualquier base B a base 10 Para ello utilizamos la formula ...X3X2X1X0 )B = ... X3B3 + X2B2 + X1B1+ X0B0 )10

donde X3, X2, X1 y X0 son los dígitos del número en base B que queremos convertir a

base 10. Ejemplos: F9)16 = F*161 + 9*160 )10 = 240 + 9)10 = 249)10

1010)2 = 1*23+ 0*22+1*21+0*20)10 = 8 + 0 + 2 + 0)10= 10)10

Page 9: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

9

Conversión de un número en base 10 a cualquier base B

Utilizamos el algoritmo de divisiones sucesivas, que consiste en ir dividiendo el número representado en base 10 entre la base B y repetir sucesivamente esta operación con los cocientes resultado de las divisiones. El proceso termina cuando se obtiene un cociente menor que la base B. El número resultado de la conversión representado en base B se obtiene escribiendo de izquierda a derecha el último cociente y los restos obtenidos en orden inverso a cómo se hayan calculado. Ejemplos: !"254)10= ? )2 Para convertir el número realizamos las divisiones,

254 2

0 127

2

1

15

2

1

31

2

1

63

2

1

7 2

1 3 2

1 1

dando como resultado que 254)10= 11111110 )2 248)10= ? )16 Realizamos el mismo proceso

248 16

8 15

obteniendo que 248)10= F8)16 Conversión de binario a octal

Esta conversión es muy sencilla ya que las bases son potencia (8 es potencia de 2). El algoritmo utilizado consiste en tomar los bits en grupos de tres de derecha a izquierda, y para cada grupo escribir su equivalente en octal (con tres bits se puede representar desde 0 al 7 en octal).

Page 10: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

10

Ejemplo: !"1111010)2 = 001 - 111 - 010)2 = 1 - 7 - 2)8 = 172)8 Conversión de octal a binario

El algoritmo utilizado es inverso al anterior, partiendo de los dígitos (de 0 a 7) en octal y reescribiéndolos en binario. Ejemplo: !"172)8= 1 - 7 - 2)8 = 001 - 111 - 010)2 = 1111010)2

Conversión de binario a hexadecimal

Esta conversión es parecida a la de binario a octal, pero tomando los grupos de 4 bits. Ejemplo: 1111010)2 = 0111 - 1010)2 = 7 - A)16 = 7A)16 Conversión de hexadecimal a binario El algoritmo utilizado es inverso al anterior. Ejemplo: 7A)16 = 7 - A)16 = 0111 - 1010)2 = 1111010)2

El siguiente cuadro muestra las conversiones estudiadas y el camino a seguir para

convertir de un sistema a otro. Por ejemplo, aunque no conozcamos un algoritmo directo, podemos convertir de hexadecimal a octal pasando por el binario.

DEC BIN

HEX

OCT

A veces nos planteamos cuántos dígitos son necesarios para representar una cantidad

de números (o símbolos). Por ejemplo en decimal si queremos representar 40 números distintos utilizamos 2 digitos y tenemos suficiente ya que 102 >= 40 (aún podríamos

Page 11: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

11

representar 60 números más). En binario ocurre algo parecido, si queremos representar 5 números distintos sería suficiente utilizar 3 bits ya que 23 >= 5 (podríamos representar hasta 8). En los dos ejemplos podríamos utilizar más dígitos para reprsentar los mismos números pero los estaríamos desaprovechando, por que no son necesarios.

En general el máximo de números (o símbolos) que podemos representar utilizando

N dígitos en base B es BN. A partir de esto si queremos representar X números (o símbolos distintos) será suficiente utilizar tantos dígitos como el menor valor de N que verifique

BN ≥ X

Para encontrar el valor de N tomamos logaritmos y la expresión queda

N logB B ≥ logB X <=>

N ≥ logB X Ejemplos: !"¿Cuántos bits son necesarios para codificar los símbolos '[', ']', '¡', '@' y '=' ? Como son 5 símbolos X=5 y se van a codificar en binario B=2. Se debe cumplir que 2N≥5 (ó N≥log2 5).Cualquier valor de N a partir de 3 es válido. Por tanto utilizaremos 3 bits ya que si utilizamos más se desaprovecharán.

Podriamos codificar los símbolos de la forma:

'[' # 000 ']' # 001 '¡' # 010 '@' # 011 '=' # 100

!"¿Cuántos digitos son necesarios para codificar 12 instrucciones utilizando sistema

binario? En este caso X=12 y B=2, luego se debe cumplir que 2N≥12 (ó N ≥ log2 12). Cualquier valor de N ≥ 4 es válido. Elegimos 4 bits por ser el óptimo.

La codificación podría ser:

instrucción 1 # 0001 instrucción 7 # 0111 instrucción 2 # 0010 instrucción 8 # 1000 instrucción 3 # 0011 instrucción 9 # 1001 instrucción 4 # 0100 instrucción 10 # 1010 instrucción 5 # 0101 instrucción 11 # 1011 instrucción 6 # 0110 instrucción 12 # 1100

Page 12: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

12

Page 13: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

13

Representación interna de datos: enteros, reales y caracteres

A continuación trataremos de estudiar la forma de representar la información que estamos acostumbrados a manejar, utilizando conjuntos de bits (0 y 1), que como hemos descubierto, es la única forma de poder almacenar información en la memoria de un ordenador.

Según el tipo del dato a almacenar se utilizará un conjunto de bits para su codificación, que será fijo. De esta forma cuando vayamos a leer de memoria un tipo de dato sabremos cuántos bits debemos leer. Esto nos lleva a veces a desaprovechar bits (cuando el valor del número representado es muy pequeño), por ello se intenta utilizar un número de bits lo menor posible. Existen otros métodos de codificación que no estudiaremos y que no tienen porque seguir esta norma general, como por ejemplo, los códigos 1-de-N, Aitken, los códigos con exceso, etc., en particular existe una codificación de especial importancia para el diseño de sistemas digitales que se denomina código Gray. Todos ellos pueden consultarse en la bibliografía. Enteros

El conjunto de los enteros se define como {...-3,-2,-1} U {0} U {+1, +2, +3, ...}.

Para representar números enteros distinguiremos entre los positivos y negativos.

Existen distintos formatos de codificación de los enteros: Módulo y Signo (MS), Complemento a 1 (C-1) y Complemento a 2 (C-2).

Supongamos que elegimos almacenar los números enteros y decidimos almacenarlos

utilizando 4 bits, entonces la siguiente tabla nos muestra la codificación de enteros en MS, C-1 y C-2. Los números positivos (en este caso del +0 al +7) se representan igual en los tres formatos, y esta representación coincide con el número (del +0 al +7) en binario.

POSITIVOS MS C-1 C-2 0000 +0 +0 +0 0001 +1 +1 +1 0010 +2 +2 +2 0011 +3 +3 +3 0100 +4 +4 +4 0101 +5 +5 +5 0110 +6 +6 +6 0111 +7 +7 +7

NEGATIVOS

MS C-1 C-2 1000 -0 -7 -8 1001 -1 -6 -7 1010 -2 -5 -6 1011 -3 -4 -5 1100 -4 -3 -4 1101 -5 -2 -3 1110 -6 -1 -2 1111 -7 -0 -1

Page 14: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

14

En los tres formatos de representación, todo número negativo se representa con el bit de mayor peso (el de la izquierda) puesto a 1. Los bits restantes representan el valor del número negativo, que se codifica de forma distinta en cada formato MS, C-1 y C-2:

• En MS los bits representan el valor absoluto del número negativo. • En C-1 los bits complementados (cambiados 0 por 1 y 1 por 0) representan el valor

absoluto del número. • En C-1 los bits complementados (cambiados 0 por 1 y 1 por 0) y sumándole 1

representan el valor absoluto del número.

El rango de representación de números enteros con N bits es

• MS [ -(2N-1-1), 2N-1-1 ]

• C-1 [ -(2N-1-1), 2N-1-1 ]

• C-2 [ -2N-1, 2N-1-1 ]

Podemos comprobar que en C-2 con 4 bits el rengo debe ser [-8,+7] coincidiendo con

los valores de la tabla anterior. Reales

Cualquier número real puede escribirse de forma normalizada como

0.M1 M2 M3 ...*10E1 E2 E3 ...

siendo M1 M2 M3... los dígitos de mantisa, y E1 E2 E3... los del exponente.

Los formatos de codificación de reales utilizan un conjunto de bits para almacenar la mantisa y otro para el exponente, que serán ambos números enteros.

Si la mantisa contiene demasiados dígitos puede ocurrir que no se pueda representar

en el conjunto de bits asignados para su codificación. En este caso sólo se almacenara en binario una parte de la mantisa, perdiéndose algunos dígitos y por ello precisión en el número. Se produce un error debido al truncamiento o redondeo de cifras (ver apto. 2.4 de esta Unidad).

La codificación de reales también se llama en coma flotante, debido a que la coma

decimal debe ser desplazada para representar el número en forma normalizada.

Un formato típico de codificación de reales es el IEEE 754

Page 15: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

15

Caracteres Como ya comentamos los caracteres pueden ser codificados si les hacemos corresponder un número positivo y codificamos este número. Existe una tabla estándar de correspondencias entre caracteres y números llamada la tabla ASCII (American Standard Code Interchange Information). Según esta tabla los caracteres están asociados a números entre el 0 y el 255, que pueden ser codificados en binario con 8 bits. Cada carácter almacenado en memoria ocupa un byte.

La siguiente tabla muestra una parte de la tabla ASCII

Carácter Numero Codificación binaria

'0' # 48 # 00110000 '1' # 49 # 00110001 ... ... ... ... ... 'A' # 65 # 01000001 'B' # 66 # 01000010 ... ... ... ... ... 'a' # 97 # 01100001 'b' # 98 # 01100010 ... ... ... ... ...

Otra tabla de codificación de caracteres es la tabla UNICODE, que comenzará a

utilizarse con amplitud, y que utiliza 16 bits. Errores: Redondeo y truncamiento Cuando representamos números en coma flotante, codificamos la mantisa utilizando un conjunto de bits. Cuando la mantisa es demasiado grande para el conjunto de bits que utilizamos para su representación, nos vemos obligados a representar sólo la parte más significativa, despreciando algunos dígitos menos significativos. Se cometerá un error en la representación del número respecto del valor exacto. Este error puede ser de dos tipos, dependiendo de la forma en que hagamos el recorte de dígitos:

• Redondeo: Eliminamos los dígitos que no se puedan representar y aproximamos el

dígito menos significativo del número resultado de forma que se cometa el mínimo error según el valor de la cifra siguiente. Si esta cifra es <5 se redondea hacia abajo y si es >=5 hacia arriba.

• Truncamiento: Simplemente eliminamos los dígitos que no se puedan representar. Ejemplos: !"El numero 0.1254983723459 sólo puede ser representado con 5 dígitos de mantisa,

luego los dígitos de a partir del 5º (83723459) no podrán ser representados. El número redondeado hasta el dígito 5 de mantisa es 0.12550

El número truncado hasta el dígito 5 de mantisa es 0.12549

Page 16: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

16

!"El numero 0.1254983723459 sólo puede ser representado con 6 dígitos de mantisa,

luego los dígitos de a partir del 6º (3723459) no podrán ser representados. El número redondeado hasta el dígito 6 de mantisa es 0.125498

El número truncado hasta el dígito 6 de mantisa es 0.125498

!"El numero 0.1254983723459 sólo puede ser representado con 11 dígitos de mantisa,

luego los dígitos de a partir del 11º (59) no podrán ser representados. El número redondeado hasta el dígito 11 de mantisa es 0.12549837235

El número truncado hasta el dígito 11 de mantisa es 0.12549837234

Eficiencia y redundancia. Detección de errores Eficiencia y Redundancia Cuando se hace corresponder a un conjunto de símbolos (números, caracteres, ...) un conjunto de combinaciones de N bits, decimos que hemos codificado los símbolos en binario con N bits.

Definimos eficiencia de un código ττττ como el cociente:

ττττ = nº de símbolos codificados / nº máximo de símbolos representables

La eficiencia es un número comprendido entre 0 y 1. Cuanto más cerca esté de 1 es estaremos utilizando casi todas las posibles combinaciones de bits para codificar símbolos, y cuanto más cerca esté de 0 estamos desaprovechando muchas combinaciones de bits para codificar símbolos. Lo que debemos intentar es que la eficiencia sea lo mayor posible para no desperdiciar bits en la codificación.

Definimos la redundancia R como R = 1 - ττττ ó R = (1 - ττττ)*100 %

Ejemplos: !"Si utilizamos el siguiente código 001 # 'a' 010 # 'b' 100 # 'c'

La eficiencia es 3/23 y la redundancia 1-3/23. La eficiencia es muy pequeña ya que de las 23 posibles combinaciones con 3 bits sólo utilizamos 3 y desperdiciamos 5. !"¿Cuál es el nº óptimo de bits con el que se pueden codificar los tres símbolos?

Page 17: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

17

Para encontrarlo debemos obtener el N más pequeño que cumpla 2N ≥ 3: N debe ser 2.

Esto quiere decir que la forma más eficiente de codificar tres símbolos es utilizando 2

bits. Si utilizamos más bits la eficiencia es menor. Detección de Errores Una forma de detectar errores en la transmisión de información (en binario) es comprobando la paridad de los bits. Un conjunto de bits tiene paridad par si el nº de 1 es par, y tiene paridad impar si el nº de 1 es impar.

Veámos el proceso: el emisor se debe poner de acuerdo con el receptor en la paridad

con qué se envían los datos. Cada vez que el emisor se dispone a enviar un conjunto de bits por las líneas, añade un bit de paridad que valdrá 0 o 1 para conseguir que la paridad de todos los bits enviados sea la correcta. Cuando los datos llegan al receptor, se chequea la paridad del total de bits recibidos, detectándose error en el caso que la paridad no sea la correcta.

DATOS ENVIADOS

PUESTA A 0 ó 1 DEL BIT DE

PARIDAD

DATOS RECIBIDOS

CHEQUEO DE

PARIDAD

EMISOR RECEPTOR

Figura 1.1. Comunicación entre un dispositivo emisor y otro que actúa como receptor. Para

mejorar la seguridad de la transmisión se suele utilizar un chequeo de paridad incluyendo un bit adicional en la transmisión. Si ocurre algún error la transmisión debería repetirse. Por supuesto, en la actualidad existen otros sistemas que permiten detectar y corregir errores, pero que quedan fuera del alcance de estos apuntes.

Ejemplos: !"¿Cuál sería el valor del bit de paridad que habria que añadir a los bits 010110 si se

transmiten con paridad par?

La respuesta es 1, para que la suma total de bits sea par. !"Si a un receptor le llegan los bits 0101001 con paridad par. ¿Se puede saber si ha

habido algún error en la transmisión? La respuesta es que sí se puede saber, y además como la paridad con la que se han enviado los bits no es la misma que con la que llegan, sabemos que ha habido un error en la transmisión.

Page 18: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

18

1.4 La Máquina de Von Neumann Hasta ahora hemos descubierto que un Computador es una máquina digital (formada por dispositivos electrónicos que siguen la lógica binaria) cuya misión fundamental es ejecutar programas. De esta forma el computador es capaz de tratar automáticamente distintos tipos de informaciones. Debido a que el programa que se ejecuta puede ser distinto en cada ocasión, podemos decir también que el computador es una máquina de propósito general. Hemos visto que el conjunto de instrucciones necesarias para la resolución de un determinado problema, que conforma lo que denominamos Programa, se almacena en los computadores actuales, junto con los datos que maneje, en un dispositivo de Memoria. Las datos de entrada y los resultados de salida se producen mediante dispositivos especiales de E/S como pueden ser teclado, ratón, monitor, impresora, etc. En una forma esquemática puede observarse en la figura siguiente:

Entrada SalidaMemoria

RAM

MundoExterior

MundoExterior

Unidad Central de Proceso

Figura 1.2. Un primer esquema funcional de computador. La unidad central de proceso (UCP

o en inglés CPU) se comunica con el mundo exterior por medio de unos dispositivos de entrada y salida (a éstos se les suele denominar interfaces de E/S y cada día son mejores y más "inteligentes".

Hemos estudiado en secciones anteriores que para el almacenamiento del programa y de los datos es necesaria una codificación ya sea de caracteres (ASCII, UNICODE, etc.) o bien de números (C-2, IEEE 754, BCD, etc.). Cuando utilizamos posteriormente los datos almacenados en un computador, para su transporte a otros elementos o como operandos en cálculos matemáticos, habitualmente se cometen errores, cuya naturaleza es necesaria conocer. Especialmente importantes son los criterios de paridad que se utilizan para la detección de errores en el transporte de la información de un elemento a otro. Con todo esto estamos en condiciones de intentar comprender ahora el funcionamiento general de un computador que siga el modelo simplificado de Von Neumann. Es lo que intentaremos descubrir en esta sección, así como más adelante nos introduciremos en el estudio de los distintos componentes del computador (Memoria, almacenamiento masivo, dispositivos periféricos, etc.).

Page 19: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

19

Arquitectura a Nivel Físico de un microprocesador sencillo Para realizar la ejecución de las instrucciones necesarias en cada caso, podemos pensar en el Procesador como un controlador de tráfico. Separamos la Memoria de la Unidad Central de Proceso o UCP4, ya que ésta ha adquirido con el paso de los años un papel fundamental en el diseño de los computadores. Esta similitud podemos observarla en la figura siguiente:

Procesador

Entrada Salida

Memoria

Mundo Exterior Mundo Exterior

Figura 1.3. Un procesador visto como una unidad reguladora del tráfico entre los componen-

tes de un computador De otra forma, más común, podríamos representar un computador como:

ProcesadorU.C.P

Entrada Salida

MemoriaR.A.M

Figura 1.4. Esquema simplificado de un computador. La memoria interna o RAM del sistema, adquiere una mayor relevancia.

Si continuamos nuestro proceso descendente, acercándonos cada vez más a los detalles internos de un procesador, podemos representar ahora los elementos fundamentales, como se observa en la figura 3, donde es conveniente resaltar ya, que los distintos elementos de un computador están unidos entre sí mediante unos “caminos” electrónicos por los que circulan las distintas señales, a los que se denomina Buses.

4 En muchos libros se denomina a la Unidad Central de Proceso, CPU que son las siglas de su denominación en inglés (Central Process Unit).

Page 20: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

20

ProcesadorU.C.P

Entrada Salida

MemoriaR.A.M

U.A.L

Unidad deControl

Figura 1.5. Elementos de un Computador. Las líneas de conexión finas representan distintas señales de control y están gestionadas por la Unidad de Control, que monitoriza el funcionamiento de los demás componentes. Las líneas gruesas representan caminos de datos de diferente naturaleza. La UAL (unidad aritmético-lógica es la encargada de la realización de los cálculos).

Necesitamos recordar en este momento que una característica que estamos tomando como fundamental es que el computador disponga de un dispositivo de memoria interna. Ya habíamos comentado anteriormente que la memoria la podíamos entender como una matriz de casillas, en donde en cada una de ellas podíamos almacenar un bit (0/1). A la vez podemos comprender que cada fila de esta matriz de memoria debe estar numerada (desde 0 a su capacidad-1), por lo que cada fila de memoria tiene asignada un número diferente, a éste se le conoce como Dirección de Memoria, y a cada fila se le denomina Palabra. Evidentemente, cada palabra tendrá una determinada dimensión a la que se denomina Ancho de Palabra. Cada tipo de computador tiene un ancho de palabra diferente y puede ser de 16, 32, 64 ó más bits. Es uno de los parámetros fundamentales que afectan al rendimiento de un sistema computador, ya que mide la máxima cantidad de bits que pueden extraerse o grabarse en memoria a la vez.

DirecciónPalabra

...

...210

n-1

A n c h o d e P a l a b r a

0 1 0 1

Figura 1.6. Esquema simplificado de una memoria convencional.

Page 21: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

21

Es lógico que pensemos que para escribir o leer datos en la memoria, necesitaremos utilizar las direcciones donde esos datos vayan a ser almacenados o de donde vayan a ser leídos. Por tanto, por las conexiones (buses) que existen entre los distintos componentes de un computador circularán tanto direcciones de memoria, como datos que vayan a ser utilizados. Al mismo tiempo, como ya habíamos indicado con anterioridad circulan entre los diferentes componentes otras señales, que se denominan de control. Por esto, existen tres tipos de buses diferentes en un sistema computador:

• Bus de datos • Bus de direcciones • Bus de control

En la actualidad, se suelen representar los elementos de un computador, como “cajas negras” que están “enganchadas” a un Bus del sistema global, por el que circulan separadamente direcciones, datos y señales de control5. De esta forma, podemos observar una representación más “moderna” en la figura 5.

U.C A.L.U

E SMemoriaPrincipal

U.C.P

MemoriaSecundaria

BUS

Figura 1.7. Un sistema computador con todos sus componentes unidos al Bus.

Siguiendo con nuestro acercamiento a la estructura interna de una computadora, es necesario que fijemos ahora nuestra atención en el interior de un procesador, para lo que nos centramos en la figura 6, en la que quedan representados los elementos internos más importantes en un microprocesador.

RDMRIM

RICP

R0

Rm

U.A.L

U.CCkEstado

M i c r o p r o c e s a d o r

. . .

Figura 1.8. Elementos de un microprocesador sencillo.

5 En algunos computadores, los mismos hilos conductores que conforman un bus son compartidos para las direcciones y para los datos.

Page 22: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

22

La denominación y funciones de cada elemento en particular son:

• Lógica de Control : se generan las señales necesarias para gobernar todos los procesos involucrados en la ejecución de instrucciones

• Reloj : elemento que genera una señal periódica de sincronización • Registros Rápidos de Trabajo (RRT) : almacén temporal de datos con los que se

opera en la UAL (de resultados intermedios, de direcciones, etc.). Pueden ser de distintas longitudes. Uno de ellos se suele denominar Acumulador, y es utilizado en muchos microprocesadores como almacenamiento en la ejecución de diferentes instrucciones

• Palabra de Estado : conjunto de biestables que indican diferentes condiciones que se pueden dar en la UAL o en la UC, por ejemplo, que haya existido un acarreo en una operación aritmética.

• Registro de Direcciones de Memoria (RDM) : registro que sirve para almacenar la dirección de la palabra de memoria que se encuentre involucrado en la siguiente operación. Su longitud será igual a la del ancho del bus de direcciones

• Registro de Intercambio de Memoria (RIM) : registro de almacenamiento de los bits que conforman una palabra de memoria y que después se transportan a otros elementos para su tratamiento posterior. También se utiliza para almacenar los datos que se van a introducir en memoria en el siguiente acceso. Su longitud será igual al ancho de palabra y también a la del número de líneas del bus de datos

• Registro de Instrucciones (RI) : es el registro en el que se almacena el contenido de la instrucción que está siendo ejecutada en cada instante

• Contador de Programa (CP) : es el registro que almacena en cada instante de ejecución, la dirección en memoria de la siguiente instrucción que va a ser ejecutada

Ya que conocemos un poco más del interior de un microprocesador podemos refinar o revisar la figura 6 y construir otra en que se tengan en cuenta algunos de los nuevos elementos que hemos considerado. Para mayor claridad, representaremos los registros RIM y RDM dentro de la memoria.

RDM

RIM

Direcciones A0 - A15

DatosD0 - D7

Control

Disp.Entrada

Disp.Salida

MEMORIARAM

U.C.PU.A.L U.C

RRT

CP

RI

Figura 1.9. Esquema de un computador con sus elementos y registros más importantes.

Como ejemplo, representamos el Bus de Direcciones con 16 líneas, nombradas como A0-A15, y el Bus de Datos con 8 líneas, denominadas mediante D0-D7. En muchos casos, los dispositivos de E/S se tratan como direcciones de memoria, de ahí las conexiones con el bus de direcciones.

Page 23: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

23

Arquitectura a Nivel de Lenguaje Máquina de un microprocesador sencillo Hasta ahora hemos estudiado detalles sobre la organización interna de un computador, es decir, sobre su estructura. Nuestro objetivo es mayor, nos proponemos comprender el funcionamiento interno (el modo de ejecutar programas) de una computadora que siga el modelo propuesto por Von Neumann. Las características fundamentales del modelo de Von Neumann son:

• programa y datos almacenados en memoria • ejecución secuencial de instrucciones

Para el estudio, partiremos de dos hipótesis generales, que son:

• la ejecución de cualquier instrucción es de características parecidas • todas las instrucciones constan de dos fases o tiempos fundamentales. Por un lado,

la búsqueda (fetch) o captación de la instrucción, y luego la ejecución, que suele ser diferente para cada distinto tipo de instrucción.

Fases de la ejecución de una instrucción: FASE 1 : Búsqueda o captación de la instrucción

• Para iniciar la ejecución de un programa es necesario ubicar en el CP la dirección de memoria donde comienza dicho programa

• El contenido del CP se transvasa al registro RDM, lo que abreviadamente se puede escribir como: RDM ← CP

• La Unidad de Control debe mandar a la memoria la señal de control que le indica que se va a proceder a realizar una lectura: R / W = 1

• Después del tiempo necesario para el acceso a memoria en el RIM aparecerá la instrucción contenida en la dirección que estaba contenida en el RDM. O lo que es lo mismo, ya hemos extraído o leído de memoria la instrucción que necesitamos ejecutar. Abreviadamente se puede escribir: RIM ← M (RDM)

• Es necesario que ahora pasemos la instrucción al registro RI, para que después la Unidad de Control pueda realizar la identificación de qué tipo de instrucción es (decodificación de la instrucción), y a su posterior ejecución: RI ← RIM

• Por último, es imprescindible actualizar el Contador de Programa, para que pase a apuntar a la siguiente instrucción a ejecutar6: CP ← CP + 1

A cada una de las operaciones anteriores (p.e. CP ← CP + 1) se le denomina microoperación, ya que se trata de las tareas más elementales que puede llevar a cabo el computador y en cierto modo, son indivisibles en otras operaciones aún más pequeñas. Un conjunto de microoperaciones realizado en un orden preestablecido es lo que se denomina instrucción máquina. Estamos considerando, por tanto, que un programa es un conjunto de instrucciones máquina, y cada una de ellas (dependiendo del microprocesador) tiene un nombre único y diferente del de las demás. Por ejemplo,

6 Suponemos en este momento, que cada instrucción sólo ocupa una dirección de memoria.

Page 24: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

24

en un hipotético µP, nos podríamos encontrar con instrucciones máquina como CMA7 (para complementar el acumulador) o SUM dirección de memoria (para sumar al acumulador el contenido de esa dirección de memoria). FASE 2 : Ejecución de la Instrucción

• La primera parte de la ejecución es exactamente idéntico para todas las instrucciones. Generalmente una instrucción debe contener una parte que indica que tipo de instrucción es (p.e. una instrucción de suma), a la que se denomina Código de Operación (codop). En esta primera microoperación el codop debe ser transferido a la lógica de control que se ocupa de la decodificación de instrucciones

• A partir de este momento cada ejecución resulta diferente. Ilustremos el proceso con un ejemplo: consideremos una instrucción máquina como SUM dirección de memoria8, diseñada para sumar al registro acumulador el contenido de la dirección de memoria especificada. Si la instrucción fuese SUM 56, que traducida a nuestro idioma, significa que se debe sumar a lo que haya en el acumulador lo que está contenido en la dirección de memoria número 56, se deberían llevar a cabo las microoperaciones:

RDM ← 56 * llevamos al registro de direcciones de memoria la dirección número 56

R / W = 1 * la unidad de control activa la memoria para realizar una operación de lectura

RIM ← M (RDM) * el registro de intercambio de memoria recoge lo contenido en memoria en la dirección 56

A ← A + RIM * lo contenido en el registro acumulador (A) se actualiza sumándole el contenido del registro RIM

Evidentemente la ejecución de otras instrucciones máquina diferentes podrá resultar en la realización de mayor o menor cantidad (según el caso) de microoperaciones básicas. Pero en cualquier caso, el funcionamiento de un microprocesador que se ajuste a este modelo de funcionamiento siempre conlleva la realización de las dos fases indicadas. De forma esquemática esto queda recogido en la figura 8. Dependiendo del computador las instrucciones máquina varían, cada µP dispone de un juego completo de instrucciones máquina, que es diferente al de otros procesadores. En determinadas ocasiones para garantizar que los programas se puedan ejecutar sobre diferentes procesadores9, los juegos de instrucciones máquina se diseñan de forma que sean compatibles entre sí. Esto es lo que sucede por ejemplo, en la familia de procesadores Intel 80x86, así será posible ejecutar un programa diseñado sobre un procesador 80286 en un 80486. Sin embargo, no se podrá ejecutar este mismo programa sobre un computador basado en el microprocesador Motorola68000, ya que los juegos de instrucciones son diferentes, y lo que un procesador entiende, no lo entiende el otro.

7 La denominación de cada instrucción máquina se denomina nemónico o nemotécnico. 8 Para mayor claridad en la exposición, consideremos que las direcciones de memoria se especifican en el sistema de numeración decimal. 9 A esto se le denomina Portabilidad.

Page 25: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

25

RDM←CPR / W = 1RIM←M(RDM)RI←RIMCP←CP+1

RDM←dR / W = 1RIM←M(RDM)A←A+RIM

...codop_2

codop_n

Figura 1.10. Diagrama de estados que sigue la Unidad de Control para ejecutar una

instrucción máquina, y microoperaciones que se realizan en la ejecución de una instrucción de suma. Los estados adicionales que se observan en la fase de ejecución representan las microoperaciones que deberían realizarse para ejecutar otras instrucciones diferentes a la de suma.

Para seguir ahondando en algunos otros conceptos, supongamos a partir de ahora, que

disponemos de un microprocesador no existente realmente, que dispone de un sencillo juego de instrucciones máquina, cuyos nemónicos y significados son:

ENT d introduce un dato desde un dispositivo de entrada (p.e. teclado) a la dirección de memoria apuntada por d

SAL d muestra en el dispositivo de salida (p.e. monitor) el contenido de la dirección de memoria d

ACUM d lleva al acumulador el valor contenido en la dirección d MEM d lleva el contenido del acumulador a la dirección de memoria d SUM d suma lo contenido en el acumulador el valor que haya en la

dirección de memoria d

¿Hay alguna conclusión lógica a la que podemos llegar en este momento?. En principio, resulta claro que por lo que sabemos hasta ahora, para resolver un determinado problema con la ayuda de una computadora es necesario que podamos escribir un programa que ésta sea capaz de ejecutar. Por tanto, cualquier programa que escribamos debe poderse escribir con una composición de estas instrucciones máquina. Debido a que el juego de instrucciones es, en este caso, extremadamente simple, es evidente que existirán problemas a los que no podremos aportar una solución computacional. Por ejemplo cuando queramos realizar la diferencia entre dos números. De esta forma, podemos llegar a la conclusión de que el juego de instrucciones debe ser lo suficientemente completo para que podamos resolver computacionalmente gran cantidad de problemas. Hay otros asuntos que nos interesan conocer y comprender. Como hemos dicho, en un computador que siga el modelo de funcionamiento de Von Neumann, para poder ejecutar el programa, éste debe estar almacenado en la memoria interna o RAM del sistema. Supondremos a partir de ahora (en muchos computadores es así), que podemos

Page 26: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

26

fijar el inicio y el tamaño de un área de memoria para que contenga el código del programa10, y también el inicio y tamaño de otro área diferente para que contenga los datos que manipule el programa. Denominaremos a estas dos áreas Segmento de Código (SC) y Segmento de Datos (SD), respectivamente. Cada instrucción máquina debe poder ser representada dentro de la memoria. Para ello, cada instrucción máquina tendrá un formato que puede ser como el siguiente:

código de operación (codop) dirección de memoria

Supondremos que el computador que estamos considerando es de 16 bits, lo que quiere decir que su ancho de palabra es 16. De esta forma, podríamos reservar 5 bits para el código de operación y los 11 bits restantes nos servirían para representar la dirección de memoria involucrada en la ejecución de la instrucción. En la tabla 1, representamos una posible codificación para el juego de instrucciones máquina que hemos considerado, junto con las microoperaciones que conllevan cada una específicamente:

Nemónico Codificación Microoperaciones ENT d 00001 RDM←d, R/W =0,RIM←E,M(RDM)←RIM SAL d 00010 RDM←d, R/W =1,RIM←M(RDM),S←RIM ACUM d 00100 RDM←d, R/W =1,RIM←M(RDM),A←RIM MEM d 01000 RDM←d, R/W =0,RIM←A,M(RDM)←RIM SUM d 10000 RDM←d, R/W =1,RIM←M(RDM),A←A+RIM

Tabla 1.- Instrucciones máquina de nuestro microprocesador ficticio.

Por supuesto, no cabe duda que esta codificación no sería la más eficiente. Cabe realizar algunas preguntas sobre este particular: Ejercicio Propuesto 1: ¿Cuál es la eficiencia de este código? Ejercicio Propuesto 2: Diseñar el formato de instrucción más eficiente. Además en el caso que hemos supuesto, sino utilizamos ningún arreglo particular, los 11 bits que hemos utilizado para representar las direcciones de memoria, nos restringen el tamaño máximo de la RAM:

Ejercicio Propuesto 3: ¿Cuánto vale el tamaño máximo que puede tener la RAM según la disposición que hemos seguido?

Por otro lado, hemos supuesto que este microprocesador ficticio es de 16 bits, y que sólo representaremos números enteros. Podemos plantearnos también:

Ejercicio Propuesto 4: ¿Cuál es el número máximo que podemos representar en memoria? ¿Cuál es el rango de valores enteros que podremos utilizar?. Considerar en esta cuestión las distintas posibilidades: enteros positivos, enteros en módulo-signo, enteros en C-1, y enteros en C-2.

10 La codificación en binario del programa.

Page 27: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

27

Una vez comprendida toda esta problemática, a la que podemos denominar arquitectura a nivel de lenguaje máquina, podemos intentar realizar algún programa que resuelva alguna operación sencilla. Ejemplo de Programación Suma de dos números introducidos desde el teclado, de forma que el resultado se muestre por pantalla. Supongamos que el segmento de código comienza en la dirección 32, y que el segmento de datos comienza en la 64. Tanto uno como otro, tienen un tamaño de 32 bytes. Bajo estas hipótesis, el programa escrito en código nemónico podría ser el siguiente:

Dirección RAM Código de Operación

Dirección de Memoria involucrada en la ejecución

32 ENT 64 33 ENT 65 34 ACUM 64 35 SUM 65 36 MEM 66 37 SAL 66

Tabla 2.- Instrucciones máquina (de nuestro microprocesador ficticio) necesarias para la

resolución del cálculo de la suma de dos números enteros. Evidentemente, este programa debe cargarse en memoria para poder ser ejecutado por el procesador, por tanto, debe transformarse a código binario, según la codificación propuesta anteriormente para cada instrucción, y almacenarse a partir de la dirección que hemos propuesto como de inicio para el segmento de código. De esta forma, el mapa de memoria resultante para el segmento de código del programa sería:

Dirección RAM Código de Operación

Dirección de Memoria involucrada en la ejecución

32 00001 00001000000 33 00001 00001000001 34 00100 00001000000 35 10000 00001000001 36 01000 00001000010 37 00010 00001000010

Tabla 3.- Mapa de memoria del segmento de código del programa que calcula la

suma de dos números enteros.

Desde luego, al observar las tablas 2 y 3, donde está representado el programa de la suma de dos números en nemónico y en binario, respectivamente, resulta bastante claro que ambas resultan difíciles de leer y de comprender (por supuesto, la representación en binario aún más). Por esta razón, se han desarrollado lenguajes de programación con los que la escritura de un programa resulta en un código más legible y fácil de entender.

Page 28: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

28

A estos lenguajes se les denomina de alto nivel, y a los que nosotros hemos estudiado, por su mayor cercanía al hardware de la máquina, se les denomina de bajo nivel. Es necesario, para asimilar los conceptos estudiados, que seamos capaces de resolver:

Ejercicio Propuesto 5: Escribir la secuencia de microoperaciones que conlleva el programa anterior

Ejercicio Propuesto 6: Realizar un programa que calcule el doble de la suma de dos números introducidos desde teclado.

Y hay algunas cuestiones sobre las que podemos reflexionar para seguir ahondado en el funcionamiento interno de un computador, y que nos van a servir de base para apuntar otros conceptos:

Ejercicio Propuesto 7: ¿Qué ocurriría si quisiésemos computar N veces del valor de la suma?

Ejercicio Propuesto 8: ¿Cómo podríamos reutilizar un programa que ya hayamos desarrollado previamente?

En un computador actual, nos encontramos con ciertas instrucciones máquina, que permiten alterar la secuencia natural del flujo de ejecución secuencial de las instrucciones, ya que de otra forma, no existe solución para las cuestiones propuestas, que pueden escribirse también, de un modo más formal como:

a) ejecución de un bloque de instrucciones, un cierto número de veces. A esto se denomina iteración

b) ejecución de otro conjunto de instrucciones diferente, al que se denomina procedimiento, rutina o subrutina

Para resolver a) sería fácil si dispusiésemos de instrucciones máquina como:

STZ d compara el registro acumulador con cero, y si es así, se produce un salto en la ejecución del programa a la dirección d (instrucción de salto condicional)

STI d salto incondicional a la dirección d DEC decrementa el contenido del acumulador en 1

Para resolver b), necesitaríamos en principio, suponer que cuando cargamos un programa en memoria, éste permanece inalterado en ella hasta que no sobreescribimos esas direcciones con otros contenidos diferentes. Además nuestro microprocesador debería disponer de otras dos instrucciones máquina adicionales, como:

SUB d para pasar a ejecutar las instrucciones que se encuentren almacenadas en memoria a partir de la dirección d (instrucción de salto a subrutina)

RET para retornar al punto desde donde se invocó la subrutina

Desde luego, para poder retornar a un determinado punto en la ejecución de un

programa, desde el que se invocó a una subrutina, será necesario almacenar en algún lugar (registros) la dirección de instrucción que debe (después de la subrutina) ejecutarse. Además como puede ser que una rutina determinada llame a otra, y esta

Page 29: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

29

segunda a otra y así sucesivamente, para realizar la correcta ejecución se necesita “recordar” más de una dirección. Esto se consigue mediante un almacenamiento en forma de pila (estructura de datos LIFO), que bien puede conseguirse de los registros rápidos de trabajo, o bien de memoria RAM que suele ser lo más normal, ya que los registros de la UCP son pocos, y el tamaño de la pila de direcciones a recordar puede ser grande, según el caso. Podemos observar un ejemplo en la figura 9:

CP

PILA

CPCP

CPCP

100

105 SUB 207

106

207

207

106

210 SUB 80

RET

80

211106

80

82 RET

82

211(Pila)

211

212

106(Pila)

CP

212

Figura 1.11. Secuencia de llamadas a subrutinas y retorno de ellas. Estructura de Pila para

almacenar las direcciones de retorno de la subrutinas invocadas.

Ejercicio Propuesto 9: Realizar el programa que calcula N veces el valor de la suma de dos números introducidos desde teclado, de forma que muestre el resultado en el dispositivo de salida.

Ejercicio Propuesto 10: Realizar el programa que calcula N veces la suma de dos

números introducidos desde teclado, de forma que muestre el resultado en el dispositivo de salida, pero utilizando una subrutina para realizar el cálculo.

Tendencias Futuras Como se puede comprobar, hemos estudiado el funcionamiento y la organización de un computador extremadamente simple que sigue el modelo propuesto por Von Neumann. Sin embargo, se puede también imaginar que en la realidad, la arquitectura y funcionamiento interno de los computadores actuales son de una complejidad enormemente mayor, y la idea fundamental reside en el hecho de intentar diseñar estrategias para utilizar cada vez más el paralelismo en la ejecución de las tareas en un computador.

Page 30: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

30

A título de apuntar algunas tendencias en el diseño de computadoras, podemos recordar la clasificación de Flynn, ya que aunque realmente algunas máquinas actuales son híbridos entre las distintas categorías propuestas por Flynn, resulta sencilla de comprender y quizá por esto sea el esquema de clasificación más utilizado. Las cuatro organizaciones propuestas (1966) fueron:

• computadoras SISD (simple flujo de instrucciones, simple flujo de datos): las instrucciones se ejecutan secuencialmente sobre un conjunto único de datos. Las máquinas que siguen el modelo de Von Neumann estarían incluidas en esta categoría

• computadoras SIMD (simple flujo de instrucciones, múltiple flujo de datos): existen múltiples elementos de proceso supervisados por una única unidad de control. Todos los elementos de proceso reciben la misma instrucción que ejecutan a la vez, sobre distintos datos. De esta forma, si por ejemplo, una computadora de este estilo, dispone de 32 UAL podría realizar 32 sumas (una única instrucción) en el mismo instante. El propósito fundamental del diseño de este tipo de computadoras fue amortizar el coste de la unidad de control, aunque posteriormente se les han encontrado otras ventajas como la pequeña cantidad de memoria que hay que utilizar para el código de programa, que en máquinas multiprocesadoras necesita cargarse en cada procesador.

• computadoras MISD (múltiple flujo de instrucciones, simple flujo de datos): en ellas existen múltiples procesadores que reciben distintas instrucciones, pero operan sobre el mismo flujo de datos. En la práctica, es muy difícil encontrar una máquina de estas características, con varios contadores de programas y operando sólo con un flujo de datos.

• computadoras MIMD (múltiple flujo de instrucciones, múltiple flujo de datos): se trata de computadoras dotadas de múltiples procesadores que trabajan con datos diferentes que pueden proceder del mismo o de distintos espacios de memoria. Un sistema distribuido se puede considerar como MIMD.

Las ideas más modernas en lo que respecta al diseño hardware de computadoras, pasan por utilizar otros sistemas no tan tradicionales como los circuitos electrónicos digitales, ya que estos como casí todo, también tienen un límite físico, en este caso en su escala de integración. Por un lado, se está pensando en emplear moléculas (proteinas) para almacenar bits y por otro en ordenadores cuánticos. Estas tendencias aunque potencialmente son muy interesantes y revolucionarias, aún tienen un largo camino por recorrer. Problemas Resueltos Ejercicio Propuesto 9 Calculo de N*(A+B). Siendo N, A y B, tres números positivos leídos desde teclado. Primero, implementaremos el programa en abstracto, sin considerar las direcciones de memoria implicadas. Así no nos perderemos entre tanto número. Posteriormente, terminaremos el programa, fijando adecuadamente todas las direcciones de memoria necesarias.

Page 31: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

31

Pero antes de escribir nada, deberíamos pensar la forma de resolver el problema. Al estar tan “cerca” de la estructura interna de la máquina, deberemos tener en cuenta las posibles instrucciones que podemos utilizar. Esta fase se denomina Análisis del problema. En nuestro problema a resolver, de alguna forma deberemos llevar el control del número de veces que hemos realizado la suma A+B. Para ello utilizaremos una variable N, que deberemos llevar al acumulador para poder decrementar, y ya que posiblemente luego utilicemos el acumulador para realizar una suma, llevamos a memoria lo más rápidamente posible el valor de N decrementado y procedente del acumulador. Para hacer el cálculo, haremos la suma A+B una primera vez, y compararemos el valor de N con cero, para ver si ya hemos terminado. Si no ocurre esto, deberemos realizar la suma N-1 veces más.

ENT variable_A ENT variable_B ENT variable_N ACUM variable_A SUM variable_B MEM variable_TOTAL ACUM variable_N DEC MEM variable_N BLOQUE: STZ FINAL ACUM variable_TOTAL SUM variable_A SUM variable_B MEM variable_TOTAL ACUM variable_N DEC MEM variable_N STI BLOQUE FINAL: SAL variable_TOTAL

En el código del programa (código fuente) hemos dejado algunos espacios en blanco y hemos indentado11 algunas sentencias, para aumentar la legibilidad y claridad. A pesar de todo, el haber realizado un análisis del problema y el haber escrito el programa sin las direcciones de memoria, no nos puede llevar a suponer que esto nos podría servir para escribir un programa para otro microprocesador distinto al nuestro, ya que el juego de instrucciones será diferentes. Pero esto ya era algo que sabíamos con anterioridad. Estamos programando a bajo nivel y esto hace que los programas no sean fácilmente transportables de un procesador a otro. Terminemos ahora de escribir el programa, para lo que deberemos fijar las direcciones de inicio y el tamaño de los segmentos del programa. Supongamos que el segmento de código comienza en la dirección 0, y tiene un tamaño de 64, y que el datos comienza en la 64 y tiene el mismo tamaño. A partir de estas direcciones, debemos fijar las direcciones de los datos variables que se utilizan en el programa.

0 ENT 64 1 ENT 65 2 ENT 100 ; almacenamos N en la dirección de memoria 10012

11 Desplazamiento hacia la derecha de algunas frases o párrafos. 12 Utilizamos el símbolo ‘;’ para indicar el comienzo de una frase de comentario, dentro del código del programa.

Page 32: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

32

3 ACUM 64 4 SUM 65 5 MEM 66 6 ACUM 100 7 DEC 8 MEM 100 9 STZ 18 ; en la dir. 18 se encuentra la instrucción de salida 10 ACUM 66 11 SUM 64 12 SUM 65 13 MEM 66 14 ACUM 100 15 DEC 16 MEM 100 17 STI 9 ; para seguir repitiendo la operación 18 SAL 66

Es interesante observar que la tarea de fijar las direcciones de inicio de los segmentos de un programa que hasta ahora hemos realizado nosotros, deberá ser gestionada por “alguien” más capacitado, que conozca que espacios libres quedan en la memoria RAM. Este “alguien” es el Sistema Operativo. De forma intuitiva, podemos suponer que el sistema operativo debería sumar a las direcciones fijadas por nosotros, las que encuentre necesarias para la correcta disposición del programa en memoria. Ejercicio Propuesto 10 Igual que el programa 2 pero utilizando una subrutina para realizar el cálculo completo. Suponemos igual que antes que el segmento de código comienza en la dirección 0, y tiene un tamaño de 64, y que el datos comienza en la 64 y tiene el mismo tamaño, pero que además previamente hemos cargado en memoria a partir de la dirección 200 (en otro segmento) las instrucciones necesarias para conseguir obtener N veces, la suma de dos números (en este caso particular, almacenados en las direcciones 64 y 65)

Programa Principal: 0 ENT 64 1 ENT 65 2 ENT 100 3 SUB 200 ; para ejecutar la subrutina 4 SAL 66

Subrutina: 200 ACUM 64 ; utilizamos los datos de las direcciones 64 y 65 201 SUM 65 202 MEM 66 203 ACUM 100 204 DEC 205 MEM 100 206 STZ 215 ; para salir de la subrutina (dir. 215) 207 ACUM 66 208 SUM 64 209 SUM 65 210 MEM 66 211 ACUM 100 212 DEC

Page 33: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

33

213 MEM 100 214 STI 206 ; para ejecutar otra vez el bloque 215 RET ; cuando volvemos el resultado está en la dir. 66

Resulta importante caer en la cuenta que el programa principal y la subrutina utilizan datos que, en este caso, residen en las direcciones 64, 65 y 66. En cualquier caso, el lenguaje de programación que utilicemos deberá suministrar los medios para poder “comunicar” datos desde un programa a una subrutina y viceversa. La utilización del concepto de subrutina, aunque de un modo algo menos “burdo” que en nuestro microprocesador ficticio, conforma una de las características más interesantes de determinados lenguajes actuales, y es la estructuración del código, creando y utilizando módulos (procedimientos o funciones) que realicen tareas de cálculo específicas, y que una vez programados y testeada su validez, puedan ser reutilizados para la resolución de muchos otros problemas, tanto por el propio desarrollador como por otros programadores.

Page 34: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

34

1.5 Evolución de los Computadores La evolución histórica de la Informática, ha estado vinculada a los avances tecnológicos de la humanidad, y en particular muy relacionada con las distintas herramientas que el hombre ha ideado para realizar cálculos. A la vez que se ha ido avanzado en tecnología, también se han desarrollado teorías científicas, a veces antes del nuevo diseño tecnológico, otras veces propiciadas por éste.

La primera herramienta de cálculo que se conoce es el Ábaco. Al parecer, sus inventores fueron los babilonios (sobre el 2000 a.C.) y se trataba de un instrumento simple constituido por un marco de madera atravesado por unos alambres en los que había una serie de cuentas engarzadas. Los griegos y los romanos lo siguieron utilizando, pero los cambios importantes fueron debidos a los hindúes que hicieron tres descubrimientos fundamentales (al parecer por no conocer el ábaco): inventaron los sistemas de numeración posicionales (cada cifra tiene un valor diferente dependiendo de donde se coloque), utilizaron el sistema numérico decimal y descubrieron el cero. Las máquinas de calcular comienzan a tener existencia, aproximadamente, a comienzos del siglo XVII, época en la que la mecánica comenzó a desarrollarse. En el fondo, las calculadoras, no eran más que mecanizaciones del ábaco, pero con ruedas en lugar de varillas, lo que permite un arrastre de cifras. Leonardo Da Vinci según una reconstrucción de uno de sus escritos había pensado en ello, y nos muestra una caja que contenía una serie de ruedas con un dispositivo de arrastre en cadena (similar a un cuentakilómetros actual). En 1623, Wilhelm Schickard diseñó y construyó una calculadora que además de ser la primera conocida, tenía la característica de poseer unas ruedas que permitían recordar resultados anteriores y estaba dotada de un dispositivo multiplicador. En 1630, apareció un dispositivo desarrollado por Neper (las tablas de Neper), que consistía en unas regletas de madera en las que estaban escritos los dígitos decimales. Por movimientos predeterminados de estos, se podían calcular rápidamente multiplicaciones. Poco tiempo después, en 1642, Pascal construyó, con 19 años, una máquina únicamente sumadora, que denominó “machina arithmetica”, para ayudar a su padre en los cálculos de impuestos (era recaudador) y que también estaba realizada a base de ruedas dentadas. Es en 1671 cuando Leibnitz, intentando superar la máquina de Pascal, proyecta una calculadora con multiplicación en base a sumas iteradas. El mismo fabricó todas las piezas de su máquina, terminando su construcción en 1694. La calculadora denominada universal era capaz de realizar las cuatro operaciones básicas. La suma y resta siguiendo los criterios de Pascal, y la multiplicación y división utilizando iteraciones. Durante los dos siglos siguientes multitud de intentos siguieron a estos, hasta llegar a 1872 en que Baldwin construye una calculadora, en base a una rueda denominada Odhener (que patentó), y que es la primera versión de calculadora de oficina con

Page 35: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

35

manecilla lateral, y que en 1910 está comercializada en el mercado mundial. Estas máquinas son compactas y sencillas de manejar, consiguiendo que el cálculo aritmético sencillo sea algo práctico y asequible económicamente. De este modo, nadie siente la necesidad de superar este diseño hasta la llegada de la Segunda Guerra Mundial. En otros aspectos de diseño, merece la pena considerar los llamados calculadores analógicos, que empezaron a desarrollarse en 1920, cuando la compañía General Electric construye un dispositivo simulador de circuitos, utilizando para ello dispositivos electrónicos. Se trataba de una analizador diferencial que reproducía las variaciones de una magnitud mediante la analogía con otra. La evolución posterior de estos analizadores ha seguido, como tantas otras cosas, paralela a las necesidades militares y de guerra, dando lugar hoy a los calculadores analógicos totalmente electrónicos usados en simulación y en aplicaciones militares. Según otro orden de cosas, en 1806 aparece el telar de Jacquard que es controlado de modo automático por una serie continua de tarjetas perforadas. Aparece en este momento, el concepto de programa externo. Pero quizá el precedente más ilustre del calculador digital, o computadora, se debe a Charles Babbage (1791-1871), matemático e investigador inglés, quién intentó construir una máquina que permitiese el cálculo de un polinomio como una serie de sumas a partir de unas constantes calculadas previamente. Ésta era la “máquina de diferencias”, y durante su desarrollo concibió otra máquina denominada “analítica” que era un calculador mecánico capaz de efectuar cualquier cálculo que le fuera indicado por un programa registrado en tarjetas perforadas, al que denominó “control”. Babbage describió (en 1842) con ayuda de Lady Ada Augusta Lovelace (hija de Lord Byron), los fundamentos teóricos de ésta, sin poder llegar a construirla debido a la tecnología industrial de su época. En general, la estructura de esta máquina responde a lo que hoy denominamos como “arquitectura de Von Neumann”. Lady Ada Lovelace llegó incluso a desarrollar algoritmos para esta máquina, y es por esto por lo que se la considera como primera programadora de la historia. Actualmente existe un lenguaje de programación al que se denominó Ada, como homenaje a su labor. Una contribución importante fue debida a George Boole (1815-1864), creador de la teoría de la lógica matemática. Introdujo un álgebra en el que se representan las cantidades binarias (verdadero y falso), que se denomina lógica booleana que es la base teórica del diseño de los computadores digitales y de las técnicas de programación. El estadístico americano Hollerith (1860-1929), encargado del censo, topó en 1886 con el problema que aún no había terminado de realizar el censo de 1880, con lo que probablemente sus resultados no se conocerían antes del de 1890. Las calculadoras no le daban solución, puesto que sus problemas más que de estrictamente cálculos, eran realizar diversas clasificaciones de los habitantes (según sexo, religión, distritos, etc...). Su solución fue diseñar un sistema compuesto por una lectora eléctrica, en base a tarjetas perforadas, una clasificadora, una intercaladora y una tabuladora. La lectora detectaba las perforaciones en la tarjeta al hacerla pasar sobre el mercurio. Con este sistema, el censo americano de 1890, se realizó en sólo tres años. Evidentemente, este invento revolucionó el tratamiento administrativo de la información. Hollerith creó la empresa Computing Tabulating Recording que en 1910 contrató a Thomas Watson

Page 36: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

36

como director general quién, en 1924, con fusiones con otras empresas crearon IBM (International Bussiness Machines). A IBM, por diversas razones, no le afectó la crisis de Wall Street de 1929 y siguió fabricando y durante una época almacenando equipos, hasta que en 1932 siendo presidente Roosvelt se decide crear la seguridad social y le compran los equipos a IBM. Ahora esta compañía controla el 60% de todas las ventas de ordenadores en el mundo. En 1944, Howard H. Aiken de la Univ. de Harvard y la empresa IBM se asocian para crear el que se denomina primer computador del mundo, el MARK-I. Era electromecánico, con una memoria de 72 posiciones decimales, consistente cada una de ellas en un conjunto de 24 ruedas de 10 posiciones, y su programa consistía en una tarjeta perforada de operaciones aritméticas de 24 cifras decimales. Contaba con 250000 piezas y 800 Km. de cables. Una suma o resta de dos números costaba medio segundo, un producto 6 segundos y una división 10 segundos, y cuando entraba en funcionamiento necesitaba tanta potencia que producía apagones de luz en las ciudades colindantes. En 1946, se presentó el ENIAC (Electronic Numerical Integrator and Computer), de la Universidad de Pensilvania, que estaba ya basado en válvulas de vacío electrónicas. Más modesto, sólo con 20 posiciones de memoria de 10 decimales. Nació como respuesta a las necesidades del cálculo balístico en la Segunda Guerra Mundial. Era todavía decimal, pesaba 30000 Kg., pero hacía en una hora lo que el MARK-I tardaba en hacer una semana. Tanto el MARK-I como el ENIAC precisaban el cambio de sus componentes físicos para cambiar de un cálculo a otro. John Von Neumann (1903-1957), en junio de 1945, presentó un borrador del diseño de una nueva máquina (el EDVAC, que se construiría en 1947), en donde por primera vez, y en la línea de Babbage, se explicaba y utilizaba el concepto de programa almacenado o interno. Se trataba, por tanto, del primer ordenador en el sentido moderno del término. En el ámbito software, Alan Turing (1912-1954) formuló el concepto formal de algoritmo (procedimiento general) como aquel que se podía realizar sobre una máquina abstracta que desarrolló y que se denominó máquina de Turing. Esto presenta el interés especial de proporcionarnos un método de identificar de si un algoritmo es computable o no, simplemente sabiendo si se puede realizar en su máquina. A partir de estos intentos, los hechos evolucionaron de modo muy rápido. En 1951, se comercializa el primer ordenador UNIVAC I, en 1958 el primer ordenador íntegramente transistorizado, etc. ... . Por supuesto, la evolución continúa y a un ritmo mucho más veloz que en sus inicios. Generaciones Los elementos que determinan que un ordenador se considere dentro de una generación u otra son varios, entre ellos se pueden incluir la miniaturización de los componentes, la velocidad de cálculo, la capacidad para poder resolver problemas complejos, o la fiabilidad o protección ante posibles errores. El paso de una generación a otra ha sido determinado por avances hardware, excepto la quinta generación, en la que el

Page 37: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

37

determinante ha sido el software. Actualmente se invierte más en software en contraposición a las tendencias de hace unos años. * Primera Generación (1945-1954) La característica fundamental de las máquinas pertenecientes a esta generación era la utilización de válvulas de vacío electrónicas. Con ellas los tiempos de conmutación de un estado a otro eran elevados (varios microsegundos), y presentaban el problema de una baja fiabilidad. Los dispositivos se interconectaban mediante cables aislados. Por otro lado, problemas adicionales, eran el enorme tamaño, enorme gasto energético, y la necesidad de utilizar complejos sistemas de refrigeración. Los cálculos que se realizaban eran estrictamente numéricos, como la elaboración de tablas trigonométricas. No existían los lenguajes de programación, sólo el lenguaje máquina y tampoco existían los sistemas operativos. * Segunda Generación (1955-1964) Caracterizada por el empleo del transistor, desarrollado por Bardeen en 1948. Se construye TRADIC (Transistorized Digital Computer) por los laboratorios Bell en 1955, para el que se emplearon 800 transistores. Aparecen los circuitos impresos (placas de resina donde se insertan los componentes electrónicos, uniendo sus conexiones con pistas metálicas). Las computadoras se vuelven más fiables, y de menor volumen. Se utilizan núcleos de ferrita y tambores magnéticos en las memorias. Empiezan a aparecer lenguajes de programación, en principio, muy vinculados al hardware, como el lenguaje ensamlador (de bajo nivel), y posteriormente lenguajes que pueden considerarse como de alto nivel, como ALGOL, COBOL y FORTRAN. Sin embargo, la introducción de programas se realiza perforando las instrucciones en tarjetas, que luego eran introducidas al sistema. La ejecución de las tareas era secuencial, una cada vez, de principio a fin. Los programadores comienzan a desarrollar aplicaciones diversas, entre otras los primeros sistemas operativos que se denominaban supervisores o monitores. * Tercera Generación (1964-1972) Texas Instruments comienza a desarrollar circuitos integrados (placas de semiconductores con varios transistores en un mismo substrato de Silicio). Es la época de los circuitos integrados de pequeña y media escala, SSI (Small Scale Integration) y MSI (Medium Scale Integration), como bloques básicos de construcción. Y se emplean los circuitos impresos multicapa. Las memorias de semiconductores sustituyen a las de núcleos de ferrita.

Se normaliza y generaliza el empleo de lenguajes de programación de alto nivel, apareciendo muchos más de los anteriormente señalados, por ejemplo BASIC, PL-I, o Pascal. Comienzan a utilizarse otros métodos de Entrada/Salida, como teclados,

Page 38: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

38

monitores, etc. Además se desarrollan métodos y sistemas operativos para facilitar la compartición los recursos de una computadora, apareciendo incluso técnicas de procesamiento paralelo y de multiprogramación y tiempo compartido para permitir la ejecución simultanea de varias tareas. * Cuarta Generación (1972-actualidad) Se utilizan los circuitos LSI (Large Scale Integration), chips que contienen miles de transistores por centímetro cuadrado. Se desarrollan tanto los ordenadores personales, como máquinas de proceso paralelo. Los sistemas operativos y los lenguajes de programación continúan su desarrollo, adecuándose también al desarrollo del hardware. Ciertos lenguajes tienen enfoques distintos a los tradicionales, y se comienza a pensar en programación orientada a objetos, funcional o lógica, con el desarrollo de C++, Smalltalk, Prolog, o LISP, entre otros. Aparecen las redes de ordenadores LAN’s (Local Area Network) y WAN’s (Wide Area Network). Es una etapa de alza en el mundo de las telecomunicaciones. Intel crea su primer procesador en 1971, y se construyen sistemas operativos tan conocidos como el DOS para los procesadores de la serie 80x86 de Intel, utilizados para los PC’s, y el UNIX desarrollado para ordenadores basados en los procesadores Motorola 68xxx. * Quinta Generación (1990- ?) Surge como un proyecto del Ministerio de Industria Japonés. Se basa en los circuitos VLSI (Very Large Scale Integration) que ya empezaron a utilizarse en los ochenta. El principal objetivo de esta generación aparte del desarrollo de sistemas con arquitecturas masivamente paralelas u otros sistemas hardware, es la utilización de la Inteligencia Artificial (IA), cuyo principal objetivo es la modelización del conocimiento. Las dos principales áreas de la IA son los sistemas expertos y las redes neuronales. En los últimos tiempos las comunicaciones han sufrido un desarrollo impresionante, dando como resultado la interconexión global del planeta mediante la red Internet. Anteriormente ya indicamos una clasificación de los computadores atendiendo a su propósito, otra posible clasificación, y muy frecuente, se realiza atendiendo a la potencia o capacidad del computador, claro que en esta clasificación las fronteras son algo borrosas, debido sobre todo a la velocidad actual de cambio tecnológico:

• superordenadores: sus características fundamentales son su rapidez (más de 50 millones de instrucciones por segundo) y la precisión de sus cálculos (las palabras suelen ser de más de 64 bits). Además pueden contener varios procesadores trabajando en paralelo. Dos ordenadores clásicos pertenecientes a esta categoría son el CRAY-I y el CYBER 250.

• macroordenadores (mainframes) : su característica principal es que pueden ser

utilizados por gran cantidad de usuarios simultáneamente (de 64 a 200), típicamente (hasta ahora) tienen una longitud de palabra de 64 o más bits, y una capacidad mayor de 64 MBytes.

Page 39: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

39

• miniordenadores : son sistemas con palabras de más de 32 bits, capaces de soportar al menos 16 usuarios, con una memoria principal de más de 32 MB, pero que en realidad son sistemas microordenadores.

• estaciones de trabajo (workstations) : son equipos monousuario (aunque no

siempre) que operan a velocidades superiores a 2 MIPS (millones de instrucciones por segundo), su capacidad de memoria oscila entre 64 y 128 MB. Se utilizan habitualmente en aplicaciones científico-técnicas como el CAD (diseño asistido por ordenador). Se caracterizan por contener dispositivos aceleradores de tareas, bien de cálculo, o de E/S.

• ordenadores personales/profesionales o PC/PS : son microordenadores de

longitud de palabra de 16 ó 32 bits, su memoria principal varía entre 4 MB a 32 MB. Normalmente se usan en forma monousuario. Su característica fundamental es la gran cantidad de aplicaciones software diseñadas para ellos y la gran compatibilidad existente entre unos y otros.

Las tendencia actual de los sistemas informáticos es el diseño de sistemas abiertos. Estos se definen como aquellos sistemas cuyas especificaciones son admitidas, aprobadas y mantenidas por los organismos de estandarización y normalización existentes. Sus características fundamentales son:

• portabilidad : posibilidad de utilizar el mismo software en computadoras de diferentes fabricantes

• interoperabilidad : posibilidad de que ordenadores de diferente fabricante trabajen conjuntamente

• escalabilidad : posibilidad de utilizar el mismo software en diferentes tipos de computadoras, desde un microordenador hasta un mainframe.

Page 40: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

40

Problemas y cuestiones 1. Realiza las siguientes conversiones: 7,778 a hexadecimal B,A1h a binario 101,012 a decimal 2. Contesta breve y razonadamente (en su caso, con ejemplos) las siguientes cuestiones: • ¿cuál es la mejor forma de codificar números enteros?¿Por qué? • ¿qué es el ancho de palabra de un computador? • ¿qué es una microoperación? ¿qué es el segmento de código de un programa? • ¿qué es el juego de instrucciones de un procesador? 3. El procesador ficticio VE16 de Kiltorff dispone del siguiente juego de instrucciones en ensamblador: ENT dirección de memoria (entrada de un número desde el exterior a memoria) SAL dirección de memoria (salida de un número de memoria al exterior) ACUM dirección de memoria (asignar al acumulador un número almacenado en memoria) MEM dirección de memoria (almacena en memoria el contenido del acumulador) SUM dirección de memoria (sumar al acumulador un número almacenado en memoria)

Cada instrucción ocupa una palabra de memoria y se codifica como código máquina de la siguiente forma:

7 bits 9 bits código de operación dirección de memoria del operando

Los códigos correspondientes a cada operación son:

ENT: 0000001 SAL: 0000010 ACUM: 0000100 MEM: 0001000 SUM: 0010000

Se pide:

a) Realizar un programa en ensamblador que recoja dos números desde la entrada de datos y

envíe a la salida el doble de la suma de los dos números (p.e.: se lee de la entrada 2 y 3, y se envía a la salida 10).

Se tendrá en cuenta que el segmento de código empieza en la dirección 000hex y que el segmento de datos empieza en la dirección 100hex.

b) Realizar el mismo programa en código máquina, representándolo dentro del mapa de

memoria. c) Hallar la eficiencia y redundancia de la codificación con 7 bits utilizada para el código de

operación.

d) ¿Qué capacidad tiene la memoria RAM?. Justifica la respues 4. Supongamos que disponemos de un computador de 32 bits que sigue el modelo de Von Neumann. La

arquitectura funcional de este computador es idéntica a la estudiada en clase, es decir, dispone de memoria, acumulador A, CP, RI, RDM, RIM. En lo referente a su arquitectura a nivel de lenguaje máquina, dispone, entre otras más complejas, del juego básico de instrucciones: ENT d, SAL d, ACUM d, MEM d y SUM d (con significados idénticos a los estudiados en clase). El formato de instrucción y la codificación escogidos son :

Page 41: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

41

Código de Operación: 8 bits Dirección de Memoria: 24 bits ENT:00000001; SAL:00000010; ACUM:00000100; MEM:00001000; SUM:00010000; En este computador, y con este lenguaje ensamblador, se permite que el programador defina los segmentos de código y de datos para el programa que se éste implementando, mediante cuatro pseudoinstrucciones (que deben escribirse al principio del programa): #SC d ; para fijar la dirección de comienzo del segmento de código #TSC d; para fijar el tamaño del segmento de código #SD d ; para fijar la dirección de comienzo del segmento de datos #TSD d; para fijar el tamaño del segmento de datos Se pide: a) realizar un programa que resuelva el problema -2+2*A+C, siendo A y C dos números cualesquiera introducidos por teclado. b) representar el mapa de memoria del segmento de código y datos en binario c) eficiencia y redundancia de la representación escogida para el código de operación suponiendo que sólo dispone de las 5 instrucciones básicas. d) tamaño de la memoria RAM que puede ser utilizada directamente desde los programas escritos en este lenguaje, sin utilizar memoria virtual e) escribir una tabla en la que se observe para cada paso de la ejecución del siguiente programa los contenidos de CP, RI, ACUMULADOR, y PILA: 100 ENT 64 200 ENT 66 300 ENT 67 101 ENT 65 201 ACUM 64 301 ACUM 80 102 SUB 200 202 SUM 65 302 SUM 67 103 SAL 80 203 SUM 66 303 MEM 80 204 MEM 80 304 RET 205 SUB 300 206 RET Explica además que problema resuelve este programa y para qué se utiliza la PILA. 5. Supongamos que disponemos de un computador de 32 bits que sigue el modelo de Von Neumann. La

arquitectura funcional de este computador es idéntica a la estudiada en clase, es decir, dispone de memoria, acumulador A, CP, RI, RDM, RIM. En lo referente a su arquitectura a nivel de lenguaje máquina, dispone, entre otras más complejas, del juego básico de instrucciones: ENT d, SAL d, ACUM d, MEM d y SUM d (con significados idénticos a los estudiados en clase). El formato de instrucción y la codificación escogidos son :

Código de Operación: 8 bits Dirección de Memoria: 24 bits ENT:00000001; SAL:00000010; ACUM:00000100; MEM:00001000; SUM:00010000; En este computador, y con este lenguaje ensamblador, se permite que el programador defina los segmentos de código y de datos para el programa que se éste implementando, mediante cuatro pseudoinstrucciones (que deben escribirse al principio del programa): #SC d ; para fijar la dirección de comienzo del segmento de código #TSC d; para fijar el tamaño del segmento de código #SD d ; para fijar la dirección de comienzo del segmento de datos #TSD d; para fijar el tamaño del segmento de datos Se pide: a) realizar un programa que resuelva el problema de sumar 3 números enteros positivos b) representar el mapa de memoria del segmento de código y datos en binario c) eficiencia y redundancia de la representación escogida para el código de operación suponiendo que sólo dispone de las 5 instrucciones básicas. d) tamaño de la memoria RAM que puede ser utilizada directamente desde los programas escritos en este lenguaje, sin utilizar memoria virtual e) ¿cuál es el número más grande que teóricamente se podría representar en memoria?. Distinguir entre las representaciones en Módulo-Signo, Complemento a 1 y Complemento a 2

Page 42: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

42

f) escribir las microoperaciones que son necesarias para realizar la fase de búsqueda de cualquier instrucción. Detallar además las microoperaciones necesarias para realizar la instrucción de suma, una vez decodificada g) explica cómo se pueden resolver los problemas de computación relativos a la ejecución de un bloque de sentencias en más de una ocasión, y a la ejecución de un conjunto de instrucciones ya desarrollado. ¿Cómo se denominan estos problemas? h) escribir una tabla en la que se observe para cada paso de la ejecución del siguiente programa los contenidos de CP, RI, ACUMULADOR, y PILA: 100 ENT 64 200 ENT 66 300 ENT 67 101 ENT 65 201 ACUM 64 301 ACUM 80 102 SUB 200 202 SUM 65 302 SUM 67 103 SAL 80 203 SUM 66 303 MEM 80

204 MEM 80 304 RET 205 SUB 300 206 RET

Explica además que problema resuelve este programa y para qué se utiliza la PILA. 6. Supongamos que disponemos de un computador de 16 bits que sigue el modelo de Von Neumann. La

arquitectura funcional de este computador es idéntica a la estudiada en clase, es decir, dispone de memoria, acumulador A, CP, RI, RDM, RIM. En lo referente a su arquitectura a nivel de lenguaje máquina, dispone, entre otras más complejas, del juego básico de instrucciones: ENT d, SAL d, ACUM d, MEM d, SUM d y RES d (con significados idénticos a los estudiados en clase, salvo RES que realiza la diferencia entre el acumulador y lo contenido en la dirección d). El formato de instrucción y la codificación escogidos son :

Código de Operación: 8 bits Dirección de Memoria: 8 bits ENT:00000001; SAL:00000010; ACUM:00000100; MEM:00001000; SUM:00010000; RES:00100000 En este computador, y con este lenguaje ensamblador, se permite que el programador defina los segmentos de código y de datos para el programa que se éste implementando, mediante cuatro pseudoinstrucciones (que deben escribirse al principio del programa): #SC d ; para fijar la dirección de comienzo del segmento de código #TSC d; para fijar el tamaño del segmento de código #SD d ; para fijar la dirección de comienzo del segmento de datos #TSD d; para fijar el tamaño del segmento de datos Además se ha realizado una ampliación del juego de instrucciones, incluyendo la posibilidad de trabajar con enteros de 8 ó de 16 bits. Las nuevas instrucciones son: IZQDA Para un entero de 8 bits almacenado en el acumulador, desplaza 1 bit a la izqda todos sus bits, conviertiéndolo en un entero de 16 bits. DRCHA Para un entero de 8 bits almacenado en el acumulador, desplaza 1 bit a la derecha todos sus bits, conviertiéndolo en un entero de 16 bits. Ejemplo: Supongamos que tenemos el entero 2 cuya codificación en el acumulador es: (00000000 00000010), si se ejecuta IZQDA, en el acumulador tendremos: (00000000 00000100), o lo que es lo mismo 4. O sea, se multiplica el acumulador por dos. Se pide: a) realizar un programa que resuelva el problema 5*A, siendo A un número cualquiera introducido por teclado, y sin utilizar la instrucción SUM b) representar el mapa de memoria del segmento de código y datos en binario c) tamaño del mayor y menor entero que se puede representar en este computador d) tamaño de la memoria RAM que puede ser utilizada directamente desde los programas escritos en este lenguaje, sin utilizar memoria virtual e) explica para qué se utiliza la PILA, en un computador como el estudiado

Page 43: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

43

Test de Conocimientos 1. Indica cuál de las siguientes afirmaciones es incorrecta: __ en un sistema de numeración posicional los símbolos cambian de valor dependiendo de su

situación __ el sistema de numeración romano no es posicional __ el sistema de numeración binario no es posicional __ ninguna de las anteriores es incorrecta, excepto ésta 2. Si nos encontramos escrito el número 17, ¿en qué base de las siguientes no puede estar

representado? __ en base 3 __ en base 2 __ en base 6 __ en ninguna de las anteriores 3. El número 127)10 equivale en base 2 al __ 01111111 __ 00011111 __ 01110111 __ 10000000 4. ¿Qué afirmación es falsa?. La palabra de memoria... __ es la unidad de lectura/escritura a memoria __ almacena un conjunto de bits __ es accedida para lectura/escritura dando su dirección __ su ancho suele coincidir con el ancho del bus de direcciones 5. El compilador de C, DJGPP codifica los números enteros en C-2 de 32 bits. El rango de

representación de números enteros es en este caso: __ [-232, 232-1] __ [-231, 231-1] __ [-233, 233-1] __ [-233, 233-1] 6. Si codificamos la cadena de caracteres "HOLA MUNDO" según la tabla ASCII, y añadimos

terminador. ¿Cuántos bytes de memoria serán necesarios? __ 10 __ 9 __ 11 __ 5 7. Para representar números reales en el ordenador, lo mejor es: __ utilizar el módulo-signo __ utilizar el complemento a dos __ utilizar el formato en coma flotante __ ninguna de las anteriores es correcta 8. Indica cuál de las siguientes afirmaciones es correcta: __ los números enteros se representan en binario puro __ en los ordenadores no se producen errores al representar números enteros __ en los ordenadores no se producen errores al representar números reales __ calcular la eficiencia de un código se realiza para detectar posibles errores 9. Indica cuál de las siguientes afirmaciones es incorrecta: __ los números se pueden representan en los ordenadores en código ASCII __ si se transmiten códigos redundantes la velocidad de transmisión será mejor __ para conseguir la paridad par de un código se añade un bit para que el número de unos sea par __ si se transmiten códigos redundantes la velocidad de transmisión será peor

Page 44: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

44

10. Si en un ordenador sencillo (como el que hemos estudiado) se especifica ENT 64, significa: __ que el segmento de código comienza en la dirección 64 __ que el segmento de datos comienza en la dirección 64 __ que el ancho de palabra es 64 __ ninguna de las anteriores es correcta 11. Si el formato de instrucción en un ordenador es de 16 bits, 8 para el código de operación y

8 para la dirección de memoria directamente involucrada en la ejecución, significa: __ que el ordenador tiene un ancho de palabra de 64 bits __ que el segmento de código tiene 16 bits __ que el segmento de datos tiene 28 palabras __ que desde cualquier programa podemos referenciar como máximo 28 palabras 12. Si en un ordenador sencillo (como el que hemos estudiado) se está ejecutando ENT 64: __ en el registro de instrucción estará en binario la dirección 65 __ en el registro contador de programa estará en binario la dirección 65 __ en la dirección 64 se encontrará la codificación en binario de la instrucción ENT __ ninguna de las anteriores es correcta 13. Según el modelo de Von Neuman la memoria interna de un ordenador contiene __ instrucciones ejecutables __ programas y algoritmos __ instrucciones y programas __ instrucciones y datos 14. ¿Qué afirmación es correcta? __ El ancho del bus de datos siempre es menor que el de direcciones. __ El ancho del bus de datos debe coincidir con el ancho de palabra. __ Con el ancho del bus de datos se obtiene el tamaño máximo de la memoria. __ Por el bus de direcciones circula la información que se almacena en memoria. 15. Indica qué afirmación es correcta (para un ordenador que siga el modelo que hemos

estudiado): __ la fase de búsqueda de todas las instrucciones es idéntica __ cada instrucción máquina conlleva la ejecución de las mismas microoperaciones __ los programas son las únicas entidades que se almacenan en memoria principal __ todas las instrucciones tardan lo mismo en ejecutarse 16. Si el código ASCII del carácter '1' se representa como el número 01111000)2 . Si

almacenamos la cadena "11" se representaría como: __ 16 bits con valor 1011) 2 __ 16 bits con valor 0111100001111000) 2 __ 2 bytes + un terminador __ ninguna es correcta 17. El número 128)10 equivale en base 2 al __ 01111111 __ 00011111 __ 01110111 __ 10000000 18. Indica que afirmación es verdadera __ el registro contador de programa almacena la dirección de la siguiente instrucción a ejecutar __ el registro contador de programa almacena la dirección de la instrucción que se está ejecutando __ el registro contador de programa almacena la instrucción que se está ejecutando __ el registro contador de programa almacena la instrucción siguiente a la que se está ejecutando 19. ¿Qué afirmación es verdadera?

Page 45: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

45

__ la palabra de memoria coincide con el ancho del bus de direcciones. __ por el bus de direcciones circula la información que se almacena en memoria. __ la memoria es accedida para lectura/escritura dando una dirección. __ ninguna es verdadera. 20. En un determinado ordenador se codifican los enteros en C-2 de 4 bits. El menor y mayor

número que se pueden representar son: __ -16 y 15 __ -8 y 8 __ -16 y 16 __ -8 y 7 21. Indica qué afirmación es correcta: __ los computadores de la 3ª generación eran más eficientes que los de la 4ª __ cualquier computador de la 1ª generación era digital __ la base de cualquier cambio de generación ha sido el software __ un computador actual siempre dispone de un dispositivo de memoria 22. Indica qué afirmación es correcta: __ la codificación de números en binario puro es más eficiente que en ASCII __ la codificación de números en binario puro es menos eficiente que en ASCII __ la codificación de números en binario puro es, a veces, más eficiente que en ASCII __ ninguna es correcta, excepto ésta 23. Indica qué afirmación es correcta: __ la codificación de los enteros en C-1 es más eficiente que en C-2 __ la codificación de los enteros en C-2 es menos eficiente que en modulo-signo __ la codificación de los enteros en C-1 es más eficiente que en modulo-signo __ la codificación de los enteros en C-2 es más eficiente que en C-1 24. Indica qué afirmación no es correcta: __ con UNICODE se pueden representar hasta 216 símbolos diferentes __ el código ASCII es el ideal para realizar cualquier operación matemática __ ASCII es un código de 8 bits y UNICODE de 16 __ todas son correctas 25. Indica qué afirmación es correcta: __ el contador de programa almacena la instrucción que está siendo ejecutada __ el contador de programa almacena la instrucción siguiente a ejecutar __ el contador de programa es un bit __ ninguna es correcta, excepto ésta 26. Indica qué afirmación es correcta: __ el número de instrucciones de que puede disponer un computador es infinito __ el número de instrucciones de que puede disponer un computador depende del código de operación __ el número de instrucciones de que puede disponer un computador depende del segmento de código __ ninguna es correcta, excepto ésta

Page 46: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

46

27. Para resolver 1000*N, siendo N un número introducido por teclado, según el computador sencillo que hemos estudiado:

__ necesitamos instrucciones de salto a subrutinas (y retorno) __ necesitamos que el microprocesador disponga de una pila __ necesitamos instrucciones de salto condicional que permitan realizar la iteración __ nos basta con las instrucciones ENT, SAL, ACUM, MEM y SUM 28. El componente fundamental de un computador actual es: __ el byte __ el registro __ el biestable __ ninguna es correcta, excepto ésta

29. ¿Cuál de las siguientes afirmaciones no es correcta? __ el paso de la generación de computadores primera a la cuarta, fue debido al hardware __ los avances del hardware motivaron el desarrollo de la quinta generación de computadoras __ en la primera generación de computadoras el componente básico fue la válvula de vacío __ ninguna es correcta, excepto ésta

30. Con 8 bits pueden representarse ... __ 8 símbolos diferentes __ 255 símbolos diferentes __ 28-1 símbolos diferentes __ 256 símbolos diferentes

31. Con 4 bits el rango de representación de números enteros en C-2 es: __ [ -24, 24 ] __ [ -24, 24 - 1] __ [ -23, 23 - 1] __ [ -23- 1, 23 ]

32. ¿Cuánto vale en el sistema hexadecimal la suma A+2? __ C __ 12 __ 11 __ ninguna es correcta, excepto ésta

33. ¿Cuál es la representación de enteros más utilizada en los computadores actuales? __ la representación en coma flotante __ ASCII y UNICODE __ Módulo - Signo __ todas son falsas, excepto ésta

34. Indica cuál de las siguientes afirmaciones es correcta: __ cuando se representa un número real en un computador nunca se comete error __ una codificación de 16 bits para el código ASCII tiene una eficiencia igual a 8 / 216 __ un código de paridad par consiste en incluir un 1 para que el total de unos sea par __ ninguna es correcta, excepto ésta

35. Indica cuál de las siguientes afirmaciones es incorrecta: __ el Bus de Direcciones no tiene porque tener el mismo número de líneas que el de Datos __ la memoria caché se dispone entre la RAM y los puertos de E/S del computador __ la longitud en bits de una fila de memoria se denomina Ancho de Palabra __ en una memoria ROM no se puede modificar el contenido de una fila 36. El número 511(dec) en binario es __ 10101010 __ 00000000 __ 111111111 __ ninguno de los anteriores

Page 47: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

47

37. ¿Qué lenguaje es más legible? __ ensamblador __ máquina __ español __ ninguna de las anteriores es correcta 38. Indica cuál de las siguientes es una característica fundamental de la 5ª generación de

computadoras: __ utilizar el lenguaje C de programación __ circuitos LSI __ seguir el modelo de Von Neumann __ utilizar técnicas de Inteligencia Artificial y Redes Neuronales Artificiales 39. ¿Cuál de las siguientes afirmaciones es correcta? __ los caracteres ASCII se codifican con 5 bits __ ‘1’ es un caracter __ con 5 bits se pueden codificar hasta 25 caracteres distintos __ los caracteres no se pueden codificar 40. ¿Qué secuencia de bits contiene error de paridad par? __ 00 __ 10 __ 11 __ ninguna de las anteriores 41. ¿Qué afirmación es correcta? __ con 3 bits en C-2 se pueden representar 8 numeros distintos __ con 3 bits codificados en C-1 se pueden representar 8 números distintos __ con 2 bits codificados en Módulo-Signo se pueden representar 4 numeros distintos __ todas son correctas 42. El número 25510 es el número __ 10016 __ FF16 __ 1008 __ ninguno es correcto 43. En base 4 y utilizando 2 dígitos, ¿cuántos números distintos se pueden representar como

máximo? __ 16 __ 6 __ 8 __ ninguno es correcto 44. Para representar números con signo lo mejor es utilizar siempre __ Complemento a 1 __ Complemento a 2 __ Módulo y Signo __ ninguna de las anteriores 45. La codificación de la cadena “-12.54” utilizando código ASCII requiere __ un bit por palabra __ un bit por caracter __ 4 bytes + 1 bit de signo __ 6 bytes + terminador 46. ¿Cuál de las siguientes secuencias contiene error de paridad par? __ 010101010101010101010101 __ 000000000000000000000000 __ 11111111111111111111111 __ ninguna de las anteriores

Page 48: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

48

47. Utilizando 5 bits para representar 5 instrucciones, la eficiencia y redundancia son: __ eficiencia: 5 redundancia: 1/5 __ eficiencia: 25/32 redundancia: 1-25/32 __ eficiencia: 1-25/32 redundancia: 25/32 __ eficiencia: 5/32 redundancia: 1-5/32 48. En un computador con un ancho de palabra y bus de datos de 32 bits se necesitan __ 1K accesos para transferir 4KBytes de datos __ 2K accesos para transferir 4KBytes de datos __ 4K accesos para transferir 4KBytes de datos __ ninguna de las anteriores 49. Un computador con un bus de direcciones de 10 bits puede acceder a una memoria física

de __ 10K palabras como máximo __ 1K palabras como máximo __ 1024K palabras como máximo __ ninguna de las anteriores 50. Indica qué afirmación es correcta: __ 2 en binario puro se codifica 11 __ 2 en ASCII se codifica 10 __ 2 en hexadecimal se codifica 2 __ ninguna es correcta, excepto ésta 51. Indica qué afirmación no es correcta: __ con UNICODE se pueden representar hasta 216 símbolos diferentes __ el código ASCII es el idela para realizar cualquier operación matemática __ ASCII es un código de 8 bits y UNICODE de 16 __ todas son correctas 52. Indica qué afirmación es correcta: __ el número de cifras significativas no influye en los resultados de las operaciones matemáticas __ es imposible que se produzcan errores en el transporte de información __ el bit de paridad se utiliza para comprobar si un número es par o impar __ todas son falsas, excepto ésta 53. Indica qué afirmación no es correcta: __ la fase de búsqueda de una instrucción es idéntica para todas __ después de buscar una instrucción siempre se debe incrementar el contador de programa __ la fase de ejecución de una instrucción es diferente para cada una __ todas son correctas 54. Para reutilizar un trozo de código en ensamblador que ya hayamos desarrollado... __ necesitamos instrucciones de salto a subrutinas (y retorno) __ necesitamos que el microprocesador disponga de una pila __ necesitamos instrucciones de salto condicional que permitan realizar la iteración __ nos basta con las instrucciones ENT, SAL, ACUM, MEM y SUM

Page 49: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

49

55. Un número entero en C se representa internamente con dos bytes, ¿cuál es el número entero mayor que se puede representar?

__ 32768 __ 32767 __ 65536 __ 65535 56. ¿Cuál de los siguientes números tiene más precisión? __ 0.0130 __ 4565.651 __ 1.0010000 __ 3 57. Un código muy redundante... __puede ser muy eficiente __es poco eficiente __es muy eficiente __ ninguna de las anteriores es correcta, excepto ésta 58. Si utilizamos una codificación de 4 bits para representar los cuatro primeros caracteres del

alfabeto húngaro, ¿qué eficiencia tiene el código? __ 0.25 __ 12 __ 4 __ ninguna de las anteriores 59. Según el modelo de arquitectura de la CPU que hemos estudiado, ¿qué tamaños de

registros son coherentes? __ ACUM=8 bits; RDM=8 bits; RIM=16 bits; CP=16 bits __ ACUM=16 bits; RDM=16 bits; RIM=8 bits; CP=8 bits __ ACUM=8 bits; RDM=16 bits; RIM=8 bits; CP=16 bits __ ninguno de los anteriores 60. El número 11001001 se encuentra representado en coma flotante de manera que el bit de

mayor peso es el signo, los tres siguientes son el exponente en binario natural sin exceso, y los restantes la mantisa en binario natural sin exceso.¿Qué numero es en decimal?

__ -9*24 __ -9.0 __ -0.9*24 __ ninguno de los anteriores 61. Si representamos el número 2.5 con una sola cifra decimal significativa y lo llamamos A,

¿qué error se comete en la expresión (A+A)*A2? __ 0.0625 __ 15.25 __ 15 __ ninguna de las anteriores excepto ésta 62. Un biestable ... __ equivale a una palabra de memoria __ tiene el mismo ancho de una palabra __ es un byte __ ninguna de las anteriores 63. Un computador actual se caracteriza por ... __ utilizar tecnología LSI __ almacenar los programas en memoria __ utilizar inteligencia artificial __ ser de la quinta generación 64. Para representar un alfabeto de 36 caracteres, ¿cuántos bits se necesitan como mínimo?

Page 50: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

50

__ 5 __ 6 __ 8 __ 16 65. Un código de 6 bits que se utilice para representar el alfabeto español (28 caracteres), ¿qué

eficiencia tiene? __ 0.437 __ 0.0437 __ 2.2 __ 0.22 66. El RIM tiene que tener de ancho (según lo que hemos estudiado) ... __ el doble del bus de datos __ el mismo que el bus de direcciones __ un byte __ el de la palabra 67. El RDM (según lo que hemos estudiado) ... __ tiene el mismo ancho que el bus de datos __ tiene el mismo ancho que el bus de direcciones __ es un decodificador 8-256 __ ninguna de las anteriores es correcta 68. El ancho de palabra... __ coincide con la capacidad de la memoria __ casi siempre es de 2 bytes __ coincide con el ancho del bus de direcciones __ es el número de bits que se leen/escriben de memoria en un acceso 69. La utilización de técnicas de Inteligencia Artificial (IA) es una característica de la generación

de computadores... __ 5ª __ 4ª __ 3ª __ ninguna de las anteriores es correcta 70. Representa el número 75E+02 en binario natural

71. Calcula la eficiencia y redundancia de una codificación en la que se utilizan 8 bits para

representar 64 números.

72. Según el modelo de computador estudiado en estos apuntes, ¿qué longitudes de registros

son coherentes? __ RIM de 8 bits y CP de 8 bits __ RDM de 16 bits y Acumulador de 16 bits __ RIM de 16 bits y Acumulador de 16 bits __ ninguna de las anteriores es correcta

Page 51: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

51

73. ¿Cuántos bits (como mín.) tiene que tener el Bus de Direcciones en un ordenador que tiene una memoria de 300 bytes (suponiendo 1 palabra=1byte)?

__ 8 __ 9 __ 16 __ 32 74. El código Gray ... __ es idéntico al BCD __ es un código detector de errores __ es excelente para los sistemas digitales __ ninguna es correcta, excepto ésta 75. ¿Cuál es el ancho de palabra (en bits) de una computadora en la que en cada dirección de

memoria caben 2 caracteres ASCII? __ 24 __ 16 __ 32 __ ninguna es correcta, excepto ésta 76. ¿Cuántas líneas debe tener como mínimo en su bus de direcciones una computadora que

siga un esquema de memoria direccionable por palabra y que tenga una capacidad de 4MB?

__ 512 __ 20 __ 32 __ 22 77. Si en el registro de instrucciones, de un determinado procesador, se está ejecutando la

instrucción número 4 de un programa, ¿qué contiene el registro contador de programa? __ la instrucción número 5 __ la dirección de la instrucción número 4 __ la dirección de la instrucción número 5 __ la dirección de la instrucción siguiente 78. Si el Registro de Intercambio de Memoria (en una máquina de Von Neumann) hay 32

biestables... __ el bus de datos tiene 16 líneas y el de direcciones también __ el bus de direcciones tiene 32 líneas __ el bus de datos es de 32 líneas y el de direcciones también __ ninguna de las anteriores 79. Un computador con un ancho de palabra de 32 bits __ tiene un bus de direcciones de 4 bytes __ tiene un bus de datos de 4 bytes __ tiene el mismo ancho que el bus de direcciones del Pentium __ puede transferir datos a una velocidad 4 veces mayor 80. El bit de paridad, __ es el noveno bit del código ASCII __ indica cuantos ceros hay en un código binario __ indica cuantos unos hay en un código binario __ se utiliza para la detección de errores

Page 52: Fundamentos de Informática - UTMjahdezp/archivos prope/intro.pdf · multimedia, o el desarrollo y utilización de redes de computadoras que faciliten el acceso a la información

Fundamentos de Informática

52

Soluciones a los Test de Conocimientos 0 1 2 3 4 5 6 7 8 9 0 - C D A D B C C B B 1 D D B D B A C D A C 2 D D A D B D B C C B 3 D C A D C B C C D B 4 B A B A B D C D A C 5 C D D D A B D B A C 6 C B D B B A D B D A 7 *1 *2 C B C B D D D B 8 D *1: 0 0001 1101 0100 1100 = 1D4CH *2: 0.25 - 0.75 Bibliografía [AG95] Alcalde, E; García, M. Informática Básica. 2ª Edición. Editorial McGraw-Hill, 1995. [Bis89] Bishop, P. Conceptos de Informática. Editorial Anaya-Multimedia, 1989. [HB88] Hwang, K; Briggs, F. Arquitectura de Computadoras y Procesamiento Paralelo. Editorial

Mc.Graw-Hill, 1988. [HP94] Hennessy, J.; Patterson, D. Arquitectura de Computadores. Un enfoque cuantitativo.

Editorial McGraw-Hill, 1994. [Nor95] Norton, P. Introducción a la Computación. Editorial McGraw-Hill, 1995. [PLT95] Prieto, A; Lloris, A; Torres, J.C. Introducción a la Informática. 2ª Edición. Editorial

McGraw-Hill, 1995. [Tuc94] Tucker, A; Cupper, R; Bradley, W; Garnick, D. Fundamentos de Informática. Editorial

cGraw-Hill, 1994. [Tur96] Turias Domínguez, Ignacio. Conceptos de Estructura de Computadoras y Sistemas

Operativos. Dpto. Lenguajes y Sistemas Informáticos. UCA, 1996. [Wal87] Walker, R.S. A fondo: Informática Básica. Editorial Anaya, 1987.