miércoles, 21 de octubre de 2009

Organización de las computadoras

Bachilleres.

Nota 1:Dentro de este documento hay preguntas tipo examen

Nota 2:Bajen el Turbo Pascal con documentación haciendo clíck en el siguiente enlace Para bajar el Turbo Pascal 7 haga click aqui

Unidad 1: Organización de la Computador

a


Objetivos del Aprendizaje

Al finalizar esta Unidad, Ud. será capaz de:


  • Explicar la organización de un sistema de computadora

  • Describir el ciclo de ejecución de la CPU

  • Discutir las variaciones de una arquitectura simple de computadora que ayudan a alcanzar el paralelismo

  • Discutir la arquitectura que contiene unidades multifuncionales

  • Explicar las características de una arquitectura canalizada (pipelined architecture)

  • Listar las características de un procesador vectorial y un procesador matricial

  • Describir algunas de las organizaciones básicas de un sistema multiprocesador


1. Introducción

Un sistema de computadora es un dispositivo electrónico programable que puede aceptar, almacenar y procesar datos. Ejecuta un conjunto de

instrucciones llamados programas. La ejecución del programa da al usuario final el resultado deseado.

En esta Unidad, se discute la organización de un sistema de computadora, los componentes de la Unidad Central de Procesamiento (Central

Processing Unit - CPU), las variaciones presentes en su organización y cómo los diferentes componentes de un sistema de computadora están interconectados.

2. Organización de un Sistema de Computadora
Un sistema de computadora se define como una colección o conjunto de varias partes o componentes que trabajan juntas para lograr un objetivo.

Un sistema de computadora se puede considerar como un grupo de componentes integrados, interactuando uno con otro para realizar un conjunto específico de tareas.

De manera más precisa, un sistema de computadora se puede definir como una colección de entidades tales como procesadores, memorias, dispositivos de entrada / salida (E/S) y otros componentes especiales interconectados, que interactúan uno con otro en cierta manera para llevar a cabo un conjunto específico de tareas.

2.1 Organización de la Máquina de Von Neumann

El diseño básico de muchas computadoras digitales modernas se puede hacer corresponder con una de las primeras computadoras digitales, la máquina de Von Neumann. Nombrada así por el famoso matemático, John Von Neumann, quien la diseñó.

La estructura básica de la máquina de Von Neumann se muestra en la Figura 1.1.






La máquina de Von Neumann tiene los siguientes componentes principales:




  • Unidad Aritmética Lógica (Arithmetic Logic Unit - ALU)

  • Memoria

  • Unidad de Control

  • Dispositivo de Entrada

  • Dispositivo de Salida


La unidad de control controla todas las operaciones de la computadora y todos los otros dispositivos trabajan bajo su control.

El programa o conjunto de instrucciones junto con los datos se almacenan en la memoria principal. La memoria principal consiste de 4096 palabras, cada una de 40 bits de longitud. La instrucción por sí misma es de 20 bits de largo. Usualmente, una instrucción consiste de la
operación que tiene que ser realizada y una dirección en la memoria, donde se encontrará el dato. La operación está codificada en 8 bits y se conoce como el código de la operación o simplemente opcode. El dato que se usa en la operación se llama el operando de la instrucción, que se representa como un número binario con signo de 39 bits. Note que en la máquina de Von Neumann, las instrucciones y los datos están presentes en las mismas 4096 palabras de memoria.

Como cada instrucción es de sólo 20 bits de longitud, dos instrucciones se pueden usualmente empacar en una palabra de 40 bits.

¿Cómo alimentan las instrucciones y los datos al computador? Esto lo hace la unidad de control, la cual le indica a la ALU obtener la entrada del dispositivo de entrada. El dato se almacena en un acumulador cuyo ancho es también de 40 bits. Este es luego transferido a la memoria.

Una instrucción se puede usar para añadir datos al acumulador, para cargar un valor de la memoria en el acumulador o para guardar un valor del acumulador a una ubicación particular en la memoria.

El resultado obtenido del cálculo o ejecución del programa se puede enviar al dispositivo de salida desde el acumulador.

La máquina de Von Neumann era capaz de ejecutar sólo unas cuantas instrucciones primitivas. No tenía las operaciones para trabajar explícitamente con números reales.

Para resumir, la máquina de Von Neumann trabaja con un programa almacenado. El programa almacenado consiste de instrucciones y datos que están almacenados en la memoria. Las instrucciones son ejecutadas por la ALU bajo la dirección de la unidad de control. La ALU puede realizar cierto número de operaciones primitivas sobre operandos en la memoria y en el acumulador.

