organizacion de computadores-capituloiii

Upload: luis-d-urdaneta-g

Post on 17-Jul-2015

52 views

Category:

Documents


1 download

TRANSCRIPT

Universidad de Oriente. Departamento de Electricidad

Captulo 3

3ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONESLuis Urdaneta Puerto la Cruz, mayo del 2004

1

Universidad de Oriente. Departamento de Electricidad

Captulo 3

1. Evolucin de las ISAs Los repertorios de instrucciones de los computadores de las primeras generaciones tenan uno o dos modos de direccionamiento y un nmero limitado de instrucciones ejecutadas directamente por el nivel de lgica digital. A mediados de los sesenta IBM introdujo su modelo 360, el primer computador de tercera generacin con microprograma. Con un hardware relativamente simple y un conjunto de instrucciones de gran potencia gracias a la microprogramacin, esta mquina fue adoptada rpidamente por las principales universidades y centros de investigacin durante la dcada de los 60. Siguiendo el ejemplo de IBM los ms importantes fabricantes de computadores usaron microprogramacin en sus nuevos diseos.Puerto la Cruz, mayo del 2004

2

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Auge de la microprogramacin El incremento de la complejidad de las aplicaciones susceptibles de ser realizadas con computadores exiga mquinas cada vez con mayor capacidad de computo, lo cual implica instrucciones de mquina ms potentes y un hardware ms complejo para ejecutar las nueva instrucciones. Una instruccin del nivel de lenguaje de mquina es dividida por el interpretador en microoperaciones ms simples de modo que la lgica que ejecuta las ordenes del interprete es mucho ms sencilla que la necesaria para ejecutar directamente el cdigo de nivel de mquina.

Puerto la Cruz, mayo del 2004

3

Universidad de Oriente. Departamento de Electricidad

Captulo 3

El alto costo del hardware adicional poda ser justificado en computadores grandes de alto costo de adquisicin pero no en maquinas pequeas que se difundan rpidamente. Las memorias disponibles para mquinas de tercera generacin eran diez veces ms lentas que los procesadores, de modo que usando instrucciones ms complejas los programas tendran menos instrucciones y en consecuencia realizaran menos accesos a las lentas memorias. Esto no incluye las memorias rpidas de solo lectura donde resida el microprograma.

Puerto la Cruz, mayo del 2004

4

Universidad de Oriente. Departamento de Electricidad

Captulo 3

La facilidad para incorporar nuevas instrucciones con la simple modificacin del interprete permiti no slo la inclusin de instrucciones de multiplicacin y divisin de enteros y de punto flotante e instrucciones para control de procedimientos y manejo de caracteres; sino que se asignaron nuevas funciones al microprograma que mejoraba la ejecucin de cdigo. Instrucciones de mquina ms complejas estrecharon la frontera existente entre las instrucciones de alto nivel y su correspondencia en lenguaje de mquina, lo cual facilit el diseo de compiladores y redujo el costo del desarrollo de software.Puerto la Cruz, mayo del 2004

5

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Principio del fin de la microprogramacin? La aparicin de memoria RAM de semiconductores en los aos 70s y el uso de memorias cache acerc la velocidad del subsistema de memoria a la del CPU. El aumento de la complejidad del interprete hizo difcil la depuracin y mantenimiento de los microprogramas. Tambin la capacidad de la memoria de control era limitada. Los conjuntos de instrucciones eran complejos. Por ejemplo una mquina lleg a tener cientos de instrucciones y 200 modos de direccionameinto.

Puerto la Cruz, mayo del 2004

6

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Algunos expertos de universidades iniciaron investigaciones por separado con el propsito de cuantificar los tipos de instrucciones utilizadas por programas representativos. Los resultados de este trabajo se muestran a continuacin.Sentencia Asignacin Condicionales Llamadas Iteraciones Goto Otras SAL 47 17 25 6 0 5 XPL 55 17 17 5 1 5 Fortran 51 10 5 9 9 16 C 38 43 12 3 3 1 Pascal 45 29 15 5 0 6 Promedio 47 23 15 6 3 7

Los programas tienen en promedio un 85% de proposiciones de tipo: =, IF y CALLPuerto la Cruz, mayo del 2004

7

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Asignaciones (=)N Trminos0 1 2 3 4 5

ProcedimientosVariables Locales0 1 2 3 4 5 22 17 20 14 8 20

%80 15 3 2 0

Parmetros0 1 2 3 4 5 41 19 15 9 7 8

Asignaciones : Variables Escalares Locales : Parmetros en las llamadas a procedimientos:

80% del tipo variable=valor 15% del tipo variable=valor1 op valor2 73% tiene menos de 4 20% no tienen 41 % no tienen 8% tienen 5 ms

Puerto la Cruz, mayo del 2004

8

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Estos resultados significan que a pesar que los conjuntos de instrucciones contienen instrucciones potentes con las cuales es posibles escribir programas de gran complejidad, los programadores promedios en la prctica escriben cdigo que consiste de asignaciones simples, y llamadas a subprogramas con pocos parmetros . Con respecto al cdigo generado por los compiladores, ste consiste usualmente de un subconjunto del repertorio de instrucciones donde rara vez estn presentes instrucciones complejas.Puerto la Cruz, mayo del 2004

9

Universidad de Oriente. Departamento de Electricidad

Captulo 3

El regreso a los orgenes Un aumento en el nmero de instrucciones y el uso de instrucciones complejas determinan una operacin global ms lenta debido al interpretador del microcdigo. Las instrucciones complejas casi nunca se utilizan. Se requiere una nueva ptica para el diseo de computadores.

Puerto la Cruz, mayo del 2004

10

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Mquinas RISC (Reduced Instruction SetComputers)

Debido a que el microprograma es cada vez ms grande y lento se plantea eliminar al interprete. Las instrucciones simples (las ms usadas) son ejecutadas directamente por el hardware. Se optimiza el resultado de la compilacin. El cdigo de mquina generado por los compiladores debe consistir de instrucciones simples y ser tan eficiente como el escrito directamente en lenguaje ensamblador.Puerto la Cruz, mayo del 2004

11

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Principios de diseo RISC1. Realizar un anlisis de las aplicaciones reales e identificar las operaciones clave. 2. Disear un camino de datos ptimo para tales operaciones. 3. Incluir en el repertorio de instrucciones slo aquellas que realizan las operaciones clave usando la ruta de datos. 4. Incorporar nuevas instrucciones slo si no hacen ms lenta la mquina. 5. Aplicar los principios a otros recursos del computador.Puerto la Cruz, mayo del 2004

12

Universidad de Oriente. Departamento de Electricidad

Captulo 3

La mquina debe ser vista desde un punto de vista cuantitativo. Hay que medir el desempeo de cada componente para evaluar los criterios usados en el diseo!

Puerto la Cruz, mayo del 2004

13

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Caractersticas de una mquina RISC Todas las instrucciones las ejecuta el hardware. Las instrucciones se completan en un solo ciclo de la trayectoria de datos. Se maximiza la cadencia de ejecucin de instrucciones usando segmentacin o procesamiento pipeline. Las instrucciones son de longitud fija, con pocos campos y uno o pocos formatos de instruccin. Esto facilita la decodificacin de la instruccin.Puerto la Cruz, mayo del 2004

14

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Las nicas operaciones que hacen referencia a memoria son las de carga o almacenamiento (Load/Store). Dispone al menos de 32 registros internos para evitar el accesos frecuentes a la memoria.

Puerto la Cruz, mayo del 2004

15

Universidad de Oriente. Departamento de Electricidad

Captulo 3

2. El compilador

El usuario primario del computador. El usuario primario del computador

Principio bsico: realizar el caso frecuente en forma eficiente y el caso raro correctamente. Regularidad/Ortogonalidad: para que el compilador genere fcilmente cdigo, las instrucciones y el direc-cionamiento deben mantener una estructura regular. Debe existir un mnimo de formatos de instruccin y de modos de direccionamiento1.1

