Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Transparencias 2.1, Apuntes de Ingeniería Infórmatica

Asignatura: Estructura de computadores, Profesor: , Carrera: Ingeniería Informática, Universidad: UGR

Tipo: Apuntes

2016/2017

Subido el 15/07/2017

vincreible
vincreible 🇪🇸

3.9

(9)

10 documentos

1 / 49

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Grado Informática, 2º Curso Estructura de Computadores
Programación a Nivel-Máquina I:
Conceptos Básicos
Estructura de Computadores
Semana 3
Bibliografía:
[BRY11] Cap.3 Computer Systems: A Programmer’s Perspective. Bryant, O’Hallaron. Pearson, 2011
Signatura ESIIT/C.1 BRY com
Transparencias del libro CS:APP, Cap.3
Introduction to Computer Systems: a Programmer’s Perspective
Autores: Randal E. Bryant y David R. O’Hallaron
http://www.cs.cmu.edu/afs/cs/academic/class/15213-f11/www/schedule.html
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31

Vista previa parcial del texto

¡Descarga Transparencias 2.1 y más Apuntes en PDF de Ingeniería Infórmatica solo en Docsity!

Programación a Nivel-Máquina I:

Conceptos Básicos

Estructura de Computadores Semana 3

Bibliografía: [BRY11] Cap.3 Computer Systems: A Programmer’s Perspective. Bryant, O’Hallaron. Pearson, 2011 Signatura ESIIT/C.1 BRY com

Transparencias del libro CS:APP, Cap. Introduction to Computer Systems: a Programmer’s Perspective Autores: Randal E. Bryant y David R. O’Hallaron http://www.cs.cmu.edu/afs/cs/academic/class/15213-f11/www/schedule.html

2

Guía de trabajo autónomo (4h/s)

 Lectura: del Cap.3 CS:APP (Bryant/O’Hallaron)

 Historical perspective, Program Encodings, Data Formats, Accessing Info.

  • 3.1 - 3.4 pp.187-  Procedures, Stack frame, Transferring control (opcional por ahora)
  • 3.7.1 - 3.7.2 pp.253-  x86-64, History, Overview, Accessing Info. (hasta Arithmetic)
  • 3.13 - 3.13.3 pp.301-

 Ejercicios: del Cap.3 CS:APP (Bryant/O’Hallaron)

 Probl. 3.1 - 3.5 pp.204, 208, 210-  Probl. 3.30 p.  Probl. 3.46 - 3.47 pp.305, 310

Bibliografía: [BRY11] Cap.3 Computer Systems: A Programmer’s Perspective. Bryant, O’Hallaron. Pearson, 2011 Signatura ESIIT/C.1 BRY com

Procesadores Intel x

 Dominan totalmente mercado portátil/sobremesa/servidor

 Diseño evolutivo

 Compatible ascendentemente hasta el 8086, introducido en 1978

 Va añadiendo características conforme pasa el tiempo

 Computador con repertorio instrucciones complejo (CISC)

 Muchas instrucciones diferentes, con muchos formatos distintos

 Pero sólo un pequeño subconjunto aparece en programas Linux

 Difícil igualar prestaciones Computadores Repertorio Instr. Reducido

(RISC)

 Sin embargo, Intel lo ha conseguido

 En lo que a velocidad se refiere. No tanto en (bajo) consumo.

Evolución Intel x86: Hitos significativos

Nombre Fecha Transistores MHz

 8086 1978 29K 5-

 Primer procesador Intel 16-bit. Base para el IBM PC & MS-DOS

 Espacio direccionamiento 1MB

 386 1985 275K 16-

 Primer procesador Intel 32-bit de la familia IA32 (x86)

 Agregó “direccionamiento plano” (“flat addressing”)

 Capaz de arrancar Unix

 Linux/gcc 32-bit no usa instrucciones introducidas en modelos posteriores

 Pentium 4F 2004 125M 2800-

 Primer procesador 64-bit Intel, familia Intel 64 (EM64t, x86-64)

 Core i7 2008 731M 2667-

 4 cores, hyperthreading (2 vías)

Procesadores Intel x86, cont.

 Evolución de las máquinas

 386 1985 0.3M

 Pentium 1993 3.1M

 Pentium/MMX 1997 4.5M

 PentiumPro 1995 6.5M

 Pentium III 1999 8.2M

 Pentium 4 2001 42M

 Core 2 Duo 2006 291M

 Core i7 2008 731M

 Características añadidas

 Instrucciones de soporte para operación multimedia

 Operaciones paralelas con datos 1B, 2B y 4-byte, tanto enteros & p. flot.

 Instrucciones para posibilitar operaciones condicionales más eficientes

 Evolución Linux/GCC

 2 etapas principales: 1) soporte 32-bit 386. 2) soporte 64-bit x86-

