Fundamentos de Arquitectura y Código Máquina



Documentos relacionados
Arquitecturas CISC y RISC

Entorno de Ejecución del Procesador Intel Pentium

TAREA 1 MANTENIMIENTO DE COMPUTADORES:

Aprendiendo Sistemas Operativos: Programación de Procesadores de Arquitectura IA-32

Generated by Foxit PDF Creator Foxit Software For evaluation only.

Dr.-Ing. Paola Vega Castillo

ITT-327-T Microprocesadores

Arquitectura de Computadores

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

Arquitectura Von Neumann

1.2 Análisis de los Componentes. Arquitectura de Computadoras Rafael Vazquez Perez

Arquitecturas de Computadoras II. Febrero 2013

Hardware: dentro de la caja. Introducción a la Informática


Organización Básica de un Computador y Lenguaje de Máquina

Tema: Historia de los Microprocesadores

6-REGISTROS DEL 8086 Y DEL 80286

2014 Mario Medina C. 1

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

Ensamblador x86: lazos y procedimientos

Curso S08 para Cavernícolas

Tema 1: Computadores y Programas

Abstracciones del computador y la Tecnología

Programación a Nivel-Máquina I: Conceptos Básicos

Familia de procesadores Intel x86

EL EMU8086 Y EL MICROPROCESADOR 8086.

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles

Clase 20: Arquitectura Von Neuman

picojava TM Características

Procesadores de 64 bits

"Programación en Ensamblador del microprocesador Pentium (I)"

MICROPROCESADORES. Conrado Perea

Procesador Pentium II 450 MHz Procesador Pentium II 400 MHz Procesador Pentium II 350 MHz Procesador Pentium II 333 MHz Procesador Pentium II 300 MHz

MICROPROCESADORES, EVOLUCIÓN HISTÓRICA Y CARACTERÍSTICAS TÉCNICAS BÁSICAS

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Arquitectura de un computador

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Arquitectura basica de un computador

Entre los más conocidos editores con interfaz de desarrollo tenemos:

MÓDULO III PROGRAMACIÓN DEL MICROPROCESADOR

CPU. Unidad central de procesamiento

La Arquitectura de las Máquinas Virtuales.

Sistemas Digitales basados en Microprocesador

Tema 2: Implementación del núcleo de un Sistema Operativo

TEMA 1. INTRODUCCIÓN. 1. Diferentes niveles en la arquitectura de un computador

Mod. I, Unid. 1, Obj. 1 CRITERIO DE DOMINIO 1/1

Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio

Tema 7: Esquema del Funcionamiento de una Computadora. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Hardware: componentes físicos (UCP, discos, impresora, circuitos de E/S,...) Software: componentes lógicos (lo que no es hardware)

COLEGIO COMPUESTUDIO

Capítulo 1 Introducción a la Computación

Autor: Alejandro Furfaro

UNIDAD 4: El procesador: Camino de los datos y Control.

OBJETIVOS DE LA MATERIA... 4 PROGRAMA ANALÍTICO. CONTENIDOS TEÓRICOS Y PRÁCTICOS... 5 BIBLIOGRAFIA... 7

FORMACIÓN CURSO Computadores para bases de datos

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Pila / Convención C / Interacción C-ASM. Ejercicios. Pila. Organización del Computador II. 21 de marzo de 2017

Instituto Tecnológico Argentino Técnico en Hardware de PC Plan THP2A03B

Arquitectura (Procesador familia 80 x 86 )

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Sistemas de Computadoras Índice

Análisis general de un Microprocesador

Estructura de Computadores

DISEÑO E IMPLEMENTACIÓN DE UNA TARJETA DE ADQUISICIÓN DE DATOS PARA EL LABORATORIO DE TELECOMUNICACIONES DE LA FIEC.

ÍNDICE SISTEMAS OPERATIVOS... 5

U.D. 1. SOFTWARE Y HARDWARE