Principio por el cual dos variables son independientes una de la otra. En el contexto de repertorio de instrucciones, el trmino indica que otros elementos de una instruccin son independientes (no determinado por) el cdigo de operacin (opcode). Una direccin se computa de la misma forma, independientemente del opcode. Esto contrasta con otras mquinas, donde el modo de direccionamiento a veces depende implcitamente del operador utilizado.

Puerto la Cruz, mayo del 2004

16

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Principio una o todas: Evitar que el compilador tome decisiones crticas para las cuales no es suficientemente inteligente. Para un caso particular debe disponer de todas las opciones posibles o de slo una. Incorporar instrucciones que operen con constantes para los valores conocidos en el momento de la compilacin. Interpretarlo en tiempo de ejecucin es ineficiente.

Puerto la Cruz, mayo del 2004

17

Universidad de Oriente. Departamento de Electricidad

Captulo 3

3. Diseo del conjunto de instruccionesEs una tarea compleja ya que es determinante en el desempeo del computador. El repertorio de instrucciones es un factor crtico para el diseo del P ya que especifica muchas de las funciones a realizar por el procesador. Debido a que el programador controla la CPU por medio de las instrucciones, las necesidades de quien programa deben considerarse en el diseo.Puerto la Cruz, mayo del 2004

18

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Deben definirse los aspectos fundamentales del diseo del conjunto de instrucciones. Clase de instrucciones: Cuntas y que tipo de operaciones realiza. Nivel de complejidad. Tipos de datos: distintos tipos de datos sobre los cuales se realizan operaciones. Formato de instruccin: longitud en bits de la instruccin, nmero de direcciones y nmero de bits de los campos. Modos de direccionamiento: como se especifica la direccin de los operandos.Puerto la Cruz, mayo del 2004

19

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Formatos de Instruccin: Una instruccin consta de un cdigo de operacin junto con la direccin de los operandos (si los tiene) y del resultado. La forma en que la instruccin especifica donde encontrar los operandos se denomina modos de direccionamiento.Cdigo de Operacin(a)

Cd.Op. Cd.Op.

Direccin(b) Dir1 (d) Dir2 Dir3

Cd. Op. Dir1 Dir2(c)

Formatos de Instruccin: a: sin direccin, b: Con una direccin, c: con 2 direcciones, d: con 3 direccionesPuerto la Cruz, mayo del 2004

20

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Cada instruccin debe incluir toda la informacin que el P requiere para ejecutarla. Los elementos de una instruccin mquina son: Cdigo de operacin (opcode): Especifica la operacin a ser realizada. Direccin del operando Fuente: La operacin puede hacerse con uno o ms operandos. Direccin del operando destino: Si la operacin entrega un resultado. Direccin de la Siguiente Instruccin: ubicacin de la prxima instruccin a ejecutar.Puerto la Cruz, mayo del 2004

21

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Los operandos, fuentes y destino, pueden estar: Memoria Principal o Virtual: Debe suministrarse una direccin. Registro de CPU: Normalmente una CPU contiene uno o ms registros. Si slo existe un registro, suele referenciarse de forma implcita. Si hay varios, normalmente se asigna un n que va incluido dentro de la instruccin mquina. Dispositivo de E/S: La instruccin debe especificar el mdulo de E/S y dispositivo para la operacin. Si se usa E/S mapeada en memoria, se trata slo de una direccin de memoria principal o virtual. La prxima instruccin usualmente es la instruccin que sigue a la que se ejecuta y no se hace referencia explcita a su direccin. Algunas instrucciones especifican la direccin de memoria principal o memoria secundaria (memoria virtual) donde se encuentra la prxima instruccin.

Puerto la Cruz, mayo del 2004

22

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Tipos de formatos de instruccin:Fijo: Todas las instrucciones tienen el mismo nmero de bits. Facilita la bsqueda y ejecucin de las instrucciones. Algunas instrucciones tendrn ms bits de los necesarios debido a que el nmero total de bits debe ser igual al de la instruccin de mayor longitud.Puerto la Cruz, mayo del 2004

23

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Variable:El nmero de bits vara con los tipos de instruccin. Obstaculiza la bsqueda y decodificacin de las instrucciones. Ahorra espacio en la memoria de programa. Permite gran variedad de opcodes, de diferente longitud. Direccionamiento ms flexible, con varias combina ciones de registrosPuerto la Cruz, mayo del 2004

24

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Nmero de bits de la instruccin:Establece un lmite al espacio asignado a cada uno de los campos de la instruccin. Se restringe el n de campos, el n de instruc- ciones, el n de registros, los modos de direccionamiento y el espa- cio de memoria direccionable, etc. La longitud de la instruccin debe ser igual al de la palabra de la memoria (ancho del bus de datos) o uno debe ser mltiplo del otro. El tamao de instruccin debera ser mltiplo del tamao de caracter (normalmente 8 bits) y del tamao de los nmeros de punto fijo.

Puerto la Cruz, mayo del 2004

25

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Nmero de formatos de instruccin: Distribucin de los bits del formato a los campos de la instruccin. Formato nico: La correspondencia entre los bits del formato y los campos es siempre la misma. Simplifica la decodificacin de las instrucciones. Como todas las instrucciones no requieren los campos previstos, en algunos casos se desperdician bits.Puerto la Cruz, mayo del 2004

26

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Formatos mltiples: Cada formato puede tener campos diferentes, existiendo una correspondencia entre los campos y los bits del formato. Permite un mejor ajuste entre los bits ocupados por la instruccin y los campos requeridos.

Puerto la Cruz, mayo del 2004

27

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Distribucin de los bits en el formato de instruccin:Una vez establecido el nmero de bits del cdigo de operacin (nmero de instrucciones) el resto de los bits de la instruccin se destinan a direccionamiento y su uso es determinado por la interrelacin de los siguientes factores: N de Modos de Direccionamiento: Implcitos o Explcitos (requieren 1 o ms bits de modo). N de Operandos: Cada operando puede requerir su modo, o el modo slo puede afectar a un operando.Puerto la Cruz, mayo del 2004

28

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Registros o Memoria: Deben existir registros internos para el proceso de datos por el CPU. Se ha demostrado que es conveniente tener de 8 a 32 registros visibles al programador, cuya direccin ocupa pocos bits de la instruccin. N de Bancos de Registros: Normalmente un nico banco de 8 o 16 registros de propsito general (transferencias de datos y desplazamientos en direccionamientos). Es usual el uso de dos o ms bancos especializados. Para bancos de 8 registros slo se requieren tres bits para identificarlos si el banco correspondiente est implcito en el opcod.Puerto la Cruz, mayo del 2004

29

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Rango de Direcciones: Para acceder al espacio de memoria se requiere cierto nmeros de bits. La tendencia es hacia a direccionamientos relativos a registros El direccionamiento directo casi no se usa por la limitacin de espacio impuesta por nmero de bits de la instruccin.. Atomicidad de las Direcciones: En sistemas con tamao de palabra de 16 o 32 bits el diseador debe decidir si una direccin referencia a un byte o una palabra. Direccionar bytes es conveniente para manejo de caracteres pero requiere, para un tamao de memoria determinado, ms bits para la direccin.Puerto la Cruz, mayo del 2004

30

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Cdigos de operacin con extensinPara un tamao fijo de instruccin el n de opcodes fija la capacidad direccionamiento Una mejora consiste en usar opcodes de tamao variable o con extensin. Aunque existe un tamao mnimo para el opcode, para algunos opcodes, se pueden especificar unas operaciones adicionales utilizando bits adicionales de la instruccin. Esto deja menos bits para direccionamiento. Este formato se usa en aquellas instrucciones que requieren menos operandos y/o menos rango de direccionamiento.Puerto la Cruz, mayo del 2004

31

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Ejemplos tpicos de formatos:MIPS

