Estudio de las técnicas de diseño e implementación de emuladores Victor Moya del Barrio Proyecto de Fin de Carrera FIB UPC 2001.

Slides:



Advertisements
Presentaciones similares
Arquitectura RISC & CISC y DSP
Advertisements

Capítulo I Gestión de E/S 1.- Gestión de E/S 2.- Hardware de E/S 3.- Software de E/S.
El modelo de Von Neumann
UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
Prof. Ing.Maria Rosa Damaso Rios
III - Gestión de memoria
Programación 1 Introducción
Introducción a la programación
Teoría de lenguajes y compiladores
Arquitectura de Conjunto de Instrucciones (ISA)
Composición Interna de un Procesador
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
Direcciones físicas y direcciones virtuales (lógicas)
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
TRADUCTOR DE UN PROGRAMA
La memoria de acceso aleatorio (en inglés:random- access memory, cuyo acrónimo es RAM) es la memoria desde donde el procesador recibe las instrucciones.
Tema 10: Gestión de Memoria
Introducción a la Ingeniería en Sistemas
Partes de un Ordenador.
Título ¡Unidad 2!.
UNIDAD IV ADMINISTRACIÓN DE SISTEMAS CONCEPTOS DE GESTIÓN Y ALMACENAMIENTO.
5º Microprocesadores para comunicaciones
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
SOFTWARE DE PROGRAMACIÓN
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Overview Sistemas Computacionales
Asignación de Espacio No Contiguo
Soporte HW para Administración de Memoria Cecilia Hernández
ARQUITECTURA DE COMPUTADORAS INTEGRACION DE LAS TECNOLOGIAS DE INFORMACION Y COMUNICACION.
Fundamentos de Programación Resolución de Problemas con Computadoras y Herramientas de Programación.
TEMA 2: Organización de computadores
LOS MICROPROCESADORES
TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS
Programación de Sistemas
Introducción a las tecnologías informáticas Oscar F. Bedoya L. Oficina Edificio 331.
Tema 2: Lenguaje máquina
Arquitectura de Von Neumann
LA COMPUTADORA DIGITAL Parte 1 Prof. Domingo Hernández Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.
Introducción a la Programación “Componentes y Arquitectura de un computador” Semestre de Otoño 2006 MEng. Pedro Campos Soto.
Memorias.
integrantes: colmenares lennin Márquez Arnaldo
Memoria virtual.
PUERTO AGP (ACELERATED GRAPHICS PORT)
Gestión de Memoria.
Breve historia de los Procesadores. Evolución del semiconductor: 1K, 4K, 16K, 64K, 256K Y 1M bits ventajas: Aumento de 4 veces la capacidad de almacenamiento.
Página 1 09/01/2005 Materia: Tecnología de la Información Curso: Profesora Ariana Rosenthal Tecnología de la Información Profesora Ariana Rosenthal Hardware.
Tema 7: UNIDAD CENTRAL DE PROCESOS (CPU) Cáceres Pari Ángel Raúl
Gestión de Memoria.
Metodología de la programación
HARDWAREHARDWARE FELIX BELLA EDU ROS. INDICE 1-. INTRODUCCION 2-. FUNCIONES BASICAS A) LA UNIDAD CENTRAL (CPU) B) LA MEMORIA PRINCIPAL C) DISPOSITIVOS.
NOCIONES BÁSICAS COMPUTO II
SISTEMAS DE INFORMACIÓN GERENCIAL
TECNOLOGÍAS DE MEMORIA
Tipos de computadores Personales.
I.- COMPONENTES BÁSICOS DE UNA MICROCOMPUTADORA
INTEGRANTES: ONEIDA OSORIO VILLA, JUAN CAMILO SÁNCHEZ BAENA, JOANNA SÁNCHEZ, LUISA VILLA, JIMMY MORALES, BRIAM ZAMBRANO.
LOGO CPU. COMPANY LOGO DEFINICIÓNHISTORIA CPU DE TRANSISTORE S Y DE CIRCUITOS INTEGRADOS DISCRETOS MICROPROCES ADORES OPERACIÓN DEL CPU.
Mónica Quintana Pineda
ALMACENAMIENTO DE DATOS. Son componentes que leen o escriben datos en medios o soportes de almacenamiento, y juntos conforman lamemoria o almacenamiento.
Principio unidad 1.
     Jerarquía de memoria.
