Para presentar la lección evaluativa III

18
Para presentar la lección evaluativa III, es necesario que haya leído y profundizado los temas relacionados con la Unidad III. Encontrará una serie de textos que lo introducirán a cada una de las preguntas, debe leerlos detenidamente poder responder correctamente a cada una de ellas. La actividad esta diseñada para contestar todas las preguntas en forma correcta. Encontrará preguntas de selección múltiple con única respuesta y con múltiple respuesta. Tenga en cuenta el límite de tiempo y que no puede contestar la lección en más de una ocasión. Número de puntos: 17 puntos Número de intentos: 2 Exitos ENSAMBLADOR. LENGUAJE DE BAJO NIVEL Se denomina lenguaje máquina a la serie de datos que la parte física de la computadora o hardware, es capaz de interpretar. Una computadora digital o, mejor dicho, su parte física, sólo distingue datos de tipo binario, es decir, constituidos por dos únicos valores a los que se denomina valor 0 y valor 1 y que, físicamente, se materializan con tensiones comprendidas entre 0 y 4.0 voltios y entre 4 y 5 voltios, respectivamente. Para representar datos que contengan una información se utilizan una serie de unos y ceros cuyo conjunto indica dicha información. La información que hace que el hardware de la computadora realice una determinada actividad llamada instrucción. Por consiguiente una instrucción es un conjunto de unos y ceros. Las instrucciones así formadas equivalen a acciones elementales de la máquina, por lo que al conjunto de dichas instrucciones que son interpretadas directamente por la máquina se denomina lenguaje máquina. El lenguaje máquina fue el primero que empleo el hombre para la programación de las primeras computadoras. Una instrucción en lenguaje máquina puede representarse de la siguiente forma: 011011001010010011110110 Esta secuencia es fácilmente ejecutada por la computadora, pero es de difícil interpretación, siendo aun mas difícil la interpretación de un programa (conjunto de instrucciones) escrito de esta forma. Esta dificultad hace que los errores sean frecuentes y la corrección de los mismos costosa, cuando no imposible, al igual que la verificación y modificación de los programas. La anterior secuencia de dígitos binarios (bits) puede indicar a la computadora que: <> Si lo vemos escrito de esta forma, lo entenderemos fácilmente, ya que está en nuestro lenguaje natural, pero la máquina elemental será incapaz de entender nada. Vemos, pues, que la forma de indicar a la máquina lo que debe hacer es

Transcript of Para presentar la lección evaluativa III

Page 1: Para presentar la lección evaluativa III

Para presentar la lección evaluativa III, es necesario que haya leído y profundizado los temas relacionados con la Unidad III. Encontrará una serie de textos que lo introducirán a cada una de las preguntas, debe leerlos detenidamente poder responder correctamente a cada una de ellas. La actividad esta diseñada para contestar todas las preguntas en forma correcta. Encontrará preguntas de selección múltiple con única respuesta y con múltiple respuesta. Tenga en cuenta el límite de tiempo y que no puede contestar la lección en más de una ocasión. Número de puntos: 17 puntos Número de intentos: 2 Exitos

ENSAMBLADOR. LENGUAJE DE BAJO NIVEL

Se denomina lenguaje máquina a la serie de datos que la parte física de la computadora o hardware, es capaz de interpretar.

Una computadora digital o, mejor dicho, su parte física, sólo distingue datos de tipo binario, es decir, constituidos por dos únicos valores a los que se denomina valor 0 y valor 1 y que, físicamente, se materializan con tensiones comprendidas entre 0 y 4.0 voltios y entre 4 y 5 voltios, respectivamente. Para representar datos que contengan una información se utilizan una serie de unos y ceros cuyo conjunto indica dicha información.

La información que hace que el hardware de la computadora realice una determinada actividad llamada instrucción. Por consiguiente una instrucción es un conjunto de unos y ceros. Las instrucciones así formadas equivalen a acciones elementales de la máquina, por lo que al conjunto de dichas instrucciones que son interpretadas directamente por la máquina se denomina lenguaje máquina.

El lenguaje máquina fue el primero que empleo el hombre para la programación de las primeras computadoras. Una instrucción en lenguaje máquina puede representarse de la siguiente forma:

011011001010010011110110

Esta secuencia es fácilmente ejecutada por la computadora, pero es de difícil interpretación, siendo aun mas difícil la interpretación de un programa (conjunto de instrucciones) escrito de esta forma. Esta dificultad hace que los errores sean frecuentes y la corrección de los mismos costosa, cuando no imposible, al igual que la verificación y modificación de los programas.

La anterior secuencia de dígitos binarios (bits) puede indicar a la computadora que: <>

Si lo vemos escrito de esta forma, lo entenderemos fácilmente, ya que está en nuestro lenguaje natural, pero la máquina elemental será incapaz de entender nada. Vemos, pues, que la forma de indicar a la máquina lo que debe hacer es

Page 2: Para presentar la lección evaluativa III

totalmente diferente de la indicar a un ser humano lo mismo, por lo que deben emplearse sistemas de traducción de una forma a otra.