32 registros de propsito general, $0=0, $1=reservado. Memoria direccionable por bytes. 230 palabras de memoria de 32 bits. Modos de direccionamiento: De registros, Base o desplazamiento, Inmediato y Relativo al PC. Tamao de instruccin fijo de 32 bits con varios formatos: Inmediato. De salto De 3 registros.Puerto la Cruz, mayo del 2004

32

Universidad de Oriente. Departamento de Electricidad

Captulo 3

MIPS

Puerto la Cruz, mayo del 2004

33

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Puerto la Cruz, mayo del 2004

34

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Puerto la Cruz, mayo del 2004

35

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Para permitir uso de saltos condicionales en programas de 232 , la direccin del salto se calcula como: PC = (PC+4) + seguirPuerto la Cruz, mayo del 2004

36

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Pentium Formatos de instruccin complejos e irregulares. Hasta seis campos de longitud variable, cinco de los cuales son opcionales. La longitud de las instrucciones vara entre 1 y 17 bytes. Existen ms de 20000 variantes en el lenguaje de mquina para los microprocesadores 8086-Pentium. No existe una lista de tales combinaciones. Lo usual es indicar los bits fijos del cdigo de instruccin y el resto se asigna para cada variante de la instruccin.Puerto la Cruz, mayo del 2004

37

Universidad de Oriente. Departamento de Electricidad

Captulo 3

El Pentium tiene tres modos de operacin, dos de los cuales lo hacen operar como un 8088. En modo real toda mejora incluida a partir del 8088 se desactivan y el Pentium se comporta como un 8088. La ejecucin de una instruccin indebida causa que la mquina se cuelgue. El modo 8086 virtual es similar al anterior pero con proteccin. La ejecucin de programas 8088 es supervisada por un sistema operativo. Cualquier accin indebida es notificada al S.O evitando que el computador se cuelgue. Cuando se sale desde Windows para ejecutar un programa MS-DOS, el C se inicia en este modo 8086 virtual preservando a WINDOWS de los efectos adversos de la malfuncin de programas MS-DOS. El tercer modo de operacin es el modo protegido, bajo el cual el P funciona como un Pentium real.Puerto la Cruz, mayo del 2004

38

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Pentium Una instruccin consta: de 0 a 4 prefijos de instruccin opcionales, uno o dos bytes para el opcode, una indicacin de direccin opcional, compuesta de: el byte Mod/RM y el byte Escala, Indice, Base (SIB), un Desplazamiento opcional, y un campo Inmediato opcional.

Puerto la Cruz, mayo del 2004

39

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Puerto la Cruz, mayo del 2004

40

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Prefijo de instruccin: Cdigo de operacin adicional que antecede a una instruccin para modificar su funcin. Por ejemplo el prefijo rep es uno de cinco prefijos de repeticin y permite al pentium procesar cadenas ms rpido que con un lazo de programa.;Cargar cero en un bloque de 100 bytes de memoria les di,bloque ;Direccin de inicio del bloque: desplazamiento en DI y segmento en ES mov cx,100 ;Nmero de elementos del bloque cld ;Seleccin de autoincremento de DI mov al,0 ;Cargar cero en registro AL rep stosb ;cargar cero en bloque ;STOSB: memoria[segmento extra(DI)]=AL; DI = DI + 1 ;REP: Repetir STOSB cien veces. Cada ejecucin de STOSB decrementa en 1 ;a CX. Al llegar CX a cero culmina la ejecucin de STOSB.

El prefijo lock permite bloquear perifricos del sistema. Este prefijo pone en cero lgico el terminal lock P y permite por ejemplo asegurar el uso de del modo exclusivo la memoria compartida en sistema multiprocesadores. Ejm: lock: mov al,[si]Puerto la Cruz, mayo del 2004

41

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Segmento explicito: el tercer byte indica el registro de segmento a utilizar por la instruccin independientemente del registro de segmento implcito generado por el CPU para esa instruccin. Tamao de operando: permite conmutar el tamao implcito (16 32 bits) del operando de la instruccin. Si el P funciona con instrucciones de mquina del modo de 16 bits (modo real o protegido) y se utiliza un registro de 32 bits se coloca el prefijo (66H) del tamao del operando al principio de la instruccin. Si el Pentium funciona en el modo de 32 bits (solo modo protegido) y se utiliza un registro de 32 bits no est presente este prefijo. Si por el contrario se usa un registro de 16 bits en la instruccin ( en el modo de 32 bits) estar presente el prefijo de tamao del registro para seleccionar un registro de 16 bits.Puerto la Cruz, mayo del 2004

42

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Tamao de direccin: el primer byte indica si la memoria se accede con direcciones de 16 o de 32 bits. Algunas instrucciones definen o generan una direccin de tamao implcito y con este prefijo se puede conmutar el tamao.

Puerto la Cruz, mayo del 2004

43

Universidad de Oriente. Departamento de Electricidad

Captulo 3

La instruccin propiamente dicha la conforman los siguientes campos: Cdigo de instruccin (1 2 bytes): selecciona el tipo de operacin a realizar (suma, resta, transferencia). Puede incluir bits para indicar: si el dato es de tipo byte o de 16/ 32 bits (bit W) y si el sentido del flujo de datos (bit D: D = 1 desde R/M hacia Reg, D =0 desde Reg hacia R/M) Mod R/M: Este campo y el siguiente (SIB) dan informacin sobre el direccionamiento, especifica si un operando est en un registro o en memoria; si est en memoria los campos dentro del byte especifican el modo de direccionamiento a usar.Puerto la Cruz, mayo del 2004

44

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Mod (2 bits): selecciona el modo de direccionamiento y si hay desplazamiento en el modo seleccionado. En algunas instrucciones se combina con R/M para formar 32 valores posibles: 8 registros y 24 modos de indexado. Las especificaciones del campo Mod para el modo de 32 bits es:Mod 00 01 10 11 Sin desplazamiento Desplazamiento extendido por signo de 8 bits Desplazamiento de 16/32 bits R/M es un registro Funcin

Si el campo Mod es 11, especifica el modo de direccionamiento por registro, en el cual se usa el campo R/M para especificar un registro en lugar de una posicin de memoria. Si Mod es 00, 01 10, el campo R/M selecciona uno de los modos de direccionamiento para la memoria de datos.Puerto la Cruz, mayo del 2004

45

Universidad de Oriente. Departamento de Electricidad

Captulo 3

La siguiente tabla indica las asignaciones de registros para el campo Reg y el campo R/M (MOD=11)Cdigo 000 001 010 011 100 101 110 111 W = 0 (byte) AL CL DL BL AH CH DH BH W = 1 (palabra) AX CX DX BX SP BP SI DI W = 1 (doble palabra) EAX ECX EDX EBX ESP EBP ESI EDI

Puerto la Cruz, mayo del 2004

46

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Reg/opcode (3 bits): puede especificar un nmero de registro o tres bits adicionales para el cdigo de operacin. R/M (3 bits): Asigna un registro como posicin de un operando, o junto con el campo MOD puede formar parte de la codificacin del modo de direccionamiento. Ejemplo: Considere que en un programa se encuentra la instruccin de 2 bytes 8BDFH. Como el primer byte no corresponde a los prefijos 66H (cambio de tamao del operando) ni a 67H (cambio del tamao de la direccin), entonces el primer byte es el cdigo de operacin.Puerto la Cruz, mayo del 2004

47

Universidad de Oriente. Departamento de Electricidad

Captulo 3

El cdigo de operacin es 100010 correspondiente a la instruccin MOV y los bits D y W son ambos 1 lo cual indica que se transfiere una palabra doble al registro especificado por el campo REG. Este contiene 011 seleccionando el registro EBX, de modo que la instruccin MOV transfiere datos al registro EBX. Como Mod contiene 11, entonces el campo R/M indica un registro 111 (registro DI). La instruccin ser:

mov ebx,edi.Cdigo de operacin 1 0 0 0 1 0 D 1 W 1 Mod 1 1 Reg 0 1 1 R/M 1 1 1

Cdigo de operacin = MOV,

