![Page 1: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/1.jpg)
Organización del Organización del ComputadorComputador
CPU (ISA)– Diseño de un ISA CPU (ISA)– Diseño de un ISA Modos de DireccionamientoModos de Direccionamiento
![Page 2: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/2.jpg)
Modos de DireccionamientoModos de Direccionamiento
Instrucción: OpCode + OperandosInstrucción: OpCode + Operandos Que tipos de cosas pueden ser los Que tipos de cosas pueden ser los
operandos?operandos? ConstantesConstantes Referencia a VariablesReferencia a Variables Referencia a ArraysReferencia a Arrays Referencias a subrutinasReferencias a subrutinas Estructuras de datos (Listas, Colas)Estructuras de datos (Listas, Colas)
OpCodeOpCode Op1Op1 Op2Op2 Op3Op3
![Page 3: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/3.jpg)
InmediatoInmediatoDirecto (o absoluto)Directo (o absoluto) IndirectoIndirectoRegistroRegistro Indirecto con registroIndirecto con registroDesplazamiento (Indexado) Desplazamiento (Indexado)
Modos de DireccionamientoModos de Direccionamiento
![Page 4: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/4.jpg)
El operando es parte de la instrucción (N)El operando es parte de la instrucción (N) Ej: ADD 5Ej: ADD 5
AC = AC + 5AC = AC + 5 5 es un operando5 es un operando
Ej2: Jump 110 Ej2: Jump 110 No hay referencia adicional a memoriaNo hay referencia adicional a memoria RápidoRápido
InmediatoInmediato
OP N
![Page 5: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/5.jpg)
DirectoDirecto
El operando está en la El operando está en la direccióndirección referenciada por Areferenciada por A
Operando = [A]Operando = [A]Ej: ADD [941] ( A = A + [941] )Ej: ADD [941] ( A = A + [941] ) Ideal para acceso a Ideal para acceso a variablesvariablesHay sólo un acceso a la memoriaHay sólo un acceso a la memoriaDireccionamiento limitado a tamaño del Direccionamiento limitado a tamaño del
operandooperando
AOpcode
![Page 6: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/6.jpg)
Address AOpcode
Instruction
Memory
Operand
DirectoDirecto
![Page 7: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/7.jpg)
IndirectoIndirecto
A es un PunteroA es un PunteroOperando = [[A]]Operando = [[A]]UsosUsos
Acceso a Arrays, Listas u otras estructurasAcceso a Arrays, Listas u otras estructurasAumenta el espacio de direccionamientoAumenta el espacio de direccionamiento
Existe acceso múltiple a la memoria para Existe acceso múltiple a la memoria para encontrar el operandoencontrar el operando
AOpcode
![Page 8: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/8.jpg)
Address AOpcode
Instruction
Memory
Operand
Pointer to operand
IndirectoIndirecto
![Page 9: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/9.jpg)
Ejemplo Lista indirectoEjemplo Lista indirecto
p: DW 100p: DW 100
n: DW 101n: DW 101
Mov R1,0Mov R1,0
Start:Start: cmp [p],0cmp [p],0
je finje fin
add R1,[[p]]add R1,[[p]]
mov [p],[[n]]mov [p],[[n]]
mov [n],[p]mov [n],[p]
add [n],1add [n],1
jmp Startjmp Start
fin: haltfin: halt
pp
2002001010
3003002020
003030
100100 101101
200200 201201
300300 301301
nn
![Page 10: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/10.jpg)
RegistroRegistro
El operando es un registro de la CPUEl operando es un registro de la CPUOperando = Registro nOperando = Registro nNúmero limitado de registrosNúmero limitado de registros Instrucción rápidaInstrucción rápida
Ej: Mov R1,R2Ej: Mov R1,R2No acceso a memoriaNo acceso a memoria Instrucción cortaInstrucción cortaEspacio de direcciones limitadoEspacio de direcciones limitado
RnOpcode
![Page 11: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/11.jpg)
Register NameOpcode
Instruction
Registers
Operand
RegistroRegistro
![Page 12: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/12.jpg)
El operando está en la memoria El operando está en la memoria direccionada por un registro.direccionada por un registro.
Operando = [Rn]Operando = [Rn]Hay un acceso menos a memoria que en Hay un acceso menos a memoria que en
direccionamiento indirectodireccionamiento indirectoComodo para acceder a arraysComodo para acceder a arrays
Registro IndirectoRegistro Indirecto
![Page 13: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/13.jpg)
Register Address ROpcodeMemory
OperandPointer to Operand
Registers
Registro IndirectoRegistro Indirecto
![Page 14: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/14.jpg)
El operando contiene una referencia a un El operando contiene una referencia a un registro y a un valor de desplazamientoregistro y a un valor de desplazamiento
Operando = [ROperando = [RN1N1 + D] + D] Ideal para acceder a campos de registrosIdeal para acceder a campos de registros
Moviendo DMoviendo DTambién para arrays de estructurasTambién para arrays de estructuras
R se mueve dentro del arrayR se mueve dentro del arrayD selecciona el campoD selecciona el campo
DesplazamientoDesplazamiento
![Page 15: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/15.jpg)
Register ROpcode
Instruction
Memory
OperandPointer to Operand
Registers
Desplazamiento
+
DesplazamientoDesplazamiento
![Page 16: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/16.jpg)
Ejemplo Lista sin desplazamientoEjemplo Lista sin desplazamiento
p: p: DW 100DW 100n: n: DWDW 101 101
mov R1,0mov R1,0mov R2,[p]mov R2,[p]mov R3,[n]mov R3,[n]
Start:Start: cmp [R2],0cmp [R2],0je finje finadd R1,[R2]add R1,[R2]mov R2,[R3] // R2=[[n]]mov R2,[R3] // R2=[[n]]mov R3,R2mov R3,R2add R3,1 // R3 = [n]add R3,1 // R3 = [n]jmp Startjmp Start
End:End:
pp
2002001010
3003002020
003030
100100 101101
200200 201201
300300 301301
nn
![Page 17: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/17.jpg)
Ejemplo Lista con desplazamientoEjemplo Lista con desplazamiento
p: p: DW 100DW 100
mov R1,0mov R1,0mov R2,[p]mov R2,[p]
Start: Start: cmp [R2],0cmp [R2],0je finje finadd R1,[R2]add R1,[R2]mov R2,[R2+1]; mov R2,[R2+1];
R2=[[n]]R2=[[n]]jmp Startjmp Start
End:End:
pp
2002001010
3003002020
003030
100100 101101
200200 201201
300300 301301
nn
![Page 18: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/18.jpg)
Similar al desplazamientoSimilar al desplazamientoUn operando contiene una referencia a Un operando contiene una referencia a
una dirección y a un registro que actúa una dirección y a un registro que actúa como desplazamientocomo desplazamiento
Operando = [D+ROperando = [D+RN1N1]] Ideal para ArraysIdeal para Arrays
IndexadoIndexado
![Page 19: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/19.jpg)
Modo de DireccionamientoModo de Direccionamiento
InmediatoInmediato Mov R, #NMov R, #N
R R N N
DirectoDirecto Mov R, [A]Mov R, [A]
R R mem[A] mem[A]
RegisterRegister Mov R1,R2Mov R1,R2
R1 R1 R2 R2
Register IndirectRegister Indirect Mov R1,[R2]Mov R1,[R2]
R1 R1 mem[R2] mem[R2]
DisplacementDisplacement Mov R1, [R2+D]Mov R1, [R2+D]
R1 R1 mem[R2+ D] mem[R2+ D]
Base-Register DisplacementBase-Register Displacement Mov R1, D (RMov R1, D (Rbasebase) )
R1 R1 mem[R mem[Rbasebase + D] + D]
Indexed Indexed Mov R1, A[R]Mov R1, A[R]
R1 R1 mem[A+R] mem[A+R]
Indexed ScaledIndexed Scaled Mov R1, A[R*Scale]Mov R1, A[R*Scale]
R1 R1 mem[A+R*Scale] mem[A+R*Scale]
PC RelativePC Relative Jump NJump N
PC PC PC + N PC + N
![Page 20: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/20.jpg)
Completar el valor de AC según el modo de Completar el valor de AC según el modo de direccionamientodireccionamiento
EjemploEjemplo
![Page 21: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/21.jpg)
EjemploEjemplo
![Page 22: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/22.jpg)
Temas a considerar:Temas a considerar:Tipos de operaciónTipos de operaciónNúmero de bits por instrucciónNúmero de bits por instrucciónNúmero de operandos por instrucciónNúmero de operandos por instrucción
Operandos implícitos y explícitosOperandos implícitos y explícitosUbicación de los operandosUbicación de los operandosTamaño y tipo de los operandosTamaño y tipo de los operandos
Uso de Stack, RegistrosUso de Stack, Registros
Diseñando el ISADiseñando el ISA
![Page 23: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/23.jpg)
Algunas métricas…Algunas métricas…Memoria principal ocupada por el Memoria principal ocupada por el
programaprogramaTamaño de la instrucción (en bits).Tamaño de la instrucción (en bits).
Code density: tratar que las Code density: tratar que las instrucciones ocupen pocoinstrucciones ocupen poco
Complejidad de la instrucción.Complejidad de la instrucción.Número total de instrucciones Número total de instrucciones
disponibles.disponibles.
Diseñando el ISADiseñando el ISA
![Page 24: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/24.jpg)
Tamaño de la instrucciónTamaño de la instrucción Corto, largo, variable?Corto, largo, variable?
Cuántos operandos?Cuántos operandos?
Cuántos registros?Cuántos registros?
Criterios en diseños de ISACriterios en diseños de ISAMemoriaMemoria
Direccionable por byte o Direccionable por byte o por palabra (word)?por palabra (word)?
Big/Little EndianBig/Little Endian Cuántos modos de Cuántos modos de
direccionamiento?direccionamiento? Directo, indirecto, Directo, indirecto,
indexado…indexado… MuchosMuchos PocosPocos Uno soloUno solo
![Page 25: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/25.jpg)
Cuántos Operandos?Cuántos Operandos? 3 operandos: RISC y Mainframes3 operandos: RISC y Mainframes
A = B + CA = B + C 2 operandos: Intel, Motorola2 operandos: Intel, Motorola
A = A + BA = A + B Uno suele ser un registroUno suele ser un registro
1 operando: Acumulador1 operando: Acumulador AC = AC + DatoAC = AC + Dato
0 operandos: Stack Machines0 operandos: Stack Machines Usan un stackUsan un stack
Muchos operandos (VLIW)Muchos operandos (VLIW) Paralelismo implícito en la instrucciónParalelismo implícito en la instrucción
![Page 26: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/26.jpg)
Algunas ISAAlgunas ISA
CISC examples RISC examples Superscalars
IBM 370/168 VAX 11/780 Intel 80486 88000 R4000 RS/6000 80960
Year developed 1973 1978 1989 1988 1991 1990 1989
The number of instruction 208 303 235 51 94 184 62
Instruction size (bytes) 2 - 6 2 - 57 1 - 11 4 4 4 4, 8
Addressing modes 4 22 11 3 1 2 11
The number of GRPs 16 16 8 32 32 32 32 - 256
Control memory size (K bits) 420 480 246 - - - -
Cache size (KB) 64 64 8 16 128 32 - 64 0.5
![Page 27: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/27.jpg)
OrtogonalidadOrtogonalidad
Cualquier instrucción puede ser usada con Cualquier instrucción puede ser usada con cualquier cualquier modo de direccionamientomodo de direccionamiento
Es una cualidad “elegante”, pero costosaEs una cualidad “elegante”, pero costosa Implica tener muchas instruccionesImplica tener muchas instruccionesAlgunas quizás poco usadas o fácilmente Algunas quizás poco usadas o fácilmente
reemplazablesreemplazables
![Page 28: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/28.jpg)
EjemploEjemplo
• Instrucción 32 bits
• 256 instrucciones posibles
• 2 operandos (Op1 = Op1 op Op2)
• 12 bits por operando
• MODE = 8 Modos de Direccionamiento
• Reg = 32 Registros
• OffSet = Desplazamiento o Escala (4 bits)
• Problema: Para direccionamiento directo o inmedianto hay que acceder a los campos opcionales
![Page 29: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/29.jpg)
El tamaño de las intrucciones está fuertemente El tamaño de las intrucciones está fuertemente influenciado por el número de operandos que influenciado por el número de operandos que soporta el ISA.soporta el ISA.
No todas las instrucciones requieren el mismo No todas las instrucciones requieren el mismo número de operandos.número de operandos.
Hay operaciones que no requieren operandos (ej: Hay operaciones que no requieren operandos (ej: HALTHALT))
Qué hacemos con el espacio que sobra?Qué hacemos con el espacio que sobra?
Podríamos utilizar códigos de operación Podríamos utilizar códigos de operación variables.variables.
Formatos de InstrucciónFormatos de Instrucción
![Page 30: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/30.jpg)
16 Registros, 4K de memoria.16 Registros, 4K de memoria. Necesitamos 4 bits para acceder a un registroNecesitamos 4 bits para acceder a un registro Necesitamos 12 bits para acceder a memoria.Necesitamos 12 bits para acceder a memoria. Si las instrucciones son de 16-bits tenemos dos Si las instrucciones son de 16-bits tenemos dos
opciones:opciones:
Ejemplo Máquina con RegistrosEjemplo Máquina con Registros
![Page 31: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/31.jpg)
Si permitimos que varíe el opcode:Si permitimos que varíe el opcode:
EjemploEjemplo
![Page 32: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/32.jpg)
Formato de Instrucción PentiumFormato de Instrucción Pentium
![Page 33: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/33.jpg)
Pentium Addressing ModesPentium Addressing Modes Direcciona usando Segmento : OffsetDirecciona usando Segmento : Offset
Segmento : Offset = Dirección LinealSegmento : Offset = Dirección Lineal Modos disponibles (entre otros…. Son 24!!!!)-> CISCModos disponibles (entre otros…. Son 24!!!!)-> CISC
ImmediatoImmediato ImplícitoImplícito Register operandRegister operand DisplacementDisplacement BaseBase Base with displacementBase with displacement Scaled index with displacementScaled index with displacement Base with index and displacementBase with index and displacement Base scaled index with displacementBase scaled index with displacement RelativeRelative
![Page 34: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/34.jpg)
Pentium Addressing ModePentium Addressing Mode
![Page 35: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/35.jpg)
PowerPC Addressing ModesPowerPC Addressing Modes Load/store Load/store
Register Indirect + DesplazamientoRegister Indirect + Desplazamiento Las instrucciones incluyen 16 bit de desplanzamiento a ser Las instrucciones incluyen 16 bit de desplanzamiento a ser
sumado a un registro base (seteable)sumado a un registro base (seteable) Indirect indexedIndirect indexed
Un registro de base y otro de indiceUn registro de base y otro de indice
SaltosSaltos AbsolutoAbsoluto RelativoRelativo IndirectoIndirecto
ArithmeticArithmetic Operandos en registros o en la instrucciónOperandos en registros o en la instrucción
![Page 36: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/36.jpg)
PowerPC Memory Operand PowerPC Memory Operand Addressing ModesAddressing Modes
![Page 37: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento](https://reader035.vdocuments.mx/reader035/viewer/2022062323/5665b48f1a28abb57c923276/html5/thumbnails/37.jpg)
ReferenciasReferencias
Tanenbaum – Capitulo 5Tanenbaum – Capitulo 5Stalling – Capitulo 11Stalling – Capitulo 11Null - Capitulo 5Null - Capitulo 5