En un principio el programador empleaba directamente el lenguaje máquina. En este caso el traductor era el programador; pero vimos también los problemas que esto causaba. Con la práctica en el manejo de la máquina se cayó en la cuenta de que se podría utilizar la propia máquina para ayudar en la traducción de estos programas. Es decir, que si a una máquina elemental se le dotaba de un programa, también elemental, que tradujera un número determinado de caracteres alfabéticos en una secuencia de unos y ceros, se podría escribir un programa constituido por una secuencia de grupos de caracteres alfabéticos, en la que cada uno de los grupos indicaría una acción a realizar por el ordenador y, una vez escrito el programa, sería la propia máquina la que pasaría los grupos de caracteres a bits.

Las ventajas de esto son evidentes, ya que para el hombre resulta mas fácil manipular grupos de caracteres y la traducción se haría de manera automática. Por ejemplo, se podría escribir:

TRASLADAR 11010110, 00011101

Esto indicaría que el contenido de la posición 11010110 había que pasarlo a la posición 00011101 si se sabe que al grupo alfabético TRASLADAR le corresponde la secuencia de bits 11110101. La máquina traduciría la anterior instrucción como:

11110101 11010110 00011101

Al grupo alfabético se le denomina mnemotécnico, y existirá un mnemotécnico por cada instrucción. Se le da este nombre porque sirve para recordar con mayor facilidad el conjunto de instrucciones de una determinada máquina. De esta forma aparecieron los lenguajes ensambladores (Assembler, en inglés). Poco a poco, con el avance de la programación (Software), estas primeras y sencillas ayudas se fueron haciendo más complejas, permitiendo que, además de los mnemotécnicos correspondientes a la operación a realizar, se pudieran emplear otros para indicar, por ejemplo, los operandos. La anterior instrucción se podría escribir de la siguiente forma: TRASLADAR POS-A POS-B Que nos resulta de más fácil comprensión. También se introdujo la posibilidad de indicar a la computadora la dirección de un salto en la secuencia de ejecución de un programa mediante la utilización de etiquetas.

Ventajas De Los Lenguajes Ensambladores

El corazón de la computadora es el microprocesador, éste maneja las necesidades aritméticas, de lógica y de control de la computadora.

El microprocesador tiene su origen en la década de los sesenta, cuando se diseño el circuito integrado (IC por sus siglas en ingles) al combinar varios componentes electrónicos en un solo componente sobre un "chip" de silicio. Los fabricantes colocaron este diminuto chip en un dispositivo parecido a un ciempiés y lo conectaron a un sistema en funcionamiento. A principios de los años setenta Intel introdujo el chip 8008 el cual, instalado en una computadora terminal, acompaño a la primera generación de microprocesadores. La variedad de microcomputadoras

Page 3: Para presentar la lección evaluativa III

también ocasiono un renovado interés en el lenguaje ensamblado, cuyo uso conlleva a diferentes ventajas:

Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C.

El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy técnicas que serian difíciles, si no es que imposibles de realizar en un lenguaje de alto nivel.

El conocimiento del lenguaje ensamblador permite una comprensión de la arquitectura de la maquina que ningún lenguaje de alto nivel puede ofrecer. Aunque la mayoría de los especialistas en Software desarrolla aplicaciones en lenguajes de alto nivel, que son más fáciles de escribir y de dar mantenimiento, una practica común es recodificar en lenguaje ensamblador aquellas rutinas que han causado cuellos de botella en el procesamiento. Los programas residentes y rutinas de servicio de interrupción casi siempre son desarrollados en el lenguaje ensamblador.

Los lenguajes de alto nivel fueron diseñados para eliminar las particularidades de una computadora especifica, mientras que un lenguaje ensamblador esta diseñado para una computadora especifica, o, de manera más correcta, para una familia especifica de microprocesadores.

Según la lectura:

Su respuesta :

Las instrucciones que la máquina interpreta directamente se llama lenguaje de máquina y está conformado por unos y ceros. Para facilitar el trabajo de la traducción, se ideó que cada máquina tuviera un programa que tradujera un número determinado de caracteres alfabéticos en unos y ceros

Correcto Con la práctica en el manejo de la máquina se cayó en la cuenta de que se podría utilizar la propia máquina para ayudar en la traducción de estos programas. Es decir, que si a una máquina elemental se le dotaba de un programa, también elemental, que tradujera un número determinado de caracteres alfabéticos en una secuencia de unos y ceros, se podría escribir un programa constituido por una secuencia de grupos de caracteres alfabéticos, en la que cada uno de los grupos indicaría una acción a realizar por el ordenador y, una vez escrito el programa, sería la propia máquina la que pasaría los grupos de caracteres a bits.

Page 4: Para presentar la lección evaluativa III

De acuerdo a la lectura:

Su respuesta :

Los mnemotécnicos se sirven para recordar fácilmente un conjunto de instrucciones

Correcto Se le da este nombre porque sirve para recordar con mayor facilidad el conjunto de instrucciones de una determinada máquina

ARQUITECTURA DE COMPUTADORES

◄Actividad anterior

Ir a...

►Actividad siguiente

Usted está aquí

campus07 ► 301302 ► Lecciones ► Act 12: Lección Evaluativa No. 3

Act 12: Lección Evaluativa No. 3