D = registro (Reg) , W = doble palabra

Mod = R/M es registro, Reg = EBX , R/M = EDIPuerto la Cruz, mayo del 2004

48

Universidad de Oriente. Departamento de Electricidad

Captulo 3

SIB: Cuando lo indique el campo Mod R/M, la inclusin de este byte permite especificar por completo el modo de direccionamiento.SS (2 bits): factor de escala para el indexado escalado. Indice (3 bits): registro ndice. Base (3 bits): registro base.

Desplazamiento: Cuando el indicador de modo especifica que se usa desplazamiento, se suma un campo de desplazamiento entero con signo de 8, 16 32 bits. Inmediato: Valor de un operando de 8, 16 32 bits.

Puerto la Cruz, mayo del 2004

49

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Cuando el campo MOD contiene 00 01 10, el campo R/M adquiere un nuevo significado. La siguiente tabla muestra el valor asignado al campo R/M para especificar los modos de direccionamiento en el modo de instruccin de 16 bits.R/M000 001 010 011 100 101 110 111 DS:[BX+SI] DS:[BX+DI] SS:[BP+SI] SS:[BP+DI] DS:[SI] DS:[DI] SS:[BP*] DS:[BX]

Funcin

Puerto la Cruz, mayo del 2004

50

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Si el campo MOD=00 y R/M=101 el modo de direccionamiento es [DI], lo cual significa que la direccin de memoria es especificada por el desplazamiento en DI en el segmento de datos implicito ([DS]). Si MOD=01 10 el modo de direccionamiento es por ejemplo:

[DI+27H] o arreg[DI +30H ] para el modo de instruccin de 16 bits. En un caso la direccin es indicada por la suma del contenido de DI y el desplazamiento de 8 bits y en el otro se especifica la posicin direccionada por arreglo ms el valor en DI ms el desplazamiento de 8 bits.

Puerto la Cruz, mayo del 2004

51

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Considere como ejemplo la instruccin: mov bl,[di] (8A1DH). Es una instruccin de 2 bytes con cdigo de operacin 100010, D =1 (desde R/M hacia Reg), W=0 (byte), MOD = 00 (sin desplazamiento), Reg = 011 (BL) y R/M = 101 ([DI]).Cdigo de operacin 1 0 0 0 1 0 D 1 W 0 Mod 0 0 Reg 011 R/M 101

Cdigo de operacin = MOV,

D = registro (Reg) , W = byte

Mod = sin desplazamiento, Reg = BL , R/M = DI

Puerto la Cruz, mayo del 2004

52

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Si la instruccin cambia a mov bl, [di+1], el campo MOD cambia a 01 para un desplazamiento de 8 bits, la instruccin ser ahora de tres bytes y se codifica como: 8A5D01H. El desplazamiento de 8 bits se aade a los 2 bytes originales para formar la instruccin de tres bytes. En la instruccin mov bl, [di+1000H] el campo R/M cambia a 10 y se codifica como 8A9D0010H. Modo especial de direccionamiento: Ocurre cuando se hace referencia a memoria indicando solo un el modo de desplazamiento en instrucciones de 16 bits. La instruccin mov [2000H],dl transfiere el contenido del registro de 8 bits BL a la posicin de memoria 2000H en el segmento de datos.Puerto la Cruz, mayo del 2004

53

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Cuando la instruccin tiene un solo desplazamiento el campo MOD es 00 y el R/M siempre es 101. Esta combinacin aparenta indicar que la instruccin no contiene desplazamiento y que se usa el modo de direccionamiento [BP]. En realidad no se permite usar el modo de direccionamiento [BP] sin un desplazamiento. Este problema lo resuelve el ensamblador al utilizar un desplazamiento de 8 bits (con el campo MOD = 01) de 00H cada vez que el modo de direccionamiento [BP] aparezca en una instruccin. Esto significa que se ensambla como [BP + 0].Cdigo de operacin 1 0 0 0 1byte 1

D 0

W 0

Mod 0 0

Reg 010byte 2

R/M 1 10

0

0 0

0

0

0byte 3

0

0

0

0

0

0

1byte 4

0

0

0 0

Puerto la Cruz, mayo del 2004

54

Universidad de Oriente. Departamento de Electricidad

Captulo 3

La codificacin de la instruccin mov [bp],dl se le aade un desplazamiento nulo.

Cdigo de operacin 1 0 0 0 1byte 1

D 0

W 0

Mod 0 1

Reg 010byte 2

R/M 1 10

0

0 0

0

0

0byte 3

0

0

0

Desplazamiento de 8 bits

Puerto la Cruz, mayo del 2004

55

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Modos de direccionamiento de 32 bits:Para obtener el modo de direccionamiento de 32 bits se hace funcionar el P en el modo de instruccin de 32 bits o en el modo de instruccin de 16 bits usando el prefijo 67H de tamao de instruccin. A continuacin se muestran los valores de R/M para los modos de direccionamiento de 32 bits.R/M000 001 010 011 100 101 110 111 DS:[EAX] DS:[ECX] DS:[EDX] DS:[EBX] Se usa el byte de ndice escalado SS:[EBP*] DS:[ESI] DS:[EDI]

Funcin

Puerto la Cruz, mayo del 2004

56

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Cuando R/M es 100 aparece en la instruccin un byte adicional llamado byte de ndice de escalado, el cual selecciona formas adicionales de direccionamiento no especificadas en la tabla anterior. El uso normal de este byte es cuando se suman dos registros para especificar la direccin de memoria en una instruccin.

s

s

ndice

base

00 = x 1 01 = x 2 10 = x 4 11 = x 8

Puerto la Cruz, mayo del 2004

57

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Considere la instruccin mov eax[ebx+4*ecx]. Si el Pentium funciona en modo de instruccin de 16 bits se codifica como 67668B048BH. Si lo hace en el modo de 32 bits cambia a 8B048BHCdigo de operacin 1 0 0 0 ndice 0 0 1 1 0 D 1 Base 0 1 1 W 1 Mod 0 0 Reg 000 R/M 100

Escala 1 0