E.A.P. “INGENIERÍA DE SISTEMAS” UNIVERSIDAD PERUANA UNION.
ARQUITECTURAS DE LOS SERVIDORES El computador tiene 2 aspectos para entender su funcionamiento al nivel de programación: Almacenamiento Procesamiento Para.
I.- COMPONENTES BÁSICOS DE UNA MICROCOMPUTADORA
Programación de Sistemas
Tema : Selección del tipo de Computadora (Hardware)
Introducción a la computación 1.1Arquitectura de la computadora 1.2Definición de Lenguaje 1.3Tipos de lenguajes: natural, artificial, computacional 1.4Historia.
CAPITULO V Arquitectura de Von Neumann
ORIGEN: La Memoria RAM se descubre hace 65 años en un laboratorio de Manchester, Inglaterra. Es ahí donde tres científicos Frederic Williams, Tom Kilburn.
Arquitectura de PCs Arquitectura básica del PC. Introducción El PC es el resultado de una especificación técnica de IBM El hardware se organiza de forma.
Transcripción de la presentación:

Estudio de las técnicas de diseño e implementación de emuladores Victor Moya del Barrio Proyecto de Fin de Carrera FIB UPC 2001

Objetivos Realizar un estudio de las técnicas usadas para implementar emuladores de computadoras lúdicas (vídeoconsolas, máquinas arcade, microcomputadores). Implementar ejemplos prácticos de estas técnicas.

Introducción (1) Introducción del concepto de emulador. Introducción a la estructura de un emulador. Emulación de la CPU: –Emuladores Intérpretes. –Traducción Binarios. Emulación de la memoria. Emulación del tiempo.

Introducción (2) Emulación de las interrupciones y excepciones. Emulación del hardware gráfico. Emulación del hardware de sonido. Introducción de otros conceptos relacionados con la emulación. Presentación de las maquinas emuladas. –Master System : MAS. –Space Invaders: SI2001

¿Qué es un emulador? Emulador = programa software que intenta reproducir el funcionamiento de una computadora (origen) en otra computadora (destino). MÁQUINA ORIGEN MÁQUINA DESTINO Reproducir Convertir Traducir

Nuestra máquina origen (1) Vídeo consolas: computadoras de pequeña o mediana potencia con preferencia en el aspecto gráfico y de sonido. Máquinas arcade: versiones más potentes y caras de la vídeo consolas, son las máquinas que pueden encontrarse en los salones recreativos. Microcomputadores o ordenadores caseros.

Nuestra máquina origen (2) Procesadores desde los 8-bit hasta los 32-bit (las más modernas). Potencia mediana o bajas. Los datos se almacenan en cartuchos con ROMs (CD-ROM en las modernas). Gran importancia del hardware gráfico y de sonido.

Nuestra máquina origen (3) Ejemplos: –Videoconsolas: Sega Master System (8-bit), Sega Genesis, Super Nintendo (16-bits). –Arcade systems: NeoGeo, CPS1, CPS2 (16- bit), Naomi (32-bits). –Videoconsolas modernas:Play Station (32- bits), DreamCast (32-bits). –Ordenadores: Spectrum, MSX, Amiga, Atari ST.

La máquina destino (1) Normalmente un PC o sistema similar. Tiene que ser mas potente que la máquina emulada (mantener la velocidad real). Unas 10 veces como mínimo. Últimamente también se implementan emuladores para las consolas (mayor potencia).

