scieee AI-readable full text Open interactive document viewer

Arquitectura Epiphany III. Una primera toma de contacto

Gálvez-Rojas, Sergio,Dorado-Pérez, Gabriel,Hernández, Pilar,Esteban-Risueño, Francisco

Abstract

En este trabajo se aborda el análisis de las características hardware, rendimiento y eficiencia del chip E16G301 incorporado en la placa Parallella Board. Este chip es un procesador que integra 16 núcleos RISC cuya memoria se encuentra mapeada en la del ordenador host que la aloja. Actualmente su programación resulta demasiado artesanal y limitada, lo que complica los desarrollos y fuerza a invertir un gran esfuerzo para obtener un rendimiento razonable. A pesar de ello, se demuestra que desarrollo simplificado de un algoritmo de cálculo intensivo (el algoritmo Smith-Waterman, usado en Bioinformática) permite obtener un rendimiento por núcleo bastante aceptable. Para ilustrar este aspecto, se proporciona una comparativa con la misma implementación en otras dos plataformas many-core (Tile64 e Intel Xeon-Phi) que también evidencia una gran eficiencia energética.

Full text

S. Gálvez, F.J. Esteban, P. Hernández, G. Dorado Arquitectura hardware Compilación, Ejecución y Mapa de memoria Entorno de desarrollo Caso práctico Diseño Implementación Resultados Conclusiones Adapteva Board 1GiB SDRAM ARM A9 dual-core (667 MHz) + FPGA (28K celdas lógicas) E16G301 (600MHz) Ethernet Gigabit 5 V DC μUSB (OTG) μSD μHDMI μUSB E16G301 – Parallella board Número de núcleos 16 Frecuencia de CPU 600 MHz (modelo SBCU) Tecnología de integración 65 nm Arquitectura de los núcleos RISC (32 bits) Memoria cache 32 KiB de memoria local por núcleo Soporte a la vectorización Sin soporte Soporte de coma flotante Simple precisión RAM en la placa host 1 GiB DDR3L Consumo en vatios 0 ,7 vatios (~2 vatios la tarjeta) Conexión a PC Ethernet 1 Gbs Entorno de desarrollo No disponible Disipador térmico Caja Ventilador Arranque en SD Alimentación Teclado, ratón y monitor Compilación cruzada Arranque en host Zynq Sin E/S en E16G301 Desarrollo sin soporte Compilación ARM y Epiphany NFS Ejecución y transferencia Ejecución 1 2 3 Los 32 KiB de cada core están mapeados en memoria del host Así carga el host los programas en el E16G301 Memoria mapeada Prog. Lógica 1 GiB DRAM Core 2 Core 0 0x0010_0000 0x3FFF_FFFF 0x8000_0000 0xBFFF_FFFF 32 KiB 1 MiB 32 KiB 1 MiB Core 1 32 KiB 1 MiB etc. Los 32 KiB se dividen en bloques de 8KiB Hay 32 MiB de memoria compartida como medio de comunicación host/Epiphany 1 GiB DRAM 0x0010_0000 0x3FFF_FFFF Core n 8 KiB 8 KiB 8 KiB 8 KiB Stack 16 MiB Heap 16 MiB 0x3E00_0000 0x3F00_0000 Sin sincronización host-Epiphany API básica inter-core Mutex Barreras Necesidad de comunicación vía DMA Problemas con volatile Uso de memoria dinámica desaconsejado Gestión a realizar por el desarrollador con arrays No hay IDE 1,00 10,00 100,00 1000,00 Q6GZW9 (75 aa) P14942 (222 aa) P42357 (657 aa) P07756 (1500 aa) P19096 (2502 aa) Xeon-Phi Tile64 E16G301 i7 4820K Consumo Vectorización Capacidad Memoria Soporte de coma flotante Rendimiento Facilidad de desarrollo Soporte y Comunidad ¿Futuro?