ACTIVIDAD II ARQUITECTURA DE COMPUTADORES SANTOS MAURICIO LONDOÑO CODIGO: 1.121.829.886 Trabajo presentado al Ing. HAIMER GUTIERREZ UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD FACULTAD DE CIENCIAS BASICAS E INGENIERIAS INGENIERIAS DE SISTEMAS, QUINTO SEMESTRE ACACIAS 2007 ACTIVIDAD II ARQUITECTURA DE COMPUTADORES Trabajo presentado al Ing. HAIMER GUTIERREZ UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD FACULTAD DE CIENCIAS BASICAS E INGENIERIAS INGENIERIAS DE SISTEMAS, QUINTO SEMESTRE ACACIAS 2007 ACTIVIDAD 2 TRABAJO GRUPAL 1. DEFINA QUE ES UN COMPUTADOR Y CUALES PRINCIPALES FUNCIONES QUE DEBE REALIZAR SON LAS Rta: Un ordenador es una máquina capaz de procesar información y realizar cálculos complejos. Los primeros ordenadores requerían grandes conocimientos de informática, mientras que ahora basta con presionar un botón para imprimir un texto, lanzar un juego, abrir un fichero... En un principio los ordenadores no disponían de pantalla o monitor. Los resultados de los cálculos aparecían impresos en papel; hoy las posibilidades son muy variadas: monitores, impresoras, altavoces, línea telefónica... Los primeros ordenadores solo servían para realizar cálculos matemáticos, pero en la actualidad se usan con fines muy variados. En cualquier caso, el esquema de funcionamiento de un ordenador siempre es el mismo: A. Primero hay que introducir datos en el ordenador: se puede hacer a mano, mediante el teclado, o introduciéndolos desde algún soporte, como un disquete o un CD-ROM. B. A continuación, el ordenador procesa los datos. C. Por último, el ordenador nos proporciona los resultados. Existen diferentes opciones para mostrar los resultados: de forma visual, en la pantalla o impresa sobre papel por medio de una impresora, o bien información grabada en algún soporte (disco duro, disquete, CD-RW...). 2. QUE ES LA UNIDAD DE CONTROL Y CUALES SON SUS PRINCIPALES FUNCIONES UNIDAD DE CONTROL Es el centro nervioso del ordenador, ya que desde ella se controlan y gobiernan todas las operaciones. Cómo funciones básicas tiene: tomar las instrucciones de memoria decodificar o interpretar las instrucciones ejecutar las instrucciones ( tratar las situaciones de tipo interno (inherentes a la propia CPU) y de tipo externo (inherentes a los periféricos) Para realizar su función, la unidad de control consta de los siguientes elementos: Contador de programa Registro de instrucciones Decodificador Reloj Secuenciador Instrucciones de control. Son instrucciones especiales o de control que actúan sobre el propio microprocesador. Permiten acceder a diversas funciones, como por ejemplo activar o desactivar las interrupciones, pasar órdenes al coprocesador matemático, detener la actividad del microprocesador hasta que se produzca una interrupción, etc. 3. QUE SON LAS INSTRUCCIONES MÁQUINA Cómo funcionan las computadoras aunque las tecnologías empleadas en las computadoras digitales han cambiado mucho desde que aparecieron los primeros computadores en los años 40, la mayoría todavía utilizan la arquitectura von Neumann, propuesta a principios de los años 1940 por John von Neumann. La arquitectura von Neumann describe un computador con 4 secciones principales: la unidad lógica y aritmética (ALU), la unidad de control, la memoria, y los dispositivos de entrada y salida (E/S). Estas partes están interconectadas por un conjunto de cables denominados buses. En este sistema, la memoria es una secuencia de celdas de almacenamiento numeradas, donde cada una es un bit o unidad de información. La instrucción es la información necesaria para realizar lo que se desea con la computadora. Las «celdas» contienen datos que se necesitan para llevar a cabo las instrucciones, con la computadora. En general, la memoria puede ser rescrita varios millones de veces; se parece más a una libreta que a una lápida. Vista expandida de una computadora 1: Monitor 2: Placa base 3: Procesador 4: Puertos ATA 5: Memoria principal (RAM) 6: Placas de expansión 7: Fuente eléctrica 8: Unidad de almacenamiento óptico 9: Disco duro 10: Teclado 11: Ratón Disco duro Monitor El tamaño de cada celda y el número de celdas varía mucho de computadora a computadora, y las tecnologías empleadas para la memoria han cambiado bastante; van desde los relés electromecánicos, tubos llenos de mercurio en los que se formaban los pulsos acústicos, matrices de imanes permanentes, transistores individuales a circuitos integrados con millones de celdas en un solo chip. Con los circuitos electrónicos se simula las operaciones lógicas y aritméticas, se pueden diseñar circuitos para que realicen cualquier forma de operación. La unidad lógica y aritmética, o ALU, es el dispositivo diseñado y construido para llevar a cabo las operaciones elementales como las operaciones aritméticas (suma, resta), operaciones lógicas (Y, O, NO), y operaciones de comparación. En esta unidad es en donde se hace todo el trabajo computacional. La unidad de control sigue la dirección de las posiciones en memoria que contienen la instrucción que la computadora va a realizar en ese momento; recupera la información poniéndola en la ALU para la operación que debe desarrollar. Transfiere luego el resultado a ubicaciones apropiadas en la memoria. Una vez que ocurre lo anterior, la unidad de control va a la siguiente instrucción (normalmente situada en la siguiente posición, a menos que la instrucción sea una instrucción de salto, informando a la computadora de que la próxima instrucción estará ubicada en otra posición de la memoria). Los dispositivos E/S sirven a la computadora para, obtener información del mundo exterior y devolver los resultados de dicha información. Hay una gama muy extensa de dispositivos E/S como los teclados, monitores y unidades de disco flexible o las cámaras web. Las instrucciones que acabamos de discutir, no son las ricas instrucciones del ser humano. Una computadora sólo se diseña con un número limitado de instrucciones bien definidas. Los tipos de instrucciones típicas realizadas por la mayoría de las computadoras son como estos ejemplos: "...copia los contenidos de la posición de memoria 123, y coloca la copia en la posición 456, añade los contenidos de la posición 666 a la 042, y coloca el resultado en la posición 013, y, si los contenidos de la posición 999 son 0, tu próxima instrucción está en la posición 345...". Las instrucciones dentro de la computadora se representan mediante números. Por ejemplo, el código para copiar puede ser 001. El conjunto de instrucciones que puede realizar una computadora se conoce como lenguaje de máquina o código máquina. En la práctica, no se escriben las instrucciones para las computadoras directamente en lenguaje de máquina, sino que se usa un lenguaje de programación de alto nivel que se traduce después al lenguaje de la máquina automáticamente, a través de programas especiales de traducción (intérpretes y compiladores). Algunos lenguajes de programación representan de manera muy directa el lenguaje de máquina, como los ensambladores (lenguajes de bajo nivel) y, por otra parte, los lenguajes como Java, se basan en principios abstractos muy alejados de los que hace la máquina en concreto (lenguajes de alto nivel). Las computadoras actuales colocan la ALU y la unidad de control dentro de un único circuito integrado conocido como Unidad central de procesamiento o CPU. Normalmente, la memoria de la computadora se sitúa en unos pocos circuitos integrados pequeños cerca de la CPU. La gran mayoría de la masa de la computadora está formada por sistemas auxiliares (por ejemplo, para traer electricidad) o dispositivos E/S. Algunas computadoras más grandes se diferencian del modelo anterior, en un aspecto importante, porque tienen varias CPU y unidades de control que trabajan al mismo tiempo. Además, algunas computadoras, usadas principalmente para la investigación, son muy diferentes del modelo anterior, pero no tienen muchas aplicaciones comerciales. Por lo tanto, el funcionamiento de una computadora es en principio bastante sencillo. La computadora trae las instrucciones y los datos de la memoria. Se ejecutan las instrucciones, se almacenan los datos y se va a por la siguiente instrucción. Este procedimiento se repite continuamente, hasta que se apaga la computadora. Los Programas de computadora (software) son simplemente largas listas de instrucciones que debe ejecutar la computadora, a veces con tablas de datos. Muchos programas de computadora contienen millones de instrucciones, y muchas de esas instrucciones se ejecutan rápidamente. Una computadora personal moderna (en el año 2003) puede ejecutar de 2000 a 3000 millones de instrucciones por segundo. Las capacidades extraordinarias que tienen las computadoras no se deben a su habilidad para ejecutar instrucciones complejas. Las computadoras ejecutan millones de instrucciones simples diseñadas por personas inteligentes llamados programadores. Los buenos programadores desarrollan grupos de instrucciones para hacer tareas comunes (por ejemplo, dibujar un punto en la pantalla) y luego ponen dichos grupos de instrucciones a disposición de otros programadores. En la actualidad, podemos tener la impresión de que las computadoras están ejecutando varios programas al mismo tiempo. Esto se conoce como multitarea, siendo más usado el segundo término. En realidad, la CPU ejecuta instrucciones de un programa y después tras un breve periodo de tiempo, cambian a un segundo programa y ejecuta algunas de sus instrucciones. Esto crea la ilusión de que se están ejecutando varios programas simultáneamente, repartiendo el tiempo de la CPU entre los programas. Esto es similar a la película que está formada por una sucesión rápida de fotogramas. El sistema operativo es el programa que controla el reparto del tiempo generalmente. El sistema operativo es una especie de caja de herramientas lleno de rutinas. Cada vez que alguna rutina de computadora se usa en muchos tipos diferentes de programas durante muchos años, los programadores llevarán dicha rutina al sistema operativo, al final. El sistema operativo sirve para decidir, por ejemplo, qué programas se ejecutan, y cuándo, y qué fuentes (memoria o dispositivos E/S) se utilizan. El sistema operativo tiene otras funciones que ofrecer a otros programas, como los códigos que sirven a los programadores, escribir programas para una máquina sin necesidad de conocer los detalles internos de todos los dispositivos electrónicos conectados. En la actualidad se están empezando a incluir dentro del sistema operativo algunos programas muy usados debido a que es una manera económica de distribuirlos. No es extraño que un sistema operativo incluya navegadores de internet, procesadores de texto, programas de correo electrónico, interfaces de red, reproductores de películas y otros programas que antes se tenían que conseguir aparte. 4. CUALES SON LAS CONDICIONES QUE UN JUEGO INSTRUCCIONES DE UN COMPUTADOR DEBE CUMPLIR DE El computador responde a una estructura mecánica capaz de desarrollar actividades que, de hacerlas el hombre, demandarían el uso de capacidades intelectuales. La idea de computador como Cerebro Electrónico es adecuada si se entiende como un mecanismo que debe ser programado para cada tarea que se quiere realizar. Una computadora no debe considerarse como una máquina capaz de realizar únicamente operaciones aritméticas, aunque éste fue su primera aplicación real, es capaz de realizar trabajos con símbolos, números, textos, imágenes, sonidos y otros, describiendo así el concepto de multimedia. La gran velocidad de operación es la más brillante característica de la computadora. La velocidad de un computador se mide, en nuestros días, en nanosegundos y picosegundos, equivalentes a una mil millonésima y una billonésima parte de un segundo respectivamente. 5. EXPLICAR LOS PRINCIPALES GRUPOS DE MÁQUINA SEGÚN LA FUNCIÓN QUE REALIZAN INSTRUCCIONES Funcionamiento Para que un programa se pueda ejecutar ( RUN ) , debe ser situado en la memoria en una operación que se llama carga ( LOAD ) del programa; posteriormente cualquier dato a procesar por el programa se debe llevar a la memoria mediante unas instrucciones . La memoria central de una computadora es una zona de almacenamiento organizada en miles de millones de unidades de almacenamiento individual ( celdas de memoria ). La unidad elemental de memoria se llama byte y almacena un carácter de información. 1 bits guarda, almacena 1 digito, que puede ser: 1 0 un uno (1) un cero (0) . Un carácter de un dato alfanumérico se almacenan en un byte. Ejemplo la palabra subproyecto . S U B P R O Y E C T O Los datos numéricos pueden ocupar 2, 4 o 8 bytes consecutivos, según sea su tipo valor declaración ejemplo simple precisión ! Área! ; presión! ; precio! doble precisión # Masatomica#; energia# entero % Etapas% ; correas% entero largo & Un byte, tiene asociado una dirección y su contenido; permiten su acceso para almacenarlo o recuperarlo 6. ENUMERAR LOS MODOS DE DIRECCIONAMIENTO O MODOS DE ACCESO A LA MEMORIA EN EL MICROPROCESADOR. Modos de direccionamiento más usuales En los párrafos siguientes se irán describiendo los modos de direccionamiento más frecuentes. La mayoría de estos modos son comunes a muchas máquinas, sin embargo, hay otros que sólo se usan en determinados procesadores. - Direccionamiento implícito En este modo, llamado también inherente, el operando se especifica en la misma definición de la instrucción. El modo implícito se usa para hacer referencia a operandos de dos tipos: - Registros: En el caso de que el código de operación se refiera en particular a un registro. - Operandos en la pila: En el caso de que la operación se realice siempre sobre el dato situado en la cima de pila. El primer caso es típico de las organizaciones de un solo acumulador. Generalmente en un ordenador de este tipo todas las instrucciones que actúan sobre el acumulador utilizan direccionamiento implícito. En el segundo caso están la mayoría de las instrucciones de los ordenadores con organización de pila. Estas operaciones llevan implícitos los operandos que son los elementos de la cima de pila. Esto se debe a que en este tipo de máquinas la mayoría de las operaciones no tienen campos de dirección. También están en este caso las instrucciones PUSH y POP de la mayoría de los ordenadores cuyo operando implícito también es, como en el caso anterior, la cima de pila. - Direccionamiento inmediato (o literal) En este modo es el operando el que figura en la instrucción no su dirección. En otras palabras el campo de operando contiene él mismo, sin transformación alguna, la información sobre la que hay que operar. Este modo es útil para inicializar registros o palabras de memoria con un valor constante. - Direccionamiento directo por registro Se mencionó anteriormente que el campo de dirección de una instrucción puede especificar una palabra de memoria o un registro M procesador. Cuando se da este último caso se dice que el operando está especificado con direccionamiento directo por registro, en tal caso, el operando reside en uno de los registros del procesador que es seleccionado por un campo de registro de k bits en la instrucción. Un campo de k bits puede especificar uno de 2k registros. Este modo es típico de los ordenadores con organización de registros de uso general. Las ventajas de este modo son: - El acceso a los registros es muy rápido, por tanto el direccionamiento por registro debe usarse en las variables que se usen con más frecuencia para evitar accesos a memoria que son más lentos, un ejemplo muy típico del uso de este direccionamiento son los índices de los bucles. - El número de bits necesarios para especificar un registro es mucho más pequeño que el necesario para especificar una dirección de memoria, esto es debido a que el número de registros del procesador es muy pequeño comparado con el número de direcciones de memoria. Sin embargo, hay que tener en cuenta que en los ordenadores modernos el número de registros ha aumentado considerablemente. - Direccionamiento directo (o absoluto) Este es el modo de direccionamiento más sencillo. El campo de dirección no necesita transformación alguna para dar la dirección efectiva, es decir la función que transforma el campo de operando en la dirección efectiva es la identidad. Esto significa que el campo de operando es ya la dirección efectiva. Este direccionamiento sólo se usa en ordenadores pequeños en que el programa siempre se sitúa en la misma zona de memoria ya que dificulta la relocalización de los programas, es decir que el código de los programas no dependa de su situación en memoria. Ordinariamente este modo sólo se usa para acceder a direcciones del sistema que normalmente se refieren a operaciones de entrada y salida ya que estas direcciones no dependen del programa. - Direccionamiento indirecto En este modo el campo de operando de la instrucción indica la localización de la dirección efectiva del operando. El modo de direccionamiento indirecto puede adquirir diferentes formas según cuál sea el lugar donde se encuentre la dirección del operando. En general, todos los modos de direccionamiento tienen su versión indirecta que añade un eslabón más a la cadena del direccionamiento. Por ejemplo existe el direccionamiento indirecto por registro, en el que el registro especificado contiene la dirección del operando, no el operando mismo. Este direccionamiento es útil cuando se trabaja con punteros ya que los punteros son variables que contienen las direcciones de los operandos, no los operandos mismos. - Direccionamiento relativo Hay algunos modos de direccionamiento en que se hace uso de una propiedad muy generalizada de los programas denominada localidad de referencia, esta propiedad consiste en que las direcciones referenciadas por los programas no suelen alejarse mucho unas de otras y, por tanto, suelen estar concentradas en una parte de la memoria. Estas consideraciones nos llevan a la conclusión de que no es necesario utilizar todos los bits de la dirección de memoria en el campo de operando, basta utilizar los bits precisos para cubrir la parte de memoria donde estén incluidas las direcciones a las que el programa hace referencia. Esto puede hacerse tomando corno referencia un punto de la memoria y tomando como campo de operando la diferencia entre ese punto y la dirección efectiva del operando. La dirección que se toma como punto de referencia puede residir en un registro de la CPU y, por tanto, sumando el contenido de ese registro con el campo de operando obtendremos la dirección efectiva. Hay varios direccionamientos basados en esta técnica que reciben diferentes nombres dependiendo de cuál sea el registro en el que radica la dirección tomada como referencia. Todos ellos podrían catalogarse como direccionamientos relativos a un registro. El direccionamiento denominado habitualmente relativo toma como valor de referencia el registro contador de programa. Cuando se usa este modo de direccionamiento, el campo de operando consiste en un número (normalmente con signo) que expresa la diferencia entre la dirección del dato y la dirección siguiente a la instrucción en curso (contenida en el contador de programa). Si el campo de operando, llamado en este caso desplazamiento u offset, es positivo el operando residirá en una dirección posterior a la de la instrucción y si es negativo, en una dirección anterior. Este modo de direccionamiento es usado muy frecuentemente en programas cuyo código deba ser independiente de la posición de memoria donde estén situados (programas relocalizables) ya que el desplazamiento es independiente de la localización del programa. También se usa con mucha frecuencia en instrucciones de bifurcación. - Direccionamiento por base y desplazamiento Este modo de direccionamiento se fundamenta en la propiedad de localidad de referencia mencionada anteriormente. La dirección que se toma como referencia de la zona de memoria en la que están localizados los datos se deposita en un registro denominado registro base y el campo de operando indica la diferencia entre el registro base y la dirección M operando. Normalmente se toma como referencia (registro base) la dirección de comienzo de la zona de memoria ocupada por un programa. Por tanto, la dirección efectiva del operando se calculará sumando el contenido del registro base con el campo de operando. Este modo de direccionamiento se usa en ordenadores que pueden mantener en memoria varios programas ya que, de esta forma, los diferentes registros base pueden contener las direcciones de comienzo de cada uno de los programas. Esto es muy útil porque facilita la relocalización de los programas para situar el programa en una zona de memoria diferente bastará con cambiar el contenido de su registro base, no será necesario cambiar ninguno de los campos de operando. - Direccionamiento indexado En este modo de direccionamiento, la dirección del operando también se calcula sumando un registro de la CPU al campo de operando, este registro es un registro específico para este uso llamado registro índice. En los ordenadores con organización de registros generales, el registro índice puede ser cualquiera de los registros de la CPU. En los ordenadores en que el contador de programa es considerado como un registro de uso general (PDP 11 y VAX) el modo relativo es un caso particular del direccionamiento indexado. A la cantidad que hay que sumar al registro índice para conseguir la dirección del operando también se le llama desplazamiento u offset. Este modo de direccionamiento es especialmente útil para el direccionamiento de vectores y matrices en bucles ya que, si se quieren direccionar elementos consecutivos del vector o matriz, basta mantener en el desplazamiento la dirección del primer elemento e ir incrementando el registro índice. También sirve para acceder de forma relativa a elementos de vectores cercanos a uno dado, para ello, se carga la dirección del elemento de referencia en el registro índice y después se accede mediante direccionamiento indexado, con el desplazamiento adecuado, al anterior, al siguiente, etc., esto mismo también es aplicable a pilas, en que, en ocasiones, hay que acceder a datos cercanos, por encima o por debajo, al dato señalado por algún apuntador. Una consecuencia de todo esto es una modalidad de direccionamiento indexado de que disponen algunos ordenadores, denominada autoindexación, que hace que el registro índice sea incrementado o decrementado en el tamaño del operando antes o después de acceder al mismo. Los ordenadores que poseen autoindexación incorporan los modos de direccionamiento descritos en los dos apartados siguientes. En algunos ordenadores existen variantes del direccionamiento indexado en que se obtiene la dirección del operando sumando el contenido de varios registros con el desplazamiento, esto puede servir para especificar el comienzo de un vector mediante un desplazamiento respecto a un registro y el elemento del vector mediante un registro índice. - Direccionamiento autoincremental o postincremental En este modo, la dirección del operando se encuentra en un registro y éste es incrementado, después de acceder al operando, en el tamaño del mismo. Este modo es útil para manejar vectores y matrices como se veía en el apartado anterior. También se puede utilizar para extraer datos de pilas (que crezcan hacia direcciones bajas) ya que, si el registro sobre el que se aplica este modo es el apuntador de pila, después de la operación el apuntador señalará al siguiente elemento de la pila. - Direccionamiento autodecremental o predecremental En este modo para obtener la dirección del operando hay que decrementar un registro en el tamaño del operando; el nuevo contenido del registro después de efectuar esa operación, es la dirección del operando. Para finalizar, veamos un resumen de las utilidades de los modos de direccionamiento usados con más frecuencia. 7. CUALES SON LAS FASES QUE COMPONE UNA INSTRUCCIÓN Se compone de dos fases: Fase de búsqueda Fase de ejecución .Fase de búsqueda. En esta fase se transfiere la instrucción que se va a ejecutar desde la memoria central a la unidad de control. .Fase de ejecución. Consiste en la realización de todas las acciones que conlleva la propia instrucción. Una forma de clasificar los microprocesadores es en función de las instrucciones que son capaces de ejecutar. Podemos encontrar dos tipos: microprocesadores: con tecnología CISC y RISC. CISC Complex Instructions Set Computer, Ordenador con un conjunto de instrucciones complejo. RISC Reduced Instructions Set Computer, Ordenador con un conjunto de instrucciones reducido. 8. REALIZAR UN CUADRO COMPARATIVO DE LAS DIFERENCIAS ENTRE UNA SUBRUTINA Y LAS EXCEPCIONES EN LAS INSTRUCCIONES MAQUINA CUADRO COMPARATIVO LAS EXCEPCIONES EN LAS SUBRUTINA INSTRUCCIONES MAQUINA Son el mecanismo estándar para informar de errores. Las aplicaciones y bibliotecas no deberían utilizar códigos de devolución para comunicar los errores. El uso de excepciones contribuye al diseño de un marco de trabajo coherente y permite la transmisión de información sobre errores desde miembros, como los constructores, que no pueden tener un tipo de valor devuelto. Las excepciones también permiten a los programas controlar el error o cerrarse, según corresponda. El comportamiento predeterminado es finalizar una aplicación si no controla la excepción iniciada. Para obtener una discusión detallada de las excepciones. Una subrutina o subprograma, como idea general, se presenta como un algoritmo separado del algoritmo principal, el cual permite resolver una tarea específica. Un ejemplo sería: Programa principal instrucción 1 instrucción 2 ... instrucción N ... Subrutina NombreX ....... fin subrutinaX 9. REALIZAR UN CUADRO SINÓPTICO DE LA EVOLUCIÓN DE LOS PROCESADORES INTEL HASTA NUESTROS DÍAS 8088 El procesador del que hablamos fue desarrollado entre 1.979 y Agosto de 1981. Era una versión mejorada del microprocesado r 8086 de Intel de 16bit pero con un bus de 8bit (en contraste con el de 16bit del 8087 El 8087 fue el primer co-procesador de Intel (el primero de la serie 87) diseñado para funcionar en paralelo de los procesadores 8088 y 8086. Estaba principalmente pensado para realizar operaciones matemáticas en las que se necesita operar con la notación de punto flotante. 80286 Este microprocesador apareció en febrero de 1982, disponía de 134000 transistores CMOS(transistores de efecto campo), el tamaño de sus conexiones era de 1.5 micras de metro, con una velocidad de reloj de 10Mhz y un tamaño de pastilla de 68.7 mm cuadrados. Este microprocesador de 16 bits con capacidad de direccionamiento de 16 Mbytes en contraste con 1 Mbyte del 8086, incluía en su pastilla el micro del 8086 y el del 80286, para solucionar problemas de compatibilidad de programas, que comenzaron a surgir 80386 El procesador de Intel 80386 aparece en el año 1985 y supone la subida de un nuevo peldaño en el avance tecnológico del mundo de los microprocesadore s. Como novedad respecto a su predecesor, se amplían los buses de datos, el número de líneas de las direcciones y el tamaño de los registros a 32bits. Esta ampliación supone un 80486 Los Intel 80486 son una familia de microprocesadores de 32 bits con arquitectura x86 diseñados por Intel en 1989. Los 80486 son muy similares a sus predecesores, diferenciándose sobretodo a la del 80386 en que incorpora el coprocesador matemático 80387 (permite trabajar en coma flotante y un caché integrado en el propio circuito integrado del microprocesador de 8 Kbytes lo que Pentium La quinta generación de microprocesadores Intel tomó el nombre de Pentium. Aparecido en marzo de 1993 en frecuencias de trabajo de 60 y 66 MHz llega a ser cinco veces más potente que un 80486 a 33 MHz. Posteriormente aparecieron procesadores de esta primera generación de Pentium a 75, 90, 100 y 133 MHz en la versión Pentium Pro (1995) que llego a los 200 MHz. Fabricados con un proceso BiCMOS de geometría de 8 micras y con una arquitectura superescalar, los 8086). Aunque esto reducía su eficiencia y velocidad al ser mas sencillo el diseño con buses de tamaño reducido y por la compatibilidad se convirtió en el procesador de los IBM PC. El otro gran cambio que se produjo en el 8088 con respecto al 8086, fue la reducción del tamaño y el cambio de los algoritmos de la cola (de 6 bytes a 4 bytes). Las características técnicas eran las mismas que las del 8086: reloj inicial de 4.7Mhz, 29.000 transistores con conexiones entre sí de 3micras, y la posibilidad de direccionamient o de hasta 1MB de memoria (mediante palabras de 20bits de dirección). Este procesador admitía 60 nuevas instrucciones , que empezaban con la letra F, para diferenciarlas de sus homólogas del 8086/88. Los registros en este microprocesador no son lineales como en 8086/88, sino que están estructurados en forma de pila de datos (instrucciones push y pop). El hecho de que convivieran el 8087 y 8086/88, hacía que se pudieran repartir las tareas y que funcionaran al mismo tiempo sin que uno de ellos tuviese que esperar a que el otro acabase de ejecutar una instrucción. debido a la rápida evolución de los ordenadores (“No todo el mundo cambiaba de ordenador cada 4 años”). El aumento de densidad de los componentes de la pastilla, no fue el esperado según la Ley de Moore: 134000transistores el 80286 por 29000 del 8086. El tamaño era aproximadamente 68.7 mm cuadrados por 28.6 del 8086. Aplicando una sencilla regla de tres, vemos que el aumento de densidad fue aproximadamente de 2. incremento en la memoria RAM, que puede direccionar 4Gb. Además, incorpora un nuevo modo de operación: el modo real virtual del 8086, lo que permite tener varias sesiones 8086 trabajando simultáneamente. El 80386 posee 2.750.000 transistores CMOS y trabaja con un reloj de 16 a 33MHz, según el modelo. Sus conexiones son de 1,5µm, lo que le confiere un tamaño global de 104mm2. Es decir, mientras que el número de transistores se ha duplicado, el tamaño del µP ha aumentado tan solo un cincuenta por ciento. aumentaba la velocidad del microprocesador al no tener que acceder continuamente a memoria externa. La diferencias principales son que los 486 tienen un conjunto de instrucciones (los comandos que la cpu debe entender y ejecutar) que están optimizadas y una unidad de interfaz de bus mejorada. Estas mejoras hacen que los 486 sean el doble de rápidos que un 386 a la misma velocidad de reloj. Las velocidades de reloj típicas para los i486 eran 16 MHz (no muy frecuente), 20 MHz (ídem), 25 MHz, 33 MHz, 40 MHz, 50 MHz (típicamente con duplicación del reloj), 66 MHz (con duplicación del reloj), 75 MHz (con triplicación del reloj). El microprocesador 80486 estaba compuesto por 1200000 transistores CMOS, con unas conexiones de 1µm lo que producía que el microprocesador tuviera una dimensión de 167 mm^2, el tamaño aumenta con respecto al 386 por el mayor número de transistores y por la memoria caché. microprocesadores Pentium se encuadran en un concepto RISC. Mientras que el 80386 y el 80486 tienen una unidad de ejecución, el Pentium tiene dos, pudiendo ejecutar dos instrucciones por ciclo de reloj con sus correspondientes cálculos, ya que también tiene dos unidades aritméticológicas (ALU). Intel toma como modelo la estructura separada para la memoria caché interna del microprocesador que consta de dos bloques de 8 Kbytes, uno para las instrucciones y otro para los datos que trabajan bajo una estructura de asociación de conjuntos bidireccional. También incorpora como su predecesor un coprocesador matemático, el cual en sus primeros modelos debido a un error de diseño tenía un famoso bug, que producía un error en la división. Este coprocesador utiliza algoritmos mejorados y añade instrucciones de suma, multiplicación y división de números en punto flotante. Se integran nuevos avances tecnológicos como por ejemplo la predicción de ramificaciones, buses de datos internos de 256 bits, bus de datos externo de 64 bits (que soporta transferencias de 258 Kbytes por segundo) y memorias caché de escritura diferida. Este procesador es bastante mayor en tamaño de la pastilla que su predecesor (264 mm^2) a pesar de su menor tamaño en las conexiones (0,8 µm) debido a que casi le triplicaba en número de transistores con un poco más de 3 millones de transistores. Este gran aumento en el hardware permite una mayor eficiencia en las instrucciones, simplificación del código software y el considerable aumento en la velocidad de ejecución. 10. REALIZAR UN CUADRO COMPARATIVO ENTRE AL ARQUITECTURA HARVARD Y LA ARQUITECTURA VON NEUMAN ARQUITECTURA HARVARD ARQUITECTURA VON NEUMANN Tradicionalmente los microprocesadores se basan en la estructura de Von Neumann, como la de la figura siguiente, que se caracteriza por disponer de una única memoria principal en la que se almacenan los datos y las instrucciones. A esta memoria se accede a través de un sistema de buses único La arquitectura von Neumann se refiere a las arquitecturas de computadoras que utilizan el mismo dispositivo de almacenamiento tanto para las instrucciones como para los datos (a diferencia de la arquitectura Harvard). El término se acuñó en el documento First Draft of a Report on the EDVAC (1945), escrito por el conocido matemático John von Neumann, que propuso el concepto de programa almacenado. Dicho documento fue redactado en vistas a la construcción del sucesor de la computadora ENIAC, y su contenido fue desarrollado por John Presper Eckert, John William Mauchly, Arthur Burks, y otros durante varios meses antes de que von Neumann redactara el borrador del informe. Los ordenadores con arquitectura von Neumann constan de cinco partes: La unidad aritmético-lógica o ALU, la unidad de control, la memoria, un dispositivo de entrada/salida y el bus de datos que proporciona un medio de transporte de los datos entre las distintas partes. Bus de datos Bus de direcciones Bus de control Arquitectura según el modelo de Von Neumann Un ordenador con arquitectura von Neumann El modelo Harvard , representado en la figura siguiente, dispone de dos memorias: realiza o emula los siguientes pasos secuencialmente: Memoria de datos Memoria de Programa Además cada memoria dispone de su respectivo bus, lo que permite, que la CPU pueda acceder de forma independiente y simultánea a la memoria de datos y a la de instrucciones. Como los buses son independientes éstos pueden tener distintos contenidos en la misma dirección . Enciende el ordenador y obtiene la siguiente instrucción desde la memoria en la dirección indicada por el contador de programa y la guarda en el registro de instrucción. Aumenta el contador de programa en la longitud de la instrucción para apuntar a la siguiente. Descodifica la instrucción mediante la unidad de control. Ésta se encarga de coordinar el resto de componentes del ordenador para realizar una función determinada. Se ejecuta la instrucción. Ésta puede cambiar el valor del contador del programa, permitiendo así operaciones repetitivas. El contador puede cambiar también cuando se cumpla una cierta condición aritmética, haciendo que el ordenador pueda 'tomar decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmética y lógica anteriores. Vuelve al paso 2. 11. INVESTIGAR LAS CARACTERÍSTICAS DE LOS COMPUTADORES TIPO CISC Y LOS COMPUTADORES TIPO RISC (REPERTORIO DE INSTRUCCIONES) CISC Complex Instructions Set Computer, Ordenador con un conjunto de instrucciones complejo. RISC Reduced Instructions Set Computer, Ordenador con un conjunto de instrucciones reducido. Anteriormente hemos definido el set de instrucciones como el conjunto de instrucciones que es capaz de entender y ejecutar un microprocesador. Si ese microprocesador entiende y ejecuta muchas instrucciones (cientos de ellas), se trata entonces de un microprocesador CISC. En cambio, si el microprocesador entiende y ejecuta muy pocas instrucciones (decenas de ellas), se trata entonces de un microprocesador RISC. En principio, parece que la tecnología CISC es mucho más ventajosa que la RISC. Pero no es así: un micro CISC tarda mucho tiempo en ejecutar cada una de esas instrucciones. En cambio un micro RISC, como sólo entiende unas cuantas, su diseño interno le permite ejecutarlas en muy poco tiempo, a una gran velocidad, mucho más rápido que un microprocesador CISC. Cuando se desee que un microprocesador RISC ejecute cierta instrucción que no entiende, ésta se descompondrá en varias instrucciones de las sencillas que sí entiende. Aún así, descomponiendo una instrucción compleja en varias sencillas, es capaz de operar mucho más rápido que el microprocesador CISC, el cual no tiene que descomponer esa instrucción porque la entiende directamente. Prácticamente, todos los microprocesadores que se utilizan en la fabricación de ordenadores personales (microprocesadores fabricados por Intel) son de tecnología CISC. Intel, poco a poco, va abandonando la tecnología CISC y la sustituye por tecnología RISC. Así por ejemplo, un Pentium, sin dejar de pertenecer a la categoria CISC incorpora algunas caracteristicas de los micros RISC. Es de esperar que en un futuro, los micros fabricados sean de tecnología RISC; entonces los ordenadores serán muchísimo más rápido de lo que hoy los conocemos. Intel no fabrica microprocesadores completamente RISC para no perder la compatibilidad con los microprocesadores anteriores. Microprocesadores CISC Interpretan y ejecutan un gran número de instrucciones. Son más lentos. Microprocesadores RISC Interpretan y ejecutan sólo unas pocas instrucciones. Son mucho más rápidos que los microprocesadores CISC. Todos los microprocesadores utilizando en la fabricación de ordenadores personales, son de tecnología CISC. 12. INVESTIGAR LAS TABLAS DE VERDAD Y EL SÍMBOLO DE LAS COMPUERTAS LÓGICAS: OR, AND, NOT, NAND, NOR. OR Una OR de dos entradas, y su tabla de verdad. Compuerta OR (O) Esta compuerta es simplemente la negación de la compuerta AND. Se puede pensar como una compuerta AND con una compuerta NOT a la salida. Esto modifica su tabla de verdad, quedando que la salida solo será un “0” cuando todas sus entradas estén en “1”. En la figura podemos ver su símbolo y su tabla de verdad. El pequeño círculo en su salida es el que simboliza la negación. El numero de entradas debe ser como mínimo de dos, pero no es raro encontrar NAND de 3 o mas entradas. AND Compuerta AND y la tabla de verdad correspondiente. Compuerta AND (Y) La función booleana OR es la asociada a la suma, y matemáticamente la expresamos como “+”. Esta compuerta presenta un estado alto en su salida (un “1”) cuando al menos una de sus entradas también esta en alto. En los demás casos, la salida será “0”. Un circuito equivalente a esta compuerta seria una lámpara en serie con la alimentación y con dos interruptores que esta en paralelo entre si. Nuevamente, los interruptores serian las entradas, y la lámpara la salida. Si seguimos las convenciones fijadas en el ejemplo visto al explicar la compuerta AND, tenemos que si ambos interruptores están abiertos (“0”), la lámpara permanece apagada (“0”). Pero basta que cerremos solo uno de los interruptores para que la lámpara se encienda. Al igual que en las compuertas AND, el numero de entradas puede ser mayor que dos. NOT Compuerta NOT y su tabla de verdad. Compuerta NOT (NO) Esta compuerta realiza la función boleana de la multiplicación. Su salida será un “1” cuando todas sus entradas también estén en nivel alto. En cualquier otro caso, la salida será un “0”. El operador AND se lo asocia a la multiplicación, de la misma forma que al operador SI se lo asociaba a la igualdad. En efecto, el resultado de multiplicar entre si diferentes valores binarios solo dará como resultado “1” cuando todos ellos también sean 1, como se puede ver en la figura al final de la página. Matemáticamente se lo simboliza con el signo “x”. Podemos pensar en esta compuerta como una lámpara en serie con la alimentación y dos o mas interruptores. La lámpara se encenderá únicamente cuando todos los interruptores estén cerrados. En este ejemplo, los interruptores serian las entradas de la compuerta, y su estado seria “1” cuando están cerrados. La salida estaría representada por la lámpara, cuyo estado “alto” o “1” se asocia al encendido. Si alguna de las entradas (interruptores) esta en “0” (interruptor abierto) no habrá circulación de corriente por lo tanto la salida estará en “0” (lámpara apagada). La tabla de verdad y el esquema de más abajo corresponden a una AND de 2 entradas, pero también existen compuertas AND de 3, 4 o mas entradas. NAND Tabla y esquema de una compuerta NAND. Compuerta NAND (NO Y) De forma similar a la compuerta NAND, una NOR es la negación de una compuerta OR, obtenida agregando una etapa NOT en su salida. Como podemos ver en su tabla de verdad, la salida de una compuerta NOR es “1” cuando todas sus entradas son “0”. Igual que en casos anteriores, la negación se expresa en los esquemas mediante un círculo en la salida. El número de entradas puede ser mayor a dos. NOR Puerta NOR: esquema y tabla de verdad. Compuerta NOR (NO O) La compuerta OR vista anteriormente realiza la operación lógica correspondiente al “O” inclusivo, es decir, una o ambas de las entradas deben estar en “1” para que la salida sea “1”. Un ejemplo de esta compuerta en lenguaje coloquial seria “Mañana iré de compras o al cine”. Basta con que vaya de compras o al cine para que la afirmación sea verdadera. En caso de que realice ambas cosas, la afirmación también es verdadera. Aquí es donde la función XOR difiere de la OR: en una compuerta XOR la salida será “0” siempre que las entradas sean distintas entre si. En el ejemplo anterior, si se tratase de la operación XOR, la salida seria “1” solamente si fuimos de compras o si fuimos al cine, pero “0” si no fuimos a ninguno de esos lugares, o si fuimos a ambos. Esta característica, como veremos en notas posteriores, hacen que la compuerta XOR sea útil para efectuar sumas de números , como en el caso de las calculadoras. 13. INVESTIGAR LOS POSTULADOS LÓGICOS O LAS LEYES DE ÁLGEBRA DE BOOLE P1 El álgebra booleana es cerrada bajo las operaciones AND, OR y NOT P2 El elemento de identidad con respecto a · es uno y con respecto a + es cero. No existe elemento de identidad para el operador NOT P3 Los operadores · y + son conmutativos. P4 · y + son distributivos uno con respecto al otro, esto es, A· (B+C) = (A·B)+(A·C) y A+ (B·C) = (A+B) ·(A+C). P5 Para cada valor A existe un valor A' tal que A·A' = 0 y A+A' = 1. Éste valor es el complemento lógico de A. P6 · y + son ambos asociativos, ésto es, (AB) C = A (BC) y (A+B)+C = A+ (B+C). Es posible probar todos los teoremas del álgebra booleana utilizando éstos postulados, además es buena idea familiarizarse con algunos de los teoremas más importantes de los cuales podemos mencionar los siguientes: Teorema 1: A + A = A Teorema 2: A · A = A Teorema 3: A + 0 = A Teorema 4: A · 1 = A Teorema 5: A · 0 = 0 Teorema 6: A + 1 = 1 Teorema 7: (A + B)' = A' · B' Teorema 8: (A · B)' = A' + B' Teorema 9: A + A · B = A Teorema 10: A · (A + B) = A Teorema 11: A + A'B = A + B Teorema 12: A' · (A + B') = A'B' Teorema 13: AB + AB' = A Teorema 14: (A' + B') · (A' + B) = A' Teorema 15: A + A' = 1 Teorema 16: A · A' = 0 14. INVESTIGAR EL MÉTODO DE SIMPLIFICACIÓN DE FUNCIONES Método algebraico Es el método básico de simplificación de funciones y consiste en aplicar Directamente la propiedad distributiva a los términos de la función, eliminando variables. Por ejemplo: f1(d,c,b,a) = d·c·b·a + d·c·b·a = d·c·b·(a+a) = d·c·b·1 = d·c·b f2 (d,c,b,a) = (d+c+b+a)·(d+c+b+a) = (d+c+b·b+a) = (d+c+a) Sin embargo, pocas veces viene expresada la función de forma que sea Fácilmente aplicable este método. Método de Karnaugh Método tabular gráfico que se basa en los llamados “mapas de Karnaugh”, consistentes en una tabla de cuadros, cada uno de los cuales representa un término canónico. Estos cuadros están distribuidos de tal modo que dos cualesquiera de ellos, contiguos físicamente, corresponden a términos canónicos adyacentes. Términos canónicos adyacentes: son aquellos para los que sus respectivas configuraciones binarias difieren entre sí en un único bit. Se pueden definir también como aquellos términos a los que se les puede aplicar la propiedad distributiva para simplificar una variable. Métodos de simplificación programados: Algoritmo de Quine McCluskey