Máquina destino (2) Características: –CPU potente. –Gran cantidad de memoria. –Gran cantidad de almacenamiento secundario. –Sistemas gráficos y de sonidos simples (excepto modernas tarjetas 3D).

Estructura de un emulador Los componentes emulados trabajan en paralelo en el sistema original. Algoritmo secuencial. Solución: entrelazar la ejecución de los diferentes componentes.

Algoritmo básico while (!end) { emularCPU(); emularGraficos(); emularSonido(); controlTiempo(); }

Emulación de la CPU (1) Dos formas de implementarla: Emulador intérprete: fetch-decode-execute- loop. Fácil de implementar. Emulación relativamente lenta. Solución: threaded code interpreters, implementarlo en ensamblador.

Emulación de la CPU (2) Traducción binaria: convertir el código de la CPU origen a código de la CPU destino. Difícil de implementar. Emulación muy rápida. Dos tipos: estática (traducir binarios) y dinámica (en tiempo de ejecución).

Emuladores de CPU Algoritmo básico: fetch – decode- execute Fetch: leer el código de operación (opcode). Tamaño fijo o tamaño variable de opcode. Decode: identificar la instrucción y sus operandos. Switch-case. Jump Tables. Execute: emulación de la instrucción.

Instrucción Esquema básico de la ejecución una instrucción: obtenerOperandos() realizarOperacion() guardarResultado() actualizarCiclosEjecutados()

Threaded code interpreters Overhead de un intérprete: cada instrucción se decodifica tantas veces como se ejecuta (costoso). Solución: guardar el resultado de la decodificación (dirección de la rutina que emula la instrucción + operandos). Threaded Code: Lista/Vector de direcciones de código a ejecutar.

Threaded code PC Función Lista de funciones a ejecutar Se ejecuta código utilizando un índice a una tabla de funciones (instrucciones de la CPU origen decodificadas).

Ensamblador Codificar las instrucciones o todo el emulador en ensamblador para: 1)Aprovechar mejor las capacidades de la CPU destino (flags). 2)Implementar más eficientemente el bucle principal (fetch-decode). Se puede poner inlined al final de la instrucción.

Traducción Binaria Dos métodos: –Traducción Binaria Estática. –Traducción Binaria Dinámica.

Traducción Estática (1) Leer el código del binario fuente y convertirlo en código para la CPU destino. Generar un nuevo binario. Semejante a un compilador: análisis léxico, sintáctico, semántico, traducción a una IR, optimización y generación de código. El traductor sustituye las fases de análisis por la decodificación de instrucciones.

Traducción Estática (2) Dos componentes básicos: –Traductor: genera el nuevo binario. Puede usar información de profiling. –Run-Time: soporte al código traducido. Intérprete para el código no traducido.

Traducción Dinámica (1) Traducir sólo el código que se ejecuta o se va a ejecutar. Dos alternativas: –Usar un intérprete para recoger información (bloques básicos, frecuencia de ejecución). –Traducir todo el código que se ejecuta. Se traduce por bloques.

Traducción Dinámica (2) Componentes: –Intérprete (opcional). Primera ejecución y recopilar información. –Traductor (usando IR o no). Traducir a la IR o a código destino directamente. –Cache de traducciones. Guardar los bloques traducidos.

Traducción Binaria. Diferencias. Traducción estática produce mejor código (más tiempo para realizar optimizaciones). Traducción estática requiere un mecanismo para ejecutar código no traducido. Traducción dinámica permite realizar optimizaciones dinámicas. Traducción dinámica es más flexible.

Emulación de la memoria. No toda la memoria puede ser accedida linealmente. Zonas especiales: bancos, registros de IO. MMU. Lo más básico: usar una lista de regiones con punteros a buffers o a funciones que realicen el acceso.

Endianismo Se tiene que tener en cuenta el endianismo de la CPU origen y destino. Little/Big endian. Realizar la conversión en cada acceso: costoso. Convertir toda la memoria.