La organización de la máquina de Von Neumann es tan fundamental que muchas computadoras digitales modernas aún reflejan una estructura similar. La ALU en la máquina de Von Neumann tiene un parecido cercano a la moderna Unidad Central de Procesamiento (Central Processing Unit - CPU), y la unidad de control es usualmente una parte de la CPU. Pero los componentes y organización en las computadoras modernas es un poco más compleja.

A continuación se discute la organización de una computadora digital moderna en su forma más simple.

2.2 Organización de una Computadora Elemental

La organización de una computadora digital moderna en su forma más simple se ilustra en la Figura 1.2.





La Figura 1.2, muestra que la organización de un sistema de computadora moderno es más compleja que la organización de la máquina de Von Neumann. Un sistema de computadora moderno comprende los siguientes componentes principales:




  • CPU

  • Bus Principal de Sistema

  • Memoria Primaria

  • Dispositivos de Entrada

  • Dispositivos de Salida

  • Dispositivos de Almacenamiento Secundario



Discutiremos brevemente cada uno de estos componentes principales.



2.3 CPU

Las funciones de la CPU son:



  • Dirigir la operación del sistema de computadora.

  • Coordinar las actividades de las unidades individuales.

  • Establecer la secuencia de instrucciones que van a ser ejecutadas.

  • Llevar a cabo las funciones que desee el usuario.

En las computadoras modernas, la CPU es un microprocesador incluido en un chip de silicio. La CPU en sí misma contiene los siguientes componentes principales:



  • Unidad de Control

  • ALU

  • Memoria Cache

  • Registros de propósito especial

  • Registros de propósito general

  • Bus Interno


La Unidad de Control coordina las actividades de los otros componentes de la CPU.
Además controla algunos de los componentes del sistema de computadora como los dispositivos E/S y la memoria a través de señales de control. La unidad de control también es responsable de establecer la secuencia y coordinar la ejecución de instrucciones.

La ALU es el siguiente componente importante de la CPU. Es llamado ALU porque puede llevar a cabo operaciones aritméticas y lógicas. Un ALU típico puede realizar diferentes formas de operaciones aritméticas como adición, sustracción, multiplicación, y división en enteros.

Las ALUs de algunas de las primeras CPUs no eran capaces de realizar operaciones aritméticas en números reales, también llamados números de punto flotante. De hecho, el antiguo microprocesador Intel 80386 no tenía un ALU capaz de realizar operaciones aritméticas en números reales.
Los sistemas de computadora basados en la CPU Intel 80386 tenían la opción de instalar un 'coprocesador matemático' o 'coprocesador de punto flotante', el Intel 80387. El Intel 80387 es bastante similar a una CPU normal, excepto que tiene la funcionalidad limitada de proporcionar una variedad de instrucciones en números de punto flotante. Es llamado coprocesador debido que trabaja bajo el control de la CPU principal, el Intel 80386.

La unidad lógica de la ALU es capaz de realizar operaciones tales como comparar operandos y tomar decisiones basadas en condiciones.

Los ALUs de diferentes sistemas de computadora varían considerablemente en cómo la CPU principal está organizada y la clase de instrucciones que ellos pueden ejecutar.

Las instrucciones que son ejecutadas por la CPU trabajan sobre los datos (operandos) que son almacenadas en la memoria principal. Cada vez que una instrucción va a ser ejecutada, los operandos requeridos deben estar disponibles en la CPU para la ALU.

Existen algunos pocos lugares especiales de almacenamiento en la CPU para guardar los operandos y para ser usados luego por la ALU.

Algunos programas tienen instrucciones que trabajan frecuentemente sobre algunos conjuntos de datos. Si estos conjuntos de datos tuvieran que ser traídos de la memoria principal a las ubicaciones de almacenamiento interno para la ALU cada vez, el proceso completo sería lento.

Para solucionar este problema, las CPUs tienen un conjunto limitado de ubicaciones de almacenamiento de alta velocidad en el chip llamado la memoria caché. Los datos que se requieren frecuentemente se almacenan en la memoria caché. Esto reduce el tiempo que se consume en traer los datos de la memoria principal e incrementa la velocidad de la operación. A pesar que el tener más memoria caché en el chip es deseable, ésta hace que la CPU sea muy costosa.

La CPU tiene además unas pocas ubicaciones de almacenamiento de alta velocidad para propósitos especiales. Estas se llaman registros de propósito especial. Los siguientes son algunos de los registros de propósito especial que se encuentran en las CPUs típicas:




  • Contador de Programa (Program Counter - PC)

  • Registro de Instrucción (Instruction Register - IR)

  • Registro de Dirección de Memoria (Memory Address Register - MAR)

  • Registro de Buffer de Memoria (Memory Buffer Register - MBR)

  • El Contador de Programa (PC) guarda la dirección de la posición en la memoria principal que contiene el siguiente conjunto de instrucciones a ser ejecutado en un programa.


