• No se han encontrado resultados

Fundamentos de Arquitectura y Código Máquina

N/A
N/A
Protected

Academic year: 2021

Share "Fundamentos de Arquitectura y Código Máquina"

Copied!
29
0
0

Texto completo

(1)

Fundamentos de Arquitectura y C´

odigo M´

aquina

Lecci´on 3

Ing. Jorge Castro-God´ınez

MT7003 Microprocesadores y Microcontroladores ´

Area de Ingenier´ıa Mecatr´onica

Instituto Tecnol´ogico de Costa Rica

(2)

Contenido

1 Generaci´on de c´odigo ejecutable

2 Arquitectura del conjunto de instrucciones

(3)

¿En qu´

e se parecen estos bloques?

(1)

if (x != 0) y = (y+z)/x;

cmpl $0, -4(%ebp) je .L2

movl -12(%ebp), %eax movl -8(%ebp), %edx leal (%edx, %eax), %eax movl %eax, %edx sarl $31, %edx idivl -4(%ebp) movl %eax, -8(%ebp)

1000001101111100001001000001110000000000 0111010000011000 10001011010001000010010000010100 10001011010001100010010100010100 100011010000010000000010 1000100111000010 110000011111101000011111 11110111011111000010010000011100 10001001010001000010010000011000

(4)

¿En qu´

e se parecen estos bloques?

(2)

if (x != 0) y = (y+z)/x;

!

*

"#

#

$

*

cmpl $0, -4(%ebp) je .L2

movl -12(%ebp), %eax movl -8(%ebp), %edx leal (%edx, %eax), %eax movl %eax, %edx sarl $31, %edx idivl -4(%ebp) movl %eax, -8(%ebp)

1000001101111100001001000001110000000000 0111010000011000 10001011010001000010010000010100 10001011010001100010010100010100 100011010000010000000010 1000100111000010 110000011111101000011111 11110111011111000010010000011100 10001001010001000010010000011000

Realmente se trata de una misma l´ınea de c´odigo.

El HW entiende en 1’s y 0’s. Sin embargo no es un lenguaje “amigable” para el ser humano.

(5)

Interfaz HW/SW: Perspectiva hist´

orica

El HW inicialmente fue muy primitivo.

Dise˜nos de HW eran costosos. Las instrucciones deb´ıan ser muy simples.

E.g., una sola instrucci´on para sumar dos enteros. El SW tambi´en era bastante primitivo.

Las primitivas de SW reflejaban el HW de una manera muy cercana.

Hardware

(6)

Interfaz HW/SW: Ensambladores

Los ensambladores facilitaron la vida, por mucho... 1 instrucci´on en ensamblador = 1 instrucci´on en lenguaje m´aquina

Las instrucciones en ensamblador son cadenas de caracteres. M´as f´acil de leer y escribir para los humanos.

Uso de nombres simb´olicos.

Hardware

User program in asm

Assembler specification

Assembler

(7)

Interfaz HW/SW: Lenguajes de alto nivel

Un mayor nivel de abstracci´on

La complejidad de los programas creci´o.

1 l´ınea de c´odigo en un lenguaje de alto nivel podr´ıa ser compilado en muchas l´ıneas de lenguaje ensamblador.

Hardware User program in C

C language specification

Assembler C compiler

(8)

Interfaz HW/SW: escritura, compilaci´

on y ejecuci´

on

Hardware User program in C Assembler C compiler :+6%*>#=%* :+=?#2%*>#=%* R4"*>#=%* .exe file .c file

(9)

Rendimiento en la traducci´

on de programas

¿De que depende el tiempo requerido para traducir un programa?

Del programamismo, por ejemplo si est´a escrito en C. Del compilador: cu´al es el conjunto (set) de instrucciones traduce del programa en C.

De la arquitectura del conjunto de instrucciones (ISA, Instruction Set Architecture): cu´al es el conjunto de instrucciones disponible para el compilador.

Laimplementaci´on de hardware: cuanto tiempo toma ejecutar las instrucciones.

(10)

Arquitectura del Conjunto de Instrucciones

ElISA define:

El estado del sistema: registros, memoria, contador de programa.

Las instrucciones que el CPU puede ejecutar.

El efecto que cada una de las instrucciones tiene en el estado del sistema.

CPU

Memory

PC

(11)

Desiciones de dise˜

no de los ISA

Instrucciones

¿Qu´e instrucciones estar´an disponibles? ¿Qu´e hacen estas instrucciones?

¿C´omo estar´an codificadas estas instrucciones? Registros

¿Cu´antos registros habr´an?

¿Qu´e tama˜no tendr´an los registros? Memoria

(12)

x86

Aquellos procesadores que implementan el ISA de x86 completamente, dominan el mercado de los servidores, las pc de escritorio y laptop.

