Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento.

37
Organización del Organización del Computador Computador CPU (ISA)– Diseño de un CPU (ISA)– Diseño de un ISA Modos de ISA Modos de Direccionamiento Direccionamiento

Transcript of Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento.

Page 1: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento.

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.

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.

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.

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.

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.

Address AOpcode

Instruction

Memory

Operand

DirectoDirecto

Page 7: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento.

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.

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.

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.

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.

Register NameOpcode

Instruction

Registers

Operand

RegistroRegistro

Page 12: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento.

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.

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.

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.

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.

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.

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.

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.

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.

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.

EjemploEjemplo

Page 22: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Pentium Addressing ModePentium Addressing Mode

Page 35: Organización del Computador CPU (ISA)– Diseño de un ISA Modos de Direccionamiento.

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.

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.

ReferenciasReferencias

Tanenbaum – Capitulo 5Tanenbaum – Capitulo 5Stalling – Capitulo 11Stalling – Capitulo 11Null - Capitulo 5Null - Capitulo 5