Microfotografía de un dado Core i

Más Información

 Procesadores Intel (Wikipedia) List_of_Intel_microprocessors

 Microarquitecturas Intel ark.intel.com

List_of_Intel_CPU_microarchitectures Wikipedia EMT64 / EM64T / x86_

Clones x86: Advanced Micro Devices (AMD)

 Históricamente

 AMD ha ido siguiendo a Intel en todo

 CPUs un poco más lentas, mucho más baratas

 Y entonces

 Reclutaron los mejores diseñadores de circuitos de Digital Equipment

Corp. y otras compañías con tendencia descendente

 Construyeron el Opteron: duro competidor para el Pentium 4

 Desarrollaron x86-64, su propia extensión a 64 bits

11

Los 64-Bit de Intel

 Intel intentó un cambio radical de IA32 a IA

 Arquitectura totalmente diferente (Itanium)

 Ejecuta código IA32 sólo como herencia*

 Prestaciones decepcionantes

 AMD intervino con una Solución Evolutiva

 x86-64 (ahora llamado “AMD64”)

 Intel se sintió obligado a concentrarse en IA

 Difícil admitir error, o admitir que AMD es mejor

 2004: Intel anuncia extensión EM64T de la IA

 Extended Memory 64-bit Technology

 Casi idéntica a x86-

 Todos los procesadores x86 salvo gama baja soportan x86-

 Pero gran cantidad de código se ejecuta aún en modo 32-bits

* “legacy” = herencia de características

Programación Máquina I: Conceptos Básicos

 Historia de los procesadores y arquitecturas de Intel

 Lenguaje C, ensamblador, código máquina

 Conceptos básicos asm: Registros, operandos, move

 Intro a x86-

Definiciones

 Arquitectura: (también arquitectura del repertorio de instrucciones:

ISA): Las partes del diseño de un procesador que se

necesitan entender para escribir código ensamblador.

 Ejemplos: especificación del repertorio de instrucciones, registros.

 Microarquitectura: Implementación de la arquitectura.

 Ejemplos: tamaño de las caches y frecuencia de los cores.

 Ejemplo de ISAs (Intel): x86, IA, IPF

texto

texto

binario

binario

Compilador (gcc -S)

Ensamblador (gcc ó as)

Enlazador (gcc ó ld)

programa C (p1.c p2.c)

programa asm (p1.s p2.s)

programa objeto (p1.o p2.o)

programa ejecutable (p)

Convertir C en Código Objeto

 Código en ficheros p1.c p2.c

 Compilar con el comando: gcc –O1 p1.c p2.c -o p

 Usar optimizaciones básicas ( -O1 )  Poner binario resultante en fichero p

librerías estáticas (.a)

17

Compilar a ensamblador

Código C

int sum(int x, int y) { int t = x+y; return t; }

Ensamblador IA32 generado

sum: pushl %ebp movl %esp,%ebp movl 12(%ebp),%eax addl 8(%ebp),%eax popl %ebp ret

Obtenerlo con el comando

/usr/local/bin/gcc –O1 -S code.c

Produce el fichero code.s

Algunos compiladores usan

la instrucción “leave” *

* LEAVE deshace ENTER previo: ESP←EBP, POP EBP.

Características ensamblador: Operaciones

 Realizan función aritmética sobre datos en registros o memoria

 Transfieren datos entre memoria y registros

 Cargar datos de memoria a un registro

 Almacenar datos de un registro en memoria

 Transferencia de control

 Llamadas incondicionales a procedimientos / retornos desde ellos

 Saltos condicionales

20

Código para sum

0x401040 : 0x 0x 0xe 0x8b 0x 0x0c 0x 0x 0x 0x5d 0xc

Código Objeto

 Ensamblador

 Traduce .s pasándolo a .o

 Instrucciones codificadas en binario

 Imagen casi completa del código ejecutable

 Le faltan enlaces entre código de ficheros

diferentes

 Enlazador

 Resuelve referencias entre ficheros

 Combina con libs. de tiempo ejec. estáticas*

 P.ej., código para malloc(), printf()

 Algunas libs. son dinámicamente enlazadas **

 En enlace ocurre cuando el programa empieza a ejecutarse

  • 11 bytes total
  • Cada instrucción 1, 2, ó 3 bytes
  • Empieza en direcc. 0x

_** “dynamically linked libraries”, o también “shared libs”

  • “static run-time libraries” = bibliotecas estáticas para soporte en tiempo de ejecución_