Logo Studenta

Apuntes de Arquitectura de Computadores nivel universitario

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

apuntes_arquitectura_computadores/3.1.2 Repertorio de instrucciones.pdf
Estructura y Tecnología de Computadores 
Módulo 3.1.2 – Hoja de Problemas 
 
  1
Problema 1. Compare  las máquinas  de  cero,  una,  dos  y  tres  direcciones,  escribiendo  programas  que 
calculen: 
X=(A+B*C)/(D‐E*F) 
para cada una de las cuatro máquinas. Las instrucciones de que se dispone son: 
0 Direcciones  1 Dirección  2 Direcciones  3 Direcciones 
PUSH M  LOAD M  MOVE Z,Y (Z=Y)  MOVE X,Y (X=Y) 
POP M  STORE M  ADD X,Y (X=X+Y)  ADD X,Y,Z (X=Y+Z) 
ADD  ADD M  SUB X,Y (X=X‐Y)  SUB X,Y,Z (X=Y‐Z) 
SUB  SUB M  MUL X,Y (X=X×Y)  MUL X,Y,Z (X=Y*Z) 
MUL  MUL M  DIV X,Y (X=X/Y)  DIV X,Y,Z (X=Y*Z) 
DIV  DIV M     
 
 
Problema 2. Comparar los computadores de 1, 2 y 3 direcciones escribiendo los programas para calcular 
la expresión X= (A+B*C) / (D‐E*F‐G*H), siendo los repertorios los siguientes: 
a) 1 Dirección: LOAD M; STORE M; SUM M; RES M; MUL M; DIV M. 
b) 2 Direcciones: MOVE X,Y; SUM X,Y; RES X,Y; MUL X,Y; DIV X,Y 
c) 3 Direcciones: SUM X,Y,Z; RES X,Y,Z; MUL X,Y,Z; DIV X,Y,Z 
Donde M es una posición de memoria y X, Y, Z son direcciones de memoria o registros. 
 
Problema 3. Sea un computador con palabras de 32 bits. La CPU tiene 64 instrucciones diferentes de un 
operando, 32 registros de propósito general de 32 bits y posibilidad de direccionamiento directo a registro 
o indirecto con desplazamiento a registro‐base. 
a) Diseñar el formato de instrucción para este computador. Debe especificar un registro de dirección y 
un desplazamiento, además del modo de direccionamiento y código de operación. 
b) ¿Cuál es el máximo valor del desplazamiento (el desplaz. es un número en C2)? 
 
Problema 4. Un computador con palabras de 24 bits posee 16 instrucciones diferentes de un operando, 
8  registros para de propósito  general,  y 3 modos de direccionamiento  (directo  a  registro,  indirecto  con 
registro e indirecto con desplazamiento a registro‐base). 
a) Diseñar un formato de instrucción para este computador. Debe especificar el código de operación, 
el modo de direccionamiento, un registro y un desplazamiento. 
b) ¿Cuál es el rango de valores del desplazamiento en magnitud?, ¿y en C2? 
 
Problema 5. Un computador tiene un formato de instrucción de 11 bits donde el campo de operando es 
de 4 bits. ¿Es posible codificar en este formato 5 instrucciones de dos operandos, 45 de un operando y 48 
sin operando? Justificar la respuesta. 
 
Problema 6. Un  computador  de  16  bits  de  ancho  de  palabra  (instrucciones,  palabra  de  memoria, 
registros) y 8 registros, tiene el siguiente repertorio de instrucciones: 14 instrucciones de referencia de un 
solo operando en memoria, con direccionamiento directo e indirecto de memoria, 31 instrucciones con dos 
operandos  con  los  modos  de  direccionamiento  directo  e  indirecto  de  registro  y  32  instrucciones  sin 
operando explícito. 
a) Especificar la codificación de las instrucciones. 
b) Especificar la zona de memoria alcanzable en cada tipo de direccionamiento y rango posible de 
valores de los operandos (en C2). 
 
Problema 7. Se tiene un computador con un ancho de palabra de 32 bits y con un banco de registros de 
32  registros  de  32  bits.  El  computador  tiene  64  instrucciones  diferentes  y  los  siguientes  modos  de 
direccionamiento; directo de memoria,  indirecto de memoria e  indirecto  con desplazamiento a  registro‐
base. 
Estructura y Tecnología de Computadores 
Módulo 3.1.2 – Hoja de Problemas 
 
  2
a) Diseñar los dos formatos de las instrucciones de dos operandos sabiendo que siempre un operando 
está en memoria y otro en registro. 
b) Si cada dirección de memoria especifica un byte ¿qué zona de memoria se puede acceder con cada 
uno de los modos de direccionamiento? 
 
Problema 8. Sabiendo que el banco de registros contiene los siguientes datos: 
<R0>=0;<R1>=100;<R2>=89;<R3>=60;<R4>=5;<R5>=765, <R6>=676;<R7>=837 
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuación: 
<25>=87, <26>=986, <27>=75, <28>=876, <29>=63, <30>,=654 
<200>=65, <201>=424, <202>=87, <203>=53, <204>=765, <205>=53,  
Indicar donde se almacena y cuál es el resultado de las siguientes instrucciones: 
a) ADD R3,R5,R4 
b) SUB R3,R5,R4 
c) SUB R3,R4,#45 
Sabiendo que el primer operando de las operaciones es el destino 
 
Problema 9. Sabiendo que el banco de registros contiene los siguientes datos: 
<R0>=0;<R1>=100;<R2>=89;<R3>=29;<R4>=25;<R5>=27, <R6>=676;<R7>=837 
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuación: 
<25>=87, <26>=986, <27>=75, <28>=876, <29>=63, <30>,=203 
<200>=29, <201>=424, <202>=28, <203>=30, <204>=27, <205>=53,  
Indicar donde se almacena y cuál es el resultado de las siguientes instrucciones: 
a) SUB R7,(200),(R3) 
b) MUL (202),(203),(204) 
 
Problema 10. Mostrar el contenido de todos los registros y posiciones de memoria afectadas (sin incluir el 
PC) por la ejecución de cada una de las siguientes instrucciones del MC68000: 
a) CLR.L ‐(A1) 
b) CLR.W D2 
c) MOVE.W $1204,D1 
d) MOVE.W #$1204,D1 
e) MOVE.B (A2)+,$1200 
f) MOVE.L D1,‐(A2) 
g) MOVE.L (A1)+,D2 
Suponer que partimos siempre de las siguientes condiciones iniciales: 
REGISTROS:  A1:00001202, A2:00001204, D1:01020304, D2:F0F1F2F3 
MEMORIA:  001200:1111, 001202:2222, 001204:3333, 001206:4444, 001208:5555, 0120A:6666 
 
Problema 11. Mostrar el contenido de todos los registros y posiciones de memoria afectadas (sin incluir el 
PC) por la ejecución de cada una de las siguientes instrucciones del MC68000: 
a) MOVEA.W ‐(A1),A3 
b) CLR.B ‐11(A2) 
c) MOVE.W (A4)+,‐100(A1,D5.W) 
d) MOVE.W #$1FF,D5 
Suponer que partimos siempre de las siguientes condiciones iniciales: 
REGISTROS:  A1:00001504, A2:00001510, A3:11122233, A4:00001506, D5:FA000064 
MEMORIA:  001500:1234,001502:5678,001504:9ABC,001506:EF11,001508:2233,00150A:4455 
 
Problema 12. Suponiendo que se dan las siguientes condiciones iniciales en un MC68000: 
REGISTROS:  A1:00001504, A2:00001510, A4:00001506 
D3:11122233, D5:FA000070, D6:AB00FF9B 
Estructura y Tecnología de Computadores 
Módulo 3.1.2 – Hoja de Problemas 
 
  3
MEMORIA:  001500:1234, 001502:5678, 001504:9ABC 
001506:EF11, 001508:2233, 00150A:4455 
Mostrar el contenido de todos los registros y posiciones de memoria afectadas (incluyendo el contador de 
programa)  por  la  ejecución  de  cada  una  de  las  instrucciones.  Suponer  que  las  instrucciones  están  en 
posiciones consecutivas de memoria, a partir de la direccion $2000, y que se ejecutan en secuencia. 
CLR.B ‐(A4) 
MOVE.L ‐124(A2, D5.W), ‐(A1) 
MOVE.W $64(A4, D6.W), D3 
 
Problema 13. Considera  el  siguiente  programa  ARM.  El  programa  llama  a  una  subrutina  HexOut  para 
convertir el número VALUE a hexadecimal e imprimirlo en pantalla. SWI 0x11 sale del programa y SWI 0x00 
imprime el carácter ubicado en los 8 bits menos significativos de r0 en pantalla. 
 AREA Hex_Out, CODE, READONLY 
SWI_WriteC EQU &0 
SWI_Exit EQU &11 
 ENTRY 
 LDR r1, VALUE 
 BL HexOut 
 SWI Swi_Exit 
VALUE DCD &12345678 
HexOut MOV r2, #8 
LOOP MOV r0, r1, LSR #28 
 CMP r0, #9 
 ADDGT r0, r0, #‘A’-10 
 ADDLE r0, r0, #’0’ 
 SWI SWI_WriteC 
 MOV r1, r1, LSL #4 
 SUBS r2, r2, #1 
 BNE LOOP 
 MOV pc, r14 
 END 
a) ¿Qué registros afecta la instrucción BL? 
b) ¿Qué hace la instrucción MOV r0, r1, LSR #28? 
c) ¿Cuál es el efecto de la instrucción MOV r1, r1, LSL #4? 
 
