Cuaderno de problemas y cuestiones de Ingeniería de Computadores

Tema 2
Curso 2007–2008
J 1. Se tiene el siguiente listado que corresponde a un programa en ensamblador de la CPU teórica. Dicho listado forma parte del código de la Tarea 1. (a)
ORIGEN 2000 h INICIO p r i m e r a . PILA 30 h . CODIGO primera : MOVL R1 , ’ 1 ’ MOVH R1 , 0 repite : MOVL R7 , 2 h MOVH R7 , 0 h MOVL R2 , 00 h MOVH R2 , 01 h ADD R1 , R1 , R2 INT 10 h JMP r e p i t e FIN

(b)
ORIGEN 2000 h INICIO p r i m e r a . PILA 30 h . CODIGO primera : CLI MOVL R1 , ’ 1 ’ MOVH R1 , 0 repite : MOVL R2 , 00 h MOVH R2 , 01 h ADD R1 , R1 , R2 INT 10 h JMP r e p i t e FIN

(c)
ORIGEN 2000 h INICIO p r i m e r a . PILA 30 h . CODIGO primera : MOVL R1 , ’ 1 ’ MOVH R1 , 0 repite : XOR R0 , R0 , R0 MOVL R3 , 0C8h MOVH R3 , 80 h MOV [ R3 ] , R0 MOVL R2 , 00 h MOVH R2 , 01 h ADD R1 , R1 , R2 INT 10 h JMP r e p i t e FIN

1 2 3 4 5 6 7 8 9

CLI MOVL MOVH XOR MOV INC M0VH MOV MOV

R3 , 00 h R3 , 0E0h R2 , R2 , R2 [ R3 ] , R2 R2 R3 , 61 h [ R3 ] , R2 [ R2 ] , R3

En la figura se muestran los espacios de direcciones ocupados por las tareas y el Sistema Operativo. — Si intentásemos que la CPU teórica diera soporte a un sistema operativo multitarea moderno, ¿Cuál o cuáles de las instrucciones anteriores causarían problemas según el comportamiento esperado en un S.O. multitarea, y por qué causa? Contestar número de instrucción y causa. Instrucción no 1 → Intento de ejecución por parte de la tarea de una instrucción “privilegiada”. Sólo podría ejecutarla el S.O. Instrucción no 5 → La tarea intenta escribir en el área de memoria del S.O. Instrucción no 9 → La tarea intenta escribir en una estructura de datos reservada del sistema, bajo control del S.O.

En particular, forman parte de una tarea ubicada en memoria a partir de la dirección 2000h. Además de esta tarea, había otra tarea ubicada a partir de la dirección 1000h y un pequeño sistema operativo multitarea a partir de la dirección 8000h. — ¿Qué deficiencias de la CPU teórica ponen de manifiesto cada uno de los programas anteriores? Programa (a): No hay conmutación automática de la pila cuando se transfiere el control al sistema operativo. Programa (b): Hay instrucciones como la CLI que sólo debería ejecutar el sistema operativo. Programa (c): El área de memoria asociada al sistema operativo es accesible a las tareas para su lectura o escritura.

J 3. Se ha construido una CPU que requiere 4 ciclos (periodos de reloj) para ejecutar cualquier instrucción. Tras probar diferentes periodos de reloj se comprueba que el periodo mínimo con el que es capaz de trabajar correctamente es 2 ns. — ¿Cuál es la máxima frecuencia de reloj que puede emplearse en la CPU anterior? 500 MHz. — ¿Cuántas instrucciones puede ejecutar por cada ciclo de reloj? Ejemplo: 1,2 instrucciones/ciclo. 0,25 instrucciones/ciclo — ¿Cuántas instrucciones por segundo puede ejecutar? 125 millones de instrucciones/segundo

J 2. Los programas (a), (b) y (c) siguientes han sido extraídos de una sesión práctica en la que se mostraban las deficiencias de la CPU teórica para soportar sistemas operativos multitarea.

1

Soluciones de los ejercicios del tema 2

Ingeniería de Computadores