Endianismo Se tiene que tener en cuenta el endianismo de la CPU origen y destino. Little/Big endian. Realizar la conversión en cada acceso: costoso. Convertir toda la memoria. 0x78 0x56 0x34 0x12 0x12 0x34 0x56 0x78 Palabra a almacenar: 0x Palabra almacenada en formato Big-Endian Palabra almacenada en formato Little- Endian

Endianismo Se tiene que tener en cuenta el endianismo de la CPU origen y destino. Little/Big endian. Realizar la conversión en cada acceso: costoso. Convertir toda la memoria.

Ejemplo endianismo 0x78 0x56 0x34 0x12 0x12 0x34 0x56 0x78 Palabra a almacenar: 0x Palabra almacenada en formato Big-Endian Palabra almacenada en formato Little-Endian

Emulación del tiempo. Tiempo interno: se usa la CPU. Contar el número de ciclos (instrucciones) emulados. Usar el número de ciclos emulados para iniciar diferentes eventos (interrupciones, emulación del sonido, gráficos). Tiempo externo: sensación del usuario. Ajustar velocidad del emulador a velocidad real.

Interrupciones y Excepciones Interrupciones: generadas por los dispositivos. Se generan fuera de la emulación de la CPU en respuesta a ciertos eventos. Excepciones: las tiene que emular el emulador de CPU. Errores y eventos internos. MMU.

Emulación de los gráficos Es quizás el componente más importante del emulador. Básicamente dos sistemas distintos: –Basados en framebuffers: ordenadores y consolas modernas. –Basados en tiles/sprites (sistema parecido al modo texto): consolas y arcades previos a la era 3D.

Sistemas basados en tiles El hardware gráfico intenta reducir el uso de CPU, memoria y ancho de banda. Reusar. Diferentes ‘layers’ que se combinan usando prioridades. Tile: rectángulo gráfico que cubre un layer, posiciones fijas, background (fondo). Sprite: gráfico móvil rectangular. Sprite layer. Hardware dibuja línea a línea.

Layers layers pantalla Prioridades Ordenación

Ejemplo de sistema basado en Tiles Background (tiles)Sprites

Ejemplo de sistema basado en Sprites/Tiles Los dos layers (tiles y sprites) se combinan para formar la imagen

Sistemas basados en framebuffers La imagen en pantalla se representa como una matriz rectangular de puntos. Cada punto tiene un valor de color. Paletas. Buffer primario y secundario. Blit: copiar datos al framebuffer.

Framebuffer gráfico blit framebuffer

Emulación del Sonido Este componente suele considerarse como opcional. Dos tipos de generación de sonido: –Basada en waves (ondas): sonido FM y PSG (Programmable Sound Generators). Consolas de 8 y 16 bits. –Basada en samples (muestreo del sonido): ordenadores, consolas modernas. CD musical.

PSGs y sonido FM PSG: ondas básicas (sinusoidales, cuadradas), genera notas simples. Pocos canales. Número de efectos reducido. FM: ondas complejas (harmónicos). Se combinan varias ondas para formar el sonido. Envelope. Gran número de canales. Basada en instrumentos. Diversos efectos y filtros.

Samples El sonido está almacenado como muestras digitales. El hardware lee los samples de un buffer (bits por sample, canales y frecuencia) y lo reproduce. Timers, interrupciones. Diversos niveles de complejidad. Mezcla por hardware o no, filtros, efectos.

Otros aspectos a tener en cuenta Información de la máquina a emular: ¿difícil de conseguir?. Ingeniería inversa. Depuración y corrección de errores: complejo. Aspectos legales. Emuladores comerciales.

Conclusiones El estudio consigue mostrar las técnicas necesarias para la emulación de una computadora. La emulación de sistemas de juego antiguos tiene éxito. Diferentes aplicaciones comerciales: portabilidad, competencia entre fabricantes de CPU, etc.