Problema 14. Transforme los siguientes fragmentos de programa al lenguaje ensamblador ARM 
a) f = (a+b)‐(c+d); 
b) if(a==b) f=a+b; else f=a‐b; 
 
 
apuntes_arquitectura_computadores/3.1.2.repertorio de instrucciones y formato de la insttruccion maquina.pdf
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
3.1.2 Repertorio de instrucciones y formato de la
instrucción máquina
Parte III. Diseño del procesador
Módulo 3.1 Lenguaje máquina y ensamblador
Ingeniería Técnica en Informática
Facultad
de Informática - Universidad Complutense de Madrid
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Índice
1 Repertorio de instrucciones
Clasificación de las instrucciones
2 Aplicaciones del repertorio de instrucciones
Ejecución alternativa
Ejecución iterativa
Subrutinas
3 Formato de la instrucción máquina
Alternativas de diseño
Número de operandos explícitos
Ejemplos
4 Arquitecturas CISC y RISC
Arquitecturas CISC
Arquitecturas RISC
Ejempos
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Clasificación de las instrucciones (1/2)
Transferencia de datos, permiten el movimiento entre distintos
dispositivos de almacenamiento del computador
Aritméticas, permiten realizar operaciones de tipo aritmético
Lógicas y de manipulación de bits, permiten realizar operaciones
lógicas, bit a bit, entre los operandos o manipular un bit del
operando
Desplazamiento y rotación, permiten desplazar o rotar un operando
a la decha. o la izda. un no determinado de bits
Control de flujo, permiten romper la secuencia normal de ejecución
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Clasificación de las instrucciones (2/2)
Otras instrucciones
Transformación de datos
Manipulación de direcciones
Creación de marcos de almacenamiento local
Control del sistema
Entrada / Salida
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Transferencia de datos (1/2)
Permiten el movimiento entre distintos dispositivos de
almacenamiento del computador (registros, memoria y pila)
Necesario especificar
Tipo de movimiento
Dirección de operandos fuente y destino
Tamaño de datos a mover (byte, palabra, doble palabra, ...)
No de elementos a mover (para movimientos múltiples)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Transferencia de datos (2/2)
Instrucción Operación Descripción
MOVE fnte, dest dest ← fnte Transfiere palabra de reg. a reg.,
reg. a mem, mem. a reg o mem. a
mem. (fuente= mem. o reg.; des-
tino = mem. o reg.)
LOAD Ri, dir Ri ← dir Transfiere palabra de memoria a
registro
STORE dir, Ri Ri ← dir Transfiere palabra de registro a
memoria
PUSH fnte Pila ← fnte Transfiere palabra de mem. o reg.
a la cabecera de pila
POP dest dest ← Pila Transfiere palabra de cabecera de
pila a mem. o reg.
MOVEM fnte, dest, n dest0 ← fnte0 Transfiere n palabras a partir de
una dir. inicial fuente y una dir.
inicial destino
destn−1 ← fnten−1
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Instrucciones aritméticas (1/2)
Permiten realizar operaciones de tipo aritmético
Necesario especificar
Tipo de operación (suma, resta, multiplicación, división, etc.)
Tipo de operandos y de aritmética (con signo, sin signo, entera,
punto flotante, BCD, ...)
Tamaño de datos sobre los que se opera
Dirección de operandos fuente y destino (0, 1, 2 ó 3, según el
repertorio)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Instrucciones aritméticas (2/2)
Instrucción Operación Descripción
ADD fnt1,fnt2,dest dest←fnt1+fnt2 Suma dos operandos
SUB fnt1,fnt2,dest dest←fnt1-fnt2 Resta dos operandos
MULT fnt1,fnt2,dest dest←fnt1×fnt2 Multiplica dos operandos
DIV fnt1,fnt2,dest dest←fnt1/fnt2 Divide dos operandos
NEG fnte,dest dest←-fnte Cambia de signo al operando
ABS fnte,dest dest←abs(fnte) Obtiene el valor absoluto
INC fnte,dest dest←fnte+1 Suma 1 al operando
DEC fnte,dest dest←fnte-1 Resta 1 al operando
COMP fnt1,fnt2 fnt1-fnt2 Resta y activa los bits de
estado según resultado
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Instrucciones lógicas y de manipulación de bits (1/2)
Permiten realizar operaciones lógicas, bit a bit, entre los operandos
o manipular un bit del operando
Necesario especificar
Tipo de operación (AND, OR, NOT, Bit Clear, Bit Set, etc)
Tamaño de datos sobre los que se opera (byte, palabra, doble palabra,
...)
Dirección de operandos fuente y destino (0, 1, 2 ó 3, según el
repertorio)
El número de bit en las instrucciones de manipulación de bit
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Instrucciones lógicas y de manipulación de bits (2/2)
Instrucción Operación Descripción
AND fnt1,fnt2,dest dest←fnt1∧fnt2 Y lógica
OR fnt1,fnt2,dest dest←fnt1∨fnt2 O lógica
NOT fnte,dest dest← ¬fnte Negación
XOR fnt1,fnt2,dest dest←fnt1⊕fnt2 O exclusiva
BCLR dest,n dest(n)←0 Pone a 0 el bit n
BSET dest,n dest(n)←1 Pone a 1 el bit n
BTEST fnte,n Estado←fnte(n) Activa flag según bit n
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Desplazamiento y rotación (1/2)
Permiten desplazar o rotar un operando a la decha. o la izda. un no
determinado de bits
Necesario especificar
Tipo de operación (desplazamiento izda. o decha., rotación izda. o
decha., )
Tamaño de datos sobre los que se opera (byte, palabra, doble palabra,
...)
Dirección del operando
No de bits a desplazar o rotar
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Desplazamiento y rotación (2/2)
Instrucción Operación Descripción
LSL fnte,n Desp. lógico izda. n bits
LSR fnte,n Desp. lógico dcha. n bits
ASL fnte,n Desp. aritm. izda. n bits
ASR fnte,n Desp. aritm. dcha. n bits
RL fnte,n Rotación izquierda n bits
RR fnte,n Rotación derecha n bits
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Control de flujo (1/4)
Permiten romper la secuencia normal de ejecución y saltar a una
determinada dirección especificada en la instrucción o implícita
Necesario especificar
Dirección de siguiente instrucción a ejecutar si el salto es explícito
Las instrucciones de bifurcación o salto condicional (Bcc), saltan o
no en función de la condición especificada (cc)
Esta condición se calcula a partir de los bits de condición del
registro de estado
Los bits de condición se activan según el resultado de las
instrucciones que se detallan en las siguientes tablas
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Control de flujo (2/4)
Instrucción Operación Descripción
JMP dir PC←dir Salta (Jump) a dir
Bcc dir if(cc) PC←dir Bifurca (Branch) a dir
else PC←PC+longInstr si (cc) es cierta
JSR dir Pila←(PC,STR) Salto a subrutina
PC←dir Guarda PC y estado
RTS (PC,STR)←Pila Retorno subrutina, recupera PC y STR
SKIP n PC←PC+n×longInstr Salta n instrucciones
NOP PC←PC+longInstr No hace nada, siguiente instr.
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Control de flujo (3/4)
cc Nombre Cierta si
EQ Igual (Equal) En una comparación previa los operandos son
iguales
NEQ No igual (No equal) En una comparación previa los operandos son
distintos
GT Mayor que (Greater Than) En una comparación previa el primer operan-
do es mayor que el segundo
GE Mayor o igual (Gr. or Eq.) En una comparación previa el primer operan-
do es mayor o igual que el segundo
LT Menor que (Less Than) En una comparación previa el primer operan-
do es menor que el segundo
LE Menor o igual (Les.or Eq.) En una comparación previa el primer operan-
do es menor o igual que el segundo
Z Cero (Zero) El resultado de una operación anterior
es cero
NZ No cero (No Zero) El resultado de una operación anterior es dis-
tinto de cero
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Control de flujo (4/4)
cc Nombre Cierta si
P Positivo El resultado de una operación anterior es po-
sitivo
N Negativo El resultado de una operación anterior es ne-
gativo
C Acarreo (Carry) El resultado de una operación anterior ha
producido acareo
NC No acarreo (No Carry) El resultado de una operación anterior no ha
producido acareo
V Desbord. (Overflow) El resultado de una operación anterior ha
producido desbordamiento
NV No desbord. (No Overfl.) El resultado de una operación anterior no ha
producido desbordamiento
T Verdad (True) Siempre cierta
F Falso (False) Siempre falsa
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Otras instrucciones (1/2)
Transformación de datos
Cambian el formato de los datos, por ej. de decimal a binario
Manipulación de direcciones
Permiten calcular la dirección efectiva de un operando y almacenarla
en un registro o en pila
LEA fnt,reg (Load effective address: reg ← Dir de fnt)
PEA fnt (Push Effective Address: Pila ← Dir de fnte)
Creación de marcos de almacenamiento local
Permiten reservar espacio en la pila del sistema, p. ej:
LINK reg,#tam (Pila←reg, reg←SP, SP←SP+tam)
UNLK reg (SP←reg, reg←Pila)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Repertorio de instrucciones
Clasificación de las instrucciones
Otras instrucciones (2/2)
Control del sistema
Suelen ser instrucciones privilegiadas que usa el sistema operativo
RESET (para reiniciar el computador: PC←valor inicial)
RTE (retorno de excepción o interrupción)
E/S
Para entrada y salida de datos entre el computador y dispositivos
periféricos
IN dirPerif,reg (reg←Periférico)
OUT dirPerif,reg (Periférico←reg)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Ejecución alternativa
Ejecución alternativa
Según el valor de cierta condición o valor, se decide entre varios
caminos de ejecución
Simple: Un sólo if
Doble: if..else
Múltiple: Múltiples if..elseif
Selectiva: switch, case
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Ejecución alternativa
Ejecución alternativa simple
. . .
i f ( a cc b ) then
b loque
end
· · ·
· · ·
CMP a , b
BNcc end
b loque
end . . .
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Ejecución alternativa
Ejecución alternativa doble
· · ·
i f ( a cc b ) then
b l q th en
e l s e
b l q e l s e
end
· · ·
· · ·
CMP a , b
BNcc e l s e
b l q th en
JMP end
e l s e b l q e l s e
end · · ·
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Ejecución alternativa
Ejecución alternativa múltiple
· · ·
i f ( a0 cc0 b0 ) then
b loque0
e l s e i f ( a1 cc1 b1 ) then
b loque1
· · ·
e l s e i f ( an ccn bn ) then
b loquen
e l s e
b l q e l s e
end
· · ·
CMP a0 , b0
BNcc0 i f 1
b loque0
JMP end
i f 1 CMP a1 , b1
BNcc1 i f 2
b loque1
JMP end
· · ·
i f n CMP an , bn
BNccn e l s e
b loquen
JMP end
e l s e b l q e l s e
end · · ·
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Ejecución alternativa
Ejecución alternativa selectiva
· · ·
case a of
0 : b loque0
1 : b loque1
· · ·
n : b loquen
end
· · ·
t a b l a DATA etq0
DATA etq1
· · ·
DATA etqn
· · ·
MOVE a ,D1
LEA t a b l a (D1∗ tam_dir ) ,A1
JMP (A1)
etq0 b loque0
JMP end
etq1 b loque1
JMP end
· · ·
etqn b loquen
end · · ·
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Ejecución iterativa
Ejecución iterativa
Según el valor de cierta condición, se decide repetir la ejecución de
cierto bloque de código
Con evaluación al final: repeat..until
Con evaluación al principio: while
Con un número definido de iteraciones: for i=1,n
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Ejecución iterativa
Con evaluación al final
· · ·
repeat
b loque
un t i l a cc b
· · ·
· · ·
r e p e a t b loque
CMP a , b
BNcc r e p e a t
· · ·
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Ejecución iterativa
Con evaluación al principio
· · ·
whi le a cc b do
b loque
end
· · ·
· · ·
wh i l e CMP a , b
BNcc end
b loque
JMP wh i l e
end · · ·
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Ejecución iterativa
Con un número definido de iteraciones
· · ·
f o r c := n to m do
b loque
end
· · ·
· · ·
MOVE n , c
f o r CMP m, c
BGT end
b loque
INC c
JMP f o r
end · · ·
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Llamada a subrutina (1/5)
Supongamos:
Una memoria direccionada por bytes
Un tamaño palabra de 16 bits
Un tamaño de dirección de 32 bits
que un integer se representa mediante palabra
· · ·
procedure sub ( a , b : i n teger ; var c : i n teger )
begin
b loque
end
· · ·
sub ( x , y , z ) ;
· · ·
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Llamada a subrutina (2/5)
Parámetros
sub(x,y,z)
PUSH x
PUSH y
PEA z; !!
JSR sub
etq ...
—Memoria—
...
SP→ etq
SP→ EA(z)
SP→ y
SP→ x
...
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Llamada a subrutina (3/5)
Acceso a parámetros
;Salva contexto
sub PUSH SR
PUSH D0
PUSH D1
PUSH A0
MOVE 20(SP),D0 ;a
MOVE 18(SP),D1 ;b
MOVE 14(SP),A0 ;c en
&z
bloque
—Memoria—
...
SP→ (A0)
SP→ (D1) 4(SP)
SP→ (D0) 6(SP)
SP→ (SR) 8(SP)
etq 10(SP)
EA(z) A0←14(SP)
y D1←18(SP)
x D0←20(SP)
...
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Llamada a subrutina (4/5)
Restaura contexto
POP A0
POP D1
POP D0
POP SR
RTS
—Memoria—
...
SP→ (A0) →A0
SP→ (D1) →D1
SP→ (D0) →D0
SP→ (SR) →SR
SP→ etq JMP etq
SP→ EA(z)
y
x
...
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Llamada a subrutina (5/5)
; paso param
PUSH x
PUSH y
PEA z
; l l amada
JSR sub
// l i b e r a c i ó n param
etq ADD #8,SP
· · ·
sub PUSH SR ; s a l v a con t e x to
PUSH D0
PUSH D1
PUSH A0
; a c ce so a param
MOVE 14(SP) ,D0
MOVE 18(SP) ,D1
MOVE 20(SP) ,A0
b loque
; r e s t a u r a con t e x to
POP A0
POP D1
POP D0
POP SR
RTS ; r e t o r n o a etq
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Subrutina con variables locales (1/5)
Llamada a subrutina: Variables locales
Realizar la traza anterior con el siguiente fragmento de programa
· · ·
procedure sub ( a , b : i n teger ; var c : i n teger )
var l oc1 , loc2 , l o c 3 : i n teger
begin
b loque
end
· · ·
sub ( x , y , z ) ;
· · ·
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Subrutina con variables locales (2/5)
Parámetros
sub(x,y,z)
PUSH x
PUSH y
PEA z; !!
JSR sub
etq ...
—Memoria—
...
SP→ etq
SP→ EA(z)
SP→ y
SP→ x
...
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Subrutina con variables locales (3/5)
Acceso a parámetros
;Puntero de marco
sub LNK Ai,#-6
;Salva contexto
PUSH SR
PUSH D0
PUSH D1
PUSH A0
bloque
El mapa de memoria de la
figura constituye el marco
de activación de la
subrutina.
—Memoria—
SP→ (A0)
SP→ (D1)
SP→ (D0)
SP→ (SR)
SP→ -6(Ai)≡loc3
-4(Ai)≡loc2
-2(Ai)≡loc1
Ai→ (Ai)
SP→ etq
EA(z) 8(Ai)
y 12(Ai)
x 14(Ai)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Subrutina con variables locales (4/5)
Restaura contexto
POP A0
POP D1
POP D0
POP SR
UNLK Ai
RTS
—Memoria—
SP→ (A0) →A0
SP→ (D1) →D1
SP→ (D0) →D0
SP→ (SR) →SR
SP→ (Ai) →Ai
SP→ etq JMP etq
SP→ EA(z) 8(Ai)
y 12(Ai)
x 14(Ai)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Subrutina con variables locales (5/5)
; paso param
PUSH x
PUSH y
PEA z
; l l amada
JSR sub
// l i b e r a c i ó n param
etq ADD #8,SP
· · ·
; á r ea l o c a l de v a r i a b l e s
sub LNK Ai ,#−6
PUSH SR ; s a l v a con t e x to
PUSH D0
PUSH D1
PUSH A0
b loque
; r e s t a u r a con t e x to
POP A0
POP D1
POP D0
POP SR
UNLK Ai
RTS ; r e t o r n o a etq
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Aplicaciones del repertorio de instrucciones
Subrutinas
Anidamiento de subrutinas
Suponiendo que la subrutina "‘sub"’ es recursiva, la evolución de la
pila tras dos llamadas es la siguiente.
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Alternativas de diseño
De código ensamblador a programa en memoria
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Alternativas de diseño
De código ensamblador a programa en memoria
Ensamblador (assembler)
Resuelve las etiquetas de instrucciones y datos
Relativas a PC para instrucciones
Relativas a algún registro para datos
Expande macros y pseudo-instrucciones
Interpreta las directivas de ensamblaje
Fija la representación de los datos
Traduce las instrucciones a código máquina
Crea el fichero objeto
Determina cabeceras, segmentos de código y segmentos de datos
Crea tablas de símbolos: símbolos no resueltos + símbolos visibles
Añade información para la depuración
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Alternativas de diseño
De código ensamblador a programa en memoria
Enlazador (Linker)
Combina varios códigos objeto, resolviendo las referencias cruzadas
Crea un código ejecutable
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Alternativas de diseño
De código ensamblador a programa en memoria
Cargador (Loader)
Lee y carga sobre memoria el código ejecutable
Inicializa registros, pila y argumentos
Fija los vectores de excepción
Salta a la rutina de inicio del programa
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Alternativas de diseño
De código ensamblador a programa en memoria
Ciclo instrucción
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Alternativas de diseño
Elementos constitutivos de una instrucción máquina
Código de operación (opcode)
Especifica el tipo de operación a realizar: Suma, Resta, Y lógica,
Movimiento de datos, etc.
Operandos fuente
La instrucción puede involucrar uno o más operandos fuente (o
ninguno)
Estos podrán especificarse utilizando distintos modos de
direccionamiento
Operando destino
Si la instrucción produce un resultado deberá especificar el operando
destino
Este podrá especificarse utilizando distintos modos de
direccionamiento
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Alternativas de diseño
Elementos constitutivos de una instrucción máquina
Instrucción siguiente
En ocasiones es necesario especificar cuál es la siguiente instrucción a
ejecutar
Normalmente la ejecución del programa es secuencial, donde la
dirección de la siguiente instrucción suele ser implícita:
Dir. instr. siguiente = Dir. instr. actual + Longitud
instr. actual
En las instrucciones de salto sí es necesario especificar la dir. de la
siguiente instrucción
Ruptura de la secuencia normal del programa
Instrucción máquina
opcode op. fuente 1 ..... op. fuente n op. destino instr. siguiente
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Alternativas de diseño
Alternativas de diseño del formato de instrucción
A la hora de diseñar el formato de las instruc. máquina de un
repertorio, debemos decidir
Cuál será la longitud de las instrucciones
Todas las instrucciones de igual longitud
Instrucciones de distinta longitud, según el tipo de operación a realizar
De cuántos campos constará la misma (dependiendo del tipo de
instrucción)
Cuántos bits ocuparán cada uno de esos campos
Codificación de cada campo
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Alternativas de diseño
Alternativas de diseño del formato de instrucción
Los principales factores a tener en cuenta para decidir este formato
son
Número de operaciones distintas presentes en el repertorio
Aritméticas, lógicas, de control, de movimiento de datos, ...
Número de operandos de la instrucción (incluyendo operandos fuente
y destino)
Instrucciones sin operandos
Instrucciones con 1, 2, 3, ... operandos
Modos de direccionamiento disponibles para cada operando
Inmediato, absoluto, de registro, indirecto, ...
Tamaño y tipos de datos soportados
Bit, byte, palabra, doble palabra, ...
Caracteres, BCD, magnitud y signo, complemento a 2, punto
flotante, ...
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Número de operandos explícitos
Introducción
Una operación típica de un computador (p. e. A=B+C) suele tener
tres operandos
Dos operandos fuente B y C y un operando destino A
Las principales alternativas que se presentan son
Instrucciones con tres operandos explícitos
Instrucciones con dos operandos explícitos
Instrucciones con un único operando explícito
Instrucciones sin operandos explícitos
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Número de operandos explícitos
Instrucciones con tres operandos explícitos
Se especifican los tres operandos en la instrucción máquina
Cada operando puede soportar distintos modos de direccionamiento
Formato flexible, pero ocupa mucho espacio
Ejemplo
ADD A,B,C (A←B+C)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Número de operandos explícitos
Instrucciones con dos operandos explícitos
Dos operandos explícitos y uno implícito
Uno de los operandos actúa como fuente y destino
Cada operando puede soportar distintos modos de direccionamiento
Es menos flexible, pero ocupa menos espacio
Ejemplo
ADD B,C (B←B+C)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Número de operandos explícitos
Instrucciones con un operando explícito
Se especifica un sólo operando en la instrucción máquina
Uno de los operandos y el resultado se almacenan en un registro
especial del procesador: el acumulador
El operando puede soportar distintos modos de direccionamiento
Formato muy reducido, pero poco flexible
Ejemplo
ADD B (Acum.←B+Acum.)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Número de operandos explícitos
Instrucciones sin operandos explícitos
Tanto los operandos como el resultado se almacenan en la pila del
sistema
Ocupa muy poco espacio
Requiere varias instrucciones previas de acceso a la pila
Ejemplo
ADD ((SP)←(SP)+(SP+1))
3.1.2 Repertorio de instrucciones y formato de la instrucción
máquina
Formato de la instrucción máquina
Ejemplos
Ejemplo: Número de operandos
Ejemplo
Escribir los programas simbólicos para la siguiente operación:
Y = (A− B)/(C + D ∗ E )
en un computador de 0, 1, 2 ó 3 operandos, utilizando las instrucciones
que sean necesarias y sin sobreescribir el contenido de ninguno de los
operandos fuente.
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Ejemplos
Ejemplo: Diseño de instrucción máquina
Diseño de instrucción máquina
Diseñar el formato de las instrucciones de un computador con 8 registros
de propósito general que permita codificar en una instrucción de 32 bits:
12 instrucciones de 3 operandos
Dos operandos, con direccionamiento absoluto e indirecto de memoria
Un operando, con direccionamiento de registro en indirecto de registro
150 instrucciones de 2 operandos
Un operando, con direccionamiento absoluto e indirecto de memoria
Un operando, con direccionamiento de registro en indirecto de registro
30 instrucciones de 0 operandos
Nota: El campo dirección de los operandos con direccionamiento
absoluto e indirecto de memoria será de 11 bits.
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Formato de la instrucción máquina
Ejemplos
Ejemplo: Diseño de instrucción máquina
Solución
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Arquitecturas CISC
Introducción
CISC
Complex Instruction Set Computer
Computador de conjunto de instrucciones complejo
Desde los años 60 (en que aparece la unidad de control
microprogramada) hasta principio de los años 80 la tendencia ha
sido incrementar la complejidad de la CPU
Gran número de instrucciones en el repertorio e instrucciones
complejas
Uso de gran número de modos de direccionamiento complejos
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Arquitecturas CISC
Introducción
Esta tendencia se debe a varias razones
Aparecen lenguajes de programación de alto nivel cada vez más
sofisticados
Diseño de instrucciones complejas que permitan implementar
instrucciones de alto nivel directamente o con un pequeño número de
instrucciones máquina
Una instrucción de alto nivel compleja implementable directamente
en hardware, mejora la eficiencia del programa ya que se ejecuta
mucho más rápidamente
Gracias al uso de unidad de control microprogramada, se pueden
implementar estas instrucciones máquinas complejas de forma
simple, sin demasiado coste para el diseñador
Facilidad para mantener la compatibilidad hacia abajo con los
miembros de la misma familia
Añadir nuevas instrucciones al repertorio, manteniendo las antiguas
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Arquitecturas CISC
Problemas de las arquitecturas CISC
Los estudios de ejecución de programas en arquitecturas CISC
revelan que
La mayor parte de las instrucciones complejas apenas se utilizan en
programas reales
Lo mismo ocurre con modos de direccionamiento complejos
Dificultad para diseñar compiladores eficientes
Al aumentar la complejidad del repertorio se hace cada vez más difícil
diseñar compiladores que aprovechen realmente esta gran variedad y
versatilidad de instrucciones máquina
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Arquitecturas CISC
Problemas de las arquitecturas CISC
Las instrucciones ocupan mucho espacio en memoria
Al existir un gran número de instrucciones y de modos de
direccionamiento se necesita mucho espacio para codificar las
instrucciones máquina y se tarda más tiempo en leerlas de memoria
El tiempo de acceso a memoria para captar instrucciones (Fetch)
resulta cada vez más crítico conforme evolucionan los computadores
Debido a estos problemas a principio de los 80 surge la arquitectura RISC
(Computador de conjunto de instrucciones reducido)
Idea básica: hacer rápidos y eficientes los casos más comunes a costa de
reducir la velocidad en los casos menos comunes
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Arquitecturas RISC
Características
Repertorio de instrucciones simple y ortogonal
Sólo se dispone de instrucciones máquina básicas
Repertorio ortogonal: no existen varias instrucciones distintas para
realizar la misma operación
Modos de direccionamiento sencillos
Cada operando sólo soporta unos pocos modos de direccionamiento
simples
Formatos de instrucción uniformes
Número reducido de formatos de instrucciones distintos
Todas las instrucciones de longitud similar
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Arquitecturas RISC
Características
Tipos de datos simples
Las instrucciones sólo soportan unos pocos tipos de datos básicos
distintos
Arquitectura de tipo registro-registro
Sólo algunas instrucciones MIPS: LOAD (Mem→Reg) y MIPS: STORE
(Reg→Mem) hacen referencia a memoria
El resto de instrucciones (aritméticas, lógicas, etc.) son de tipo
registro-registro
Tanto los operandos fuente como destino son registros de la
arquitectura
Las arquitecturas RISC suelen caracterizarse por disponer de un gran
número de registros de propósito general
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Arquitecturas RISC
Ventajas de las arquitecturas RISC
Su estructura es mucho más simple
Es más rápido y puede trabajar a mayor velocidad
Su diseño es más sencillo y barato
Instrucciones más cortas
Tardan menos tiempo en leerse de memoria
Mayor simplicidad para generar código máquina
Los compiladores son más eficientes y más sencillos de diseñar
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Arquitecturas RISC
Desventajas de las arquitecturas RISC
El compilador genera un mayor número de instrucciones máquina
Se necesitan varias instrucciones para ejecutar las instrucciones de
alto nivel
Mayor número de instrucciones ⇔ Instrucciones más rápidas
Más difícil mantener la compatibilidad entre computadores de la
misma familia
Para diseñar un repertorio simple no se pueden ’heredar’ todas las
instrucciones
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Computadores CISC
VAX 11 (desaparecido)
IBM Mainframes
serie 360, 370 y descendientes
Intel 80x86
i8086, i80286, i80386, i80486, Pentium, Pentium II, ..., Pentium IV,
IA64
Motorola MC68xxx
MC68000, MC68010, MC68020, MC68030, MC68040, MC68060
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Computadores RISC
Motorola MC88000 (desaparecido)
MIPS Rxxxx
R2000, R3000, R4000, R5000, R8000, R10000, R12000
Sun SPARC
SPARC, Super SPARC 2, Ultra SPARC I, Ultra SPARC II, Ultra
SPARC III
HP PA-RISC
7100, 7200, 7300, 8000, 8200, 8500
PowerPC
601, 602, 603, 604, 620, 630, Power3
DEC Alpha
21064, 21064a, 21066a, 21164, 21164a, 21264
Intel 80860, Intel 80960
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Características
Procesador CISC de 16 bits
Aprox. 90 instrucciones máquina
12 modos de direccionamiento
9 formatos de instrucción distintos y con tamaños de una a cinco
palabras
Ancho del bus de datos: 16 bits
Tamaño mínimo direccionable: 1 byte
Ancho del bus de direcciones: 24 bits (224 bytes = 16 MB de
memoria direccionables)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Modos de funcionamiento
Modo usuario
Modo normal de ejecución de programas
No tiene acceso a determinadas instrucciones privilegiadas
No tiene acceso a determinados registros del supervisor
Modo supervisor
Modo de ejecución del Sistema Operativo y durante el tratamiento de
interrupciones
Tiene acceso a
todas las instrucciones privilegiadas y a registros del
supervisor
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Tipos de datos y direccionamiento
Tipos de datos: Visto en tema anterior
Registros de la arquitectura: Visto en tema anterior
Registro de estado: Visto en tema anterior
Modos de direccionamiento: Visto en tema anterior
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Formato de las instrucciones
Características
Instrucciones de 0, 1 y 2 operandos
9 formatos distintos
Longitud entre 1 y 5 palabras
Contenidos de una instrucción máquina
Palabra operación (OW, siempre presente)
Primera palabra de la instrucción: Contiene el código de operación,
modos de direccionamiento y tamaño de los operandos
Palabra de extensión (EW, de 0 a 4)
Información adicional de los operandos: Valor inmediato y
desplazamiento
Codificación modos de direccionamiento
Dos campos: modo y registro (6 bits)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Formato de las instrucciones
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Formato de las instrucciones
EA
Codificación de los modos de direccionamiento modo Registro
Directo de reg. de datos 000 No de reg. (Dn)
Directo de reg. de direcciones 001 No de reg. (An)
Indirecto de reg. 010 No de reg. (An)
Indirecto de reg. con postincr. 011 No de reg. (An)
Indirecto de reg. con predecr. 100 No de reg. (An)
Indirecto de reg. con desplaz. 101 No de reg. (An)
Indirecto de reg. index. con deplaz. 110 No de reg. (An)
Absoluto corto 111 000
Absoluto largo 111 001
Relativo al PC con deplaz. 111 010
Relativo al PC index. con deplaz. 111 011
Inmediato 111 100
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones de 0 y 1 operandos
Instrucciones de 0 operandos
Instrucciones de 1 operando
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones de 2 operandos
3 formatos
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Otras
2 operandos con operando inmediato corto
Bifurcación condicional: Bcc
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones de movimiento de datos
INSTR. DESCRIPTION EXAMPLE
Copies an 8-, 16- or 32-bit value from MOVE.B #$8C,D0 [D0]←$XXXXXX8C
MOVE one memory location or register to MOVE.W #$8C,D0 [D0]←$XXXX008C
another memory location or register MOVE.L #$8C,D0 [D0]←$0000008C
Copies a source operand to an
address register. MOVEA operates MOVEA.W #$8C00,A0 [A0]←$FFFF8C00
MOVEA only on words or longwords.
MOVEA.W sign-extends the 16-bit MOVEA.L #$8C00,A0 [A0]←$00008C00
operand to 32 bits.
Copies a 8-bit signed value in the
range −128 to +127 to one of the eight MOVEQ #-3,D0 [D0]←$FFFFFFFD
MOVEQ data registers. The data to be moved
is sign-extended before it is copied to MOVEQ #4,D0 [D0]←$00000004
its destination.
Transfers the contents of a group of
registers specified by a list. The list of
MOVEM registers is defined as Ai − Aj/Dp − Dq . MOVEM.L A0-A3/D0-D7,-(A7) ;copies all working
MOVEM operates only on words or ;registers to stack
longwords.
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones de aritmética entera
INSTR. DESCRIPTION EXAMPLE
ADDx/SUBx add/subtract the contents of a source to/from the
ADDx contents of a destination and deposits the result in the ADD.W D0,D1 [D1]←$11118123
destination location. Direct memory-to-memory operations are ADD.L D0,D1 [D1]←$22228123
SUBx not permitted. Assume [D0]=$11118000 and ADDQ #N,D1 N ∈ [1, 8]
[D1]=$11110123. SUB.L D1,D0 [D0]←$00007EDD
MULU (multiply unsigned) forms the product of two 16-bit
MULU integers. The 32-bit destination must be a data register. MULS MULU #$0800,D0 [D0]←$00400000
MULS is similar but treats data as signed. Assume
[D0]=$ABCD8000.
DIVU (divide unsigned) works with a 32-bit dividend and a
DIVU 16-bit divisor. The dividend must be a data register. The 16-bit
result is stored in the low word of the destination, and the DIVS #-3,D0 [D0]←$0002FFFC
DIVS 16-bit remainder in the high word. DIVS is similar but treats
data as signed. Assume [D0]=$0000000E, 1410.
CRL (clear) writes zeros into the destination operand. NEG
CLR (negate) performs a 2s complement operation on the CLR.B D0 [D0]←$1234B000
NEG destination data–subtracts it from zero. Assume CLR.L D0 [D0]←$00000000
[D0]=$1234B021. NEG.W D0 [D0]←$12344FDF
Sign-extend increases the bit-size of a signed integer. EXT.W
EXT converts an 8-bit into a 16-bit, and EXT.L converts a 16-bit EXT.W D0 [D0]←$12340021
into a 32-bit. Assume [D0]=$1234B021. EXT.L D0 [D0]←$FFFFB021
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones booleanas
INSTR. DESCRIPTION EXAMPLE
AND Bit-wise logical AND operation.
Normally used to clear, or mask, ANDI.B # %0111111,D0 clear the 8th least
ANDI certain bits in a destination operand. significant bit of D0
OR Bit-wise logical OR operation.
Normally used to set certain bits in a ORI.B # %10101010,D0 set even bits of D0
ORI destination operand. lowest byte
EOR Bit-wise logical XOR operation. EOR.B # %11111111,D0 XOR of the lowest byte of D0
EORI
NOT Bit-wise NOT operation. Assume NOT.W D0 [D0]←$12340F0F
[D0]=$1234F0F0.
TST Similar to CMP #0,operand TST D0 update N,Z and clear V,C
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones de desplazamiento y rotación
INSTR. OPERATION SCHEME
ASL Arithmetic shift left
ASR Arithmetic shift right
LSL Logic shift left
LSR Logic shift right
ROL Rotate left
ROR Rotate right
SWAP Swap words of a long word
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones de manipulación de bits
INSTR. DESCRIPTION EXAMPLE: Assume [D0]=$00000009
Bit test and set Causes the Z-bit to
BSET be set if the specified bit is zero and BSET #2, D0 [D0]←$0000000D, Z←1
then forces the specified bit of the
operand to be set to one
Bit test and clear works like BSET
BCLR except that the specified bit is BCLR #0, D0 [D0]←$00000008, Z←0
cleared (forced to zero) after it has
been tested
Bit test and change causes the
BCHG value of the specified bit to be BCHG #4, D0 [D0]←$00000019, Z←1
reflected in the Z-bit and then toggles
(inverts) the state of the specified bit
BTST Bit test reflects the value of the BTST #2, D0 Z←1
specified bit in the Z-bit
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones BCD
INSTR. DESCRIPTION EXAMPLE: Assume [X]=0, [D0]=48, [D1]=21
Adds the source operand and the X-bit to the
ABCD destination operand using BCD arithmetic. This is ABCD D0,D1 [D1]←$00000069
a BYTE operation only; the X-bit is used to provide
a mechanism for multi-byte BCD operations.
Subtract the source operand and the X-bit from the
SBCD destination operand using BCD arithmetic. This is SBCD D1,D0 [D0]←$00000027
a BYTE operation only, so the X-bit is used to
provide a mechanism for multi-byte BCD operations.
NBCD Subtract the destination operand and the X-bit NBCD D1 [D1]←$00000052
from zero. [X]←1, [V]←1, [C]←1
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones de flujo
INSTR. DESCRIPTION
BRA BRA (branch always) implements an un-
conditional branch, relative to the PC. The
offset is expressed as an 8- or 16-bit signed
integer. If the destination is outside of a
16-bit signed integer, BRA cannot be used.
Bcc Bcc (branch conditional) is used whenever
program execution must follow one of two
paths depending on a condition. The con-
dition is specified by the mnemonic cc. The
offset is expressed as an 8- or 16-bit signed
integer. If the destination is outside of a
16-bit signed integer, Bcc cannot be used.
BSR,RTS BSR branches to a subroutine. The PC is
saved on the stack before loading the PC
with the new value. RTS is use to return
from the subroutine by restoring the PC
from the stack.
JMP JMP (jump) is similar to BRA. The only
difference is that BRA uses only relative ad-
dressing, whereas JMP has more addressing
modes, including absolute address (see re-
ference manual).
cc CONDITION BRANCH TAKEN IF
CC Carry clear C = 0
CS Carry set C = 1
NE Not equal Z = 0
EQ Equal Z = 1
PL Plus N = 0
MI Minus N = 1
HI Higher than CZ = 1
LS Lower than or same as C + Z = 1
GT Greater than NV Z + NVZ = 1
LT Less than NV + NV = 1
GE Greater than or equal to NV + NV = 0
LE Less than or equal to Z + (NV + NV ) = 1
VC Overflow clear V = 0
VS Overflow set V = 1
T Always true Always
F Always false Never
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MC68000
Instrucciones de control
INSTR. DESCRIPTION
MOVE
ANDI Unique variations of MOVE, AND, OR and EOR that allow
ORI altering the bits in the status and condition code registers.
EORI
TRAP performs three operations: (1) pushes the PC and SR
TRAP to the stack, (2) sets the execution mode to supervisor and
(3) loads the PC with a new value read from a vector table
STOP loads the SR with an immediate operand and stops
STOP the CPU. RESET asserts the CPU’s RESET line for 124
RESET cycles. If STOP or RESET are executed in user mode, a
privilege violation occurs.
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Características
Procesador RISC de 32 bits
≈ 70 instrucciones máquina
Repertorio ortogonal
Instrucciones clasificadas en cuatro grupos
Movimiento de datos
Aritmética entera, logicas y desplazamiento
Control de flujo
Aritmética en punto flotante
4 modos de direccionamiento
Inmediato
Directo de registros
Indirecto con desplazamiento
Indirecto con desplazamiento relativo al PC
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Características
Banco de 64 registros (32 bits cada uno)
32 de propósito general (R0-R31)
32 para instrucciones en punto flotante (F0-F31). Pueden usarse
como:
32 registros para operaciones en simple precisión (32 bits)
16 registros para operaciones en doble precisión (64 bit)
3 formatos de instrucción distintos con longitud única de 32 bits
Arquitectura registro-registro
Sólo las instrucciones de LOAD y STORE hacen referencia a memoria
El resto de instrucciones operan sobre registros
Instrucciones con tres operandos: 2 op. fuente y 1 op. Destino
Notación ensamblador: op x,y,z ⇔ x ← (y) op (z)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Tipos de datos
Enteros
Tamaño Byte (8 bits)
Tamaño Media palabra (16
bits)
Tamaño Palabra (32 bits)
Reales en punto flotante
Simple precisión (32 bits)
Doble precisión (64 bits)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Modos de direccionamiento
Directo de registro
Inmediato
Indirecto con desplazamiento
Indirecto con desplazamiento relativo a PC
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Formato de la instrucción máquina: Instrucción de tipo I
Instrucciones de LOAD/STORE
LW $1,30($2) R1←Mem(30+(R2))
SW 60($5),$10 Mem(60+(R5))←(R10)
Instruc. con operando inmediato
ADDI $7,$9,#30 R7←(R9)+30
Instruc. de bifurcación condicional
BNE $5,$6,#0x0C if (R5 6=R6) PC←0x0C
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Formato de la instrucción máquina: Instrucción de tipo R
Instruc. aritméticas, lógicas y desplazamiento de tipo de
registro-registro
El campo función especifica el tipo de operación a realizar: suma,
resta, mult. div., and, or, desplaz., etc.
Ejemplos
SUB $1,$2,$3 R1←(R2)-(R3)
SLL $1,$2,$3 R1←(R2)<<(R3))
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Formato de la instrucción máquina: Instrucción de tipo J
Instrucciones de salto
Ejemplo
J dir PC←dir
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Instrucciones de movimiento de datos
Instrucción Significado Ejemplo Operación
LB Load byte LB $2,40($3) R2[24− 31]← Mem(40 + (R3))8;
R1[0− 23]← (signo(Mem(40 + (R3))))24
LBU Load byte unsigned LBU $2,40($3) R2[24− 31]← Mem(40 + (R3))8;
R1[0− 23]← (0)24
LH Load half word LH $2,40($3) R2[16− 31]← Mem(40 + (R3))16;
R1[0− 15]← (signo(Mem(40 + (R3))))16
LHU Load half word unsigned LHU $2,40($3) R2[16− 31]← Mem(40 + (R3))16;
R1[0− 15]← (0)16
LW Load word LW $2,40($3) R2[0− 31]← Mem(40 + (R3))32
LF Load Float LF $2,40($3) F2[0− 31]← Mem(40 + (R3))32
LD Load double float LD $2,40($3) F2[0− 31], F3[0− 31]← Mem(40 + (R3))64
SB Store byte SB 40($3),$2 Mem(40 + (R3))8 ← R2[24− 31]
SH Store half word SH 40($3),$2 Mem(40 + (R3))16 ← R2[16− 31]
SW Store word SW 40($3),$2 Mem(40 + (R3))32 ← R2[0− 31]
SF Store float SF 40($3),$2 Mem(40 + (R3))32 ← F2[0− 31]
SD Store double float SD 40($3),$2 Mem(40 + (R3))64 ← F2[0− 31], F3[0− 31]
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Instrucciones de aritmética entera, lógicas y desplazamiento
Instrucción Significado Ejemplo Operación
ADD/ADDU Suma con/sin signo ADD $1,$2,$3 R1← (R2) + (R3)
ADDI/ADDIU Suma inmediato con/sin signo ADDI $1,$2,#5 R1← (R2) + 5
SUB/SUBU Resta con/sin signo SUB $1,$2,$3 R1← (R2)− (R3)
SUBI/SUBIU Resta inmediato con/sin signo SUBI $1,$2,#5 R1← (R2)− 5
MULT/MULTU Multiplicación con/sin signo MULT $1,$2,$3 R1← (R2)× (R3)
DIV/DIVU División con/sin signo DIV $1,$2,$3 R1[0− 15]← Cociente((R2)/(R3))
R1[16− 31]← Resto((R2)/(R3))
AND Y lógica AND $1,$2,$3 R1← (R2) ∧ (R3)
ANDI Y lógica con inmediato ANDI $1,$2,#5 R1← (R2) ∧ 5
OR O lógica OR $1,$2,$3 R1← (R2) ∨ (R3)
ORI O lógica con inmediato ORI $1,$2,#5 R1← (R2) ∨ 5
XOR O exclusiva XOR $1,$2,$3 R1← (R2)⊕ (R3)
XORI O exclusiva con inmediato XORI $1,$2,#5 R1← (R2)⊕ 5
SLL/SRL Desplaz. lógico Izda./decha. SLL $1,$2,$3 R1← (R2) << (R3)
SLLI/SRLI Desp. Lóg. Izda./decha. con inmed. SLLI $1,$2,#4 R1← (R2) << 4
SRA Desplaz. aritmético derecha SRA $1,$2,$3 R1← (R2) << (R3) (mantiene signo)
SRAI Desplaz. aritm. Dcha. con inmed. SRA $1,$2,#4 R1← (R2) << 4 (mantiene signo)
Scc * Set condicional SLT $1,$2,$3 if ((R2) < (R3))R1← 1, elseR1← 0
SccI * Set condicional con inmediato SEQI $1,$2,#0 if ((R2) == 0)R1← 1, elseR1← 0
(*) cc = LT, GT, LE, GE, EQ, NE
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: MIPS
Otras
Instrucción de control de flujo
Instrucción Significado Ejemplo Operación
J Salto (jump) J dir PC ← dir
JR Salto con registro JR $2 PC ← (R2)
BEQZ Bifurcación condic. si igual a cero BEQZ dir,$4 if ((R4) == 0)PC ← (R4)
BNEQZ Bifurcación condic. si distinto de cero BNEQZ dir,$4 if ((R4) 6= 0)PC ← (R4)
JAL Salto y link JAL dir R31← (PC) + 4; PC ← dir
JALR Salto y link con registro JALR dir,$2 R31← (PC) + 4; PC ← (R2)
TRAP Provoca una excepción
RFE Retorno de excepción
Instrucción de aritmética en punto flotante
Instrucción Significado
ADDF/ADDD Suma en punto flotante simple/doble precisión
SUBF/SUBD Resta en punto flotante simple/doble precisión
MULTF/MULTD Multiplicación en punto flotante simple/doble precisión
DIVF/DIVD División en punto flotante simple/doble precisión
CVTI2F/CVTI2D Convierte entero a real simple precisión / doble precisión
CVTF2I/CVTF2D Convierte real simple precisión a entero / real doble precisión
CVTD2I/CVTD2F Convierte real doble precisión a entero / real simple precisión
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: ARM
Origen
ARM - Máquinas RISC Avanzadas (Advanced RISC Machines)
Origen: Acorn RISC Machine, parte de un proyecto educativo
(Inglaterra, 1984)
1987 - se convierte en el primer procesador RISC para uso comercial
1990 - escisión de Acorn Machines → ARM Ltd.
ARM Ltd.: Creación de procesadores altamente configurables y
adaptables a multitud de aplicaciones
Innovaciones
Formato de instrucciones comprimido (thumb), con descompresión
dinámica del flujo de instrucciones
Cauce segmentado (Pipeline) básico de 3 fases de gran simplicidad en
el núcleo
Gran trabajo en temas de desarrollo y depurado software
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: ARM
Mercado: Datos del 2007
En el año 2005 ARM se estableció como líder del mercado
(superando a Intel) en arquitecturas empotradas.
El 30% del mercado fue absorbido por ARM en el 2006 (frente al
28% de Intel)
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: ARM
Características
≈ 60 instrucciones máquina
Repertorio ortogonal
Instrucciones de 32 bits (salvo modo comprimido de 16 bits, thumb)
alineadas en potencias de 4 en memoria
Clasificadas en 3 grupos
Instrucciones de proceso de datos: operaciones entre registros
Instrucciones de transferencia de datos: carga-almacenamiento
Instrucciones para el control del flujo
Modos de direccionamiento (ver tema anterior)
Indexados con pre y post incremento
Desplazamiento relativos al PC
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: ARM
Características
Banco de 17 registros de 32 bits
15 registros de propósito general (R0-R14)
R13: Puntero de pila
R14: Retorno de función
R15: Contador de programa
CPSR: Registro de estado
Instrucciones fijas de 32 bits
Arquitectura registro-registro
Sólo las instrucciones de LOAD y STORE hacen referencia a memoria
El resto de instrucciones operan sobre registros
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: ARM
Formato de instrucción
Condición: Código de ejecución condicional
De forma predeterminada el código indica ejecutar siempre
CodOp: Código de operación
Dos o tres registros (Rn, Rd y Rm)
Operaciones sobre registros:
Rd: Registro destino
Rn: Registro primer operando
Rm (opcional): Registro segundo operando
Operaciones registro-memoria (carga-almacenamiento):
Rd: Registro origen/destino
Rn: Registro base para construcción dirección de memoria
Otra información adicional
Tamaño variable en función de la instrucción
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: ARM
Formato de instrucción en ensamblador
<codop>{<cond>}{S} Rd, Rn, operando2,{<desplazamiento>}
codop: nemónico de la operación
cond: sufijo opcional para ejecución condicional
S: sufijo opcional para modificar códigos de condición (N,V,Z,C)
Rd: Registro destino
Rn: Registro del operando1
operando2: Puede ser un tercer registro (Rm) o un operando
inmediato
desplazamiento: Desplazamiento (shift) opcional sobre operando2
tipo de desplazamiento + #cantidad de bits a desplazar
3.1.2 Repertorio de instrucciones y formato de la instrucción máquina
Arquitecturas CISC y RISC
Ejempos
Ejemplo: ARM
Ejemplos de instrucciones
Cód. Nemón. Interpretación Estado necesario/Resultado
0000 EQ Igual/igual a cero Z(1)
0001 NE Distinto Z(0)
0110 VS Desbordamiento V (1)
0111 VC No desbordamiento V (0)
1000 HI Mayor sin signo C(1)&Z(0)
1011 LT Menor con signo N 6= V
0000 AND AND lógico bit-a-bit Rd ← Rn ∧ Op2
0010 SUB resta Rd ← Rn − Op2
0011 RSB resta al revés Rd ← Op2− Rn
0100 ADD suma Rd ← Rn + Op2
1010 CMP comparar cod. cond: Rn − Op2
1101 MOV mover Rd ← Op2
000 MUL multiplicar Rd ← Rm × Rs
		Índice
		Repertorio de instrucciones
		Clasificación de las instrucciones
		Aplicaciones del repertorio de instrucciones
		Ejecución alternativa
		Ejecución iterativa
		Subrutinas
		Formato de la instrucción máquina
		Alternativas de diseño
		Número de operandos explícitos
		Ejemplos
		Arquitecturas CISC y RISC
		Arquitecturas CISC
		Arquitecturas RISC
		Ejempos