En la práctica, empleando la técnica de segmentación se consigue incrementar notablemente la frecuencia de reloj de la CPU, el número de instrucciones que puede ejecutar por ciclo de reloj y por lo tanto el número de instrucciones por segundo. Para mejorar el rendimiento de la CPU anterior se ha dividido la ejecución de todas las instrucciones en 20 etapas, cada una de las cuales requiere un ciclo de reloj. Se han hecho pruebas haciendo que las 20 etapas trabajen en modo no segmentado (en este modo no hay paralelismo en la ejecución, pues en cada ciclo sólo hay una etapa activa) y se comprueba que la CPU es capaz de ejecutar a lo sumo 100 millones de instrucciones por segundo. — ¿Cuál es la máxima frecuencia de reloj que puede emplearse una vez segmentada la CPU? 2 GHz. — ¿Cuántas instrucciones puede ejecutar la CPU segmentada cada ciclo de reloj? Ejemplo: 1,2 instrucciones/ciclo. 1 instrucción/ciclo — ¿Cuántas instrucciones por segundo puede ejecutar? 2000 millones de instrucciones/segundo

Al funcionar en paralelo, el periodo mínimo de reloj coincide con la duración mínima de cada etapa, es decir, 100 ns/2 = 50 ns. Resulta una frecuencia máxima de reloj de 20 MHz. Como una CPU segmentada es capaz de ejecutar a lo sumo 1 instrucción por ciclo de reloj, resulta que la CPU es capaz de ejecutar a lo sumo: 20 millones de instrucciones/segundo

J 5. Se pretende realizar desde cero una CPU que implemente la arquitectura PIC16x. Para ello, en primer lugar se ha diseñado una versión preliminar no segmentada de la CPU, la cual es capaz de ejecutar 2,5 millones de instrucciones por segundo trabajando a la máxima frecuencia. La ejecución de cualquier instrucción se divide en cuatro etapas que funcionan de forma secuencial. Cada una de estas etapas necesita un ciclo de reloj para completarse. — ¿Cuál es la máxima frecuencia de reloj que puede emplearse con dicha CPU? 10 MHz — ¿Cuál es tiempo mínimo necesario para ejecutar cualquier instrucción dicha CPU? Contestar en microsegundos.
1 2,5·106

J 4. La técnica de la segmentación en la ejecución de instrucciones se usa no sólo en potentes CPUs de propósito general que soportan los sistemas multitarea actuales. También se emplea en pequeñas CPUs, como la CPU de 8 bits incorporada en los microcontroladores de la familia PIC16x de la empresa Microchip, usados para implementar sistemas de control simples de bajo coste. Se pretende realizar desde cero una CPU que implemente la arquitectura PIC16x. Para ello, en primer lugar se ha diseñado una versión preliminar no segmentada de la CPU, la cual es capaz de ejecutar 10 millones de instrucciones por segundo trabajando a la máxima frecuencia. La ejecución de cualquier instrucción se divide en dos etapas que funcionan de forma secuencial: una etapa de búsqueda de la instrucción y una etapa de ejecución propiamente dicha. Cada una de estas etapas necesita un ciclo de reloj para completarse. — ¿Cuál es tiempo mínimo necesario para ejecutar cualquier instrucción en dicha CPU? 100 ns — ¿Cuál es la máxima frecuencia de reloj que puede emplearse con dicha CPU? 20 MHz Una vez se ha realizado la versión inicial de la CPU, ésta se ha modificado empleando la técnica de segmentación. Para ello se permite que las dos etapas funcionen en paralelo. — ¿Cuántas instrucciones por segundo puede ejecutar, a lo sumo, la versión segmentada de la CPU? Razona la respuesta.

= 0,4 µseg

Una vez se ha realizado la versión inicial de la CPU, ésta se ha modificado empleando la técnica de segmentación. Para ello se permite que las cuatro etapas funcionen en paralelo. — ¿Cuál es ahora el tiempo mínimo necesario para ejecutar cualquier instrucción, y cuántas instrucciones por segundo puede ejecutar, a lo sumo, la versión segmentada de la CPU? Tiempo en microsegundos: 0,4 Número de instrucciones/s: 10 millones J 6. Se ha rediseñado la organización interna de la CPU teórica para soportar la segmentación en la ejecución de instrucciones. Para ello, la ejecución de cualquier instrucción se ha dividido en dos etapas que pueden llevarse a cabo de forma concurrente. La primera etapa consiste en la búsqueda de la instrucción e incremento del contador de programa, la cual requiere 1,5 ns. La segunda etapa consiste en la ejecución propiamente dicha, la cual requiere también 1,5 ns. Suponiendo que la CPU acaba de ser reiniciada, es decir, no ha ejecutado aún ninguna instrucción, indicar el tiempo necesario para ejecutar el siguiente fragmento de código cuando la CPU se conecta a una cache de primer nivel dividida y cuando se conecta a una cache de primer nivel unificada. Nota: No considerar limitaciones de la ALU.
1 2 3 4 5 6 7