INSTRUCCIONES

INSTRUCCIONES

Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los dos tipos de enunciados son:

1. Instrucciones, tal como MOV y ADD, que el ensamblador traduce a código objeto.

2. Directivas, que indican al ensamblador que realiza una acción especifica, como definir un elemento de dato.

A continuación esta el formato general de un enunciado, en donde los corchetes indican una entrada opcional:

[identificador] operación [operando(s)] [;comentarios]

Un identificador (si existe), una operación y un operando (si existe) están separados por al menos un espacio en blanco o un carácter tabulador. Existe un máximo de 132 caracteres en una línea (512 desde el MASM 6.0), aunque la mayoría de los programadores prefiere permanecer en los 80 caracteres ya que es el numero máximo que cabe en la pantalla.

Page 5: Para presentar la lección evaluativa III

A continuación se presentan dos ejemplos de enunciados:

IDENTIFICADOR OPERACION OPERANDO COMENTARIO

Directiva: COUNT DB 1 ;Nom, Op, Operando Instrucción: MOV AX, 0 ;Operación, 2 Operand

Identificador, operación y operando pueden empezar en cualquier columna. Sin embargo, si de manera consistente se inicia en la misma columna para estas tres entradas se hace un programa mas legible.

· IDENTIFICADOR

Como ya se mencionó, el termino nombre se aplica al nombre de un elemento o directiva definida, mientras que el termino etiqueta se aplica al nombre de una instrucción.

· OPERACION

La operación, que debe ser codificada, es con mayor frecuencia usada para la definición de áreas de datos y codificación de instrucciones. Para un elemento de datos, una operación como DB o DW define un campo, área de trabajo o constante.

· OPERANDO

El operando (si existe) proporciona información para la operación que actúa sobre el. Para un elemento de datos, el operando identifica su valor inicial. Por ejemplo, en la definición siguiente de un elemento de datos llamado COUNTER, la operación DB significa "definir byte", y el operando inicializa su contenido con un valor cero:

NOMBRE OPERACION OPERANDO COMENTARIO

COUNTER DB 0 ;Define un byte con el valor 0

Para una instrucción, un operando indica en donde realizar la acción. Un operando de una instrucción puede tener una, dos o tal vez ninguna entrada. Aquí están tres ejemplos:

OPERACION OPERANDO COMENTARIO OPERANDO

RET ;Regresa Ninguno

INC CX ;Incrementa CX

Uno

ADD AX, 12 :Suma 12 al AX

Dos

DIRECTIVA SEGMENT

Page 6: Para presentar la lección evaluativa III

Un programa ensamblado en formato .EXE consiste en uno o mas segmentos. Un segmento de pila define el almacén de la pila, un segmento de datos define los elementos de datos y un segmento de código proporciona un código ejecutable. Las directivas para definir un segmento, SEGMENT y ENDS tienen el formato siguiente:

NOMBRE OPERACION OPERANDO COMENTARIO

Nombre SEGMENT [Opciones] ;Inicia el segmento

-

-

-

Nombre ENDS ;Fin del segmento

El enunciado SEGMENT define el inicio de un segmento. El nombre del segmento debe estar presente, ser único y cumplir las convenciones para nombres del lenguaje. EL enunciado ENDS indica el final del segmento y contiene el mismo nombre del enunciado SEGMENT. El tamaño máximo de un segmento es de 64K. El operando de un enunciado SEGMENT puede tener tres tipos de opciones: alineación, combinar y clase, codificadas en este formato:

nombre SEGMENT alineación combinar ' clase '

DIRECTIVA ASSUME.

Un programa utiliza el registro SS para direccionar la pila, al registro DS para direccionar el segmento de datos y el registro CS para direccionar el segmento de código. Para este fin, usted tiene que indicar al ensamblador el propósito de cada segmento en el programa. La directiva para este propósito es ASSUME, codificada en el segmento de código como sigue:

OPERACION OPERANDO ASSUME SS:nompila, DS:nomsegdatos, CS: nomsegcodigo,. . .

Del lenguaje assembler se puede decir: Su respuesta : Para que un programa sea legible tanto el identificador como la operación y el operando deben iniciar en la misma columna Correcto Identificador, operación y operando pueden empezar en cualquier columna. Sin embargo, si de manera consistente se inicia en la misma columna para estas tres entradas se hace un programa mas legible.

Page 7: Para presentar la lección evaluativa III