El IR contiene la instrucción que ha sido traída de la memoria principal y que tiene que ser ejecutada por la CPU.

Considere el caso cuando se quiere traer un operando de la memoria principal. Asuma que el dato está en la dirección de memoria 1025. Se coloca esta dirección de memoria en el MAR. Luego la memoria principal es señalizada para lectura. El contenido de la ubicación de memoria 1025 es leído y colocado en el MBR.

En adición a los registros de propósito especial, la CPU también dispone de unos registros de propósito general. Estos son similares a los registros de propósito especial.

Mientras que los registros de propósito especial no pueden ser accedidos directamente por los programadores, los registros de propósito general pueden ser accedidos y usados en forma directa por los programadores. Los programas que hacen uso en forma óptima de los registros
de propósito general son más eficientes. Las CPUs difieren en la manera en la cual se organizan los registros de propósito general y la cantidad disponible de estos. Por ejemplo, algunas CPUs pueden ofrecer sólo un conjunto de registros de propósito general, y el usuario puede usarlos
apropiadamente.

Otras CPUs ofrecen un conjunto de registros de propósito general sólo para almacenar datos (llamados registros de datos) y otro conjunto de registros de propósito general sólo para almacenar direcciones de memoria (llamados registros de direcciones).

Es obvio por ahora que los datos tienen que moverse de un componente a otro dentro de la CPU. Los datos además tienen que moverse entre los otros componentes del sistema. Por ejemplo, un dato puede tener que moverse de la memoria caché a una ubicación de almacenamiento interno usada por la ALU, o de los registros de propósito general a los registros de propósito especial o viceversa. Incluso la instrucción en el IR puede tener que moverse a la unidad de control. ¿Cómo se realiza este movimiento de datos?

Para el movimiento de datos dentro de la CPU existe una ruta interna llamada el bus interno. Las estructuras de las CPUs varían basándose en el tamaño del bus interno, en términos del número de bits que puede transportar. El bus en sí mismo puede ser visto como un conjunto de 'cables' paralelos que pueden llevar un dígito binario. Es llamado el bus 'interno'. El bus principal de sistema por otro lado es responsable del movimiento de los datos a través de otros componentes del sistema, por ejemplo, de la CPU a la memoria principal y viceversa o, de la CPU a un dispositivo de E/S o viceversa.

A continuación se discute acerca del bus principal de sistema y sus características.
2.4 Bus Principal de Sistema

El bus principal de sistema constituye la principal vía a través de la cual los datos se mueven entre diferentes componentes del sistema de computadora. Puede ser visual izado como un conjunto de cables paralelos a través de los cuales fluyen los datos en binario de una parte de la computadora a otra. Aparte de los datos, las direcciones de memoria y señales de control también se mueven a través del bus.

En efecto, existen tres tipos de buses.



  • Bus de Datos

  • Bus de Dirección

  • Bus de Control


2.4.1 Bus de Datos

Los datos y las instrucciones, las cuales son información digital en forma de bits, se mueven a través del bus de datos. El tamaño del bus de datos tiene un impacto directo en el rendimiento del sistema de computadora. Asuma que el tamaño del bus de datos es de 8 bits y existe el requerimiento de transferir un dato de 32 bits de la CPU a la memoria principal. El dato tendría que ser dividida en cuatro pedazos de 8 bits. Esto naturalmente disminuiría el rendimiento del sistema. Si el tamaño del bus de datos es 32 bits, la transferencia se completaría mucho más rápido.
La información que fluye dentro y fuera del bus de datos debe seguir un conjunto de reglas. Éstas se conocen como protocolos.
Diferentes tipos de buses de datos están disponibles, variando no sólo en tamaño sino también en los protocolos que usan. Algunos de los principales buses de datos estándares de la industria son:




  • Bus ISA (Industry Standard Architecture)

  • Bus PCI (Peripheral Component Interconnect)

  • Bus EISA (Extended Industry Standard Architecture)



2.4.2 Bus de Dirección

El bus de dirección conecta la CPU y la memoria principal. Cuando la CPU necesita un conjunto de datos de la memoria, coloca la dirección de la posición del dato en el bus de dirección. Luego, envía una señal de control a la memoria. La memoria obtiene la dirección del bus de dirección, recupera el dato y coloca el dato en el bus de datos para ser transportada a la CPU.

En forma similar, si la CPU quiere escribir un dato en una posición particular en la memoria, coloca el dato en el bus de datos y la dirección de la posición de memoria donde se tiene que escribir en el bus de dirección. Luego envía una señal de control para que el dato se escriba en la memoria.

El tamaño del bus de dirección determina la extensión de la memoria principal que puede ser direccionada y accedida. Por ejemplo, la computadora personal contiene un bus de direcciones de 36 bits, lo que implica que teóricamente es capaz de direccionar 64 gigabytes de memoria principal. Sin embargo, el tamaño del bus de direcciones, a diferencia del bus de datos, no afecta el rendimiento del sistema de computadora.