MOVL XOR ADD MOV MOV XOR MOV

R2 , 05 h R4 , R4 , R4 R4 , R2 , R1 R3 , [ R4 ] [ R3 ] , R1 R1 , R2 , R3 R1 , [ R6 ]

Cache dividida: 12 ns Cache unificada: 15 ns 2

Ingeniería de Computadores

Soluciones de los ejercicios del tema 2

J 7. Se dispone de una CPU segmentada en dos etapas para ejecutar programas de la CPU teórica, de forma que puedan llevarse a cabo en paralelo la fase de búsqueda y ejecución propiamente dicha, de cada instrucción. Cada etapa se ejecuta en un ciclo de reloj. En esta CPU se utiliza una cache unificada y no existe replicación de la ALU (no es posible realizar dos operaciones con la ALU simultáneamente).
1 2 3 4 5 6 7

— ¿Qué CPU proporciona un mayor rendimiento, la A15, que trabaja a 1,5 Ghz, o la Super B30, que trabaja a 3 GHz? ¿Por qué? La Super B30 al estar segmentada es capaz de ejecutar una instrucción cada ciclo de reloj. Como su frecuencia de reloj es de 3 GHz, resulta que puede ejecutar 3000 MIPS, menor que los 3500 MIPS de la CPU A15. Por lo tanto, la CPU A15 proporciona un mayor rendimiento aunque tenga una frecuencia de reloj menor.

MOVH MOVL INC MOV XOR ADD MOV

R3 , 0BAh R3 , 04 h R3 R2 , R3 R4 , R4 , R4 R4 , R2 , R3 [ R3 ] , R4

— ¿Cuántos ciclos de reloj tarda en ejecutarse el fragmento de código anterior, en esta CPU? 11 Si en el conjunto de programas que ejecuta esta CPU existe un 25 % de instrucciones que realizan accesos a memoria para leer o escribir datos, un 15 % de instrucciones aritméticas y un 10 % de operaciones lógicas, — ¿cuál de las siguientes alternativas de rediseño del sistema crees que resultaría más eficiente: a) dotar a la CPU de una cache dividida o b) replicar la ALU? ¿Por qué? Tanto las instrucciones de acceso a datos en memoria como las instrucciones aritmético lógicas provocan una rotura de la segmentación. La mejor alternativa pues será aquella que minimice el número de roturas. Con la alternativa a) se reduciría en un 25 % el número de roturas, mientras que con la alternativa b) se reduciría en un (15 % + 10 %) = 25 % también. Luego en este caso el efecto sería el mismo.

— ¿La CPU A15 es simplemente una CPU segmentada, o además es superescalar? ¿Por qué? Es superescalar, pues es capaz de ejecutar más de una instrucción por ciclo de reloj. En particular, es capaz de ejecutar (3750/1500) = 2,5 instrucciones cada ciclo de reloj.

J 9. Se dispone de una CPU segmentada que cuenta con dos etapas, una etapa de búsqueda y una etapa de ejecución. La interfaz con la memoria es única y compartida entre las dos etapas. El tiempo que toma en contemplarse cada una de las etapas es de 10 nanosegundos. Si esta CPU ejecuta la siguiente secuencia de instrucciones:
1 2 3 4

ADD MOV AND XOR

R4 , R2 , R5 , R6 ,

R3 , R2 [ R4 ] R2 , R3 R6 , R6

J 8. Dos compañías fabricantes de CPUs se disputan el mercado. La primera de ellas dispone de la CPU modelo A15, capaz de ejecutar 3750 Millones de Instrucciones Por Segundo (MIPS), la cual trabaja a una frecuencia de 1,5 GHz. La segunda compañía pretende expulsar del mercado a la primera poniendo a la venta la CPU modelo Super B30, que trabaja a una frecuencia de 3 GHz e implementa el mismo juego de instrucciones que la CPU de la competencia. Para obtener este producto, la compañía parte de una CPU no segmentada, modelo B0,25, que opera a 250 MHz y requiere una media de 2,5 ciclos de reloj para ejecutar cualquier instrucción. — ¿Cuál es el tiempo medio necesario para ejecutar una instrucción en la CPU B0,25? 2,5 ciclos ×
1 ns 0,25 ciclos