apuntes_arquitectura_computadores/313_Rendimiento.pdf
Rendimiento del procesadorRendimiento del procesador
Módulo 3.1.3
R di i t d l dRendimiento del procesador
Ingeniería Técnica en Informática de Sistemas
Facultad de Informática
Universidad Complutense de Madrid
ÍndiceÍndice
IntroducciónIntroducción
Definiciones
Relojj
Frecuencia
Ciclos promedio por instrucción
Tiempo de ejecuciónTiempo de ejecución
Métricas
Tiempo de ejecuciónp j
Millones de instrucciones por segundo (MIPS)
Millones de operaciones en punto flotante por segundo (MFLOPS)
E l ió d l di i tEvaluación del rendimiento
Ley de Amdahl
2
Rendimiento del procesadorRendimiento del procesador
IntroducciónIntroducción
Al diseñar un computador debemos tener en cuenta dos
Introducción (1/2)Introducción (1/2)
Al diseñar un computador debemos tener en cuenta dos
parámetros importantes
CCoste
Rendimiento
Dependiendo del equilibrio que se haga de ellos se
creará desde un ordenador personal (barato y
rendimiento medio) hasta un supercomputador (caro y
con un rendimiento muy alto)
¿Cuál es la medida apropiada de rendimiento?
3
Rendimiento del procesadorRendimiento del procesador
IntroducciónIntroducción
El usuario de un procesador puede decir que el
Introducción (2/2)Introducción (2/2)
El usuario de un procesador puede decir que el
procesador A es mejor que el procesador B cuando A
ejecuta su programa en menor tiempo que Bejecuta su programa en menor tiempo que B.
El responsable de un centro de cálculo entenderá que A
úes mejor que B si es capaz de ejecutar mayor número de
trabajos por unidad de tiempo.
El primero estará interesado en el tiempo de respuesta
(response time) del procesador mientras que el segundo
lo estará en la productividad (throughput). Pero en
ambos casos la clave es el tiempo.
4
Rendimiento del procesadorRendimiento del procesador
DefinicionesDefiniciones
Todos los computadores utilizan una señal periódica que
Tiempo de ciclo y frecuenciaTiempo de ciclo y frecuencia
Todos los computadores utilizan una señal periódica que
determina el momento en que tienen lugar los eventos
hardware dicha señal se llama relojhardware: dicha señal se llama reloj
Tiempo de ciclo: tiempo que transcurre entre dos ticks
(medido en s)(medido en s)
Frecuencia de reloj: la inversa del tiempo de ciclo (medido en
Hz = s−1)Hz = s )
EjemploEjemplo
Un computador trabajando a 200 MHz (frecuencia) tiene un tiempo de ciclo 
de: 
j p
Un computador trabajando a 200 MHz (frecuencia) tiene un tiempo de ciclo 
de: 
j p
nssss
MHz
5105105.0
102
1
200
1 98
8 =×=×=×
= −−
MHz 102200
5
Rendimiento del procesadorRendimiento del procesador
DefinicionesDefiniciones
Ciclos de reloj por programa (1/2)Ciclos de reloj por programa (1/2)
¿(ciclos de reloj por programa) (instrucciones por¿(ciclos de reloj por programa) = (instrucciones por
programa)?
NO: diferentes instrucciones tardan diferentes
cantidades de tiempo:
La multiplicación tarda más ciclos que la suma
Operaciones en punto flotante tardan más que operaciones en
punto fijo
Instrucciones con
acceso a memoria tardan más que con
i tacceso a registros
LOAD ADD ADD MULT
7 ciclos 4 ciclos 4 ciclos 8 ciclos
6
Rendimiento del procesadorRendimiento del procesador
DefinicionesDefiniciones
Ciclos de reloj por programa (2/2)Ciclos de reloj por programa (2/2)
Los “ciclos promedio por instrucción” (CPI) se calculanLos “ciclos promedio por instrucción” (CPI) se calculan
como una suma ponderada del número de ciclos que
tarda por separado cada tipo de instruccióntarda por separado cada tipo de instrucción
Operación Frecuencia Ciclos CPI % tiempoOperación Frecuencia Ciclos CPI % tiempo
ALU 50 % 1 0.5 23 %
LOAD 20 % 5 1.0 45 %
STORE 10 % 3 0.3 14 %
BRANCH 20 % 2 0.4 18 %
2.2
CPII t il jdCi l CPI×= programapor nesInstruccioprogramapor reloj de Ciclos
7
Rendimiento del procesadorRendimiento del procesador
DefinicionesDefiniciones
El tiempo de ejecución de un programa lo dividiremos
Tiempo de ejecución (1/4)Tiempo de ejecución (1/4)
El tiempo de ejecución de un programa lo dividiremos
en las siguientes componentes:
Ti dTiempo de respuesta
Tiempo de CPU
Ti d CPU d l iTiempo de CPU usado por el usuario.
Tiempo de CPU usado por el S.O.
8
Rendimiento del procesadorRendimiento del procesador
DefinicionesDefiniciones
Tiempo de respuesta Es el tiempo necesario para
Tiempo de ejecución (2/4)Tiempo de ejecución (2/4)
Tiempo de respuesta: Es el tiempo necesario para
completar una tarea, incluyendo los accesos al disco, a la
memoria las actividades de E/S y los gastos del S O Esmemoria, las actividades de E/S y los gastos del S.O. Es
el tiempo que percibe el usuario.
9
Rendimiento del procesadorRendimiento del procesador
DefinicionesDefiniciones
Tiempo de CPU: Es el tiempo que tarda en ejecutarse un
Tiempo de ejecución (3/4)Tiempo de ejecución (3/4)
Tiempo de CPU: Es el tiempo que tarda en ejecutarse un
programa, sin tener en cuenta el tiempo de espera
debido a la E/S o el tiempo utilizado para ejecutar otrosdebido a la E/S o el tiempo utilizado para ejecutar otros
programas. Se divide en:
Tiempo de CPU utilizado por el usuario: Es el tiempo que lap p p q
CPU utiliza para ejecutar el programa del usuario. No se tiene
en cuenta el tiempo de espera debido a la E/S o el tiempo
utilizado para ejecutar otros programasutilizado para ejecutar otros programas
Tiempo de CPU utilizado por el S.O.: Es el tiempo que el S.O.
emplea para realizar su gestión interna.p p g
Generalmente, nos referiremos a tiempo de CPU como
al tiempo de CPU utilizado por el usuario.p p
10
Rendimiento del procesadorRendimiento del procesador
DefinicionesDefiniciones
Tiempo de ejecución (4/4)Tiempo de ejecución (4/4)
Ejemplo
La función time de Unix produce una salida de la forma: 90.7u 12.9s 2:39 65% 
Ejemplo
La función time de Unix produce una salida de la forma: 90.7u 12.9s 2:39 65% 
donde:
Tiempo de CPU del usuario = 90.7 segundos
Tiempo de CPU utilizado por el sistema = 12.9 segundos
Ti d CPU 90 7 12 9 103 6
donde:
Tiempo de CPU del usuario = 90.7 segundos
Tiempo de CPU utilizado por el sistema = 12.9 segundos
Ti d CPU 90 7 12 9 103 6Tiempo de CPU= 90.7 s+ 12.9 s = 103.6 s
Tiempo de respuesta = 2 minutos 39 segundos =159 segundos
Tiempo de CPU = 65% del tiempo de respuesta = 159 s*0.65 = 103.6 s
Tiempo esperando opera iones de E/S /o el tiempo eje tando otras tareas
Tiempo de CPU= 90.7 s+ 12.9 s = 103.6 s
Tiempo de respuesta = 2 minutos 39 segundos =159 segundos
Tiempo de CPU = 65% del tiempo de respuesta = 159 s*0.65 = 103.6 s
Tiempo esperando opera iones de E/S /o el tiempo eje tando otras tareasTiempo esperando operaciones de E/S y/o el tiempo ejecutando otras tareas 
35%  del tiempo de respuesta = 159 segundos*0.35 = 55.6 segundos
Tiempo esperando operaciones de E/S y/o el tiempo ejecutando otras tareas 
35%  del tiempo de respuesta = 159 segundos*0.35 = 55.6 segundos
El tiempo de respuesta se utiliza como medida del rendimiento del sistema (con el
sistema no cargado), mientras que el rendimiento de la CPU normalmente hace
referencia al tiempo de CPU del usuario sobre un sistema no cargado.
El tiempo de respuesta se utiliza como medida del rendimiento del sistema (con el
sistema no cargado), mientras que el rendimiento de la CPU normalmente hace
referencia al tiempo de CPU del usuario sobre un sistema no cargado.
11
Rendimiento del procesadorRendimiento del procesador
DefinicionesDefiniciones
Cálculo del tiempo de CPUCálculo del tiempo de CPU
Tiempo de CPUTiempo de CPUTiempo de CPUTiempo de CPU
ciclo) de (tiempoprograma)por nesInstruccio( ××CPI
¿De quién dependen las “instrucciones por programa”?
programadores / compiladores / arquitectura del repertorio de
instrucciones
¿De quién depende el “tiempo de ciclo”?
tecnología / organización
¿De quién dependen el CPI?
organización / arquitectura del repertorio de instruccionesg q p
12
Rendimiento del procesadorRendimiento del procesador
MétricasMétricas
Definición de rendimientoDefinición de rendimiento
La definición del rendimiento (y la métrica más comúnmente utilizada) viene dada por
la siguiente expresión
Rendimiento
La definición del rendimiento (y la métrica más comúnmente utilizada) viene dada por
la siguiente expresión
Rendimiento
la siguiente expresiónla siguiente expresión
ejecución) (tiempo
1R =
Existen, además, otras métricas muy populares pero que pueden resultar
ñ i l i t d l i bl t i t t di d
Existen, además, otras métricas muy populares pero que pueden resultar
ñ i l i t d l i bl t i t t di dengañosas por no incluir todas las variables anteriormente estudiadas.engañosas por no incluir todas las variables anteriormente estudiadas.
13
Rendimiento del procesadorRendimiento del procesador
MétricasMétricas
MIPS (1/3)MIPS (1/3)
MIPS Millones de instrucciones por segundoMIPS: Millones de instrucciones por segundo
MIPSMIPSMIPSMIPS
610ejecución)(tiempo
programa)por nesinstruccio(MIPS
×
=
10ejecución)(tiempo ×
MIPSMIPS
610(CPI)
reloj) de frecuencia(MIPS
×
=
10(CPI)×
14
Rendimiento del procesadorRendimiento del procesador
MétricasMétricas
MIPS (2/3)MIPS (2/3)
Depende del repertorio de instruccionesDepende del repertorio de instrucciones
El tiempo que tarda en ejecutarse una misma instrucción y el nº de
instrucciones máquina que genera el compilador puede variar de un
t i trepertorio a otro
Dos programas “iguales” pueden tener comportamientos opuestos
La medida de MIPS puede variar mucho de un programa a otrop p g
Existen instrucciones que tardan más tiempo en ejecutarse que otras
Los programas en los que abundan instrucciones “rápidas” tardan menos
en ejecutarseen ejecutarse
Los programas en los que abundan instrucciones “lentas” tardan más en
ejecutarse
Los fabricantes suelen dar medidas de MIPS muy optimistas
Utilizan programas donde predominan instrucciones que tardan poco en
ejecutarsej
15
Rendimiento del procesadorRendimiento del procesador
MétricasMétricas
MIPS (3/3)MIPS (3/3)
Ejemplo
Generación Potencia de cálculoGeneración Potencia de cálculo
1ª Válvula de vacío 0.04 MIPS
2ª Transistores 0.2 MIPS
3ª Circuitos integrados 1 MIPS3  Circuitos integrados 1 MIPS
4ª Microprocesador 10 MIPS
5ª Sistemas basados en micro 100 MIPS
16
Rendimiento del procesadorRendimiento del procesador
MétricasMétricas
MFLOPS (1/2)MFLOPS (1/2)
MFLOPSMFLOPS
Millones de instrucciones en punto flotante por segundo.
fl l á dLas instrucciones en punto flotante son las que más tardan en
ejecutarse
S did l á fi bl d l di i t l d lSon una medida algo más fiable del rendimiento real del
computador
MIPSMIPS
programa)porFLOPnesinstruccio(
610ejecución) (tiempo
programa)por FLOP nesinstruccio(MFLOPS
×
=
17
Rendimiento del procesadorRendimiento del procesador
MétricasMétricas
MFLOPS (2/2)MFLOPS (2/2)
Depende del repertorio de instrucciones en punto flotanteDepende del repertorio de instrucciones en punto flotante
No todos los computadores ofrecen las mismas operaciones en
punto flotante
D di ti t d t t i t
tDos programas distintos pueden tener comportamientos opuestos
Es inútil para muchos programas
Los programas enteros (sin operaciones en punto flotante) noLos programas enteros (sin operaciones en punto flotante) no
pueden medirse en MFLOPS
Existen instrucciones en punto flotante de distinto tiempo de
ejecuciónejecución
Por ejemplo: suma, resta, ... son rápidas; división, seno, exponencial,
... Son lentas
Los fabricantes pueden dar también medidas de MFLOPS demasiado
optimistas
18
Rendimiento del procesadorRendimiento del procesador
Evaluación del rendimientoEvaluación del rendimiento
Evaluación del rendimientoEvaluación del rendimiento
El rendimiento se evalúa ejecutando programas realesEl rendimiento se evalúa ejecutando programas reales
Programas “de juguete”: De 10 a 100 líneas de código con
resultado conocidoresultado conocido
Programas de prueba (benchmarks) sintéticos: simulan la
frecuencia de operaciones y operandos de un abanico defrecuencia de operaciones y operandos de un abanico de
programas reales
Fragmentos de programas realesFragmentos de programas reales
Programas típicos con cargas de trabajo fijas
19
Rendimiento del procesadorRendimiento del procesador
Ley de AmdahlLey de Amdahl
Ley de Amdahl (1/2)Ley de Amdahl (1/2)
EjemploEjemploj p
Se pretende viajar desde el Yelmo a Ciudad Real y el viaje se realiza en 2 fases: del
Yelmo a Madrid (20h caminando) y de Madrid a Ciudad Real (en otro medio de
transporte)
j p
Se pretende viajar desde el Yelmo a Ciudad Real y el viaje se realiza en 2 fases: del
Yelmo a Madrid (20h caminando) y de Madrid a Ciudad Real (en otro medio de
transporte)transporte)transporte)
Medio de 
transporte
Viaje desde 
Madrid (h)
Mejora 
parcial (h)
Viaje 
completo (h)
Mejora 
total (h)p ( ) p ( ) p ( ) ( )
Caminando 50 1 70 1
Bicicleta 20 2.5 40 1.8
Moto 4 12.5 24 2.9
Coche 1.67 30 21.67 3.2
Tren 0 33 150 20 33 3 4
x 3.4x 150
Tren 0.33 150 20.33 3.4
Cuando se pretende mejorar el rendimiento, debe tenerse en cuenta que la mejoraCuando se pretende mejorar el rendimiento, debe tenerse en cuenta que la mejoraCuando se pretende mejorar el rendimiento, debe tenerse en cuenta que la mejora
de un aspecto de la máquina no incrementa el rendimiento global en una cantidad
proporcional al tamaño de la mejora
Cuando se pretende mejorar el rendimiento, debe tenerse en cuenta que la mejora
de un aspecto de la máquina no incrementa el rendimiento global en una cantidad
proporcional al tamaño de la mejora 20
Rendimiento del procesadorRendimiento del procesador
Ley de AmdahlLey de Amdahl
Ley de Amdahl (2/2)Ley de Amdahl (2/2)
La mejora obtenida en el rendimiento de un sistema debido a la alteración de uno de
sus componentes está limitada por la fracción de tiempo que se utiliza dicho
Ley de Amdahl
componente
F==
1
j )( i
mejora)sin tiempo(A
( )
m
m
m A
FF +−1mejora)con (tiempo
Donde:
A Aceleración o ganancia en velocidad conseguida en el sistema completo debido
a la mejora de uno de sus subsistemas.
A F t d j h i t d id l b i t lt dAm Factor de mejora que ha introducido el subsistema alterado.
Fm Fracción de tiempo que el sistema emplea el subsistema alterado.
Hacer común el caso rápido o acelerar el caso comúnHacer común el caso rápido o acelerar el caso común
21
apuntes_arquitectura_computadores/introduccion al dise?o de un procesador.pdf
Introducción al diseño de un Procesador
Marcos Sánchez-Élez Martín
Importancia del diseño de un procesador
El rendimiento de un computador está determinado por el tiempo que 
la CPU tarda en ejecutar programas:
El diseño del procesador determina:
La duración del ciclo de reloj
Número de ciclos de reloj por instrucción, en promedio
Comúnmente estos dos factores tienen una relación inversa:
Procesador monociclo
1 ciclo por instrucción
Tiempo de ciclo largo
Procesador multiciclo
Varios ciclos por instrucción
Tiempo de ciclo corto
tiempo de CPU = (instrucciones por programa) × CPI × (tiempo de ciclo)
Introducción al diseño de un procesador
Introducción
Marcos Sánchez-Élez Martín
Metodologías para el diseño de un procesador
Paso 1: Analizar el repertorio de instrucciones para obtener los requisitos 
de la ruta de datos
La ruta de datos debe incluir tantos elementos de almacenamiento como 
registros sean visibles por el programador. Además puede tener otros 
elementos de almacenamiento transparentes.
La ruta de datos debe incluir tantos tipos de elementos operativos como 
tipos de operaciones de cálculo se indiquen en el repertorio de 
instrucciones
El significado de cada instrucción vendrá dado por un conjunto de 
transferencias entre registros. La ruta de datos debe ser capaz de soportar 
dichas transferencias.
Paso 2: Establecer la metodología de temporización
Monociclo (CPI = 1): todas las transferencias entre registros implicadas 
en una instrucción se realizan en un único ciclo de reloj.
Multiciclo (CPI > 1): las transferencias entre registros implicadas en una 
instrucción se reparten entre varios ciclos de reloj.
Introducción al diseño de un procesador
Introducción
Marcos Sánchez-Élez Martín
Metodologías para el diseño de un procesador
Paso 3: Seleccionar el conjunto de módulos (de almacenamiento, 
operativos e interconexión) que forman la ruta de datos. 
Paso 4: Ensamblar la ruta de datos de modo que se cumplan los requisitos 
impuestos por el repertorio, localizando los puntos de control.
Paso 5: Determinar los valores de los puntos de control analizando las 
transferencias entre registros incluidas en cada instrucción.
Paso 6: Diseñar la lógica de control.
Introducción al diseño de un procesador
Introducción
Marcos Sánchez-Élez Martín
Introducción
Analizar el repertorio de instrucciones
68000 - CISC
Intel (X86) - CISC
MIPS – RISC
ARM – RISC
Introducción al diseño de un procesador
Marcos Sánchez-Élez Martín
Introducción
Arquitectura MIPS
Microprocessor without Interlocked Pipeline Stages
Creado en 1981 por Hennessy
Producido por Silicon Graphics (SGI)
Utilizado por:
TiVo
Windows CE
Cisco routers
Nintendo 64
Sony PlayStation, PlayStation 2, PlayStation Portable.
Introducción al diseño de un procesador
Marcos Sánchez-Élez Martín
Introducción
R2000 (1985): procesador con operaciones multiciclo de multiplicación y 
división, dentro de un coprocesador matemático, los resultados de estas 
operaciones eran conseguidos a través de instrucciones particulares. 
Además, aunque los registros eran de 32 bits podían utilizarse como de 64 
para doble precisión.
R3000 (1988): añade una cache de 32KB (más tarde 64KB), una MMU para 
gestionar la memoria virtual, fue el primer procesador MIPS que tuvo éxito en 
el mercado (se vendieron 1 millón). Por ejemplo, fue utilizado en la Play 
Station, además en los primeros portátiles que utilizaban Windows CE.
R4000 (1991): aumenta el conjunto de instrucciones a un procesador de 64 
bits añadiendo la FPU dentro del chip. Todo esto permite un alto ciclo de reloj 
(a cambio se reducen las caches a 8KB) y una super-segmentación. 
Nintendo64 utiliza una CPU basada en este diseño, así como los primeros 
routers de Cisco (36x0 y 7x00)
R8000 (1994): fue el primer procesador super-escalar que podía trabajar a la 
vez con dos ALUs y dos memorias. Su unidad FPU era perfecta para cálculos 
científicos, pero duró en el mercado sólo un año.
R10000 (1995): tenía caches de 32 KB y su mayor innovación fue la 
utilización de la ejecución fuera de orden.
R20000 (2006): 2 cores … no ha llegado a producirse
Introducción al diseño de un procesador
Marcos Sánchez-Élez Martín
Introducción
Arquitectura MIPS
Todas las instrucciones tienen el mismo 
tamaño (32 bits)
Todas las instrucciones tienen formato similar
Código de operación 6 bits
Sólo existen 3 formatos de instrucciones
Accesos a memoria sencillos
Directo registro con desplazamiento
Introducción al diseño de un procesador
Marcos Sánchez-Élez Martín
Introducción
op dirección
02631
6 bits

Otros materiales