2.4.3 Bus de Control
Las señales de control se mueven de un componente a otro a través del bus de control.

Existen varias señales de control. Una de las señales de control se usa para indicar si la CPU esta leyendo o escribiendo en la memoria principal.
Otras señales de control se usan para acceder y controlar dispositivos de E/S.

A continuación se discute la organización de la memoria principal.

2.5 Memoria Primaria

La memoria primaria es el principal dispositivo de almacenamiento en donde se guardan las instrucciones que constituyen un programa y los datos requeridos. La memoria primaria de las computadoras modernas son chips semiconductores montados en una tarjeta de circuitos. En las computadoras personales, los chips de memoria primaria están ordenados en una parte de la tarjeta madre que es la principal placa de circuito integrado que contiene a la CPU o en placas de circuito adicionales que están montadas en ranuras ubicadas en la tarjeta madre. En cualquier caso, lógicamente, la memoria primaria constituye el conjunto de ubicaciones de almacenamiento donde un bit puede ser guardado.

Se sabe que un bit, por sí mismo tiene un uso y significado limitados. Por lo tanto, una colección de bits tiene más sentido cuando se ve como un grupo. A los grupos de bits se les dan múltiples nombres dependiendo del número de bits que contienen. Un grupo de 8 bits se llama un byte. El término 'palabra' también se refiere a una colección de bits. Sin embargo, no existe uniformidad en el uso de este término dado que no indica un cierto número de bits en forma universal. Mientras que en algunos sistemas de computadoras, el tamaño de la palabra puede ser 16 bits, en otros puede ser 32 bits, y aún en otros puede ser de 64 bits. Para evitar cualquier confusión potencial, se puede usar el término genérico de 'celda' para referirse a un grupo de bits.

¿Cuántos bits puede tener una celda? Para responder esto, se debe entender el significado de una 'dirección' de una posición de memoria. Se ha visto que la unidad más pequeña en la memoria es un bit. Si se tuviera la capacidad para localizar un bit particular en la memoria, entonces se debería tener una dirección asociada con cada bit. Asuma que se tiene 64 KB de memoria. Entonces en la memoria, existen 65,536 bytes o 524,288 bits. Por lo tanto se necesitaría tener direcciones desde el O hasta el 524,287 para direccionar cada bit. El mínimo número de bits requeridos para representar una dirección tal como 524,287 es 20 bits. Para ser capaces de guardar estas direcciones y usarlas, se necesitaría tener un bus de direcciones de 20 bits. Sin embargo, 64 KB para memoria principal es bastante pequeño, considerando que las computadoras modernas típicamente tienen 128 MB de memoria principal. Si se tuviera que direccionar cada bit, entonces se debería tener un bus de dirección mucho más grande.

La utilidad de ser capaz de direccionar cada bit en la memoria es bastante baja. En vez de hacer direccionable cada bit, se puede direccionar cada byte, lo cual es más efectivo en costos. En las computadoras más modernas sólo se pueden direccionar los bytes.

Sin embargo, existen computadoras, que tienen cierto número de bits como tamaño ireccionable. La 'celda' es el conjunto más pequeño de bits en la memoria que es direccionable. La Figura 1.3 muestra la organización de la memoria desde este punto de vista.




Se aprendió que en la memoria principal, se almacenan los datos e instrucciones del programa usuario. Adicionalmente, también son guardados los resultados intermedios, los resultados finales a ser mostrados y los programas del sistema operativo. La estructura que dicta la organización de la memoria principal desde este punto de vista depende del sistema operativo usado. Una organización general de la memoria principal se muestra en la Figura 1.4, indicando los diferentes elementos a los cuales se asigna espacio en la memoria principal.




Más adelante en esta Unidad se estudia como la memoria primaria se organiza cuando se discuta el tema de administración de memoria en el sistema operativo.

Los siguientes son los dos tipos de memoria primaria.




  • Memoria de Sólo Lectura (Read Only Memory - ROM): La ROM es una memoria semiconductora que se usa para almacenar conjuntos de instrucciones especiales y datos, que la computadora necesitará siempre cuando se inicie. La ROM retiene su contenido aún después que se ha apagado.

  • Memoria de Acceso Aleatorio (Random Access Memory - RAM): La RAM guarda los programas y datos cuando la computadora está encendida. Cuando la CPU ejecuta un programa, las instrucciones son extraídas de la RAM y ejecutadas. La RAM es una memoria volátil y por ello la información desaparece cuando la computadora se apaga.