— Completa adecuadamente el cronograma de ejecución. Nota: la parte superior es para la etapa de búsqueda y la inferior para la de ejecución. Escribe dentro el mnemónico apropiado. ADD MOV ADD MOV AND XOR AND XOR

= 10 ns

— ¿Cuántos nanosegundos más rápida es la ejecución segmentada que la secuencial del conjunto de instrucciones considerado? (8 × 10) − (6 × 10) = 20 nanosegundos

— La CPU Super B30 se obtiene dividiendo la ejecución de las instrucciones en N etapas de duración 1 ciclo de reloj (de 3 GHz), las cuales funcionan de forma concurrente. ¿Cuál debe ser el valor de N? N=
10 ns 1/3 ns

J 10. Se tiene una CPU que requiere 10 pasos para que se ejecute una instrucción, a razón de un paso por ciclo de reloj. — ¿Cuál ha de ser la frecuencia de reloj de la CPU para que ésta sea capaz de ejecutar 10 millones de instrucciones por segundo trabajando de forma no segmentada? 100 MHz

= 30

3

Soluciones de los ejercicios del tema 2

Ingeniería de Computadores

— Si la frecuencia se mantiene constante en el valor anterior y deseamos que la CPU ejecute 5 veces más instrucciones, ¿qué técnica podemos utilizar y cuál es el número mínimo de etapas necesarias para conseguir el objetivo buscado? Técnica: Segmentación Etapas: 5

— ¿Cuántas instrucciones por segundo puede ejecutar, a lo sumo, la versión segmentada de la CPU? 2 400 millones de instrucciones / seg — ¿Una determinada instrucción dónde tarda más tiempo en ejecutarse, en la versión que emplea las doce etapas de forma secuencial, o en la versión que emplea las doce etapas de forma paralela? ¿Por qué? Tarda lo mismo, pues en ambos casos son necesarios doce ciclos de reloj. La diferencia es que con la CPU segmentada se pueden ejecutar doce instrucciones a la vez.

— Si ahora la CPU dispone de 10 etapas que trabajan en paralelo, requiriendo cada una de ellas 1 ciclo de reloj, con un reloj de frecuencia 10 MHz, ¿cuántas instrucciones por segundo podría ejecutar esta CPU? ¿Cuánto tiempo emplea en ejecutar cada una de las instrucciones? No de instrucciones: 10 millones de instrucciones por segundo Tiempo por instrucción (µseg): 0,1 × 10 = 1 µseg

J 11. Se dispone de una CPU segmentada en 4 etapas, cada una de las cuales necesita 2 ciclos de reloj para llevarse a cabo. Suponiendo que la frecuencia de reloj que gobierna la CPU es de 100 MHz, — ¿cuántas instrucciones por segundo teóricas puede ejecutar la CPU? 50 millones — Si mediante la replicación de unidades funcionales de la CPU se dispusiera de 4 cauces de ejecución, ¿cuántas instrucciones por segundo teóricamente podría ahora ejecutar la CPU? 200 millones — Si ahora la CPU dispone de 10 etapas que trabajan en paralelo, requiriendo cada una de ellas 1 ciclo de reloj, con un reloj de frecuencia 10 MHz, ¿cuántas instrucciones por segundo podría ejecutar esta CPU? ¿Cuánto tiempo emplea en ejecutar cada una de las instrucciones? No de instrucciones: 10 millones de instrucciones por segundo Tiempo por instrucción (µseg): 0,1 × 10 = 1 µseg

— ¿Qué podría ocurrir si una tarea que se ejecuta sobre un sistema operativo multitarea pudiese desactivar las interrupciones? ¿Por qué? Podría tomar el control de la máquina o cuando menos bloquearla. Esto es así porque al estar inhabilitadas las interrupciones el SO no podría tomar el control a través de la interrupción generada por el temporizador periódico.