Según la lectura Su respuesta : Cuando se habla de una etiqueta, es el nombre que se da a una instrucción Los enunciados SEGMENT Y END definen el inicio y fin de un segmento Correcto El enunciado SEGMENT define el inicio de un segmento. El nombre del segmento debe estar presente, ser único y cumplir las convenciones para nombres del lenguaje. EL enunciado ENDS indica el final del segmento y contiene el mismo nombre del enunciado SEGMENT. MODOS DE DIRECCIONAMIENTO MODOS DE DIRECCIONAMIENTO Existen 12 modos de direccionamiento básicos. Estos pueden clasificarse en 5 grupos: 1. Direccionamientos accesando dato inmediato y registro de datos (modos inmediato y de registro). 2. Direccionamiento accesando datos en memoria (modo memoria) 3. Direccionamiento accesando puertos E/S. (modo E/S) 4. Direccionamiento relativo 5. Direccionamiento implícito. 1. DIRECCIONAMIENTO ACCESANDO DATO Y REGISTRO INMEDIATO · Direccionamiento de registro. Especifica el operando fuente y el operando destino. Los registros deben ser del mismo tamaño. ej. MOV DX, CX MOV CL, DL. · Direccionamiento inmediato . Un dato de 8 o 16 bits se especifica como parte de la instrucción. p.ej. MOV CL, 03H. Aquí el operando fuente está en modo inmediato y el destino en modo registro. 2. DIRECCIONAMIENTO ACCESANDO DATOS EN MEMORIA · Direccionamiento directo. La dirección efectiva (EA) de 16 bits se toma directamente del campo de desplazamiento de la instrucción. El desplazamiento se coloca en la localidad siguiente al código de operación. Esta EA o desplazamiento es la distancia de la localidad de memoria al valor actual en el segmento

Page 8: Para presentar la lección evaluativa III

de datos (DS) en el cual el dato está colocado. Ej. MOV CX, START. START puede definirse como una localidad de memoria usando las pseudoinstrucciones DB o DW. · Direccionamiento de registro indirecto . La dirección efectiva EA está especificada en un registro apuntador o un registro índice. El apuntador puede ser el registro base BX o el apuntador base BP; el registro índice puede ser el Indice Fuente (SI) o el Indice Destino (DI). Ej. MOV (DI),BX. · Direccionamiento base EA se obtiene sumando un desplazamiento (8 bits con signo o 16 bits sin signo) a los contenidos de BX o BP. Los segmentos usados son DS y SS. Cuando la memoria es accesada, la dirección física de 20 bits es calculada de BX y DS, por otra parte, cuando la pila es accesada, la dirección es calculada de BP y SS. Ej. MOV AL, START (BX). el operando fuente está en modo base, y la EA se obtiene sumando los valores de START y BX. · Direccionamiento indexado . EA se calcula sumando un desplazamiento (8 o 16 bits) a los contenidos de SI o DI. Ej. MOV BH,START (SI). · Direccionamiento base indexado . EA se calcula sumando un registro base (BX o BP), un registro índice (DI o SI), y un desplazamiento (8 o 16 bits). Ej. MOV ALPHA (SI)(BX),CL. Este direccionamiento proporciona una forma conveniente para direccionar un arreglo localizado en la pila. · Direccionamiento (cadena?) Este modo usa registros índice. La cadena de instrucciones automáticamente asume que SI apunta al primer byte o palabra del operando destino. Los contenidos de SI y DI son incrementados automáticamente (poniendo a 0 DF mediante la instrucción CLD) o decrementados (poniendo a 1 DF mediante la instrucción STD) para apuntar al siguiente byte o palabra. El segmento del operando fuente es DS y puede ser encimado. El segmento del operando destino debe ser ES y no puede ser encimado. Ej. MOVS BYTE. 3. DIRECCIONAMIENTO ACCESANDO PUERTOS (E/S) Hay dos tipos de direccionamiento usando puertos: directo e indirecto. · En el modo directo, el número de puerto es el operando inmediato de 8 bits, lo cual permite accesar puertos numerados del 0 al 255. Ej. OUT 05H,AL.

Page 9: Para presentar la lección evaluativa III

· En el modo indirecto, el número de puerto se toma de DX, permitiendo así 64K puertos de 8 bits o 32K puertos de 16 bits. Las transferencias E/S de 8 y 16 bits deben hacerse vía AX y AL, respectivamente. 4. DIRECCIONAMIENTO RELATIVO En este modo el operando se especifica como un desplazamiento de 8 bits con signo, relativo al PC. Ej. JNC START. Si C=0, entonces el PC se carga con PC+el valor de START. 5. DIRECCIONAMIENTO IMPLICITO Las instrucciones que usan esta modo no tienen operandos. Ej. CLC.

Cuando se está hablando de direccionamiento, según la lectura:

Su respuesta :

Para el direccionamiento de registro indirecto, la dirección efectiva puede estar

especificada por: un registro apuntador ó un registro índice.

Correcto

La dirección efectiva EA está especificada en un registro apuntador o un registro índice.

El apuntador puede ser el registro base BX o el apuntador base BP; el registro índice

puede ser el Índice Fuente (SI) o el Índice Destino (DI). De acuerdo a la lectura el direccionamiento:

Su respuesta :

Al direccionar puertos en modo directo, se permite acceder a los puertos del 0 al 255

Correcto

En el modo directo, el número de puerto es el operando inmediato de 8 bits, lo cual permite accesar puertos numerados del 0 al 255. Ej. OUT 05H,AL.

Según la lectura:

Su respuesta : Entre las instrucciones, el grado de paralelismo depende de la frecuencia de dependencia los datos y control de retardos de las operaciones codificadas El paralelismo lo determina el número de instrucciones por captar, decodificar, ejecutar y dar resultados al mismo tiempo Correcto El paralelismo del procesador (la capacidad para procesar instrucciones en paralelo en cada etapa) viene determinado por el numero de instrucciones que se pueden captarse, decodificarse, ejecutarse y escribir resultados al mismo tiempo.