A continuación se discuten los dispositivos de entrada.
2.6 Dispositivos de Entrada
Un dispositivo de entrada es el medio de comunicación entre el usuario y la computadora. Permite al usuario ingresar datos y comandos en la computadora. En otras palabras, ayuda al usuario a colocar datos e instrucciones en la memoria de la computadora.

Diferentes clases de dispositivos de entrada están disponibles. Algunos de los dispositivos de entrada que se usan comúnmente son:




  • Teclado

  • Ratón

  • Ratón estacionario

  • Pantalla sensible al tacto

  • Digitalizador de Imágenes

  • Entrada de voz a través de micrófono

  • Joystick

  • Lectora de Reconocimiento de Caracteres con Tinta Magnética (MICR)

  • Lectoras de código de barras.


Los dispositivos de entrada se pueden clasificar en dos tipos:



  • Dispositivos de entrada directa como teclado, joystick, o dispositivos de puntero como ratón, lápiz óptico, pantalla sensible al tacto, y micrófono. Con la ayuda de estos dispositivos, el usuario final puede ingresar directamente datos en la computadora. Estos dispositivos por lo tanto permiten la comunicación directa humano-a-máquina.

  • Los otros tipos de dispositivos de entrada comprenden los discos flexibles, cintas magnéticas y discos compactos, los cuales graban e ingresan datos en un medio (tal como un material magnetizado) que puede ser introducido en la computadora.


2.7 Dispositivos de Salida
Un dispositivo de salida ayuda a mostrar la salida del programa ejecutado por el usuario. Los dispositivos de salida trabajan en la misma forma que los dispositivos de entrada, la única diferencia que ellos convierten la salida de código-máquina producida por la computadora en una forma que el usuario final puede entender. En otras palabras, son unidades de hardware que ayudan a la computadora a pasar información al usuario.

Así, los dispositivos de salida son también un medio de comunicación entre la computadora y el usuario. Pueden tomar data de la computadora y armar la información en un formato amigable al usuario.

Los diferentes dispositivos de salida disponibles para su uso en un sistema de computadora se listan a continuación.



  • Unidad de Presentación Visual (Visual Display Unit - VDU)

  • Impresoras

  • Plotters

  • Dispositivos de Sonido

  • Dispositivos de Salida de Voz


A continuación se discute brevemente los dispositivos de almacenamiento secundario.

2.8 Dispositivos de Almacenamiento Secundario

Se aprendió que la memoria primaria en la forma de RAM es volátil. La ROM guarda los contenidos aún después que se apaga, pero no es adecuada cuando un programa genera resultados extensos que necesitan ser retenidos por un largo tiempo. Por lo tanto, se necesita otra clase de memoria para guardar los datos e instrucciones en una forma más permanente. Tales dispositivos se llaman dispositivos de almacenamiento secundario que son también dispositivos de almacenamiento auxiliar.

Los dispositivos de almacenamiento secundario se clasifican en dos tipos:



  • Dispositivos de Almacenamiento Magnético

  • Disco Duro

  • Cinta

  • Disco Flexible

  • Dispositivos de Almacenamiento Óptico

  • CD-ROM (Compact Disk Read Only Memory)

  • DVD (Digital Video Disk)

A pesar de que existen muchas otras clases de dispositivos de almacenamiento secundario disponibles en el mercado, éstos son sólo ligeramente diferentes de los mencionados anteriormente.

Se discutió la organización de un sistema de computadora y los diferentes componentes que constituyen el sistema. A continuación se estudia como la CPU ejecuta las instrucciones.

3. Ejecución de Instrucciones por la CPU




Las instrucciones y los datos a ser ejecutadas por la CPU se almacenan en la memoria primaria. La CPU tiene que obtener estas instrucciones y ejecutarlas. Los diferentes pasos involucrados en el proceso de ejecución de una instrucción por la CPU se ilustran en la Figura 1.5.



Los pasos involucrados en la ejecución de instrucciones por la CPU se explican en la Figura 1.5. Una vez que se enciende, la CPU realiza el mismo conjunto de tareas de manera cíclica hasta que se apaga. Las tareas se muestran en la Figura 1.5 y muestra que los principales pasos son:
'obtener instrucción', 'decodificar instrucción' y 'ejecutar instrucción'. Por lo tanto, este proceso también se llama el ciclo obtener-decodificar-ejecutar (fetch-decode-execute).

Note que se han mostrado los pasos realizados por la CPU como un diagrama de flujo.

Se sabe que un diagrama de flujo es una representación de un algoritmo. Por lo tanto, lo que sea que la CPU haga para ejecutar instrucciones puede ser realizado tanto en el hardware como en el software. Casi todas las CPUs tienen este ciclo construido en el hardware. Sin embargo, cuando el software realiza tareas similares, se conoce como un intérprete.

Se ha visto la organización de una CPU desde un punto de vista simplista donde se ejecuta un conjunto de instrucciones en forma secuencial, una a la vez. Un alto rendimiento es posible en CPUs que son organizadas para permitir la ejecución paralela de instrucciones.




