ARQUITECTURA DEL REPERTORIO DE INSTRUCCIONES

Anuncio
ARQUITECTURA DEL
REPERTORIO DE
INSTRUCCIONES
Arquitectura del
Repertorio de instrucciones
Arquitectura del
repertorio de
instrucciones
Repertorio de
instrucciones
Organización del
almacenamiento
Tipos de
datos
Estructuras
de datos
Formato de
instrucciones
Codificación y
representación
numérica
Modos de
direccionamiento
REPERTORIO DE
INSTRUCCIONES
Arquitectura del
Repertorio de instrucciones
Punto de vista del sistema operativo y los
compiladores del computador.
Establece los atributos del sistema computacional
vistos por el programador.
Repertorio de instrucciones
Establece la interfaz de software para un
hardware determinado.
Hay varias arquitecturas de hardware, cada una
con un repertorio distinto
Intel
AMD
Digital Alpha
SGI MIPS
Repertorio de Intrucciones
Instrucción
Requerimientos de una instrucción:
Lugar donde se
guardará el resultado
Operandos de
entrada
Instrucción
Operación
Próxima instrucción
Cada instrucción es una secuencia de ceros y unos.
10101011100110010001000100010001000100
Repertorio de Instrucciones
Instrucción
Notación para describir los campos de una
instrucción:
<operación> <operador1>,...,<operadorN>, resultado.
Ejemplo:
load R1, A
move R1, R2
jump R2
Repertorio de Instrucciones
Clasificación
Según se especifican los operandos de entrada y
salida.
Repertorio de
instrucciones
Stack
Acumulador
Reg - Reg
Registros
Reg - Mem
Mem - Mem
Repertorio de Instrucciones
Clasificación: Máquinas de stack
Especifican la operación.
Asume que los operandos están en posiciones fijas de
memoria.
CPU tiene un registro: top
M
Ejemplo add
top
Operador 1
Operador 2
M[top]⇦M[top]+M[top-1]
Repertorio de Instrucciones
Clasificación: Máquinas con acumulador
El procesador tiene un registro especial
denominado acumulador (acc)
Ejemplo
add A
acc⇦acc+M[A]
M
Operador
Dirección de
memoria A
Repertorio de Instrucciones
Clasificación: Máquinas Registro-Registro
AKA: Carga-Almacenamiento
Las operaciones se efectúan sólo entre registros.
2 ó 3 operandos explícitos.
Ejemplo
add Ra,Rb,Rc
load Ra,(Rb)
Ra⇦Rb+Rc
Ra⇦M[Rb]
load (Rb),Ra
M[Rb]⇦Ra
Repertorio de Instrucciones
Clasificación: Máquinas Registro-Memoria
Los operandos pueden ser direcciones de
memoria o registros internos.
2 ó 3 operandos explícitos.
Ejemplo
add Ra,Rb,(Rc) Ra⇦Rb+M[Rc]
add (Ra),Rb,(Rc) M[Ra]⇦Rb+M[Rc]
load Ra,Rb
Ra⇦Rb
Ra⇦M[Rb]
load Ra,(Rb)
load (Rb),Ra
M[Rb]⇦Ra
Repertorio de Instrucciones
Comparación
Cómo comparar:
Número de bits por instrucción
Número de instrucciones que se requieren para
efectuar una operación.
Cantidad de ciclos de reloj por instrucción
Ejemplo:
Comparar C=A+B en distintos repertorios.
Repertorio de Instrucciones
Comparación
C=A+B en Máquina con acumulador
load A
acc ⇦M[A]
Add B
Store C
acc ⇦acc + M[B]
M[C]⇦acc
C=A+B en Máquina carga-almacenamiento
load R1,(A)
load R2,(B)
add R3,R1,R2
R1 ⇦M[A]
R2 ⇦M[B]
R3 ⇦R1 + R2
load (C),R3
M[C]⇦R3
C=A+B en Máquina registro-memoria
load R1,(A)
add R1,(B)
load (C),R1
R1 ⇦M[A]
R1 ⇦R1 + M[B]
M[C]⇦R1
MODOS DE
DIRECCIONAMIENTO
Modos de direccionamiento
Clasificación
Registro
Inmediato
Desplazamiento
Registro
indirecto
Modos de
direccionamiento
Indexado
Directo
Indirecto
Auto
Incremento
Escalado
Modos de direccionamiento
Clasificación
Registro
Add R4, R3
R4⇦R4+R3
Inmediato
Add R4, #40
o
l
ó
s
n
o
Estos s
s
o
l
p
m
e
j
e
R4⇦R4+40
Desplazamiento
Add R4, 100(R1)
R4⇦R4+M[100+R1]
Reg. Indirecto
Add R4, 100(R1)
R4⇦R4+M[100+R1]
Modos de direccionamiento
Clasificación
Indexado
Add R4,(R2+R3) R4⇦M[R4+R3]
Directo
Add R4, (1000)
R4⇦R4+M[1000]
Indirecto
Add R4, @(R1)
R4⇦R4+M[M[R1]]
Auto Incremento
Add R1, (R2)+
R1⇦R1+M[R2]; R2⇦R2+d
Add R1, -(R2)
R2⇦R2-d; R1⇦R1+M[R2]
Escalado
Add R1, 100(R2)[R3]
R1⇦R1+M[100+R2+R3•d]
Niveles de representación
Algoritmos
Lenguajes
de alto nivel
Assembler
simbólico
Lenguaje
Máquina
Transferencias
Lógicas
Control
Físicas
Niveles de representación
Lenguajes de alto nivel
temp = v[k];
v[k]=v[k+1];
v[k+1]=temp;
v[k]
1
temp
2
v[k+1]
3
Variables almacenadas en memoria.
Tipo datos ENTERO : 4[Bytes]
Niveles de representación
Lenguajes de alto nivel
v[k]
temp = v[k];
v[k]=v[k+1];
v[k+1]=temp;
1
temp
2
v[k+1]
3
Assembler simbólico
load R0, 0(R2)
load R1, 4(R2)
store R1, 0(R2)
store R0, 4(R2)
R2
1
v[k]
v[k+1]
R0
4
3
2
R1
24
Estructura
El ensamblador traduce el código assembler a un programa objeto.
El ligador (linker) pasa el programa objeto a una secuencia binaria
Niveles de representación
! Lenguaje
de Máquina. Binario.
Assembler
simbólico
El segmento anterior, una vez reemplazados los campos por
1
load R0,
0(R2)en hexadecimal según:
escribirse
R2
R0
v[k]
load R1, 4(R2)
0x8e480000
store R1,
0(R2)
0x8e490004
4
v[k+1]
3
2
0xae490000
store R0,
4(R2)
R1
0xae480004
Código de máquina
Y en binario según:
1000 1110 0100
1000 1110 0100
1010 1110 0100
1010 1110 0100
1000
1001
1001
1000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0100
0000
0100
! Transferencias.
Las instrucciones podrían describirse por las transferencias lógica
Niveles de representación
Assembler simbólico
load R0, 0(R2)
load R1, 4(R2)
store R1, 0(R2)
R2
store R0, 4(R2)
Transferencias
R0=MEM[R2+0]; PC=PC+4;
R1=MEM[R2+4];PC=PC+4;
MEM[R2+0]=R1;PC=PC+4;
MEM[R2+4]=R0;PC=PC+4
1
v[k]
v[k+1]
R0
4
3
2
R1
!
Control.
Niveles de representación
En forma alternativa puede describirse las secuencias de las señales de control que activan las
transferencias físicas.
El hardware interpreta el lenguaje de máquina, mediante una secuencia de microinstrucciones,
cuya descripción son las señales de control que se activan en cada ciclo del reloj:.
Control
!
nPC_sel = “+4”, WEPC , WEIR ;
WEA ;
AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”,WES ;
MemRd, WEM ;
RegDst = "rt", Memtoreg = "mem", RegWr.
Unidad Instrucción.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
Unidad Registros. Escritura.
nPC_sel = “+4”, WEPC , WEIR ;
WEA ;
AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”,WES ;
MemRd, WEM ;
RegDst = "rt", Memtoreg = "mem", RegWr.
Unidad Instrucción.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
Unidad Registros. Escritura.
nPC_sel = “+4”, WEPC , WEIR ;
WEA ; WEB ;
AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”,WES ;
MemWr.
Unidad Instrucción.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
nPC_sel = “+4”, WEPC , WEIR ;
WEA ; WEB ;
AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”,WES ;
MemWr.
Unidad Instrucción.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
Descargar