Page 10: Para presentar la lección evaluativa III

PROCESADOR SUPERESCALAR Es el término utilizado para designar un tipo de microarquitectura de procesador capaz de ejecutar más de una instrucción por ciclo de reloj. El término se emplea por oposición a la microarquitectura escalar que sólo es capaz de ejecutar una instrucción por ciclo de reloj. En la clasificación de Flynn, un procesador superescalar es un procesador de tipo MIMD (multiple instruction multiple data). La microarquitectura superescalar utiliza el paralelismo de instrucciones además del paralelismo de flujo, éste último gracias a la estructura en pipeline. La estructura típica de un procesador superescalar consta de un pipeline con las siguientes etapas: Lectura (fetch) Decodificación (decode) Lanzamiento (dispatch) Ejecución (execute) Escritura (writeback) Finalización (retirement) En un procesador superescalar, el procesador maneja más de una instrucción en cada etapa. El número máximo de instrucciones en una etapa concreta del pipeline se denomina grado, así un procesador superescalar de grado 4 en lectura (fetch) es capaz de leer como máximo cuatro instrucciones por ciclo. El grado de la etapa de ejecución depende del número y del tipo de las unidades funcionales. Un procesador superescalar suele tener unidades funcionales independientes de los tipos siguientes : unidad aritmético lógica (ALU) unidad de lectura / escritura en memoria (Load/Store Unit) unidad de coma flotante (Floating Point Unit) unidad de salto (Branch unit) Un procesador superescalar es capaz de ejecutar más de una instrucción simultáneamente únicamente si las instrucciones no presentan algún tipo de dependencia (hazard). Los tipos de dependencia entre instrucciones son : Dependencia estructural, esta ocurre cuando dos instrucciones requieren el mismo tipo unidad funcional y su número no es suficiente. Dependencia de datos, esta ocurre cuando una instrucción necesita del resultado de otra instrucción para ejecutarse, por ejemplo R1<=R2+R3 y R4<=R1+5 . Dependencia de escritura o falsa dependencia , esta ocurre cuando dos instrucciones necesitan escribir en la misma memoria, por ejemplo R1<=R2+R3 y R1<=R1+5 . La detección y resolución de las dependencias entre instrucciones puede ser estática (durante la compilación) o dinámica, es decir, a medida que se ejecuta un programa, generalmente durante la etapas de codificación y lanzamiento de las instrucciones. La detección y resolución dinámica de las dependencias entre instrucciones suele realizarse mediante alguna variante del algoritmo de Tomasulo que permite la ejecución de instrucciones en un orden distinto al del programa también llamada ejecución en desorden . La eficacia de un procesador superescalar viene limitada por un lado por la dificultad en suministrar al procesador suficientes instrucciones que puedan ser ejecutadas en paralelo y por otro lado por las prestaciones de la jerarquía de memorias.

Page 11: Para presentar la lección evaluativa III

Si las instrucciones de salto son un problema para los procesadores con pipeline en general, en el caso de los procesadores superescalares, el problema se multiplica ya que un parón en el pipeline tiene consecuencias en un número mayor de instrucciones. Por esta razón, los fabricantes de procesadores recurren a técnicas de ejecución especulativa y diseñan algoritmos de predicción de saltos cada vez más sofisticados así como sistemas de almacenamiento de instrucciones por trazas (trace caches). Las arquitecturas superescalares adolecen de una estructura compleja y de un mal aprovechamiento de sus recursos debido en parte a la dificultad en encontrar suficientes instrucciones paralelizables. Una forma de obtener un mayor número de instrucciones paralelizables es aumentar la ventana de instrucciones, es decir el conjunto de instrucciones que la unidad de lanzamiento considera como candidatas a ser lanzadas en un momento dado. Desafortunadamente la complejidad del procesador superescalar aumenta desproporcionadamente con respecto al tamaño de dicha ventana lo que se traduce por un ralentizamiento general del circuito. Otra forma de obtener más instrucciones paralelizables es manipulando instrucciones de más de un programa a la vez, lo que se conoce bajo el nombre de multitarea simultánea o multithreading simultáneo. Mientras las primeras CPUs superescalares disponían de dos ALUs y una sola FPU, un procesador moderno como el PowerPC 970 incluye cuatro ALUs y dos FPUs, además de dos unidades SIMD. Si el despachador no es eficiente haciendo trabajar lo máximo posible a estas unidades, el rendimiento global del procesador se verá mermado. La CDC 6600 de Seymour Cray, construida en 1965, es la primera arquitectura superescalar, siendo llevado el concepto a las microcomputadoras en las CPUs RISC. Esta posibilidad venía dada por la simpleza de los núcleos RISC, permitiendo meter más unidades de ejecución en un mismo chip. Esta fue una de las razones de la rapidez de los sistemas RISC frente a los más antiguos CISC durante las décadas de los 80 y los 90, pero a medida que los procesos de fabricación mejoraron y se pudieron meter más y más transistores en el mismo chip, hasta diseños complejos como el IA-32 pudieron ser superescalares. La inmensa mayoría de las CPUs desarrolladas desde 1998 son superescalares. De acuerdo a la lectura los procesadores superescalares: Su respuesta : A nivel de microarquitectura de procesador, es la capacidad del procesador de ejecutar más de una instrucción por ciclo de reloj. Para que el procesador superescalar pueda ejecutar más varias instrucciones simultáneamente, estas no deben presentar dependencias Correcto Un procesador superescalar es capaz de ejecutar más de una instrucción simultáneamente únicamente si las instrucciones no presentan algún tipo de dependencia (hazard).