3.1 Ejecución Paralela de Instrucciones

La ejecución paralela de instrucciones implica que más de una instrucción se puede ejecutar al mismo tiempo en el sistema de computadora. Las computadoras que son capaces de ejecutar paralelamente instrucciones se llaman procesadores paralelos.

Los procesadores paralelos se clasifican en tres categorías principales, como se muestra en la Figura 1.6.






Los sistemas de computadora con la capacidad de ejecutar en paralelo instrucciones se dividen en tres categorías principales:




  • Instrucción Única Dato Única (Single Instruction Single Data - SISO)

  • La organización de Von Neumann

  • CPU con múltiples unidades funcionales

  • CPU con organización canalizada

  • Instrucción Única Dato Múltiple (Single Instruction Multiple Data - SIMD)
  • Procesador Vectorial

  • Procesador Matricial

  • Múltiples Instrucciones Datos Múltiples (Multiple Instruction Multiple Data - MIMD)

  • Sistemas multiprocesador con una única memoria compartida/li>
  • Sistemas multiprocesador, cada uno con su propia memoria local y además con una única memoria compartida


Se discuten brevemente cada una de estas organizaciones. Dado que ya se discutió la arquitectura Von Neumann, se comienza con las CPUs con múltiples unidades funcionales.



3.2 CPU con Múltiples Unidades Funcionales


Esta organización es sólo una pequeña extensión de la máquina de Von Neumann, como se muestra en la Figura 1.7






En vez de una sola unidad como en la máquina de Von Neumann, las ALUs compuestas llevan a cabo todas las operaciones aritméticas en esta organización. Se puede organizar la CPU para tener múltiples unidades funcionales distintas, tales como unidades SUMA, SUSTRACCIÓN, MULTIPLICACIÓN y DIVISIÓN.

La Figura 1.7 muestra tres unidades SUMA, una unidad SUSTRACCIÓN, dos unidades MULTIPLICACIÓN y una unidad DIVISIÓN. El número de unidades puede variar en los diferentes sistemas de computadoras. Los sistemas de computadoras pueden tener también unidades funcionales adicionales, como una unidad que calcula el SENO de una cantidad.

A continuación se va a entender como esta organización proporciona la ejecución paralela de instrucciones. La CPU obtiene una instrucción, la decodifica, determina que es una instrucción SUMA, y la pasa a una de las unidades SUMA. Mientras esa instrucción está siendo ejecutada, la unidad de control puede obtener la siguiente instrucción, decodificarla y obtener los operandos. Si también es una instrucción SUMA, se pasa a la segunda unidad SUMA para su ejecución. Si sólo hubiera una unidad SUMA, la segunda instrucción tendría que esperar a que la primera instrucción se complete. Cuando hay múltiples unidades funcionales como en este caso, se pueden tener al menos tres instrucciones SUMA ejecutándose en paralelo.

En un caso ideal, se puede tener hasta siete instrucciones ejecutándose en paralelo como se muestra en la Figura 1.7. Note que ésta es sólo una organización SISO y por ello el grado de paralelismo que puede alcanzarse con esta organización es limitado.

Sin embargo, tiene mejor rendimiento que la organización de Von Neumann.


3.3 CPU con Organización Canalizada (Pipelined Organization)

Esta organización emplea un enfoque completamente diferente. Considera la instrucción en sí misma como el punto de atención y divide la instrucción en sus partes constituyentes. La organización de la CPU tiene entonces una unidad específica realizando cada una de las tareas
constituyentes como se muestra en la Figura 1.8.





La CPU tiene una unidad de control, un ALU, registros de propósito especial, registros de propósito general, y memoria caché. El elemento distintivo aquí es la canalización de la instrucción la cual comprende lo siguiente:




  • Unidad de búsqueda de instrucción

  • Unidad decodificadora de instrucción

  • Unidad de cálculo de dirección de operando

  • Unidad de búsqueda de operando

  • Unidad de ejecución de instrucción


¿Cómo es posible la ejecución paralela de instrucciones? Note que cada una de las unidades en la línea de trabajo (canalización) hace un trabajo específico y enfocado.

Por ejemplo, la de búsqueda de instrucción sólo hace un trabajo - buscar la siguiente instrucción apuntada por el PC. Cuando obtiene la instrucción, simplemente la pasa a la siguiente unidad en la línea de trabajo. Esta es la decodificadora de instrucción. Una vez que se hace este trabajo, la unidad de búsqueda de instrucción no espera hasta que la instrucción se ejecute finalmente. Procede a buscar la siguiente instrucción y la pasa a la unidad decodificadora de instrucción. Es posible que la unidad decodificadora de instrucción aún no haya completado la decodificación de la instrucción anterior. En tal caso, la unidad de búsqueda de instrucción espera hasta que la siguiente unidad en la línea de trabajo esté libre para aceptar lo que le vaya a pasar.