— Cuando una tarea llama a un servicio del sistema operativo se produce, entre otras cosas, la conmutación de la pila de la tarea a la pila del sistema operativo. La arquitectura IA-32 lleva a cabo una conmutación automática de la pila. ¿En qué consiste este tipo de conmutación? El registro puntero de pila de la tarea justo antes de producirse la transferencia se salva en la pila del sistema operativo y la CPU carga de forma automática (sin que ninguna instrucción lo provoque) el puntero de pila del SO en el registro puntero de pila. Una vez recibe el control el sistema operativo, el manejador copia el contenido del puntero de pila de la tarea en el área de datos donde el S.O. almacena el estado de la tarea.

J 12. Se pretende realizar desde cero una CPU que implemente la arquitectura PIC16x. Para ello, en primer lugar se ha diseñado una versión preliminar no segmentada de la CPU, la cual es capaz de ejecutar 200 millones de instrucciones por segundo trabajando a la máxima frecuencia. La ejecución de cualquier instrucción se divide en doce etapas que funcionan de forma secuencial. Cada una de estas etapas necesita un ciclo de reloj para completarse. — ¿Cuál es la máxima frecuencia de reloj que puede emplearse con dicha CPU? 2,4 GHz Una vez se ha realizado la versión inicial de la CPU, ésta se ha modificado empleando la técnica de segmentación. Para ello se permite que las doce etapas funcionen en paralelo. — ¿Cuántas instrucciones por ciclo de reloj es capaz de ejecutar la CPU segmentada? 1 instrucción / ciclo de reloj

J 13. Para comprobar el efecto de la replicación de unidades funcionales se considera el siguiente fragmento de código que se ejecuta sobre diferentes versiones segmentadas de la CPU teórica.
1 2 3 4 5 6 7 8

MOVL MOVH XOR MOV INC MOVH MOV MOV

R3 , 00 h R3 , 0E0h R2 , R2 , R2 [ R3 ] , R2 R2 R3 , 61 h [ R3 ] , R2 [ R2 ] , R3

La primera versión es una segmentación en dos etapas: una de búsqueda de instrucción e incremento del PC y otra de ejecución propiamente dicha. En dicha versión se dispone de una única ALU, la 4

Ingeniería de Computadores

Soluciones de los ejercicios del tema 2

cual se emplea tanto para el incremento del PC como para la ejecución de las instrucciones aritméticas y lógicas. La segunda versión es análoga a la anterior, pero dispone de una ALU adicional, por lo que se pueden realizar a la vez dos operaciones aritméticas o lógicas. Ambas versiones segmentadas emplean un reloj de 1 GHz, consumiendo un ciclo de reloj para cada etapa y están conectadas a una cache dividida. La ÚNICA diferencia entre ellas es la posibilidad de llevar a cabo una o dos operaciones aritméticas simultáneamente. — ¿Cuánto tiempo requiere la ejecución del fragmento de programa anterior en cada una de las versiones segmentadas de la CPU? Responder en nanosegundos. Segmentación y 1 ALU: 11 ns Segmentación y 2 ALUs: 9 ns

— Explica qué tendría que suceder para que la rutina de tratamiento de la excepción anterior no tuviera éxito, y a dónde se devolvería el control en ese caso. La rutina de tratamiento de la excepción falla si la página asociada a la dirección no tiene almacenamiento físico asignado, ni en memoria, ni en el archivo de paginación. O si lo mismo ocurre con la tabla de páginas. En este caso se produce un fallo no recuperable y la tarea finaliza, el S.O. toma el control y lo cede a otra tarea para su ejecución.

J 15. Teniendo en cuenta el contenido de los registros mostrados en la tabla siguiente, se pide calcular la dirección lineal a la que se accedería mediante las siguientes instrucciones:
Contenido registro EAX = 0000 001Bh EBX = 0000 001Ch ECX = 0000 001Dh ESP = 0000 003Ch Dirección base almacenada en: Registro sombra de CS = 0040 0000h Registro sombra de DS = 0050 0000h Registro sombra de SS = 0060 0000h Registro sombra de FS = 0070 0000h

J 14. En un momento dado, una CPU con arquitectura IA-32 y con Sistema Operativo Windows, se encuentra ejecutando un programa. Se conoce: La dirección contenida en el registro IDTR = 8000 0000h. El contenido de parte de la IDT, que se muestra en la figura. El sistema operativo trabaja según un modelo de memoria plano.