Actividad N 1. Primer procesador creado por Intel

TEMA 4. Unidades Funcionales del Computador

Hardware: Dentro de la caja. Informática Aplicada Grado en GAP Fac. de Admón. y Dir. de Empresas Univ. Politécnica de Valencia

Microcontroladores PIC de Microchip: generalidades

Computadores y Comunicaciones. Práctica de Laboratorio: Software

2.3 Lenguajes de descripción: - Lenguajes de descripción hardware: VHDL, Verilog - Álgebra de Boole

Ingº CIP Fabian Guerrero Medina Master Web Developer-MWD

UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES. PROF. ISRAEL J. RAMIREZ israel@ula.ve

Apéndice A: Características de las Redes Locales

Tema 2. Diseño del repertorio de instrucciones

GENERACIÓN DE CÓDIGO

Figura 1.4. Elementos que integran a la Tecnología de Información.

DEPARTAMENTO DE ELECTRONICA. Microprocesadores

Historia de los sistemas operativos

Arquitectura Segmentada: Conceptos básicosb

INDICE 2. Organización de computadoras 3. El Nivel de Lógica Digital

Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio

Tema 6. Gestión de la memoria

ARQUITECTURA DE COMPUTADORAS

INTRODUCCIÓN. Definiciones ORDENADOR (RAE 1992): En esta asignatura computador y ordenador tiene el mismo significado

Práctica 4. Introducción a la programación en lenguaje ensamblador

Tiempo de Compilación. Programa fuente. Secuencia. de caracteres. Scanner. Secuencia. de símbolos Parser. Compilador.

CLUSTER FING: ARQUITECTURA Y APLICACIONES

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo Universidad Carlos III de Madrid

INTRODUCCIÓN. Interrupciones.

Modelo de aplicaciones CUDA

Arquitecturas de computadoras

2.4. Modos de direccionamiento Distintas formas que tiene la arquitectura para especificar la ubicación de los operandos.

ESTRUCTURA DE MICROPROCESADORES

Para ello debemos ingresar al índice del curso y seleccionar recorrido por el curso, tal como se muestra en la siguiente diapositiva:

Transcripción:

Fundamentos de Arquitectura y Código Máquina Lección 3 Ing. Jorge Castro-Godínez MT7003 Microprocesadores y Microcontroladores Área de Ingeniería Mecatrónica Instituto Tecnológico de Costa Rica I Semestre 2014 Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 1 / 29

Contenido 1 Generación de código ejecutable 2 3 Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 2 / 29

En qué 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 Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 3 / 29

En qué 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 ĺınea de código. El HW entiende en 1 s y 0 s. Sin embargo no es un lenguaje amigable para el ser humano. Las instrucciones en lenguaje máquina son mucho más cortas que el número de bits que se necesitarían para representar los Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 4 / 29

Interfaz HW/SW: Perspectiva histórica El HW inicialmente fue muy primitivo. Diseños de HW eran costosos. Las instrucciones debían ser muy simples. E.g., una sola instrucción para sumar dos enteros. El SW también era bastante primitivo. Las primitivas de SW reflejaban el HW de una manera muy cercana. Architecture Specification (Interface) Hardware Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 5 / 29

Interfaz HW/SW: Ensambladores Los ensambladores facilitaron la vida, por mucho... 1 instrucción en ensamblador = 1 instrucción en lenguaje máquina Las instrucciones en ensamblador son cadenas de caracteres. Más fácil de leer y escribir para los humanos. Uso de nombres simbólicos. Assembler specification User program in asm Assembler Hardware Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 6 / 29

Interfaz HW/SW: Lenguajes de alto nivel Un mayor nivel de abstracción La complejidad de los programas creció. 1 ĺınea de código en un lenguaje de alto nivel podría ser compilado en muchas ĺıneas de lenguaje ensamblador. C language specification User program in C C compiler Assembler Hardware Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 7 / 29