Emuladores Implementados (1) Estos emuladores pueden encontrarse en el CD adjunto a la memoria. Emulador de Sega Master System –Vídeo consola fabricada a partir de 1982 por Sega. Procesador Z80 a 3.57 MHz (8bits). Hardware gráfico basado en tiles (background layer y sprite layer). Sonido: PSG y FM (Model 3)

Emuladores Implementados (2) Space Invaders –Maquina arcade del Procesador Intel 8080 a 2 Mhz. Sistema gráfico basado en un framebuffer monocromático. Sonido generado por circuitos discretos (fijos).

Z80, VDP, PSG Vídeo Consolas NES Master System SNESGenesis Turbo Graph N64 Saturn PSX Dreamcast GameCube PS2 XBOX MegaCD/32X M68000, VDP, FM 2xM68000, SH2, VDP + FX, FM, PCM MIPS R3000, GTE MIPS R4300, RCP, RDRAM EE (MIPS, VPU1, VPU2), RDRAM Gekko (PPC 750), Flipper (ATI) PIII 733, NVIDIA NV17, UMA 6502, PSG, VDP, ROMs SH4, ARM7, NEC VR2 2xSH2, M68000, VDP, 3D, DSP 685c2, VDP + FX, DSP

Arcade First Generation (Discrete Circuits) First 8-bit Generation. Discrete Logic. (8080, 8085, Z80) Second 8-bit Generation. VDPs. PSG/FM. (Z80, 6502, 6809) 16-bit Generation. VDP. FM and DSPs. (M68000) First 32 bit. 3D Graphics. DSPs. (Nec V60, Nec V70, SH2, PowerPC 603, Intel I960) Last generation. 3D Graphics. DSPs. (SH4, MIPS, EE)

Dreamcast Ultima videoconsola de Sega. Main CPU: Hitachi SH4 200 MHz (360 MIPs, 1,4 GFLOPS). 5-Stage, 2-way superscalar. L1 8KB Instr. 16 KB Data. 32-bit Integer Unit. 64-bit FP Unit. 800 MB/s. 0.25um four layer CMOS. Sound CPU: Yamaha ARM7 45 MHz. 3D: 100 MHz Nec PowerVR2. Memory: SDRAM 100 MHz. 16 MB (main), 8 MB (video), 2 MB (audio).

Play Station 2 Segunda videoconsola de Sony. Emotion Engine: MIPS R5900 (MIPS III, MIPS IV subset bits SIMD 32x128bit) 2-issue, 2 64-bit IU, 1 FPU, 6 stages. L1: 16KB/8KB. VU0 (VLIW, Vector Unit, 4 FMACs, 1 FDIV, 4KB/4KB), VPU1 (VLIW, Vector Unit + Scalar FP, 5 FMACs, 2 FDIV, 16KB/16KB). 300 MHz, 6,2 GFLOPS. Memoria: 32 MB DRDRAM, 3,2 GB/s. I/O: MIPS R MHz (PSX Integrada).

Game Cube Nintendo last one. Gekko: IBM PowerPC bits integer + 64 bits (2x32) FP. 485 MHz 0.18 copper CMOS. L1: 32KB/32KB (8-way). L2: 256 KB (2-way). Integrado: ATI Flipper (162 MHz) + DSP (81 Mhz, 16 bit) + Embedded Memory. Memoria: 24MB ‘1T SRAM’, 16 MB 81 MHz SDRAM. Video: 2MB Frame Buffer + 1MB Texture Cache.

XBOX La amenaza Microsoft? Intel Pentium III (Celeron). 733 MHz. 32- bit Intetger y FP. L1: 32 KB/32KB. L2: 128 KB. 133 MHz bus. Chipset: NorthBridge + nVidia NV2A + Sound DSPs + Ethernet. Memoria: UMA, 64 MB, 200 MHz DDR- SDRAM (6,4 GB/s).