Dise˜no evolucionario:

Compatibilidad hacia atr´as hasta 8086 (de 1978)

Cada vez se han agregado m´as funcionalidades en el tiempo. CISC: Complex Instruction Set Computer

Muchas diferentes instrucciones con muchos diferentes formatos.

Solo un conjunto peque˜no de estas instrucciones se encuentran en programas en Linux.

Instrucciones m´as complejas pero capaces de realizar cosas complejas.

(13)

Evoluci´

on de x86

Nombre A˜no Transistores MHz

8086 1978 29k 5-10

386 1985 275k 16-33

Pentium 4F 2005 230M 2800-3800

Evoluci´on de 16, 32 y 64 bits.

Capacidades para emplear sistemas operativos complejos, como los basados en Unix, fue posible.

(14)

Procesadores x86

(1)

486 1989 1.9M Pentium 1993 3.1M Pentium/MMX 1997 4.5M Pentium Pro 1995 6.5M Pentium III 1999 8.2M Pentium IV 2001 42M Core 2 Duo 2006 291M Core i7 2008 731M

Funcionalidades se han agregado en el tiempo.

Instrucciones para soportar funcionalidades multimedias. Operaciones en paralelo de 1, 2 y 4 bytes de datos. Instrucciones para mejorar la eficiencia de operaciones condicionales.

(15)
(16)

Evoluci´

on de los Procesadores

1 5 9 13 18 24 51 80 117 183 280 481 649 993 1,267 1,779 3,016 4,195 6,043 6,681 7,108 11,86514,387 19,48421,871 24,129 1 10 100 1000 10,000 100,000 1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002 2004 2006 2008 2010 2012 Performance (vs. VAX-11/780) 25%/year 52%/year 22%/year IBM POWERstation 100, 150 MHz Digital Alphastation 4/266, 266 MHz Digital Alphastation 5/300, 300 MHz Digital Alphastation 5/500, 500 MHz AlphaServer 4000 5/600, 600 MHz 21164 Digital AlphaServer 8400 6/575, 575 MHz 21264Professional Workstation XP1000, 667 MHz 21264A

Intel VC820 motherboard, 1.0 GHz Pentium III processor IBM Power4, 1.3 GHz

Intel Xeon EE 3.2 GHz AMD Athlon, 2.6 GHz Intel Core 2 Extreme 2 cores, 2.9 GHz

Intel Core Duo Extreme 2 cores, 3.0 GHz Intel Core i7 Extreme 4 cores 3.2 GHz (boost to 3.5 GHz)

Intel Xeon 4 cores, 3.3 GHz (boost to 3.6 GHz) Intel Xeon 6 cores, 3.3 GHz (boost to 3.6 GHz)

Intel D850EMVR motherboard (3.06 GHz, Pentium 4 processor with Hyper-Threading Technology)

1.5, VAX-11/785 AMD Athlon 64, 2.8 GHz Digital 3000 AXP/500, 150 MHz HP 9000/750, 66 MHz IBM RS6000/540, 30 MHz MIPS M2000, 25 MHz MIPS M/120, 16.7 MHz Sun-4/260, 16.7 MHz VAX 8700, 22 MHz AX-11/780, 5 MHz

(17)

Clones de x86: AMD

Historicamente AMD (Advanced Micro Devices) ha seguido de cerca a Intel.

Un poco m´as lentos, pero mucho m´as baratos

En su momento contrataron dise˜nadores de circuitos de Digital Equipment y otras compa˜nias.

Fabricaron el Opteron: fuerte competidor del Pentium 4 Desarrollaron x86-64, su propia extensi´on de x86 a 64 bits.

(18)

Definiciones

Arquitectura

Tambi´en se conoce como ISA o arquitectura abstracta. Las partes del dise˜no del procesador que deben ser

comprendidas para escribir c´odigo en lenguaje ensamblador. ¿Qu´e es visible para el SW?

Microarquitectura

Es la impementaci´on de la arquitectura o arquitectura abstracta.

Arquitectura concreta.

¿Es el tama˜no de la memoria cach´e parte de la arquitectura? ¿La frecuencia de operaci´on de n´ucleo?

(19)

Perspectiva del programador de ensamblador

(1)

CPU

PC Registers

Memory

Object Code Program Data OS Data Addresses Data Instructions

Stack

Condition Codes

(20)

Perspectiva del programador de ensamblador

(2)

Estado visible al programador.

PC: Program Counter(Contador de programa). Direcci´on de la siguiente instrucci´on a ser ejecutada. Llamado EIP (IA32) o RIP (x86-64)

Archivo de registros

Altamente usados por los programas para procesar datos. C´odigos de condici´on