Interfaz HW/SW: escritura, compilación y ejecución User program in C C compiler Assembler Hardware.c file.exe file Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 8 / 29

Rendimiento en la traducción de programas De que depende el tiempo requerido para traducir un programa? Del programa mismo, por ejemplo si está escrito en C. Del compilador: cuál es el conjunto (set) de instrucciones traduce del programa en C. De la arquitectura del conjunto de instrucciones (ISA, Instruction Set Architecture): cuál es el conjunto de instrucciones disponible para el compilador. La implementación de hardware: cuanto tiempo toma ejecutar las instrucciones. Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 9 / 29

Arquitectura del Conjunto de Instrucciones El ISA 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 PC Registers Memory Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 10 / 29

Desiciones de diseño de los ISA Instrucciones Qué instrucciones estarán disponibles? Qué hacen estas instrucciones? Cómo estarán codificadas estas instrucciones? Registros Cuántos registros habrán? Qué tamaño tendrán los registros? Memoria Cómo se especificarán las ubicaciones en memoria? Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 11 / 29

x86 Generación de código ejecutable Aquellos procesadores que implementan el ISA de x86 completamente, dominan el mercado de los servidores, las pc de escritorio y laptop. Diseño evolucionario: Compatibilidad hacia atrás hasta 8086 (de 1978) Cada vez se han agregado más funcionalidades en el tiempo. CISC: Complex Instruction Set Computer Muchas diferentes instrucciones con muchos diferentes formatos. Solo un conjunto pequeño de estas instrucciones se encuentran en programas en Linux. Instrucciones más complejas pero capaces de realizar cosas complejas. Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 12 / 29

Evolución de x86 Nombre Año Transistores MHz 8086 1978 29k 5-10 386 1985 275k 16-33 Pentium 4F 2005 230M 2800-3800 Evolución de 16, 32 y 64 bits. Capacidades para emplear sistemas operativos complejos, como los basados en Unix, fue posible. Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 13 / 29

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. Más núcleos! Fin del escalamiendo de Dennard y de la ley de Moore. Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 14 / 29

Procesadores x86 (2) Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 15 / 29

Evolución de los Procesadores 100,000 Performance (vs. VAX-11/780) 10,000 1000 100 10 Intel Xeon 6 cores, 3.3 GHz (boost to 3.6 GHz) Intel Xeon 4 cores, 3.3 GHz (boost to 3.6 GHz) Intel Core i7 Extreme 4 cores 3.2 GHz (boost to 3.5 GHz) 24,129 Intel Core Duo Extreme 2 cores, 3.0 GHz 21,871 Intel Core 2 Extreme 2 cores, 2.9 GHz AMD Athlon 64, 2.8 GHz 11,865 14,38719,484 AMD Athlon, 2.6 GHz Intel Xeon EE 3.2 GHz 7,108 Intel D850EMVR motherboard (3.06 GHz, Pentium 4 processor with Hyper-Threading Technology) 6,043 6,681 IBM Power4, 1.3 GHz 4,195 3,016 Intel VC820 motherboard, 1.0 GHz Pentium III processor 1,779 Professional Workstation XP1000, 667 MHz 21264A Digital AlphaServer 8400 6/575, 575 MHz 21264 1,267 993 AlphaServer 4000 5/600, 600 MHz 21164 649 Digital Alphastation 5/500, 500 MHz 481 Digital Alphastation 5/300, 300 MHz 280 22%/year Digital Alphastation 4/266, 266 MHz 183 IBM POWERstation 100, 150 MHz 117 Digital 3000 AXP/500, 150 MHz 80 HP 9000/750, 66 MHz 51 IBM RS6000/540, 30 MHz MIPS M2000, 25 MHz 18 MIPS M/120, 16.7 MHz 13 Sun-4/260, 16.7 MHz VAX 8700, 22 MHz 5 9 24 52%/year AX-11/780, 5 MHz 25%/year 1.5, VAX-11/785 1 1 1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002 2004 2006 2008 2010 2012 Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 16 / 29