Cada unidad individual en la línea de trabajo trabaja de la misma manera, es decir, trabaja sobre su entrada, realiza la tarea específica y pasa el resultado a la siguiente unidad en la línea de trabajo. Esta claro que en una situación ideal, hasta cinco instrucciones pueden estar en diferentes etapas de ejecución al mismo tiempo.




3.4 Procesador Vectorial

Un procesador vectorial es un tipo SIMO de una máquina, esto es, trabaja con una única instrucción, pero múltiples flujos de datos. Se va a considerar un escenario donde una sola instrucción SUMA tiene que ser ejecutada y la misma instrucción SUMA tiene que ser aplicada a dos grandes grupos de datos. Los dos grandes grupos de datos pueden ser vistos como dos vectores. La CPU está tan organizada que es capaz de llevar a cabo instrucciones únicas sobre vectores mejor que sobre conjuntos únicos de operandos. Esto se ilustra en la Figura 1.9.




La Figura 1.9 muestra que el procesador vectorial tiene una unidad de control, registros de propósito especial, registros de propósito general y memoria caché como una CPU normal. No hay razón para decir que no puede tener un ALU convencional que trabaje sobre operandos escalares normales. Aparte de esto, la CPU está organizada tal que existen operandos vectoriales, un ALU vectorial que puede trabajar sobre operandos vectoriales, en vez de operandos escalares, para producir un resultado vectorial. Es normal para estos vectores estén limitados a un tamaño particular. ¿Cómo ocurre la ejecución paralela de instrucciones aquí? Ocurre a través de la capacidad de la ALU vectorial para trabajar con vectores de una sola vez, más que con operandos escalares.

Algunas supercomputadoras emplean la organización de procesador vectorial.




3.5 Procesador Matricial (Array Processor)

El procesador matricial es también un tipo SIMD de organización, el cual también trabaja con una sola instrucción, pero con múltiples flujos de datos. Un excelente ejemplo de tal tipo de organización es el ILLlAC IV. En esta organización, se considera un número de elementos individuales de cálculo, donde cada elemento consiste de una CPU con su propia memoria local organizada en la forma de un arreglo, una matriz o una grilla cuadrada. Considere el ejemplo de elementos de cálculo ordenados como un arreglo 4 x 4 que se muestra en la Figura 1.10.






Uno de los elementos de cálculo será designado como la CPU principal de control. Una unidad de control controla el trabajo completo y la coordinación de todos los elementos de cálculo en el arreglo. Usando una unidad de difusión de instrucción (instruction broadcasting), la unidad de control puede distribuir instrucciones a todos los elementos de cálculo. Cada uno de los elementos de cálculo puede trabajar paralelamente en sus cálculos debido a que tiene su propia memoria local. Sin embargo, no todos los cálculos pueden hacerse en paralelo sin ninguna limitación. Debe haber alguna sincronización entre los conjuntos de operaciones que están llevándose a cabo en cada uno de los procesadores. El elemento de cálculo designado como el elemento principal de control se encarga de estas actividades y las de mantenimiento.

En esta organización, la forma en la que la ejecución paralela de instrucciones se lleva a cabo es bastante directa. Los procesadores matriciales son computadoras SIMD muy poderosas cuando trabajan con problemas que involucran manipulaciones de matrices.



3.6 Sistemas Multiprocesadores con una Única Memoria Compartida.



Esta organización pertenece al tipo MIMO, existen múltiples instrucciones y múltiples flujos de datos siendo manejados en paralelo. Esta se ilustra en la Figura 1.11.





Este es uno de los tipos más básicos de sistemas multiprocesadores. Cada CPU no tiene su propia memoria, pero todas las CPUs tienen acceso a una única memoria primaria compartida a través de un solo bus. En la Figura 1.11, se observan cinco CPUs compartiendo una sola memoria primaria a través de un solo bus de sistema. El bus puede ser usado por sólo una entidad a la vez. ¿Qué ocurre si CPU1 y CPU2 intentan usar el bus al mismo tiempo? Esto puede llevar a una situación llamada contención de bus. Esta contención tiene que ser resuelta, pero el mecanismo de resolución no es tan simple como decir, 'CPU1 debe ceder su acceso para dejar que CPU2 lo tenga'. Existen muchos mecanismos complejos de resolución, pero una discusión de estos mecanismos está fuera del alcance de este curso.


Similarmente, CPU1 puede estar trabajando sobre una parte de los datos que es requerida por CPU2 también. Tales tipos de contención y el problema de sincronización de operaciones sobre los datos compartidos también deben ser manejados.