Page 12: Para presentar la lección evaluativa III

De acuerdo a la lectura el direccionamiento: Su respuesta : Al direccionar puertos en modo directo, se permite acceder a los puertos del 0 al 255 Correcto En el modo directo, el número de puerto es el operando inmediato de 8 bits, lo cual permite accesar puertos numerados del 0 al 255. Ej. OUT 05H,AL.

PARALELISMO. NIVELES DE PARALELISMO

Por lo general la computadora se visualiza como una máquina secuencial, en el cual la CPU lee la instrucción de la memoria y la va ejecutando una por una. Y el programador sigue ese mismo enfoque al especificar algoritmos como una secuencia de instrucciones para que las ejecute la computadora.

Pero internamente, las computadoras secuenciales presentan un paralelismo en diversas funciones, por mencionar: el traslape de algunas operaciones, mientras un proceso esta escribiendo a disco, otro proceso esta ejecutándose en la CPU; a nivel de microoperación, señales de control se generan y viajan al mismo tiempo a través de canales paralelos, como el caso de la comunicación a una impresora conectada al puerto paralelo.

En computadoras modernas de tipo SISD el paralelismo viene implementado en la arquitectura del procesador, conocido como paralelismo a nivel instrucción, por ejemplo: Pipeline o procesamiento en línea de instrucciones [ Inf. Tec. CTCOT9901 ]. Que consiste en ejecutar al mismo tiempo en diversas etapas las instrucciones del programa; mientras en una etapa se hace la ejecución de una instrucción, simultáneamente en otra etapa se está realizando una lectura de la siguiente instrucción, es un esquema muy similar al de una línea de ensamble de autos.

Otra característica de procesadores recientes es que poseen varias UALs (Unidad Aritmética Lógica) para realizar operaciones de suma, resta, multiplicación y división en forma paralela.

El paralelismo a nivel de programación resulta algunas veces complicado y otras veces sencillo dependiendo de la arquitectura de la supercomputadora, del modelo o técnica empleada para programar en paralelo e inclusive del programa en sí.

PARALELISMO ENTRE INSTRUCCIONES Y PARALELISMO DE LA MÁQUINA

El grado de paralelismo entre instrucciones (el grado en el que varias instrucciones pueden estar ejecutándose al mismo tiempo) depende en gran medida de la frecuencia con que aparecen dependencias de datos y de control y de los retardos de las operaciones codificadas con las instrucciones ya que determinan el momento en el que el resultado de una operación está disponible para ejecutar instrucciones que ‘consumen’ ese resultado, lo pueden necesitar como operando, o bien como condición para comprobar un salto condicional.

Page 13: Para presentar la lección evaluativa III

load r1, r2(23) add r3, 1 add r4, r5

En este fragmento, se puede ver que no hay ningún tipo de dependencia, todas las instrucciones son totalmente distintas, así que se puede decir que tiene un grado de paralelismo igual a 3, las 3 instrucciones podrían estar ejecutándose al mismo tiempo.

En cambio

add r3, 1 add r4, r3 st (r4), r0

Deben ejecutarse secuencialmente, ya que existen dos riegos RAW entre la 1ª y 2ª y entre la 2ª y 3ª, el grado de paralelismo sería 1.

El paralelismo del procesador (la capacidad para procesar instrucciones en paralelo en cada etapa) viene determinado por el numero de instrucciones que se pueden captarse, decodificarse, ejecutarse y escribir resultados al mismo tiempo.

Fuente: http://telematica.cicese.mx/computo/super/cicese2000/paralelo/Part4.html

Fuente: http://www.estumomento.net/otros/jignacio/2007/11/28/resumen-de-procesadores-superescalares-i/

De acuerdo a la lectura:

Su respuesta :

El enfoque de los programadores es hacer algoritmos como secuencia de instrucciones

para los ejecute la máquina

Computadores actuales tienen incluido el paralelismo en la arquitectura del procesador

Correcto

En computadoras modernas de tipo SISD el paralelismo viene implementado en la

arquitectura del procesador, conocido como paralelismo a nivel instrucción

Continuar

Usted se ha autentificado como gabriel perez correa (Salir)

Page 14: Para presentar la lección evaluativa III

Según la lectura:

Su respuesta :

Entre las instrucciones, el grado de paralelismo depende de la frecuencia de

dependencia los datos y control de retardos de las operaciones codificadas

El paralelismo lo determina el número de instrucciones por captar, decodificar, ejecutar

y dar resultados al mismo tiempo

Correcto

El paralelismo del procesador (la capacidad para procesar instrucciones en paralelo en

cada etapa) viene determinado por el numero de instrucciones que se pueden captarse,

decodificarse, ejecutarse y escribir resultados al mismo tiempo.