Clones de x86: AMD Historicamente AMD (Advanced Micro Devices) ha seguido de cerca a Intel. Un poco más lentos, pero mucho más baratos En su momento contrataron diseñadores de circuitos de Digital Equipment y otras compañias. Fabricaron el Opteron: fuerte competidor del Pentium 4 Desarrollaron x86-64, su propia extensión de x86 a 64 bits. Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 17 / 29

Definiciones Arquitectura También se conoce como ISA o arquitectura abstracta. Las partes del diseño del procesador que deben ser comprendidas para escribir código en lenguaje ensamblador. Qué es visible para el SW? Microarquitectura Es la impementación de la arquitectura o arquitectura abstracta. Arquitectura concreta. Es el tamaño de la memoria caché parte de la arquitectura? La frecuencia de operación de núcleo? El número de registros del procesador? Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 18 / 29

Perspectiva del programador de ensamblador (1) CPU PC Registers Condition Codes Addresses Data Instructions Memory Object Code Program Data OS Data Stack Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 19 / 29

Perspectiva del programador de ensamblador (2) Estado visible al programador. PC: Program Counter (Contador de programa). Dirección de la siguiente instrucción a ser ejecutada. Llamado EIP (IA32) o RIP (x86-64) Archivo de registros Altamente usados por los programas para procesar datos. Códigos de condición Almacena la información del estado de las operaciones ariméticas y lógicas recientemente usadas. Usadas para los saltos condicionales. Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 20 / 29

Perspectiva del programador de ensamblador (3) Memoria Arreglos direccionables por bytes. Código/programa, datos, datos del SO. Incluye el uso de la pila (stack) usada para soportar procedimientos. Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 21 / 29

Convertir un archivo de C en Código Objeto Suponga código en archivos p1.c y p2.c Comando de compilación: gcc -O1 p1.c p2.c -o p Optimizaciones básicas (-O1) El resultado queda en p p text C program (p1.c p2.c) Compiler (gcc-s) text binary binary Asm program (p1.s p2.s) Assembler (gcc or as) Object program (p1.o p2.o) Linker (gcc or ld) Executable program (p) Static libraries (.a) Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 22 / 29

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 Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 23 / 29

Disassembly Desensamblar objdump -d program Es una herramienta útil para examinar el código objeto. Puede ser ejecutado sobre archivos.o o 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 Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 24 / 29

Tipos básicos de instrucciones Realizar funciones aritméticas empleando registros o datos en memoria. Transferir/mover información 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. Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 25 / 29

Qué es un registro? Es una ubicación dentro del CPU que almacena una pequeña cantidad de datos, los cuales pueden ser accesados muy rápidamente (una vez cada ciclo de reloj). Entre más pequeño más rápido. Registros constituyen el corazón/centro de la programación en ensamblador Recurso muy importante, pero escaso, en x86. Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 26 / 29

Registros Enteros IA32 %eax accumulate general purpose %ecx %edx %ebx %esi %edi %esp %ebp counter data base source index destination index stack pointer base pointer 32-bits wide Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 27 / 29

Registros Enteros IA32 %eax %ax %ah %al accumulate general purpose %ecx %edx %ebx %esi %cx %dx %bx %si %ch %dh %bh %cl %dl %bl counter data base source index %edi %esp %ebp %di %sp %bp destination index stack pointer base pointer 16-bit virtual registers (backwards compatibility) Instruction Set Architecture Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 28 / 29

Registros x86-64 %rax %eax %r8 %r8d %rbx %ebx %r9 %r9d %rcx %ecx %r10 %r10d %rdx %edx %r11 %r11d %rsi %esi %r12 %r12d %rdi %edi %r13 %r13d %rsp %esp %r14 %r14d %rbp %ebp %r15 %r15d Jorge Castro-Godínez Fundamentos de Arquitectura y Código Máquina 29 / 29