Cuando una CPU accede a la única memoria compartida, tiene acceso exclusivo al único bus. Mientras una CPU está haciendo uso del bus, las otras CPUs no pueden acceder a la memoria (e incluso cualquiera de los dispositivos conectados al sistema) y tienen que permanecer ociosos.
La comunicación que usa un solo bus de sistema casi siempre tiende a hacer que estos sistemas trabajen por debajo de su potencial.



3.7 Sistema Multiprocesador con Memoria Local y Única Memoria Compartida

Esta es una variación de la organización descrita en la Figura 1.11. En esta organización, muchas CPUs tienen su propia memoria local, y además acceden a la memoria compartida a través de un solo bus de sistema. Se muestra en la Figura 1.12





Los problemas discutidos con los multiprocesadores en la sección anterior también se aplican aquí. Sin embargo, con la adición de memoria local, los programas y los datos, que no necesitan ser compartidos, pueden ser colocados en la respectiva memoria local de la CPU. Esto reduce la necesidad de acceder frecuentemente al único bus de sistema y por lo tanto reduce la ocurrencia del problema de contención.

En ciertos sistemas multiprocesador, que tienen simplemente memoria local puede que no desplace la carga del bus principal de sistema. En tales casos, la organización debe considerar usar buses múltiples. De hecho, en ciertos sistemas multiprocesadores disponibles en el mercado se usan buses múltiples.


PREGUNTAS DE EXAMEN

Ahora que ha finalizado esta Unidad, Ud. debe ser capaz de:


  • Explicar la organización de un sistema de computadora basado en la máquina de Von Neumann

  • Describir el ciclo de ejecución de la CPU en un sistema de computadora

  • Discutir las variaciones de una arquitectura simple de computadora que ayudan a alcanzar el paralelismo

  • Discutir la arquitectura que contiene unidades multifuncionales

  • Explicar las características de una arquitectura canalizada (pipelined architecture)

  • Listar las características de los procesadores vectoriales y de los procesadores matriciales

  • Describir algunas de las organizaciones básicas de un sistema multiprocesador

  • ¿Qué funciones tienen: La Unidad de Control, la ALU, la Memoria Cache, los Registros de propósito especial, los Registros depropósito general y el Bus Interno?





Examen de Autoevaluación
1) ¿De cuáles de los siguientes elementos está compuesta la CPU?

a) Unidad de Control

b) ALU

c) Registros

d) Memoria


2) Los registros son _________________

a) Ubicaciones en la memoria primaria

b) Ubicaciones en la memoria secundaria

c) Ubicaciones dentro de la CPU

d) Ninguna de las anteriores


3) ¿Qué es el Registro PC?

a) Es un registro que almacena la dirección de la instrucción que se está ejecutando

b) Es un registro que almacena la dirección de la siguiente instrucción a ser ejecutada

c) Es una ubicación en la memoria que contiene la instrucción que está siendo ejecutada

d) Es una ubicación en la memoria que contiene la siguiente instrucción a ser ejecutada


4) ¿Cuáles de los siguientes decide la extensión de memoria física que un sistema de computadora puede direccionar?

a) La velocidad de la CPU

b) El tamaño del IR

c) El tamaño del bus de datos

d) El tamaño del bus de dirección



5) El bus de dirección es ________________

a) Un registro

b) Un conjunto de cables paralelos que llevan una dirección que hace referencia a una posición de memoria

c) Un conjunto de cables paralelos que llevan el dato que se ha obtenido de la memoria a la CPU

d) Una ubicación en la memoria principal


6) La arquitectura de Van Neumann es obsoleta en los tiempos modernos.

a) Verdadero

b) Falso


7) También es posible obtener un grado de paralelismo con una sola CPU de naturaleza convencional

a) Falso

b) Verdadero


8) ¿Cuáles de las siguientes operaciones pueden ser realizadas por la ALU?

a) Adición

b) Multiplicación

c) Entrada

d) Condicional


9) ¿Cómo alcanza el paralelismo una máquina con arquitectura canalizada?

a) Teniendo una sola instrucción, pero trabajando con múltiples conjuntos de datos

b) Teniendo partes diferentes de múltiples instrucciones en varias etapas de ejecución

c) Teniendo todas las partes de instrucciones múltiples ejecutándose en forma simultánea


10) Las computadoras pueden ser organizadas para proporcionar la capacidad para la ejecución paralela de instrucciones. ¿Cuáles de las siguientes son clasificaciones válidas de la organización de computadoras para la ejecución paralela de instrucciones?

a) SISD

b) MIMD

c) MISD

d) SIMD








Respuestas al Examen de Autoevaluación

1) a, b y c

2) c

3) b

4) d

5) b

6) b

7) b

8) a, b y d

9) b

10) a, b y d

No hay comentarios: