Estructura de Computadores¨ncies/Sesión 01... · I Conocer la estructura y el funcionamiento de...
Transcript of Estructura de Computadores¨ncies/Sesión 01... · I Conocer la estructura y el funcionamiento de...
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 [email protected] 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 ;
}