PROCESADOR SUPERESCALAR

Es el término utilizado para designar un tipo de microarquitectura de procesador capaz de ejecutar más de una instrucción por ciclo de reloj. El término se emplea por oposición a la microarquitectura escalar que sólo es capaz de ejecutar una instrucción por ciclo de reloj. En la clasificación de Flynn, un procesador superescalar es un procesador de tipo MIMD (multiple instruction multiple data). La microarquitectura superescalar utiliza el paralelismo de instrucciones además del paralelismo de flujo, éste último gracias a la estructura en pipeline. La estructura típica de un procesador superescalar consta de un pipeline con las siguientes etapas:

Lectura (fetch) Decodificación (decode) Lanzamiento (dispatch) Ejecución (execute) Escritura (writeback) Finalización (retirement)

En un procesador superescalar, el procesador maneja más de una instrucción en cada etapa. El número máximo de instrucciones en una etapa concreta del pipeline se denomina grado, así un procesador superescalar de grado 4 en lectura (fetch) es capaz de leer como máximo cuatro instrucciones por ciclo. El grado de la etapa de ejecución depende del número y del tipo de las unidades funcionales.

Un procesador superescalar suele tener unidades funcionales independientes de los tipos siguientes :

unidad aritmético lógica (ALU) unidad de lectura / escritura en memoria (Load/Store Unit) unidad de coma flotante (Floating Point Unit) unidad de salto (Branch unit)

Page 15: Para presentar la lección evaluativa III

Un procesador superescalar es capaz de ejecutar más de una instrucción simultáneamente únicamente si las instrucciones no presentan algún tipo de dependencia (hazard). Los tipos de dependencia entre instrucciones son :

Dependencia estructural, esta ocurre cuando dos instrucciones requieren el mismo tipo unidad funcional y su número no es suficiente.

Dependencia de datos, esta ocurre cuando una instrucción necesita del resultado de otra instrucción para ejecutarse, por ejemplo R1<=R2+R3 y

R4<=R1+5 .

Dependencia de escritura o falsa dependencia , esta ocurre cuando dos instrucciones necesitan escribir en la misma memoria, por

ejemplo R1<=R2+R3 y R1<=R1+5 .

La detección y resolución de las dependencias entre instrucciones puede ser estática (durante la compilación) o dinámica, es decir, a medida que se ejecuta un programa, generalmente durante la etapas de codificación y lanzamiento de las instrucciones.

La detección y resolución dinámica de las dependencias entre instrucciones suele realizarse mediante alguna variante del algoritmo de Tomasulo que permite la ejecución de instrucciones en un orden distinto al del programa también llamada ejecución en desorden .

La eficacia de un procesador superescalar viene limitada por un lado por la dificultad en suministrar al procesador suficientes instrucciones que puedan ser ejecutadas en paralelo y por otro lado por las prestaciones de la jerarquía de memorias.

Si las instrucciones de salto son un problema para los procesadores con pipeline en general, en el caso de los procesadores superescalares, el problema se multiplica ya que un parón en el pipeline tiene consecuencias en un número mayor de instrucciones.

Por esta razón, los fabricantes de procesadores recurren a técnicas de ejecución especulativa y diseñan algoritmos de predicción de saltos cada vez más sofisticados así como sistemas de almacenamiento de instrucciones por trazas (trace caches).

Las arquitecturas superescalares adolecen de una estructura compleja y de un mal aprovechamiento de sus recursos debido en parte a la dificultad en encontrar suficientes instrucciones paralelizables. Una forma de obtener un mayor número de instrucciones paralelizables es aumentar la ventana de instrucciones, es decir el conjunto de instrucciones que la unidad de lanzamiento considera como candidatas a ser lanzadas en un momento dado. Desafortunadamente la complejidad del procesador superescalar aumenta desproporcionadamente con respecto al tamaño de dicha ventana lo que se traduce por un ralentizamiento general del circuito. Otra forma de obtener más instrucciones paralelizables es manipulando instrucciones de más de un programa a la vez, lo que se conoce bajo el nombre de multitarea simultánea o multithreading simultáneo.

Mientras las primeras CPUs superescalares disponían de dos ALUs y una sola FPU, un procesador moderno como el PowerPC 970 incluye cuatro ALUs y dos

Page 16: Para presentar la lección evaluativa III

FPUs, además de dos unidades SIMD. Si el despachador no es eficiente haciendo trabajar lo máximo posible a estas unidades, el rendimiento global del procesador se verá mermado.

La CDC 6600 de Seymour Cray, construida en 1965, es la primera arquitectura superescalar, siendo llevado el concepto a las microcomputadoras en las CPUs RISC. Esta posibilidad venía dada por la simpleza de los núcleos RISC, permitiendo meter más unidades de ejecución en un mismo chip. Esta fue una de las razones de la rapidez de los sistemas RISC frente a los más antiguos CISC durante las décadas de los 80 y los 90, pero a medida que los procesos de fabricación mejoraron y se pudieron meter más y más transistores en el mismo chip, hasta diseños complejos como el IA-32 pudieron ser superescalares.

La inmensa mayoría de las CPUs desarrolladas desde 1998 son superescalares.