— POP ECX Dirección lineal: 0060 0000h + 0000 003Ch = 0060 003Ch — MOV EBX, [EAX] Dirección lineal: 0050 0000h + 0000 001Bh = 0050 001Bh

Si en el transcurso del programa se ejecuta la instrucción INT 2Eh: — ¿A partir de qué dirección lineal se ubica la entrada de la IDT correspondiente a esta instrucción? 8000 0000h + (2Eh × 8) = 8000 0170h — ¿A qué tipo de transferencia de control al S.O. corresponde la instrucción anterior? Llamada a servicio del S.O. Sobre la misma CPU, se procede en otro momento a ejecutar una instrucción de acceso a datos, ubicada en la dirección lógica CS:07B9 4891h, a la que le sigue, otra instrucción con dirección lógica CS:07B9 4897h. Se sabe que la primera de estas instrucciones produce un fallo de página: — ¿En qué dirección lineal se encuentra la rutina que se encarga de tratar este tipo de excepción? 87CF 9500h

J 16. En un momento dado, una CPU basada en la arquitectura IA-32 muestra el contenido de los registros que se indican en la tabla. Si, se pretende ejecutar secuencialmente las instrucciones siguientes (es decir, son consecutivas en memoria), indica qué rangos de direcciones serán accedidas en cada instrucción. Recuerda que por cada instrucción pueden ser necesarios 2 accesos a memoria y supón que el código de una instrucción es de 32 bits.
Contenido registro EAX = 0000 001Bh EBX = 0000 001Ch ECX = 0000 001Dh ESP = 0000 003Ch EIP = 0000 003Ch Dirección base almacenada en: Registro sombra de CS = 001A D000h Registro sombra de DS = 56FB 9000h Registro sombra de FS = 6098 A000h Registro sombra de SS = B987 C000h Registro sombra de ES = CFD4 5000h

— MOV EAX, [EBX] Búsqueda: CS:EIP = 001A D025h – 001A D028h Ejecución: DS:EBX = 56FB 9032h – 56FB 9035h — POP ECX

— Si la rutina de tratamiento de la excepción tiene éxito, ¿a qué dirección lineal devolverá el control? 07B9 4891h (la misma instrucción que causó la excepción) 5

Búsqueda: CS:EIP = 001A D029h – 001A D02Ch Ejecución: SS:ESP = B987 C0F3h – B987 C0F6h

Soluciones de los ejercicios del tema 2

Ingeniería de Computadores

J 17. Una tarea ejecutada sobre un PC con sistema operativo Microsoft Windows XP tiene como código fuente el indicado a continuación. Dicho código fuente contiene varias instrucciones que al ser ejecutadas generan excepciones.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

# i n c l u d e < s t d i o . h> v o i d main ( ) { int var_local = 0; unsigned p a g _ v i r t u a l ; u n s i g n e d ∗ d i r _ v i r t u a l _ e t p = NULL ; / ∗ C a l c u l a l a i n v e r s a de l a v a r i a b l e l o c a l ∗ / var_local = 1 / var_local ; /∗ I n i c i a l i z a c i e r t o s r e g i s t r o s ∗/ _asm { mov ah , 10 cli } / ∗ Pág . v i r t u a l a s o c i a d a a v a r _ l o c a l ∗ / p a g _ v i r t u a l = ( ( u n s i g n e d )&v a r _ l o c a l ) >> 1 2 ; / ∗ D i r e c c i ó n v i r t u a l en l a que s e a l m a c e n a l a ETP ∗ / d i r _ v i r t u a l _ e t p = ( v o i d ∗) ( 0 xC0000000 + p a g _ v i r t u a l ∗4) ; / ∗ E s c r i b e e l v a l o r de l a ETP ∗ / p r i n t f ( " V a l o r de l a ETP = % \ n " , ∗ d i r _ v i r t u a l _ e t p ) ; X }

