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

Upload: elvira-soler-agueero

Post on 02-Feb-2016

223 views

Category:

Documents


0 download

TRANSCRIPT

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