instrucciones- el lenguaje de las computadoras

Upload: victor-humberto-mc

Post on 08-Jul-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    1/43

    Instrucciones

    El lenguaje de las computadoras

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    2/43

    Recuerde

    ● El conocimiento del HW, mejora la calidad del Software:

    ○ Compiladores, SO, programas multihilos, manejo de memoria

    ● Tendencias importantes:

    ○ más transistores, nos movemos a multi-core, baja tasa en el mejoramiento d

    debido a las restricciones power/thermal, alta latencia en memoria y disco, …

    ● Razonando sobre el rendimiento:○ velocidad del reloj, CPI, suite de benchmark y algunas ecuaciones sobre ren

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    3/43

    ISA: Instruction Set Architecture● Entender el lenguaje del HW, es importante para entender la int

    ● Un programa, por ejemplo en c, es compilado en un ejecutable

    compuesto de instrucciones máquina○ Este ejecutable se puede ejecutar en otras computadoras

    ○ Por ejemplo: Todos los procesadores Intel, leen estas instrucciones de la m

    ■ Pero: Cada procesador Intel maneja las instrucciones de forma diferen

    Arquitectura vs Organización

    ● Los programas JAVA son convertidos en bytecode portable qué

    en instrucciones máquina durante la ejecución (compilación ju

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    4/43

    ISA: Instruction Set Architecture

    Principios importantes al definir la ISA

    ● Mantener el HW simple: En el chip solo se debe implementar p

    básicas para mantenerlo rápido

    ● Mantener las instrucciones regulares: Simplificar la decodific

    planificación de instrucciones

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    5/43

    ISA: Misma arquitectura, misma organizació

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    6/43

    ISA: Algunas Organizaciones

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    7/43

     Arquitectura MIPS

    ● Usada como ejemplo a lo largo del curso

    ● Las ISA son como dialectos de un mismo lenguaje: Si sabes unpuedes entender las demás

    ● Desarrollada en la Universidad de Standford como una Arquitec

    innovadora en los años 80’s (www.mips.com)

    ● Ampliamente usada hoy en día

    http://www.mips.com/http://www.mips.com/

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    8/43

    Una instrucción MIPS básica

    Código C: a = b + c;

    Código ensamblador: (instrucciones maquina amigables con el hu

    add a, b, c # a es la suma de b y c

    Código máquina: (instrucciones maquina amigables con el hardwa

    00000010001100100100000000100000

    Ejercicio: Traslade el siguiente código en C, a ensamblador:

    a = b + c + d + e;

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    9/43

    Operaciones aritméticas: a = b + c + d + e;

    add a, b, c add a, b, c

    add a, a, d add f , d, e

    add a, a, e add a, a, f 

    ● Las instrucciones son simples: Número fijo de operandos (difere

    ● Una sola línea de código en C ( o en cualquier otro lenguaje) esmúltiples líneas de código ensamblador 

    ● Algunas secuencias pueden ser mejor que otras…. la segunda

    necesita una variable (temporal) adicional: f 

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    10/43

    Operaciones aritméticas: Resta f = (g + h) - (i + j)

    add t0, g, h add f, g, h

    add t1, i, j sub f, f, i

    sub f, t0, t1 sub f, f, j

    ● Pueden darse diferentes versiones: quizás algunas son mejores

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    11/43

    Operandos y Registros

    ● En C, cada variable corresponde con una ubicación de memori

    ● En el HW, cada acceso a memoria es caro: Si una misma variabvarias veces, conviene tenerla directamente en el procesador y

    directamente ( en Registros)

    ● Para simplificar las instrucciones, se requiere que cada instrucc

    solo opere con registros

    ● El número de operandos (variables) en un lenguaje de alto nive

    muy extenso; pero el número de operandos en el ensamblador

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    12/43

    Registros

    ● La ISA MIPS tiene 32 registros (x86 solo tiene 8 registros)

    ○ Numerados 0 a 31○ ¿Por qué no más? ¿o menos?

    ■ Una cuestión de diseño: mantener el HW simple, pero más rápido

    ● Cada registro es de 32bits ( en las arquitecturas recientes de 64

    registros son de 64 bits) → tamaño de palabra 

    ● Para hacer el código más legible, los registros son particionados○ $s0 - Ss7 (variables C/java), $t0-t9 ( variables temporales), ...

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    13/43

    Palabra

    ● Una entidad de 32bit (4 bytes) es denominada palabra

    ● MIPS puede direccionar 230 palabras de memoria a nivel de byte…, M[4294967292] direccionadas en saltos de 4, accedidas solo

    instrucciones de transferencia

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    14/43

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    15/43

    Ejemplo con Registros como Operandos

    ● Código C

    f = (g + h) - (i + j);

    ● Código MIPS compilado:○ f, …, j → $s0, …, $s4

    add $t0, $s1, $s2

    add $t1, $s3, $s4

    sub $s0, $t0, $t1

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    16/43

    Acceso a Memoria

    ● Los datos (y programas) residen en Memoria principal como

    representaciones numéricas○ Arrays, Structures, datos dinámicos, …

    ● Entonces, para operarlos, es necesario:○ Traer los datos de la memoria principal a los registros para operarlos

    ○ Trasladar los resultados en los registros a la memoria principal

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    17/43

    Acceso a Memoria

    ● La Memoria Principal es direccionable a nivel de byte

    ○ cada dirección identifica un byte de 8 bits● Las palabras (32 bits o 4 byte) están alineadas en la memoria

    ○ La dirección de palabra va en múltiplos de 4

    ○ MIPS es Big Endian

    ■ El byte más significativo, tiene la menor dirección

    Tarea: Investigar Little endian, y compararlo con Big Endian

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    18/43

    Acceso a Memoria

    ● Los datos son transferidos usando instrucciones de transferenci

    ● $s1 es el registro que recibe (en lw) los datos y luego devuelve

    ● $s2 contiene la dirección base de memoria

    ● 100 es llamado desplazamiento

    ● $s2+100 es una dirección de memoria

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    19/43

    Acceso a Memoria: Ejemplo

    ● Código C

    g = h + A[8];

    ● Compilando a código MIPS:

    ○ g → $s1, h → $s2, dirección base de A en $s

    ○ Un índice de 8 requiere desplazamiento de 3

    lw $t0, 32($s3) # load

    add $s1, $s2, $t0

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    20/43

    Acceso a Memoria: Ejemplo # 2

    ● Código C

     A[12] = h + A[8];

    ● Compilando a código MIPS:

    lw $t0, 32($s3) # load

    add $t0, $s2, $t0

    sw $t0, 48($s3)

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    21/43

    Registros vs Memoria

    ● El acceso a registros es mucho más rápido que

    a memoria

    ● Operaciones en memoria requieren lw y sw

    ● Los compiladores usan los registros como sea p

    ○ el acceso a memoria es solo para valores m

    usados

    ○ La optimización de registros es importante

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    22/43

    Operandos Inmediatos

    ● Instrucciones para la especificación de constant

    addi $s3, $s3, 4 # $s3 ← $s3 + 4

    ● No hay un equivalente para negativos

    addi $s3, $s3, -4 # $s3 ← $s3 - 4

    ● El uso de O. inmediatos, elimina la necesidad de

    (al menos al operar con constantes)

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    23/43

    La constante Zero

    ● El registro MIPS 0 ($zero) es la constante 0

    ○ No puede ser sobreescrita

    ● Usada para operaciones comunes

    ○ Por ejemplo, para mover un valor de un regis

    add $t2, $s1, $zero # $t2 ← $s1

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    24/43

    Pero, ¿Cómo se representan numéricame

    ● Los datos e instrucciones son representados numér

    ○ En base 2 → dígitos binarios

    ○ El valor de un número en cualquier base se pued

    d x Basei

    ○ ejemplo:

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    25/43

    Base 2

    ● Base no natural para los humanos

    ● Pero, si una base natural para las computadoras: ON

    ● Puede darse Overflow

    ○ debe ser manejado por Lenguajes de programac

    ● Varias formas de representar los números con signo

    ○ Signo y magnitud○ Complemento a 2

    ○ Complemento a 1

    ○ Notación Biased

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    26/43

    Complemento a 2

    ● Por su facilidad con el HW, prácticamente es la más

    en día en todas las computadoras○ Si empieza con 0s, representa número positivo

    ○ Si empieza con 1s, representa números negativo

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    27/43

    Complemento a 2

    ● El HW solo necesita revisar el bit de signo

    ● Si es 0, es positivo

    ● Si es 1, es negativo

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    28/43

    Complemento a 2: Forma práctica

    ● Partiendo de su representación equivalente positiva

    ○ Invertir todos los 1s por 0s y viceversa○ Sumarle 1

    ● También funciona igual de negativo a positivo

    ● Si posee menos bit, sólo se completan los más sign

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    29/43

    Ejercicio

    ● ¿Cuál es el valor decimal de este binario de 64 bits e

    complemento a dos?

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    30/43

    Ahora sí, ¿Cómo se representan las instrucc

    ● En MIPS:

    ○ Registros $s0 a $s7 corresponden a los registros○ Registros $t0 a $t7 corresponden a los registros

    ○ En total MIPS tiene 32 registros.

    ■ MIPS necesita 5 bits para identificar los regis

    instrucción○ Las instrucciones tienen un formato particular 

    Tarea: Y los otros registros para qué sirven?

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    31/43

    Formato de Instrucciones MIPS

    ● para la instrucción:

    ● la representación decimal es:

    ● y la representación binaria es:

    Cada segmento se denomina campo

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    32/43

    Formato de Instrucciones MIPS

    ● Las instrucciones MIPS, toman exactamente 32 bits

    ● En lenguaje ensamblador corresponde con mnem● En lenguaje máquina, es un conjunto de 32 1s y 0s

    ● Una secuencia de instrucciones es l.m. es código m

    ● Se puede usar base 16, para mayor facilidad:

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    33/43

    Ejercicio: Hexadecimal

    ● Convierta las siguientes representaciones a su otra

    eca8 642016

     → X2

    0001 0011 0101 0111 1001 1011 1101 11112 → X

    16

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    34/43

    Tipos de Instrucciones MIPS

    ● R-type: Para registros

    ● I-Type: Para Inmediate y operaciones de memoria

    Principio de diseño 3: Un buen diseño, demanda buenos c

    El compromiso es mantener el formato de instrucciones

    común posible. MIPS agrega el I-Type, debido a la espede constantes como campos. Si solo usara R-Type, el v

    de constante sería 26 → de 0 a 63

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    35/43

    Tipos de Instrucciones MIPS → R-Type

    ● Formato para la operación con registros

    Donde:

    ● op: Llamado opCode, Tipo de operación básica a re

    ● rs: El primer registro operando● rt: el segundo registro operando

    ● rd: El registro donde se escribirá el resultado

    ● Shamt: Shift amount. No usado por ahora

    ● funct: Fuction code: Especifica la variante del opCo

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    36/43

    Tipos de Instrucciones MIPS → I-Type

    ● Formato para las operaciones inmediate /transferenc

    Donde:

    ● op: Llamado opCode, Tipo de operación básica a re

    ● rs: El primer y único registro operando● rt: es usado como el registro donde se escribirá el re

    ● 16 bits para especificar una constante o dirección de

    ● Se trata de mantener la equivalencia de formatos en

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    37/43

    Tipos de Instrucciones MIPS → entendiedo R

    ● A continuación se presenta el mapeo del formato de

    instrucciones

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    38/43

    Tipos de Instrucciones MIPS → entendiedo R

    ● Código C:

    ● Ensamblador MIPS:

    ● Representación máquina (decimal)

    ● Representación máquina (binaria)

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    39/43

    Tipos de Instrucciones MIPS → entendiedo R

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    40/43

    The BIG picture: Programa almacenado

    Las computadoras de hoy en día, son construidas en ba

    principios:● Las instrucciones son representadas

    numéricamente

    ● Programas son almacenados en memoria

    (como datos)

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    41/43

    ¿A qué instrucción MIPS corresponde?

     A. sub $t0, $t1, $t2

    B. add $t2, $t0, $t1

    C. sub $t2, $t1, $t0

    D. sub $t2, $t0, $t1

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    42/43

     Asignación 2.6 a 2.11

  • 8/19/2019 Instrucciones- El Lenguaje de Las Computadoras

    43/43

    2.12 Traslation and Startup