Reg = EAX , R/M = SIB (escala = 4, ndice = ECX, base = EBX

Puerto la Cruz, mayo del 2004

58

Universidad de Oriente. Departamento de Electricidad

Captulo 3

La instruccin mov word ptr[bx+403EH],0AC62H es un ejemplo de direccionamiento inmediato. Esta transfiere el valor AC62H a la posicin de memoria de tamao palabra apuntada por la suma de BX y 403EH en el segmento de datos. La instruccin tiene 6 bytes: C7873E4062ACH. Se requiren dos bytes para el cdigo de operacin, W y los campos MOD, REG y R/M. Los ocho bytes restantes son dos para el desplazamiento y dos para el dato inmediato. La directiva DWORD PTR notifica al ensamblador que la instruccin utiliza un apuntador a una posicin de memoria de tamao palabra. Cuando se mueve una palabra doble se usa DWORD PTR y para bytes se cambia por BYTE PTR.

Puerto la Cruz, mayo del 2004

59

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Esta directiva es de uso obligatorio en instrucciones que no especifican con claridad el tamao del apuntador. Por ejemplo: La instruccin mov [bx],2 podra ser una transferencia de byte, palabra o doble palabra y debe escribirse segn el caso como: mov byte ptr[bx],2 mov word ptr[bx],2 mov dword ptr[bx],2 De otro modo el ensamblador emitir un mensaje de error debido a la ambigedad de la instruccin.

Puerto la Cruz, mayo del 2004

60

Universidad de Oriente. Departamento de Electricidad

Captulo 3

C7873E4062ACH

mov word ptr[bx+403EH],0AC62H

Cdigo de operacin 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 1

W 1 0 0

Mod 1 0 0 1 1 0 0 1

Reg 000 0 0 0 1 0 1

R/M 111 0 0 0 0

Puerto la Cruz, mayo del 2004

61

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Ejemplos:

Puerto la Cruz, mayo del 2004

62

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Ejemplos:

Puerto la Cruz, mayo del 2004

63

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Ejemplos:

Puerto la Cruz, mayo del 2004

64

Universidad de Oriente. Departamento de Electricidad

Captulo 3

4. Clasificacin de la Arquitecturas del Conjunto de InstruccionesTradicionalmente los tipos de arquitectura se distinguen por el modo en el cual los datos de entrada y salida del programa se almacenan. Se tienen tres tipos de arquitectura principales: Arquitectura tipo Pila. Arquitectura orientada al Acumulador. Arquitectura de registros de propsito general.Puerto la Cruz, mayo del 2004

65

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Arquitectura tipo Pila:(Picojava II, B5500 y HP3000/70)

Una estructura de memoria tipo pila almacena datos y resultados. Los operandos de la instruccin estn implicitamente en el tope de la pila. Las instrucciones son cortas al no incluir operandos. Usa notacin polaca inversa para evaluar expresiones. La pila no es de acceso aleatorio, lo cual impide la escritura de cdigo eficiente. Ejemplo: y = x + w iload x; iload w; iadd; istore yPuerto la Cruz, mayo del 2004

66

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Arquitectura tipo Acumulador:(PDP-8, Motorola 6809)

Un registro de propsito especial denominado acumulador contiene implicitamente uno de los operandos y adems almacena el resultado de la operacin. Las instrucciones tienen pocos bits. Disminuye el nmero de estados internos de la mquina durante la ejecucin de instrucciones. La pila no es de acceso aleatorio, lo cual impide la escritura de cdigo eficiente. Ejemplo: y = x + w load x; add w; store yPuerto la Cruz, mayo del 2004

67

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Arquitectura tipo Registros de propsito general:(IBM 360 II y PDP-11)

Los operandos y resultados se almacenan en un banco de registros internos del P. Se especifican explcitamente todos los operandos. Como el compilador puede elegir cualquier registro, se simplifica la generacin de cdigo. Aaden mayor flexibilidad en la evaluacin de expresiones que la pila o la memoria. Las transferencias entre registros internos es ms rpida que con la memoria. Las instrucciones son ms largas.Puerto la Cruz, mayo del 2004

68

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Atendiendo al nnero y tipo de los operandos que intervengan en una instruccin que use la ALU, se pueden distinguir tres tipos de computadores dentro de la arquitectura de registro de propsito general. Estas son: Mquinas tipo registro-registro (load/store). Mquinas tipo registro-memoria. Mquinas tipo memoria-memoria.Puerto la Cruz, mayo del 2004

69

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Parmetros a considerar: 1. Nmero n de operandos en una instruccin de la ALU. Cuando n = 2, uno de los operandos almacena el resultado. Cuando n = 3, se especifican los dos operandos y destino del resultado.

Puerto la Cruz, mayo del 2004

70

Universidad de Oriente. Departamento de Electricidad

Captulo 3

2.

Nmero m n de direcciones de memoria en una instruccin de la ALU. Cuando m = 0,

mquinas registro-registro o load/store (tpico m = 0, n =3) Toda instruccin de la ALU opera sobre datos en registros y se almacena el resultado en un registro. Las nicas instrucciones que hacen referencia a memoria son las de carga (load) y almacenamiento (store). Instrucciones de longitud fija facilitan la decodificacin pero se desperdician bits. El mayor tamao de cdigo. Toda instruccin requiere igual nmero de ciclos de reloj.Puerto la Cruz, mayo del 2004

71

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Cuando m < n,

mquinas registro-memoria (tpico m = 1, n = 2) Dos operandos cuando mximo, uno de ellos en almacenado en memoria. Acceso a datos sin carga previa. Menor tamao de cdigo. La ejecucin destruye el contenido de un operando fuente. Codificar el nmero de un registro y una direccin puede limitar el nmero de registros. Los ciclos de reloj por instruccin varan con la posicin del operando.Puerto la Cruz, mayo del 2004

72

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Cuando m = n,

mquinas memoria-memoria (tpico m = 3, n = 3) El menor tamao de cdigo. No usa registros para variables temporales. Mayor longitud de instruccin, sobre todo con tres operandos. CPI variable y mayor nmero de ciclos por instruccin. Los continuos accesos a memoria ralentizan la mquina.

Puerto la Cruz, mayo del 2004

73

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Puerto la Cruz, mayo del 2004

74

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Registros de propsito general: Ejemplo: y = x + w load r1,x add r1,w store y,r1 load r1,x load r2,w add r3,r1,r2 store y,r3 mov y,x add y,w

registro-memoria

registro-registro

memoria-memoria

Puerto la Cruz, mayo del 2004

75

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Las mquinas load/store dominan el mercado desde 1980 debido a que: Simplifican la generacin de cdigo por parte del compilador. Los compiladores asignan variables en registros lo que implica una reduccin del nmero de accesos a memoria y una reduccin del tiempo de ejecucin. Minimizan el tiempo de ejecucinPuerto la Cruz, mayo del 2004

76

Universidad de Oriente. Departamento de Electricidad

Captulo 3

5. Tipos de operandosLas instrucciones del P utilizan datos de entrada de distinto tipos y tamaos. El tipo de operando normalmente est implcito en el cdigo de operacin y pueden ser: Nmeros. Caracteres. Datos lgicos y DireccionesPuerto la Cruz, mayo del 2004

77

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Nmeros:Las instrucciones incluyen siempre algn tipo de dato numrico para definir longitudes, contadores, constantes etc. Los tipos ms comunes de esta clase son: Enteros o punto fijo 8, 16, 32, y 64 bits. Punto flotante (IEEE-754) Precisin Simple (1 palabra = 32 bits) Precisin Doble ( 2 palabras = 64 bits) Decimales Empaquetado: dgitos de 4 bits BCD. Desempaquetado: cadena de caracteres numricos BCD.Puerto la Cruz, mayo del 2004

78

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Caracteres:Los caracteres alfanumricos son representados en el computador en binario usando los cdigos: ASCII : American Standard Code for Information Interchange Estandar (7 bits) 128 caracteres. Desde 00H a 20H son cdigos de control de comunicaciones. El resto caracteres imprimibles. Extendido (8 bits) 256 caracteres. Del carcter 128 al 256 son caracteres grficos. Vara segn el fabricante. EBCDIC: Extended Binary Coded Decimal Interchange Code Cdigo de 8 bits usado por IBM en computadores mainframe y minicomputadores. UNICODE: 16 bits 65536 caracteres diferentes.Puerto la Cruz, mayo del 2004

79

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Datos lgicos y direcciones:Cada unidad direccionable: nibble, byte, palabra, palabra doble y palabra cudruple pueden tratarse como una unidad lgica de datos. Son usadas en: Manejo de arreglos. Manipulacin de bits ( P.F. por software) Conversin de ASCII a decimal empaquetado. Direcciones de memoria.Puerto la Cruz, mayo del 2004

80

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Tipos de datos en el MIPSDatos del CPU El CPU distingue los siguientes formatos de datos: Bit (b) Byte (8 bits, B) Halfword (16 bits, H) Word (32 bits, W) Doubleword (64 bits, D)

Puerto la Cruz, mayo del 2004

81

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Datos del FPU El FPU distingue los siguientes formatos de datos:

32-bit single-precision floating point (.fmt type S) 32-bit single-precision floating point paired-single (.fmt type PS) 64-bit double-precision floating point (.fmt type D) 32-bit Word fixed point (.fmt type W) 64-bit Long fixed point (.fmt type L)1Puerto la Cruz, mayo del 2004

82

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Tipos de datos en el Pentium

Puerto la Cruz, mayo del 2004

83

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Puerto la Cruz, mayo del 2004

84

Universidad de Oriente. Departamento de Electricidad

Captulo 3

6. Especificacin de operandosLas direcciones de memoria indicadas por la instruccin se especifican de distintas formas dependiendo de la mquina. Interpretacin de las direcciones de memoria: Debe especificarse que objeto y de cual longitud es accedido por la direccin. Lo usual es direccionar bytes y permitir adems accesos a halfwords, words y doublewords. Depende de cmo se representan los bytes de una palabra y los bits en el byte.Puerto la Cruz, mayo del 2004

85

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Ordenamiento de bytes:Los bytes dentro de halfwords, words y doublewords pueden ordenarse de acuerdo con dos normas: Little endian y Big endian. Little endian(Intel, Power PC) El byte 0 es siempre el byte menos significativo (lsb). La direccin de un dato ser la direccin del byte lsb.

Puerto la Cruz, mayo del 2004

86

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Big endian (MIPS, Power PC por defecto) El byte 0 es siempre el byte ms significativo (msb). La direccin de un dato ser la direccin del byte msb.

Puerto la Cruz, mayo del 2004

87

00

31 32

00

34 33 32 31

31323334H 4142H 7172737475767778H A,B,C 9192H0C 08 04

33 34 41 42

04

42 41

0871 72 73 74 75 76 78 77

0C

76 75 74 73

10

77 78 A B

10

72 71 A B

14

C

14

C

Bid Endian 91Puerto la Cruz, mayo del 200492

Little 92 Endian91

88

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Aunque para un valor escalar multibyte el orden de los bytes en little endian es inverso al de big endian, la direccin de cualquiera de los datos es la misma en ambos convenios. Por ejemplo para 4142H la direc-cin es 04. El tipo de endian no modifica el orden de los ele-mentos de una cadena de caracteres. La direccin de cada elemento de la cadena es el mismo en ambos esquemas. Los aspectos referentes al orden de los bits depende de la mquina. Por ejemplo: El primer bit es el cero o el uno? El bit de menor orden corresponde al lsb (little endian) o al msb (big endian)?

Puerto la Cruz, mayo del 2004

89

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Alineacin de bytes:En algunos computadores los datos escalares multibytes requieren la alineacin del dato en la memoria. Se dice que un objeto de s bytes est alineado en la direccin A si A mod s = 0, es decir, si la direccin donde se carga el objeto es mltiplo de su tamao en bytes. Una media palabra debe estar almacenada en direcciones pares y una palabra (32 bits) en direcciones mltiplos de 4. La no alineacin complica el hardware ya que la memoria est organizada (alineada) en lmites de palabra.Puerto la Cruz, mayo del 2004

90

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Puerto la Cruz, mayo del 2004

91

Universidad de Oriente. Departamento de Electricidad

Captulo 3

En un tipo de formato fijo las instrucciones estn siempre alineadas. No obstante, puede soportarse el acceso a datos no alineados. Mayor flexibilidad en la ubicacin de los datos en memoria. Hardware ms complejo, mayor CPI. El acceso a datos menores que una palabra complica el hardware pero disminuye el nmero de instrucciones del cdigo. Si no es posible el acceso a bytes debe cargarse una palabra y luego seleccionarse la porcin deseada.Puerto la Cruz, mayo del 2004

92

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Modos de direccionamiento:Indican como las instrucciones obtiene los operandos. En las mquinas de registros de propsito general un modo de direccionamiento puede especificar un valor constante, el nmero de un registro o una posicin de memoria. La siguiente tabla muestra los modos de direccionamiento ms comunes en distintas ISA.

Puerto la Cruz, mayo del 2004

93

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Adems desplazamientos relativos al PC para especificar direcciones en instrucciones de saltos condicionales. Los modos usados con mayor frecuencia son: inmediato, indexado, desplazamiento, autoincremento y absoluto.Puerto la Cruz, mayo del 2004

94

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Los modos de direccionamientos complejos: Reducen el nmero de instrucciones del programa. Complican el hardware y aumentan el CPI. Parmetros determinantes de la longitud de las instrucciones: Nmero de bits destinados al desplazamiento. Rango de los valores inmediatos.

Puerto la Cruz, mayo del 2004

95

Universidad de Oriente. Departamento de Electricidad

Captulo 3

El modo de direccionamiento desplazamiento: El rango de desplazamiento debe ajustarse al nmero de bits permitido por la instruccin para este campo del formato y a la conveniencia de disponer de desplazamientos largos. Lo comn es destinar 8/16 bits para el campo de desplazamiento.

Puerto la Cruz, mayo del 2004

96

Universidad de Oriente. Departamento de Electricidad

Captulo 3

El modo de direccionamiento inmediato: El rango del operando inmediato debe resolver la disyuntiva entre permitir el uso de valores grandes y el nmero de bits asignados en la instruccin. Muchas comparaciones se hacen con cero. Los Ps MIPS reservan el registro R0 para que siempre contenga cero. Tambin se incluyen instrucciones especificas para trabajar con valores inmediatos pequeos. Por ejemplo, LHI R1,#valor carga el nmero de 16 bits: valor en la parte alta del registro R1:Puerto la Cruz, mayo del 2004

97

Universidad de Oriente. Departamento de Electricidad

Captulo 3

6. Tipos de instrucciones Transferencia de datos. (Load/Store y Move) Aritmticas. Lgicas. De control: saltos y llamadas y retornos a procedimiento. Entrada y salida. De conversin entre tipos de datos. Del sistema. (Llamadas al S.O. Gestin de memoria virtual).Puerto la Cruz, mayo del 2004

98

Universidad de Oriente. Departamento de Electricidad

Captulo 3

7. Instrucciones de control Saltos. Saltos condicionales. Llamadas/retorno a/desde procedimiento.

Modos de direccionamiento soportados: Absoluto. Indexado. Relativo al PC. Salto con enlace.99

Puerto la Cruz, mayo del 2004

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Modo relativo al PC: El destino del salto frecuentemente est cerca de la instruccin. Por ejemplo en lazos. Las direcciones relativas ocupan pocos bits. Simplifican la generacin de cdigo relocalizable. Lo comn es destinar al menos 8 bits para el desplazamiento. En MIPS 16/20 bits en saltos condicionales y 26 bits en incondicionales.Puerto la Cruz, mayo del 2004

100

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Salto con enlace Es un modo relativo al PC que adicionalmente carga la direccin de la siguiente instruccin en uno de los registros de la CPU. Se usa en instrucciones call de llamadas a procedimiento. El retorno desde el procedimiento se realizada mediante un salto indexado usando el registro que mantiene la direccin de retorno.Puerto la Cruz, mayo del 2004

101

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Ejemplo MIPSjal proc1... proc1: ... jr $31 ; Inicio procedimiento proc1 ; Retorno a programa principal.

; La direccin PC+4 se almacena por defecto en $31

Puerto la Cruz, mayo del 2004

102

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Saltos condicionales:El modo de evaluacin de la condicin vara con la mquina. 1. Cdigos de condicin (i80x86, PowerPC, SPARC) Algunas instrucciones se refieren a un bit de estado (usando cdigos de condicin) cuyo valor lgico se asigna segn el resultado de cada operacin aritmtica de la ALU. Existen varios bits de estado. Por ejemplo, Z: cero, C: acarreo, S: signo, P: paridad La instruccin de salto comprueba la condicin correspondiente antes de ejecutar el salto.Puerto la Cruz, mayo del 2004

103

Universidad de Oriente. Departamento de Electricidad

Captulo 3

add r1, r2, r3 ; r1 r2 - r3 cmp r1,#0 ; compare r1 con cero beq cero ; salto si el multiplicador es cero... mul r5,r4,r1 ; r5 = r4 * r1 ... cero: ... _________________________________________________ add r1, r2, r3 ; r1 r2 - r3 beq cero ; salto si el multiplicador es cero... mul r5,r4,r1 ; r5 = r4 * r1 ... cero: ...Puerto la Cruz, mayo del 2004

104

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Si la instruccin de salto condicional sigue a la que modifica el bit de estado, se ahorra la instruccin de comparacin. La generacin de las condiciones de estado requiere hardware adicional. Debido a que toda instruccin aritmtica modifica los bits de estado, puede presentarse problemas cuando se inicia la ejecucin de varias de estas instrucciones a la vez.

Puerto la Cruz, mayo del 2004

105

Universidad de Oriente. Departamento de Electricidad

Captulo 3

2.Comprobacin explicitaNo existen banderas de estado. El resultado de una operacin aritmtica se comprueba con instrucciones especificas. Dos posibilidades: Instrucciones de comparacin seguida de instruccin de salto condicional. (Alpha, MIPS)La bandera es evaluada por una instruccin de comparacin que deposita el resultado (booleano) en un registro. La instruccin de salto tiene como operando un registro.

Puerto la Cruz, mayo del 2004

106

Universidad de Oriente. Departamento de Electricidad

Captulo 3

cero:

add r1, r2, r3 ; r1 = r2 - r3 seq r10,r1,#0 ; si (r1=0) entonces r10="true" bt r10, zero ; si "true"... mul r5,r4,r1 ; r5 = r4 * r1 ...

La ventaja es la ortogonalidad del juego de instrucciones y la desventaja es que se debe usar un registro.

Puerto la Cruz, mayo del 2004

107

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Instruccin de comparacin y salto condicionalLa misma instruccin realiza la comparacin, evala la condicin y ejecuta el salto.

add r1, r2, r3 cmp&beq r1,#0,zero mul r5,r4,r1 cero: ...

; r1 = r2 - r3 ; si multiplicador cero... ; r5 = r4* r1

Reduce el nmero de instrucciones pero aumenta el CPI.

Puerto la Cruz, mayo del 2004

108

Universidad de Oriente. Departamento de Electricidad

Captulo 3

8. Oganizacin de los registrosEl proceso de compilacin debe generar un cdigo optimizado para tamao pequeo o para tiempo de ejecucin mnimo. La posibilidad de ubicacin de las variables en registros del P tiene una alta incidencia en la optimizacin del cdigo Nmero de registros: (al menos 32 de enteros y 32 de P.F.) Cantidad de variables de los programas a guardar en registros. Nmero de bits del formato de instruccin para especificar un registro. rea destinada en el C.I. para el banco de registros.109

Puerto la Cruz, mayo del 2004

Universidad de Oriente. Departamento de Electricidad

Captulo 3

9. Ejemplo de conjunto de InstruccionesEl P DLX (De Luxe) fue inspirado por el MIPS. Caractersticas: ISA de carga/almacenamiento. Maquina con segmentacin. Formato de instruccin regular. Buen soporte para el compilador.

Puerto la Cruz, mayo del 2004

110

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Registros y organizacin de la memoria: Banco de 32 registros de propsito general: R0 a R31. El registro R0 siempre contiene cero. Tiene 32/16 registros de simple (F0 a F31)/doble precisin (F0, F2,F4..30) Direcciones de 32 bits. Acceso solo load/store. Norma big endian. Accesos a byte y halfword. Accesos siempre alineados.Puerto la Cruz, mayo del 2004

111

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Clases de instrucciones Transferencia de datos. Instrucciones lgicas y de aritmtica entera. De control. Instrucciones de punto flotante. Todas las instrucciones son de 32 bits con un cdigo de operacin primario de 6 bits. Existen tres tipos de instrucciones: Tipo I, tipo R y tipo J.Puerto la Cruz, mayo del 2004

112

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Repertorio de instrucciones:Transferencias de datos Entre registros y memoria o entre registros de enteros (menos R0), punto flotante o especiales. Soporte solo el modo de direccionamiento con desplazamiento de 16 bits ms el contenido de un registro de propsito general.. Acceso a datos de tamao byte y halfword, con y sin extensin de signo.Puerto la Cruz, mayo del 2004

113

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Aritmticas: Operaciones sobre enteros o datos lgicos en registros de propsito general. Operaciones aritmticas simples adems de multiplicacin y divisin, funciones lgicas, desplazamientos y de comparacin. Modo inmediato de 16 bits para todas. Instruccin LHI para cargas de constantes mayores de 16 bits. Las instrucciones de comparacin cargan el resultado en un registro de propsito general.Puerto la Cruz, mayo del 2004

114

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Control: Salto incondicional: Relativo al PC (26 bits) e indirecto con registro. Salto incondicional con enlace (guarda PC en un registro): Relativo al PC e indirecto con registro. Salto condicional: = 0 y 0 : Relativo al PC (16 bits)

Puerto la Cruz, mayo del 2004

115

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Punto flotante: Adicin, sustraccin, producto y divisin con simple y doble precisin. Transferencia entre registros de punto flotante. Transferencia entre registros de punto flotante y de uso general. Conversin desde enteros a punto flotante y viceversa. ComparacinPuerto la Cruz, mayo del 2004

116

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Grupo de transferencias de datosAdr = (16 bits de desplazamiento con signo + registro de propsito general) = Desp(r) LB Rd,Adr LBU Rd,Adr LH Rd,Adr LHU Rd,Adr LW Rd,Adr LF Fd,Adr LD Dd,Adr SB Adr,Rs SH Adr,Rs SW Adr,Rs SF Adr,Fs SD Adr,Fs MOVI2FP Fd,Rs MOVI2FP Rd,Fs MOVF Fd,Fs MOVD Dd,Ds MOVI2S SR,Rs MOVS2I Rs,SR Load byte (sign extension) Load byte (unsigned) Load halfword (sign extension) Load halfword (unsigned) Load word Load single-precision Floating point Load double-precision Floating point Store byte Store halfword Store word Store single-precision Floating point Store double-precision Floating point Move 32 bits from integer registers to FP registers Move 32 bits from FP registers to integer registers Copy one Floating point register to another register Copy a double-precision pair to another pair Copy a register to a special register (not implemented!) Copy a special register to a GPR (not implemented!)

Puerto la Cruz, mayo del 2004

117

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Intrucciones lgicas y de aritmtica enteraADD Rd,Ra,Rb ADDI Rd,Ra,Imm ADDU Rd,Ra,Rb ADDUI Rd,Ra,Imm SUB Rd,Ra,Rb SUBI Rd,Ra,Imm SUBU Rd,Ra,Rb SUBUI Rd,Ra,Imm MULT Rd,Ra,Rb MULTU Rd,Ra,Rb DIV Rd,Ra,Rb DIVU Rd,Ra,Rb AND Rd,Ra,Rb ANDI Rd,Ra,Imm OR Rd,Ra,Rb ORI Rd,Ra,Imm Add Add immediate (all immediates are 16 bits) Add unsigned Add unsigned immediate Subtract Subtract immediate Subtract unsigned Subtract unsigned immediate Multiply signed Multiply unsigned Divide signed Divide unsigned And And immediate Or Or immediate

Puerto la Cruz, mayo del 2004

118

Universidad de Oriente. Departamento de Electricidad

Captulo 3

XOR Rd,Ra,Rb XORI Rd,Ra,Imm LHI Rd,Imm SLL Rd,Rs,Rc SRL Rd,Rs,Rc SRA Rd,Rs,Rc SLLI Rd,Rs,Imm SRLI Rd,Rs,Imm SRAI Rd,Rs,Imm S__ Rd,Ra,Rb S__I Rd,Ra,Imm S__U Rd,Ra,Rb S__UI Rd,Ra,Imm NOP

Xor Xor immediate LOad high immediate - loads upper half of register with immediate Shift left logical Shift right logical Shift right arithmetic Shift left logical 'immediate' bits Shift right logical 'immediate' bits Shift right arithmetic 'immediate' bits Set conditional: "__" may be EQ, NE, LT, GT, LE or GE Set conditional immediate:"__" may be EQ, NE, LT, GT, LE or GE Set conditional unsigned: "__" may be EQ, NE, LT, GT, LE or GE Set conditional unsigned immediate:"__"may be EQ, NE, LT, GT, LE or GE No operation

Puerto la Cruz, mayo del 2004

119

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Intrucciones de controlBEQZ Rt,Dest BNEZ Rt,Dest BFPT Dest BFPF Dest J Dest JR Rx JAL Dest JALR Rx TRAP Imm RFE Dest Branch if GPR equal to zero; 16-bit offset from PC Branch if GPR not equal to zero; 16-bit offset from PC Test comparison bit in the FP status register (true) and branch; 16-bit offset from PC Test comparison bit in the FP status register (false) and branch; 16-bit offset from PC Jump: 26-bit offset from PC Jump: target in register Jump and link: save PC+4 to R31; target is PC-relative Jump and link: save PC+4 to R31; target is a register Transfer to operating system at a vectored address; see Traps. Return to user code from an execption; restore user mode (not implemented!)

Puerto la Cruz, mayo del 2004

120

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Intrucciones de punto flotanteADDD Dd,Da,Db Add double-precision numbers ADDF Fd,Fa,Fb Add single-precision numbers SUBD Dd,Da,Db Subtract double-precision numbers SUBF Fd,Fa,Fb Subtract single-precision numbers. MULTD Dd,Da,Db Multiply double-precision Floating point numbers MULTF Fd,Fa,Fb Multiply single-precision Floating point numbers DIVD Dd,Da,Db Divide double-precision Floating point numbers DIVF Fd,Fa,Fb Divide single-precision Floating point numbers CVTF2D Dd,Fs Converts from type single-precision to type double-precision CVTD2F Fd,Ds Converts from type double-precision to type single-precision CVTF2I Fd,Fs Converts from type single-precision to type integer CVTI2F Fd,Fs Converts from type integer to type single-precision CVTD2I Fd,Ds Converts from type double-precision to type integer CVTI2D Dd,Fs Converts from type integer to type double-precision __D Da,Db Double-precision compares: "__" may be EQ, NE, LT, GT, LE or GE; sets comparison bit in FP status register __F Fa,Fb Single-precision compares: "__" may be EQ, NE, LT, GT, LE or GE; sets comparison bit in FP status register Puerto la Cruz, mayo del 2004

121

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Formatos de instrucciones Instrucciones tipo I

Cargas y almacenamientos. rd mem[rs+inmediato] Todo inmediatos rd (rs1 op inmediato) Instrucciones bifurcacin condicional (rs1 es un registro, rd no se usa) jr: salto con registro y jar: salto y enlace con registro con rd = 0, rs1 = Registro e Inmediato = 0

Puerto la Cruz, mayo del 2004

122

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Instrucciones tipo R

Operaciones de la ALU entre registros Instrucciones movxxx

rd rs func rs2

rd rs1

Puerto la Cruz, mayo del 2004

123

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Instrucciones tipo J

j (salto) y jal (salto y enlace) Trap (interrupcin vectorizada) RFE (retorno desde excepcin)

Puerto la Cruz, mayo del 2004

124

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Ensamblador para el DLX Sintaxis:Cadenas de caracteres entre Nmeros: Decimales (32). Hexadecimales (0x20). Octales (040). Direcciones: la forma comn es un nmero el cual es interpretado como una direccin de la memoria. Las expresiones que representen direcciones pueden consistir de nmeros, smbolos (definidos en los archivos cargados), los operadores: *,/,+,-,,&,| y ^ (los cuales tienen el mismo significado y precedencia que en C ) y parntesis para agrupamientos. Rangos: Bytes: Halfwords: Words: -128 .. +255 (8 Bits) -32768 .. +65535 (16-Bits) -2147483648 ..+2147483647 oder 0xffffffff (32-Bits)125

Puerto la Cruz, mayo del 2004

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Directivas:Las directivas del ensamblador son:.align

n

Provoca que el cdigo o los datos que vienen a continuacin sean cargados en la parte ms alta de la direccin con los n bits de menor peso puestos a cero, es decir, en la siguiente direccin ms cercana, que sea igual o mayor que la actual direccin y que adems sea mltiplo de 2n. .data [Direccin] Indica que lo escrito a continuacin ser almacenado en la memoria de datos del DLX. El parmetro direccin es optativo. Si se pone, los datos sern cargados a partir de esa direccin, si no se pone, entonces se cargan a partir de la direccin contenida en el puntero de datos. Por defecto al comenzar a ensamblar un programa el puntero de datos toma el valor 0x00000000.Puerto la Cruz, mayo del 2004

126

Universidad de Oriente. Departamento de Electricidad

Captulo 3

. space

tamao

Incrementa el puntero de datos tamao bytes para dejar espacio libre en memoria. Normalmente se utiliza para reservar memoria para las variables del programa. .text [direccin] Indica que lo escrito a continuacin ser almacenado en la memoria de instrucciones del DLX. El parmetro "Direccin" es optativo. Si se pone, las instrucciones sern ensambladas a partir de esa direccin, si no se pone, entonces se ensamblan a partir de la direccin contenida en el puntero de cdigo. Por defecto al comenzar a ensamblar un programa el puntero de cdigo toma el valor 0x00000000. .word palabra1,palabra2,... Almacena la lista de palabras de forma secuencial en la memoria de la mquina a partir de la direccin indicada por el puntero de datos.

Puerto la Cruz, mayo del 2004

127

Universidad de Oriente. Departamento de Electricidad

Captulo 3

. byte "byte1", "byte2",... Almacena la lista de bytes de forma secuencial en la memoria de la mquina a partir de la direccin indicada por el puntero de datos. .ascii cadena1, cadena2, Almacena en memoria las cadenas en la lnea como una lista de caracteres. .asciiz cadena1, cadena2, Igual que ascii excepto que cada cadena termina con un byte cero. .global etiqueta Convierte la etiqueta en un smbolo disponible para referencia por cdigo cargado despus del mdulo que contiene a etiqueta. .double nmero1,... Almacena los nmeros de la lista secuencialmente en memoria como un valor de punto flotante de doble precisin.Puerto la Cruz, mayo del 2004

128

Universidad de Oriente. Departamento de Electricidad

Captulo 3

Ejemplo de programacin

Escribir el cdigo para realizar la operacin vectorial:Y = a X + Y

Con X e Y vectores de punto flotante de 64 elementos almacenados a partir de las direcciones dX,dY y a un escalar entero cargado en la direccin da.

Puerto la Cruz, mayo del 2004

129

Universidad de Oriente. Departamento de Electricidad

Captulo 3

;Cdigo DLX para realizar la operacin vectorial: ; Y = aX + Y , siendo: ;X e Y vectores de punto flotante de 64 elementos almacenados a partir de las direcciones ;dX,dY y a un escalar entero, almacenaado en la direccin da. .data

da: .word 20000 .align 8dX: .double 64.24, 63.98, 62.27,61, 60, 59, 58, 57, 56, 55, 54, 53, 53, 51, 50 .double 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35 .double 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20 .double 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 dY: .double 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 53, 51, 50 .double 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35 .double 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20 .double 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1Puerto la Cruz, mayo del 2004

130

Universidad de Oriente. Departamento de Electricidad

Captulo 3

.text .align 4 ADD R1,R0,dX ADD R2,R0,dY ADD R4,R1,512 LW R3,da MOVI2FP F0,R3 CVTI2D F6,F0 lazo: LD F2,0(R1) MULTD F2,F6,F2 LD F4,0(R2) ADDD F4,F2,F4 SD 0(R2),F4 ADD R1,R1,#8 ADD R2,R2,#8 SLE R20,R1,R4 BNEZ R20,lazo trap 0Puerto la Cruz, mayo del 2004

; R1 contiene la direccion de X ; R2 contiene la direccion de Y ; 512 = 64 * 8 ; La variable a esta en la dir da ;F0 contiene la constante a ; F6 contiene a en formato de punto flotante ;Carga X(i) en F2 ;Multiplica a * X(i) ;Carga Y(i) en F4 ;F4 contiene a * X(i) + Y(i) ;Almacena Y(i) ;Incrementa ndice de X ;Incrementa ndice de Y ;Probar si ltimo elemento del vector ; No, continuar

131