Almacena la informaci´on del estado de las operaciones arim´eticas y l´ogicas recientemente usadas.

(21)

Perspectiva del programador de ensamblador

(3)

Memoria

Arreglos direccionables por bytes. C´odigo/programa, datos, datos del SO.

Incluye el uso de la pila (stack) usada para soportar procedimientos.

(22)

Convertir un archivo de C en C´

odigo Objeto

Suponga c´odigo en archivos p1.c yp2.c

Comando de compilaci´on: gcc -O1 p1.c p2.c -o p

Optimizaciones b´asicas (-O1) El resultado queda enp text text binary binary Compiler (gcc -S) Assembler (gccor as) Linker (gccor ld) C program (p1.c p2.c) Asm program (p1.s p2.s)

Object program (p1.o p2.o)

Executable program (p)

Static libraries (.a)

(23)

Convertir un archivo de C en Ensamblador

gcc -O1 -S code.c

Produce un archivo code.s

C Code

int sum(int x, int y) {

int t = x+y; return t; }

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

(24)

Disassembly

“Desensamblar”

objdump -d program

Es una herramienta ´util para examinar el c´odigo objeto. Puede ser ejecutado sobre archivos .oo binarios finales.

Disassembled 00401040 <_sum>: 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 8b 45 0c mov 0xc(%ebp),%eax 6: 03 45 08 add 0x8(%ebp),%eax 9: 89 ec mov %ebp,%esp b: 5d pop %ebp c: c3 ret

(25)

Tipos b´

asicos de instrucciones

Realizar funciones aritm´eticas empleando registros o datos en memoria.

Transferir/mover informaci´on entre registos y memoria Cargar datos de memoria a registros.

Almacenar datos de los registros a la memoria. Transferencia de control

Saltos incondicionales desde o hacia procedimientos. Saltos condicionales.

(26)

¿Qu´

e es un registro?

Es una ubicaci´on dentro del CPU que almacena una peque˜na cantidad de datos, los cuales pueden ser accesados muy r´apidamente (una vez cada ciclo de reloj).

Entre m´as peque˜no m´as r´apido.

Registros constituyen el coraz´on/centro de la programaci´on en ensamblador

(27)

Registros Enteros IA32

%eax %ecx %edx %ebx %esi %edi %esp %ebp g e n e ral p u rpo se accumulate counter data base source index destination index stack pointer base pointer

(28)

Registros Enteros IA32

%eax %ecx %edx %ebx %esi %edi %esp %ebp %ax %cx %dx %bx %si %di %sp %bp %ah %ch %dh %bh %al %cl %dl %bl

16-bit virtual registers (backwards compatibility) g e n e ral p u rpo se accumulate counter data base source index destination index stack pointer base pointer

(29)

Registros x86-64

%rax %rbx %rcx %rdx %rsi %rdi %rsp %rbp %eax %ebx %ecx %edx %esi %edi %esp %ebp %r8 %r9 %r10 %r11 %r12 %r13 %r14 %r15 %r8d %r9d %r10d %r11d %r12d %r13d %r14d %r15d

Referencias

Documento similar

SEXTO DOCENTES SANDRA CAPACHO – MARÍA INÉS CHACÓN CIENCIAS NATURALES -ARTÍSTICA CONTRALOR SÉPTIMO COORDINADOR FABIO CLAVIJO – DOCENTE BRAYAN GOMÉZ LENGUAJE – SOCIALES –

QUE EL HONORABLE AYUNTAMIENTO DEL MUNICIPIO DE SAN MIGUEL DE ALLENDE, GTO., CON FUNDAMENTO EN LO DISPUESTO POR EL ARTICULO 115, FRACCIÓN V, INCISO D), DE LA

Detalles del surtido: 13.8 onzas Latas de sopa de pollo con fideos condensada Campbell's®. Surtido por estilo / color: Incluso surtido

afsi también le comu- nieó á Eva las mifraas perfecciones , ló queparece quifo dar á entender Adán (fegun los Interpretes de la Lengua Hebrea) quándo a l ver formada á Eva ,

CONDICIONES del contrato de crédito simple, celebrado entre el Municipio e instituciones bancarias para la sustitución de luminarias dentro del Proyecto de Renovación y Modernización

En este punto, lo obvio sería que los datos que necesita el microprocesador para cumplir con su función tendrían que ser almacenados en la memoria RAM, pero tenemos que

Poco más de tres siglos y medio después de que los motetes policorales ve- necianos hicieran vibrar el ámbito sagrado de San Marcos, Bruno Maderna (niño prodigio de la

Objetivo matemático: Antes de realizar el juego, aprovecharemos para trabajar la tabla del 4 con cartas, ya que todo el alumnado estará expectante y atento a lo que vamos a hacer,