B) La excepción de división por 0 en la arquitectura IA-32 es de tipo FALLO. C) Las CPUs que gracias a la replicación de componentes son capaces de trabajar sobre varias instrucciones simultáneamente reciben el nombre de superescalares. D) En modo protegido la instrucción CLI puede ser ejecutada con el nivel de privilegio de usuario. E) La CPU con nivel de privilegio de usuario puede acceder a las direcciones de memoria asociadas al sistema operativo. F) La IDT de un PC puede contener como máximo 256 entradas. B, C y F J 20. Indica cuál o cuáles de las siguientes afirmaciones son CIERTAS. Contesta “Ninguna” si crees que ninguna lo es. A) El primer procesador que implementó la arquitectura IA-32 fue el 80386. B) El modelo de memoria plano de la arquitectura IA-32 reduce la segmentación a su mínima expresión, haciendo que el desplazamiento de la dirección lógica coincida con la dirección lineal. C) En la arquitectura IA-32 el nivel de privilegio de ejecución viene dado por el campo RPL, llamado CPL, del registro CS. D) El espacio de direcciones lógicas en la arquitectura IA-32 tiene un tamaño mayor de 1 Tbyte. E) La IDT es la tabla descriptores de interrupción en la arquitectura IA-32, la cual se ubica en el espacio de direcciones lineales a partir de la dirección 0000 0000h. A, B, C y D J 21. Indica cuál o cuáles de las siguientes afirmaciones son CIERTAS. Contesta “Ninguna” si crees que ninguna lo es. A) Implementando un modelo de memoria plano en la arquitectura IA-32, la protección de la memoria es proporcionada por el mecanismo de segmentación. B) Empleando el modelo de memoria plano, las direcciones virtuales que llegan al sistema de paginación coinciden con los desplazamientos de las direcciones segmentadas. C) Las CPUs IA-32 llevan a cabo una conmutación automática de la pila de usuario a la de supervisor cuando se transfiere el control al sistema operativo. D) En las CPUs modernas todas las tareas pueden acceder a cualquier posición de memoria sin restricciones. E) En la arquitectura IA-32 el mecanismo de segmentación puede desactivarse mediante un bit de un registro de control. ByC

— ¿Qué instrucciones C o ensamblador habría que comentar en el programa anterior para que no se generasen excepciones? ¿Por qué? Si no es necesario comentar ninguna instrucción responde “Ninguna”. var_local = 1 / var_local. Se trata de una instrucción que trata de llevar a cabo una división por cero. cli. Es una instrucción ensamblador que sólo puede ejecutar el sistema operativo. printf(). Trata de acceder a una dirección ubicada en los 2 Gbytes más altos del E.D. virtuales, accesibles sólo por el sistema operativo.

J 18. En las situaciones que se describen a continuación se produce la transferencia del control al Sistema Operativo. — ¿A cuál de los tres tipos posibles de transferencia de control al Sistema Operativo corresponde cada una de las situaciones? Fallo de página → Excepción. Lectura de un fichero → Llamada a servicio del S.O. Pulsación de una tecla → Interrupción. División por cero → Excepción. Clic del ratón → Interrupción. Ejecución en modo traza → Excepción.

J 19. Indica cuál o cuáles de las siguientes afirmaciones son CIERTAS. Contesta “Ninguna” si crees que ninguna lo es. A) La técnica de segmentación consiste en dividir la ejecución de instrucciones en etapas pero las etapas no es necesario que trabajen en paralelo. 6

Ingeniería de Computadores

Soluciones de los ejercicios del tema 2

J 22. Indica cuál o cuáles de las siguientes afirmaciones son CIERTAS. Contesta “Ninguna” si crees que ninguna lo es. A) El valor del campo IOPL en la arquitectura IA-32, establece el privilegio de acceso al espacio de direcciones de E/S. B) En el modelo de memoria de la arquitectura IA-32, se puede utilizar tanto segmentación, como paginación, si bien ésta última se puede desactivar. C) En la arquitectura IA-32, el modelo de memoria plano consiste en que todas las tareas comparten el rango de 4GB del espacio de memoria física. D) La IDT, en la arquitectura IA-32, es una tabla de descriptores de segmento especiales que comienza en la dirección indicada en el registro IDTR. E) El descriptor de segmento, en la arquitectura IA-32, sirve para obtener el desplazamiento de la dirección virtual al que pretende acceder la CPU. A, B y D

