Views
2 years ago

Procesamiento Intensivo del ECG con procesadores IA-32 e IA-64

Procesamiento Intensivo del ECG con procesadores IA-32 e IA-64

Procesamiento Intensivo del ECG con procesadores IA-32 e

XV CONGRESO ARGENTINO DE BIOINGENIERIA: COD-PAIS_NRO 1 Procesamiento Intensivo del ECG con procesadores IA-32 e IA-64 Alejandro Furfaro, Mariano Llamedo Soria, Julián S. Bruno, Nahuel Gonzalez, Marcelo R. Risk Facultad Regional Buenos Aires, Universidad Tecnológica Nacional, afurfaro@electron.frba.utn.edu.ar Resumen— Los nuevos algoritmos de procesamiento de registros prolongados de ECG buscan la minimización de la intervención humana. Para lograr esto es necesario implementar algoritmos muy complejos y eficientes, los cuales requieren ser ejecutados en plataformas de alto rendimiento, para de esta forma se puedan obtener los resultados en plazos lo más breves posibles. El objetivo principal del presente trabajo fue estimar el rendimiento de sistemas basados en procesadores IA-32 e IA-64, en el procesamiento intensivo de señales de ECG. Un total de diez registros Holter de veinticuatro horas cada uno, fueron procesados, utilizando filtros digitales y Transformada Rápida de Fourier; los programas fuente fueron compilados, combinando dos tipos de variables (double y float), utilizando compiladores gcc (GNU C Complier de Linux) e icc (Intel C Compiler), con y sin opción de optimización. Se emplearon en el presente estudio, los procesadores Itanium 2, miembro de la arquitectura IA-64, y Xeon, miembro de la arquitectura IA- 32, como exponentes de los modelos EPIC y superescalar respectivamente. Mediante el procesamiento intensivo de datos de ECG se determinaron las principales diferencias entre ambas arquitecturas, y las ventajas de procesamiento al utilizar el procesador Itanium 2, especialmente tratando datos double. Además se verificó la mayor dependencia del procesador Itanium 2 respecto de la eficiencia del compilador, de acuerdo con los principios básicos del modelo EPIC en el que se basa la arquitectura de este procesador. Palabras clave— ECG, IA-64, IA-32, Xeon, Itanium, EPIC. I. INTRODUCCIÓN l procesamiento del electrocardiograma (ECG) es una E herramienta fundamental para el diagnóstico de las enfermedades cardiovasculares. El ECG se puede registrar en períodos cortos o largos, dependiendo de la aplicación, es decir con registros cortos se estudian generalmente respuestas evocadas a estímulos, y por otro lado con registros largos se estudian respuestas espontáneas. Los estudios Holter [1] utilizan registros prolongados de 24 horas, generalmente de 2 o 3 canales. La aplicación de los estudios va desde la determinación de arritmias, la variabilidad de la frecuencia cardiaca [2], y el estudio del desnivel del segmento ST para la determinación de isquemias [3]. El desafío de los nuevos algoritmos de procesamiento de registros prolongados de ECG es la minimización de la intervención humana, tanto por los errores que pueden incurrir los mismos como por el nivel de experiencia necesaria. Para lograr esto es necesario implementar algoritmos muy complejos y eficientes, los cuales requieren ser ejecutados en plataformas de alto rendimiento, para de esta forma se puedan obtener los resultados en plazos lo más breves posibles [4]. Los procesadores modernos de alta gama han adoptado arquitecturas tendientes a ejecutar instrucciones en forma paralela, disponiendo diferentes Unidades de Ejecución, basadas cada una en una subdivisión de las microoperaciones necesarias para ejecutar una instrucción del procesador. Estas Unidades de Ejecución generalmente se especializan en diferentes tipos de instrucción. El modelo dominante durante los años 1990 ha sido el modelo Superescalar, siendo la arquitectura IA-32 uno de los modelos más difundidos. Cada Unidad de ejecución, se compone de circuitos lógicos o etapas capaces de ejecutar las diferentes fases o micro operaciones básicas necesarias para completar una instrucción: Búsqueda del código de operación (Fetch), decodificación de la instrucción, control de las reglas de protección, ejecución, y despacho del resultado (es decir, su almacenamiento en el operando destino), por citar las mas comunes. La disposición de los diferentes circuitos lógicos que ejecutan las micro-operaciones básicas de una instrucción se denomina pipeline, y también trabajan en paralelo ejecutando cada etapa una fase o micro operación de una instrucción diferente, como se indica en la Figura 1. Cloc k Fa se d e Búsq ueda Fa se d e Dec odifica ción Fase de Búsqueda de Operando Fa se d e Ej e c uc i ón Fase de Despac ho de l resultado 1 2 3 4 5 6 7 Busq. Inst. 1 Busq. Inst. 2 Busq. Inst. 3 Busq. Op. 1 Busq. Inst. 4 Busq. Op. 2 Busq. Inst. 5 Dec. Dec. Dec. Dec. Dec. Dec. Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 Busq. Op. 3 Busq. Inst. 6 Busq. Op. 4 Busq. Inst. 7 Busq. Op. 5 Ejec. Ejec. Ejec. Ejec. Inst. 1 Inst. 2 Inst. 3 Inst. 4 Fig. 1: Representación de fases de un pipeline Escrib. Escrib. Escrib. Res. 1 Res. 2 Res. 3 De este modo cada pipeline en régimen puede entregar un resultado por ciclo de clock. Esta situación se representa en la Figura 1 en la que podemos ver que a partir del 5 to pulso de clock se arriba a dicha situación de régimen. En los modelos superescalares IA-32 se incluyen varios pipelines diferentes cada uno de los cuales aplica esta política. Por otra parte se diseñan de modo tal de repartir la carga de trabajo de diferentes tipos de instrucciones asegurando de este modo la posibilidad de ejecución paralela de diferentes tipos de instrucciones, como por ejemplo, transferencias hacia o desde memoria, saltos y operaciones en punto flotante [5].