PAC- Performance-centered Adaptive Curriculum for Employment Needs Programa ERASMUS: Acción Multilateral - 517742-LLP-1-2011-1-BG-ERASMUS-ECUE MASTER DEGREE: Industrial Systems Engineering ASIGNATURA ISE3: Electrónica para sistemas industriales MÓDULO 4: Circuitos básicos VLSI en las arquitecturas de computadoras TAREA 4-2: ARQUITECTURAS DE MICROPROCESADORES Electrónica para Sistemas Industriales Contenido TAREA 4-2: ARQUITECTURAS DE MICROPROCESADORES ........................ 3 1. INTRODUCCIÓN Y OBJETIVOS ....................................................... 3 2. CONTENIDO ................................................................................ 3 2.1 Introducción general a las arquitecturas CISC y RISC ................... 3 2.2 El paralelismo en microprocesadores ......................................... 8 2.3 Arquitectura VLIW ................................................................. 12 2.4 Arquitectura EPIC .................................................................. 15 2.5 Microprocesadores DSP ........................................................... 17 2.6 Clasificación de computadores según su arquitectura. Taxonomía de Flynn .......................................................................................... 20 3. CONCLUSIONES .......................................................................... 25 4. BIBLIOGRAFÍA Y/O REFERENCIAS ................................................. 26 5. ENLACES DE INTERÉS ................................................................. 26 Índice de figuras Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura 1 RISC vs CIS .......................................................................... 4 2 Ejemplo de organización superescalar ..................................... 11 3 Diagrama Microprocesador superescalar y segmentado ............. 11 4 Situación en la velocidad del MP ............................................. 12 5 MP VLIW vs MP superescalares............................................... 13 6 CPU funcionando con VLIW .................................................... 14 7 Comparación entre VLIW y CPU superescalares ........................ 15 8 Filosofía del diseño EPIC ........................................................ 16 9 Sistema de adquisición basado en un DSP ............................... 17 10 Arquitectura de un DSP ....................................................... 19 11 Estructura básica de los ordenadores SISD ............................ 20 12 Arquitectura de los computadores MISD ................................ 21 13 Arquitectura de los computadores SIMD ................................ 23 14 Arquitectura de los computadores MIMD ................................ 24 ARQUITECTURAS DE MICROPROCESADORES 2 Electrónica para Sistemas Industriales TAREA 4-2: ARQUITECTURAS DE MICROPROCESADORES 1. INTRODUCCIÓN Y OBJETIVOS La evolución en el campo de los microprocesadores es constante, su arquitectura ha ido evolucionando para ser más rápidos y eficientes en las tareas que realizan así como en su efectividad. Otro punto a tener en cuenta es su coste dentro de la tarea que se desee realizar. Durante las siguientes páginas se describen que arquitecturas que se pueden encontrar en el mercado y cuáles son más ventajosas para la tarea que se quiera llevar a cabo. También se analizan y comparan algunas de ellas y se describe brevemente el funcionamiento interno de estos microprocesadores y que les hacen ventajosos frente a otras opciones. 2. CONTENIDO 2.1 Introducción general a las arquitecturas CISC y RISC Una de las primeras decisiones a la hora de diseñar un microprocesador es decidir cuál será su juego de instrucciones. La decisión tiene dos razones; primero, el juego de instrucciones decide el diseño físico del conjunto; segundo, cualquier operación que deba ejecutarse en el microprocesador deberá poder ser descrita en términos de un lenguaje de estas instrucciones. Frente a esta cuestión caben dos filosofías de diseño; máquinas denominadas CISC y máquinas denominadas RISC. Cuando hablamos de microprocesadores CISC, computadoras con un conjunto de instrucciones complejo, (del inglés complex instruction set computer), y procesadores RISC, computadoras con un conjunto de instrucciones reducido, (del inglés reduced instruction set computer), se piensa que los atributos complejo y reducido describen las diferencias entre los dos modelos de arquitectura para microprocesadores. Esto es cierto solo de forma superficial, pues se requiere de muchas otras características esenciales para definir los RISC y los CISC. ARQUITECTURAS DE MICROPROCESADORES 3 Electrónica para Sistemas Industriales Hasta hace solo algunos años, la división era tajante: RISC se utilizaba para entornos de red, mientras que CISC se aplicaba en ordenadores domésticos. Pero en la actualidad se alzan voces que afirman que CISC está agotando sus posibilidades, mientras otras defienden fervientemente que CISC ya ha alcanzado a RISC, adoptando algunas de sus principales características. Figura 1 RISC vs CIS ARQUITECTURA RISC En la arquitectura computacional, RISC (del inglés reduced instruction set computer) es un tipo de microprocesador con las siguientes características fundamentales: • • Instrucciones de tamaño fijo y presentadas en un reducido número de formatos. Sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos. El objetivo de diseñar máquinas con esta arquitectura es posibilitar la segmentación y el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. ARQUITECTURAS DE MICROPROCESADORES 4 Electrónica para Sistemas Industriales Las máquinas RISC protagonizan la tendencia actual de construcción de microprocesadores. PowerPC, DEC Alpha, MIPS, ARM, SPARC... son ejemplos de algunos de ellos. RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse. El tipo de procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución. La idea fue inspirada por el hecho de que muchas de las características que eran incluidas en los diseños tradicionales de CPU para aumentar la velocidad estaban siendo ignoradas por los programas que eran ejecutados en ellas. Además, la velocidad del procesador en relación con la memoria de la computadora que accedía era cada vez más alta. Esto con llevó la aparición de numerosas técnicas para reducir el procesamiento dentro del CPU, así como de reducir el número total de accesos a memoria. CARACTERÍSTICAS RISC En pocas dado, un chip lógica principal. así pueden, por • • • • • • palabras esto significa que para cualquier nivel de desempeño RISC típicamente tendrá menos transistores dedicados a la Esto permite a los diseñadores una flexibilidad considerable; ejemplo: Incrementar el tamaño del conjunto de registros. Mayor velocidad en la ejecución de instrucciones. Implementar medidas para aumentar el paralelismo interno. Añadir cachés enormes. Añadir otras funcionalidades, como E/S y relojes para minicontroladores. Construir los chips en líneas de producción antiguas que de otra manera no serían utilizables. ARQUITECTURAS DE MICROPROCESADORES 5 Electrónica para Sistemas Industriales • No ampliar las funcionalidades, y por lo tanto ofrecer el chip para aplicaciones de bajo consumo de energía o de tamaño limitado. Las características que generalmente son encontradas en los diseños RISC son: • • • • • Codificación uniforme de instrucciones, lo que permite una de codificación más rápida. Un conjunto de registros homogéneo, permitiendo que cualquier registro sea utilizado en cualquier contexto y así simplificar el diseño del compilador. Modos de direccionamiento simple con modos más complejos reemplazados por secuencias de instrucciones aritméticas simples. Los tipos de datos soportados en el hardware no se encuentran en una máquina RISC. Los diseños RISC también prefieren utilizar como característica un modelo de memoria Harvard, donde los conjuntos de instrucciones y los conjuntos de datos están conceptualmente separados. RISC MODERNO Los diseños RISC han llevado a un gran número arquitecturas al éxito, algunas de las más grandes: • • • • • • • de plataformas y La línea MIPS Technologies Inc., que se encontraba en la mayoría de las computadoras de Silicon Graphics hasta 2006, y estuvo en las consolas ya descatalogadas Nintendo 64, PlayStation y PlayStation 2. Actualmente se utiliza en la PlayStation Portable y algunos routers. La serie IBM POWER, utilizado principalmente por IBM en Servidores y superordenadores. La versión PowerPC de Motorola e IBM (una versión de la serie IBM POWER) utilizada en los ordenadores AmigaOne, Apple Macintosh como el iMac, eMac, Power Mac y posteriores (hasta 2006). Actualmente se utiliza en muchos sistemas empotrados en automóviles, routers, etc, así como en muchas consolas de videojuegos, como la Playstation 3, Xbox 360 y Wii. El procesador SPARC y UltraSPARC de Sun Microsystems y Fujitsu, que se encuentra en sus últimos modelos de servidores (y hasta 2008 también en estaciones de trabajo). El PA-RISC y el HP/PA de Hewlett-Packard, ya descatalogados. El DEC Alpha en servidores HP AlphaServer y estaciones de trabajo AlphaStation, ya descatalogados. El ARM – El paso de hardware de instrucciones x86 en operaciones RISC llega a ser significativo en el área y la energía para dispositivos móviles e integrados. Por lo tanto, los procesadores ARM dominan en PALM, Nintendo DS, Game Boy Advance y en múltiples PDAs, Apple iPods, Apple iPhone, iPod Touch (Samsung ARM1176JZF, ARM Cortex-A8, Apple ARQUITECTURAS DE MICROPROCESADORES 6 Electrónica para Sistemas Industriales • • • A4), Apple iPad (Apple A4 ARM -based SoC), videoconsolas como Nintendo DS (ARM7TDMI, ARM946E-S), Nintendo Game Boy Advance (ARM7TDMI). El Atmel AVR usado en gran variedad de productos, desde mandos de la Xbox a los coches de la empresa BMW. La plataforma SuperH de Hitachi, originalmente usada para las consolas Sega Super 32X, Saturn y Dreamcast, ahora forman parte de el corazón de muchos equipos electrónicos para el consumo. SuperH es la plataforma base del grupo Mitsubishi - Hitachi. Estos dos grupos, unidos en 2002, dejaron aparte la propia arquitectura RISC de Mitsubishi, el M32R. Los procesadores XAP usados en muchos chips wireless de poco consumo (Bluetooth, wifi) de CSR. VENTAJAS DE RISC Entre las ventajas de RISC tenemos las siguientes: • • • La CPU trabaja más rápido al utilizar menos ciclos de reloj para ejecutar instrucciones. Utiliza un sistema de direcciones no destructivas en RAM. Eso significa que a diferencia de CISC, RISC conserva después de realizar sus operaciones en memoria los dos operandos y su resultado, reduciendo la ejecución de nuevas operaciones. Cada instrucción puede ser ejecutada en un solo ciclo del CPU ARQUITECTURA CISC La arquitectura computacional, CISC (complex instruction set computer) es un modelo de arquitectura de computadora. Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos, en contraposición a la arquitectura RISC. ARQUITECTURAS DE MICROPROCESADORES 7 Electrónica para Sistemas Industriales Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que, en la actualidad, la mayoría de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples del tipo RISC, llamadas generalmente microinstrucciones. Los CISC pertenecen a la primera corriente de construcción de procesadores, antes del desarrollo de los RISC. Ejemplos de ellos son: Motorola 68000, Zilog Z80 y toda la familia Intel x86 usada en la mayoría de las computadoras personales actuales. Para realizar una sola instrucción un chip CISC requiere de cuatro a diez ciclos de reloj. Entre las ventajas de CISC destacan las siguientes: • • • • • Reduce la dificultad de crear compiladores. Permite reducir el costo total del sistema. Reduce los costos de creación de sftware. Mejora la compactación de código. Facilita la depuración de errores. Ejemplo de microprocesadores basados en la tecnología CISC: • • • • • • Intel 8086, 8088, 80286, 80386, 80486. Motorola 68000, 68010, 68020, 68030, 6840. MIPS, Millions Instruction Per Second. PA-RISC, Hewlett Packard. SPARC, Scalable Processor Architecture, Sun Microsystems. POWER PC, Apple, Motorola e IBM. 2.2 El paralelismo en microprocesadores Una CPU definida como subescalar, opera y ejecuta una sola instrucción con una o dos piezas de datos a la vez. Este proceso da lugar a una ineficacia inherente en CPUs subescalares. Puesto que solamente una instrucción es ejecutada a la vez, todo el CPU debe esperar que esa instrucción se complete antes de proceder a la siguiente instrucción. Como resultado, el CPU subescalar queda "paralizado" en instrucciones que toman más de un ciclo de reloj para completar su ejecución. Incluso la adición de una segunda unidad de ejecución (ver abajo) no mejora mucho el desempeño. En lugar de un camino quedando congelado, ahora dos caminos se paralizan y aumenta el número de transistores no usados. Este diseño, en donde los recursos de ejecución del CPU pueden operar con solamente una instrucción a la vez, solo puede, posiblemente, alcanzar el ARQUITECTURAS DE MICROPROCESADORES 8 Electrónica para Sistemas Industriales desempeño escalar (una instrucción por ciclo de reloj). Sin embargo, el desempeño casi siempre es subescalar (menos de una instrucción por ciclo). Las tentativas de alcanzar un desempeño escalar y mejor, han resultado en una variedad de metodologías de diseño que hacen comportarse al CPU menos linealmente y más en paralelo. Cuando se refiere al paralelismo en los CPU, generalmente son usados dos términos para clasificar estas técnicas de diseño. El Paralelismo a nivel de instrucción, en inglés Instruction Level Parallelism (ILP), busca aumentar la tasa en la cual las instrucciones son ejecutadas dentro de un CPU, es decir, aumentar la utilización de los recursos de ejecución en la pastilla El Paralelismo a nivel de hilo de ejecución, en inglés thread level parallelism (TLP), que se propone incrementar el número de hilos (efectivamente programas individuales) que un CPU pueda ejecutar simultáneamente. Cada metodología se diferencia tanto en las maneras en las que están implementadas, como en la efectividad relativa que producen en el aumento del desempeño de la CPU para una aplicación. ARQUITECTURAS DE MICROPROCESADORES 9 Electrónica para Sistemas Industriales A su vez el paralelismo de los computadores puede ser interno o explícito. El paralelismo interno, que es el que nos va a ocupar, queda oculto a la arquitectura del computador. Es un paralelismo al nivel de estructura o de construcción del computador, que se utiliza para aumentar su velocidad, pero sin modificar su funcionamiento básico. Aplicado a la arquitectura Von Neumann, permite construir computadores más rápidos, pero que, al nivel de ejecución de instrucciones de máquinas, esto es, al nivel de usuario, siguen siendo serie. Las soluciones clásicas de este paralelismo son la segmentación o pipeline y la división funcional. La ventaja fundamental de esta solución es que no cambia el entorno de usuario, por lo que han sido profusamente explotadas en los grandes monoprocesadores y más reciente en los microprocesadores de la gama alta. Sus inconvenientes son la limitación en el incremento de velocidad alcanzable, puesto que se limita al paralelismo de grano fino que tienen los programas, y el elevado coste de ingeniería que implica el desarrollo de un procesador que explote estas soluciones. Podemos decir que los nuevos procesadores integrados, tanto RISC como CIS, utilizan hasta su máximo grado las técnicas de paralelismo interno, por lo que los espectaculares avances en las cifras de MIPS y MFLOPS de los últimos años han de tener un inevitable punto de inflexión. PROCESADORES SUPERESCALARES Se denomina arquitectura superescalar a aquella implementación capaz de ejecutar más de una instrucción por ciclo de reloj. Para ello se usan múltiples cauces, con lo que varias instrucciones pueden iniciar su ejecución de manera independiente. El término superescalar se emplea como contraposición a la arquitectura escalar, que solo es capaz de ejecutar una instrucción por ciclo de reloj. En la figura se representa un esquema de la organización superescalar. Se tienen múltiples unidades funcionales que admiten la ejecución en paralelo, y por separado, de varias instrucciones. Sin embargo, nótese que, en general, cada unidad funcional no tiene por qué admitir la ejecución de cualquier instrucción, hay dos unidades funcionales que pueden ejecutar instrucciones de operaciones con enteros, dos de instrucciones de operaciones con coma flotante, y una de instrucciones de transferencia con memoria (operaciones de carga y almacenamiento). Así, en este caso, pueden estar ejecutándose al mismo tiempo dos operaciones con enteros, dos operaciones con coma flotante y una operación de transferencia a memoria. El diseño superescalar es compatible con la segmentación. Esto es, como muestra la figura las unidades funcionales pueden realizarse como cauces segmentados. ARQUITECTURAS DE MICROPROCESADORES 10 Electrónica para Sistemas Industriales Figura 2 Ejemplo de organización superescalar El concepto de diseño superescalar apareció poco después que la arquitectura RISC. Si bien se puede realizar una implementación superescalar tanto de una arquitectura RISC como de una arquitectura CISC, la arquitectura de conjunto reducido de instrucciones de una máquina RISC se presta mejor a la utilización de técnicas superescalares. Lo esencial del diseño superescalar es su habilidad para ejecutar instrucciones de manera independiente en diferentes cauces. Un procesador superescalar es capaz de ejecutar más de una instrucción, solo si estas no presentan algún tipo de dependencia, como veremos más adelante. La inmensa mayoría de las CPUs desarrolladas desde 1998 son superescalares. En este tema se presenta una introducción al diseño superescalar con paralelismo implícito, examinando los diferentes tipos de dependencia de datos, políticas de emisión y otras cuestiones relacionadas con el diseño de la implementación superescalar. Figura 3 Diagrama Microprocesador superescalar y segmentado ARQUITECTURAS DE MICROPROCESADORES 11 Electrónica para Sistemas Industriales 2.3 Arquitectura VLIW La planificación de qué instrucciones van a ejecutarse en paralelo puede hacerse estática o dinámicamente (la hace el compilador o la hace el procesador). El modelo de planificación estática que vamos a ver es el de los procesadores VLIW (Very Long Instruction Word), y en la planificación dinámica vamos a abordar los procesadores superescalares. Figura 4 Situación en la velocidad del MP Como hemos visto anteriormente, una de las formas de aumentar las prestaciones de los procesadores segmentados consiste en utilizar varias unidades funcionales que puedan trabajar simultáneamente con instrucciones distintas. Esto, no obstante, no permite sobrepasar el límite máximo de una instrucción terminada por cada ciclo, dado que la última etapa del cauce (WB) solo puede procesar un instrucción por ciclo, como les ocurre a la etapas de extracción, decodificación y acceso a memoria. La idea que subyace en los procesadores superescalares y VLIW es la de conseguir que puedan procesarse simultáneamente varias instrucciones en todas las etapas, con lo que entonces sí podría superarse la tasa de una instrucción terminada por ciclo. ARQUITECTURAS DE MICROPROCESADORES 12 Electrónica para Sistemas Industriales El mayor o menor grado de paralelismo a nivel de instrucción o ILP (Instruction Level Paralelismo), es decir, la mayor o menor facilidad para encontrar en un programa instrucciones que puedan procesarse simultáneamente, depende de la frecuencia con la que aparecen dependencias de datos y de control. Por ejemplo, en el fragmento de programa de la izquierda, no hay ninguna dependencia de datos o de control entre ellas. Esto quiere decir que las tres instrucciones podrían ejecutarse simultáneamente. En cambio, en el grupo de instrucciones de la derecha hay dependencias de datos de tipo RAW, por lo que deben procesarse secuencialmente, incluso con ciertos retardos en su emisión, que permitan tener los operandos necesarios solo cuando estén disponibles. Así, podíamos afirmar que esta última secuencia de instrucciones tiene un grado de paralelismo igual a 1, ya que solo se pueden ejecutar las instrucciones de una en una, mientras que en la primera secuencia tiene un grado de paralelismo igual a 3. En cualquier caso, el aprovechamiento del grado de paralelismo que posea una secuencia de instrucciones depende de los recursos que tenga el procesador. A esta capacidad para procesar instrucciones en paralelo se le denomina paralelismo del procesador o MLP (Machine Level Paralelismo). Este paralelismo viene determinado por el número de instrucciones que pueden procesarse al mismo tiempo en cada una de las etapas del procesador, es decir, el número de instrucciones que pueden extraerse de memoria, decodificarse, ejecutarse y escribir sus resultados al mismo tiempo. Como vemos, el paralelismo a nivel de instrucción viene determinado por los riesgos de datos y de control, mientras que el paralelismo a nivel de máquina está limitado por los riesgos estructurales. Figura 5 MP VLIW vs MP superescalares ARQUITECTURAS DE MICROPROCESADORES 13 Electrónica para Sistemas Industriales Ya que se desea emitir varias instrucciones a ejecución de manera simultánea, aprovechando el grado de paralelismo de los programas, hay que ir formando paquetes o grupos de instrucciones que puedan ejecutarse de manera paralela, de tal manera que se vaya alimentando y emitiendo un paquete tras otro, y las instrucciones de cada paquete se envíen a la unidad funcional correspondiente que ejecuta cada instrucción. Finalizada la etapa de ejecución, habrá una etapa de escritura para cada una de las instrucciones ejecutadas. Hay dos vías principales para implementar estos procesadores de Figura 6 CPU funcionando con VLIW emisión múltiple, atendiendo al modo o el momento en que se realiza la elección de las instrucciones que conforman cada grupo de procesamiento: estática o dinámicamente. Estáticamente: La elección de los grupos de instrucciones se realiza de manera estática, es decir, en tiempo de compilación. El compilador conoce el programa y las características del procesador, así que agrupa instrucciones en paquetes, ocupándose de evitar los riesgos de datos y de control, de tal manera que cada paquete de instrucciones (paquete de emisión) está formado por instrucciones independientes que pueden ejecutarse en paralelo sin ningún tipo de riesgos. A este tipo de arquitecturas se las conoce como VLIW (Very Long Instruction Word). Dinámicamente: La elección de los grupos de instrucciones se realiza dinámicamente, esto es, en tiempo de ejecución. Las instrucciones se alimentan en orden y es el propio procesador el que se encarga de elegir el conjunto de instrucciones (0, 1, 2,…) que pueden emitirse de manera paralela en cada ciclo de reloj. Esta arquitectura es la que corresponde a los procesadores superescalares. Debe mencionarse que la obtención de un buen rendimiento en estos procesadores también requiere que el compilador planifique y ordene las instrucciones tratando de minimizar las dependencias de tal manera que la emisión pueda realizarse lo más rápidamente posible. No obstante, el responsable de garantizar que las instrucciones emitidas pueden ejecutarse en paralelo, es el procesador. ARQUITECTURAS DE MICROPROCESADORES 14 Electrónica para Sistemas Industriales Figura 7 Comparación entre VLIW y CPU superescalares 2.4 Arquitectura EPIC Procesamiento de instrucciones explícitamente en paralelo (del inglés EPIC: Explicitly Parallel Instruction Computing) es un paradigma de programación que comenzó a investigarse a principios de los años 80. Este paradigma también se conoce como arquitecturas de Independencia. Fue utilizado por Intel y HP para el desarrollo de la arquitectura de Intel IA-64 y se ha implementado en la línea de procesadores de servidor Intel Itanium e Itanium 2. El objetivo de EPIC era aumentar la capacidad de los microprocesadores para ejecutar instrucciones de software en paralelo mediante el uso del compilador, en lugar de la compleja circuitería en cápsula, para identificar y aprovechar las oportunidades para la ejecución en paralelo. Esto permitiría escalar el rendimiento más rápidamente en los futuros diseños de procesadores, sin tener que recurrir a frecuencias de reloj cada vez más altas, las cuales se han convertido desde ese momento en una problemática importante debido a problemas de alimentación y refrigeración. Las arquitecturas EPIC añaden numerosas características para paliar las deficiencias de VLIW: • Cada grupo de instrucciones de software múltiples recibe el nombre de paquete (bundle en inglés). Cada uno de los paquetes contiene información que indica si algún paquete subsiguiente depende de este conjunto de operaciones. Con esta habilidad, se pueden construir implementaciones posteriores que envíen varios paquetes en paralelo. El compilador se encarga de calcular la información de dependencia de modo que libere al hardware de la tarea de ejecutar comprobaciones sobre la dependencia de operandos. • Se utiliza una instrucción de carga especulativa como un tipo de búsqueda anticipada de datos. Esta búsqueda anticipada aumenta las probabilidades de éxito de encontrar los datos requeridos en la caché primaria para las cargas normales. ARQUITECTURAS DE MICROPROCESADORES 15 Electrónica para Sistemas Industriales • Así mismo, una instrucción de carga de comprobación ayuda a las cargas especulativas mediante la comprobación de que una carga no depende de un almacenamiento anterior. Figura 8 Filosofía del diseño EPIC ARQUITECTURAS DE MICROPROCESADORES 16 Electrónica para Sistemas Industriales 2.5 Microprocesadores DSP Un DSP (Digital Signal Processors, Procesador Digital de Señal) es un procesador digital cuyo hardware y conjunto de instrucciones está optimizado para la implementación eficiente de aplicaciones de procesamiento numérico intensivo a alta velocidad. Este tipo de procesadores ejecutan, generalmente, los algoritmos típicos de procesamiento digital de señal (Digital Signal Processing) como el filtrado digital y el análisis espectral, entre otros. Este tipo de algoritmos se requieren a menudo en sistemas que procesan señales analógicas en tiempo real. Con tiempo real queremos indicar que el sistema debe dar una respuesta en un tiempo establecido y predecible. Por ejemplo, un escenario habitual es un sistema que adquiriera datos muestreando una señal analógica para someterla a un determinado procesamiento, por ejemplo, el filtrado. Esta aplicación exige que se realicen todos los cálculos antes de que llegue la siguiente muestra. Si el procesamiento de cálculo es muy complejo, deberán utilizarse procesadores especializados para esta tarea porque, de otra forma, se perderían muestras. Las aplicaciones de los DSP son muy variadas: procesamiento de señales de audio (compresión de audio, filtrado, TV digital), procesado de habla (reconocimiento de voz, compresión de voz, grabadores digitales de habla), comunicaciones (teléfonos móviles, módems, fax, GPS), multimedia (compresión de vídeo, audio, imagen digital), control industrial (cancelación de ruido, control de motores, fuentes de alimentación) y un largo etcétera. También tienen diversas aplicaciones en el campo de la instrumentación. Las funciones básicas que se requieren de un DSP en este campo son: FFT (transformada rápida de Fourier), filtrado, síntesis de ondas, filtros adaptativos, cálculos numéricos a alta velocidad, etc. Las aplicaciones incluyen: equipos de test y medida, análisis de vibraciones, tarjetas de E/S para PCs (tarjetas de adquisición de datos), analizadores de señal, generadores de funciones, etc. Para damos una idea del tipo de algoritmos y operaciones que se realizan en un DSP vamos a considerar una aplicación muy frecuente como es el filtrado digital. En la Figura 9 se muestra el diagrama bloques de un sistema basado en un DSP. Figura 9 Sistema de adquisición basado en un DSP ARQUITECTURAS DE MICROPROCESADORES 17 Electrónica para Sistemas Industriales La señal analógica de entrada es una señal cuadrada que deseamos filtrar para obtener a la salida una señal senoidal como la mostrada en la Figura 9. En general, existen dos métodos para adquirir datos: procesamiento continuo o por muestras y el procesamiento por lotes (frames). En sistemas basados en muestreo, como el propuesto, en cada pulso de reloj se obtiene un dato, se procesa y se obtiene la salida correspondiente de forma continua. En los sistemas basados en frames, como los analizadores de espectros, se adquieren los datos por bloques enteros que después se procesan en conjunto y se da la salida. En nuestro caso, las señales que provienen del convertidor A/D llegan al DSP como un tren de muestras individuales a la frecuencia de muestreo del convertidor A/D que es función del ancho de banda de la señal de entrada. Para evitar el submuestreo se somete a la señal a un filtrado previo analógico (filtro antialising). El DSP realiza el algoritmo de filtrado a través de un proceso numérico y genera una salida que se envía hacia el convertidor D/A para obtener una señal analógica que se reconstruye con la ayuda de un filtro pasa-bajo. Opcionalmente, el DSP puede comunicarse con otros equipos para enviar o recibir datos o información de control provenientes de un computador. Por regla general, para realizar el filtrado en tiempo real, el DSP debe realizar todos los cálculos y operaciones requeridas para procesar cada muestra antes de que llegue la siguiente. El tiempo entre muestras es el que dispone el DSP para realizar todos los cálculos. A las capacidades de cálculo del DSP debe añadirse además su capacidad para realizar transferencias eficientes de datos procedentes del exterior, en general, disponiendo de puertos de alta velocidad y procesadores especializados en transferencias de E/S de tipo DMA (Direct Memory Access). Por ejemplo, en el algoritmo de filtrado no sólo debe de calcularse a gran velocidad, sino que también deben de proporcionarse los datos a un ritmo sostenido. ARQUITECTURAS DE MICROPROCESADORES 18 Electrónica para Sistemas Industriales CARACTERÍSTICAS DE LOS DSPs Un DSP típico incluye en la misma pastilla de silicio la unidad central de proceso, la memoria y, generalmente, un procesador especializado en operaciones de E/S. La Figura 10 describe la arquitectura de un DSP genérico. Figura 10 Arquitectura de un DSP ARQUITECTURAS DE MICROPROCESADORES 19 Electrónica para Sistemas Industriales 2.6 Clasificación de computadores según su arquitectura. Taxonomía de Flynn Según las diferentes arquitecturas desarrolladas pueden clasificarse los computadores desde distintos puntos de vista. Una de las clasificaciones más extendida es la denominada taxonomía de Flynn (1966), que se detalla a continuación. Esta taxonomía se basa en el número de flujos de instrucciones y flujos de datos que posee cada sistema computador. El proceso computacional consiste en la ejecución de una secuencia de instrucciones sobre un conjunto de datos. El flujo de instrucciones es la secuencia sobre la que opera un procesador, y el flujo de datos comprende la secuencia de datos de entrada y los resultados parciales y totales. Las arquitecturas de computadores se caracterizan por el hardware que destinan a atender a los flujos de instrucciones y datos. Flynn propuso 4 categorías: • SISD: Simple flujo de instrucciones, simple flujo de datos. • MISD: Múltiple flujo de instrucciones, simple flujo de datos. • SIMD: Simple flujo de instrucciones, múltiple flujo de datos. • MIMD: Múltiple flujo de instrucciones, múltiple flujo de datos. Después se introdujo una quinta clasificación derivada de las cuatro anteriores: • MTMD: Múltiples rareas, múltiple flujo de daros. COMPUTADORES SISD Responden a los monoprocesadores convencionales (tipo Von Neumann) que más se usan. Un computador SISD consiste en una única Unidad de Proceso (Camino de Datos) que, recibiendo una secuencia de instrucciones, opera sobre una secuencia de datos. No presenta ningún tipo de paralelismo. Figura 11 Estructura básica de los ordenadores SISD ARQUITECTURAS DE MICROPROCESADORES 20 Electrónica para Sistemas Industriales Si, por ejemplo, se desea realizar una suma de n elementos, el procesador tendrá que acceder a memoria n veces consecutivas para coger los datos. También se deberán hacer n-1 sumas en secuencia. Es decir, los algoritmos para las computadoras SISD no contienen ningún paralelismo. COMPUTADORES MISD Existen n unidades de proceso, cada una con su propia unidad de control y sus propias instrucciones, pero operando sobre el mismo flujo de datos, de forma que la salida de un procesador pasa a ser la entrada (operandos) del siguiente en el macrocauce de los datos. Se hacen diferentes operaciones al mismo tiempo con los mismos datos. Como se puede observar en la Figura, existen n procesadores, cada uno de ellos con su propia unidad de control, pero compartiendo todos ellos una memoria común. Las máquinas MISD son útiles en cómputos donde una misma entrada está sujeta a varias operaciones, pero los arquitectos de computadores han menospreciado esta organización y, de hecho, no existe ninguna materialización real de este tipo. Figura 12 Arquitectura de los computadores MISD ARQUITECTURAS DE MICROPROCESADORES 21 Electrónica para Sistemas Industriales COMPUTADORES SIMD Flujo único de instrucciones y flujo múltiple de datos. Sólo hay una unidad de control que controla las diferentes unidades de proceso. Todas las unidades de proceso reciben la misma instrucción, pero operan sobre los diferentes datos procedentes de la memoria. La misma instrucción la reciben todas las unidades de proceso, pero a veces no todas la realizan porque la instrucción lleva codificada los procesadores que intervienen y los que están inactivos. Como hay una secuencias de datos, se pueden utilizar diferentes datos en cada procesador. Estos procesadores operan sincronizadamente y hay un reloj global que se encarga de asegurar esta operación. Un ejemplo de la utilidad de este tipo de sistema es la realización de operaciones con matrices. Si necesitamos sumar dos matrices A y B de orden 2 y contando con cuatro procesadores: La misma instrucción es ejecutada a la vez en los cuatro procesadores. La suma de las dos matrices se realiza en un ciclo, mientras que en los sistemas secuenciales tardaría cuatro. Los SIMD son mucho más útiles y comerciales que los MISD y también más flexibles. Además, es más fácil confeccionar algoritmos para los SIMD que para los MISD. El caso ideal de los SIMD es cuando un problema se puede dividir en varios su problemas con las mismas instrucciones. En la mayoría de las aplicaciones interesantes que se quieran resolver con este tipo de computadores, es deseable que los procesadores puedan comunicarse entre sí durante el cálcu1o a fin de intercambiar datos o resultados intermedios. Esto se puede realizar de dos maneras diferentes, a través de una memoria común (computadores SIMD con memoria compartida) o a través de una red de interconexión (computadores SIMD con memoria distribuida). Algunos ejemplos de esta arquitectura fueron: Tinquen Machines CM-2, Gaspar computes, Procesador MMX. ARQUITECTURAS DE MICROPROCESADORES 22 Electrónica para Sistemas Industriales Figura 13 Arquitectura de los computadores SIMD COMPUTADORES MIMD Este tipo de computadora se basa en el paralelismo al igual que la SIMD. La diferencia radica en que la arquitectura MIMD es asíncrona, no tiene un reloj central. Cada procesador en un sistema MIMD puede ejecutar su propia secuencia de instrucciones y tener sus propios datos. Esta característica es la más general y poderosa de esta clasificación. Se trata de una agrupación de monoprocesadores convencionales, cada uno con su Unidad de Control, su Unidad de Proceso y su memoria local. Cada uno dispone de su propio flujo de instrucciones y de datos, trabajan en paralelo y de forma asíncrona, y están comunicados entre ellos igual que los SIMD. Se supone que son los sistemas más perfectamente paralelos, ya que el paralelismo es total, pero también son los más caros Figura. ARQUITECTURAS DE MICROPROCESADORES 23 Electrónica para Sistemas Industriales Figura 14 Arquitectura de los computadores MIMD Los algoritmos para los MIMD deben poseer un claro componente de paralelismo, aunque pueden ser totalmente asíncronos, y además precisan intercomunicación. Normalmente comienzan cargando una tarea básica a uno cualquiera de los procesadores, y éste va descomponiendo tareas y lanzándolas a los demás, así como creando dos colas, una de proceso y otra de procesadores. En la primera se van introduciendo los procesos pendientes de ejecutar, y en la segunda se van metiendo los procesadores que van quedando libres después de terminar su tarea. Ejemplos de computadores con arquitectura MIMD son BURR D-85, Camp, CRAY/2, CRAY-MP y IBM 370/168MP. Los sistemas MIMD se clasifican en: • • • Sistemas de Memoria Compartida. Sistemas de Memoria Distribuida. Sistemas de Memoria Compartida Distribuida. ARQUITECTURAS DE MICROPROCESADORES 24 Electrónica para Sistemas Industriales COMPUTADORES MTMD Estos computadores surgen como una extensión a la clasificación de Flynn, algo restringida al contemplar la ejecución sólo a nivel de instrucciones. Múltiples Tareas con Múltiples Flujos de Datos. Son como los computadores MIMD, la única diferencia es la tarea que se aplica a cada Unidad de Proceso. Estos computadores son capaces de ejecutar concurrentemente un número determinado de tareas, cada una con su propio conjunto de datos. 3. CONCLUSIONES RISC ofrece soluciones atractivas donde se requiere una elevada capacidad de procesamiento y se presente una orientación hacia los lenguajes de alto nivel. En el campo industrial existe un gran número de aplicaciones que ni siquiera agotan las posibilidades de los controladores CISC de 8 bits actuales. Si bien el campo de aplicaciones de las arquitecturas RISC de alta capacidad crece con fuerza, esto no equivale al fin de otras arquitecturas de procesadores y controladores acreditadas que también seguirán perfeccionándose, lo que si resulta dudoso es la creación de familias CISC completamente nuevas. VLIW se ha descrito como un sucesor natural a RISC, porque mueve la complejidad del hardware al compilador, permitiendo más simplicidad, y procesadores más rápidos. Por último se han estudiado los procesadores EPIC, estos pueden ejecutar muchas instrucciones distintas a la vez dentro de un solo procesador, utilizando software para ordenar las instrucciones y decidir cuáles son posibles de ejecutar simultáneamente. Las decisiones en el mercado las toman los usuarios, y aquí, el software o la aplicación concreta juega un papel mucho más importante que las diferencias entre las estructuras que son inapreciables para el usuario final. ARQUITECTURAS DE MICROPROCESADORES 25 Electrónica para Sistemas Industriales 4. BIBLIOGRAFÍA Y/O REFERENCIAS [1] José Mª Angulo. Arquitectura de Microprocesadores. Ed. Paraninfo 2003 [2] S. S. Jadhav. Advanced Computer Architecture and Computing. Ed. Technical Publications Pune 2009 [3] Fernando E. Valdés. Microcontroladores. Fundamentos y Aplicaciones. Ed. Marcombo 2007 [4] Computadores paralelos y evaluación de prestaciones. Ed. Servicio de Publicaciones de la Universidad de Castilla La Mancha 1996 5. ENLACES DE INTERÉS Presente y futuro de los microprocesadores Intel http://www.eltiempo.com/archivo/documento/MAM-841487 Microprocesadores VLIW http://electro.fisica.unlp.edu.ar/arq/transparencias/ARQII_05-VLIW_A4x6.pdf ARQUITECTURAS DE MICROPROCESADORES 26