estructura de computadores¨ncies/sesión 01... · i conocer la estructura y el funcionamiento de...

Post on 21-Jun-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Estructura de Computadores

Estructura de Computadores

11/Feb/2019

Estructura de ComputadoresPresentacion

Objetivos

I Conocer la jerarquıa de niveles de un computadorI Conocer la arquitectura (ISA) de un procesador RISCI Saber representar y operar con numeros reales y enterosI Saber como se almacenan y acceden datos estructuradosI Saber traducir programas de alto nivel a lenguaje

ensambladorI Conocer la estructura y el funcionamiento de la memoria

cacheI Entender el funcionamiento basico de la memoria virtualI Conocer los conceptos de excepcion e interrupcionI Adquirir competencias transversales (sostenibilidad)

Estructura de ComputadoresPresentacion

Temario

1. Introduccion2. Ensamblador MIPS y tipos de datos basicos3. Traduccion de programas4. Matrices5. Aritmetica de enteros y coma flotante6. Memoria cache7. Memoria virtual8. Excepciones e interrupciones

Estructura de ComputadoresPresentacion

RecursosI Sesiones de teorıa/problemas

I lunes y miercoles de 8:00 a 10:00 (A4002)I Sesiones de laboratorioI Bibliografıa

I D. Patterson and J. L. Hennessy. “Estructura y Diseno deComputadores: La Interfaz Hardware/Software”, 2011.

I Recursos online:I http://docencia.ac.upc.edu/FIB/grau/EC/I https://raco.fib.upc.edu/I Problemas, apuntes, practicas, examenes de anos anteriores...I Transparencias: http://jarnau.site.ac.upc.edu/EC/

I ConsultasI jarnau@ac.upc.eduI Despacho C6-115

Estructura de ComputadoresPresentacion

Calendario de sesiones de teorıa/problemas - Grupo 10

Dıa Tema Dıa Tema Dıa Tema

11/2/19 Tema 1-2 18/3/19 Tema 1 y 3 6/5/19 Tema 6

13/2/19 Tema 2 20/3/19 Tema 1 6/5/19 Examen parcial

18/2/19 Tema 2 25/3/19 Tema 5 8/5/19 Tema 6

20/2/19 Tema 2 27/3/19 Tema 5 13/5/19 Tema 7

25/2/19 Tema 3 1/4/19 Tema 5 15/5/19 Tema 7

27/2/19 Tema 3 3/4/19 Tema 5 20/5/19 Tema 7

4/3/19 Tema 3 8/4/19 Tema 5 22/5/19 Tema 8

6/3/19 Tema 3 10/4/19 Tema 6 27/5/19 Tema 8

11/3/19 Tema 4 24/4/19 Tema 6 29/5/19 Repaso

13/3/19 Tema 4 29/4/19 Tema 6 3/6/19 Ex. Lab

11/6/19 de 8h a 11h - Examen final

Estructura de ComputadoresPresentacion

Sesiones de laboratorio

Grupo Sesion 0 Sesion 1 Sesion 2 Sesion 3 Sesion 4 Sesion 5 Aula

11 19/02 05/03 19/03 02/04 23/04 07/05 A5S105

12 22/02 08/03 22/03 05/04 26/04 17/05 C6S306

13 26/02 12/03 26/03 09/04 30/04 14/05 A5S108

I Sesion 0: IntroduccionI Sesion 1: Ensamblador MIPS y tipos de datos basicosI Sesion 2: Traduccion de programasI Sesion 3: Tipos de datos estructuradosI Sesion 4: Codificacion en coma flotanteI Sesion 5: Memoria cache

Estructura de ComputadoresPresentacion

Evaluacion

I 0.2*max(EP,EF) + 0.6*EF + 0.2*(EL*0.85 + EC*0.15)I EP = Examen Parcial (8/11/18)I EF = Examen Final (10/1/19)I EL = Examen de Laboratorio (20/12/18)I EC = Evaluacion Continua de Laboratorio

I Evaluacion continua en cada sesion de laboratorioI Estudio previo e individualI Actividades por parejas durante la sesion presencial

Estructura de ComputadoresTema 1. Introduccion

Tema 1. Introduccion

Estructura de ComputadoresTema 1. Introduccion

¿Cual fue el primer dispositivo de computo?

Estructura de ComputadoresTema 1. Introduccion

¿Como se realizan los calculos?

Abaco

Movimiento de fichas

Estructura de ComputadoresTema 1. Introduccion

¿Como se realizan los calculos?

Abaco Computador Digital Moderno

Movimiento de fichas Movimiento de electrones

Estructura de ComputadoresTema 1. Introduccion

Abaco vs Computador Digital

Mecanico ElectronicoManual Automatico/Programable

Escaso almacenamiento Gran almacenamiento (TBytes)Lento Muy rapido (TFLOPS)

I Computador digitalI Dispositivo electronico capaz de almacenar y procesar

informacion de forma automaticaI Pero el usuario no puede interaccionar con los electrones de

forma directa...

Estructura de ComputadoresTema 1. Introduccion

Niveles de abstraccion

Interfaz de usuarioMenus, iconos, botones, copia/pega...

Lenguaje de alto nivelC/C++, Java, Fortran, Python... (Pro2)

Lenguaje maquinaMIPS, x86, ARM, RISC-V... (EC)

HardwarePuertas logicas, multiplexores, biestables... (IC)

Estructura de ComputadoresTema 1. Introduccion

Interfaces entre nivelesI Application Binary Interface (ABI)

I Funciones del sistema operativo (llamadas al sistema)I Instruction Set Architecture (ISA)

I Interfaz entre el hardware y el softwareI Describe los aspectos del procesador visibles al programador en

lenguaje maquina:I Juego de instrucciones, modos de direccionamiento,

excepciones, modelo de memoria...I Ejemplos: MIPS, x86, ARM, RISC-V

Estructura de ComputadoresTema 1. Introduccion

Traduccion entre niveles

I Lenguaje de alto nivelI AbstractoI PortableI Rapido de escribir

I Lenguaje ensambladorI Representacion textural

de instrucciones

I Lenguaje maquinaI Representacion hardwareI Dıgitos binarios (bits)I Datos e instrucciones

Estructura de ComputadoresTema 1. Introduccion

Compilacion vs Interpretacion

I CompilacionI Traduccion del programa entero una sola vez (estatico)I Programa generado es muy rapidoI Recompilacion para cada ISA y/o ABI (no portable)I Ejemplos: C/C++, Fortran, Pascal...

I InterpretacionI Traduccion dinamica en tiempo de ejecucionI La ejecucion es mas lentaI PortabilidadI Ejemplos: Java, Python...

I Los lenguajes interpretados son mucho mas productivos,portables y seguros... pero son demasiado lentos paraaplicaciones donde el rendimiento es crıtico

Estructura de ComputadoresTema 1. Introduccion

Problema

I Tenemos un computador MIPS. ¿Como podemos ejecutar unprograma escrito en Java si solo disponemos del siguientesoftware?I Compilador de C a x86 (escrito en x86)I Traductor binario de x86 a MIPS (escrito en MIPS)I Interprete de Java (escrito en C)

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Tema 2. Ensamblador MIPS y tipos de datos basicos

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

CISC vs RISC

I Complex Instruction Set Computer (CISC)I Juego de instrucciones grande y complejoI Instrucciones de longitud variableI Cada instruccion se decodifica en multiple microoperacionesI Ejemplos: x86

I Reduced Instruction Set Computer (RISC)I Juego de instrucciones pequeno y sencilloI Instrucciones de longitud fijaI Formatos de instruccion y modos de direccionamiento sencillosI Ejecutadas directamente por hardwareI Ejemplos: MIPS, ARM, RISC-V

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

MIPS

I Microprocessor without Interlocked Pipeline StagesI Disenado en 1981-1985 por Henessy y PattersonI Juego de instrucciones sencillo (RISC)I Distintas implementaciones comerciales

I Routers de Cisco y LinksysI Modems ADSLI Controladoras de impresora laserI Playstation (PSX, PS2 y PSP)I Nintendo 64

I Ampliamente utilizado para la docenciaI Muchos de los conceptos son muy similares en otros ISAs RISCI MIPS32: ISA utilizado en la asignatura (teorıa y laboratorio)

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

La Memoria

I Vector de bytesI Cada byte se identifica por una direccion

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Palabra (Word)

I Dato que tiene el tamano nativo de la arquitecturaI Normalmente, tamano de palabra = tamano de registroI MIPS32: 32 bits (4 bytes)I Ejemplos: 0xAABBCCDD, 0x44332211I ¿Como se almacenan los bytes de una palabra en memoria?

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Endianness

I Little-endian: byte de menor peso en la direccion mas baja

I Big-endian: byte de mayor peso en la direccion mas baja

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Declaracion de variables

I Variables globalesI Pueden ser accedidas desde cualquier funcionI Se mantienen en memoria durante toda la ejecucion del

programaI Se almacenan en una direccion de memoria fija

I Variables localesI Solo se pueden acceder dentro del bloque donde se declaranI Se crean al inicio de la ejecucion del bloque y dejan de existir

cuando finalizaI Se reserva espacio de almacenamiento de forma dinamica

(memoria o registro)

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Declaracion de variables

I Lenguaje C

i n t a = 0 x44332211 ;

i n t main ( v o i d ) {i n t i = 7 ;

}

I Ensamblador MIPS

. dataa : . word 0 x44332211

. t e x tmain :

l i $t0 , 7

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Tamano de las variables

Tamano Lenguaje C Ensamblador MIPS1 byte char / unsigned char .byte2 bytes short / unsigned short .half4 bytes int / unsigned int .word8 bytes long long / unsigned long long .dword

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Alineacion en memoria

u n s i g n e d c h a r a ;s h o r t b = 1 3 ;c h a r c = −1, d = 1 0 ;i n t e = 0x10AA00FF ;l o n g l o n g f = 0 x7766554433221100 ;

. dataa : . b y t e 0b : . h a l f 13c : . b y t e −1d : . b y t e 10e : . word 0x10AA00FFf : . dword 0 x7766554433221100

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Ejercicio

I Traduce a MIPS la siguiente declaracion de variables en C eindica el contenido de la memoria.

c h a r a = 0xFF ;c h a r b = 0xEE ;c h a r c = 0xDD ;u n s i g n e d l o n g l o n g d = 0 x7766554433221100 ;s h o r t e = 0xABCD ;u n s i g n e d i n t f = 0 x40302010 ;

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Declaracion de vectorI Declaracion con inicializacion

s h o r t vec [ 5 ] = {2 , −1, 3 , 5 , 0} ;

. datavec : . h a l f 2 , −1, 3 , 5 , 0

I Declaracion sin inicializacion (alineacion explıcita)c h a r a ;i n t v [ 1 0 0 ] ;

. dataa : . b y t e 0

. a l i g n 2 # A l i n e a r a m u l t i p l o de 4v : . s p a c e 400 # V e c t o r de 100 e n t e r o s

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Modos de direccionamiento

I Forma en la que se especifica un operando en una instruccionI MIPS soporta cinco modos de direccionamiento:

I Modo registroI Modo inmediatoI Modo memoriaI Modo pseudodirectoI Modo relativo al PC

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Operandos en modo registro

I El operando reside en un registroI La instruccion especifica el identificador del registroI Suma: addu rd, rs, rtI Resta: subu rd, rs, rtI MIPS incluye 32 registros de 32 bits

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Registros

Numero Nombre Descripcion

$0 $zero Contiene el valor 0 (solo lectura)$1 $at Registro temporal para pseudoinstrucciones

$2-$3 $v0-$v1 Resultados de subrutinas$4-$7 $a0-$a3 Parametros de una subrutina

$8-$15 $t0-$t7 Temporales$16-$23 $s0-$s7 Seguros (se preservan al llamar a una subrutina)$24-$25 $t8-$t9 Temporales$26-$27 $k0-$k1 Reservados para el SO

$28 $gp Global pointer$29 $sp Stack pointer$30 $fp Frame pointer$31 $ra Return address

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Operandos en modo inmediato

I El operando se codifica en la propia instruccionI Valor de 16 bits en Ca2I ¿Como se convierte en un valor de 32 bits?

I Extension de signoI Extension de ceros

addiu rt, rs, imm16 rt = rs + SignExt(imm16)lui rt, imm16 rt31..16 = imm16

rt15..0 = 0x0000ori rt, rs, imm16 rt = rs OR ZeroExt(imm16)

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Ejercicio

I Dada la siguiente sentencia en C:

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

I Suponiendo que f, g, h, i son variables locales enterasalmacenadas en los registros $t0, $t1, $t2, $t3respectivamente, ¿cual sera su traduccion a lenguajeensamblador MIPS?

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Operandos en modo memoria

I Solo las instrucciones de tipo load y store admiten unoperando que resida en memoriaI MIPS es una arquitectura load-store

I Hay que cargar los datos de memoria en registros para poderutilizarlos en instrucciones aritmetico-logicas

I Lectura/escritura de palabras en memoria:

lw rt, off16(rs) rt = MW[rs + SignExt(off16)] Load wordsw rt, off16(rs) MW[rs + SignExt(off16)] = rt Store word

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Ejemplo

I Traducir a MIPS la siguiente asignacion de valores enteros(words) en C, suponiendo que g y h ocupan $t1, $t2 y que ladireccion base de A esta en $t3:

g = h + A [ 8 ] ;

lw $t0 , 32( $t3 ) # $t0 = A [ 8 ]addu $t1 , $t2 , $t0 # g = h + $t0 ;

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Ejercicio

I Traduce a MIPS la siguiente asignacion de valores enteros(words) en C, suponiendo que h ocupa $t2 y que la direccionbase de A esta en $t3:

A [ 1 2 ] = h + A [ 8 ] ;

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Acceso a halfword o byte - Enteros con signo

I Load halfword: lh rt, off16(rs)I Copia un halfword (2 bytes) de la memoria a los 16 bits de

menor peso del registro rtI Realiza extension de signo (extiende el bit 15)

I Store halfword: sh rt, off16(rs)I Copia a memoria los 2 bytes de menor peso de rt

I Load byte: lb rt, off16(rs)I Copia 1 byte de memoria a los 8 bits de menor peso del

registro rtI Realiza extension de signo (extiendo el bit 7)

I Store byte: sb rt, off16(rs)I Copia a memoria el byte de menor peso del registro rt

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Ejercicio

I Suponiendo que $t2 contiene la direccion 0x10010000 y queel contenido de la memoria es el que se muestra en la partederecha, indica el resultado de cada instruccion y el contenidofinal de la memoria:

1. lb $t1, 1($t2)

2. lb $t1, 2($t2)

3. lh $t1, 0($t2)

4. lh $t1, 2($t2)

5. sb $t1, 1($t2)

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Acceso a halfword o byte - Naturales

I Load halfword unsigned: lhu rt, off16(rs)I Copia un halfword (2 bytes) de la memoria a los 16 bits de

menor peso del registro rtI Realiza extension de ceros

I Load byte unsigned: lbu rt, off16(rs)I Copia 1 byte de memoria a los 8 bits de menor peso del

registro rtI Realiza extension de ceros

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Ejercicio

I Suponiendo que $t2 contiene la direccion 0x10010000 y queel contenido de la memoria es el que se muestra en la partederecha, indica el resultado de cada instruccion:

1. lbu $t1, 2($t2)

2. lhu $t1, 2($t2)

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Acceso a doble palabra (dword)

I ¿Como se accede a un dato de 64 bits (long long) en laarquitectura MIPS de 32 bits?

. datax : . dword 0 x7766554433221100

. t e x tmain :

# $t2 c o n t i e n e l a d i r e c c i o n de memoria de xlw $t0 , 0( $t2 )lw $t1 , 4( $t2 )

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Restriccion de alineacion

I Las direcciones utilizadas en las instrucciones lw y sw han deser multiplos de 4

I Las direcciones utilizadas en las instrucciones lh, lhu y shhan de ser multiplos de 2

I En caso contrario se produce una excepcion por direccion noalineada y el programa termina

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Pseudoinstrucciones o macros

I Simplifican operaciones comunes para las que no existe unainstruccion en MIPS

I Facilitan el desarrollo, la lectura y la depuracion del codigoI En el momento de ser ensamblada se traduce a una o varias

instrucciones MIPS

move $t1 , $t2 # addu $t1 , $t2 , $ z e r o

l i $t1 , 100 # a d d i u $t1 , $zero , 100

l i $t1 , 0 x0030D900 # l u i $at , 0 x0030# o r i $t1 , $at , 0xD900

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Pseudoinstrucciones o macros

I Simplifican operaciones comunes para las que no existe unainstruccion en MIPS

I Facilitan el desarrollo, la lectura y la depuracion del codigoI En el momento de ser ensamblada se traduce a una o varias

instrucciones MIPS

. datay : . word 42 # D i r e c c i o n de y = 0 x10010024

. t e x tl a $t0 , y # l u i $at , 0 x1001

# o r i $t0 , $at , 0 x0024

Estructura de ComputadoresTema 2. Ensamblador MIPS y tipos de datos basicos

Ejercicio

I Traduce a MIPS el siguiente programa en C:

s h o r t v [ 3 ] = {−31, 43 , 7 7} ;i n t sum ;

i n t main ( v o i d ) {sum = v [ 0 ] + v [ 1 ] + v [ 2 ] − 9 1 ;

}

top related