J 25. Indica cuál o cuáles de las siguientes afirmaciones son CIERTAS. Contesta “Ninguna” si crees que ninguna lo es. A) En la arquitectura IA-32 el modelo de memoria plano consiste en que todas las tareas comparten el rango de 4GB del espacio de memoria física. B) En el modelo de memoria de la arquitectura IA-32 se puede utilizar tanto segmentación como paginación, si bien esta última se puede desactivar. C) La IDT, en la arquitectura IA-32, es una tabla de descriptores de segmento especiales que comienza en la dirección indicada en el registro IDTR. D) El valor del campo IOPL en la arquitectura IA-32 establece el privilegio necesario para acceder al espacio de direcciones de E/S. E) El descriptor de segmento, en la arquitectura IA-32, sirve para obtener el desplazamiento de la dirección virtual al que pretende acceder la CPU. B, C y D

J 23. Una de las siguientes afirmaciones sobre la CPU es FALSA. Indica cuál es y por qué. A) Cuando se realiza la transferencia de control en un S.O. multitarea, guardar el registro de estado y el contador de programa en la pila de la tarea en ejecución puede llegar a provocar un mal funcionamiento del sistema. B) El modelo de memoria plano evita que el programador tenga que manejar registros de segmento. C) Las CPUs IA-32 en modo protegido sitúan la tabla de vectores de interrupción en el primer KB de la memoria física. D) En las CPUs IA-32 cada tarea puede utilizar dos tablas de descriptores de segmento diferentes. La C es falsa. En el modo protegido se utiliza la tabla IDT, apuntada por el registro IDTR.

J 26. Indica cuál o cuáles de las siguientes afirmaciones son CIERTAS. Contesta “Ninguna” si crees que ninguna lo es. A) La protección de memoria usando el modelo de memoria plano se consigue mediante la paginación. B) Empleando el modelo de memoria plano la dirección física del operando de memoria de la instrucción MOV EAX, [ECX] coincide con el valor de ECX. C) Dependiendo del tipo de acceso a memoria (datos, pila o código), se emplean diferentes registros segmento por defecto. D) Los servicios en la arquitectura IA-32 son llamados empleando la instrucción INT. E) El registro EFLAGS contiene un bit que permite deshabilitar las interrupciones. A, C, D y E J 27. Indica cuál o cuáles de las siguientes afirmaciones son CIERTAS. Contesta “Ninguna” si crees que ninguna lo es. A) La protección de memoria en Windows se lleva a cabo con la segmentación. B) Empleando el modelo de memoria plano en la arquitectura IA-32, sólo hay dos niveles de privilegio disponibles. C) Cuando una tarea llama a un servicio del sistema operativo se produce una excepción. D) La llamada a los servicios nativos de Windows mejora la portabilidad de las aplicaciones. E) DOS es un sistema operativo que implementa mecanismos de protección. B J 28. Indica cuál o cuáles de las siguientes afirmaciones, referidas a la arquitectura AMD64, son CIERTAS. Contesta “Ninguna” si crees que ninguna lo es. A) La arquitectura AMD64 mantiene la compatibilidad con las arquitecturas de 32 bits, a diferencia de la IA-64 representada por el Itanium. B) En el modo de funcionamiento largo existen los siguientes tres submodos: Protegido, 8086 virtual y Real. 7

J 24. Indica cuál o cuáles de las siguientes afirmaciones son CIERTAS. Contesta “Ninguna” si crees que ninguna lo es. A) En el caso de las CPUs modernas la mejora del rendimiento es un aspecto que no se tiene en cuenta. B) Los primeros procesadores que implementaban la arquitectura IA-32 no soportaban los S.O. multitarea. C) Las CPUs que gracias a la replicación de componentes son capaces de trabajar sobre varias instrucciones simultáneamente reciben el nombre de superescalares. D) En las CPUs modernas todas las tareas pueden acceder a cualquier posición de memoria sin restricciones. E) El establecimiento de niveles de privilegio permite el control de ejecución de instrucciones en las CPUs modernas. CyE

Soluciones de los ejercicios del tema 2

Ingeniería de Computadores

C) El controlador de memoria está integrado en el procesador. D) Aunque idealmente se podrían utilizar 64 líneas de direcciones, en la práctica sólo se emplean 48, dando lugar a un espacio de direcciones físicas de 256 Terabytes. E) El número de registros de propósito general en esta arquitectura se amplia también de 8 a 64. A, C y D

8