Fuente: http://es.wikipedia.org/wiki/Superescalar

Su respuesta : A nivel de microarquitectura de procesador, es la capacidad del procesador de ejecutar más de una instrucción por ciclo de reloj. Para que el procesador superescalar pueda ejecutar más varias instrucciones simultáneamente, estas no deben presentar dependencias Correcto Un procesador superescalar es capaz de ejecutar más de una instrucción simultáneamente únicamente si las instrucciones no presentan algún tipo de dependencia (hazard)

Act 12: Lección Evaluativa No. 3

Según la lectura sobre las dependencias:

Su respuesta :

La falsa dependencia hace referencia a la necesidad de dos instrucciones para escribir

en la misma memoria.

Correcto

Dependencia de escritura o falsa dependencia , esta ocurre cuando dos instrucciones

necesitan escribir en la misma memoria, por ejemplo R1<=R2+R3 y R1<=R1+5.

SISTEMAS MULTIPROCESADOR SISTEMAS MULTIPROCESADOR Los sistemas multiprocesadores proporcionan una alternativa arquitectónica atractiva para mejorar el rendimiento de los sistemas informáticos mediante la reunión de un cierto número de procesadores estándares de bajo costo. El costo relativamente alto de los sistemas multiprocesadores puede ser compensado si se les emplea como servidores de cálculo en sistemas distribuidos.

Page 17: Para presentar la lección evaluativa III

El multiprocesamiento puede aplicarse para proporcionar: Aumento en la productividad del sistema: mediante la ejecución de una serie de diferentes procesos de usuario sobre diferentes procesadores en paralelo. Ganancia de velocidad de la aplicación: mediante la ejecución de algunas partes de la aplicación en paralelo. En entornos de tiempo compartido, la productividad puede mejorarse ejecutando una serie de procesos de usuario no relacionados entre si sobre diferentes procesadores en paralelo. La ganancia de velocidad en las aplicaciones puede obtenerse explotando el paralelismo dentro de una aplicación y creando múltiples procesos o hebras que pueden ser planificados para ejecución sobre diferentes procesadores. La comunicación y sincronización entre procesadores reduce la ganancia de velocidad global al frenar cálculos individuales y consumir ancho de banda de interconexión del sistema. ESTRUCTURAS FUNCIONALES En términos muy generales podemos caracterizar a los multiprocesadores atendiendo a 2 criterios: Un multiprocesador es un único computador que incluye múltiples procesadores. Los procesadores se pueden comunicar y cooperar a diferentes niveles para resolver un problema dado. La comunicación se puede realizar enviando mensajes de un procesador a otro o compartiendo una memoria común. Existen algunas similitudes entre los multiprocesadores y los sistemas multicomputador, ya que ambos están motivados por el mismo objetivo básico: soportan operaciones concurrentes en el sistema. Un sistema multiprocesador esta controlado por un sistema operativo que proporciona interacción entre los procesadores y sus programas a nivel de procesos. Existen Ligeramente acoplados: Los procesadores individuales tienen memorias privadas y no existe una memoria global compartida. Cada procesador tiene un conjunto de dispositivos de entrada-salida y una gran memoria local a donde acceden la mayor parte de las instrucciones y datos. los procesos que se ejecutan sobre diferentes módulos de computador se comunican mediante intercambio de mensajes a través de un sistema de transferencia de mensajes (STM). Estrechamente acoplados: Los procesadores contienen memoria globalmente compartida a la que todos lo procesadores tienen acceso. En cada procesador puede existir una memoria caché. Existe una completa conectividad entre los procesadores y la memoria, esta conectividad se puede llevar a cabo bien insertando una red de interconexión entre los procesadores y la memoria bien por medio de una memoria multipuesto. La principal característica de un sistema multiprocesador es que cada procesador puede compartir un conjunto de módulos de memoria principal, y dispositivos de E/S. Esto se consigue a través de redes de conexión de memoria-procesador y otra de conexión E/S-procesador.

Page 18: Para presentar la lección evaluativa III

Según la lectura podemos decir: Su respuesta : Mediante la reunión de varios procesadores de bajo costo, los sistemas multiprocesadores son una alternativa para mejorar el rendimiento de los sistemas informáticos Por medio de redes de conexión de memoria-procesador, cada procesador puede compartir módulos de memoria principal y dispositivos. Correcto La principal característica de un sistema multiprocesador es que cada procesador puede compartir un conjunto de módulos de memoria principal, y dispositivos de E/S. Esto se consigue a través de redes de conexión de memoria-procesador y otra de conexión E/S-procesador.

De acuerdo a la lectura

Su respuesta :

Para resolver un problema los procesadores se comunican enviando mensajes Para los sistemas multiprocesador estrechamente acoplados, existe completa conectividad entre los procesadores y la memoria

Correcto Estrechamente acoplados: Los procesadores contienen memoria globalmente compartida a la que todos lo procesadores tienen acceso. En cada procesador puede existir una memoria caché. Existe una completa conectividad entre los procesadores y la memoria, esta conectividad se puede llevar a cabo bien insertando una red de interconexión entre los procesadores y la memoria bien por medio de una memoria multipuesto.

Continuar